假如你跟别人说你写了很多Perl代码,别人会相信吗?要是问你,在CPAN上有模块吗?你如何回答?
Minor update 2014-08-19: 用Dist::Zillaa吧!
Dist::Zilla is a program to make it easier to write, package, manage, and release free software.
为了减少依赖,我之前写的Perl代码大多是独立脚本形式,即使有模块也是随脚本分享,一些可重用的代码,也只是通过复制粘贴。
Perl模块最好的分享途径还是发布到CPAN上,今天变决定把以前课题里面的一个有用的函数发布出来。
通过一番Google,竟然没有找到中文介绍如何在CPAN发布模块,我收藏的一些中文电子书也没有。用英文Google后,终于在Perldoc上找到一篇较官方的帮助文档《preparing a new module for distribution》。
具体过程就不说了,总之是一个不大顺畅的过程。简单的说,就是要编写合格的模块,需要严格按固定格式书写文档,很难写测试文件,要考虑Perl版本兼容性问题。完全没有golang模块编写畅快。
而且CPAN上传模块也很麻烦,注册需要人工审核,大约花了几个小时,上传后也要花几个小时等待人工审核通过。本文完成时,CPAN仍未审核通过。
RNA::HairpinFigure模块同时托管在Github上。
这次的经验是:
附RNA::HairpinFigure的介绍:
RNA-HairpinFigure
RNA::HairpinFigure
根据RNA序列与其对应的“点-括弧标记”表示的二级结构来绘制发夹结构样的字符图像。
miRNA数据库miRBase中包含了miRNA及其前体(miRNA precursor, pre-miRNA),
并提供了一种直观的字符图像来表示pre-miRNAs发夹结构样的二级结构。如下所示,
>hsa-mir-92a-1 (-36.20) [hsa-miR-92a-1*:11-33] [hsa-miR-92a:48-69]
---cu uac C U uu
uuc acAGGUUGGGAU GGU GCAAUGCUgug u
||| |||||||||||| ||| |||||||||||
gag UGUCCGGCCCUG UCA CGUUAUgguau c
gguuu --u U - gu
RNA的二级结构可以用ViennaRNA软件包中的RNAfold来预测,以一种称为“点-括弧标记”
(dot-bracket notation)的形式来表示,如下所示:
>hsa-mir-92a-1 MI0000093 Homo sapiens miR-92a-1 stem-loop
CUUUCUACACAGGUUGGGAUCGGUUGCAAUGCUGUGUUUCUGUAUGGUAUUGCACUUGUCCCGGCCUGUUGAGUUUGG
..(((...((((((((((((.(((.(((((((((((......)))))))))))))).)))))))))))).)))..... (-36.20)
其中,1. “.”表示失配(mismatch),成对的“(”和“)”表示一对碱基配对(注,
RNA二级结构中GU也能配对)。
2. (-36.20)是该二级结构的最小自由能。
我们先前的miRNA预测模型基于pre-miRNA的二级结构模式来预测miRNA,需要对pre-miRNA
的二级结构进行变换。然而,miRBase和ViennaRNA均未提供绘制hairpin字符图像的脚本或程序,
故只能自己动手。
如果pre-miRNA的二级结构较复杂(多出现在植物中),包含多个环(loop),那么和和miRBase
的做法一致,只保留最长的一条茎,将其它枝干(stem-branches)处理成环,泡或沟。具体的做法是:
1. 如果hairpin两端有较小的一个枝干,将其展开,形成ssRNA,可以看成侧翼序列。
2. 如果主干中有小的枝干,将其扩展,形成较大的泡或沟
miRNA预测模型FOMmiR可通过下列网址访问:
http://bioinf.shenwei.me or http://bioinf.xnyy.cn/.
英文的介绍
RNA-HairpinFigure
RNA::HairpinFigure - Draw hairpin-like text figure from RNA
sequence and its secondary structure in dot-bracket notation.
miRNA database miRBase maintains miRNAs and their precursors --
pre-miRNAs which have hairpin-like secondary structures. They
provide the hairpin-like text figure along with sequences and
secondary structures in dot-bracket notation which could produced
by ViennaRNA package.
However, neither miRBase nor ViennaRNA provide any scripts or
programs to transfrom dot-bracket notation to hairpin-like text
figure, which was needed in our miRNA prediction project.
RNA::HairpinFigure draws hairpin-like text figure from RNA
sequence and its secondary structure in dot-bracket notation.
If the hairpin have multi loops, they will be deleted and
treated as a big loop, the longest stem will be the final stem.
This module is part of the FOMmiR miRNA predictor on
http://bioinf.shenwei.me or http://bioinf.xnyy.cn/.
May this module be helpful for you.