exprmat 0.1.50__tar.gz → 0.1.51__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 (244) hide show
  1. {exprmat-0.1.50 → exprmat-0.1.51}/PKG-INFO +104 -1
  2. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/__init__.py +1 -1
  3. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/ansi.py +45 -21
  4. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/experiment.py +335 -278
  5. {exprmat-0.1.50 → exprmat-0.1.51}/pyproject.toml +1 -1
  6. exprmat-0.1.51/readme.md +164 -0
  7. exprmat-0.1.50/readme.md +0 -62
  8. {exprmat-0.1.50 → exprmat-0.1.51}/Cargo.lock +0 -0
  9. {exprmat-0.1.50 → exprmat-0.1.51}/Cargo.toml +0 -0
  10. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/__init__.py +0 -0
  11. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/cnmf.py +0 -0
  12. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/dbscan.py +0 -0
  13. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/gating.py +0 -0
  14. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/kmeans.py +0 -0
  15. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/leiden.py +0 -0
  16. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/nmf.py +0 -0
  17. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/rogue.py +0 -0
  18. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/sc3.py +0 -0
  19. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/seriation.py +0 -0
  20. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/spectral.py +0 -0
  21. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/clustering/utils.py +0 -0
  22. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/cnv/__init__.py +0 -0
  23. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/cnv/cnvscore.py +0 -0
  24. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/cnv/infercnv.py +0 -0
  25. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/configuration.py +0 -0
  26. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/__init__.py +0 -0
  27. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/cistarget.py +0 -0
  28. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/cre.py +0 -0
  29. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/finders.py +0 -0
  30. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/geneset.py +0 -0
  31. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/icnet.py +0 -0
  32. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/io.py +0 -0
  33. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/lr.py +0 -0
  34. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/orthologs.py +0 -0
  35. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/presets.py +0 -0
  36. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/signature.py +0 -0
  37. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/data/tf.py +0 -0
  38. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deconv/__init__.py +0 -0
  39. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deconv/deconv.py +0 -0
  40. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deconv/simulation.py +0 -0
  41. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/__init__.py +0 -0
  42. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/aggregate.py +0 -0
  43. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/atac.py +0 -0
  44. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/aucell.py +0 -0
  45. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/de.py +0 -0
  46. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/gse.py +0 -0
  47. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/kde.py +0 -0
  48. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/recovery.py +0 -0
  49. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/summary.py +0 -0
  50. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/descriptive/tcr.py +0 -0
  51. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/dataset.py +0 -0
  52. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/gridsearch.py +0 -0
  53. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/inference.py +0 -0
  54. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/preprocessing.py +0 -0
  55. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/stats.py +0 -0
  56. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/deseq/utils.py +0 -0
  57. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/__init__.py +0 -0
  58. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/generank.py +0 -0
  59. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/linreg.py +0 -0
  60. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/moments.py +0 -0
  61. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/optimization.py +0 -0
  62. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/parallel.py +0 -0
  63. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/preprocess.py +0 -0
  64. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/pseudotime.py +0 -0
  65. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/transition.py +0 -0
  66. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/utils.py +0 -0
  67. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/dynamics/velocity.py +0 -0
  68. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/__init__.py +0 -0
  69. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/infergrn.py +0 -0
  70. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/modules.py +0 -0
  71. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/prune.py +0 -0
  72. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/regressors.py +0 -0
  73. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/grn/utils.py +0 -0
  74. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/image/__init__.py +0 -0
  75. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/image/align.py +0 -0
  76. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/__init__.py +0 -0
  77. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/aggregate.py +0 -0
  78. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/__init__.py +0 -0
  79. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/construction.py +0 -0
  80. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/importance.py +0 -0
  81. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/ligand.py +0 -0
  82. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/metrics.py +0 -0
  83. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/icnet/pagerank.py +0 -0
  84. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/method.py +0 -0
  85. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/__init__.py +0 -0
  86. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/cellchat.py +0 -0
  87. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/cellphonedb.py +0 -0
  88. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/connectome.py +0 -0
  89. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/geomean.py +0 -0
  90. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/logfc.py +0 -0
  91. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/natmi.py +0 -0
  92. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/rank_aggregate.py +0 -0
  93. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/scseqcomm.py +0 -0
  94. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/methods/singlecellsignalr.py +0 -0
  95. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/pipeline.py +0 -0
  96. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/preprocess.py +0 -0
  97. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/resources.py +0 -0
  98. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/lr/utils.py +0 -0
  99. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/metacell/__init__.py +0 -0
  100. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/metacell/engine.py +0 -0
  101. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/metacell/model.py +0 -0
  102. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/metacell/utils.py +0 -0
  103. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/__init__.py +0 -0
  104. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/callpeak.py +0 -0
  105. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/common.py +0 -0
  106. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/coverage.py +0 -0
  107. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/footprint.py +0 -0
  108. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/__init__.py +0 -0
  109. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/constants.py +0 -0
  110. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/idr.py +0 -0
  111. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/invcdf.pyx +0 -0
  112. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/optimization.py +0 -0
  113. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/idr/utils.py +0 -0
  114. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/linkage.py +0 -0
  115. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/motif.py +0 -0
  116. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/peaks/sequence.py +0 -0
  117. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/__init__.py +0 -0
  118. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/atac.py +0 -0
  119. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/cnmf.py +0 -0
  120. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/cnv.py +0 -0
  121. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/A.pk +0 -0
  122. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/B.pk +0 -0
  123. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/C.pk +0 -0
  124. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/D.pk +0 -0
  125. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/E.pk +0 -0
  126. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/F.pk +0 -0
  127. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/G.pk +0 -0
  128. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/H.pk +0 -0
  129. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/I.pk +0 -0
  130. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/J.pk +0 -0
  131. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/K.pk +0 -0
  132. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/L.pk +0 -0
  133. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/M.pk +0 -0
  134. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/N.pk +0 -0
  135. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/O.pk +0 -0
  136. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/P.pk +0 -0
  137. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/Q.pk +0 -0
  138. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/R.pk +0 -0
  139. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/S.pk +0 -0
  140. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/T.pk +0 -0
  141. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/U.pk +0 -0
  142. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/V.pk +0 -0
  143. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/W.pk +0 -0
  144. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/X.pk +0 -0
  145. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/Y.pk +0 -0
  146. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/data/Z.pk +0 -0
  147. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/de.py +0 -0
  148. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/expression.py +0 -0
  149. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/gse.py +0 -0
  150. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/icnet.py +0 -0
  151. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/lr.py +0 -0
  152. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/milestone.py +0 -0
  153. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/palettes.py +0 -0
  154. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/sankey.py +0 -0
  155. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/sequence.py +0 -0
  156. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/summary.py +0 -0
  157. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/track.py +0 -0
  158. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/trajectory.py +0 -0
  159. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/utils.py +0 -0
  160. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/plotting/velocity.py +0 -0
  161. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/__init__.py +0 -0
  162. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/doublets/__init__.py +0 -0
  163. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/doublets/composite.py +0 -0
  164. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/doublets/scrublet.py +0 -0
  165. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/emptydrops.py +0 -0
  166. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/filter.py +0 -0
  167. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/impute/__init__.py +0 -0
  168. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/impute/magic.py +0 -0
  169. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/integrate.py +0 -0
  170. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/linear.py +0 -0
  171. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/normal.py +0 -0
  172. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/plot.py +0 -0
  173. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/qc.py +0 -0
  174. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sctransform/__init__.py +0 -0
  175. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sctransform/estimate.py +0 -0
  176. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sctransform/ksmooth.py +0 -0
  177. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sctransform/residual.py +0 -0
  178. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sctransform/transform.py +0 -0
  179. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/sparse.py +0 -0
  180. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/preprocessing/uniform.py +0 -0
  181. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/__init__.py +0 -0
  182. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/conversions.py +0 -0
  183. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/matcher.py +0 -0
  184. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/metadata.py +0 -0
  185. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/spatial.py +0 -0
  186. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/static.py +0 -0
  187. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reader/updater.py +0 -0
  188. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/__init__.py +0 -0
  189. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/diffmap.py +0 -0
  190. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/forceatlas.py +0 -0
  191. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/mde.py +0 -0
  192. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/nn.py +0 -0
  193. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/outliers.py +0 -0
  194. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/pca.py +0 -0
  195. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/plot.py +0 -0
  196. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/scvi.py +0 -0
  197. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/spectral.py +0 -0
  198. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/tsne.py +0 -0
  199. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/reduction/umap.py +0 -0
  200. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/__init__.py +0 -0
  201. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/cytotrace.py +0 -0
  202. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/elpi.py +0 -0
  203. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/pcurve.py +0 -0
  204. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/pseudotime.py +0 -0
  205. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/root.py +0 -0
  206. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/trajectory/trace.py +0 -0
  207. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/transfer/__init__.py +0 -0
  208. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/transfer/atlas.py +0 -0
  209. {exprmat-0.1.50 → exprmat-0.1.51}/exprmat/utils.py +0 -0
  210. {exprmat-0.1.50 → exprmat-0.1.51}/license +0 -0
  211. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/Cargo.toml +0 -0
  212. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/license +0 -0
  213. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/readme +0 -0
  214. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/call_peaks.rs +0 -0
  215. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/embedding.rs +0 -0
  216. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/export.rs +0 -0
  217. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/knn.rs +0 -0
  218. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/lib.rs +0 -0
  219. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/motif.rs +0 -0
  220. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/network.rs +0 -0
  221. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/preprocessing.rs +0 -0
  222. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/utils/anndata.rs +0 -0
  223. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2/src/utils.rs +0 -0
  224. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/Cargo.toml +0 -0
  225. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/embedding.rs +0 -0
  226. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/export.rs +0 -0
  227. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/feature_count/counter.rs +0 -0
  228. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/feature_count/data_iter.rs +0 -0
  229. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/feature_count/matrix.rs +0 -0
  230. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/feature_count/mod.rs +0 -0
  231. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/genome.rs +0 -0
  232. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/lib.rs +0 -0
  233. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/motif.rs +0 -0
  234. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/network.rs +0 -0
  235. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/bam/flagstat.rs +0 -0
  236. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/bam/header.rs +0 -0
  237. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/bam/mark_duplicates.rs +0 -0
  238. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/bam.rs +0 -0
  239. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/import.rs +0 -0
  240. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/mod.rs +0 -0
  241. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/preprocessing/qc.rs +0 -0
  242. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/utils/knn.rs +0 -0
  243. {exprmat-0.1.50 → exprmat-0.1.51}/snapatac2-core/src/utils/mod.rs +0 -0
  244. {exprmat-0.1.50 → exprmat-0.1.51}/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.50
3
+ Version: 0.1.51
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -167,3 +167,106 @@ bsync-fetch --id <your-id> --secret <your-api-secret> \
167
167
  The authentication tokens passed to `--id` and `--secret` is provided by the
168
168
  Alibaba Cloud service (See the [Documentation](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair)
169
169
  for details)
170
+
171
+ ### Licensing
172
+
173
+ The original part of the source code is licensed under GNU GPLv3.
174
+
175
+ ```
176
+ exprmat - Routines to manipulate expression matrices
177
+ Copyright (C) 2025 - 2026 Zheng Yang (杨政) <xornent@outlook.com>
178
+
179
+ exprmat is free software and comes with ABSOLUTELY NO WARRANTY.
180
+ You are welcome to redistribute it under certain conditions.
181
+ You should have received a copy of the GNU General Public License
182
+ version 3 along with this program. If not, see <http://www.gnu.org/licenses/>.
183
+
184
+ The GNU General Public License does not permit incorporating
185
+ your program into proprietary programs.
186
+ ```
187
+
188
+ I acknowledge the following author(s) for modifying and integrating their work
189
+ in the form of source code to this package.
190
+
191
+ ```
192
+ parts of the source code under /preprocessing comes from the scanpy project.
193
+
194
+ BSD 3-Clause License. For full text of the license, see
195
+ <https://opensource.org/license/BSD-3-clause>
196
+ Copyright (c) 2025 scverse®
197
+ Copyright (c) 2017 F. Alexander Wolf, P. Angerer, Theis Lab
198
+
199
+ function embedding_atlas (file /reduction/plot.py) comes from the omicverse project.
200
+
201
+ GNU GPLv3. (same as this project)
202
+ Copyright (c) 2024 112 Lab
203
+
204
+ most of the code from /snapatac2 and /snapatac2-core comes from the SnapATAC
205
+ project, including the rust build system and the compiled binaries.
206
+
207
+ The MIT license. For full text of the license, see
208
+ <https://opensource.org/license/MIT>
209
+ Copyright (c) 2022-2024 Kai Zhang
210
+
211
+ file /clustering/sc3.py comes from the sc3s project.
212
+
213
+ GNU GPLv3. (same as this project)
214
+ Copyright (c) Quah, F.X. and Hemberg, M. and contributors.
215
+
216
+ file /clustering/nmf.py comes from cNMF project.
217
+
218
+ The MIT license
219
+ Copyright (c) 2019 Dylan Kotliar
220
+
221
+ directory /cnv comes from infercnvpy project.
222
+
223
+ BSD 3-Clause License
224
+ Copyright (c) 2022, Gregor Sturm
225
+
226
+ directory /deconv comes from the TAPE project.
227
+
228
+ GNU GPLv3. (same as this project)
229
+ Copyright (c) The contributors.
230
+
231
+ directory /metacell comes from the MetaQ project.
232
+
233
+ MIT License
234
+ Copyright (c) 2024 XLearning Group
235
+
236
+ directory /grn comes from the scenicplus project.
237
+
238
+ Academic Non-commercial Software License Agreement.
239
+ For full text of the license, see <https://github.com/aertslab/scenicplus>
240
+ Copyright (c) The contributors.
241
+
242
+ directory /lr (but not /lr/icnet) comes from the lianapy project
243
+
244
+ BSD 3-Clause License
245
+ Copyright (c) 2025, Daniel Dimitrov
246
+
247
+ directory /peaks/idr.py comes from the idr project
248
+
249
+ GNU GPLv2. For copyright details, see <https://github.com/nboley/idr>
250
+ Copyright (c) The contributors
251
+
252
+ function diffmap comes from the pydiffmap project
253
+
254
+ MIT License
255
+ Copyright (c) 2018 Ralf Banisch, Erik Henning Thiede, Zofia Trstanova
256
+
257
+ principle tree fitting and trajectory analysis comes from the scFates project
258
+
259
+ BSD 3-Clause License
260
+ Copyright (c) 2020, Louis Faure
261
+
262
+ file /trajectory/cytotrace.py comes from the CytoTRACE2 project
263
+
264
+ Stanford Non-commercial Software License Agreement
265
+ Copyright (c) The contributors.
266
+
267
+ rna velocity fitting comes from the scvelo project
268
+
269
+ BSD 3-Clause License
270
+ Copyright (c) 2018, Theis Lab
271
+ ```
272
+
@@ -112,7 +112,7 @@ basepath = config['data']
112
112
 
113
113
  # core method exports
114
114
  from exprmat.utils import setup_styles, savefig
115
- from exprmat.ansi import pprog, pproga, info, error, warning
115
+ from exprmat.ansi import pprog, pproga, info, error, warning, default_logger, logger
116
116
  from exprmat.reader.experiment import experiment, load_experiment
117
117
  from exprmat.reader.metadata import metadata, load_metadata
118
118
  import exprmat.reader.static as st
@@ -7,7 +7,48 @@ from functools import partial
7
7
  from tqdm import tqdm
8
8
  from tqdm.auto import tqdm as tqdma
9
9
 
10
- SILENT = False
10
+
11
+ class logger:
12
+
13
+ silent = False
14
+
15
+ def __init__(self, silent: bool = False) -> None:
16
+ self.silent = silent
17
+
18
+ def error(self, text: str, error = None) -> None:
19
+
20
+ if self.silent:
21
+ if error: raise Exception(text) from error
22
+ else: raise Exception(text)
23
+
24
+ fore_red()
25
+ print('[error]', end = ' ')
26
+ ansi_reset()
27
+ print(text)
28
+
29
+ if error is None: raise Exception(text)
30
+ else: raise Exception(text) from error
31
+
32
+
33
+ def warning(self, text: str) -> None:
34
+ if self.silent: return
35
+ fore_yellow()
36
+ print('[!]', end = ' ')
37
+ ansi_reset()
38
+ print(text)
39
+ ansi_reset()
40
+
41
+
42
+ def info(self, text: str) -> None:
43
+ if self.silent: return
44
+ fore_cyan()
45
+ print('[i]', end = ' ')
46
+ ansi_reset()
47
+ print(text)
48
+ ansi_reset()
49
+
50
+
51
+ default_logger = logger()
11
52
 
12
53
 
13
54
  def fore_black() -> None:
@@ -114,32 +155,15 @@ def format_file_size(size):
114
155
 
115
156
 
116
157
  def error(text: str, error = None) -> None:
117
- if SILENT: raise Exception(text) from error
118
- fore_red()
119
- print('[error]', end = ' ')
120
- ansi_reset()
121
- print(text)
122
-
123
- if error is None: raise Exception(text)
124
- else: raise Exception(text) from error
158
+ default_logger.error(text, error)
125
159
 
126
160
 
127
161
  def warning(text: str) -> None:
128
- if SILENT: return
129
- fore_yellow()
130
- print('[!]', end = ' ')
131
- ansi_reset()
132
- print(text)
133
- ansi_reset()
162
+ default_logger.warning(text)
134
163
 
135
164
 
136
165
  def info(text: str) -> None:
137
- if SILENT: return
138
- fore_cyan()
139
- print('[i]', end = ' ')
140
- ansi_reset()
141
- print(text)
142
- ansi_reset()
166
+ default_logger.info(text)
143
167
 
144
168
 
145
169
  def clear():