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