ð 1ïžâ£ ã UTAG - é£æ¥çŽ°èã®ç¹åŸŽéã䜿ã£ãŠçŽ°èã®ã¯ã©ã¹ã¿ãªã³ã° - ã
ã UTAG ã
åèïŒNature Method, 2022ïŒ: https://www.nature.com/articles/s41592-022-01657-2
GitHub: https://github.com/ElementoLab/utag
ãã¥ãŒããªã¢ã«ïŒhttps://github.com/ElementoLab/utag/blob/main/documentation/UTAG Tutorial.ipynb
ã¯ã©ã¹ã¿ãªã³ã°åŸã®è§£æäŸïŒéåžžã«åèã«ãªãïŒ: https://github.com/ElementoLab/utag/blob/main/documentation/IMC Healthy Lung.ipynb
æ¢ã«ã¢ãããŒã·ã§ã³ä»ãããã现èã®ã³ãã¥ããã£ãèŠã€ããã®ã§ã¯ãªããå ¥åç¹åŸŽéãšçŽ°èäœçœ®ã°ã©ãã§æ°ããªã¯ã©ã¹ã¿ãŒïŒã¢ãããŒã·ã§ã³ïŒãèŠã€ãããããŒã«ãŒçºçŸã现è圢æ ãšãã£ãç¹åŸŽéè¡åãé£æ¥è¡åãšãããŠã1ã€ã®çŽ°èã«åšå²ã®çŽ°èã®æ å ±ãå ããããã®çµæãåºã«ã¯ã©ã¹ã¿ãªã³ã°ãžãã¯ã©ã¹ã¿ãªã³ã°ææ³ã¯æ¢å ±ã®LeidenãPARCãªã©ã䜿çšãããšã®ããšã
ScanPyãå
éšã§äœ¿ããRã§ãã§ããã
åè Fig.1
Pythonç°å¢
GitHubã«ã¯Python 3.9ã§testãããšãããæ¬æžã§ã¯3.12ã§è¡ã£ãŠã¿ãã次ã®ãšã©ãŒãåºãã®ã§èšãããéãPython 3.9ã䜿çšããã
AttributeError: module 'pathlib' has no attribute '_windows_flavour'
Python version 3.12ã§ã¯ãšã©ãŒãåºãããã ã
https://github.com/devopshq/artifactory/issues/430
ä»®æ³ç°å¢äœã
version 3.9ã®pythonç°å¢ãçšæããã
conda create --name utag python=3.9
conda install -c conda-forge jupyterlab
conda install conda-forge::jupyterlab-variableinspector
pip install --upgrade ipywidgets
UTAGã®ã€ã³ã¹ããŒã«
pip install
ã§äžçºã§å°å
¥
æ¹æ³ïŒïŒ 次ã®ã³ãã³ãã«ããGitHubå ã®utagããã±ãŒãžããã³é¢é£ããã±ãŒãžãã€ã³ã¹ããŒã«ãããã
pip install git+https://github.com/ElementoLab/utag.git@main
æ¹æ³ïŒïŒããã±ãŒãžãã©ã«ããããŠã³ããŒã + é¢é£ããã±ãŒãžã®ã€ã³ã¹ããŒã«
GitHubå
ã®ãutagããã©ã«ããã¡ã€ã³ã®ããã±ãŒãžãªã®ã§ããããããŒã«ã«ã«ããŠã³ããŒãããŠäœ¿çšããŠããããïŒgit clone
ããŠãããšãã¥ãŒããªã¢ã«ã®ipynbãã¡ã€ã«ãå
¥ã£ããdocumentationããã©ã«ããçšæã§ãããïŒ
pythonã§è§£æããéã«ãutagããã©ã«ãã«ã¢ã¯ã»ã¹ãããããããªå Žæã«çœ®ããŠããã
ãã¡ãã«äŸåããã±ãŒãžé¡ã®æ å ±ãããã深局åŠç¿ã¢ãã«ã§ã¯ç¡ãã®ã§Pytorchãªã©ã¯äžèŠãã·ã³ã°ã«ã»ã«è§£æã«è¯ã䜿çšãããScanPyãšã空éãªãã¯ã¹è§£æã©ã€ãã©ãªã®SquidPyãå¿ èŠãšãªãã
以äžã®é ã§å
¥ããã°äœ¿çšã§ãããïŒãã®ä»ã®é¢é£ããã±ãŒãžãåæã«ã€ã³ã¹ããŒã«ããããïŒ
pip install scanpy
pip install squidpy
pip install parmap
pip install setuptools-scm
pip install parc
ãã¢ããŒã¿
Zenodoã«ããŒã¿ãdepositãããŠããã
GitHubã®ãdocumentationããã©ã«ãã«å¹Ÿã€ãã®ãã¥ãŒããªã¢ã«ã®ipynbãã¡ã€ã«ããããåããçš®ããšã®è§£æäŸããããZenodoã§é
åžãããŠããScanPyã®anndataãäºåã«ããŠã³ããŒãããŠé²ããããæ³å®ãããŠããã
ãUTAG Tutorial.ipynbãã§ã¯ããŒãããã¯ã®äžã§Zenodoãããã¢ããŒã¿ãããŠã³ããŒãããã®ã§äºåã«ããŠã³ããŒãããŠããå¿
èŠã¯ãªãã
ã UTAG Tutorial ã
GitHubã®ãdocumentationããã©ã«ãã«ãããUTAG Tutorial.ipynbããã¡ã€ã«ãæµããŠã¿ãã
0. ããã±ãŒãžã®import
git clone
ã§ããã±ãŒãžãååŸããå Žåã¯ãimportããããããã«ãutagããã©ã«ãã«ãã¹ãéããŠãããïŒpip install
ã§utsgãååŸããå Žåã¯ãã¹ãéã£ãå Žæã«ã€ã³ã¹ããŒã«ãããŠãããïŒ
import sys
sys.path.append(r"C:\Users\...\utag")
from utag import utag
import scanpy as sc
import squidpy as sq
import anndata
import numpy as np
import matplotlib.pyplot as plt
1. ãã¢ããŒã¿ã®èªã¿èŸŒã¿
Zenodeã®ãªã³ã¯ããScanPyã®anndataãããŠã³ããŒãããã
â» ScanPyã®AnnDataã®æ±ãã«ã€ããŠã¯è©³çŽ°ã«ã¯èª¬æããªãã
adata = sc.read(
'data/healthy_lung_adata.h5ad',
backup_url='https://zenodo.org/record/6376767/files/healthy_lung_adata.h5ad?download=1'
)
71946现èÃ33ããŒã«ãŒã®çºçŸãããªã¯ã¹ãå«ãããŒã¿ã§ããã
ããŒã¿ã®äžèº«ç¢ºèª
X
å±æ§ã®çºçŸãããªã¯ã¹ã確èªããŠã¿ãã
çºçŸãããªã¯ã¹ã¯å¹³åã0ã§SDã1ãªã®ã§æšæºåãããããŒã¿ã§ããããšãããããå€ã®æå°å€ã»æ倧å€ã¯-3ã»3ã«clipãããŠããããã ã
çºçŸãããªã¯ã¹ã確èª
var
å±æ§ãèŠãŠã¿ããš33ã®ããŒã«ãŒã®å
ãæåŸã®5ã€ã¯çŽ°èã®åœ¢ç¶ã«åºã¥ããã©ã¡ãŒã¿ãŒã§ãã£ããïŒããããæšæºåãããŠãããïŒ
varå±æ§
obs
å±æ§ãã1ã€ã®AnnDataã®ã¡ã¿ããŒã¿ã確èªã§ãããå现èã®ç±æ¥ãµã³ãã«ãXY座æšãROI IDãªã©ã®æ
å ±ãåŸãããã
obså±æ§
ãã®ä»ã®obsm
ãobsp
ãvarm
ãuns
å±æ§ã«ã¯ããŒã¿åœ¢ç¶ãäžç¢ºå®ã®ãã®ãå
¥ããããšãå€ãããããã¯èŸæžåã®ããã«adata.å±æ§[ããŒ]
ã®ããã«ã¢ã¯ã»ã¹ããã
ãã®ããŒã®ååã¯èªç±ã«èšå®ã§ããããScanPyã®è§£æã¯ãŒã¯ãããŒã«åŸããšãããŒã®ååã¯ScanPyãçšæãããã®ã«ãªããScanPyã®Plotãªã©ã§ã¯ç¹å®ã®ããŒãåºã«ããŒã¿ãæ¢ãã®ã§åŸã£ãŠãããæ¹ãç¡é£ã
UMAP
obsm
å±æ§ã®X_umap
ããŒã«UMAPæ
å ±ãå
¥ã£ãŠãããScanPyã®scanpy.pl.umap()
ã³ãã³ãã§ã¯ãã®ããŒã®UMAPå€ãåç
§ããŠæ¬¡å
åæžããŒã¿ãèŠèŠåã§ããããããã®è²ããµã³ãã«ã§åããŠã¿ããšã4ãµã³ãã«ã®çŽ°èãçµ±ååŠçãªã©ããåŸã«èŠããã
sc.pl.umap(adata, color="sample")
现èã®ã¢ãããŒã·ã§ã³ãæ¢ã«ä»ããŠããã
sc.pl.umap(adata, color=["cell type"])
Spatial plot
scanpy.pl.spatial()
ã³ãã³ãã¯å现èãXY座æšã«æ圱ã§ãããobsm
å±æ§ã®spatial
ããŒãèªåã§åç
§ããã
adata.obsm["spatial"]ã«çŽ°èã®XY座æšããã
ãã¢ããŒã¿ã®AnnDataã¯26åã®ROIãã²ãšãŸãšãã«ããŠããã®ã§ããã®å
äžã€ãåãåºããŠå¯èŠåããŠã¿ãã
# ãŠããŒã¯ãªROI IDäžèŠ§ååŸ
roi_ids = np.unique(adata.obs["roi"])
# 1ã€ç®ã®ROIã®AnnDataååŸ
tmp_adata = adata[ adata.obs["roi"] == roi_ids[0]]
# plot
sc.pl.spatial(tmp_adata, color="cell type", spot_size=10)
2. ã°ã©ãäœãã®è·é¢éŸå€ãäºå確èª
ã°ã©ãäœãèªäœã¯utag()
æ©èœã®å
éšã§è¡ãããã®ã ããã©ããŸã§é ã现èãæ¥ç¶æããšã¿ãªããã®éŸå€æ±ºãã¯äºåã«ãã£ãŠããã
ã°ã©ãäœãã¯SquidPyããã±ãŒãžã®sq.gr.spatial_neighbors()
æ©èœã§è¡ããããkNNã°ã©ããRadiusã°ã©ããããããŒã°ã©ãã«å¯Ÿå¿ããŠããããã®å
éšã§ã¯æ¬æžã§ã玹ä»ãããããªsklearn.neighbors.NearestNeighbors
ãscipy.spatial.Delaunay
ã䜿ãããŠããã
https://squidpy.readthedocs.io/en/stable/api/squidpy.gr.spatial_neighbors.html
UTAGã§ã¯Radiusã°ã©ãã䜿çšããã
ãŸãã¯1çäŸåãåºããŠã°ã©ããå¯èŠåããã
# 1ã€ã®ROIã®çŽ°èã ãã®AnnDataåãåºã
tmp_adata = adata[adata.obs["roi"] == roi_ids[1]]
fig, ax = plt.subplots(1, 1, figsize = (5,5), dpi = 100)
sc.pl.spatial(tmp_adata, color = 'cell type', spot_size = 7,
ax = ax, frameon = False,
edges = False)
ã°ã©ããäœãåã®çŽ°èäœçœ®ã確èª
sq.gr.spatial_neighbors()
æ©èœã¯å
¥åã«æž¡ããAnnDataãçŽæ¥æŽæ°ãããè¿ãå€ã¯ç¡ãã
max_dist = 15
sq.gr.spatial_neighbors(tmp_adata, radius=max_dist,
coord_type="generic")
sc.pl.spatial()
æ©èœã§å¯èŠåããã
fig, ax = plt.subplots(1, 1, figsize = (5,5), dpi = 100)
sc.pl.spatial(tmp_adata, color = 'cell type', spot_size = 7, ax = ax,
title = 'Spatial Connectivity', frameon = False,
edges = True, neighbors_key = 'spatial_neighbors',
edges_width = 0.5, edges_color = 'black')
è·é¢éŸå€15ã§ã¯é£ãåã现èã®æ¥ç¶ã«ãšã©ãŸã£ãŠãããé£ã®é£ãŸã§ã¯ç¹ãã£ãŠããªãè·é¢éã
è·é¢éŸå€15ã®Radiusã°ã©ã
ã¡ãªã¿ã«è·é¢éŸå€30ãèŠãŠã¿ãã
tmp_adata = adata[adata.obs["roi"] == roi_ids[1]]
max_dist = 30
sq.gr.spatial_neighbors(tmp_adata, radius=max_dist)
fig, ax = plt.subplots(1, 1, figsize = (5,5), dpi = 100)
sc.pl.spatial(tmp_adata, color = 'cell type', spot_size = 7, ax = ax,
title = 'Spatial Connectivity', frameon = False,
edges = True, neighbors_key = 'spatial_neighbors',
edges_width = 0.5, edges_color = 'black')
é£ã®é£ãŸã§ç¹ããããšã§æ¥ç¶æ°ãå¢å€§ããããã å®éã¯è·é¢éŸå€30ã30 ÎŒmã ãšãããšçŽ°èéçžäºäœçšãç¡ããšã¯èšããªãã®ã§å¹Ÿã€ãã®éŸå€ã§è©ŠããŠã¿ããšè¯ãã ããã
è·é¢éŸå€30ã®Radiusã°ã©ã
UTAGã®ã°ã©ãã¯èªå·±ã«ãŒãæãã®ã°ã©ããèšç®ã«äœ¿çšãããããsq.gr.spatial_neighbors()
ã®set_diag=True
ãšãããè·é¢éŸå€ã®ç¢ºèªã®æã«ã¯èŠã¥ãããªãã®ã§èªå·±ã«ãŒãç¡ãã§ããã
tmp_adata = adata[adata.obs["roi"] == roi_ids[1]]
max_dist = 15
sq.gr.spatial_neighbors(tmp_adata, radius=max_dist, set_diag=True)
fig, ax = plt.subplots(1, 1, figsize = (5,5), dpi = 100)
sc.pl.spatial(tmp_adata, color = 'cell type', spot_size = 7, ax = ax,
title = 'Spatial Connectivity', frameon = False,
edges = True, neighbors_key = 'spatial_neighbors',
edges_width = 0.5, edges_color = 'black')
èªå·±ã«ãŒãããã®ã°ã©ã
äœè«ã ããneighbors_key = 'spatial_neighbors'
ãç¡ããšã"neighbors"ãæ¡çšãããããã¯UMAPã®èšç®ã§äœãããè¿å现èãšãªãã
3. å¿ èŠãªããŒã¿ã®ã¿ã«åæž
UTAGã«å¿
èŠãªã®ã¯ããŒã«ãŒçºçŸããŒã¿ãšåº§æšã®ã¿ã§ããã现èã¢ãããŒã·ã§ã³æ
å ±ã䜿çšããªãã
AnnDataããäžèŠãªæ
å ±ãé€ããŠããã
# obså±æ§ããROI IDãšçŽ°èã®XY座æšãååŸ
obs = adata.obs[['roi', 'X_centroid', 'Y_centroid']]
X = adata.X
var = adata.var
minimal_adata = anndata.AnnData(
X = np.array(X).astype(np.float64),
obs = obs,
var = var
)
obsm
å±æ§ã¯èŸæžåã®ããã«æ±ãããkeyãspatial
ãvalueãXY座æšã®numpy.arrayãšããŠä¿åããŠããã
minimal_adata.obsm['spatial'] = np.array(minimal_adata.obs[['Y_centroid', 'X_centroid']])
ããã«äžèŠãªæ
å ±ãåé€ããŠãããvar
å±æ§ã¯ããŒã«ãŒåã ãã®æ
å ±ã«ãªãã
del minimal_adata.var['mean']
del minimal_adata.var['std']
del minimal_adata.obs['Y_centroid']
del minimal_adata.obs['X_centroid']
varå±æ§ ããŒã«ãŒåã ãã«ãªã£ã
minimal_adata
obså±æ§ïŒROI IDã®ã¿
Xå±æ§ïŒ çºçŸãããªã¯ã¹ã¯å
ãšåã
4. UTAGã®å®è¡
utag()
æ©èœã§ãã°ã©ãäœããæ¥ç¶çŽ°èéã®ç¹åŸŽéã®äŒæã次å
åæžãã¯ã©ã¹ã¿ãªã³ã°ãŸã§äžæ°ã«è¡ãããããã¥ãŒããªã¢ã«éãé²ããŠã¿ããïŒåŒæ°ã®è§£èª¬ã¯åŸè¿°ãããïŒ
1ãµã³ãã«åŠç
1ãµã³ãã«ïŒ1é åïŒã®ã¿ã§è¡ãã«ã¯ãç®çãµã³ãã«ã®ã¿ã®AnnDataãçšæããutag()
æ©èœã«æž¡ãã
ãã¢ããŒã¿ã§ã¯æ°ç§ã§çµäºããã
single_slide = minimal_adata[minimal_adata.obs['roi'] == minimal_adata.obs['roi'].unique()[2]].copy()
# Run UTAG on provided data
utag_single_results = utag(
single_slide,
slide_key=None,
max_dist=15,
normalization_mode='l1_norm',
apply_clustering=True,
clustering_method = 'leiden',
resolutions = [0.3]
)
è¿ãå€ã®ãªããžã§ã¯ããAnnDataã§ãåå±æ§ã«äž»æååæãæ¥ç¶æ
å ±ïŒneighborsãdistancesãconnectivitiesïŒãã¯ã©ã¹ã¿ãªã³ã°çµæïŒobs['UTAG Label_leiden_0.3']
ïŒãªã©ãè¿œå ãããŠããã
sc.pl.spatial()
ã§ã¯ã©ã¹ã¿ãªã³ã°çµæãXY座æšäžã«æ圱ããŠç¢ºèªã§ããã
sc.pl.spatial(utag_single_results,
color = 'UTAG Label_leiden_0.3',
spot_size = 10,
title = '',
frameon = False # æ ç¡ã
)
è€æ°ãµã³ãã«åæåŠç
åæã«æ¯èŒè§£æããããµã³ãã«ã¯1ã€ã®AnnDataã«å«ãã ãŸãŸã§UTAGãå®è¡ããããšã§ããµã³ãã«éïŒé åéïŒã§çµ±äžãããã¯ã©ã¹ã¿ãŒçªå·ãåŸãããã®ã§ããµã³ãã«ïŒé åïŒã«ããã©ã®ã¯ã©ã¹ã¿ãŒãå€ãã»å°ãªããè¿°ã¹ãããšãã§ããã
slide_key="roi"
ãªãã·ã§ã³ã§ãµã³ãã«ïŒé åïŒãåããæ
å ±ãæã£ãããŒåãæå®ããã
utag_results = utag(
minimal_adata,
slide_key="roi",
max_dist=15,
normalization_mode='l1_norm',
apply_clustering=True,
clustering_method = 'leiden',
resolutions = [0.3]
)
ãã¢ããŒã¿ã§ã¯3åã»ã©ã§çµäºãããAnnDataã®åå±æ§ã«äž»æååæãæ¥ç¶æ
å ±ïŒneighborsãdistancesãconnectivitiesïŒãã¯ã©ã¹ã¿ãªã³ã°çµæïŒobs['UTAG Label_leiden_0.3']
ïŒãªã©ãè¿œå ãããŠããã
ãã¥ãŒããªã¢ã«éãã®plotæ©èœã§ã¯ã©ã¹ã¿ãªã³ã°çµæãXY座æšäžã§ç¢ºèªããã
def visualize_rois(adata, n_rois = 3, roi_key = 'roi', color_key = 'cell type', dpi = 300):
# increase dpi for a more crisp visualization
fig, axes = plt.subplots(1, n_rois, figsize = (n_rois * 3 + 1,3), dpi = 100)
for i, roi in enumerate(adata.obs[roi_key].unique()[:n_rois]):
a = adata[adata.obs[roi_key] == roi].copy()
if i == n_rois - 1:
sc.pl.spatial(a, color = color_key, spot_size = 10, ax = axes[i], title = '', frameon = False, show = False)
else:
sc.pl.spatial(a, color = color_key, spot_size = 10, ax = axes[i], title = '', frameon = False, legend_loc = 'none', show = False)
plt.tight_layout()
plt.show()
# increase dpi for a more crisp visualization
visualize_rois(utag_results, color_key = 'UTAG Label_leiden_0.3', dpi = 100)
å·Š2ã€ã®é åã¯äŒŒãã¯ã©ã¹ã¿ãŒã§æ§æãããŠãããå³ã®é åã¯åºç»ãåããã¯ã©ã¹ã¿ãŒã幟ã€ãååšããããšãåããã
utag()
æ©èœã®åŒæ°
1ã€ã®æ©èœã§è€æ°ã®åŠçãè¡ããããåŒæ°ãå€ãã
-
adata: AnnData
解æã«çšããAnnDataãobsm["spatial"]
ã«çŽ°èã®åº§æšãããåæã -
channels_to_use: Optional[Sequence[str]]
解æã«çšããããŒã«ãŒïŒå€æ°ïŒåãäœãæå®ããªããã°å šãŠã®å€æ°ã䜿çšããã -
slide_key: {str, None}
utag()
æ©èœã§ã¯è€æ°ã®ãµã³ãã«ã»é åãæ±ãéã«è€æ°ã®AnnDataãæž¡ãã®ã§ã¯ãªãã1ã€ã®AnnDataã«çµ±åããŠããæž¡ãããµã³ãã«ã»é åãåããã®ã«å¿ èŠãªobs
å±æ§ã®ããŒåãæå®ãããããã©ã«ãã§slide_key="Slide"
ã«ãªã£ãŠããã1ãµã³ãã«ã»é åã®AnnDataã§ããã°Noneãšããã°ããã -
save_key: str
ã¯ã©ã¹ã¿ãªã³ã°çµæãAnnDataã«ä¿åããéã®ããŒã®ååã"{save_key}_{method}_{resolution}"ãšããååã«ãªããããã©ã«ãã¯"UTAG Label"ã -
filter_by_variance: bool
åæ£ã§å€æ°ããã£ã«ã¿ãªã³ã°ãããããªããããã©ã«ãã¯FalseãTrueã«ãããšå šå€æ°ã®SDã®äžå€®å€ãã倧ããªSDãæã€å€æ°ã ãã«ãã£ã«ã¿ãªã³ã°ããããïŒãªã®ã§å ¥åç¹åŸŽéãååãããã«ãªããïŒ -
max_dist: float
ã°ã©ãäœãã®éã«æ¥ç¶ãããšããæ倧è·é¢ãobsm["spatial"]
ã®åº§æšã®åäœãpxãªã®ãÎŒmãªã®ããã©ããªè§£å床ïŒÎŒm/pxïŒãªã®ãã§éŸå€ã¯å€§ããå€ããã®ã§èªèº«ã®ããŒã¿ã«åãããŠæå®ããå¿ èŠãããã
ããã©ã«ãã¯20ãããã¯imaging mass cytometryã§1 ÎŒm/pxã®è§£å床ã®ããŒã¿ã§è¯ãçµæãåŸãããéŸå€ãšã®ããšã -
normalization_mode: str
é£æ¥è¡åã®æ£èŠåæ¹æ³ãããã©ã«ãã¯normalization_mode="l1_norm"
ãsklearn.preprocessing.normalize()
ãå®è¡ãããã
ãã以å€ã®æ£èŠåæ¹æ³ã¯çšæãããŠããªãã¿ããã -
keep_spatial_connectivity: bool
ã°ã©ãäœãã®çµæåŸãããé£æ¥è¡åãè·é¢è¡åãæ®ããåŠããslide_key=None
ã®å Žåã¯ãå¿ ãæ®ãã
obsp["spatial_connectivities"]
ãobsp["spatial_distances"]
ãšããŠèšé²ãããã -
pca_kwargs: Dict[str, Any]
æ¥ç¶çŽ°èéã®ç¹åŸŽéã®äŒæããåŸã®æ å ±ã䜿ã£ãŠäž»æååæãè¡ãããã®éã«å éšã§äœ¿ãscanpy.pp.pca()
æ©èœã«æž¡ãåŒæ°ã®èŸæžãããã©ã«ãã§pca_kwargs={"n_comps":10}
ãäž»æå10åã«ãªã£ãŠããã®ã§ãå ¥åç¹åŸŽéã®æ¬¡å æ°ãå€ããšãã¯å¢ãããŠãè¯ãããã -
apply_umap: bool
UMAPãè¡ããåŠããTrueã®å Žåãscanpy.tl.umap()
ãè¡ããããã©ã«ãã§Falseã -
umap_kwargs: Dict[str, Any]
UMAPãè¡ãå Žåã«scanpy.tl.umap()
æ©èœã«æž¡ãåŒæ°ã®èŸæžã -
apply_clustering: bool
ã¯ã©ã¹ã¿ãªã³ã°ãè¡ããåŠããFalseã ãšPCAãUMAPãè¡ãããªããããã©ã«ãã¯Trueã -
clustering_method: Sequence[str]
ã¯ã©ã¹ã¿ãªã³ã°ã«äœ¿çšããæ¹æ³ãLeidenã¢ã«ãŽãªãºã ïŒscanpy.tl.leiden()
ïŒãPARCïŒPARCããã±ãŒãžïŒãKMeansïŒsklearn.cluster.KMeans
ïŒã䜿çšã§ãããããã©ã«ãã¯clustering_method = ["leiden", "parc", "kmeans"]
ã§ã3çš®é¡ã®ã¢ã«ãŽãªãºã ã§ã¯ã©ã¹ã¿ãªã³ã°ãããã -
resolutions: Sequence[float]
ã¯ã©ã¹ã¿ãªã³ã°è§£å床ã«é¢ãããã©ã¡ãŒã¿ãŒãLeidenãšPARCã«ã¯å¯Ÿå¿ããåŒæ°ã«æž¡ããããKMeansã§ã¯int(np.ceil(resolution * 10))
ã®å€ãæž¡ããããããã©ã«ãã§resolutions=[0.05, 0.1, 0.3, 1.0]
ã§ãè€æ°ã®ã¯ã©ã¹ã¿ãªã³ã°è§£å床ã§å®æœãããã -
leiden_kwargs: dict[str, Any]
Leidenæ³ã§ã¯ã©ã¹ã¿ãªã³ã°ããå Žåã«scanpy.tl.leiden()
ã«æž¡ãè¿œå ã®åŒæ°ã®èŸæžã -
parc_kwargs: dict[str, Any]
PARCæ³ã§ã¯ã©ã¹ã¿ãªã³ã°ããéã«PARC()
ã€ã³ã¹ã¿ã³ã¹åã«æž¡ãè¿œå ã®åŒæ°ã®èŸæžã -
parallel: bool
æ¥ç¶çŽ°èéã®ç¹åŸŽéã®äŒæã®åŠçã䞊åå®è¡ãããã©ãããããã©ã«ãã§Trueã -
processes: int
䞊åå®è¡æ°ãããã©ã«ãã¯process=-1
ã§ãã«ã§äžŠåå®è¡ãè¡ãã