測序的世界

測序的世界很奇妙,不同的數據處理可能得出不同的結論,入門生信首先要做的就是了解你的數據
還等什么?跟我一起來探索吧~

測序原理:


早期如何測序呢?

如果給你這么一串珠子,讓你統計綠色,白色,紅色,其他這四種類型的數量,那你是不是要從某個位置一個一個數?沒錯,你已經開始對這串珠子進行了肉眼測序。

肉眼測序.png

其實對于DNA測序,思路也是這樣

早在1954年,Whitfeld等就提出了測定多聚核糖核苷酸鏈的降解法,該方法利用磷酸單酯酶的脫磷酸作用和高碘酸鹽的氧化作用從鏈末端逐一分離寡核糖核苷酸并測定其種類。目的就是想通過這種一個一個“數”的方法來得到DNA的堿基順序。

這里再補充一個小知識,DNA有多大?它的直徑也就2nm,兩個核苷酸之間的小溝0.34nm。肉眼觀察肯定不行,那么顯微鏡呢?光學顯微鏡可見光的波長約為700nm,單單一個直徑就看不到,更別說看更小的分子了DNA對于它來說根本不可見。要想用普通顯微鏡觀察不可能,更強大的電子顯微鏡呢?別忘了,DNA分子并不是平躺著讓你去觀察,他有四級結構,不斷扭曲、折疊,簡單的二維圖片是很難區分開來的,能看到也僅僅只能看到一小部分。就像上面的這張珠子圖,拍一張照片,就能準確區分被壓著的珠子和它上面的珠子順序嗎?不能夠!

人類基因組共有31.6億個DNA堿基對,23對染色體,測一條染色體就需要測1-2億個堿基對,像這種數數的辦法肯定行不通,太耗費人力。那么有沒有什么辦法可以實現半自動化呢?

視覺不行,另辟蹊徑,聽過“盲人摸象”的故事吧,70年代的Sanger發明了“雙脫氧終止反應法”,他就是利用了雙脫氧核苷酸 ddNTP去摸索DNA分子。例如,一條序列5‘ --> 3' 實際為TGACTTCG但我們之前不知道,這樣操作:

操作過程可能會有些無聊,但是不難懂,希望你能理解其中的意思,因為后來測序都是受此啟發,這是鼻祖

  • 設置四個反應體系1-4,分別加入引物、DNA聚合酶、四種dNTP、一定比例的ddNTP(帶有放射性標記)例如1中是ddATP,它就負責測定T堿基的位置;依次2是ddCTP,3是ddTTP, 4是ddGTP

  • 假如擴增過程中ddATP遇到了T位點,就結合并終止(因為ddNTP的2‘和3'都沒有羥基),那么其他的dNTP就無法結合。也許你會問,那么每次如果是這四種ddNTP占了先機先結合了,其他的都無法再結合,結果不就是一種可能,只能確定四個位點?并不是這樣: 大批量的核苷酸結合本就是一個隨機問題,不一定每次都是ddNTP結合,有可能是dNTP結合了好幾個然后ddNTP才回過神,結合完再宣告一個聚合過程結束。

    想象ddNTP是VIP會員,dNTP為普通用戶,只要ddNTP不結合(不占用綠色通道),普通的dNTP就有機會。

  • 因此,在這反反復復的結合過程中,就會把所有的位點都結合(因為測序測的不是幾百幾千條序列,而是幾千萬條序列),這其中有的是dNTP結合,有的是ddNTP結合,但是在一個大規模樣本中,ddNTP會結合所有位點,只是位點結合次數多少的問題,可能這一個位點有五千條序列測到這列就停了,但是下一個位點又有其他的8千條序列測到。 說的簡單一點就是,一段時間內大量的ddNTP會結合完所有測序位點。

  • Q: 最后怎么看結果?這里很有意思,一個位點可能會被大量的dNTP和ddNTP結合,怎么去除dNTP的干擾

A: 其實也不用刻意去除,最后利用凝膠電泳和放射自顯影只能看到帶有熒光標記的ddNTP,他們的排列順序先利用電泳條帶前后關系確定下,再用A-T, T-A, C-G, G-C關系反轉一下,就能知道我們的測序序列

  • 附上一張圖,幫助理解
    Sanger測序.JPEG

    有了早期的第一次測序成功,才有了后來1983年的Kary Mullis 發明PCR測序儀,利用PCR才有了我們更加效率的NGS(二代測序)。進步的是方法,不變的是基本理念。

當然,千萬別小瞧了一代測序(Sanger測序),到今天這種方法還是經常使用。他之所以不是現在的主流,不是因為它測不準(恰恰相反,第一代測序技術的主要特點就是測序讀長可達1000bp,準確性高達99.999%,二三代所不能及),而是因為它的通量低,成本高。
要知道,目前二代測序的錯誤率還在
目前一代測序在驗證序列(就是平時送公司測序返回來自己blast的那些)以及驗證基因組組裝完整性方面都是金標準。


二代測序:

一代測序的原理我們搞清楚了,沒有PCR,利用聚合酶延伸鏈。這就有一個問題,酶的活性會下降,所以一代最長能測1000bp,再多了就要重頭開始一遍導致成本高;另外它一次只測一條,也就是所謂的通量低。但是呢,他的確有值得借鑒的地方,就是準確度很高,99.999%。人類基因組計劃HGP,1990年-2003年完成,利用的就是改進的Sanger測序法

后來技術不斷改進,Roche公司的454技術、illumina公司的Solexa/Hiseq技術和ABI公司的SOLID技術標志第二代測序技術誕生。其中Roche公司的454測序系統是第二代測序技術中第一個商業化運營的測序平臺。

其中Illumina市場規模占到75%以上,主打Hiseq,下面??就主要介紹他的PE(Pair End雙端)測序原理:

  • 必備名詞:

    flowcell: 測序反應的載體/容器,1個flowcell有8個lane

    flowcell.png

    lane: 測序反應的平行泳道,試劑添加、洗脫等過程的發生位置

    tile: 每次熒光掃描的位置,肉眼是看不到的

    雙端測序: 可能序列比較長有四五百bp,兩邊各測120-150bp

    junction: 雙端測序中間一些沒有測到的區域

    flowcell構造:一個lane包含兩列(swath),每一列有60個tile,每個tile會種下不同的cluster,每個tile在一次循環中會拍照4次(每個堿基一次)

  • 邊合成變測序(sequence by synthesis, SBS)~合成
邊合成邊測序

<圖一>第一步: 構建DNA文庫
超聲波將DNA分子打斷成300-800bp長序列片段(人類基因組打成300-500bp),用酶補平為平末端,然后3‘端加一個A堿基(因為接頭的3‘端有一個突出的T),再在兩端加上互補配對的adapter,再通過PCR擴增達到一定濃度,構成單鏈DNA文庫。
【接頭設計很巧妙,兩個作用:
1. 實現橋式擴增,高效;2. 可以實現雙端測序】

好奇,接頭怎么加上去的呢?來源https://www.fimm.fi/en/services/technology-centre/sequencing/next-generation-sequencing/dna-library-preparation

Adding Adapter

另外,利用低循環擴增技術在接頭處進行修飾加上一些周邊。

Adapter修飾

<圖二>第二步: 上樣重點搞清楚lane上有哪兩種接頭,待測序列含有哪兩種接頭,這很重要!

  • flowcell是用于吸附流動DNA片段的槽道,測序就在此進行。上面構建好的文庫中的待測序列事先配置好一定的濃度,經過這里的時候,會在特異的化學試劑作用下,強力隨機地附著在lane上,與上面的短序列配對。上樣的結果就是lane吸附住了沖過來的DNA,并且可以在表面進行橋式PCR擴增。

  • 【??這里有三點要注意:
    1. lane與lane之間一般不會相互影響,也就是說一般不會出現lane1固定的DNA又與lane2結合。
    2. lane上隨機分布兩種接頭,p5‘(與P5互補),P7(與P7'互補)。
    待測序列自帶了p5接頭和p7接頭
    3. 序列只能一開始是利用p5接頭互補,因為p7接頭和lane是一樣的嘛】

<圖三>第三步:橋式PCR

  • 第一輪擴增模版:flowcell表面固定的序列 --> 模版鏈

    第一輪結果:序列補成雙鏈。

    一個很重要的概念:我們要測序的是模版鏈p5 - p7,開始它與lane接頭配對產生了互補鏈,后來強堿試劑作用下兩條互補鏈被分開,由于模版鏈沒有附著在lane上,模版鏈被沖走,但是互補鏈依然穩穩固定在lane上。接下來就要對互補鏈p5‘- p7‘ 進行操作~

    擴增模版
  • 去雜:加入NaOH強堿性溶液使雙鏈DNA變性,互補鏈由于和lane上短序列強力連接固定住了;模板鏈失去了雙鏈氫鍵連接,好似懸空,它會被洗脫

  • 橋式形成: 加入緩沖溶液,互補鏈的p7‘和lane上的p7互補(但還是一個lane中的)就像下圖這樣(摘自illumina官網)目的是快速擴增lane p7接頭連接的鏈,也就是下圖中的Forward Strand,它和我們的模版鏈是一致的。我們后來測序只用這一半

橋式形成
  • 橋式PCR: PCR彎成橋狀,一輪橋式擴增一倍

  • 循環: 大約35個循環后,最終每個DNA片段都將在各自的位置上集中成束,稱為cluster,這是一群完全相同的序列。目的在于實現放大單一堿基的信號強度,滿足后期測序需求

  • 解鏈: 橋式PCR完成后,形成了很多的橋形的互補雙鏈,再次強堿解鏈。
    這一次不再進行復制,而是利用一種酶--甲酰胺基嘧啶糖苷酶(Fpg)選擇性的切掉lane 上p5‘ 連接的鏈,只留下了與lane p7連接的鏈即Forward Strand

<圖四>第四步:測序

如何確定上面??形成的cluster的堿基排序順序呢?illumina采取了“一次加一個熒光堿基,用完失效”的辦法。官網給出的解釋如下圖:【有沒有感覺和Sanger的方法很像?illumina的測序就是在Sanger基礎上加上了橋式PCR,能克服Sange低通量的缺點】
測序

邊合成變測序~測序

一輪測序是這樣完成的:

雙端測序之Forward Strand

先是primer結合到靠近p5的sequencing primer binding site1上,再加入特殊的dNTP【它的3‘ 羥基被疊氮基團替代,因此每次只能添加一個dNTP;還含有熒光基團,能激發不同顏色】;

在dNTP被添加到合成鏈上后,所有未使用的游離dNTP和DNA聚合酶會被洗脫掉;

再加入激發熒光緩沖液,用激光激發熒光信號,光學設備記錄熒光信號的記錄,計算機將光學信號轉化為測序堿基

這一個循環就能測定flowcell上成千上萬的cluster,這就實現了高通量

再向下一輪:

再加入化學試劑淬滅熒光信號并使dNTP 3’ 疊氮基團變成羥基,這樣能繼續向下進行再加一個,并且保證這個不再發出熒光。如此重復直至所有鏈的堿基序列被檢測出。得到了Forward Strand序列

因為一個cluster的序列是一樣的,所以理論上cluster的熒光顏色應該一致,下面是來自網站http://tucf-genomics.tufts.edu/home/faq的掃描圖片。本來儀器得出的是黑白的,顏色是后來計算機計算分析后加上去的

掃描圖片

Index測序: 上面的循環結束后,read product被沖掉,index1 primer和鏈上的index1 互補配對,進行index1的檢測。測完后,洗脫產物,得到index1 的序列。接下來p5與lane上的p5‘配對,測得了index2,并洗脫

Index測序

雙端測序之Reverse Strand: 洗脫掉index2 產物后,還是一個橋式擴增,得到雙鏈,再變性得到原始Forward strand 和 新的Reverse Strand, 除去測完的Forward strand。然后和測Forward一樣,也是先連接primer,只是連接的位點是Primer Binding Site2,測完后得到reverse strand序列

一個小補充:知道了PE Seq,那么單端SE 測序怎么測的呢?single-end只將index,Primer binding site以及P7/P5添加到 fragamented DNA片段的一端,另一端直接連上P5/P7,將片段固定在Flowcell上橋式PCR生成DNA簇,然后單端測序讀取序列

一點小問題:illunima一次只添加一個dNTP,確實能夠保證準確測量同聚物的長度問題(同聚物就是3‘端一個一個加dNTP聚合而成的聚合物,因為還帶接頭,所以不能直接說成DNA分子)。
那么為何illumina會限制合成的鏈的長度呢,不能像Sanger法一樣,最長測1k?
原因就出在二代測序多出來的PCR過程:每一個位點都要測許多次,比如一段時間后的PCR得到的每個cluster都各包含200條完全相同的序列,那就需要對這200條序列的同一個位點進行測序。
第一輪我們來測第一個位點(假設位點1是A)正常來講,200條序列都應該加A堿基,但是不巧只有199個在位點1都加了堿基A,有一條序列沒有加上,所以就出現了199個紅色1個灰色【當然目前還構不成影響】;
第二輪(假設位點2是G)大家應該都加G測得綠色,但是之前的那個沒有加上A的,他要對之前的失誤進行補償,因此別的序列加G的時候,它加上了本該上次就加的A,它得到了紅色,這個紅色在一大群的綠色中就是作為雜信號存在的。依次向下,測序長度越長,雜信號越多,最后可能標準信號和雜信號各一半,這樣系統無法判斷,只能給N,而N多了對于后續的分析處理很麻煩,去了吧丟失數據,不去吧又是冗余。

Q:有同學問了: 上面說的,依次向下,測序長度越長,雜信號越多。這個說不通啊,依次向下以后,永遠都只有1/200個雜信號啊,怎么會越來越多呢?
A:上面提到的只是假設只是一條序列出現失誤,其實測序過程中隨著鏈的延長大家的錯誤都是不斷增加的,因為酶活性在降低。對于一個測序位點,第一輪可能有一條序列錯的,那么肯定他以后都會錯吧;到了第二輪可能有兩條或者更多的序列出現沒加的現象,而他們也會一步錯,步步錯。

因此,錯誤來源就是某個位點有序列沒跟上隊伍,這次不加,以后都是錯的,這樣的序列多了,也就導致整體錯誤率升高


數據產生:

大體上我們平常使用的測序儀就是這樣(以Hiseq 2000為例),后續升級版主要提高通量

Hiseq 2000測序儀
  • 簡單了解下數據產生大體流程:

    從熒光信號的產生到堿基序列的識別這一過程,主要包括圖象校正(即空間校正)、cluster識別、熒光校正(即光學校正)、phasing/prephasing(即化學校正)、堿基識別、PF(Illumina默認的數據過濾算法Pass Filtering)、質量評估等7個步驟

  • 照相機是如何識別的?

    利用了CCD相機(1)對每一個簇(cluster)進行識別,確定其坐標;(2)提取每個簇分別在A、G、C、T四個波長的信號強度值。另外拍照過程相當耗時,一次循環所產生的信號需要40分鐘左右才能拍照收集完畢。使用相機的掃描功能會更快一些

相機識別
  • 數據量產出:測序儀搭配了兩個flowcell,簡稱雙流動槽。比較經典的Hiseq2500一次能產出700-800Gb數據(此處Gb為測序堿基數,不同于字節數的Gb)

    關于數據轉換,舉個例子比較好理解:Gb是測序中的數據量,1 Gigabase= 十億堿基。人類全基因組測序得到了90G的原始數據,也就是900億堿基。得到的900億堿基,也對應900億個質量值,加起來就是1800億個字符。想一想fastq的格式:第一行是測序說明,一般是45個字符,也就是說,每一條測序reads中第一行就有大概45個字符。那么多少條reads呢?根據PE150計算:測序策略是一條reads包括150bp,現在900億堿基,就對應900億/150=60億條reads 。因此第一行總字符是:60億*45=270億個字符。注意到fastq文件共四行,其中1、2、4行的總數量分別為270億、900億、900億,第三行就是一個+,基本可以忽略不計。加起來總共2070億字符。計算機中,根據編碼規則不同,字符與字節對換關系不同。



    Fastq文件是ASCII編碼文件,其中每一個字符就對應一個ASCII碼,也就等于一個字節。計算機的1 GB(Gigabytes) 是1024^3 個字節
    因此,二者對換關系就是:全基因組測序的90Gb對應(2070x10^8 /1024^3 )=193GB計算機存儲空間。
    或者更快的計算: 測序報告會給出reads數,如果測序策略是PE150,那么占用硬盤空間大小就是n(reads)(150+150+45)/1024^3
    另外,測序儀下機后的數據都是用gz壓縮后的文件.fastq.gz,能壓縮2.7倍,大概71G左右。

看一下來自illumina官網的統計數據,換算一下大概能知道,高配的HiSeq X10每臺機器每輪測序所產生的數據量大約是1.6Tb,即1600 Gb,2017年的JP摩根大會上發布的NovaSeq 6000一次測序保守估計能得到3000G的測序數據。如果要做人類基因組重測序,Hiseq系列一般需要3-5天,而Nova只需要40小時!

illumina測序儀產出統計

數據初步分析:

使用fastqc進行質量分析,這是一款Java軟件,支持多線程。寫這篇文章的時候版本是v0.11.7。


軟件前期準備:
  • 下載方式有兩種:
  1. 官網下載好用filezilla導入linux服務器

  2. 直接在服務器中wget http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.7.zip

  • 接著安裝unzip fastqc_v0.11.7.zip --> cd FastQC -- > chmod755 fastqc

最后這個chmod有必要說一下,這個權限管理命令

chmod 用3個數字來表達對 用戶(文件或目錄的所有者),用戶組(同組用戶),其他用戶 的權限:
  如:chmod 755 fastqc
  數字7是表達同時具有讀,寫,執行權限:(7 = 4 + 2+ 1)
  讀取--用數字4表示;
  寫入--用數字2表示;
  執行--用數字1表示; 三者皆否:0

  • 設置完權限后,還需要將FastQC文件夾這里請注意是文件夾,而非fastqc這個可執行程序)導入環境變量

    echo 'export PATH=/YOUR/FASTQC PATH/:$PATH' >> ~/.bashrc

    source ~/.bashrc

  • 檢查軟件是否安裝成功 fastqc --help 出現幫助信息就可以使用啦!


后期軟件使用:
   基本格式 (各種參數+多個文件~支持多線程)
   
   fastqc [-o output dir] [--(no)extract] [-f fastq|bam|sam] seqfile1 .. seqfileN
   
   -o --outdir FastQC生成的報告文件的儲存路徑
   --extract 使用這個參數是讓程序不打包【默認會打包成一個壓縮文件】
   -t --threads 選擇程序運行的線程數,每個線程會占用250MB內存(一般與文件數量一致就好)
   -q --quiet 安靜運行模式【不選這個選項,程序會實時報告運行的狀況】
結果分析:
  • 如果你有自己的轉錄組或者其他數據,可以現在測試了
  • 如果沒有,想學一下這個軟件流程以及如何解讀結果,可以下載公共數據(下載兩個雙端測序文件共4個)
# 順便說一下這里用到了curl -O(保留遠程文件的文件名) -L(對于自動跳轉的網頁,curl 就會跳轉到新的網址)
# 當然用wget也可以,至于二者區別,可以參考https://www.cnblogs.com/lsdb/p/7171779.html
    curl -O -L https://s3-us-west-1.amazonaws.com/dib-training.ucdavis.edu/metagenomics-scripps-2016-10-12/SRR1976948_1.fastq.gz
    curl -O -L https://s3-us-west-1.amazonaws.com/dib-training.ucdavis.edu/metagenomics-scripps-2016-10-12/SRR1976948_2.fastq.gz
    curl -O -L https://s3-us-west-1.amazonaws.com/dib-training.ucdavis.edu/metagenomics-scripps-2016-10-12/SRR1977249_1.fastq.gz
    curl -O -L https://s3-us-west-1.amazonaws.com/dib-training.ucdavis.edu/metagenomics-scripps-2016-10-12/SRR1977249_2.fastq.gz
    
# 下載完可以檢查一下數據完整性,當然不是必須
    md5sum *.gz
    
# 質控四個文件,我們可以采用四線程
# 大概用時   real   0m23.344s (如果你也想統計時間,就在命令前加time)
    fastqc *.gz -t 4
#將結果.html用filezilla導出,瀏覽器查看
  • 首先看到的是一個總結報告
    左邊這一欄會告訴你,哪些是提出警告的(??表示),那些是fail的(?)
    QC Summary
  • 接下來一部分一部分解析,共10部分
  1. Basic Statistics 基本信息

    Basic Statistics
    • Encoding: 測序平臺編號,現在Sanger/ Illumina 1.8以上都是Phred 33編碼

    • Total sequences: reads數量(reads就是高通量測序平臺產生的序列標簽,翻譯為讀段!)

    • Sequence length: 測序長度

    • %GC: GC含量: 需要重點關注,可以幫助區別物種,人類細胞42%左右

  2. Per base sequence quility:每個測序read各堿基質量【十分重要!】

Per base sequence quility
  • 橫軸:測序序列的1-251個堿基;

  • 縱軸:質量得分,score = -10 * log10(error),例如錯誤率error為1%,那么算出的score就是20

  • 箱線圖boxplot:對每一個堿基的質量的統計。箱子上面的須(up bar)為90%分位數,下面的須(down bar)為10%分位數,箱子中的紅線為中位數即50%分位數,箱子頂(upside)為75%分位數,箱子低(downside)為25%分位數。這個boxplot的意義:一是看數據是否具有對稱性;二是看數據分布差異,這里主要利用了第二點。bar的跨度越大,說明數據越不穩定。

  • 藍色的線將各個堿基的質量平均值連接起來

  • 解釋一下:圖中藍線的走勢為何先高后低?因為目前采用的邊合成邊測序使用的是化學方法促使鏈由5'向3'延伸,也就是利用了DNA聚合酶。剛開始測序,合成反應還不是很穩定,但是酶的質量還很好,所以會在高質量區域內有一定的波動(這里的1-30bp),后來穩定了,但是隨著時間的推移,酶的活力逐漸下降,特異性也變差,所以越往后出錯幾率越大。
    就像一個司機開車,一開始小心謹慎,起步慢,開的也慢,慢慢提速。后來越開越帶勁,但是也越來越困,疲勞駕駛容易出事

  • 一般能用的數據都要求至少Q20,也就是下四分位(10%分位數)的質量值要大于20。因此這里的189bp后面的需要切除,才能繼續分析

  • 二代測序,最好是達到Q20的堿基要在95%以上(最差不低于90%),Q30要求大于85%(最差也不要低于80%)

  1. Per sequence quility scores:每條序列 質量統計
Per sequence quility scores
  • 橫軸:質量值0-40,也即是Q值

  • 縱軸:每個質量值對應的read數

  • 我們的例子中一條read有251bp, 那么其中任意一條的251bp的質量平均值就是這條read的質量值。只要大部分都高于20說明比較正常

  1. Per base sequence content:read各個位置堿基比例分布
Per base sequence content
  • 橫軸:各堿基位置;縱軸:堿基百分比

  • 四條線四種顏色代表四種堿基在每個位置的平均含量(一個位置會測很多reads,然后求一個平均)

  • 一般來講,A=T, C=G, 但是剛開始測序儀不穩定可能出現波動,這是正常的。一般不是波動特別大的,像這里cut掉前5bp就夠了。另外如果A、T 或 C、G間出現偏差,只要在1%以內都是可以接受的

  1. Per sequence GC content: 序列平均GC分布
Per sequence GC content
  • 橫軸為平均GC含量; 縱軸為每個GC含量對應的序列數量

  • 藍線為系統計算得到的理論分布;紅線為測量值,二者越接近越好

  • 這里不相符可能有兩個原因:

    1. 前面提到了,GC可以作為物種特異性根據,這里出現了其他的峰有可能混入了其他物種的DNA

    2. 目前二代測序基本都會有序列偏向性(所說的 bias),也就是某些特定區域會被反復測序,以至于高于正常水平,變相說明測序過程不夠隨機。這種現象會對以后的變異檢測以及CNV分析造成影響

  • 如果出現怎么辦?-- 把和我們使用物種GC-content有差異的reads拿出來做blast,來確認是否為某些雜菌

  1. Per base N content: N含量分布
Per base N content
  • N是指儀器不能識別ATCG時給出的結果,一般不會出現。但是如果出現并且量還很大,應該就是測序系統或者試劑的問題

  • 任意位置的N的比例超過5%,報"WARN";任意位置的N的比例超過20%,報"FAIL"

  1. Sequence length distribution: 序列長度統計
Sequence length distribution
  • 理想情況下,測得的序列長度應該是相等的。實際上總有些偏差

  • 當reads長度不一致時報"WARN";當有長度為0的read時報“FAIL”

  • 這里顯示大部分都落在251bp這個測序長度上,有少量為250或252bp,但這不影響;如果偏差很大就不可信了

  1. Sequence duplication level:統計序列完全一樣的reads的頻率
Sequence duplication level
  • 橫坐標是duplication的次數;縱坐標是duplicated reads的數目(紅線)

  • 解釋下橫坐標為何會有>10, >50等出現:測序的原始數據很大,如果每一條reads都統計,將耗時很久。這里軟件只采用了數據的前200,000條reads統計其在全部數據中的重復數目,另外大于75bp的reads只取50bp進行比較。重復數大于10的reads被合并統計成了>10,以此類推...

  • unique reads總數(藍線)作為100%,上圖中可以看出,大概僅有2%的uniqe reads可以觀察到兩次重復。也就是說,我們這里的非unique reads占總數比例僅有2%左右

  • 正常情況下的確,測序深度越高,越容易產生一定程度的duplication。高程度的duplication level,提示我們可能有bias的存在(如建庫過程中的PCR duplication)。

    另外和做的項目也有關,一般轉錄組測序的結果中duplication level都比較高,60-70%都正常,這是因為轉錄組測的是基因的覆蓋深度,各個基因表達量不同,如果某個基因覆蓋度較高【tip:覆蓋度是指基因/轉錄組測序測到的部分占整個組的比例】,那么測的部分就越多,相對應的duplication也會更高;對于外顯子組測序來說,一般覆蓋度比較一致,這里出現了duplication就不太正常。

  • 當非unique的reads占總數的比例大于20%時,報"WARN";當非unique的reads占總數的比例大于50%時,報"FAIL“

  1. Overrepresented sequences:大量重復序列
Overrepresented sequences
  • 和第8個duplication計算一樣,也是取前200,000進行統計,大于75bp只取50bp。

  • 發現超過總reads數0.1%的reads時報”WARN“,當發現超過總reads數1%的reads時報”FAIL“

  1. Adapter content: 接頭含量

    Adapter content
  • 表示序列中兩端adapter的情況

  • 軟件內置了四種常用的測序接頭序列, fastqc 有一個參數-a可以自定義接頭序列

  • 此圖中使用的illumina universal adapter并未去除,后期再使用trimmomatic/cutadapt去接頭

  • 我們在學習測序原理的時候知道了,接頭的作用一個是能夠使得序列結合到flowcell上,另外一個多樣本測序時利用接頭旁邊的index加以區分

  • 什么情況下能夠測到接頭呢? 一般測序read的長度大于插入片段(待測序列)的長度時會發生。對于WGS建庫測序來講,一般不會發生,因為他的待測序列要幾百bp,而測序也就150bp算高了。但是對于RNA-seq,一般測序序列比較短,尤其是miRNA,只有幾十bp,這是就會測到read末尾的接頭

  1. (還有一類這里沒體現)Kmer content: 重復短序列
Kmer content
  • 表示:在序列中某些特征的短序列重復出現的次數

  • 這個圖是轉錄組測序的一個文件,可以看到6-9bp幾種短序列都出現了好多次。出現的原因可能是:

    1. 沒有去除軟件內置的adapter或者沒有使用-a參數自定義adapter

    2. 序列本身重復度較高,例如在建庫PCR過程出現序列偏向性bias--> 這在轉錄組測序中確實存在


數據過濾:

主要針對接頭序列和低質量序列

  • 工具: 有許多工具能干這事,例如SOAPnuke、cutadapt、untrimmed、sickle和seqtk等,其中經常用到的是Trimmomatic(也是一個java程序)

  • Trimmomatic:

    • 安裝:官網下載我使用的是0.36版本
      Trimmomatic官網

      下載后直接解壓安裝,其中有一個trimmomatic-0.36.jar是執行文件,使用時輸入java -jar trimmomatic-0.36.jar就可以。另外還有一個adapter文件夾,里面存放了常用的illumina測序儀接頭序列fasta格式,后續處理接頭需要制定具體文件。
      自帶接頭序列
  • 關于adapter: 目前絕大部分的illumina的Hiseq和Miseq系列使用的都是Truseq3過去的GA2測序儀使用的是Truseq2PE/SE對應單端還是雙端測序 , 如果使用的不是illumina測的,可以按照里面的格式自己新建一個接頭文件,但其中的命名要注意。詳情見官網主頁
    自定義Adapter說明
  • 以PE測序為例說一下命令參數設置:
java -jar <path to trimmomatic.jar> PE [-threads <threads 線程數] 
        [-phred33 | -phred64] 質量體系,默認64,但我們現在一般都是33
        [-trimlog <logFile>] log文件
        <input 1> <input 2> 雙端測序原始fq文件
        <paired output 1> <unpaired output 1>  雙端1輸出文件 、 過濾掉的文件
        <paired output 2> <unpaired output 2>  雙端2同理
        <step > 
        <詳細講一下step:>
        1. ILLUMINACLIP: 根據上面qc部分的測試數據,我們設置TruSeq2-PE.fa:2:40:15
         TruSeq2-PE.fa是接頭序列;
         2是比對時接頭序列時所允許的最大錯誤數;
         40是要求PE的兩條read同時和adapter序列比對,匹配度加起來超40%,那么就認為這對PE reads含  有adapter,并在對應的位置需要進行切除;
        【那么為何不是匹配100%?因為測序時并不是把 adapter全測了,只測了一部分】
         15 指的是只要某條read的某部分與adapter超過了15%的相似度就認為包含,就要去除
        2. SLIDINGWINDOW: 滑動窗口長度 我們設置為4:20,代表窗口長度為4,窗口中的平均質量值至少為20,否  則會開始切除
        3. LEADING,指的是read開頭的堿基是否要被切除的質量閾值,這里設為2
        4. TRAILING,指的是read末尾的堿基是否要被切除的質量閾值,這里設為2
        5. MINLEN,指的是read被切除后至少需要保留的長度,如果低于該長度,會被丟掉,這里設置25
        ?
#一個??范例(這個測試數據是phred 64的,所以使用默認值就好):
        java -jar trimmomatic-0.36.jar PE -threads 8 \
        -trimlog logfile \
        reads_1.fq.gz reads_2.fq.gz \
        out.read_1.fq.gz out.trim.read_1.fq.gz \
        out.read_2.fq.gz out.trim.read_2.fq.gz \  ILLUMINACLIP:/path/Trimmomatic/adapters/TruSeq2-PE.fa:2:40:15 \
        SLIDINGWINDOW:4:20 \
        LEADING:2 TRAILING:2 \
        MINLEN:25</pre>
# 當然,這只是對一個樣本的雙端測序文件進行操作,那么問題來了:
        # 如果你的樣本比較多呢?還要手動一個個輸入嗎?
        # 雖然說vim中使用快速替換 :%s/AA/BB/g 可以全局替換AA成BB,但還是有點麻煩
        # 能不能讓程序來一個自動化呢?是可以的!可以看作是上面??腳本的改進版~
        # 在腳本中構建for循環
        # vi trim.sh
        ?
         #開頭這樣寫而不寫*.gz的目的是避免了樣本名稱的重復
        for filename in *_1.fastq.gz  
        do
         #對于filename(%)向右匹配_的全部內容(*),然后這部分去掉,留下這之前的
        base=${filename%_*}  
        java -jar trimmomatic-0.36.jar PE \       # 加上反斜線能讓程序整體更清晰
         -threads 8 \
         -trimlog logfile \
         ${base}_1.fastq.gz ${base}_2.fastq.gz \
         out.${base}_1.fastq.gz out.trim.${base}_1.fastq.gz \
         out.${base}_2.fastq.gz out.trim.${base}_2.fastq.gz \
         ILLUMINACLIP:/home/u1239/biosoft/Trimmomatic-0.36/adapters/TruSeq2-PE.fa:2:30:10 \
         SLIDINGWINDOW:5:20 \
         LEADING:5 TRAILING:5 \
         MINLEN:50
        done
多樣本trim
  • 如果報錯,就說明參數錯誤例如我在運行的時候就有的問題百思不得解,敲了好幾遍代碼應該沒錯,但就是報錯,換個服務器就好了,難道是平臺問題?其實并不是,就是因為一點點小地方,有時只是一個代表換行的反斜線\
    報錯源于參數

多樣本質控:

fastqc對于一兩個樣品還能吃得消,但樣本多了,我們如何同時查看對比他們的信息呢?

這里就可以使用界面更加優美的multiqc軟件了, 他就是fastqc結果的整合我會從一個初學者角度來一步步進行,其中包括了中間犯的錯誤及改正~,如果你也在運行的過程發現了類似的錯誤,可以參考一下。


分界線1: 嘗試自己安裝


下載地址:

https://files.pythonhosted.org/packages/fa/3e/fbdcbaebadad2110eed3b4212ced58617cbd9badbfc728c5eabc53916b84/multiqc-1.5.tar.gz

解壓縮后,會發現和以前安裝的源代碼文件不同,他沒有直接顯示可執行文件,也沒有配置文件。這是因為multiqc是一個python軟件,這里先看一下setup.py:

MultiQC setup.py

直接使用python setup.py會報錯,因為可能你的服務器并沒有setuptools,這是python依賴的第三方庫。

先安裝setuptools:

下載地址:

https://files.pythonhosted.org/packages/1a/04/d6f1159feaccdfc508517dba1929eb93a2854de729fa68da9d5c6b48fa00/setuptools-39.2.0.zip

解壓縮完setuptools會看到有這些文件,這也是一般的python軟件常見的:包括了setup.py,easy_install.py等

一般的Python程序
# 主要使用setup.py
python setup.py build # 編譯
python setup.py install #安裝

在第二步安裝的時候報錯,原因是不能對/usr/local/lib下的python進行操作,因為不管/usr/bin還是/usr/local/bin,都是可讀不可改,如果自己家目錄環境變量中查不到python的路徑,那么安裝過程中會自動調取更上層目錄的python使用。這往往會引發一系列問題。如果要自己更改的話,需要自己home目錄下有python

報錯信息

好吧,那么接下來我們再安裝自己的python,畢竟自己的軟件用起來方便:
# 下載地址 
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
# .tgz 就等同tar.gz
# 解壓后會看到配置文件configure,設置成自己的軟件環境變量即可
./configure --prefix=/YOUR PATH/
make
make install
# 可能結尾會有報錯,但是不影響使用,出現了可執行文件python就成功了
# 將python復制到你的環境變量中就能直接調取
# 最后使用which python檢測是否安在了自己的目錄下

自己的python安裝完成了,進入到解壓好的multiqc文件夾下, python setup.py build 編譯會運行成功,然后python setup.py install

安裝成功

接著,multiqc就會出現在了自己的軟件環境變量中了,輸入multiqc就會看到

multiqc

分界線2: 同一件事,換個玩法


目的:安裝multiqc
途徑:conda自動安裝
緣由:好久不用conda安裝軟件,一直堅持源代碼,因為好掌控。但是有的軟件依賴的包很多,自己又很難發現這些潛在的關系,所以想重新試試conda,但并不是傻瓜式的使用,而是讓conda聽我的話~授之以魚,不如授之以漁

Here we go!

安裝: 安裝過程需要注意

  1. 可以自定義新文件夾,默認是在home/miniconda3/

  2. ??不要將conda添加到PATH中,我們只需要把它視作一個保姆babysitter,而不要當一個管家housekeeper

  3. 安裝完conda,把miniconda/bin下的conda復制到你的/biotools/PATH(這個環境變量因人而異)

添加源: 清華源和中科大源都不錯,別忘了再添加一個bioconda源

新建conda專屬下載目錄: 你可以在你的biotools目錄下新建一個conda軟件存放目錄,例如conda_install。然后把這個文件夾添加到環境變量。以后你用conda安裝的所有軟件都存放在這里,

conda專屬目錄

??和你自己安裝的軟件要區分開, 然后利用conda install -p /PATH/conda_install multiqc 就可以實現multiqc的安裝了


寫在后面


  1. multiqc的使用很簡單,然后結果還是交互式的,能導出很多格式

  2. 這次實現了人工和自動二者的有機結合:復雜的,多依賴性的軟件還是要靠conda解決。但是如果一個軟件用兩種方法都安裝了,怎么選擇?這個利用bashrc中設置的順序:哪個目錄優先,就先搜索哪個目錄

結果一目了然:trim掉低質量序列和接頭后,新的數據質量值都在q30以上
MultiQC 1
MultiQC 2

歡迎關注我們的公眾號~_~  
我們是兩個農轉生信的小碩,打造生信星球,想讓它成為一個不拽術語、通俗易懂的生信知識平臺。需要幫助或提出意見請后臺留言或發送郵件到Bioplanet520@outlook.com

bioinfoplanet

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容