tristanic / isolde

Interactive molecular dynamics based model building into low-resolution crystallographic and cryo-EM maps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Template matching to user-generated parameters

slochower opened this issue · comments

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

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

  • ISOLDE currently only allows you to load custom MD templates, not coordinate templates (because currently the ChimeraX ResidueTemplate object can only be created from a Chemical Components Dictionary style mmCIF file, and (a) I've yet to find a library that will write those, and (b) there are already so many different types of .cif file that explaining it all to the average user is difficult).
  • It's not smart enough to fill in missing coordinates from the MD template alone (which contains no coordinate information) - so for that job it relies on a coordinate template. As per the first point, that's only possible when your ligand exists in the CCD. If there's no CCD entry with a matching name it'll launch a warning saying it can't do more than adjust the hydrogens - but as you've seen, if there is a name match then it (rather stupidly) assumes that's what you want and runs with it.

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.

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.

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.

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.