{"id":34091498,"url":"https://github.com/pasmopy/pasmopy","last_synced_at":"2026-04-09T00:31:20.073Z","repository":{"id":37833751,"uuid":"334852660","full_name":"pasmopy/pasmopy","owner":"pasmopy","description":"Patient-Specific Modeling in Python","archived":false,"fork":false,"pushed_at":"2026-03-16T19:26:59.000Z","size":5280,"stargazers_count":19,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-28T16:19:57.203Z","etag":null,"topics":["biochemical-networks","cancer","computational-biology","digital-twin","in-silico-clinical-trial","kinetic-modeling","patient-specific-modeling","personalized-medicine","precision-medicine","precision-oncology","python","systems-biology","systems-biology-simulation"],"latest_commit_sha":null,"homepage":"https://pasmopy.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pasmopy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","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":"2021-02-01T06:28:00.000Z","updated_at":"2026-02-13T09:25:34.000Z","dependencies_parsed_at":"2023-12-11T20:29:13.896Z","dependency_job_id":"de5ff471-2356-4f42-956e-4add56490ed6","html_url":"https://github.com/pasmopy/pasmopy","commit_stats":{"total_commits":305,"total_committers":6,"mean_commits":"50.833333333333336","dds":"0.21311475409836067","last_synced_commit":"6cd3b734ee7eb7a345b4e3d98f527ba5ad89b322"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/pasmopy/pasmopy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasmopy%2Fpasmopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasmopy%2Fpasmopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasmopy%2Fpasmopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasmopy%2Fpasmopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pasmopy","download_url":"https://codeload.github.com/pasmopy/pasmopy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasmopy%2Fpasmopy/sbom","scorecard":{"id":721401,"data":{"date":"2025-08-11","repo":{"name":"github.com/pasmopy/pasmopy","commit":"91d85676a72c9768f1bcbc2edd83e7306afa5d47"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/25 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":"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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:17","Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi-publish.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":"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":"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":"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/build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/pypi-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/pasmopy/pasmopy/pypi-publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:16","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:17","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 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":"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":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 3 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T11:28:44.902Z","repository_id":37833751,"created_at":"2025-08-22T11:28:44.902Z","updated_at":"2025-08-22T11:28:44.902Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["biochemical-networks","cancer","computational-biology","digital-twin","in-silico-clinical-trial","kinetic-modeling","patient-specific-modeling","personalized-medicine","precision-medicine","precision-oncology","python","systems-biology","systems-biology-simulation"],"created_at":"2025-12-14T14:42:57.910Z","updated_at":"2026-04-09T00:31:20.065Z","avatar_url":"https://github.com/pasmopy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://pasmopy.readthedocs.io/en/latest\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/pasmopy/pasmopy/master/docs/_static/img/pasmopy-project-logo.png\" width=\"400\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n[![PyPI version](https://img.shields.io/pypi/v/pasmopy.svg?logo=PyPI\u0026logoColor=white)](https://pypi.python.org/pypi/pasmopy)\n[![Actions Status](https://github.com/pasmopy/pasmopy/workflows/Tests/badge.svg)](https://github.com/pasmopy/pasmopy/actions)\n[![Documentation Status](https://img.shields.io/readthedocs/pasmopy/latest.svg?logo=read%20the%20docs\u0026logoColor=white\u0026\u0026label=Docs\u0026version=latest)](https://pasmopy.readthedocs.io/en/latest/?badge=latest)\n[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg?logo=apache)](https://opensource.org/licenses/Apache-2.0)\n[![Downloads](https://static.pepy.tech/badge/pasmopy)](https://pepy.tech/project/pasmopy)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pasmopy.svg?logo=Python\u0026logoColor=white)](https://pypi.python.org/pypi/pasmopy)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pasmopy/pasmopy/master.svg)](https://results.pre-commit.ci/latest/github/pasmopy/pasmopy/master)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat\u0026labelColor=ef8336)](https://pycqa.github.io/isort/)\n[![iScience Paper](https://img.shields.io/badge/DOI-10.1016%2Fj.isci.2022.103944-blue)](https://doi.org/10.1016/j.isci.2022.103944)\n\n**Pasmopy** is a scalable toolkit to identify prognostic factors for cancers based on intracellular signaling dynamics generated from personalized kinetic models. It is compatible with [biomass](https://github.com/biomass-dev/biomass) and offers the following features:\n\n- Construction of mechanistic models from text\n- Personalization of the model using transcriptome data\n- Prediction of patient outcome based on _in silico_ signaling dynamics\n- Sensitivity analysis for prediction of potential drug targets\n\n## Documentation\n\nOnline documentation is available at https://pasmopy.readthedocs.io.\n\nYou can also build the documentation locally by running the following commands:\n\n```shell\n$ cd docs\n$ make html\n```\n\nThe site will live in `_build/html/index.html`.\n\n## Installation\n\nThe latest stable release (and required dependencies) can be installed from [PyPI](https://pypi.python.org/pypi/pasmopy):\n\n```\n$ pip install pasmopy\n```\n\nPasmopy requires Python 3.8+ to run.\n\n## Example\n\n### Building mathematical models of biochemical systems from text\n\nThis example shows you how to build a simple Michaelis-Menten two-step enzyme catalysis model with Pasmopy.\n\n\u003e E + S ⇄ ES → E + P\n\n_An enzyme, E, binding to a substrate, S, to form a complex, ES, which in turn releases a product, P, regenerating the original enzyme._\n\n```python\nimport os\nfrom pasmopy import Text2Model, create_model, run_simulation\n\n# Prepare a text file describing the biochemical reactions (e.g., `michaelis_menten.txt`)\nreactions = \"\"\"\\\nE + S ⇄ ES | kf=0.003, kr=0.001 | E=100, S=50\nES → E + P | kf=0.002\n\"\"\"\n\nobservables = \"\"\"\n@obs Substrate: u[S]\n@obs E_free: u[E]\n@obs E_total: u[E] + u[ES]\n@obs Product: u[P]\n@obs Complex: u[ES]\n\"\"\"\n\nsimulation_condition = \"\"\"\n@sim tspan: [0, 100]\n\"\"\"\n\nwith open(\"michaelis_menten.txt\", mode=\"w\") as f:\n   f.writelines(reactions)\n   f.writelines(observables)\n   f.writelines(simulation_condition)\n\n# Convert the text into an executable model\ndescription = Text2Model(\"michaelis_menten.txt\")\ndescription.convert()\nassert os.path.isdir(\"michaelis_menten\")\n\n# Run simulation\nmodel = create_model(\"michaelis_menten\")\nrun_simulation(model)\n```\n\n[![michaelis_menten](https://raw.githubusercontent.com/pasmopy/pasmopy/master/docs/_static/img/michaelis_menten_sim.png)](https://pasmopy.readthedocs.io/en/latest/model_development.html#michaelis-menten-enzyme-kinetics)\n\nFor more examples, please refer to the [Documentation](https://pasmopy.readthedocs.io/en/latest/).\n\n### Personalized signaling models for cancer patient stratification\n\nUsing Pasmopy, we built a mechanistic model of ErbB receptor signaling network, trained with protein quantification data obtained from cultured cell lines, and performed _in silico_ simulation of the pathway activities on breast cancer patients using The Cancer Genome Atlas (TCGA) transcriptome datasets. The temporal activation dynamics of Akt, extracellular signal-regulated kinase (ERK), and c-Myc in each patient were able to accurately predict the difference in prognosis and sensitivity to kinase inhibitors in triple-negative breast cancer (TNBC).\n\nFor further details, please see https://pasmopy.readthedocs.io/en/latest/personalized_model.html.\n\n## References\n\n- Imoto, H., Yamashiro, S. \u0026 Okada, M. A text-based computational framework for patient -specific modeling for classification of cancers. _iScience_ **25**, 103944 (2022). https://doi.org/10.1016/j.isci.2022.103944\n\n- Imoto, H., Yamashiro, S., Murakami, K. \u0026 Okada, M. Protocol for stratification of triple-negative breast cancer patients using _in silico_ signaling dynamics. _STAR Protocols_ **3**, 101619 (2022). https://doi.org/10.1016/j.xpro.2022.101619\n\n## Author\n\n[Hiroaki Imoto](https://github.com/himoto)\n\n## License\n\n[Apache License 2.0](https://github.com/pasmopy/pasmopy/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasmopy%2Fpasmopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasmopy%2Fpasmopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasmopy%2Fpasmopy/lists"}