{"id":37079433,"url":"https://github.com/harmslab/gpseer","last_synced_at":"2026-01-14T09:36:48.862Z","repository":{"id":57435583,"uuid":"63503796","full_name":"harmslab/gpseer","owner":"harmslab","description":"A tool to predict missing data in sparsely sampled genotype-phenotype maps","archived":false,"fork":false,"pushed_at":"2023-08-18T18:46:20.000Z","size":1647,"stargazers_count":6,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-25T10:00:47.479Z","etag":null,"topics":["epistasis","evolution","genotype-phenotype-map","prediction","python","statistics"],"latest_commit_sha":null,"homepage":"https://gpseer.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harmslab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-07-16T21:57:21.000Z","updated_at":"2024-10-16T17:56:40.000Z","dependencies_parsed_at":"2023-10-03T04:32:36.511Z","dependency_job_id":null,"html_url":"https://github.com/harmslab/gpseer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/harmslab/gpseer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmslab%2Fgpseer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmslab%2Fgpseer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmslab%2Fgpseer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmslab%2Fgpseer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harmslab","download_url":"https://codeload.github.com/harmslab/gpseer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harmslab%2Fgpseer/sbom","scorecard":{"id":455996,"data":{"date":"2025-08-11","repo":{"name":"github.com/harmslab/gpseer","commit":"4423d09f0a0b2b39386bc2ee9fcd3fb679d77f8f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.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":"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":"Code-Review","score":1,"reason":"Found 3/20 approved changesets -- score normalized to 1","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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publishing.yml:1","Warn: no topLevel permission defined: .github/workflows/testing.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":"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":"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/publishing.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/harmslab/gpseer/publishing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publishing.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/harmslab/gpseer/publishing.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publishing.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/harmslab/gpseer/publishing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/harmslab/gpseer/testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/harmslab/gpseer/testing.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/publishing.yml:22","Warn: pipCommand not pinned by hash: .github/workflows/publishing.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/publishing.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/testing.yml:29","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   6 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":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"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":"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":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"}},{"name":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 14 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-19T09:41:37.204Z","repository_id":57435583,"created_at":"2025-08-19T09:41:37.204Z","updated_at":"2025-08-19T09:41:37.204Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"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":["epistasis","evolution","genotype-phenotype-map","prediction","python","statistics"],"created_at":"2026-01-14T09:36:48.292Z","updated_at":"2026-01-14T09:36:48.856Z","avatar_url":"https://github.com/harmslab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GPSeer\n*Simple software for inferring missing data in sparsely measured genotype-phenotype maps*\n\n[![GPSeer tests](https://github.com/harmslab/gpseer/workflows/GPSeer%20tests/badge.svg)](https://github.com/harmslab/gpseer/actions?query=workflow%3A%22GPSeer+tests%22)\n\n## Basic Usage\n\nInstall gpseer using pip:\n```bash\npip install gpseer\n```\n\nTo use as a command line, call `gpseer` on an input `.csv` file containing genotype-phenotype data.\n\nThe [API Demo.ipynb](https://nbviewer.jupyter.org/github/harmslab/gpseer/blob/master/examples/API%20Demo.ipynb)\ndemonstrates how to use GPSeer in a Jupyter notebook.\n\n+ [Documentation](https://gpseer.readthedocs.io) \n+ [Tutorial](https://gpseer.readthedocs.io/en/latest/tutorial.html)\n\n\n\n### Downloading the example\n\nTo get started, use GPSeer's `fetch-example` command to download an example from its Github repo.\n\nDownload the gpseer example and explore the example input data:\n```\n# fetch data from Github page.\n\u003e gpseer fetch-example\n\n[GPSeer] Downloading files to /examples...\n[GPSeer] └──\u003e: 100%|██████████████████| 3/3 [00:00\u003c00:00,  9.16it/s]\n[GPSeer] └──\u003e Done!\n\n# Change into the example directory and checkout the files that were downloaded\n\u003e cd examples/\n\u003e ls\n\nAPI Demo.ipynb\nexample-full.csv\nexample-test.csv\nexample-train.csv\nGenerate Dataset.ipynb\ngenotypes.txt\npfcrt-raw-data.csv\n```\n\n### Predicting missing data using ML model.\n\nEstimate the maximum likelihood additive model on the training set and predict all missing genotypes. The predictions will be written to a file named `\"example-train_predictions.csv\"`.\n\n```\n\u003e gpseer estimate-ml example-train.csv\n\n[GPSeer] Reading data from example-train.csv...\n[GPSeer] └──\u003e Done reading data.\n[GPSeer] Constructing a model...\n[GPSeer] └──\u003e Done constructing model.\n[GPSeer] Fitting data...\n[GPSeer] └──\u003e Done fitting data.\n[GPSeer] Predicting missing data...\n[GPSeer] └──\u003e Done predicting.\n[GPSeer] Calculating fit statistics...\n[GPSeer]\n\nFit statistics:\n---------------\n\n              parameter     value\n0         num_genotypes       128\n1  num_unique_mutations         8\n2   explained_variation  0.985186\n3        num_parameters         9\n4   num_obs_to_converge   2.82714\n5             threshold      None\n6          spline_order      None\n7     spline_smoothness      None\n8       epistasis_order         1\n\n\n[GPSeer]\n\nConvergence:\n------------\n\n  mutation  num_obs  num_obs_above  fold_target  converged\n0      F0K       64             64    22.637735       True\n1      S1Y       69             69    24.406308       True\n2      Q2T       63             63    22.284020       True\n3      R3V       70             70    24.760023       True\n4      N4D       62             62    21.930306       True\n5      A5C       69             69    24.406308       True\n6      C6D       65             65    22.991450       True\n7      C7A       64             64    22.637735       True\n\n\n[GPSeer] └──\u003e Done.\n[GPSeer] Writing phenotypes to example-train_predictions.csv...\n[GPSeer] └──\u003e Done writing predictions!\n[GPSeer] Writing plots...\n[GPSeer] Writing example-train_correlation-plot.pdf...\n[GPSeer] Writing example-train_phenotype-histograms.pdf...\n[GPSeer] └──\u003e Done plotting!\n[GPSeer] GPSeer finished!\n```\n\n### Compute the predictive power of the model by cross-validation\n\nEstimate how well your model is predicting data using the \"cross-validate\"\nsubcommand. Try the example below where we generate 100 subsets from the data\nand compute your prediction scores.\n\n```\n\u003e gpseer cross-fit example-test.csv\n\n[GPSeer] Reading data from example-train.csv...\n[GPSeer] └──\u003e Done reading data.\n[GPSeer] Fitting all data data...\n[GPSeer] └──\u003e Done fitting data.\n[GPSeer] Sampling the data...\n[GPSeer] └──\u003e: 100%|████████████████████| 100/100 [00:03\u003c00:00, 25.90it/s]\n[GPSeer] └──\u003e Done sampling data.\n[GPSeer] Plotting example-train_cross-validation-plot.pdf...\n[GPSeer] └──\u003e Done writing data.\n[GPSeer] Writing scores to example-train_cross-validation-scores.csv...\n[GPSeer] └──\u003e Done writing data\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmslab%2Fgpseer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharmslab%2Fgpseer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmslab%2Fgpseer/lists"}