Skip to content

Commit 7565b51

Browse files
authored
Merge branch 'main' into dependabot/cargo/noodles-0.109.0
2 parents e96d827 + 97ab6cf commit 7565b51

112 files changed

Lines changed: 18136 additions & 1721 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docs.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Deploy website
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- 'docs/**'
8+
- '.github/workflows/docs.yml'
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
pages: write
14+
id-token: write
15+
16+
concurrency:
17+
group: pages
18+
cancel-in-progress: true
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
defaults:
24+
run:
25+
working-directory: docs
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v6
29+
30+
- name: Install pnpm
31+
uses: pnpm/action-setup@v6
32+
with:
33+
package_json_file: docs/package.json
34+
35+
- name: Setup Node
36+
uses: actions/setup-node@v6
37+
with:
38+
node-version: 22
39+
cache: pnpm
40+
cache-dependency-path: docs/pnpm-lock.yaml
41+
42+
- name: Install dependencies
43+
run: pnpm install --frozen-lockfile
44+
45+
- name: Build site
46+
run: pnpm build
47+
48+
- name: Upload artifact
49+
uses: actions/upload-pages-artifact@v5
50+
with:
51+
path: docs/dist
52+
53+
deploy:
54+
needs: build
55+
runs-on: ubuntu-latest
56+
environment:
57+
name: github-pages
58+
url: ${{ steps.deployment.outputs.page_url }}
59+
steps:
60+
- name: Deploy to GitHub Pages
61+
id: deployment
62+
uses: actions/deploy-pages@v5

.github/workflows/release.yml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ jobs:
7272
exit 1
7373
fi
7474
75-
LOCK_VERSION=$(awk '/^name = "ruSTAR"/{found=1} found && /^version =/{print; exit}' Cargo.lock | sed 's/.*"\(.*\)"/\1/')
75+
LOCK_VERSION=$(awk '/^name = "rustar-aligner"/{found=1} found && /^version =/{print; exit}' Cargo.lock | sed 's/.*"\(.*\)"/\1/')
7676
if [ "$LOCK_VERSION" != "$RAW" ]; then
7777
echo "::error::Cargo.lock version ($LOCK_VERSION) does not match Cargo.toml version ($RAW)"
7878
exit 1
@@ -160,7 +160,7 @@ jobs:
160160
id: package
161161
shell: bash
162162
run: |
163-
BIN="ruSTAR"
163+
BIN="rustar-aligner"
164164
EXT="${{ matrix.ext }}"
165165
ARCHIVE="${BIN}-${{ matrix.name }}"
166166
@@ -402,7 +402,7 @@ jobs:
402402
run: |
403403
gh release create "${{ needs.check-release.outputs.version }}" \
404404
--target "${{ github.sha }}" \
405-
--title "ruSTAR ${{ needs.check-release.outputs.version }}" \
405+
--title "rustar-aligner ${{ needs.check-release.outputs.version }}" \
406406
--notes-file /tmp/release-notes.md
407407
408408
- name: Create release (auto-generated notes)
@@ -412,7 +412,7 @@ jobs:
412412
run: |
413413
gh release create "${{ needs.check-release.outputs.version }}" \
414414
--target "${{ github.sha }}" \
415-
--title "ruSTAR ${{ needs.check-release.outputs.version }}" \
415+
--title "rustar-aligner ${{ needs.check-release.outputs.version }}" \
416416
--generate-notes
417417
418418
# ------------------------------------------------------------------
@@ -443,16 +443,10 @@ jobs:
443443
444444
# ------------------------------------------------------------------
445445
# 5. Publish to crates.io (release only, last step)
446-
#
447-
# TODO: The `rustar` crate name is already taken on crates.io. This job will
448-
# fail until a free name is chosen in `Cargo.toml`. Gated off with `if:
449-
# false` for now — flip back to `needs.check-release.outputs.is_release ==
450-
# 'true'` once the name is resolved (and a crates.io trusted-publisher
451-
# config has been set up for this repository).
452446
# ------------------------------------------------------------------
453447
publish-crate:
454448
name: Publish to crates.io
455-
if: false
449+
if: needs.check-release.outputs.is_release == 'true'
456450
needs: [check-release, upload-binaries]
457451
runs-on: ubuntu-latest
458452
permissions:

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# ruSTAR Changelog
1+
# rustar-aligner Changelog
22

33
<!--
44
Release notes are extracted from this file by the release workflow.
55
Each released version needs a heading of the form:
66
7-
## [Version X.Y.Z](https://github.com/Psy-Fer/ruSTAR/releases/tag/vX.Y.Z) - YYYY-MM-DD
7+
## [Version X.Y.Z](https://github.com/Psy-Fer/rustar-aligner/releases/tag/vX.Y.Z) - YYYY-MM-DD
88
99
Sections commonly used: Features, Bug fixes, Other changes.
1010
-->

CLAUDE.md

Lines changed: 24 additions & 27 deletions
Large diffs are not rendered by default.

CONTRIBUTING.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Contributing to rustar-aligner
2+
3+
## Building and testing
4+
5+
Rust 2024 edition. Standard Cargo commands:
6+
7+
```bash
8+
cargo build # debug build
9+
cargo build --release # release build
10+
cargo test # run all tests
11+
cargo clippy # lint (zero warnings expected)
12+
cargo fmt --check # formatting check
13+
```
14+
15+
CI runs on Linux (x86_64, x86-64-v3, aarch64), macOS (aarch64), and Windows (x86_64). PRs must pass all CI checks before merging.
16+
17+
## Test data
18+
19+
Small synthetic and yeast test data lives in `test/`. Integration tests in `tests/` use the synthetic genome. Differential testing against STAR reference outputs is done via `test/compare_sam.py` and `test/compare_pe.py`.
20+
21+
## Project history
22+
23+
rustar-aligner was written as a faithful port of [STAR](https://github.com/alexdobin/STAR) by Alexander Dobin. Up to the initial release, the goal was behavioral parity with STAR — matching its algorithms, thresholds, and output formats as closely as possible. Notes from that development phase are in `docs-old/` (`docs-old/dev/` and the `phase*.md` files).
24+
25+
Future development is not bound by that constraint. Adding STARsolo, new features, or diverging from STAR behavior is entirely welcome.
26+
27+
## Documentation site
28+
29+
The user-facing docs site is an [Astro Starlight](https://starlight.astro.build/) project under `docs/`:
30+
31+
```bash
32+
cd docs
33+
pnpm install
34+
pnpm dev # local dev server
35+
pnpm build # production build into docs/dist/
36+
```
37+
38+
Content lives under `docs/src/content/docs/` as Markdown / MDX files with YAML frontmatter (`title`, `description`). Sidebar order is configured in `docs/astro.config.mjs`. Site-wide design tokens (colours, fonts, graph-paper background, wave dividers) live in `docs/src/styles/custom.css` and can be tuned in one place.
39+
40+
## License
41+
42+
MIT, matching the original STAR license.

Cargo.lock

Lines changed: 11 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
[package]
2-
name = "ruSTAR"
3-
# TODO: the `rustar` crate name is already taken on crates.io. A different
4-
# published name must be chosen before the first `cargo publish` (for example
5-
# `rustar-aligner` or `rustar-rnaseq`). The `publish-crate` job in
6-
# `.github/workflows/release.yml` is gated off until this is resolved.
2+
name = "rustar-aligner"
73
version = "0.1.0"
84
edition = "2024"
95
rust-version = "1.88"
106
authors = ["James Ferguson"]
117
description = "A Rust reimplementation of STAR (Spliced Transcripts Alignment to a Reference), the RNA-seq aligner"
128
license = "MIT"
13-
repository = "https://github.com/Psy-Fer/ruSTAR"
9+
repository = "https://github.com/Psy-Fer/rustar-aligner"
1410
readme = "README.md"
1511
keywords = ["bioinformatics", "rna-seq", "aligner", "sequencing", "star"]
1612
categories = ["command-line-utilities", "science"]
@@ -21,18 +17,12 @@ exclude = [
2117
".github/",
2218
"Dockerfile",
2319
".dockerignore",
24-
"ALIGNMENT_FIXES.md",
25-
"BUGFIX_2026-02-09.md",
26-
"PERFORMANCE_FIX.md",
27-
"PHASE12_COMPLETE.md",
2820
"ROADMAP.md",
29-
"STAR_SA_RESEARCH.md",
30-
"TESTING_SUMMARY.md",
3121
"CLAUDE.md",
3222
]
3323

3424
[[bin]]
35-
name = "ruSTAR"
25+
name = "rustar-aligner"
3626
path = "src/main.rs"
3727

3828
[dependencies]
@@ -50,9 +40,9 @@ rayon = "1"
5040
dashmap = "6"
5141
chrono = "0.4"
5242
rand = "0.8"
43+
tempfile = "3"
5344

5445
[dev-dependencies]
55-
tempfile = "3"
5646
assert_cmd = "2"
5747
predicates = "3"
5848

Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ RUN HOST_TRIPLE=$(rustc -vV | awk '/^host:/ {print $2}') && \
1616
GIT_SHORT_HASH="${GIT_SHORT_HASH}" \
1717
cargo build --release --target "$HOST_TRIPLE" \
1818
${CPU_TARGET:+--config "target.'$HOST_TRIPLE'.rustflags=['-C', 'target-cpu=$CPU_TARGET']"} \
19-
&& strip "target/$HOST_TRIPLE/release/ruSTAR" \
20-
&& cp "target/$HOST_TRIPLE/release/ruSTAR" /ruSTAR
19+
&& strip "target/$HOST_TRIPLE/release/rustar-aligner" \
20+
&& cp "target/$HOST_TRIPLE/release/rustar-aligner" /rustar-aligner
2121

2222
# ---- Runtime stage ----
2323
FROM debian:bookworm-slim
@@ -27,7 +27,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
2727
procps \
2828
&& rm -rf /var/lib/apt/lists/*
2929

30-
COPY --from=builder /ruSTAR /usr/local/bin/ruSTAR
31-
COPY --from=builder /ruSTAR /usr/local/bin/STAR
30+
COPY --from=builder /rustar-aligner /usr/local/bin/rustar-aligner
31+
COPY --from=builder /rustar-aligner /usr/local/bin/STAR
3232

33-
CMD ["ruSTAR"]
33+
CMD ["rustar-aligner"]

0 commit comments

Comments
 (0)