[Bioperl-l] Passing/Storing "Bio::SeqIO" object to a function

Warren W. Kretzschmar wkretzsch at gmail.com
Thu Jun 24 11:24:34 EDT 2010

My understanding is that you are using a SeqIO object in order to
create correctly parsed output files.

In that case for each SeqIO object, open it like this:

for (0..9){
$file = "my_file_$_";
push @outseqIOs, Bio::SeqIO->new(-file   => ">$file", -format => $format );

simply make $file correspond to the file (or bin) you want to put your
data into.

then pass @outseqIOs to your other subroutine and once you've created
a seq object, write it to the bin you want it to go to (in this case
file number "7"):


I haven't tested the code, but that's the kind of thing I think you're
looking for. For more info, look at the howto:


On Thu, Jun 24, 2010 at 10:20 AM, Abhishek Pratap
<abhishek.vit at gmail.com> wrote:
> Hi All
> I may be hitting a problem which probably hints at my grip of the language.
> I am trying to store Bio::SeqIO object in a hash. I have creates couple of
> Bio::SeqIO objects in a method and storing them as a hash reference. The
> goal is to use them in another subroutine for writing out data to each file.
> The script is trying to bin data into different files.
> Any idea how I could achieve creating file handles  thru "Bio::SeqIO" object
> in one routine and pass them to another for writing.
> Thanks!
> -Abhi
> foreach my $bin (keys %{ $indexes->{$lane} })
>  {
> my $sample_name = $indexes->{$lane}->{$bin}->{'sample'};
>  my $path="$outpath".'/'."$sample_name";
> mkpath( $path, { verbose => 1, mode => 0711 });
>        my $out = Bio::SeqIO->new(-format=>'fastq-illumina', -file =>
> ">$outpath/$sample_name/$fastQFile");
> $indexes->{$lane}->{$bin}->{'file_handle'}=$out;
>  }
> }
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

More information about the Bioperl-l mailing list