I need protonation on the epsilon 2 nitrogen (HIE, HSE) and not on the (HID, HSD). The reason for this is that HID is mechanistically wrong and plays havok with my ligand.
Even though MutateResidue in pyrosetta does not accept the `mutate_self` argument it appears it calls HID HIS_D and HIE HIS and the mover thinks of them as not self of each other, so this works with switching and the heavy atoms are kept in place.
r = pose.pdb_info().pdb2pose(res=41, chain='A')
MutateResidue = pyrosetta.rosetta.protocols.simple_moves.MutateResidue
MutateResidue(target=r, new_res='HIS').apply(pose)
This “seems” to keep even with FastRelax, MinMover and PackRotamersMover. But I worry about it.
So my question is when will the tautomer get resampled? Is there a more explicit way to constrain to a tautomer?
Adding a constraint like this
AtomPair SG 145A HE2 41A HARMONIC 1.8 0.2
seems like a bad idea, as a missing atom in a contraint results in a segmentation fault or Runtime error.
I have seem there is this, but I am not sure how to use it and it looks the oppose of what I need.
hp = pyrosetta.rosetta.core.pack.task.FIX_HIS_TAUTOMER()
hp.residue_action(packer_task, r)
On a comical note, I did try the most idiotic way, namely changing the residue name in PyMOL beforehand to HIE, but this horrid solution does not work as the loader (with -no_optH left true) tries reading either HIE or HSE as some weird non-amino acid ligand from the PDB component list…