Compare commits

..

65 Commits

Author SHA1 Message Date
Peter Schmidtke
9fdba19dd7 Merge pull request #154 from Discngine/issue-151
Bugfix of wrong atom_site parsing
2024-09-04 10:02:25 +02:00
Peter Schmidtke
4810330d32 fixes in molfile abi version 2024-07-23 15:01:04 +00:00
Peter Schmidtke
251065b939 Merge pull request #147 from pegerto/m1_modfile
compile M1/M2 chip molfile plugin
2024-07-23 10:24:59 +02:00
pschmidtke
c75e2d7f98 adding osx shared libraries 2024-07-23 10:00:35 +02:00
Peter Schmidtke
0e8b195945 issue-151 fix 2024-07-23 07:39:34 +00:00
Pegerto Fernandez
4f54a742c2 small readme commit 2024-06-13 10:00:23 +01:00
Pegerto Fernandez
6c5db32fdd compile M1/M2 chip molfile fork 2024-06-13 09:53:20 +01:00
Peter Schmidtke
9f2f379997 Merge pull request #144 from Discngine/ms-4.2
Bug fixes for 4.2 release
2024-04-08 12:08:48 +02:00
Peter Schmidtke
6e66d3677c Added default dockerfile 2024-04-08 09:53:46 +00:00
Peter Schmidtke
146f76e8f8 Update readme 2024-04-08 09:52:17 +00:00
Peter Schmidtke
f792bff126 fixing MSE and Se issues 2024-04-08 09:42:28 +00:00
pschmidtke
d42000c72f getting rid of hexnum writing for cif 2024-04-08 09:00:55 +02:00
Peter Schmidtke
a9eb68e8b9 Merge pull request #136 from Discngine/PeyratG-patch-1
fix coordinates writing in cif pockets
2024-03-20 11:07:09 +01:00
pschmidtke
16e7070daa fixing reference test 2024-03-20 10:08:35 +01:00
PeyratG
b40990afb5 fix coordinates writing in cif pockets
Issue observed while running fpocket on the PDB 7uit
2024-03-13 15:22:39 +01:00
Peter Schmidtke
2bfce34457 Merge pull request #133 from Discngine/issue-129
issue-129 correcting behaviour from pdb to mmcif
2024-02-23 21:33:54 +01:00
pschmidtke
6d7e84677b issue-129 correcting behaviour from pdb to mmcif 2024-02-23 21:32:54 +01:00
Peter Schmidtke
1e861b184b Merge pull request #132 from Discngine/issue-129
issue-129 adding insertion codes and splitting auth chain & residue n…
2024-02-16 20:46:16 +01:00
pschmidtke
4b3073e0de adding missing reference updates 2024-02-16 20:40:26 +01:00
pschmidtke
675fe8c037 issue-129 adding insertion codes and splitting auth chain & residue numbers + longer filenames are supported now 2024-02-16 20:30:08 +01:00
Peter Schmidtke
beb472ba2b Merge pull request #128 from Discngine/issue-127
fixing mmcif writing for db mode
2024-01-25 08:11:04 +01:00
pschmidtke
c87362fa04 fixing mmcif writing for db mode 2024-01-25 08:01:29 +01:00
Peter Schmidtke
9ff11f655f Merge pull request #126 from Discngine/fixmmcifwriting
Fixmmcifwriting
2024-01-11 14:23:47 +01:00
pschmidtke
11cff11a1e update of auth chain output for 3vi4 2024-01-11 13:58:08 +01:00
pschmidtke
a206c797a4 copying auth chain name to chain in fpocket 2024-01-11 13:52:48 +01:00
pschmidtke
79e16f8b15 sample structure with long chain names 2024-01-11 13:52:24 +01:00
Peter Schmidtke
96a6ed30ed Merge pull request #125 from Discngine/issue-107
Issue 107 adapting to long chain & residue names & molfile fixes
2024-01-11 13:35:35 +01:00
pschmidtke
5967a8fb8c Merge branch 'issue-107' of https://github.com/Discngine/fpocket into issue-107 2024-01-11 13:30:40 +01:00
pschmidtke
57989435b4 issue-107 fixing missing null check 2024-01-11 13:30:38 +01:00
Oracle Public Cloud User
9f7e173a2d issue-107 fixing segfault in linux 2024-01-11 12:29:23 +00:00
pschmidtke
6463aee064 adding back sample output 2024-01-11 12:09:53 +01:00
pschmidtke
e3347e6259 updating validation pp 2024-01-11 12:02:50 +01:00
pschmidtke
fc1dac6633 Merge remote-tracking branch 'origin' into issue-107 2024-01-11 11:59:00 +01:00
pschmidtke
73e911ab58 issue-107 updating molfile plugin for linux 64 bit 2024-01-11 11:54:22 +01:00
pschmidtke
ff92eafeb7 issue-107 updated docker file 2024-01-11 11:38:25 +01:00
pschmidtke
4f4893164f issue-107 accepting long chain & ligand names, exit code handling & ref test output. Fixes on molfile plugin for cif reading 2024-01-11 11:38:03 +01:00
Peter Schmidtke
b02ae9ac19 Merge pull request #121 from Discngine/issue-119
Issue 119
2023-12-15 10:22:42 +01:00
pschmidtke
87cea6b1ce issue-119 adding sample cif 2023-12-15 10:12:07 +01:00
pschmidtke
b410ea1a6a issue-119 update linux libraries 2023-12-15 10:08:20 +01:00
pschmidtke
09bb933615 issue-119 correcting molfile_plugin issue with mmcifs 2023-12-15 10:05:33 +01:00
pschmidtke
1d186a45c9 correcting comment 2023-11-23 09:12:00 +01:00
Peter Schmidtke
5614b44600 Merge pull request #118 from Discngine/issue-80
Issue 80
2023-11-23 09:08:50 +01:00
Peter Schmidtke
0a150455e0 Merge pull request #117 from Discngine/issue-105
issue-105 fixing c lib issue on some architectures
2023-11-23 08:45:39 +01:00
pschmidtke
225fd07b15 issue-80 dropping useless lines 2023-11-23 08:41:56 +01:00
pschmidtke
4295d69c33 issue-80 fixing output buffer issues & memory leak on grid generation 2023-11-22 19:15:01 +01:00
pschmidtke
e571f00051 issue-105 fixing c lib issue on some architectures 2023-11-22 18:25:57 +01:00
Peter Schmidtke
4d169aaaab Merge pull request #116 from Discngine/issue-113
Issue 113
2023-11-22 11:43:34 +01:00
pschmidtke
ca6f4b036a issue-113 fixing if condition on flexibility & reference test cases 2023-11-22 10:27:03 +01:00
pschmidtke
9a4ec461ca issue-113 changing reference files & reparing test 2023-11-21 17:56:23 +01:00
pschmidtke
e57a050dad issue-113 adapting bfactor filtering to account for collective motions 2023-11-21 07:58:52 +01:00
pschmidtke
c46dd801df #112 fixing asphere radius help documentation 2023-10-24 11:46:34 +02:00
Peter Schmidtke
61b15247ed Merge pull request #109 from ElizaKartchner/master
change umlauts to normal O's
2023-07-24 09:30:47 +02:00
Eliza
f5913deaa9 change umlauts to normal O's 2023-06-15 14:55:06 -06:00
Peter Schmidtke
9c7be61644 Merge pull request #86 from jordansafer/master
Fix header typo for easier parsing
2023-02-22 04:16:15 -05:00
Peter Schmidtke
f05cdb7cdd Merge pull request #97 from Discngine/mypocket
Adding support for definition of explicit pockets
2023-02-22 04:04:43 -05:00
pschmidtke
115128de62 fix for mmcif structures & explicit pockets 2023-02-22 10:01:48 +01:00
pschmidtke
ee1cc7373f missing voronoi.c 2023-02-20 14:20:43 +01:00
pschmidtke
ac18b146ff functional in PDB format 2023-02-20 14:16:06 +01:00
pschmidtke
9c2cbca91a parameter parsing finished 2023-02-20 08:00:22 +01:00
pschmidtke
c00ab205b6 backup 2023-02-18 22:39:41 +01:00
pschmidtke
86a4a97ac7 first steps in fparams 2023-02-16 07:23:36 +01:00
pschmidtke
ce4997d6e6 introducing P parameter (WIP) 2023-02-13 09:27:34 +01:00
pschmidtke
a0bbee64f8 Explicit pockets with various alternates handling 2023-02-02 11:43:24 +01:00
Peter Schmidtke
d82104b99a Dropping for security reasons 2022-10-24 13:47:59 +02:00
Jordan Safer
5ef19079e9 Fix header typo for easier parsing 2022-10-11 12:18:32 -04:00
1482 changed files with 255900 additions and 107691 deletions

View File

@@ -15,10 +15,10 @@ jobs:
run: sudo apt-get install libnetcdf-dev
- name: make
run: make fpocket
- name: Set up Python 3.7
- name: Set up Python 3.12
uses: actions/setup-python@v2
with:
python-version: 3.7
python-version: 3.12
- name: create conda environment
run: conda env update -f ./tests/environment.yml
- name : activate

View File

@@ -1,7 +1,6 @@
FROM centos:7
#RUN yum -y install epel-release && yum -y update && yum -y install gcc gcc-c++ make netcdf-devel; yum clean all
RUN yum -y install gcc gcc-c++ make netcdf-devel; yum clean all
FROM debian:bookworm-slim
RUN groupadd -r fpocket && useradd --no-log-init -r -g fpocket fpocket
RUN apt update -y && apt install -y gcc g++ make libnetcdf-dev && rm -rf /var/lib/apt/lists/*
# all of this mess is essentially to have a minimalistic build at the end
COPY makefile /opt/fpocket/
@@ -17,8 +16,7 @@ COPY plugins/noarch /opt/fpocket/plugins/noarch
WORKDIR /opt/fpocket
RUN make; make install; make clean
WORKDIR /WORKDIR
RUN make && make install && make clean
USER fpocket
WORKDIR /tmp
CMD ["fpocket"]

View File

@@ -1,4 +1,4 @@
FROM debian:bullseye-slim
FROM debian:bookworm-slim
RUN groupadd -r fpocket && useradd --no-log-init -r -g fpocket fpocket
RUN apt update -y && apt install -y gcc g++ make libnetcdf-dev && rm -rf /var/lib/apt/lists/*

View File

@@ -81,10 +81,10 @@ docker build -t fpocket/fpocket .
This will build fpocket into your local fpocket/fpocket image. You can then run fpocket/mdpocket etc using:
```bash
docker run -v `pwd`:/WORKDIR fpocket/fpocket fpocket -f data/sample/1UYD.pdb
docker run -v `pwd`:/workdir fpocket/fpocket fpocket -f /workdir/yourfile.pdb
```
Here you mount your current directory with your input files into the preconfigured `/WORKDIR` in the docker container and then run fpocket on a file in that mounted folder.
Here you mount your current directory with your input files into the preconfigured `/workdir` in the docker container and then run fpocket on a file in that mounted folder. Make sure that the folder is writeable to others if you run it through docker.
### Installing
@@ -107,6 +107,11 @@ make ARCH=MACOSXX86_64
sudo make install
```
For M1 and M2, use the MACOSXARM64 architecture:
```
ARCH=MACOSXARM64 make
```
#### Using conda
There's also a conda package of fpocket available thanks to Simon Bray. You can install fpocket using conda with:

9565
data/sample/123abc.cif Normal file

File diff suppressed because it is too large Load Diff

7412
data/sample/4gfo.cif Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10785
data/sample/6a5k.cif Normal file

File diff suppressed because it is too large Load Diff

37183
data/sample/6cs2.cif Normal file

File diff suppressed because it is too large Load Diff

31154
data/sample/6cs2.pdb Normal file

File diff suppressed because it is too large Load Diff

13962
data/sample/7z9t.cif Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -452,10 +452,11 @@ The simplest way to run fpocket is either by providing a single pdb file, or by
-b (none): (NOT USED BY DEFAULT) This option allows the user to choose a discrete algorithm to calculate the volume of each pocket instead of the Monte Carlo method. This algorithm puts each pocket into a grid of dimension (1/N*X ; 1/N*Y ; 1/N*Z), N being the value given using this option, and X, Y and Z being the box dimensions, determined using coordinates of vertices. Then, a triple iteration on each dimensions is used to estimate the volume, checking if each points given by the iteration is in one of the pockets vertices. This parameter defines the grid discretization. If this parameter is used, this algorithm will be used instead of the Monte Carlo algorithm.
Warning: Although this algorithm could be more accurate, a high value might dramatically slow down the program, as this algorithm has a maximum complexity of N*N*N*nb_vertices, and a minimum of N*N*N !!!
-d (none): Option allowing you to output pockets and properties in a condensed format. This will put to the stdout pocket properties in a tab separated string and write pocket files in a subfolder
-r string: (None) This parameter allows you to run fpocket in a restricted mode. Let's suppose you have a very shallow or large pocket with a ligand inside and the automatic pocket prediction always splits up you pocket or you have only a part of the pocket found. Specifying your ligand residue with -r allows you to detect and characterize you ligand binding site explicitly. For instance for `1UYD.pdb` you can specify `-r 1224:PU8:A` (residue number of the ligand: residue name of the ligand: chain of the ligand)
-P string: (None) Binding site delimited by the user through the input. You can inidcate which amino-acids are part of the binding site you'd like to "identify" and calculate descriptors for. fpocket will run its usual alpha-sphere detection and clustering will be guided to collect all alpha spheres in contact with residues of interest. You should enter a string of residues with residue numbers, insertion codes & chain codes: 'residuenumber1:insertioncode1:chaincode1.residuenumber2:insertioncode2:chaincode2.residuenumber3:insertioncode3:chaincode3'. Insertion codes can be empty. `-P 107::A.138::A.51::A.98::A.55::A.93::A` for instance for part of the HSP90 binding site of 4cwr. NB: If you use an mmcif file as input, you need to use the automatically assigned residue number instead of author defined number for this to work.
-y string: (filename) EXPERIMENTAL: here you can specify a topology filename in the Amber prmtop format. This can then be used by fpocket & mdpocket to calculate energy grids for your pockets. NB: you have to specify the -x flag to run energy calculations

View File

@@ -148,6 +148,5 @@ If you manage to build for other architectures and it works, I'd be happy to acc
## Read next
* [Getting Started](GETTINGSTARTED.md)
* [Getting Started & Advanced Features](GETTINGSTARTED.md)
* [Advanced Features](ADVANCED.md)

View File

@@ -40,6 +40,4 @@ We are happy about positive, negative, in any way constructive feedback.
* [Installation](INSTALLATION.md)
* [Getting Started](GETTINGSTARTED.md)
* [Advanced Features](ADVANCED.md)
* [Getting Started](GETTINGSTARTED.md)

View File

@@ -37,12 +37,14 @@ typedef struct s_atm
char name[5], /**< Atom name */
type[7], /**< Atom type */
chain[16], /**< Chain name */
label_asym_id[16],
symbol[3], /**< Chemical symbol of the atom */
res_name[8]; /**< Atom residue name */
int id, /**< Atom id */
seen, /**< Say if we have seen this atom during a neighbor search */
res_id, /**< Atom residue ID */
label_seq_id, /**<MMCIF label seq ID*/
atype,
charge, /**< Atom charge */
abpa; /**< 1 if atom is an abpa, 0 otherwise*/

View File

@@ -30,84 +30,90 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/* Options of the pocket finder program */
/* standard parameters */
#define M_MIN_ASHAPE_SIZE_DEFAULT 3.4 /**< Use min alpha sphere radius of : 3.0 */ /*3.2, 2.6, */
#define M_MIN_ASHAPE_SIZE_DEFAULT 3.4/**< Use min alpha sphere radius of : 3.0 */ /*3.2, 2.6, */
#define M_MAX_ASHAPE_SIZE_DEFAULT 6.2 /**< Use max alpha sphere radius of : 6.0 */ /*7.0, 7.4, */
#define M_MAX_ASHAPE_SIZE_DEFAULT 6.2/**< Use max alpha sphere radius of : 6.0 */ /*7.0, 7.4, */
#define M_CLUST_MAX_DIST 2.4 /**< Use first connection distance (see report) : 2.0 */ /*1.8, 11.2, */
#define M_CLUST_MAX_DIST 2.4/**< Use first connection distance (see report) : 2.0 */ /*1.8, 11.2, */
#define M_REFINE_DIST 4.5 /**< use second connection distance (see report) : 4.5 */
#define M_REFINE_DIST 4.5/**< use second connection distance (see report) : 4.5 */
#define M_REFINE_MIN_PROP_APOL_AS 0.0 /**< At least a proportion of M_REFINE_MIN_NAPOL_AS apolar alpha spheres in the pocket 0.0 */
#define M_REFINE_MIN_PROP_APOL_AS 0.0/**< At least a proportion of M_REFINE_MIN_NAPOL_AS apolar alpha spheres in the pocket 0.0 */
#define M_MC_ITER 300 /**< Number of iterations for the Monte Carlo volume calculation 3000 */
#define M_MC_ITER 300/**< Number of iterations for the Monte Carlo volume calculation 3000 */
#define M_BASIC_VOL_DIVISION -1 /**< Precision for "exact" volume integration, set to -1 if not used -1 */
#define M_BASIC_VOL_DIVISION -1/**< Precision for "exact" volume integration, set to -1 if not used -1 */
#define M_MIN_POCK_NB_ASPH 15 /**< Minimum number of alpha spheres for a pocket to be kept */
#define M_MIN_POCK_NB_ASPH 15/**< Minimum number of alpha spheres for a pocket to be kept */
#define M_MIN_APOL_NEIGH_DEFAULT 3/**< Minimum number of atoms having a low electronegativity in order to declare an alpha sphere to be apolar 3 */
#define M_MIN_APOL_NEIGH_DEFAULT 3 /**< Minimum number of atoms having a low electronegativity in order to declare an alpha sphere to be apolar 3 */
#define M_DISTANCE_MEASURE 'e' /**< By default use euclidean distance measure for clustering*/
#define M_CLUSTERING_METHOD 's' /**< Clustering method to be used for alpha sphere clustering*/ /*s*/
#define M_DB_RUN 0 /**< default value for running fpocket for populating a database, 0 default*/
#define M_DB_RUN 0 /**< default value for running fpocket for populating a database, 0 default*/
#define M_MAX_CHAINS_DELETE 20
#define M_MAX_CHAINS_DELETE 20
#define M_MAX_CHAIN_NAME_LENGTH 20
#define M_MAX_LIG_RESNAME_LENGTH 20
#define M_MIN_AS_DENSITY 0.7
#define M_PAR_PDB_FILE 'f' /**< flag to give a single pdb input file*/
#define M_PAR_LONG_PDB_FILE "file" /**< flag to give a single pdb input file*/
#define M_MIN_N_EXPLICIT_POCKET 4 /**default value for minimum number of atoms part of the explicit pocket for an alpha sphere (between 0 and 4)*/
#define M_PAR_PDB_LIST 'F' /**< flag to give a txt file containing paths to multiple pdb files*/
#define M_PAR_LONG_PDB_LIST "fileList" /**< flag to give a txt file containing paths to multiple pdb files*/
#define M_PAR_PDB_FILE 'f' /**< flag to give a single pdb input file*/
#define M_PAR_LONG_PDB_FILE "file" /**< flag to give a single pdb input file*/
#define M_PAR_MAX_ASHAPE_SIZE 'M' /**< flag for the maximum alpha sphere size*/
#define M_PAR_LONG_MAX_ASHAPE_SIZE "max_alpha_size" /**< flag for the maximum alpha sphere size*/
#define M_PAR_PDB_LIST 'F' /**< flag to give a txt file containing paths to multiple pdb files*/
#define M_PAR_LONG_PDB_LIST "fileList" /**< flag to give a txt file containing paths to multiple pdb files*/
#define M_PAR_MIN_ASHAPE_SIZE 'm' /**< flag for the minimum alpha sphere size*/
#define M_PAR_LONG_MIN_ASHAPE_SIZE "min_alpha_size" /**< flag for the minimum alpha sphere size*/
#define M_PAR_MAX_ASHAPE_SIZE 'M' /**< flag for the maximum alpha sphere size*/
#define M_PAR_LONG_MAX_ASHAPE_SIZE "max_alpha_size" /**< flag for the maximum alpha sphere size*/
#define M_PAR_MIN_APOL_NEIGH 'A' /**< flag for the minimum number of apolar neighbours for an alpha sphere to be considered as apolar*/
#define M_PAR_LONG_MIN_APOL_NEIGH "number_apol_asph_pocket" /**< flag for the minimum number of apolar neighbours for an alpha sphere to be considered as apolar*/
#define M_PAR_MIN_ASHAPE_SIZE 'm' /**< flag for the minimum alpha sphere size*/
#define M_PAR_LONG_MIN_ASHAPE_SIZE "min_alpha_size" /**< flag for the minimum alpha sphere size*/
#define M_PAR_CLUST_MAX_DIST 'D' /**< flag for clustering distance*/
#define M_PAR_LONG_CLUST_MAX_DIST "clustering_distance" /**< flag for clustering distance*/
#define M_PAR_MIN_APOL_NEIGH 'A' /**< flag for the minimum number of apolar neighbours for an alpha sphere to be considered as apolar*/
#define M_PAR_LONG_MIN_APOL_NEIGH "number_apol_asph_pocket" /**< flag for the minimum number of apolar neighbours for an alpha sphere to be considered as apolar*/
#define M_PAR_MC_ITER 'v' /**< flag for how many iterations for the monte carlo volume calculation algorithm*/
#define M_PAR_LONG_MC_ITER "iterations_volume_mc" /**< flag for how many iterations for the monte carlo volume calculation algorithm*/
#define M_PAR_CLUST_MAX_DIST 'D' /**< flag for clustering distance*/
#define M_PAR_LONG_CLUST_MAX_DIST "clustering_distance" /**< flag for clustering distance*/
#define M_PAR_BASIC_VOL_DIVISION 'b'/**< flag for the space approximation of the MC*/
#define M_PAR_MIN_POCK_NB_ASPH 'i' /**< flag for the min number of alpha spheres in the pocket*/
#define M_PAR_LONG_MIN_POCK_NB_ASPH "min_spheres_per_pocket" /**< flag for the min number of alpha spheres in the pocket*/
#define M_PAR_MC_ITER 'v' /**< flag for how many iterations for the monte carlo volume calculation algorithm*/
#define M_PAR_LONG_MC_ITER "iterations_volume_mc" /**< flag for how many iterations for the monte carlo volume calculation algorithm*/
#define M_PAR_REFINE_MIN_NAPOL_AS 'p'/**< flag for minimum proportion of apolar alpha spheres*/
#define M_PAR_LONG_REFINE_MIN_NAPOL_AS "ratio_apol_spheres_pocket"/**< flag for minimum proportion of apolar alpha spheres*/
#define M_PAR_BASIC_VOL_DIVISION 'b' /**< flag for the space approximation of the MC*/
#define M_PAR_MIN_POCK_NB_ASPH 'i' /**< flag for the min number of alpha spheres in the pocket*/
#define M_PAR_LONG_MIN_POCK_NB_ASPH "min_spheres_per_pocket" /**< flag for the min number of alpha spheres in the pocket*/
#define M_PAR_DB_RUN 'd' /**<flag for running fpocket as database run, more silent and special output is produced for automatic grabbing of results using other programs*/
#define M_PAR_LONG_DB_RUN "pocket_descr_stdout" /**<flag for running fpocket as database run, more silent and special output is produced for automatic grabbing of results using other programs*/
#define M_PAR_REFINE_MIN_NAPOL_AS 'p' /**< flag for minimum proportion of apolar alpha spheres*/
#define M_PAR_LONG_REFINE_MIN_NAPOL_AS "ratio_apol_spheres_pocket" /**< flag for minimum proportion of apolar alpha spheres*/
#define M_PAR_CLUSTERING_METHOD 'C' /**<flag for specifying the clustering method to use for alpha sphere clustering*/
#define M_PAR_LONG_CLUSTERING_METHOD "clustering_method" /**<flag for specifying the clustering method to use for alpha sphere clustering*/
#define M_PAR_DB_RUN 'd' /**<flag for running fpocket as database run, more silent and special output is produced for automatic grabbing of results using other programs*/
#define M_PAR_LONG_DB_RUN "pocket_descr_stdout" /**<flag for running fpocket as database run, more silent and special output is produced for automatic grabbing of results using other programs*/
#define M_PAR_DISTANCE_MEASURE 'e' /**<flag for specifying the distance measure*/
#define M_PAR_CLUSTERING_METHOD 'C' /**<flag for specifying the clustering method to use for alpha sphere clustering*/
#define M_PAR_LONG_CLUSTERING_METHOD "clustering_method" /**<flag for specifying the clustering method to use for alpha sphere clustering*/
#define M_PAR_DISTANCE_MEASURE 'e' /**<flag for specifying the distance measure*/
#define M_PAR_LONG_DISTANCE_MEASURE "clustering_measure" /**<flag for specifying the distance measure*/
#define M_PAR_GRID_CALCULATION 'x' /**<flag for specifying the distance measure*/
#define M_PAR_GRID_CALCULATION 'x' /**<flag for specifying the distance measure*/
#define M_PAR_LONG_GRID_CALCULATION "calculate_interaction_grids" /**<flag for specifying the distance measure*/
#define M_PAR_TOPOLOGY 'y' /**<flag for specifying a molecular topology suitable for FF calculations*/
#define M_PAR_TOPOLOGY 'y' /**<flag for specifying a molecular topology suitable for FF calculations*/
#define M_PAR_LONG_TOPOLOGY "topology_file" /**<flag for specifying a molecular topology suitable for FF calculations*/
#define M_PAR_MODEL_FLAG 'l' /**<flag for analyzing a specific model in multimodel structures*/
#define M_PAR_MODEL_FLAG 'l' /**<flag for analyzing a specific model in multimodel structures*/
#define M_PAR_MODEL_FLAG_LONG "model_number" /**<flag for anamyzing a specific model in multimodel structures*/
#define M_PAR_CUSTOM_LIGAND 'r' /**flag, to define detection of explicit pockets around the specified ligand*/
#define M_PAR_CUSTOM_LIGAND_LONG "custom_ligand"
#define M_PAR_CUSTOM_POCKET 'P' /** flag to define a specific location to calculate the binding site on*/
#define M_PAR_CUSTOM_POCKET_LONG "custom_pocket"
#define M_PAR_DROP_CHAINS 'c' /**flag, to define which chain are dropped before the pocket detection*/
#define M_PAR_DROP_CHAINS_LONG "drop_chains"
@@ -117,11 +123,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#define M_PAR_CHAIN_AS_LIGAND 'a' /**flag, to define which chains are defined as a ligand*/
#define M_PAR_CHAIN_AS_LIGAND_LONG "chain_as_ligand"
#define M_PAR_WRITE_MODE 'w' /**flag, to define which chains are defined as a ligand*/
#define M_PAR_WRITE_MODE 'w' /**flag, to define write mode for pocket output: d->same as input, b or both -> both (pdb & cif), p or pdb ->pdb, m or cif -> mmcif*/
#define M_PAR_WRITE_MODE_LONG "write_mode"
#define M_PAR_MIN_N_EXPLICIT_POCKET 'u'
#define M_PAR_MIN_N_EXPLICIT_POCKET_LONG "min_n_explicit_pocket"
#define M_FP_USAGE "\n\
***** USAGE (fpocket) *****\n\
@@ -164,78 +170,85 @@ Pocket finding on a pdb - list of pdb - file(s): \n\
\t c : centroid linkage clustering\n\
\nSee the manual (man fpocket), or the full documentation for\n\
more information.\n\
***************************\n",M_PAR_PDB_FILE,M_PAR_LONG_PDB_FILE,M_PAR_PDB_LIST,M_PAR_LONG_PDB_LIST /**< the usage print content*/
***************************\n", \
M_PAR_PDB_FILE, M_PAR_LONG_PDB_FILE, M_PAR_PDB_LIST, M_PAR_LONG_PDB_LIST /**< the usage print content*/
/* --------------------------- PUBLIC STRUCTURES ---------------------------- */
/**
Structure containing all necessary parameters that can be changed by the user.
This structure is commun to both programs (validation and pocket finding),
This structure is commun to both programs (validation and pocket finding),
even if the pocked finding programm doesn't need some parameters.
*/
typedef struct s_fparams
{
char pdb_path[M_MAX_PDB_NAME_LEN] ; /**< The pdb file */
char topology_path[M_MAX_PDB_NAME_LEN]; /**< a putative topology file*/
char custom_ligand[M_MAX_PDB_NAME_LEN]; /**container for custom pocket detection using a particular ligand*/
char **pdb_lst ;
char xlig_chain_code[3];
char xlig_resname[3];
int xlig_resnumber;
char distance_measure;
char clustering_method;
int npdb ; /**< number of pdb files*/
short fpocket_running;
int flag_do_asa_and_volume_calculations; /**<if 1, asa and volume calculations are performed(slower), if 0, not*/
int db_run; /**< flag for running fpocket for db population*/
int model_number; /**<number of model to be analyzed>*/
unsigned short flag_do_grid_calculations; /**< if 1 do grid calculations and output these*/
int min_apol_neigh, /**< Min number of apolar neighbours for an a-sphere
to be an apolar a-sphere */
nb_mcv_iter, /**< Number of iteration for the Monte Carlo volume
calculation */
basic_volume_div, /**< Box division factor for basic volume calculation */
min_pock_nb_asph; /**< Minimump number of alpha spheres per pocket */
char pdb_path[M_MAX_PDB_NAME_LEN]; /**< The pdb file */
char topology_path[M_MAX_PDB_NAME_LEN]; /**< a putative topology file*/
char custom_ligand[M_MAX_PDB_NAME_LEN]; /**container for custom pocket detection using a particular ligand*/
char custom_pocket_arg[M_MAX_CUSTOM_POCKET_LEN];
char **pdb_lst;
char *xlig_chain_code;
char *xlig_resname;
int xlig_resnumber;
int xpocket_n; /**number of residues defining the pocket to consider*/
char *xpocket_chain_code;
char *xpocket_insertion_code;
unsigned short *xpocket_residue_number;
char distance_measure;
char clustering_method;
int min_n_explicit_pocket_atoms; /**Minimum numer of atoms in contact with an alpha sphere part of the explicitly defined pocket in order to be considered as valid*/
int npdb; /**< number of pdb files*/
short fpocket_running;
int flag_do_asa_and_volume_calculations; /**<if 1, asa and volume calculations are performed(slower), if 0, not*/
int db_run; /**< flag for running fpocket for db population*/
int model_number; /**<number of model to be analyzed>*/
unsigned short flag_do_grid_calculations; /**< if 1 do grid calculations and output these*/
int min_apol_neigh, /**< Min number of apolar neighbours for an a-sphere
to be an apolar a-sphere */
nb_mcv_iter, /**< Number of iteration for the Monte Carlo volume
calculation */
basic_volume_div; /**< Box division factor for basic volume calculation */
unsigned short
min_pock_nb_asph; /**< Minimump number of alpha spheres per pocket */
float clust_max_dist, /**< First clustering distance criteria */
refine_min_apolar_asphere_prop, /**< Min proportion of apolar alpha
spheres for each pocket */
float clust_max_dist, /**< First clustering distance criteria */
refine_min_apolar_asphere_prop, /**< Min proportion of apolar alpha
spheres for each pocket */
asph_min_size, /**< Minimum size of alpha spheres to keep */
min_as_density, /**<Minimum alpha sphere density for a pocket to be retained*/
asph_max_size ; /**< Maximum size of alpha spheres to keep */
char chain_delete[M_MAX_CHAINS_DELETE]; /*chosen chain to delete before calculation*/
char chain_as_ligand[M_MAX_CHAINS_DELETE];
int chain_is_kept;/* To choose if we keep the chains or not*/
asph_min_size, /**< Minimum size of alpha spheres to keep */
min_as_density, /**<Minimum alpha sphere density for a pocket to be retained*/
asph_max_size; /**< Maximum size of alpha spheres to keep */
char *chain_delete[M_MAX_CHAINS_DELETE]; /*chosen chain to delete before calculation*/
unsigned short n_chains_to_delete;
unsigned short n_chains_as_ligand;
char *chain_as_ligand[M_MAX_CHAINS_DELETE];
int chain_is_kept; /* To choose if we keep the chains or not*/
char write_par[10]; /*write mode : d -> default | b -> both pdb and mmcif | p ->pdb | m -> mmcif*/
} s_fparams ;
} s_fparams;
/* ------------------------------- PROTOTYPES ------------------------------- */
s_fparams* init_def_fparams(void) ;
s_fparams* get_fpocket_args(int nargs, char **args) ;
s_fparams *init_def_fparams(void);
s_fparams *get_fpocket_args(int nargs, char **args);
int parse_clust_max_dist(char *str, s_fparams *p) ;
int parse_clust_max_dist(char *str, s_fparams *p);
int parse_clustering_method(char *str, s_fparams *p);
int parse_sclust_min_nneigh(char *str, s_fparams *p) ;
int parse_min_apol_neigh(char *str, s_fparams *p) ;
int parse_asph_min_size(char *str, s_fparams *p) ;
int parse_asph_max_size(char *str, s_fparams *p) ;
int parse_mc_niter(char *str, s_fparams *p) ;
int parse_basic_vol_div(char *str, s_fparams *p) ;
int parse_refine_dist(char *str, s_fparams *p) ;
int parse_sclust_min_nneigh(char *str, s_fparams *p);
int parse_min_apol_neigh(char *str, s_fparams *p);
int parse_asph_min_size(char *str, s_fparams *p);
int parse_asph_max_size(char *str, s_fparams *p);
int parse_mc_niter(char *str, s_fparams *p);
int parse_basic_vol_div(char *str, s_fparams *p);
int parse_refine_dist(char *str, s_fparams *p);
int parse_distance_measure(char *str, s_fparams *p);
int parse_refine_minaap(char *str, s_fparams *p) ;
int parse_min_pock_nb_asph(char *str, s_fparams *p) ;
int parse_refine_minaap(char *str, s_fparams *p);
int parse_min_pock_nb_asph(char *str, s_fparams *p);
int is_fpocket_opt(const char opt) ;
int is_fpocket_opt(const char opt);
void free_fparams(s_fparams *p) ;
void print_pocket_usage(FILE *f) ;
void print_fparams(s_fparams *p, FILE *f) ;
void free_fparams(s_fparams *p);
void print_pocket_usage(FILE *f);
void print_fparams(s_fparams *p, FILE *f);
#endif

View File

@@ -31,7 +31,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/* --------------------------PROTOTYPES---------------------------------------*/
void refinePockets(c_lst_pockets *pockets, s_fparams *params);
void apply_clustering(c_lst_pockets *pockets, s_fparams *params);
void apply_clustering(c_lst_pockets *pockets);
void reIndexPockets(c_lst_pockets *pockets);
void dropSmallNpolarPockets(c_lst_pockets *pockets, s_fparams *params);
void drop_tiny(c_lst_pockets *pockets, s_fparams *params) ;

View File

@@ -90,6 +90,8 @@ typedef struct s_pdb
char header[M_PDB_BUF_LEN] ; /**< Header container*/
char fname[M_PDB_FILE_NAME_LEN]; /**< File name container*/
float avg_bfactor; /**<overall average B factor*/
float min_bfactor; /**<overall minimum B factor*/
float max_bfactor; /**<overall maximum B factor*/
int model_flag; /**<flag set to 1 if a particular model / conformation was read*/
int model_number; /**<number of the model read in*/
@@ -140,10 +142,10 @@ s_min_max_coords *float_get_min_max_from_pdb(s_pdb *pdb);
void init_coord_grid(s_pdb *pdb);
void create_coord_grid(s_pdb *pdb);
void fill_coord_grid(s_pdb *pdb);
s_atom_ptr_list *init_atom_ptr_list(void);
// s_atom_ptr_list *init_atom_ptr_list(void);
short get_mm_type_from_element(char *symbol);
int chains_to_delete(char *chains_selected, char current_line_chain, int is_chain_kept);
int is_ligand(char *chains_selected, char current_line_chain);
int chains_to_delete(char *chains_selected[20], char *current_line_chain, int is_chain_kept,unsigned short n_chains_to_delete);
int is_ligand(char *chains_selected[20], char *current_line_chain, unsigned short n_chains_as_ligand);
#endif

View File

@@ -33,8 +33,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/* ------------------------------- PUBLIC MACROS ---------------------------- */
#define M_MAX_PDB_NAME_LEN 200 /**< maximum pdb filename length*/
#define M_MAX_PDB_NAME_LEN 2000 /**< maximum pdb filename length*/
#define M_MAX_CUSTOM_POCKET_LEN 8000 /** maximum length for a custom pocket string*/
#define M_SIGN 1
#define M_NO_SIGN 0

View File

@@ -8,7 +8,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
*/
#ifndef DH_VORONOI
#define DH_VORONOI
@@ -27,7 +26,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#include "calc.h"
#include "utils.h"
#include "../src/qhull/src//qvoronoi/qvoronoi.h"
#include "../src/qhull/src/qconvex/qconvex.h"
@@ -36,62 +34,61 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/* ----------------------------------MACROS--------------------------------- */
#define M_VORONOI_SUCCESS 0 /**< alpha sphere type - hydrophobic alpha sphere */
#define M_APOLAR_AS 0 /**< alpha sphere type - hydrophilic alpha sphere */
#define M_POLAR_AS 1
#define M_APOLAR_AS 0 /**< alpha sphere type - hydrophilic alpha sphere */
#define M_POLAR_AS 1
#define M_PREC_TOLERANCE 1e-3 /**< tolerance for coordinate imprecion during alpha sphere search*/
#define M_BUFSIZE 1e6 /**< buffer size*/
#define M_N_REPLICAS 1 /**< currently not used anymore : number of times we do the voronoi tesselation for translated coordinates to avoid precision problems with qhull */
#define M_BUFSIZE 1e6 /**< buffer size*/
#define M_N_REPLICAS 1 /**< currently not used anymore : number of times we do the voronoi tesselation for translated coordinates to avoid precision problems with qhull */
/* --------------------------------STRUCTURES-------------------------------- */
/**
Container of the Voronoi vertice
*/
typedef struct s_vvertice
typedef struct s_vvertice
{
int resid ; /**< residue ID*/
int id, /**< vertice ID*/
seen, /**< Say if we have seen this vertice during a neighbor search */
qhullId, /**< ID of the vertice in qhull output*/
type ; /**< 0 if apolar contacts, 1 if polar */
int resid; /**< residue ID*/
int id, /**< vertice ID*/
seen, /**< Say if we have seen this vertice during a neighbor search */
qhullId, /**< ID of the vertice in qhull output*/
type; /**< 0 if apolar contacts, 1 if polar */
float ray ; /**< Ray of voronoi vertice */
float x, /**< X coord */
y, /**< Y coord */
z ; /**< Z coord */
int sort_x; /**< Index in the sorted tab by X coord */
int apol_neighbours; /**< number of neighbouring apolar alpha spheres */
float ray; /**< Ray of voronoi vertice */
float x, /**< X coord */
y, /**< Y coord */
z; /**< Z coord */
int vneigh[4] ; /**< vertice neighbours (4 contact atoms)*/
s_atm *neigh[4] ; /**< The theorical 4 contacted atoms */
float bary[3] ; /**< Barycenter of the pocket */
float electrostatic_energy; /**<estimate of electrostatic energy around the alpha sphere */
int sort_x; /**< Index in the sorted tab by X coord */
int apol_neighbours; /**< number of neighbouring apolar alpha spheres */
} s_vvertice ;
int vneigh[4]; /**< vertice neighbours (4 contact atoms)*/
s_atm *neigh[4]; /**< The theorical 4 contacted atoms */
float bary[3]; /**< Barycenter of the pocket */
float electrostatic_energy; /**<estimate of electrostatic energy around the alpha sphere */
} s_vvertice;
/**
vertice list container
*/
typedef struct s_lst_vvertice
{
s_vvertice *vertices ; /**< List of voronoi vertices */
s_vvertice **pvertices ; /**< list of pointers to vertices*/
s_vvertice *vertices; /**< List of voronoi vertices */
s_vvertice **pvertices; /**< list of pointers to vertices*/
/* Indexes of heavy atoms used as input for qhull in the s_pdb list of atoms */
int *h_tr;
int *h_tr;
/* Size of h_tr */
int n_h_tr;
int n_h_tr;
int *tr, /**< translation of voronoi vertice indices*/
nvert, /**< no of vertices*/
qhullSize ; /**< number of vertices in qhull*/
} s_lst_vvertice ;
int *tr, /**< translation of voronoi vertice indices*/
nvert, /**< no of vertices*/
qhullSize; /**< number of vertices in qhull*/
} s_lst_vvertice;
/**
* clusterlib vertice info container
@@ -99,63 +96,57 @@ typedef struct s_lst_vvertice
typedef struct s_clusterlib_vertices
{
double ** pos; /**< Positions (xyz) of Voronoi vertices*/
int ** mask; /**< Mask for position array*/
double weight[3]; /**< column (coordinate weights for distance matrix calculation*/
int transpose; /**< cluster by rows (transpose=0) or column(transpose=1)*/
char dist; /**< char defining distance measure used*/
char method; /**< char defining method used (clustering)*/
double **pos; /**< Positions (xyz) of Voronoi vertices*/
int **mask; /**< Mask for position array*/
double weight[3]; /**< column (coordinate weights for distance matrix calculation*/
int transpose; /**< cluster by rows (transpose=0) or column(transpose=1)*/
char dist; /**< char defining distance measure used*/
char method; /**< char defining method used (clustering)*/
} s_clusterlib_vertices ;
} s_clusterlib_vertices;
/* -----------------------------PROTOTYPES----------------------------------- */
s_lst_vvertice* load_vvertices_DEPRECATED(s_pdb *pdb, int min_apol_neigh,
float ashape_min_size, float ashape_max_size,
float xshift,float yshift, float zshift) ;
s_lst_vvertice* load_vvertices(s_pdb *pdb, int min_apol_neigh, float asph_min_size, float asph_max_size,float xshift,float yshift,float zshift);
s_lst_vvertice *load_vvertices(s_pdb *pdb, s_fparams *params, float xshift, float yshift, float zshift);
void fill_vvertices(s_lst_vvertice *lvvert, const char fpath[], s_atm *atoms, int natoms,
int min_apol_neigh, float asph_min_size, float asph_max_size,
float xshift, float yshift, float zshift,float avg_bfactor,s_pdb *pdb) ;
s_fparams *params,
float xshift, float yshift, float zshift, float avg_bfactor, s_pdb *pdb);
void add_missing_vvertices(s_lst_vvertice *lvvert, const char fpath[], s_atm *atoms,
int min_apol_neigh, float asph_min_size, float asph_max_size,
float xshift, float yshift,float zshift, float avg_bfactor,s_pdb *pdb);
void add_missing_vvertices(s_lst_vvertice *lvvert, const char fpath[], s_atm *atoms,
s_fparams *params,
float xshift, float yshift, float zshift, float avg_bfactor, s_pdb *pdb);
unsigned short check_if_similar_vertice_in_list(s_vvertice *v, s_lst_vvertice *lvvert);
void add_vertice_to_vertice_list(s_lst_vvertice *lvvert,s_vvertice *v);
void copy_vertice(s_vvertice *v1,s_vvertice *v2, int n);
void add_vertice_to_vertice_list(s_lst_vvertice *lvvert, s_vvertice *v);
void copy_vertice(s_vvertice *v1, s_vvertice *v2, int n);
float testVvertice(float xyz[3], int curNbIdx[4], s_atm *atoms,
float min_asph_size, float max_asph_size,
s_lst_vvertice *lvvert,
float xshift, float yshift, float zshift,float avg_bfactor,s_pdb *pdb);
float testVvertice(float xyz[3], int curNbIdx[4], s_atm *atoms,
s_fparams *params,
s_lst_vvertice *lvvert,
float xshift, float yshift, float zshift, float avg_bfactor, s_pdb *pdb);
float atom_in_explicit_pocket(s_atm *cura, s_fparams *params);
s_lst_vvertice *compare_vvertice_shifted_lists(s_lst_vvertice *lvvert,
s_lst_vvertice *list_shifted,float xshift,float yshift,float zshift);
s_lst_vvertice *list_shifted, float xshift, float yshift, float zshift);
double **get_3d_array_from_vvertice_list(s_lst_vvertice *lvvert);
s_clusterlib_vertices *prepare_vertices_for_cluster_lib(s_lst_vvertice *lvvert,char c_method,char d_method);
void set_barycenter(s_vvertice *v) ;
int is_in_lst_vert(s_vvertice **lst_vert, int nb_vert, int v_id) ;
s_clusterlib_vertices *prepare_vertices_for_cluster_lib(s_lst_vvertice *lvvert, char c_method, char d_method);
void set_barycenter(s_vvertice *v);
int is_in_lst_vert(s_vvertice **lst_vert, int nb_vert, int v_id);
int is_in_lst_vert_p(s_vvertice **lst_vert, int nb_vert, s_vvertice *vert);
void write_pqr_vert(FILE *f, s_vvertice *v, int i) ;
void write_pdb_vert(FILE *f, s_vvertice *v, int i) ;
void write_pqr_vert(FILE *f, s_vvertice *v, int i);
void write_pdb_vert(FILE *f, s_vvertice *v, int i);
void write_mmcif_vert(FILE *f, s_vvertice *v, int i);
float get_verts_volume_ptr(s_vvertice **verts, int nvert, int niter,float correct);
float get_verts_volume_ptr(s_vvertice **verts, int nvert, int niter, float correct);
float get_convex_hull_volume(s_vvertice **verts, int nvert);
void print_vvertices(FILE *f, s_lst_vvertice *lvvert) ;
void free_vert_lst(s_lst_vvertice *lvvert) ;
void print_vvertices(FILE *f, s_lst_vvertice *lvvert);
void free_vert_lst(s_lst_vvertice *lvvert);
void transferClustersToVertices(int **clusterIds,s_lst_vvertice *lvert);
void transferClustersToVertices(int **clusterIds, s_lst_vvertice *lvert);
double frand_a_b(double a, double b);
int free_cluster_lib_vertices(s_clusterlib_vertices *clusterlib_vertices, int nvert);

View File

@@ -28,6 +28,6 @@ void write_pqr_atom_line(FILE *f, const char *rec_name, int id, const char *atom
void write_mmcif_atom_line(FILE *f, const char rec_name[], int id, const char atom_name[],
char alt_loc, const char res_name[], const char chain[],
int res_id, const char insert, float x, float y, float z, float occ,
int res_id, const char label_asym_id[],int label_seq_id, const char insert, float x, float y, float z, float occ,
float bfactor, int abpa, const char *symbol, int charge,float abpa_prob) ;
#endif

View File

@@ -40,6 +40,7 @@ void write_pdb_atoms(FILE *f, s_atm *atoms, int natoms) ;
void write_each_pocket_for_DB(const char out_path[], c_lst_pockets *pockets,s_pdb *pdb);
void write_pocket_pqr_DB(const char out[], s_pocket *pocket);
void write_pocket_pdb_DB(const char out[], s_pocket *pocket,s_pdb *pdb);
void write_pocket_mmcif_DB(const char out[], s_pocket *pocket, s_pdb *pdb);
void write_mmcif_atoms(FILE *f, s_atm *atoms, int natoms);
void write_pockets_single_mmcif(const char out[], s_pdb *pdb, c_lst_pockets *pockets);

View File

@@ -1,7 +1,7 @@
#------------------------------------------------------------
# Makefile.
#------------------------------------------------------------
#ARCH = MACOSXX86_64
# ARCH = MACOSXX86_64
ARCH = LINUXAMD64
export ARCH
@@ -47,7 +47,7 @@ COS = -DM_OS_LINUX
CDEBUG = -DMNO_MEM_DEBUG
CWARN = -W -Wextra -Wwrite-strings -Wstrict-prototypes
CFLAGS = $(CWARN) $(COS) $(CDEBUG) -O2 -g -pg -std=c99 -I$(PLUGINDIR)/include -I$(PLUGINDIR)/$(ARCH)/molfile
CFLAGS = $(CWARN) $(COS) $(CDEBUG) -O2 -g -pg -std=gnu99 -I$(PLUGINDIR)/include -I$(PLUGINDIR)/$(ARCH)/molfile
QCFLAGS = -O -g -pg -ansi
LGSL = -L$(PATH_GSL)lib -lgsl -lgslcblas

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,415 @@
#ifndef LIBMOLFILE_PLUGIN_H
#define LIBMOLFILE_PLUGIN_H
#include "vmdplugin.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int molfile_abinitplugin_init(void);
extern int molfile_abinitplugin_register(void *, vmdplugin_register_cb);
extern int molfile_abinitplugin_fini(void);
extern int molfile_amiraplugin_init(void);
extern int molfile_amiraplugin_register(void *, vmdplugin_register_cb);
extern int molfile_amiraplugin_fini(void);
extern int molfile_avsplugin_init(void);
extern int molfile_avsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_avsplugin_fini(void);
extern int molfile_babelplugin_init(void);
extern int molfile_babelplugin_register(void *, vmdplugin_register_cb);
extern int molfile_babelplugin_fini(void);
extern int molfile_basissetplugin_init(void);
extern int molfile_basissetplugin_register(void *, vmdplugin_register_cb);
extern int molfile_basissetplugin_fini(void);
extern int molfile_bgfplugin_init(void);
extern int molfile_bgfplugin_register(void *, vmdplugin_register_cb);
extern int molfile_bgfplugin_fini(void);
extern int molfile_binposplugin_init(void);
extern int molfile_binposplugin_register(void *, vmdplugin_register_cb);
extern int molfile_binposplugin_fini(void);
extern int molfile_biomoccaplugin_init(void);
extern int molfile_biomoccaplugin_register(void *, vmdplugin_register_cb);
extern int molfile_biomoccaplugin_fini(void);
extern int molfile_brixplugin_init(void);
extern int molfile_brixplugin_register(void *, vmdplugin_register_cb);
extern int molfile_brixplugin_fini(void);
extern int molfile_carplugin_init(void);
extern int molfile_carplugin_register(void *, vmdplugin_register_cb);
extern int molfile_carplugin_fini(void);
extern int molfile_ccp4plugin_init(void);
extern int molfile_ccp4plugin_register(void *, vmdplugin_register_cb);
extern int molfile_ccp4plugin_fini(void);
extern int molfile_corplugin_init(void);
extern int molfile_corplugin_register(void *, vmdplugin_register_cb);
extern int molfile_corplugin_fini(void);
extern int molfile_cpmdplugin_init(void);
extern int molfile_cpmdplugin_register(void *, vmdplugin_register_cb);
extern int molfile_cpmdplugin_fini(void);
extern int molfile_crdplugin_init(void);
extern int molfile_crdplugin_register(void *, vmdplugin_register_cb);
extern int molfile_crdplugin_fini(void);
extern int molfile_cubeplugin_init(void);
extern int molfile_cubeplugin_register(void *, vmdplugin_register_cb);
extern int molfile_cubeplugin_fini(void);
extern int molfile_dcdplugin_init(void);
extern int molfile_dcdplugin_register(void *, vmdplugin_register_cb);
extern int molfile_dcdplugin_fini(void);
extern int molfile_dlpolyplugin_init(void);
extern int molfile_dlpolyplugin_register(void *, vmdplugin_register_cb);
extern int molfile_dlpolyplugin_fini(void);
extern int molfile_dsn6plugin_init(void);
extern int molfile_dsn6plugin_register(void *, vmdplugin_register_cb);
extern int molfile_dsn6plugin_fini(void);
extern int molfile_dxplugin_init(void);
extern int molfile_dxplugin_register(void *, vmdplugin_register_cb);
extern int molfile_dxplugin_fini(void);
extern int molfile_edmplugin_init(void);
extern int molfile_edmplugin_register(void *, vmdplugin_register_cb);
extern int molfile_edmplugin_fini(void);
extern int molfile_fs4plugin_init(void);
extern int molfile_fs4plugin_register(void *, vmdplugin_register_cb);
extern int molfile_fs4plugin_fini(void);
extern int molfile_gamessplugin_init(void);
extern int molfile_gamessplugin_register(void *, vmdplugin_register_cb);
extern int molfile_gamessplugin_fini(void);
extern int molfile_graspplugin_init(void);
extern int molfile_graspplugin_register(void *, vmdplugin_register_cb);
extern int molfile_graspplugin_fini(void);
extern int molfile_grdplugin_init(void);
extern int molfile_grdplugin_register(void *, vmdplugin_register_cb);
extern int molfile_grdplugin_fini(void);
extern int molfile_gridplugin_init(void);
extern int molfile_gridplugin_register(void *, vmdplugin_register_cb);
extern int molfile_gridplugin_fini(void);
extern int molfile_gromacsplugin_init(void);
extern int molfile_gromacsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_gromacsplugin_fini(void);
extern int molfile_jsplugin_init(void);
extern int molfile_jsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_jsplugin_fini(void);
extern int molfile_lammpsplugin_init(void);
extern int molfile_lammpsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_lammpsplugin_fini(void);
extern int molfile_mapplugin_init(void);
extern int molfile_mapplugin_register(void *, vmdplugin_register_cb);
extern int molfile_mapplugin_fini(void);
extern int molfile_mdfplugin_init(void);
extern int molfile_mdfplugin_register(void *, vmdplugin_register_cb);
extern int molfile_mdfplugin_fini(void);
extern int molfile_mol2plugin_init(void);
extern int molfile_mol2plugin_register(void *, vmdplugin_register_cb);
extern int molfile_mol2plugin_fini(void);
extern int molfile_moldenplugin_init(void);
extern int molfile_moldenplugin_register(void *, vmdplugin_register_cb);
extern int molfile_moldenplugin_fini(void);
extern int molfile_molemeshplugin_init(void);
extern int molfile_molemeshplugin_register(void *, vmdplugin_register_cb);
extern int molfile_molemeshplugin_fini(void);
extern int molfile_msmsplugin_init(void);
extern int molfile_msmsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_msmsplugin_fini(void);
extern int molfile_namdbinplugin_init(void);
extern int molfile_namdbinplugin_register(void *, vmdplugin_register_cb);
extern int molfile_namdbinplugin_fini(void);
extern int molfile_offplugin_init(void);
extern int molfile_offplugin_register(void *, vmdplugin_register_cb);
extern int molfile_offplugin_fini(void);
extern int molfile_parm7plugin_init(void);
extern int molfile_parm7plugin_register(void *, vmdplugin_register_cb);
extern int molfile_parm7plugin_fini(void);
extern int molfile_parmplugin_init(void);
extern int molfile_parmplugin_register(void *, vmdplugin_register_cb);
extern int molfile_parmplugin_fini(void);
extern int molfile_pbeqplugin_init(void);
extern int molfile_pbeqplugin_register(void *, vmdplugin_register_cb);
extern int molfile_pbeqplugin_fini(void);
extern int molfile_pdbplugin_init(void);
extern int molfile_pdbplugin_register(void *, vmdplugin_register_cb);
extern int molfile_pdbplugin_fini(void);
extern int molfile_pdbxplugin_init(void);
extern int molfile_pdbxplugin_register(void *, vmdplugin_register_cb);
extern int molfile_pdbxplugin_fini(void);
extern int molfile_phiplugin_init(void);
extern int molfile_phiplugin_register(void *, vmdplugin_register_cb);
extern int molfile_phiplugin_fini(void);
extern int molfile_pltplugin_init(void);
extern int molfile_pltplugin_register(void *, vmdplugin_register_cb);
extern int molfile_pltplugin_fini(void);
extern int molfile_plyplugin_init(void);
extern int molfile_plyplugin_register(void *, vmdplugin_register_cb);
extern int molfile_plyplugin_fini(void);
extern int molfile_pqrplugin_init(void);
extern int molfile_pqrplugin_register(void *, vmdplugin_register_cb);
extern int molfile_pqrplugin_fini(void);
extern int molfile_psfplugin_init(void);
extern int molfile_psfplugin_register(void *, vmdplugin_register_cb);
extern int molfile_psfplugin_fini(void);
extern int molfile_raster3dplugin_init(void);
extern int molfile_raster3dplugin_register(void *, vmdplugin_register_cb);
extern int molfile_raster3dplugin_fini(void);
extern int molfile_rst7plugin_init(void);
extern int molfile_rst7plugin_register(void *, vmdplugin_register_cb);
extern int molfile_rst7plugin_fini(void);
extern int molfile_situsplugin_init(void);
extern int molfile_situsplugin_register(void *, vmdplugin_register_cb);
extern int molfile_situsplugin_fini(void);
extern int molfile_spiderplugin_init(void);
extern int molfile_spiderplugin_register(void *, vmdplugin_register_cb);
extern int molfile_spiderplugin_fini(void);
extern int molfile_stlplugin_init(void);
extern int molfile_stlplugin_register(void *, vmdplugin_register_cb);
extern int molfile_stlplugin_fini(void);
extern int molfile_tinkerplugin_init(void);
extern int molfile_tinkerplugin_register(void *, vmdplugin_register_cb);
extern int molfile_tinkerplugin_fini(void);
extern int molfile_uhbdplugin_init(void);
extern int molfile_uhbdplugin_register(void *, vmdplugin_register_cb);
extern int molfile_uhbdplugin_fini(void);
extern int molfile_vaspchgcarplugin_init(void);
extern int molfile_vaspchgcarplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspchgcarplugin_fini(void);
extern int molfile_vaspoutcarplugin_init(void);
extern int molfile_vaspoutcarplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspoutcarplugin_fini(void);
extern int molfile_vaspparchgplugin_init(void);
extern int molfile_vaspparchgplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspparchgplugin_fini(void);
extern int molfile_vaspposcarplugin_init(void);
extern int molfile_vaspposcarplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspposcarplugin_fini(void);
extern int molfile_vasp5xdatcarplugin_init(void);
extern int molfile_vasp5xdatcarplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vasp5xdatcarplugin_fini(void);
extern int molfile_vaspxdatcarplugin_init(void);
extern int molfile_vaspxdatcarplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspxdatcarplugin_fini(void);
extern int molfile_vaspxmlplugin_init(void);
extern int molfile_vaspxmlplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vaspxmlplugin_fini(void);
extern int molfile_vtkplugin_init(void);
extern int molfile_vtkplugin_register(void *, vmdplugin_register_cb);
extern int molfile_vtkplugin_fini(void);
extern int molfile_xbgfplugin_init(void);
extern int molfile_xbgfplugin_register(void *, vmdplugin_register_cb);
extern int molfile_xbgfplugin_fini(void);
extern int molfile_xsfplugin_init(void);
extern int molfile_xsfplugin_register(void *, vmdplugin_register_cb);
extern int molfile_xsfplugin_fini(void);
extern int molfile_xyzplugin_init(void);
extern int molfile_xyzplugin_register(void *, vmdplugin_register_cb);
extern int molfile_xyzplugin_fini(void);
extern int molfile_dtrplugin_init(void);
extern int molfile_dtrplugin_register(void *, vmdplugin_register_cb);
extern int molfile_dtrplugin_fini(void);
extern int molfile_maeffplugin_init(void);
extern int molfile_maeffplugin_register(void *, vmdplugin_register_cb);
extern int molfile_maeffplugin_fini(void);
#define MOLFILE_INIT_ALL \
molfile_abinitplugin_init(); \
molfile_amiraplugin_init(); \
molfile_avsplugin_init(); \
molfile_babelplugin_init(); \
molfile_basissetplugin_init(); \
molfile_bgfplugin_init(); \
molfile_binposplugin_init(); \
molfile_biomoccaplugin_init(); \
molfile_brixplugin_init(); \
molfile_carplugin_init(); \
molfile_ccp4plugin_init(); \
molfile_corplugin_init(); \
molfile_cpmdplugin_init(); \
molfile_crdplugin_init(); \
molfile_cubeplugin_init(); \
molfile_dcdplugin_init(); \
molfile_dlpolyplugin_init(); \
molfile_dsn6plugin_init(); \
molfile_dxplugin_init(); \
molfile_edmplugin_init(); \
molfile_fs4plugin_init(); \
molfile_gamessplugin_init(); \
molfile_graspplugin_init(); \
molfile_grdplugin_init(); \
molfile_gridplugin_init(); \
molfile_gromacsplugin_init(); \
molfile_jsplugin_init(); \
molfile_lammpsplugin_init(); \
molfile_mapplugin_init(); \
molfile_mdfplugin_init(); \
molfile_mol2plugin_init(); \
molfile_moldenplugin_init(); \
molfile_molemeshplugin_init(); \
molfile_msmsplugin_init(); \
molfile_namdbinplugin_init(); \
molfile_offplugin_init(); \
molfile_parm7plugin_init(); \
molfile_parmplugin_init(); \
molfile_pbeqplugin_init(); \
molfile_pdbplugin_init(); \
molfile_pdbxplugin_init(); \
molfile_phiplugin_init(); \
molfile_pltplugin_init(); \
molfile_plyplugin_init(); \
molfile_pqrplugin_init(); \
molfile_psfplugin_init(); \
molfile_raster3dplugin_init(); \
molfile_rst7plugin_init(); \
molfile_situsplugin_init(); \
molfile_spiderplugin_init(); \
molfile_stlplugin_init(); \
molfile_tinkerplugin_init(); \
molfile_uhbdplugin_init(); \
molfile_vaspchgcarplugin_init(); \
molfile_vaspoutcarplugin_init(); \
molfile_vaspparchgplugin_init(); \
molfile_vaspposcarplugin_init(); \
molfile_vasp5xdatcarplugin_init(); \
molfile_vaspxdatcarplugin_init(); \
molfile_vaspxmlplugin_init(); \
molfile_vtkplugin_init(); \
molfile_xbgfplugin_init(); \
molfile_xsfplugin_init(); \
molfile_xyzplugin_init(); \
molfile_dtrplugin_init(); \
molfile_maeffplugin_init(); \
#define MOLFILE_REGISTER_ALL(v, cb) \
molfile_abinitplugin_register(v, cb); \
molfile_amiraplugin_register(v, cb); \
molfile_avsplugin_register(v, cb); \
molfile_babelplugin_register(v, cb); \
molfile_basissetplugin_register(v, cb); \
molfile_bgfplugin_register(v, cb); \
molfile_binposplugin_register(v, cb); \
molfile_biomoccaplugin_register(v, cb); \
molfile_brixplugin_register(v, cb); \
molfile_carplugin_register(v, cb); \
molfile_ccp4plugin_register(v, cb); \
molfile_corplugin_register(v, cb); \
molfile_cpmdplugin_register(v, cb); \
molfile_crdplugin_register(v, cb); \
molfile_cubeplugin_register(v, cb); \
molfile_dcdplugin_register(v, cb); \
molfile_dlpolyplugin_register(v, cb); \
molfile_dsn6plugin_register(v, cb); \
molfile_dxplugin_register(v, cb); \
molfile_edmplugin_register(v, cb); \
molfile_fs4plugin_register(v, cb); \
molfile_gamessplugin_register(v, cb); \
molfile_graspplugin_register(v, cb); \
molfile_grdplugin_register(v, cb); \
molfile_gridplugin_register(v, cb); \
molfile_gromacsplugin_register(v, cb); \
molfile_jsplugin_register(v, cb); \
molfile_lammpsplugin_register(v, cb); \
molfile_mapplugin_register(v, cb); \
molfile_mdfplugin_register(v, cb); \
molfile_mol2plugin_register(v, cb); \
molfile_moldenplugin_register(v, cb); \
molfile_molemeshplugin_register(v, cb); \
molfile_msmsplugin_register(v, cb); \
molfile_namdbinplugin_register(v, cb); \
molfile_offplugin_register(v, cb); \
molfile_parm7plugin_register(v, cb); \
molfile_parmplugin_register(v, cb); \
molfile_pbeqplugin_register(v, cb); \
molfile_pdbplugin_register(v, cb); \
molfile_pdbxplugin_register(v, cb); \
molfile_phiplugin_register(v, cb); \
molfile_pltplugin_register(v, cb); \
molfile_plyplugin_register(v, cb); \
molfile_pqrplugin_register(v, cb); \
molfile_psfplugin_register(v, cb); \
molfile_raster3dplugin_register(v, cb); \
molfile_rst7plugin_register(v, cb); \
molfile_situsplugin_register(v, cb); \
molfile_spiderplugin_register(v, cb); \
molfile_stlplugin_register(v, cb); \
molfile_tinkerplugin_register(v, cb); \
molfile_uhbdplugin_register(v, cb); \
molfile_vaspchgcarplugin_register(v, cb); \
molfile_vaspoutcarplugin_register(v, cb); \
molfile_vaspparchgplugin_register(v, cb); \
molfile_vaspposcarplugin_register(v, cb); \
molfile_vasp5xdatcarplugin_register(v, cb); \
molfile_vaspxdatcarplugin_register(v, cb); \
molfile_vaspxmlplugin_register(v, cb); \
molfile_vtkplugin_register(v, cb); \
molfile_xbgfplugin_register(v, cb); \
molfile_xsfplugin_register(v, cb); \
molfile_xyzplugin_register(v, cb); \
molfile_dtrplugin_register(v, cb); \
molfile_maeffplugin_register(v, cb); \
#define MOLFILE_FINI_ALL \
molfile_abinitplugin_fini(); \
molfile_amiraplugin_fini(); \
molfile_avsplugin_fini(); \
molfile_babelplugin_fini(); \
molfile_basissetplugin_fini(); \
molfile_bgfplugin_fini(); \
molfile_binposplugin_fini(); \
molfile_biomoccaplugin_fini(); \
molfile_brixplugin_fini(); \
molfile_carplugin_fini(); \
molfile_ccp4plugin_fini(); \
molfile_corplugin_fini(); \
molfile_cpmdplugin_fini(); \
molfile_crdplugin_fini(); \
molfile_cubeplugin_fini(); \
molfile_dcdplugin_fini(); \
molfile_dlpolyplugin_fini(); \
molfile_dsn6plugin_fini(); \
molfile_dxplugin_fini(); \
molfile_edmplugin_fini(); \
molfile_fs4plugin_fini(); \
molfile_gamessplugin_fini(); \
molfile_graspplugin_fini(); \
molfile_grdplugin_fini(); \
molfile_gridplugin_fini(); \
molfile_gromacsplugin_fini(); \
molfile_jsplugin_fini(); \
molfile_lammpsplugin_fini(); \
molfile_mapplugin_fini(); \
molfile_mdfplugin_fini(); \
molfile_mol2plugin_fini(); \
molfile_moldenplugin_fini(); \
molfile_molemeshplugin_fini(); \
molfile_msmsplugin_fini(); \
molfile_namdbinplugin_fini(); \
molfile_offplugin_fini(); \
molfile_parm7plugin_fini(); \
molfile_parmplugin_fini(); \
molfile_pbeqplugin_fini(); \
molfile_pdbplugin_fini(); \
molfile_pdbxplugin_fini(); \
molfile_phiplugin_fini(); \
molfile_pltplugin_fini(); \
molfile_plyplugin_fini(); \
molfile_pqrplugin_fini(); \
molfile_psfplugin_fini(); \
molfile_raster3dplugin_fini(); \
molfile_rst7plugin_fini(); \
molfile_situsplugin_fini(); \
molfile_spiderplugin_fini(); \
molfile_stlplugin_fini(); \
molfile_tinkerplugin_fini(); \
molfile_uhbdplugin_fini(); \
molfile_vaspchgcarplugin_fini(); \
molfile_vaspoutcarplugin_fini(); \
molfile_vaspparchgplugin_fini(); \
molfile_vaspposcarplugin_fini(); \
molfile_vasp5xdatcarplugin_fini(); \
molfile_vaspxdatcarplugin_fini(); \
molfile_vaspxmlplugin_fini(); \
molfile_vtkplugin_fini(); \
molfile_xbgfplugin_fini(); \
molfile_xsfplugin_fini(); \
molfile_xyzplugin_fini(); \
molfile_dtrplugin_fini(); \
molfile_maeffplugin_fini(); \
#ifdef __cplusplus
}
#endif
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -423,7 +423,7 @@ void set_atom_based_descriptors(s_atm **atoms, int natoms, s_desc *desc,s_atm *a
/*fprintf(stdout,":%s:",desc->ligTag);*/
desc->hydrophobicity_score = desc->hydrophobicity_score/ (float) nb_res_ids ;
desc->volume_score = desc->volume_score / (float) nb_res_ids ;
desc->flex /= natoms ;
desc->prop_polar_atm = ((float) nb_polar_atm) / ((float) natoms) * 100.0 ;
}

View File

@@ -35,7 +35,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 27-11-08 (v) PDB file check moved in fpmain + minor modif + relooking
## 01-04-08 (v) Added comments and creation of history
## 01-01-08 (vp) Created (random date...)
##
##
## TODO or SUGGESTIONS
##
## (v) Check and update if necessary comments of each function!!
@@ -46,18 +46,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/**
## FUNCTION:
init_def_fparams
## SPECIFICATION:
Initialisation of default parameters
## PARAMETRES: void
## RETURN:
## RETURN:
s_fparams*: Pointer to allocated paramers.
*/
char write_mode[10] = "d"; /*write mode : d -> default | b -> both pdb and mmcif |
char write_mode[10] = "d"; /*write mode : d -> default | b -> both pdb and mmcif |
p ->pdb | m -> mmcif*/
s_fparams *init_def_fparams(void)
@@ -87,36 +87,44 @@ s_fparams *init_def_fparams(void)
par->xlig_resnumber = -1;
par->chain_is_kept = 0;
par->write_par[0] = 'd';
par->xpocket_n = 0;
par->min_n_explicit_pocket_atoms = M_MIN_N_EXPLICIT_POCKET;
par->n_chains_to_delete=0;
par->n_chains_as_ligand=0;
return par;
}
/**
## FUNCTION:
## FUNCTION:
get_fpocket_args
## SPECIFICATION:
## SPECIFICATION:
This function analyse the user's command line and parse it to store parameters
for the pocket finder programm.
## PARAMETRES:
@ int nargs : Number of arguments
@ char **args : Arguments of main program
## RETURN:
## RETURN:
s_params*: Pointer to parameters
*/
s_fparams *get_fpocket_args(int nargs, char **args)
{
int status = 0;
s_fparams *par = init_def_fparams(); /*default param initialy*/
int c = 0;
int apti = 0;
int pti = 0;
short j = 0;
short xflag;
opterr = 0;
char *pt;
char *apt;
char *residue_string[M_MAX_CUSTOM_POCKET_LEN];
short custom_ligand_i = 0;
const char *separators = ",:";
static struct option fplong_options[] = {/*long options args located in fparams.h*/
{"file", required_argument, 0, M_PAR_PDB_FILE},
{"min_alpha_size", required_argument, 0, M_PAR_MIN_ASHAPE_SIZE},
@@ -133,6 +141,8 @@ s_fparams *get_fpocket_args(int nargs, char **args)
{"topology_file", required_argument, 0, M_PAR_TOPOLOGY},
{"model_number", required_argument, 0, M_PAR_MODEL_FLAG},
{"custom_ligand", required_argument, 0, M_PAR_CUSTOM_LIGAND},
{"custom_pocket", required_argument, 0, M_PAR_CUSTOM_POCKET},
{M_PAR_MIN_N_EXPLICIT_POCKET_LONG, required_argument, 0, M_PAR_MIN_N_EXPLICIT_POCKET},
{M_PAR_DROP_CHAINS_LONG, required_argument, 0, M_PAR_DROP_CHAINS}, /*drop chains*/
{M_PAR_CHAIN_AS_LIGAND_LONG, required_argument, 0, M_PAR_CHAIN_AS_LIGAND}, /*chain as ligand*/
{M_PAR_KEEP_CHAINS_LONG, required_argument, 0, M_PAR_KEEP_CHAINS}, /*chain as ligand*/
@@ -145,7 +155,7 @@ s_fparams *get_fpocket_args(int nargs, char **args)
/* getopt_long stores the option index here. */
int option_index = 0;
optarg = 0;
c = getopt_long(nargs, args, "f:m:M:i:p:D:C:e:dxp:v:y:l:r:c:a:k:w:",
c = getopt_long(nargs, args, "f:m:M:i:p:D:C:e:dxp:v:y:l:r:P:u:c:a:k:w:",
fplong_options, &option_index);
// printf("C: %d nargs : %d optindex:%d\n", c, nargs, option_index);
@@ -154,7 +164,6 @@ s_fparams *get_fpocket_args(int nargs, char **args)
case 0:
break;
case M_PAR_WRITE_MODE: /*write mode : d -> default | b -> both pdb and mmcif | p ->pdb | m -> mmcif*/
status++;
if (optarg[0] != 'd' && optarg[0] != 'b' && optarg[0] != 'p' && optarg[0] != 'm' && strcmp(optarg, "both") && strcmp(optarg, "pdb") && strcmp(optarg, "cif") && strcmp(optarg, "mmcif"))
@@ -166,108 +175,149 @@ s_fparams *get_fpocket_args(int nargs, char **args)
{
strcpy(par->write_par, "mmcif");
strcpy(write_mode, par->write_par);
}
else
{
strcpy(par->write_par, optarg);
strcpy(write_mode, par->write_par);
}
}
break;
case M_PAR_CHAIN_AS_LIGAND: /*option with -a "name of the chain" to be specified as a ligand*/
/*select the chains as ligand*/
status++;
strcpy(par->chain_as_ligand, optarg); /*par->chain_as_ligand contains the arg given in cmd line*/
const char *separatorss = ","; /* defining separators*/
pt = strtok(par->chain_as_ligand, separatorss);
pt = strtok(optarg, separators);
int nn = 0;
while (pt != NULL)
{
strncpy(&(par->chain_as_ligand[nn]), pt, 1);
par->chain_as_ligand[nn] = (char *)malloc((M_MAX_CHAIN_NAME_LENGTH + 1) * sizeof(char));
strncpy(par->chain_as_ligand[nn], pt, M_MAX_CHAIN_NAME_LENGTH);
par->chain_as_ligand[nn][M_MAX_CHAIN_NAME_LENGTH]='\0';
nn++;
pt = strtok(NULL, separatorss);
pt = strtok(NULL, separators);
}
par->n_chains_as_ligand=nn;
par->xlig_resnumber = 0;
//printf("lig %s\n",par->chain_as_ligand);
break;
break;
case M_PAR_DROP_CHAINS: /*option with -c "name of the chains"*/
/*drop the selected chains from the pdb file*/
strcpy(par->chain_delete, optarg); /*par->custom_ligand contains the arg given in cmd line*/
//printf("%s and %s",par->custom_ligand,optarg);
const char *separators = ",:"; /* defining separators for drop chains args*/
pt = strtok(par->chain_delete, separators);
pt = strtok(optarg, separators);
int n = 0;
while (pt != NULL)
{
strncpy(&(par->chain_delete[n]), pt,1);
par->chain_delete[n] = (char *)malloc((M_MAX_CHAIN_NAME_LENGTH + 1) * sizeof(char));
strncpy(par->chain_delete[n], pt, M_MAX_CHAIN_NAME_LENGTH);
par->chain_delete[n][M_MAX_CHAIN_NAME_LENGTH]='\0';
n++;
pt = strtok(NULL, separators);
}
par->chain_is_kept = 0;
//printf("%s\n",par->chain_delete);
par->n_chains_to_delete=n;
status++;
break;
case M_PAR_KEEP_CHAINS: /*option with -k "name of the chains"*/
/*drop the selected chains from the pdb file*/
strcpy(par->chain_delete, optarg); /*par->custom_ligand contains the arg given in cmd line*/
//printf("%s and %s",par->custom_ligand,optarg);
const char *separator = ",:"; /* defining separators for drop chains args*/
pt = strtok(par->chain_delete, separator);
pt = strtok(optarg, separators);
int nk = 0;
while (pt != NULL)
{
strncpy(&(par->chain_delete[nk]), pt, 1);
par->chain_delete[nk] = (char *)malloc((M_MAX_CHAIN_NAME_LENGTH + 1) * sizeof(char));
strncpy(par->chain_delete[nk], pt, M_MAX_CHAIN_NAME_LENGTH);
par->chain_delete[nk][M_MAX_CHAIN_NAME_LENGTH]='\0';
nk++;
pt = strtok(NULL, separator);
pt = strtok(NULL, separators);
}
//printf("%s\n",par->chain_delete);
par->n_chains_to_delete=nk;
// printf("%s\n",par->chain_delete);
par->chain_is_kept = 1;
status++;
break;
case M_PAR_CUSTOM_LIGAND:
//parse ligand specification that has to be given as
//residuenumber:residuename:chain_code
//for 1uyd for instance 1224:PU8:A
// parse ligand specification that has to be given as
// residuenumber:residuename:chain_code
// for 1uyd for instance 1224:PU8:A
status++;
strcpy(par->custom_ligand, optarg);
//printf("%s and %s",par->custom_ligand,optarg);
pt = strtok(par->custom_ligand, ":");
// strcpy(par->custom_ligand, optarg);
// printf("%s and %s",par->custom_ligand,optarg);
pt = strtok(optarg, ":");
while (pt != NULL)
{
custom_ligand_i++;
if (custom_ligand_i == 1)
par->xlig_resnumber = atoi(pt);
else if (custom_ligand_i == 2)
strncpy(&(par->xlig_resname), pt, 3);
else if (custom_ligand_i == 3)
strncpy(&(par->xlig_chain_code), pt, 1);
/*int a = atoi(pt);
printf("%d\n", a);*/
else if (custom_ligand_i == 2){
par->xlig_resname= (char *)malloc((M_MAX_LIG_RESNAME_LENGTH + 1) * sizeof(char));
strncpy(par->xlig_resname, pt, M_MAX_LIG_RESNAME_LENGTH);
par->xlig_resname[M_MAX_LIG_RESNAME_LENGTH]='\0';
}
else if (custom_ligand_i == 3){
par->xlig_chain_code= (char *)malloc((M_MAX_CHAIN_NAME_LENGTH + 1) * sizeof(char));
strncpy(par->xlig_chain_code, pt, M_MAX_CHAIN_NAME_LENGTH);
par->xlig_chain_code[M_MAX_CHAIN_NAME_LENGTH]='\0';
}
pt = strtok(NULL, ":");
}
break;
case M_PAR_CUSTOM_POCKET:
// parse pocket specification that has to be given as
// residuenumber1:insertion_code1:chain_code1.residuenumber2:insertion_code2:chain_code2& ....
// for 1uyd for instance 127::A.128::A
status++;
strcpy(par->custom_pocket_arg, optarg);
char *rest = par->custom_pocket_arg;
char *rest2;
/*count residues first*/
while ((pt = strtok_r(rest, ".", &rest)))
par->xpocket_n++;
par->xpocket_chain_code = (char *)my_malloc(par->xpocket_n * sizeof(char));
par->xpocket_insertion_code = (char *)my_malloc(par->xpocket_n * sizeof(char));
par->xpocket_residue_number = (unsigned short *)my_malloc(par->xpocket_n * sizeof(unsigned short));
pti = 0;
strcpy(par->custom_pocket_arg, optarg);
rest = par->custom_pocket_arg;
while ((pt = strtok_r(rest, ".", &rest)))
{
strcpy(&residue_string, pt);
rest2 = residue_string;
apti = 0;
while ((apt = strtok_r(rest2, ":", &rest2)))
{
switch (apti)
{
case 0:
par->xpocket_residue_number[pti] = (unsigned short)atoi(apt); // fprintf(stdout,"residuenumber: %d\n", atoi(apt));
case 1:
strncpy(&(par->xpocket_insertion_code[pti]), apt, 1);
case 2:
strncpy(&(par->xpocket_chain_code[pti]), apt, 1);
}
apti++;
}
pti++;
}
break;
case M_PAR_MIN_N_EXPLICIT_POCKET:
status++;
par->min_n_explicit_pocket_atoms = (int)atoi(optarg);
break;
case M_PAR_PDB_FILE:
// printf("option -f with value `%s'\n", optarg);
status++;
@@ -301,7 +351,7 @@ s_fparams *get_fpocket_args(int nargs, char **args)
break;
case M_PAR_DISTANCE_MEASURE:
// printf("option -e with value %s\n", optarg);
//strcpy(par->distance_measure,optarg); /*might be problematic*/
// strcpy(par->distance_measure,optarg); /*might be problematic*/
strncpy(&(par->distance_measure), optarg, 1);
status++;
@@ -335,7 +385,7 @@ s_fparams *get_fpocket_args(int nargs, char **args)
status++;
break;
case M_PAR_MODEL_FLAG:
//printf("option -l with value %s", optarg);
// printf("option -l with value %s", optarg);
par->model_number = (int)atoi(optarg);
status++;
break;
@@ -348,39 +398,45 @@ s_fparams *get_fpocket_args(int nargs, char **args)
{
strcpy(par->write_par, "m");
strcpy(write_mode, par->write_par);
//printf("%c", write_mode[0]);
// printf("%c", write_mode[0]);
}
else if (strstr(par->pdb_path, ".pdb") && par->write_par[0] == 'd')
{
strcpy(par->write_par, "p");
strcpy(write_mode, par->write_par);
}
if (par->xpocket_n > 0 && par->xlig_resnumber > -1)
{
fprintf(stderr, "\n\033[1mERROR:\033[0m you specified an explicit ligand (-r) AND an explicit pocke (-P) in the same fpocket run. This is currently not allowed, please use either the one or the other.\n\n");
return NULL;
}
return (par);
/* if(status){
return(par);
}
else {
return(NULL);
}*/
}
/**
## FUNCTION:
## FUNCTION:
get_fpocket_args
## SPECIFICATION:
## SPECIFICATION:
This function analyse the user's command line and parse it to store parameters
for the pocket finder programm.
## PARAMETRES:
@ int nargs : Number of arguments
@ char **args : Arguments of main program
## RETURN:
## RETURN:
s_params*: Pointer to parameters
*/
s_fparams *DEPR_get_fpocket_args(int nargs, char **args)
{
@@ -391,7 +447,7 @@ s_fparams *DEPR_get_fpocket_args(int nargs, char **args)
s_fparams *par = init_def_fparams();
char *pdb_lst = NULL;
//read arguments by flags
// read arguments by flags
for (i = 1; i < nargs; i++)
{
if (strlen(args[i]) == 2 && args[i][0] == '-' && i <= (nargs - 1))
@@ -520,19 +576,19 @@ s_fparams *DEPR_get_fpocket_args(int nargs, char **args)
}
/**
## FUNCTION:
## FUNCTION:
parse_clust_max_dist
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the distance criteria first clustering algorithm.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid float), 1 if not
*/
int parse_clust_max_dist(char *str, s_fparams *p)
{
@@ -550,19 +606,19 @@ int parse_clust_max_dist(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_sclust_max_dist
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the distance criteria in the single linkage clustering.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid float), 1 if not
*/
int parse_clustering_method(char *str, s_fparams *p)
{
@@ -595,20 +651,20 @@ int parse_distance_measure(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_min_apol_neigh
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the minimum number of apolar contacted atom for an alpha
sphere to be considered as apolar.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid int), 1 if not
*/
int parse_min_apol_neigh(char *str, s_fparams *p)
{
@@ -630,19 +686,19 @@ int parse_min_apol_neigh(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_asph_min_size
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the minimum radius of each alpha shpere
## PARAMETERS:
@ char *str: The string to parse
@ s_fparams *p: The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid float), 1 if not
*/
int parse_asph_min_size(char *str, s_fparams *p)
{
@@ -660,19 +716,19 @@ int parse_asph_min_size(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_asph_max_size
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the maximum radius of each alpha shpere
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid float), 1 if not
*/
int parse_asph_max_size(char *str, s_fparams *p)
{
@@ -690,20 +746,20 @@ int parse_asph_max_size(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_mc_niter
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the number of iteration for the Monte Carlo volume
calculation.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid float), 1 if not
*/
int parse_mc_niter(char *str, s_fparams *p)
{
@@ -721,19 +777,19 @@ int parse_mc_niter(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_basic_vol_div
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the number of iteration for the basic volume calculation.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid integer), 1 if not
*/
int parse_basic_vol_div(char *str, s_fparams *p)
{
@@ -751,19 +807,19 @@ int parse_basic_vol_div(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_refine_min_apol
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the minimum number of apolar sphere per pocket.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid integer), 1 if not
*/
int parse_refine_minaap(char *str, s_fparams *p)
{
@@ -781,19 +837,19 @@ int parse_refine_minaap(char *str, s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
parse_min_pock_nb_asph
## SPECIFICATION:
## SPECIFICATION:
Parsing function for the minimum number of alpha sphere per pocket.
## PARAMETERS:
@ char *str : The string to parse
@ s_fparams *p : The structure than will contain the parsed parameter
## RETURN:
## RETURN:
int: 0 if the parameter is valid (here a valid integer), 1 if not
*/
int parse_min_pock_nb_asph(char *str, s_fparams *p)
{
@@ -813,17 +869,17 @@ int parse_min_pock_nb_asph(char *str, s_fparams *p)
/**
## FUNCTION:
is_fpocket_opt
## SPECIFICATION:
Say either or not a single letter code is a fpocket option (excluding
input file/list option.)
## PARAMETRES:
@ const char opt: The one letter code option.
## RETURN:
integer: 1 if it's a valid option parmeter, 0 if not.
*/
int is_fpocket_opt(const char opt)
@@ -846,18 +902,18 @@ int is_fpocket_opt(const char opt)
}
/**
## FUNCTION:
## FUNCTION:
free_fparams
## SPECIFICATION:
## SPECIFICATION:
Free parameters
## PARAMETRES:
## PARAMETRES:
@ s_params *p: Pointer to the structure to free
## RETURN:
## RETURN:
void
*/
void free_fparams(s_fparams *p)
{
@@ -878,18 +934,18 @@ void free_fparams(s_fparams *p)
}
/**
## FUNCTION:
## FUNCTION:
print_pocket_usage
## SPECIFICATION:
## SPECIFICATION:
Displaying usage of the programm in the given buffer
## PARAMETRES:
@ FILE *f: buffer to print in
## RETURN:
void
*/
void print_pocket_usage(FILE *f)
{
@@ -916,13 +972,21 @@ void print_pocket_usage(FILE *f)
fprintf(f, "\n\n\033[1mOptional input parameters\033[0m\n");
fprintf(f, "\t-%c --%s (int)\t\t\t: Number of Model to analyze.\t\n", M_PAR_MODEL_FLAG, M_PAR_MODEL_FLAG_LONG);
fprintf(f, "\t-%c --%s (string)\t\t: File name of a topology file (Amber prmtop).\t\n", M_PAR_TOPOLOGY, M_PAR_LONG_TOPOLOGY);
fprintf(f, "\t-%c --%s (string)\t\t: String specifying a ligand like: residuenumber:residuename:chain_code (ie. 1224:PU8:A).\t\n", M_PAR_CUSTOM_LIGAND, M_PAR_CUSTOM_LIGAND_LONG);
fprintf(f, "\t-%c --%s (string)\t\t: String specifying a ligand like: \n\
\t\t\t\t\t\t residuenumber:residuename:chain_code (ie. 1224:PU8:A).\t\n",
M_PAR_CUSTOM_LIGAND, M_PAR_CUSTOM_LIGAND_LONG);
fprintf(f, "\t-%c --%s (string)\t\t: String specifying a pocket like: \n\
\t\t\t\t\t\t residuenumber1:insertion_code1('-' if empty):chain_code1.residuenumber2:insertion_code2:chain_code2 (ie. 138:-:A.139:-:A).\t\n",
M_PAR_CUSTOM_POCKET, M_PAR_CUSTOM_POCKET_LONG);
fprintf(f, "\t-%c --%s (int)\t: If explicit pocket provided, minimum number \n\
\t\t\t\t\t\t of atoms of an alpha sphere that have to be in the selected pocket.\t\n",
M_PAR_MIN_N_EXPLICIT_POCKET, M_PAR_MIN_N_EXPLICIT_POCKET_LONG);
fprintf(f, "\t-%c --%s (char)\t\t: Character specifying a chain as a ligand\t\n", M_PAR_CHAIN_AS_LIGAND, M_PAR_CHAIN_AS_LIGAND_LONG);
fprintf(f, "\n\n\033[1mOptional pocket detection parameters\033[0m (default parameters) \n\
\t-%c --%s (float)\t\t: Minimum radius of an alpha-sphere.\t(%.1f)\n",
M_PAR_MIN_ASHAPE_SIZE, M_PAR_LONG_MIN_ASHAPE_SIZE, M_MAX_ASHAPE_SIZE_DEFAULT);
fprintf(f, "\t-%c --%s (float)\t\t: Maximum radius of an alpha-sphere.\t(%.1f)\n", M_PAR_MAX_ASHAPE_SIZE, M_PAR_LONG_MAX_ASHAPE_SIZE, M_MIN_ASHAPE_SIZE_DEFAULT);
M_PAR_MIN_ASHAPE_SIZE, M_PAR_LONG_MIN_ASHAPE_SIZE, M_MIN_ASHAPE_SIZE_DEFAULT);
fprintf(f, "\t-%c --%s (float)\t\t: Maximum radius of an alpha-sphere.\t(%.1f)\n", M_PAR_MAX_ASHAPE_SIZE, M_PAR_LONG_MAX_ASHAPE_SIZE, M_MAX_ASHAPE_SIZE_DEFAULT);
fprintf(f, "\t-%c --%s (float)\t: Distance threshold for clustering algorithm\t(%.1f)\n", M_PAR_CLUST_MAX_DIST, M_PAR_LONG_CLUST_MAX_DIST, M_CLUST_MAX_DIST);
fprintf(f, "\t-%c --%s (char)\t\t: Specify the clustering method wanted for \n\
\t\t\t\t\t\t grouping voronoi vertices together (%c)\n\
@@ -952,7 +1016,7 @@ void print_pocket_usage(FILE *f)
\t\t\t\t\t\t able to keep up to (%d) chains (ie : -k A,B,C,E)\n",
M_PAR_KEEP_CHAINS, M_PAR_KEEP_CHAINS_LONG, M_MAX_CHAINS_DELETE);
fprintf(f, "\t-%c --%s (char)\t\t: consider this chain as a ligand explicitly (i.e. -%c D)\n",
M_PAR_CHAIN_AS_LIGAND, M_PAR_CHAIN_AS_LIGAND_LONG,M_PAR_CHAIN_AS_LIGAND);
M_PAR_CHAIN_AS_LIGAND, M_PAR_CHAIN_AS_LIGAND_LONG, M_PAR_CHAIN_AS_LIGAND);
fprintf(f, "\t-%c --%s (char)\t\t\t: Writing mode to be used after pocket detection, \n\
\t\t\t\t\t\t d -> default (same format outpout as input)\n\
\t\t\t\t\t\t b or both -> both pdb and mmcif | p or pdb ->pdb | m or cif or mmcif-> mmcif\n",
@@ -961,18 +1025,18 @@ void print_pocket_usage(FILE *f)
}
/*write mode : d -> default | b -> both pdb and mmcif | p ->pdb | m -> mmcif*/
/**
## FUNCTION:
## FUNCTION:
print_fparams
## SPECIFICATION:
## SPECIFICATION:
Print function
## PARAMETRES:
@ s_fparams *p : Parameters to print
@ FILE *f : Buffer to write in
## RETURN:
## RETURN:
*/
void print_fparams(s_fparams *p, FILE *f)
{

View File

@@ -30,7 +30,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 27-11-08 (v) PDB file check moved here instead of fparams
## 01-04-08 (v) Added comments and creation of history
## 01-01-08 (vp) Created (random date...)
##
##
## TODO or SUGGESTIONS
##
@@ -38,11 +38,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/**
## FUNCTION:
int main(int argc, char *argv[])
int main(int argc, char *argv[])
## SPECIFICATION:
Main program!
Main program!
*/
int main(int argc, char *argv[])
@@ -50,10 +50,10 @@ int main(int argc, char *argv[])
s_fparams *params = get_fpocket_args(argc, argv);
params->fpocket_running = 1;
/* If parameters parsing is ok */
if (params)
{
params->fpocket_running = 1;
if (!params->db_run)
fprintf(stdout, "***** POCKET HUNTING BEGINS ***** \n");
// print_fparams(params,stdout);
@@ -76,7 +76,7 @@ int main(int argc, char *argv[])
}
else
{
if (params->pdb_path == NULL || strlen(params->pdb_path) <= 0)
if (!params->pdb_path[0] || strlen(params->pdb_path) <= 0)
{
fprintf(stdout, "! Invalid pdb name given.\n");
print_pocket_usage(stdout);
@@ -103,20 +103,20 @@ int main(int argc, char *argv[])
return 0;
}
/**
## FUNCTION:
process_pdb
## SPECIFICATION:
Handle a single pdb: check the pdb name, load data, and launch fpocket if
the pdb file have been successfully read.
## FUNCTION:
process_pdb
## SPECIFICATION:
Handle a single pdb: check the pdb name, load data, and launch fpocket if
the pdb file have been successfully read.
## PARAMETRES:
@ char *pdbname : Name of the pdb
@ s_fparams *params : Parameters of the algorithm. See fparams.c/.h
## RETURN:
void
@ char *pdbname : Name of the pdb
@ s_fparams *params : Parameters of the algorithm. See fparams.c/.h
## RETURN:
void
*/
void process_pdb(char *pdbname, s_fparams *params)
{
@@ -140,15 +140,14 @@ void process_pdb(char *pdbname, s_fparams *params)
if (DEBUG)
print_number_of_objects_in_memory();
s_pdb *pdb = open_file_format(pdbname, NULL, M_DONT_KEEP_LIG, params->model_number, params);
s_pdb *pdb_w_lig = open_file_format(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
s_pdb *pdb_w_lig = open_file_format(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
// s_pdb *pdb = open_mmcif(pdbname, NULL, M_DONT_KEEP_LIG, params->model_number, params);
// s_pdb *pdb_w_lig = open_mmcif(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
// s_pdb *pdb = open_mmcif(pdbname, NULL, M_DONT_KEEP_LIG, params->model_number, params);
// s_pdb *pdb_w_lig = open_mmcif(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
//s_pdb *pdb = rpdb_open(pdbname, NULL, M_DONT_KEEP_LIG, params->model_number, params);
//s_pdb *pdb_w_lig = rpdb_open(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
// s_pdb *pdb = rpdb_open(pdbname, NULL, M_DONT_KEEP_LIG, params->model_number, params);
// s_pdb *pdb_w_lig = rpdb_open(pdbname, NULL, M_KEEP_LIG, params->model_number, params);
if (DEBUG)
print_number_of_objects_in_memory();
@@ -160,15 +159,15 @@ void process_pdb(char *pdbname, s_fparams *params)
if (pdb)
{
/* Actual reading of pdb data and then calculation */
read_file_format(pdb, NULL, M_DONT_KEEP_LIG, params->model_number, params);
read_file_format(pdb_w_lig, NULL, M_KEEP_LIG, params->model_number, params);
//read_mmcif(pdb, NULL, M_DONT_KEEP_LIG, params->model_number, params);
//read_mmcif(pdb_w_lig, NULL, M_KEEP_LIG, params->model_number, params);
// read_mmcif(pdb, NULL, M_DONT_KEEP_LIG, params->model_number, params);
// read_mmcif(pdb_w_lig, NULL, M_KEEP_LIG, params->model_number, params);
//rpdb_read(pdb, NULL, M_DONT_KEEP_LIG, params->model_number, params);
//rpdb_read(pdb_w_lig, NULL, M_KEEP_LIG, params->model_number, params);
// rpdb_read(pdb, NULL, M_DONT_KEEP_LIG, params->model_number, params);
// rpdb_read(pdb_w_lig, NULL, M_KEEP_LIG, params->model_number, params);
// fprintf(stdout,"Init coordinate grid\n");
create_coord_grid(pdb);
@@ -177,7 +176,7 @@ void process_pdb(char *pdbname, s_fparams *params)
/*free_pdb_atoms(pdb);
free_pdb_atoms(pdb_w_lig);
if(DEBUG)print_number_of_objects_in_memory();
return(NULL);*/
c_lst_pockets *pockets = search_pocket(pdb, params, pdb_w_lig);
@@ -223,30 +222,30 @@ void process_pdb(char *pdbname, s_fparams *params)
print_number_of_objects_in_memory();
}
}
else
fprintf(stderr, "! PDB reading failed!\n");
else {
fprintf(stderr, "! Structure reading failed!\n");
exit( EXIT_FAILURE );
}
}
s_pdb *open_file_format(char *fpath, const char *ligan, const int keep_lig, int model_number, s_fparams *par)
{
s_pdb *pdb;
if (strstr(par->pdb_path, ".cif")) /*strstr finds the substring and here we search for the file extension we want */
pdb = open_mmcif(fpath, NULL, keep_lig, par->model_number, par);
if (strstr(par->pdb_path, ".cif")) /*strstr finds the substring and here we search for the file extension we want */
pdb = open_mmcif(fpath, NULL, keep_lig, par->model_number, par);
else if (strstr(par->pdb_path, ".pdb"))
pdb = rpdb_open(fpath, NULL, keep_lig, par->model_number, par);
return pdb;
}
void read_file_format(s_pdb *pdb, const char *ligan, const int keep_lig, int model_number, s_fparams *par)
{
if (strstr(par->pdb_path, ".cif")){ /*strstr finds the substring and here we search for the file extension we want */
read_mmcif(pdb, NULL, keep_lig, par->model_number, par);
if (strstr(par->pdb_path, ".cif"))
{ /*strstr finds the substring and here we search for the file extension we want */
read_mmcif(pdb, NULL, keep_lig, par->model_number, par);
}
else if (strstr(par->pdb_path, ".pdb"))
rpdb_read(pdb, NULL, keep_lig, par->model_number, par);
}

View File

@@ -1,5 +1,5 @@
#include "../headers/fpocket.h"
#include "../headers/fpocket.h"
/*
* Copyright <2012> <Vincent Le Guilloux,Peter Schmidtke, Pierre Tuffery>
* Copyright <2013-2018> <Peter Schmidtke, Vincent Le Guilloux>
@@ -32,31 +32,31 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
## 28-11-08 (v) Comments UTD
## 01-04-08 (v) Added comments and creation of history
## 01-01-08 (vp) Created (random date...)
##
##
## TODO or SUGGESTIONS
##
*/
/**
## FUNCTION:
## FUNCTION:
pockets search_pocket
## SPECIFICATION:
## SPECIFICATION:
This function will call all functions needed for the pocket finding algorith
and will return the list of pockets found on the protein.
## PARAMETRES:
@ s_pdb *pdb : The pdb data of the protein to handle.
@ s_fparams : Parameters of the algorithm
## RETURN:
A chained list of pockets found, sorted according to the current critera
(the default is a scoring function)
*/
c_lst_pockets* search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig) {
c_lst_pockets *search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig)
{
clock_t b, e;
time_t bt, et;
@@ -66,21 +66,22 @@ c_lst_pockets* search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig) {
s_clusterlib_vertices *clusterlib_vertices = NULL;
Node *cluster_tree = NULL;
/* Calculate and read voronoi vertices comming from qhull */
// fprintf(stdout, "========= fpocket algorithm begins =========\n");
if (DEBUG) {
if (DEBUG)
{
fprintf(stdout, "> Calculating vertices ...\n");
}
bt = clock();
// s_lst_vvertice *lvert = load_vvertices(pdb, params->min_apol_neigh,
// params->asph_min_size,
// params->asph_max_size, 0.0, 0.0, 0.0);
s_lst_vvertice *lvert = load_vvertices(pdb, params->min_apol_neigh,
params->asph_min_size,
params->asph_max_size, 0.0, 0.0, 0.0);
s_lst_vvertice *lvert = load_vvertices(pdb, params, 0.0, 0.0, 0.0);
/*if(lvert->nvert>8000){*/
/* params->asph_max_size=7.6;
@@ -96,112 +97,129 @@ c_lst_pockets* search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig) {
params->min_pock_nb_asph=M_MIN_POCK_NB_ASPH;
}*/
if (DEBUG) {
if (DEBUG)
{
fprintf(stdout, "distance measure : %c\n", params->clustering_method);
fprintf(stdout, "%d vertices\n", lvert->nvert);
fprintf(stdout, "needing %.5f s to read the vertices", (double) (clock() - b) / CLOCKS_PER_SEC);
fprintf(stdout, "needing %.5f s to read the vertices", (double)(clock() - b) / CLOCKS_PER_SEC);
}
if (DEBUG) {
if (DEBUG)
{
fprintf(stdout, "Preparing for clustering\n");
}
if (DEBUG) print_number_of_objects_in_memory();
if (params->xlig_resnumber == -1) {
if (DEBUG)
print_number_of_objects_in_memory();
if (params->xlig_resnumber == -1 && params->xpocket_n == 0)
{
clusterlib_vertices = prepare_vertices_for_cluster_lib(lvert, params->clustering_method, params->distance_measure);
if (DEBUG) fprintf(stdout, "Clustering\n");
if (DEBUG)
fprintf(stdout, "Clustering\n");
// fprintf(stdosut,"distance measure : %c\n",clusterlib_vertices->method);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
cluster_tree = treecluster(lvert->nvert,
3,
clusterlib_vertices->pos,
clusterlib_vertices->mask,
clusterlib_vertices->weight,
clusterlib_vertices->transpose,
clusterlib_vertices->dist,
clusterlib_vertices->method,
NULL);
if (DEBUG) print_number_of_objects_in_memory();
if (cluster_tree == NULL) {
3,
clusterlib_vertices->pos,
clusterlib_vertices->mask,
clusterlib_vertices->weight,
clusterlib_vertices->transpose,
clusterlib_vertices->dist,
clusterlib_vertices->method,
NULL);
if (DEBUG)
print_number_of_objects_in_memory();
if (cluster_tree == NULL)
{
fprintf(stderr, "Error in creating clustering tree, return NULL pointer...breaking up");
return (0);
}
int **clusterIds = cuttree_distance(lvert->nvert, cluster_tree, params->clust_max_dist);
//int i;
if (DEBUG) print_number_of_objects_in_memory();
// int i;
if (DEBUG)
print_number_of_objects_in_memory();
transferClustersToVertices(clusterIds, lvert);
if (DEBUG) fprintf(DEBUG_STREAM, "freeing clusterlib vertices now\n");
if (DEBUG)
fprintf(DEBUG_STREAM, "freeing clusterlib vertices now\n");
free_cluster_lib_vertices(clusterlib_vertices, lvert->nvert);
free_cluster_tree(cluster_tree);
free_cluster_ids(clusterIds, lvert->nvert);
}
if (lvert == NULL) {
if (lvert == NULL)
{
fprintf(stderr, "! Vertice calculation failed!\n");
return NULL;
}
pockets = assign_pockets(lvert);
if (DEBUG) {
if (DEBUG)
{
fprintf(DEBUG_STREAM, "After pocket assignment :\n");
fflush(DEBUG_STREAM);
print_number_of_objects_in_memory();
fprintf(DEBUG_STREAM, "\tpocket : %p :\n\tpocket vertice list : %p\n", pockets, pockets->vertices);
fflush(DEBUG_STREAM);
}
apply_clustering(pockets, params);
if (DEBUG) {
apply_clustering(pockets);
if (DEBUG)
{
fprintf(DEBUG_STREAM, "applied clustering to pockets");
print_number_of_objects_in_memory();
}
if (pockets) {
if (pockets)
{
reIndexPockets(pockets);
// fprintf(stdout, "> Calculating descriptors and score...\n");
if (DEBUG)print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
set_pockets_descriptors(pockets, pdb, params, pdb_w_lig);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
/* Drop small and too polar binding pockets */
if (DEBUG) {
if (DEBUG)
{
print_number_of_objects_in_memory();
fprintf(DEBUG_STREAM, "drop small and polar clusters\n");
}
dropSmallNpolarPockets(pockets, params);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
reIndexPockets(pockets);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
/* Sorting pockets */
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
sort_pockets(pockets, M_SCORE_SORT_FUNCT);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
//sort_pockets(pockets, M_NASPH_SORT_FUNCT) ;
// sort_pockets(pockets, M_NASPH_SORT_FUNCT) ;
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
reIndexPockets(pockets);
if (DEBUG) print_number_of_objects_in_memory();
if (DEBUG)
print_number_of_objects_in_memory();
// int i;
if (params->fpocket_running && params->flag_do_grid_calculations && params->topology_path) calculate_pocket_energy_grids(pockets, params, pdb);
//params->fpocket_running &&
if (params->fpocket_running && params->flag_do_grid_calculations && params->topology_path[0])
calculate_pocket_energy_grids(pockets, params, pdb);
// params->fpocket_running &&
}
return pockets;
}

View File

@@ -58,6 +58,7 @@ void write_out_fpocket(c_lst_pockets *pockets, s_pdb *pdb, char *pdbname)
char pdb_code[350] = "";
char pdb_path[350] = "";
char out_path[350] = "";
char out_path_tmp[350] = "";
char pdb_out_path[350] = "";
char info_out_path[350] = "";
char mmcif_out_path[350] = "";
@@ -85,34 +86,34 @@ void write_out_fpocket(c_lst_pockets *pockets, s_pdb *pdb, char *pdbname)
return;
}
sprintf(out_path, "%s/%s", out_path, pdb_code);
sprintf(pdb_out_path, "%s_out.pdb", out_path);
sprintf(out_path_tmp, "%s/%s", out_path, pdb_code);
sprintf(pdb_out_path, "%s_out.pdb", out_path_tmp);
sprintf(mmcif_out_path, "%s_out.cif", out_path);
sprintf(mmcif_out_path, "%s_out.cif", out_path_tmp);
/* Write vmd and pymol scripts */
sprintf(fout, "%s_out.pdb", pdb_code);
write_visualization(out_path, fout);
write_visualization(out_path_tmp, fout);
/* Writing full pdb */
//printf("%s\n",write_mode);
if(write_mode[0] == 'p' || write_mode[0] == 'b'){
sprintf(pdb_out_path, "%s_out.pdb", out_path);
sprintf(pdb_out_path, "%s_out.pdb", out_path_tmp);
write_pockets_single_pdb(pdb_out_path, pdb, pockets);
}
/*Writing full mmcif*/
if(write_mode[0] == 'm' || write_mode[0] == 'b'){
sprintf(mmcif_out_path, "%s_out.cif", out_path);
sprintf(mmcif_out_path, "%s_out.cif", out_path_tmp);
write_pockets_single_mmcif(mmcif_out_path, pdb, pockets);
}
sprintf(info_out_path, "%s_info.txt", out_path);
sprintf(info_out_path, "%s_info.txt", out_path_tmp);
write_out_fpocket_info_file(pockets, info_out_path);
/* Writing pockets as a single pqr */
sprintf(fout, "%s_pockets.pqr", out_path);
sprintf(fout, "%s_pockets.pqr", out_path_tmp);
write_pockets_single_pqr(fout, pockets);
/* Writing individual pockets pqr */
@@ -121,14 +122,14 @@ void write_out_fpocket(c_lst_pockets *pockets, s_pdb *pdb, char *pdbname)
else
sprintf(out_path, "%s_out", pdb_code);
sprintf(out_path, "%s/pockets", out_path);
sprintf(command, "mkdir %s", out_path);
sprintf(out_path_tmp, "%s/pockets", out_path);
sprintf(command, "mkdir %s", out_path_tmp);
status = system(command);
/*if(status != 0) {
return ;
}*/
write_each_pocket(out_path, pockets);
write_each_pocket(out_path_tmp, pockets);
}
}
/**

Some files were not shown because too many files have changed in this diff Show More