exprmat 0.1.40__tar.gz → 0.1.41__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 (217) hide show
  1. {exprmat-0.1.40 → exprmat-0.1.41}/PKG-INFO +1 -1
  2. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/experiment.py +22 -7
  3. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/static.py +4 -3
  4. exprmat-0.1.41/exprmat/reader/updater.py +111 -0
  5. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/scvi.py +19 -21
  6. {exprmat-0.1.40 → exprmat-0.1.41}/pyproject.toml +1 -1
  7. exprmat-0.1.40/exprmat/reader/updater.py +0 -83
  8. {exprmat-0.1.40 → exprmat-0.1.41}/Cargo.lock +0 -0
  9. {exprmat-0.1.40 → exprmat-0.1.41}/Cargo.toml +0 -0
  10. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/__init__.py +0 -0
  11. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/ansi.py +0 -0
  12. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/__init__.py +0 -0
  13. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/cnmf.py +0 -0
  14. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/dbscan.py +0 -0
  15. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/kmeans.py +0 -0
  16. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/leiden.py +0 -0
  17. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/nmf.py +0 -0
  18. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/rogue.py +0 -0
  19. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/seriation.py +0 -0
  20. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/spectral.py +0 -0
  21. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/clustering/utils.py +0 -0
  22. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/cnv/__init__.py +0 -0
  23. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/cnv/cnvscore.py +0 -0
  24. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/cnv/infercnv.py +0 -0
  25. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/configuration.py +0 -0
  26. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/__init__.py +0 -0
  27. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/cistarget.py +0 -0
  28. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/cre.py +0 -0
  29. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/finders.py +0 -0
  30. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/geneset.py +0 -0
  31. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/io.py +0 -0
  32. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/lr.py +0 -0
  33. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/presets.py +0 -0
  34. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/signature.py +0 -0
  35. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/data/tf.py +0 -0
  36. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/__init__.py +0 -0
  37. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/aggregate.py +0 -0
  38. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/atac.py +0 -0
  39. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/aucell.py +0 -0
  40. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/de.py +0 -0
  41. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/gse.py +0 -0
  42. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/kde.py +0 -0
  43. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/recovery.py +0 -0
  44. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/summary.py +0 -0
  45. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/descriptive/tcr.py +0 -0
  46. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/dataset.py +0 -0
  47. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/gridsearch.py +0 -0
  48. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/inference.py +0 -0
  49. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/preprocessing.py +0 -0
  50. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/stats.py +0 -0
  51. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/deseq/utils.py +0 -0
  52. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/__init__.py +0 -0
  53. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/generank.py +0 -0
  54. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/linreg.py +0 -0
  55. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/moments.py +0 -0
  56. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/optimization.py +0 -0
  57. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/parallel.py +0 -0
  58. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/preprocess.py +0 -0
  59. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/pseudotime.py +0 -0
  60. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/transition.py +0 -0
  61. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/utils.py +0 -0
  62. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/dynamics/velocity.py +0 -0
  63. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/__init__.py +0 -0
  64. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/infergrn.py +0 -0
  65. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/modules.py +0 -0
  66. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/prune.py +0 -0
  67. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/regressors.py +0 -0
  68. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/grn/utils.py +0 -0
  69. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/image/__init__.py +0 -0
  70. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/image/align.py +0 -0
  71. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/__init__.py +0 -0
  72. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/aggregate.py +0 -0
  73. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/method.py +0 -0
  74. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/__init__.py +0 -0
  75. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/cellchat.py +0 -0
  76. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/cellphonedb.py +0 -0
  77. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/connectome.py +0 -0
  78. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/geomean.py +0 -0
  79. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/logfc.py +0 -0
  80. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/natmi.py +0 -0
  81. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/rank_aggregate.py +0 -0
  82. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/scseqcomm.py +0 -0
  83. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/methods/singlecellsignalr.py +0 -0
  84. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/pipeline.py +0 -0
  85. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/preprocess.py +0 -0
  86. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/resources.py +0 -0
  87. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/lr/utils.py +0 -0
  88. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/__init__.py +0 -0
  89. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/callpeak.py +0 -0
  90. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/common.py +0 -0
  91. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/coverage.py +0 -0
  92. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/footprint.py +0 -0
  93. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/__init__.py +0 -0
  94. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/constants.py +0 -0
  95. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/idr.py +0 -0
  96. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/invcdf.pyx +0 -0
  97. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/optimization.py +0 -0
  98. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/idr/utils.py +0 -0
  99. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/linkage.py +0 -0
  100. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/motif.py +0 -0
  101. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/peaks/sequence.py +0 -0
  102. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/__init__.py +0 -0
  103. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/atac.py +0 -0
  104. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/cnmf.py +0 -0
  105. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/cnv.py +0 -0
  106. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/A.pk +0 -0
  107. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/B.pk +0 -0
  108. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/C.pk +0 -0
  109. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/D.pk +0 -0
  110. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/E.pk +0 -0
  111. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/F.pk +0 -0
  112. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/G.pk +0 -0
  113. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/H.pk +0 -0
  114. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/I.pk +0 -0
  115. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/J.pk +0 -0
  116. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/K.pk +0 -0
  117. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/L.pk +0 -0
  118. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/M.pk +0 -0
  119. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/N.pk +0 -0
  120. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/O.pk +0 -0
  121. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/P.pk +0 -0
  122. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/Q.pk +0 -0
  123. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/R.pk +0 -0
  124. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/S.pk +0 -0
  125. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/T.pk +0 -0
  126. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/U.pk +0 -0
  127. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/V.pk +0 -0
  128. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/W.pk +0 -0
  129. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/X.pk +0 -0
  130. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/Y.pk +0 -0
  131. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/data/Z.pk +0 -0
  132. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/de.py +0 -0
  133. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/expression.py +0 -0
  134. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/gse.py +0 -0
  135. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/lr.py +0 -0
  136. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/palettes.py +0 -0
  137. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/sankey.py +0 -0
  138. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/sequence.py +0 -0
  139. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/summary.py +0 -0
  140. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/track.py +0 -0
  141. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/utils.py +0 -0
  142. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/plotting/velocity.py +0 -0
  143. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/__init__.py +0 -0
  144. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/doublets/__init__.py +0 -0
  145. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/doublets/composite.py +0 -0
  146. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/doublets/scrublet.py +0 -0
  147. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/emptydrops.py +0 -0
  148. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/filter.py +0 -0
  149. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/impute/__init__.py +0 -0
  150. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/impute/magic.py +0 -0
  151. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/integrate.py +0 -0
  152. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/linear.py +0 -0
  153. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/normal.py +0 -0
  154. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/plot.py +0 -0
  155. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/qc.py +0 -0
  156. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sctransform/__init__.py +0 -0
  157. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sctransform/estimate.py +0 -0
  158. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sctransform/ksmooth.py +0 -0
  159. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sctransform/residual.py +0 -0
  160. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sctransform/transform.py +0 -0
  161. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/sparse.py +0 -0
  162. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/preprocessing/uniform.py +0 -0
  163. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/__init__.py +0 -0
  164. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/conversions.py +0 -0
  165. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/matcher.py +0 -0
  166. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/metadata.py +0 -0
  167. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reader/spatial.py +0 -0
  168. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/__init__.py +0 -0
  169. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/forceatlas.py +0 -0
  170. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/mde.py +0 -0
  171. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/nn.py +0 -0
  172. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/outliers.py +0 -0
  173. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/pca.py +0 -0
  174. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/plot.py +0 -0
  175. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/spectral.py +0 -0
  176. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/tsne.py +0 -0
  177. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/reduction/umap.py +0 -0
  178. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/trajectory/pcurve.py +0 -0
  179. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/transfer/__init__.py +0 -0
  180. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/transfer/atlas.py +0 -0
  181. {exprmat-0.1.40 → exprmat-0.1.41}/exprmat/utils.py +0 -0
  182. {exprmat-0.1.40 → exprmat-0.1.41}/license +0 -0
  183. {exprmat-0.1.40 → exprmat-0.1.41}/readme.md +0 -0
  184. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/Cargo.toml +0 -0
  185. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/license +0 -0
  186. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/readme +0 -0
  187. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/call_peaks.rs +0 -0
  188. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/embedding.rs +0 -0
  189. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/export.rs +0 -0
  190. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/knn.rs +0 -0
  191. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/lib.rs +0 -0
  192. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/motif.rs +0 -0
  193. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/network.rs +0 -0
  194. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/preprocessing.rs +0 -0
  195. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/utils/anndata.rs +0 -0
  196. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2/src/utils.rs +0 -0
  197. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/Cargo.toml +0 -0
  198. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/embedding.rs +0 -0
  199. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/export.rs +0 -0
  200. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/feature_count/counter.rs +0 -0
  201. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/feature_count/data_iter.rs +0 -0
  202. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/feature_count/matrix.rs +0 -0
  203. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/feature_count/mod.rs +0 -0
  204. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/genome.rs +0 -0
  205. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/lib.rs +0 -0
  206. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/motif.rs +0 -0
  207. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/network.rs +0 -0
  208. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/bam/flagstat.rs +0 -0
  209. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/bam/header.rs +0 -0
  210. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/bam/mark_duplicates.rs +0 -0
  211. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/bam.rs +0 -0
  212. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/import.rs +0 -0
  213. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/mod.rs +0 -0
  214. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/preprocessing/qc.rs +0 -0
  215. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/utils/knn.rs +0 -0
  216. {exprmat-0.1.40 → exprmat-0.1.41}/snapatac2-core/src/utils/mod.rs +0 -0
  217. {exprmat-0.1.40 → exprmat-0.1.41}/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.40
3
+ Version: 0.1.41
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -44,10 +44,6 @@ class experiment:
44
44
  dump = '.', subset = None,
45
45
  version = em.SPECIFICATION
46
46
  ):
47
-
48
- from exprmat.reader.updater import update
49
- version = update(meta, modalities, mudata, version)
50
-
51
47
  # TODO: we support rna only at present.
52
48
  table = meta.dataframe.to_dict(orient = 'list')
53
49
  self.mudata = mudata
@@ -265,6 +261,15 @@ class experiment:
265
261
  else: warning(f'sample {i_sample} have no supported modalities')
266
262
 
267
263
 
264
+ self.metadata.dataframe = self.metadata.dataframe.loc[
265
+ self.metadata.dataframe['modality'] != 'rna.splicing', :
266
+ ].copy()
267
+
268
+ self.metadata.dataframe = self.metadata.dataframe.loc[
269
+ self.metadata.dataframe['modality'] != 'rna.tcr', :
270
+ ].copy()
271
+
272
+
268
273
  # attaching bulk datasets.
269
274
 
270
275
  for i_mod in ['rna-bulk', 'atac-bulk']:
@@ -894,6 +899,8 @@ class experiment:
894
899
  p.imap_unordered(partial_task, args),
895
900
  total = len(args), desc = 'processing anndata'
896
901
  ))
902
+
903
+ p.close()
897
904
 
898
905
  results = {}
899
906
  for data, key, out in output:
@@ -2439,6 +2446,17 @@ def load_experiment(direc, load_samples = True, load_subset = None):
2439
2446
  # read individual modality and sample
2440
2447
  meta = load_metadata(os.path.join(direc, 'metadata.tsv'))
2441
2448
 
2449
+ # load specification
2450
+ version = load_experiment_specification(direc)
2451
+
2452
+ # update the object to the newest version
2453
+ from exprmat.reader.updater import update
2454
+ version = update(meta, direc, version)
2455
+
2456
+ meta.dataframe = meta.dataframe.loc[
2457
+ ['.' in x for x in meta.dataframe['modality']], :
2458
+ ].copy()
2459
+
2442
2460
  modalities = {}
2443
2461
  if load_samples:
2444
2462
  for modal, samp in zip(meta.dataframe['modality'], meta.dataframe['sample']):
@@ -2459,9 +2477,6 @@ def load_experiment(direc, load_samples = True, load_subset = None):
2459
2477
  if os.path.exists(os.path.join(direc, 'subsets', load_subset + '.h5mu')):
2460
2478
  mdata = mu.read_h5mu(os.path.join(direc, 'subsets', load_subset + '.h5mu'))
2461
2479
 
2462
- # load specification
2463
- version = load_experiment_specification(direc)
2464
-
2465
2480
  expr = experiment(
2466
2481
  meta = meta,
2467
2482
  mudata = mdata,
@@ -182,16 +182,17 @@ def rna_scvi(
182
182
  # save the model
183
183
  import os
184
184
  if sample_name == 'integrated':
185
- attempt = os.path.join(savepath, 'scvi')
186
- else: attempt = os.path.join(savepath, 'rna', 'scvi', sample_name)
185
+ attempt = os.path.join(savepath, 'scvi', key_added)
186
+ else: attempt = os.path.join(savepath, 'rna', 'scvi', sample_name, key_added)
187
187
 
188
188
  os.makedirs(attempt, exist_ok = True)
189
189
  model.save(attempt, overwrite = True)
190
190
  adata.obsm[key_added] = latent
191
191
 
192
192
  adata.uns[key_added] = {
193
- 'model': savepath,
193
+ 'model': attempt,
194
194
  'n_latent': n_comps,
195
+ 'batch_key': batch,
195
196
  'type': 'scvi'
196
197
  }
197
198
 
@@ -0,0 +1,111 @@
1
+
2
+ import os
3
+ import h5py
4
+ from anndata.io import read_elem, write_elem
5
+
6
+ import exprmat as em
7
+ from exprmat.ansi import error, warning, info
8
+
9
+ VERSION_CHECKPOINT = [1, em.SPECIFICATION]
10
+
11
+
12
+ def update(meta, dump, version):
13
+
14
+ # current version
15
+ if version == em.SPECIFICATION: return version
16
+
17
+ # valid version
18
+ elif version in VERSION_CHECKPOINT:
19
+ ckpt = VERSION_CHECKPOINT.index(version)
20
+ for taskid in range(ckpt, len(VERSION_CHECKPOINT) - 1):
21
+ task = UPDATE_TASK[taskid]
22
+ info(f'updating experiment dump from {version} to {VERSION_CHECKPOINT[taskid + 1]} ...')
23
+
24
+ # update samples
25
+ for irow in range(len(meta.dataframe)):
26
+ metadata = meta.dataframe.iloc[irow, :].copy()
27
+ if '.' in metadata['modality']: continue
28
+ info(f'updating sample ./{metadata["modality"]}/{metadata["sample"]} ...')
29
+ task(metadata['modality'], os.path.join(dump, metadata["modality"], metadata["sample"] + '.h5ad'))
30
+
31
+ # update subsets
32
+ if os.path.exists(os.path.join(dump, 'subsets')):
33
+ for subset in os.listdir(os.path.join(dump, 'subsets')):
34
+ if not subset.endswith('.h5mu'): continue
35
+ if subset.startswith('.'): continue
36
+ info(f'updating subset {subset.replace(".h5mu", "")} ...')
37
+ task('subset', os.path.join(dump, 'subsets', subset))
38
+
39
+ if os.path.exists(os.path.join(dump, 'integrated.h5mu')):
40
+ info(f'updating integrated dataset ...')
41
+ task('integrated', os.path.join(dump, 'integrated.h5mu'))
42
+
43
+
44
+ return VERSION_CHECKPOINT[taskid + 1]
45
+
46
+ # invalid version
47
+ else: error(f'illegal version specification of experiment dump: [{version}]')
48
+
49
+
50
+ def update_39(mod, fpath):
51
+
52
+ def update_rna_var(table):
53
+ if 'ensembl' in table.columns:
54
+ import pandas as pd
55
+ obsn = table[['ensembl']].copy()
56
+ taxa = obsn.index.tolist()[0].split(':')[1]
57
+ from exprmat.data.finders import get_genome
58
+ gtable = get_genome(taxa)
59
+ gtable.index = gtable['id'].tolist()
60
+ obsn = obsn.join(gtable, on = 'ensembl', how = 'left')
61
+ assert len(obsn) == len(table)
62
+ del obsn['ensembl']
63
+
64
+ old_columns = [
65
+ '.seqid', '.source', '.type', '.start', '.end', '.score', '.strand', '.phase',
66
+ 'biotype', 'source', 'gene', 'description', 'ensembl', 'uid', 'version', 'len.mean',
67
+ 'len.median', 'len.cds', '.ucsc'
68
+ ]
69
+
70
+ for o in old_columns:
71
+ if o in table.columns: del table[o]
72
+ return pd.concat([obsn, table], axis = 1)
73
+
74
+ def update_atac_var(table):
75
+ return table.rename(columns = {
76
+ '.seqid': 'chr',
77
+ '.start': 'start',
78
+ '.end': 'end',
79
+ }, inplace = False)
80
+
81
+
82
+ file = h5py.File(fpath, 'r+')
83
+
84
+ if mod in ['subset', 'integrated']:
85
+ for m in list(file['mod'].keys()):
86
+ if m in ['rna', 'rnasp-b', 'rnasp-c', 'rnasp-s', 'atac-g']:
87
+ table = read_elem(file['mod'][m]['var'])
88
+ table = update_rna_var(table)
89
+ write_elem(file['mod'][m], 'var', table)
90
+
91
+ elif m in ['atac', 'atac-p']:
92
+ table = read_elem(file['mod'][m]['var'])
93
+ table = update_atac_var(table)
94
+ write_elem(file['mod'][m], 'var', table)
95
+
96
+ if mod in ['rna', 'rnasp-b', 'rnasp-c', 'rnasp-s', 'atac-g']:
97
+ table = read_elem(file['var'])
98
+ table = update_rna_var(table)
99
+ write_elem(file, 'var', table)
100
+
101
+ elif mod in ['atac', 'atac-p']:
102
+ table = read_elem(file['var'])
103
+ table = update_atac_var(table)
104
+ write_elem(file, 'var', table)
105
+
106
+ file.close()
107
+
108
+
109
+ UPDATE_TASK = [
110
+ update_39
111
+ ]
@@ -57,29 +57,27 @@ def scvi(
57
57
  )
58
58
 
59
59
  import warnings
60
- import contextlib
61
60
  with warnings.catch_warnings():
62
61
  warnings.simplefilter('ignore')
63
- with contextlib.redirect_stderr(None):
64
- model.train(
65
- max_epochs = max_epochs,
66
- accelerator = accelerator,
67
- devices = devices,
68
- train_size = train_size,
69
- validation_size = validation_size,
70
- shuffle_set_split = shuffle_set_split,
71
- load_sparse_tensor = load_sparse_tensor,
72
- batch_size = batch_size,
73
- early_stopping = early_stopping,
74
- datasplitter_kwargs = datasplitter_kwargs,
75
- plan_kwargs = plan_kwargs,
76
- datamodule = datamodule,
77
- enable_progress_bar = enable_progress_bar,
78
- progress_bar_refresh_rate = progress_bar_refresh_rate,
79
- simple_progress_bar = simple_progress_bar,
80
- logger = logger,
81
- log_every_n_steps = log_every_n_steps,
82
- )
62
+ model.train(
63
+ max_epochs = max_epochs,
64
+ accelerator = accelerator,
65
+ devices = devices,
66
+ train_size = train_size,
67
+ validation_size = validation_size,
68
+ shuffle_set_split = shuffle_set_split,
69
+ load_sparse_tensor = load_sparse_tensor,
70
+ batch_size = batch_size,
71
+ early_stopping = early_stopping,
72
+ datasplitter_kwargs = datasplitter_kwargs,
73
+ plan_kwargs = plan_kwargs,
74
+ datamodule = datamodule,
75
+ enable_progress_bar = enable_progress_bar,
76
+ progress_bar_refresh_rate = progress_bar_refresh_rate,
77
+ simple_progress_bar = simple_progress_bar,
78
+ logger = logger,
79
+ log_every_n_steps = log_every_n_steps,
80
+ )
83
81
 
84
82
  latent = model.get_latent_representation()
85
83
  return model, latent
@@ -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.40"
23
+ version = "0.1.41"
24
24
  authors = [
25
25
  {name = "Zheng Yang", email = "xornent@outlook.com"}
26
26
  ]
@@ -1,83 +0,0 @@
1
-
2
- import exprmat as em
3
- from exprmat.ansi import error, warning, info
4
-
5
- VERSION_CHECKPOINT = [1, em.SPECIFICATION]
6
-
7
-
8
- def update(meta, modalities, mudata, version):
9
-
10
- # current version
11
- if version == em.SPECIFICATION: return version
12
-
13
- # valid version
14
- elif version in VERSION_CHECKPOINT:
15
- ckpt = VERSION_CHECKPOINT.index(version)
16
- for taskid in range(ckpt, len(VERSION_CHECKPOINT) - 1):
17
- task = UPDATE_TASK[taskid]
18
- info(f'updating experiment dump from {version} to {VERSION_CHECKPOINT[taskid + 1]} ...')
19
- task(meta, modalities, mudata)
20
-
21
- return VERSION_CHECKPOINT[taskid + 1]
22
-
23
- # invalid version
24
- else: error(f'illegal version specification of experiment dump: [{version}]')
25
-
26
-
27
- def do_for(modalities, mudata, modality, func, **params):
28
-
29
- if modalities:
30
- if modality in modalities.keys():
31
- for k in modalities[modality].keys():
32
- func(modalities[modality][k], **params)
33
- if mudata:
34
- if modality in mudata.mod.keys():
35
- func(mudata.mod[modality], **params)
36
-
37
-
38
- def update_1_39(meta, modalities, mudata):
39
-
40
- def update_rna(data):
41
-
42
- if 'ensembl' in data.var.columns:
43
- import pandas as pd
44
- obsn = data.var[['ensembl']].copy()
45
- taxa = obsn.index.tolist()[0].split(':')[1]
46
- from exprmat.data.finders import get_genome
47
- gtable = get_genome(taxa)
48
- gtable.index = gtable['id'].tolist()
49
- obsn = obsn.join(gtable, on = 'ensembl', how = 'left')
50
- assert len(obsn) == data.n_vars
51
- del obsn['ensembl']
52
-
53
- old_columns = [
54
- '.seqid', '.source', '.type', '.start', '.end', '.score', '.strand', '.phase',
55
- 'biotype', 'source', 'gene', 'description', 'ensembl', 'uid', 'version', 'len.mean',
56
- 'len.median', 'len.cds', '.ucsc'
57
- ]
58
-
59
- for o in old_columns:
60
- if o in data.var.columns: del data.var[o]
61
- data.var = pd.concat([obsn, data.var], axis = 1)
62
-
63
- def update_atac(data):
64
- data.var.rename(columns = {
65
- '.seqid': 'chr',
66
- '.start': 'start',
67
- '.end': 'end',
68
- }, inplace = True)
69
-
70
- do_for(modalities, mudata, 'rna', update_rna)
71
- do_for(modalities, mudata, 'rnasp-c', update_rna)
72
- do_for(modalities, mudata, 'rnasp-b', update_rna)
73
- do_for(modalities, mudata, 'rnasp-s', update_rna)
74
- do_for(modalities, mudata, 'atac-g', update_rna)
75
-
76
- do_for(modalities, mudata, 'atac', update_atac)
77
- do_for(modalities, mudata, 'atac-p', update_atac)
78
- pass
79
-
80
-
81
- UPDATE_TASK = [
82
- update_1_39
83
- ]
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