免疫组库数据分析||immunarch教程:克隆型分析

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

Repertoire overlap and public clonotypes

免疫组重叠(Repertoire overlap)是最常用的度量Repertoire 相似度的方法。它是通过计算在给定的Repertoire 之间共享的克隆类型的特定统计量来实现的,也称为“公共”克隆类型。immunarch 提供了几个指标:-公共克隆型数量(.method = "public")) -一个经典的重叠相似性度量。

  • overlap coefficient (.method = "overlap") : 重叠相似度的标准化度量。它被定义为交集的大小除以两个集合中较小的部分。
  • Jaccard index (.method = "jaccard") : 它度量有限样本集之间的相似性,定义为交集的大小除以样本集并集的大小。
  • Tversky index (.method = "tversky") : 一种对集合的非对称相似度量,用来比较一个变体和一个原型。如果使用默认参数,它类似于Dice的系数。
  • cosine similarity (.method = "cosine") : 两个非零向量之间的相似性度量
  • Morisita’s overlap index (.method = "morisita") : 个体在总体中分散的统计方法。它用于比较样本之间的重叠。
  • incremental overlap : overlaps of the N most abundant clonotypes with incrementally growing N (.method = "inc+METHOD", e.g., "inc+public" or "inc+morisita").

包含所描述方法的函数是repOverlap。同样,当输出被传递到vis()函数时,输出很容易被可视化,它完成了所有的工作:

library(immunarch)  # Load the package into R
data(immdata)  # Load the test dataset
imm_ov1 <- repOverlap(immdata$data, .method = "public", .verbose = F)
imm_ov2 <- repOverlap(immdata$data, .method = "morisita", .verbose = F)

p1 <- vis(imm_ov1)
p2 <- vis(imm_ov2, .text.size = 2)

p1 + p2
vis(imm_ov1, "heatmap2")

您可以轻松更改有效数字的数量:

p1 <- vis(imm_ov2, .text.size = 2.5, .signif.digits = 1)
p2 <- vis(imm_ov2, .text.size = 2, .signif.digits = 2)

p1 + p2

repOverlapAnalysis可以对计算得到的重叠测度函数进行分析。

# Apply different analysis algorithms to the matrix of public clonotypes:
# "mds" - Multi-dimensional Scaling
repOverlapAnalysis(imm_ov1, "mds")
Standard deviations (1, .., p=4):
[1] 0 0 0 0

Rotation (n x k) = (12 x 2):
               [,1]       [,2]
A2-i129 -18.7767715 -18.360817
A2-i131  29.9586985  -7.870441
A2-i133  28.1148594  22.629093
A2-i132 -44.3435640   6.221812
A4-i191  13.8586515   7.452149
A4-i192 -14.0065477  27.068830
MS1      -8.8469009  -8.151574
MS2      -0.9712073  -1.297017
MS3     -10.4398629   4.894354
MS4       0.5131505  10.471309
MS5      18.5153823 -12.628029
MS6       6.4241122 -30.429669

# "tsne" - t-Stochastic Neighbor Embedding
repOverlapAnalysis(imm_ov1, "tsne")


              DimI      DimII
A2-i129 -11.893405   70.95531
A2-i131 112.806943 -229.78268
A2-i133 -34.283164   47.07587
A2-i132 -44.726418   11.90656
A4-i191 -13.979182   10.05010
A4-i192 -13.316741   89.16606
MS1     -30.856320   78.41378
MS2     -32.951243   16.06630
MS3     -18.041903   75.90590
MS4     -24.965529   16.01290
MS5     120.335521 -229.87194
MS6      -8.128559   44.10184
attr(,"class")
[1] "immunr_tsne" "matrix"     

# Visualise the results
repOverlapAnalysis(imm_ov1, "mds") %>% vis()

同样可以基于结果聚类。

# Clusterise the MDS resulting components using K-means
repOverlapAnalysis(imm_ov1, "mds+kmeans") %>% vis()

为了从repertoires 列表中构建一个包含所有clonotypes的庞大表,使用pubRep函数。

# Pass "nt" as the second parameter to build the public repertoire table using CDR3 nucleotide sequences
pr.nt <- pubRep(immdata$data, "nt", .verbose = F)
pr.nt

                                                  CDR3.nt Samples A2-i129 A2-i131 A2-i133 A2-i132
    1:                   TGCGCCAGCAGCTTGGAAGAGACCCAGTACTTC       8       1      NA       1       1
    2:                   TGTGCCAGCAGCTTCCAAGAGACCCAGTACTTC       7      NA       1       1       2
    3:                   TGTGCCAGCAGTTACCAAGAGACCCAGTACTTC       7       1       1       1      NA
    4:                   TGCGCCAGCAGCTTCCAAGAGACCCAGTACTTC       6       2      NA       1       1
    5:                      TGTGCCAGCAGCCAAGAGACCCAGTACTTC       6       4       2      NA       2
   ---                                                                                            
75101:             TGTGCTTCACAACTCTTATTGGACGAGACCCAGTACTTC       1      NA       1      NA      NA
75102: TGTGCTTCACAAGCCCTACAGGGCACTTTCCATAATTCACCCCTCCACTTT       1      NA      NA      NA      NA
75103:                   TGTGCTTCAGGGCGGGCCTACGAGCAGTACTTC       1      NA      NA      NA      NA
75104:             TGTGCTTCCGCCGGACCGGACCGGGAGACCCAGTACTTC       1      NA      NA       1      NA
75105:                TGTGCTTGCGGGACAGATAACTATGGCTACACCTTC       1      NA      NA      NA      NA
       A4-i191 A4-i192 MS1 MS2 MS3 MS4 MS5 MS6
    1:      NA       1  NA  NA   1   1   1   1
    2:       1      NA   1  NA  NA   2  NA   1
    3:       1       1   1  NA   2  NA  NA  NA
    4:      NA      NA  NA   1  NA   1  NA   1
    5:       3       1  NA  NA  NA  NA   4  NA
   ---                                        
75101:      NA      NA  NA  NA  NA  NA  NA  NA
75102:      NA      NA  NA  NA  NA  NA   1  NA
75103:      NA      NA   1  NA  NA  NA  NA  NA
75104:      NA      NA  NA  NA  NA  NA  NA  NA
75105:      NA       1  NA  NA  NA  NA  NA  NA
# Pass "aa+v" as the second parameter to build the public repertoire table using CDR3 aminoacid sequences and V alleles
# In order to use only CDR3 aminoacid sequences, just pass "aa"
pr.aav <- pubRep(immdata$data, "aa+v", .verbose = F)
pr.aav

                 CDR3.aa   V.name Samples A2-i129 A2-i131 A2-i133 A2-i132 A4-i191 A4-i192 MS1
    1:         CASSLEETQYF  TRBV5-1       8       1      NA       2       1      NA       2  NA
    2:     CASSDSSGGANEQFF  TRBV6-4       6       1       1       2      NA       3      NA  NA
    3:         CASSFQETQYF  TRBV5-1       6       3      NA       1       1      NA      NA  NA
    4:         CASSLGETQYF TRBV12-4       6       2      NA      NA       4       3      NA   1
    5:     CASSDSGGSYNEQFF  TRBV6-4       5      NA      NA      NA       3      NA       1   1
   ---                                                                                         
74440:     CTSSRPTQGAYEQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74441:    CTSSSRAGAGTDTQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74442: CTSSYPGLAGLKRKETQYF  TRBV7-2       1      NA      NA      NA       1      NA      NA  NA
74443:    CTSSYRQRPYQETQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74444:      CTSSYSTSGVGQFF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
       MS2 MS3 MS4 MS5 MS6
    1:  NA   1   1   1   1
    2:  NA   2  NA  NA  12
    3:   1  NA   1  NA   1
    4:  NA  NA  NA   2   1
    5:  NA   1  NA  NA   1
   ---                    
74440:  NA  NA  NA  NA   1
74441:  NA   1  NA  NA  NA
74442:  NA  NA  NA  NA  NA
74443:  NA   1  NA  NA  NA
74444:  NA  NA   1  NA  NA

# You can also pass the ".coding" parameter to filter out all noncoding sequences first:
pr.aav.cod <- pubRep(immdata$data, "aa+v", .coding = T)
pr.aav.cod


                   CDR3.aa   V.name Samples A2-i129 A2-i131 A2-i133 A2-i132 A4-i191 A4-i192 MS1
    1:         CASSLEETQYF  TRBV5-1       8       1      NA       2       1      NA       2  NA
    2:     CASSDSSGGANEQFF  TRBV6-4       6       1       1       2      NA       3      NA  NA
    3:         CASSFQETQYF  TRBV5-1       6       3      NA       1       1      NA      NA  NA
    4:         CASSLGETQYF TRBV12-4       6       2      NA      NA       4       3      NA   1
    5:     CASSDSGGSYNEQFF  TRBV6-4       5      NA      NA      NA       3      NA       1   1
   ---                                                                                         
74440:     CTSSRPTQGAYEQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74441:    CTSSSRAGAGTDTQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74442: CTSSYPGLAGLKRKETQYF  TRBV7-2       1      NA      NA      NA       1      NA      NA  NA
74443:    CTSSYRQRPYQETQYF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
74444:      CTSSYSTSGVGQFF  TRBV7-2       1      NA      NA      NA      NA      NA      NA  NA
       MS2 MS3 MS4 MS5 MS6
    1:  NA   1   1   1   1
    2:  NA   2  NA  NA  12
    3:   1  NA   1  NA   1
    4:  NA  NA  NA   2   1
    5:  NA   1  NA  NA   1
   ---                    
74440:  NA  NA  NA  NA   1
74441:  NA   1  NA  NA  NA
74442:  NA  NA  NA  NA  NA
74443:  NA   1  NA  NA  NA
74444:  NA  NA   1  NA  NA

# Create a public repertoire with coding-only sequences using both CDR3 amino acid sequences and V genes
pr <- pubRep(immdata$data, "aa+v", .coding = T, .verbose = F)

# Apply the filter subroutine to leave clonotypes presented only in healthy individuals
pr1 <- pubRepFilter(pr, immdata$meta, c(Status = "C"))

# Apply the filter subroutine to leave clonotypes presented only in diseased individuals
pr2 <- pubRepFilter(pr, immdata$meta, c(Status = "MS"))

# Divide one by another
pr3 <- pubRepApply(pr1, pr2)

# Plot it
p <- ggplot() +
  geom_jitter(aes(x = "Treatment", y = Result), data = pr3)
p

参考:
https://immunarch.com/articles/web_only/v4_overlap.html

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