miRDeep是个老牌的从高通量数据中注释miRNA的程序。本文撰写时,其最新版本为2.0.0.8.更新时间为2016年的5月。本文记录一些在安装使用过程中遇到的问题,希望为遇到类似问题的朋友们提供一些启示和帮助。
环境:
系统:ubuntu 16.04 LTS
Perl:5.22+
miRDeep:2.0.0.8
问题1:install.pl 和 make_html.pl
目前如果要使用miRDeep2,必须要运行install.pl来确认所需依赖的组件都正确安装。未安装的,程序会自动下载并安装。安装的方法我就不细讲了,网上教程一搜一大把,主要问题容易出现在PDF::API2模块上。系统会自动安装最新的版本,但每次检查仍不通过,我按照网上的方法安装了0.74版本的旧版本(实际版本好像是2.015),但make_html.pl仍然会报错。这里有两个问题:
1.关于PDF::API2模块的安装问题。
如果你手动安装了PDF::API2模块并确信安装没有问题(可用 $perl -e 'use PDF::API2;' 来检查一下,没有报错则表示安装正确。),那么可以手动修改install.pl中的601行之后的内容,这里是通过checkBIN函数的返回值$ret来判断模块是否安装成功,只要在该行下面加上$ret = 0;就可以强制程序认为模块安装成功。修改后再运行一次,检测全部通过后,会在程序路径下生成一个名字为install_successful的空文件。有了这个文件,其它程序才能正常运行。
注:我后来没有重新尝试最新版的PDF::API2模块是否可用,但从程序的更新时间来看,应该不至于还不兼容该版本的模块,毕竟这是生成结果所需的一个重要组件。所以我想最新版本的可能也没问题。只是install.pl对Perl模块的安装状态的检测方法还有问题,因此无论安装成功与否,都无法通过检查。
2.关于系统Perl版本为5.22的问题。
Perl 5.22以后对正则表达式的要求做了一定的修改,其中不允许在//间加裸{},但在make_html.pl的参数判断部分,可能由于开发时间较早,该部分的//中存在哈希的名字诸如:/$hash{abc}/这类的写法,因此引起报错。具体有几行内容,详见报错信息给出的行数。解决办法很简单。只要用\把{}注释一下就可以了,如:/$hash\{abc\}/。修改完毕后,运行下make_html.pl,检查是否报错。
问题2:关于fasta文件的格式问题。
1. fasta格式的头中不能包含空格。
这个是老生常谈,奇葩的规定,但没得选择。如果log文件中的报错信息提示你某个文件头中不能有空格,还是乖乖的再检查一遍你的fasta文件吧。
2.重要的事情说三遍:文件要unix格式,文件要unix格式,文件要unix格式!!!
这也是个奇葩,我自己在win下准备的miRNA成熟体和前体文件,命名用眼睛看都没有空格,到了服务器上依旧报错说有空格。找了半天原因也没找到,明明用tutorial中的测试数据all green,换了自己的数据就傻眼。别问为什么,因为DOS换行是‘\r\n’,linux是‘\n’。‘\r’是空白!是空白!是空白!没错,在perl的正则表达里\r也属于\s!!!还有路径里也不能有空格!!!
问题3:关于miRDeep.pl的-t参数。
这个-t参数是指定物种的,据说明文档讲,是连接UCSC是要用到的。可以指定的物种是有限的,要看说明,看说明,看看哪些是可以使用的,对于说明里没有的物种不要乱指定,否则结果很奇葩,会告诉你无法创建表达估算的相关文件,英文意思自己看,我不copy原文了,都在导出的report里。为什么?因为中间的一步过程中需要调用quantifier.pl程序,这个程序是接受-t参数的,如果物种不在指定范围内将直接中断运行,从而继续后面的程序。这样将无法创建表达相关的结果(例如:expression_analyses、expression_xx_xx_xx.html等),对后面结果的生成也有影响。如果苦逼的做小物种的怎么办?恭喜你,不指定该参数一样可以运行。只要取消了miRDeep后面的-t参数及物种,程序就可以顺利完成了。
阅读(2714) | 评论(3) | 转发(2) |