轉錄組上游-windows使用kallisto-從cleandata到表達矩陣

tRNA做科研發表於2024-03-01

由於我linux系統崩了,於是我開始探索再windows環境完成RNA-seq分析,實際情況是windows完全夠用(如果記憶體足夠),不然還是選擇用伺服器分析。

網上對於kallisto的使用教程並不詳細,也主要集中在linux系統,於是我想分享一下我使用kallisto的經驗。這是我的分析流程,大家可以參考一下。

1.安裝kallisto

kallisto是一個免費的轉錄組拼接軟體,在linux和windows-CMD裡都可以執行,使得你的row data被拼接為可以進行下游操作的read count這樣的matrix。以下是下載安裝的官網:

https://pachterlab.github.io/kallisto/download

下載到你能找得到的位置(很關鍵,因為等下要轉到這個工作目錄)下載後在資料夾裡看到這樣就成功下載安裝了:

2.在CMD中執行kallisto

我們使用windows的命令列來操作,Win+R開啟執行,輸入cmd進入命令列視窗;

然後我們要cd我們的工作目錄到kallisto的目錄:

>cd C:\Users\Huzhuocheng\Desktop\畢業設計\轉錄組\轉錄組上游\kallisto\kallisto

這樣就歐克了,我們已經在kallisti的工作目錄裡了;

3.獲取CDS或者exon建立Index

現在的轉錄組分析大多是有參轉錄組的分析了,不過kallisto也只能做有參的,因此要先建立索引。我們不能用全基因組做參考,這樣切出來會一坨一坨的,因此我們需要先獲得CDS序列或者exon序列再來建立Index,這裡我推薦使用TBtools獲取,TBtools轉換需要兩個檔案:

(1)全基因組.fa(2)基因組註釋檔案.gff3

(沒有這些檔案的話可以在ncbi上找,我也會出教程,但是如果是冷門模式生物,比如我的薩氏海鞘,就可以問問實驗室的大老闆應該是有基因組檔案的)

這樣獲得的CDS.fa 或者 exon.fa就可以用來建立Index,當然具體用CDS還是exon可以自己選,我做出來發現CDS表達量高一些,CDS(Coding Sequence)和exon(外顯子)都是基因結構中的重要組成部分。CDS指的是一段特定的DNA序列,它包含了用於編碼蛋白質的所有資訊。具體來說,CDS是從基因的起始密碼子(通常是ATG)開始,一直到終止密碼子(可以是TAA、TAG或TGA)結束的一段序列。在這段序列中,每一個三聯體密碼子對應著蛋白質中的一個氨基酸,因此CDS是基因表達成蛋白質的直接模板。

另一方面,exon則是指真核生物基因中的編碼序列,這些序列在RNA剪接過程中會被保留下來,並最終構成成熟的mRNA分子。外顯子本身可以跨越幾個不同的DNA片段,並且在剪接過程中會被連線在一起,形成連續的mRNA序列。

總的來說,CDS關注的是DNA序列中負責編碼蛋白質的部分,而exon則是從DNA層面描述哪些序列會在最終的mRNA中被表達出來

4.kallisto建立Index

在剛剛的cmd裡輸入kallisto index會跳出指令教程:

用法(Usage)‌:

kallisto index [arguments] FASTA-files
#example
C:\Users\Huzhuocheng\Desktop\畢業設計\轉錄組\轉錄組上游\kallisto\kallisto>kallisto index -i D:\CDS.idx D:\CDS.fa

kallisto index -i 你的輸出位置 你的CDS檔案位置

必需的引數(Required argument)‌:

  • -i, --index=STRING: 你需要指定一個輸出檔案的名稱,Kallisto將用這個檔名來儲存生成的索引。

可選的引數(Optional argument)‌:

  • -k, --kmer-size=INT: 這個引數允許你設定k-mer的長度。k-mer是在構建索引過程中使用的短序列片段,通常長度為奇數個鹼基對。預設值是31,最大值也是31。
  • --make-unique: 如果你的輸入檔案中包含重複的目標名稱(例如不同的轉錄本具有相同的名稱),你可以使用此選項讓Kallisto生成唯一的名稱以區分它們。

看到這樣的反饋就是成功了:

5.kallisto進行雙端轉錄組測序資料定量

kallisto可以對雙端和單端的測序資料進行比對,我這裡以雙端的為例。

在cmd裡輸入kallisto quant後,會出現比對指令表:

Required arguments:‌ 這一部分列出了執行Kallisto時必須要提供的引數:
-i, --index=STRING: 指定用於定量分析的Kallisto索引檔案的名稱。
-o, --output-dir=STRING: 指定輸出結果的目錄路徑。
Optional arguments:‌ 接下來列出的是一些可選引數,使用者可以根據需要選擇是否提供這些引數:
--bias: 執行基於序列的偏差校正。
-b, --bootstrap-samples=INT: 設定bootstrap取樣的數量,預設為0。
--seed=INT: 設定bootstrap取樣的種子值,預設為42。
--plaintext: 以純文字形式輸出結果,而不是HDF5格式。
--fusion: 為Pizzly搜尋融合事件。
--single: 對單端讀取資料進行定量。
--single-overhang: 包括預測其未觀察到的片段剩餘部分位於轉錄本之外的讀取。
--fr-stranded: 針對正向鏈特異性讀取(第一讀取為正向)。
--rf-stranded: 針對反向鏈特異性讀取(第一讀取為反向)。
-l, --fragment-length=DOUBLE: 估計的平均片段長度。
-s, --sd=DOUBLE: 估計的片段長度的標準差,預設情況下是從配對末端資料中估計出來的,但在使用--single時需要明確指定。
-t, --threads=INT: 要使用的執行緒數,預設為1。
--pseudobam: 將偽比對到轉錄本的記錄儲存為BAM檔案。
--genomebam: 將偽比對投影到基因組並生成排序後的BAM檔案。
-g, --gtf: 包含轉錄本資訊的GTF檔案,對於--genomebam選項是必需的。
-c, --chromosomes: 染色體名稱和長度的製表符分隔檔案,對於--genomebam選項是可選的,但推薦使用

大部分指令用不到,可以直接看我的示例:

C:\Users\Huzhuocheng\Desktop\畢業設計\轉錄組\轉錄組上游\kallisto\kallisto>kallisto quant -i D:\CDS.idx -o D:\second\HSL-1-1 D:\trans\clean\Unknown_BT072-002T0001_good_1.fq D:\trans\clean\Unknown_BT072-002T0001_good_2.fq
########格式
>kallisto quant -i index位置 -o 輸出檔案位置 第一個fq檔案位置 第二個fq檔案位置

看到這樣就是執行成功了,可以去輸出檔案下看一下輸出的檔案。

6.使用kallisto2matrix轉為read counts檔案

剛剛得到的abundance檔案還是不能直接分析,我們是想得到表達量的matrix檔案。

下載地址是:GitHub - yukaiquan/kallisto2matrix: kallisto/salmon result to matrix (TPM,Count,FPKM)

我把它安裝到了kallisto同一個目錄,也是可以在CMD進行執行的

這樣就安裝成功了。

我們需要在這個工作目錄下新建一個txt檔案,裡面放著我們剛剛得到的多個樣本的abundance檔案,然後執行指令就可以輸出了。

C:\Users\Huzhuocheng\Desktop\畢業設計\轉錄組\轉錄組上游\kallisto\kallisto>kallisto2matrix.exe -i C:\Users\Huzhuocheng\Desktop\畢業設計\轉錄組\轉錄組上游\kallisto\kallisto\example.txt -o test

輸出得到的是count/tpm/fpkm三個矩陣

1. Counts矩陣代表原始的讀數(read counts),它記錄了每個樣本中每條基因序列被測序儀檢測到的次數。這是一個絕對數值,反映了測序的深度和基因的長度。由於這些因素可能導致不同樣本或基因之間的直接比較存在偏差,因此通常需要透過其他形式的標準化來處理。

2. FPKM(Fragments Per Kilobase of transcript per Million mapped reads)矩陣是一種標準化後的表達量度量單位,旨在解決由基因長度和測序深度帶來的問題。FPKM首先考慮了基因的長度,然後根據每個樣本中對映到基因組的讀取總數進行調整。具體來說,FPKM透過將每個基因的片段數(fragments)除以該基因的長度(以千鹼基為單位),再乘以一百萬(因為測序深度可能達到數百萬級別),從而使得不同長度的基因和不同測序深度的樣本之間可以進行比較。

3. TPM(Transcripts Per Million)矩陣也是用來標準化基因表達量的一種方法,它與FPKM的主要區別在於調整順序的不同。TPM先對每個樣本的所有基因的讀數進行歸一化,然後再除以基因的長度。這種計算方法有助於在不同的樣本之間進行更準確的比較,尤其是在跨樣本分析時。TPM的一個顯著特點是,所有樣本中所有基因的TPM值加起來等於同一個常數(通常是1百萬),這使得TPM非常適合於描述樣本中基因表達的相對比例。

總結來說,這三個矩陣代表了從原始資料到標準化表達量的不同階段。Counts矩陣提供了最基礎的讀數資訊,而FPKM和TPM則是對這些資料進行標準化處理後得到的表達量度量,它們幫助我們在不同樣本間進行更有意義的比較和分析。

結語

以上就是從轉錄組raw data到表達量資料的全過程,後續的分析我也會出教程,有什麼問題可以評論交流。謝謝大家!

相關文章