exprmat 0.1.34__tar.gz → 0.1.36__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 (185) hide show
  1. {exprmat-0.1.34 → exprmat-0.1.36}/PKG-INFO +14 -5
  2. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/__init__.py +51 -3
  3. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/configuration.py +2 -0
  4. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/finders.py +37 -0
  5. exprmat-0.1.36/exprmat/deseq/dataset.py +1485 -0
  6. exprmat-0.1.36/exprmat/deseq/gridsearch.py +317 -0
  7. exprmat-0.1.36/exprmat/deseq/inference.py +650 -0
  8. exprmat-0.1.36/exprmat/deseq/preprocessing.py +104 -0
  9. exprmat-0.1.36/exprmat/deseq/stats.py +616 -0
  10. exprmat-0.1.36/exprmat/deseq/utils.py +1361 -0
  11. exprmat-0.1.36/exprmat/peaks/callpeak.py +359 -0
  12. exprmat-0.1.36/exprmat/peaks/idr/constants.py +26 -0
  13. exprmat-0.1.36/exprmat/peaks/idr/idr.py +686 -0
  14. exprmat-0.1.36/exprmat/peaks/idr/invcdf.pyx +108 -0
  15. exprmat-0.1.36/exprmat/peaks/idr/optimization.py +293 -0
  16. exprmat-0.1.36/exprmat/peaks/idr/utils.py +159 -0
  17. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/expression.py +45 -11
  18. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/track.py +48 -10
  19. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/qc.py +6 -3
  20. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/experiment.py +445 -66
  21. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/matcher.py +106 -8
  22. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/metadata.py +34 -0
  23. exprmat-0.1.36/exprmat/reader/spatial.py +853 -0
  24. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/static.py +478 -42
  25. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/plot.py +6 -1
  26. exprmat-0.1.36/exprmat/transfer/__init__.py +0 -0
  27. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/utils.py +12 -0
  28. exprmat-0.1.36/license +0 -0
  29. {exprmat-0.1.34 → exprmat-0.1.36}/pyproject.toml +18 -5
  30. exprmat-0.1.34/exprmat/reader/spatial.py +0 -171
  31. {exprmat-0.1.34 → exprmat-0.1.36}/Cargo.lock +0 -0
  32. {exprmat-0.1.34 → exprmat-0.1.36}/Cargo.toml +0 -0
  33. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/ansi.py +0 -0
  34. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/__init__.py +0 -0
  35. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/cnmf.py +0 -0
  36. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/dbscan.py +0 -0
  37. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/kmeans.py +0 -0
  38. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/leiden.py +0 -0
  39. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/nmf.py +0 -0
  40. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/rogue.py +0 -0
  41. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/seriation.py +0 -0
  42. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/spectral.py +0 -0
  43. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/clustering/utils.py +0 -0
  44. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/cnv/__init__.py +0 -0
  45. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/cnv/cnvscore.py +0 -0
  46. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/cnv/infercnv.py +0 -0
  47. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/__init__.py +0 -0
  48. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/cistarget.py +0 -0
  49. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/delim.py +0 -0
  50. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/geneset.py +0 -0
  51. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/gff.py +0 -0
  52. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/io.py +0 -0
  53. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/lr.py +0 -0
  54. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/presets.py +0 -0
  55. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/private.py +0 -0
  56. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/ranges.py +0 -0
  57. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/signature.py +0 -0
  58. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/data/tf.py +0 -0
  59. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/__init__.py +0 -0
  60. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/aggregate.py +0 -0
  61. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/atac.py +0 -0
  62. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/aucell.py +0 -0
  63. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/de.py +0 -0
  64. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/gse.py +0 -0
  65. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/kde.py +0 -0
  66. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/recovery.py +0 -0
  67. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/summary.py +0 -0
  68. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/descriptive/tcr.py +0 -0
  69. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/__init__.py +0 -0
  70. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/generank.py +0 -0
  71. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/linreg.py +0 -0
  72. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/moments.py +0 -0
  73. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/optimization.py +0 -0
  74. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/parallel.py +0 -0
  75. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/preprocess.py +0 -0
  76. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/pseudotime.py +0 -0
  77. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/transition.py +0 -0
  78. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/utils.py +0 -0
  79. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/dynamics/velocity.py +0 -0
  80. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/__init__.py +0 -0
  81. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/infergrn.py +0 -0
  82. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/modules.py +0 -0
  83. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/prune.py +0 -0
  84. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/regressors.py +0 -0
  85. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/grn/utils.py +0 -0
  86. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/image/__init__.py +0 -0
  87. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/image/align.py +0 -0
  88. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/__init__.py +0 -0
  89. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/aggregate.py +0 -0
  90. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/method.py +0 -0
  91. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/__init__.py +0 -0
  92. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/cellchat.py +0 -0
  93. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/cellphonedb.py +0 -0
  94. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/connectome.py +0 -0
  95. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/geomean.py +0 -0
  96. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/logfc.py +0 -0
  97. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/natmi.py +0 -0
  98. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/rank_aggregate.py +0 -0
  99. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/scseqcomm.py +0 -0
  100. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/methods/singlecellsignalr.py +0 -0
  101. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/pipeline.py +0 -0
  102. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/preprocess.py +0 -0
  103. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/resources.py +0 -0
  104. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/lr/utils.py +0 -0
  105. {exprmat-0.1.34/exprmat/preprocessing/doublets → exprmat-0.1.36/exprmat/peaks}/__init__.py +0 -0
  106. {exprmat-0.1.34/exprmat/preprocessing/impute → exprmat-0.1.36/exprmat/peaks/idr}/__init__.py +0 -0
  107. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/__init__.py +0 -0
  108. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/atac.py +0 -0
  109. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/cnmf.py +0 -0
  110. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/cnv.py +0 -0
  111. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/de.py +0 -0
  112. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/gse.py +0 -0
  113. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/lr.py +0 -0
  114. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/palettes.py +0 -0
  115. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/sankey.py +0 -0
  116. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/summary.py +0 -0
  117. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/utils.py +0 -0
  118. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/plotting/velocity.py +0 -0
  119. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/__init__.py +0 -0
  120. {exprmat-0.1.34/exprmat/preprocessing/sctransform → exprmat-0.1.36/exprmat/preprocessing/doublets}/__init__.py +0 -0
  121. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/doublets/composite.py +0 -0
  122. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/doublets/scrublet.py +0 -0
  123. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/emptydrops.py +0 -0
  124. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/filter.py +0 -0
  125. {exprmat-0.1.34/exprmat/transfer → exprmat-0.1.36/exprmat/preprocessing/impute}/__init__.py +0 -0
  126. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/impute/magic.py +0 -0
  127. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/integrate.py +0 -0
  128. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/linear.py +0 -0
  129. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/normal.py +0 -0
  130. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/plot.py +0 -0
  131. /exprmat-0.1.34/license → /exprmat-0.1.36/exprmat/preprocessing/sctransform/__init__.py +0 -0
  132. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/sctransform/estimate.py +0 -0
  133. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/sctransform/ksmooth.py +0 -0
  134. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/sctransform/residual.py +0 -0
  135. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/sctransform/transform.py +0 -0
  136. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/sparse.py +0 -0
  137. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/preprocessing/uniform.py +0 -0
  138. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/__init__.py +0 -0
  139. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reader/peaks.py +0 -0
  140. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/__init__.py +0 -0
  141. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/forceatlas.py +0 -0
  142. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/mde.py +0 -0
  143. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/nn.py +0 -0
  144. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/outliers.py +0 -0
  145. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/pca.py +0 -0
  146. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/spectral.py +0 -0
  147. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/tsne.py +0 -0
  148. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/reduction/umap.py +0 -0
  149. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/trajectory/pcurve.py +0 -0
  150. {exprmat-0.1.34 → exprmat-0.1.36}/exprmat/transfer/atlas.py +0 -0
  151. {exprmat-0.1.34 → exprmat-0.1.36}/readme.md +0 -0
  152. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/Cargo.toml +0 -0
  153. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/license +0 -0
  154. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/readme +0 -0
  155. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/call_peaks.rs +0 -0
  156. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/embedding.rs +0 -0
  157. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/export.rs +0 -0
  158. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/knn.rs +0 -0
  159. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/lib.rs +0 -0
  160. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/motif.rs +0 -0
  161. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/network.rs +0 -0
  162. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/preprocessing.rs +0 -0
  163. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/utils/anndata.rs +0 -0
  164. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2/src/utils.rs +0 -0
  165. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/Cargo.toml +0 -0
  166. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/embedding.rs +0 -0
  167. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/export.rs +0 -0
  168. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/feature_count/counter.rs +0 -0
  169. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/feature_count/data_iter.rs +0 -0
  170. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/feature_count/matrix.rs +0 -0
  171. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/feature_count/mod.rs +0 -0
  172. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/genome.rs +0 -0
  173. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/lib.rs +0 -0
  174. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/motif.rs +0 -0
  175. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/network.rs +0 -0
  176. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/bam/flagstat.rs +0 -0
  177. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/bam/header.rs +0 -0
  178. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/bam/mark_duplicates.rs +0 -0
  179. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/bam.rs +0 -0
  180. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/import.rs +0 -0
  181. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/mod.rs +0 -0
  182. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/preprocessing/qc.rs +0 -0
  183. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/utils/knn.rs +0 -0
  184. {exprmat-0.1.34 → exprmat-0.1.36}/snapatac2-core/src/utils/mod.rs +0 -0
  185. {exprmat-0.1.34 → exprmat-0.1.36}/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.34
3
+ Version: 0.1.36
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -16,8 +16,8 @@ Requires-Dist: igraph>=0.10.3
16
16
  Requires-Dist: pyarrow
17
17
  Requires-Dist: pyfaidx>=0.7.0,<0.8.0
18
18
  Requires-Dist: rustworkx
19
- Requires-Dist: scipy>=1.4,<2.0.0
20
- Requires-Dist: scikit-learn>=1.0,<2.0.0
19
+ Requires-Dist: scipy>=1.11,<2.0.0
20
+ Requires-Dist: scikit-learn>=1.1,<2.0.0
21
21
  Requires-Dist: tqdm>=4.62
22
22
  Requires-Dist: typeguard>=4.0
23
23
  Requires-Dist: umap-learn>=0.5.0
@@ -55,6 +55,7 @@ Requires-Dist: hdbscan
55
55
  Requires-Dist: graphtools
56
56
  Requires-Dist: bincsync>=0.3.0
57
57
  Requires-Dist: pybigwig
58
+ Requires-Dist: pybedgraph
58
59
  Requires-Dist: loompy
59
60
  Requires-Dist: squidpy
60
61
  Requires-Dist: zarr
@@ -63,6 +64,16 @@ Requires-Dist: scikit-image
63
64
  Requires-Dist: spatial-image
64
65
  Requires-Dist: multiscale-spatial-image
65
66
  Requires-Dist: tangram-sc
67
+ Requires-Dist: shapely>=2.0.0
68
+ Requires-Dist: pyogrio>=0.7.2
69
+ Requires-Dist: pyproj>=3.3.0
70
+ Requires-Dist: geopandas
71
+ Requires-Dist: packaging
72
+ Requires-Dist: lightmotif
73
+ Requires-Dist: pymemesuite
74
+ Requires-Dist: formulaic>=1.0.2
75
+ Requires-Dist: formulaic-contrasts>=0.2.0
76
+ Requires-Dist: cython
66
77
  Requires-Dist: sphinx ; extra == 'dev'
67
78
  Requires-Dist: twine ; extra == 'dev'
68
79
  Requires-Dist: ipykernel ; extra == 'dev'
@@ -70,9 +81,7 @@ Requires-Dist: ipytree ; extra == 'dev'
70
81
  Provides-Extra: dev
71
82
  License-File: license
72
83
  Summary: exprmat: Routines for expression matrices
73
- Author: Kai Zhang <kai@kzhang.org>
74
84
  Author-email: Zheng Yang <xornent@outlook.com>
75
- License: MIT
76
85
  Requires-Python: >=3.9, <3.13
77
86
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
78
87
  Project-URL: Repository, https://github.com/yang-z-03/exprmat
@@ -10,15 +10,60 @@ import anndata as ad
10
10
  import scanpy as sc
11
11
  import pandas as pd
12
12
  import pathlib
13
+ from PIL import Image
14
+
15
+ # build cython package
16
+
17
+ try: import exprmat.peaks.idr.invcdf
18
+ except ImportError:
19
+
20
+ from exprmat.ansi import info
21
+ info('seems to be your first use of exprmat. the C modules are not compiled yet.')
22
+ info('compiling cython extension modules ...')
23
+
24
+ from distutils.core import setup
25
+ from distutils.extension import Extension
26
+ from Cython.Distutils import build_ext
27
+ from Cython.Build import cythonize
28
+ import numpy
29
+ import sys
30
+
31
+ # change to the project source directory
32
+ # thus we can build the extension in the source directory.
33
+ sys.argv = ['', 'build_ext', '--inplace']
34
+ cwd = os.getcwd()
35
+ os.chdir(os.path.dirname(__file__))
36
+ info(f'entering working directory: {os.getcwd()}')
37
+
38
+ extensions = [
39
+ Extension(
40
+ 'peaks.idr.invcdf',
41
+ [__file__.replace('__init__.py', os.path.join('peaks', 'idr', 'invcdf.pyx'))],
42
+ include_dirs = [numpy.get_include()],
43
+ define_macros = [('NPY_NO_DEPRECATED_API', 'NPY_1_7_API_VERSION')]
44
+ )
45
+ ]
46
+
47
+ setup(
48
+ name = 'peaks.idr.invcdf',
49
+ cmdclass = { 'build_ext': build_ext },
50
+ ext_modules = cythonize(extensions, language_level = 3, quiet = True)
51
+ )
52
+
53
+ os.chdir(cwd)
54
+ # remove the autogenerated build directory. since we compile inplace.
55
+ os.system(f'rm -r {os.path.join(os.path.dirname(__file__), "build")}')
56
+ info('compilation finished.')
57
+
13
58
 
14
59
  from exprmat.configuration import default as config
15
60
  from exprmat.ansi import warning, info
16
61
 
17
62
  mu.set_options(pull_on_update = False)
18
-
63
+ Image.MAX_IMAGE_PIXELS = config['max.image']
19
64
 
20
65
  DATABASE_SETUP_MESSAGE = """
21
- The exprmat package do not come with a included database after version 0.1.25,
66
+ The exprmat package do not come with an included database after version 0.1.25,
22
67
  due to the extensive size of the reference data. You need to setup the database
23
68
  and configure it properly with configuration file `.exprmatrc` under your
24
69
  user root or current working directory
@@ -38,9 +83,11 @@ default_finders = [
38
83
  os.path.join(str(pathlib.Path.home()), '.exprmatrc')
39
84
  ]
40
85
 
86
+ DEFAULT_CONFIG = '[internals]'
41
87
  for finder in default_finders:
42
88
  if os.path.exists(finder):
43
- info(f'load configuration from {finder}')
89
+ DEFAULT_CONFIG = finder
90
+ if False: info(f'load configuration from {finder}')
44
91
  with open(finder, 'r') as f:
45
92
  import json
46
93
  workspace_config = json.load(f)
@@ -93,6 +140,7 @@ def version():
93
140
  MAJOR, MINOR, REVISION = [int(x) for x in ver_string.split('.')]
94
141
  info(f'exprmat {MAJOR}.{MINOR}.{REVISION} / exprmat-db {db_ver if db_ver is not None else "(Not installed)"}')
95
142
  info(f'os: {os.name} ({sys.platform}) platform version: {platform.release()}')
143
+ info(f'loaded configuration from {finder}')
96
144
  info(f'current working directory: {os.getcwd()}')
97
145
  info(f'current database directory: {config["data"]} ({db_ver if db_ver is not None else "(Not found)"})')
98
146
  memory()
@@ -38,6 +38,8 @@ class Configuration:
38
38
  'hsa': 'grch38'
39
39
  }
40
40
 
41
+ self.config['max.image'] = int(10000 * 50000)
42
+
41
43
 
42
44
  def __getitem__(self, index):
43
45
  return self.config[index]
@@ -75,6 +75,43 @@ def get_genome_model(assembly):
75
75
  return pandas.read_feather(path)
76
76
 
77
77
 
78
+ def get_genome_ranges(assembly, fname, as_grange = False):
79
+
80
+ taxa = cfg['taxa.reference'][assembly.lower()]
81
+ path = os.path.join(basepath, taxa, 'assemblies', assembly.lower(), f'{fname}.feather')
82
+ feather = pandas.read_feather(path)
83
+
84
+ if as_grange:
85
+ import genomicranges
86
+ return genomicranges.GenomicRanges.from_pandas(
87
+ feather[['ucsc', 'start', 'end', 'strand', 'gene']].rename(
88
+ columns = {'ucsc': 'seqnames', 'start': 'starts', 'end': 'ends'}
89
+ ))
90
+ else: return feather
91
+
92
+
93
+ def get_genome_first_exonic(assembly, as_grange = False):
94
+ return get_genome_ranges(assembly, 'first-exonic', as_grange = as_grange)
95
+
96
+ def get_genome_other_exonic(assembly, as_grange = False):
97
+ return get_genome_ranges(assembly, 'other-exonic', as_grange = as_grange)
98
+
99
+ def get_genome_first_intronic(assembly, as_grange = False):
100
+ return get_genome_ranges(assembly, 'first-intronic', as_grange = as_grange)
101
+
102
+ def get_genome_transcript(assembly, as_grange = False):
103
+ return get_genome_ranges(assembly, 'genebody', as_grange = as_grange)
104
+
105
+ def get_genome_promoters(assembly, as_grange = False):
106
+ return get_genome_ranges(assembly, 'promoters', as_grange = as_grange)
107
+
108
+ def get_genome_utr3(assembly, as_grange = False):
109
+ return get_genome_ranges(assembly, 'utr3', as_grange = as_grange)
110
+
111
+ def get_genome_utr5(assembly, as_grange = False):
112
+ return get_genome_ranges(assembly, 'utr5', as_grange = as_grange)
113
+
114
+
78
115
  def get_mapper_name(taxa):
79
116
  '''
80
117
  Return a name mapper mapping from gene names to universal gene id across species.