gsMap 1.71.1__py3-none-any.whl → 1.72.3__py3-none-any.whl

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.
gsMap/visualize.py CHANGED
@@ -1,199 +1,217 @@
1
- from pathlib import Path
2
- from typing import Literal
3
-
4
- import numpy as np
5
- import pandas as pd
6
- import plotly.express as px
7
- import scanpy as sc
8
- from scipy.spatial import KDTree
9
-
10
- from gsMap.config import VisualizeConfig
11
-
12
-
13
- def load_ldsc(ldsc_input_file):
14
- ldsc = pd.read_csv(ldsc_input_file, compression='gzip')
15
- ldsc.spot = ldsc.spot.astype(str).replace('\.0', '', regex=True)
16
- ldsc.index = ldsc.spot
17
- ldsc['logp'] = -np.log10(ldsc.p)
18
- return ldsc
19
-
20
-
21
- # %%
22
- def load_st_coord(adata, feature_series: pd.Series, annotation):
23
- spot_name = adata.obs_names.to_list()
24
- assert 'spatial' in adata.obsm.keys(), 'spatial coordinates are not found in adata.obsm'
25
-
26
- # to DataFrame
27
- space_coord = adata.obsm['spatial']
28
- if isinstance(space_coord, np.ndarray):
29
- space_coord = pd.DataFrame(space_coord, columns=['sx', 'sy'], index=spot_name)
30
- else:
31
- space_coord = pd.DataFrame(space_coord.values, columns=['sx', 'sy'], index=spot_name)
32
-
33
- space_coord = space_coord[space_coord.index.isin(feature_series.index)]
34
- space_coord_concat = pd.concat([space_coord.loc[feature_series.index], feature_series], axis=1)
35
- space_coord_concat.head()
36
- if annotation is not None:
37
- annotation = pd.Series(adata.obs[annotation].values, index=adata.obs_names, name='annotation')
38
- space_coord_concat = pd.concat([space_coord_concat, annotation], axis=1)
39
- return space_coord_concat
40
-
41
-
42
- def estimate_point_size_for_plot(coordinates, DEFAULT_PIXEL_WIDTH = 1000):
43
- tree = KDTree(coordinates)
44
- distances, _ = tree.query(coordinates, k=2)
45
- avg_min_distance = np.mean(distances[:, 1])
46
- # get the width and height of the plot
47
- width = np.max(coordinates[:, 0]) - np.min(coordinates[:, 0])
48
- height = np.max(coordinates[:, 1]) - np.min(coordinates[:, 1])
49
-
50
- scale_factor = DEFAULT_PIXEL_WIDTH / max(width, height)
51
- pixel_width = width * scale_factor
52
- pixel_height = height * scale_factor
53
-
54
- point_size = np.ceil(avg_min_distance * scale_factor)
55
- return (pixel_width, pixel_height), point_size
56
-
57
-
58
- def draw_scatter(space_coord_concat, title=None, fig_style: Literal['dark', 'light'] = 'light',
59
- point_size: int = None, width=800, height=600, annotation=None, color_by='logp'):
60
- # Set theme based on fig_style
61
- if fig_style == 'dark':
62
- px.defaults.template = "plotly_dark"
63
- else:
64
- px.defaults.template = "plotly_white"
65
-
66
- custom_color_scale = [
67
- (1, '#d73027'), # Red
68
- (7 / 8, '#f46d43'), # Red-Orange
69
- (6 / 8, '#fdae61'), # Orange
70
- (5 / 8, '#fee090'), # Light Orange
71
- (4 / 8, '#e0f3f8'), # Light Blue
72
- (3 / 8, '#abd9e9'), # Sky Blue
73
- (2 / 8, '#74add1'), # Medium Blue
74
- (1 / 8, '#4575b4'), # Dark Blue
75
- (0, '#313695') # Deep Blue
76
- ]
77
- custom_color_scale.reverse()
78
-
79
- # Create the scatter plot
80
- fig = px.scatter(
81
- space_coord_concat,
82
- x='sx',
83
- y='sy',
84
- color=color_by,
85
- symbol='annotation' if annotation is not None else None,
86
- title=title,
87
- color_continuous_scale=custom_color_scale,
88
- range_color=[0, max(space_coord_concat[color_by])],
89
- )
90
-
91
- # Update marker size if specified
92
- if point_size is not None:
93
- fig.update_traces(marker=dict(size=point_size, symbol='circle'))
94
-
95
- # Update layout for figure size
96
- fig.update_layout(
97
- autosize=False,
98
- width=width,
99
- height=height,
100
- )
101
-
102
- # Adjusting the legend
103
- fig.update_layout(
104
- legend=dict(
105
- yanchor="top",
106
- y=0.95,
107
- xanchor="left",
108
- x=1.0,
109
- font=dict(
110
- size=10,
111
- )
112
- )
113
- )
114
-
115
- # Update colorbar to be at the bottom and horizontal
116
- fig.update_layout(
117
- coloraxis_colorbar=dict(
118
- orientation='h', # Make the colorbar horizontal
119
- x=0.5, # Center the colorbar horizontally
120
- y=-0.0, # Position below the plot
121
- xanchor='center', # Anchor the colorbar at the center
122
- yanchor='top', # Anchor the colorbar at the top to keep it just below the plot
123
- len=0.75, # Length of the colorbar relative to the plot width
124
- title=dict(
125
- text='-log10(p)' if color_by == 'logp' else color_by, # Colorbar title
126
- side='top' # Place the title at the top of the colorbar
127
- )
128
- )
129
- )
130
- # Remove gridlines, axis labels, and ticks
131
- fig.update_xaxes(
132
- showgrid=False, # Hide x-axis gridlines
133
- zeroline=False, # Hide x-axis zero line
134
- showticklabels=False, # Hide x-axis tick labels
135
- title=None, # Remove x-axis title
136
- scaleanchor='y', # Link the x-axis scale to the y-axis scale
137
- )
138
-
139
- fig.update_yaxes(
140
- showgrid=False, # Hide y-axis gridlines
141
- zeroline=False, # Hide y-axis zero line
142
- showticklabels=False, # Hide y-axis tick labels
143
- title=None # Remove y-axis title
144
- )
145
-
146
- # Adjust margins to ensure no clipping and equal axis ratio
147
- fig.update_layout(
148
- margin=dict(l=0, r=0, t=20, b=10), # Adjust margins to prevent clipping
149
- height=width # Ensure the figure height matches the width for equal axis ratio
150
- )
151
-
152
- # Adjust the title location and font size
153
- fig.update_layout(
154
- title=dict(
155
- y=0.98,
156
- x=0.5, # Center the title horizontally
157
- xanchor='center', # Anchor the title at the center
158
- yanchor='top', # Anchor the title at the top
159
- font=dict(
160
- size=20 # Increase the title font size
161
- )
162
- ))
163
-
164
- return fig
165
-
166
-
167
-
168
- def run_Visualize(config: VisualizeConfig):
169
- print(f'------Loading LDSC results of {config.ldsc_save_dir}...')
170
- ldsc = load_ldsc(ldsc_input_file=Path(config.ldsc_save_dir) / f'{config.sample_name}_{config.trait_name}.csv.gz')
171
-
172
- print(f'------Loading ST data of {config.sample_name}...')
173
- adata = sc.read_h5ad(f'{config.hdf5_with_latent_path}')
174
-
175
- space_coord_concat = load_st_coord(adata, ldsc, annotation=config.annotation)
176
- fig = draw_scatter(space_coord_concat,
177
- title=config.fig_title,
178
- fig_style=config.fig_style,
179
- point_size=config.point_size,
180
- width=config.fig_width,
181
- height=config.fig_height,
182
- annotation=config.annotation
183
- )
184
-
185
-
186
- # Visualization
187
- output_dir = Path(config.output_dir)
188
- output_dir.mkdir(parents=True, exist_ok=True, mode=0o755)
189
- output_file_html = output_dir / f'{config.sample_name}_{config.trait_name}.html'
190
- output_file_pdf = output_dir / f'{config.sample_name}_{config.trait_name}.pdf'
191
- output_file_csv = output_dir / f'{config.sample_name}_{config.trait_name}.csv'
192
-
193
- fig.write_html(str(output_file_html))
194
- fig.write_image(str(output_file_pdf))
195
- space_coord_concat.to_csv(str(output_file_csv))
196
-
197
- print(
198
- f'------The visualization result is saved in a html file: {output_file_html} which can interactively viewed in a web browser and a pdf file: {output_file_pdf}.')
199
- print(f'------The visualization data is saved in a csv file: {output_file_csv}.')
1
+ from pathlib import Path
2
+ from typing import Literal
3
+
4
+ import numpy as np
5
+ import pandas as pd
6
+ import plotly.express as px
7
+ import scanpy as sc
8
+ from scipy.spatial import KDTree
9
+
10
+ from gsMap.config import VisualizeConfig
11
+
12
+
13
+ def load_ldsc(ldsc_input_file):
14
+ ldsc = pd.read_csv(
15
+ ldsc_input_file,
16
+ compression="gzip",
17
+ dtype={"spot": str, "p": float},
18
+ index_col="spot",
19
+ usecols=["spot", "p"],
20
+ )
21
+ ldsc["logp"] = -np.log10(ldsc.p)
22
+ return ldsc
23
+
24
+
25
+ # %%
26
+ def load_st_coord(adata, feature_series: pd.Series, annotation):
27
+ spot_name = adata.obs_names.to_list()
28
+ assert "spatial" in adata.obsm.keys(), "spatial coordinates are not found in adata.obsm"
29
+
30
+ # to DataFrame
31
+ space_coord = adata.obsm["spatial"]
32
+ if isinstance(space_coord, np.ndarray):
33
+ space_coord = pd.DataFrame(space_coord, columns=["sx", "sy"], index=spot_name)
34
+ else:
35
+ space_coord = pd.DataFrame(space_coord.values, columns=["sx", "sy"], index=spot_name)
36
+
37
+ space_coord = space_coord[space_coord.index.isin(feature_series.index)]
38
+ space_coord_concat = pd.concat([space_coord.loc[feature_series.index], feature_series], axis=1)
39
+ space_coord_concat.head()
40
+ if annotation is not None:
41
+ annotation = pd.Series(
42
+ adata.obs[annotation].values, index=adata.obs_names, name="annotation"
43
+ )
44
+ space_coord_concat = pd.concat([space_coord_concat, annotation], axis=1)
45
+ return space_coord_concat
46
+
47
+
48
+ def estimate_point_size_for_plot(coordinates, DEFAULT_PIXEL_WIDTH=1000):
49
+ tree = KDTree(coordinates)
50
+ distances, _ = tree.query(coordinates, k=2)
51
+ avg_min_distance = np.mean(distances[:, 1])
52
+ # get the width and height of the plot
53
+ width = np.max(coordinates[:, 0]) - np.min(coordinates[:, 0])
54
+ height = np.max(coordinates[:, 1]) - np.min(coordinates[:, 1])
55
+
56
+ scale_factor = DEFAULT_PIXEL_WIDTH / max(width, height)
57
+ pixel_width = width * scale_factor
58
+ pixel_height = height * scale_factor
59
+
60
+ point_size = np.ceil(avg_min_distance * scale_factor)
61
+ return (pixel_width, pixel_height), point_size
62
+
63
+
64
+ def draw_scatter(
65
+ space_coord_concat,
66
+ title=None,
67
+ fig_style: Literal["dark", "light"] = "light",
68
+ point_size: int = None,
69
+ width=800,
70
+ height=600,
71
+ annotation=None,
72
+ color_by="logp",
73
+ ):
74
+ # Set theme based on fig_style
75
+ if fig_style == "dark":
76
+ px.defaults.template = "plotly_dark"
77
+ else:
78
+ px.defaults.template = "plotly_white"
79
+
80
+ custom_color_scale = [
81
+ (1, "#d73027"), # Red
82
+ (7 / 8, "#f46d43"), # Red-Orange
83
+ (6 / 8, "#fdae61"), # Orange
84
+ (5 / 8, "#fee090"), # Light Orange
85
+ (4 / 8, "#e0f3f8"), # Light Blue
86
+ (3 / 8, "#abd9e9"), # Sky Blue
87
+ (2 / 8, "#74add1"), # Medium Blue
88
+ (1 / 8, "#4575b4"), # Dark Blue
89
+ (0, "#313695"), # Deep Blue
90
+ ]
91
+ custom_color_scale.reverse()
92
+
93
+ # Create the scatter plot
94
+ fig = px.scatter(
95
+ space_coord_concat,
96
+ x="sx",
97
+ y="sy",
98
+ color=color_by,
99
+ symbol="annotation" if annotation is not None else None,
100
+ title=title,
101
+ color_continuous_scale=custom_color_scale,
102
+ range_color=[0, max(space_coord_concat[color_by])],
103
+ )
104
+
105
+ # Update marker size if specified
106
+ if point_size is not None:
107
+ fig.update_traces(marker=dict(size=point_size, symbol="circle"))
108
+
109
+ # Update layout for figure size
110
+ fig.update_layout(
111
+ autosize=False,
112
+ width=width,
113
+ height=height,
114
+ )
115
+
116
+ # Adjusting the legend
117
+ fig.update_layout(
118
+ legend=dict(
119
+ yanchor="top",
120
+ y=0.95,
121
+ xanchor="left",
122
+ x=1.0,
123
+ font=dict(
124
+ size=10,
125
+ ),
126
+ )
127
+ )
128
+
129
+ # Update colorbar to be at the bottom and horizontal
130
+ fig.update_layout(
131
+ coloraxis_colorbar=dict(
132
+ orientation="h", # Make the colorbar horizontal
133
+ x=0.5, # Center the colorbar horizontally
134
+ y=-0.0, # Position below the plot
135
+ xanchor="center", # Anchor the colorbar at the center
136
+ yanchor="top", # Anchor the colorbar at the top to keep it just below the plot
137
+ len=0.75, # Length of the colorbar relative to the plot width
138
+ title=dict(
139
+ text="-log10(p)" if color_by == "logp" else color_by, # Colorbar title
140
+ side="top", # Place the title at the top of the colorbar
141
+ ),
142
+ )
143
+ )
144
+ # Remove gridlines, axis labels, and ticks
145
+ fig.update_xaxes(
146
+ showgrid=False, # Hide x-axis gridlines
147
+ zeroline=False, # Hide x-axis zero line
148
+ showticklabels=False, # Hide x-axis tick labels
149
+ title=None, # Remove x-axis title
150
+ scaleanchor="y", # Link the x-axis scale to the y-axis scale
151
+ )
152
+
153
+ fig.update_yaxes(
154
+ showgrid=False, # Hide y-axis gridlines
155
+ zeroline=False, # Hide y-axis zero line
156
+ showticklabels=False, # Hide y-axis tick labels
157
+ title=None, # Remove y-axis title
158
+ )
159
+
160
+ # Adjust margins to ensure no clipping and equal axis ratio
161
+ fig.update_layout(
162
+ margin=dict(l=0, r=0, t=20, b=10), # Adjust margins to prevent clipping
163
+ height=width, # Ensure the figure height matches the width for equal axis ratio
164
+ )
165
+
166
+ # Adjust the title location and font size
167
+ fig.update_layout(
168
+ title=dict(
169
+ y=0.98,
170
+ x=0.5, # Center the title horizontally
171
+ xanchor="center", # Anchor the title at the center
172
+ yanchor="top", # Anchor the title at the top
173
+ font=dict(
174
+ size=20 # Increase the title font size
175
+ ),
176
+ )
177
+ )
178
+
179
+ return fig
180
+
181
+
182
+ def run_Visualize(config: VisualizeConfig):
183
+ print(f"------Loading LDSC results of {config.ldsc_save_dir}...")
184
+ ldsc = load_ldsc(
185
+ ldsc_input_file=Path(config.ldsc_save_dir)
186
+ / f"{config.sample_name}_{config.trait_name}.csv.gz"
187
+ )
188
+
189
+ print(f"------Loading ST data of {config.sample_name}...")
190
+ adata = sc.read_h5ad(f"{config.hdf5_with_latent_path}")
191
+
192
+ space_coord_concat = load_st_coord(adata, ldsc, annotation=config.annotation)
193
+ fig = draw_scatter(
194
+ space_coord_concat,
195
+ title=config.fig_title,
196
+ fig_style=config.fig_style,
197
+ point_size=config.point_size,
198
+ width=config.fig_width,
199
+ height=config.fig_height,
200
+ annotation=config.annotation,
201
+ )
202
+
203
+ # Visualization
204
+ output_dir = Path(config.output_dir)
205
+ output_dir.mkdir(parents=True, exist_ok=True, mode=0o755)
206
+ output_file_html = output_dir / f"{config.sample_name}_{config.trait_name}.html"
207
+ output_file_pdf = output_dir / f"{config.sample_name}_{config.trait_name}.pdf"
208
+ output_file_csv = output_dir / f"{config.sample_name}_{config.trait_name}.csv"
209
+
210
+ fig.write_html(str(output_file_html))
211
+ fig.write_image(str(output_file_pdf))
212
+ space_coord_concat.to_csv(str(output_file_csv))
213
+
214
+ print(
215
+ f"------The visualization result is saved in a html file: {output_file_html} which can interactively viewed in a web browser and a pdf file: {output_file_pdf}."
216
+ )
217
+ print(f"------The visualization data is saved in a csv file: {output_file_csv}.")
@@ -1,21 +1,21 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2023 liyang
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
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.
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 liyang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
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.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: gsMap
3
- Version: 1.71.1
3
+ Version: 1.72.3
4
4
  Summary: Genetics-informed pathogenic spatial mapping
5
5
  Author-email: liyang <songliyang@westlake.edu.cn>, wenhao <chenwenhao@westlake.edu.cn>
6
6
  Requires-Python: >=3.8
@@ -11,7 +11,7 @@ Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Programming Language :: Python :: 3.8
12
12
  Classifier: Programming Language :: Python :: 3.9
13
13
  Classifier: Operating System :: POSIX :: Linux
14
- Requires-Dist: numpy
14
+ Requires-Dist: numpy < 2.0.0
15
15
  Requires-Dist: pandas
16
16
  Requires-Dist: scipy
17
17
  Requires-Dist: scikit-learn
@@ -56,16 +56,21 @@ Project-URL: Home, https://github.com/LeonSong1995/gsMap
56
56
  Project-URL: Website, https://yanglab.westlake.edu.cn/gsmap/home
57
57
  Provides-Extra: doc
58
58
 
59
- [![GitHub Stars](https://img.shields.io/github/stars/LeonSong1995/gsMap?logo=GitHub&color=yellow)](https://github.com/LeonSong1995/gsMap/stargazers)
59
+ [![GitHub Stars](https://img.shields.io/github/stars/JianYang-Lab/gsMap?logo=GitHub&color=yellow)](https://github.com/LeonSong1995/gsMap/stargazers)
60
60
  [![PyPI Version](https://img.shields.io/pypi/v/gsMap)](https://pypi.org/project/gsMap)
61
61
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
62
62
 
63
- ## Introduction
63
+ # gsMap
64
64
 
65
- `gsMap` (genetically informed spatial mapping of cells for complex traits) integrates spatial transcriptomics (ST) data with genome-wide association study (GWAS) summary statistics to map cells to human complex traits, including diseases, in a spatially resolved manner.
65
+ ## Introduction
66
66
 
67
+ `gsMap` (genetically informed spatial mapping of cells for complex traits)
68
+ integrates spatial transcriptomics (ST) data with genome-wide association study (GWAS)
69
+ summary statistics to map cells to human complex traits, including diseases,
70
+ in a spatially resolved manner.
67
71
 
68
72
  ## Key Features
73
+
69
74
  - **Spatially-aware High-Resolution Trait Mapping**
70
75
  - **Spatial Region Identification**
71
76
  - **Putative Causal Genes Identification**
@@ -77,7 +82,7 @@ Provides-Extra: doc
77
82
  Install using pip:
78
83
 
79
84
  ```bash
80
- conda create -n gsMap python>3.8
85
+ conda create -n gsMap python>=3.10
81
86
  conda activate gsMap
82
87
  pip install gsMap
83
88
  ```
@@ -91,6 +96,7 @@ pip install -e .
91
96
  ```
92
97
 
93
98
  Verify the installation by running the following command:
99
+
94
100
  ```bash
95
101
  gsmap --help
96
102
  ```
@@ -101,5 +107,14 @@ Please check out the documentation and tutorials at [gsMap Documentation](https:
101
107
 
102
108
  ## Online Visualization
103
109
 
104
- To visualize the traits-cell association spatial maps, please refer to [gsMap Visualization](https://yanglab.westlake.edu.cn/gsmap/visualize).
110
+ To visualize the traits-cell association spatial maps,
111
+ please refer to [gsMap Visualization](https://yanglab.westlake.edu.cn/gsmap/visualize).
112
+
113
+ ## Citation
114
+
115
+ Song, L., Chen, W., Hou, J., Guo, M. & Yang, J.
116
+ [Spatially reso lved mapping of cells associated with human complex traits.](https://www.medrxiv.org/content/10.1101/2024.10.31.24316538v1)
117
+ medRxiv, 2024.2010.2031.24316538 (2024) (Nature in press).
118
+
119
+ Please cite the paper and give us a STAR if you find gsMap useful for your research.
105
120
 
@@ -0,0 +1,31 @@
1
+ gsMap/__init__.py,sha256=KG_fjg3SKMr0pH9IBYN_dW9c_Rwhr3YDkWc_b5jnEzw,77
2
+ gsMap/__main__.py,sha256=Vdhw8YA1K3wPMlbJQYL5WqvRzAKVeZ16mZQFO9VRmCo,62
3
+ gsMap/cauchy_combination_test.py,sha256=zT-XFCZJMOMu7sXYZ2n7DE1XKd4lYB-5q0ZSAcQlcfY,5075
4
+ gsMap/config.py,sha256=kJa7uacKzLebCFPo0y1q8NjQXqla8V1nIE7MCXQu8XA,47020
5
+ gsMap/create_slice_mean.py,sha256=X4GzvoFeRyAPmdifODT6NRNTk4nfC0KrYfOHeMjPBLk,5585
6
+ gsMap/diagnosis.py,sha256=RcoIQoK2rtHpEqmSVwOG_amfKWuu1r5T8e2POPfIpOM,13362
7
+ gsMap/find_latent_representation.py,sha256=wFY74YoZMSa7--2yrf4zYHYxqP0gtIrcNCKgcPojoPQ,4738
8
+ gsMap/format_sumstats.py,sha256=8k-axws38NgRmJ69cnQtYZFdTsHdhBP0aBt4zHgU5vs,13610
9
+ gsMap/generate_ldscore.py,sha256=tLU9u6yl37AXVrOxeCxKKWQtDy8YZf9BMRPEQzfLPrc,29113
10
+ gsMap/latent_to_gene.py,sha256=1xdQJxkZ83PvinKXlcyllywxmfyCUt6y9xDksVNCBkc,11160
11
+ gsMap/main.py,sha256=SzfAXhrlr4LXnSD4gkvAtUUPYXyra6a_MzVCxDBZjr0,1170
12
+ gsMap/report.py,sha256=_1FYkzGhVGMnvHgEQ8z51iMrVEVlh48a31jLqbV2o9w,6953
13
+ gsMap/run_all_mode.py,sha256=N_5J6Zbl2eJjVK0OXDzU8hZwxrakQS-3WeDIlKg0zWI,9289
14
+ gsMap/setup.py,sha256=lsIQCChHwR0ojWZs7xay8rukRaLlueuLkc83bp-B2ZE,103
15
+ gsMap/spatial_ldsc_multiple_sumstats.py,sha256=-mawOBjn8-Y5Irl8mv8ye83hfiEJ1mkLrRIQiI-XaMM,17973
16
+ gsMap/visualize.py,sha256=N55s-xmzSd_DtIesrGewfDeoytYUcMd2acDsjEpChCA,7242
17
+ gsMap/GNN/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ gsMap/GNN/adjacency_matrix.py,sha256=MfkhgpAHJcC-3l_iZDQQYD30w4bpe29-8s6kkGxiwQw,3231
19
+ gsMap/GNN/model.py,sha256=75In9sxBkaqqpCQSrQEUO-zsQQVQnkXVbKsAgyAZjiQ,2918
20
+ gsMap/GNN/train.py,sha256=S6s-AufN9GJNcgC5Mqe6MjcJAsaNnbDlHUoYHcvxFmA,3069
21
+ gsMap/templates/report_template.html,sha256=QODZEbVxpW1xsLz7lDrD_DyUfzYoi9E17o2tLJlf8OQ,8016
22
+ gsMap/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ gsMap/utils/generate_r2_matrix.py,sha256=uYy4sbYm5Uwn875hPG85y-3ZjBYmE_eGHpHcdFGKaag,28541
24
+ gsMap/utils/jackknife.py,sha256=w_qMj9GlqViouHuOw1U80N6doWuCTXuPoAVU4P-5mm8,17673
25
+ gsMap/utils/manhattan_plot.py,sha256=N7jd0Cn-7JMsTBgv41k1w0174rqnPT-v7xLIV2cfY5U,25241
26
+ gsMap/utils/regression_read.py,sha256=YbRPktMf9-wM7QqUHYZw8Kcr3LKEGQSLsAT9AMhUe5w,7782
27
+ gsmap-1.72.3.dist-info/entry_points.txt,sha256=s_P2Za22O077tc1FPLKMinbdRVXaN_HTcDBgWMYpqA4,41
28
+ gsmap-1.72.3.dist-info/LICENSE,sha256=dCWx-ENipnYph2UTEA9wJaEZ_tkjNZ_tog6XRd3nd2k,1073
29
+ gsmap-1.72.3.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
30
+ gsmap-1.72.3.dist-info/METADATA,sha256=jCdwjCz28iEmPzJx7bRQ70cnASPFST2E05FZUfP_94I,4076
31
+ gsmap-1.72.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.9.0
2
+ Generator: flit 3.10.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any