{"id":50137761,"url":"https://github.com/scverse/rustar-aligner","last_synced_at":"2026-05-23T23:08:09.190Z","repository":{"id":336810455,"uuid":"1151143834","full_name":"scverse/rustar-aligner","owner":"scverse","description":"A rust implementation of STAR","archived":false,"fork":false,"pushed_at":"2026-05-12T12:37:43.000Z","size":2974,"stargazers_count":39,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-12T14:32:57.400Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://scverse.org/rustar-aligner/","language":"Rust","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/scverse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-06T05:20:41.000Z","updated_at":"2026-05-12T13:08:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/scverse/rustar-aligner","commit_stats":null,"previous_names":["psy-fer/rustar","psy-fer/rustar-aligner","scverse/rustar-aligner"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/scverse/rustar-aligner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Frustar-aligner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Frustar-aligner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Frustar-aligner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Frustar-aligner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scverse","download_url":"https://codeload.github.com/scverse/rustar-aligner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Frustar-aligner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33415047,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: 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":[],"created_at":"2026-05-23T23:08:07.641Z","updated_at":"2026-05-23T23:08:09.180Z","avatar_url":"https://github.com/scverse.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![rustar-aligner](docs/src/assets/rustar-logo.svg)\n\nA Rust reimplementation of [STAR](https://github.com/alexdobin/STAR) (Spliced Transcripts Alignment to a Reference), the widely-used RNA-seq aligner originally written in C++ by Alexander Dobin.\n\n## Overview\n\nrustar-aligner aims to be a faithful port of STAR, matching the original behavior as closely as possible. It uses the same genome index format, accepts the same `--camelCase` command-line parameters, and produces compatible SAM/BAM output.\n\n**Current status**: End-to-end single-end and paired-end RNA-seq alignment with splice junction detection, two-pass mode, chimeric alignment detection (including multi-junction Tier 3), gene-level quantification, and multi-threaded parallel processing. 396 tests passing (383 unit + 8 integration + others), 0 clippy warnings.\n\n## Quick Start\n\n### Build\n\n```bash\ncargo build --release\n```\n\n### Generate genome index\n\n```bash\ntarget/release/rustar-aligner --runMode genomeGenerate \\\n  --genomeDir /path/to/genome_index \\\n  --genomeFastaFiles /path/to/genome.fa\n```\n\n### Align reads\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads.fq \\\n  --outSAMtype SAM \\\n  --outSAMstrandField intronMotif \\\n  --outFileNamePrefix /path/to/output_\n```\n\n### Paired-end alignment\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads_1.fq reads_2.fq \\\n  --outSAMtype SAM \\\n  --outFileNamePrefix /path/to/output_\n```\n\n### BAM output\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads.fq \\\n  --outSAMtype BAM Unsorted \\\n  --outFileNamePrefix /path/to/output_\n```\n\n### Coordinate-sorted BAM output\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads.fq \\\n  --outSAMtype BAM SortedByCoordinate \\\n  --outFileNamePrefix /path/to/output_\n```\n\n### Two-pass mode\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads.fq \\\n  --twopassMode Basic \\\n  --outFileNamePrefix /path/to/output_\n```\n\n### Gene-level counts\n\n```bash\ntarget/release/rustar-aligner \\\n  --genomeDir /path/to/genome_index \\\n  --readFilesIn reads.fq \\\n  --sjdbGTFfile /path/to/annotation.gtf \\\n  --quantMode GeneCounts \\\n  --outFileNamePrefix /path/to/output_\n```\n\n## Accuracy Comparison vs STAR\n\nBenchmarked on 10,000 yeast RNA-seq reads (150 bp, ERR12389696), compared to STAR 2.7.x with identical parameters and genome index.\n\n### Single-End (10k reads, 150 bp SE)\n\n| Metric | rustar-aligner | STAR |\n|--------|----------------|------|\n| Unique mapped | 82.6% | 82.6% |\n| Multi-mapped | 7.4% | 7.4% |\n| Total mapped | 90.0% | 90.0% |\n| Position agreement | 96.5% raw / **99.815% tie-adjusted** | — |\n| STAR-only reads | **0** | — |\n| rustar-aligner-only reads | **0** | — |\n| CIGAR-only diffs | 1 (seed-level tie in homopolymer) | — |\n\n\u003e **Tie-adjusted**: 299 of 313 disagreements are verified genuine ties — both tools find identical alignment sets but select different copies due to SA-order or RNG tie-breaking differences. Excluding these, faithfulness is 99.815% (8,611/8,627 non-tie reads exact).\n\n### Paired-End (10k read pairs, 150 bp)\n\n| Metric | rustar-aligner | STAR |\n|--------|----------------|------|\n| Both mates mapped | **8,390** | 8,390 |\n| Half-mapped pairs | **0** | 0 |\n| Unmapped pairs | 0 | 0 |\n| PE faithfulness (tie-adjusted) | **99.883%** | — |\n| MAPQ inflations | **0** | — |\n| MAPQ deflations | **0** | — |\n| NH tag diffs | **0** | — |\n| Proper-pair diffs | **0** | — |\n\n\u003e **PE faithfulness**: 16,284 / 16,306 mate alignments exactly match STAR (same position, CIGAR, MAPQ, proper-pair flag, and NH tag). 475 diffs excluded as tie-breaking differences (same MAPQ+NH, different repeat copy chosen).\n\n## Supported Features\n\n- Single-end and paired-end alignment with mate rescue\n- SAM, unsorted BAM, and coordinate-sorted BAM output (`--outSAMtype SAM`, `BAM Unsorted`, or `BAM SortedByCoordinate`)\n- Multi-threaded parallel alignment (`--runThreadN`)\n- GTF-based junction annotation with scoring bonus (`--sjdbGTFfile`)\n- Two-pass mode for novel junction discovery (`--twopassMode Basic`)\n- SJDB insertion into genome index at genomeGenerate time\n- Chimeric alignment detection — SE and PE, 4-tier pipeline: transcript-pair search, multi-cluster, soft-clip re-seeding, residual outer re-seeding for multi-junction fusions (`--chimSegmentMin`)\n- Gene-level read counting (`--quantMode GeneCounts` → `ReadsPerGene.out.tab`)\n- Transcriptome-coordinate SAM output (`--quantMode TranscriptomeSAM`)\n- Post-alignment read filtering (`--outFilterType BySJout`)\n- Splice junction output (`SJ.out.tab`)\n- Unmapped read output to FASTQ (`--outReadsUnmapped Fastx` → `Unmapped.out.mate1` / `mate2`)\n- Gzip-compressed FASTQ input (`--readFilesCommand zcat`)\n- Read group tags (`--outSAMattrRGline`)\n- Seeded RNG for reproducible tie-breaking (`--runRNGseed`)\n- SAM optional tags: NH, HI, AS, NM, nM, XS, jM, jI, MD\n- `--outSAMattributes` control (Standard/All/None/explicit list)\n- SECONDARY flag (0x100) on multi-mapper alignments\n- Configurable output limits (`--outSAMmultNmax`)\n- Bidirectional seed search with `scoreSeedBest` pre-extension\n- Junction boundary optimization (jR scanning)\n- Log.final.out statistics file (STAR-compatible, MultiQC-parseable)\n\n## Known Limitations\n\n- No STARsolo single-cell features (Phase 14, deferred)\n\nSee [ROADMAP.md](ROADMAP.md) for detailed implementation tracking.\n\n## Building from Source\n\nRequires Rust 2024 edition (rustc 1.85+).\n\n```bash\ncargo build --release       # Release build\ncargo test                  # Run tests\ncargo clippy --all-targets  # Lint\ncargo fmt                   # Format\n```\n\n## Development\n\nThe majority of rustar-aligner's code was written by [Claude Code](https://claude.ai/code) (Anthropic's AI coding assistant), with technical direction, architecture decisions, and validation by the project maintainer.\n\n## License\n\nMIT (matching the original STAR license)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Frustar-aligner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscverse%2Frustar-aligner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Frustar-aligner/lists"}