ChemBioHTP / EnzyHTP

EnzyHTP is a python library that automates the complete life-cycle of enzyme modeling
https://enzyhtp-doc.readthedocs.io
Other
12 stars 1 forks source link

PDB2FF ligand test #11

Open KleinesMesser opened 3 years ago

KleinesMesser commented 3 years ago
  1. If there are no ligands in the PDB file, a leap error will occur (1GBG as an example):

*** Error: tl_getline(): not interactive, use stdio.

  1. Error occurs using PDB2FF (3WIW):

Traceback (most recent call last): File "0_MutaGen_main.py", line 34, in main() File "0_MutaGen_main.py", line 14, in main PDB1.PDB2FF('ff_prep_temp/') File "/gpfs23/scratch/jiany37/HTP_trial/03022021_enzyme_workflow-develop_qz/Class_PDB.py", line 845, in PDB2FF ligands_pathNchrg = self.stru.build_ligands(lig_dir, ifcharge=1) File "/gpfs23/scratch/jiany37/HTP_trial/03022021_enzyme_workflow-develop_qz/Class_Structure.py", line 512, in build_ligands net_charge = lig.get_net_charge(method=c_method, ph=ph) File "/gpfs23/scratch/jiany37/HTP_trial/03022021_enzyme_workflow-develop_qz/Class_Structure.py", line 1855, in get_net_charge mol = next(pybel.readfile('pdb', temp_pdb3_path)) File "/home/jiany37/Software_installed/openbabel-3-1-1_installed/lib/python3.8/site-packages/openbabel/pybel.py", line 161, in readfile raise IOError("No such file: '%s'" % filename) OSError: No such file: './cache/ligand_temp3.pdb'

  1. 3WIW ligand EPE. The error occurs before ff can be generated. But pdb2pqr adds one H atom to each N and O(=S) atoms, which is obviously not reasonable.

  2. Another issue with PDB2PQR: it cannot process selenocysteine correctly and the output PDB will skip this residue. Example: 3F3K

  3. Ions that get_protonation do not support: Mn(II), Co(III), Fe(III) (5HIO)

  4. Transition metal ions Co only has +2 in leap tip3p ff. In the future, we need to figure out a way to determine the charge for these ions because the coordinate parts in PDB files do not have this information. Most common example: Fe.

shaoqx commented 3 years ago
  1. OMG, after several rounds of testing and searching. I found that it was me running tleap before closing leap.in in python. You can search these lines:
    
    os.system('tleap -s -f '+leap_path+' > '+leap_path[:-2]+'out')

return self.prmtop_path, self.inpcrd_path


and descend a block by shift+tab. Update: fixed in 8ddfadad103753d5f445fd1155036925eece18a7.
2. The old way of reading residues in chain does not allow the presence of non-data lines (like END without a TER before it.) 45064558c6477c23a8573aceff8171b8df8a3039 changed this part and now it allows any meaningless lines mixed with data line.
3. It seems Openbabel's result is not good enough sometimes for simple ligand like this, not sure if it is the S confusing it. We need to find a better protonation method for ligand or find better use of Openbabel. 

- [ ] We can try [Dimorphite](https://git.durrantlab.pitt.edu/jdurrant/dimorphite_dl/blob/1.2.4/README.md), it gives a better result in this case. I will support it after finish the QMMM part.

4. I think we just skip them and obtain this part of the yield in the future.
5. Cool, updated in 67b450f675a27406f47e0ef7c031fb2ae4b0416c
6. I think MCPB.py could be a good way. I left space for that in PDB2FF. Easy to do will current modules, just need to figure out some general steps to follow. Will support in the future.
KleinesMesser commented 3 years ago

I googled the tl_getline(): error and it seems that it is not related to the python code itself. Instead, it is related to something with the leap.in file.

Something like this: http://archive.ambermd.org/201306/0231.html http://archive.ambermd.org/201306/0245.html