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.
Files changed (223) hide show
  1. {exprmat-0.1.44 → exprmat-0.1.45}/PKG-INFO +1 -1
  2. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/ansi.py +68 -0
  3. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/moments.py +6 -1
  4. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/expression.py +3 -2
  5. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/experiment.py +42 -10
  6. {exprmat-0.1.44 → exprmat-0.1.45}/pyproject.toml +1 -1
  7. {exprmat-0.1.44 → exprmat-0.1.45}/Cargo.lock +0 -0
  8. {exprmat-0.1.44 → exprmat-0.1.45}/Cargo.toml +0 -0
  9. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/__init__.py +0 -0
  10. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/__init__.py +0 -0
  11. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/cnmf.py +0 -0
  12. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/dbscan.py +0 -0
  13. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/kmeans.py +0 -0
  14. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/leiden.py +0 -0
  15. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/nmf.py +0 -0
  16. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/rogue.py +0 -0
  17. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/seriation.py +0 -0
  18. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/spectral.py +0 -0
  19. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/clustering/utils.py +0 -0
  20. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/__init__.py +0 -0
  21. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/cnvscore.py +0 -0
  22. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/cnv/infercnv.py +0 -0
  23. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/configuration.py +0 -0
  24. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/__init__.py +0 -0
  25. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/cistarget.py +0 -0
  26. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/cre.py +0 -0
  27. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/finders.py +0 -0
  28. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/geneset.py +0 -0
  29. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/io.py +0 -0
  30. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/lr.py +0 -0
  31. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/presets.py +0 -0
  32. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/signature.py +0 -0
  33. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/data/tf.py +0 -0
  34. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/__init__.py +0 -0
  35. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/aggregate.py +0 -0
  36. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/atac.py +0 -0
  37. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/aucell.py +0 -0
  38. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/de.py +0 -0
  39. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/gse.py +0 -0
  40. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/kde.py +0 -0
  41. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/recovery.py +0 -0
  42. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/summary.py +0 -0
  43. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/descriptive/tcr.py +0 -0
  44. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/dataset.py +0 -0
  45. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/gridsearch.py +0 -0
  46. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/inference.py +0 -0
  47. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/preprocessing.py +0 -0
  48. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/stats.py +0 -0
  49. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/deseq/utils.py +0 -0
  50. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/__init__.py +0 -0
  51. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/generank.py +0 -0
  52. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/linreg.py +0 -0
  53. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/optimization.py +0 -0
  54. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/parallel.py +0 -0
  55. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/preprocess.py +0 -0
  56. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/pseudotime.py +0 -0
  57. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/transition.py +0 -0
  58. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/utils.py +0 -0
  59. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/dynamics/velocity.py +0 -0
  60. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/__init__.py +0 -0
  61. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/infergrn.py +0 -0
  62. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/modules.py +0 -0
  63. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/prune.py +0 -0
  64. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/regressors.py +0 -0
  65. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/grn/utils.py +0 -0
  66. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/image/__init__.py +0 -0
  67. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/image/align.py +0 -0
  68. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/__init__.py +0 -0
  69. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/aggregate.py +0 -0
  70. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/method.py +0 -0
  71. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/__init__.py +0 -0
  72. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/cellchat.py +0 -0
  73. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/cellphonedb.py +0 -0
  74. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/connectome.py +0 -0
  75. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/geomean.py +0 -0
  76. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/logfc.py +0 -0
  77. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/natmi.py +0 -0
  78. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/rank_aggregate.py +0 -0
  79. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/scseqcomm.py +0 -0
  80. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/methods/singlecellsignalr.py +0 -0
  81. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/pipeline.py +0 -0
  82. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/preprocess.py +0 -0
  83. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/resources.py +0 -0
  84. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/lr/utils.py +0 -0
  85. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/__init__.py +0 -0
  86. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/callpeak.py +0 -0
  87. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/common.py +0 -0
  88. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/coverage.py +0 -0
  89. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/footprint.py +0 -0
  90. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/__init__.py +0 -0
  91. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/constants.py +0 -0
  92. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/idr.py +0 -0
  93. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/invcdf.pyx +0 -0
  94. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/optimization.py +0 -0
  95. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/idr/utils.py +0 -0
  96. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/linkage.py +0 -0
  97. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/motif.py +0 -0
  98. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/peaks/sequence.py +0 -0
  99. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/__init__.py +0 -0
  100. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/atac.py +0 -0
  101. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/cnmf.py +0 -0
  102. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/cnv.py +0 -0
  103. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/A.pk +0 -0
  104. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/B.pk +0 -0
  105. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/C.pk +0 -0
  106. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/D.pk +0 -0
  107. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/E.pk +0 -0
  108. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/F.pk +0 -0
  109. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/G.pk +0 -0
  110. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/H.pk +0 -0
  111. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/I.pk +0 -0
  112. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/J.pk +0 -0
  113. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/K.pk +0 -0
  114. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/L.pk +0 -0
  115. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/M.pk +0 -0
  116. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/N.pk +0 -0
  117. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/O.pk +0 -0
  118. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/P.pk +0 -0
  119. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Q.pk +0 -0
  120. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/R.pk +0 -0
  121. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/S.pk +0 -0
  122. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/T.pk +0 -0
  123. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/U.pk +0 -0
  124. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/V.pk +0 -0
  125. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/W.pk +0 -0
  126. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/X.pk +0 -0
  127. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Y.pk +0 -0
  128. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/data/Z.pk +0 -0
  129. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/de.py +0 -0
  130. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/gse.py +0 -0
  131. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/lr.py +0 -0
  132. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/milestone.py +0 -0
  133. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/palettes.py +0 -0
  134. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/sankey.py +0 -0
  135. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/sequence.py +0 -0
  136. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/summary.py +0 -0
  137. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/track.py +0 -0
  138. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/trajectory.py +0 -0
  139. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/utils.py +0 -0
  140. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/plotting/velocity.py +0 -0
  141. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/__init__.py +0 -0
  142. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/__init__.py +0 -0
  143. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/composite.py +0 -0
  144. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/doublets/scrublet.py +0 -0
  145. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/emptydrops.py +0 -0
  146. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/filter.py +0 -0
  147. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/impute/__init__.py +0 -0
  148. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/impute/magic.py +0 -0
  149. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/integrate.py +0 -0
  150. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/linear.py +0 -0
  151. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/normal.py +0 -0
  152. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/plot.py +0 -0
  153. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/qc.py +0 -0
  154. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/__init__.py +0 -0
  155. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/estimate.py +0 -0
  156. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/ksmooth.py +0 -0
  157. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/residual.py +0 -0
  158. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sctransform/transform.py +0 -0
  159. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/sparse.py +0 -0
  160. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/preprocessing/uniform.py +0 -0
  161. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/__init__.py +0 -0
  162. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/conversions.py +0 -0
  163. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/matcher.py +0 -0
  164. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/metadata.py +0 -0
  165. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/spatial.py +0 -0
  166. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/static.py +0 -0
  167. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reader/updater.py +0 -0
  168. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/__init__.py +0 -0
  169. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/diffmap.py +0 -0
  170. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/forceatlas.py +0 -0
  171. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/mde.py +0 -0
  172. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/nn.py +0 -0
  173. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/outliers.py +0 -0
  174. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/pca.py +0 -0
  175. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/plot.py +0 -0
  176. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/scvi.py +0 -0
  177. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/spectral.py +0 -0
  178. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/tsne.py +0 -0
  179. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/reduction/umap.py +0 -0
  180. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/__init__.py +0 -0
  181. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/elpi.py +0 -0
  182. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/pcurve.py +0 -0
  183. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/pseudotime.py +0 -0
  184. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/trajectory/root.py +0 -0
  185. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/transfer/__init__.py +0 -0
  186. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/transfer/atlas.py +0 -0
  187. {exprmat-0.1.44 → exprmat-0.1.45}/exprmat/utils.py +0 -0
  188. {exprmat-0.1.44 → exprmat-0.1.45}/license +0 -0
  189. {exprmat-0.1.44 → exprmat-0.1.45}/readme.md +0 -0
  190. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/Cargo.toml +0 -0
  191. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/license +0 -0
  192. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/readme +0 -0
  193. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/call_peaks.rs +0 -0
  194. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/embedding.rs +0 -0
  195. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/export.rs +0 -0
  196. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/knn.rs +0 -0
  197. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/lib.rs +0 -0
  198. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/motif.rs +0 -0
  199. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/network.rs +0 -0
  200. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/preprocessing.rs +0 -0
  201. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/utils/anndata.rs +0 -0
  202. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2/src/utils.rs +0 -0
  203. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/Cargo.toml +0 -0
  204. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/embedding.rs +0 -0
  205. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/export.rs +0 -0
  206. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/counter.rs +0 -0
  207. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/data_iter.rs +0 -0
  208. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/matrix.rs +0 -0
  209. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/feature_count/mod.rs +0 -0
  210. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/genome.rs +0 -0
  211. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/lib.rs +0 -0
  212. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/motif.rs +0 -0
  213. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/network.rs +0 -0
  214. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/flagstat.rs +0 -0
  215. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/header.rs +0 -0
  216. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam/mark_duplicates.rs +0 -0
  217. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/bam.rs +0 -0
  218. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/import.rs +0 -0
  219. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/mod.rs +0 -0
  220. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/preprocessing/qc.rs +0 -0
  221. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/knn.rs +0 -0
  222. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/mod.rs +0 -0
  223. {exprmat-0.1.44 → exprmat-0.1.45}/snapatac2-core/src/utils/similarity.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exprmat
3
- Version: 0.1.44
3
+ Version: 0.1.45
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -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
- return np.allclose(np.ravel(X[:5].data if issparse(X) else X[:5]) % 1, 0, atol=1e-3)
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
- wrapped = textwrap.wrap(' '.join([
2397
- x + ' ' + annot('<' + str(adata.obs[x].dtype) + '>')
2396
+
2397
+ wrapped = wrap([
2398
+ x + ' ' + annot('<' + dtypestr(adata.obs[x].dtype) + '>')
2398
2399
  for x in adata.obs.keys()
2399
- ]), width = 90, replace_whitespace = False, drop_whitespace = True)
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
- wrapped = textwrap.wrap(' '.join(adata.var.keys()), width = 90)
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
- wrapped = textwrap.wrap(' '.join(adata.layers.keys()), width = 90)
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
- wrapped = textwrap.wrap(' '.join(adata.obsm.keys()), width = 90)
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
- wrapped = textwrap.wrap(' '.join(adata.varm.keys()), width = 90)
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
- wrapped = textwrap.wrap(' '.join(adata.obsp.keys()), width = 90)
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
- wrapped = textwrap.wrap(' '.join(adata.varp.keys()), width = 90)
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.44"
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