mirror of
https://github.com/Discngine/fpocket.git
synced 2026-06-04 20:04:22 +08:00
Compare commits
62 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d7e84677b | ||
|
|
4b3073e0de | ||
|
|
675fe8c037 | ||
|
|
beb472ba2b | ||
|
|
c87362fa04 | ||
|
|
9ff11f655f | ||
|
|
11cff11a1e | ||
|
|
a206c797a4 | ||
|
|
79e16f8b15 | ||
|
|
96a6ed30ed | ||
|
|
5967a8fb8c | ||
|
|
57989435b4 | ||
|
|
9f7e173a2d | ||
|
|
6463aee064 | ||
|
|
e3347e6259 | ||
|
|
fc1dac6633 | ||
|
|
73e911ab58 | ||
|
|
ff92eafeb7 | ||
|
|
4f4893164f | ||
|
|
b02ae9ac19 | ||
|
|
87cea6b1ce | ||
|
|
b410ea1a6a | ||
|
|
09bb933615 | ||
|
|
1d186a45c9 | ||
|
|
5614b44600 | ||
|
|
0a150455e0 | ||
|
|
225fd07b15 | ||
|
|
4295d69c33 | ||
|
|
e571f00051 | ||
|
|
4d169aaaab | ||
|
|
ca6f4b036a | ||
|
|
9a4ec461ca | ||
|
|
e57a050dad | ||
|
|
c46dd801df | ||
|
|
61b15247ed | ||
|
|
f5913deaa9 | ||
|
|
9c7be61644 | ||
|
|
f05cdb7cdd | ||
|
|
115128de62 | ||
|
|
ee1cc7373f | ||
|
|
ac18b146ff | ||
|
|
9c2cbca91a | ||
|
|
c00ab205b6 | ||
|
|
86a4a97ac7 | ||
|
|
ce4997d6e6 | ||
|
|
a0bbee64f8 | ||
|
|
d82104b99a | ||
|
|
5ef19079e9 | ||
|
|
cd00b961e6 | ||
|
|
84967334d8 | ||
|
|
9906237e6d | ||
|
|
71637e923f | ||
|
|
127c60a49b | ||
|
|
3a60a4c86e | ||
|
|
91e3d2dbbe | ||
|
|
f99a6ed96d | ||
|
|
855bad8cce | ||
|
|
5408f01005 | ||
|
|
2acab799f4 | ||
|
|
edfd87c188 | ||
|
|
5e3b4f31dc | ||
|
|
8bcf81635e |
1
.dockerignore
Normal file
1
.dockerignore
Normal file
@@ -0,0 +1 @@
|
||||
*.o
|
||||
4
.github/workflows/c-cpp.yml
vendored
4
.github/workflows/c-cpp.yml
vendored
@@ -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
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ src/qhull/bin/
|
||||
src/qhull/lib/libqhullstatic_r.a
|
||||
src/qhull/lib/libqhullstatic.a
|
||||
*.pyc
|
||||
vmd/plugins
|
||||
@@ -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"]
|
||||
29
Dockerfile-molfile-debug
Normal file
29
Dockerfile-molfile-debug
Normal file
@@ -0,0 +1,29 @@
|
||||
FROM ubuntu:latest
|
||||
RUN groupadd -r fpocket && useradd --no-log-init -r -g fpocket fpocket
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV PLUGINDIR=compiled
|
||||
RUN apt update -y && apt install -y vim gdb 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 vmd /vmd
|
||||
WORKDIR /vmd/plugins
|
||||
RUN make LINUXAMD64 && make distrib
|
||||
|
||||
COPY makefile /opt/fpocket/
|
||||
COPY src /opt/fpocket/src
|
||||
COPY data/sample /opt/fpocket/sample
|
||||
COPY man /opt/fpocket/man
|
||||
COPY headers /opt/fpocket/headers
|
||||
COPY obj /opt/fpocket/obj
|
||||
COPY scripts /opt/fpocket/scripts
|
||||
COPY bin /opt/fpocket/bin
|
||||
COPY plugins/LINUXAMD64 /opt/fpocket/plugins/LINUXAMD64
|
||||
COPY plugins/include /opt/fpocket/plugins/include
|
||||
COPY plugins/noarch /opt/fpocket/plugins/noarch
|
||||
|
||||
WORKDIR /opt/fpocket
|
||||
RUN cp -r /vmd/plugins/molfile_plugin/compiled/LINUXAMD64/molfile/* plugins/LINUXAMD64/molfile/
|
||||
#RUN make && make install && make clean
|
||||
USER fpocket
|
||||
WORKDIR /tmp
|
||||
CMD ["fpocket"]
|
||||
9565
data/sample/123abc.cif
Normal file
9565
data/sample/123abc.cif
Normal file
File diff suppressed because it is too large
Load Diff
8291
data/sample/1g50.cif
Normal file
8291
data/sample/1g50.cif
Normal file
File diff suppressed because it is too large
Load Diff
6764
data/sample/1g50.pdb
Normal file
6764
data/sample/1g50.pdb
Normal file
File diff suppressed because it is too large
Load Diff
33103
data/sample/1ttv.cif
Normal file
33103
data/sample/1ttv.cif
Normal file
File diff suppressed because it is too large
Load Diff
32275
data/sample/1ttv.pdb
Normal file
32275
data/sample/1ttv.pdb
Normal file
File diff suppressed because it is too large
Load Diff
24880
data/sample/3vi4.pdb
Normal file
24880
data/sample/3vi4.pdb
Normal file
File diff suppressed because it is too large
Load Diff
6295
data/sample/4bdf.cif
Normal file
6295
data/sample/4bdf.cif
Normal file
File diff suppressed because it is too large
Load Diff
5106
data/sample/4bdf.pdb
Normal file
5106
data/sample/4bdf.pdb
Normal file
File diff suppressed because it is too large
Load Diff
7412
data/sample/4gfo.cif
Normal file
7412
data/sample/4gfo.cif
Normal file
File diff suppressed because it is too large
Load Diff
7824
data/sample/4gfo_customized.cif
Normal file
7824
data/sample/4gfo_customized.cif
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ data_5RGF
|
||||
_entry.id 5RGF
|
||||
#
|
||||
_audit_conform.dict_name mmcif_pdbx.dic
|
||||
_audit_conform.dict_version 5.330
|
||||
_audit_conform.dict_version 5.342
|
||||
_audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic
|
||||
#
|
||||
loop_
|
||||
@@ -36,18 +36,19 @@ _audit_author.identifier_ORCID
|
||||
'Chica, R.A.' 5 ?
|
||||
#
|
||||
_citation.id primary
|
||||
_citation.title 'Evolution of an enzyme conformational ensembles guides the design of an efficient biocatalyst'
|
||||
_citation.journal_abbrev 'To be published'
|
||||
_citation.journal_volume ?
|
||||
_citation.page_first ?
|
||||
_citation.page_last ?
|
||||
_citation.year ?
|
||||
_citation.pdbx_database_id_PubMed ?
|
||||
_citation.pdbx_database_id_DOI ?
|
||||
_citation.title
|
||||
'Ensemble-based enzyme design can recapitulate the effects of laboratory directed evolution in silico.'
|
||||
_citation.journal_abbrev 'Nat Commun'
|
||||
_citation.journal_volume 11
|
||||
_citation.page_first 4808
|
||||
_citation.page_last 4808
|
||||
_citation.year 2020
|
||||
_citation.pdbx_database_id_PubMed 32968058
|
||||
_citation.pdbx_database_id_DOI 10.1038/s41467-020-18619-x
|
||||
_citation.journal_id_ASTM ?
|
||||
_citation.country ?
|
||||
_citation.journal_id_ISSN ?
|
||||
_citation.journal_id_CSD 0353
|
||||
_citation.country UK
|
||||
_citation.journal_id_ISSN 2041-1723
|
||||
_citation.journal_id_CSD ?
|
||||
_citation.book_publisher ?
|
||||
#
|
||||
loop_
|
||||
@@ -55,11 +56,15 @@ _citation_author.citation_id
|
||||
_citation_author.name
|
||||
_citation_author.identifier_ORCID
|
||||
_citation_author.ordinal
|
||||
primary 'Broom, A.' ? 1
|
||||
primary 'Rakotoharisoa, R.V.' ? 2
|
||||
primary 'Thompson, M.' ? 3
|
||||
primary 'Fraser, J.' ? 4
|
||||
primary 'Chica, R.A.' ? 5
|
||||
primary 'Broom, A.' ? 1
|
||||
primary 'Rakotoharisoa, R.V.' ? 2
|
||||
primary 'Thompson, M.C.' 0000-0002-6099-2027 3
|
||||
primary 'Zarifi, N.' 0000-0003-4748-7082 4
|
||||
primary 'Nguyen, E.' ? 5
|
||||
primary 'Mukhametzhanov, N.' ? 6
|
||||
primary 'Liu, L.' 0000-0003-1283-1410 7
|
||||
primary 'Fraser, J.S.' 0000-0002-5080-2859 8
|
||||
primary 'Chica, R.A.' 0000-0003-3789-9841 9
|
||||
#
|
||||
_cell.entry_id 5RGF
|
||||
_cell.length_a 76.410
|
||||
@@ -18221,11 +18226,15 @@ _pdbx_struct_oper_list.matrix[3][2] 0.0000000000
|
||||
_pdbx_struct_oper_list.matrix[3][3] 1.0000000000
|
||||
_pdbx_struct_oper_list.vector[3] 0.0000000000
|
||||
#
|
||||
_pdbx_audit_revision_history.ordinal 1
|
||||
_pdbx_audit_revision_history.data_content_type 'Structure model'
|
||||
_pdbx_audit_revision_history.major_revision 1
|
||||
_pdbx_audit_revision_history.minor_revision 0
|
||||
_pdbx_audit_revision_history.revision_date 2020-07-22
|
||||
loop_
|
||||
_pdbx_audit_revision_history.ordinal
|
||||
_pdbx_audit_revision_history.data_content_type
|
||||
_pdbx_audit_revision_history.major_revision
|
||||
_pdbx_audit_revision_history.minor_revision
|
||||
_pdbx_audit_revision_history.revision_date
|
||||
1 'Structure model' 1 0 2020-07-22
|
||||
2 'Structure model' 1 1 2020-12-02
|
||||
3 'Structure model' 1 2 2021-05-12
|
||||
#
|
||||
_pdbx_audit_revision_details.ordinal 1
|
||||
_pdbx_audit_revision_details.revision_ordinal 1
|
||||
@@ -18236,6 +18245,41 @@ _pdbx_audit_revision_details.description ?
|
||||
_pdbx_audit_revision_details.details ?
|
||||
#
|
||||
loop_
|
||||
_pdbx_audit_revision_group.ordinal
|
||||
_pdbx_audit_revision_group.revision_ordinal
|
||||
_pdbx_audit_revision_group.data_content_type
|
||||
_pdbx_audit_revision_group.group
|
||||
1 2 'Structure model' 'Database references'
|
||||
2 3 'Structure model' 'Structure summary'
|
||||
#
|
||||
loop_
|
||||
_pdbx_audit_revision_category.ordinal
|
||||
_pdbx_audit_revision_category.revision_ordinal
|
||||
_pdbx_audit_revision_category.data_content_type
|
||||
_pdbx_audit_revision_category.category
|
||||
1 2 'Structure model' citation
|
||||
2 2 'Structure model' citation_author
|
||||
3 3 'Structure model' pdbx_deposit_group
|
||||
#
|
||||
loop_
|
||||
_pdbx_audit_revision_item.ordinal
|
||||
_pdbx_audit_revision_item.revision_ordinal
|
||||
_pdbx_audit_revision_item.data_content_type
|
||||
_pdbx_audit_revision_item.item
|
||||
1 2 'Structure model' '_citation.country'
|
||||
2 2 'Structure model' '_citation.journal_abbrev'
|
||||
3 2 'Structure model' '_citation.journal_id_CSD'
|
||||
4 2 'Structure model' '_citation.journal_id_ISSN'
|
||||
5 2 'Structure model' '_citation.journal_volume'
|
||||
6 2 'Structure model' '_citation.page_first'
|
||||
7 2 'Structure model' '_citation.page_last'
|
||||
8 2 'Structure model' '_citation.pdbx_database_id_DOI'
|
||||
9 2 'Structure model' '_citation.pdbx_database_id_PubMed'
|
||||
10 2 'Structure model' '_citation.title'
|
||||
11 2 'Structure model' '_citation.year'
|
||||
12 3 'Structure model' '_pdbx_deposit_group.group_type'
|
||||
#
|
||||
loop_
|
||||
_pdbx_refine_tls.pdbx_refine_id
|
||||
_pdbx_refine_tls.id
|
||||
_pdbx_refine_tls.details
|
||||
@@ -18489,6 +18533,7 @@ _pdbx_audit_support.ordinal 1
|
||||
_pdbx_deposit_group.group_title 'Crystal structures of HG-series of Kemp Eliminases at Room-temperature'
|
||||
_pdbx_deposit_group.group_description 'Crystal structure of Kemp eliminase HG4 with bound transition state analogue, 277K'
|
||||
_pdbx_deposit_group.group_id G_1002148
|
||||
_pdbx_deposit_group.group_type undefined
|
||||
#
|
||||
_pdbx_entity_instance_feature.ordinal 1
|
||||
_pdbx_entity_instance_feature.comp_id 6NT
|
||||
|
||||
16636
data/sample/5rgf.pdb
Normal file
16636
data/sample/5rgf.pdb
Normal file
File diff suppressed because it is too large
Load Diff
37183
data/sample/6cs2.cif
Normal file
37183
data/sample/6cs2.cif
Normal file
File diff suppressed because it is too large
Load Diff
31154
data/sample/6cs2.pdb
Normal file
31154
data/sample/6cs2.pdb
Normal file
File diff suppressed because it is too large
Load Diff
17899
data/sample/6tl9.pdb
Normal file
17899
data/sample/6tl9.pdb
Normal file
File diff suppressed because it is too large
Load Diff
3007
data/sample/6x3p.pdb
Normal file
3007
data/sample/6x3p.pdb
Normal file
File diff suppressed because it is too large
Load Diff
13962
data/sample/7z9t.cif
Normal file
13962
data/sample/7z9t.cif
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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 pocket’s 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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -28,6 +28,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
float pte_get_vdw_ray(const char *symbol) ;
|
||||
float pte_get_mass(const char *symbol) ;
|
||||
float pte_get_enegativity(const char *symbol) ;
|
||||
float pte_get_enegativity_from_number(int atomicnumber) ;
|
||||
char *pte_get_element_from_number(int atomicnumber);
|
||||
int is_valid_element(const char *str, int ignore_case) ;
|
||||
int element_in_std_res(char *res_name);
|
||||
int element_in_nucl_acid(char *res_name);
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
@@ -81,7 +81,8 @@ typedef struct s_pdb
|
||||
int n_xlig_atoms; /**number of atoms in xlig array ( number of atoms of selected atom*/
|
||||
int natoms, /**< Number of atoms */
|
||||
nhetatm, /**< Number of HETATM */
|
||||
natm_lig ; /**< Number of ligand atoms */
|
||||
natm_lig, /**< Number of ligand atoms */
|
||||
natoms_h ; /**< Number of hydrogen atoms */
|
||||
|
||||
float A, B, C, /**< Side lengths of the unit cell */
|
||||
alpha, beta, gamma ; /**< Angle between B and C, A and C, A and C */
|
||||
@@ -89,6 +90,10 @@ 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*/
|
||||
|
||||
} s_pdb ;
|
||||
|
||||
@@ -137,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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
10
makefile
10
makefile
@@ -1,6 +1,7 @@
|
||||
#------------------------------------------------------------
|
||||
# Makefile.
|
||||
#------------------------------------------------------------
|
||||
#ARCH = MACOSXX86_64
|
||||
ARCH = LINUXAMD64
|
||||
export ARCH
|
||||
|
||||
@@ -12,8 +13,11 @@ PATH_HEADER = headers/
|
||||
PATH_BIN = bin/
|
||||
PATH_MAN = man/
|
||||
PATH_QHULL = src/qhull/src
|
||||
PATH_LIB = $(PLUGINDIR)/$(ARCH)/molfile/
|
||||
|
||||
BINDIR = /usr/local/bin/
|
||||
LIBDIR = /usr/local/lib/
|
||||
|
||||
MANDIR = /usr/local/man/man8/
|
||||
|
||||
|
||||
@@ -43,12 +47,13 @@ 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
|
||||
LFLAGS = -lm -L$(PLUGINDIR)/$(ARCH)/molfile $(PLUGINDIR)/$(ARCH)/molfile/libmolfile_plugin.a -lstdc++
|
||||
NETCDFFLAGS = -lnetcdf
|
||||
NETCDFFLAGS =
|
||||
#-lnetcdf
|
||||
|
||||
#
|
||||
#------------------------------------------------------------
|
||||
@@ -180,6 +185,7 @@ install:
|
||||
cp $(PATH_BIN)$(DPOCKET) $(BINDIR)
|
||||
cp $(PATH_BIN)$(MDPOCKET) $(BINDIR)
|
||||
cp $(PATH_MAN)* $(MANDIR)
|
||||
cp $(PATH_LIB)* $(LIBDIR)
|
||||
|
||||
check:
|
||||
./$(PATH_BIN)$(CHECK)
|
||||
|
||||
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.
@@ -207,6 +207,9 @@ extern int molfile_maeffplugin_fini(void);
|
||||
extern int molfile_orcaplugin_init(void);
|
||||
extern int molfile_orcaplugin_register(void *, vmdplugin_register_cb);
|
||||
extern int molfile_orcaplugin_fini(void);
|
||||
extern int molfile_qcschemaplugin_init(void);
|
||||
extern int molfile_qcschemaplugin_register(void *, vmdplugin_register_cb);
|
||||
extern int molfile_qcschemaplugin_fini(void);
|
||||
|
||||
#define MOLFILE_INIT_ALL \
|
||||
molfile_abinitplugin_init(); \
|
||||
@@ -276,6 +279,7 @@ extern int molfile_orcaplugin_fini(void);
|
||||
molfile_dtrplugin_init(); \
|
||||
molfile_maeffplugin_init(); \
|
||||
molfile_orcaplugin_init(); \
|
||||
molfile_qcschemaplugin_init(); \
|
||||
|
||||
#define MOLFILE_REGISTER_ALL(v, cb) \
|
||||
molfile_abinitplugin_register(v, cb); \
|
||||
@@ -345,6 +349,7 @@ extern int molfile_orcaplugin_fini(void);
|
||||
molfile_dtrplugin_register(v, cb); \
|
||||
molfile_maeffplugin_register(v, cb); \
|
||||
molfile_orcaplugin_register(v, cb); \
|
||||
molfile_qcschemaplugin_register(v, cb); \
|
||||
|
||||
#define MOLFILE_FINI_ALL \
|
||||
molfile_abinitplugin_fini(); \
|
||||
@@ -414,6 +419,7 @@ extern int molfile_orcaplugin_fini(void);
|
||||
molfile_dtrplugin_fini(); \
|
||||
molfile_maeffplugin_fini(); \
|
||||
molfile_orcaplugin_fini(); \
|
||||
molfile_qcschemaplugin_fini(); \
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
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.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user