Repository navigation
Releases: robert-mcdermott/clonoloom
Release list
ClonoLoom 0.9.0
-
CI execution and benchmark subprocess repair. Give commands without input closed stdin
from startup, avoiding a fast-exit pipe race; preserve child exit diagnostics and reject
failed input delivery. Discover every host test/fuzz target and distribute the full race suite
across eight independent CI jobs, with scientific packages separate and an aggregate required
check. Retain all subtests, assertions, numerical tolerances and performance budgets. -
Suite and public-data study (wave 9, slice 16). Connect exact metadata, explicit
public evidence, portable tables and reviewed sibling/B-cell workflows with clear scientific
boundaries. Add a 0.9.0 compatibility fixture from separate declared artificial controls,
preserving original source, project, parent and review evidence alongside portable paths.
Update application/client/citation versions and release documentation. Keep scientific
identities, historical fixtures and the existing automation and replay contracts unchanged.
Correct the container inventory validator to recognize the already-approved embedded ADC
registry; the production build context remains restricted to the same explicit files. -
Descriptive B-cell candidate review (wave 9, slice 15). Rank a complete family scope
for one explicit sample by ordered observation count, heavy-row divergence, preferred isotype
share and same-subject observed share change. Preserve exact rational comparisons, denominators,
missingness, ties and original parent evidence. Review one unchanged supplied source-chain
amino-acid sequence before FASTA export or opening the existing Proteoscope permission flow.
No binding score, expansion test, sequence reconstruction or synthesis-ready construct is inferred.
Add independent count/rational/source checks, pinned processor controls and both-theme artificial
examples. Scientific replay and historical evidence remain unchanged. -
Bounded lineage likelihood reviews (wave 9, slice 14). Fit JC69 to one saved
complete-case V/J panel, enumerating all binary topologies through seven distinct states.
Retain invariant sites, fitted branch units, numerical boundaries, multistart diagnostics
and conditional ancestral probabilities with explicit rooting and model limits. Add a
native evidence download, provider permissions, deterministic processor checks, independent
ancestral-enumeration/optimizer comparisons and both-theme simulated viewer validation.
Historical parsimony results and scientific replay remain unchanged. -
Sample-scoped CytoWeave phenotype links (wave 9, slice 13). Review one index-sort
acquisition against one explicitly selected receptor sample using a separate well-to-cell
mapping. Preserve exact CSV/provenance text, numeric strings, missingness and unmatched
identities; refuse ambiguous wells, event IDs and cell targets. Retain declared acquisition,
compensation and gating context without inferring biological pairing or phenotype validity.
Add native permission/refusal controls, actual sibling FCS/exporter interoperability,
independent CSV/hash checks and artificial both-theme review validation. -
Reviewed Proteoscope handoff (wave 9, slice 12). Transfer one unchanged AIRR amino-acid
observation to an explicitly reviewed local Proteoscope 0.10.0 for public RCSB sequence search.
Require separate local/public permissions and applicable provider-term acknowledgment. Preserve
exact source annotations, identifiers and query evidence locally; refuse unsupported sequences,
changed sources/destinations and repeated reviews. Validate against the actual receiver with
public requests intercepted, plus independent evidence checks and both-theme browser controls. -
Subject-level Prism interchange (wave 9, slice 11). Export one saved cohort feature or
comparison result as data-only PZFX Column tables with explicit subject identities, declared
group order and paired alignment. Preserve missing measurements, structural blanks, zero and
excluded-sample reasons alongside exact native evidence. Refuse ambiguous or oversized mappings;
keep provider acknowledgment and import precision/method limits explicit. Add independent
XML/Decimal and R-reader import checks, native refusal controls and artificial both-theme UI
validation. Native Prism GUI import remains unverified where Prism is unavailable. -
Exact Excel evidence workbooks (wave 9, slice 10). Export explicitly selected saved
cohort, batch QC and motif results with typed JSON-node value/provenance sheets, original
scalar tokens, methods, notices and native JSON/certificate companions. Keep precision-sensitive
numbers and all identifiers as text; distinguish null, absent fields, empty values and zero.
Refuse oversized or changed evidence and preserve provider acknowledgment. Add independent
workbook-reader controls, artificial both-theme browser validation and clear spreadsheet
precision, editing and scientific limits. No new estimator or replay/automation contract. -
Observed public-cohort overlap (wave 9, slice 9). Compare one local sample with explicitly
selected, checksum-verified ADC captures under a named productive/locus/exact-junction
presence contract. Report eligible/excluded records, shared/union counts, Jaccard and
per-junction capture/scoped-subject support. Keep empty sets unavailable, missing subjects
outside the evaluable denominator and cohort completeness unestablished. Refuse duplicate
scopes and implicit visit/processing pooling. Save native evidence with source fingerprints;
add independent set/rational controls and simulated both-theme browser validation. -
Reviewed ADC downloads (wave 9, slice 8). Capture one explicitly selected repertoire
and processing run after permission/citation and size-budget review. Preserve exact metadata
and rearrangement pages, requests, timestamps, hashes and stop reasons in new private folders.
Refuse mixed scopes, repeated identities and malformed pages; clean up failed/cancelled work.
Keep completeness unproven and source captures separate from analysis datasets and replay.
Add native/API controls and simulated both-theme review validation. -
AIRR Data Commons metadata browsing (wave 9, slice 7). Pin the ADC v1 contract and
approved repository registry. Preview exact metadata filters, endpoints and bounded pages
before each explicit request. Preserve original response text, exact numeric tokens and
fingerprints; support offline refusal, cancellation and actionable provider errors. Keep
partial pages, subject scope, scientific validity and reuse permissions explicit. Add
independent request/evidence controls and simulated both-theme browser validation. No
dataset installation, automatic paging, local receptor upload or new automation action. -
Cell Ranger detailed JSON annotations (wave 9, slice 6). Import the nested contig
array layout with exact barcodes, reads/UMIs, supplied flags and source clone labels.
Preserve unknown fields and original objects for paged inspection/cache reopening.
Keep background contigs, missing flags and unresolved mixed chains explicit; refuse
duplicate/conflicting identities, ambiguous layouts and invalid counts. Add CSV-first
folder fallback, independent JSON/CSV/AIRR controls, public-output comparison and
both-theme simulated evidence with documented scientific limits. -
Native TRUST4 and VDJtools reports (wave 9, slice 5). Recognize documented
report headers, distinguish stop/frameshift/partial notation, preserve missing values and
explicit count units, and retain complete source rows for inspection. Keep ambiguous units
unknown and source frequencies separate from analysis denominators. Add bounded evidence
capture/cache persistence, independent CSV/Decimal references, malformed-input controls,
both-theme simulated examples and documented scientific limits. Saved mappings retain precedence.
Repair legacy AIRR Repertoire-array inspection overwriting its input buffer, with original-byte
preservation and release-opening regressions. -
Native AIRR object inspection (wave 9, slice 4). Read AIRR 2.0 Clone, Cell,
Receptor and supporting Node objects in JSON/bounded YAML alongside rearrangement tables.
Preserve exact values, unknown fields, source snapshots and explicit links. Reject duplicate
IDs, ambiguous cardinality, conflicting repertoire links and incorrect receptor hashes.
Inspect loaded/unresolved/unscoped/unassessed links without changing clonotype definitions,
counts or pairing. Add independent exact-reader fixtures, refusal/fuzz/API controls,
simulated both-theme screenshots and documented scientific limits. -
Versioned MiAIRR reporting checklist (wave 9, slice 3). Inspect AIRR 2.0 metadata
reporting with pinned essential/important/defined levels, explicit missingness states,
separate repeated scopes, evidence paths, conditional review and remedies. Keep exact
source values intact. Show unsupported versions and bounded refusals explicitly; do not
certify MiAIRR compliance, ontology conformance or scientific validity. Add the independent
82-field standards inventory, hand-specified evidence controls and both-theme presentation.
Document unassessed processed-sequence reporting, raw-file verification and scientific limits. -
Bounded AIRR YAML metadata (wave 9, slice 2). Read a documented YAML 1.2 subset,
including gzip and uploaded filenames, without runtime dependencies or floating-point
conversion. Preserve scalar types, exact decimal tokens, null/false/zero and original source
snapshots. Refuse ambiguous keys/IDs, unsupported syntax and excessive work. Distinguish
decoded record JSON from original YAML in the inspector. Add independent ruamel.yaml node
refere...
ClonoLoom 0.8.0
Added
-
Complete record-and-reach study and 0.8.0 compatibility fixture. Connect the window,
HTTP/MCP/Python/R, checkpoints, self-checking reports, certificates, exact headless replay
and portable archive transfer on one declared artificial batch-QC study. Retain complete
source truth, original scientific bytes and explicit descriptive limits. Add future-release
reopening/replay/recovery checks without modifying older fixtures. Align application,
citation, web cache keys and generated client packages at 0.8.0; API 2, catalog 4 and policy 1
remain unchanged. Refresh worked guides and both-theme presentation for release review.
Fix reviewed automation clearing loaded scientific inputs/results: invalidate older
asynchronous attachments separately from project/view reset; retain cancellation guards.
Reload still-selected saved results after Undo/Redo instead of leaving their views empty. -
Containers and cluster execution (wave 8, slice 14). Package the existing native Go
workers in a digest-pinned multi-stage build and small non-root, shell-free OCI runtime.
Allowlist build inputs and retain program/runtime license notices. Print reviewed commands
with pinned local image IDs, disjoint read-only input/writable output mounts, bounded scratch,
no network and explicit privilege/resource limits. Add private byte-preserving replay bundles
and an explicit native Slurm array example without automatic submission or acknowledgment.
Validate native/container byte parity, all five replay kinds, scientific differences,
unavailable methods, mount/overwrite/provider refusals and SIGTERM cancellation. Add CI and
operational/scientific limits; source support and replay tolerances stay unchanged. -
Agent contract benchmark (wave 8, slice 13). Add eight versioned tasks on independently
enumerated artificial AIRR inputs, with separate answer, native-evidence and permission
grades. Exercise counts, fixed denominators, missing versus zero, reviewed grouping changes
and refusals through HTTP, MCP, Python and R. Require explicit fixture grants and scripted
review; retain exact scientific JSON, provenance, failures and task denominators. Add a
bounded opt-in JSONL candidate adapter, scripted/empty controls, accessible both-theme
reports and CI. Public controls validate the harness, not general model or scientific
competence. No model service is run by default; the local candidate is not OS-sandboxed.
Keep catalog 4, scientific workers and exact replay contracts unchanged. -
Typed Parquet dataset exports (wave 8, slice 12). Export native clonotypes and retained
AIRR rearrangements with nullable integer counts, boolean flags, explicit sample-column maps,
definition/QC/units, provider notices and hashed inventories. Preserve invariant-rule
denominators and native annotation text; refuse fractional or ambiguous counts without
rounding. Add Parquet to the existing reviewed pseudonymized workflow with sanitized footers
and a separate private map. Adapt the Apache-2.0 SituCraft writer with bounded optional columns
and cancellation, without runtime dependencies. Add reviewed automation and generated clients
(catalog 4, 64 actions), independent PyArrow/DuckDB parity controls and both-theme validation.
This is a mapped native-table representation, not restored input precision or a replay certificate. -
Explicit de-identification exports (wave 8, slice 11). Prepare and review fresh subject,
sample, cell and sequence pseudonyms in a separate dataset-table ZIP. Choose free-text/HLA
removal explicitly, preserve retained native scientific values, units, QC and definitions,
and download the private identity map separately. Refuse unmapped nested evidence, stale
receipts and oversized outputs; keep originals and provider terms unchanged. Add reviewed
shared actions and generated Python/R methods (catalog 3, 63 actions), scientific-parity and
disclosure checks, and a representative both-theme workflow. This is pseudonymization, not
anonymity or de-identification of existing archives, reports or replay certificates. -
Portable project archives (wave 8, slice 10). Transfer original project/history, result
and checkpoint bytes in a versioned, bounded.clzinventory. Include sources only by explicit
choice and policy; retain missing, changed, omitted, restricted and unsupported statuses.
Verify every member before installing, reject unsafe paths/links/aliases and destination
conflicts, and preserve originals separately from verified local working bindings. Recover
imported checkpoints and re-export without original machine paths. Add window inspection and
reviewed HTTP/MCP actions; catalog 2 generates 61 Python/R methods. Validate cross-release
reopening, hostile inputs, exact native evidence and both-theme views. No scientific workers,
plotting methods, replay tolerances or release fixtures change. -
Generated R client (wave 8, slice 9). Share the 58-action catalog and permission contract
with Python. Generate functions and Rd help following the sibling applications' package
patterns. Preserve original JSON number tokens, native text and response bytes; distinguish
omission/null/arrays/objects and provide exact list-column frames. Keep explicit discovery,
compatibility checks before POST, host grants, human review and typed uncertain outcomes.
Bound streaming responses and refuse malformed evidence, implicit precision loss and retries.
Validate package build/install/check, fake HTTP fixtures and shared R/Python/HTTP native evidence
on a seeded simulated repertoire. Add CI and guides; scientific workers/replay stay unchanged. -
Generated Python client (wave 8, slice 8). Generate 58 methods and argument/effect/review
help from the shared Go catalog, with snapshot and generator drift checks in CI. Use explicit
connection overrides, compatible API/catalog/policy checks before actions, typed errors and
unchanged host grants/window review. Preserve exact int/Decimal values, original response and
native query text, omitted versus null arguments, arrays and optional pandas object columns.
Bound JSON and refuse redirects, malformed responses and automatic retries. Validate fake
servers, installed distributions and a real host/window using seeded simulated data. Keep
scientific workers, five-kind exact replay, version 0.7.0 and release fixtures unchanged. -
MCP transport (wave 8, slice 7).
clonoloom mcphosts the normal local window
over bounded stdio JSON-RPC. Support MCP 2026-07-28 per-request discovery and explicit
2025-11-25 initialization compatibility. Share the HTTP action catalog, grants, argument
validation, human proposal review and audit; client metadata never widens permissions.
Preserve native JSON numeric tokens, refuse oversized results without truncating success,
and support progress/cancellation and EOF cleanup. Document exact replay and completed
file-effect limits. Repair missing clonotype grid cell/header accessibility roles exposed
by the both-theme MCP audit workflow. No new scientific method or changed replay tolerance. -
Automation policy, proposals and typed queries (wave 8, slice 6). API 2 defaults
to read-only remote control, with explicit host capabilities and token checks. Review
named proposals against the unchanged project, retain Undo/Redo and session audit,
and refuse stale/cancelled attachments. Bounded typed clonotype queries preserve
definition, QC, units, full-table denominators and native JSON numeric tokens.
No SQL/shell, new estimator, replay tolerance or expanded replay coverage. Cancellation
does not erase completed file effects; audit retains only the last 500 session events. -
Self-checking HTML reports (wave 8, slice 5). Export one offline file for explicitly
selected cohort features/comparisons/count models, batch QC and motif results. Preserve
exact numeric tables, complete result records, original JSON/certificates, methods,
references and provider notices. Reuse existing plot geometry with explicit unavailable
states and keep feature/motif reports tables-only. Check embedded content, downloads,
geometry and styles before display, optionally against a separately retained fingerprint.
Keep integrity distinct from scientific replay, authenticity and biological validity.
Refuse changed/unsupported/oversized evidence and stale exports; retain provider gates,
cancellation, exact native replay and clear bounds. Version remains 0.7.0. -
Checkpoints and analysis differences (wave 8, slice 4). Preserve named immutable local
analysis checkpoints with exact project JSON, completed attached result files and SHA-256
inventories. Compare recorded sources, definitions, QC, populations, parameters and result
identities with raw JSON evidence, preserving numeric tokens, missing values and array order.
Recover missing result files without changing their bytes or overwriting conflicts; restore
analysis values through undo/redo while keeping current identity and history. Refuse stale
edits, incompatible versions, corrupt evidence and browser numeric loss. Expose the same
Reports workflow through shared actions and document its local recovery boundary: no original
source backup, running-job resume, implicit recomputation or expanded replay support.
Check recovered certificate identity and exact replay, independent inventories, compatibility
and both-theme artificial-study workflows. Keep version 0.7.0. -
Headless recipes and broader replay (wave 8, slice 3). Add native
clonoloom run
with checksum-pinned named inputs, explicit batch task selection, new output directories,
fixed/resolved recipe time, source validation findings, normalized recipes and run invent...
ClonoLoom 0.7.0
Added
-
Complete cohort studies and release preparation (wave 7, slice 12). Guide positive,
null, unbalanced and paired artificial studies through saved designs, subject features,
group comparisons and batch-adjusted count models. Keep a fully confounded study's failed
design check, its findings and cited Methods; exclude failed checks from analysis selection.
Add 12/20-subject and fully confounded simulator controls with complete truth. Preserve
five studies and sixteen replayable results in the 0.7.0 compatibility fixture. Document
estimands, subject denominators, conditional intervals and simulation limits, with both-theme
workflow captures and release validation. Prepare application, web assets and citation
metadata for 0.7.0; clients and MCP remain Wave 8. -
Paired pseudobulk differential expression (wave 7, slice 11). Compare two declared
receptor-size categories within subjects at one supplied cell type and literal timepoint.
Check complete pairs, preserve explicit exclusions, and fit raw gene counts with median-of-ratios
size-factor offsets, subject fixed effects and unmoderated NB2/Cox–Reid dispersion. Keep the
full design, count filter, BH family including failed-fit slots, conditional Wald intervals
and every raw observation. Require 25–32 subject pairs and at most 1000 eligible genes; no
implicit pooling, complete-case deletion, Poisson fallback or full edgeR/DESeq2 claim.
Add saved jobs, source/parent-free replay, provider-aware ZIPs, cited Methods and the visible
compare_pseudobulkaction. Show gene abundance/effect, paired subject points and separate
conditional intervals. Include 28-subject positive/null examples with separate truth and
independent SciPy/statsmodels normalization, fit, null/positive and multiplicity controls. -
Pseudobulk count evidence (wave 7, slice 10). Sum exact raw Gene Expression counts
per subject, sample, literal timepoint, supplied cell type and declared receptor-size
category. Preserve missing annotations, unavailable assignments, absent groups, measured
zeros, low-cell libraries, complete features and per-cell membership. Pin saved phenotype
parents, source hashes, definitions and QC; refuse implicit sample pooling or mismatched
feature panels. Add durable source-free replay, complete provider-aware exports, Cells
controls, remote aggregation, cited Methods and coverage plots in both themes. Provide an
eight-sample artificial count study and independent integer aggregation checks. This is
evidence preparation; no normalization, differential-expression test or specificity claim. -
Batch QC (wave 7, slice 9). Compare six sample metrics within explicitly declared
batches using median/raw-MAD modified z-scores. Preserve every sample assignment, exclusion,
raw value, denominator and unscored reason; require one included observation per subject
per batch. Keep small groups, zero MAD and unavailable evidence unscored. Add common-scale
sample distributions, exact reference tables, immutable source-free replay and exports,
remote control and cited Methods. Provide a varied 26-sample artificial study with shifted,
low-productivity, missing-count, small-group and constant-value controls. Validate independent
references, every generating denominator, processor agreement and both-theme workflows.
Flags are descriptive review labels, never automatic removal, batch correction or biological
inference. Document assumptions, masking and the limits of within-batch references. -
Contamination evidence (wave 7, slice 8). Inspect exact productive bulk TRB nucleotide
junction/V/J sharing between explicitly assigned unrelated human subjects. Preserve all
sample pairs and matches, complete retained-abundance denominators, eligible evidence and
exclusion reasons. Separate editable abundance/asymmetry review heuristics from optional
checksum-pinned nucleotide Pgen context; unknown Pgen remains unknown and high Pgen never
suppresses evidence. Add equal-log-axis plots, complete source-free replay/exports, remote
controls and cited Methods. Provide a varied eight-subject artificial study with a repeat,
planted transfers, assigned shared controls, a synonymous control and full truth. Validate
independent rational references, every simulated pair, processor agreement, saved workflows
and both-theme visuals. No source, direction, rate or proof of contamination is inferred;
no sequence is removed. Document the bounded human bulk-TRB scope and scientific limits. -
Convergence and HLA association (wave 7, slice 7). Measure selected saved motif-group
recurrence across unique subjects, with explicit sample assignments and raw HLA typing.
Use complete two-field typed universes per locus, conditional hypergeometric enrichment
and BY over all declared group × allele slots. Preserve incomplete/ambiguous typing,
unavailable tests and full membership. Show subject fractions with marginal Wilson
intervals and descriptive recurrence, with cited methods and population/selection limits.
Add immutable replay, source/parent-free reopening, provider-aware complete exports,
remote control and a 32-subject artificial study with repeated samples, varied junctions,
uneven counts and full truth. Validate independent SciPy references, exact conditional
controls, processor agreement, saved workflows and both-theme visuals. Recurrence and
HLA association do not establish convergent recombination, restriction or specificity. -
Motifs and sequence-signature groups (wave 7, slice 6). Screen explicit query and
background samples for overlapping local motifs and conservative global signatures.
Count unique TRBV/junction units, match exact V/length strata, and use conditional Fisher
tails with BY across the complete pooled signature family. Preserve nulls, exclusions,
captured evidence, replay, provider-aware exports, remote control and cited Methods.
Add complete query-member residue frequencies and a varied artificial study with planted
signatures, uneven counts and full truth. Document every GLIPH2 adaptation, omitted N/P
and composite scores, sequence-unit assumptions and lack of antigen-specificity proof.
Validate independent enumeration/SciPy probabilities, source/truth counts, processor
agreement, saved workflows and both-theme visuals. -
Definition robustness (wave 7, slice 5). Audit saved subject-feature contrasts under
declared junction and V/J alternatives, preserving subjects, QC and inference settings.
Require exact baseline reproduction; retain failed alternatives, all correction slots,
assigned evidence and explicit direction/magnitude/interval summaries without p-threshold
verdicts. Add across-audit BY correction, forest and subject plots, complete exports,
immutable replay, remote controls and saved Methods. Provide a realistic sparse simulated
study with synonymous junctions, gene/allele distinctions, uneven depths and full truth.
Validate independent regrouping/SciPy references, processor agreement, source-free saved
workflows and both-theme screenshots. Document the bounded aggregate-feature scope and
distinguish descriptive sensitivity from joint specification-curve inference. -
Replicated clonotype counts (wave 7, slice 4). Fit two-group NB2 models under saved
independent or paired subject designs, with assigned-library offsets, per-clonotype
Cox–Reid dispersion, optional estimable batch and explicit contrast/filter/BH family.
Require adequate residual replication; retain missing, separated, boundary and failed
inference explicitly, without Poisson fallback or silent subject removal. Add observed
subject/pair, MA-style and conditional Wald interval plots, complete captured counts,
immutable replay, remote controls, saved Methods and provider-aware exports. Provide
independent, paired and null simulations with heterogeneous variation and full truth.
Validate public statsmodels/SciPy references, null calibration and approximation limits,
source/truth consistency, processor agreement, saved workflows and both-theme visuals. -
Subject-level group comparisons (wave 7, slice 3). Compare saved features under their
checked independent or paired subject design: Welch/paired t and conditional rank tests,
including ties and exact/seeded Monte Carlo tails. Show mean differences and conservative
probability effects with distinct marginal intervals; declare both tests for every selected
feature as one BH family. Keep missing observations and untestable results explicit, with
no silent subject deletion or cell-level replication. Add subject/pair and effect plots,
complete CSV/JSON and figure exports, immutable jobs, remote control, methods, undo and
standalone reopening. Validate against SciPy and exhaustive nulls, coverage controls,
processor agreement and browser workflows; document assumptions and scientific limits. -
Subject feature tables (wave 7, slice 2). Join an explicit saved design version to
a checksum-pinned diversity result, keeping one selected sample per subject/group.
Export 13 features with defined units, null/zero distinctions and missing-value reasons;
retain the full design, exclusions, parent measurements, definition, QC and source notices.
Add an accessible paginated table, remote action, methods, undo/redo and source-free
reopening/export. Preserve paired identity without pooling, averaging or group testing.
Validate raw-abundance references, durable replay, checksum refusals and browser workflows.
Make long dialog bodies keyboard-scrollable for complete methods inspection. -
Cohort study designs (wave 7, slice 1). Check explicit independent or paired
two-group designs with subjects as the unit, complete sample members...
ClonoLoom 0.6.0
Added
-
Complete single-cell study and release preparation (wave 6, slice 10). Connect the
seven guided steps through supplied coordinates, computed maps, phenotype links, graph tests,
AnnData export and cited methods. Correct the cell-state simulator's methods description and
include saved Cells results with their recorded parameters and references; leave unknown
simulation models unspecified. Repair sidebar list/button and decorative tab-separator
semantics found by the complete-study accessibility check. Preserve the full
four-sample artificial study and five-result chain as the 0.6.0 compatibility fixture, including
exact replay of the AnnData bytes with recorded provenance. Update release identifiers, guides,
screenshots and the product-site sources; validate scientific references, release compatibility,
performance, accessibility and supported builds. Pass full race/non-race scientific suites,
arm64/amd64 release replay, six isolated performance budgets and platform builds, 113 JavaScript
tests, 41 browser scenes in both themes, 14 contrast checks and 136 site audit checks. -
AnnData export with receptor links (wave 6, slice 9). Write bounded int64 CSR raw counts
for all expression cells and selected feature modalities, including explicit zero counts and
excluded cells. Preserve sample-scoped receptor assignments, annotations, missing values,
separate supplied/computed embeddings, parent documents and manifests, source fingerprints
and NOTICE. Add verified durable jobs, portable downloads and saved reopening. Independently
read and rewrite the export with AnnData/h5py, including Unicode, exact integers and missing
coordinate rows. The versioned ClonoLoom receptor-link schema is not scirpy's raw AIRR encoding. -
Receptor and expression neighborhoods (wave 6, slice 8). Compare paired clonotypes using
mean expression PCs and explicit paired TCRdist settings. Exclude shared alpha/beta CDR3s,
retain cutoff ties, use actual degrees for conditional hypergeometric tails and correct across
every testable clone and neighborhood size with Bonferroni. Preserve untested cases, extreme
log tails, source-compatible receptor snapshots and parent/reference hashes. Add observed/
expected plots, accessible tables and parent-overlay links. Validate geometry and probabilities
independently with SciPy and exhaustive controls. This CoNGA-style comparison does not implement
the complete CoNGA pipeline or establish antigen specificity; confounding remains explicit. -
Clonotype modularity (wave 6, slice 7). Test one sample's predefined clonotypes on a
checksum-pinned expression-neighbor graph. Count induced binary edges among uniquely
assigned retained cells, with analytic size-matched expectations, exhaustive small nulls,
seeded Monte Carlo tails and Benjamini–Yekutieli correction. Preserve untested/excluded cells,
null frequencies, seeds and method provenance. Add cancellable/resumable jobs, saved reopening,
a discrete null-frequency plot, accessible tables, parent-overlay links, JSON export, remote
control and a guided artificial study. Independently validate exact subgraphs, Monte Carlo
frequencies and adjusted p-values. State exchangeability and confounding limits explicitly;
graph connectivity does not establish antigen specificity. -
Clonotype overlays and phenotypes (wave 6, slice 6). Link one receptor sample to an
imported or computed expression map using exact barcodes and saved definition/QC rules.
Count distinct cells in explicit receptor-sample or mapped populations; retain both coverage
counts, configurable size categories and continuous coloring. Separate missing receptor
evidence, QC exclusions, ambiguous assignments and unavailable sizes. Add supplied-phenotype
counts and fractions with visible denominators and subject/timepoint boundaries. Save cited,
immutable artifacts with source and map checksums, remote control and complete JSON exports.
Add linked clonotype highlighting, brushing, searchable tables, selection undo and a guided
example. Validate against independent SQL tabulations and synthetic edge cases. -
Computed expression maps (wave 6, slice 5). Add explicit gene-count normalization,
variance-ranked feature selection, centered PCA, exact Euclidean neighbors, a saved fuzzy
graph and seeded UMAP. Preserve excluded cells, missing annotations, source fingerprints,
effective parameters and cited methods in immutable results. Add cancellable/resumable jobs,
Cells settings and computed maps, accessible inspection tables, saved reopening, JSON export,
remote control and a guided artificial-study step. Independently validate feature moments,
PCA, neighbors, graph weights, curve fitting, simulated-state recovery and map quality;
pin processor-independent result bytes. -
AnnData and MuData evidence (wave 6, slice 4). Read explicitly selected dense/CSR/CSC
count matrices, obs/var annotations, supplied embeddings and scirpy AIRR chain records.
Preserve exact modality-local barcodes, nullable values, empty versus missing AIRR cells,
feature metadata and embedding provenance. Pin all selections and source fingerprints in
saved inputs; refuse ambiguous selections, normalized/fractional counts and malformed data.
Extend the bounded HDF5 reader with attributes, variable strings, numeric matrices and
boolean enums. Add variable/AIRR inspection pages, source-aware axes, an offline example,
remote control and independent AnnData/MuData/Awkward fixtures. -
10x HDF5 expression evidence (wave 6, slice 3). Read a selected feature-barcode HDF5
file into the existing sparse Cells model, retaining feature modalities, explicit zeros,
exact barcode links and optional annotations. Add a bounded standard-library reader for
classic/compact groups, contiguous/compact arrays and classic B-tree chunks with deflate,
shuffle and Fletcher32. Verify checksums and reject unsupported storage, malformed CSC,
unsafe counts and missing chunks. Fingerprint the complete file and verify saved reopening
without changing MEX identities. Add an offline compressed example, remote control, browser
checks and independently generated h5py/SciPy fixtures. -
Cells map feedback. Show missing annotations in outlined neutral gray above overlapping
points, without changing source coordinates or categorical colors. Label both supplied axes.
Add a reproducible 360-cell Gaussian-cloud study example while preserving the original grid
preset and its source identities. Refine the remaining wave 6 acceptance criteria for source
axis provenance, repertoire overlays, linked selection and optional defined density contours. -
Known cell states and imported maps (wave 6, slice 2). Generate a seeded paired
TRA/TRB and expression study with three known states, 24 artificial genes, separate truth
and deliberate missing evidence. Import an explicitly selected cell-annotation TSV with
optional supplied coordinates; retain unmatched rows, missing labels and missing coordinates.
Pin the optional source in the expression identity without changing MEX-only identities.
Add bounded annotation inspection, a supplied-coordinate map, accessible source-value tables,
saved reopening, remote control and an offline guided example. Independent SciPy and truth
checks cover every simulated matrix value and source population. -
MEX expression evidence (wave 6, slice 1). Read plain/gzipped 10x feature-barcode
matrices and legacy genes.tsv into a bounded sparse model. Preserve feature types, explicit
zeros and source fingerprints; reject malformed, ambiguous or duplicate evidence. Link exact
barcodes within an explicitly selected receptor sample, counting distinct barcodes separately
from chain rows and reporting both unmatched populations. Add Cells with bounded inspection,
gene-only UMI totals, null measurements when genes are absent, saved reopening with drift
detection, remote control and an offline artificial example. Independently validate sparse
values with SciPy and coverage with set-based counts.
ClonoLoom 0.5.0
Added
-
Examples and release preparation (wave 5, slice 9). Complete the nine-step artificial
immunization guide through families, germlines, SHM, lineages, observed isotypes and cited
methods. Document expected results, uncertainty, exports and saved reopening. Preserve a
0.5.0 project with 60 paired artificial cells, joined IMGT evidence and seven results;
pin reference bytes and provenance and replay the full parent chain byte for byte.
Update the release overview, user guides, screenshots and version identifiers to 0.5.0.
Validate released-project replay on arm64/amd64, full race and non-race scientific checks,
six isolated performance budgets and platform builds, 95 JavaScript tests, all 31 browser
scenes in both themes, 14 contrast checks and the 128-check site audit. -
Isotypes and family co-occurrence (wave 5, slice 8). Summarize heavy constant calls
by sample and family/sample from saved, checksum-pinned families. Count each cell or bulk
heavy observation once, distinguish class from gene/subclass resolution, and retain ambiguous
and malformed calls, parent exclusions and missing abundance. Keep observation and abundance
units distinct. Show unordered gene pairs with family coverage,
inspect original source calls, and export complete CSV/JSON tables with provenance. Add cited
methods, remote control and the guided artificial study. Independent truth-file tallies agree
for 2,160 cells, 36 families and 466 usage rows. Co-occurrence does not infer switching events,
direction, timing, ancestral traits, rates or significance. -
Lineage trees (wave 5, slice 7). Build separate family/locus trees from saved
germlines on shared evaluable V/J panels. Collapse identical states while retaining
source rows and observed metadata. Search exactly through eight taxa and with bounded,
deterministic addition/NNI through 64; keep heuristic limits and exclusions explicit.
Show one consistent ancestral assignment, conditional IUPAC states and exact topology
tie/split counts without treating them as confidence probabilities. Add the interactive
tree, accessible node tables, source inspection, figure and CSV/JSON/FASTA/Newick exports,
pinned metadata/provenance, cited methods and remote/guided workflow. Independently check
all 72 artificial trees, including 1,093 changes and all optimal-topology counts.
No class-switching, migration, selection, event-date or likelihood inference is added. -
Somatic hypermutation (wave 5, slice 6). Compare saved D-masked germlines
with source chain rows, retaining parent checksums and reference provenance.
Report evaluable bases/codons, regional substitution frequencies, single-hit
replacement/silent substitutions, endpoint codon changes and unclassified
substitutions. Missing coordinates/frame evidence, ambiguity, indels and stops
have explicit denominator and exclusion rules. Add SHM, row inspection, bounded
pages, complete CSV/JSON exports, descriptive sample/locus totals, cited methods,
remote control and the guided artificial workflow. Independently validate all
4,320 rows and 43,200 region records against known ancestors. No selection test,
historical mutation rate or lineage tree is inferred. -
D-masked germlines (wave 5, slice 5). Reconstruct assigned B-cell source rows
using a saved family result, common explicit V/J alleles and checksum-pinned references.
Project ungapped-reference AIRR CIGARs onto oriented queries, preserve indels and coordinate
maps, and mask all intervening D/N/P bases. Report conflicting, ambiguous and unsupported
evidence rather than choosing an allele or padding an alignment. Human OGRDB IGH v10,
IGK v5 and IGL v4 are available as on-request CC0 reference downloads.
Add Germlines, row inspection, immutable lineage, complete JSON/CSV/FASTA exports,
cited methods, remote control and the guided artificial workflow. -
Artificial B-cell model v2. Export V/J references and CIGAR/coordinate evidence;
distinguish J alleles for the two existing backbones. Simulated sequences, mutation
histories and family recovery remain unchanged. Existing v1 files remain openable. -
Clonal families (wave 5, slice 4). Compare normalized nucleotide junction distances
within explicit subject or sample and V/J/length partitions. Inspect nearest-distance
distributions before selecting an inclusive single-linkage threshold. Null and zero differ. -
Support heavy-only and conservative paired heavy/light comparisons, with explicit exclusions,
cell counts, missing abundance, deterministic identities and bounded cancellable work.
Keep inferred families separate from existing junction clonotypes. -
Add B cells → Families, saved choices/results, paginated memberships and source inspection,
complete CSV exports, figure exports, cited methods, remote control and guided example steps. -
Match every membership and nearest distance against independent graph calculations at four
thresholds in both modes. Recover all 36 known artificial families at 0.1; this demonstration
threshold is not a recommendation for biological data. -
Complete Go race checks, vet, six builds, arm64/amd64 compatibility, distance fuzzing,
87 JavaScript tests, 14 accessibility checks, both-theme guided browser checks, the
112-check site audit and isolated million-row performance budgets. -
Simulated B-cell families (wave 5, slice 3). Add
bcell-immunization: three artificial
subjects, paired heavy/light chains, known ancestors, seven-state families, ordered substitutions,
fixed isotype histories and sampled cell abundance at three time points. Record unobserved
states, probabilities, assignments, parameters and file hashes separately from AIRR observations. -
Preserve back-mutations and distinguish accumulated events from net ancestor differences.
Fictional SIM genes and artificial regions are explicitly labeled; the simple model makes no
biological SHM-rate or affinity claims. No molecular counts or inferred families are invented. -
Add atomic output and cancellation cleanup, an offline example with Subjects/Inputs steps,
model-specific methods, cited documentation and both-theme guide captures. Independent CSV and
event replay agree with reader, evidence and paired-clonotype checks. -
Validate 252 known states, 1,296 mutation events and 2,160 paired cells; retain distinct
descriptions when TRB and B-cell studies are opened together. Go race tests, vet, arm64/amd64
simulation bytes and released-project compatibility, six builds, 84 JavaScript tests,
14 accessibility checks, 108 site checks and isolated million-row budgets pass. -
IMGT/HighV-QUEST input (wave 5, slice 2). Open extracted annotation folders or the four
named tables together. Join by sequence number and ID, rejecting incomplete or conflicting
bundles. Retain gapped queries, native annotations, optional Parameters and all source hashes. -
Map query coordinates only against matching uncorrected Summary sequence; preserve original
positions and report withheld mappings after indel correction. Keep tied calls, unknown
functionality and failed annotations distinct; count sequences without inferring molecules. -
Preserve grouped inputs through the cache, saved-project reopening and AIRR round trips.
Add an offline synthetic IMGT example, guided inspection, cited methods and both-theme images.
Independent CSV checks and boundary, fuzz, cache and browser tests cover the format contract.
Germline reconstruction and mutation followed in slices 5 and 6. -
B-cell sequence evidence (wave 5, slice 1). B cells → Inputs shows the active filter
and definition, per-sample IGH/IGK/IGL rearrangement evidence counts, paginated rows and an
inspector of original sequence annotations and findings. Counts are rows, not cells or families. -
Retain 42 AIRR fields, including sequences, alignments, orientation, CIGARs and coordinates.
Check structural consistency without realigning, padding, reconstructing germlines or measuring
mutation. Missing evidence remains missing; invalid values remain inspectable and exportable. -
Preserve evidence in the table cache and AIRR exports. Rebuild old caches while retaining
existing dataset and artifact identities, since junction analyses are unchanged. -
Add
inspect_bcell_inputs, a locally generated synthetic example with guided steps, cited
methods, a guide and captures in both themes. Independent CSV values agree on all retained
fields across four public B-cell datasets; cache/export, boundary, fuzz, browser and saved-project
checks cover the new path. Go race validation, amd64 compatibility, six builds, 81 JavaScript
tests, 14 accessibility checks and 108 site audit checks pass.
ClonoLoom 0.4.0
Wave 4 of the roadmap: specificity.
Added
-
Invariant populations and release preparation (wave 4, slice 8). Clonotypes flags
MAIT-, iNKT- and GEM-consistent receptors by published gene, junction-length and motif rules.
Species is an explicit saved choice; human iNKT requires a paired beta-chain gene. Missing
or ambiguous required evidence is not evaluable, and no mouse GEM rule is asserted.- Per-sample matched and evaluable abundance, with all retained abundance as the denominator;
each clonotype counts once per rule. Population filtering, complete CSV exports, cited
methods andflag_invariantremote control. Sequence flags do not establish phenotype
or antigen specificity. - Independent cell-level CSV calculations agree: MAIT 10/406 (2.46%) in PBMC 1k and
80/4,562 (1.75%) in PBMC 10k v2, within the typical published blood T-cell range.
Rule tests cover published consensus receptors, constructed boundaries, missing evidence,
gene resolution and repeated chains. - Complete guided epitope and vaccine steps, including networks, specificity matching and
Tracking; guide pages and screenshots in both themes. - The 0.4.0 compatibility project saves synthetic rule examples, simulated beta chains,
the species choice, TCRdist, networks and generation probabilities. Results and invariant
summaries are reproduced byte for byte, without downloaded references. Versions and
release pages are prepared; publishing remains a maintainer action. - Validated: Go race checks (the full validation package completes within the 20-minute
timeout), amd64 rule and compatibility checks, all six platform builds, 80 JavaScript
tests, 14 accessibility checks and 104 site audit checks with no problems.
- Per-sample matched and evaluable abundance, with all retained abundance as the denominator;
-
Specificity databases (wave 4, slice 7). Specificity's Database part matches retained
T-cell chains to VDJdb, downloaded on request with terms shown, or the vaccine example's
simulated database. Exact CDR3 matching optionally requires identical V/J calls; TCRdist
matches within a radius, with V-gene loops or explicitly CDR3s alone. Species and minimum
score are explicit; every evidence row retains its MHC, epitope, antigen and reference.- Each sample's epitope/antigen share counts a clonotype once, regardless of repeated
evidence or matched chains. Shares can overlap; a matching chain does not establish
specificity of the paired receptor. Missing required loops are counted, never replaced
silently by a different distance method. - Follow matched clonotype IDs in Tracking with source-result and epitope provenance;
export complete evidence and sample shares with the database's NOTICE. Effective options
and reference checksums identify immutable results; Reports cite the methods. match_specificityremote control, a guide and captures in both themes. Explicit
comparison/evidence budgets fail rather than silently truncate results.- Validated against pandas: 424 simulated and 4,000 published-release row-identity lookups,
and all 150 simulated sample/epitope shares. Exact V/J matching recovers 602 molecules,
598 supported by the assigned epitope in truth, out of 3,498 true response molecules;
coverage and chance matches are documented. No published-database fixtures are bundled.
- Each sample's epitope/antigen share counts a clonotype once, regardless of repeated
-
Clonotype networks (wave 4, slice 6). Specificity's fourth part, Networks:
- identity, Hamming and Levenshtein on whole junctions, or TCRdist on CDR3s alone or with
downloaded V-gene loops; all retained chains or any shared chain, optionally matching V/J; - complete edges and connected components, with clonotypes, abundance, samples and annotated
subjects; deterministic force drawing with a separate limit of 1,000 nodes (up to 2,000);
cluster selection and links to Clonotypes; complete membership and edge CSV exports; - immutable results with effective options and reference checksums, methods text and citations,
remote control'sfind_networks, a guide and screenshots in both themes; - exact indexed sequence searches, length-and-loop pruning for TCRdist, cancellation and explicit
index, candidate and edge budgets; exceeding a budget fails rather than truncating the graph. - Validated: all 420 complete cell partitions equal scirpy 0.25.1 on eight 10x runs and three OTS
units, with matched gene resolution and TCRdist gap cost; all 34 observed simulated families
connected at TCRdist 48 in S01's day-14 repertoire (29 of 34 at two edits); layout bytes equal
on arm64 and amd64. Complete sparse synthetic 100,000-node graphs and drawing take 0.14 s
(identity), 4.16 s (Hamming 2), 2.97 s (Levenshtein 2), and 69.03 s (TCRdist 24) on an Apple M4,
within the two-minute budget; these timings are not a guarantee for dense graphs.
- identity, Hamming and Levenshtein on whole junctions, or TCRdist on CDR3s alone or with
-
Neighborhoods and backgrounds (wave 4, slice 5). The Specificity view's Neighborhoods part
(internal/neighborhood,api_neighborhoods.go):- each receptor of one locus as a centroid, its radius the largest of 0, 2, …, 48 TCRdist units
at which the weighted background within it is at most a share of the background's receptors
(10⁻⁶ by default, Mayer-Blackwell et al. 2021's; tcrdist3's own default is 10⁻⁵), and the
dataset's receptors within it its neighborhood; - each neighborhood's enrichment against the background (the rates (n + 1)/(N + 2), their ratio,
an odds ratio and a χ² test with Yates's correction, as tcrdist3 computes them) and its motif,
the residues its neighbors have at each position the distance compares; - backgrounds of ClonoLoom's own: receptors drawn from a recombination model with the
dataset's V–J usage, each weighted by the model's probability of its pair over the dataset's
share of it, so that the weighted background is the repertoire recombination alone makes; or
the dataset's own chains with their CDR3s shuffled among its genes; - kept as a result, exported as CSV (
neighborhoods.csv,members.csv), in the methods
paragraph; remote control'sfind_neighborhoods; the guide's page, Neighborhoods and
backgrounds, and its capture scene. - Validated: every centroid's radius, its neighbors in the dataset and the background, and the
rates, odds ratio and χ² computed from them equal to tcrdist3 0.3'sbkgd_cntl_nn2on Dash et
al.'s 415 human β chains against 5,204 OTS β chains with weights
(validation/reference/tcrdist3_neighborhoods.py); on the simulated vaccination study, the 20
most enriched neighborhoods of a vaccinated subject's day-14 sample, and all 149 receptors in
them, recognize the vaccine's epitopes, and none in a subject given the placebo does; 10,000
receptors against a background of 100,000 in 1.3 s on 10 processors (budget: 2 minutes).
- each receptor of one locus as a centroid, its radius the largest of 0, 2, …, 48 TCRdist units
-
Simulated antigen-specific responses (wave 4, slice 4). A study over time may hold receptors
of known specificity (internal/simulate/response.go; docs/SIMULATION.md):- each epitope's founders, rearrangements every subject shares; each subject's family of a
founder, receptors of its genes and deletions whose non-templated nucleotides differ, so that
their CDR3s differ by a residue or two, mostly ones alike; and receptors of each subject's own;
a known share of the blood at each time point, by condition; - the preset
vaccine, offered as an example with guided steps: three vaccinated subjects and
two given a placebo, sampled a week before (twice) and 7, 14, 28 and 90 days after, receptors
of three epitopes rising from 0.1% of the blood to 3% at day 14 in the vaccinated; - the truth gives every receptor's epitope, or none (
truth/specificity.tsv, the founders, an
epitopecolumn in each subject's series), and a specificity database in VDJdb's format
(database/vdjdb.txt: the founders, receptors of other donors around them, and two epitopes no
subject responds to), which opening the study's folder leaves out. - Validated: the receptors as near each other as Dash et al.'s epitope-specific β chains (58%, 63%
and 68% with another of the same epitope within 12, 24 and 48 TCRdist units; Dash et al.'s,
54–61%, 59–71% and 69–85%); their share of every sample within a quarter of the truth's; the
same bytes on arm64 and amd64; the other presets unchanged, byte for byte. On the example, the
clonotypes the beta-binomial test calls between the week before and day 14 are all receptors of
the vaccine's epitopes, in the vaccinated subjects alone.
- each epitope's founders, rearrangements every subject shares; each subject's family of a
-
Generation probability (wave 4, slice 3). The Specificity view's second part, Generation
(internal/pgen,api_pgen.go):- each clonotype's generation probability (Sethna et al. 2019): the probability that V(D)J
recombination alone makes its amino-acid or nucleotide CDR3, summed over every gene choice,
deletion, palindrome and insertion by dynamic programming over its codons, as OLGA computes it;
with the V and J genes, the CDR3 with its genes; a pair's the product of its chains'; - OLGA's seven default models (IGoR's format, Marcou et al. 2018: human TRA, TRB, IGH, IGK, IGL,
mouse TRA, TRB) downloaded on request in Reference data, checked against their recorded
SHA-256 and named by their checksum in every result; or ClonoLoom's own model of human TRB, the
simulator's, built in; the organism guessed from the V genes; - each sample's median and middle half, the distribution of the clonotypes' probabilities, and
the clonotypes the most abundant, most probable or least probable first; the clonotype's
probability, and each chain's, in the Clonotypes view's inspector (`POST /api/pgen/...
- each clonotype's generation probability (Sethna et al. 2019): the probability that V(D)J
ClonoLoom 0.3.0
Wave 3 of the roadmap: tracking. Each subject's samples placed in time
from their annotation; its clonotypes followed through the time points with their intervals,
tested between two time points by the beta-binomial test (its variance between blood samples fitted
on replicate samples) with false discoveries controlled, classed across several, and each sample
measured against an infusion product or a donor; simulated studies over time to check it all
against; results the same, bit for bit, on every processor; and the website.
Added
- Classes, attribution and guided steps (wave 3, slice 8). The Tracking view's last two
parts (internal/track/classes.go,attribution.go,api_classes.go,
web/ui/tracking-classes.js,tracking-attribution.js):- Classes: in each subject, each clonotype tested between a base time point and every later
one by the Tests part's test, the false discovery rate controlled within each comparison, and
classed by its calls: emerging (called increased at the last time point), transient (called
changed between, not at the last), contracting (called decreased at the last) or persistent
(never called, found at every time point); each subject's clonotypes by class, a class's
clonotypes as threads and in a table of their calls, and Follow this class (the
Clonotypes part follows a class:by: class); - Attribution: each sample's share in the clonotypes its reference sample holds, and, where the
subject has samples before the reference event and the reference shares few clonotypes with
them (a donor), the share derived from the reference, from the clonotypes found on one side
only, each with Wilson's interval; the share before the event, and how much of the reference
the samples before it hold. An infusion product made from the patient's own blood cannot be told
apart from it by clonotype, and the view says so; - each kept as a result, exported as CSV, in the methods paragraph; remote control's
class_clonotypesandattribute_samples; the guide's pages, Classes across time points and
Attribution to a reference; - guided steps for the simulated CAR-T and transplant examples: listed on their cards, and
shown in the Tracking view, each saying what to look at and done by Do it with the actions
scripts use (app.actions,web/ui/remote.js); - the 0.3.0 project fixture (
validation/projects/0.3.0): a small simulated CAR-T series and its
diversity, tracking, tests, classes and attribution, compared byte for byte by every later
release; every picture re-captured.
- Classes: in each subject, each clonotype tested between a base time point and every later
- The website (wave 3, slice 1). https://robert-mcdermott.github.io/clonoloom/, built from
docs/site/and published on GitHub Pages from agh-pagesbranch holding only the built site
(docs/site/README.md); its generator, audit and styles adapted from
SituCraft 0.9.0's:- a home page, install, the methods with their validation and citation, and the user guide a
page a subject (thirteen pages, from opening data to the record), with the screenshots in both
themes; docs/GETTING-STARTED.mdnow points to the guide, so that it is written once; the
references (formats, remote control, simulated studies, installing) stay indocs/;- a link-preview image made from a screenshot (
docs/site/og-image.mjs); - axe-core listed in
validation/sources.jsonas a tool, fetched for the audit only.
- a home page, install, the methods with their validation and citation, and the user guide a
- The beta-binomial test (wave 3, slice 7). Rytlewski et al. 2019's test of each clonotype
between two time points (internal/expansion/betabinomial.go,internal/track/test.go), now the
Tests part's default where it can be fitted:- a clonotype's count at the first time point, given its total n at the two, beta-binomial
around the share of the depth, with the scale v(n) = 2 + (b ln n + a)² (the 2, which keeps the
beta unimodal, as in their reference code); two-sided by the outcomes no more likely than the
one seen, or one-sided; - a and b fitted by maximum likelihood (Nelder–Mead from (1, 1), restarted from its best point)
once for the study: on every pair of each subject's replicate samples, or on two time points
the user names as stable; without them, the binomial test, and the view says why; - the Tests part's variance card: each clonotype of the samples fitted on, at its total and its
difference in sampling's standard deviations, with sampling's 95% band and the model's, and how
many of them a test at 0.05 calls changed by sampling alone and with the model; - the fit in the export (
fit.csv), the NOTICE and the methods paragraph; remote control's
test_expansionanswers it and takesstable; the Clonotypes part follows the
beta-binomial test's calls. - Validated: p-values against an independent R implementation on 150 cases, to 2 × 10⁻¹²; the fit
against R'soptimon two sets of 3,000 clonotypes drawn from the model, the same likelihood
to 10⁻⁶ and the same scale to 10⁻³ (validation/reference/betabinomial.R); on the simulated
series where nothing changes, with variance between blood samples, no call (the binomial test,
13); on the CAR-T study, none of its 20 calls against the truth (the binomial test, 6 of 73).
- a clonotype's count at the first time point, given its total n at the two, beta-binomial
- Expanded and contracted clonotypes (wave 3, slice 6). The Tracking view's Tests part
(internal/expansion,internal/track/test.go,api_expansion.go,web/ui/tracking-tests.js):- each clonotype tested between two time points of each subject, the samples at one time
pooled: the binomial test of its count at the first given its total (Rytlewski et al. 2019;
the default) or Fisher's exact test (DeWitt et al. 2015); two-sided, or one-sided for an
increase or a decrease; clonotypes with fewer than 5 in the two together not tested; - the false discovery rate controlled within each subject by Benjamini and Hochberg's procedure
(the default) or Storey's q-values (π₀ at λ = 0.5), at 0.01, 0.05 or 0.1; the calls increased
or decreased; - each clonotype at its two frequencies, the calls colored, and a table of the calls, linked to
the plot and the Clonotypes view; Follow the calls follows each subject's most significant
calls in the Clonotypes part, which can follow a test's calls (by: test); - the tests refuse reads, and say they account for sampling alone; each time point has a key
(day 28for week 4) that names it across subjects; - a job whose result is kept with the project; its export as CSV (every clonotype tested, and
each subject in sum); the methods paragraph's sentence, citing DeWitt et al., Rytlewski et al.,
Benjamini and Hochberg, and Storey; remote control'stest_expansion; the guide's page,
Expanded and contracted clonotypes; the Science page's section. - Validated: both tests' p-values against R's
binom.testandfisher.test, two-sided and
one-sided, on 215 cases, to 4 × 10⁻¹²; BH's and Storey's adjusted p-values against R; on a
simulated series where nothing changes, no false call where samples differ by sampling alone,
13 of 6,599 (0.2%) with variance between blood samples; on the simulated CAR-T study, all 66
calls in the true direction without that variance, 6 of 73 against the truth with it
(validation/expansion_test.go,validation/reference/expansion.R).
- each clonotype tested between two time points of each subject, the samples at one time
- Following clonotypes (wave 3, slice 5). The Tracking view's Clonotypes part
(internal/track,api_tracking.go,web/ui/mode-tracking.js):- the clonotypes chosen followed through each subject's samples in time order: each reference
sample's 10 largest (the default; each sample's largest for a subject without one), each
sample's largest (5 by default), or a list by ID or junction, kept with the dataset; the
Clonotypes view's inspector adds a clonotype to the list with Follow over time; - each clonotype's count and frequency in every sample and at every time point (the samples taken
at one time pooled), with its 95% interval (Wilson's score interval) where the counts are of
cells or molecules; a clonotype not found is shown as not found, with what the depth could
have missed, never as zero; in reads, no intervals, and the view says why; - threads (each clonotype's frequency through the time points, on a logarithmic axis, the one
chosen drawn with its intervals), an alluvial plot of their shares, and a table, linked to each
other and to the Clonotypes view; the plots save as figures; - a job whose result is kept with the project (its ID made from the samples' annotation and the
choice); its export as CSV (each sample, and each time point); the methods paragraph's sentence,
citing Wilson 1927; - remote control's
track_clonotypes; the guide's page, Following clonotypes; the Science page's
Tracking section. - Validated: Wilson's interval against R's
prop.testto 10⁻¹⁴; on the simulated CAR-T study,
the intervals held the true frequency in 95.2% of 2,700 checks where samples differ by sampling
alone, and in 76.9% with the study's biological variance between samples, which the view and
the methods paragraph say (validation/tracking_test.go).
- the clonotypes chosen followed through each subject's samples in time order: each reference
- Simulated studies over time (wave 3, slice 4).
clonoloom simulate --preset car-t,
transplantandnull-series(docs/SIMULATION.md), the first two in the
Example data dialog:- each subject sampled at time points in days from its event (an infusion, a transplant), with
replicates; classes of clones on known trajectories (CAR-T: a few of the prod...
- each subject sampled at time points in days from its event (an infusion, a transplant), with
ClonoLoom 0.2.0
Wave 2 of the roadmap: repertoire basics. Each sample's diversity,
rarefaction and extrapolation, gene usage and junctions, and every pair's overlap, each with its
uncertainty and checked against reference tools and simulated truth; figures and exports that
carry their definition, unit and license; simulated studies, remote control and jobs.
Added
- Remote control (wave 2, slice 1). With
--remote-control, programs on this computer drive the
open window through/api/remote/action(remote.go,actions.go,web/ui/remote.js, adapted
from SituCraft 0.9.0): eleven actions to describe the project, open data or an example, show a
view, define clonotypes, choose a clonotype, write the methods paragraph, and set the theme.
Actions are performed in the window, one at a time, and recorded in the project's history like
any edit. Only programs on this computer are accepted; reading files by path needs the token in
remote.json, written to the data folder (readable by the user only) and removed on exit; data
under terms of use are never downloaded by a program.GET /api/remote/toolslists the actions
with JSON Schemas. docs/REMOTE-CONTROL.md. - The documentation's pictures are captured through remote control.
- Simulated studies (wave 2, slice 2).
clonoloom simulate(internal/simulate,
docs/SIMULATION.md) writes bulk TRB studies whose truth is known:- rearrangements from a V(D)J recombination model of ClonoLoom's own: GRCh38's TRB gene segments
at Ensembl's annotation; V and J usage from 10x Genomics' 10k PBMC data (CC BY 4.0); deletions,
palindromic nucleotides and non-templated insertions; productive rearrangements selected on
junction length so their lengths are the data's (mean 14.5 amino acids, SD 1.7); no OLGA or
IGoR model file used; - each subject's repertoire a population of power-law clone sizes (with expanded clones where
asked); each sample templates drawn from it, sequenced into reads; - written as AIRR rearrangement tables (templates as
umi_count, reads asduplicate_count)
with AIRR Repertoire metadata (subject, condition), and the truth beside them: every clone of
every population, and each population's clonotypes, Hill numbers, Shannon, Simpson, evenness,
clonality, Gini, top-ten share and homeostasis; each sample's expected clonotypes and coverage
at its depth; the clonotypes subjects share; - presets
standard(control subjects and subjects with expanded clones),null(no difference
between groups) andsmall; parameters as JSON; the same seed gives the same files, byte for
byte; - two of them in the Example data dialog, made on this computer in a few seconds (offline
too); a simulated dataset's methods paragraph says how it was made, citing the model's sources; - a folder opened as one dataset leaves out a simulated study's
truth/folder.
- rearrangements from a V(D)J recombination model of ClonoLoom's own: GRCh38's TRB gene segments
- Jobs, artifacts and the table cache (wave 2, slice 3).
- Jobs (
internal/jobs, adapted from SituCraft 0.9.0): long work runs in the program, one
job at a time, with an immutable spec, progress, a log and cancellation; jobs are kept in the
library, survive a reload of the window, and one ClonoLoom's stopping interrupted can be
resumed or discarded. Example downloads and simulated studies run as jobs. The Jobs view
lists them (running, interrupted, finished) with their logs and specs; the page follows them
over server-sent events (/api/jobs/events). - Artifacts (
internal/artifacts, adapted from SituCraft 0.9.0): the store of results kept
with their lineage (parents, job and spec, method and version, parameters, software), every
file's SHA-256 and their check's findings, which the analyses of the next slices fill. - The table cache (
internal/cache): a dataset's tables, once read, are kept and answered
again without being read, keyed by the readers' version and each file's SHA-256, size and
name (each file hashed again first, so a changed file is never answered from it); entries are
written whole and checked by a CRC-32; least recently used removed first beyond
--cache-limit(10 GB);--cache-dirchooses the folder. The Jobs view shows the cache and
clears it.
- Jobs (
- Diversity (wave 2, slice 4). The Repertoire view (
internal/diversity,api_diversity.go):- each sample measured under its dataset's clonotype definition and filter, as a job, the result
kept as an artifact named for what it measured (asked again, the kept result answers), listed
with the project's results; - observed: the Hill numbers of order 0 to 4, Shannon's entropy, Simpson's index, evenness,
clonality (Adaptive's 1 − evenness) and Simpson clonality (√Σp²), Gini's coefficient, the 10,
100 and 1,000 largest clonotypes' shares, the largest frequency, clonal space homeostasis; - estimated: Chao1 (bias-corrected) with its log-transformed interval, ACE, the Shannon diversity
(Chao, Wang and Jost 2013) and the Simpson diversity (Chao et al. 2014) of the repertoire each
sample was drawn from, and sample coverage; - every measure with a 95% interval from 200 bootstrap replicates of each sample drawn from its
estimated repertoire (Chao et al. 2014, Appendix G), the same on every computer (each
replicate its own random stream); - a measure across the samples with its intervals, the Hill profile and homeostasis plotted,
colored by condition (the annotation's, else the metadata's), the measures explained, and a
warning where a sample's coverage makes Chao1 and the estimated Shannon diversity lower bounds; - the methods paragraph says how diversity was measured, with its references; remote control's
measure_diversitymeasures it and answers the main measures.
- each sample measured under its dataset's clonotype definition and filter, as a job, the result
- Rarefaction and extrapolation (wave 2, slice 5). The Repertoire view's Rarefaction part
(internal/diversity,api_rarefaction.go):- each sample's clonotypes, Shannon diversity and Simpson diversity (the Hill numbers of order 0,
1 and 2) and its sample coverage at any size up to twice its own, rarefied below it and
extrapolated above (Chao et al. 2014), and the Hill numbers at any sample coverage (Chao and
Jost 2012); each with a 95% interval from the same 200 bootstrap replicates as the measures; - the samples compared at a level suggested for them, reached by rarefaction alone: the lowest
sample coverage among them, or the smallest sample's size. iNEXT's defaults, extrapolated to
twice a sample's size, are offered beside them, with a warning where a sample is extrapolated; - the curves by size and by coverage (solid where rarefied, dashed where extrapolated, a dot at
the sample, bands for the intervals), how each sample's coverage rises with size, on a
logarithmic size axis where the samples' sizes differ more than tenfold, and a table of each
sample at the level chosen; - a million-cell sample's curves in about 2 s: each clonotype's subsample expectation is summed
outward from its distribution's mode, where iNEXT sums every size; - the methods paragraph says how the samples were rarefied and compared, with its references;
remote control'srarefycomputes the curves and answers each sample at a level.
- each sample's clonotypes, Shannon diversity and Simpson diversity (the Hill numbers of order 0,
- Both parts of the Repertoire view warn when abundance is in reads: each cell is counted many times
over, so few clonotypes are seen once and every sample looks complete. - Diversity and rarefaction are asked for, computed, kept and read back alike (
api_analysis.go);
diversity results kept before keep their ids. - Gene usage, spectratypes and composition (wave 2, slice 6). The Repertoire view's Genes
and Junctions parts (internal/usage,api_usage.go,web/ui/repertoire-usage.js):- each sample's V, D, J and C genes and their families (IMGT's subgroups), V–J pairs, junction
lengths and their mean, and amino acids, overall and at each IMGT position of the commonest
lengths (Lefranc et al. 2003); each as a share of its clonotypes (each counted once) and of its
abundance; - a clonotype's genes are its rearrangements', in proportion to their counts; a call tied between
genes gives each an equal part; what was not called is said; - 95% intervals from 200 bootstrap replicates of each sample's clonotypes, the same in every run;
- each condition (from the annotation or the metadata) summarized by the mean of its samples, each
counted once, with their range; - heatmaps of the genes and of the amino acids, one gene across the samples, the V–J pairs of one
sample, the spectratypes, the mean lengths, and the amino acids by position; - the methods paragraph says what was counted and how; remote control's
gene_usagecounts it
and answers each sample's most used genes, commonest lengths and mean length.
- each sample's V, D, J and C genes and their families (IMGT's subgroups), V–J pairs, junction
- Overlap (wave 2, slice 7). The Repertoire view's Overlap part (
internal/overlap,
api_overlap.go,web/ui/repertoire-overlap.js):- every pair of samples: the clonotypes they share, Jaccard's index, Sørensen–Dice's and the
overlap coefficient, as sampled and as expected with both samples rarefied to the smallest
sample's size (exactly); Morisita's index and the Morisita–Horn index over their abundances;
each sample's share of its abundance in clonotypes the other holds too; - 95% intervals from a bootstrap of the samples' cells, widened for the chance that decides which
clonotypes two samples share (Horvitz–Thompson), on the logarithmic scale; - a heatmap of every pair by a measure, ...
- every pair of samples: the clonotypes they share, Jaccard's index, Sørensen–Dice's and the