BioPerl& CPAN - 安装问题&错误“无法在@INC中找到Bio / EnsEMBL / Registry.pm”

时间:2012-04-23 12:28:00

标签: cpan bioperl

我发布这条消息纯粹绝望,因为我真的不知道还有什么可以尝试。我是bioperl的初学者,我正在编写一个脚本来解析我从MolQuest fgenesh得到的一些结果。结果以.txt格式输出,我想将它们解析为GFF和fasta文件中的mRNA和蛋白质序列,以便于与我们的其他结果进行比较。所以我找到了 Bio :: Tools :: Fgenesh 模块,我正在使用它编写脚本。问题是,BioPerl似乎不适用于我的ubuntu pc

我按照http://www.bioperl.org/wiki/Installing_Bioperl_for_Unix的说明进行操作。我设法以root模式安装CPAN(否则它不起作用)和BioPerl通过CPAN安装。所有测试都没问题,但是当我运行此脚本来测试安装时

 use strict;
 use warnings;

 use Getopt::Long;
 use Bio::EnsEMBL::Registry;

 my $reg = "Bio::EnsEMBL::Registry";
 $reg->load_registry_from_db(
              -host => "ensembldb.ensembl.org",
              -user => "anonymous"
 );
 my $db_list=$reg->get_all_adaptors();
 my @line;

foreach my $db (@$db_list){
    @line = split ('=',$db);
    print $line[0]."\n";
 }

我收到错误:“无法在@INC中找到Bio / EnsEMBL / Registry.pm”

我尝试通过Build.PL再次安装BioPerl,以root身份运行,但仍然得出相同的结果。

感谢您的帮助 Merche

3 个答案:

答案 0 :(得分:3)

您似乎正在尝试使用Ensembl API。这不是BioPerl分发的一部分。有关如何安装它的详细信息,请参阅http://www.ensembl.org/info/docs/api/api_installation.html。我们不建议您将此安装在任何默认的Perl库位置,因为API与同一版本中的数据密切相关。 Ensembl每年提供4-5个版本,因此保持这一点可能很困难。

如果您有任何问题,那么您可以联系开发人员。我们有一个活跃的开发者邮件列表&帮助台。有关详细信息,请参阅http://www.ensembl.org/info/about/contact/index.html

答案 1 :(得分:0)

你试过了吗?

» cpan

cpan shell -- CPAN exploration and modules installation (v1.960001)
Enter 'h' for help.

cpan[1]> install Bio::EnsEMBL::Registry

我注意到这不在您链接的页面上,暗示它应该是自动完成的,但是可能值得尝试。

答案 2 :(得分:0)

我遇到了与你一样的错误,在Windows 64x上工作。似乎Bio :: EnsEMBL :: Registry在我的Windows计算机上无法识别。 遵循所有ENSEMBL-API指令,我终于遇到了一个调试页面(http://www.ensembl.org/info/docs/api/debug_installation_guide.html)。运行C:\ src \ ensembl / misc-scripts / ping_ensembl.pl后,我再次收到与上面列出的相同的错误消息。

根据Windows的PERL API帮助,我需要运行"设置PERL5LIB = C:\ src \ bioperl-1.2.3; C:\ src \ ensembl \ modules; C:\ src \ ensembl-对比试验\模块; C:\ SRC \ ENSEMBL-变异\模块; C:\ SRC \ ENSEMBL-funcgen \模块"从cmd框。那样做了,但错误保持不变。

现在我包含了这些路径(C:\ src \ bioperl-1.2.3; C:\ src \ ensembl \ modules; C:\ src \ ensembl-compara \ modules; C:\ src \ ensembl-variation \ modules ; C:\ src \ ensembl-funcgen \ modules)直接在我的perl脚本中,这似乎有效。可能这不是这样做的方法,但只要它有效,我就开心了。 请参阅下面的示例脚本(基于Bert Overduin提供的练习):

  

#!/ usr / bin / perl -w

     

使用lib" C:/ src / ensembl / modules&#34 ;;

     

使用lib" C:/ src / ensembl / modules / Bio / EnsEMBL&#34 ;;

     

使用lib" C:/ src / ensembl-compara / modules / Bio / EnsEMBL / Compara&#34 ;;

     

使用lib" C:/ src / ensembl-functgenomics / modules / Bio / EnsEMBL / Funcgen&#34 ;;

     

使用lib" C:/ src / ensembl-variation / modules / Bio / EnsEMBL / Variation&#34 ;;

     

使用严格;

     

使用Bio :: EnsEMBL :: Registry;

     

my $ registry =' Bio :: EnsEMBL :: Registry';

     

$登记处送交> load_registry_from_db(

     

-host => ' ensembldb.ensembl.org',

     

-user => '匿名',

     

-verbose => ' 1'

     

);

     

我的$ slice_adaptor =   Bio :: EnsEMBL :: Registry-> get_adaptor(" human"," core"," slice");

     

在整个染色体X上获得切片

     

我的$ chr_slice = $ slice_adaptor-> fetch_by_region('染色体',' 13',32_889_000,> 32_891_000);

     

print" ########################################## ############# \ n&#34 ;;

     

print $ chr_slice-> seq;

或者:

  

#!/ usr / bin / perl -w

     

BEGIN {推@INC,' C:/ src / bioperl-live' C:/ src / ensembl / modules',' C:/ src / ENSEMBL-对比试验/模块'' C:/ SRC / ENSEMBL-变化/模块'' C:/ SRC / ENSEMBL-functgenomics /模块&#39 ;;};

     

使用严格;

     

使用Bio :: EnsEMBL :: Registry;

     

my $ registry =' Bio :: EnsEMBL :: Registry';

     

$登记处送交> load_registry_from_db(

     

-host => ' ensembldb.ensembl.org',

     

-user => '匿名',

     

-verbose => ' 1'

     

);

     

我的$ slice_adaptor =   Bio :: EnsEMBL :: Registry-> get_adaptor(" human"," core"," slice");

     

在整个染色体X上获得切片

     

我的$ chr_slice = $ slice_adaptor-> fetch_by_region('染色体',' 13',32_889_000,> 32_891_000);

     

print" ########################################## ############# \ n&#34 ;;

     

print $ chr_slice-> seq;