課程補(bǔ)充----單細(xì)胞空間聯(lián)合分析之RCTD封裝版(針對visium、bin模式的Stereo-seq焊虏、HD)

作者弱左,Evil Genius

關(guān)于RCTD,本來都不打算更新了炕淮,R版本的聯(lián)合分析我覺得大家自己寫寫就完了拆火,現(xiàn)在看來,還是需要整理一下涂圆。

文章在Robust decomposition of cell type mixtures in spatial transcriptomics | Nature Biotechnology

參考鏈接在GitHub - dmcable/spacexr: Spatial-eXpression-R: Cell type identification (including cell type mixtures) and cell type-specific differential expression for spatial transcriptomics

至于引用該方法的文章们镜,那就很多了。

RCTD有三種模式:

(1)doublet mode:每個spot分配1-2種細(xì)胞類型润歉,推薦用于具有高空間分辨率的技術(shù)模狭,如Stereo-seq、HD等(注意bin的大胁锐谩);
(2)full mode:每個spot分配任意數(shù)量的細(xì)胞類型嚼鹉,推薦用于具有低空間分辨率的技術(shù),如Visium;
(3)multi mode : doublet mode的擴(kuò)展驱富,可以每個spot發(fā)現(xiàn)兩個以上的細(xì)胞類型锚赤,作為全模式的替代選項(xiàng)。

很多博主褐鸥、公司推文寫了非常多的介紹和代碼示例线脚,大家可以借鑒一下。

不過對于這些網(wǎng)絡(luò)寫手叫榕,我更喜歡網(wǎng)絡(luò)俠客這個稱呼浑侥。

官網(wǎng)的教程寫了很多,針對不同精度的平臺都有晰绎,列舉一下:

不過官網(wǎng)分析的結(jié)果是真的丑

Seurat官網(wǎng)也借鑒了RCTD的方法寓落,在Analysis, visualization, and integration of Visium HD spatial datasets with Seurat ? Seurat

示例代碼如下,采用了Doublet mode模式

library(spacexr)

# set up reference
ref <- readRDS("../data/mouse_hippocampus_reference.rds")
ref <- UpdateSeuratObject(ref)
Idents(ref) <- "celltype"

# extract information to pass to the RCTD Reference function
counts <- ref[["RNA"]]$counts
cluster <- as.factor(ref$celltype)
names(cluster) <- colnames(ref)
nUMI <- ref$nCount_RNA
names(nUMI) <- colnames(ref)
reference <- Reference(counts, cluster, nUMI)

# set up query with the RCTD function SpatialRNA
slide.seq <- SeuratData::LoadData("ssHippo")
counts <- slide.seq[["Spatial"]]$counts
coords <- GetTissueCoordinates(slide.seq)
colnames(coords) <- c("x", "y")
coords[is.na(colnames(coords))] <- NULL
query <- SpatialRNA(coords, counts, colSums(counts))


RCTD <- create.RCTD(query, reference, max_cores = 8)
RCTD <- run.RCTD(RCTD, doublet_mode = "doublet")
slide.seq <- AddMetaData(slide.seq, metadata = RCTD@results$results_df)

RCTD目前大多數(shù)用在高精度的平臺荞下,比如Stereo-seq的bin20伶选、bin30的情況,HD的8um情況等锄弱。

但是對于真正的文章考蕾,一般都要根據(jù)自己的課題進(jìn)行修改。

下方是一個文章分析代碼示例

# Load required libraries
library(spacexr)
library(Seurat)
library(ggplot2)
library(dplyr)
library(tidyr)
library(pheatmap)
library(progeny)

# Data Preprocessing

# Load the Spatial data
pdac <- readRDS("/path/to/pdac_most_updated.rds")

# Load the Single cell data
sc <- readRDS("/path/to/sc_rctd.rds")

# Prepare data for RCTD
counts <- sc@assays$RNA@counts
Idents(sc) <- "SCT"
cluster <- as.factor(sc$celltype_nicheDE)
names(cluster) <- colnames(sc)
nUMI <- sc$nCount_RNA
names(nUMI) <- colnames(sc)

# Create the reference object
reference <- Reference(counts, cluster, nUMI)

# Prepare spatial transcriptomics data
counts <- pdac@assays$Spatial@counts

coordinates_list <- lapply(image_names, function(image_name) {
  pos <- GetTissueCoordinates(pdac, image = image_name)
  colnames(pos) <- c('x','y')
  return(pos)
})

coords <- do.call(rbind, coordinates_list)
rownames(coords) <- gsub("^.+\\.", "", rownames(coords))

# Create SpatialRNA object
query <- SpatialRNA(coords, counts, colSums(counts))

# Run RCTD
RCTD <- create.RCTD(query, reference, max_cores = 8)
RCTD.full <- run.RCTD(RCTD, doublet_mode = "full")

# Add RCTD results to Seurat object
pdac <- AddMetaData(pdac, metadata = RCTD.full@results$results_df)

# Normalize weights
weights <- RCTD.full@results$weights
norm_weights <- normalize_weights(weights)

# Add RCTD results as a new assay
pdac[["rctd_full"]] <- CreateAssayObject(data = t(as.matrix(norm_weights)))
if (length(pdac@assays$rctd_full@key) == 0) {
    pdac@assays$rctd_full@key <- "rctd_full_"
}

這樣就獲取了RCTD的解卷積空間細(xì)胞矩陣会宪,當(dāng)然了肖卧,通常分析到這里還沒結(jié)束,我們需要繼續(xù)分析空間細(xì)胞聚類掸鹅,共定位等分析內(nèi)容塞帐。

我們把RCTD拦赠、空間細(xì)胞聚類、共定位分析一起封裝起來葵姥,注意要適用各種空間平臺荷鼠,寫好參數(shù)的設(shè)定。跟cell2location一樣的榔幸,最好匹配的樣本聯(lián)合分析允乐。

#! usr/bin/R
### zhaoyunfei
### 20241111

suppressMessages({
library(Seurat)
library(compositions)
library(tidyverse)
library(clustree)
library(patchwork)
library(argparse)
library(robustbase)
library(ISCHIA)
library(factoextra)
library(dplyr)
library(scran)
library(ggplot2)
library(spacexr)
library(cluster)
library(showtext)
library(gridExtra)
library(pdftools)
})

parser = ArgumentParser()
parser$add_argument("--sc_rds", help="the sc data",required = T)
parser$add_argument("--spatial_rds", help="the sp data",required = T)
parser$add_argument("--sample", help="the sample name",required = T)
parser$add_argument("--outdir", help="the outdir",default = './')
parser$add_argument("--celltype", help="the annotation for celltype")
parser$add_argument("--normalization_method",default = 'SCT')
parser$add_argument("--reduction",help='Dimensional reduction to perform when finding anchors',choices = c('pcaproject','cca'),default = 'pcaproject')
parser$add_argument("--mode",help='mode for RCTD',default = 'doublet',choices = c('doublet','full','multi'))
parser$add_argument("--cell_interest", help="the interest of cell type,eg : 'T,B:Fobro,epi'")
args <- parser$parse_args()
str(args)

sc_rds = args$sc_rds
spatial_rds = args$spatial_rds
outdir = args$outdir
celltype = args$celltype
normalization_method = args$normalization_method
reduction = args$reduction
sample = args$sample
mode = args$mode
cell_interest = args$cell_interest

接下來就是腳本主體

還有 61% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載削咆,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者牍疏。
支付 ¥100.00 繼續(xù)閱讀
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拨齐,隨后出現(xiàn)的幾起案子鳞陨,更是在濱河造成了極大的恐慌,老刑警劉巖瞻惋,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦滤,死亡現(xiàn)場離奇詭異,居然都是意外死亡歼狼,警方通過查閱死者的電腦和手機(jī)掏导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹂匹,“玉大人碘菜,你說我怎么就攤上這事∠弈” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵仰坦,是天一觀的道長履植。 經(jīng)常有香客問我,道長悄晃,這世上最難降的妖魔是什么玫霎? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮妈橄,結(jié)果婚禮上庶近,老公的妹妹穿的比我還像新娘。我一直安慰自己眷蚓,他們只是感情好鼻种,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沙热,像睡著了一般叉钥。 火紅的嫁衣襯著肌膚如雪罢缸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天投队,我揣著相機(jī)與錄音枫疆,去河邊找鬼。 笑死敷鸦,一個胖子當(dāng)著我的面吹牛息楔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扒披,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼钞螟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谎碍?” 一聲冷哼從身側(cè)響起鳞滨,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蟆淀,沒想到半個月后拯啦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熔任,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年褒链,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疑苔。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡甫匹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惦费,到底是詐尸還是另有隱情兵迅,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布薪贫,位于F島的核電站恍箭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞧省。R本人自食惡果不足惜扯夭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞍匾。 院中可真熱鬧交洗,春花似錦、人聲如沸橡淑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隐圾,卻和暖如春伍掀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暇藏。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工蜜笤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盐碱。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓把兔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓮顽。 傳聞我的和親對象是個殘疾皇子县好,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容