ReliaSolve / Molprobity2

0 stars 0 forks source link

Finding type_energy for atoms in PDB and CIF files is failing #115

Closed russell-taylor closed 3 years ago

russell-taylor commented 3 years ago

The call to find type_energy in Dorothee's example program: te = atom_dict[a.name.strip()].type_energy is failing with KeyError on look-ups for some PDB files. In particular:

        OXT atom in 4z4d.cif, for example (atom 6469 in ALA 859)
        OXT atom in 3dfr.pdb (atom 1294 in ALA 162)
        O5' atom in 4fen.pdb (atom 1 in G 15)

I'm asking her what to do about this.

russell-taylor commented 3 years ago

Dorothee's code has a comment asking why OXT is missing and code that changes the name to 'O' when it is 'OXT'. For a stop-gap measure, will rename all O* things O and print a warning message.

russell-taylor commented 3 years ago

The OXT --> O fixed the issue for one residue in 3dfr and other files, but then they failed on different names. Switching O* --> O did not fix things because some of the other residue's dictionaries have no atom named 'O'. The O5' noted above in 4fen.pdb is one such case, but there are others.

russell-taylor commented 3 years ago

To get this going, trying to find the string that is the best match from the dictionary in that it matches the first character of the name and a maximal number of the others.

russell-taylor commented 3 years ago

Will leave this workaround in place at least until the names in the dictionaries are changed to the new naming scheme.

Also added MolProbity-native VDW and acceptor/donor lookup, though the acceptor/donor is only the first step within Reduce to determining the actual atom behavior.

russell-taylor commented 3 years ago

Switching this to use Nigel's new functions to get VDW and acceptor/donor resolved the OXT problem and also a number of other problems.