學習生信代碼的朋友可以直接跳轉到下面2.7 實戰案例,有完整和詳盡的代碼和分析流程。
2. 原始數據處理
在本篇中,我們將介紹單細胞RNA測序(scRNA-seq)數據的“預處理preprocessing”步驟。盡管這是常見的術語,但似乎有點用詞不當,因為此過程涉及幾個步驟,這些步驟在開始下游分析之前至關重要。 在這里,我們將主要將此處理階段稱為“原始數據處理raw data processing”,我們的重點將放在數據分析階段,該階段從lane-demultiplexed的FASTQ文件開始,最后得到一個計數矩陣,表示每個量化細胞內每個基因產生的不同分子的估計數量(圖 2.1)。
然后,該計數矩陣可作為多種方法的輸入,這些方法已開發用于使用 scRNA-seq 數據進行的各種分析,從歸一化、積分和過濾方法到推斷細胞類型的方法, 分化軌跡和表達動態。鑒于它是所有這些分析的起點,對該矩陣的穩健而準確的估計是支持和實現準確而可靠的后續分析的基礎和關鍵步驟。原始數據處理中的根本錯誤估計可能會導致更高級別分析中的無效推論,并可能妨礙基于原始數據中存在的信號的發現,而原始數據處理中的信號已被遺漏、減少或扭曲。盡管我們尋求輸入和輸出的直觀性質,但在原始數據處理過程中出現了一些重要且困難的挑戰。在這里,我們將介紹原始數據處理的基本步驟,包括讀取比對/映射read alignment/mapping、細胞條形碼(cell barcode)識別和校正,以及通過唯一分子標識符(UMI)的解析來估計分子計數。我們還將提到執行這些處理步驟時出現的選擇和挑戰。
2.1 原始數據質控
獲得原始FASTQ文件后,可以通過運行質量控制(QC)工具(例如FastQC
)來快速診斷讀數本身的讀數質量、序列內容等。如果運行成功,FastQC
會為每個輸入的FASTQ文件生成QC報告。總體而言,這份報告總結了質量得分、堿基內容和某些相關統計數據,以發現文庫制備或測序中產生的潛在問題。
盡管如今單細胞原始數據處理工具內部評估了一些對單細胞數據很重要的質量檢查,例如序列的 N 含量和映射讀數的比例,但運行快速質量檢查仍然是一個好習慣,因為它會評估其他有用的QC指標。通常,這一部分由合作的測序公司完成,但是熟悉基本流程和原理是大有裨益的。
2.2 比對和映射Alignment and mapping
映射或比對是單細胞原始數據處理的基本步驟。它是指確定每個測序片段的潛在起源基因座loci(例如,與讀數相似的基因組或轉錄組基因座集)的過程。根據測序方案,生成的原始序列文件包含細胞水平信息(通常稱為細胞條形碼 (CB))、唯一分子標識符 (UMI) 以及從分子生成的原始cDNA序列(讀取序列)。作為單細胞樣本原始數據處理的第一步(圖 2.1),準確執行映射或比對對于所有下游分析都至關重要,因為不正確的讀取到轉錄本/基因映射可能會導致錯誤或不準確的矩陣 。
雖然將讀取序列映射到參考序列的時間遠遠早于scRNA-seq出現的時間,但當前scRNA-seq樣本規模的快速增長(通常為數億至數十億個讀取)使得該階段的計算量特別大。此外,使用RNA-seq對齊器需要使用單獨的工具來執行其他步驟,例如解復用demultiplexing和UMI分解。這種增加的步驟在計算上可能會很麻煩。此外,它通常需要大量的磁盤空間來存儲中間文件,并且處理此類中間文件所需的額外輸入和輸出操作進一步增加了運行時間要求。
為此,專門構建了幾個用于對齊或映射scRNA-seq數據的專用工具,這些工具可以自動和/或內部處理這些額外的處理要求。Cell Ranger
(10x Genomics 的商業軟件)、zUMIs
、alevin
、RainDrop
、 kallisto|bustools
、STARsolo
和alevin-fry
提供了專門的處理方法。 雖然所有工具都為用戶提供了相對簡化的界面,但這些工具在內部使用各種不同的方法,其中一些工具生成傳統的中間文件(例如BAM文件)并隨后對其進行處理,而其他工具則完全在內存中工作或使用簡化的中間步驟以減少輸入/輸出負擔。
2.2.1 比對的種類
在這里,我們介紹scRNA-seq數據映射中最常應用的三種主要映射算法:剪接比對、連續比對和輕量級映射變體。
首先,讓我們區分基于比對的方法和基于輕量級映射的方法(圖 2.2)。比對方法應用一系列不同的啟發法來確定可能產生讀數的潛在基因座,然后隨后在每個假定基因座處對讀數和參考之間的最佳核苷酸水平比對進行評分,通常使用基于動態編程的方法。使用動態規劃算法來解決對齊問題有著悠久而豐富的歷史。所使用的動態規劃算法的確切類型取決于所尋求的對齊類型。全局比對適用于要比對整個查詢序列和參考序列的情況。另一方面,當可能僅期望查詢的子序列與引用的子序列匹配時,可以應用局部對齊。通常,最適用于短讀對齊的模型既不是完全全局的也不是完全局部的,而是屬于半全局對齊的類別,其中大多數查詢預計與引用的某些子字符串對齊(這通常稱為 “擬合”對齊)。此外,有時通常允許對比對進行軟剪裁,以便忽略或降低對出現在讀取開始或結束處的不匹配、插入或刪除的懲罰。這通常是使用“擴展”對齊來完成的。
除了這些通用的比對技術之外,還設計了許多更復雜的修改和啟發式方法,以使比對過程在比對基因組測序讀數的背景下更加實用和高效。例如,banded alignment
是一種流行的啟發式方法,包含在許多流行工具的對齊實現中,如果用戶對低于某個閾值的對齊分數不感興趣,它可以避免計算動態規劃表的大部分內容。同樣,其他啟發式方法,如X-drop和Z-drop也很流行用于盡早修剪沒有希望的對齊。
基于比對的方法知道read的每個潛在映射的質量,然后可以使用這些讀數來過濾與映射中的參考對齊良好的讀數。基于比對的方法包括傳統的“完全比對”方法,如STAR
和STARsolo
等工具中實施的方法,以及在salmon
和alevin
中實現的選擇性對齊等方法,這些方法對映射進行評分,但省略了最佳對齊回溯的計算。
基于比對的方法可以進一步分為剪接比對和連續比對方法。剪接比對方法能夠在參考的幾個不同片段上比對序列讀數,從而允許與讀數的相應部分良好對準的參考區域之間存在潛在的大間隙。這些比對方法通常在將RNA-seq讀數與基因組比對時應用。剪接比對是一個具有挑戰性的問題,特別是在只有一小部分讀數跨越剪接點的情況下。另一方面,連續比對尋找與讀取對齊良好的參考的連續子串。在此類比對問題中,盡管可以允許小的插入和缺失,但通常不能容忍大的間隙,例如在剪接比對中觀察到的間隙。
2.3 細胞條形碼校正
基于液滴的單細胞分離系統,例如10x Genomics提供的系統,已成為研究細胞異質性原因和后果的重要工具。在該分離系統中,每個捕獲細胞的RNA材料與帶有條形碼的珠子一起在水基液滴封裝內被提取。這些珠子用獨特的寡核苷酸(稱為細胞條形碼 (CB))標記單個細胞的 RNA 內容,隨后將其與從 RNA 內容反轉錄的cDNA片段一起進行測序。這些珠子含有高多樣性 DNA 條形碼,能夠對細胞分子內容進行并行條形碼編碼,并在計算機中將測序讀數解復用到各個細胞箱中。
2.3.1 條形碼的錯誤種類
用于單細胞分析的標簽、序列和解復用方法通常效果很好。然而,在基于液滴的文庫中觀察到的細胞條形碼 (CB) 數量可能與最初封裝的細胞數量顯著差異數倍。一些主要的錯誤來源可能導致這種觀察:
- 雙峰/多重峰:單個條形碼可能與兩個或多個細胞相關聯,并導致細胞計數不足。
- 空液滴:可能捕獲沒有封裝細胞的液滴,這會導致細胞計數過多。
- 序列錯誤:PCR擴增或測序過程中可能會出現錯誤,并可能導致細胞計數不足或過多。
用于將 RNA-seq 讀數解復用到細胞特異性 bin 中的計算工具使用各種診斷指標來過濾掉人工數據或低質量數據。 例如,存在多種去除環境 RNA 污染的方法 [Lun 等人,2019,Muskovic 和 Powell,2021,Young 和 Behjati,2020]、雙峰檢測 [Bais 和 Kostka,2019,DePasquale 等人,2019, McGinnis 等人,2019,Wolock 等人,2019] 和基于核苷酸序列相似性的細胞條形碼校正序列錯誤。
2.4 UMI分解
細胞條形碼(CB)校正后,讀數要么被丟棄,要么分配給校正后的CB。隨后,我們希望量化每個校正的CB中每個基因的豐度。
由于擴增偏差的存在,必須根據UMI對讀數進行重復數據刪除,以評估采樣分子的真實計數。此外,在嘗試執行此估計時,其他幾個復雜因素也需要考慮在內。
UMI重復步驟旨在識別實驗中捕獲和測序的每個細胞中的每個原始PCR前分子的讀數和UMI集。該過程的結果是將分子計數分配給每個細胞中的每個基因,隨后在下游分析中用作該基因的原始表達。我們將查看觀察到的UMI及其相關映射讀數的集合,并嘗試推斷每個基因產生的觀察到的分子的原始數量的過程,稱為UMI解析。
為了簡化說明,在下文中,比對到參考基因組(例如基因的基因組位點)的reads被稱為該參考基因組的reads,它們的UMI標簽被稱為該參考基因組的UMI;由UMI標記的讀數集稱為該UMI的讀數。一次讀取只能由一個UMI標記,但如果它映射到多個引用,則可以屬于多個引用。此外,由于scRNA-seq中每個細胞的分子條形碼過程通常是孤立和獨立的,UMI分解將針對特定細胞進行解釋。相同的過程通常獨立地應用于所有細胞。
2.4.1 UMI分解的必要性
在理想的情況下,在正確的(未改變的)UMI標簽讀取的情況下,每個UMI的讀取唯一地映射到公共參考基因,并且UMI和預PCR分子之間存在雙射。因此,UMI重復數據刪除過程在概念上很簡單:UMI的讀數是來自單個PCR前分子的PCR重復。每個基因的捕獲和測序分子的數量是針對該基因觀察到的不同UMI的數量。
然而,實踐中遇到的問題使得上述簡單規則不足以識別一般UMIs的基因起源,因此需要開發更復雜的模型。在這里,我們主要關注兩個挑戰。
- 我們討論的第一個問題是UMI中的錯誤。當讀段的測序UMI標簽包含PCR或測序過程中引入的錯誤時,就會發生這種情況。常見的UMI錯誤包括PCR期間的核苷酸替換和測序期間的讀取錯誤。未能解決此類UMI錯誤可能會導致估計的分子數量增加。
- 第二個問題是多重映射,它出現在讀取或UMI屬于多個引用的情況下,例如多基因reads/UMI。如果UMI的不同讀取映射到不同的基因、一個讀取映射到多個基因或兩者兼而有之,就會發生這種情況。這個問題的后果是多基因reads/UMIs的基因起源不明確,這導致這些基因的采樣前PCR分子計數不確定。簡單地丟棄多基因reads/UMIs可能會導致數據丟失或傾向于產生多重映射讀數的基因之間的偏差估計,例如序列相似的基因家族。
2.5 計數矩陣質量控制
生成計數矩陣后,執行質量控制 (QC) 評估非常重要。有幾種不同的評估通常屬于質量控制的范疇。通常會記錄和報告基本的全局指標,以幫助評估測序測量本身的整體質量。這些指標由諸如映射reads的總分數、每個細胞觀察到的不同UMI的分布、UMI 重復數據刪除率的分布、每個細胞檢測到的基因的分布等數量組成。這些類似的指標通常由量化工具本身記錄,因為它們自然產生,并且可以在讀取映射、細胞條形碼校正和UMI解析過程中計算。同樣,有多種工具可以幫助組織和可視化這些基本指標,例如 Loupe browser、alevinQC,或者kb_python report,報告,具體取決于所使用的量化方法。 除了這些基本的全局指標之外,在這個分析階段,QC指標主要旨在幫助確定哪些細胞 (CB) 已“成功”測序,以及哪些細胞表現出需要過濾或糾正。
2.5.1 空滴檢測
第一個QC步驟之一是確定哪些細胞條形碼對應于“高置信度”測序細胞。在基于液滴的實驗方案中,某些條形碼與環境RNA而不是捕獲細胞的RNA相關。當液滴無法捕獲細胞時就會發生這種情況。這些空滴仍然傾向于產生測序讀數,盡管這些讀數的特征看起來與與正確捕獲的細胞相對應的條形碼相關的特征明顯不同。存在許多方法來評估條形碼是否可能對應于空液滴。一種簡單的方法是檢查細胞條形碼的累積頻率圖,其中條形碼按照與其關聯的不同UMI數量的降序排列。
這導致了幾種專門設計用于檢測空的或損壞的液滴或通常被認為“低質量”的細胞的工具的開發。這些工具結合了各種不同的細胞質量測量方法,包括不同UMI的頻率、檢測到的基因數量以及線粒體RNA的分數,并且通常通過對這些特征應用統計模型來對高質量細胞進行分類 假定的空滴或損壞的細胞。這意味著通常可以對單元進行評分,并且可以基于單元不為空或受損的估計后驗概率來選擇最終過濾。雖然這些模型通常適用于單細胞RNA-seq數據,但可能必須應用幾個額外的過濾器或啟發式方法才能在單核RNA-seq數據中獲得穩健的過濾,就像DropletUtils
的emptyDropsCellRanger
函數中那樣。
2.5.2 雙聯體檢測
除了確定哪些細胞條形碼對應于空滴或受損細胞之外,人們還可能希望識別那些對應于雙聯體或多聯體的細胞條形碼。當給定的液滴捕獲兩個(雙聯體)或更多(多聯體)細胞時,這可能會導致這些細胞條形碼在數量上出現偏態分布,例如它們代表的讀數和UMI數量,以及它們顯示的基因表達譜。還開發了許多工具來預測細胞條形碼的雙聯態狀態。一旦檢測到,被確定為可能是雙聯體和多重聯體的細胞可以被去除或以其他方式在后續分析中進行調整。
2.6 計數數據表示
當完成最初的原始數據處理和質量控制并繼續進行后續分析時,重要的是要承認并記住基因計數矩陣充其量只是原始樣本中測序分子的近似值。在原始數據處理流程的幾個階段,進行簡化以生成該計數矩陣。例如,reads映射并不完美,細胞條形碼的修正也存在問題。準確解析UMI尤其具有挑戰性,與UMI相關的多重映射讀取問題經常被忽視。
2.7 實戰案例
鑒于我們已經涵蓋了各種原始數據處理方法背后的概念,我們現在將注意力轉向演示如何使用特定工具(在本例中為alevin-fry
)來處理小型示例數據集。首先,我們需要來自單細胞實驗的FASTQ格式的測序讀數以及讀數將被比對的參考(例如轉錄組)。通常,參考基因組分別包括FASTA和GTF格式的已測序物種的基因組序列和相應的基因注釋。
在此示例中,我們將使用人類基因組的5號染色體及其相關基因注釋作為參考,該參考是來自10x Genomics構建的人類參考基因組GRCh38 (GENCODE v32/Ensembl 98) reference的子集。相應地,我們從10x Genomics的人腦腫瘤數據集中提取映射到生成參考的讀數子集。
Alevin-fry
[He et al., 2022]是一種快速、準確且節省內存的單細胞和單核數據處理工具。Simpleaf是一個用rust編寫的程序,它公開了一個統一且簡化的接口,用于使用alevin-fry
處理流程的一些最常見協議和數據類型。這里我們首先展示如何使用兩個simpleaf
命令處理單細胞原始數據。然后,我們描述了這些 simpleaf
命令對應的完整的salmon alevin
和alevin-fry
命令集,以概述本節中描述的步驟發生的位置,并傳達可能的不同處理選項。這些命令將從命令行運行,conda
將用于安裝運行此示例所需的所有軟件。
2.7.1 準備
在開始之前,我們在終端中創建一個conda環境并安裝所需的包。Simpleaf
依賴于 alevin-fry
、salmon
和pyroe
。 它們都在bioconda
上可用,并且在安裝simpleaf
時會自動安裝。
conda create -n af -y -c bioconda simpleaf
conda activate af
接下來,我們創建一個工作目錄af_xmpl_run
,并從遠程主機下載并解壓縮示例數據集。
# Create a working dir and go to the working directory
## The && operator helps execute two commands using a single line of code.
mkdir af_xmpl_run && cd af_xmpl_run
# Fetch the example dataset and CB permit list and decompress them
## The pipe operator (|) passes the output of the wget command to the tar command.
## The dash operator (-) after `tar xzf` captures the output of the first command.
## - example dataset
wget -qO- https://umd.box.com/shared/static/lx2xownlrhz3us8496tyu9c4dgade814.gz | tar xzf - --strip-components=1 -C .
## The fetched folder containing the fastq files are called toy_read_fastq.
fastq_dir="toy_read_fastq"
## The fetched folder containing the human ref files is called toy_human_ref.
ref_dir="toy_human_ref"
# Fetch CB permit list
## the right chevron (>) redirects the STDOUT to a file.
wget -qO- https://raw.githubusercontent.com/10XGenomics/cellranger/master/lib/python/cellranger/barcodes/3M-february-2018.txt.gz | gunzip - > 3M-february-2018.txt
參考文件(基因組FASTA文件和基因注釋GTF文件)和讀取記錄(FASTQ文件)準備就緒后,我們現在可以應用上面討論的原始數據處理流程來生成基因計數矩陣。
2.7.2 簡化的原始數據處理流程
Simpleaf
旨在簡化單細胞原始數據處理的alevin-fry
接口。 它將整個處理流程封裝為兩個步驟:
1.
simpleaf index
索引所提供的參考或創建剪接參考(剪接轉錄本+內含子)并對其進行索引。2.
simpleaf quant
將測序讀數與索引參考進行映射,并對映射記錄進行量化以生成基因計數矩陣。
可以在此處找到使用simpleaf
進行映射的更多高級用法和選項。
運行simpleaf index
時,如果提供了基因組FASTA文件(-f)和基因注釋GTF文件(-g),則會生成splici引用并對其進行索引;如果僅提供轉錄組FASTA文件(--refseq),它將直接對其進行索引。目前,我們推薦使用 splici 索引。
# simpleaf needs the environment variable ALEVIN_FRY_HOME to store configuration and data.
# For example, the paths to the underlying programs it uses and the CB permit list
mkdir alevin_fry_home & export ALEVIN_FRY_HOME='alevin_fry_home'
# the simpleaf set-paths command finds the path to the required tools and write a configuration JSON file in the ALEVIN_FRY_HOME folder.
simpleaf set-paths
# simpleaf index
# Usage: simpleaf index -o out_dir [-f genome_fasta -g gene_annotation_GTF|--refseq transcriptome_fasta] -r read_length -t number_of_threads
## The -r read_lengh is the number of sequencing cycles performed by the sequencer to generate biological reads (read2 in Illumina).
## Publicly available datasets usually have the read length in the description. Sometimes they are called the number of cycles.
simpleaf index \
-o simpleaf_index \
-f toy_human_ref/fasta/genome.fa \
-g toy_human_ref/genes/genes.gtf \
-r 90 \
-t 8
在輸出目錄simpleaf_index
中,ref
文件夾包含splici引用;索引文件夾包含基于拼接參考構建的salmon index。
下一步,simpleaf quant
,使用索引目錄和映射記錄FASTQ文件來生成基因計數矩陣。該命令封裝了本節中討論的所有主要步驟,包括映射、單元格條形碼校正和 UMI 解析。
# Collecting sequencing read files
## The reads1 and reads2 variables are defined by finding the filenames with the pattern "_R1_" and "_R2_" from the toy_read_fastq directory.
reads1_pat="_R1_"
reads2_pat="_R2_"
## The read files must be sorted and separated by a comma.
### The find command finds the files in the fastq_dir with the name pattern
### The sort command sorts the file names
### The awk command and the paste command together convert the file names into a comma-separated string.
reads1="$(find -L ${fastq_dir} -name "*$reads1_pat*" -type f | sort | awk -v OFS=, '{$1=$1;print}' | paste -sd,)"
reads2="$(find -L ${fastq_dir} -name "*$reads2_pat*" -type f | sort | awk -v OFS=, '{$1=$1;print}' | paste -sd,)"
# simpleaf quant
## Usage: simpleaf quant -c chemistry -t threads -1 reads1 -2 reads2 -i index -u [unspliced permit list] -r resolution -m t2g_3col -o output_dir
simpleaf quant \
-c 10xv3 -t 8 \
-1 $reads1 -2 $reads2 \
-i simpleaf_index/index \
-u -r cr-like \
-m simpleaf_index/index/t2g_3col.tsv \
-o simpleaf_quant
運行這些命令后,可以在simpleaf_quant/af_quant/alevin
文件夾中找到生成的量化信息。在該目錄中,存在三個文件:quants_mat.mtx
、quants_mat_cols.txt
和quants_mat_rows.txt
,它們分別對應于計數矩陣、該矩陣每列的基因名稱以及校正、過濾后的該矩陣的每一行細胞條形碼。這些文件的尾行如下所示。這里值得注意的是alevin-fry
在USA模式(未剪接、剪接和模糊模式)下運行,因此對每個基因的剪接和未剪接狀態進行了量化——生成的quants_mat_cols.txt
文件的行數將等于已注釋基因數的三倍,對應于每個基因的剪接(S)、未剪接(U)和剪接不明確變體(A)使用的名稱。
# Each line in `quants_mat.mtx` represents
# a non-zero entry in the format row column entry
$ tail -3 simpleaf_quant/af_quant/alevin/quants_mat.mtx
138 58 1
139 9 1
139 37 1
# Each line in `quants_mat_cols.txt` is a splice status
# of a gene in the format (gene name)-(splice status)
$ tail -3 simpleaf_quant/af_quant/alevin/quants_mat_cols.txt
ENSG00000120705-A
ENSG00000198961-A
ENSG00000245526-A
# Each line in `quants_mat_rows.txt` is a corrected
# (and, potentially, filtered) cell barcode
$ tail -3 simpleaf_quant/af_quant/alevin/quants_mat_rows.txt
TTCGATTTCTGAATCG
TGCTCGTGTTCGAAGG
ACTGTGAAGAAATTGC
我們可以使用pyroe
中的load_fry
函數將計數矩陣作為AnnData
對象加載到Python中。fishpond
R包中函數loadFry
已經實現了類似的功能。
import pyroe
quant_dir = 'simpleaf_quant/af_quant'
adata_sa = pyroe.load_fry(quant_dir)
默認將Anndata
對象的x
層加載為每個基因的剪接計數和模糊計數的總和。然而,最近的工作和更新的實踐表明,即使在單細胞RNA-seq數據中包含內含子計數,也可能會提高靈敏度并有利于下游分析。雖然利用這些信息的最佳方法是正在進行的研究的主題,但由于alevin-fry
自動量化每個樣本中的剪接、未剪接和模糊讀段,因此可以簡單地獲得包含每個基因總計數的計數矩陣,如下所示 :
import pyroe
quant_dir = 'simpleaf_quant/af_quant'
adata_usa = pyroe.load_fry(quant_dir, output_format={'X' : ['U','S','A']})
2.7.3. 完整的alevin-fry
分析流程
Simpleaf
使得通過幾個命令以“標準”方式處理單細胞原始數據成為可能。接下來,我們將展示如何通過調用pyroe
、salmon
和alevin-fry
命令來生成相同的量化結果。除了教學價值之外,如果僅需要重新運行管道的一部分或者需要指定simpleaf
當前未公開的某些參數,那么了解每個步驟的確切命令將很有幫助。
請注意,應提前執行準備部分中的命令。以下命令中調用的所有工具,pyroe
、salmon
和alevin-fry
,在安裝simpleaf
時已經安裝完畢。
2.7.3.1 建立索引
首先,我們處理基因組FASTA文件和基因注釋GTF文件以獲得剪接索引。以下代碼塊中的命令類似于上面討論的simpleaf index
命令。這包括兩個步驟:
- 1.使用基因組和基因注釋文件,通過調用
pyroe make-splici
構建剪接參考(剪接轉錄本 + 內含子)。 - 2.通過調用
salmon index
對splici引用建立索引。
# make splici reference
## Usage: pyroe make-splici genome_file gtf_file read_length out_dir
## The read_lengh is the number of sequencing cycles performed by the sequencer. Ask your technician if you are not sure about it.
## Publicly available datasets usually have the read length in the description.
pyroe make-splici \
${ref_dir}/fasta/genome.fa \
${ref_dir}/genes/genes.gtf \
90 \
splici_rl90_ref
# Index the reference
## Usage: salmon index -t extend_txome.fa -i idx_out_dir -p num_threads
## The $() expression runs the command inside and puts the output in place.
## Please ensure that only one file ends with ".fa" in the `splici_ref` folder.
salmon index \
-t $(ls splici_rl90_ref/*\.fa) \
-i salmon_index \
-p 8
splici索引可以在salmon_index
目錄中找到。
2.7.3.2. 比對和量化
接下來,我們將通過調用salmon alevin
來映射根據剪接索引記錄的測序讀數。這將生成一個名為almon_alevin
的輸出文件夾,其中包含我們使用alevin-fry
處理映射讀取所需的所有信息。
# Collect FASTQ files
## The filenames are sorted and separated by space.
reads1="$(find -L $fastq_dir -name "*$reads1_pat*" -type f | sort | awk '{$1=$1;print}' | paste -sd' ')"
reads2="$(find -L $fastq_dir -name "*$reads2_pat*" -type f | sort | awk '{$1=$1;print}' | paste -sd' ')"
# Mapping
## Usage: salmon alevin -i index_dir -l library_type -1 reads1_files -2 reads2_files -p num_threads -o output_dir
## The variable reads1 and reads2 defined above are passed in using ${}.
salmon alevin \
-i salmon_index \
-l ISR \
-1 ${reads1} \
-2 ${reads2} \
-p 8 \
-o salmon_alevin \
--chromiumV3 \
--sketch
然后,我們使用alevin-fry
執行細胞條形碼校正和UMI
解析步驟。此過程涉及三個 alevin-fry
命令:
- 1.
generate-permit-list
命令用于細胞條形碼校正。 - 2.
collate
命令過濾掉無效的映射記錄,更正細胞條形碼并整理源自相同已更正細胞條形碼的映射記錄。 - 3.
quant
命令執行UMI解析和量化。
# Cell barcode correction
## Usage: alevin-fry generate-permit-list -u CB_permit_list -d expected_orientation -o gpl_out_dir
## Here, the reads that map to the reverse complement strand of transcripts are filtered out by specifying `-d fw`.
alevin-fry generate-permit-list \
-u 3M-february-2018.txt \
-d fw \
-i salmon_alevin \
-o alevin_fry_gpl
# Filter mapping information
## Usage: alevin-fry collate -i gpl_out_dir -r alevin_map_dir -t num_threads
alevin-fry collate \
-i alevin_fry_gpl \
-r salmon_alevin \
-t 8
# UMI resolution + quantification
## Usage: alevin-fry quant -r resolution -m txp_to_gene_mapping -i gpl_out_dir -o quant_out_dir -t num_threads
## The file ends with `3col.tsv` in the splici_ref folder will be passed to the -m argument.
## Please ensure that there is only one such file in the `splici_ref` folder.
alevin-fry quant -r cr-like \
-m $(ls splici_rl90_ref/*3col.tsv) \
-i alevin_fry_gpl \
-o alevin_fry_quant \
-t 8
運行這些命令后,生成的量化信息可以在alevin_fry_quant/alevin
中找到。有關映射、CB校正和UMI分解步驟的其他相關信息可分別在salmon_alevin
、alevin_fry_gpl
和alevin_fry_quant
文件夾中找到。
在此處給出的示例中,我們演示了使用simpleaf
和alevin-fry
處理10x Chromium 3’ v3 數據集。Alevin-fry
和simpleaf
提供了許多其他選項來處理不同的單細胞方案,包括但不限于Dropseq、sci-RNA-seq3和其他10x Chromium平臺 。有關不同處理階段的可用選項的更全面的列表和描述可以在alevin-fry
和simpleaf
文檔中找到。
當然,還有許多其他原始數據處理工具也存在類似的資源,包括 zUMIs
、alevin
、kallisto|bustools
、 STARsolo
和CellRanger
。