Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PyRosetta > openMM #33

Open
matteoferla opened this issue Feb 1, 2023 · 2 comments
Open

PyRosetta > openMM #33

matteoferla opened this issue Feb 1, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@matteoferla
Copy link
Owner

In Fragmenstein, Igor uses PyRosetta, while industry folk want OpenMM.
This means I will add Fritz that can optionally replace Igor.

For that the following is needed:

  • create a topology for the ligand
  • optionally create topologies for cofactor non-polymer parts of the protein, under the assumption the user left it there for a reason, e.g. NADH but not glycol...
  • optionally create topologies for ncaa, e.g. methylarginine or phosphoserine —in PyRosetta these are 'patches' (not looked into this)
  • add constraints to the ligand (complicated, vide infra)
  • minimise locally with implicit solvent (Born)
  • move ligand out for unbound potential
  • extract individual terms if possible for the ligand (unclear how)

Constraints to the ligand:
In PyRosetta I add a coordinate constrain. In OpenMM it seems like I need to add a virtual residue with those coordinates and constrain to those.
I assume also a constraint to a reference to deal with drift.

Covalent residues:
Adding openmm.HarmonicBondForce().addBond does not make the bond obey dihedrals etc. or even angles in PyRosetta if the topology is not done right... How does one declare a covalent topology in openff?

Things that will require testing:

  • local minimisation in a unminised structure, does it glitch as can happen in Rosetta if near but not containing a nnca or ligand?
  • local minimisation does not result in drift?
@thomas-coudrat
Copy link

Hi Matteo,

Thanks for developing Fragmenstein!

I'm trying to workout the status of this issue, as I'd like to avoid using PyRosetta/Rosetta. The README suggests using OpenVictor, based on OpenMM instead of PyRosetta. Does this mean Fritz was abandoned and OpenVictor should be used instead?

I do note the developments in other code bases linked here of OpenMM implementation: this suggests to me that there is still more work to come to integrate these developments back into the main Fragmenstein code base?

Thanks again,

Thomas

@matteoferla
Copy link
Owner Author

Sorry, I had not see this.

Yes and no: the openMM mod works (OpenVictor via Fritz), but it is too slow for use.
It requires GPU and takes over a minute on multiple cores per compound, whereas the main criticism is that 30–60 CPU-seconds per compound is way too much when in the thousands scale.
I use Fragmenstein generally with 100s of filtered runs, but that is what not what it gets used for and due to the pairwise or higher combination of parent hits, it does have a combinatorial explosion problem in the wild. So the mode without Pyrosetta and just RDKit MMFF94 gets used.

A second problem is that as you can immagine the hybrid scorefunction in Rosetta performs better than a better pure physics one when dealing with a static snapshot. Namely, the hack of delta of a score (REU) that is a proxy Gibbs free energy (hence the nasty ∆∆G) works in Rosetta, but in not in OpenMM, where the minimised energy is at zero Kelvin so entropy is zero, making it a delta in absolute enthalpy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants