diff --git a/docs/source/dataset.md b/docs/source/dataset.md index 880436be..47503881 100644 --- a/docs/source/dataset.md +++ b/docs/source/dataset.md @@ -168,5 +168,18 @@ win = ds.with_seqs("variant-windows", gvl.VarWindowOpt(...)).with_output_format( win.fields["AF"] # same field, alongside win.fields["start"]/["ilen"] ``` +Allele fields index per variant, aligned with the scalar fields on the same shared offsets: + +```python +rv = ds.with_seqs("variants")[0, 0] + +for pos, alt in zip(rv.start[0][0], rv.alt[0][0]): + print(pos, alt) # 10 b'A' / 20 b'GG' +``` + +This requires **seqpro >= 0.22**. On earlier versions `rv.alt[0][0]` returned the +haplotype's alleles concatenated into one `bytes`, which misaligns against +`rv.start` as soon as a window contains an indel. + See the `genvarloader` skill's `.svar2` `var_fields` section for the field-provenance and dummy-fill details. diff --git a/docs/superpowers/plans/2026-07-27-seqpro-0.22-bump.md b/docs/superpowers/plans/2026-07-27-seqpro-0.22-bump.md new file mode 100644 index 00000000..17157f54 --- /dev/null +++ b/docs/superpowers/plans/2026-07-27-seqpro-0.22-bump.md @@ -0,0 +1,509 @@ +# seqpro 0.22.0 Bump Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Bump seqpro 0.21.1 → 0.22.0 so `RaggedVariants.alt[i]` / `ref[i]` return per-variant alleles instead of one concatenated `bytes` per haplotype, closing [#330](https://github.com/mcvickerlab/GenVarLoader/issues/330). + +**Architecture:** Pure dependency bump. The defect and its fix are entirely upstream in `seqpro.rag.Ragged.__getitem__` ([ML4GLand/SeqPro#71](https://github.com/ML4GLand/SeqPro/issues/71)). gvl changes two version pins, regenerates the lock, adds the regression test whose absence let the bug ship, and documents the new access pattern. No gvl source change is expected — Task 2 exists to prove that rather than assume it. + +**Tech Stack:** Python 3.10, pixi (envs/deps), maturin (Rust+Python build), pytest, commitizen (versioning), seqpro 0.22.0. + +**Spec:** `docs/superpowers/specs/2026-07-27-seqpro-0.22-bump-design.md` + +## Global Constraints + +- **Branch:** `worktree-deps+seqpro-0.22`, already created off `origin/main`. PR targets `main`, **not** `streaming`. +- **seqpro floor:** `seqpro>=0.22` in `pyproject.toml`; `seqpro = "==0.22.0"` in `pixi.toml`. +- **`Cargo.toml` is not touched.** `seqpro-core = "0.1"` stays. The 0.22.0 release diff (`0.21.2...0.22.0`) changed only `python/seqpro/rag/_core.py` plus tests, docs, `pyproject.toml`, and `CHANGELOG.md` — no Rust. +- **Breaking-change framing:** the pin-bump commit is `fix!:` with a `BREAKING CHANGE:` footer. `pyproject.toml` sets `major_version_zero = true`, so commitizen cuts **0.40.2 → 0.41.0** (not 1.0.0). Do not run `cz bump` — CI/release does that. +- **Do not run `pixi run -e dev test` from the repo root of the main checkout.** All commands run from the worktree directory `/carter/users/dlaub/projects/GenVarLoader/.claude/worktrees/deps+seqpro-0.22`. +- **Subagent file-edit note:** implementer subagents cannot use the Write/Edit tools inside this worktree (isolation guard). Make edits via Bash (`python - <<'EOF'`, `cat >`, etc.) and commit with plain `git`. +- **Never** `git stash` / `git stash pop` bare — the stash stack is shared across worktrees. Use a WIP commit instead. + +## Environment (already set up — verify, don't rebuild) + +The worktree carries a working `dev` env: `.pixi/envs/dev` with **seqpro 0.21.1**, an editable `genvarloader.pth` pointing at this worktree's `python/`, and a compiled `python/genvarloader/genvarloader.abi3.so`. + +This matters for Task 1: the "red" step needs the env **still at 0.21.1**. Do not run `pixi install` before Task 1 Step 2. + +Verify before starting: + +```bash +cd /carter/users/dlaub/projects/GenVarLoader/.claude/worktrees/deps+seqpro-0.22 +ls .pixi/envs/dev/lib/python3.10/site-packages/seqpro-*.dist-info # expect seqpro-0.21.1.dist-info +ls python/genvarloader/genvarloader.abi3.so # expect the file to exist +``` + +If the `.so` is missing, rebuild it cheaply by sharing the main checkout's cargo target dir: + +```bash +CARGO_TARGET_DIR=/carter/users/dlaub/projects/GenVarLoader/target \ + pixi run -e dev maturin develop --release +``` + +## File Structure + +| File | Change | Responsibility | +|---|---|---| +| `tests/unit/dataset/test_ragged_variants_indexing.py` | **create** | Regression test: allele fields index per-variant, aligned with `start`/`ilen`. The gate for #330. | +| `pyproject.toml` | modify line 13 | Dependency floor for downstream users. | +| `pixi.toml` | modify line 104 | Exact pin for the `py310` feature (backs `dev`, `default`, `py310`, `no-torch`, `notebook`, `splice`). | +| `pixi.lock` | regenerate | Resolved versions for every environment. | +| `skills/genvarloader/SKILL.md` | modify (~line 373 block, + Common gotchas) | Agent-facing reference for `RaggedVariants` access. | +| `docs/source/dataset.md` | modify (`## Variant fields (var_fields)` section, ~line 145-172) | User-facing prose for reading variants. | + +`docs/source/api.md` is **not** touched — no symbol enters or leaves `__all__`. + +## Task Dependencies + +``` +Task 1 (test + bump) ──┬──> Task 2 (whole-tree verification) ──> Task 4 (PR) + └──> Task 3 (docs) ──┘ +``` + +**Tasks 2 and 3 are independent and may run in parallel** (Task 2 touches source + reports; Task 3 touches only docs). Use superpowers:dispatching-parallel-agents for them. If Task 2 uncovers fallout that changes user-visible behavior, re-open Task 3 to match. + +--- + +### Task 1: Regression test + dependency bump + +The red/green cycle is the whole point: the test must be **seen failing on 0.21.1** before the bump, which is what proves it actually gates the fix (spec success criterion 3). The existing suite never caught #330 because `tests/unit/dataset/test_flat_variants_type.py` asserts via `.to_ak().to_list()`, which is structure-preserving and therefore blind to the `__getitem__` bug. + +**Files:** +- Create: `tests/unit/dataset/test_ragged_variants_indexing.py` +- Modify: `pyproject.toml:13` +- Modify: `pixi.toml:104` +- Regenerate: `pixi.lock` + +**Interfaces:** +- Consumes: `genvarloader.RaggedVariants`; `seqpro.rag.Ragged.from_offsets(data, shape, offsets, str_offsets=...)` and `.to_strings()`. +- Produces: nothing later tasks import. Task 3 documents the behavior this task locks in. + +- [ ] **Step 1: Write the failing test** + +Create `tests/unit/dataset/test_ragged_variants_indexing.py`: + +```python +"""Integer indexing into RaggedVariants allele fields is per-variant. + +Regression test for #330 / ML4GLand/SeqPro#71: on seqpro <= 0.21.2, indexing a +string-under-axis Ragged concatenated the whole group into one bytes object, +discarding the per-variant boundaries that str_offsets already held. Numeric +fields on the same shared offsets stayed per-variant, so alt/ref silently +disagreed in length with start/ilen. + +The multi-byte allele below is load-bearing. With SNPs only every allele is one +byte, the counts coincide, and this test passes on the buggy seqpro too -- +gating nothing. +""" + +from __future__ import annotations + +import numpy as np +from seqpro.rag import Ragged + +from genvarloader import RaggedVariants + + +def _build_rv() -> RaggedVariants: + """(1, 2, ~v): hap 0 holds 2 variants (alt 'A', 'GG'), hap 1 holds 1 ('TC').""" + alt_chars = np.frombuffer(b"AGGTC", dtype="S1") + var_off = np.array([0, 2, 3], dtype=np.int64) # hap -> variant index + str_off = np.array([0, 1, 3, 5], dtype=np.int64) # variant -> byte index + + alt = Ragged.from_offsets( + alt_chars, (1, 2, None), var_off, str_offsets=str_off + ).to_strings() + start = Ragged.from_offsets( + np.array([10, 20, 30], dtype=np.int32), (1, 2, None), var_off + ) + ilen = Ragged.from_offsets( + np.array([0, 1, 1], dtype=np.int32), (1, 2, None), var_off + ) + return RaggedVariants(alt=alt, start=start, ilen=ilen) + + +def test_alt_indexes_per_variant_not_concatenated(): + """alt[0][hap] yields one entry per variant, not one concatenated blob.""" + rv = _build_rv() + + assert list(rv.alt[0][0]) == [b"A", b"GG"] + assert list(rv.alt[0][1]) == [b"TC"] + + +def test_alt_count_matches_scalar_fields(): + """alt, start and ilen share one offsets object, so their per-hap counts agree.""" + rv = _build_rv() + + for hap, expected_n in ((0, 2), (1, 1)): + assert len(rv.alt[0][hap]) == expected_n + assert len(np.asarray(rv.start[0][hap])) == expected_n + assert len(np.asarray(rv.ilen[0][hap])) == expected_n + + +def test_alt_aligns_elementwise_with_start(): + """The obvious consumer pattern -- zip(start, alt) -- is correct.""" + rv = _build_rv() + + pairs = list(zip(np.asarray(rv.start[0][0]).tolist(), rv.alt[0][0])) + + assert pairs == [(10, b"A"), (20, b"GG")] +``` + +**Why this idiom.** seqpro 0.22.0's own regression tests for #71 +(`tests/test_ragged_core.py::test_string_under_axis_index_preserves_boundaries` and +`::test_string_under_axis_index_multidim`) establish that peeling a group returns a +`Ragged` on which `len()` works and iteration yields `bytes` — `list(s[1]) == [b"TC"]`, +`len(s[i]) == int(s.lengths[i])`. The multidim test uses exactly this `(b, p, ~v)` → +`rag[0]` → `row[hap]` chain. Do not add a `bytes(...)` conversion around the iterated +elements; they are already `bytes`. + +- [ ] **Step 2: Run the test and verify it FAILS on seqpro 0.21.1** + +```bash +pixi run -e dev pytest tests/unit/dataset/test_ragged_variants_indexing.py -v +``` + +Expected: **all three tests FAIL.** On 0.21.1, `rv.alt[0][0]` returns the concatenated +`b"AGG"` instead of a `Ragged` of two alleles, so: + +- `list(rv.alt[0][0])` is `[65, 71, 71]` — iterating a `bytes` object yields **ints**, not + `bytes` — against the expected `[b"A", b"GG"]` +- `len(rv.alt[0][0])` is `3` (bytes) against the expected `2` (variants) + +**This failure is the evidence for spec success criterion 3. Record the actual failure output in the task report** — a plan step that says "expect it to fail" is not evidence; the pasted output is. + +If the tests *pass* here, stop and report. It means the env is not on 0.21.1, and the test is not gating anything. + +- [ ] **Step 3: Bump the two pins** + +`pyproject.toml` line 13, inside the `dependencies` list: + +```diff +- "seqpro>=0.20", ++ "seqpro>=0.22", +``` + +`pixi.toml` line 104, inside `[feature.py310.pypi-dependencies]`: + +```diff +-seqpro = "==0.21.1" ++seqpro = "==0.22.0" +``` + +Leave `Cargo.toml` alone. + +- [ ] **Step 4: Regenerate the lock and install** + +```bash +pixi install -e dev +``` + +This re-solves and rewrites `pixi.lock`. Confirm the new version actually landed: + +```bash +grep -o "seqpro-[0-9.]*" pixi.lock | sort -u +ls .pixi/envs/dev/lib/python3.10/site-packages/seqpro-*.dist-info +``` + +Expected: `seqpro-0.22.0` and no `0.21.1` remaining. + +- [ ] **Step 5: Run the test and verify it PASSES** + +```bash +pixi run -e dev pytest tests/unit/dataset/test_ragged_variants_indexing.py -v +``` + +Expected: **3 passed.** + +- [ ] **Step 6: Lint the new test file** + +```bash +pixi run -e dev ruff check tests/unit/dataset/test_ragged_variants_indexing.py +pixi run -e dev ruff format tests/unit/dataset/test_ragged_variants_indexing.py +``` + +- [ ] **Step 7: Commit** + +```bash +git add tests/unit/dataset/test_ragged_variants_indexing.py pyproject.toml pixi.toml pixi.lock +git commit -F - <<'EOF' +fix!: seqpro>=0.22 for per-variant allele indexing (#330) + +RaggedVariants.alt[i]/ref[i] returned one concatenated bytes per +haplotype while start/ilen returned per-variant values, because +seqpro's Ragged.__getitem__ mapped a string-under-axis group straight +to a byte range and dropped the interior str_offsets. zip(start, alt) +was silently wrong -- and invisible for SNP-only data, since 1-byte +alleles make the counts coincide. + +Fixed upstream in seqpro 0.22.0 (ML4GLand/SeqPro#71): integer indexing +on a string-under-axis Ragged now returns a Ragged of strings. + +Bumps the pyproject floor to >=0.22 and the pixi py310 pin to ==0.22.0. +Cargo.toml is untouched -- the 0.22.0 diff changed no Rust. Raising the +floor also removes a latent skew: py311-313 declare no seqpro pin and +inherit the floor, so a lock refresh under >=0.20 would have floated +them to 0.22 while py310 stayed at 0.21. + +Adds the regression test whose absence let this ship: the existing +suite asserts via to_ak().to_list(), which is structure-preserving and +blind to the bug. The new test uses a multi-byte allele, without which +it would pass on the buggy version too. + +BREAKING CHANGE: indexing a RaggedVariants allele field by integer +(rv.alt[b][h], rv.ref[b][h]) now yields per-variant alleles instead of +one concatenated bytes object. Callers relying on the concatenated +value can recover it with b"".join(...). Requires seqpro>=0.22. + +Closes #330 + +Co-Authored-By: Claude Opus 5 +EOF +``` + +--- + +### Task 2: Whole-tree verification and fallout audit + +Proves the bump is safe. The spec predicts no gvl source change is needed, but predictions are not evidence. + +**Files:** +- Read: `python/genvarloader/_shm_layout.py`, `python/genvarloader/_dataset/_query.py`, `python/genvarloader/_dataset/_tracks.py`, `python/genvarloader/_dataset/_svar2_haps.py`, `python/genvarloader/_dataset/_flat_variants.py`, `python/genvarloader/_dataset/_rag_variants.py` +- Modify: only if the suite surfaces a real break. + +**Interfaces:** +- Consumes: the bumped env from Task 1. +- Produces: a verification report. No new symbols. + +- [ ] **Step 1: Generate test data if absent** + +```bash +pixi run -e dev gen +``` + +Skip if `tests/data` is already populated from a previous run. + +- [ ] **Step 2: Run the whole tree** + +Per CLAUDE.md, run the **entire** tree — not `tests/dataset` alone. A scoped run skips `tests/unit/`, which is exactly where the new test lives. + +```bash +pixi run -e dev pytest tests -q 2>&1 | tail -40 +``` + +Expected: all pass. This takes a while; run it to completion rather than backgrounding it and moving on. + +- [ ] **Step 3: Run the Rust tests** + +```bash +LD_LIBRARY_PATH=$PWD/.pixi/envs/dev/lib:$LD_LIBRARY_PATH cargo test --release 2>&1 | tail -20 +``` + +The `LD_LIBRARY_PATH` prefix is required — without it the test binary cannot load `libpython`. + +Expected: all pass. Nothing in this change touches Rust, so a failure here means something unrelated is broken; report it, do not "fix" it into this branch. + +- [ ] **Step 4: Audit the six string-Ragged consumers** + +Read each site and confirm it only **constructs** string Raggeds (`Ragged.from_offsets(..., str_offsets=...)` → `.to_strings()`) or accesses fields **by name** (`rv[fname]`, `f._rl.str_offsets`). Neither path changed in 0.22.0. Integer indexing of a string field is the only changed behavior. + +```bash +grep -n "to_chars\|str_offsets\|to_strings" \ + python/genvarloader/_shm_layout.py \ + python/genvarloader/_dataset/_query.py \ + python/genvarloader/_dataset/_tracks.py \ + python/genvarloader/_dataset/_svar2_haps.py \ + python/genvarloader/_dataset/_flat_variants.py \ + python/genvarloader/_dataset/_rag_variants.py +``` + +Pay particular attention to `_shm_layout.py` (lines ~174, 192-193, 695, 746): it decomposes allele fields into `outer_offsets` / `inner_offsets` / `leaf_data` for the `double_buffered` loader's shared-memory transport and rebuilds them with `to_strings()`. It is the most intricate consumer and the likeliest place for a representation change to bite. + +- [ ] **Step 5: Typecheck and lint** + +```bash +pixi run -e dev typecheck +pixi run -e dev ruff check python/ tests/ +``` + +Cover `python/` **and** `tests/` — `python/` alone misses test-only issues. + +- [ ] **Step 6: Commit only if something needed fixing** + +If Steps 2-5 were clean, there is nothing to commit; record that in the task report and move on. Do **not** manufacture a commit. + +If a real break surfaced: + +```bash +git add +git commit -m "fix: " +``` + +--- + +### Task 3: Documentation + +A user-visible behavior change, so CLAUDE.md's docs-audit gate applies. Nothing currently in the docs is *false* — no prose demonstrates integer allele indexing — so this work is additive. + +**Files:** +- Modify: `skills/genvarloader/SKILL.md` +- Modify: `docs/source/dataset.md` + +**Interfaces:** +- Consumes: the behavior Task 1 locked in. +- Produces: nothing importable. + +- [ ] **Step 1: Update SKILL.md's `RaggedVariants` reference block** + +Find the bullet beginning ``- `gvl.Ragged`, `gvl.RaggedAnnotatedHaps`, `gvl.RaggedVariants`, `gvl.RaggedIntervals``` (around line 373). It already documents structural behavior, including "An int index collapses the leading axis (numpy-consistent); slice/array indexing preserves it." + +Immediately after that sentence, add: + +```markdown +Indexing an **allele** field (`rv.alt[b][h]`, `rv.ref[b][h]`) yields the alleles of that haplotype **per variant**, aligned one-for-one with `rv.start[b][h]` / `rv.ilen[b][h]`, so `zip(rv.start[b][h], rv.alt[b][h])` pairs each position with its own allele. This requires **seqpro >= 0.22**; on older seqpro the same expression returned every allele of the group concatenated into a single `bytes`, which silently misaligned against the scalar fields for any group containing a multi-byte (indel) allele. +``` + +- [ ] **Step 2: Add a Common gotchas entry to SKILL.md** + +In the "Common gotchas" list (near the existing entries about `dosage` and flank tokens, around lines 447-453), add: + +```markdown +- **Allele fields index per-variant, and need `seqpro>=0.22`.** `rv.alt[b][h]` gives one allele per variant, matching `rv.start[b][h]`. On seqpro `<0.22` it returned the group's alleles concatenated as one `bytes` — a mismatch that is invisible for SNP-only data (every allele is 1 byte, so the counts coincide) and only appears once an indel is in the window. gvl requires `seqpro>=0.22`; if you see a concatenated blob, check the installed seqpro version first. +``` + +- [ ] **Step 3: Add the reading example to `docs/source/dataset.md`** + +In the `## Variant fields (var_fields)` section, after the existing fenced example that ends with `win.fields["AF"] # same field, alongside win.fields["start"]/["ilen"]`, add: + +````markdown +Allele fields index per variant, aligned with the scalar fields on the same shared offsets: + +```python +rv = ds.with_seqs("variants")[0, 0] + +for pos, alt in zip(rv.start[0][0], rv.alt[0][0]): + print(pos, alt) # 10 b'A' / 20 b'GG' +``` + +This requires **seqpro >= 0.22**. On earlier versions `rv.alt[0][0]` returned the +haplotype's alleles concatenated into one `bytes`, which misaligns against +`rv.start` as soon as a window contains an indel. +```` + +- [ ] **Step 4: Verify the docs build** + +```bash +pixi run -e docs doc 2>&1 | tail -20 +``` + +Expected: builds without new warnings. If the `docs` env is not built and building it is slow, it is acceptable to skip this step and note the skip in the task report — the edits are prose-only, in files Sphinx already renders. + +- [ ] **Step 5: Confirm `api.md` needs no change** + +```bash +pixi run -e dev python -c "import re,genvarloader as g; api=open('docs/source/api.md').read(); print('MISSING:', [n for n in g.__all__ if n not in api] or 'none')" +``` + +Expected: `MISSING: none`. This change adds no public symbol; the check guards against drift. + +- [ ] **Step 6: Commit** + +```bash +git add skills/genvarloader/SKILL.md docs/source/dataset.md +git commit -F - <<'EOF' +docs: per-variant allele indexing on RaggedVariants (#330) + +Documents that rv.alt[b][h] / rv.ref[b][h] yield one allele per +variant, aligned with rv.start / rv.ilen, and that this requires +seqpro >= 0.22. Adds a Common gotchas entry noting the old +concatenating behavior was invisible for SNP-only data. + +Additive only -- no existing prose demonstrated integer allele +indexing, so nothing was false before this. + +Co-Authored-By: Claude Opus 5 +EOF +``` + +--- + +### Task 4: Push and open the PR + +**Files:** none — git/GitHub operations only. + +**Interfaces:** +- Consumes: commits from Tasks 1-3. +- Produces: the PR that closes #330. + +- [ ] **Step 1: Confirm the branch is clean and complete** + +```bash +git status --short # expect empty +git log --oneline origin/main..HEAD +``` + +Expected: the spec commit (`fcbc08fa`), Task 1's `fix!:` commit, Task 3's `docs:` commit, and Task 2's fix commit only if something genuinely broke. + +- [ ] **Step 2: Verify the breaking-change footer is machine-readable** + +```bash +pixi run -e dev cz check --rev-range origin/main..HEAD +``` + +Expected: passes. commitizen must see the `BREAKING CHANGE:` footer for the 0.41.0 minor bump; a malformed footer silently degrades it to a patch. + +- [ ] **Step 3: Push** + +```bash +git push -u origin worktree-deps+seqpro-0.22 +``` + +- [ ] **Step 4: Open the draft PR** + +```bash +gh pr create --draft --base main \ + --title 'fix!: bump seqpro to 0.22.0 for per-variant allele indexing (#330)' \ + --body "$(cat <<'EOF' +Closes #330. Upstream fix: ML4GLand/SeqPro#71, released in seqpro 0.22.0. + +## What was wrong + +`RaggedVariants.alt[i]` / `ref[i]` returned one concatenated `bytes` per haplotype while `start` / `ilen` returned per-variant values, even though all four fields share one offsets object. `zip(rv.start[0][h], rv.alt[0][h])` was silently wrong — and invisible for SNP-only data, because 1-byte alleles make the counts coincide. It only misbehaved once an indel entered the window. + +Root cause was upstream: seqpro's `Ragged.__getitem__` mapped a string-under-axis group straight to a byte range and discarded the interior `str_offsets`. + +## Changes + +- `pyproject.toml`: `seqpro>=0.20` → `seqpro>=0.22` +- `pixi.toml`: py310 pin `==0.21.1` → `==0.22.0` +- `pixi.lock` regenerated +- New regression test using a **multi-byte allele** — the existing suite asserts via `to_ak().to_list()`, which is structure-preserving and was blind to this +- SKILL.md + `docs/source/dataset.md` document per-variant allele access and the `seqpro>=0.22` requirement + +`Cargo.toml` is untouched: the 0.22.0 diff changed no Rust, so `seqpro-core` needs no bump. + +Raising the floor also closes a latent skew — `py311`/`312`/`313` declare no seqpro pin and inherit the floor, so a lock refresh under `>=0.20` would have floated them to 0.22 while py310 stayed pinned at 0.21. + +## Breaking + +Indexing an allele field by integer now yields per-variant alleles instead of one concatenated `bytes`. Callers wanting the old value can use `b"".join(...)`. `major_version_zero = true`, so this cuts 0.40.2 → **0.41.0**. + +## Not included + +Targets `main`, not `streaming` — the defect is in the shared `RaggedVariants` read path the written `Dataset` returns too. `streaming` inherits the fix on its next routine `main` merge. + +🤖 Generated with [Claude Code](https://claude.com/claude-code) +EOF +)" +``` + +- [ ] **Step 5: Report the PR URL** + +--- + +## Notes for the implementer + +- **The multi-byte allele in the regression test is not decoration.** Replacing `b"GG"` with a SNP makes every assertion pass on the broken seqpro too. If you refactor the fixture, keep at least one allele longer than one byte. +- **Do not "fix" the old behavior in gvl.** The fix is upstream and already released. If something in gvl looks like it is compensating for the old concatenation, report it rather than removing it — it may be load-bearing for a different reason. +- **Task 2 finding nothing is a successful outcome**, not an empty task. Report the evidence (test counts, the six audited sites) rather than inventing a change to justify the task. diff --git a/docs/superpowers/specs/2026-07-27-seqpro-0.22-bump-design.md b/docs/superpowers/specs/2026-07-27-seqpro-0.22-bump-design.md new file mode 100644 index 00000000..cf938449 --- /dev/null +++ b/docs/superpowers/specs/2026-07-27-seqpro-0.22-bump-design.md @@ -0,0 +1,160 @@ +# Design: bump seqpro to 0.22.0 (per-variant allele indexing) + +**Status:** ✅ approved — 2026-07-27 +**Issue:** [#330](https://github.com/mcvickerlab/GenVarLoader/issues/330) +**Upstream:** [ML4GLand/SeqPro#71](https://github.com/ML4GLand/SeqPro/issues/71) (closed 2026-07-27, released in seqpro 0.22.0) +**Branch:** off `main`, PR into `main` + +## Problem + +On seqpro ≤ 0.21.2, integer-indexing a **string-under-axis** `Ragged` collapsed a whole +group into one concatenated `bytes`, discarding the per-string boundaries that +`str_offsets` already held. Numeric fields sharing the same offsets returned one element +per item, so the two were not shape-consistent: + +```python +rv.start[0][h] # -> array([10, 20], dtype=int32) 2 elements, per-variant +rv.ilen[0][h] # -> array([0, 1], dtype=int32) 2 elements, per-variant +rv.alt[0][h] # -> b'AGG' ONE bytes: 'A'+'GG' or 'AG'+'G'? +``` + +This surfaces through gvl's public API on `RaggedVariants`, where `alt`, `ref`, `start`, +and `ilen` are all built on one shared offsets object (`_share_offsets`, +`_dataset/_rag_variants.py`). The obvious consumer pattern +`zip(rv.start[0][h], rv.alt[0][h])` was silently wrong — and **invisible for SNP-only +data**, because 1-byte alleles make the lengths coincide. It only misbehaves once an indel +appears. + +seqpro 0.22.0 fixes it upstream: integer indexing on a string-under-axis `Ragged` now +returns a `Ragged` of strings, and peeling a record row returns opaque-string fields as a +`Ragged` of strings rather than a concatenated `S1` array. + +## Scope + +Bump the dependency, confirm no fallout, lock the fixed behavior with a gvl-level +regression test, and document the requirement. + +**Off `main`, not `streaming`.** The defect is in `RaggedVariants`, which the *written* +`Dataset` read path returns too — `with_seqs("variants")` is not streaming-only. The +`streaming` branch inherits the fix on its next routine `main` merge; no separate +streaming work. + +## Changes + +### 1. Pins + +| File | Line | From | To | +|---|---|---|---| +| `pyproject.toml` | 13 | `"seqpro>=0.20"` | `"seqpro>=0.22"` | +| `pixi.toml` | 104 (`[feature.py310.pypi-dependencies]`) | `seqpro = "==0.21.1"` | `seqpro = "==0.22.0"` | +| `Cargo.toml` | 21 | `seqpro-core = "0.1"` | **unchanged** | + +Then regenerate `pixi.lock`. + +**`Cargo.toml` stays put.** The 0.22.0 release diff (`0.21.2...0.22.0`) touches only +`python/seqpro/rag/_core.py` plus tests, docs, `pyproject.toml`, and `CHANGELOG.md`. No +Rust changed, so the `seqpro-core` crate needs no bump. + +**The floor must move to `>=0.22`.** gvl's public allele-access behavior — and the +regression test below — only hold on ≥ 0.22. A user whose resolver picked 0.21 would +silently get the concatenating behavior back with no error. + +Raising the floor also closes a latent inconsistency. The `py310` feature backs the `dev`, +`default`, `py310`, `no-torch`, `notebook`, and `splice` environments and hard-pins seqpro; +`py311`, `py312`, and `py313` declare no seqpro pin at all and inherit the `pyproject.toml` +floor. `pixi.lock` currently holds every environment at 0.21.1, but a lock refresh under +the old `>=0.20` floor would float py311-313 to 0.22 while py310 stayed at 0.21 — two +different allele semantics in one CI matrix. + +Compatibility is already satisfied: seqpro 0.22.0 requires `python>=3.10`, +`numpy>=1.26.0`, and `numba>=0.58.1`, against the existing py310 pins of `python 3.10.*`, +`numpy 1.26.*`, and `numba ==0.59.1`. + +### 2. Verification + +Run the **whole** tree — `pixi run -e dev test` (full pytest tree + `cargo test`), per +CLAUDE.md, not a scoped `tests/dataset` run. This is the real blast-radius measurement. + +Alongside it, read the six modules that touch string-`Ragged` internals: + +- `_shm_layout.py` (lines 174, 192-193, 695, 746) +- `_dataset/_query.py` (380-386) +- `_dataset/_tracks.py` (133) +- `_dataset/_svar2_haps.py` (992, 1031) +- `_dataset/_flat_variants.py` (101, 119) +- `_dataset/_rag_variants.py` + +Static inspection says all six only **construct** string Raggeds +(`Ragged.from_offsets(..., str_offsets=...)` → `.to_strings()`) or access fields **by +name** (`rv[fname]`, `f._rl.str_offsets`). Neither path changed in 0.22.0, so this is +expected to come back clean — but it must be confirmed, not assumed. `_shm_layout.py` is +the one to watch: it round-trips allele fields through shared memory for the +`double_buffered` loader, decomposing them into `outer_offsets` / `inner_offsets` / +`leaf_data` and rebuilding via `to_strings()`. + +If the suite does surface fallout, fix it in this branch; the fix is in scope. + +### 3. Regression test + +The suite currently contains **no** test that integer-indexes an allele field. That gap is +exactly why #330 went unnoticed, so closing it is part of the fix rather than a nicety. + +Add a test in `tests/unit/dataset/` (beside `test_flat_variants_type.py`) that builds a +`RaggedVariants` whose group holds a **multi-byte allele** — e.g. alts `b"A"` and `b"GG"` +against starts `[10, 20]` — and asserts per-variant alignment: + +- indexing the allele field for a haplotype yields **two** alleles, matching the two + entries `start`/`ilen` yield for that same haplotype +- those alleles equal `b"A"` and `b"GG"` respectively + +The exact accessor and comparison form are settled during implementation against the real +0.22.0 return type (a `Ragged` of strings, whose element access this spec deliberately does +not guess at). What the test must pin down is the *alignment property*, not a particular +call. + +The multi-byte allele is the entire point. With SNPs only, every allele is 1 byte, the +counts coincide, and the test passes on both 0.21 and 0.22 — gating nothing. + +### 4. Docs + +A user-visible behavior change, so CLAUDE.md's docs-audit gate applies. + +Nothing in the current docs is *false*: no prose demonstrates integer allele indexing, and +`docs/source/dataset.md:164-165` shows only field access (`rv["AF"]`). The work is +therefore additive — a short "reading variants per-variant" note in +`skills/genvarloader/SKILL.md` and in `docs/source/dataset.md` beside that existing +example, showing per-variant allele access and stating the `seqpro>=0.22` requirement. + +`docs/source/api.md` is unchanged — no symbol is added to or removed from `__all__`. + +### 5. Versioning and close-out + +Land as a conventional commit `fix!:` with a `BREAKING CHANGE:` footer, so commitizen cuts +**0.40.2 → 0.41.0**. + +`RaggedVariants.alt[i]` / `ref[i]` change observable return type for gvl users, which is +breaking regardless of arriving via a dependency. The counter-argument — that it is "just a +dep bump" of behavior nobody could sensibly rely on — was considered and rejected: silent +type changes in a public return value are exactly what a major/minor signal exists for. + +The PR closes #330 and references SeqPro#71. + +## Out of scope + +- **#328** (`var_fields` ride-alongs for `variant-windows`) and **#329** (SVAR1 per-call + FORMAT copy) — the other two Wave B follow-ups. Streaming-board work, unrelated to this + bump. +- Any change to `Cargo.toml` / `seqpro-core`. +- Adding seqpro pins to the `py311`/`py312`/`py313` features. Raising the shared floor is + sufficient; per-feature pins would duplicate the constraint in four places. + +## Success criteria + +1. `pixi.lock` resolves seqpro 0.22.0 in every environment. +2. Full `pixi run -e dev test` green (pytest tree + cargo). +3. The new regression test passes on 0.22.0, and is confirmed **once** during + implementation to fail on 0.21.1 — otherwise it does not actually gate the fix. (It is + not kept runnable against 0.21.1 after the floor moves.) +4. SKILL.md and `docs/source/dataset.md` document per-variant allele access and the + `seqpro>=0.22` requirement. +5. PR into `main` closes #330. diff --git a/pixi.lock b/pixi.lock index 31309d00..6b2f270a 100644 --- a/pixi.lock +++ b/pixi.lock @@ -190,6 +190,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/34/48/0fe2f381f29e16e639e691392e1bbc628d275f950f3a8dec3bab7d04742f/arro3_core-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/35/7d/bc4080a0d94719a039a96b1b5fb5b9a12d0048fab9f56efd9324fa07a096/ncls-0.0.70-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5b/29/74eeb4d3f3ae61ca096b018ad486b3b3c74b17bec09ab4edab721cbefec3/typeguard-4.5.2-py3-none-any.whl @@ -199,7 +200,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6b/a4/bd8ad7d1cf66268219f282d4268b6ba73f8ff51c5fba2c9663adab103615/sorted_nearest-0.0.41.tar.gz - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -207,8 +207,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -350,7 +350,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -358,7 +357,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl @@ -379,6 +378,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl @@ -582,6 +582,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl @@ -600,7 +601,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/71/43/1947f06babed6b3f1d7f38b0c767f52df66bfb2bc10b468c4a7de9eceff2/aiohappyeyeballs-2.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/72/25/973bd6128381951b23cdcd8a9870c6dcfc5606cb864df8eabd82e529f9c1/torchinfo-1.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -608,9 +608,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/4d/5740c27110b83634d8491c3b5facf0111b3e554c3164f4fb953be9bddaf6/pytorch_lightning-2.6.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -767,7 +767,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -775,7 +774,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5b/29/74eeb4d3f3ae61ca096b018ad486b3b3c74b17bec09ab4edab721cbefec3/typeguard-4.5.2-py3-none-any.whl @@ -794,6 +793,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl @@ -1025,6 +1025,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/03/f5d0b979c6a1f8a8a11ba115a7c5b145671f092372a4ede164dc2597c466/ncls-0.0.70-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl @@ -1053,7 +1054,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/72/25/973bd6128381951b23cdcd8a9870c6dcfc5606cb864df8eabd82e529f9c1/torchinfo-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/39/4d8414260c3d83f22029a39e51553c173611b378d62ca391e5ca68e65cfa/awkward-2.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl @@ -1066,9 +1066,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/c9/65f89382870c8cf8277b06680f81ea7621324de4c49fbce7276e0fd17ce5/cyvcf2-0.32.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -1251,7 +1251,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1c/c2/a70f0dc599de9cdc3fa4a1459b8719157adf170ec7b60158caf3fbb19e66/awkward_cpp-52-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl @@ -1266,7 +1265,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2f/97/9214bd9b860e680a281232e218d10b718a7280b593f4ab56240a558dc975/pgenlib-0.94.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl @@ -1314,6 +1313,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/98/c1/37f2fcccce3f1494147e46ccc04996226defe9ccae8251a9ce61296fa599/pysam-0.24.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl @@ -1562,6 +1562,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/03/f5d0b979c6a1f8a8a11ba115a7c5b145671f092372a4ede164dc2597c466/ncls-0.0.70-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl @@ -1599,7 +1600,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/72/25/973bd6128381951b23cdcd8a9870c6dcfc5606cb864df8eabd82e529f9c1/torchinfo-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/75/2e/46030320b5a80661e88039f59060d1790298b4718944a65a7f2aeda3d9e9/nvidia_cuda_nvrtc_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/39/4d8414260c3d83f22029a39e51553c173611b378d62ca391e5ca68e65cfa/awkward-2.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl @@ -1613,9 +1613,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/16/73727675941ab8e6ffd86ca3a4b7b47065edcca7a997920b831f8147c99d/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl @@ -1813,7 +1813,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1c/c2/a70f0dc599de9cdc3fa4a1459b8719157adf170ec7b60158caf3fbb19e66/awkward_cpp-52-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl @@ -1828,7 +1827,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2f/97/9214bd9b860e680a281232e218d10b718a7280b593f4ab56240a558dc975/pgenlib-0.94.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/1e/9771421ac2286eaab95b8575b0cb701ae3663abf8b5e1f64f1fd90d0a673/websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl @@ -1875,6 +1874,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/98/c1/37f2fcccce3f1494147e46ccc04996226defe9ccae8251a9ce61296fa599/pysam-0.24.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl @@ -2000,6 +2000,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl @@ -2013,7 +2014,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6b/a4/bd8ad7d1cf66268219f282d4268b6ba73f8ff51c5fba2c9663adab103615/sorted_nearest-0.0.41.tar.gz - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -2024,8 +2024,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -2091,7 +2091,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/08/75/ec73e38812bca7c2240aff481b9ddff20d1ad2f10dee4b3353f5eeaacdab/polars-1.37.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -2100,9 +2099,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl @@ -2129,6 +2128,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/fe/a4867bc2b8b81d9b1648992fb7e4a732b3db480ff2d02df2c7b59189c812/hypothesis-6.156.6-cp310-cp310-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl @@ -2449,6 +2449,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/48/0fe2f381f29e16e639e691392e1bbc628d275f950f3a8dec3bab7d04742f/arro3_core-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/35/7d/bc4080a0d94719a039a96b1b5fb5b9a12d0048fab9f56efd9324fa07a096/ncls-0.0.70-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/50/3e/f0dba6333dbe5c5a338d1466939c8733256a5f6d7e10615b8f96a90277e5/fast_histogram-0.14-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl @@ -2459,7 +2460,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6b/a4/bd8ad7d1cf66268219f282d4268b6ba73f8ff51c5fba2c9663adab103615/sorted_nearest-0.0.41.tar.gz - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -2467,8 +2467,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl @@ -2674,7 +2674,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/2c/d4d96c78e72031f3171fb3a584b557d79d191e9bb4e93747f793c18f8623/fast_histogram-0.14-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -2682,7 +2681,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5b/29/74eeb4d3f3ae61ca096b018ad486b3b3c74b17bec09ab4edab721cbefec3/typeguard-4.5.2-py3-none-any.whl @@ -2701,6 +2700,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl @@ -2906,6 +2906,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/34/48/0fe2f381f29e16e639e691392e1bbc628d275f950f3a8dec3bab7d04742f/arro3_core-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/35/7d/bc4080a0d94719a039a96b1b5fb5b9a12d0048fab9f56efd9324fa07a096/ncls-0.0.70-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5b/29/74eeb4d3f3ae61ca096b018ad486b3b3c74b17bec09ab4edab721cbefec3/typeguard-4.5.2-py3-none-any.whl @@ -2915,7 +2916,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6b/a4/bd8ad7d1cf66268219f282d4268b6ba73f8ff51c5fba2c9663adab103615/sorted_nearest-0.0.41.tar.gz - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -2923,8 +2923,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -3066,7 +3066,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -3074,7 +3073,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl @@ -3095,6 +3094,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl @@ -3307,6 +3307,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2e/66/70786ee1cfdd03d36d456c4ef02a35506b7ae256c70a74bd7abf135daba0/arro3_core-0.8.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/32/f1/bbecd2f867b97abebe0f9b53d750f862251b40337e061b36676ded3d920f/pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/44/0b/0615dbedb98f5b32a35a53290fbdc6e22306968109278d7e58df82d7a9f6/numba-0.65.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/27/5799b020e4cdfb25a7c951c06a96397c135efcdc21b78d853bbd9c814c7d/llvmlite-0.47.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4e/ca/03624e017e5ee2d7ce8a08d89f81c1e535eb3c30d7b2dc4a435ea3fbbeae/mkdocs_glightbox-0.5.2-py3-none-any.whl @@ -3319,7 +3320,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6c/3c/75dce39944a6ef37edbaf804910c54a83073e245ac83f554ccae04a2a96f/awkward_cpp-52-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/dc/035d54638fc5d2971cbf1e987ccd45f1091c83bcf747281cf6cc25e72c88/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/39/4d8414260c3d83f22029a39e51553c173611b378d62ca391e5ca68e65cfa/awkward-2.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl @@ -3328,8 +3328,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl @@ -3465,7 +3465,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/13/2f/b4530fbf948867702d0a3f27de4a6aab1d156f406d72852ab902c4d04de9/rich_rst-1.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/53/21f7b97e82772caa61541348427f42435120b32961c92d16f9c8ce9757d6/cslug-1.0.0-py3-none-any.whl @@ -3473,7 +3472,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/0b/b9d1911cfefa61399821dfb37f486d83e0f42630a8d12f7194270c417002/llvmlite-0.47.0-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/ca/03624e017e5ee2d7ce8a08d89f81c1e535eb3c30d7b2dc4a435ea3fbbeae/mkdocs_glightbox-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl @@ -3494,6 +3493,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/94/dc/80564a3071a57c20b7c32575e4a0120e8a330ef487c319b122942d665960/pyarrow-21.0.0-cp311-cp311-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/b3/650500c2eab4534d98e9166f4298e0f3c69c742afdf24e6eabccd1f16ad8/numba-0.65.1-cp311-cp311-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl @@ -3704,6 +3704,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2e/66/70786ee1cfdd03d36d456c4ef02a35506b7ae256c70a74bd7abf135daba0/arro3_core-0.8.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/40/03/f5d0b979c6a1f8a8a11ba115a7c5b145671f092372a4ede164dc2597c466/ncls-0.0.70-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4e/ca/03624e017e5ee2d7ce8a08d89f81c1e535eb3c30d7b2dc4a435ea3fbbeae/mkdocs_glightbox-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl @@ -3717,7 +3718,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/6c/3c/3f62dee257eb3d6b2c1ef2a09d36d9793c7111156a73b5654d2c2305e5ce/idna-3.14-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/39/4d8414260c3d83f22029a39e51553c173611b378d62ca391e5ca68e65cfa/awkward-2.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -3725,8 +3725,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/c9/65f89382870c8cf8277b06680f81ea7621324de4c49fbce7276e0fd17ce5/cyvcf2-0.32.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl @@ -3865,7 +3865,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1c/c2/a70f0dc599de9cdc3fa4a1459b8719157adf170ec7b60158caf3fbb19e66/awkward_cpp-52-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/53/21f7b97e82772caa61541348427f42435120b32961c92d16f9c8ce9757d6/cslug-1.0.0-py3-none-any.whl @@ -3873,7 +3872,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2f/97/9214bd9b860e680a281232e218d10b718a7280b593f4ab56240a558dc975/pgenlib-0.94.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/ca/03624e017e5ee2d7ce8a08d89f81c1e535eb3c30d7b2dc4a435ea3fbbeae/mkdocs_glightbox-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl @@ -3893,6 +3892,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/72/1e6442a00cd2924d361aa1b642ab6373ec35c6fabf311a760be9f76e0f13/scipy-1.18.0-cp312-cp312-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/98/c1/37f2fcccce3f1494147e46ccc04996226defe9ccae8251a9ce61296fa599/pysam-0.24.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl @@ -4104,6 +4104,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2e/66/70786ee1cfdd03d36d456c4ef02a35506b7ae256c70a74bd7abf135daba0/arro3_core-0.8.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/31/b8/69f5565f1a280d032525878a86511eebed0645818492feeb169dfb20ae8e/llvmlite-0.47.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4e/ca/03624e017e5ee2d7ce8a08d89f81c1e535eb3c30d7b2dc4a435ea3fbbeae/mkdocs_glightbox-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/42/2b2b00b0df934353c8e3ebfb2be68f63d7aa6dfe5eb5d5f6427b092e0814/awkward_cpp-52-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl @@ -4117,16 +4118,15 @@ environments: - pypi: https://files.pythonhosted.org/packages/6c/3c/3f62dee257eb3d6b2c1ef2a09d36d9793c7111156a73b5654d2c2305e5ce/idna-3.14-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6e/ae/76fb528c6112a3df5a581a18f1a2ceee5983d54977d7f2b6bc883637fe4c/polars_config_meta-0.3.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/39/4d8414260c3d83f22029a39e51553c173611b378d62ca391e5ca68e65cfa/awkward-2.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/68/1237369725aa617bb358263d535803e3053fdbc593513ec5ed9c9896b5b6/pandas-3.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl @@ -4266,14 +4266,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/16/e1/3079a9ff9b8e11b846c6ac5c8b5bfb7ff225eee721825310c91b3b50304f/tqdm-4.67.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/18/4cedda786e7da429e7489549a9e5461530d4133130e541f25fb94f015776/cyclopts-4.11.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/53/21f7b97e82772caa61541348427f42435120b32961c92d16f9c8ce9757d6/cslug-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/2d/6ea7cad2c2f0625c4120bef5353ab7cf749141bf1d070011cebb72f68189/pandera-0.31.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3e/fe/1624eb5024e897bf4074bfc31f9e5e823160aed1ac14e7720e849a3d1109/selectolax-0.4.8-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3f/06/9ae96a3e5dcfd119377ba33d4c42a7d89da1efabd5cb3e366b156c45ff4d/zstandard-0.25.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl @@ -4299,6 +4298,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/88/b55b3117287a8540b76dbdd87733808d4d01c8067a3b339408c250bb3600/typeguard-4.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl @@ -4625,6 +4625,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/46/a1d9c24baf21cfd9ce994ac820a24608decf2710521b29223d4334985127/pyarrow-22.0.0-cp310-cp310-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4b/ac/b605473de2bb404e742f2cc3583d12aedb2352a70e49ae8fce455b50c5aa/multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl @@ -4644,7 +4645,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/71/43/1947f06babed6b3f1d7f38b0c767f52df66bfb2bc10b468c4a7de9eceff2/aiohappyeyeballs-2.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/cc/18245721fa7747065ab478316c7fea7c74777d07f37ae60db2e84f8172e8/beartype-0.22.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/72/25/973bd6128381951b23cdcd8a9870c6dcfc5606cb864df8eabd82e529f9c1/torchinfo-1.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/74/ff/9d30128a88df6c795097b6f73218d4a5afcd0e2d74cf2dedd99b28d42cdc/cyvcf2-0.31.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl @@ -4652,9 +4652,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/7e/85/a5bfaebfd305ac18b57b0854d74e37e586809061a91fda62f0bd50c8518e/narwhals-2.24.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/4d/5740c27110b83634d8491c3b5facf0111b3e554c3164f4fb953be9bddaf6/pytorch_lightning-2.6.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/66/47cf0a44c768792154c665eedeb6a33201d89d75e5fba62c7b4b585d08c4/awkward_cpp-54-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl @@ -4874,7 +4874,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/2c/d4d96c78e72031f3171fb3a584b557d79d191e9bb4e93747f793c18f8623/fast_histogram-0.14-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/17/c1/3226e6d7f5a4f736f38ac11a6fbb262d701889802595cdb0f53a885ac2e0/pydantic_extra_types-2.11.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/7c/df4a47340a003ab1aa57d1f8d44ba5eb7c91d42de8fd51a3322e33931642/pgenlib-0.94.1-cp310-cp310-macosx_10_9_universal2.whl @@ -4882,7 +4881,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/2d/d4bf65e47cea8ff2c794a600c4fd1273a7902f268757c531e0ee9f18aa58/pooch-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/68/1fc93dd759605b5d00fc98b50200739e41ed32bd22d6ba35ca6c3932371b/rich_rst-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/55/5e/f8f4f7cc9b24b35103eb9e19f0f69935d16b878b4c5e4511ecd2261403fb/vcfixture-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5b/29/74eeb4d3f3ae61ca096b018ad486b3b3c74b17bec09ab4edab721cbefec3/typeguard-4.5.2-py3-none-any.whl @@ -4901,6 +4900,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/83/89/35ea267fb12e608529f0df315aff200171e555623cb38b2e4444592ce872/pyranges-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/b2/04438111b57e3591c09dfa9f220609ae1afacf436fba124a328dbdb9b7b2/genvarloader_cli-0.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/96/34/ef34ef77f1ee38fc8e4f9775217a613b452916e633c4f1d98f31db52c4a5/zstandard-0.25.0-cp310-cp310-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl @@ -11615,8 +11615,8 @@ packages: - pypi: ./ name: genvarloader requires_dist: - - seqpro>=0.20 - - genoray>=3.0.0,<4 + - seqpro>=0.22 + - genoray>=3.3.1,<4 - numpy - loguru - natsort @@ -12459,25 +12459,6 @@ packages: requires_dist: - numpy>=1.21.3 requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/1e/51/f2d40a7ba9477f97cab5e1d06338c7f5f97f76479d1443ff4c6b5048e2bc/seqpro-0.21.1-cp39-abi3-macosx_11_0_arm64.whl - name: seqpro - version: 0.21.1 - sha256: e40d7b20697685694a0e4ab7864f7cc93d784950d19b7160402c304e15ce725f - requires_dist: - - numba>=0.58.1 - - numpy>=1.26.0 - - polars>=1.21.0,<2 - - pyranges>=0.1.3,<0.2 - - pandera>=0.31.1 - - pandas - - pyarrow - - natsort - - narwhals>=2.20.0 - - setuptools>=70 - - awkward>=2.5.0 - - polars-config-meta[polars]>=0.3.2 - - attrs - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl name: idna version: '3.18' @@ -12974,40 +12955,6 @@ packages: - isort ; extra == 'dev' - pip-tools ; extra == 'dev' - pytest ; extra == 'dev' -- pypi: https://files.pythonhosted.org/packages/36/7b/889bdba263e9b600add681c88549094b3252767097393c138465b43f2abe/genoray-3.0.0-cp310-abi3-macosx_11_0_arm64.whl - name: genoray - version: 3.0.0 - sha256: f84f6ab4372ed3056e302b35aa729bf19f9be84d70102cdb0ed9e53c053c1f6d - requires_dist: - - seqpro>=0.21.1,<0.22 - - numpy>=1.26 - - pandas>=2.2.3 - - hirola>=0.3.0 - - pgenlib>=0.91.0 - - cyvcf2>=0.31.1 - - pysam>=0.22 - - polars>=1.37.1 - - polars-bio>=0.20.1,<0.34 - - pyranges>=0.1.3 - - typing-extensions>=4.14 - - pyarrow>=21 - - tqdm>=4.65 - - phantom-types>=3 - - more-itertools>=10 - - loguru>=0.7.0 - - attrs - - awkward - - numba - - cyclopts - - zstandard - - pydantic - - oxbow>=0.5.1,<0.6 - - joblib>=1.4.2,<2 - - joblib-progress>=1.0.6,<2 - - filelock>3,<4 - - scipy>=1.10 - - pooch>=1.7 - requires_python: '>=3.10,<3.14' - pypi: https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl name: importlib-metadata version: 9.0.0 @@ -13060,6 +13007,25 @@ packages: - pytest-enabler>=3.4 ; extra == 'enabler' - pytest-mypy>=1.0.1 ; platform_python_implementation != 'PyPy' and extra == 'type' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/3b/92/73ab995881de743ddfebe51e6ed35aa6bd709ae7f09eea2cc8e9716bfa36/seqpro-0.22.0-cp39-abi3-macosx_11_0_arm64.whl + name: seqpro + version: 0.22.0 + sha256: a8d40f9e5b7269a13ec2078c0e7f48e4f8f68e861bddcef9e66aff14e5be99c9 + requires_dist: + - numba>=0.58.1 + - numpy>=1.26.0 + - polars>=1.21.0,<2 + - pyranges>=0.1.3,<0.2 + - pandera>=0.31.1 + - pandas + - pyarrow + - natsort + - narwhals>=2.20.0 + - setuptools>=70 + - awkward>=2.5.0 + - polars-config-meta[polars]>=0.3.2 + - attrs + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl name: nvidia-cublas version: 13.1.1.3 @@ -13204,6 +13170,25 @@ packages: - xlsxwriter>=3.0.5 ; extra == 'all' - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/40/cd/43eb335bf04c3bbc0a28078ad4675f61f6ccceb4d55dcdb1a0c915ae5613/seqpro-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: seqpro + version: 0.22.0 + sha256: 53c2ec20c294e93b892d9a3bced63c229be6cbcc5b9f86175f82e6acebe030df + requires_dist: + - numba>=0.58.1 + - numpy>=1.26.0 + - polars>=1.21.0,<2 + - pyranges>=0.1.3,<0.2 + - pandera>=0.31.1 + - pandas + - pyarrow + - natsort + - narwhals>=2.20.0 + - setuptools>=70 + - awkward>=2.5.0 + - polars-config-meta[polars]>=0.3.2 + - attrs + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl name: matplotlib-inline version: 0.2.2 @@ -14279,40 +14264,6 @@ packages: - packaging>=23.0 - colorama>=0.4.6 ; sys_platform == 'win32' requires_python: '>=3.12' -- pypi: https://files.pythonhosted.org/packages/74/7e/4574ad120eaddb9ff6d4bbf03136915cd058d7d272d05f89d0b3adc2e70b/genoray-3.0.0-cp310-abi3-manylinux_2_28_x86_64.whl - name: genoray - version: 3.0.0 - sha256: 0f771686aaf99cae805c65d0b984c698c3b6fae8abb134fa7b0fef5f82a4c871 - requires_dist: - - seqpro>=0.21.1,<0.22 - - numpy>=1.26 - - pandas>=2.2.3 - - hirola>=0.3.0 - - pgenlib>=0.91.0 - - cyvcf2>=0.31.1 - - pysam>=0.22 - - polars>=1.37.1 - - polars-bio>=0.20.1,<0.34 - - pyranges>=0.1.3 - - typing-extensions>=4.14 - - pyarrow>=21 - - tqdm>=4.65 - - phantom-types>=3 - - more-itertools>=10 - - loguru>=0.7.0 - - attrs - - awkward - - numba - - cyclopts - - zstandard - - pydantic - - oxbow>=0.5.1,<0.6 - - joblib>=1.4.2,<2 - - joblib-progress>=1.0.6,<2 - - filelock>3,<4 - - scipy>=1.10 - - pooch>=1.7 - requires_python: '>=3.10,<3.14' - pypi: https://files.pythonhosted.org/packages/74/dc/035d54638fc5d2971cbf1e987ccd45f1091c83bcf747281cf6cc25e72c88/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl name: pyarrow version: 21.0.0 @@ -14747,6 +14698,41 @@ packages: - testpath ; extra == 'test' - xmltodict ; extra == 'test' requires_python: '>=3.10.0' +- pypi: https://files.pythonhosted.org/packages/84/02/a6253af89cf532e8029c7508423848704e8362d9e3080bdc5e27f34b7b12/genoray-3.3.1-cp310-abi3-manylinux_2_28_x86_64.whl + name: genoray + version: 3.3.1 + sha256: fb7c314e013835db6bef9ab6a940219908c24888a4dd574239f1987381022ed1 + requires_dist: + - seqpro>=0.21.1,<0.23 + - numpy>=1.26 + - pandas>=2.2.3 + - hirola>=0.3.0 + - pgenlib>=0.91.0 + - cyvcf2>=0.31.1 + - pysam>=0.22 + - polars>=1.37.1 + - polars-bio>=0.20.1,<0.34 + - pyranges>=0.1.3 + - rich>=13 + - typing-extensions>=4.14 + - pyarrow>=21 + - tqdm>=4.65 + - phantom-types>=3 + - more-itertools>=10 + - loguru>=0.7.0 + - attrs + - awkward + - numba + - cyclopts + - zstandard + - pydantic + - oxbow>=0.5.1,<0.6 + - joblib>=1.4.2,<2 + - joblib-progress>=1.0.6,<2 + - filelock>3,<4 + - scipy>=1.10 + - pooch>=1.7 + requires_python: '>=3.10,<3.15' - pypi: https://files.pythonhosted.org/packages/85/dc/bf8a9b7e289dd9b0b550b9964786231fe48264583eecd733f7ab77b374b7/ncls-0.0.70-cp310-cp310-macosx_11_0_arm64.whl name: ncls version: 0.0.70 @@ -14896,25 +14882,6 @@ packages: - hypothesis ; extra == 'tests' - pytest ; extra == 'tests' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/8d/78/831596c30d1520a89b367fde4857d2e51aade8fad072616a076e6c441900/seqpro-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: seqpro - version: 0.21.1 - sha256: 6b6720c75abff0f9e5826c4e6c09000d988b0b738a81172fdf226f6763b01170 - requires_dist: - - numba>=0.58.1 - - numpy>=1.26.0 - - polars>=1.21.0,<2 - - pyranges>=0.1.3,<0.2 - - pandera>=0.31.1 - - pandas - - pyarrow - - natsort - - narwhals>=2.20.0 - - setuptools>=70 - - awkward>=2.5.0 - - polars-config-meta[polars]>=0.3.2 - - attrs - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl name: pure-eval version: 0.2.3 @@ -15039,6 +15006,41 @@ packages: requires_dist: - cffi ; implementation_name == 'pypy' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/94/07/0884ea45f06ace0f1ee423d9184f40d598303ba746ff85a6a9a35b56cb94/genoray-3.3.1-cp310-abi3-macosx_11_0_arm64.whl + name: genoray + version: 3.3.1 + sha256: 95c013e328b3deee12a7a5cd2aeb340469ca0f12f668cbcbe1740aca94229473 + requires_dist: + - seqpro>=0.21.1,<0.23 + - numpy>=1.26 + - pandas>=2.2.3 + - hirola>=0.3.0 + - pgenlib>=0.91.0 + - cyvcf2>=0.31.1 + - pysam>=0.22 + - polars>=1.37.1 + - polars-bio>=0.20.1,<0.34 + - pyranges>=0.1.3 + - rich>=13 + - typing-extensions>=4.14 + - pyarrow>=21 + - tqdm>=4.65 + - phantom-types>=3 + - more-itertools>=10 + - loguru>=0.7.0 + - attrs + - awkward + - numba + - cyclopts + - zstandard + - pydantic + - oxbow>=0.5.1,<0.6 + - joblib>=1.4.2,<2 + - joblib-progress>=1.0.6,<2 + - filelock>3,<4 + - scipy>=1.10 + - pooch>=1.7 + requires_python: '>=3.10,<3.15' - pypi: https://files.pythonhosted.org/packages/94/dc/80564a3071a57c20b7c32575e4a0120e8a330ef487c319b122942d665960/pyarrow-21.0.0-cp311-cp311-macosx_12_0_arm64.whl name: pyarrow version: 21.0.0 diff --git a/pixi.toml b/pixi.toml index c0519c88..872476e8 100644 --- a/pixi.toml +++ b/pixi.toml @@ -101,10 +101,12 @@ numba = "==0.59.1" [feature.py310.pypi-dependencies] pyarrow = ">=21" hirola = "==0.3" -seqpro = "==0.21.1" -# genoray >=3.0.0 (first release with the INFO/FORMAT field-read API) as the prebuilt -# abi3 wheel from PyPI — one cp310-abi3 wheel covers py310-313 on both platforms. -genoray = ">=3.0.0,<4" +seqpro = "==0.22.0" +# genoray >=3.3.1 as the prebuilt abi3 wheel from PyPI — one cp310-abi3 wheel covers +# py310-313 on both platforms. 3.0.0 was the first release with the INFO/FORMAT field-read +# API; 3.3.1 is the first whose seqpro cap (<0.23) admits seqpro>=0.22. Mirrors the +# pyproject floor. +genoray = ">=3.3.1,<4" polars = "==1.37.1" loguru = "*" natsort = "*" diff --git a/pyproject.toml b/pyproject.toml index 0f9c3181..164040f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,9 +10,12 @@ readme = "README.md" license = { file = "LICENSE.txt" } requires-python = ">=3.10,<3.14" # >= 3.14 blocked by pyarrow/genoray dependencies = [ - "seqpro>=0.20", - # >=3.0.0 is the first release carrying the INFO/FORMAT field-read API gvl relies on. - "genoray>=3.0.0,<4", + "seqpro>=0.22", + # >=3.0.0 carried the INFO/FORMAT field-read API gvl relies on; >=3.3.1 is the first + # release whose seqpro cap (<0.23) admits the seqpro>=0.22 above. Earlier 3.x pin + # seqpro<0.22, so they are unsatisfiable here — state that instead of making the + # resolver discover it. + "genoray>=3.3.1,<4", "numpy", "loguru", "natsort", diff --git a/skills/genvarloader/SKILL.md b/skills/genvarloader/SKILL.md index b1542bb5..0b6e58e5 100644 --- a/skills/genvarloader/SKILL.md +++ b/skills/genvarloader/SKILL.md @@ -370,7 +370,7 @@ Footprint is computed exactly via `Dataset._output_bytes_per_instance(...)` (use - `gvl.Reference.from_path(fasta, contigs=None, in_memory=True)` — wrap a FASTA (path to a `.fa`/`.fa.bgz`, or a `.gvlfa` cache dir). Builds/reuses a sibling `.gvlfa` cache directory (self-describing, fingerprint-validated; legacy `.fa.gvl` caches auto-migrate). The cache is built atomically (temp + `os.replace`) under a best-effort lock, so concurrent builders sharing one reference are safe; the cache **auto-rebuilds** from its source when stale or missing. `in_memory=False` reads on-demand from a memory map (lower RAM) but **keeps FASTA contig order**, so `contigs` must be `None` or exactly the full FASTA order — reordering or subsetting `contigs` requires `in_memory=True` (otherwise raises `ValueError`). - `gvl.read_bedlike(path)` / `gvl.with_length(bed, L)` — BED helpers (re-exported from `seqpro`). -- `gvl.Ragged`, `gvl.RaggedAnnotatedHaps`, `gvl.RaggedVariants`, `gvl.RaggedIntervals` — ragged return containers. All are backed by `seqpro.rag.Ragged` (`_core.Ragged` Rust backend); **not** `awkward`. `RaggedVariants` is a **subclass** of `seqpro.rag.Ragged` (`class RaggedVariants(seqpro.rag.Ragged)`), so `isinstance(rv, Ragged) is True`. Structural methods — indexing, `reshape`, `squeeze`, `to_packed` — are inherited from the base and **preserve the `RaggedVariants` type** (positional/structural operations return `RaggedVariants`). A **string key** (`rv["start"]`) returns a bare `Ragged` field, not a `RaggedVariants`. `reshape` takes the new shape either as unpacked ints — e.g. `rv.reshape(1, 2, None)` — or as a single tuple `rv.reshape((1, 2, None))`; the base `Ragged` signature accepts both. `squeeze(axis=None)` is a real axis-squeeze (base semantics) — it squeezes any size-1 axis, **not** a fixed "drop axis 0". An int index collapses the leading axis (numpy-consistent); slice/array indexing preserves it. Named properties (`.alt`, `.ref`, `.start`, `.ilen`, `.end`) are the primary access point; extra fields (e.g. `AF`, custom FORMAT fields) are also accessible via `rv["field"]` or `rv.field` (via `__getattr__`). `RaggedVariants` itself does not define `__eq__` (wrapper-level `==` is Python object-identity, not element-wise); to compare contents, compare individual fields — e.g. `rv["alt"] == other_alt` or `rv.start == other_start` — which use `seqpro.rag.Ragged`'s ufunc-based (element-wise) comparison. Domain methods retained on `RaggedVariants`: `.rc_()`, `.pad()`, `.to_nested_tensor_batch()`; derived read-only properties: `.ilen`, `.end`; fields: `.alt`, `.ref`, `.start`, `.dosage`. +- `gvl.Ragged`, `gvl.RaggedAnnotatedHaps`, `gvl.RaggedVariants`, `gvl.RaggedIntervals` — ragged return containers. All are backed by `seqpro.rag.Ragged` (`_core.Ragged` Rust backend); **not** `awkward`. `RaggedVariants` is a **subclass** of `seqpro.rag.Ragged` (`class RaggedVariants(seqpro.rag.Ragged)`), so `isinstance(rv, Ragged) is True`. Structural methods — indexing, `reshape`, `squeeze`, `to_packed` — are inherited from the base and **preserve the `RaggedVariants` type** (positional/structural operations return `RaggedVariants`). A **string key** (`rv["start"]`) returns a bare `Ragged` field, not a `RaggedVariants`. `reshape` takes the new shape either as unpacked ints — e.g. `rv.reshape(1, 2, None)` — or as a single tuple `rv.reshape((1, 2, None))`; the base `Ragged` signature accepts both. `squeeze(axis=None)` is a real axis-squeeze (base semantics) — it squeezes any size-1 axis, **not** a fixed "drop axis 0". An int index collapses the leading axis (numpy-consistent); slice/array indexing preserves it. Indexing an **allele** field (`rv.alt[b][h]`, `rv.ref[b][h]`) yields the alleles of that haplotype **per variant**, aligned one-for-one with `rv.start[b][h]` / `rv.ilen[b][h]`, so `zip(rv.start[b][h], rv.alt[b][h])` pairs each position with its own allele. This requires **seqpro >= 0.22**; on older seqpro the same expression returned every allele of the group concatenated into a single `bytes`, which silently misaligned against the scalar fields for any group containing a multi-byte (indel) allele. Named properties (`.alt`, `.ref`, `.start`, `.ilen`, `.end`) are the primary access point; extra fields (e.g. `AF`, custom FORMAT fields) are also accessible via `rv["field"]` or `rv.field` (via `__getattr__`). `RaggedVariants` itself does not define `__eq__` (wrapper-level `==` is Python object-identity, not element-wise); to compare contents, compare individual fields — e.g. `rv["alt"] == other_alt` or `rv.start == other_start` — which use `seqpro.rag.Ragged`'s ufunc-based (element-wise) comparison. Domain methods retained on `RaggedVariants`: `.rc_()`, `.pad()`, `.to_nested_tensor_batch()`; derived read-only properties: `.ilen`, `.end`; fields: `.alt`, `.ref`, `.start`, `.dosage`. - `gvl.FlatRagged` — flat analog of `Ragged`: `.data` (flat numpy array), `.offsets` (int64), `.shape`. Methods: `.to_ragged()`, `.to_fixed(length)`, `.to_padded(pad_value)`, `.reshape(shape)`, `.squeeze(axis)`. Source: `python/genvarloader/_flat.py`. - `gvl.FlatIntervals` — flat-buffer interval container returned by `with_tracks(kind="intervals")` + `with_output_format("flat")`. Fields `.starts`/`.ends`/`.values` are `FlatRagged`; `.to_ragged()` → `RaggedIntervals`; `.reshape(...)`, `.squeeze(...)`, `.shape`. Source: `python/genvarloader/_ragged.py`. - `gvl.FlatAnnotatedHaps` — flat analog of `RaggedAnnotatedHaps`: fields `.haps`, `.var_idxs`, `.ref_coords` (each a `FlatRagged`). Methods: `.to_ragged()`, `.to_fixed(length)`, `.to_padded()`, `.reshape(shape)`, `.squeeze(axis)`. Source: `python/genvarloader/_flat.py`. @@ -445,6 +445,7 @@ See `docs/source/format.md` for the full schema, versioning, and SVAR-link detai - Splicing is a read-time setting on a *flat* BED of exons — do not pre-concatenate exons before `gvl.write`. - `extend_to_length=False` at write time will produce haplotypes shorter than the BED region when deletions are present; downstream code must tolerate `<` region length. Not an option for a `.svar2` variant source — `gvl.write(..., variants=<.svar2>, extend_to_length=False)` raises `NotImplementedError`. - Missing a `dosage` field on a `RaggedVariants` output you expected? Check `var_fields` — `dosage` must be requested explicitly even if `dosages.npy` exists on disk. +- **Allele fields index per-variant, and need `seqpro>=0.22`.** `rv.alt[b][h]` gives one allele per variant, matching `rv.start[b][h]`. On seqpro `<0.22` it returned the group's alleles concatenated as one `bytes` — a mismatch that is invisible for SNP-only data (every allele is 1 byte, so the counts coincide) and only appears once an indel is in the window. gvl requires `seqpro>=0.22`; if you see a concatenated blob, check the installed seqpro version first. - `FlatRagged` / `FlatVariants` offsets are **int64**. PyTorch nested tensors require int32 offsets — cast with `.astype(np.int32)` or `tensor.to(torch.int32)` before passing to `torch.nested.narrow`. - `kind="intervals"` cannot be re-aligned: combining it with a variant-aware seq mode (`haplotypes`/`annotated`/`variants`/`variant-windows`) raises unless `with_settings(realign_tracks=False)`. (Breaking change: `haplotypes`+`intervals` previously returned un-realigned intervals silently under the default.) - `with_insertion_fill` raises when `realign_tracks=False`. diff --git a/tests/unit/dataset/test_ragged_variants_indexing.py b/tests/unit/dataset/test_ragged_variants_indexing.py new file mode 100644 index 00000000..c748b485 --- /dev/null +++ b/tests/unit/dataset/test_ragged_variants_indexing.py @@ -0,0 +1,64 @@ +"""Integer indexing into RaggedVariants allele fields is per-variant. + +Regression test for #330 / ML4GLand/SeqPro#71: on seqpro <= 0.21.2, indexing a +string-under-axis Ragged concatenated the whole group into one bytes object, +discarding the per-variant boundaries that str_offsets already held. Numeric +fields on the same shared offsets stayed per-variant, so alt/ref silently +disagreed in length with start/ilen. + +The multi-byte allele below is load-bearing. With SNPs only every allele is one +byte, the counts coincide, and this test passes on the buggy seqpro too -- +gating nothing. +""" + +from __future__ import annotations + +import numpy as np +from seqpro.rag import Ragged + +from genvarloader import RaggedVariants + + +def _build_rv() -> RaggedVariants: + """(1, 2, ~v): hap 0 holds 2 variants (alt 'A', 'GG'), hap 1 holds 1 ('TC').""" + alt_chars = np.frombuffer(b"AGGTC", dtype="S1") + var_off = np.array([0, 2, 3], dtype=np.int64) # hap -> variant index + str_off = np.array([0, 1, 3, 5], dtype=np.int64) # variant -> byte index + + alt = Ragged.from_offsets( + alt_chars, (1, 2, None), var_off, str_offsets=str_off + ).to_strings() + start = Ragged.from_offsets( + np.array([10, 20, 30], dtype=np.int32), (1, 2, None), var_off + ) + ilen = Ragged.from_offsets( + np.array([0, 1, 1], dtype=np.int32), (1, 2, None), var_off + ) + return RaggedVariants(alt=alt, start=start, ilen=ilen) + + +def test_alt_indexes_per_variant_not_concatenated(): + """alt[0][hap] yields one entry per variant, not one concatenated blob.""" + rv = _build_rv() + + assert list(rv.alt[0][0]) == [b"A", b"GG"] + assert list(rv.alt[0][1]) == [b"TC"] + + +def test_alt_count_matches_scalar_fields(): + """alt, start and ilen share one offsets object, so their per-hap counts agree.""" + rv = _build_rv() + + for hap, expected_n in ((0, 2), (1, 1)): + assert len(rv.alt[0][hap]) == expected_n + assert len(np.asarray(rv.start[0][hap])) == expected_n + assert len(np.asarray(rv.ilen[0][hap])) == expected_n + + +def test_alt_aligns_elementwise_with_start(): + """The obvious consumer pattern -- zip(start, alt) -- is correct.""" + rv = _build_rv() + + pairs = list(zip(np.asarray(rv.start[0][0]).tolist(), rv.alt[0][0])) + + assert pairs == [(10, b"A"), (20, b"GG")]