Compare commits

..

49 Commits

Author SHA1 Message Date
Peter Schmidtke
6c7c55dfdd Merge pull request #157 from Discngine/issue-151
issue-151 fix of chain reading atoms in read_mmcif & descriptor outpu…
2024-09-09 14:20:23 +02:00
Peter Schmidtke
fdd5a7d14e issue-151 fix of chain reading atoms in read_mmcif & descriptor output writing 2024-09-09 12:14:06 +00:00
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
1104 changed files with 133934 additions and 71077 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

22
Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
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/
COPY src /opt/fpocket/src
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 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

13962
data/sample/7z9t.cif Normal file

File diff suppressed because it is too large Load Diff

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

@@ -81,8 +81,8 @@ typedef struct s_desc
characterChain2, /**< 0 if protein, 1 if nucl acid pocket, 2 if HETATM pocket*/
numResChain1, /**<number of resdiues on chain 1*/
numResChain2; /**<number of res on chain 2*/
char nameChain1[2], /**<name of the first chain in contact with the pocket*/
nameChain2[2]; /**<name of the second chain in contact with the pocket, if there is*/
char nameChain1[255], /**<name of the first chain in contact with the pocket*/
nameChain2[255]; /**<name of the second chain in contact with the pocket, if there is*/
char ligTag[8]; /**<het atom tag of ligands situated in the pocket*/
} s_desc ;

View File

@@ -55,6 +55,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#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_CHAIN_NAME_LENGTH 20
#define M_MAX_LIG_RESNAME_LENGTH 20
#define M_MIN_AS_DENSITY 0.7
@@ -121,7 +123,7 @@ 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'
@@ -184,8 +186,8 @@ typedef struct s_fparams
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[3];
char xlig_resname[3];
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;
@@ -204,7 +206,8 @@ typedef struct s_fparams
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 */
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 */
@@ -214,8 +217,10 @@ typedef struct s_fparams
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];
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*/

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

@@ -142,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,7 +33,7 @@ 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

@@ -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

@@ -65,7 +65,6 @@ s_desc* allocate_s_desc(void)
s_desc *desc = (s_desc*)my_malloc(sizeof(s_desc)) ;
reset_desc(desc) ;
return desc ;
}
@@ -364,7 +363,7 @@ void set_atom_based_descriptors(s_atm **atoms, int natoms, s_desc *desc,s_atm *a
nb_res_ids = 0 ; /* Current number of residus */
int nb_polar_atm = 0 ;
char curChainName[2];
char *curChainName = (char*)my_malloc(255*sizeof(char));
if(atoms && natoms>1){
firstatom=atoms[0];
@@ -373,8 +372,8 @@ void set_atom_based_descriptors(s_atm **atoms, int natoms, s_desc *desc,s_atm *a
if(element_in_std_res(firstatom->res_name)) desc->characterChain1=0;
else if(element_in_nucl_acid(firstatom->res_name)) desc->characterChain1=1;
else if(element_in_kept_res(firstatom->res_name)) desc->characterChain1=2;
strncpy(desc->nameChain1,firstatom->chain,2);
strncpy(curChainName,firstatom->chain,2);
strcpy(desc->nameChain1,firstatom->chain);
strcpy(curChainName,firstatom->chain);
desc->numResChain1 = countResidues(all_atoms,all_natoms,firstatom->chain);
for(i = 0 ; i < natoms ; i++) {
@@ -384,7 +383,7 @@ void set_atom_based_descriptors(s_atm **atoms, int natoms, s_desc *desc,s_atm *a
desc->interChain = 1;
if(!desc->numResChain2){
desc->numResChain2 = countResidues(all_atoms,all_natoms,curatom->chain);
strncpy(curChainName,curatom->chain,1);
strcpy(curChainName,curatom->chain);
}
}

View File

@@ -89,6 +89,8 @@ s_fparams *init_def_fparams(void)
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;
}
@@ -122,7 +124,7 @@ s_fparams *get_fpocket_args(int nargs, char **args)
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},
@@ -185,54 +187,53 @@ s_fparams *get_fpocket_args(int nargs, char **args)
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;
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);
}
par->n_chains_to_delete=nk;
// printf("%s\n",par->chain_delete);
par->chain_is_kept = 1;
status++;
@@ -246,26 +247,29 @@ s_fparams *get_fpocket_args(int nargs, char **args)
status++;
strcpy(par->custom_ligand, optarg);
// strcpy(par->custom_ligand, optarg);
// printf("%s and %s",par->custom_ligand,optarg);
pt = strtok(par->custom_ligand, ":");
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
@@ -292,7 +296,7 @@ s_fparams *get_fpocket_args(int nargs, char **args)
strcpy(&residue_string, pt);
rest2 = residue_string;
apti = 0;
while (apt = strtok_r(rest2, ":", &rest2))
while ((apt = strtok_r(rest2, ":", &rest2)))
{
switch (apti)
{
@@ -971,10 +975,10 @@ void print_pocket_usage(FILE *f)
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\
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\
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);

View File

@@ -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);
@@ -222,8 +222,10 @@ 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)

View File

@@ -165,7 +165,7 @@ c_lst_pockets *search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig)
fflush(DEBUG_STREAM);
}
apply_clustering(pockets, params);
apply_clustering(pockets);
if (DEBUG)
{
fprintf(DEBUG_STREAM, "applied clustering to pockets");
@@ -216,7 +216,7 @@ c_lst_pockets *search_pocket(s_pdb *pdb, s_fparams *params, s_pdb *pdb_w_lig)
print_number_of_objects_in_memory();
// int i;
if (params->fpocket_running && params->flag_do_grid_calculations && params->topology_path)
if (params->fpocket_running && params->flag_do_grid_calculations && params->topology_path[0])
calculate_pocket_energy_grids(pockets, params, pdb);
// params->fpocket_running &&
}

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);
}
}
/**

View File

@@ -256,7 +256,7 @@ s_mdparams* get_mdpocket_args(int nargs, char **args) {
par = NULL;
print_mdpocket_usage(stdout);
}
} else if ((!traj_file_defined || !traj_format_defined || !par->fpar->pdb_path)) {
} else if ((!traj_file_defined || !traj_format_defined || !par->fpar->pdb_path[0])) {
fprintf(stdout, "! No input file given... Try again :).%d %d %s\n",traj_file_defined,traj_format_defined,par->fpar->pdb_path);
free_mdparams(par);
par = NULL;

View File

@@ -260,15 +260,20 @@ float pte_get_enegativity(const char *symbol)
*/
char *pte_get_element_from_number(int atomicnumber)
{
char *tmp=malloc(sizeof(char)*3) ;
if(atomicnumber>0 && atomicnumber<112){
tmp[0] = ST_pte_symbol[atomicnumber][0] ;
tmp[1] = ST_pte_symbol[atomicnumber][1] ;
tmp[2] = '\0';
tmp[2]='\0';
return tmp;
}
return -1 ;
} else {
tmp[0]='-';
tmp[1]='1';
}
tmp[2]='\0';
return tmp;
}
/**

View File

@@ -42,7 +42,7 @@ int run_qconvex(FILE *fin,FILE *fout) {
boolT ismalloc;
int argc=2;
char *argv[2];
const char *argv[2];
argv[0]=malloc(sizeof(char)*200);
argv[0]="src/qhull/qconvex\0";
argv[1]=malloc(sizeof(char)*2);

View File

@@ -239,7 +239,7 @@ int run_qvoronoi(FILE *fin,FILE *fout) {
coordT *points;
boolT ismalloc;
int argc=6;
char *argv[6];
const char *argv[6];
argv[0]=malloc(sizeof(char)*200);
argv[0]="src/qhull/qvoronoi\0";
argv[1]=malloc(sizeof(char)*2);

View File

@@ -56,38 +56,39 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
molfile_pdbxplugin_init();
molfile_pdbxplugin_register(NULL, register_cb);
char *filetype = "cif";
const char *filetype = "cif";
int inatoms; /*number of atoms in the file determined by molfile api*/
// printf("%s | %s |%d", fpath, filetype, inatoms);
// printf("\n");
void *h_in;
molfile_timestep_t ts_in;
molfile_atom_t *at_in;
int optflags = 0x0040;
int optflags[] = {0x0001,0x0040};
int rc;
int rc2;
int j;
int k;
h_in = api->open_file_read(fpath, filetype, &inatoms);
if(inatoms==0){
fprintf(stderr, "! Structure reading failed or file is empty!\n");
exit( EXIT_FAILURE );
}
at_in = (molfile_atom_t *)malloc(inatoms * sizeof(molfile_atom_t));
ts_in.coords = (float *)malloc(3 * inatoms * sizeof(float)); /*allocating space for the coords*/
rc2 = api->read_structure(h_in, &optflags, at_in);
rc2 = api->read_structure(h_in, optflags, at_in);
rc = api->read_next_timestep(h_in, inatoms, &ts_in);
if (!model_number)
model_number = 1;
model_flag = 1;
for (i = 0; i < inatoms; i++) /*loop to go through all atoms*/
{
if (at_in[i].altloc[0] == '.' || at_in[i].altloc[0] == '\0')
at_in[i].altloc[0] = ' ';
if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "ATOM", 4) && !is_ligand(par->chain_as_ligand, at_in[i].chain[0]))
if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "ATOM", 4) && !is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand))
{
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A')
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '?')
{
if (chains_to_delete(par->chain_delete, at_in[i].chain[0], par->chain_is_kept))
if (chains_to_delete(par->chain_delete, at_in[i].chain_auth, par->chain_is_kept,par->n_chains_to_delete))
{
/* Atom entry: check if there is a ligand in there (just in case)... */
if (ligan && strlen(ligan) > 1 && ligan[0] == at_in[i].resname[0] && ligan[1] == at_in[i].resname[1] && ligan[2] == at_in[i].resname[2])
@@ -99,7 +100,7 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
}
/*check this function*/
}
else if (ligan && strlen(ligan) == 1 && at_in[i].chain[0] == ligan[0])
else if (ligan && strlen(ligan) == 1 && at_in[i].chain_auth[0] == ligan[0])
{ /*here we have a protein chain defined as ligand...a bit more complex then*/
if (keep_lig)
{
@@ -114,13 +115,7 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
}
if (par->xlig_resnumber > -1)
{
// if ((at_in[i].chain[0] == par->xlig_chain_code[0] && at_in[i].resid == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]) || (at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]))
// {
// pdb->n_xlig_atoms++;
// }
if (is_ligand(par->chain_as_ligand, at_in[i].chain[0]))
if (is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand))
{
pdb->n_xlig_atoms++;
}
@@ -129,26 +124,29 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
if (par->xlig_resnumber > -1)
{
if ((at_in[i].chain[0] == par->xlig_chain_code[0] && at_in[i].resid == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]) || (at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]))
// if (((is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand)) || (par->xlig_chain_code !=NULL && at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]) || (par->xlig_chain_code!=NULL && at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2])))
if (((is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand)) || (par->xlig_chain_code !=NULL && strcmp(at_in[i].chain_auth,par->xlig_chain_code)==0 && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]) || (par->xlig_chain_code!=NULL && at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2])))
{
pdb->n_xlig_atoms++;
}
}
}
else if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "HETATM", 6) || (!strncmp(at_in[i].atom_type, "ATOM", 4) && is_ligand(par->chain_as_ligand, at_in[i].chain[0])))
else if ((at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "HETATM", 6)) || (!strncmp(at_in[i].atom_type, "ATOM", 4) && is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand)))
{
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1')
if (at_in[i].altloc[0] == '?' || at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1')
{
if (chains_to_delete(par->chain_delete, at_in[i].chain[0], par->chain_is_kept))
if (chains_to_delete(par->chain_delete, at_in[i].chain_auth, par->chain_is_kept,par->n_chains_to_delete))
{
if (ligan && strlen(ligan) > 1 && keep_lig && ligan[0] == at_in[i].resname[0] && ligan[1] == at_in[i].resname[1] && ligan[2] == at_in[i].resname[2])
{
natm_lig++;
natoms++;
}
else if (ligan && strlen(ligan) == 1 && ligan[0] == at_in[i].chain[0])
else if (ligan && strlen(ligan) == 1 && ligan[0] == at_in[i].chain_auth[0])
{
if (keep_lig)
natm_lig++;
@@ -157,13 +155,13 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
else
{
/* Keep specific HETATM given in the static list ST_keep_hetatm */
if ((keep_lig && !ligan && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3)) || (keep_lig && is_ligand(par->chain_as_ligand, at_in[i].chain[0])))
if ((keep_lig && !ligan && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3)) || (keep_lig && is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand)))
{
natoms++;
nhetatm++;
}
else if (!is_ligand(par->chain_as_ligand, at_in[i].chain[0]))
else if (!is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand))
{
for (j = 0; j < ST_nb_keep_hetatm; j++)
{
@@ -178,14 +176,14 @@ s_pdb *open_mmcif(char *fpath, const char *ligan, const int keep_lig, int model_
}
}
if (is_ligand(par->chain_as_ligand, at_in[i].chain[0]))
if (is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand))
{
pdb->n_xlig_atoms++;
}
}
if (par->xlig_resnumber > -1)
{
if ((at_in[i].chain[0] == par->xlig_chain_code[0] && at_in[i].resid == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]) || (at_in[i].chain_auth[0] == par->xlig_chain_code[0] && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]))
{
if ((is_ligand(par->chain_as_ligand, at_in[i].chain_auth,par->n_chains_as_ligand)) || (par->xlig_chain_code !=NULL && !strcmp(at_in[i].chain_auth,par->xlig_chain_code) && (at_in[i].resid_auth == par->xlig_resnumber) && (par->xlig_resname[0] == at_in[i].resname[0]) && (par->xlig_resname[1] == at_in[i].resname[1]) && (par->xlig_resname[2] == at_in[i].resname[2])) || (par->xlig_chain_code!=NULL && !strcmp(at_in[i].chain_auth, par->xlig_chain_code) && at_in[i].resid_auth == par->xlig_resnumber && par->xlig_resname[0] == at_in[i].resname[0] && par->xlig_resname[1] == at_in[i].resname[1] && par->xlig_resname[2] == at_in[i].resname[2]))
{
pdb->n_xlig_atoms++;
}
@@ -260,7 +258,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
/*******************************************************************************/
molfile_pdbxplugin_init();
molfile_pdbxplugin_register(NULL, register_cb);
char *filetype = "cif";
const char *filetype = "cif";
int inatoms; /*number of atoms in the file determined by molfile api*/
void *h_in;
@@ -277,6 +275,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
ts_in.coords = (float *)malloc(3 * inatoms * sizeof(float)); /*allocating space for the coords*/
rc2 = api->read_structure(h_in, &optflags, at_in);
rc = api->read_next_timestep(h_in, inatoms, &ts_in);
// printf("READ : %s | %s |%d\n", pdb->fname, filetype, inatoms);
/* Loop over the pdb file */
model_flag = 1;
@@ -285,25 +284,26 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
; /*here we indicate that a particular model should be read only*/
for (i = 0; i < inatoms; i++)
{
if (at_in[i].altloc[0] == '.' || at_in[i].altloc[0] == '\0')
at_in[i].altloc[0] = ' ';
if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "ATOM", 4) && !is_ligand(params->chain_as_ligand, at_in[i].chain[0]))
if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "ATOM", 4) && !is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand))
{
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1')
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1' || at_in[i].altloc[0] == '?')
{ /*if within first occurence*/
/* Enter this if when arg in command line is -r */
/* Enter this if when arg in command line is -a */
if (is_ligand(params->chain_as_ligand, at_in[i].chain[0]))
if (is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand))
{
*(pdb->xlig_x + i_explicit_ligand_atom) = ts_in.coords[3 * i];
*(pdb->xlig_y + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 1];
*(pdb->xlig_z + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 2];
i_explicit_ligand_atom++;
}
if (chains_to_delete(params->chain_delete, at_in[i].chain[0], params->chain_is_kept)) // deleting the chains we want to delete from pdb file
if (chains_to_delete(params->chain_delete, at_in[i].chain_auth, params->chain_is_kept,params->n_chains_to_delete)) // deleting the chains we want to delete from pdb file
{
/* Check if the desired ligand is in such an entry */
if (ligan && strlen(ligan) > 1 && ligan[0] == at_in[i].resname[0] && ligan[1] == at_in[i].resname[1] && ligan[2] == at_in[i].resname[2])
@@ -317,8 +317,10 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
@@ -342,7 +344,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
ligfound = 1;
}
}
else if (ligan && strlen(ligan) == 1 && at_in[i].chain[0] == ligan[0])
else if (ligan && strlen(ligan) == 1 && at_in[i].chain_auth[0] == ligan[0])
{ /*here we have a protein chain defined as ligand...a bit more complex then*/
if (keep_lig)
{
@@ -354,9 +356,10 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
// fprintf(stdout, " here : %c\n", at_in[i].insertion[0]);
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
@@ -399,13 +402,13 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
// fprintf(stdout,"%s |%s|%d\n", atom->chain, at_in[i].chain,i);
// fflush(stdout);
strncpy(atom->chain, at_in[i].chain, 2);
// fprintf(stdout,"%s |%s|%d\n", atom->chain, at_in[i].chain,i);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
// printf("ins:%s",at_in[i].insertion);
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
@@ -435,9 +438,10 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
}
if (pdb->n_xlig_atoms)
{
if (at_in[i].chain[0] == params->xlig_chain_code[0] && at_in[i].resid == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2])
{
unsigned short is_chain_ligand=(is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand) && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3));
if (is_chain_ligand || (params->xlig_chain_code !=NULL && at_in[i].chain_auth[0] == params->xlig_chain_code[0] && at_in[i].resid_auth == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2]))
{
*(pdb->xlig_x + i_explicit_ligand_atom) = ts_in.coords[3 * i];
*(pdb->xlig_y + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 1];
*(pdb->xlig_z + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 2];
@@ -445,23 +449,22 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
}
}
}
else if (at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "HETATM", 6) || (!strncmp(at_in[i].atom_type, "ATOM", 4) && is_ligand(params->chain_as_ligand, at_in[i].chain[0])))
else if ((at_in[i].modelnumber == model_number && !strncmp(at_in[i].atom_type, "HETATM", 6)) || (!strncmp(at_in[i].atom_type, "ATOM", 4) && is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand)))
{
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1')
if (at_in[i].altloc[0] == ' ' || at_in[i].altloc[0] == 'A' || at_in[i].altloc[0] == '1' || at_in[i].altloc[0] =='?')
{ /*first occurence*/
if (is_ligand(params->chain_as_ligand, at_in[i].chain[0]))
if (is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand))
{
*(pdb->xlig_x + i_explicit_ligand_atom) = ts_in.coords[3 * i];
*(pdb->xlig_y + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 1];
*(pdb->xlig_z + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 2];
// printf("%d\n", i_explicit_ligand_atom);
i_explicit_ligand_atom++;
}
// fflush(stdout);
if (chains_to_delete(params->chain_delete, at_in[i].chain[0], params->chain_is_kept)) // deleting the chains we want to delete from pdb file
if (chains_to_delete(params->chain_delete, at_in[i].chain_auth, params->chain_is_kept,params->n_chains_to_delete)) // deleting the chains we want to delete from pdb file
{
/* Check if the desired ligand is in HETATM entry */
if (ligan && strlen(ligan) > 1 && keep_lig && ligan[0] == at_in[i].resname[0] && ligan[1] == at_in[i].resname[1] && ligan[2] == at_in[i].resname[2])
@@ -473,9 +476,12 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
atom->z = ts_in.coords[(3 * i) + 2];
@@ -497,7 +503,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
iatoms++;
ligfound = 1;
}
else if (ligan && strlen(ligan) == 1 && ligan[0] == at_in[i].chain[0])
else if (ligan && strlen(ligan) == 1 && ligan[0] == at_in[i].chain_auth[0])
{
if (keep_lig)
@@ -510,8 +516,10 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
@@ -539,7 +547,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
{
/* Keep specific HETATM given in the static list ST_keep_hetatm. */
if ((keep_lig && !ligan && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3)) || (keep_lig && is_ligand(params->chain_as_ligand, at_in[i].chain[0])))
if ((keep_lig && !ligan && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3)) || (keep_lig && is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand)))
{
atom = atoms + iatoms;
@@ -548,9 +556,12 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
atom->z = ts_in.coords[(3 * i) + 2];
@@ -570,7 +581,7 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
ihetatm++;
iatoms++;
}
else if (!is_ligand(params->chain_as_ligand, at_in[i].chain[0]))
else if (!is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand))
{
for (j = 0; j < ST_nb_keep_hetatm; j++)
@@ -586,8 +597,10 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
strcpy(atom->name, at_in[i].type);
atom->pdb_aloc = at_in[i].altloc[0];
strcpy(atom->res_name, at_in[i].resname);
strncpy(atom->chain, at_in[i].chain, 2);
atom->res_id = at_in[i].resid;
strcpy(atom->chain, at_in[i].chain_auth);
strcpy(atom->label_asym_id, at_in[i].chain);
atom->res_id = at_in[i].resid_auth;
atom->label_seq_id=at_in[i].resid;
atom->pdb_insert = at_in[i].insertion[0];
atom->x = ts_in.coords[(3 * i)];
atom->y = ts_in.coords[(3 * i) + 1];
@@ -615,16 +628,17 @@ void read_mmcif(s_pdb *pdb, const char *ligan, const int keep_lig, int model_num
}
}
}
if (pdb->n_xlig_atoms)
{
if ((at_in[i].chain[0] == params->xlig_chain_code[0] && at_in[i].resid == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2]) || (at_in[i].chain_auth[0] == params->xlig_chain_code[0] && at_in[i].resid_auth == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2]))
{
// if (params->xlig_resname[0] == resb[0] && params->xlig_resname[1] == resb[1] && params->xlig_resname[2] == resb[2]) {
unsigned short is_chain_ligand=(is_ligand(params->chain_as_ligand, at_in[i].chain_auth,params->n_chains_as_ligand) && strncmp(at_in[i].resname, "HOH", 3) && strncmp(at_in[i].resname, "WAT", 3) && strncmp(at_in[i].resname, "TIP", 3));
if (is_chain_ligand || (params->xlig_chain_code !=NULL && strcmp(at_in[i].chain_auth, params->xlig_chain_code)==0 && at_in[i].resid_auth == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2]) || (params->xlig_chain_code!=NULL && strcmp(at_in[i].chain_auth, params->xlig_chain_code)==0 && at_in[i].resid_auth == params->xlig_resnumber && params->xlig_resname[0] == at_in[i].resname[0] && params->xlig_resname[1] == at_in[i].resname[1] && params->xlig_resname[2] == at_in[i].resname[2]))
{
*(pdb->xlig_x + i_explicit_ligand_atom) = ts_in.coords[3 * i];
*(pdb->xlig_y + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 1];
*(pdb->xlig_z + i_explicit_ligand_atom) = ts_in.coords[(3 * i) + 2];
i_explicit_ligand_atom++;
}
}

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