in reply to Re^3: I don't understand error message
in thread I don't understand error message

I should not have to use a loop. I have tested the program locally and it works.
#!/usr/bin/perl use strict; use Data::Dumper; use warnings; use Bio::SeqIO; use IO::Handle; use Bio::SearchIO; use Bio::AlignIO; use LWP::Simple; use IO::String; use Bio::SearchIO::Writer::TextResultWriter; my @results_arr = get_info(); open( my $out,">C:/Documents and Settings/mgavi.brathwaite/Desktop/bl2 +seq_parsing/out.txt"); print $out "$results_arr[0]", "\n", "$results_arr[1]"; sub get_info{ my $maid = '10890'; my $maid_dir = "C:/Documents and Settings/mgavi.brathwaite/Desktop/bl2 +seq_parsing"; my $in = new Bio::SearchIO(-format => 'blast', -file => $maid_dir."/".$maid."aln_hu.aln" +, -report_type => 'blastn'); open(my $out, ">$maid_dir/".$maid."aln_hu_parsed.out"); #my $out = Bio::AlignIO->newFh(-file => ">$maid_dir/".$maid."aln_hu_pa +rsed.out", # -format => 'clustalw' ); my $result=$in->next_result; my($hu_aln,$hu_mismatches); # Get info about the first hit my $hit = $result->next_hit; my $name = $hit->name; # get info about the first hsp of the first hit my $hsp = $hit->next_hsp; # get the alignment object my $aln = $hsp->get_aln; #my $percent_id = $hsp->percent_identity; #my $aln_length = $hsp->length('total'); my @mismatches = $hsp->seq_inds('query','nomatch'); my $aln_str=""; # access the alignment string my $strIO=IO::String->new($aln_str); # write the string alignio in clustalw format my $alnio = Bio::AlignIO->new(-format => 'clustalw', -fh=>$strIO); # now the actual alignment string is accessable for printing or in thi +s case moving to a db table $alnio->write_aln($aln); $hu_aln=$aln_str; $hu_mismatches = scalar @mismatches; print $out $hu_mismatches, "\n",$hu_aln; return ($hu_aln, $hu_mismatches); }
When I use it as a subroutine in a larger program is when I run into trouble. I have checked and it is reading in the file. Any ideas?

Replies are listed 'Best First'.
Re^5: I don't understand error message
by CountZero (Bishop) on Jun 17, 2009 at 18:21 UTC
    You have this in your standalone program:
    my $in = new Bio::SearchIO(-format => 'blast', -file => $maid_dir."/".$maid."aln_hu.aln", -report_type => 'blastn');
    But you have this in your sub-routine:
    my $in = new Bio::SearchIO(-format => 'blast', -file => ">".$maid_dir."\\".$maid."aln_hu.aln", -report_type => 'blastn');
    Could it be that the ">" stops Bio::SearchIO from reading/parsing the file?

    CountZero

    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James