[Bioperl-l] New to BioPerl ... part II

Olivier BUHARD Olivier.Buhard at inserm.fr
Wed Mar 19 22:46:42 UTC 2014


Hi,

thank you all for your answers. I had the (wrong) notion that windows 
did ignore the shebang...

I am using Bioperl 1.6.1... I'll try to install 1.6.923 but I can't find 
it with ActivePerl ppm (I switched to 5.18), so I'll have to try with 
command line ppm. I'm running windows XP... perhaps also have to try 
with Linux.

I'm getting in the doc and tutos I can find about Bioperl-db and I'm 
beginning to understand how it deals with parsing and organizing the 
data. However, my first attempts to load sequences in my BioSQL db are 
unsuccessful. From the gbpri1.seq I downloaded from NCBI FTP, 
load_seqdatabase.pl crashes at the moment it tries to INSERT in the db, 
telling me perl514.dll cannot be found, and sending a bunch of error 
messages in a last breath:

C:\tmp>perl load_seqdatabase.pl -dbname biosql_hs -dbuser biodb_user 
-dbpass ******** gbpri1.seq
Loading gbpri1.seq ...
UNIVERSAL->import is deprecated and will be removed in a future perl at 
C:/Perl/site/lib/Bio/Tree/TreeFunctionsI.pm line 94.
UNIVERSAL->import is deprecated and will be removed in a future perl at 
C:/Perl/site/lib/Bio\Tree\TreeFunctionsI.pm line 94.

------------- EXCEPTION -------------
MSG: failed to open connection:
STACK Bio::DB::DBI::base::new_connection 
C:/Perl/site/lib/Bio/DB/DBI/base.pm:267
STACK Bio::DB::DBI::base::get_connection 
C:/Perl/site/lib/Bio/DB/DBI/base.pm:227
STACK Bio::DB::BioSQL::BasePersistenceAdaptor::dbh 
C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:1498
STACK Bio::DB::BioSQL::BasePersistenceAdaptor::rollback 
C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:1417
STACK toplevel load_seqdatabase.pl:636
-------------------------------------

I think I'm doing something wrong, but I can't find what. The mySQL 
server (version 4.1.9) is on, I've installed the DBI and DBD::mySQL. I 
checked the user for its privileges and password, so what can be wrong?

I've tried writing a shorter script to get in the command that breaks 
the process (below) and I found it was when it tries to ->create():

#!perl

use strict;
use Bio::DB::BioDB;
use Bio::SeqIO;

my $seq_file = shift or die("GB_crawler.pl - Usage : perl GB_crawler.pl 
<SEQ_FILE>\n\n");

my $dbadp = Bio::DB::BioDB->new(    -database    => 'biosql',
                                     -host        => 'localhost',
                                     -user         => 'biodb_user',
                                     -pass        => 'THE_PASSWORD_HERE',
                                     -dbname       => 'biosql_hs',
                                     -driver       => 'mysql'
);
$dbadp->verbose(1);

my $seqio_obj = Bio::SeqIO->new(-file => "<$seq_file", -format => 
'genbank' );
while (my $seq_obj = $seqio_obj->next_seq()){
     print $seq_obj->display_id(),"\n";
     my $species = $seq_obj->species();
     my $seq_spec = $species->binomial();
     if ($seq_spec eq 'Homo sapiens') {    # I'm just interested in Hs seq
         my $p_seq = $dbadp->create_persistent($seq_obj);
         $p_seq->create();
     }
}

The output is: (I can't put all here, it' too long...)

C:\tmp>perl GB_crawler.pl gbpri1.seq

UNIVERSAL->import is deprecated and will be removed in a future perl at 
C:/Perl/site/lib/Bio/Tree/TreeFunctionsI.pm line 94.
AB000095
attempting to load adaptor class for Bio::Seq::RichSeq
         attempting to load module Bio::DB::BioSQL::RichSeqAdaptor
attempting to load adaptor class for Bio::Seq
         attempting to load module Bio::DB::BioSQL::SeqAdaptor
instantiating adaptor class Bio::DB::BioSQL::SeqAdaptor

.../...

attempting to load adaptor class for Bio::Tree::TreeFunctionsI
         attempting to load module Bio::DB::BioSQL::TreeFunctionsIAdaptor
         attempting to load module Bio::DB::BioSQL::TreeFunctionsAdaptor
UNIVERSAL->import is deprecated and will be removed in a future perl at 
C:/Perl/site/lib/Bio\Tree\TreeFunctionsI.pm line 94.
no adaptor found for class Bio::Tree::Tree
no adaptor found for class Bio::Annotation::TypeManager
no adaptor found for class Bio::DB::Taxonomy::list
no adaptor found for class Bio::Tree::Tree
attempting to load adaptor class for BioNamespace
         attempting to load module Bio::DB::BioSQL::BioNamespaceAdaptor
instantiating adaptor class Bio::DB::BioSQL::BioNamespaceAdaptor
no adaptor found for class Bio::Annotation::TypeManager
no adaptor found for class Bio::DB::Taxonomy::list
no adaptor found for class Bio::Tree::Tree
attempting to load driver for adaptor class 
Bio::DB::BioSQL::BioNamespaceAdaptor

attempting to load driver for adaptor class 
Bio::DB::BioSQL::BasePersistenceAdaptor
Using Bio::DB::BioSQL::mysql::BasePersistenceAdaptorDriver as driver 
peer for Bio::DB::BioSQL::BioNamespaceAdaptor

------------- EXCEPTION -------------
MSG: failed to open connection:
STACK Bio::DB::DBI::base::new_connection 
C:/Perl/site/lib/Bio/DB/DBI/base.pm:267

STACK Bio::DB::DBI::base::get_connection 
C:/Perl/site/lib/Bio/DB/DBI/base.pm:227

STACK Bio::DB::BioSQL::BasePersistenceAdaptor::dbh 
C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:1498
STACK Bio::DB::BioSQL::BaseDriver::insert_object 
C:/Perl/site/lib/Bio/DB/BioSQL/BaseDriver.pm:970
STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create 
C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:212
STACK Bio::DB::Persistent::PersistentObject::create 
C:/Perl/site/lib/Bio/DB/Persistent/PersistentObject.pm:257
STACK Bio::DB::BioSQL::BasePersistenceAdaptor::create 
C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm:182
STACK Bio::DB::Persistent::PersistentObject::create 
C:/Perl/site/lib/Bio/DB/Persistent/PersistentObject.pm:257
STACK toplevel GB_crawler.pl:52
-------------------------------------

Again, the script halts asking for Perl514.dll, then the EXCEPTION MSG 
appears...
Is there a chance ActivePerl 5.18 couldn't work with Bioperl-DB (I have 
1.006000 version)?

Thanks for any answer !

Best regards

Olivier

Le 06/03/2014 21:04, Smithies, Russell a écrit :
> BioPerl-1.6.923.tar.gz installed OK for me and I can run your script on that gbk file from Windows with ActivePerl 5.16.1 and I get no warnings at all.
>
> --Russell
>
> -----Original Message-----
> From:bioperl-l-bounces at lists.open-bio.org  [mailto:bioperl-l-bounces at lists.open-bio.org] On Behalf Of Smithies, Russell
> Sent: Friday, 7 March 2014 8:03 a.m.
> To: Olivier BUHARD;bioperl-l at lists.open-bio.org
> Subject: Re: [Bioperl-l] New to BioPerl - A little presentation... and a question about GenBank and Bioperl
>
> Hi,
> -w on the shebang line is for displaying warnings, so naturally if you leave it off you won't get warnings.
> A slightly better method is to 'use warnings' instead - but be aware it gives you slightly different results Eg.
>
> #!perl
>
> use strict;
> use warnings;
> use Bio::SeqIO;
>
> And on Windows systems you can shorten the shebang line to #!perl   as obviously the usual path of #!/usr/bin/perl isn't relevant.
>
> When I run your code on the exact same file I get the required output and no warnings - though admittedly that's on a Linux system.
> Is it possible you're running an older version of BioPerl?
> I'll update my Windows BioPerl (to CJFIELDS/BioPerl-1.6.923.tar.gz)  install and give it a go.
>
> --Russell
>
>
>
> -----Original Message-----
> From:bioperl-l-bounces at lists.open-bio.org  [mailto:bioperl-l-bounces at lists.open-bio.org] On Behalf Of Olivier BUHARD
> Sent: Friday, 7 March 2014 12:06 a.m.
> To:bioperl-l at lists.open-bio.org
> Subject: [Bioperl-l] New to BioPerl - A little presentation... and a question about GenBank and Bioperl
>
> Hello,
>
>
> I'm new to BioPerl and would like to ask you for a few advice about the use of Bioperl.
>
> I am a molecular biologist and I frequently use Perl to write scripts to prepare or analyse files I get from various databases, so I'm familiar enough with Perl.
> We work in my lab on a particular type of tumorigenic process called MSI, for MicroSatellite Instability. I'll not go through all the story but a hallmark of the associated cancers is that the size of their genomic repeated DNA sequences spread throughout the genome, is altered.
> Up to now, we got a list of those sequences from a collaboration who could make that for us. But now the list we have is old and we have to get this information by our own means and naturally I started looking at Bioperl.
> And before I go through learning all I need (which I guess, will take some time), I will really appreciate if someone could tell me if I Bioperl can help from start to end.
>
> In summary, I plan to search all the short repetitive sequences (I'm just interested in human genome at the moment) I can find in the Genbank flat file provided by the NCBI FTP site. The idea is to create a BioSQL database (I already installed using a schema for mySQL) that I could query using an appropriate algorithm.
> I saw Bioperl is made to read those files with multiple entries. So building the BioSQL database would not be a problem. My first question is about how I will crawl through the genomic sequences to detect short repeat tandem sequences of defined size and patterns (some are mononucleotides repeats, like (A)27, other could be dinucleotides redpeats like (CA)12, etc.). BLAST is not design for such a job... Are there some tools already available in Bioperl to deal with low complexity DNA in general and short tandem repeats in particular, something like repeatmasker or windowmasker but with a different kind of output? I'm interested in retrieving some of the features provided with the genbank format (find repeats in coding or non-coding regions, get their position in the genes or the transcripts with respect to exon position, intron-exon proximity...).
>
> I also have a more direct and "practical" question. I just tried a few sample codes provided in the beginners' toturials on the Bioperl site. I just ran the following on the gbpri1.seq provided on the NCBI FTP but I got some errors and warnings for many (but not all) sequences.
>
> #!/usr/bin/perl -w
>
> use strict;
> use Bio::SeqIO;
>
> my $seqio_obj = Bio::SeqIO->new(-file => "<$seq_file", -format => 'genbank' ); while (my $seq_obj = $seqio_obj->next_seq()){
>       print $seq_obj->display_id,"\n";
> }
>
> This is what I get for AB000095 locus:
>
> Replacement list is longer than search list at C:/Perl/site/lib/Bio/Range.pm lin e 251.
> UNIVERSAL->import is deprecated and will be removed in a future perl at
> C:/Perl/
> site/lib/Bio/Tree/TreeFunctionsI.pm line 94 Subroutine new redefined at C:/Perl/site/lib/Bio\Location\Simple.pm line 93, <GE
> N0> line 41.
> Subroutine start redefined at C:/Perl/site/lib/Bio\Location\Simple.pm
> line 115,
> <GEN0> line 41.
> Subroutine end redefined at C:/Perl/site/lib/Bio\Location\Simple.pm line 144, <G
> EN0> line 41.
> Subroutine length redefined at C:/Perl/site/lib/Bio\Location\Simple.pm
> line 190,
>    <GEN0> line 41.
> Subroutine location_type redefined at
> C:/Perl/site/lib/Bio\Location\Simple.pm li ne 281, <GEN0> line 41.
> Subroutine to_FTstring redefined at
> C:/Perl/site/lib/Bio\Location\Simple.pm line
>    328, <GEN0> line 41.
> Subroutine trunc redefined at C:/Perl/site/lib/Bio\Location\Simple.pm
> line 370,
> <GEN0> line 41.
> AB000095
>
> But when I remove the shebang option -w... the warnings disappear.
> (I use ActivePerl 5.14.2 on a Windows XP computer. I had the idea that shebang was not used under Windows, but it seems tat's wrong here...
> Is that due to some problem about my Perl installation, or is it Bio::SeqIO code related?
>
> Thank in advance for any answer.
>
> Kind regards
>

-- 

--------------------

BUHARD Olivier

"Instabilité de microsatellites et cancer"
Centre de Recherche Saint Antoine
équipe 11/INSERM UMRS 938
Bâtiment Kourilsky,
Hôpital Saint Antoine
34 rue Crozatier
75012 PARIS





More information about the Bioperl-l mailing list