免疫受體數據庫簡介
具有關于免疫受體特異性的匯總信息的數據庫提供了一種直接的方法來注釋您的數據并找到與疾病相關的TCR或BCR受體。immunarch
包中支持使用了最流行的 AIRR 數據庫(VDJDB、McPAS-TCR 和 PIRD TBAdb)注釋數據的工具。
數據庫注釋主要包括以下兩步過程。首先,我們需要下載所需的數據庫文件 - 完整的數據庫文件或從數據庫的 Web 界面獲得的過濾數據。然后,再使用immunarch
包中的函數來注釋數據,并可視化注釋結果。
下載注釋數據庫
VDJDB數據庫
VDJDB
數據庫是一個已知抗原特異性的T細胞受體序列的精選數據庫。該數據庫基于 GitHub,可在此處獲得:https : //github.com/antigenomics/vdjdb-db
參考文獻: Shugay M et al. VDJdb: a curated database of T-cell receptor sequences with known antigen specificity. Nucleic Acids Research 2017
如何過濾和下載數據
在使用數據庫之前,從總的數據庫中過濾掉不相關的免疫受體信息是很有用的。例如,如果您分析人類 T 細胞 的TCR β 庫,則沒有必要保留來自其他物種的免疫受體以及非 TRB 數據。使用位于https://vdjdb.cdr3.net/search的VDJDB數據web界面過濾數據。選取過濾數據后按下“Refresh table”按鈕,找到“Export”按鈕并選擇里面的“TSV”標簽。您將下載過濾后的數據庫文件,其名稱類似于“SearchTable-2019-10-17 12_36_11.989.tsv”,可用于immunarch
包中進行克隆型注釋.
如何下載完整的VDJDB數據庫
如果您在“CDR3”選項卡的“General”部分中設置了所有復選標記,則可以使用上面的方法下載完整數據庫。但是,如果您想下載原始數據庫文件,以下給出了下載VDJDB數據庫和解包的復雜分步指南:
- 首先,您需要安裝 JDK 8 - Java 開發工具包。如果您已經安裝了它,請跳過此步驟。如果沒有,只需為您的系統搜索正確的安裝說明。
- 通過此鏈接從 GitHub 下載 VDJDB 存儲庫:https : //github.com/antigenomics/vdjdb-db/archive/master.zip
- 解壓縮存檔并轉到解壓后的“vdjdb-db-master”文件夾。
- 轉到“src”文件夾。
- 打開您的終端或控制臺并執行以下命令:
groovy -cp . BuildDatabase.groovy --no2fix
.
- 打開您的終端或控制臺并執行以下命令:
- 經過一些處理后,數據庫文件將位于“vdjdb-db-master”文件夾內的“database”文件夾中。您需要為
immunarch
注釋函數提供此文件的路徑。
- 經過一些處理后,數據庫文件將位于“vdjdb-db-master”文件夾內的“database”文件夾中。您需要為
McPAS-TCR數據庫
McPAS-TCR
數據庫是一個人工整理的病理相關的 T 細胞受體序列目錄。該數據庫位于http://friedmanlab.weizmann.ac.il/McPAS-TCR/
參考文獻:Shugay M et al. VDJdb: a curated database of T-cell receptor sequences with known antigen specificity. Nucleic Acids Research 2017
如何過濾和下載數據
McPAS-TCR數據庫 Web 界面的過濾功能位于“Search Database”選項卡中。篩選完數據后,按“Download csv”按鈕即可下載。下載的名為“McPAS-TCR_search.csv”的文件可用于immunarch
包進行注釋分析。
如何下載完整的McPAS-TCR
要下載完整的McPAS-TCR,您只需訪問http://friedmanlab.weizmann.ac.il/McPAS-TCR/并在那里按“Download the complete database”按鈕。請注意,有時您需要按兩次或在新的瀏覽器選項卡中按它才能開始下載過程。
TBAdb數據庫
TBAdb
數據庫是一個人工管理的針對特定抗原或疾病的 T 細胞受體 (TCR) 和 B 細胞受體 (BCR)數據庫。該數據庫包含三部分,即TCR-AB、TCR-GD和BCR。這三個部分旨在分別收集TCRA和TCRB、TCR-gamma和TCR-delta和BCR的序列和特異性信息。該數據庫可在https://db.cngb.org/pird/tbadb/ 獲得
參考文獻: Tickotsky N, Sagiv T, Prilusky J, Shifrut E, Friedman N (2017). McPAS-TCR: A manually-curated catalogue of pathology-associated T cell receptor sequences. Bioinformatics 33:2924-2929
如何過濾和下載數據
目前無法從 TBAdb數據庫 下載過濾后的數據。查詢功能可在https://db.cngb.org/pird/query/的“TBAdb”選項卡中使用。
如何下載完整的 TBAdb數據庫
要下載完整的TBAdb數據庫,您需要訪問https://db.cngb.org/pird/tbadb/并按“Download TBAdb”按鈕。請注意,您應該同意許可協議才能下載數據庫文件。
克隆型注釋
下載好相應的注釋數據庫后,我們可以繼續使用immunarch包進行克隆型注釋分析。接下來,我們將使用巨細胞病毒 (CMV) 感染的克隆庫進行注釋分析。
使用 R 預處理數據庫
首先,我們需要將數據庫加載到 R 中,并從輸入數據庫中過濾掉非人類、非 TRB 和非 CMV的 數據。對于數據庫,我們遵循與repLoad
和vis
函數相同的原理:函數dbLoad
為所有支持的數據庫的加載和基本查詢提供了一個單一的接口。
出于演示目的,我們將處理以下每個受支持的數據庫。
導入VDJDB數據庫
按照上述說明下載 VDJDB 數據庫。在下面的示例中,我們使用 URL 到數據庫片段作為文件路徑。在您自己的代碼中,您需要提供本地數據庫文件的路徑,例如“/Users/yourname/Downloads/vdjdb-db-master/vdjdb.slim.txt”。不要使用下面的鏈接,因為它們僅用于測試目的,而不是實際的數據庫!
請注意,從 Web 界面獲取的 VDJDB 數據與從原始文件中獲取的 VDJDB數據不同。
將 VDJDB數據加載到 R 的最基本方法:
vdjdb = dbLoad("https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/vdjdb.slim.txt.gz", "vdjdb")
vdjdb
## # A tibble: 61,049 x 19
## gene cdr3 species antigen.epitope antigen.gene antigen.species complex.id
## <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 TRB CASS… Macaca… STPESANL Tat SIV 0.
## 2 TRB CASS… HomoSa… RLRAEAQVK EBNA3A EBV 1.93e 4
## 3 TRB CASS… Macaca… TTPESANL Tat SIV 0.
## 4 TRA CASN… HomoSa… GILGFVFTL M InfluenzaA 0.
## 5 TRB CASS… MusMus… HGIRNASFI M45 MCMV 2.24e24
## 6 TRB CSAS… HomoSa… KLGGALQAK IE1 CMV 8.58e 3
## 7 TRA CAVL… HomoSa… GILGFVFTL M InfluenzaA 0.
## 8 TRB CASS… HomoSa… KLGGALQAK IE1 CMV 3.44e 3
## 9 TRB CAST… MusMus… SSYRRPVGI PB1 InfluenzaA 2.28e 4
## 10 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0.
## # … with 61,039 more rows, and 12 more variables: v.segm <chr>, j.segm <chr>,
## # v.end <dbl>, j.start <dbl>, mhc.a <chr>, mhc.b <chr>, mhc.class <chr>,
## # reference.id <chr>, vdjdb.score <dbl>, Species <chr>, Chain <chr>,
## # Pathology <chr>
我們可以通過設置.species
,.chain
以及.pathology
等參數進行過濾篩選出需要的信息:
vdjdb = dbLoad ( "https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/vdjdb.slim.txt.gz" , "vdjdb" , .species = "HomoSapiens" , .chain = "TRB" , .pathology = "CMV" )
vdjdb
## # A tibble: 18,039 x 19
## gene cdr3 species antigen.epitope antigen.gene antigen.species complex.id
## <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 TRB CSAS… HomoSa… KLGGALQAK IE1 CMV 8584
## 2 TRB CASS… HomoSa… KLGGALQAK IE1 CMV 3445
## 3 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 4 TRB CASS… HomoSa… KLGGALQAK IE1 CMV 19396
## 5 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 6 TRB CAST… HomoSa… KLGGALQAK IE1 CMV 10972
## 7 TRB CASS… HomoSa… KLGGALQAK IE1 CMV 6231
## 8 TRB CASS… HomoSa… KLGGALQAK IE1 CMV 12587
## 9 TRB CATS… HomoSa… KLGGALQAK IE1 CMV 13267
## 10 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## # … with 18,029 more rows, and 12 more variables: v.segm <chr>, j.segm <chr>,
## # v.end <dbl>, j.start <dbl>, mhc.a <chr>, mhc.b <chr>, mhc.class <chr>,
## # reference.id <chr>, vdjdb.score <dbl>, Species <chr>, Chain <chr>,
## # Pathology <chr>
VDJDB search tables
vdjdb_st = dbLoad("https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/SearchTable-2019-10-17%2012_36_11.989.tsv.gz", "vdjdb-search", .species = "HomoSapiens", .chain = "TRB", .pathology = "CMV")
vdjdb_st
## # A tibble: 4,999 x 19
## complex.id Gene CDR3 V J Species `MHC A` `MHC B` `MHC class`
## <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-A*… B2M MHCI
## 2 0 TRB CAWS… TRBV… TRBJ… HomoSa… HLA-A*… B2M MHCI
## 3 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-A*… B2M MHCI
## 4 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 5 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 6 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 7 0 TRB CASV… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 8 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 9 0 TRB CASS… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## 10 0 TRB CASG… TRBV… TRBJ… HomoSa… HLA-B*… B2M MHCI
## # … with 4,989 more rows, and 10 more variables: Epitope <chr>, `Epitope
## # gene` <chr>, `Epitope species` <chr>, Reference <chr>, Method <chr>,
## # Meta <chr>, CDR3fix <chr>, Score <dbl>, Chain <chr>, Pathology <chr>
導入McPAS-TCR數據庫
mcpas = dbLoad("https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/McPAS-TCR.csv.gz", "mcpas", .species = "Human", .chain = "TRB", .pathology = "Cytomegalovirus (CMV)")
mcpas
## # A tibble: 2,723 x 29
## CDR3.alpha.aa CDR3.beta.aa Species Category Pathology Pathology.Mesh.…
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 <NA> CASLAPGTTNE… Human Pathoge… Cytomega… D003586
## 2 <NA> CASLQAGANEQF Human Pathoge… Cytomega… D003586
## 3 <NA> CASLSGGGEQF Human Pathoge… Cytomega… D003586
## 4 <NA> CASLVASGQET… Human Pathoge… Cytomega… D003586
## 5 <NA> CASSHRDSGNT… Human Pathoge… Cytomega… D003586
## 6 <NA> CASSSANYGYTF Human Pathoge… Cytomega… D003586
## 7 <NA> CATSDPLTASY… Human Pathoge… Cytomega… D003586
## 8 CARNTGNQF CACSLRSQGTD… Human Pathoge… Cytomega… D003586
## 9 CAGNTGNQFYFG CASSAWDRSSG… Human Pathoge… Cytomega… D003586
## 10 CAYPYNNNDMRF CASSELGGAGT… Human Pathoge… Cytomega… D003586
## # … with 2,713 more rows, and 23 more variables:
## # Additional.study.details <chr>, Antigen.identification.method <dbl>,
## # NGS <chr>, Antigen.protein <chr>, Protein.ID <chr>, Epitope.peptide <chr>,
## # Epitope.ID <dbl>, MHC <chr>, Tissue <chr>, T.Cell.Type <chr>,
## # T.cell.characteristics <chr>, CDR3.alpha.nt <chr>, TRAV <chr>, TRAJ <chr>,
## # TRBV <chr>, TRBD <chr>, TRBJ <chr>, Reconstructed.J.annotation <chr>,
## # CDR3.beta.nt <chr>, Mouse.strain <chr>, PubMed.ID <dbl>, Remarks <chr>,
## # Chain <chr>
導入TBAdb數據庫
tbadb = dbLoad("https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/TBAdb.xlsx", "tbadb", .species = "Homo Sapiens", .chain = c("TRB", "TRA-TRB"), .pathology = "CMV")
tbadb
免疫組庫注釋
在immunarch
包中,我們可以使用dbAnnotate
函數進行TCR或BCR克隆型的注釋。在輸入數據中,我們需要指定搜索的序列、要查找的數據庫以及感興趣的列,例如 CDR3 氨基酸序列或 V 基因片段名稱列。
接下來,我們將使用immunarch包的內置數據進行測試。只需一行代碼,就可以在輸入數據和VDJDB數據庫中找到所有匹配CDR3氨基酸序列的克隆型:
library(immunarch)
data(immdata)
dbAnnotate(immdata$data, vdjdb, "CDR3.aa", "cdr3")
## CDR3.aa Samples A2-i129 A2-i131 A2-i133 A2-i132 A4-i191 A4-i192 MS1
## 1: CASSLGETQYF 11 6 4 2 8 4 0 1
## 2: CASSFQETQYF 9 3 2 2 4 2 0 1
## 3: CASSQETQYF 9 5 2 1 2 3 2 0
## 4: CASSSSYEQYF 9 1 0 0 1 2 2 1
## 5: CASSLEGYEQYF 8 0 0 1 1 3 0 1
## ---
## 579: CSVGTGTYEQYF 1 0 0 0 0 1 0 0
## 580: CSVQGGAYNEQFF 1 0 1 0 0 0 0 0
## 581: CSVQGGSYNEQFF 1 0 1 0 0 0 0 0
## 582: CSVVATNEKLFF 1 0 0 1 0 0 0 0
## 583: CSVVGTGNTEAFF 1 0 0 0 0 0 0 0
## MS2 MS3 MS4 MS5 MS6
## 1: 3 1 2 5 1
## 2: 1 0 4 0 2
## 3: 1 0 0 4 1
## 4: 1 0 1 1 3
## 5: 0 1 1 1 1
## ---
## 579: 0 0 0 0 0
## 580: 0 0 0 0 0
## 581: 0 0 0 0 0
## 582: 0 0 0 0 0
## 583: 0 0 0 1 0
在輸出結果中,“Sample”列指定了在數據庫中找到克隆型的樣本數。列中的其他數字對應于特定輸入樣本中克隆型的克隆計數。
在下一個示例中,我們將使用 CDR3 氨基酸序列和 V 基因片段在 McPAS-TCR 數據庫中搜索與條件相關的克隆型:
dbAnnotate ( immdata $ data , mcpas , c ( "CDR3.aa" , "V.name" ), c ( "CDR3.beta.aa" , "TRBV" ))
## CDR3.aa V.name Samples A2-i129 A2-i131 A2-i133 A2-i132 A4-i191
## 1: CAISESYEQYF TRBV10-3 3 0 1 0 0 0
## 2: CASSLAPGATNEKLFF TRBV7-6 3 0 0 0 0 0
## 3: CASSLGENIQYF TRBV13 3 0 0 0 0 1
## 4: CASSLGRETQYF TRBV28 3 0 0 0 0 0
## 5: CSVGTGGTNEKLFF TRBV29-1 3 0 0 0 0 0
## ---
## 2123: KNPTAF TRBV19 1 0 0 0 0 0
## 2124: LLGGQETQYF TRBV7-4 1 0 0 0 0 0
## 2125: WASSFQGFTEAF TRBV28 1 0 0 0 0 0
## 2126: WASSQALPYEQYF TRBV12-4 1 0 0 0 0 0
## 2127: WASSQQTGTIGGYTF TRBV6-5 1 0 0 0 0 0
## A4-i192 MS1 MS2 MS3 MS4 MS5 MS6
## 1: 1 0 0 0 0 0 0
## 2: 0 0 1 0 0 1 0
## 3: 1 0 0 0 0 0 0
## 4: 0 0 0 0 0 75 1
## 5: 0 0 1 0 0 0 1
## ---
## 2123: 0 0 0 0 0 0 0
## 2124: 0 0 0 0 0 0 0
## 2125: 0 0 0 0 0 0 0
## 2126: 0 0 0 0 0 0 0
## 2127: 0 0 0 0 0 0 0
如果您想在數據庫中搜索一組特定克隆型的序列,請使用它們創建一個數據框并將其作為一個數據庫文件:
local_db = data.frame ( Seq = c ( "CASSDSSGGANEQFF" , "CSARLAGGQETQYF" ), V = c ( "TRBV6-4" , "TRBV20-1" ), stringsAsFactors = F )
dbAnnotate ( immdata $ data , local_db , c ( "CDR3.aa" , "V.name" ), c ( "Seq" , "V" ))
## CDR3.aa V.name Samples A2-i129 A2-i131 A2-i133 A2-i132 A4-i191
## 1: CASSDSSGGANEQFF TRBV6-4 7 1 1 2 0 3
## 2: CSARLAGGQETQYF TRBV20-1 6 1 3 0 1 0
## A4-i192 MS1 MS2 MS3 MS4 MS5 MS6
## 1: 0 0 0 2 0 0 12
## 2: 0 0 0 1 0 0 1
高級過濾
immunarch
包中提供了一個非常基本的查詢界面,只允許按物種類型、鏈類型和病理類型進行過濾。要執行高級過濾,例如按抗原表位過濾,您需要使用 R。在大多數情況下,使用dplyr包過濾是最無縫的方式。以下是如何使用dplyr從 VDJDB 中過濾掉特定抗原表位的示例:
# Load the dplyr library
library(dplyr)
# Load the database with immunarch
vdjdb = dbLoad("https://gitlab.com/immunomind/immunarch/raw/dev-0.5.0/private/vdjdb.slim.txt.gz", "vdjdb", .species = "HomoSapiens", .chain = "TRB", .pathology = "CMV")
# Check which antigen epitopes are presented in the database
#檢查數據庫中收錄的抗原表位
table(vdjdb$antigen.epitope)
##
## ARNLVPMVATVQGQN AYAQKIFKI CPSQEPMSIYVY CVETMCNEY DEEDAIAAY
## 3 39 2 2 2
## EDVPSGKLFMHVTLG EFFWDANDIY ELKRKMIYM ELRRKMMYM FPTKDVAL
## 1 1 5 10 10
## IPSINVHHY KLGGALQAK LSEFCRVLCCYVLEE MLNIPSINV NEGVKAAW
## 93 12667 2 73 49
## NLVPMVATV QIKVRVDMV QIKVRVKMV QYDPVAALF RPHERNGFTV
## 4496 15 24 39 4
## RPHERNGFTVL TPRVTGGGAM VLEETSVML VMAPRTLIL VTEHDTLLY
## 22 207 14 1 202
## YILEETSVM YSEHPTFTSQY
## 3 53
# Filter out all non NLVPMVATV epitopes
# 篩選出所有非NLVPMVATV表位
vdjdb = vdjdb %>% filter(antigen.epitope == "NLVPMVATV")
vdjdb
## # A tibble: 4,496 x 19
## gene cdr3 species antigen.epitope antigen.gene antigen.species complex.id
## <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 2 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 3 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 4 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 5 TRB CSAD… HomoSa… NLVPMVATV pp65 CMV 0
## 6 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 7 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 8 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## 9 TRB CSVE… HomoSa… NLVPMVATV pp65 CMV 0
## 10 TRB CASS… HomoSa… NLVPMVATV pp65 CMV 0
## # … with 4,486 more rows, and 12 more variables: v.segm <chr>, j.segm <chr>,
## # v.end <dbl>, j.start <dbl>, mhc.a <chr>, mhc.b <chr>, mhc.class <chr>,
## # reference.id <chr>, vdjdb.score <dbl>, Species <chr>, Chain <chr>,
## # Pathology <chr>
# Check if everything is OK and there is no other epitopes
table(vdjdb$antigen.epitope)
##
## NLVPMVATV
## 4496