0

次の Perl コードを使用して Ensembl API に接続しようとしています。

    #!/bin/perl

    use Bio::EnsEMBL::Registry;
    use DBI qw(:sql_types);


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

    $registry->load_registry_from_db(
        -host => 'ensembldb.ensembl.org', # alternatively 'useastdb.ensembl.org'
        -user => 'anonymous'
    );

    my @db_adaptors = @{ $registry->get_all_DBAdaptors() };

    foreach my $db_adaptor (@db_adaptors) {
        my $db_connection = $db_adaptor->dbc();

        printf(
            "species/group\t%s/%s\ndatabase\t%s\nhost:port\t%s:%s\n\n",
            $db_adaptor->species(),   $db_adaptor->group(),
            $db_connection->dbname(), $db_connection->host(),
            $db_connection->port()
        );
    }

Ensembl API を使用するには Bioperl と CPAN の両方が必要であり、これらが私の Ubuntu に正しくインストールされていることを確信しています。また、必要なモジュールを PERL5LIB 環境変数に追加しました。このすべてにもかかわらず、次のエラーメッセージが表示されます。

    Bareword "SQL_INTEGER" not allowed while "strict subs" in use at /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/BaseAdaptor.pm line 299.
    Compilation failed in require at /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm line 45.
    BEGIN failed--compilation aborted at /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/BaseFeatureAdaptor.pm line 45.
    Compilation failed in require at /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm line 60.
    BEGIN failed--compilation aborted at /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/DBAdaptor.pm line 60.
    Compilation failed in require at /home/src/ensembl/modules/Bio/EnsEMBL/Registry.pm line 127.
    BEGIN failed--compilation aborted at /home/src/ensembl/modules/Bio/EnsEMBL/Registry.pm line 127.

Ensembl データベースに接続するためにスクリプトが使用するレジストリ ファイルは次のとおりです。

    Bio::EnsEMBL::Registry->load_registry_from_db(
        -host    => 'ensembldb.ensembl.org',
        -user    => 'anonymous',
        -verbose => '1'
    );

    use strict;
    use Bio::EnsEMBL::Utils::ConfigRegistry;
    use Bio::EnsEMBL::DBSQL::DBAdaptor;


    new Bio::EnsEMBL::DBSQL::DBAdaptor(
        -host    => 'ensembldb.ensembl.org',
        -user    => 'anonymous',
        -port    => '3306',
        -species => 'homo_sapiens',
        -group   => 'core',
        -dbname  => 'homo_sapiens_core_70_37'
    );

    my @aliases = ( 'H_Sapiens', 'Homo sapiens', 'human' );

    Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
        -species => 'homo_sapiens',
        -alias   => \@aliases
    );
    1
4

1 に答える 1

0

ファイル /home/src/ensembl/modules/Bio/EnsEMBL/DBSQL/BaseAdaptor.pm のuse DBI qw(:sql_types);299 行目より前に行がありますか? いいえ?古いバージョンの Bio::EnsEMBL::DBSQL::BaseAdaptor を使用している可能性があります。

おそらくあなたのDBIは本来あるべきものではありません。perldoc -l DBIDBIの場所は何と言っていますか? それが正しいか?どのように DBI をインストールしましたか? 「.pm」ファイルをコピーしただけではありませんか?

于 2013-10-24T18:31:00.203 に答える