Electrostatics / pdb2pqr

PDB2PQR - determining titration states, adding missing atoms, and assigning charges/radii to biomolecules.
http://www.poissonboltzmann.org/
Other
124 stars 34 forks source link

PDB2PQR no PQR file in outputs #214

Closed elinaKari closed 2 years ago

elinaKari commented 3 years ago

Hi,

What can be missed in PDB file that prevents the PQR file formation in outputs? I basically get only .json, .txt, .txt, and .log files

Thank you in advance for your reply.

Eo300 commented 3 years ago

The lack of a PQR file in the output may indicate that the process failed mid-execution. Were you able to inspect the .log file to see what error message(s) were output towards the end?

Otherwise, are you able to provide your input file(s) or the associated job ID (if you were using the server) so that we can reproduce your issue on our end?

rpenhallurick commented 3 years ago

I have also been having this issue, both with the web service and on the current version (installed). The error brings up a gap in the bimolecular structure; however, there is no problem with the PDB file (and this occurs for other structures of the same protein but different timepoints). Please see below.

INFO:Debumping biomolecule. CRITICAL:Unable to debump biomolecule. Biomolecular structure is incomplete: Found gap in biomolecule structure for atom ATOM 63 HG1 SER 4 17.634 26.075 31.522 0.0000 0.0000 CRITICAL:Giving up.

sobolevnrm commented 3 years ago

Hello @rwp33 and @elinaKari -- Please provide the input PDB file so we can troubleshoot. Thank you.

rpenhallurick commented 3 years ago

Attached is the PDB file. As a note, the same PDB file works on an installed version 1.9.0. mpdhfr_wt+ndph+dhf-279k_1b_notr1.pdb.zip

sobolevnrm commented 3 years ago

@rwp33 I'm not sure why, but PDB2PQR reports a gap in the backbone that it cannot fill for SER 4. Here is the message that should have been displayed in the web server:

INFO:PDB2PQR v3.1.0: biomolecular structure conversion software.
INFO:Please cite:  Jurrus E, et al.  Improvements to the APBS biomolecular solvation software suite.  Protein Sci 27 112-128 (2018).
INFO:Please cite:  Dolinsky TJ, et al.  PDB2PQR: expanding and upgrading automated preparation of biomolecular structures for molecular simulations. Nucleic Acids Res 35 W522-W525 (2007).
INFO:Checking and transforming input arguments.
INFO:Loading topology files.
INFO:Loading molecule: .\test.pdb
INFO:Setting up molecule.
INFO:Created biomolecule object with 164 residues and 2684 atoms.
INFO:Setting termini states for biomolecule chains.
INFO:Loading forcefield.
INFO:Loading hydrogen topology definitions.
INFO:This biomolecule is clean.  No repair needed.
INFO:Updating disulfide bridges.
INFO:Debumping biomolecule.
CRITICAL:Unable to debump biomolecule. Biomolecular structure is incomplete:  Found gap in biomolecule structure for atom ATOM     63  HG1 SER     4      -1.388  -8.464  -5.519  0.0000 0.0000
CRITICAL:Giving up.

@Eo300 any ideas why the CRITICAL messages aren't shown by the web server?

@rwp33 any idea what might be going on around SER 4 for your structure?

Thanks

Kabir12321 commented 3 years ago

Hello there,

I am also facing the same issue right now. This problem was not encountered about a month ago with the same pdb file.

Kabir

sobolevnrm commented 3 years ago

@Kabir12321 please provide an example so we can troubleshoot.

rpenhallurick commented 3 years ago

As I mentioned, v. 1.9.0 works fine, so I do not think there is a problem with the PDB, and there is nothing special going on at that residue position.

mtz33 commented 3 years ago

Hey guys, seems we have the same problem as well. I tried couple of PDBs : 5MLU / 5E5A / 1ZLA : no pqr file outputs. They all are structures of nucleosomes so I tried another type of molecule : 6NUJ : same problem

Thanks for your help.

sobolevnrm commented 3 years ago

@Eo300 or @intendo could you please investigate this?

We may want to move this issue to the https://github.com/Electrostatics/apbs-web repo.

Eo300 commented 3 years ago

Running the four molecules, each process appears to have bailed mid-execution at mostly varying points, usually ending with a CRITICAL message.

With the exception of 6NUJ, looking at the associated pdb2pqr-metrics.json showed that they exited with exit code 0 despite bailing mid-execution. Notably, these are for the molecules bailing with CRITICAL...Giving up.. The snippet below is from main_driver(): https://github.com/Electrostatics/pdb2pqr/blob/7e28bb8ef048f2b86bb4229ecd52e1668808f747/pdb2pqr/main.py#L773-L784 I'm thinking we ought to return an exit code here (and anywhere else where we'd bail without completion) to indicate the status to the shell. I could update the website to better display whether the process failed with this value in hand.

@sobolevnrm @intendo Should we go ahead and make an issue for returning the exit code?

Log/Stderr Snippets from My Runs (using default parameters on website)

5MLU

2021-09-02 15:55:03,726 INFO:main.py:756:main_driver:Setting termini states for biomolecule chains.
2021-09-02 15:55:03,756 INFO:main.py:595:non_trivial:Loading forcefield.
2021-09-02 15:55:03,767 INFO:main.py:599:non_trivial:Loading hydrogen topology definitions.
2021-09-02 15:55:03,782 INFO:main.py:610:non_trivial:Attempting to repair 8 missing atoms in biomolecule.
2021-09-02 15:55:03,790 WARNING:biomolecule.py:1001:repair_heavy:Extra atom OP1 in DA I -72! - 
2021-09-02 15:55:03,790 WARNING:biomolecule.py:1003:repair_heavy:Deleted this atom.
2021-09-02 15:55:03,790 WARNING:biomolecule.py:1001:repair_heavy:Extra atom OP2 in DA I -72! - 
2021-09-02 15:55:03,790 WARNING:biomolecule.py:1003:repair_heavy:Deleted this atom.
2021-09-02 15:55:03,791 WARNING:biomolecule.py:1001:repair_heavy:Extra atom OP1 in DA J -72! - 
2021-09-02 15:55:03,791 WARNING:biomolecule.py:1003:repair_heavy:Deleted this atom.
2021-09-02 15:55:03,791 WARNING:biomolecule.py:1001:repair_heavy:Extra atom OP2 in DA J -72! - 
2021-09-02 15:55:03,791 WARNING:biomolecule.py:1003:repair_heavy:Deleted this atom.
2021-09-02 15:55:03,792 CRITICAL:main.py:782:main_driver:Too few atoms present to reconstruct or cap residue GLY M 551 in structure! This error is generally caused by missing backbone atoms in this biomolecule; you must use an external program to complete gaps in the biomolecule backbone. Heavy atoms missing from GLY M 551:  C O OXT CA
2021-09-02 15:55:03,792 CRITICAL:main.py:783:main_driver:Giving up.

5E5A

2021-09-02 15:57:29,357 INFO:main.py:639:non_trivial:Optimizing hydrogen bonds
2021-09-02 15:57:30,035 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,104 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H2 in HOH G 212 skipped when optimizing H2 in HOH A 203
2021-09-02 15:57:30,203 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,204 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,206 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,208 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,209 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,211 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,213 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH A 211 skipped when optimizing H2 in HOH G 219
2021-09-02 15:57:30,268 WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H1 in HOH G 219 skipped when optimizing H2 in HOH A 211
2021-09-02 15:57:30,270 WARNING:io.py:41:filter:Suppressing further "Skipped atom during water optimization" messages
2021-09-02 15:57:30,424 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,681 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,685 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,709 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,713 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:30,982 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:31,300 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:31,346 WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
2021-09-02 15:57:31,781 WARNING:io.py:41:filter:Suppressing further "The best donorH was not picked" messages
2021-09-02 15:57:37,108 INFO:main.py:651:non_trivial:Applying force field to biomolecule states.
2021-09-02 15:57:37,126 CRITICAL:main.py:782:main_driver:Residue DA 1 charge is non-integer: 0.149
2021-09-02 15:57:37,126 CRITICAL:main.py:783:main_driver:Giving up.

1ZLA

INFO:main.py:639:non_trivial:Optimizing hydrogen bonds
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: O in HOH I 320 skipped when optimizing O in HOH J 347
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH C 353 skipped when optimizing H2 in HOH C 344
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH C 353 skipped when optimizing H2 in HOH C 344
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: LP1 in HOH C 353 skipped when optimizing H2 in HOH C 344
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H2 in HOH C 344 skipped when optimizing H2 in HOH C 357
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H2 in HOH C 344 skipped when optimizing H2 in HOH C 357
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H2 in HOH C 344 skipped when optimizing H2 in HOH C 357
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H1 in HOH D 330 skipped when optimizing H2 in HOH D 300
WARNING:debump.py:354:get_closest_atom:Skipped atom during water optimization: H1 in HOH D 330 skipped when optimizing H2 in HOH D 300
WARNING:io.py:41:filter:Suppressing further "Skipped atom during water optimization" messages
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
WARNING:structures.py:626:try_acceptor:The best donorH was not picked (BUG?).
INFO:main.py:651:non_trivial:Applying force field to biomolecule states.
CRITICAL:main.py:782:main_driver:Residue DA 1 charge is non-integer: 0.149
CRITICAL:main.py:783:main_driver:Giving up.

6NUJ

INFO:Found NAM group:    65-   N    65-CAF (A) [ -28.491   30.635   -9.919] N
INFO:Found O2  group:    69-   O    65-CAF (A) [ -28.517   31.918   -7.400] O
INFO:Found SH  group:    70-  SG    65-CAF (A) [ -29.432   32.684  -12.135] S
Traceback (most recent call last):
  File "/usr/local/bin/pdb2pqr30", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/dist-packages/pdb2pqr/main.py", line 811, in main
    _ = main_driver(args)
  File "/usr/local/lib/python3.6/dist-packages/pdb2pqr/main.py", line 779, in main_driver
    is_cif=is_cif,
  File "/usr/local/lib/python3.6/dist-packages/pdb2pqr/main.py", line 626, in non_trivial
    pka_df, pka_str = run_propka(args, biomolecule)
  File "/usr/local/lib/python3.6/dist-packages/pdb2pqr/main.py", line 512, in run_propka
    molecule = pk_in.read_molecule_file(pdb_path, molecule)
  File "/usr/local/lib/python3.6/dist-packages/propka/input.py", line 113, in read_molecule_file
    mol_container.extract_groups()
  File "/usr/local/lib/python3.6/dist-packages/propka/molecular_container.py", line 81, in extract_groups
    self.conformations[name].extract_groups()
  File "/usr/local/lib/python3.6/dist-packages/propka/conformation_container.py", line 63, in extract_groups
    group = is_group(self.parameters, atom)
  File "/usr/local/lib/python3.6/dist-packages/propka/group.py", line 1237, in is_group
    ligand_group = is_ligand_group_by_groups(parameters, atom)
  File "/usr/local/lib/python3.6/dist-packages/propka/group.py", line 1293, in is_ligand_group_by_groups
    PROTONATOR.protonate_atom(atom)
  File "/usr/local/lib/python3.6/dist-packages/propka/protonate.py", line 111, in protonate_atom
    self.set_number_of_protons_to_add(atom)
  File "/usr/local/lib/python3.6/dist-packages/propka/protonate.py", line 140, in set_number_of_protons_to_add
    atom.number_of_protons_to_add -= self.valence_electrons[atom.element]
KeyError: 'A'
Eo300 commented 3 years ago

6NUJ, on the other hand, had the exit code 1, though the exception it threw was during the PROPKA phase of the process. Here's the self.valence_electrons dictionary it's searching within:

self.valence_electrons = {
            'H': 1, 'He': 2, 'Li': 1, 'Be': 2, 'B': 3, 'C': 4, 'N': 5,
            'O': 6, 'F': 7, 'Ne': 8, 'Na': 1, 'Mg': 2, 'Al': 3, 'Si': 4,
            'P': 5, 'S': 6, 'Cl': 7, 'Ar': 8, 'K': 1, 'Ca': 2, 'Sc': 2,
            'Ti': 2, 'Va': 2, 'Cr': 1, 'Mn': 2, 'Fe': 2, 'Co': 2, 'Ni': 2,
            'Cu': 1, 'Zn': 2, 'Ga': 3, 'Ge': 4, 'As': 5, 'Se': 6, 'Br': 7,
            'Kr': 8, 'I': 7}

Since 'A' isn't within, I set a breakpoint based on that condition and noticed atom.element was set to 'A' for the following two HETATMs in 6NUJ (attached as 6NUJ.pdb.txt):

HETATM   71 AS   CAF A  65     -31.063  31.152 -12.122  1.00 28.05          AS 
...
...
...
HETATM  564 AS   CAF A 130     -33.544  21.741 -19.572  1.00 36.13          AS  

As a sanity check, I removing the two lines let PDB2PQR run to completion, PQR files and all.

I haven't yet traced how PROPKA ended up assigning 'A' as the element, but if you have any insights based on these findings, it may be helpful in the meantime as well as I continue investigating.

jbardhan commented 3 years ago

Hi Elvis,

For 6NUJ, it looks like HETATM 71 may be the trouble? HETATM 71 AS CAF A 65 -31.063 31.152 -12.122 1.00 28.05 AS

for 1ZLA, it looks like residue 1 on chain I (DA 1) is missing at least 1 atom, phosphate, and that could be responsible.

Same is true for 5E5A

5MLU I haven't figured out yet.

Jay

jbardhan commented 3 years ago

I haven't looked at the code yet. Depending on the parser, it may be messed up due to the unusual columns the AS appears in.

sobolevnrm commented 3 years ago

Hi Elvis,

For 6NUJ, it looks like HETATM 71 may be the trouble? HETATM 71 AS CAF A 65 -31.063 31.152 -12.122 1.00 28.05 AS

for 1ZLA, it looks like residue 1 on chain I (DA 1) is missing at least 1 atom, phosphate, and that could be responsible.

Same is true for 5E5A

5MLU I haven't figured out yet.

Jay

Can we confirm that not all nucleic acids are broken in PDB2PQR? As a counter-point to 1ZLA, can we find a working nucleic acid example?

sobolevnrm commented 3 years ago

Hi Elvis,

For 6NUJ, it looks like HETATM 71 may be the trouble? HETATM 71 AS CAF A 65 -31.063 31.152 -12.122 1.00 28.05 AS

for 1ZLA, it looks like residue 1 on chain I (DA 1) is missing at least 1 atom, phosphate, and that could be responsible.

Same is true for 5E5A

5MLU I haven't figured out yet.

Jay

I agree with Jay's diagnosis: it seems that the code is assuming 1-character atom names. I think the solution here is to raise a more interpretable error. I doubt we'll be adding arsenic to our supported elements any time soon.

sobolevnrm commented 2 years ago

Hey guys, seems we have the same problem as well. I tried couple of PDBs : 5MLU / 5E5A / 1ZLA : no pqr file outputs. They all are structures of nucleosomes so I tried another type of molecule : 6NUJ : same problem

Thanks for your help.

PDB entries 5MLU / 5E5A / 1ZLA / 6NUJ now work with the current (f23c0e6) version of the master branch.

sobolevnrm commented 2 years ago

Attached is the PDB file. As a note, the same PDB file works on an installed version 1.9.0. mpdhfr_wt+ndph+dhf-279k_1b_notr1.pdb.zip

The original problem persists with this file:

CRITICAL:Unable to debump biomolecule. Biomolecular structure is incomplete:  Found gap in biomolecule structure for atom ATOM     63  HG1 SER     4      -1.388  -8.464  -5.519  0.0000 0.0000
CRITICAL:Giving up.
sobolevnrm commented 2 years ago

Attached is the PDB file. As a note, the same PDB file works on an installed version 1.9.0. mpdhfr_wt+ndph+dhf-279k_1b_notr1.pdb.zip

The original problem persists with this file:

CRITICAL:Unable to debump biomolecule. Biomolecular structure is incomplete:  Found gap in biomolecule structure for atom ATOM     63  HG1 SER     4      -1.388  -8.464  -5.519  0.0000 0.0000
CRITICAL:Giving up.

This problem occurs because HG1 is a nonstandard name for the serine hydroxyl hydrogen. However, it is not an invalid name so I will add it to AA.xml for PDB2PQR which seems to fix the problem.