choderalab / yank

An open, extensible Python framework for GPU-accelerated alchemical free energy calculations.
http://getyank.org
MIT License
179 stars 70 forks source link

Create a FFXML System Constructor #544

Open Lnaden opened 7 years ago

Lnaden commented 7 years ago

This will replace the old systembuilder.py to enable things such as FFXML, Smirks, and other features.

This is a broad topic and multiple other issues will spawn from it, but this is the general design issue.

Post Yank 1.0 issue

davidlmobley commented 7 years ago

@jchodera may need to weigh in soon on the timing for this (I also messaged on Slack) -- on Oct. 18 he said that you guys could have SMIRFF-based hydration free energies working in Yank in the next couple weeks so that we could do some of them to validate our SMIRKS-based force field for an upcoming paper. Obviously it's not in yet, but if you guys are planning substantially later then that's very different from what he was saying a couple weeks ago.

@Lnaden - Would it be helpful if I now gave you code pointers as to how to set up a small molecule in solvent with a SMIRFF (Smirks Force Field) in FFXML? (Presumably if you're not anywhere close to implementing this, it would be better to wait until you are close to implementing since we may be doing some repo reorganization in the near future.)

Lnaden commented 7 years ago

Other thoughts carrying over from old System Builder we may consider:

Constructors for:

andrrizzi commented 7 years ago

Would it be helpful if I now gave you code pointers as to how to set up a small molecule in solvent with a SMIRFF (Smirks Force Field) in FFXML?

That would be very helpful to estimate how much time we would need to add the feature!

davidlmobley commented 7 years ago

@andrrizzi - somehow GitHub didn't e-mail me on this when you answered, oddly. In any case, for setting up a single molecule, see https://github.com/open-forcefield-group/smarty and look under smarty/examples/SMIRFF_simulation. For a system comprised of multiple molecules, the procedure is the same except you need to provide a Topology for the full system with multiple molecules (i.e. generated via packmol, such as via github.com/mobleylab/solvationtoolkit) and then an OEMol for each of the component molecules. See for example smarty/tests/test_forcefield where it uses a "cyclohexane_ethanol_0.4_0.6.pdb" file to set up a mixture of cyclohexane and ethanol.

If you want, I can actually put together code for you which would set up a simulation of a specified molecule in a specified solvent and parameterize it (it would take just a few lines) but would want to know that it's actually going to be used in the near term before I do so. :)

andrrizzi commented 7 years ago

Thanks, the code to set up a molecule looks simple enough! What I can tell you about our timeline is (@Lnaden correct me if I'm wrong here) that our current priority is the general test/validation of the current features and the refactoring of the Python API to make a stable 1.0 release. This should reasonably be done by the end of the year (end of January at most), so I don't think we'll be able to tackle this before mid-late January.

Since our current pipeline is heavily Amber-based, it will take some refactoring to host an alternative flow, but judging from the code you pointed us to, I think it could be implemented in a couple of weeks. If mid-late February is not too late for you, I think we can make it happen.

davidlmobley commented 7 years ago

Well, it definitely will be useful to us to have this in place whenever it happens. But yes, that's definitely far too late to do any solvation calculations for our current SMIRFF paper, which we're trying to wrap up this year. However, that's what I was expecting, so it's fine. :)

Get back in touch if you need anything else to help with this when you guys head this direction.

jchodera commented 7 years ago

The hydration free energy calculations only take 1.5h each, so it may not be too late. The real rate-limiting step is how easy it would be to integrate a packmol pipeline. @davidlmobley: Do you already have a tool that does SMIRFF to AMBER inpcrd/prmtop boxes?

andrrizzi commented 7 years ago

Do you already have a tool that does SMIRFF to AMBER inpcrd/prmtop boxes?

Ah, with an external script that does that YANK could be used immediately.

davidlmobley commented 7 years ago

The hydration free energy calculations only take 1.5h each, so it may not be too late. The real rate-limiting step is how easy it would be to integrate a packmol pipeline. @davidlmobley: Do you already have a tool that does SMIRFF to AMBER inpcrd/prmtop boxes?

Ahh! That's a good idea. This is something which I'd been wanting to put together but nothing had made it urgent yet. Let me see if I can do that in the next couple of days.

davidlmobley commented 7 years ago

Do you already have a tool that does SMIRFF to AMBER inpcrd/prmtop boxes?

This is added in https://github.com/open-forcefield-group/smarty/pull/187 (still open as I finish a couple other minor things) if you guys want to check it out. But it's just a couple of lines of code.