使用minimap+miniasm對nanopore進行基因組組裝
我們用來練手的文章發表在 Nature Communication ,”High contiguity Arabidopsis thaliana genome assembly with a single nanopore flow cell”, 非常不要臉的說,這篇文章是我師爺實驗室發的。
簡單講講故事內容,就是他們實驗室買了一臺nanopore儀器,就是下面這臺, 目前儀器價格國內是8K左右,當然測序的價格就另說了。如同買臺PS4主機,還要買遊戲,買個單反,你還得買鏡頭。儀器只是敗家的開始!
他們認為三代測序目前有兩大問題,測的還不夠長以及不夠準。nanopore解決了其中一個問題,不夠長。Arabidopsis thaliana
光測序不行,還得組裝對吧。傳統的組裝方法是想辦法利用高深度和隨機錯誤進行糾錯,然後用糾錯後的長序列進行組裝,最後用二代進行糾錯。對於一臺不錯的伺服器(20W起步吧)大約花個十天半個月就行。作者或許認為買一臺20多w的外設配合不到1w的測序儀可能是太蠢了,於是他用了比較Li Heng大神開發的工具,Minimap+miniasm進行組裝,然後用racon+pillon進行糾錯,用了一臺Macbook Pro 15.6寸花了4天就搞定了,並且和常規工具比較,還算過得去哦。
下面就是正式的分析:
根據文章提供的專案編號”PRJEB21270”, 在European Nucleotide Archive上找到下載地址。
進入這個頁面之後,就可以去下載作者用到的所有資料,我們下載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+miniasm對nanopore進行基因組組裝
我們用來練手的文章發表在 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。
安卓端通過http對Mysql進行增刪改查
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的描述:
python對ftp進行操作
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案例,主要用到了三個類,大體實