{"id":33938978,"url":"https://github.com/varfish-org/hgvs-rs","last_synced_at":"2026-04-11T11:10:54.469Z","repository":{"id":65940772,"uuid":"601272076","full_name":"varfish-org/hgvs-rs","owner":"varfish-org","description":"A port of biocommons/hgvs to the Rust programming language","archived":false,"fork":false,"pushed_at":"2026-04-01T10:40:56.000Z","size":1399,"stargazers_count":17,"open_issues_count":19,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-01T12:25:21.617Z","etag":null,"topics":["genetics","varfish","variant-filtration","variant-prioritization","vcf"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varfish-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-13T18:11:24.000Z","updated_at":"2026-04-01T10:40:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"0ce180aa-11ca-4903-863e-b895fd0503d2","html_url":"https://github.com/varfish-org/hgvs-rs","commit_stats":{"total_commits":114,"total_committers":5,"mean_commits":22.8,"dds":"0.33333333333333337","last_synced_commit":"8638aff77c733b0dd8183d9f5e75d026a2db9d3e"},"previous_names":["varfish-org/hgvs-rs","bihealth/hgvs-rs"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/varfish-org/hgvs-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varfish-org%2Fhgvs-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varfish-org%2Fhgvs-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varfish-org%2Fhgvs-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varfish-org%2Fhgvs-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varfish-org","download_url":"https://codeload.github.com/varfish-org/hgvs-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varfish-org%2Fhgvs-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31558380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["genetics","varfish","variant-filtration","variant-prioritization","vcf"],"created_at":"2025-12-12T15:07:00.487Z","updated_at":"2026-04-08T13:31:17.417Z","avatar_url":"https://github.com/varfish-org.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Crates.io](https://img.shields.io/crates/d/hgvs.svg)](https://crates.io/crates/hgvs)\n[![Crates.io](https://img.shields.io/crates/v/hgvs.svg)](https://crates.io/crates/hgvs)\n[![Crates.io](https://img.shields.io/crates/l/hgvs.svg)](https://crates.io/crates/hgvs)\n[![CI](https://github.com/varfish-org/hgvs-rs/actions/workflows/rust.yml/badge.svg)](https://github.com/varfish-org/hgvs-rs/actions/workflows/rust.yml)\n[![codecov](https://codecov.io/gh/varfish-org/hgvs-rs/branch/main/graph/badge.svg?token=aZchhLWdzt)](https://codecov.io/gh/varfish-org/hgvs-rs)\n[![DOI](https://zenodo.org/badge/601272076.svg)](https://zenodo.org/badge/latestdoi/601272076)\n\n# hgvs-rs\n\nThis is a port of [biocommons/hgvs](https://github.com/biocommons/hgvs) to the Rust programming language.\nThe `data::cdot::*` code is based on a port of  [SACGF/cdot](https://github.com/SACGF/cdot) to Rust.\n\n## Choosing a Provider\n\nThe crate includes three `Provider` implementations for accessing transcript and sequence data:\n\n| Provider | Data Source | Best For |\n|---|---|---|\n| `data::uta::Provider` | PostgreSQL (UTA) | Testing, development |\n| `data::uta_sr::Provider` | PostgreSQL (UTA) + SeqRepo | Testing with genome contigs |\n| `data::cdot::json::Provider` | cDOT JSON + SeqRepo | Offline use without PostgreSQL |\n\nAll three providers incur I/O overhead per query (database round-trips or filesystem access), which\ncan dominate normalization throughput for high-volume workloads.\n\nFor **production use**, consider implementing the `Provider` trait with an in-memory or\npurpose-built data store. Two examples of this approach:\n\n- [mehari](https://github.com/varfish-org/mehari) deserializes a protobuf-encoded transcript\n  database into memory and indexes it with interval trees, backed by RocksDB for sequence storage.\n- [ferro-hgvs](https://github.com/fulcrumgenomics/ferro-hgvs) uses indexed FASTA files with\n  cDOT metadata, supporting random access via FAI indexes and optional memory-mapped I/O.\n\n## Running Tests\n\nThe tests need an instance of UTA to run.\nEither you setup a local copy (with minimal dataset in `tests/data/data/*.pgd.gz`) or use the public one.\nYou will have to set the environment variables `TEST_UTA_DATABASE_URL` and `TEST_UTA_DATABASE_SCHEMA` appropriately.\nTo use the public database:\n\n```\nexport TEST_UTA_DATABASE_URL=postgres://anonymous:anonymous@uta.biocommons.org:/uta\nexport TEST_UTA_DATABASE_SCHEMA=uta_20210129\n```\n\nNote that [seqrepo-rs](https://github.com/varfish-org/seqrepo-rs) is used for access to the genome contig sequence.\nIt is inconvenient to provide sub sets of sequences in SeqRepo format.\nInstead, we use a build-cache/read-cache approach that is also used by `biocommons/hgvs`.\n\nTo build the cache, you will first need a download of the seqrepo [as described in biocommons/biocommons.seqrepo Quickstart](https://github.com/biocommons/biocommons.seqrepo#quick-start).\nThen, you configure the running of tests for `hgvs-rs` as follows:\n\n```\nexport TEST_SEQREPO_CACHE_MODE=write\nexport TEST_SEQREPO_PATH=path/to/seqrepo/instance\nexport TEST_SEQREPO_CACHE_PATH=tests/data/seqrepo_cache.fasta\n```\n\nWhen running the tests with `cargo test`, the cache file will be (re-)written.\nNote that you have to use `cargo test --release -- --test-threads 1 --include-ignored` when writing the cache for enforcing a single test writing to the cache at any time.\nIf you don't want to regenerate the cache then you can use the following settings.\nWith these settings, the cache will only be read.\n\n```\nexport TEST_SEQREPO_CACHE_MODE=read\nexport TEST_SEQREPO_CACHE_PATH=tests/data/seqrepo_cache.fasta\n```\n\nAfter either this, you can run the tests.\n\n```\ncargo test\n```\n\n## Creating Reduced UTA Databases\n\nThe script `tests/data/data/bootstrap.sh` allows to easily build a reduced set of the UTA database given a list of genes.\nThe process is as follows:\n\n1. You edit `bootstrap.sh` to include the HGNC gene symbols of the transcripts that you want to use.\n2. You run the bootstrap script.\n   This will download the given UTA dump and reduce it to the information related to these transcripts.\n\n```\n$ bootstrap.sh http://dl.biocommons.org/uta uta_20210129\n```\n\nThe `*.pgd.gz` file is added to the Git repository via `git-lfs` and in CI, this minimal database will be used.\n\n## Some Timing Results\n\n(I don't want to call it \"benchmarks\" yet.)\n\n### Deserialization of large cdot JSON files.\n\nHost:\n\n- CPU: Intel(R) Xeon(R) E-2174G CPU @ 3.80GHz\n- Disk: NVME (WDC CL SN720 SDAQNTW-1T00-2000)\n\nSingle Running Time Results (no repetitions/warm start etc.)\n\n- ENSEMBL: 37s\n- RefSeq: 67s\n\nThis includes loading and deserialization of the records only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarfish-org%2Fhgvs-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarfish-org%2Fhgvs-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarfish-org%2Fhgvs-rs/lists"}