General updates | JW – Pushing topology refactor forward. OpenFE will start using it for their dev work. You may see PR traffic and stuff from them (Richard Gowers, Irfan Alibay, Mike Henry, David Swenson) JW – Thanks for responding to BSwope - Kind of a standoff due to me being focused on technical work, JH waiting for SB, and SB being out of billable hours. Toolkit 0.10.5 release was made - Major fixes to virtualsites (almost entirely written by Simon) JM – Got theory docs merged for bespokefit JM – Went over bespokefit docs more closely JM – Interchange examples are merged JM – Did first pass of QCSubmit docs to use markdown instead of rst, use the new theme, polish wording. JM – Big discussion on topology future, seems to be petering out. Topologies could use a visualize method, better control of positions, Interchange needs to not expose topology. JW – I’ll try to weigh in on this if I can get the topology refactor MVP out to OpenFE. (Discussion about conformers vs topology positions) (General) – We had previously decided to have a topology have positions, which would just be a view into the first conformer of each molecule in the topology
JW – I had imagined users only ever interacting with Interchange objects that have parameters assigned. To expose them to the idea that they sometimes wouldn’t is a bit scary to me. JW – Putting velocities on topologies is a great idea. JW – Topology visualization is a great idea Topology.from_sdf is going to be complex, I think we should avoid it for now Topology.from_pdb could be a good idea, but let’s handle Molecule.from_pdb first. Then topology.from_pdb will just be running that in a loop Topology visibility on Interchange - We’d want to close off access to How do we reduce access to oly allow users to reach these methods? Some special API points should be threaded through and accessible at the Interchagne level (like Interchange.to_openmm_topology)
class TopologyView(Topology):
def __init(self, other: Topology):
# Have self.positions be a REFERENCE to the real positions
self.positions = other.positions
...
def add_molecule(*args, **kwargs):
return NotImplementedError
def add_constraint():
return NotImplementedError
class Interchange:
@property
def topology():
return TopologyView(self._topology)
def to_openmm_topology(self, *args, **kwargs):
return self._topology.to_openmm(*args, **kwargs) |