mdciao: Analysis of Molecular Dynamics Simulations Using Residue Neighborhoods
Project description
mdciao: Analysis of Molecular Dynamics Simulations Using Residue Neighborhoods
mdciao is a Python module that provides quick, “one-shot” command-line tools to analyze molecular simulation data using residue-residue distances. mdciao tries to automate as much as possible for non-experienced users while remaining highly customizable for advanced users, by exposing an API to construct your own analysis workflow.
Under the hood, the module mdtraj is doing most of the computation and handling of molecular information, using BioPython for sequence alignment, pandas for many table and IO related operations, and matplotlib for visualizaton. It tries to automatically use the
consensus-nomenclature schemes by either using local files or on-the-fly lookups of the GPCRdb and/or https://www.mrc-lmb.cam.ac.uk/CGN/
Licenses
mdciao is licensed under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later, see the LICENSE.txt).
mdciao uses a modified version of the method mdtraj.compute_contacts of mdtraj. This modified version is published along with mdciao and can be found in contacts/_md_compute_contacts.py. Please see that file for details on the modifications.
Modules used by mdciao have different licenses. You can check any module’s license in your Python environment using pip-licenses:
>>> pip-licenses | grep module_name
Status
mdciao is in its initial development, with versions 0.Y.Z. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
Documentation
Currently, docs are hosted at https://proteinformatics.org/mdciao/, but this can change in the future.
TODOs
- This is an informal list of known issues and TODOs:
overhaul the “printing” system with proper warnings (perhaps use loguru
progressbar not very informative for one chunked trajectory or parallel runs
the “consensus” fragmentation sometimes breaks automatic flareplot labelling #should no longer be the case after https://github.com/gph82/mdciao/pull/21 (check)
Building the docs with sphinx v>2.4.4 doesn’t autogen a class’ method’s linked doc
improve sequence alignment choices
the affiliation of a residue to a fragment is done as “res@frag” on the string output and res^frag in figures, this implementation is simply using replace(“@”,”^”), could be better
heuristics for proper font-sizing of flareplots could be optimized
parallel execution with memory mdtraj.Trajectory objects should be better
harmonize documentation API cli methods (mdciao.cli) and the CLI scripts (mdc_*)
The interface between API methods and cli scripts could be better, using sth like click
The API-cli methods (interface, neighborhoods, sites, etc) have very similar flows but a lot of code repetition, I am sure some patterns/boilerplate could be outsourced/refactored even more.
color handling of the flare-plots is buggy because it tries to guess too many things. Undecided about best decision.
Most of the tests were written against a very rigid API that mimicked the CLI closely. Now the API is more flexible and many tests could be re-written or deleted , like those needing mock-input or writing to tempdirs because writing figures or files could not be avoided.
There’s some inconsistencies in private vs public attributes of classes. An attribute might’ve “started” as private and is exceptionally used somewhere else until the number of exceptions is enough for it to make sense to be public, documented and well tested. I’m working on it.
neighborlists could be computed much more efficiently
There’s many other TODOs spread throughout the code
System Requirements
At the moment, mdciao is CI-tested only for GNU/Linux and Python versions 3.6, 3.7, 3.8, 3.9. MacOS CI-tests are failing currently because of a segmentation error (139 and 11) when calling mdtraj.dsssp.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.