gsMap 1.72.3__tar.gz → 1.73.0__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 (89) hide show
  1. gsmap-1.73.0/.coveragerc +41 -0
  2. {gsmap-1.72.3 → gsmap-1.73.0}/.github/workflows/docs.yml +4 -4
  3. {gsmap-1.72.3 → gsmap-1.73.0}/.github/workflows/publish-to-pypi.yml +2 -1
  4. gsmap-1.73.0/.github/workflows/test_linux.yml +88 -0
  5. {gsmap-1.72.3 → gsmap-1.73.0}/.markdownlint.yaml +1 -2
  6. {gsmap-1.72.3 → gsmap-1.73.0}/.pre-commit-config.yaml +0 -2
  7. {gsmap-1.72.3 → gsmap-1.73.0}/LICENSE +6 -6
  8. gsmap-1.73.0/PKG-INFO +169 -0
  9. gsmap-1.73.0/README.md +104 -0
  10. gsmap-1.73.0/codecov.yml +29 -0
  11. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/advanced_usage.md +6 -3
  12. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/conf.py +4 -4
  13. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/data_format.md +20 -15
  14. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/index.rst +1 -1
  15. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/quick_mode.md +7 -3
  16. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/step_by_step.md +9 -5
  17. {gsmap-1.72.3 → gsmap-1.73.0}/pyproject.toml +12 -6
  18. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/__init__.py +1 -1
  19. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/cauchy_combination_test.py +5 -5
  20. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/config.py +141 -21
  21. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/create_slice_mean.py +32 -18
  22. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/find_latent_representation.py +1 -1
  23. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/format_sumstats.py +6 -0
  24. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/generate_ldscore.py +8 -40
  25. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/latent_to_gene.py +42 -14
  26. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/run_all_mode.py +1 -0
  27. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/utils/generate_r2_matrix.py +13 -292
  28. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/utils/regression_read.py +0 -76
  29. gsmap-1.73.0/tests/conftest.py +245 -0
  30. gsmap-1.73.0/tests/test_advanced_usage.py +228 -0
  31. gsmap-1.73.0/tests/test_cli.py +231 -0
  32. gsmap-1.73.0/tests/test_docs_cli_parsing.py +125 -0
  33. gsmap-1.72.3/PKG-INFO +0 -120
  34. gsmap-1.72.3/README.md +0 -61
  35. gsmap-1.72.3/docs/source/charts/cortex/Cortex_151507_Height.json +0 -1
  36. gsmap-1.72.3/docs/source/charts/cortex/Cortex_151507_IQ.json +0 -1
  37. gsmap-1.72.3/docs/source/charts/cortex/Cortex_151507_MCHC.json +0 -1
  38. gsmap-1.72.3/docs/source/charts/cortex/Cortex_151507_SCZ.json +0 -1
  39. gsmap-1.72.3/docs/source/charts/mouse_embryo/E16.5_E1S1_Height.json +0 -1
  40. gsmap-1.72.3/docs/source/charts/mouse_embryo/E16.5_E1S1_IQ.json +0 -1
  41. gsmap-1.72.3/docs/source/charts/mouse_embryo/E16.5_E1S1_MCHC.json +0 -1
  42. gsmap-1.72.3/docs/source/charts/mouse_embryo/E16.5_E1S1_SCZ.json +0 -1
  43. gsmap-1.72.3/docs/source/charts/test.json +0 -16
  44. {gsmap-1.72.3 → gsmap-1.73.0}/.gitignore +0 -0
  45. {gsmap-1.72.3 → gsmap-1.73.0}/docs/Makefile +0 -0
  46. {gsmap-1.72.3 → gsmap-1.73.0}/docs/make.bat +0 -0
  47. {gsmap-1.72.3 → gsmap-1.73.0}/docs/requirements.txt +0 -0
  48. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/_static/schematic.svg +0 -0
  49. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/cauchy_combination.rst +0 -0
  50. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/create_slice_mean.rst +0 -0
  51. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/find_latent_representations.rst +0 -0
  52. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/format_sumstats.rst +0 -0
  53. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/generate_ldscore.rst +0 -0
  54. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/latent_to_gene.rst +0 -0
  55. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/quick_mode.rst +0 -0
  56. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/report.rst +0 -0
  57. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api/spatial_ldsc.rst +0 -0
  58. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/api.rst +0 -0
  59. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/data.rst +0 -0
  60. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/install.rst +0 -0
  61. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/release.rst +0 -0
  62. {gsmap-1.72.3 → gsmap-1.73.0}/docs/source/tutorials.rst +0 -0
  63. {gsmap-1.72.3 → gsmap-1.73.0}/schematic.png +0 -0
  64. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/GNN/__init__.py +0 -0
  65. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/GNN/adjacency_matrix.py +0 -0
  66. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/GNN/model.py +0 -0
  67. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/GNN/train.py +0 -0
  68. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/__main__.py +0 -0
  69. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/diagnosis.py +0 -0
  70. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/main.py +0 -0
  71. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/report.py +0 -0
  72. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/setup.py +0 -0
  73. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/spatial_ldsc_multiple_sumstats.py +0 -0
  74. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/templates/report_template.html +0 -0
  75. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/utils/__init__.py +0 -0
  76. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/utils/jackknife.py +0 -0
  77. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/utils/manhattan_plot.py +0 -0
  78. {gsmap-1.72.3 → gsmap-1.73.0}/src/gsMap/visualize.py +0 -0
  79. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/Makefile +0 -0
  80. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/make.bat +0 -0
  81. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/requirements.txt +0 -0
  82. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/raw1_add_txt.svg +0 -0
  83. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/raw2_add_txt.svg +0 -0
  84. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/raw3_add_txt.svg +0 -0
  85. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/raw4_add_txt.svg +0 -0
  86. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/raw5_add_txt.svg +0 -0
  87. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/_static/schematic.svg +0 -0
  88. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/conf.py +0 -0
  89. {gsmap-1.72.3 → gsmap-1.73.0}/visualization_web_docs/source/index.rst +0 -0
@@ -0,0 +1,41 @@
1
+ [run]
2
+ source = src/gsMap
3
+ omit =
4
+ # Exclude the files you mentioned
5
+ src/gsMap/utils/jackknife.py
6
+ src/gsMap/format_sumstats.py
7
+ # Other files you might want to exclude
8
+ */tests/*
9
+ */__init__.py
10
+ src/gsMap/templates/*
11
+ # Additional excludes
12
+ src/gsMap/__main__.py
13
+ src/gsMap/setup.py
14
+
15
+ [report]
16
+ exclude_lines =
17
+ # Have to re-enable the standard pragma
18
+ pragma: no cover
19
+
20
+ # Don't complain about missing debug-only code
21
+ def __repr__
22
+ if self\.debug
23
+
24
+ # Don't complain if tests don't hit defensive assertion code
25
+ raise NotImplementedError
26
+ raise ValueError
27
+ except ImportError
28
+ except Exception
29
+ except:
30
+
31
+ # Don't complain if non-runnable code isn't run
32
+ if 0:
33
+ if __name__ == .__main__.:
34
+ if False:
35
+
36
+ # Skip pass statements
37
+ pass
38
+
39
+ [paths]
40
+ source =
41
+ src/gsMap
@@ -1,10 +1,10 @@
1
- name: Build and Deploy Documentation
1
+ name: docs
2
2
 
3
3
  on:
4
4
  push:
5
5
  paths:
6
- - 'docs/**'
7
- - 'visualization_web_docs/**'
6
+ - "docs/**"
7
+ - "visualization_web_docs/**"
8
8
 
9
9
  jobs:
10
10
  deploy_docs:
@@ -17,7 +17,7 @@ jobs:
17
17
  - name: Set up Python
18
18
  uses: actions/setup-python@v4
19
19
  with:
20
- python-version: '3.12'
20
+ python-version: "3.12"
21
21
 
22
22
  # --- Build 'docs' documentation ---
23
23
  - name: Install 'docs' dependencies
@@ -37,6 +37,7 @@ jobs:
37
37
  needs:
38
38
  - build
39
39
  runs-on: ubuntu-latest
40
+
40
41
  environment:
41
42
  name: pypi
42
43
  url: https://pypi.org/p/gsMap
@@ -71,7 +72,7 @@ jobs:
71
72
  name: python-package-distributions
72
73
  path: dist/
73
74
  - name: Sign the dists with Sigstore
74
- uses: sigstore/gh-action-sigstore-python@v1.2.3
75
+ uses: sigstore/gh-action-sigstore-python@v3.0.0
75
76
  with:
76
77
  inputs: >-
77
78
  ./dist/*.tar.gz
@@ -0,0 +1,88 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches: [main, "[0-9]+.[0-9]+.x"]
6
+ pull_request:
7
+ schedule:
8
+ - cron: "0 10 * * *" # runs at 10:00 UTC (03:00 PST) every day
9
+ workflow_dispatch:
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ test:
17
+ runs-on: [self-hosted, cpu]
18
+
19
+ defaults:
20
+ run:
21
+ shell: bash -e {0} # -e to fail on error
22
+
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ python: ["3.10", "3.13"]
27
+
28
+ name: Python ${{ matrix.python }} integration
29
+
30
+ env:
31
+ PYTHON: ${{ matrix.python }}
32
+ RUNNER_WORKDIR: ${{ vars.RUNNER_WORKDIR_BASE || '/mnt/workdir' }}/${{ github.repository }}/${{ github.workflow }}-${{ github.run_number }}-${{ matrix.python }}
33
+ TEST_DATA_DIR: /gsmap_test_data
34
+
35
+ steps:
36
+ - name: Create unique workdir
37
+ run: |
38
+ mkdir -p $RUNNER_WORKDIR
39
+ echo "Created workdir: $RUNNER_WORKDIR"
40
+
41
+ - uses: actions/checkout@v4
42
+ # Remove the custom path to let the runner use its default location
43
+
44
+ - name: Set up Python ${{ matrix.python }}
45
+ uses: actions/setup-python@v5
46
+ with:
47
+ python-version: ${{ matrix.python }}
48
+
49
+ - name: Install dependencies
50
+ run: |
51
+ python -m pip install --upgrade pip wheel uv
52
+ python -m uv pip install -e "gsMap[tests] @ ."
53
+
54
+ - name: Run pytest
55
+ env:
56
+ MPLBACKEND: agg
57
+ DISPLAY: :42
58
+ COLUMNS: 120
59
+ run: |
60
+ python -m pytest --cov=src \
61
+ --cov-report=term-missing \
62
+ --cov-report=xml \
63
+ --cov-report=html \
64
+ --cov-config=.coveragerc \
65
+ -v -s --color=yes \
66
+ --run-real-data \
67
+ --work-dir=${{ env.RUNNER_WORKDIR }} \
68
+ --test-data=${{ env.TEST_DATA_DIR }}
69
+
70
+ - uses: codecov/codecov-action@v4
71
+ with:
72
+ token: ${{ secrets.CODECOV_TOKEN }}
73
+ files: ./coverage.xml
74
+ fail_ci_if_error: false
75
+
76
+ - name: Retain test results
77
+ if: always()
78
+ run: |
79
+ cp -r coverage.xml coverage-html/ .coverage $RUNNER_WORKDIR/ || true
80
+ echo "Test results are stored in $RUNNER_WORKDIR"
81
+ # Create a summary file with metadata
82
+ echo "Test run completed at $(date)" > $RUNNER_WORKDIR/test-summary.txt
83
+ echo "Workflow: ${{ github.workflow }}" >> $RUNNER_WORKDIR/test-summary.txt
84
+ echo "Run ID: ${{ github.run_id }}" >> $RUNNER_WORKDIR/test-summary.txt
85
+ echo "Run Number: ${{ github.run_number }}" >> $RUNNER_WORKDIR/test-summary.txt
86
+ echo "Python Version: ${{ matrix.python }}" >> $RUNNER_WORKDIR/test-summary.txt
87
+ echo "Repository: ${{ github.repository }}" >> $RUNNER_WORKDIR/test-summary.txt
88
+ echo "Ref: ${{ github.ref }}" >> $RUNNER_WORKDIR/test-summary.txt
@@ -12,8 +12,7 @@ MD033: false
12
12
  MD041: false
13
13
 
14
14
  # MD013/line-length
15
- MD013:
16
- line_length: 99
15
+ MD013: false
17
16
 
18
17
  # MD024/no-duplicate-heading
19
18
  MD024:
@@ -26,7 +26,6 @@ repos:
26
26
  exclude: |
27
27
  (?x)^(
28
28
  \.github/.*\.md
29
- | docs/.*\.md
30
29
  )$
31
30
 
32
31
  - repo: https://github.com/igorshubovych/markdownlint-cli
@@ -36,7 +35,6 @@ repos:
36
35
  exclude: |
37
36
  (?x)^(
38
37
  \.github/.*\.md
39
- | docs/.*\.md
40
38
  )$
41
39
 
42
40
  - repo: https://github.com/astral-sh/ruff-pre-commit
@@ -1,6 +1,6 @@
1
- The MIT License (MIT)
1
+ MIT License
2
2
 
3
- Copyright (c) 2023 liyang
3
+ Copyright (c) 2025 JianYang-Lab
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
9
  copies of the Software, and to permit persons to whom the Software is
10
10
  furnished to do so, subject to the following conditions:
11
11
 
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
14
 
15
15
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
16
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
17
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
gsmap-1.73.0/PKG-INFO ADDED
@@ -0,0 +1,169 @@
1
+ Metadata-Version: 2.4
2
+ Name: gsMap
3
+ Version: 1.73.0
4
+ Summary: Genetics-informed pathogenic spatial mapping
5
+ Author-email: liyang <songliyang@westlake.edu.cn>, wenhao <chenwenhao@westlake.edu.cn>
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Operating System :: POSIX :: Linux
15
+ License-File: LICENSE
16
+ Requires-Dist: numpy < 2.0.0
17
+ Requires-Dist: pandas
18
+ Requires-Dist: scipy
19
+ Requires-Dist: scikit-learn
20
+ Requires-Dist: matplotlib
21
+ Requires-Dist: seaborn
22
+ Requires-Dist: tqdm
23
+ Requires-Dist: pyyaml
24
+ Requires-Dist: torch
25
+ Requires-Dist: torch-geometric
26
+ Requires-Dist: pyranges
27
+ Requires-Dist: pyfiglet
28
+ Requires-Dist: plotly
29
+ Requires-Dist: kaleido
30
+ Requires-Dist: jinja2
31
+ Requires-Dist: scanpy >=1.8.0
32
+ Requires-Dist: zarr>=2,<3
33
+ Requires-Dist: bitarray >=2.9.2, <3.0.0
34
+ Requires-Dist: pyarrow
35
+ Requires-Dist: scikit-misc
36
+ Requires-Dist: sphinx ; extra == "doc"
37
+ Requires-Dist: sphinx-argparse ; extra == "doc"
38
+ Requires-Dist: sphinx-autobuild ; extra == "doc"
39
+ Requires-Dist: sphinx-autodoc-typehints ; extra == "doc"
40
+ Requires-Dist: sphinx-basic-ng ; extra == "doc"
41
+ Requires-Dist: sphinx-charts ; extra == "doc"
42
+ Requires-Dist: sphinx-copybutton ; extra == "doc"
43
+ Requires-Dist: sphinx_inline_tabs ; extra == "doc"
44
+ Requires-Dist: sphinx-markdown-tables ; extra == "doc"
45
+ Requires-Dist: sphinx-rtd-theme ; extra == "doc"
46
+ Requires-Dist: sphinxcontrib-applehelp ; extra == "doc"
47
+ Requires-Dist: sphinxcontrib-devhelp ; extra == "doc"
48
+ Requires-Dist: sphinxcontrib-htmlhelp ; extra == "doc"
49
+ Requires-Dist: sphinxcontrib-jquery ; extra == "doc"
50
+ Requires-Dist: sphinxcontrib-jsmath ; extra == "doc"
51
+ Requires-Dist: sphinxcontrib-qthelp ; extra == "doc"
52
+ Requires-Dist: sphinxcontrib-serializinghtml ; extra == "doc"
53
+ Requires-Dist: furo ; extra == "doc"
54
+ Requires-Dist: myst-parser ; extra == "doc"
55
+ Requires-Dist: nbsphinx ; extra == "doc"
56
+ Requires-Dist: pytest>=7.0.0 ; extra == "tests"
57
+ Requires-Dist: pytest-cov>=4.0.0 ; extra == "tests"
58
+ Requires-Dist: coverage ; extra == "tests"
59
+ Project-URL: Documentation, https://yanglab.westlake.edu.cn/gsmap/document/software
60
+ Project-URL: Home, https://github.com/JianYang-Lab/gsMap
61
+ Project-URL: Website, https://yanglab.westlake.edu.cn/gsmap/home
62
+ Provides-Extra: doc
63
+ Provides-Extra: tests
64
+
65
+ # gsMap
66
+
67
+ | | | | |
68
+ | ------------- | ---------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------- |
69
+ | __Version__ | [![PyPI version][pypi-badge]][pypi-url] [![Python][python-badge]][python-url] | __Status__ | [![Project Status][status-badge]][status-url] [![Maintenance][maintenance-badge]][maintenance-url] |
70
+ | __Activity__ | [![GitHub commits][commits-badge]][commits-url] [![Last Commit][last-commit-badge]][last-commit-url] | __Quality__ | [![codecov][codecov-badge]][codecov-url] [![Ruff][ruff-badge]][ruff-url] |
71
+ | __CI/CD__ | [![Docs][docs-badge]][docs-url] [![test][test-badge]][test-url] | __Community__ | [![GitHub stars][stars-badge]][stars-url] [![GitHub forks][forks-badge]][forks-url] |
72
+ | __Downloads__ | [![Downloads][downloads-badge]][downloads-url] | __License__ | [![License: MIT][license-badge]][license-url] [![DOI][doi-badge]][doi-url] |
73
+ | __Platform__ | [![Linux][linux-badge]][linux-url] | __Contribute__ | [![Issues][issues-badge]][issues-url] [![PRs Welcome][pr-badge]][pr-url] |
74
+
75
+ ## Introduction
76
+
77
+ `gsMap` (genetically informed spatial mapping of cells for complex traits)
78
+ integrates spatial transcriptomics (ST) data with genome-wide association study (GWAS)
79
+ summary statistics to map cells to human complex traits, including diseases,
80
+ in a spatially resolved manner.
81
+
82
+ ## Key Features
83
+
84
+ - __Spatially-aware High-Resolution Trait Mapping__
85
+ - __Spatial Region Identification__
86
+ - __Putative Causal Genes Identification__
87
+
88
+ ![Model Architecture](schematic.png)
89
+
90
+ ## Installation
91
+
92
+ Install using pip:
93
+
94
+ ```bash
95
+ conda create -n gsMap python>=3.10
96
+ conda activate gsMap
97
+ pip install gsMap
98
+ ```
99
+
100
+ Install from source:
101
+
102
+ ```bash
103
+ git clone https://github.com/JianYang-Lab/gsMap
104
+ cd gsMap
105
+ pip install -e .
106
+ ```
107
+
108
+ Verify the installation by running the following command:
109
+
110
+ ```bash
111
+ gsmap --help
112
+ ```
113
+
114
+ ## Usage
115
+
116
+ Please check out the documentation and tutorials at [gsMap Documentation](https://yanglab.westlake.edu.cn/gsmap/document/software).
117
+
118
+ ## Online Visualization
119
+
120
+ To visualize the traits-cell association spatial maps,
121
+ please refer to [gsMap Visualization](https://yanglab.westlake.edu.cn/gsmap/visualize).
122
+
123
+ ## Citation
124
+
125
+ Song, L., Chen, W., Hou, J., Guo, M. & Yang, J.
126
+ [Spatially resolved mapping of cells associated with human complex traits.](https://doi.org/10.1038/s41586-025-08757-x)
127
+ Nature (2025).
128
+
129
+ Please cite the paper and give us a STAR if you find gsMap useful for your research.
130
+
131
+ <!-- Badge links -->
132
+
133
+ [codecov-badge]: https://codecov.io/gh/JianYang-Lab/gsMap/graph/badge.svg?token=NFZFXZIEUU
134
+ [codecov-url]: https://codecov.io/gh/JianYang-Lab/gsMap
135
+ [commits-badge]: https://img.shields.io/github/commit-activity/m/JianYang-Lab/gsMap
136
+ [commits-url]: https://github.com/JianYang-Lab/gsMap/commits/main
137
+ [docs-badge]: https://github.com/JianYang-Lab/gsMap/actions/workflows/docs.yml/badge.svg
138
+ [docs-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/docs.yml
139
+ [doi-badge]: https://img.shields.io/badge/DOI-10.1038%2Fs41586--025--08757--x-blue
140
+ [doi-url]: https://doi.org/10.1038/s41586-025-08757-x
141
+ [downloads-badge]: https://static.pepy.tech/badge/gsMap
142
+ [downloads-url]: https://pepy.tech/project/gsMap
143
+ [forks-badge]: https://img.shields.io/github/forks/JianYang-Lab/gsMap
144
+ [forks-url]: https://github.com/JianYang-Lab/gsMap/network/members
145
+ [issues-badge]: https://img.shields.io/github/issues/JianYang-Lab/gsMap
146
+ [issues-url]: https://github.com/JianYang-Lab/gsMap/issues
147
+ [last-commit-badge]: https://img.shields.io/github/last-commit/JianYang-Lab/gsMap
148
+ [last-commit-url]: https://github.com/JianYang-Lab/gsMap/commits/main
149
+ [license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
150
+ [license-url]: https://opensource.org/licenses/MIT
151
+ [linux-badge]: https://img.shields.io/badge/Linux-%E2%9C%93-success
152
+ [linux-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml
153
+ [maintenance-badge]: https://img.shields.io/badge/Maintained%3F-yes-green.svg
154
+ [maintenance-url]: https://github.com/JianYang-Lab/gsMap/graphs/commit-activity
155
+ [pr-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
156
+ [pr-url]: https://github.com/JianYang-Lab/gsMap/pulls
157
+ [pypi-badge]: https://img.shields.io/pypi/v/gsMap
158
+ [pypi-url]: https://pypi.org/project/gsMap/
159
+ [python-badge]: https://img.shields.io/pypi/pyversions/gsMap
160
+ [python-url]: https://www.python.org
161
+ [ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
162
+ [ruff-url]: https://github.com/astral-sh/ruff
163
+ [stars-badge]: https://img.shields.io/github/stars/JianYang-Lab/gsMap
164
+ [stars-url]: https://github.com/JianYang-Lab/gsMap/stargazers
165
+ [status-badge]: https://www.repostatus.org/badges/latest/active.svg
166
+ [status-url]: https://www.repostatus.org/#active
167
+ [test-badge]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml/badge.svg
168
+ [test-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml
169
+
gsmap-1.73.0/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # gsMap
2
+
3
+ | | | | |
4
+ | ------------- | ---------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------- |
5
+ | __Version__ | [![PyPI version][pypi-badge]][pypi-url] [![Python][python-badge]][python-url] | __Status__ | [![Project Status][status-badge]][status-url] [![Maintenance][maintenance-badge]][maintenance-url] |
6
+ | __Activity__ | [![GitHub commits][commits-badge]][commits-url] [![Last Commit][last-commit-badge]][last-commit-url] | __Quality__ | [![codecov][codecov-badge]][codecov-url] [![Ruff][ruff-badge]][ruff-url] |
7
+ | __CI/CD__ | [![Docs][docs-badge]][docs-url] [![test][test-badge]][test-url] | __Community__ | [![GitHub stars][stars-badge]][stars-url] [![GitHub forks][forks-badge]][forks-url] |
8
+ | __Downloads__ | [![Downloads][downloads-badge]][downloads-url] | __License__ | [![License: MIT][license-badge]][license-url] [![DOI][doi-badge]][doi-url] |
9
+ | __Platform__ | [![Linux][linux-badge]][linux-url] | __Contribute__ | [![Issues][issues-badge]][issues-url] [![PRs Welcome][pr-badge]][pr-url] |
10
+
11
+ ## Introduction
12
+
13
+ `gsMap` (genetically informed spatial mapping of cells for complex traits)
14
+ integrates spatial transcriptomics (ST) data with genome-wide association study (GWAS)
15
+ summary statistics to map cells to human complex traits, including diseases,
16
+ in a spatially resolved manner.
17
+
18
+ ## Key Features
19
+
20
+ - __Spatially-aware High-Resolution Trait Mapping__
21
+ - __Spatial Region Identification__
22
+ - __Putative Causal Genes Identification__
23
+
24
+ ![Model Architecture](schematic.png)
25
+
26
+ ## Installation
27
+
28
+ Install using pip:
29
+
30
+ ```bash
31
+ conda create -n gsMap python>=3.10
32
+ conda activate gsMap
33
+ pip install gsMap
34
+ ```
35
+
36
+ Install from source:
37
+
38
+ ```bash
39
+ git clone https://github.com/JianYang-Lab/gsMap
40
+ cd gsMap
41
+ pip install -e .
42
+ ```
43
+
44
+ Verify the installation by running the following command:
45
+
46
+ ```bash
47
+ gsmap --help
48
+ ```
49
+
50
+ ## Usage
51
+
52
+ Please check out the documentation and tutorials at [gsMap Documentation](https://yanglab.westlake.edu.cn/gsmap/document/software).
53
+
54
+ ## Online Visualization
55
+
56
+ To visualize the traits-cell association spatial maps,
57
+ please refer to [gsMap Visualization](https://yanglab.westlake.edu.cn/gsmap/visualize).
58
+
59
+ ## Citation
60
+
61
+ Song, L., Chen, W., Hou, J., Guo, M. & Yang, J.
62
+ [Spatially resolved mapping of cells associated with human complex traits.](https://doi.org/10.1038/s41586-025-08757-x)
63
+ Nature (2025).
64
+
65
+ Please cite the paper and give us a STAR if you find gsMap useful for your research.
66
+
67
+ <!-- Badge links -->
68
+
69
+ [codecov-badge]: https://codecov.io/gh/JianYang-Lab/gsMap/graph/badge.svg?token=NFZFXZIEUU
70
+ [codecov-url]: https://codecov.io/gh/JianYang-Lab/gsMap
71
+ [commits-badge]: https://img.shields.io/github/commit-activity/m/JianYang-Lab/gsMap
72
+ [commits-url]: https://github.com/JianYang-Lab/gsMap/commits/main
73
+ [docs-badge]: https://github.com/JianYang-Lab/gsMap/actions/workflows/docs.yml/badge.svg
74
+ [docs-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/docs.yml
75
+ [doi-badge]: https://img.shields.io/badge/DOI-10.1038%2Fs41586--025--08757--x-blue
76
+ [doi-url]: https://doi.org/10.1038/s41586-025-08757-x
77
+ [downloads-badge]: https://static.pepy.tech/badge/gsMap
78
+ [downloads-url]: https://pepy.tech/project/gsMap
79
+ [forks-badge]: https://img.shields.io/github/forks/JianYang-Lab/gsMap
80
+ [forks-url]: https://github.com/JianYang-Lab/gsMap/network/members
81
+ [issues-badge]: https://img.shields.io/github/issues/JianYang-Lab/gsMap
82
+ [issues-url]: https://github.com/JianYang-Lab/gsMap/issues
83
+ [last-commit-badge]: https://img.shields.io/github/last-commit/JianYang-Lab/gsMap
84
+ [last-commit-url]: https://github.com/JianYang-Lab/gsMap/commits/main
85
+ [license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
86
+ [license-url]: https://opensource.org/licenses/MIT
87
+ [linux-badge]: https://img.shields.io/badge/Linux-%E2%9C%93-success
88
+ [linux-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml
89
+ [maintenance-badge]: https://img.shields.io/badge/Maintained%3F-yes-green.svg
90
+ [maintenance-url]: https://github.com/JianYang-Lab/gsMap/graphs/commit-activity
91
+ [pr-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
92
+ [pr-url]: https://github.com/JianYang-Lab/gsMap/pulls
93
+ [pypi-badge]: https://img.shields.io/pypi/v/gsMap
94
+ [pypi-url]: https://pypi.org/project/gsMap/
95
+ [python-badge]: https://img.shields.io/pypi/pyversions/gsMap
96
+ [python-url]: https://www.python.org
97
+ [ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
98
+ [ruff-url]: https://github.com/astral-sh/ruff
99
+ [stars-badge]: https://img.shields.io/github/stars/JianYang-Lab/gsMap
100
+ [stars-url]: https://github.com/JianYang-Lab/gsMap/stargazers
101
+ [status-badge]: https://www.repostatus.org/badges/latest/active.svg
102
+ [status-url]: https://www.repostatus.org/#active
103
+ [test-badge]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml/badge.svg
104
+ [test-url]: https://github.com/JianYang-Lab/gsMap/actions/workflows/test_linux.yml
@@ -0,0 +1,29 @@
1
+ codecov:
2
+ require_ci_to_pass: yes
3
+
4
+ coverage:
5
+ precision: 2
6
+ round: down
7
+ range: "70...100"
8
+ status:
9
+ project:
10
+ default:
11
+ target: 70%
12
+ threshold: 1%
13
+ patch:
14
+ default:
15
+ target: auto
16
+ threshold: 10%
17
+
18
+ parsers:
19
+ gcov:
20
+ branch_detection:
21
+ conditional: yes
22
+ loop: yes
23
+ method: no
24
+ macro: no
25
+
26
+ comment:
27
+ layout: "reach,diff,flags,files,footer"
28
+ behavior: default
29
+ require_changes: no
@@ -15,23 +15,26 @@ gsmap run_latent_to_gene \
15
15
  ```
16
16
 
17
17
  ## Conditional Analysis
18
+
18
19
  **Objective**: Perform conditional analysis by adjusting for other functional annotations or cell-type-level annotations.
19
20
 
20
21
  This step extends `step 3: generate ldscore`, by adding additional functional annotations to the baseline with the aim of conducting a conditional analysis. The directory of additional annotations can be specified using the parameter `--additional_baseline_annotation`. The other steps are same to the tutorials above.
21
22
 
22
23
  Download the additional annotations:
24
+
23
25
  ```bash
24
26
  wget https://yanglab.westlake.edu.cn/data/gsMap/gsMap_additional_annotation.tar.gz
25
27
  tar -xvzf gsMap_additional_annotation.tar.gz
26
28
  ```
29
+
27
30
  The format of the additional annotation files is such that each line represents a SNP, with columns indicating the annotation values for that SNP. These values can be either binary or continuous.
31
+
28
32
  ```bash
29
33
  zless -S gsMap_additional_annotation/baseline.1.annot.gz
30
34
  ```
31
35
 
32
36
  **Execution**: <span style="color:#31a354"> required memory: ~50G </span>
33
37
 
34
-
35
38
  ```bash
36
39
  for CHROM in {1..22}
37
40
  do
@@ -48,6 +51,7 @@ done
48
51
  ```
49
52
 
50
53
  ## gsMap on Biological Replicates
54
+
51
55
  **Objective**: When multiple biological replicates are available, a uniform slice mean can be calculated for the gene ranks across the samples. This slice mean rank can then be used to compute the GSS. This approach ensures more consistent and comparable results across different samples.
52
56
 
53
57
  ### Calculate the Slice Mean
@@ -82,7 +86,6 @@ gsmap quick_mode \
82
86
  --gM_slices './workdir/sample_slice_mean.parquet'
83
87
  ```
84
88
 
85
-
86
89
  ### Use the Slice Mean in Step-by-Step Mode
87
90
 
88
91
  To incorporate the slice mean into the step-by-step pipeline, provide the slice mean file using the `--gM_slices` parameter in the `run_latent_to_gene` command. This enables the computation of gene specificity scores based on the slice mean.
@@ -102,7 +105,7 @@ gsmap run_latent_to_gene \
102
105
 
103
106
  ### Cauchy combination for multiple samples
104
107
 
105
- Use the `run_cauchy_combination` command to aggregate the spot p-values for the same annotation across multiple samples.
108
+ Use the `run_cauchy_combination` command to aggregate the spot p-values for the same annotation across multiple samples.
106
109
 
107
110
  ```bash
108
111
  gsmap run_cauchy_combination \
@@ -20,7 +20,7 @@ extensions = [
20
20
  "sphinxarg.ext",
21
21
  "nbsphinx",
22
22
  "myst_parser",
23
- "sphinx_charts.charts",
23
+ # "sphinx_charts.charts",
24
24
  "sphinxcontrib.jquery",
25
25
  "sphinx_inline_tabs",
26
26
  ]
@@ -48,6 +48,6 @@ html_theme_options = {
48
48
  }
49
49
 
50
50
  # add plotly.js to the build
51
- html_js_files = [
52
- "https://cdn.plot.ly/plotly-latest.min.js",
53
- ]
51
+ # html_js_files = [
52
+ # "https://cdn.plot.ly/plotly-latest.min.js",
53
+ # ]