







[](https://doi.org/10.5281/zenodo.14678661)
[](https://stminerdoc.readthedocs.io/en/latest/?badge=latest)


<div align=center><img src="./pic/logo.png" height = "200"/></div>
<p align="center">
<a href="https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html">π Documents</a> | <a href="https://stminerdoc.readthedocs.io/en/latest/Tutorial/Tutorial.html">π Tutorial</a> | <a href="https://x.com/Sun_python">π¬ Contact me</a>
</p>
# π©βπ« Introduction
## Why STMiner?
ST data presents challenges such as uneven cell density distribution, low sampling rates, and complex spatial structures. Traditional spot-based analysis strategies struggle to effectively address these issues. STMiner explores ST data by leveraging the spatial distribution of genes, thus avoiding the biases that these conditions can introduce into the results.<br>
Most importantly, STMiner offers **seamless integration with** [**Anndata**](https://github.com/scverse/anndata)/[**Scanpy**](https://github.com/scverse/scanpy) and can be **easily installed** via [PyPI](https://pypi.org/project/STMiner/).<br>
<div align=center><img src="./pic/why.png" height = "500"/></div>
## Method detail
Here we propose β**STMiner**β. The three key steps of analyzing ST data in STMiner are depicted.
<div align=center><img src="./pic/fig1.png" height = "400"/></div>
(**Left top**) STMiner first utilizes Gaussian Mixture Models (GMMs) to represent the spatial distribution of each gene and the overall spatial distribution. (**Left bottom**) STMiner then identifies spatially variable genes by calculating the cost that transfers the overall spatial distribution to gene spatial distribution. Genes with high costs exhibit significant spatial variation, meaning their expression patterns differ considerably across different regions of the tissue. The distance array is built between SVGs in the same way, genes with similar spatial structures have a low cost to transport to each other, and vice versa. (**Right**) The distance array is embedded into a low-dimensional space by Multidimensional Scaling, allowing for clustering genes with similar spatial expression patterns into distinct functional gene sets and getting their spatial structure.
# π Quick start by example
**Please visit [STMiner Documents](https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html) for installation and detail usage.**
## import package
```python
from STMiner import SPFinder
```
## Load data
You can download them from [STMiner-test-data](https://github.com/PSSUN/STMiner-test-data). You can also download the raw dataset from [GEO](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM4838133), STMiner can read spatial transcriptome data in various formats, such as **gem**, **bmk**, and **h5ad** (see [STMiner Documents](https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html)).
We recommend using the **h5ad** format, as it is currently the most widely used and supported by most algorithms and software in the spatial transcriptomics field.
```python
sp = SPFinder()
file_path = 'Path/to/your/h5ad/file'
sp.read_h5ad(file=file_path, bin_size=1)
```
## Find spatial high variable genes
```python
sp.get_genes_csr_array(min_cells=200, log1p=False, vmax=100)
sp.spatial_high_variable_genes()
```
- The parameter **min_cells** was used to filter genes that are too sparse to generate a reliable spatial distribution.
- The parameter **log1p** was used to avoid extreme values affecting the results. For most open-source h5ad files, log1p has already been executed, so the default value here is False.
- You can perform STMiner in your interested gene sets. Use parameter **gene_list** to input the gene list to STMiner. Then, STMiner will only calculate the given gene set of the dataset.
You can check the distance of each gene by:
```python
sp.global_distance
```
| Gene | Distance | z-score |
| ---------- | -------- | -------- |
| myha | 1.35E+08 | 2.771493 |
| vmhcl | 1.01E+08 | 2.470881 |
| zgc:101560 | 9.95E+07 | 2.458787 |
| pvalb1 | 9.82E+07 | 2.445257 |
| myhz2 | 9.75E+07 | 2.437787 |
| ... | ... | ... |
| rps17 | 2.61E+05 | -3.63207 |
| rpl13 | 2.48E+05 | -3.68506 |
| rpl32 | 2.43E+05 | -3.70327 |
| rsl24d1 | 2.27E+05 | -3.7757 |
| rpl22 | 1.83E+05 | -3.99332 |
The 'Gene' column is the gene name, and the 'Distance' column is the difference between the spatial distribution of the gene and the background.</br>
A larger difference indicates a more pronounced spatial pattern of the gene.
## Preprocess and Fit GMM
```python
sp.fit_pattern(n_comp=20, gene_list=list(sp.global_distance[:2000]['Gene']))
```
**n_comp=20** means each GMM model has 20 components.
## Build distance matrix & clustering
```python
# This step calculates the distance between genes' spatial distributions.
sp.build_distance_array()
# Dimensionality reduction and clustering.
sp.cluster_gene(n_clusters=6, mds_components=20)
```
## Result & Visualization
The result is stored in **genes_labels**:
```python
sp.genes_labels
```
The output looks like the following:
| | gene_id | labels |
| --- | -------------- | ------ |
| 0 | Cldn5 | 2 |
| 1 | Fyco1 | 2 |
| 2 | Pmepa1 | 2 |
| 3 | Arhgap5 | 0 |
| 4 | Apc | 5 |
| .. | ... | ... |
| 95 | Cyp2a5 | 0 |
| 96 | X5730403I07Rik | 0 |
| 97 | Ltbp2 | 2 |
| 98 | Rbp4 | 4 |
| 99 | Hist1h1e | 4 |
### Visualize the distance array:
```python
import seaborn as sns
sns.clustermap(sp.genes_distance_array)
```
<div align=center><img src="./pic/heatmap.png" width = "400"/></div>
### Finding gene sets with interested structure
Get patterns of interested gene/gene set:
```python
interested_genes = ["mbpa", "BX957331.1", "madd"]
sp.get_pattern_of_given_genes(gene_list = interested_genes)
```
Compare the distance between all genes and the given gene set
```python
from STMiner.Algorithm.distance import compare_gmm_distance
df = compare_gmm_distance(sp.custom_pattern, sp.patterns)
df.to_csv('compare_distance.csv')
df
```
| Gene | distance |
| ----------------- | ------------------ |
| mbpa | 0.8914643122002152 |
| map1ab | 0.9479574709875033 |
| snap25a | 0.9801858512442632 |
| nsfa | 0.9948239449738531 |
| stxbp1a | 0.99916307128497 |
| ... | ... |
| lrrfip1b | 1.9981586323013931 |
| si:ch211-145h19.2 | 1.9995115533927301 |
| BX248122.1 | 1.9996375745511945 |
| si:dkey-7i4.24 | 1.9997052371268462 |
A lower distance indicates that the spatial expression pattern of the gene is more similar to that of the gene set of interest.
### To visualize the patterns:
**Note**: A image path for ***image_path*** is needed if you want to show background image. In this example, you can download the processed image [here](https://github.com/xjtu-omics/STMiner/blob/main/pic/demo_img.png). Anyway, ***image_path*** is **optional**, not providing background images has no impact on the calculation results.
```python
sp.get_pattern_array(vote_rate=0.3)
img_path = 'path/to/downloaded/image'
sp.plot.plot_pattern(vmax=99,
heatmap=False,
s=10,
reverse_y=True, # optional
reverse_x=True, # optional
image_path=img_path, # optional
rotate_img=True, # optional
k=4, # optional
aspect=0.55 # optional
)
```
<div align="center">
<img src="./pic/scatterplot.png" width = "400" align=center />
</div>
### Visualize the intersections between patterns 3 & 1:
```python
sp.plot.plot_intersection(pattern_list=[0, 1],
image_path=img_path,
reverse_y=True,
reverse_x=True,
aspect=0.55,
s=20)
```
<div align="center">
<img src="./pic/scatterplot_mx.png" width = "200" align=center />
</div>
### To visualize the gene expression by labels:
```python
sp.plot.plot_genes(label=0, vmax=99)
```
## Attributes of STMiner.SPFinder Object
| Attributes | Type | Description |
| -------------------- | ------------- | -------------------------------------- |
| adata | Anndata | Anndata for loaded spatial data |
| patterns | dict | Spatial distributions pattern of genes |
| genes_patterns | dict | GMM model for each gene |
| global_distance | pd. DataFrame | Distances between genes and background |
| mds_features | array | embedding features of genes |
| genes_distance_array | pd. DataFrame | Distance between each GMM |
| genes_labels | pd. DataFrame | Gene name and their pattern labels |
| plot | Object | Call plot to visualization |
# π Release history
| Version | Date | Description |
| ------- | --------- | --------------------------------------------- |
| 0.0.7 | 2025/2/21 | improved performance of *get_pattern_array()* |
pypi: https://pypi.org/project/STMiner/#history
# π Referance
[1] Sun, P., Bush, S. J., Wang, S., Jia, P., Li, M., Xu, T., Zhang, P., Yang, X., Wang, C., Xu, L., Wang, T., & Ye, K. (2025). STMiner: Gene-centric spatial transcriptomics for deciphering tumor tissues. Cell Genomics, 5(2). https://doi.org/10.1016/j.xgen.2025.100771
# βοΈ Contact
If you encounter any issues during use, please try updating STMiner to the latest version. If the issue persists, feel free to submit your problem on the issue page or contact us through the following methods:
- Peisen Sun: π§(sunpeisen@stu.xjtu.edu.cn) / π(https://x.com/Sun_python)
- Kai Ye: π§(kaiye@xjtu.edu.cn)
<br>
<div align=center >
<p> <b>Please βStar STMiner on Github if you find it's useful, thank you!</b></p>
</div>
<img src="./pic/footer.svg" width="100%">
Raw data
{
"_id": null,
"home_page": "https://github.com/xjtu-omics/STMiner",
"name": "STMiner",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "STMiner, bioinformatics, GMM, Hellinger distance, Spatial transcriptomics",
"author": "Peisen Sun",
"author_email": "sunpeisen@stu.xjtu.edu.cn",
"download_url": "https://files.pythonhosted.org/packages/15/16/18955c3413c29aa4f56f86e8ca3e3ee5807d707e5abc414ca96cd4445a4f/STMiner-0.0.8.tar.gz",
"platform": "Linux",
"description": "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n[](https://doi.org/10.5281/zenodo.14678661)\r\n[](https://stminerdoc.readthedocs.io/en/latest/?badge=latest) \r\n\r\n\r\n\r\n<div align=center><img src=\"./pic/logo.png\" height = \"200\"/></div>\r\n<p align=\"center\">\r\n <a href=\"https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html\">\ud83d\udcd6 Documents</a> | <a href=\"https://stminerdoc.readthedocs.io/en/latest/Tutorial/Tutorial.html\">\ud83d\ude80 Tutorial</a> | <a href=\"https://x.com/Sun_python\">\ud83d\udcac Contact me</a>\r\n</p>\r\n\r\n# \ud83d\udc69\u200d\ud83c\udfeb Introduction\r\n## Why STMiner?\r\n\r\nST data presents challenges such as uneven cell density distribution, low sampling rates, and complex spatial structures. Traditional spot-based analysis strategies struggle to effectively address these issues. STMiner explores ST data by leveraging the spatial distribution of genes, thus avoiding the biases that these conditions can introduce into the results.<br>\r\n\r\nMost importantly, STMiner offers **seamless integration with** [**Anndata**](https://github.com/scverse/anndata)/[**Scanpy**](https://github.com/scverse/scanpy) and can be **easily installed** via [PyPI](https://pypi.org/project/STMiner/).<br>\r\n\r\n<div align=center><img src=\"./pic/why.png\" height = \"500\"/></div>\r\n\r\n## Method detail\r\nHere we propose \u201c**STMiner**\u201d. The three key steps of analyzing ST data in STMiner are depicted. \r\n\r\n<div align=center><img src=\"./pic/fig1.png\" height = \"400\"/></div>\r\n\r\n(**Left top**) STMiner first utilizes Gaussian Mixture Models (GMMs) to represent the spatial distribution of each gene and the overall spatial distribution. (**Left bottom**) STMiner then identifies spatially variable genes by calculating the cost that transfers the overall spatial distribution to gene spatial distribution. Genes with high costs exhibit significant spatial variation, meaning their expression patterns differ considerably across different regions of the tissue. The distance array is built between SVGs in the same way, genes with similar spatial structures have a low cost to transport to each other, and vice versa. (**Right**) The distance array is embedded into a low-dimensional space by Multidimensional Scaling, allowing for clustering genes with similar spatial expression patterns into distinct functional gene sets and getting their spatial structure. \r\n\r\n# \ud83d\ude80 Quick start by example\r\n**Please visit [STMiner Documents](https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html) for installation and detail usage.**\r\n\r\n## import package\r\n\r\n```python\r\nfrom STMiner import SPFinder\r\n```\r\n\r\n## Load data\r\nYou can download them from [STMiner-test-data](https://github.com/PSSUN/STMiner-test-data). You can also download the raw dataset from [GEO](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM4838133), STMiner can read spatial transcriptome data in various formats, such as **gem**, **bmk**, and **h5ad** (see [STMiner Documents](https://stminerdoc.readthedocs.io/en/latest/Introduction/Introduction.html)). \r\nWe recommend using the **h5ad** format, as it is currently the most widely used and supported by most algorithms and software in the spatial transcriptomics field.\r\n\r\n```python\r\nsp = SPFinder()\r\nfile_path = 'Path/to/your/h5ad/file'\r\nsp.read_h5ad(file=file_path, bin_size=1)\r\n```\r\n## Find spatial high variable genes\r\n\r\n```python\r\nsp.get_genes_csr_array(min_cells=200, log1p=False, vmax=100)\r\nsp.spatial_high_variable_genes()\r\n```\r\n - The parameter **min_cells** was used to filter genes that are too sparse to generate a reliable spatial distribution.\r\n - The parameter **log1p** was used to avoid extreme values affecting the results. For most open-source h5ad files, log1p has already been executed, so the default value here is False.\r\n - You can perform STMiner in your interested gene sets. Use parameter **gene_list** to input the gene list to STMiner. Then, STMiner will only calculate the given gene set of the dataset.\r\n\r\nYou can check the distance of each gene by:\r\n\r\n```python\r\nsp.global_distance\r\n```\r\n\r\n| Gene | Distance | z-score |\r\n| ---------- | -------- | -------- |\r\n| myha | 1.35E+08 | 2.771493 |\r\n| vmhcl | 1.01E+08 | 2.470881 |\r\n| zgc:101560 | 9.95E+07 | 2.458787 |\r\n| pvalb1 | 9.82E+07 | 2.445257 |\r\n| myhz2 | 9.75E+07 | 2.437787 |\r\n| ... | ... | ... |\r\n| rps17 | 2.61E+05 | -3.63207 |\r\n| rpl13 | 2.48E+05 | -3.68506 |\r\n| rpl32 | 2.43E+05 | -3.70327 |\r\n| rsl24d1 | 2.27E+05 | -3.7757 |\r\n| rpl22 | 1.83E+05 | -3.99332 |\r\n\r\n\r\n\r\nThe 'Gene' column is the gene name, and the 'Distance' column is the difference between the spatial distribution of the gene and the background.</br>\r\nA larger difference indicates a more pronounced spatial pattern of the gene.\r\n\r\n## Preprocess and Fit GMM\r\n\r\n```python\r\nsp.fit_pattern(n_comp=20, gene_list=list(sp.global_distance[:2000]['Gene']))\r\n```\r\n\r\n**n_comp=20** means each GMM model has 20 components.\r\n\r\n## Build distance matrix & clustering\r\n\r\n```python\r\n# This step calculates the distance between genes' spatial distributions.\r\nsp.build_distance_array()\r\n# Dimensionality reduction and clustering.\r\nsp.cluster_gene(n_clusters=6, mds_components=20) \r\n```\r\n\r\n## Result & Visualization\r\n\r\nThe result is stored in **genes_labels**:\r\n\r\n```python\r\nsp.genes_labels\r\n```\r\n\r\nThe output looks like the following:\r\n\r\n| | gene_id | labels |\r\n| --- | -------------- | ------ |\r\n| 0 | Cldn5 | 2 |\r\n| 1 | Fyco1 | 2 |\r\n| 2 | Pmepa1 | 2 |\r\n| 3 | Arhgap5 | 0 |\r\n| 4 | Apc | 5 |\r\n| .. | ... | ... |\r\n| 95 | Cyp2a5 | 0 |\r\n| 96 | X5730403I07Rik | 0 |\r\n| 97 | Ltbp2 | 2 |\r\n| 98 | Rbp4 | 4 |\r\n| 99 | Hist1h1e | 4 |\r\n\r\n### Visualize the distance array:\r\n\r\n```python\r\nimport seaborn as sns\r\nsns.clustermap(sp.genes_distance_array)\r\n```\r\n<div align=center><img src=\"./pic/heatmap.png\" width = \"400\"/></div>\r\n\r\n### Finding gene sets with interested structure\r\nGet patterns of interested gene/gene set:\r\n\r\n```python\r\ninterested_genes = [\"mbpa\", \"BX957331.1\", \"madd\"]\r\nsp.get_pattern_of_given_genes(gene_list = interested_genes)\r\n```\r\nCompare the distance between all genes and the given gene set\r\n\r\n```python\r\nfrom STMiner.Algorithm.distance import compare_gmm_distance\r\ndf = compare_gmm_distance(sp.custom_pattern, sp.patterns)\r\ndf.to_csv('compare_distance.csv')\r\ndf\r\n```\r\n\r\n| Gene | distance |\r\n| ----------------- | ------------------ |\r\n| mbpa | 0.8914643122002152 |\r\n| map1ab | 0.9479574709875033 |\r\n| snap25a | 0.9801858512442632 |\r\n| nsfa | 0.9948239449738531 |\r\n| stxbp1a | 0.99916307128497 |\r\n| ... | ... |\r\n| lrrfip1b | 1.9981586323013931 |\r\n| si:ch211-145h19.2 | 1.9995115533927301 |\r\n| BX248122.1 | 1.9996375745511945 |\r\n| si:dkey-7i4.24 | 1.9997052371268462 |\r\n\r\nA lower distance indicates that the spatial expression pattern of the gene is more similar to that of the gene set of interest. \r\n\r\n### To visualize the patterns:\r\n**Note**: A image path for ***image_path*** is needed if you want to show background image. In this example, you can download the processed image [here](https://github.com/xjtu-omics/STMiner/blob/main/pic/demo_img.png). Anyway, ***image_path*** is **optional**, not providing background images has no impact on the calculation results.\r\n\r\n```python\r\nsp.get_pattern_array(vote_rate=0.3)\r\nimg_path = 'path/to/downloaded/image'\r\nsp.plot.plot_pattern(vmax=99,\r\n heatmap=False, \r\n s=10, \r\n reverse_y=True, # optional\r\n reverse_x=True, # optional\r\n image_path=img_path, # optional\r\n rotate_img=True, # optional\r\n k=4, # optional\r\n aspect=0.55 # optional\r\n )\r\n```\r\n\r\n<div align=\"center\"> \r\n <img src=\"./pic/scatterplot.png\" width = \"400\" align=center />\r\n</div>\r\n\r\n### Visualize the intersections between patterns 3 & 1:\r\n\r\n```python\r\nsp.plot.plot_intersection(pattern_list=[0, 1],\r\n image_path=img_path,\r\n reverse_y=True,\r\n reverse_x=True,\r\n aspect=0.55,\r\n s=20)\r\n```\r\n\r\n<div align=\"center\"> \r\n <img src=\"./pic/scatterplot_mx.png\" width = \"200\" align=center />\r\n</div>\r\n\r\n### To visualize the gene expression by labels:\r\n\r\n```python\r\nsp.plot.plot_genes(label=0, vmax=99)\r\n```\r\n\r\n## Attributes of STMiner.SPFinder Object\r\n\r\n| Attributes | Type | Description |\r\n| -------------------- | ------------- | -------------------------------------- |\r\n| adata | Anndata | Anndata for loaded spatial data |\r\n| patterns | dict | Spatial distributions pattern of genes |\r\n| genes_patterns | dict | GMM model for each gene |\r\n| global_distance | pd. DataFrame | Distances between genes and background |\r\n| mds_features | array | embedding features of genes |\r\n| genes_distance_array | pd. DataFrame | Distance between each GMM |\r\n| genes_labels | pd. DataFrame | Gene name and their pattern labels |\r\n| plot | Object | Call plot to visualization |\r\n\r\n# \ud83d\udcdc Release history\r\n| Version | Date | Description |\r\n| ------- | --------- | --------------------------------------------- |\r\n| 0.0.7 | 2025/2/21 | improved performance of *get_pattern_array()* |\r\n\r\npypi: https://pypi.org/project/STMiner/#history\r\n\r\n# \ud83d\udd16 Referance\r\n[1] Sun, P., Bush, S. J., Wang, S., Jia, P., Li, M., Xu, T., Zhang, P., Yang, X., Wang, C., Xu, L., Wang, T., & Ye, K. (2025). STMiner: Gene-centric spatial transcriptomics for deciphering tumor tissues. Cell Genomics, 5(2). https://doi.org/10.1016/j.xgen.2025.100771 \r\n\r\n# \u2709\ufe0f Contact\r\nIf you encounter any issues during use, please try updating STMiner to the latest version. If the issue persists, feel free to submit your problem on the issue page or contact us through the following methods:\r\n\r\n - Peisen Sun: \ud83d\udce7(sunpeisen@stu.xjtu.edu.cn) / \ud835\udd4f(https://x.com/Sun_python)\r\n - Kai Ye: \ud83d\udce7(kaiye@xjtu.edu.cn)\r\n\r\n<br>\r\n<div align=center >\r\n <p> <b>Please \u2b50Star STMiner on Github if you find it's useful, thank you!</b></p>\r\n</div>\r\n\r\n<img src=\"./pic/footer.svg\" width=\"100%\">\r\n",
"bugtrack_url": null,
"license": "GPL-3.0 license",
"summary": "Python package for spatial transcriptomics data analysis",
"version": "0.0.8",
"project_urls": {
"Homepage": "https://github.com/xjtu-omics/STMiner"
},
"split_keywords": [
"stminer",
" bioinformatics",
" gmm",
" hellinger distance",
" spatial transcriptomics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "42ce70f79d8a5f9ac10362373cbaa07fe1c549c008edc3f2b9c257f9b3a86e58",
"md5": "fbb1c0524a175b2eb2bede9509b74099",
"sha256": "cce4dd28f055d11580e71fe9b5e09e484f53b7149adcf3fa0da3d79ebe5bf30f"
},
"downloads": -1,
"filename": "STMiner-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fbb1c0524a175b2eb2bede9509b74099",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 49030,
"upload_time": "2025-02-22T16:26:15",
"upload_time_iso_8601": "2025-02-22T16:26:15.036089Z",
"url": "https://files.pythonhosted.org/packages/42/ce/70f79d8a5f9ac10362373cbaa07fe1c549c008edc3f2b9c257f9b3a86e58/STMiner-0.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "151618955c3413c29aa4f56f86e8ca3e3ee5807d707e5abc414ca96cd4445a4f",
"md5": "0a9a6cfcd508073ae0c45e41d8605711",
"sha256": "f5f3580edbc4f08ee0fbe19dd4f5949fc9c548c0cfed9141bea649d82f160a6f"
},
"downloads": -1,
"filename": "STMiner-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "0a9a6cfcd508073ae0c45e41d8605711",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 46370,
"upload_time": "2025-02-22T16:26:16",
"upload_time_iso_8601": "2025-02-22T16:26:16.460481Z",
"url": "https://files.pythonhosted.org/packages/15/16/18955c3413c29aa4f56f86e8ca3e3ee5807d707e5abc414ca96cd4445a4f/STMiner-0.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-22 16:26:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "xjtu-omics",
"github_project": "STMiner",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "anndata",
"specs": [
[
"==",
"0.10.7"
]
]
},
{
"name": "bioservices",
"specs": [
[
"==",
"1.11.2"
]
]
},
{
"name": "matplotlib",
"specs": [
[
"==",
"3.7.2"
]
]
},
{
"name": "networkx",
"specs": [
[
"==",
"3.1"
]
]
},
{
"name": "numba",
"specs": [
[
"==",
"0.57.0"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"1.24.3"
]
]
},
{
"name": "pandas",
"specs": [
[
"==",
"2.0.3"
]
]
},
{
"name": "Pillow",
"specs": [
[
"==",
"10.3.0"
]
]
},
{
"name": "plotly",
"specs": [
[
"==",
"5.9.0"
]
]
},
{
"name": "POT",
"specs": [
[
"==",
"0.9.1"
]
]
},
{
"name": "scanpy",
"specs": [
[
"==",
"1.10.1"
]
]
},
{
"name": "scikit_learn",
"specs": [
[
"==",
"1.3.0"
]
]
},
{
"name": "scipy",
"specs": [
[
"==",
"1.11.1"
]
]
},
{
"name": "seaborn",
"specs": [
[
"==",
"0.13.2"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"68.0.0"
]
]
},
{
"name": "tifffile",
"specs": [
[
"==",
"2021.4.8"
]
]
},
{
"name": "tqdm",
"specs": [
[
"==",
"4.65.0"
]
]
},
{
"name": "umap_learn",
"specs": [
[
"==",
"0.5.3"
]
]
}
],
"lcname": "stminer"
}