作者,Evil Genius
高分辨率的空間轉(zhuǎn)錄組疲眷,最好做細(xì)胞分割禾蚕,一般不要用一刀切的bin劃分方法,但是我們?nèi)绻麤]有條件做細(xì)胞分割狂丝,就需要改進(jìn)一下一刀切的bin分割方法换淆。
盡可能恢復(fù)空間轉(zhuǎn)錄組的細(xì)胞精度矩陣。
空間轉(zhuǎn)錄組學(xué)保留了空間信息几颜,能夠識別細(xì)胞niche倍试,并研究不同細(xì)胞類型在其原生微環(huán)境中的相互作用。這種空間背景對于理解復(fù)雜的生物過程(如發(fā)育蛋哭、疾病進(jìn)展和對治療的反應(yīng))至關(guān)重要县习。
SRT方法可以大致分為兩類。第一類通常被稱為基于成像的方法通過原位雜交(ISH)或原位測序(ISS)為選定數(shù)量的靶基因提供單分子分辨率谆趾,通常在100s-1000s的范圍內(nèi)躁愿。第二類被稱為原位捕獲方法,并在測序前將空間條形碼整合到轉(zhuǎn)錄物上沪蓬,允許整個轉(zhuǎn)錄組覆蓋彤钟,但空間分辨率有限(例如,Visium的spot間距為100 um)跷叉。原位捕獲方法的低空間分辨率使單細(xì)胞的空間分析復(fù)雜化逸雹,需要反卷積、插補和/或整合外部單細(xì)胞轉(zhuǎn)錄組學(xué)資源云挟。然而梆砸,空間轉(zhuǎn)錄組學(xué)的最新進(jìn)展通過Stereo-seq、Seq-Scope园欣、Open-ST和Nova-ST等定序方法提供了納米分辨率的全轉(zhuǎn)錄組圖譜辫樱。這些高分辨率技術(shù)提供了獨特的優(yōu)勢,例如在亞細(xì)胞水平上解析轉(zhuǎn)錄組全表達(dá)的能力俊庇,在某些情況下在亞微米范圍內(nèi)。
目前的分析挑戰(zhàn):高分辨率方法產(chǎn)生的數(shù)據(jù)量巨大鸡挠,需要強大且可擴展的計算工具進(jìn)行高效的數(shù)據(jù)處理和分析辉饱。精確的細(xì)胞分割仍然難以實現(xiàn)。
改進(jìn)后的分析框架
核心分析原理:通過應(yīng)用核密度估計(KDE)將空間基因表達(dá)建模為密度拣展,然后可用于整個組織的穩(wěn)健和準(zhǔn)確的細(xì)胞類型分配彭沼。計算步驟大致可分為讀取數(shù)據(jù)、質(zhì)量控制备埃、數(shù)據(jù)預(yù)處理姓惑、空間基因表達(dá)建模褐奴、生成或獲取特定細(xì)胞類型的基因表達(dá)模式,以及將細(xì)胞類型分配到像素生成細(xì)胞類型映射于毙。
算法的數(shù)據(jù)驗證(模擬數(shù)據(jù))
華大小鼠數(shù)據(jù)(性能驗證)
華大數(shù)據(jù)小鼠腦(性能驗證)
Xenium數(shù)據(jù)
最后看看示例代碼(華大數(shù)據(jù))
pip install sainsc
###conda install bioconda::sainsc
from pathlib import Path
import numpy as np
import pandas as pd
from sainsc.io import read_StereoSeq
####加載數(shù)據(jù)
embryo = read_StereoSeq(stereo_seq_file)
embryo.calculate_total_mRNA()
_ = embryo.plot_genecount(im_kwargs={"vmax": 5})
embryo.counts.crop((5_000, 33_000), (9_000, None))
embryo.calculate_total_mRNA()
_ = embryo.plot_genecount(im_kwargs={"vmax": 5})
from PIL import Image
# export total mRNA as png
u8 = np.uint8
Image.fromarray(
np.clip(embryo.total_mRNA, np.iinfo(u8).min, np.iinfo(u8).max).astype(u8)
).save("embryo_counts.png")
import matplotlib.pyplot as plt
from sainsc.datasets import fetch_embryo_mask
# avoid the DecompressionBombError
Image.MAX_IMAGE_PIXELS = None
mask_file = fetch_embryo_mask()
embryo_mask = np.array(Image.open(mask_file), dtype=bool)
_ = plt.imshow(embryo_mask.T, origin="lower")
embryo.counts.filter_mask(embryo_mask)
embryo.counts.filter_genes_by_count(1)
embryo.calculate_total_mRNA()
_ = embryo.plot_genecount(im_kwargs={"vmax": 5})
###核密度
embryo.gaussian_kernel(4, unit="um")
embryo.calculate_total_mRNA_KDE()
_ = embryo.plot_KDE()
embryo.filter_background(0.9)
_ = embryo.plot_KDE(remove_background=True)
####Cell-type assignment
from sainsc.datasets import fetch_embryo_signatures
signatures = fetch_embryo_signatures()
signatures.iloc[:, :4].head()
embryo.assign_celltype(signatures)
import colorcet as cc
import seaborn as sns
cmap = dict(
zip(embryo.celltypes, sns.color_palette(cc.glasbey, n_colors=len(embryo.celltypes)))
)
_ = embryo.plot_celltype_map(cmap=cmap)
_ = embryo.plot_celltype_map(
crop=((2_000, 6_000), (10_500, 15_000)),
cmap=cmap,
scalebar_kwargs={"location": "upper left"},
)
_ = embryo.plot_assignment_score()
生活很好敦冬,有你更好