单细胞数据分析单细胞测序专题集合

10X空间转录组分析之stlearn联合harmony整合多个空

2022-02-12  本文已影响0人  单细胞空间交响乐

周六了,放松一下,简单学习一下用harmony来整合空间转录组数据,很简单,大家看一眼就会明白。

import stlearn as st
import scanpy as sc
import numpy as np

st.settings.set_figure_params(dpi=150)

读取数据,10XSpaceranger的结果

block1 = st.Read10X("SECTION_A_PATH")
block2 = st.Read10X("SECTION_B_PATH")

前处理

# concatenate 2 samples
adata_concat = block1.concatenate(block2)
# Preprocessing
# Filter genes
sc.pp.filter_genes(adata_concat, min_cells=3)
# Normalize data
sc.pp.normalize_total(adata_concat, target_sum=1e4)
# Log transformation
sc.pp.log1p(adata_concat)
# Store raw data
adata_concat.raw = adata_concat
# Extract top highly variable genes
sc.pp.highly_variable_genes(adata_concat, min_mean=0.0125, max_mean=3, min_disp=0.5)
adata_concat = adata_concat[:, adata_concat.var.highly_variable]
# Scale data
sc.pp.scale(adata_concat, max_value=10)
# Run dimensionality reduction
sc.pp.pca(adata_concat, n_comps=30, svd_solver='arpack')

Run integration with harmony

# Prepare metadata and PCA
meta_data = adata_concat.obs
data_mat = adata_concat.obsm["X_pca"]
# Import and run harmony
import harmonypy as hm
ho = hm.run_harmony(data_mat, meta_data, "batch")
# Mapping back the result to the adata object
adata_concat.obsm["X_pca"] = ho.Z_corr.T

Perform clustering and visualize the results by UMAP

# Build KNN and run UMAP
sc.pp.neighbors(adata_concat, n_pcs =30)
sc.tl.umap(adata_concat)
# Run clustering with leiden
sc.tl.leiden(adata_concat, resolution=0.4)
# Plotting UMAP
sc.pl.umap(adata_concat, color=["batch","leiden"])
图片.png

Map the result back to the original samples

st.settings.set_figure_params(dpi=150)
# Map leiden clusteirng result to block A section 1
block1.obs["leiden"] = adata_concat.obs[adata_concat.obs.batch=="0"].leiden.values

# Plotting the clusteirng result
st.pl.cluster_plot(block1,use_label="leiden")
图片.png
# Map leiden clusteirng result to block A section 2
block2.obs["leiden"] = adata_concat.obs[adata_concat.obs.batch=="1"].leiden.values

# Plotting the clusteirng result
st.pl.cluster_plot(block2,use_label="leiden")
图片.png
Manually combine the images and change the coordinates
# Initialize the spatial
adata_concat.uns["spatial"] = block1.uns["spatial"]

# Horizontally stack 2 images from section 1 and section 2 datasets
combined = np.hstack([block1.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_1"]["images"]["hires"],
                      block2.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_2"]["images"]["hires"]])
# Map the image to the concatnated adata object
adata_concat.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_1"]["images"]["hires"] = combined

# Manually change the coordinate of spots to the right
adata_concat.obs.loc[adata_concat.obs.batch == "1","imagecol"] = adata_concat.obs.loc[adata_concat.obs.batch == "1","imagecol"].values + 2000

# Change to the .obsm["spatial"]
factor = adata_concat.uns["spatial"]["V1_Breast_Cancer_Block_A_Section_1"]["scalefactors"]["tissue_hires_scalef"]
adata_concat.obsm["spatial"] = adata_concat.obs[["imagecol","imagerow"]].values / factor

st.settings.set_figure_params(dpi=200)# Plot the gene
st.pl.gene_plot(adata_concat, gene_symbols="KRT5",crop=False, size=1.4,cell_alpha=1)

图片.png
# Plot the clusters
st.pl.cluster_plot(adata_concat, use_label="leiden", crop=False, size=1.4,cell_alpha=1)

图片.png

生活很好,有你更好,愿有情人总成眷属~~~

上一篇 下一篇

猜你喜欢

热点阅读