1. 程式人生 > >使用minimap+miniasm對nanopore進行基因組組裝

使用minimap+miniasm對nanopore進行基因組組裝

我們用來練手的文章發表在 Nature Communication ,”High contiguity Arabidopsis thaliana genome assembly with a single nanopore flow cell”, 非常不要臉的說,這篇文章是我師爺實驗室發的。

簡單講講故事內容,就是他們實驗室買了一臺nanopore儀器,就是下面這臺, 目前儀器價格國內是8K左右,當然測序的價格就另說了。如同買臺PS4主機,還要買遊戲,買個單反,你還得買鏡頭。儀器只是敗家的開始!

nanopore

他們認為三代測序目前有兩大問題,測的還不夠長以及不夠準。nanopore解決了其中一個問題,不夠長。Arabidopsis thaliana

當年用一代測序,雖然可以認為是組裝的金標準了,但是還是有很多區域是BAC連BAC文庫搞不定的,所以就用這臺儀器把 Arabidopsis thaliana 測了一波。顯然就測一個nanopore,還是已知序列的物種是不可能發文章的,於是他們又用Pacbio sequel測了一波。最後用bionano 光學圖譜驗證了一次(請大家自行計算要多少錢)。

光測序不行,還得組裝對吧。傳統的組裝方法是想辦法利用高深度和隨機錯誤進行糾錯,然後用糾錯後的長序列進行組裝,最後用二代進行糾錯。對於一臺不錯的伺服器(20W起步吧)大約花個十天半個月就行。作者或許認為買一臺20多w的外設配合不到1w的測序儀可能是太蠢了,於是他用了比較Li Heng大神開發的工具,Minimap+miniasm進行組裝,然後用racon+pillon進行糾錯,用了一臺Macbook Pro 15.6寸花了4天就搞定了,並且和常規工具比較,還算過得去哦。

下面就是正式的分析:

根據文章提供的專案編號”PRJEB21270”, 在European Nucleotide Archive上找到下載地址。

ENA搜尋

進入這個頁面之後,就可以去下載作者用到的所有資料,我們下載Sequel和MinIon和Illuminia的資料就好了,資料量加起來差不多30G。

## Sequal
wget -c -q ftp://ftp.sra.ebi.ac.uk/vol1/ERA111/ERA1116568/bam/pb.bam
wget -c -q ftp://ftp.sra.ebi.ac.uk/vol1/ERA111/ERA1116568/bam/pb.bam.bai
## MinION
wget -c -q ftp://ftp.sra.ebi.ac.uk/vol1/ERA111/ERA1116595/fastq/ont.fq.gz # Illuminia MiSeq wget -c -q ftp://ftp.sra.ebi.ac.uk/vol1/ERA111/ERA1116569/fastq/il_1.fq.gz wget -c -q ftp://ftp.sra.ebi.ac.uk/vol1/ERA111/ERA1116569/fastq/il_2.fq.gz

這就是大神的自信,把程式碼都給你,反正你也看不懂。當然我在重複的時候用的都是最新的軟體,所以會有所不同

第一步:拿著80%~90%正確率的原始資料相互比對, 找序列之間的Overlap。這一步,我花了30分鐘

time ~/opt/biosoft/minimap2/minimap2 -t 10 -x ava-ont ont.fq ont.fq > gzip -1 ont.paf.gz &

第二步:找到Overlap,就能夠進行組裝了。這一步我花了2分鐘

time ~/opt/biosoft/miniasm/miniasm -f ont.fq ont.paf > ONTmin.gfa &
awk '/^S/{print ">"$2"\n"$3}' ONTmin.gfa | seqkit seq > ONTmin_IT0.fasta &

第三步: 原始的組裝結果充滿了錯誤,所以需要進行糾錯。糾錯分為兩種,一種是用三代自身資料,一種是用二代資料進行糾錯。當然這兩步都是需要的

首先使用三代資料進行糾錯,古語有云“事不過三”一般迭代個三次就差不多。這三步,差不多用了1個小時。

# Iteration 1
~/opt/biosoft/minimap2/minimap2 ONTmin_IT0.fasta ont.fq > ONTmin_IT0.paf &
time ~/opt/biosoft/racon/build/bin/racon -t 10 ont.fq ONTmin_IT0.paf ONTmin_IT0.fasta > ONTmin_IT1.fasta &
# Iteration 2
~/opt/biosoft/minimap2/minimap2 ONTmin_IT1.fasta ont.fq > ONTmin_IT1.paf
time ~/opt/biosoft/racon/build/bin/racon -t 10 ont.fq ONTmin_IT1.paf ONTmin_IT1.fasta> ONTmin_IT2.fasta
# Iteration 3
~/opt/biosoft/minimap2/minimap2 ONTmin_IT2.fasta ont.fq > ONTmin_IT2.paf
time ~/opt/biosoft/racon/build/bin/racon -t 10 ont.fq ONTmin_IT2.paf ONTmin_IT2.fasta > ONTmin_IT3.fasta

之後使用二代資料進行糾錯。二代資料雖然短,但是測序質量高,所以一般都要用它進行糾錯。推薦用30X PCR free的illuminia 測序資料。

Step 1: 資料預處理,過濾低質量短讀,去接頭。工具很多,常用的是trimmomatic,cutadapter. 我安利一個國內海普洛斯搞的一個工具fastp。

# data clean
fastp -q 30 -5 -l 100 -i il_1.fq.gz -I il_2.fq.gz -o i1_clean_1.fq -O i1_clean_2.fq 

這裡標準為:平均質量高於Q30,對5‘端進行低質量鹼基刪除,保留大於100bp的短讀

Step2: 比對,這一步基本都只用了bwa了

# align
bwa index ONTmin_IT3.fasta
bwa mem -t 8 ONTmin_IT3.fasta il_clean_1.fastq il_clean_2.fastq | samtools sort [email protected] 8 > ONTmin_IT3.bam

step3: 使用比對後的BAM檔案進行糾錯

# short read consensus call
java -Xmx16G -jar pilon-1.22.jar --genome ONTmin_IT3.fasta --frags ONTmin_IT3.bam --fix snps --output ONTmin_IT4

二代糾錯的時間明顯比之前的久,需要一天時間。

大家拿出自己的筆記本實際感受下唄

參考文獻

  • nanopore組裝擬南芥: High contiguity Arabidopsis thaliana genome assembly with a single nanopore flow cell
  • 不糾錯組裝: Minimap and miniasm: fast mapping and de novo assembly for noisy long sequences
  • 三代組裝軟體評測: Comprehensive evaluation of non-hybrid genome assembly tools for third-generation PacBio long-read sequence data

相關推薦

使用minimap+miniasmnanopore進行基因組組裝

我們用來練手的文章發表在 Nature Communication ,”High contiguity Arabidopsis thaliana genome assembly with a single nanopore flow cell”, 非常不要臉的說

使用新版Falcon進行三代測序基因組組裝

這裡的新版指的是PacBio公司在2018年9月釋出pb-assembly, 而這篇文章是在2018年9月30日發的。 今年早些時候在參加三代培訓時,聽說PacBio會在今年對Falcon進行一些改變。前幾天我在讀 readthedocs上的Falcon文件

java c++ 進行socket通訊資料包的組裝和拆分問題

公司現在要求java(伺服器)與vC++(客戶端)  進行socket通訊,協議已經定義好了,  就是不知道怎麼對資料包(結構)進行組裝和拆分。在java中我把結構做為一個類來處理,現在就是在傳送的時候把 new 一個MessageStruct物件 在把值set進去  然後用

使用容器和Elasticsearch集群Twitter進行監控

docker rancher 集群 twitter 監控 介紹Elasticsearch是ELK(Elasticsearch/Logstash/Kibana)的基石。在這篇文章中,我們將使用Rancher Catalog來部署stack,並將它用於追蹤Twitter上的tag和brand。

安卓端通過httpMysql進行增刪改查

name 交流 shm != 用戶 習慣 cti -perm 得到 各類it學習視頻,大家都可以看看哦!我自己本人都是通過這些來學習it只知識的! 下面是視頻鏈接轉自:http://www.cnblogs.com/wangying222/p/5492935.html ht

sql語句進行操作

tmp from num table 數據 code pda odi com 1 create table test_1( 2 tname number(20), 3 tage varchar2(1024), 4 tmessage varchar(1024)

python3 簡單實現從csv文件中讀取內容,並內容進行分類統計

tmp spa writer ict 打開文件 while 類型 spl blog 新手python剛剛上路,在實際工作中遇到如題所示的問題,嘗試使用python3簡單實現如下,歡迎高手前來優化import csv #打開文件,用with打開可以不用去特意關閉file了

C#中DataTable進行全連接後group by,orderby

orderby utime mp3 var c# put enume enum solver var result = from temp2 in ( f

學習4 縮寫進行標記

logs style con 放棄 code 學習 clas itl htm <!doctype html> <html> <body style="background-color:#55EBED"> <p>一個<d

java圖片進行透明化處理

bsp code 1.5 round imageio class public 判斷 icon 1 package utils; 2 3 import java.awt.Graphics2D; 4 import java.awt.image.BufferedI

cacti開發模板主機進行監測

cacti自定義模板 接著上篇博文cacti配置安裝,接下來在講一下對cacti自主開發模板的一些操作。登錄自己設置好的虛擬主機,在上一篇中,我設置的虛擬主機為 cacti.gaowei.com。第一次登錄的時候,會提示你安裝cacti,按照提示的一步一步來就可一了,默認的用戶名和密碼是admin和 a

用block變量來字符數組進行排序

mil 升序 進行 mutable ted ear string sorted hit <span style="font-size:18px;">降序排序</span><span style="font-

python_如何字典進行排序?

反轉 abc import 通過 item abcd mic 先後 true 案例: 某班英語成績以字典的形式存儲為: {‘lili’:78, ‘jin’:50, ‘liming’: 30, ......}    依據成績高低,進行

Python—Excel進行讀寫操作

href ace 需要 文件中 tle net 過程 ova 設置 學習Python的過程中,我們會遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數據寫入Excel表格,使用xlrd module從Excel讀取數據。下面介紹如何實現使用pyt

使用手勢UIImageView進行縮放、旋轉和移動

nbsp boa use itl ans self. iges comm title [cpp] view plain copy // 添加所有的手勢 - (void) addGestureRecognizerToView:(UIView *)view

在LinuxMint中firefox進行手動安裝flash插件

set 手動 ams flash linu 4.3 trac 插件 啟動 /********************************************************************* * Author : Samson *

python(46):字典進行排序

nav last itblog dac 註意 file trace erro [1] 原文地址: http://www.cnblogs.com/kaituorensheng/archive/2012/08/07/2627386.html 字典,形如 dic = {‘a‘

iOS 強大的泛型,同樣也可以UIButton進行擴展

pub 來講 end ast welcom sign sig 應用 技術 文章圍繞這五點: 1. 泛型是什麽 2. 為什麽要用泛型 3. 泛型怎麽用 4. 泛型進階 5. 泛型的延伸使用 泛型(Generics)是什麽? 引用Apple中Generics的描述:

pythonftp進行操作

download 實現 ftp連接 gin 登錄 正則匹配 bin 進入 下載 背景:需要對ftp進行操作,涉及上傳和下載操作 from ftplib import FTP ftp = FTP(host=“ftp的hostname",user=‘登錄用戶名‘,

Java使用RSA加密算法內容進行加密

hat trac ogg size gen cte false static doc 什麽是RSA加密算法 RSA是一種典型的非對稱性加密算法,具體介紹可參考阮一峰的日誌 RSA算法原理 下面是使用RSA算法對傳輸內容進行加密的一個簡要Java案例,主要用到了三個類,大體實