Changelog¶
All notable changes to citeqc are listed here. The format follows Keep a Changelog and the project uses semantic versioning.
0.2.0 - 2026-11-01¶
Fixed¶
diagnostics.size_confoundingpaired each group with a size by index label instead of by row position. Groups with any index other than0..n-1were affected: group names (whatciteqc diagnose --groupsalways reads) raised "no feature had variance to correlate", and a shuffled integer index paired groups with the wrong sizes and could turn a flag into a pass. Sizes now follow the row order ofvalues; a Series of sizes with the same labels is matched by label.diagnostics.panel_consistencycompared panel sizes, so donors measuring different antibodies passed as long as they measured the same number. It now compares the measured sets (newdetail["n_panels"]). It also raises a clear error whenadtandmetashare no cells, instead of anIndexError.io.from_mudatabuiltnCount_ADT/nCount_RNAfrom a 2-D matrix when.Xwas sparse, and misaligned them when the two modalities held different cells. It now keeps the cells present in both modalities and computes the totals per cell.io.read_matrixread files such assample.v2.tsv.gzas comma-separated. Tab detection now looks at the last suffix before any compression suffix, case-insensitively.citeqc couple --normalisescaled RNA by the row sums of the input table, which is not counts per 10,000 of the library when the table holds a subset of genes. It now usesnCount_RNAfrom--meta.citeqc diagnoseskippedpanel_consistencywithout a word when only one of--adt/--metawas given; this is now an error.- The declared minimum SciPy version was too low: SciPy 1.9 has no
spearmanr(...).statistic. The requirement is nowscipy>=1.10, and CI tests the minimum versions.
Added¶
citeqc.datasets: a small synthetic CITE-seq dataset whose design is known by construction (synthetic,DESIGN), a null for group-size effects (pseudoclonotypes), andwrite_example;citeqc examplewrites it as CSV.examples/quickstart.py, run in CI.coupling.measure(..., min_obs=10): the minimum number of observations per marker was hard-coded; the error now says how many were reached.citeqc --version, and help text for every command-line option.- Documentation site (MkDocs Material) with a quick start, CLI and API reference, and an explanation of each diagnostic.
- Release workflow publishing to PyPI with Trusted Publishing on version tags (TestPyPI on manual runs), and a workflow deploying the docs to GitHub Pages.
Changed¶
- Requires Python 3.10 or newer; Python 3.9 reached end of life in October
- Tested on Python 3.10 to 3.14 and with the minimum dependency versions.
- Package metadata: SPDX licence expression with the licence file, project
URLs, Python version classifiers. The version is set in one place,
citeqc.__version__. tests/validate_on_real_data.pyis now in English.
0.1.1 - 2026-09-30¶
Added¶
coupling.specificity(),measure(..., return_raw=True)anddiagnostics.control_check(ambient_checkkept as an alias).
0.1.0 - 2026-09-27¶
- Initial release (as
citecheck, renamed tociteqcthe same day).