[Bioperl-l] Problems with SeqBoot.pm

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


I am trying to parse alignments to Seqboot in the PHYLIP package using
Bioperl. as seen here

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
line 373.

Use of uninitialized value in concatenation (.) or string at
line 381.

Missing command in piped open at
line 381.

print() on closed filehandle SeqBoot at
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";



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 =

#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

# Step 2. Run PHYLIP programs:

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

# Step 3. Retrieve orgininal names

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


#-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