0.0.9
-
License change – crispyx 0.0.9 and later is distributed under a Modified
MIT License, which adds two attribution conditions for commercial use. All MIT
freedoms are retained and no fee or royalty is imposed. Versions up to and
including 0.0.8 remain under the unmodified MIT License; that grant is
perpetual and is not withdrawn. SeeLICENSEfor the terms. -
Unified normalized effects –
compute_normalized_effects/
cx.pb.normalized_effectsreplaces the two earlier one-command estimators with a
single function selected bymethod.method="mean_log1p"averages per-cell
log1pvalues (mean of logs);method="log_mean"averages normalised counts and
then applieslog1p(baseline_count * mean)(log of mean). Both normalise library
size themselves, and both return the effect inXwith
layers['perturbation_profile'], plus
layers['control_profile_matched']whenbatch_columnis given, so that
X == perturbation_profile - control_profile_matchedexactly. Supplying
batch_columnis itself the request for batch correction; there is no flag.compute_average_log_expressionandcompute_pseudobulk_expressionremain as
deprecated aliases with their original layer andunsnames, and now emit a
DeprecationWarning. They will be removed in 0.1.0.Note that
cx.pb.effectsdeliberately does not normalise: it computes a contrast
on whatever scale its input already carries. Normalise beforehand with
cx.pp.normalize_total_log1p, or usecx.pb.normalized_effectsto have it done in
one pass. -
Generic streaming batch statistics –
batch_process/
cx.tl.batch_processapplies a user-supplied mergeable reducer within
experimental batches without loading the complete cell-by-gene matrix. A
BatchReducerprovidesinitialize/update/finalizecallbacks
for per-group statistics, plus an optionalcomparecallback for
group-versus-reference contrasts inmode="comparison". Finalized batch
statistics are combined assum(weight * values) / sum(weight), and only
batches containing both the group and the reference contribute to a contrast.
Argument names follow the differential-expression API (groupbyaliases
perturbation_column;referencealiasescontrol_label). Cached
results are keyed on the input path and modification time, so regenerating a
source file invalidates its cached statistic;force=Trueremains necessary
when a reducer's implementation changes without changingstatistic_name. -
Batch-level absolute pseudo-bulk profiles –
aggregate_pseudobulk/
cx.pb.aggregategroups by one or more observation columns and retains one
profile for every observed combination. It supports strict raw-count sums,
mean log1p expression, a five-cell default threshold, deterministic
one-resample bootstrapping, source-layer selection, and versioned provenance
metadata.perturbationskeeps a profile when any of its grouping values
matches, so it selects on whichever column holds the labels regardless of its
position ingroupbyand preserves every combination of the others. -
Explicit pseudo-bulk effects –
compute_pseudobulk_effects/
cx.pb.effectsconsumes a saved crispyx pseudo-bulk artifact directly or
aggregates cell-level input first. It returns within-batch target-minus-
reference effects by default and can explicitly combine batches using the
existing harmonic-count weighting. -
Tuple-level differential-expression results were intentionally not added;
wilcoxon_test(batch_column=...)remains the batch-stratified test over all
cells and batches.