免疫组库数据分析||immunarch教程:Clonotype tracking

immunarch — Fast and Seamless Exploration of Single-cell and Bulk T-cell/Antibody Immune Repertoires in R

10× Genomics单细胞免疫组库VDJ分析必知必会
免疫组库数据分析||immunarch教程:克隆型分析
免疫组库数据分析||immunarch教程:探索性数据分析
免疫组库数据分析||immunarch教程:载入10X数据
免疫组库数据分析||immunarch教程:快速开始
免疫组库数据分析||immunarch教程:GeneUsage分析
免疫组库数据分析||immunarch教程:Diversity 分析

今天,我们继续我们的免疫组库数据分析的Demos,这一次我们来谈谈Clonotype tracking分析。像我这样刚入门免疫组库的人首先会问什么是Clonotype tracking?

克隆型追踪(Clonotype tracking)是监测疫苗接种和癌症免疫感兴趣的克隆型频率变化的常用方法。例如,研究人员可以在疫苗接种前和接种后的不同时间点跟踪克隆类型,或分析肿瘤样本中恶性克隆型的生长。所谓的追踪用到的可视化方法类似我们提到过的桑基图,具体地:桑基图在单细胞数据探索中的应用。immunarch中集成了多种克隆型跟踪方法。目前有三种方法可供选择。trackClonotypes的输出可以立即用vis函数可视化。

追踪最丰富的克隆型

最简单的方法是从一个输入免疫序列中选择最丰富的克隆类型,并批量跟踪所有的免疫序列。参数.which和.col用于选择免疫序列、从中获取的克隆类型数量以及使用的列。从第一个库中选择5个最丰富的克隆型,并利用其CDR3核苷酸序列对其进行跟踪:

library(immunarch); data(immdata)       # Load the package and the test dataset
?trackClonotypes
tc1 <- trackClonotypes(immdata$data, list(1, 5), .col = "nt")
tc1
                                               CDR3.nt
1:    TGCGCCAGCAGCCAAGAAGGGACAGGGTATTCCGGGGAGCTGTTTTTT
2:          TGCGCCAGCAGCTACAGGGTTGGCACAGATACGCAGTATTTT
3: TGTGCCACCAGCACCAACAGGGGCGGAACCCCAGCAGATACGCAGTATTTT
4:          TGTGCCACCAGCATCGGAGGCGGGAGCTACGAGCAGTACTTC
5:          TGTGCCAGCAGTCCTTGGACAGGGAGTATGGCCCTCCACTTT
       A2-i129 A2-i131 A2-i133 A2-i132 A4-i191 A4-i192 MS1
1: 0.020352941       0       0       0       0       0   0
2: 0.019176471       0       0       0       0       0   0
3: 0.007764706       0       0       0       0       0   0
4: 0.006352941       0       0       0       0       0   0
5: 0.005647059       0       0       0       0       0   0
   MS2 MS3 MS4 MS5 MS6
1:   0   0   0   0   0
2:   0   0   0   0   0
3:   0   0   0   0   0
4:   0   0   0   0   0
5:   0   0   0   0   0

which参数(第二个参数)的值list(1,5)意味着从输入字符串immdata$data的第一个列表中选择5个clonotypes。col参数的值“nt”意味着函数应该只接受CDR3核苷酸序列。

从“MS1”库中选择10个最丰富的氨基酸克隆型序列及其V基因进行跟踪:

tc2 <- trackClonotypes(immdata$data, list("MS1", 10), .col = "aa+v")
 tc2
             CDR3.aa   V.name A2-i129 A2-i131 A2-i133
 1:   CASSFEGAMDTQYF  TRBV7-6       0       0       0
 2:   CASSLGDSTYEQYF  TRBV5-6       0       0       0
 3: CASSLGLREQGETQYF   TRBV28       0       0       0
 4: CASSLQAGGNTDTQYF  TRBV7-2       0       0       0
 5:     CASSLYSNEQFF  TRBV7-9       0       0       0
 6:   CASSVYSTISEQYF    TRBV9       0       0       0
 7:   CSARDLANSYEQYF TRBV20-1       0       0       0
 8:    CSTEEDSYNEQFF TRBV20-1       0       0       0
 9:  CSVELRTESGYEQYF TRBV29-1       0       0       0
10:     CSYRTGGPEQYF TRBV29-1       0       0       0
    A2-i132 A4-i191 A4-i192         MS1          MS2
 1:       0       0       0 0.008941176 0.0000000000
 2:       0       0       0 0.011529412 0.0000000000
 3:       0       0       0 0.007058824 0.0001176471
 4:       0       0       0 0.063529412 0.0000000000
 5:       0       0       0 0.004470588 0.0000000000
 6:       0       0       0 0.037647059 0.0000000000
 7:       0       0       0 0.009529412 0.0000000000
 8:       0       0       0 0.024000000 0.0000000000
 9:       0       0       0 0.017764706 0.0000000000
10:       0       0       0 0.007294118 0.0000000000
             MS3          MS4 MS5 MS6
 1: 0.0000000000 0.0000000000   0   0
 2: 0.0000000000 0.0001176471   0   0
 3: 0.0000000000 0.0000000000   0   0
 4: 0.0000000000 0.0000000000   0   0
 5: 0.0000000000 0.0000000000   0   0
 6: 0.0001176471 0.0001176471   0   0
 7: 0.0000000000 0.0000000000   0   0
 8: 0.0001176471 0.0000000000   0   0
 9: 0.0000000000 0.0000000000   0   0
10: 0.0000000000 0.0000000000   0   0

参数的值list("MS1", "10"),它的意思是选择10个clonotypes从命名为"MS1"的指令集在指令集immdata$data的输入列表中。col的“aa+v”值意味着该功能应该同时取CDR3氨基酸序列和最丰富的克隆型的v基因片段。

同样经典而又傻瓜式地操作

p1 <- vis(tc1)
p2 <- vis(tc2)

p1 / p2
用特定的核苷酸或氨基酸序列追踪克隆型

为了跟踪特定的clonotype序列,可以提供核苷酸或氨基酸序列作为which参数,同时提供列.col,以指定在哪些列中搜索序列。例如,要跟踪下面指定的七个CDR3氨基酸序列,你需要执行以下代码:

target <- c("CASSLEETQYF", "CASSDSSGGANEQFF", "CASSDSSGSTDTQYF", "CASSLAGGYNEQFF", "CASSDSAGGTDTQYF", "CASSLDSYEQYF", "CASSSAGGYNEQFF")
tc <- trackClonotypes(immdata$data, target, .col = "aa")
vis(tc)
利用特定序列和基因片段追踪克隆型

与之前的方法相比,利用序列和基因片段的信息来追踪克隆型是可能的。你有一个特定的CDR3序列和基因片段的数据框。我们将通过从批次的第一个清单中选择10个最丰富的克隆类型来模拟这一点:

target <- immdata$data[[1]] %>%
    select(CDR3.aa, V.name) %>%
    head(10)

target
# A tibble: 10 x 2
   CDR3.aa           V.name 
   <chr>             <chr>  
 1 CASSQEGTGYSGELFF  TRBV4-1
 2 CASSYRVGTDTQYF    TRBV4-1
 3 CATSTNRGGTPADTQYF TRBV15 
 4 CATSIGGGSYEQYF    TRBV15 
 5 CASSPWTGSMALHF    TRBV27 
 6 CASQGDSFNSPLHF    TRBV4-1
 7 CASSQDMGGRNTGELFF TRBV4-1
 8 CASSEEPRLFGYTF    TRBV2  
 9 CASSQPGQGGGDEQFF  TRBV4-1
10 CASSWVARGPYEQYF   TRBV6-6
tc <- trackClonotypes(immdata$data, target)
vis(tc)

请注意,您可以使用目标数据框中的任何列,例如CDR3核苷酸和氨基酸序列以及任何基因片段。所以如何确定哪一列呢?

可视化跟踪

根据你的研究和审美需求,有三种可视化克隆型追踪的方法。要选择图形的类型,需要提供“。- .plot = "smooth" -默认使用,使用光滑线条和堆叠条形图进行可视化;- .plot = "area" -使用丰度线下面的区域来可视化丰度;- .plot =“line”-只可视化线,连接同一克隆型在时间点之间的丰度水平。

target <- c("CASSLEETQYF", "CASSDSSGGANEQFF", "CASSDSSGSTDTQYF", "CASSLAGGYNEQFF", "CASSDSAGGTDTQYF", "CASSLDSYEQYF", "CASSSAGGYNEQFF")
tc <- trackClonotypes(immdata$data, target, .col = "aa")
p1 <- vis(tc, .plot = "smooth")
p2 <- vis(tc, .plot = "area")
p3<- vis(tc, .plot = "line")
library(patchwork)
p1+ p2 +p3 
改变样本的顺序

vis函数的order参数控制可视化中样本的顺序。您可以通过您计划可视化的样本索引或样本名称。


# Passing indices
names(immdata$data)[c(1, 3, 5)] # check sample names
vis(tc, .order = c(1, 3, 5))

多么优雅的桑基图啊
# You can change the order
vis(tc, .order = c(5, 1, 3))

当然,这样也是可以的,图我就不贴了啊。

# Passing sample names
vis(tc, .order = c("A2-i129", "A2-i133", "A4-i191"))

如果元数据(metadata)包含有关时间的信息,如接种疫苗或肿瘤样本的时间点,则可以使用它相应地对样本重新排序。在我们的示例中,immdata$meta不包含关于时间点的信息,因此我们将模拟这种情况。

immdata$meta$Timepoint <- sample(1:length(immdata$data))
immdata$meta
# A tibble: 12 x 7
   Sample  ID    Sex     Age Status Lane  Timepoint
   <chr>   <chr> <chr> <dbl> <chr>  <chr>     <int>
 1 A2-i129 C1    M        11 C      A             2
 2 A2-i131 C2    M         9 C      A            11
 3 A2-i133 C4    M        16 C      A             7
 4 A2-i132 C3    F         6 C      A             3
 5 A4-i191 C8    F        22 C      B             1
 6 A4-i192 C9    F        24 C      B             4
 7 MS1     MS1   M        12 MS     C            10
 8 MS2     MS2   M        30 MS     C             6
 9 MS3     MS3   M         8 MS     C            12
10 MS4     MS4   F        14 MS     C             8
11 MS5     MS5   F        15 MS     C             5
12 MS6     MS6   F        15 MS     C             9


sample_order <- order(immdata$meta$Timepoint)
immdata$meta$Timepoint[sample_order]
immdata$meta$Sample[sample_order]
vis(tc, .order = sample_order)

vis(tc, .order = order(immdata$meta$Timepoint))
改变调色板

在R控制台中运行?scale_fill_brewer,了解ColorBrewer及其配色方案的更多信息

p1<- vis(tc) + scale_fill_brewer(palette = "Spectral")
p2 <- vis(tc) + scale_fill_brewer(palette = "RdBu")

p1 + p2 

我们为什么要研究Clonotype tracking啊?是为了看Clonotype 在不同样本中的分布情况进一步看Clonotype的可能的迁移和转化状态,所以关键的是样本分组的生物学意义啊。


https://immunarch.com/articles/web_only/v8_tracking.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343