作者,Evil Genius
這一篇給大家推薦一個空轉(zhuǎn)分析的優(yōu)秀軟件---SpaCET,文章在Estimation of cell lineages in tumors from spatial transcriptomics data,2023年1月發(fā)表于NC,個人感覺軟件集中了空轉(zhuǎn)分析的重要功能,包括細(xì)胞互作和共定位,軟件在SpaCET。
SpaCET是一個R包,用于分析癌癥空間轉(zhuǎn)錄組學(xué)(ST)數(shù)據(jù)集,以估計腫瘤微環(huán)境中的細(xì)胞譜系和細(xì)胞間相互作用。簡單地說,SpaCET首先通過整合常見惡性腫瘤的基因模式來估計癌細(xì)胞的豐度。SpaCET隨后使用約束回歸模型校準(zhǔn)局部組織密度,并確定基質(zhì)細(xì)胞和免疫細(xì)胞譜系分?jǐn)?shù)。此外,SpaCET可以揭示腫瘤微環(huán)境中假定的細(xì)胞-細(xì)胞相互作用。此外,SpaCET可以整合匹配的scRNA-seq數(shù)據(jù)集作為自定義參考來進(jìn)行細(xì)胞類型反卷積。

安裝
# install.packages("devtools")
devtools::install_github("data2intelligence/SpaCET")
示例一、依據(jù)內(nèi)置數(shù)據(jù)集分析空間數(shù)據(jù)
創(chuàng)建對象(10X數(shù)據(jù))
library(SpaCET)
# set the path to the in-house breast cancer ST data. User can set the paths to their own data.
visiumPath <- file.path(system.file(package = "SpaCET"), "extdata/Visium_BC")
# load ST data to create an SpaCET object.
SpaCET_obj <- create.SpaCET.object.10X(visiumPath = visiumPath)
# show this object.
str(SpaCET_obj)
# show this object.
SpaCET_obj@input$counts[1:8,1:6]
## 8 x 6 sparse Matrix of class "dgCMatrix"
## 50x102 59x19 14x94 47x13 73x43 61x97
## MIR1302-2HG . . . . . .
## FAM138A . . . . . .
## OR4F5 . . . . . .
## AL627309.1 . . . . . 1
## AL627309.3 . . . . . .
## AL627309.2 . . . . . .
## AL627309.4 . . . . . .
## AL732372.1 . . . . . .
展示基礎(chǔ)信息
# calculate the QC metrics
SpaCET_obj <- SpaCET.quality.control(SpaCET_obj)
# plot the QC metrics
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "QualityControl",
spatialFeatures=c("UMI","Gene")
)

Deconvolve ST data
通過兩個階段,SpaCET.deconvolution將所有ST spot的混合物分解為惡性細(xì)胞、免疫細(xì)胞和基質(zhì)細(xì)胞。SpaCET首先通過拷貝數(shù)改變(CNA)的基因模式和常見惡性腫瘤的表達(dá)變化來估計惡性細(xì)胞的比例。隨后,基于來自不同癌癥類型的單細(xì)胞RNA-seq數(shù)據(jù)集的內(nèi)部分層細(xì)胞譜系,使用約束回歸模型來確定免疫和基質(zhì)細(xì)胞分?jǐn)?shù),并包括一個無法識別的組件來校準(zhǔn)跨組織區(qū)域的細(xì)胞密度變化。
具體來說,需要使用cancerType參數(shù)指定該腫瘤ST數(shù)據(jù)集中的癌癥類型,利用該參數(shù)選擇癌癥類型特異性的CNA或表達(dá)特征來推斷惡性細(xì)胞分?jǐn)?shù)。癌癥類型的代碼可以在下拉列表中找到。當(dāng)將ST點的表達(dá)譜與癌癥類型特異性標(biāo)記相關(guān)聯(lián)時,將癌癥類型特異性CNA標(biāo)記作為第一選項,因為染色體不穩(wěn)定性被廣泛認(rèn)為是人類腫瘤的一個一致特征?;蛘撸绻麤]有點與CNA特征強(qiáng)相關(guān),癌癥類型特異性表達(dá)特征將被激活。這種情況可能是由于低CNA的染色體穩(wěn)定的癌細(xì)胞。對于數(shù)據(jù)集中未包含的癌癥類型,通過平均所有癌癥類型特異性表達(dá)特征來創(chuàng)建泛癌癥表達(dá)特征。
How many caner types are in the gene pattern dictionary?

# deconvolve ST data
SpaCET_obj <- SpaCET.deconvolution(SpaCET_obj, cancerType="BRCA", coreNo=8)
# show the ST deconvolution results
SpaCET_obj@results$deconvolution$propMat[1:13,1:6]
## 50x102 59x19 14x94 47x13 73x43
## Malignant 2.860636e-01 1 6.845966e-02 3.899756e-01 9.608802e-01
## CAF 3.118545e-01 0 3.397067e-01 1.111980e-01 3.372692e-02
## Endothelial 5.510895e-02 0 1.427060e-01 3.080531e-02 5.263544e-03
## Plasma 2.213392e-02 0 1.507382e-02 1.183170e-02 9.071809e-06
## B cell 3.885793e-03 0 9.271616e-02 1.406470e-01 1.329085e-06
## T CD4 1.344389e-01 0 1.554305e-02 1.249414e-01 1.112392e-05
## T CD8 7.578696e-03 0 2.514558e-07 1.379856e-03 1.123043e-06
## NK 7.104005e-04 0 1.670019e-06 4.890387e-08 3.562557e-07
## cDC 1.421632e-07 0 8.278023e-02 7.584295e-02 2.851146e-07
## pDC 1.606443e-06 0 2.283754e-02 1.805671e-02 3.878344e-07
## Macrophage 1.703304e-01 0 5.021248e-02 9.531511e-02 9.253645e-07
## Mast 7.905067e-08 0 1.621498e-05 1.333430e-07 1.162099e-07
## Neutrophil 1.380073e-05 0 9.528996e-07 1.167503e-08 9.908635e-05
可視化
# show the spatial distribution of malignant cells and macrophages.
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "CellFraction",
spatialFeatures=c("Malignant","Macrophage")
)

# show the spatial distribution of all cell types.
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "CellFraction",
spatialFeatures="All",
pointSize = 0.1,
nrow=5
)

細(xì)胞互作
識別細(xì)胞共定位
SpaCET provides SpaCET.CCI.colocalization and SpaCET.visualize.colocalization to compute and visualize the co-localized cell-type pairs.
# calculate the cell-cell colocalization.
SpaCET_obj <- SpaCET.CCI.colocalization(SpaCET_obj)
# visualize the cell-cell colocalization.
SpaCET.visualize.colocalization(SpaCET_obj)

Analyze the L-R network enrichment within ST spots
細(xì)胞共定位并不直接表明物理相互作用。因此,我們通過分析ST點內(nèi)配體-受體(L-R)的相互作用來尋求細(xì)胞-細(xì)胞相互作用的進(jìn)一步證據(jù)。
# calculate the L-R network score across ST spots.
SpaCET_obj <- SpaCET.CCI.LRNetworkScore(SpaCET_obj,coreNo=8)
# visualize the L-R network score.
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "LRNetworkScore",
spatialFeatures=c("Network_Score","Network_Score_pv")
)

每個ST點的L-R網(wǎng)絡(luò)評分表明了每個位置配體-受體相互作用的總體強(qiáng)度,而不是兩種細(xì)胞類型之間的具體相互作用。因此,SpaCET進(jìn)一步對每個細(xì)胞類型對進(jìn)行了L-R網(wǎng)絡(luò)評分的富集分析。例如,對于CAF和M2細(xì)胞在乳腺腫瘤組織中的共定位,SpaCET將所有ST點分為四類:CAF-M2共定位,CAF或M2占主導(dǎo)。分析發(fā)現(xiàn),CAF- m2共定位點比CAF/ m2主導(dǎo)點具有更實質(zhì)性的L-R交互網(wǎng)絡(luò)評分。

Enrich cell-cell interactions at the tumor-immune interface
# Identify the Tumor-Stroma Interface
SpaCET_obj <- SpaCET.identify.interface(SpaCET_obj)
# Visualize the Interface
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "Interface")

# Compute the distance of CAF-M2 to tumor border
SpaCET.distance.to.interface(SpaCET_obj, cellTypePair=c("CAF", "Macrophage M2"))

Explore cancer cell states
腫瘤細(xì)胞的基因表達(dá)譜(即癌細(xì)胞狀態(tài))由腫瘤細(xì)胞的遺傳背景和周圍環(huán)境的細(xì)胞-細(xì)胞相互作用共同決定。作為探索性擴(kuò)展,SpaCET可以自動探索不同癌細(xì)胞狀態(tài)的空間分布。
# further deconvolve malignant cell states
SpaCET_obj <- SpaCET.deconvolution.malignant(SpaCET_obj, malignantCutoff = 0.7, coreNo = 8)
# show cancer cell state fraction of the first five spots
SpaCET_obj@results$deconvolution$propMat[c("Malignant cell state A","Malignant cell state B"),1:6]
## 50x102 59x19 14x94 47x13 73x43 61x97
## Malignant cell state A 0.2295498 9.999900e-01 6.845962e-02 0.2038680 9.608802e-01 0.6517794
## Malignant cell state B 0.0565137 1.239573e-11 3.921715e-08 0.1861075 2.340661e-09 0.2675332
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "CellFraction",
spatialFeatures=c("Malignant","Malignant cell state A","Malignant cell state B"),
nrow=1
)

示例二、依據(jù)匹配的單細(xì)胞數(shù)據(jù)集分析空間數(shù)據(jù)
library(SpaCET)
PDAC_Path <- system.file("extdata", 'oldST_PDAC', package = 'SpaCET')
load(paste0(PDAC_Path,"/st_PDAC.rda"))
# show count matrix
counts[1:6,1:5]
## 10x10 10x13 10x14 10x15 10x16
## A1CF 0 0 0 0 0
## A2M 13 0 4 0 0
## A4GALT 1 0 0 0 0
## A4GNT 0 0 1 0 0
## AAAS 0 0 0 0 0
## AACS 0 0 0 0 0
# show coordinate matrix
spotCoordinates[1:5,]
## X Y
## 10x10 10 10
## 10x13 10 13
## 10x14 10 14
## 10x15 10 15
## 10x16 10 16
# load ST data to create an SpaCET object.
SpaCET_obj <- create.SpaCET.object(
counts=counts,
spotCoordinates=spotCoordinates,
imagePath=NA,
platform = "oldST"
)
# show this object.
str(SpaCET_obj)
解卷積
# load sc data
PDAC_Path <- system.file("extdata", 'oldST_PDAC', package = 'SpaCET')
load(paste0(PDAC_Path,"/sc_PDAC.rda"))
# show count matrix
sc_counts[1:6,1:5]
## c1 c2 c3 c4 c5
## A1BG 0 0 0 0 0
## A1CF 0 0 0 1 0
## A2M 0 0 0 0 0
## A2ML1 0 0 0 0 0
## A3GALT2 0 0 0 0 0
## A4GALT 0 0 0 0 0
# show cell annotation matrix
sc_annotation[1:6,]
## cellID bio_celltype
## c1 "c1" "Acinar cells"
## c2 "c2" "Ductal - terminal ductal like"
## c3 "c3" "Ductal - terminal ductal like"
## c4 "c4" "Ductal - CRISP3 high/centroacinar like"
## c5 "c5" "Cancer clone A"
## c6 "c6" "Cancer clone A"
# show cell type lineage tree
head(sc_lineageTree)
## $Cancer
## [1] "Cancer clone A" "Cancer clone B"
##
## $Ductal
## [1] "Ductal - APOL1 high/hypoxic" "Ductal - CRISP3 high/centroacinar like"
## [3] "Ductal - MHC Class II" "Ductal - terminal ductal like"
##
## $Macrophage
## [1] "Macrophages A" "Macrophages B"
##
## $mDC
## [1] "mDCs A" "mDCs B"
##
## $`Acinar cells`
## [1] "Acinar cells"
##
## $`Endocrine cells`
## [1] "Endocrine cells"
SpaCET_obj <- SpaCET.deconvolution.matched.scRNAseq(
SpaCET_obj,
sc_counts=sc_counts,
sc_annotation=sc_annotation,
sc_lineageTree=sc_lineageTree,
coreNo=8
)
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "CellFraction",
spatialFeatures = c("Cancer clone A","Cancer clone B","Acinar cells","Ductal - CRISP3 high/centroacinar like"),
nrow=2
)

基因空間表達(dá)可視化
# Markers for cancer clone A and B, acinar cell, and centroacinar like ductal cell
SpaCET.visualize.spatialFeature(
SpaCET_obj,
spatialType = "GeneExpression",
spatialFeatures = c("TM4SF1","S100A4","PRSS1","CRISP3"),
nrow=2
)
