免疫组库数据分析||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 
                  
 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
                
 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

你可能感兴趣的:(免疫组库数据分析||immunarch教程:Clonotype tracking)