您可以使用
split -a 6 -p'^ >'your_file.fa seq _
來按順序拆分FASTA文件。然後使用支持覆蓋率的任何現有讀取模擬器(ART,DWGsim等)。如果要混合所有讀取(而不是按原始順序排序),則可以使用RNFtools。
編輯1:
為@terdon指出,先前的命令僅適用於OSX。一個類似的Linux襯板(但使用數字而不是字母的命名方案略有不同)可以
csplit -f seq_ -n 6 your_file.fa'/ ^ > /'{* }
要使此命令也能在OS X上運行,需要安裝coreutils(例如,使用brew),然後使用 gcsplit
而不是 csplit
。
編輯2:
一旦FASTA被序列分割,模擬變得簡單明了,可以使用許多不同的方法。我最喜歡的是使用GNU Parallel。想像一下,您將覆蓋範圍放在名為 covs.txt
的文本文件中的不同行上,並且其順序與 your_file.fa
中的序列相同,例如
4030 ...
然後,您可以使用DWGsim通過以下方式模擬原始序列的讀取:
ls -1 seq_ * |粘貼covs.txt-\ |並行-v --colsep'\ t'dwgsim -1 100 -2 100 -C {1} {2} sim_ {2}
並使用以下命令合併獲得的FASTQ文件:
cat sim_seq _ *。bwa.read1.fastq >讀取1.fqcat sim_seq _ *。bwa.read2.fastq >讀取2.fq
一個可能這種方法的危險在於,我們假設seq_ *文件的數量與 covs.txt
中的行數相同,這可能不是正確的(錯誤地)。我們應該在仿真步驟之前進行檢查,例如:
[[“” $(ls -1 seq_ * | wc -l)“ ==”“ $(cat covs.txt | wc -l)“]] \ ||迴聲“ covs.txt中的行數不正確”
另一個需要注意的是,模擬讀段不是隨機排列的(按源序列分組)。