exprmat 0.1.44__tar.gz → 0.1.45__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {exprmat-0.1.44 → exprmat-0.1.45}/PKG-INFO +1 -1
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/ansi.py +68 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/moments.py +6 -1
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/expression.py +3 -2
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/experiment.py +42 -10
- {exprmat-0.1.44 → exprmat-0.1.45}/pyproject.toml +1 -1
- {exprmat-0.1.44 → exprmat-0.1.45}/Cargo.lock +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/Cargo.toml +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/cnmf.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/dbscan.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/kmeans.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/leiden.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/nmf.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/rogue.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/seriation.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/spectral.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/cnvscore.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/infercnv.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/configuration.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/cistarget.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/cre.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/finders.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/geneset.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/io.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/lr.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/presets.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/signature.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/tf.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/aggregate.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/atac.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/aucell.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/de.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/gse.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/kde.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/recovery.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/summary.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/tcr.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/dataset.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/gridsearch.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/inference.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/preprocessing.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/stats.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/generank.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/linreg.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/optimization.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/parallel.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/preprocess.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/pseudotime.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/transition.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/velocity.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/infergrn.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/modules.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/prune.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/regressors.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/image/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/image/align.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/aggregate.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/method.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/cellchat.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/cellphonedb.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/connectome.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/geomean.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/logfc.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/natmi.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/rank_aggregate.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/scseqcomm.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/singlecellsignalr.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/pipeline.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/preprocess.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/resources.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/callpeak.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/common.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/coverage.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/footprint.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/constants.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/idr.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/invcdf.pyx +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/optimization.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/linkage.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/motif.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/sequence.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/atac.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/cnmf.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/cnv.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/A.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/B.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/C.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/D.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/E.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/F.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/G.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/H.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/I.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/J.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/K.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/L.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/M.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/N.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/O.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/P.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Q.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/R.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/S.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/T.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/U.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/V.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/W.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/X.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Y.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Z.pk +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/de.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/gse.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/lr.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/milestone.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/palettes.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/sankey.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/sequence.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/summary.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/track.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/trajectory.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/velocity.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/composite.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/scrublet.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/emptydrops.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/filter.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/impute/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/impute/magic.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/integrate.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/linear.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/normal.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/plot.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/qc.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/estimate.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/ksmooth.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/residual.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/transform.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sparse.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/uniform.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/conversions.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/matcher.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/metadata.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/spatial.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/static.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/updater.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/diffmap.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/forceatlas.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/mde.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/nn.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/outliers.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/pca.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/plot.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/scvi.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/spectral.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/tsne.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/umap.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/elpi.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/pcurve.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/pseudotime.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/root.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/transfer/__init__.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/transfer/atlas.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/utils.py +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/license +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/readme.md +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/Cargo.toml +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/license +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/readme +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/call_peaks.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/embedding.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/export.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/knn.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/lib.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/motif.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/network.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/preprocessing.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/utils/anndata.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/utils.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/Cargo.toml +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/embedding.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/export.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/counter.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/data_iter.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/matrix.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/mod.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/genome.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/lib.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/motif.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/network.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/flagstat.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/header.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/mark_duplicates.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/import.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/mod.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/qc.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/knn.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/mod.rs +0 -0
- {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/similarity.rs +0 -0
|
@@ -160,6 +160,74 @@ def cyan(x): return '\033[36m' + x + '\033[0m'
|
|
|
160
160
|
def annot(x): return '\033[90;3m' + x + '\033[0m'
|
|
161
161
|
|
|
162
162
|
|
|
163
|
+
def dtypestr(dty):
|
|
164
|
+
string = str(dty)
|
|
165
|
+
if string == 'category': return 'cat'
|
|
166
|
+
elif 'float' in string: return string.replace('float', 'f')
|
|
167
|
+
elif 'int' in string: return string.replace('int', 'i')
|
|
168
|
+
elif string == 'object': return 'o'
|
|
169
|
+
return string
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def dtypemat(dty):
|
|
173
|
+
from numpy import matrix, ndarray
|
|
174
|
+
from scipy.sparse import csr_array, csr_matrix, csc_array, csc_matrix, coo_array, coo_matrix
|
|
175
|
+
from pandas import DataFrame
|
|
176
|
+
|
|
177
|
+
classdef = ''
|
|
178
|
+
if isinstance(dty, DataFrame): return 'df'
|
|
179
|
+
elif isinstance(dty, matrix): classdef = 'dense'
|
|
180
|
+
elif isinstance(dty, ndarray): classdef = 'arr'
|
|
181
|
+
elif isinstance(dty, csr_array): classdef = 'csra'
|
|
182
|
+
elif isinstance(dty, csr_matrix): classdef = 'csr'
|
|
183
|
+
elif isinstance(dty, csc_array): classdef = 'csca'
|
|
184
|
+
elif isinstance(dty, csc_matrix): classdef = 'csc'
|
|
185
|
+
elif isinstance(dty, coo_array): classdef = 'cooa'
|
|
186
|
+
elif isinstance(dty, coo_matrix): classdef = 'coo'
|
|
187
|
+
else: classdef = str(type(dty))
|
|
188
|
+
|
|
189
|
+
size = ''
|
|
190
|
+
try:
|
|
191
|
+
if dty.shape[1] != dty.shape[0]: size = dty.shape[1]
|
|
192
|
+
except: pass
|
|
193
|
+
|
|
194
|
+
ret = ':'.join([classdef, dtypestr(dty.dtype)])
|
|
195
|
+
if size != '': ret += f'({size})'
|
|
196
|
+
return ret
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def remove_ansi_escape_sequences(text):
|
|
200
|
+
ansi_escape = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])')
|
|
201
|
+
return ansi_escape.sub('', text)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def lenp(string: str):
|
|
205
|
+
return len(remove_ansi_escape_sequences(string))
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def wrap(array: list[str], sep = ' ', n = 100) -> list[str]:
|
|
209
|
+
results = []
|
|
210
|
+
cumulative = ''
|
|
211
|
+
lencum = 0
|
|
212
|
+
|
|
213
|
+
for a in array:
|
|
214
|
+
|
|
215
|
+
lenprint = lenp(a)
|
|
216
|
+
|
|
217
|
+
if lencum + lenprint + len(sep) <= n:
|
|
218
|
+
cumulative += (sep + a)
|
|
219
|
+
lencum += (len(sep) + lenprint)
|
|
220
|
+
else:
|
|
221
|
+
results += [cumulative[1:] if cumulative[0] == ' ' else cumulative]
|
|
222
|
+
cumulative = a
|
|
223
|
+
lencum = lenprint
|
|
224
|
+
|
|
225
|
+
if cumulative[0] != '':
|
|
226
|
+
results += [cumulative[1:] if cumulative[0] == ' ' else cumulative]
|
|
227
|
+
|
|
228
|
+
return results
|
|
229
|
+
|
|
230
|
+
|
|
163
231
|
progress_styles = {
|
|
164
232
|
'ncols': 80,
|
|
165
233
|
'ascii': '-━',
|
|
@@ -7,7 +7,12 @@ from exprmat.ansi import error, warning, info
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def not_yet_normalized(X):
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
# this logic sometimes have bugs.
|
|
12
|
+
# just cancel it for now.
|
|
13
|
+
|
|
14
|
+
return False
|
|
15
|
+
return np.allclose(np.ravel(X[:5].data if issparse(X) else X[:5]) % 1, 0, atol = 1e-3)
|
|
11
16
|
|
|
12
17
|
|
|
13
18
|
def moments(
|
|
@@ -12,7 +12,7 @@ def barplot(
|
|
|
12
12
|
adata, *, gene,
|
|
13
13
|
slot = 'X', group = 'cell.type', selected_groups = None, selected_splits = None,
|
|
14
14
|
split = 'treat', palette = ['red', 'black'], ax = None, style = 'box',
|
|
15
|
-
size = (6,3), dpi = 100, violin_kwargs = {}
|
|
15
|
+
size = (6,3), dpi = 100, violin_kwargs = {}, legend = True
|
|
16
16
|
):
|
|
17
17
|
|
|
18
18
|
plt.rcParams["ytick.labelright"] = False
|
|
@@ -81,7 +81,8 @@ def barplot(
|
|
|
81
81
|
grid_color = 'lightgray'
|
|
82
82
|
)
|
|
83
83
|
|
|
84
|
-
axes.legend(bbox_to_anchor = (1, 1), loc = 'upper left', borderaxespad = 0, frameon = False)
|
|
84
|
+
if legend: axes.legend(bbox_to_anchor = (1, 1), loc = 'upper left', borderaxespad = 0, frameon = False)
|
|
85
|
+
else: axes.get_legend().remove()
|
|
85
86
|
axes.set_xlabel('')
|
|
86
87
|
axes.set_ylabel(gene)
|
|
87
88
|
# axes.set_xticks(selected_groups)
|
|
@@ -30,7 +30,7 @@ from exprmat.reader.matcher import (
|
|
|
30
30
|
parse_tcr_10x, attach_splice_reads_mtx, attach_splice_reads_loom
|
|
31
31
|
)
|
|
32
32
|
from exprmat.reader.matcher import attach_tcr
|
|
33
|
-
from exprmat.ansi import warning, info, error, red, green, pprog
|
|
33
|
+
from exprmat.ansi import warning, info, error, red, green, pprog, wrap, dtypestr, dtypemat
|
|
34
34
|
from exprmat import config as cfg
|
|
35
35
|
import exprmat.reader.static as st
|
|
36
36
|
import exprmat as em
|
|
@@ -2393,52 +2393,84 @@ class experiment:
|
|
|
2393
2393
|
import textwrap
|
|
2394
2394
|
if adata.obs is not None and len(adata.obs) > 0:
|
|
2395
2395
|
print(green(' obs'), ':', end = ' ', file = strio)
|
|
2396
|
-
|
|
2397
|
-
|
|
2396
|
+
|
|
2397
|
+
wrapped = wrap([
|
|
2398
|
+
x + ' ' + annot('<' + dtypestr(adata.obs[x].dtype) + '>')
|
|
2398
2399
|
for x in adata.obs.keys()
|
|
2399
|
-
]
|
|
2400
|
+
], n = 90, sep = ' ')
|
|
2401
|
+
|
|
2400
2402
|
for nline in range(len(wrapped)):
|
|
2401
2403
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2402
2404
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2403
2405
|
|
|
2404
2406
|
if adata.var is not None and len(adata.var) > 0:
|
|
2405
2407
|
print(green(' var'), ':', end = ' ', file = strio)
|
|
2406
|
-
|
|
2408
|
+
|
|
2409
|
+
wrapped = wrap([
|
|
2410
|
+
x + ' ' + annot('<' + dtypestr(adata.var[x].dtype) + '>')
|
|
2411
|
+
for x in adata.var.keys()
|
|
2412
|
+
], n = 90, sep = ' ')
|
|
2413
|
+
|
|
2407
2414
|
for nline in range(len(wrapped)):
|
|
2408
2415
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2409
2416
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2410
2417
|
|
|
2411
2418
|
if adata.layers is not None and len(adata.layers) > 0:
|
|
2412
2419
|
print(green(' layers'), ':', end = ' ', file = strio)
|
|
2413
|
-
|
|
2420
|
+
|
|
2421
|
+
wrapped = wrap([
|
|
2422
|
+
x + ' ' + annot('<' + dtypestr(adata.layers[x].dtype) + '>')
|
|
2423
|
+
for x in adata.layers.keys()
|
|
2424
|
+
], n = 90, sep = ' ')
|
|
2425
|
+
|
|
2414
2426
|
for nline in range(len(wrapped)):
|
|
2415
2427
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2416
2428
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2417
2429
|
|
|
2418
2430
|
if adata.obsm is not None and len(adata.obsm) > 0:
|
|
2419
2431
|
print(green(' obsm'), ':', end = ' ', file = strio)
|
|
2420
|
-
|
|
2432
|
+
|
|
2433
|
+
wrapped = wrap([
|
|
2434
|
+
x + ' ' + annot('<' + dtypemat(adata.obsm[x]) + '>')
|
|
2435
|
+
for x in adata.obsm.keys()
|
|
2436
|
+
], n = 90, sep = ' ')
|
|
2437
|
+
|
|
2421
2438
|
for nline in range(len(wrapped)):
|
|
2422
2439
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2423
2440
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2424
2441
|
|
|
2425
2442
|
if adata.varm is not None and len(adata.varm) > 0:
|
|
2426
2443
|
print(green(' varm'), ':', end = ' ', file = strio)
|
|
2427
|
-
|
|
2444
|
+
|
|
2445
|
+
wrapped = wrap([
|
|
2446
|
+
x + ' ' + annot('<' + dtypemat(adata.varm[x]) + '>')
|
|
2447
|
+
for x in adata.varm.keys()
|
|
2448
|
+
], n = 90, sep = ' ')
|
|
2449
|
+
|
|
2428
2450
|
for nline in range(len(wrapped)):
|
|
2429
2451
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2430
2452
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2431
2453
|
|
|
2432
2454
|
if adata.obsp is not None and len(adata.obsp) > 0:
|
|
2433
2455
|
print(green(' obsp'), ':', end = ' ', file = strio)
|
|
2434
|
-
|
|
2456
|
+
|
|
2457
|
+
wrapped = wrap([
|
|
2458
|
+
x + ' ' + annot('<' + dtypemat(adata.obsp[x]) + '>')
|
|
2459
|
+
for x in adata.obsp.keys()
|
|
2460
|
+
], n = 90, sep = ' ')
|
|
2461
|
+
|
|
2435
2462
|
for nline in range(len(wrapped)):
|
|
2436
2463
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2437
2464
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
2438
2465
|
|
|
2439
2466
|
if adata.varp is not None and len(adata.varp) > 0:
|
|
2440
2467
|
print(green(' varp'), ':', end = ' ', file = strio)
|
|
2441
|
-
|
|
2468
|
+
|
|
2469
|
+
wrapped = wrap([
|
|
2470
|
+
x + ' ' + annot('<' + dtypemat(adata.varp[x]) + '>')
|
|
2471
|
+
for x in adata.varp.keys()
|
|
2472
|
+
], n = 90, sep = ' ')
|
|
2473
|
+
|
|
2442
2474
|
for nline in range(len(wrapped)):
|
|
2443
2475
|
if nline == 0: print(wrapped[nline], file = strio)
|
|
2444
2476
|
else: print(' ' * 9, wrapped[nline], file = strio)
|
|
@@ -20,7 +20,7 @@ description = "exprmat: Routines for expression matrices"
|
|
|
20
20
|
readme = "readme.md"
|
|
21
21
|
license = {file = "license"}
|
|
22
22
|
requires-python = ">=3.9, <3.13"
|
|
23
|
-
version = "0.1.
|
|
23
|
+
version = "0.1.45"
|
|
24
24
|
authors = [
|
|
25
25
|
{name = "Zheng Yang", email = "xornent@outlook.com"}
|
|
26
26
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|