- Consolidate plotting paths with render backend (lets_plot or matplotlib)
- NaN and Inf support for _anndata_io
- Recreate LazyTransform from uns
- Documentation audit
- Numerical precision inconsistency
- Mix of float32 and float64 (mainly in operator, sometimes in-mem) causes drift within and across modes
- C++ uses 64-bit, R/Rcpp does also — always consistent
- Fix R/Python result parity
- Reorganize and consolidate code
- Audit for dead functions
- Interactive cell selector
- UMAP points have no stroke
compute_archetype_feature_specificity():key_added>key_prefix- Make archetype specificity and network centrality optional in
run_actionet() - Split _backed_persist.py
- [Deferred] Simplify anndata 0.13 backed compatibility patch once
anndata>=0.13is the floor- Currently
src/actionet/io/persist.py,src/actionet/io/subset.py, andsrc/actionet/io/checkpoint.pyfilter out theNonekey fromadata.layers.keys()via a_real_layer_keyshelper to avoid writing spuriouslayers/NoneHDF5 groups (anndata 0.13 aliases.Xaslayers[None]). init_from_reopenedinsrc/actionet/io/backed_adapter.pyalso unpacks the reopened AnnData into explicit kwargs (and drives the "init from file" branch viafilename=) to sidestep theX is layers[None]identity check that fails when backed_CSRDatasetwrappers are recreated per attribute access.- When we drop
anndata<0.13support, revisit both workarounds: the_real_layer_keyshelper can likely be inlined or removed entirely, andinit_from_reopenedcan be simplified now thatlayers[None]is a stable, documented alias for.X.
- Currently
- Consolidate normalization code-paths
- Add network centrality to run_actionet?
- Lazy transform in-memory?
- Allow changes to lazy transform params
- Force recompute of attributes
- compute_transparency() use scale()
- Explore more accurate and faster log approximations for JSD and lazy transform
- Combine plot_umap* paths with
raster=bool - Python
compute_feature_specificity()in-mem is still garbage (maybe not?)
- ARMA_DONT_USE_WRAPPER multiple redefinition
- Parallel specificity bug (fixed???)
- Standardize key args
- Test impute features
- Implement plotFeatures
- Test backed SVD
- MatrixSource supports layers, but layers can't be backed.
- Added validation logic
- Add pseudocount to
normalize_anndata() compute_feature_specificitybacked/in-mem parity- Fix memory usage in
compute_network_diffusion()(in-memory) - Speed up plot/impute features
- I/O bound. Probably as good as it's gonna get
- Add run_lpa/propagate_labels
- Decouple archetype specificity from run_actionet
- Compute specificity on the fly for
impute_from_archetypes()
- Compute specificity on the fly for
- Decouple compute_network_diffusion from anndata
- Add 3D to plotly
- Optionally omit C_* and specificity matrices to reduce object size
- Document everything (OpenMP hard requirement, README overhaul, context files updated)
- annotate_cells enrichment → DataFrame
- Fixed violin/boxplot alignment
- Delete PRIMME sources, headers, vendored tree, CMake wiring,
ALG_PRIMME, and remaining test/wrapper references (seecontext/DECISIONS.md"SVD algorithm strategy"). - Delete Feng SVD C++ sources (
svd_feng.{cpp,hpp}), theALG_FENGenum, and Feng switch cases inrunSVD/runSVD_Operator. Thelibactionet/wrappers_r/copies here are reference-only and were intentionally left untouched; a reminder to patch the standaloneactionet-rpackage is tracked insrc/libactionet/TODO.md.