choderalab / openmmtools

A batteries-included toolkit for the GPU-accelerated OpenMM molecular simulation engine.
http://openmmtools.readthedocs.io
MIT License
255 stars 81 forks source link

Add Abl:imatinib test system #227

Open jchodera opened 7 years ago

jchodera commented 7 years ago

We should add Abl:imatinib complex test systems that include separate complex, ligand, and protein testsystems.

We can port one over that is generated by YANK.

jchodera commented 7 years ago

We can also create a base class for protein:ligand test systems, such as BindingTestSystem, which can handle additional optional arguments that specify whether heavy atoms are to be restrained to reduce conformational sampling timescales. This may be useful for perses as well.

We probably also want a way to access TestSystem components for separate receptor-only and ligand-only systems. I'm not sure if I want to make these separate independent TestSystem classes, members of the BindingTestSystem object, or just have the separate component classes as members of the BindingTestSystem object.

Option 1: Separate TestSystem objects

from openmmtools.testsystems import AblImatinibExplicit, AblExplicit, ImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = AblExplicit(restrain_heavy_atoms=True)
ligand = ImatinibExplicit()

Option 2: Receptor and ligand systems are member fields

from openmmtools.testsystems import AblImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = complex.receptor # this is also a TestSystem object
ligand = complex.ligand # this is also a TestSystem object

Option 3: Receptor and ligand TestSystem classes are member fields

from openmmtools.testsystems.complexes import AblImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = complex.receptor_testsystem() # create TestSystem object
ligand = complex.ligand_testsystem() # create TestSystem object

# Receptor and ligand can also be instantiated separately
from openmmtools.testsystems import AblExplicit, ImatinibExplicit
receptor = AblExplicit()
ligand = ImatinibExplicit()

I'm currently favoring option 2 or 3.

Any thoughts @pgrinaway?