Cell Ranger 是 10X Genomics為單細胞分析專門打造的分析軟件,直接對10X的下機數據進行基因組比對、定量、生成單細胞矩陣、聚類以及其他的分析等。所以Cell Ranger能做的分析有很多,我們今天主要學一下Cell Ranger的安裝以及對單細胞RNA-Seq數據的定量。
Cell Ranger的官網:https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger
一、下載與安裝
1. 首先進入Cell Ranger官網,點擊對下方的Download Link鏈接
如果是第一次進入下載界面,需要填寫一些基本信息,填寫完后點擊continue即可.
2. 根據需求下載Cell Ranger,可使用curl或者wget命令下載(在linux系統中運行黑框中的內容即可);
wget -O cellranger-7.0.1.tar.gz "https://cf.10xgenomics.com/releases/cell-exp/cellranger-7.0.1.tar.gz?Expires=1669394099&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZi4xMHhnZW5vbWljcy5jb20vcmVsZWFzZXMvY2VsbC1leHAvY2VsbHJhbmdlci03LjAuMS50YXIuZ3oiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2NjkzOTQwOTl9fX1dfQ__&Signature=jE~gdVd5roKryS-0dA8R0RQazPC8ABzDNaUy40Opi9FrZqwUmkGCuNc5~Yn69BwGse81GTKIj5mMxZD0cnwu-A6oCbTFktns-WMGV6GaMa4sOVlHORcvwLjmF5lsb3tbFquwNNvxZe~NuBhUhFAZEBk7tRZjl4d~PqCYSDeRwmM~oR6mKUHRZ1yaKefxgy6R4CwQ~YaTcl7az5-Ucb0gmLkStYHQUuGmpy6M4LOds2kvcKcsDYMAw7Crghaja2Pn3rE-D71JyfHaBQ7EoM8gAijWumF1mYLK8yYCd1Tpb0JjWEzHR49eGX0iCQTZq~bfAcinhRLn90xZD2xfPlxhAA__&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA"
注:默認下載最新版的Cell Ranger,如果需要選擇之前的版本可點擊右下方的紅框,選擇想要的版本(如下圖);
3. 安裝包下載完之后直接使用tar命令進行解壓即可
tar -xzvf xxx.tar.gz
這樣就完成Cell Ranger的安裝啦
二、使用Cell Ranger進行單細胞轉錄組測序數據(scRNA-Seq)的定量
cellrange count
是 cellrange 中一個很重要的命令,用來對單細胞轉錄組數據進行基因組比對,細胞定量最終得到用于下游分析的單細胞表達矩陣(默認情況也會對表達矩陣進行聚類)。
在做定量之前,我們首先需要準備2組文件:原始fq文件以及物種的References(其中包括參考基因組序列、gtf文件以及star的索引文件)。
1. 原始fq文件
cellranger的輸入文件格式是fq格式,并且文件的命名也是有要求,文件命名格式如下:
[Sample Name]S1_L00[Lane Number][Read Type]_001.fastq.gz
It is highly likely that these files were initially processed with bcl2fastq. Once you track the origin of the file, you will rename the files in the following format:
[Sample Name]S1_L00[Lane Number][Read Type]_001.fastq.gz
Where Read Type is one of:
- I1: Dual index i7 read (optional)
- I2: Dual index i5 read (optional)
- R1: Read 1
- R2: Read 2
如果fq的文件名格式不對,在運行的過程中會出現錯誤,所以最開始需要確定文件名的格式以及進行修改。習慣是重新創建一個目錄并且用軟連接將原始文件鏈接到新的目錄中,這樣做的好處是首先不會改變原始文件的名字(害怕修改了文件名后有些文件沒有同步,導致最后找不到具體的文件),其實也不會占用很多存儲(畢竟我們還要在夾縫中生存),下面就是我使用的風格:
2. 物種的References
第二個需要準備的文件就是物種的References。
好消息就是Cell Ranger官網已經為我們提供了人和小鼠的References,如果大家的樣本是人或者小鼠的某些細胞可以直接去Cell Ranger官網進行下載。
下載流程和Cell Ranger軟件下載流程一致,其中也是有很多版本的References可供大家選擇,下載后解壓就可用了;
下載網頁:https://support.10xgenomics.com/single-cell-gene-expression/software/downloads/latest?
那么問題來了,如果我研究的是其他物種,那怎么構建這個References?
cellranger的mkref就是這么一個功能,可用對其他的物種構建cellranger需要的References格式,只需要準備物種的參考基因組序列和gtf注釋文件就可以直接運行。
這里就以擬南芥為例子構建References。
首先創建存放References的目錄,這是我的一個習慣,也推薦大家在運行不同步驟的時候能夠創建專門的文件,這樣也便于文檔管理。
mkdir refdata-cellranger-Arabidopsis-TAIR10
具體命令如下:
cellranger mkref \
--genome=TAIR10 \
--nthreads=10 \
--fasta=TAIR10.fa \
--genes=TAIR10_GFF3_genes.miRBase20.gtf
--genome
:生成索引的目錄
--fasta
:基因組序列
--genes
:基因注釋文件(gtf格式)
運行完上面的命令就構建完索引啦~
這里還要推薦一個運行腳本的命令,希望能夠對大家有幫助。我們可以使用 vi 編輯器,將上面的內容存放在一個 shell 腳本中,然后使用后面運行 shell 腳本,這樣后臺在運行的同時,我們仍然可以在當前界面進行其他操作,并且網絡不穩定的時候也不會影響我們的運行,所以非常推薦。(腳本名:index_test.sh)~
投后臺的命令是:
nohup sh index_test.sh >index_test.sh.o 2>index_test.sh.e &
這樣的話中間的輸出文件會保存在index_test.sh.o,如果腳本報錯就會保存在index_test.sh.e中。我們可以通過查看這兩個文件了解運行的進展。可以通過使用jobs命令查看后臺運行的命令是不是還在。
References構建完后就會生成TAIR10目錄,并且該目錄下的文件有:
3. 定量
在所有文件都準備好了以后,就可以使用count對單細胞轉錄組數據進行定量啦。
具體命令如下(一般使用默認參數):
cellranger count \
--id=sample_test \
--transcriptome=/xx/ AT \
--fastqs=/xxx/fastq_path \
--localcores=8 \
--localmem=64
參數解釋:
-
id
:樣本名(唯一性) -
transcriptome
:上一步創建的索引的目錄名 -
fastqs
:下機數據的目錄名 -
localcores
:內核 -
localmem
:內存
下面是我的腳本,和上面是同樣的腳本格式~
成功運行之后會生成sample_test目錄(腳本中id參數后面輸入的內容),最終結果都保存在sample_test/outs中。
目錄
-
analysis
:cellranger聚類的結果 -
filtered_feature_bc_matrix
:過濾后的單細胞表達矩陣(后續可以對接到seurat中) -
raw_feature_bc_matrix
:過濾前的單細胞表達數據(一般不怎么使用)
文件
-
possorted_genome_bam.bam
:單細胞比對的bam文件,其中包含了每個reads的信息 -
web_summary.html
:報告網頁(單細胞定量后的報告,包括檢測到的細胞數、基因數、UMI、分群等等)
END Cell Ranger
以上就是cellranger的下載、安裝以及初步的使用流程,希望能夠幫到大家啦~
三、結果解讀
首先我們了解一下運行完Cell Ranger之后,在哪里可以看到生成的結果
還記得我們在運行Cell Ranger的時候有個參數--id嗎?--id=XXX,這里的XXX就是最終生成的目錄,該目錄中保存了運行過程中所有的中間文件、日記文件以及最終的結果。如下圖:
其中outs目錄中即保存的最終結果,也是我們最后需要的。當然如果中間出現了報錯,我們也可以通過查看日志文件,例如:_log,查看具體的報錯原因,隨后進行修改即可。
02 結果目錄 outs
首先我們看一下outs目錄下的文件結構,如下圖:
這些結果中主要分成了兩部分:
1. 集群中可以使用的結果(具體的內容可以參考上期文章“ 單細胞分析流程之Cell Ranger ” );
2. 網頁版報告。
本期的重點是解讀網頁報告中的內容。
03 網頁報告 web_summary.html
為了快速了解和方便的了解Cell Ranger定量之后的結果,我們首先會查看html文件,即 web_summary.html,了解初步情況。如下圖:
可以看到該網頁中主要分成了兩部分:Summary和Analysis.
04 Summary
1. 異常結果警告
如果數據中存在異常情況,網頁的上面會出現黃色的警告信息。找了一下之前遇到警告信息,如下圖:
當遇到這種報錯情況的時候我們不要慌,首先看一下是哪些值異常,對數據有無影響以及解決辦法。在Detail部分會詳細解釋這個參數是什么,以及解決辦法。例如上圖中說到在運行Cell Ranger的時候可以調用--force-cells參數,這個參數的修改需要不斷的嘗試,所以也沒有固定的值??
當然如果這些報錯信息并不影響結果,我們是可以用這個結果繼續往后分析的~
2. 細胞和基因數的統計
隨后就是查看這次分析中捕獲到的細胞數以及基因數的情況,從這里就能大概知道數據的情況。
我也做過好多10X的數據,一般捕獲的細胞數都是5,000-10,000,平均的基因數大概是1,200-15,00,大家可以看看自己的數據是否也在這些范圍內。如果這些值都是在可接受的范圍,那么就可以進入下一步的分析啦~
3. 細胞的選取
隨后就是細胞的選取了(也是一個相當重要的圖),幫助我們更加直觀的篩選細胞(如下圖)
先我們先來看一下上方的折線圖怎么看:
Y軸是每個細胞中UMI的值,X軸是單個細胞的按照UMI大小的排序(降序),所以這個圖中的曲線是下降的趨勢。藍色的線是選取的細胞(和2. 細胞和基因數的統計中的細胞數是一致的),灰色的線是背景。
正常的數據來說會有兩個下降的趨勢(如下圖),第1個下降的趨勢:區分完整細胞和背景物質(因為細胞和其他物質相比,真正細胞中會有更多的UMI,而其他物質可能沒有或者由于一些污染能捕獲到少量的轉錄本,所以會出現第一個下降的趨勢);第2個下降的趨勢:區分細胞的質量,捕獲率低或細胞破碎(這類細胞中基因數會很少,導致UMI數也少),而正常的細胞中UMI多且分布比較接近,所以質量好和不好的細胞在UMI上也會存在很大的差異,隨后就出現了第2個下降趨勢。
當數據出現了這兩個下降趨勢,且在藍色區域的線條比較平穩時,也能說明我們的數據質量好~
4. 測序結果統計
繼續往下走,下一部分是測序的信息,包括總的reads數目以及一些質控的指標,一般情況下Q30>90%表明質量是相當不錯的。
當我們看數據的時候,如果遇到一些指標不太明白是什么意思,大家可以點擊左上角的?,隨后會列出下列指標的解釋。
5. 比對結果統計
報告中除了會給出測序信息以外,也會給出與基因組的比對信息,主要包括Genome、Intergenic、Intronic、 Exonic、Transcriptome、Antisense to Gene(見下圖)。
雖然測序和比對結果都是一些常規的質控信息,當我們數據一切正常的時候,看這些指標可能沒有那么重要,但是一旦我們的數據比較奇怪的時候,例如發現檢測到的細胞數還行,但是基因數特別少,這個時候測序和比對結果就相當重要了!之前遇到一個數據就是檢測到的基因數特別少,然后聚類的時候就結果很差,后來就返回去看這些質控信息,驚奇的發現很多reads都是比對到了基因間區!
所以測序的reads根本就沒有落在基因上,導致了最終每個細胞檢測到的基因非常少,然后再去繼續往下找原因。
。所以呀,還是得多看數據,從那以后,數據下來都會先看看這些質控信息是否正常,才會繼續往后做(質控也是做科研非常重要的一步呀~)
6. 樣本信息
最后一部分就是樣本信息啦(如下圖)~
這一部分就是在運行Cell Ranger時候的參數信息,例如樣本名、Chemistry(運行Cell Ranger時候我們沒有設置這個參數,那么就默認選擇auto:自動配置,在報告中會給出具體的類型,這個就是3' V3版本)、Reference以及Reference路徑等等。這些信息的給出方便后面查找信息。
05 Analysis
介紹完 Summary之后,下面就是Analysis.
1. 分群結果
左圖:在TNSE中映射每個細胞UMI的值;右圖:TSNE中分群的情況。
Cell Ranger做完定量之后呢,會默認拿已有的結果跑一下基本的分群,所以在看報告的時候我們也可以看一下這里的分群結果,心里大概有個數~
2. 基因差異表達分析
Cell Ranger除了做了分群以外,還找了每個群差異表達的基因,類似于Seurat中的 "FindAllMarkers"。
這里比較好的是,上面Graph-based如果選擇K=2,那么這里差異基因列表也會隨之變動。所以如果覺得Cell Ranger的分群結果已經很符合自己的預期了,完全可以就用這個結果了,而且還可以自己選擇分群的個數(直接網頁挑選,人性化呀)
3. 飽和度評估
對 reads 抽樣,計算不同抽樣條件下檢測到的轉錄本數量占檢測到的所有轉錄本的比例(測序飽和度),如下圖:
曲線末端接近平滑狀態說明測序達到飽和,因為繼續增加測序量,檢測到的轉錄本也不會有特別大的變化
對 reads 抽樣,計算不同抽樣條件下檢測基因數目的分布,如下圖:
同樣地,曲線末端接近平滑狀態說明測序達到飽和,因為繼續增加測序量,每個細胞檢測到的基因數也不會有特別大的變化
下游 barcodes.tsv.gz/features.tsv.gz/matrix.mtx.gz
cellranger count輸出結果中的outs.文件夾有幾個是非常重要的信息,我們今天只關注于filtered_feature_bc_matrix文件夾下的內容和possorted_genome_bam.bam文件。
一般來說,我們下游的Seurat分析的輸入文件會選擇filtered_feature_bc_matrix中的文件,而不選擇raw_feature_bc_matrix下的文件,前者是經過過濾的,去掉了低質量的信息。進入filtered_feature_bc_matrix文件夾會發現它下面包含3個文件:分別是barcodes.tsv.gz、features.tsv.gz和matrix.mtx.gz。
barcodes.tsv.gz
AAACCCAAGAGATGCC-1
AAACCCAAGGTCGTAG-1
AAACCCACATCAGTCA-1
AAACCCAGTTTCCCAC-1
AAACCCATCCAAACCA-1
AAACCCATCCCTCTAG-1
AAACGAAAGCTGGTGA-1
AAACGAACAGACACAG-1
AAACGAAGTGAGATAT-1
這個文件當中記載了每個細胞的barcode信息。
features.tsv.gz
ENSMUSG00000051951 Xkr4 Gene Expression
ENSMUSG00000089699 Gm1992 Gene Expression
ENSMUSG00000102331 Gm19938 Gene Expression
ENSMUSG00000102343 Gm37381 Gene Expression
ENSMUSG00000025900 Rp1 Gene Expression
ENSMUSG00000025902 Sox17 Gene Expression
ENSMUSG00000104238 Gm37587 Gene Expression
ENSMUSG00000104328 Gm37323 Gene Expression
這個文件記載了小鼠基因注釋文件中包含的基因id與symbol信息,注意,這個文件的來源是小鼠基因組的注釋文件。
matrix.mtx.gz
%%MatrixMarket matrix coordinate integer general
%metadata_json: {"software_version": "cellranger-6.0.1", "format_version": 2}
32285 5741 11436472
1 1 4
2 1 1
22 1 1
24 1 8
31 1 1
41 1 1
43 1 1
這個文件主體部分包含三列,第一列為基因,即這個基因在前面features.tsv.gz中的位置;第二列為細胞,即這個細胞對應于barcodes.tsv.gz中的barcodes信息;最后一列代表在這個細胞中檢測到的這個基因的reads數。舉個例子來說:
例如第一行:1 1 4,就表示barcode為AAACCCAAGAGATGCC-1的細胞中檢測到的Xkr4基因的reads數為4。
細心的朋友會發現在前面還有一行:32285 5741 11436472 ,這一行實際上就是一個匯總信息,例如有32285個基因,5741個細胞,11436472個非零數值。而最前面不過是指明軟件的相關信息罷了。
思考
實際上在我們進行數據分析時,都覺得這3個文件一個不可少,但實際上真的是這樣嗎?
-
features.tsv.gz
前面已經說到,這個文件實際上是來源于小鼠基因組的注釋文件,所以理論上只要你在使用cellranger count時用的基因組注釋文件是一樣的,這個文件是不會變的,你可以進入Cell Ranger推薦的參考基因組看是否是這樣。
cd cellranger/reference/refdata-gex-mm10-2020-A/genes
#這個文件夾下面你會看到一個小鼠基因組的gtf注釋文件,名稱應該為genes.gtf
cat genes.gtf | awk '$15=="gene_name"{print$10"\t"$16}' | less -S
#看看這樣提取的基因id和name是否和features.tsv.gz一樣
"ENSMUSG00000051951"; "Xkr4";
"ENSMUSG00000089699"; "Gm1992";
"ENSMUSG00000102331"; "Gm19938";
"ENSMUSG00000102343"; "Gm37381";
"ENSMUSG00000025900"; "Rp1";
"ENSMUSG00000025902"; "Sox17";
"ENSMUSG00000104238"; "Gm37587";
你會發現,順序和內容竟然和features.tsv.gz一樣的,所以看起來似乎features.tsv.gz也不是那么不可或缺,咱也可以自己做,或者說可以通用。
-
matrix.mtx.gz
這個文件,毫無疑問,是必不可少的,可以說花那么多錢做個single cell RNA sequencing就是為了這個文件。。
-
barcodes.tsv.gz
光聽這個文件的內容,感覺這個文件很重要,像某個地區居民的名單一樣,丟了豈不麻煩大了?但實際上仔細想想,它真的重要到我們不能丟嗎?
我們說,matrix.mtx.gz里面實際上已經包含了單個細胞、單個基因的表達信息了,這是cellranger count已經返給我們的信息,舉個形象的例子,小孩子在出生時,當地戶籍部門記錄了這個小孩的性別信息,當然還有他的名字。但是一年后,這個小朋友改名字了,但是他的性別變了嗎?并沒有!所以實際上這個barcodes.tsv.gz文件如果我們改了,只不過是給每個細胞新起了一個名字,本身并不會造成細胞RNA信息的變化和混亂。
說到這里,不得不提到possorted_genome_bam.bam文件,這個文件里面實際上包含了每個細胞的barcode信息,就在其中以CB開頭的那個字段里。
samtools view possorted_genome_bam.bam | less -S
#部分信息如下
CB:Z:ATTCTTGTCTCCTGTG-1
CB:Z:GTGCTGGTCACTCGAA-1
CB:Z:GCATGATAGCCGGATA-1
CB:Z:GCACGTGGTTGCCTAA-1
你可以把這部分信息提取出來,重復內容合并,然后以任意順序作為barcodes.tsv.gz就可以進行Seurat分析了。哦對了,得某位大佬指點,cellranger count輸出的barcodes.tsv.gz是按字母表順序的,所以(誰知道它是不是最后隨意用字母表順序輸出的呢?)
需了解
將Reads轉為 Count Matrix。
1. 參考基因組及注釋
目前,大多數scRNA-seq是使用人類或小鼠的組織、器官或細胞培養物進行的。常用的就是UCSC(hg19、hg38、mm10等),和GRC(GRCh37、GRCh38、GRCm38)。二者在主要染色體上是對等的(如hg38的chr1 = GRCh38的chr1),但在一些小的位點上會有細微差異。
基因組注釋過程包括定義基因組的轉錄區域,明確exon和intron,將其分成protein coding, non-coding等。舉個栗子,假設我們有一個基因,包含5個轉錄本組成的基因。其中3個編碼(紅色)和2個非編碼(藍色)。
在實際操作中,我們通常可以下載GTF或GFF3格式的文件進行注釋。每個基因都含有一個ID,而這個ID是唯一的。
Note! 這里也提醒大家在實際操作中,盡量使用ID進行分析操作,而不要使用symbol,當然在展示結果的時候你需要轉換回symbol方便閱讀。
我們常用的人類和小鼠基因組注釋包括RefSeq, ENSEMBL和GENCODE,實際應用中選擇最新的版本就可以了,會有更多的已知基因。
2. Full-length scRNA-seq的處理
處理方法與bulk RNA-seq類似。
Full length scRNA-seq的raw data的處理通常分兩步進行:比對(read alignment)和計數 (read counting)。常用軟件:STAR和hisat2。normalization方法:推薦使用TPM。
Droplet-based scRNA-seq的比對和定量
1?? 首先我們要搞清楚scRNA-seq都有哪些產物。
- cDNA片段 (識別轉錄本);
- Cell barcode (CB,識別細胞);
- Unique Molecular Identifier (UMI,減小PCR擴增帶來的bias)。
2?? 典型的scRNA-seq的workflow包括以下幾個步驟:??
- 將cDNAmapping到reference上;
- 計算基因reads;
- 計算細胞reads(用到cell barcode);
- 計算的RNA數量(UMI去重)。
3. 具體步驟
Read Mapping
處理10x Genomics Chromium scRNAseq數據,我們通常要用到Cell Ranger。這里只介紹一下外顯子(exon)的定義,即reads比對到外顯子的 50% 以上,就可以定義為外顯子。
Cell Ranger Reference
在選擇Reference的時候,大家可以按以下table進行選擇。??
Cell Ranger Reference Species Assembly/Annotation Genes before filtering Genes after filtering
2020-A human GRCh38/GENCODE v32 60668 36601
2020-A mouse mm10/GENCODE vM23 55421 32285
3.0.0 human GRCh38/Ensembl 93 58395 33538
3.0.0 human hg19/Ensembl 87 57905 32738
3.0.0 mouse mm10/Ensembl 93 54232 31053
2.1.0 mouse mm10/Ensembl 84 47729 28692
1.2.0 human GRCh38/Ensembl 84 60675 33694
1.2.0 human hg19/Ensembl 82 57905 32738
1.2.0 mouse mm10/Ensembl 84 47729 27998
UMI計數
這里我們注意一下兩點:
如果兩組或更多的reads具有相同的barcode和UMI,但基因注釋卻不相同,那么reads最多的基因注釋用于UMI計數,舍棄其他組。
我們再極端一點,如果兩組reads一樣的話,這個時候我們可能需要舍棄所有組,因為這個時候基因注釋已經不準確了。
細胞過濾
1?? 未經過濾的raw data, feature-barcode matrix會包含很多空的 droplets,在矩陣中并不是0,因為會有來自破碎細胞的RNA。所以,這種數據我們需要進行過濾,而后再進行分析。
2?? 我們通常需要使用Cell Ranger 2.2和Cell Ranger 3.0進行過濾。
3?? 舉個栗子
腫瘤樣本通常包含大型腫瘤細胞與少量的腫瘤浸潤淋巴細胞(TIL),如果你對TIL特別感興趣,那這個時候可能就要用到EmptyDrops的方法來進行過濾了。
其他方法
當你使用Cell Ranger時,你可能會覺得它不夠快,這里我們介紹兩個速度快、準確度高的方法,STARsolo和Alevin,這里不做具體介紹了,推薦大家選擇STARsolo。
參考:
http://www.lxweimin.com/p/3f01016b5302
https://mp.weixin.qq.com/s/iB1o4BhCElU5IExOtXbtmw
https://mp.weixin.qq.com/s/9QA20YQEe1PPkDarB964HQ