tristanic / isolde

Interactive molecular dynamics based model building into low-resolution crystallographic and cryo-EM maps
Other
33 stars 4 forks source link

Template matching to user-generated parameters #11

Closed slochower closed 2 years ago

slochower commented 2 years ago

I'm encountering a sticky situation matching ligands to my custom parameters in the unparameterized residues widget. I've tested on ChimeraX 1.2.5 + ISOLDE 1.2 and ChimeraX 1.4 + ISOLDE daily (following your tweet instructions to do toolshed install...).

The atoms (and atom names) in the PDB file that I've loaded perfectly match the atom names in my user-generated (GAFF2) parameters. Regardless, I see:

Residue VRT 1 has only 0 atoms in common with the template. At least 3 are needed to rebuild automatically. Try deleting this residue and replacing it with "isolde add ligand VRT - or have you just forgotten to add hydrogens?

I'm not sure how to troubleshoot this; is there additional logging somewhere for what matches/does not match? (I know they match because I actually excised the ligand from the PDB and replaced it with coordinates written by tleap at the same time as parameterization. This is why it shows up as residue 1.)

N.B. after loading user-generated parameters, the description is still incorrect (see screenshot): image

tristanic commented 2 years ago

Hrm, yes - I can see how that can be confusing. Here's the status on this:

Anyway, the most likely problem here is that addh has given the ligand different hydrogens compared to what you used for parameterisation (even if it had hydrogens on loading, addh can adjust them if it thinks the chemistry warrants it). If you rename the ligand (and its template) to something that isn't in the components dictionary (a challenge - again, I know of no tool that lists unclaimed 3-letter IDs) then the Unparameterised Residues widget should be able to fix it. The other approach I'd recommend would be to open the .mol2 file from tleap, place it alongside the ligand in your model, and carefully compare side by side. You can delete extraneous hydrogens by ctrl-clicking on them and then doing "del sel", and add a new one by ctrl-clicking on the heavy atom and doing ISOLDE/Model Building/Add Hydrogen.

Sorry this is a bit painful. Better handling of custom ligands is one of the next big things on my to-do list.

slochower commented 2 years ago

Ah, hm.

Anyway, the most likely problem here is that addh has given the ligand different hydrogens compared to what you used for parameterisation (even if it had hydrogens on loading, addh can adjust them if it thinks the chemistry warrants it). If you rename the ligand (and its template) to something that isn't in the components dictionary (a challenge - again, I know of no tool that lists unclaimed 3-letter IDs) then the Unparameterised Residues widget should be able to fix it. The other approach I'd recommend would be to open the .mol2 file from tleap, place it alongside the ligand in your model, and carefully compare side by side. You can delete extraneous hydrogens by ctrl-clicking on them and then doing "del sel", and add a new one by ctrl-clicking on the heavy atom and doing ISOLDE/Model Building/Add Hydrogen.

I see. Interesting hypothesis. I tested this by just running addh on the protein. I can confirm that both the ligand in the PDB and the tleap-written MOL2 have the same number of atoms and bonds. In that case, loading the parameters via XML ("Load residue MD definition") should perfectly match the ligand and it shouldn't show up in the unparameterised residues widget at all, correct? In that case, I wouldn't need to hit the "Fix atoms..." button at all. But my ligand is still showing up there. I'm going to try picking a random three digit alphanumeric code for the residue name to see if matching something in CCD is having unintended side effects.

slochower commented 2 years ago

Ah, you were right, addh did add an inappropriate proton, even though it matched perfectly in the PDB file. Argh. Thanks for the tips and troubleshooting help.

tristanic commented 2 years ago

No worries. Glad it's working!

By the way, as of ISOLDE 1.3 you can parameterise via ANTECHAMBER directly in ISOLDE: "isolde parameterise {ligand id}"... but you'll still need to double-check for chemical sensibility first.