Reduce requirements#867
Conversation
Still need massive cleanup for passing/skipped tests, though
|
Note that there are three kinds of packages in the "requirements."
There are packages that fall a little in between these, so I'm hoping to get user feedback on where they should go. Between 1 and 2:
Between 2 and 3:
Anyway, those are my thoughts, but I'd really like to hear what users think would work best for them. Any thoughts, @sroet @hejung @ajsilveira @arjunwadhawan @IdsTeepe? |
|
Although I haven't used any engine other than the Gromacs engine, I do believe I'm not sure how I feel about creating a bunch of metapackages. Right now I have |
|
While it is true that in principle we can do path sampling on toy systems (and I love to do that for development), I think the typical user will want to do path sampling on 'real' systems. That is only possible with mdtraj and openmm (or gromacs). I would however opt for not requiring matplotlib and jupyter. Consider e.g. the situation on the MPCDF clusters where you can only run jobs via the queing system and where you are not allowed/supposed to run interactive sessions on the login nodes, i.e. there is no way of using matplotlib except saving the plot as image and hope it will look as you thought. Using jupyter notebooks via ssh tunneling is also not something the MPCDF would be happy about, since the login nodes are not thought for calculations. Concerning SciPy requiring matplotlib, I think there is some confusion between the SciPy stack and the SciPy library. SciPy stack is the bundle of numpy, matplotlib, scipy library, and friends. The SciPy library is what we actually import with TLDR: |
|
Thanks for the feedback. First, let me invent a few terms, for clarity in communication. "True requirements" are "crash on import if you don't have." "Co-packaged" are requirements that aren't technically necessary, but come with OPS by default. "Not required" means it requires a separate installation. My current leanings
@hejung is absolutely correct that most users will want to work with real systems. My goal here is that installing the OPS engine for most of these will be no more difficult than installing the engine itself. You installed OpenMM? Now you can use OPS with OpenMM. You installed Gromacs? Now you can use OPS with Gromacs. Etc. That's a big part of the reason to co-package MDTraj. At some point we may need to give additional installation instruction for some engines (LAMMPS will require that it is compiled with its Python wrappers), but my goal is to make an instructions page for installing our various integrations (also including CV wrappers, like those for PyEMMA and PLUMED) that makes it clear that most of these are "you get it for free when you install the other package." |
|
Just as a remark to anyone interested: This is now pretty much done. I just need to add some more explanations to the install docs. If there's any significant opposition to the requirements shift outlined above, please let me know. Otherwise, I'll put this up for final review soon. |
|
As far as I'm concerned, this is now done. I'll leave the PR open for 48 hours (until 23:59 Thu 14 Nov) for any other comments, and then merge. And OPS 1.1 will be released on conda-forge and pypi! |
OPS currently has a lot of requirements that aren't actually required to do simple path sampling. All of these integrations should be included in the standard test suite, but we should also be able to do a minimal test suite runs without the following installed (listed as check boxes to check them off as we go):
matplotlibThis would leave the following as the actual core requirements:
Note that removing OpenMM from the requirements will also make us pip-installable.