[Bioperl-l] Problems with SeqBoot.pm

Gustav Ahlberg ahlberg.gustav at gmail.com
Fri Jan 24 20:13:18 UTC 2014


Hi,

I am trying to parse alignments to Seqboot in the PHYLIP package using
Bioperl. as seen here
http://doc.bioperl.org/bioperl-run/lib/Bio/Tools/Run/Phylo/Phylip/SeqBoot.html

For some reason it doesnt read in the alignment. I have done exactly as in
the example. I have a deadline on my master thesis within days. and I have
no idea how to fix this



Use of uninitialized value in concatenation (.) or string at
/opt/local/lib/perl5/site_perl/5.12.4/Bio/Tools/Run/Phylo/Phylip/SeqBoot.pm
line 373.

Use of uninitialized value in concatenation (.) or string at
/opt/local/lib/perl5/site_perl/5.12.4/Bio/Tools/Run/Phylo/Phylip/SeqBoot.pm
line 381.

Missing command in piped open at
/opt/local/lib/perl5/site_perl/5.12.4/Bio/Tools/Run/Phylo/Phylip/SeqBoot.pm
line 381.

print() on closed filehandle SeqBoot at
/opt/local/lib/perl5/site_perl/5.12.4/Bio/Tools/Run/Phylo/Phylip/SeqBoot.pm
line 383.



#!/usr/bin/perl -w


use strict;

use warnings;

use BIO::Perl;

use Bio::SeqIO;

use Bio::AlignIO;

use Bio::Tools::Run::Phylo::Phylip::SeqBoot;

use Bio::Tools::Phylo::PAML::Result;

use Bio::Tools::Phylo::PAML;

use Bio::Tools::Run::Alignment::Clustalw;

use Bio::Tools::Run::Phylo::PAML::Codeml;

BEGIN { $ENV{CLUSTALDIR} = '/usr/local/bin/clustalw2/'}

BEGIN { $ENV{PALMDIR} = '~/paml3.14/codelm'};


eval {

    # Multiple Sequence Alignment programs

    require Bio::Tools::Run::Alignment::Clustalw;

};


use Getopt::Long;

my $input="";


GetOptions('i=s'  => \$input);


if(! defined $input)   {

    print "Usage:\nperl  -i cdsfile  \n";

    exit;

}

print $input;

my $cluster =  $input;



my %s=();

my $num=0;

my $head="";

my $seq ="";

#  Bootstrapalign.pl

#

#

#  Created by Gustav Ahlberg on 24/01/14.

#


#Create a SimpleAlign object

my @params = ('ktuple' => 2, 'matrix' => 'BLOSUM');

my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);

my $inputfilename = $cluster;

my $aln = $factory->align($inputfilename); # $aln is a SimpleAlign object.

my $out = Bio::AlignIO->new(-file => ">./tmp/$cluster.aln",
-format => 'fasta');

$out -> write_aln($aln);


my $input2 = "./tmp/$cluster.aln";


#print $aln;



# Use seqboot to generate bootstap alignments

my @params = ('datatype'=>'SEQUENCE','replicates'=>100);

my $seq = Bio::Tools::Run::Phylo::Phylip::SeqBoot->new(@params);



my $aln_ref = $seq->run($aln);


foreach my $ai(@{$aln_ref}){

    print my $aio->write_aln($ai);

}

#

#my $aio =
Bio::AlignIO->new(-file=>">alignment.bootstrap",-format=>"phylip");

#foreach my $ai(@{$aln_ref}){

#    $aio->write_aln($ai);

#}


# To prevent PHYLIP from truncating sequence names:

# Step 1. Shelf the original names:

#my ($aln_safe, $ref_name)=                  #  $aln_safe has serial names

#        $input2->set_displayname_safe();    #  $ref_name holds orginal
names

# Step 2. Run PHYLIP programs:

#$aln_ref = $seq->run($aln_safe);            #  Use $aln_safe instead of
$aln

# Step 3. Retrieve orgininal names

#$aio = Bio::AlignIO->new(

#-file=>">alignment.bootstrap",

#-format=>"fasta");               #  FASTA output to view full names

#foreach my $ai(@{$aln_ref}){

#    my $new_aln=$ai->restore_displayname($ref_name); #  Restore names

#    $aio->write_aln($new_aln);

#}



More information about the Bioperl-l mailing list