{"id":39804556,"url":"https://github.com/gph82/mdciao","last_synced_at":"2026-01-18T12:36:51.354Z","repository":{"id":39637109,"uuid":"199618855","full_name":"gph82/mdciao","owner":"gph82","description":"mdciao: Accessible Analysis and Visualization of Molecular Dynamics Simulation Data","archived":false,"fork":false,"pushed_at":"2026-01-14T17:03:38.000Z","size":80547,"stargazers_count":37,"open_issues_count":5,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-14T21:11:59.920Z","etag":null,"topics":["amino-acids","computational-chemistry","g-protein","gpcr","gpcr-numbering","kinases","molecular-dynamics","pdb-database","protein-structure","python","structural-biology"],"latest_commit_sha":null,"homepage":"https://mdciao.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gph82.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-07-30T09:22:05.000Z","updated_at":"2025-12-25T18:31:08.000Z","dependencies_parsed_at":"2023-01-22T03:47:15.516Z","dependency_job_id":"1ff5259b-de13-4a97-987d-85cd59741321","html_url":"https://github.com/gph82/mdciao","commit_stats":{"total_commits":2435,"total_committers":8,"mean_commits":304.375,"dds":"0.12977412731006155","last_synced_commit":"819d9938f9045e9f411523438a3bf9e85a3196f5"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/gph82/mdciao","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gph82%2Fmdciao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gph82%2Fmdciao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gph82%2Fmdciao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gph82%2Fmdciao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gph82","download_url":"https://codeload.github.com/gph82/mdciao/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gph82%2Fmdciao/sbom","scorecard":{"id":442652,"data":{"date":"2025-08-11","repo":{"name":"github.com/gph82/mdciao","commit":"2b0b73a1f7ac1cd6b4c50e101b4f5502cd2eb528"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":2,"reason":"3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-package.macos.yml:1","Warn: no topLevel permission defined: .github/workflows/python-package.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU Lesser General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.macos.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.macos.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.macos.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.macos.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-package.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/gph82/mdciao/python-package.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:53","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/python-package.macos.yml:55","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:48","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:49","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:50","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of  12 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 1.0.0 not signed: https://api.github.com/repos/gph82/mdciao/releases/205073734","Warn: release artifact 0.0.9 not signed: https://api.github.com/repos/gph82/mdciao/releases/173695977","Warn: release artifact 0.0.6 not signed: https://api.github.com/repos/gph82/mdciao/releases/115625696","Warn: release artifact 0.0.5 not signed: https://api.github.com/repos/gph82/mdciao/releases/71927158","Warn: release artifact 1.0.0 does not have provenance: https://api.github.com/repos/gph82/mdciao/releases/205073734","Warn: release artifact 0.0.9 does not have provenance: https://api.github.com/repos/gph82/mdciao/releases/173695977","Warn: release artifact 0.0.6 does not have provenance: https://api.github.com/repos/gph82/mdciao/releases/115625696","Warn: release artifact 0.0.5 does not have provenance: https://api.github.com/repos/gph82/mdciao/releases/71927158"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-19T05:54:12.496Z","repository_id":39637109,"created_at":"2025-08-19T05:54:12.496Z","updated_at":"2025-08-19T05:54:12.496Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amino-acids","computational-chemistry","g-protein","gpcr","gpcr-numbering","kinases","molecular-dynamics","pdb-database","protein-structure","python","structural-biology"],"created_at":"2026-01-18T12:36:51.223Z","updated_at":"2026-01-18T12:36:51.327Z","avatar_url":"https://github.com/gph82.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"mdciao: Accessible Analysis and Visualization of Molecular Dynamics Simulation Data\n===================================================================================\n\n|Pip Package| |Python Package| |MacOs Package| |Coverage| |DOI| |License|\n\n.. figure:: doc/imgs/banner.png\n   :scale: 33%\n\n.. figure:: doc/imgs/distro_and_violin.png\n   :scale: 25%\n\n.. figure:: doc/imgs/timedep_ctc_matrix.png\n   :scale: 55%\n\n.. figure:: doc/imgs/interface.combined.png\n   :scale: 33%\n\n``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.\n\nUnder the hood, the module `mdtraj \u003chttps://mdtraj.org/\u003e`_ is doing most of the computation and handling of molecular information, using `BioPython \u003chttps://biopython.org/\u003e`_ for sequence alignment, `pandas \u003cpandas.pydata.org/\u003e`_ for many table and IO related operations, and `matplotlib \u003chttps://matplotlib.org\u003e`_ for visualization. It tries to automatically use the consensus nomenclature for\n\n* GPCRs\n    * via `Ballesteros-Weinstein-Numbering \u003chttps://www.sciencedirect.com/science/article/pii/S1043947105800497\u003e`_ or structure-based schemes by `Gloriam et al \u003chttps://doi.org/10.1016/j.tips.2014.11.001\u003e`_ for the receptor's TM domain, or\n    * via generic-residue-numbering for the GAIN domain of `adhesion GPCRs \u003chttps://doi.org/10.1038/s41467-024-55466-6\u003e`_\n* G-proteins\n    * via `Common G-alpha Numbering (CGN) \u003chttps://www.mrc-lmb.cam.ac.uk/CGN/faq.html\u003e`_\n* Kinases\n    * via their `85 pocket-residue numbering scheme \u003chttps://doi.org/10.1021/JM400378W\u003e`_\n\nusing local files or on-the-fly lookups of the `GPCRdb \u003chttps://gpcrdb.org/\u003e`_\nand/or `KLIFS \u003chttps://klifs.net/\u003e`_.\n\nLicenses\n========\n* ``mdciao`` is licensed under the `GNU Lesser General Public License v3.0 or later \u003chttps://www.gnu.org/licenses/lgpl-3.0-standalone.html\u003e`_ (``LGPL-3.0-or-later``, see the LICENSE.txt).\n\n* ``mdciao`` uses a modified version of the method `mdtraj.compute_contacts \u003chttps://github.com/mdtraj/mdtraj/blob/70a94ff87a6c4223ca1be78c752ef3ef452d3d44/mdtraj/geometry/contact.py#L42\u003e`_  of `mdtraj \u003chttps://mdtraj.org/\u003e`__. This modified version is published along with ``mdciao`` and can be found in `contacts/_md_compute_contacts.py \u003cmdciao/contacts/_md_compute_contacts.py\u003e`_. Please see that file for details on the modifications.\n\n* Modules used by ``mdciao`` have different licenses. You can check any module's license in your Python environment using `pip-licenses \u003chttps://github.com/raimon49/pip-licenses\u003e`_:\n\n  \u003e\u003e\u003e pip-licenses | grep module_name\n\nDocumentation\n=============\nCurrently, docs are hosted at `\u003chttps://mdciao.org\u003e`_.\n\nSystem Requirements\n===================\n``mdciao`` is developed in GNU/Linux, and CI-tested via `github actions \u003chttps://github.com/gph82/mdciao/actions\u003e`_ for GNU/Linux and MacOs. Tested Python versions are:\n\n* GNU/Linux: 3.8, 3.9, 3.10, 3.11, 3.12\n* MacOs: 3.8, 3.9, 3.10, 3.11, 3.12.\n\nSo everything should work *out of the box* in these conditions.\n\n.. admonition:: Python 3.13 users\n\n   Python 3.13 support is unofficial, because the module ``bezier`` `currently requires python \u003c=3.12 \u003chttps://github.com/dhermes/bezier\u003e`_.\n\n   Still, you can install mdciao in Python 3.13 if you install ``bezier`` previously with these environment variables:\n\n   \u003e\u003e\u003e BEZIER_NO_EXTENSION=\"True\" BEZIER_IGNORE_VERSION_CHECK=\"True\" pip install bezier\n   \u003e\u003e\u003e pip install mdciao\n\n   You can check what these variables do `here \u003chttps://bezier.readthedocs.io/en/stable/development.html#environment-variables\u003e`__.\n\n   Since ``mdciao`` installs and passes the CI-tests for Python 3.13 in such an environment, you can use it **at your own risk**. Please report on any issues you might find.\n\nAuthors\n=======\n``mdciao`` is written and maintained by Guillermo Pérez-Hernández (`ORCID \u003chttp://orcid.org/0000-0002-9287-8704\u003e`_) currently at the `Institute of Medical Physics and Biophysics \u003chttps://biophysik.charite.de/ueber_das_institut/team/\u003e`_ in the\n`Charité Universitäsmedizin Berlin \u003chttps://www.charite.de/\u003e`_.\n\nPlease cite:\n * mdciao: Accessible Analysis and Visualization of Molecular Dynamics Simulation Data\n    | Guillermo Pérez-Hernández, Peter W. Hildebrand\n    | PLoS Comput Biol 21(4): e1012837.\n    | https://doi.org/10.1371/journal.pcbi.1012837\n\nScope\n======\n``mdciao`` originated as a loose collection of CLI scripts used in our lab to streamline contact-frequency analysis of MD simulations with `mdtraj \u003chttps://mdtraj.org/\u003e`__,\nwhich is doing a lot of the heavy work under the hood of ``mdciao``. The goal was to take the less scripting-affine\nlab members from their raw data to informative graphs about the general vicinity of *their* residues\nof interest without much hassle. From there, it grew to incorporate many of the things routinely done in the lab\n(with a focus on GPCRs and G proteins) and ultimately a package available for third-party use was made.\n\nThe main publications which have driven the development of ``mdciao`` are:\n * Function and dynamics of the intrinsically disordered carboxyl terminus of β2 adrenergic receptor.\n    | Heng, J., Hu, Y., Pérez-Hernández, G. et al.\n    | Nat Commun 14, 2005 (2023).\n    | https://doi.org/10.1038/s41467-023-37233-1\n * Time-resolved cryo-EM of G-protein activation by a GPCR.\n    | Papasergi-Scott, M.M., Pérez-Hernández, G., Batebi, H. et al.\n    | Nature 629, 1182–1191 (2024).\n    | https://doi.org/10.1038/s41586-024-07153-1\n * Mechanistic insights into G-protein coupling with an agonist-bound G-protein-coupled receptor.\n    | Batebi, H., Pérez-Hernández, G., Rahman, S.N. et al.\n    | Nat Struct Mol Biol (2024).\n    | https://doi.org/10.1038/s41594-024-01334-2\n * Generic residue numbering of the GAIN domain of adhesion GPCRs.\n    | Seufert, F., Pérez-Hernández, G., Pándy-Szekeres, G. et al.\n    | Nat Commun 16, 246 (2025).\n    | https://doi.org/10.1038/s41467-024-55466-6\n\nTODOs\n=====\nYou can find an informal list of TODOs and known issues `here \u003chttps://github.com/gph82/mdciao/blob/master/doc/TODOs.rst\u003e`__.\n\n\n.. |Pip Package| image::\n   https://badge.fury.io/py/mdciao.svg\n   :target: https://badge.fury.io/py/mdciao\n\n.. |Python Package| image::\n   https://github.com/gph82/mdciao/actions/workflows/python-package.yml/badge.svg\n   :target: https://github.com/gph82/mdciao/actions/workflows/python-package.yml\n\n.. |MacOs Package| image::\n   https://github.com/gph82/mdciao/actions/workflows/python-package.macos.yml/badge.svg\n   :target: https://github.com/gph82/mdciao/actions/workflows/python-package.macos.yml\n\n.. |Coverage| image::\n   https://codecov.io/gh/gph82/mdciao/branch/master/graph/badge.svg?\n   :target: https://codecov.io/gh/gph82/mdciao\n\n.. |License| image::\n    https://img.shields.io/github/license/gph82/mdciao\n\n.. |DOI| image::\n   https://zenodo.org/badge/DOI/10.5281/zenodo.5643177.svg\n   :target: https://doi.org/10.5281/zenodo.5643177\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgph82%2Fmdciao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgph82%2Fmdciao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgph82%2Fmdciao/lists"}