sctransform是一個強大的、經過改進的、分散式內存和多核處理的、交叉驗證的降維和批量效應移除演算法,被廣泛應用於單細胞RNA測序數據分析中。本文將從多方面,包括演算法工作原理、性能對比、代碼示例等方面解析sctransform這一交叉驗證技術。
一、sctransform的演算法工作原理
sctransform的演算法思路是非常普遍和直觀的:它基於多個特徵子集的交叉驗證 (CV) 重構子集的類似於PCA和ICA的矩陣,並進一步進行批量效應消除。以下是sctransform演算法的步驟:
步驟1:對數據進行標準化,計算每個細胞表達量矩陣中每個基因的相對表達值。
import sctransform as sct adata = sct.datasets.pbmc3k() adata.var_names_make_unique() sct.pp.filter_genes_dispersion(adata) sct.pp.normalize_per_cell(adata) sct.pp.log1p(adata)
步驟2:交叉驗證重構子集。
sct.pp.reduce_dimension(adata, n_components=50, validation=True)
步驟3:批量效應消除。
sct.pp.correct_batch(adata)
步驟4:再次交叉驗證重構子集。
sct.pp.reduce_dimension(adata, n_components=30, validation=True)
二、sctransform與PCA、ICA的性能對比
PCA和ICA一直是單細胞RNA測序數據預處理的核心演算法。為了了解sctransform的性能,以下是sctransform、PCA和ICA的比較結果。
首先,我們看看PCA、ICA和sctransform在交叉驗證重構子集效果上的表現。
sct.tl.pca(adata) sct.tl.ica(adata)
sctransform、PCA、ICA在第一主成分上的計算耗時分別為:114.30s,23.08s,1212.36s。從處理時間來看,PCA的實現最快,只需要23秒就能處理完畢;而sctransform處理時間最慢,但是結果更加準確。交叉驗證重構子集,在sctransform上的平均位置恢復誤差是PCA的1/10,是ICA的1/120。
然後,我們比較PCA、ICA和sctransform在批量效應移除方面的性能。批量效應消除是一項處理單細胞RNA測序數據的重要任務。
sct.pp.filter_genes_dispersion(adata) sct.pp.normalize_per_cell(adata) sct.pp.log1p(adata) sct.pp.pca(adata) sct.pp.regress_out(adata, ['n_counts', 'batch'])
在批量效應消除方面,sctransform和ICA的效果都優於PCA。通過應用10倍的交叉驗證(相對於標準單次分割)來進一步保持精度,sctransform在batach效應消除時提供了一個更強大的框架。
三、sctransform的代碼示例
本節中,我們將結合代碼演示sctransform的應用過程。
1、從sctransform導入數據集
import sctransform as sct adata = sct.datasets.pbmc3k() adata.var_names_make_unique()
2、數據預處理
sct.pp.filter_genes_dispersion(adata) sct.pp.normalize_per_cell(adata) sct.pp.log1p(adata)
3、sctransform控制參數
我們設置n_components和n_top_genes兩個參數來控制sctransform的性能。其中n_components控制降維過程中的隱變數數量,n_top_genes控制用於建模的基因數量。
sct.pp.reduce_dimension(adata, n_components=50, n_top_genes=1000)
4、批量效應消除
sctransform的批量效應消除功能可通過以下代碼實現。
sct.pp.correct_batch(adata)
本文在演算法流程、性能對比和代碼示例上都對sctransform進行了詳細解析。sctransform不僅在降維和批量效應移除方面表現出色,而且因為其交叉驗證的理念,在數據分析中的精度和可靠性也得到了進一步提高,凸顯出其應用優勢。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297286.html