「基因组组装」用AMOS/minimus2合并两个contig
缘起
这个软件我是在一篇文献中看到,里面提到可以用minimus2将两个存在overlap的BAC文库进行合并,因此我尝试复现这个过程
文献实例安装部分
AMOS目前已经不再更新了,最后一个版本是3.1.0,托管在https://sourceforge.net/projects/amos/, 需要打开网页下载,然后传到服务器上。
我们需要通过源码进行安装,安装过程中要解决一些警告和报错。
tar xf amos-3.1.0.tar.gz
./configure --prefix=/opt/biosoft/amos-3.1.0
make
make installl
第一次运行配置时,它可能会提示如下的问题,这里我们只需要用到mininus2,所以只要安装MUMMER,让它出现在环境变量中即可。
警告在编译过程中,由于这个软件有些古老,所以还会遇到如下报错
报错解决方案就是编辑src/Align/find-tandem.cc
文件,在开头增加#include <getopt.h>
如果你安装的是MUMMER4,那么还需要修改mininus2里的代码,将原来的-maxmatch
改成--maxmatch
以及如果你的MUMMER安装是更改了prefix
,那么还需要修改show-coords和delta-filter的路径,
建议做如下修改,因为make-consensus_poly
对scaffold中gap处理效果比较好
41: $(BINDIR)/make-consensus -B -e $(CONSERR) -b $(BANK) -w $(WIGGLE)
为
41: $(BINDIR)/make-consensus_poly -B -e $(CONSERR) -b $(BANK)
实践
在NCBI上根据EU382072.1
和 EU382073.1
下载两个序列
第一步: 合并序列
cat EU382072.1.fasta EU382073.1.fasta > input.seq
第二步: 将FASTA格式转成AMOS格式
toAmos -s input.seq -o input.afg
第三步: 调用minimus2
minimus2 input -D REFCOUNT=1
输出结果:
- input.fasta : 成功合并的contig
- inputsingletons.seq : 未成功合并的contig
成功的合并出293k的序列。
$ seqkit stat input.fasta
file format type num_seqs sum_len min_len avg_len max_len
input.fasta FASTA DNA 1 293,737 293,737 293,737 293,737
用minimap2
将原来的序列和组装结果进行比对,并按照「R绘图」minimap2的PAF文件如何进行可视化?对结果进行可视化
最后补充下minimus2的用法说明:
minimus2 prefix \ # 输入文件的前缀
-D REFCOUNT=n \ # 第一个集合中序列数
-D OVERLAP=n \ # overlap至少有多少个碱基,默认40
-D CONSERR=f \ # 允许的错配率,默认是0.06
-D MINID=n \ # 联配序列的最小相似比例,默认是94,对应show-coord的-I参数
-D MAXTRIM=n # 序列最多允许修剪多少个碱基,默认20
其中REFCOUNT的作用是确定序列应该如何进行比对,如果你有两个输入文件,第一个文件有N条序列,第二个文件有M条序列。REFCOUNT=N时,表明以第一个文件中序列作为参考序列,让第二个文件中序列和第一个文件进行比对。如果REFCOUNT=0,就是all-vs-all, 也就是所有序列和所有序列进行比较。