{"id":23757579,"url":"https://github.com/broadinstitute/adapt","last_synced_at":"2025-10-10T15:09:16.556Z","repository":{"id":38835323,"uuid":"101921028","full_name":"broadinstitute/adapt","owner":"broadinstitute","description":"A package for designing activity-informed nucleic acid diagnostics for viruses.","archived":false,"fork":false,"pushed_at":"2023-02-14T18:14:17.000Z","size":4315,"stargazers_count":33,"open_issues_count":4,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-02T10:35:48.259Z","etag":null,"topics":["bioinformatics","diagnostics","dna","genomics","science","viral"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/broadinstitute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"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}},"created_at":"2017-08-30T19:31:58.000Z","updated_at":"2025-08-08T02:41:30.000Z","dependencies_parsed_at":"2025-04-11T18:14:24.190Z","dependency_job_id":"4072e6cb-0386-4874-9074-11a0fd69d58d","html_url":"https://github.com/broadinstitute/adapt","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/broadinstitute/adapt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broadinstitute%2Fadapt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broadinstitute%2Fadapt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broadinstitute%2Fadapt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broadinstitute%2Fadapt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/broadinstitute","download_url":"https://codeload.github.com/broadinstitute/adapt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/broadinstitute%2Fadapt/sbom","scorecard":{"id":254242,"data":{"date":"2025-08-11","repo":{"name":"github.com/broadinstitute/adapt","commit":"b8464e7bb2dda44cb9a24325fef9ce0c93951c5e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"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 1/14 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":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":["Warn: no topLevel permission defined: .github/workflows/build-test.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/pypi-publish.yml:16","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":"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":"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: MIT License: 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":"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":"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-test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/broadinstitute/adapt/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/broadinstitute/adapt/build-test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-test.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/broadinstitute/adapt/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/broadinstitute/adapt/pypi-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi-publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/broadinstitute/adapt/pypi-publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.8.5-slim to python:3.8.5-slim@sha256:502cd057453744145010eceb5a4af1e4f04ebed54f6e1e8d23d29ebe2afdbe6d","Warn: containerImage not pinned by hash: cloud.Dockerfile:1: pin your Docker image by updating python:3.8.5-slim to python:3.8.5-slim@sha256:502cd057453744145010eceb5a4af1e4f04ebed54f6e1e8d23d29ebe2afdbe6d","Warn: pipCommand not pinned by hash: Dockerfile:36","Warn: pipCommand not pinned by hash: cloud.Dockerfile:36","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/build-test.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/pypi-publish.yml:32","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned","Info:   0 out of  10 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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 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"}},{"name":"Vulnerabilities","score":0,"reason":"395 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-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: GHSA-23hm-7w47-xw72","Warn: Project is vulnerable to: GHSA-2475-53vw-vp25","Warn: Project is vulnerable to: GHSA-247x-2f9f-5wp7","Warn: Project is vulnerable to: GHSA-24x4-6qmh-88qg","Warn: Project is vulnerable to: PYSEC-2021-227 / GHSA-24x6-8c7m-hv3f","Warn: Project is vulnerable to: PYSEC-2021-223 / GHSA-26j7-6w8w-7922","Warn: Project is vulnerable to: PYSEC-2021-295 / GHSA-278g-rq84-9hmg","Warn: Project is vulnerable to: PYSEC-2021-266 / GHSA-27j5-4p9v-pp67","Warn: Project is vulnerable to: PYSEC-2021-313 / GHSA-27qf-jwm8-g7f3","Warn: Project is vulnerable to: GHSA-27rc-728f-x5w2","Warn: Project is vulnerable to: PYSEC-2021-160 / GHSA-2cpx-427x-q2c6","Warn: Project is vulnerable to: PYSEC-2021-173 / GHSA-2gfx-95x2-5v3x","Warn: Project is vulnerable to: PYSEC-2021-391 / GHSA-2p25-55c9-h58q","Warn: Project is vulnerable to: GHSA-2p9q-h29j-3f5v","Warn: Project is vulnerable to: GHSA-2r2f-g8mw-9gvr","Warn: Project is vulnerable to: PYSEC-2021-276 / GHSA-2r8p-fg3c-wcj4","Warn: Project is vulnerable to: GHSA-2vv3-56qg-g2cf","Warn: Project is vulnerable to: PYSEC-2021-290 / GHSA-2wmv-37vq-52g5","Warn: Project is vulnerable to: PYSEC-2021-249 / GHSA-2xgj-xhgf-ggjv","Warn: Project is vulnerable to: GHSA-34f9-hjfq-rr8j","Warn: Project is vulnerable to: GHSA-368v-7v32-52fx","Warn: Project is vulnerable to: PYSEC-2021-199 / GHSA-36vm-xw34-x4pj","Warn: Project is vulnerable to: PYSEC-2021-418 / GHSA-374m-jm66-3vj8","Warn: Project is vulnerable to: GHSA-37jf-mjv6-xfqw","Warn: Project is vulnerable to: PYSEC-2021-170 / GHSA-393f-2jr3-cp69","Warn: Project is vulnerable to: GHSA-397c-5g2j-qxpv","Warn: Project is vulnerable to: PYSEC-2021-408 / GHSA-3ff2-r28g-w7h9","Warn: Project is vulnerable to: PYSEC-2021-206 / GHSA-3h8m-483j-7xxm","Warn: Project is vulnerable to: PYSEC-2021-312 / GHSA-3hxh-8cp2-g4hg","Warn: Project is vulnerable to: GHSA-3mw4-6rj6-74g5","Warn: Project is vulnerable to: PYSEC-2021-231 / GHSA-3qgw-p4fm-x7gf","Warn: Project is vulnerable to: PYSEC-2021-168 / GHSA-3qxp-qjq7-w4hf","Warn: Project is vulnerable to: PYSEC-2021-420 / GHSA-3rcw-9p9x-582v","Warn: Project is vulnerable to: PYSEC-2021-226 / GHSA-3w67-q784-6w7c","Warn: Project is vulnerable to: PYSEC-2021-149 / GHSA-4278-2v5v-65r4","Warn: Project is vulnerable to: GHSA-428x-9xc2-m8mj","Warn: Project is vulnerable to: GHSA-43jf-985q-588j","Warn: Project is vulnerable to: GHSA-43q8-3fv7-pr5x","Warn: Project is vulnerable to: GHSA-44qp-9wwf-734r","Warn: Project is vulnerable to: PYSEC-2021-150 / GHSA-452g-f7fp-9jf7","Warn: Project is vulnerable to: GHSA-49rq-hwc3-x77w","Warn: Project is vulnerable to: PYSEC-2021-398 / GHSA-49rx-x2rw-pc6f","Warn: Project is vulnerable to: PYSEC-2021-304 / GHSA-4c4g-crqm-xrxw","Warn: Project is vulnerable to: PYSEC-2021-411 / GHSA-4f99-p9c2-3j8x","Warn: Project is vulnerable to: PYSEC-2021-184 / GHSA-4fg4-p75j-w5xj","Warn: Project is vulnerable to: PYSEC-2021-179 / GHSA-4hrh-9vmp-2jgg","Warn: Project is vulnerable to: GHSA-4hvf-hxvg-f67v","Warn: Project is vulnerable to: PYSEC-2021-253 / GHSA-4hvv-7x94-7vq8","Warn: Project is vulnerable to: GHSA-4j82-5ccr-4r8v","Warn: Project is vulnerable to: PYSEC-2021-205 / GHSA-4p4p-www8-8fv9","Warn: Project is vulnerable to: GHSA-4pc4-m9mj-v2r9","Warn: Project is vulnerable to: GHSA-4v5p-v5h9-6xjx","Warn: Project is vulnerable to: PYSEC-2021-163 / GHSA-4vf2-4xcg-65cx","Warn: Project is vulnerable to: PYSEC-2021-233 / GHSA-4vrf-ff7v-hpgr","Warn: Project is vulnerable to: GHSA-4w68-4x85-mjj9","Warn: Project is vulnerable to: PYSEC-2021-278 / GHSA-4xfp-4pfp-89wg","Warn: Project is vulnerable to: PYSEC-2021-207 / GHSA-545v-42p7-98fq","Warn: Project is vulnerable to: GHSA-54ch-gjq5-4976","Warn: Project is vulnerable to: GHSA-54pp-c6pp-7fpx","Warn: Project is vulnerable to: GHSA-558h-mq8x-7q9g","Warn: Project is vulnerable to: PYSEC-2021-400 / GHSA-57wx-m983-2f88","Warn: Project is vulnerable to: GHSA-5889-7v45-q28m","Warn: Project is vulnerable to: PYSEC-2021-196 / GHSA-59q2-x2qc-4c97","Warn: Project is vulnerable to: PYSEC-2021-409 / GHSA-5crj-c72x-m7gq","Warn: Project is vulnerable to: GHSA-5f2r-qp73-37mr","Warn: Project is vulnerable to: PYSEC-2021-209 / GHSA-5gqf-456p-4836","Warn: Project is vulnerable to: PYSEC-2021-294 / GHSA-5hj3-vjjf-f5m7","Warn: Project is vulnerable to: PYSEC-2021-392 / GHSA-5hx2-qx8j-qjqm","Warn: Project is vulnerable to: GHSA-5qw5-89mw-wcg2","Warn: Project is vulnerable to: GHSA-5v77-j66x-4c4g","Warn: Project is vulnerable to: GHSA-5w96-866f-6rm8","Warn: Project is vulnerable to: GHSA-5wpj-c6f7-24x8","Warn: Project is vulnerable to: PYSEC-2021-279 / GHSA-5xwc-mrhx-5g3m","Warn: Project is vulnerable to: GHSA-627q-g293-49q7","Warn: Project is vulnerable to: PYSEC-2021-155 / GHSA-62gx-355r-9fhg","Warn: Project is vulnerable to: GHSA-6445-fm66-fvq2","Warn: Project is vulnerable to: GHSA-647v-r7qq-24fh","Warn: Project is vulnerable to: GHSA-64jg-wjww-7c5w","Warn: Project is vulnerable to: GHSA-66vq-54fq-6jvv","Warn: Project is vulnerable to: GHSA-67pf-62xr-q35m","Warn: Project is vulnerable to: GHSA-689c-r7h2-fv9v","Warn: Project is vulnerable to: GHSA-68v3-g9cm-rmm6","Warn: Project is vulnerable to: PYSEC-2021-165 / GHSA-6f84-42vf-ppwp","Warn: Project is vulnerable to: PYSEC-2021-215 / GHSA-6f89-8j54-29xf","Warn: Project is vulnerable to: GHSA-6gmv-pjp9-p8w8","Warn: Project is vulnerable to: PYSEC-2021-271 / GHSA-6gv8-p3vj-pxvr","Warn: Project is vulnerable to: GHSA-6hg6-5c2q-7rcr","Warn: Project is vulnerable to: PYSEC-2021-401 / GHSA-6hpv-v2rx-c5g6","Warn: Project is vulnerable to: PYSEC-2021-171 / GHSA-6j9c-grc6-5m6g","Warn: Project is vulnerable to: PYSEC-2021-280 / GHSA-6p5r-g9mq-ggh2","Warn: Project is vulnerable to: PYSEC-2021-212 / GHSA-6qgm-fv6v-rfpv","Warn: Project is vulnerable to: GHSA-6wfh-89q8-44jq","Warn: Project is vulnerable to: GHSA-6x99-gv2v-q76v","Warn: Project is vulnerable to: GHSA-75c9-jrh4-79mc","Warn: Project is vulnerable to: PYSEC-2021-201 / GHSA-75f6-78jr-4656","Warn: Project is vulnerable to: GHSA-762h-vpvw-3rcx","Warn: Project is vulnerable to: PYSEC-2021-156 / GHSA-772j-h9xw-ffp5","Warn: Project is vulnerable to: PYSEC-2021-154 / GHSA-772p-x54p-hjrv","Warn: Project is vulnerable to: GHSA-77gp-3h4r-6428","Warn: Project is vulnerable to: PYSEC-2021-397 / GHSA-786j-5qwq-r36x","Warn: Project is vulnerable to: PYSEC-2021-216 / GHSA-79fv-9865-4qcv","Warn: Project is vulnerable to: GHSA-79h2-q768-fpxr","Warn: Project is vulnerable to: PYSEC-2021-213 / GHSA-7cqx-92hp-x6wh","Warn: Project is vulnerable to: PYSEC-2021-277 / GHSA-7fvx-3jfc-2cpc","Warn: Project is vulnerable to: PYSEC-2021-296 / GHSA-7ghq-fvr3-pj2x","Warn: Project is vulnerable to: GHSA-7j3m-8g3c-9qqq","Warn: Project is vulnerable to: GHSA-7jvm-xxmr-v5cw","Warn: Project is vulnerable to: PYSEC-2021-396 / GHSA-7pxj-m4jf-r6h2","Warn: Project is vulnerable to: PYSEC-2021-417 / GHSA-7r94-xv9v-63jw","Warn: Project is vulnerable to: PYSEC-2021-399 / GHSA-7v94-64hj-m82h","Warn: Project is vulnerable to: GHSA-7x4v-9gxg-9hwj","Warn: Project is vulnerable to: PYSEC-2021-303 / GHSA-7xwj-5r4v-429p","Warn: Project is vulnerable to: GHSA-828c-5j5q-vrjq","Warn: Project is vulnerable to: PYSEC-2021-211 / GHSA-828x-qc2p-wprq","Warn: Project is vulnerable to: GHSA-84jm-4cf3-9jfm","Warn: Project is vulnerable to: PYSEC-2021-153 / GHSA-84mw-34w6-2q43","Warn: Project is vulnerable to: GHSA-87v6-crgm-2gfj","Warn: Project is vulnerable to: PYSEC-2021-174 / GHSA-8c89-2vwr-chcq","Warn: Project is vulnerable to: GHSA-8cxv-76p7-jxwr","Warn: Project is vulnerable to: GHSA-8fvv-46hw-vpg3","Warn: Project is vulnerable to: PYSEC-2021-197 / GHSA-8gv3-57p6-g35r","Warn: Project is vulnerable to: PYSEC-2021-151 / GHSA-8h46-5m9h-7553","Warn: Project is vulnerable to: GHSA-8jj7-5vxc-pg2q","Warn: Project is vulnerable to: PYSEC-2021-251 / GHSA-8pmx-p244-g88h","Warn: Project is vulnerable to: GHSA-8r7c-3cm2-3h8f","Warn: Project is vulnerable to: GHSA-8rcj-c8pj-v3m3","Warn: Project is vulnerable to: PYSEC-2021-241 / GHSA-8rm6-75mf-7r7r","Warn: Project is vulnerable to: GHSA-8w5g-3wcv-9g2j","Warn: Project is vulnerable to: GHSA-8wwm-6264-x792","Warn: Project is vulnerable to: GHSA-93vr-9q9m-pj8p","Warn: Project is vulnerable to: GHSA-94mm-g2mv-8p7r","Warn: Project is vulnerable to: PYSEC-2021-262 / GHSA-95xm-g58g-3p88","Warn: Project is vulnerable to: PYSEC-2021-292 / GHSA-9697-98pf-4rw7","Warn: Project is vulnerable to: GHSA-97p7-w86h-vcf9","Warn: Project is vulnerable to: PYSEC-2021-236 / GHSA-97wf-p777-86jq","Warn: Project is vulnerable to: GHSA-98j8-c9q4-r38g","Warn: Project is vulnerable to: GHSA-98p5-x8x4-c9m5","Warn: Project is vulnerable to: GHSA-9942-r22v-78cp","Warn: Project is vulnerable to: GHSA-9c78-vcq7-7vxq","Warn: Project is vulnerable to: PYSEC-2021-238 / GHSA-9c84-4hx6-xmm4","Warn: Project is vulnerable to: PYSEC-2021-297 / GHSA-9c8h-2mv3-49ww","Warn: Project is vulnerable to: PYSEC-2021-263 / GHSA-9c8h-vvrj-w2p8","Warn: Project is vulnerable to: GHSA-9cr2-8pwr-fhfq","Warn: Project is vulnerable to: PYSEC-2021-410 / GHSA-9crf-c6qr-r273","Warn: Project is vulnerable to: GHSA-9fpg-838v-wpv7","Warn: Project is vulnerable to: GHSA-9gwq-6cwj-47h3","Warn: Project is vulnerable to: GHSA-9j4v-pp28-mxv7","Warn: Project is vulnerable to: GHSA-9p77-mmrw-69c7","Warn: Project is vulnerable to: GHSA-9px9-73fg-3fqp","Warn: Project is vulnerable to: PYSEC-2021-248 / GHSA-9rpc-5v9q-5r7f","Warn: Project is vulnerable to: GHSA-9v8w-xmr4-wgxp","Warn: Project is vulnerable to: PYSEC-2021-210 / GHSA-9vpm-rcf4-9wqw","Warn: Project is vulnerable to: GHSA-9vqj-64pv-w55c","Warn: Project is vulnerable to: PYSEC-2021-267 / GHSA-9w2p-5mgw-p94c","Warn: Project is vulnerable to: PYSEC-2021-220 / GHSA-9xh4-23q4-v6wr","Warn: Project is vulnerable to: PYSEC-2021-219 / GHSA-c45w-2wxr-pp53","Warn: Project is vulnerable to: PYSEC-2021-307 / GHSA-c545-c4f9-rf6v","Warn: Project is vulnerable to: GHSA-c582-c96p-r5cq","Warn: Project is vulnerable to: PYSEC-2021-269 / GHSA-c5x2-p679-95wc","Warn: Project is vulnerable to: GHSA-c6fh-56w7-fvjw","Warn: Project is vulnerable to: GHSA-c94w-c95p-phf8","Warn: Project is vulnerable to: PYSEC-2021-159 / GHSA-c968-pq7h-7fxv","Warn: Project is vulnerable to: PYSEC-2021-259 / GHSA-c9qf-r67m-p7cg","Warn: Project is vulnerable to: PYSEC-2021-302 / GHSA-cfpj-3q4c-jhvr","Warn: Project is vulnerable to: PYSEC-2021-230 / GHSA-cfx7-2xpc-8w4h","Warn: Project is vulnerable to: GHSA-cg88-rpvp-cjv5","Warn: Project is vulnerable to: PYSEC-2021-257 / GHSA-cgfm-62j4-v4rf","Warn: Project is vulnerable to: PYSEC-2021-264 / GHSA-ch4f-829c-v5pw","Warn: Project is vulnerable to: PYSEC-2021-246 / GHSA-cjc7-49v2-jp64","Warn: Project is vulnerable to: PYSEC-2021-282 / GHSA-cm5x-837x-jf3c","Warn: Project is vulnerable to: PYSEC-2021-414 / GHSA-cpf4-wx82-gxp6","Warn: Project is vulnerable to: PYSEC-2021-842 / GHSA-cq76-mxrc-vchh","Warn: Project is vulnerable to: PYSEC-2021-413 / GHSA-cqv6-3phm-hcwx","Warn: Project is vulnerable to: GHSA-cqvq-fvhr-v6hc","Warn: Project is vulnerable to: PYSEC-2021-240 / GHSA-crch-j389-5f84","Warn: Project is vulnerable to: GHSA-cv2p-32v3-vhwq","Warn: Project is vulnerable to: GHSA-cwpm-f78v-7m5c","Warn: Project is vulnerable to: PYSEC-2021-228 / GHSA-cwv3-863g-39vx","Warn: Project is vulnerable to: GHSA-f2vv-v9cg-qhh7","Warn: Project is vulnerable to: GHSA-f2w8-jw48-fr7j","Warn: Project is vulnerable to: GHSA-f49c-87jh-g47q","Warn: Project is vulnerable to: GHSA-f4rr-5m7v-wxcw","Warn: Project is vulnerable to: GHSA-f4w6-h4f5-wx45","Warn: Project is vulnerable to: PYSEC-2021-415 / GHSA-f54p-f6jp-4rhr","Warn: Project is vulnerable to: PYSEC-2021-284 / GHSA-f5cx-5wr3-5qrc","Warn: Project is vulnerable to: GHSA-f637-vh3r-vfh2","Warn: Project is vulnerable to: PYSEC-2021-187 / GHSA-f78g-q7r4-9wcv","Warn: Project is vulnerable to: GHSA-f7r5-q7cx-h668","Warn: Project is vulnerable to: PYSEC-2021-272 / GHSA-f8h4-7rgh-q2gm","Warn: Project is vulnerable to: PYSEC-2021-265 / GHSA-fcwc-p4fc-c5cc","Warn: Project is vulnerable to: GHSA-ffjm-4qwc-7cmf","Warn: Project is vulnerable to: GHSA-fhfc-2q7x-929f","Warn: Project is vulnerable to: GHSA-fpcp-9h7m-ffpx","Warn: Project is vulnerable to: PYSEC-2021-180 / GHSA-fphq-gw9m-ghrv","Warn: Project is vulnerable to: GHSA-fq6p-6334-8gr4","Warn: Project is vulnerable to: GHSA-fq86-3f29-px2c","Warn: Project is vulnerable to: GHSA-fqm2-gh8w-gr68","Warn: Project is vulnerable to: GHSA-fqxc-pvf8-2w9v","Warn: Project is vulnerable to: PYSEC-2021-404 / GHSA-fr77-rrx3-cp7g","Warn: Project is vulnerable to: GHSA-frqp-wp83-qggv","Warn: Project is vulnerable to: GHSA-fv25-wrff-wf86","Warn: Project is vulnerable to: GHSA-fv43-93gv-vm8f","Warn: Project is vulnerable to: GHSA-fx5c-h9f6-rv7c","Warn: Project is vulnerable to: GHSA-fxgc-95xx-grvq","Warn: Project is vulnerable to: PYSEC-2021-193 / GHSA-fxqh-cfjm-fp93","Warn: Project is vulnerable to: PYSEC-2021-285 / GHSA-g25h-jr74-qp5j","Warn: Project is vulnerable to: GHSA-g35r-369w-3fqp","Warn: Project is vulnerable to: GHSA-g468-qj8g-vcjc","Warn: Project is vulnerable to: PYSEC-2021-176 / GHSA-g4h2-gqm3-c9wq","Warn: Project is vulnerable to: PYSEC-2021-301 / GHSA-g8wg-cjwc-xhhp","Warn: Project is vulnerable to: GHSA-g9fm-r5mm-rf9f","Warn: Project is vulnerable to: GHSA-g9h5-vr8m-x2h4","Warn: Project is vulnerable to: GHSA-gcvh-66ff-4mwm","Warn: Project is vulnerable to: GHSA-gf2j-f278-xh4v","Warn: Project is vulnerable to: PYSEC-2021-283 / GHSA-gf88-j2mg-cc82","Warn: Project is vulnerable to: GHSA-gf97-q72m-7579","Warn: Project is vulnerable to: PYSEC-2021-261 / GHSA-gh6x-4whr-2qv4","Warn: Project is vulnerable to: PYSEC-2021-393 / GHSA-gh8h-7j2j-qv4f","Warn: Project is vulnerable to: GHSA-gjh7-xx4r-x345","Warn: Project is vulnerable to: GHSA-gjqc-q9g6-q2j3","Warn: Project is vulnerable to: GHSA-gq2j-cr96-gvqx","Warn: Project is vulnerable to: PYSEC-2021-244 / GHSA-gv26-jpj9-c8gq","Warn: Project is vulnerable to: PYSEC-2021-198 / GHSA-gvm4-h8j3-rjrq","Warn: Project is vulnerable to: GHSA-gw97-ff7c-9v96","Warn: Project is vulnerable to: GHSA-h246-cgh4-7475","Warn: Project is vulnerable to: GHSA-h2wq-prv9-2f56","Warn: Project is vulnerable to: GHSA-h48f-q7rw-hvr7","Warn: Project is vulnerable to: PYSEC-2021-243 / GHSA-h4pc-gx2w-f2xv","Warn: Project is vulnerable to: GHSA-h5g4-ppwx-48q2","Warn: Project is vulnerable to: GHSA-h5vq-gw2c-pq47","Warn: Project is vulnerable to: PYSEC-2021-405 / GHSA-h67m-xg8f-fxcf","Warn: Project is vulnerable to: GHSA-h6gw-r52c-724r","Warn: Project is vulnerable to: PYSEC-2021-268 / GHSA-h6jh-7gv5-28vg","Warn: Project is vulnerable to: GHSA-h6q3-vv32-2cq5","Warn: Project is vulnerable to: GHSA-h7ff-cfc9-wmmh","Warn: Project is vulnerable to: PYSEC-2021-190 / GHSA-h9px-9vqg-222h","Warn: Project is vulnerable to: PYSEC-2021-152 / GHSA-hc6c-75p4-hmq4","Warn: Project is vulnerable to: PYSEC-2021-182 / GHSA-hmg3-c7xj-6qwm","Warn: Project is vulnerable to: PYSEC-2021-258 / GHSA-hp4c-x6r7-6555","Warn: Project is vulnerable to: PYSEC-2021-273 / GHSA-hpv4-7p9c-mvfr","Warn: Project is vulnerable to: GHSA-hq7g-wwwp-q46h","Warn: Project is vulnerable to: PYSEC-2021-158 / GHSA-hr84-fqvp-48mm","Warn: Project is vulnerable to: GHSA-hrg5-737c-2p56","Warn: Project is vulnerable to: PYSEC-2021-260 / GHSA-hwr7-8gxx-fj5p","Warn: Project is vulnerable to: GHSA-hx9q-2mx4-m4pg","Warn: Project is vulnerable to: GHSA-j3mj-fhpq-qqjj","Warn: Project is vulnerable to: GHSA-j43h-pgmg-5hjq","Warn: Project is vulnerable to: PYSEC-2021-169 / GHSA-j47f-4232-hvv8","Warn: Project is vulnerable to: GHSA-j5w9-hmfh-4cr6","Warn: Project is vulnerable to: PYSEC-2021-224 / GHSA-j7rm-8ww4-xx2g","Warn: Project is vulnerable to: PYSEC-2021-394 / GHSA-j86v-p27c-73fm","Warn: Project is vulnerable to: PYSEC-2021-419 / GHSA-j8c8-67vp-6mx7","Warn: Project is vulnerable to: PYSEC-2021-175 / GHSA-j8qc-5fqr-52fp","Warn: Project is vulnerable to: PYSEC-2021-237 / GHSA-j8qh-3xrq-c825","Warn: Project is vulnerable to: PYSEC-2021-242 / GHSA-jf7h-7m85-w2v2","Warn: Project is vulnerable to: PYSEC-2021-166 / GHSA-jfp7-4j67-8r3q","Warn: Project is vulnerable to: PYSEC-2021-189 / GHSA-jhq9-wm9m-cf89","Warn: Project is vulnerable to: GHSA-jjm6-4vf7-cjh4","Warn: Project is vulnerable to: PYSEC-2021-229 / GHSA-jjr8-m8g8-p6wv","Warn: Project is vulnerable to: GHSA-jq6x-99hj-q636","Warn: Project is vulnerable to: GHSA-jqm7-m5q7-3hm5","Warn: Project is vulnerable to: GHSA-jvhc-5hhr-w3v5","Warn: Project is vulnerable to: PYSEC-2021-309 / GHSA-jwf9-w5xm-f437","Warn: Project is vulnerable to: PYSEC-2021-402 / GHSA-m342-ff57-4jcc","Warn: Project is vulnerable to: PYSEC-2021-183 / GHSA-m34j-p8rj-wjxq","Warn: Project is vulnerable to: PYSEC-2021-172 / GHSA-m3f9-w3p3-p669","Warn: Project is vulnerable to: GHSA-m4hf-j54p-p353","Warn: Project is vulnerable to: PYSEC-2021-389 / GHSA-m539-j985-hcr8","Warn: Project is vulnerable to: GHSA-m6cv-4fmf-66xf","Warn: Project is vulnerable to: GHSA-m6vp-8q9j-whx4","Warn: Project is vulnerable to: PYSEC-2021-274 / GHSA-m7fm-4jfh-jrg6","Warn: Project is vulnerable to: GHSA-mg66-qvc5-rm93","Warn: Project is vulnerable to: GHSA-mgmh-g2v6-mqw5","Warn: Project is vulnerable to: GHSA-mh3m-62v7-68xg","Warn: Project is vulnerable to: PYSEC-2021-254 / GHSA-mmq6-q8r3-48fm","Warn: Project is vulnerable to: PYSEC-2021-247 / GHSA-mq5c-prh3-3f3h","Warn: Project is vulnerable to: PYSEC-2021-195 / GHSA-mqh2-9wrp-vx84","Warn: Project is vulnerable to: GHSA-mv77-9g28-cwg3","Warn: Project is vulnerable to: PYSEC-2021-222 / GHSA-mv78-g7wq-mhp4","Warn: Project is vulnerable to: GHSA-mv8m-8x97-937q","Warn: Project is vulnerable to: GHSA-mw6j-hh29-h379","Warn: Project is vulnerable to: GHSA-p2xf-8hgm-hpw5","Warn: Project is vulnerable to: PYSEC-2021-185 / GHSA-p45v-v4pw-77jr","Warn: Project is vulnerable to: GHSA-p7hr-f446-x6qf","Warn: Project is vulnerable to: GHSA-p9rc-rmr5-529j","Warn: Project is vulnerable to: GHSA-pf36-r9c6-h97j","Warn: Project is vulnerable to: GHSA-pfjj-m3jj-9jc9","Warn: Project is vulnerable to: PYSEC-2021-843 / GHSA-pgcq-h79j-2f69","Warn: Project is vulnerable to: PYSEC-2021-200 / GHSA-ph87-fvjr-v33w","Warn: Project is vulnerable to: PYSEC-2021-235 / GHSA-pmpr-55fj-r229","Warn: Project is vulnerable to: GHSA-pqhm-4wvf-2jg8","Warn: Project is vulnerable to: GHSA-pqrv-8r2f-7278","Warn: Project is vulnerable to: PYSEC-2021-390 / GHSA-prcg-wp5q-rv7p","Warn: Project is vulnerable to: PYSEC-2021-203 / GHSA-pvrc-hg3f-58r6","Warn: Project is vulnerable to: GHSA-pxrw-j2fv-hx3h","Warn: Project is vulnerable to: GHSA-q2c3-jpmc-gfjx","Warn: Project is vulnerable to: PYSEC-2021-281 / GHSA-q3g3-h9r4-prrc","Warn: Project is vulnerable to: GHSA-q5jv-m6qw-5g37","Warn: Project is vulnerable to: PYSEC-2021-306 / GHSA-q7f7-544h-67h9","Warn: Project is vulnerable to: GHSA-q85f-69q7-55h2","Warn: Project is vulnerable to: PYSEC-2021-299 / GHSA-qfpc-5pjr-mh26","Warn: Project is vulnerable to: PYSEC-2021-191 / GHSA-qg48-85hg-mqc5","Warn: Project is vulnerable to: GHSA-qhw4-wwr7-gjc5","Warn: Project is vulnerable to: GHSA-qj5r-f9mv-rffh","Warn: Project is vulnerable to: PYSEC-2021-275 / GHSA-qjj8-32p7-h289","Warn: Project is vulnerable to: GHSA-qjqc-vqcf-5qvj","Warn: Project is vulnerable to: PYSEC-2021-293 / GHSA-qr82-2c78-4m8h","Warn: Project is vulnerable to: PYSEC-2021-252 / GHSA-qw5h-7f53-xrp6","Warn: Project is vulnerable to: GHSA-qx3f-p745-w4hr","Warn: Project is vulnerable to: GHSA-qxpx-j395-pw36","Warn: Project is vulnerable to: GHSA-r26c-679w-mrjm","Warn: Project is vulnerable to: PYSEC-2021-192 / GHSA-r35g-4525-29fq","Warn: Project is vulnerable to: PYSEC-2021-286 / GHSA-r4c4-5fpq-56wg","Warn: Project is vulnerable to: PYSEC-2021-161 / GHSA-r4pj-74mg-8868","Warn: Project is vulnerable to: PYSEC-2021-300 / GHSA-r6jx-9g48-2r5r","Warn: Project is vulnerable to: PYSEC-2021-202 / GHSA-r6pg-pjwc-j585","Warn: Project is vulnerable to: GHSA-rc9w-5c64-9vqq","Warn: Project is vulnerable to: GHSA-rcf8-g8jv-vg6p","Warn: Project is vulnerable to: PYSEC-2021-239 / GHSA-rf3h-xgv5-2q39","Warn: Project is vulnerable to: PYSEC-2021-416 / GHSA-rg3m-hqc5-344v","Warn: Project is vulnerable to: PYSEC-2021-245 / GHSA-rgvq-pcvf-hx75","Warn: Project is vulnerable to: GHSA-rh87-q4vg-m45j","Warn: Project is vulnerable to: PYSEC-2021-305 / GHSA-rhrq-64mq-hf9h","Warn: Project is vulnerable to: GHSA-rjx6-v474-2ch9","Warn: Project is vulnerable to: GHSA-rmg2-f698-wq35","Warn: Project is vulnerable to: PYSEC-2020-138 / GHSA-rrfp-j2mp-hq9c","Warn: Project is vulnerable to: GHSA-rrx2-r989-2c43","Warn: Project is vulnerable to: GHSA-rww7-2gpw-fv6j","Warn: Project is vulnerable to: GHSA-v3f7-j968-4h5f","Warn: Project is vulnerable to: PYSEC-2021-234 / GHSA-v52p-hfjf-wg88","Warn: Project is vulnerable to: GHSA-v5xg-3q2c-c2r4","Warn: Project is vulnerable to: GHSA-v6h3-348g-6h5x","Warn: Project is vulnerable to: PYSEC-2021-214 / GHSA-v6r6-84gr-92rm","Warn: Project is vulnerable to: PYSEC-2021-298 / GHSA-v768-w7m9-2vmm","Warn: Project is vulnerable to: GHSA-v7vw-577f-vp8x","Warn: Project is vulnerable to: PYSEC-2021-287 / GHSA-v82p-hv3v-p6qp","Warn: Project is vulnerable to: PYSEC-2021-310 / GHSA-vcjj-9vg7-vf68","Warn: Project is vulnerable to: PYSEC-2021-232 / GHSA-vf94-36g5-69v8","Warn: Project is vulnerable to: PYSEC-2021-225 / GHSA-vfr4-x8j2-3rf9","Warn: Project is vulnerable to: GHSA-vgvh-2pf4-jr2x","Warn: Project is vulnerable to: GHSA-vjg4-v33c-ggc4","Warn: Project is vulnerable to: GHSA-vm7x-4qhj-rrcq","Warn: Project is vulnerable to: PYSEC-2021-291 / GHSA-vmjw-c2vp-p33c","Warn: Project is vulnerable to: PYSEC-2021-218 / GHSA-vq2r-5xvm-3hc3","Warn: Project is vulnerable to: PYSEC-2021-188 / GHSA-vqw6-72r7-fgw7","Warn: Project is vulnerable to: PYSEC-2021-250 / GHSA-vvg4-vgrv-xfr7","Warn: Project is vulnerable to: PYSEC-2021-406 / GHSA-vwhq-49r4-gj9v","Warn: Project is vulnerable to: GHSA-vxv8-r8q2-63xw","Warn: Project is vulnerable to: PYSEC-2021-288 / GHSA-w4xf-2pqw-5mq7","Warn: Project is vulnerable to: GHSA-w62h-8xjm-fv49","Warn: Project is vulnerable to: PYSEC-2021-289 / GHSA-w74j-v8xh-3w5h","Warn: Project is vulnerable to: GHSA-wc4g-r73w-x8mm","Warn: Project is vulnerable to: PYSEC-2021-157 / GHSA-wcv5-qrj6-9pfm","Warn: Project is vulnerable to: GHSA-wcv5-vrvr-3rx2","Warn: Project is vulnerable to: PYSEC-2021-311 / GHSA-wf5p-c75w-w3wh","Warn: Project is vulnerable to: PYSEC-2021-208 / GHSA-whr9-vfh2-7hm6","Warn: Project is vulnerable to: GHSA-wm93-f238-7v37","Warn: Project is vulnerable to: PYSEC-2021-204 / GHSA-wp3c-xw9g-gpcg","Warn: Project is vulnerable to: PYSEC-2021-270 / GHSA-wp77-4gmm-7cq8","Warn: Project is vulnerable to: GHSA-wq6q-6m32-9rv9","Warn: Project is vulnerable to: GHSA-wqmc-pm8c-2jhc","Warn: Project is vulnerable to: GHSA-wr9v-g9vf-c74v","Warn: Project is vulnerable to: PYSEC-2021-256 / GHSA-wvjw-p9f5-vq28","Warn: Project is vulnerable to: GHSA-wxjj-cgcx-r3vq","Warn: Project is vulnerable to: PYSEC-2021-407 / GHSA-x3v8-c8qx-3j3r","Warn: Project is vulnerable to: PYSEC-2021-164 / GHSA-x4g7-fvjj-prg8","Warn: Project is vulnerable to: GHSA-x4qx-4fjv-hmw6","Warn: Project is vulnerable to: PYSEC-2021-186 / GHSA-x83m-p7pv-ch8v","Warn: Project is vulnerable to: PYSEC-2021-217 / GHSA-x8h6-xgqx-jqgp","Warn: Project is vulnerable to: GHSA-x989-q2pq-4q5x","Warn: Project is vulnerable to: PYSEC-2021-167 / GHSA-xcwj-wfcm-m23c","Warn: Project is vulnerable to: GHSA-xf83-q765-xm6m","Warn: Project is vulnerable to: PYSEC-2021-177 / GHSA-xgc3-m89p-vr3x","Warn: Project is vulnerable to: PYSEC-2021-162 / GHSA-xm2v-8rrw-w9pm","Warn: Project is vulnerable to: PYSEC-2021-178 / GHSA-xqfj-35wv-m3cr","Warn: Project is vulnerable to: PYSEC-2021-255 / GHSA-xqfj-cr6q-pc8w","Warn: Project is vulnerable to: GHSA-xrp2-fhq4-4q3w","Warn: Project is vulnerable to: PYSEC-2021-395 / GHSA-xrqm-fpgr-6hhx","Warn: Project is vulnerable to: PYSEC-2021-221 / GHSA-xvjm-fvxx-q3hv","Warn: Project is vulnerable to: GHSA-xvwp-h6jv-7472","Warn: Project is vulnerable to: PYSEC-2021-194 / GHSA-xw93-v57j-fcgh","Warn: Project is vulnerable to: PYSEC-2020-139 / GHSA-xwhf-g6j5-j5gc","Warn: Project is vulnerable to: GHSA-xxcj-rhqg-m46g","Warn: Project is vulnerable to: PYSEC-2021-181","Warn: Project is vulnerable to: PYSEC-2021-308","Warn: Project is vulnerable to: PYSEC-2021-314"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T09:13:56.814Z","repository_id":38835323,"created_at":"2025-08-17T09:13:56.814Z","updated_at":"2025-08-17T09:13:56.814Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004567,"owners_count":26083734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bioinformatics","diagnostics","dna","genomics","science","viral"],"created_at":"2024-12-31T19:49:06.026Z","updated_at":"2025-10-10T15:09:16.504Z","avatar_url":"https://github.com/broadinstitute.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ADAPT \u0026nbsp;\u0026middot;\u0026nbsp; [![Build Status](https://github.com/broadinstitute/adapt/actions/workflows/build-test.yml/badge.svg?branch=main)](https://github.com/broadinstitute/adapt/actions) [![codecov](https://codecov.io/gh/broadinstitute/adapt/branch/main/graph/badge.svg?token=2xAaHum6bd)](https://codecov.io/gh/broadinstitute/adapt) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/broadinstitute/adapt/pulls) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![Bioconda Package](https://img.shields.io/conda/vn/bioconda/adapt)](http://bioconda.github.io/recipes/adapt/README.html) [![PyPI package](https://img.shields.io/pypi/v/adapt-diagnostics)](https://pypi.org/project/adapt-diagnostics/)\n#### Activity-informed Design with All-inclusive Patrolling of Targets\n\nADAPT efficiently designs activity-informed nucleic acid diagnostics for viruses.\n\nIn particular, ADAPT designs assays with maximal predicted detection activity, in expectation over a virus's genomic diversity, subject to soft and hard constraints on the assay's complexity and specificity.\nADAPT's designs are:\n\n* **Comprehensive**. Designs are effective against variable targets because ADAPT considers the full spectrum of their known genomic diversity.\n* **Sensitive**. ADAPT leverages predictive models of detection activity.\nIt includes a pre-trained model of CRISPR-Cas13a detection activity, trained from ~19,000 guide-target pairs.\n* **Specific**. Designs can distinguish related species or lineages within a species.\nThe approach accommodates G-U pairing, which is important in RNA applications.\n* **End-to-end**. ADAPT automatically downloads and curates data from public databases to provide designs rapidly at scale.\nThe input can be as simple as a species or taxonomy in the form of an NCBI taxonomy identifier.\n\n\u003cbr/\u003e\n\nADAPT outputs a list of assay options ranked by predicted performance.\nIn addition to its objective that maximizes expected activity, ADAPT supports a simpler objective that minimizes the number of probes subject to detecting a specified fraction of diversity.\n\nADAPT includes a pre-trained model that predicts CRISPR-Cas13a guide detection activity, so ADAPT is directly suited to detection with Cas13a.\nADAPT's output also includes amplification primers, e.g., for use with the SHERLOCK platform.\nThe framework and software are compatible with other nucleic acid technologies given appropriate models.\n\nFor more information, see our [publication](https://www.nature.com/articles/s41587-022-01213-5) that describes ADAPT and evaluates its designs experimentally.\n\n### Table of contents\n\n* [Setting up ADAPT](#setting-up-adapt)\n  * [Dependencies](#dependencies)\n  * [Setting up a conda environment](#setting-up-a-conda-environment)\n  * [Downloading and installing](#downloading-and-installing)\n  * [Testing](#testing)\n  * [Running on Docker](#running-on-docker)\n* [Using ADAPT](#using-adapt)\n  * [Overview](#overview)\n  * [Required subcommands](#required-subcommands)\n  * [Specifying the objective](#specifying-the-objective)\n  * [Enforcing specificity](#enforcing-specificity)\n  * [Searching for complete targets](#searching-for-complete-targets)\n  * [Automatically downloading and curating data](#automatically-downloading-and-curating-data)\n  * [Using custom sequences as input](#using-custom-sequences-as-input)\n  * [Weighting sequences](#weighting-sequences)\n  * [Miscellaneous key arguments](#miscellaneous-key-arguments)\n  * [Output](#output)\n* [Examples](#examples)\n  * [Basic: designing within sliding window](#basic-designing-within-sliding-window-without-predictive-model)\n  * [Designing end-to-end with predictive model](#designing-end-to-end-with-predictive-model)\n* [Support and contributing](#support-and-contributing)\n  * [Questions](#questions)\n  * [Contributing](#contributing)\n  * [Citation](#citation)\n  * [License](#license)\n  * [Related repositories](#related-repositories)\n\n\u003cbr/\u003e\n\n# Setting up ADAPT\n\n## Dependencies\n\nADAPT requires:\n* [Python](https://www.python.org) == 3.8\n* [NumPy](http://www.numpy.org) \u0026gt;= 1.16.0, \u0026lt; 1.19.0\n* [SciPy](https://www.scipy.org) == 1.4.1\n* [TensorFlow](https://www.tensorflow.org) == 2.3.2\n\nUsing the thermodynamic modules of ADAPT requires:\n* [Primer3-py](https://libnano.github.io/primer3-py) == 0.6.1\n\nUsing ADAPT with AWS cloud features additionally requires:\n* [Boto3](https://aws.amazon.com/sdk-for-python/) \u0026gt;= 1.14.54\n* [Botocore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html) \u0026gt;= 1.17.54\n\nInstalling ADAPT with `pip`, as described below, will install NumPy, SciPy, and TensorFlow if they are not already installed.\nInstalling ADAPT with `pip` with the thermodynamic modules, as described below, will install Primer3-py if it is not already installed as well.\nInstalling ADAPT with `pip` using the AWS cloud features, as described below, will install Boto3 and Botocore if they are not already installed as well.\n\nIf using alignment features in subcommands below, ADAPT also requires a path to an executable of [MAFFT](https://mafft.cbrc.jp/alignment/software/).\n\n## Setting up a conda environment\n\n_Note: This section is optional, but may be useful to users who are new to Python._\n\nIt is generally useful to install and run Python packages inside of a [virtual environment](https://docs.python.org/3/glossary.html#term-virtual-environment), especially if you have multiple versions of Python installed or use multiple packages.\nThis can prevent problems when upgrading, conflicts between packages with different requirements, installation issues that arise from having different Python versions available, and more.\n\nOne option to manage packages and environments is to use [conda](https://conda.io/en/latest/).\nA fast way to obtain conda is to install Miniconda: you can download it [here](https://conda.io/en/latest/miniconda.html) and find installation instructions for it [here](https://conda.io/projects/conda/en/latest/user-guide/install/index.html#regular-installation).\nFor example, on Linux you would run:\n```bash\nwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh\nbash Miniconda3-latest-Linux-x86_64.sh\n```\n\nOnce you have conda, you can [create](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands) an environment for ADAPT with Python 3.8:\n```bash\nconda create -n adapt python=3.8\n```\nThen, you can activate the `adapt` environment:\n```bash\nconda activate adapt\n```\nAfter the environment is created and activated, you can install ADAPT as described below.\nYou will need to activate the environment each time you use ADAPT.\n\n## Downloading and installing\n\nADAPT is available via [Bioconda](https://anaconda.org/bioconda/adapt) for GNU/Linux and Windows operating systems and via [PyPI](https://pypi.org/project/adapt-diagnostics/) for all operating systems.\n\nBefore installing ADAPT via Bioconda, we suggest you follow the instructions in [Setting up a conda environment](#setting-up-a-conda-environment) to install Miniconda and activate the environment. To install via Bioconda, run the following command:\n```bash\nconda install -c bioconda adapt\n```\nIf you want to be able to use thermodynamic modules of ADAPT, run the following instead:\n```bash\nconda install -c bioconda \"adapt[thermo]\"\n```\nIf you want to be able to use AWS cloud features through ADAPT, run the following instead:\n```bash\nconda install -c bioconda \"adapt[AWS]\"\n```\nFor both AWS and thermodynamics, run the following instead:\n```bash\nconda install -c bioconda \"adapt[AWS,thermo]\"\n```\n\nBefore installing ADAPT via PyPI, we suggest you follow the instructions in either the [Python documentation](https://docs.python.org/3/tutorial/venv.html) or [Setting up a conda environment](#setting-up-a-conda-environment) to set up and activate a virtual environment for ADAPT. To install via PyPI, run the following command:\n```bash\npip install adapt-diagnostics\n```\nIf you want to be able to use thermodynamic modules of ADAPT, run the following instead:\n```bash\npip install \"adapt-diagnostics[thermo]\"\n```\nIf you want to be able to use AWS cloud features through ADAPT, run the following instead:\n```bash\npip install \"adapt-diagnostics[AWS]\"\n```\nFor both AWS and thermodynamics, run the following instead:\n```bash\npip install \"adapt-diagnostics[AWS,thermo]\"\n```\n\nIf you wish to modify ADAPT's code, ADAPT can be installed by cloning the repository and installing the package with `pip`:\n```bash\ngit clone git@github.com:broadinstitute/adapt.git\ncd adapt\npip install -e .\n```\nDepending on your setup (i.e., if you do not have write permissions in the installation directory), you may need to supply `--user` to `pip install`.\n\nIf you want to be able to use thermodynamic modules of ADAPT, replace the last line with the following:\n```bash\npip install -e \".[thermo]\"\n```\nIf you want to be able to use AWS cloud features through ADAPT, replace the last line with the following:\n```bash\npip install -e \".[AWS]\"\n```\nFor both AWS and thermodynamics, replace the last line with the following:\n```bash\npip install -e \".[AWS,thermo]\"\n```\n\n## Testing\n\nIf you clone this repository, you may want to run tests to ensure your clone is running properly.\nThis package uses Python's `unittest` framework.\nTo execute all tests, from the home directory of your ADAPT clone, run:\n```bash\npython -m unittest discover\n```\n\n## Running on Docker\n_Note: This section is optional, but may be useful for more advanced users or developers. You will need to install [Docker](https://docs.docker.com/get-docker/)._\n\nIf you would like to run ADAPT using a Docker container rather than installing it, you may use one of our pre-built ADAPT images.\n\nFor ADAPT without cloud features, use the image ID `quay.io/broadinstitute/adapt`.\n\nFor ADAPT with cloud features, use the image ID `quay.io/broadinstitute/adaptcloud`.\n\nTo pull our Docker image to your computer, run:\n```bash\ndocker pull [IMAGE-ID]\n```\n\nTo run ADAPT on a Docker container, run:\n```bash\ndocker run --rm [IMAGE-ID] \"[COMMAND]\"\n```\nTo run with ADAPT memoizing to a local directory, run:\n```bash\ndocker run --rm -v /path/to/memo/on/host:/memo [IMAGE-ID] \"[COMMAND]\"\n```\nTo run the container interactively (opening a command line to the container), run:\n```bash\ndocker run --rm -it [IMAGE-ID]\n```\n\n# Using ADAPT\n\n## Overview\n\nThe main program for designing assays is [`design.py`](./bin/design.py).\n\nBelow, we refer to *guides* in reference to our pre-trained model for CRISPR-Cas13a guides and our testing of ADAPT's designs with Cas13a.\nMore generally, *guides* can be thought of as *probes* to encompass other diagnostic technologies.\n\n[`design.py`](./bin/design.py) requires two subcommands:\n```bash\ndesign.py [SEARCH-TYPE] [INPUT-TYPE] ...\n```\n\n## Required subcommands\n\nSEARCH-TYPE is one of:\n\n* `complete-targets`: Search for the best assay options, each containing primer pairs and guides between them.\nThis is usually our recommended search type.\nMore information is in [Searching for complete targets](#searching-for-complete-targets).\n(Example [here](#designing-end-to-end-with-predictive-model).)\n* `sliding-window`: Search for guides within a sliding window of a fixed length, and output an optimal guide set for each window.\nThis is the much simpler search type and can be helpful when getting started.\n(Example [here](#basic-designing-with-sliding-window).)\n\nINPUT-TYPE is one of:\n\n* `fasta`: The input is one or more FASTA files, each containing sequences for a taxon.\nIf more than one file is provided, the search finds taxon-specific designs meant for differential identification of the taxa. This assumes the FASTA files contain aligned sequences, unless otherwise specified (see [Using custom sequences as input](#using-custom-sequences-as-input))\n* `auto-from-args`: The input is a single NCBI taxonomy ID, and related information, provided as command-line arguments.\nThis fetches sequences for the taxon, then curates, clusters and aligns the sequences, and finally uses the generated alignment as input for design.\nMore information is in [Automatically downloading and curating data](#automatically-downloading-and-curating-data).\n* `auto-from-file`: The input is a file containing a list of taxonomy IDs and related information.\nThis operates like `auto-from-args`, except ADAPT designs with specificity across the input taxa using a single index for evaluating specificity (as opposed to having to build it separately for each taxon).\nMore information is in [Automatically downloading and curating data](#automatically-downloading-and-curating-data).\n\n### Positional arguments\n\nThe positional arguments \u0026mdash; which specify required input to ADAPT \u0026mdash; depend on the INPUT-TYPE.\nThese arguments are defined below for each INPUT-TYPE.\n\n##### If INPUT-TYPE is `fasta`:\n\n```bash\ndesign.py [SEARCH-TYPE] fasta [fasta] [fasta ...] -o [out-tsv] [out-tsv ...]\n```\nwhere `[fasta]` is a path to an aligned FASTA file for a taxon and `[out-tsv]` specifies the basename of where to write the output TSV file (_without_ the `.tsv` suffix).\nIf there are more than one space-separated FASTA, there must be an equivalent number of output TSV files; the _i_'th output gives designs for the _i_'th input FASTA.\n\n##### If INPUT-TYPE is `auto-from-args`:\n\n```bash\ndesign.py [SEARCH-TYPE] auto-from-args [taxid] [segment] [out-tsv]\n```\nwhere `[taxid]` is an NCBI [taxonomy ID](https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi), `[segment]` is a segment label (e.g., 'S') or 'None' if unsegmented, and `[out-tsv]` specifies where to write the output TSV file.\n\n##### If INPUT-TYPE is `auto-from-file`:\n\n```bash\ndesign.py [SEARCH-TYPE] auto-from-file [in-tsv] [out-dir]\n```\nwhere `[in-tsv]` is a path to a file specifying the input taxonomies (run `design.py [SEARCH-TYPE] auto-from-file --help` for details) and `[out-dir]` specifies a directory in which to write the outputs.\n\n### Details on all arguments\n\nTo see details on all the arguments available, run\n```bash\ndesign.py [SEARCH-TYPE] [INPUT-TYPE] --help\n```\nwith the particular choice of subcommands substituted in for `[SEARCH-TYPE]` and `[INPUT-TYPE]`.\n\n## Specifying the objective\n\nADAPT supports two objective functions, specified using the `--obj` argument:\n\n* Maximize activity (`--obj maximize-activity`)\n* Minimize complexity (`--obj minimize-guides`)\n\nDetails on each are below.\n\n### Objective: maximizing activity\n\nSetting `--obj maximize-activity` tells ADAPT to design sets of guides having maximal activity, in expectation over the input taxon's genomic diversity, subject to soft and hard constraints on the size of the guide set.\nThis is usually our recommended objective, especially with access to a predictive model.\nWith this objective, the following arguments to [`design.py`](./bin/design.py) are relevant:\n\n* `-sgc SOFT_GUIDE_CONSTRAINT`: Soft constraint on the number of guides in a design option.\nThere is no penalty for a number of guides \u0026le; SOFT_GUIDE_CONSTRAINT.\nHaving a number of guides beyond this is penalized linearly according to PENALTY_STRENGTH.\n(Default: 1.)\n* `-hgc HARD_GUIDE_CONSTRAINT`: Hard constraint on the number of guides in a design option.\nThe number of guides in a design option will always be \u0026le; HARD_GUIDE_CONSTRAINT.\nHARD_GUIDE_CONSTRAINT must be \u0026ge; SOFT_GUIDE_CONSTRAINT.\n(Default: 5.)\n* `--penalty-strength PENALTY_STRENGTH`: Importance of the penalty when the number of guides exceeds the soft guide constraint.\nFor a guide set G, the penalty in the objective is PENALTY_STRENGTH\\*max(0, |G| - SOFT_GUIDE_CONSTRAINT).\nPENALTY_STRENGTH must be \u0026ge; 0.\nThe value depends on the output values of the activity model and reflects a tolerance for more complexity in the assay; for the default pre-trained activity model included with ADAPT, reasonable values are in the range \\[0.1, 0.5\\].\n(Default: 0.25.)\n* `--maximization-algorithm [greedy|random-greedy]`: Algorithm to use for solving the submodular maximization problem.\n'greedy' uses the canonical greedy algorithm (Nemhauser 1978) for constrained monotone submodular maximization, which can perform well in practice but has poor worst-case guarantees because the function is not monotone (unless PENALTY_STRENGTH is 0).\n'random-greedy' uses a randomized greedy algorithm (Buchbinder 2014) for constrained non-monotone submodular maximization, which has good worst-case guarantees.\n(Default: 'random-greedy'.)\n\nNote that, when the objective is to maximize activity, this objective requires a predictive model of activity and thus `--predict-activity-model-path` or `--predict-cas13a-activity-model` should be specified (details in [Miscellaneous key arguments](#miscellaneous-key-arguments)).\nIf you wish to use this objective but cannot use our pre-trained Cas13a model nor another model, see the help message for the argument `--use-simple-binary-activity-prediction`.\n\n### Objective: minimizing complexity\n\nSetting `--obj minimize-guides` tells ADAPT to minimize the number of guides in an assay subject to constraints on coverage of the input taxon's genomic diversity.\nWith this objective, the following arguments to [`design.py`](./bin/design.py) are relevant:\n\n* `-gm MISMATCHES`: Tolerate up to MISMATCHES mismatches when determining whether a guide detects a sequence.\nThis argument is mainly meant to be helpful in the absence of a predictive model of activity.\nWhen using a predictive model of activity (via `--predict-activity-model-path` or `--predict-cas13a-activity-model`), this argument serves as an additional requirement for evaluating detection on top of the model; it can be effectively ignored by setting MISMATCHES to be sufficiently high.\n(Default: 0.)\n* `--predict-activity-thres THRES_C THRES_R`: Thresholds for determining whether a guide-target pair is active and highly active.\nTHRES_C is a decision threshold on the output of the classifier (in \\[0,1\\]); predictions above this threshold are decided to be active.\nHigher values have higher precision and less recall.\nTHRES_R is a decision threshold on the output of the regression model (at least 0); predictions above this threshold are decided to be highly active.\nHigher values limit the number of pairs determined to be highly active.\nTo count as detecting a target sequence, a guide must be: (i) within MISMATCHES mismatches of the target sequence; (ii) classified as active; and (iii) predicted to be highly active.\nUsing this argument requires also setting `--predict-activity-model-path` or `--predict-cas13a-activity-model` (see [Miscellaneous key arguments](#miscellaneous-key-arguments)).\nAs noted above, MISMATCHES can be set to be sufficiently high to effectively ignore `-gm`.\n(Default: use the default thresholds included with the model.)\n* `-gp COVER_FRAC`: Design guides such that at least a fraction COVER_FRAC of the genomes are detected by the guides.\n(Default: 1.0.)\n* `--cover-by-year-decay YEAR_TSV MIN_YEAR_WITH_COVG DECAY`: Group input sequences by year and set a distinct COVER_FRAC for each year.\nSee `design.py [SEARCH-TYPE] [INPUT-TYPE] --help` for details on this argument.\nNote that when INPUT-TYPE is `auto-from-{file,args}`, this argument does not accept YEAR_TSV.\n\n## Enforcing specificity\n\nADAPT can enforce strict specificity so that designs will distinguish related taxa.\n\nFor all INPUT-TYPEs, ADAPT can enforce specificity by parsing the `--specific-against-*` arguments.\nWhen INPUT-TYPE is `auto-from-file` or `fasta`, ADAPT will also automatically enforce specificity between taxa/FASTA files using a single specificity index.\n\nTo enforce specificity, the following arguments to [`design.py`](./bin/design.py) are important:\n\n* `--id-m ID_M` / `--id-frac ID_FRAC`: These parameters specify thresholds for determining specificity.\nAllow for up to ID_M mismatches when determining whether a guide *hits a sequence* in a taxon other than the one for which it is being designed, and decide that a guide *hits a taxon* if it hits at least ID_FRAC of the sequences in that taxon.\nADAPT does not design guides that hit a taxon other than the one for which they are being designed.\nHigher values of ID_M and lower values of ID_FRAC correspond to more strict specificity.\n(Default: 4 for ID_M, 0.01 for ID_FRAC.)\n* `--specific-against-fastas [fasta] [fasta ...]`: Design guides to be specific against the provided sequences (in FASTA format; do not need to be aligned).\nThat is, the guides should not hit sequences in these FASTA files, as measured by ID_M and ID_FRAC.\nEach `[fasta]` is treated as a separate taxon when ID_FRAC is applied.\n* `--specific-against-taxa SPECIFIC_TSV`: Design guides to be specific against the provided taxa.\nSPECIFIC_TSV is a path to a TSV file where each row specifies a taxonomy with two columns: (1) NCBI taxonomy ID; (2) segment label, or 'None' if unsegmented.\nThat is, the guides should not hit sequences in these taxonomies, as measured by ID_M and ID_FRAC.\n\n## Searching for complete targets\n\nWhen SEARCH-TYPE is `complete-targets`, ADAPT performs a branch and bound search to find a collection of assay design options.\nIt finds the best _N_ design options for a specified _N_.\nEach design option represents a genomic region containing primer pairs and guides between them.\nThere is no set length for the region.\nThe _N_ options are intended to be a diverse (non-overlapping) selection.\n\nBelow are key arguments to [`design.py`](./bin/design.py) when SEARCH-TYPE is `complete-targets`:\n\n* `--best-n-targets BEST_N_TARGETS`: Only compute and output the best BEST_N_TARGETS design options, where each receives an objective value according to OBJ_FN_WEIGHTS.\nNote that higher values of BEST_N_TARGETS can significantly increase runtime.\n(Default: 10.)\n* `--obj-fn-weights OBJ_FN_WEIGHTS`: Coefficients to use in an objective function for each design target.\nSee `design.py complete-targets [INPUT-TYPE] --help` for details.\n* `-pl PRIMER_LENGTH`: Design primers to be PRIMER_LENGTH nt long.\n(Default: 30.)\n* `-pp PRIMER_COVER_FRAC`: Same as `-gp` described above, except for the design of primers.\n(Default: 1.0.)\n* `-pm PRIMER_MISMATCHES`: Tolerate up to PRIMER_MISMATCHES mismatches when determining whether a primer hybridizes to a sequence.\n(Default: 0.)\n* `--max-primers-at-site MAX_PRIMERS_AT_SITE`: Only allow up to MAX_PRIMERS_AT_SITE primers at each primer site.\nIf not set, there is no limit.\nThis argument is mostly intended to improve runtime \u0026mdash; smaller values (~5) can significantly improve runtime on especially diverse viruses \u0026mdash; because the number of primers is already penalized in the objective function.\nNote that this is only an upper bound, and in practice the number will usually be less than it.\n(Default: not set.)\n\n## Automatically downloading and curating data\n\nWhen INPUT-TYPE is `auto-from-{file,args}`, ADAPT will run end-to-end.\nIt fetches and curates genomes, clusters and aligns them, and uses the generated alignment as input for design.\n\nBelow are key arguments to [`design.py`](./bin/design.py) when INPUT-TYPE is `auto-from-file` or `auto-from-args`:\n\n* `--mafft-path MAFFT_PATH`: Use the [MAFFT](https://mafft.cbrc.jp/alignment/software/) executable at MAFFT_PATH for generating alignments.\n* `--prep-memoize-dir PREP_MEMOIZE_DIR`: Memoize alignments and statistics on these alignments to the directory specified by PREP_MEMOIZE_DIR.\nIf repeatedly re-running on the same taxonomies, using this argument can significantly improve runtime across runs.\nADAPT can save the memoized information to an AWS S3 bucket by using the syntax `s3://BUCKET/PATH`, though this requires the AWS cloud installation mentioned in [Downloading and installing](#downloading-and-installing) and setting access key information.\nAccess key information can either be set using AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (details below) or by installing and configuring [AWS CLI](https://aws.amazon.com/cli/).\nIf not set (default), do not memoize information across runs.\n* `--sample-seqs SAMPLE_SEQS`: Randomly sample SAMPLE_SEQS accessions with replacement from each taxonomy, and move forward with the design using this sample.\nThis can be useful for measuring some properties of the design, or for faster runtime when debugging.\n* `--cluster-threshold CLUSTER_THRESHOLD`: Use CLUSTER_THRESHOLD as the maximum inter-cluster distance when clustering sequences prior to alignment.\nThe distance is average nucleotide dissimilarity (1-ANI); higher values result in fewer clusters.\n(Default: 0.2.)\n* `--use-accessions USE_ACCESSIONS`: Use the specified NCBI GenBank accessions, in a file at the path USE_ACCESSIONS, for generating input.\nADAPT uses these accessions instead of fetching neighbors from NCBI, but it will still download the sequences for these accessions.\nSee `design.py [SEARCH-TYPE] auto-from-{file,args} --help` for details on the format of the file.\n* `--metadata-filter FILTERS`: Filter sequences from the specified taxonomic ID to only those that match this metadata in their NCBI GenBank entries.\nThe format is `metadata=value` or `metadata!=value`.\n`metadata` can be 'year', 'taxid', or 'country'.\nSeparate multiple values with commas and different filters with spaces (e.g., `--metadata-filter year!=2020,2019 taxid=11060`).\nThis argument can allow designing for only a specified subspecies: the corresponding species taxonomic ID can be provided in the input argument for `[taxid]`, while the desired subspecies ID can be provided in FILTERS as a 'taxid'.\nThere is a related argument, `--specific-against-metadata-filter`, to filter the sequences used in the specificity constraint.\nThese arguments are only available when INPUT-TYPE is `auto-from-args`.\n\nWhen using AWS S3 to memoize information across runs (`--prep-memoize-dir`), the following arguments are also important:\n\n* `--aws-access-key-id AWS_ACCESS_KEY_ID` / `--aws-secret-access-key AWS_SECRET_ACCESS_KEY`: Use AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to login to AWS cloud services.\nBoth AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are needed to login.\nThese arguments are only necessary if saving the memoized data to an S3 bucket using PREP_MEMOIZE_DIR and AWS CLI has not been installed and configured.\nIf AWS CLI has been installed and configured and these arguments are passed, they will override the AWS CLI configuration.\n\n## Using custom sequences as input\n\nWhen INPUT-TYPE is `fasta`, ADAPT will run on only the sequences specified in the FASTA, without curation.\n\nBelow are key arguments to [`design.py`](./bin/design.py) when INPUT-TYPE is `fasta`:\n\n* `--unaligned`: Specify if any of the input FASTA files are unaligned. This will align them using MAFFT.\n* `--mafft-path MAFFT_PATH`: Use the [MAFFT](https://mafft.cbrc.jp/alignment/software/) executable at MAFFT_PATH for generating alignments. Required if `--unaligned` is specified.\n* `--cluster-threshold CLUSTER_THRESHOLD`: Use CLUSTER_THRESHOLD as the maximum inter-cluster distance when clustering sequences prior to alignment.\nThe distance is average nucleotide dissimilarity (1-ANI); higher values result in fewer clusters.\n(Default: 0.2.)\n\n## Weighting sequences\n\nBy default, ADAPT bases the \"coverage\" across a virus's variation on the percent of genome sequences predicted to be detected.\nLikewise, when maximizing expected (or average) activity across variation, it treats the different genome sequences uniformly.\nWhile this works well if the genome sequences represent a random sample of the targeted viral population, that is often not the case owing to sampling biases.\nWe include sequence weighting in ADAPT, allowing the relative importance of sequences to be set.\n\nTo manually set sequence weights when INPUT-TYPE is `fasta`, use `--weight-sequences WEIGHT_SEQUENCES`.\n`WEIGHT_SEQUENCES` should be a file path to a TSV with two columns: (1) a sequence name that matches to one in the input FASTA; (2) the weight of that sequence.\nIf more than one input FASTA is given, the same number of input TSVs must be given.\nEach input TSV corresponds to an input FASTA.\nThe input weights will be normalized to sum to 1 and used when calculating objective scores and summary statistics.\nAny sequence not listed in the input TSV(s) will be assigned, by default, a pre-normalized weight of 1.\n\nWhen ADAPT designs an assay across multiple subtaxa, each with very different levels of sampling, ADAPT may design deficient assays that only detect a highly overrepresented subtaxon and no other subtaxa.\nWhile the number of sequences in the database often indicates a subtaxon's relative importance, it should typically not cause other subtaxa to be ignored in practice.\n\nAs a simple correction for this problem, ADAPT includes the argument `--weight-by-log-size-of-subtaxa SUBTAXA` for when the INPUT-TYPE is `auto-from-args` or `auto-from-file`. `SUBTAXA` is a taxonomic rank ('genus', 'subgenus', 'species', or 'subspecies') lower than the rank of the taxon being designed for.\nIt works as follows:\n\n1. Each input sequence is associated with one `SUBTAXA` group.\n2. Each `SUBTAXA` group is assigned a weight equal to the log of the number of sequences in that group plus 1.\n3. Each sequence is assigned a weight equal to the weight of its `SUBTAXA` group divided by the number of sequences in its `SUBTAXA` group.\n4. Weights are normalized across all sequences to sum to 1.\n\n## Miscellaneous key arguments\n\nIn addition to the arguments above, there are others that are often important when running [`design.py`](./bin/design.py):\n\n* `--predict-cas13a-activity-model`: Use ADAPT's pre-trained Cas13 model to predict activity of guide-target pairs.\nClassification and regression model files can be viewed in [`models/`](./models).\n(Default: not set, which does not use predicted activity during design.)\n* `--predict-activity-model-path MODEL_C MODEL_R`: Models that predict activity of guide-target pairs.\nMODEL_C gives a classification model that predicts whether a guide-target pair is active, and MODEL_R gives a regression model that predicts a measure of activity on active pairs.\nThis does not need to be set if `--predict-cas13a-activity-model` is specified, but it is useful for custom models.\nEach argument is a path to a serialized model in TensorFlow's SavedModel format.\nWith `--obj maximize-activity`, the models are essential because they inform ADAPT of the measurements it aims to maximize.\nWith `--obj minimize-guides`, the models constrain the design such that a guide must be highly active to detect a sequence (specified by `--predict-activity-thres`).\n(Default: not set, which does not use predicted activity during design.)\n* `-gl GUIDE_LENGTH`: Design guides to be GUIDE_LENGTH nt long.\n(Default: 28.)\n* `--do-not-allow-gu-pairing`: If set, do not count G-U (wobble) base pairs between guide and target sequence as matching.\nBy default, they count as matches.\nThis applies when `-gm` is used with `--obj minimize-guides` and when enforcing specificity.\n* `--require-flanking5 REQUIRE_FLANKING5` / `--require-flanking3 REQUIRE_FLANKING3`: Require the given sequence on the 5' (REQUIRE_FLANKING5) and/or 3' (REQUIRE_FLANKING3) side of the protospacer for each designed guide.\nThis tolerates ambiguity in the sequence (e.g., 'H' requires 'A', 'C', or 'T').\nThis can enforce a desired protospacer flanking site (PFS) nucleotide; it can also accommodate multiple nucleotides (motif).\nNote that this is the 5'/3' end in the target sequence (not the spacer sequence).\nWhen a predictive model of activity is given, this argument is not needed; it can still be specified, however, as an additional requirement on top of how the model evaluates activity.\n\n## Output\n\nThe files output by ADAPT are TSV files, but vary in format depending on SEARCH-TYPE and INPUT-TYPE.\nThere is a separate TSV file for each taxon.\n\nFor all cases, run `design.py [SEARCH-TYPE] [INPUT-TYPE] --help` to see details on the output format and on how to specify paths to the output TSV files.\n\n### Complete targets\n\nWhen SEARCH-TYPE is `complete-targets`, each row gives an assay design option; there are BEST_N_TARGETS of them.\nEach design option corresponds to a genomic region (amplicon).\nThe columns give the primer and guide sequences as well as additional information about them.\nThere are about 20 columns; some key ones are:\n* `objective-value`: Objective value based on OBJ_FN_WEIGHTS.\n* `target-start` / `target-end`: Start (inclusive) and end (exclusive) positions of the genomic region in the alignment generated by ADAPT.\n* `{left,right}-primer-target-sequences`: Sequences of 5' and 3' primers, from the targets (see [Complementarity](#complementarity)).\nWithin each of the two columns (amplicon endpoints), if there are multiple sequences they are separated by spaces.\n* `total-frac-bound-by-guides`: Fraction of all input sequences predicted to be detected by the guide set.\n* `guide-set-expected-activity`: Predicted activity of the guide set in detecting the input sequences, in expectation over the input sequences.\n(nan if no predictor is set.)\n* `guide-set-median-activity` / `guide-set-5th-pctile-activity`: Median and 5th percentile of predicted activity of the guide set over the input sequences.\n(nan if no predictor is set.)\n* `guide-expected-activities`: Predicted activity of each separate guide in detecting the input sequences, in expectation over the input sequences.\nThey are separated by spaces; if there is only 1 guide, this is equivalent to `guide-set-expected-activity`.\n(nan if no predictor is set.)\n* `guide-target-sequences`: Sequences of guides, from the targets (see [Complementarity](#complementarity)!).\nIf there are multiple, they are separated by spaces.\n* `guide-target-sequence-positions`: Positions of the guides in the alignment, in the same order as they are reported; a guide may come from \u003e1 position, so positions are reported in set notation (e.g., \\{100\\}).\n\nThe rows in the output are sorted by the objective value: better options are on top.\nSmaller values are better with `--obj minimize-guides` and larger values are better with `--obj maximize-activity`.\n\nWhen INPUT-TYPE is `auto-from-file` or `auto-from-args` and ADAPT generates more than one cluster of input sequences, there is a separate TSV file for each cluster; the filenames end in `.0`, `.1`, etc.\n\n### Sliding window\n\nWhen SEARCH-TYPE is `sliding-window`, each row gives a window in the alignment and the columns give information about the guides designed for that window.\nThe columns are:\n* `window-start` / `window-end`: Start (inclusive) and end (exclusive) positions in the alignment.\n* `count`: Number of guide sequences.\n* `score`: Statistic between 0 and 1 that describes the redundancy of the guides in detecting the input sequences (higher is better).\nThis is meant to break ties between windows with the same number of guide sequences, and is not intended to be compared between windows with different numbers of guides.\n* `total-frac-bound`: Total fraction of all input sequences that are detected by a guide.\nNote that if `--cover-by-year-decay` is provided, this might be less than COVER_FRAC.\n* `target-sequences`: Sequences of guides, from the targets (see [Complementarity](#complementarity)!).\nIf there are multiple, they are separated by spaces.\n* `target-sequence-positions`: Positions of the guides in the alignment, in the same order as they are reported; a guide may come from \u003e1 position, so positions are reported in set notation (e.g., \\{100\\}).\n\nBy default, when SEARCH-TYPE is `sliding-window`, the rows in the output are sorted by the position of the window.\nWith the `--sort` argument to [`design.py`](./bin/design.py), ADAPT sorts the rows so that the \"best\" choices of windows are on top.\nIt sorts by `count` (ascending) followed by `score` (descending), so that windows with the fewest guides and highest score are on top.\n\n### Complementarity\n\nNote that output sequences are all in the same sense as the input (target) sequences.\n**Synthesized guide sequences should be reverse complements of the output sequences!**\nLikewise, synthesized primer sequences should account for this.\n\n# Examples\n\n## Basic: designing within sliding window without predictive model\n\nThis is the most simple example.\n**It does not download genomes nor search for genomic regions to target. It also does not use a predictive model of activity, and it seeks to minimize assay complexity rather than maximize activity, which is our usual objective. For these features, see the next example.**\n\nThe repository includes an alignment of Lassa virus sequences (S segment) from Sierra Leone in `examples/SLE_S.aligned.fasta`.\nIf you have installed ADAPT via Bioconda or PyPI, you'll need to download the alignment from [`here`](https://raw.githubusercontent.com/broadinstitute/adapt/main/examples/SLE_S.aligned.fasta).\nRun:\n```bash\ndesign.py sliding-window fasta FASTA_PATH -o probes --obj minimize-guides -w 200 -gl 28 -gm 1 -gp 0.95\n```\n\nFrom this alignment, ADAPT scans each 200 nt window (`-w 200`) to find the smallest collection of probes that:\n* are all within the window\n* are 28 nt long (`-gl 28`)\n* detect 95% of all input sequences (`-gp 0.95`), tolerating up to 1 mismatch (`-gm 1`) between a probe and target\n\nADAPT outputs a file, `probes.tsv`, that contains the probe sequences for each window.\nSee [Output](#output) above for a description of this file.\n\n## Designing end-to-end with predictive model\n\nADAPT can automatically download and curate sequences for its design, and search efficiently across the genome to find primers/amplicons as well as Cas13a guides.\nIt identifies Cas13a guides using a pre-trained predictive model of activity.\n\nRun:\n```bash\ndesign.py complete-targets auto-from-args 64320 None guides --obj maximize-activity -gl 28 -pl 30 -pm 1 -pp 0.95 --predict-cas13a-activity-model --best-n-targets 5 --mafft-path MAFFT_PATH --sample-seqs 50 --verbose\n```\nThis downloads and designs assays to detect genomes of Zika virus (NCBI taxonomy ID [64320](https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info\u0026id=64320)).\nYou must fill in `MAFFT_PATH` with an executable of MAFFT.\n\nADAPT designs primers and Cas13a guides within the amplicons, such that:\n* guides have maximal predicted detection activity, in expectation over Zika's genomic diversity (`--obj maximize-activity`)\n* guides are 28 nt long (`-gl 28`) and primers are 30 nt long (`-pl 30`)\n* primers capture 95% of sequence diversity (`-pp 0.95`), tolerating up to 1 mismatch for each (`-pm 1`)\n\nADAPT outputs a file, `guides.0.tsv`, that contains the best 5 design options (`--best-n-targets 5`) as measured by ADAPT's default objective function.\nSee [Output](#output) above for a description of this file.\n\nThis example randomly selects 50 sequences (`--sample-seqs 50`) prior to design to speed the runtime in this example; the command should take about 10 minutes to run in full.\nUsing `--verbose` provides detailed output and is usually recommended, but the output can be extensive.\n\nNote that this example does not enforce specificity.\n\nTo instead find minimal guide sets, use `--obj minimize-guides` instead of `--obj maximize-activity` and set `-gm` and `-gp`.\nWith that alternative objective, Cas13a guides are determined to detect a sequence if they (i) satisfy the number of mismatches specified with `-gm` and (ii) are predicted by the model to be highly active in detecting the sequence; `-gm` can be sufficiently high to rely entirely on the predictive model.\nThe output guides will detect a desired fraction of all genomes, as specified by `-gp`.\n\n# Support and contributing\n\n## Questions\n\nIf you have questions about ADAPT, please create an [issue](https://github.com/broadinstitute/adapt/issues).\n\n## Contributing\n\nWe welcome contributions to ADAPT.\nThis can be in the form of an [issue](https://github.com/broadinstitute/adapt/issues) or [pull request](https://github.com/broadinstitute/adapt/pulls).\n\n## Citation\n\nADAPT was started by Hayden Metsky, and is developed by Priya Pillai and Hayden.\n\nIf you find ADAPT useful to your work, please cite our [paper](https://www.nature.com/articles/s41587-022-01213-5) as:\n  * Metsky HC _et al_. Designing sensitive viral diagnostics with machine learning. _Nature Biotechnology_ (2022). doi:10.1038/s41587-022-01213-5.\n\n## License\n\nADAPT is licensed under the terms of the [MIT license](./LICENSE).\n\n## Related repositories\n\nThere are other repositories on GitHub associated with ADAPT:\n  * [adapt-seq-design](https://github.com/broadinstitute/adapt-seq-design): Predictive modeling library, datasets, training, and evaluation (applied to CRISPR-Cas13a).\n  * [adapt-analysis](https://github.com/broadinstitute/adapt-analysis): Analysis of ADAPT's designs and benchmarking its computational performance, as well as miscellaneous analyses for the ADAPT paper.\n  * [adapt-designs](https://github.com/broadinstitute/adapt-designs): Designs output by ADAPT, including all experimentally tested designs.\n  * [adapt-pipes](https://github.com/broadinstitute/adapt-pipes): Workflows for running ADAPT on the cloud, tailored for AWS.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroadinstitute%2Fadapt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbroadinstitute%2Fadapt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroadinstitute%2Fadapt/lists"}