在CPAN上发布Perl模块

· Read in about 2 min · (242 Words)

假如你跟别人说你写了很多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.