Perl:如何将信息传递给模块中的函数?

时间:2012-10-03 19:41:25

标签: perl perl-module

Perl全新。无论如何,我得到了一个特定的任务,我在网上发现了一个完全我想要的perl模块。

Matrix

Documentation

这是perl模块的文档 - 在Ext下有一个名为pwmsearch,它完全符合我的需要。

所以我试着编写一个类似这样的脚本:

#!/usr/bin/env perl -w

use strict; 
use TFBS::Ext::pwmsearch; #this was how the documentation said in synopsis part for pwmsearch so I figured this was how to do it

问题是我无法弄清楚我应该如何将对象传递给pwmsearch。上面的文档中显示的pwmsearch的源代码说它接收$ matrixobj和$ seqobj,我将其存储为文件矩阵和序列。

所以在谷歌搜索我可以尝试的东西之后,我尝试过这样的事情:

pwmsearch('matrix','sequence'); 

open FILE, 'matrix.txt' or die "Couldn't open file";
$matrix.=<FILE>
close FILE;

open FILE, 'sequence' or die "Couldn't open file";
$seq.=<FILE>
close FILE;
pwmsearch($matrix,$seq)

但是所有这些都让perl吠声给我带来了各种各样的错误。我做错了什么,我该怎么做才能解决它们?

1 个答案:

答案 0 :(得分:1)

以下是如何生成pwm矩阵对象的文档:http://tfbs.genereg.net/DOC/TFBS/Matrix/PWM.html

use TFBS::Matrix::PWM;
my $matrixstring = <<ENDMATRIX
 0.61 -3.16  1.83 -3.16  1.21 -0.06
-0.15 -2.57 -3.16 -3.16 -2.57 -1.83
-1.57  1.85 -2.57 -1.34 -1.57  1.14
 0.31 -3.16 -2.57  1.76  0.24 -0.83
ENDMATRIX;
my $pwm_matrix_in = TFBS::Matrix::PWM->new(-matrixstring => $matrixstring,
                 -name         => "MyProfile",
                 -ID           => "M0001"
                );

PWMSearch文档:http://tfbs.genereg.net/DOC/Ext/pwmsearch.html

它需要五个输入变量:$ matrixobj,$ seqobj,$ threshold,$ start,$ end,如果我看到正确的话,最后3个是可选的。

seqobj很可能是Bio :: Seq兼容对象。从文件创建新对象: 文档:http://metacpan.org/pod/Bio::SeqIO

use Bio::SeqIO;
my $seqobj_in  = Bio::SeqIO->new(-file => "inputfilename" ,
                           -format => 'Fasta');


use strict; 
use TFBS::Ext::pwmsearch;
TFBS::Ext::pwmsearch::pwmsearch($pwm_matrix_in,$seqobj_in);

我希望这会对你有所帮助。