-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Port topology notebook to PDB cookbook #1732
Conversation
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
Codecov Report
Additional details and impacted files |
One of the big points about this notebook is that these PDB files are actually taken from and AMBER and GROMACS tutorials. There were a few tweaks that I had to made to make them loadable, and the PDB files have somewhat generous solvent boxes that are so large they'll gum up our CI/docs rendering. So on my to-do list is:
|
Turning this over to @Yoshanuikabundi - Two things that would be good are:
As a stretch goal, If we REALLY wanted this to showcase interoperability, we could include the commands from the GROMACS and AMBER tutorials that made these files, but there were a few messy steps (like deleting a H from an N terminus and using RDKit to add CONECT for a ligand) that were a bit messy. So this may be more confusing than it's worth. |
I'm personally -1 on fully documenting the process by which the data could be re-generated here. I don't think that's what we want to show off; in other words, if something changes with the tutorials I don't see a reason we should update this cookbook. |
@mattwthompson - for future reference, to get the widgets to display in Sphinx you just need to save the widget state in the notebook 😄 In modern versions of Notebook and Lab this is a tick box in This basically just writes the PDB file being send to NGLView in the notebook, and there's JS automatically embedded by Sphinx that loads it and runs the widgets. The catch is that there's no Python runtime in the browser, so only the stuff handled by JS is dynamic - for example, our NGLView trajectory handler passes one frame at a time from Python to NGLView, so the scan bar and play button show up but the frame never changes. |
@Yoshanuikabundi could I convince you to capture that somewhere like the developer docs? This is valuable (and not-very-transient) information |
Hey @mattwthompson, is there more you wanted to do on this? I'm going over it now but just wanted to make sure I didn't merge it without missing something you wanted. Also
Does the Toolkit not support octohedra? I thought we could handle arbitrary triclinic boxes. I can rephrase to still state it is cubic without implying that we don't support octohedra :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is fantastic. Everything's well written and clear, it's no longer or more complex than it needs to be, and it fills an important gap in the documentation.
In my commit I've just polished things up to work a bit more like the other cookbook and clarified a few points.
The notebook adds about one minute to CI, but since notebooks only run on one of the jobs for each of Linux and MacOS I think this is acceptable. It's about 20% of the time on the Linux runner, but the MacOS runner is slower overall and it's much less significant there. I've asked PyTest to tell us which are the slowest steps of the notebook, but I'm inclined to leave it as is regardless of what it says - I think demonstrating loading a full PDB with a realistic amount of water has value.
I don't think that all parts of our codebase support truncated octahedrons. Interchange has some testing for exporting different sorts of boxes to GROMACS, but I don't recall adding any particular support in the Toolkit. Particularly, I don't think we support the vanilla "load PDB --> assign params --> simulate in OpenMM" workflow for octahedrons. I'll revert that bit and merge. Thanks all! |
Resolves #1692