一、數(shù)據(jù)準(zhǔn)備
10X單細(xì)胞轉(zhuǎn)錄組理論上有3個(gè)文件才能被讀入R進(jìn)行seurat分析,分別是barcodes.tsv 、 genes.tsv和matrix.mtx,文件barcodes.tsv 和 genes.tsv,就是表達(dá)矩陣的行名和列名
pbmc.data <- Read10X(data.dir = "hg19")
#Load the PBMC dataset,創(chuàng)建Seurat對(duì)象,counts為讀取的源文件,project為Seurat對(duì)象想保存的文件名,
#可以加上限定條件:min.cells為組織中分離的最少細(xì)胞數(shù),min.features為一個(gè)細(xì)胞中測(cè)出的最少的基因數(shù)量
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
#查看pbmc中細(xì)胞數(shù)量的3個(gè)方法
pbmc
## An object of class Seurat
## 13714 features across 2700 samples within 1 assay ,細(xì)胞數(shù)量是2700個(gè)
## Active assay: RNA (13714 features, 0 variable features)
ncol(pbmc)
## [1] 2700
ncol(pbmc.data)
文件解讀
genes.tsv文件(有時(shí)也叫features.tsv文件)
文件內(nèi)容:有兩列,第一列為基因ID,第二列為基因Symbol ID,區(qū)分各個(gè)基因。
barcodes.tsv文件
文件內(nèi)容:有一列,內(nèi)容為測(cè)序時(shí)為了區(qū)分各個(gè)細(xì)胞的標(biāo)記信息,稱為Barcodes
matrix.mtx
文件內(nèi)容:有三列,數(shù)字的第一行是測(cè)序的匯總信息。第一行的第一個(gè)為測(cè)序的總基因數(shù)(說(shuō)明genes.tsv文件中有32738行),第二個(gè)為測(cè)序的總細(xì)胞數(shù)(說(shuō)明barcodes.tsv文件中有2700行),第三個(gè)為測(cè)序的總reads數(shù)。 除第一行,其余數(shù)字記錄矩陣信息,前兩列代表坐標(biāo),第三列表示具體某個(gè)細(xì)胞某個(gè)基因的表達(dá)量。
表達(dá)量矩陣
根據(jù)上述三個(gè)文件可以得到表達(dá)量的稀疏矩陣。
下游處理的時(shí)候,一定要保證這3個(gè)文件同時(shí)存在,而且在同一個(gè)文件夾下面,每一個(gè)樣本都是3個(gè)文件,每一個(gè)樣本都是同樣的代碼處理。
二、一般流程
(一)數(shù)據(jù)前處理:質(zhì)控和數(shù)據(jù)過(guò)濾
1.基于QC度量的細(xì)胞選擇與篩選(即質(zhì)控)
2.數(shù)據(jù)標(biāo)化與縮放(即數(shù)據(jù)標(biāo)準(zhǔn)化)
3.高度可變特征的檢測(cè)(特征性基因的選擇)
進(jìn)行質(zhì)控
我們提到單細(xì)胞數(shù)據(jù)質(zhì)控的時(shí)候,?般是指細(xì)胞的過(guò)濾,其實(shí)是從?個(gè)barcode X gene矩陣中過(guò)濾掉?部分不是細(xì)胞的barcode,如細(xì)胞碎?,雙細(xì)胞,死細(xì)胞等。這三類barcode的特征可以通過(guò)其對(duì)應(yīng)的基因表達(dá)情況來(lái)描述:nCount(總基因表達(dá)數(shù))、nFeature(總基因數(shù))、percent.HB(紅細(xì)胞基因表達(dá)?例)、percent.MT(線粒體基因表達(dá)?例)。nCount和nFeature過(guò)?可能是雙細(xì)胞,過(guò)低可能是細(xì)胞碎?。percent.HB刻畫紅細(xì)胞?例,percent.MT刻畫細(xì)胞狀態(tài),值過(guò)?可能是瀕臨死亡的細(xì)胞
PercentageFeatureSet 函數(shù)是根據(jù)counts總數(shù)相除算的打分:該基因集的counts總和/所有基因的counts總和。
基因集占的百分比 = 分子 / 分母 * 100;
分子: 指定基因的 counts種總和,在這次分析中是指細(xì)胞的線粒體基因轉(zhuǎn)錄本數(shù)
分母: 從 meta.data 獲取 nCount_RNA 列,就是每個(gè)cell中所有基因的 counts總和
這個(gè)函數(shù)的意思是,每個(gè)細(xì)胞的線粒體的基因數(shù)/細(xì)胞總基因數(shù)的百分比,將作為一列數(shù)據(jù)加到pbmc的metadata中,這一列的列名為“percent.mt"
#進(jìn)行質(zhì)控,計(jì)算每個(gè)細(xì)胞的線粒體基因轉(zhuǎn)錄本數(shù)的百分比(%),使用[[ ]] 操作符存放到metadata中;
#分析的時(shí)候要確認(rèn)好物種,人用^MT-如果是小鼠的,要用mt
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
#在創(chuàng)建對(duì)象 CreateSeuratObject() 的過(guò)程中,會(huì)自動(dòng)計(jì)算細(xì)胞中獨(dú)特基因與總基因數(shù)目,可以在目標(biāo)對(duì)象中找到
head(pbmc@meta.data,5)
orig.ident nCount_RNA nFeature_RNA percent.mt
AAACATACAACCAC-1 pbmc3k 2419 779 3.0177759
AAACATTGAGCTAC-1 pbmc3k 4903 1352 3.7935958
AAACATTGATCAGC-1 pbmc3k 3147 1129 0.8897363
AAACCGTGCTTCCG-1 pbmc3k 2639 960 1.7430845
AAACCGTGTATGCG-1 pbmc3k 980 521 1.2244898
進(jìn)行質(zhì)控前
進(jìn)行質(zhì)控后(小提琴圖)
#(1)將QC結(jié)果展示為小提琴圖,features中的名稱加引號(hào),ncol=3表示圖形分三列展示
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
進(jìn)行質(zhì)控后散點(diǎn)圖(散點(diǎn)圖)
plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
if (!require(patchwork))install.packages("patchwork")
CombinePlots(plots = list(plot1, plot2))
nCount(總基因表達(dá)數(shù))、nFeature(總基因數(shù))、percent.HB(紅細(xì)胞基因表達(dá)?例)、percent.MT(線粒體基因表達(dá)?例)
數(shù)據(jù)標(biāo)準(zhǔn)化
方法一?normalization函數(shù),默認(rèn)LogNormalize的方法
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
方法二 SCTransform,是一種三合一的方法,可以將質(zhì)控,歸一化和去識(shí)別高變基因合為一體
pbmc <- SCTransform(pbmc, vars.to.regress = "percent.mt", verbose = FALSE)
數(shù)據(jù)標(biāo)準(zhǔn)化的意義
- 去除測(cè)序深度帶來(lái)的影響:
- 例:細(xì)胞A中總reads數(shù)10,基因a的reads數(shù)為2;細(xì)胞B中總reads數(shù)1000,基因a的reads數(shù)為20。并不能說(shuō)基因a在細(xì)胞B中表達(dá)量大于A,故需要進(jìn)行標(biāo)準(zhǔn)化。
- 標(biāo)準(zhǔn)化原則:
- 每個(gè)細(xì)胞的每個(gè)基因的count數(shù)除以該細(xì)胞總count數(shù),然后乘以因子(10000),再進(jìn)行l(wèi)og(n+1)轉(zhuǎn)換
- 標(biāo)準(zhǔn)化后的數(shù)據(jù)保存在pbmc@assays
高變基因的選擇
FindVariableFeatures()參數(shù)意義:
- FindVariableFeatures 函數(shù)有 3 種選擇高表達(dá)變異基因的方法,可以通過(guò) selection.method參數(shù)來(lái)選擇,它們分別是: vst(默認(rèn)值), mean.var.plot 和 dispersion。 nfeatures 參數(shù)的默認(rèn)值是 2000,可以改變。如果 selection.method 參數(shù)選擇的是 mean.var.plot,就不需要人為規(guī)定高表達(dá)變異基因的數(shù)目,算法會(huì)自動(dòng)選擇合適的數(shù)目。 建議使用完 FindVariableFeatures 函數(shù)后,用 VariableFeaturePlot 對(duì)這些高表達(dá)變異基因再做個(gè)可視化,看看使用默認(rèn)值 2000 會(huì)不會(huì)有問(wèn)題。
#選擇高變基因,使用“vst”方法選擇2000個(gè)高變基因
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)
#儲(chǔ)存前10位高變基因
top10 <- head(VariableFeatures(pbmc), 10)
plot3 <- VariableFeaturePlot(pbmc)#高變基因散點(diǎn)圖
plot4 <- LabelPoints(plot=plot3,
points = top10,
repel=TRUE)#top10加上基因名標(biāo)簽
CombinePlots(plots = list(plot3, plot4), ncol =2)#結(jié)合到一張圖中
尋找到的高變基因以及高變基因中的Top10
(二)PCA分析:線性降維
PCA分析,并且找到后續(xù)數(shù)據(jù)處理的維度
#數(shù)據(jù)標(biāo)準(zhǔn)化 Scale
#對(duì)所有基因進(jìn)行標(biāo)準(zhǔn)化
# all.genes <- rownames(pbmc)
# pbmc <- ScaleData(pbmc, features = all.genes)
#只對(duì)上述2000個(gè)高變基因進(jìn)行標(biāo)準(zhǔn)化,通常僅對(duì)高變基因進(jìn)行標(biāo)準(zhǔn)化和降維
pbmc <- ScaleData(pbmc)
#PCA降維
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))
#選擇前5個(gè)維度進(jìn)行查看
print(pbmc[["pca"]], dims = 1:5, nfeatures = 5)
DimPlot(pbmc, reduction = "pca")
head(pbmc[['pca']]@cell.embeddings)[1:2,1:2]
VizDimLoadings(pbmc, dims = 1:2, reduction = "pca")
#使用DimHeatmap可視化函數(shù)查看樣品中前500個(gè)細(xì)胞在前6個(gè)PCA中的熱圖:
DimHeatmap(pbmc, dims = 1:6, cells = 500, balanced = TRUE)
#繪制ElbowPlot圖
ElbowPlot(pbmc)
#繪制JackStraw圖
pbmc <- JackStraw(pbmc,num.replicate = 100)
pbmc <- scoreJackStraw(pbmc,dims = 1:20)
JackStrawPlot(pbmc, dims = 1:20)
str(pbmc)
ScaleData()標(biāo)準(zhǔn)化函數(shù)作用:
- 為后續(xù)PCA降維做準(zhǔn)備。
- PCA降維要求數(shù)據(jù)為正態(tài)分布,即平均值為0,方差為1。
DimPlot()函數(shù)生成主成分分析結(jié)果圖
head(pbmc[['pca']]@cell.embeddings)[1:2,1:2]
這段代碼的含義是查看pbmc數(shù)據(jù)集中PCA降維后的細(xì)胞嵌入的前兩行和前兩列的數(shù)據(jù)。
輸出結(jié)果如下:
PC_1 PC_2
AAACATACAACCAC-1 -4.8166626 0.3984358
AAACATTGAGCTAC-1 -0.6014593 -4.1511997
這個(gè)結(jié)果表示PCA降維后的細(xì)胞嵌入中的前兩行數(shù)據(jù),其中第一列是PC_1的值,第二列是PC_2的值。每一行代表一個(gè)細(xì)胞,在低維空間中的位置由PC_1和PC_2的值表示。
VizDimLoadings(pbmc, dims = 1:2, reduction = "pca")
#使用DimHeatmap可視化函數(shù)查看樣品中前500個(gè)細(xì)胞在前6個(gè)PCA中的熱圖:
DimHeatmap(pbmc, dims = 1:6, cells = 500, balanced = TRUE)
確定數(shù)據(jù)集的維度
目的:每個(gè)維度(pc)本質(zhì)上代表一個(gè)“元特征”,它將相關(guān)特征集中的信息組合在一起。因此,越在頂部的主成分越可能代表數(shù)據(jù)集。然而,我們應(yīng)該選擇多少個(gè)主成分才認(rèn)為我們選擇的數(shù)據(jù)包含了絕大部分的原始數(shù)據(jù)信息呢?
方法
(1)ElbowPlot函數(shù),基于每個(gè)主成分所解釋的方差百分比的排序,通過(guò)尋找“拐點(diǎn)”來(lái)判斷幾個(gè)維度可包含數(shù)據(jù)的大部分信息。
(2)JackStraw()函數(shù), 使用基于零分布的置換檢驗(yàn)方法。JackStraw分析是一種常用的統(tǒng)計(jì)方法,用于評(píng)估單細(xì)胞RNA測(cè)序數(shù)據(jù)中的主要和次要成分是否具有統(tǒng)計(jì)顯著性。它基于隨機(jī)化方法,通過(guò)將原始數(shù)據(jù)中的樣本標(biāo)簽進(jìn)行隨機(jī)重排,來(lái)估計(jì)每個(gè)主成分的p值。這樣可以判斷哪些主成分是真實(shí)的信號(hào),而不是隨機(jī)噪聲。JackStrawPlot()函數(shù)提供可視化方法,用于比較每一個(gè)主成分的p-value的分布,虛線是均勻分布;顯著的主成分富集有小p-Value基因,實(shí)線位于虛線左上方。
具體解釋如下:
pbmc <- JackStraw(pbmc, num.replicate = 100)
#對(duì)pbmc數(shù)據(jù)集進(jìn)行JackStraw分析。JackStraw函數(shù)用于計(jì)算主成分的p值和Q值
#num.replicate參數(shù)指定了隨機(jī)重排的次數(shù),這里設(shè)置為100次
pbmc <- scoreJackStraw(pbmc, dims = 1:20)
#使用scoreJackStraw函數(shù)對(duì)pbmc數(shù)據(jù)集進(jìn)行評(píng)分
#dims參數(shù)指定了要評(píng)分的主成分的范圍,這里選擇了前20個(gè)主成分
JackStrawPlot(pbmc, dims = 1:20)
#使用JackStrawPlot函數(shù)繪制JackStraw圖
#JackStraw圖以p值和Q值作為縱軸,主成分的編號(hào)作為橫軸,展示主成分的顯著性和噪聲水平
通過(guò)JackStraw分析和JackStraw圖,我們可以評(píng)估每個(gè)主成分的顯著性,并確定哪些主成分是真實(shí)的信號(hào),進(jìn)而進(jìn)行后續(xù)的數(shù)據(jù)解釋和分析。
(三)細(xì)胞聚類
將具有相似基因表達(dá)模式的細(xì)胞之間繪制邊緣,然后將他們劃分為一個(gè)內(nèi)聯(lián)群體
并進(jìn)行tSNE和UMAP分析
注意:umap的使用需要先在電腦上搭建python環(huán)境,檢查是否下載成功標(biāo)志就是:library(umap)能否成功
# 細(xì)胞聚類
# tSNE聚類與UMAP聚類選擇一個(gè)執(zhí)行即可,都是基于PCA降維的結(jié)果進(jìn)行聚類
# 此處維度選擇10是根據(jù)上述“ElbowPlot(pbmc)”生成的主成分圖確定的,圖中拐點(diǎn)為10,表示10個(gè)維度足以反映高維信息
#計(jì)算最鄰近距離
pbmc <- FindNeighbors(pbmc, dims = 1:10) # Louvain cluster graph based
#聚類,包含設(shè)置下游聚類的“間隔尺度”的分辨率參數(shù)resolution ,增加值會(huì)導(dǎo)致更多的聚類。
pbmc <- FindClusters(pbmc, resolution = 0.5)
#可以使用idents函數(shù)找到聚類情況:
#查看前5個(gè)細(xì)胞的聚類id
head(Idents(pbmc), 5)
#UMAP降維
pbmc <- RunUMAP(pbmc, dims = 1:10)
DimPlot(pbmc, reduction = "umap")
#tSNE降維
#pbmc <- RunTSNE(pbmc, dims = 1:10)
#DimPlot(pbmc, reduction = "tsne")
UMAP降維聚類
#查看FCGR3A和CD14基因分布
FeaturePlot(pbmc,features = c('FCGR3A','CD14'),reduction = 'umap')
TSNE降維聚類
t-SNE vs UMAP?
t-SNE(t-Distributed Stochastic Neighbor Embedding)和UMAP(Uniform Manifold Approximation and Projection)都是常用的非線性降維方法,用于將高維數(shù)據(jù)映射到低維空間。以下是它們的一些優(yōu)劣比較:
t-SNE的優(yōu)勢(shì):保留局部結(jié)構(gòu):t-SNE能夠更好地保留數(shù)據(jù)的局部結(jié)構(gòu),尤其適用于可視化和聚類分析。它可以幫助發(fā)現(xiàn)數(shù)據(jù)中的類別、簇或群集,并在降維后的空間中保持它們的相對(duì)距離。
t-SNE的劣勢(shì):計(jì)算復(fù)雜度高:t-SNE的計(jì)算復(fù)雜度較高,尤其是在大規(guī)模數(shù)據(jù)集上。它的運(yùn)行時(shí)間和內(nèi)存消耗通常比較大,可能需要更多的計(jì)算資源和時(shí)間。tSNE的時(shí)間復(fù)雜度為O(n2),UMAP的時(shí)間復(fù)雜度為O(n1.14)
UMAP的優(yōu)勢(shì):保留全局結(jié)構(gòu):UMAP相對(duì)于t-SNE來(lái)說(shuō)更擅長(zhǎng)保留數(shù)據(jù)的全局結(jié)構(gòu)。它能夠更好地捕捉數(shù)據(jù)之間的整體關(guān)系和距離,對(duì)于發(fā)現(xiàn)數(shù)據(jù)集中的全局模式和結(jié)構(gòu)更有優(yōu)勢(shì),更好的保留真實(shí)距離信息
UMAP的劣勢(shì):參數(shù)選擇:UMAP有一些參數(shù)需要調(diào)整,如鄰域大小、最小距離等。這些參數(shù)的選擇可能對(duì)最終的降維結(jié)果產(chǎn)生影響,需要一定的經(jīng)驗(yàn)和實(shí)驗(yàn)來(lái)確定最佳的參數(shù)設(shè)置。
綜上所述,選擇t-SNE還是UMAP取決于具體的數(shù)據(jù)集和分析目的。如果重點(diǎn)是保留局部結(jié)構(gòu)和發(fā)現(xiàn)數(shù)據(jù)中的類別或簇,則t-SNE可能更適合。如果需要保留全局結(jié)構(gòu)和捕捉數(shù)據(jù)之間的整體關(guān)系,則UMAP可能更適合。在實(shí)際應(yīng)用中,可以嘗試使用兩種方法,并比較它們?cè)诮稻S效果和計(jì)算效率上的差異,選擇最適合的方法。
【干貨】高分SCI要用tSNE還是UMAP? - 知乎 (zhihu.com)
#添加細(xì)胞類群的標(biāo)簽
DimPlot(pbmc, reduction = "umap",label = TRUE)
LabelClusters(DimPlot(pbmc, reduction = "umap"),id = 'ident')
#可以在這里保存為以下形式,就不必再執(zhí)行以上步驟
saveRDS(pbmc, file = "../output/pbmc_tutorial.rds")
(四)差異分析:尋找marker gene
通過(guò)差異表達(dá)找到每個(gè)聚類的marker gene,差異分析可以有多種形式,如找到所有聚類的marker gene(如cluster1中所有的markgene是指cluster1相對(duì)于其余所有cluster是差異的)、兩個(gè)cluster之間的差異分析、某個(gè)cluster中兩個(gè)樣品之間差異分析等
#差異分析
# find all markers of cluster 0(尋找cluster0的基因)
cluster0.markers <- FindMarkers(pbmc, ident.1 = 0, min.pct = 0.25)
head(cluster0.markers, n = 5)
#可以根據(jù)需要,將每個(gè)聚類的差異基因都找一遍,方便后續(xù)分析
#head(cluster0.markers, n = 5),可以將n = 5進(jìn)行調(diào)整,比如換成10,即可顯示10個(gè)差異基因
###參數(shù)解釋
#ident.1 設(shè)置待分析的細(xì)胞類別
#min.pct 在兩組細(xì)胞中的任何一組中檢測(cè)到的最小百分
#thresh.test 在兩組細(xì)胞間以一定數(shù)量的差異表達(dá)(平均)
#max.cells.per.ident 通過(guò)降低每個(gè)類的采樣值,提高計(jì)算速度
#尋找cluster1的差異基因
cluster1.markers <- FindMarkers(pbmc, ident.1 = 1, min.pct = 0.25)
#找到cluster5和cluster0、3之間的markgene
cluster5.markers <- FindMarkers(pbmc, ident.1 = 5, ident.2 = c(0, 3), min.pct = 0.25)
#找到每個(gè)cluster相比于其余cluster的markgene,只報(bào)道陽(yáng)性的markgene
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
## 所有基因先分組,再根據(jù)avg_log2FC進(jìn)行排序
pbmc.markers %>% group_by(cluster) %>% top_n(n = 2, wt = avg_log2FC)
FindAllMarkers()參數(shù)意義:
- only.pos = TRUE:只尋找上調(diào)的基因
- min.pct = 0.1:某基因在細(xì)胞中表達(dá)的細(xì)胞數(shù)占相應(yīng)cluster細(xì)胞數(shù)最低10%
- logfc.threshold = 0.25 :fold change倍數(shù)為0.25
- 該函數(shù)是決速步,執(zhí)行比較耗時(shí)。
根據(jù)avg_log2FC進(jìn)行排序
#VlnPlot: 基于細(xì)胞類群的基因表達(dá)概率分布
VlnPlot(pbmc, features = c("MS4A1", "CD79A"))
VlnPlot(pbmc, features = c("NKG7", "PF4"), slot = "counts", log = TRUE)
(五)可視化標(biāo)記基因,即細(xì)胞注釋
秀兒!10+生信分析最大的難點(diǎn)在這里!30多種方法怎么選?今天幫你解決!_pbmc (sohu.com)
#對(duì)marker_gene進(jìn)行篩選p_val<0.05
pbmc.markers %>% subset(p_val<0.05)
## 所有基因先分組,再根據(jù)avg_log2FC進(jìn)行排序,選出每組前十個(gè)
list_marker <- pbmc.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC)
print(list_marker,n = Inf)#打印list_marker所有值
#保存差異分析結(jié)果到csv
df_marker=data.frame(p_val = list_marker$p_val,
avg_log2FC = list_marker$avg_log2FC,
pct.1 = list_marker$pct.1,
pct.2 = list_marker$pct.2,
p_val_adj = list_marker$p_val_adj,
cluster = list_marker$cluster,
gene = list_marker$gene)
write.csv(df_marker,"marker.csv")
#添加細(xì)胞注釋信息,通過(guò)CellMarker注釋每一個(gè)cluster代表的細(xì)胞類群
new.cluster.ids <- c("Memory CD4 T", "Activated effector", "Pro-inflammatory macrophage", "CDC2", "CD8 T", "Non-classical monocyte",
"CD3/CD28-stimulated NK", "Megakaryocyte")
names(new.cluster.ids) <- levels(pbmc)
pbmc <- RenameIdents(pbmc, new.cluster.ids)
DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()
將csv文件中各組的top10marker基因數(shù)據(jù)處理成便于CellMarker需求形式
使用CellMarker中的cell annotation工具進(jìn)行注釋CellMarker2.0 (hrbmu.edu.cn)
展示注釋后的DimPlot圖
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-755974.html
小白第一次寫文章,歡迎大家評(píng)論區(qū)指正!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755974.html
到了這里,關(guān)于生信小白學(xué)單細(xì)胞轉(zhuǎn)錄組(sc-RNA)測(cè)序數(shù)據(jù)分析——R語(yǔ)言的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!