Releases: NygenAnalytics/scarf
Releases · NygenAnalytics/scarf
Release list
1.0.0rc4
What's Changed
- docs fixes by @parashardhapola in #165
- Agent by @parashardhapola in #166
Full Changelog: 1.0.0rc3...1.0.0rc4
1.0.0rc3
What's Changed
- Docs restructure by @parashardhapola in #162
- scm_versioning by @parashardhapola in #163
Full Changelog: 1.0.0rc2...1.0.0rc3
1.0.0rc2
What's Changed
- Expanded tests by @parashardhapola in #157
- Harden DataStoreMerge streaming and simplify mapping diagnostics by @parashardhapola in #160
- Add N-way WNN, TEA-seq tutorial, and Seurat ChromatinAssay import. by @parashardhapola in #161
Full Changelog: 1.0.0rc1...1.0.0rc2
1.0.0rc1
This is a major, breaking rewrite toward Scarf 1.0. Analysis still centers on DataStore and Zarr-backed stores, but storage, execution, plotting, provenance, and several workflows are new or replaced.
Existing Zarr v2 stores remain readable and writable. Opening a store does not convert it.
Requires Python 3.12+. Preferred install path uses uv (installation).
See the quick start, tutorials, and API reference.
New capabilities
Provenance and reusable results
- Persisted analysis results are artifacts with provenance (operation, parameters, inputs).
- List, inspect, load, and follow lineage (
list_artifacts,inspect_artifact,load_artifact,lineage). - Related parameter branches can live in one datastore; matching requests can reuse a completed result.
AssayStateexposes the current analysis chain for an assay.
Analysis workflows
ds.pipeline.run()runs the standard RNA recipe (filter, cell cycle, HVGs, PCA, neighbors, embeddings, clustering, optional doublets/markers/Harmony) and returns artifact refs.- Graph construction is stage-wise and provenance-backed:
run_normalization→run_pca→build_ann_index→query_neighbors→build_connectivity_map(replaces monolithicmake_graph). - Fixed mapping references for atlas-style projection and label transfer (
build_mapping_reference/MappingReference), including a Symphony-style query path, label-transfer evidence, and mapping diagnostic plots. - Doublet scoring via
DataStore.run_doublet_detection. - Gene-set activity scoring with AUCell and WAGGR.
- Multi-sink fate mapping (
run_fate_mapping/FateMappingResult). - Integration metrics on
DataStore(iLISI, cLISI, proportional batch mixing, graph connectivity, cluster separability, label concordance).
Storage, scale, and remote data
- New writes use Zarr v3 with local / cloud compression profiles (
fast_local,cloud). mem_budgetandnthreadsplan streaming block size and concurrency (planners, not hard RSS caps).- Open and analyze stores on object storage (
s3://,gs://,hf://) without downloading the full matrix. mount_datastorekeeps counts in a read-only source while writing metadata and results to a separate writable store.- Optional
local_cachestages normalized expression for remote PCA/LSI. - Optional repack of older stores with
python -m scarf.tools.repack_zarr(v2→v3, profile sharding; when sharding counts, also writes feature-majorcountsT).
Plotting
- New public API:
scarf.plotting(oftenimport scarf.plotting as splt). - Store-bound convenience via
ds.plots.*. - Shared themes/scales,
PlotResultreturns, large-embedding raster paths, plus mapping diagnostic plots.
I/O and datasets
- Seurat RDS inspect / read / import (
inspect_seurat,SeuratReader,SeuratToZarr). - Format inspectors:
inspect_h5ad,inspect_mtx. - Example and fixture datasets via Cytebase (
scarf.cytebase) instead of the old OSF download helpers.
Breaking changes / removed
- Dask is no longer the matrix execution backend. Assay matrices and blockwise work use
scarf.matrix.ChunkedArray. Dask and Polars are not dependencies. make_graphis removed. Use the stage-wise graph APIs, ords.pipeline.run()/ds.run_harmonywhere appropriate.- Legacy plotting is gone:
scarf.plots,scarf.plotting._legacy, and oldDataStore.plot_*methods. Usescarf.plottingords.plots. - Unified mapping / layout APIs are gone:
load_unified_graph,run_unified_umap,run_unified_tsne,plot_unified_layout.unified_embeddingis not a public plotting entry point. ZarrMergeis removed. UseAssayMerge/DatasetMerge.- Legacy dataset helpers are removed:
fetch_dataset,show_available_datasets,scarf.readers.datasets,scarf.downloader. Usescarf.cytebase. - Nabo H5 reader/writer paths are removed.
to_polars_dataframeis removed. Useto_pandas_dataframe.- Prenormed marker-search arguments /
Assay.save_normed_for_queryare removed. run_mappingcontract changed: it isMappingReference-first;exclude_missing,run_coral,ref_mu,ref_sigma, andtarget_assayare gone. Usemissing_feature_policyin{reference_mean, zero, error}.metric_integrationis removed. Usemetric_label_concordance.- Many former top-level modules have no forwarding shims (
scarf.harmony,scarf.plots,scarf.downloader,scarf.genomics,scarf.markers,scarf.meld_assay, and others). Prefer documented top-level /DataStoreimports. - Soft leftovers that still warn:
Assay.save_aggregated_ordering→DataStore.run_pseudotime_aggregation;ATACassay.mark_prevalent_peaks→DataStore.mark_prevalent_peaks. - If you previously used WNN, re-run
integrate_assays(..., method="wnn")and redo dependent layouts/clusters. The affinity / neighbor path was corrected. - New stores are Zarr v3; old stores stay v2 until you explicitly repack. Import does not create
countsTby default; add it via repack when you want faster feature-wise stages.
Migration notes
- Create a Python 3.12+ environment and install Scarf (installation).
- Open an existing Zarr v2 store and smoke-test the workflow you care about. Open does not convert the store (Zarr internals).
- Replace Dask-specific array usage with Scarf chunked-array /
DataStoreAPIs. - Replace
make_graphand legacy plotting with stage-wise graph APIs /pipeline.run, andscarf.plottingords.plots. - Update imports away from removed modules and helpers (
scarf.plots,ZarrMerge, dataset download helpers, retired top-level paths, etc.). - Update mapping callers to
MappingReferenceand the new missing-feature policy; switchmetric_integrationtometric_label_concordance. - Re-run WNN (and dependent UMAP/clusters) if you rely on multimodal graphs (CITE-seq, FAQ).
- For large or remote work, set
mem_budget/nthreads, and use remote open /mount_datastore/local_cacheas needed (scale and memory, remote stores). - Optionally repack to Zarr v3 + profile sharding, and/or add
countsTfor faster feature-wise analysis:
0.32.3
0.32.2
0.32.1
0.32.0
0.31.4
What's Changed
- introduced max_cells parameter by @parashardhapola in #140
Full Changelog: 0.31.3...0.31.4