package PGF::GapResolution::ParseLibInfo; =head1 NAME PGF::GapResolution::ParseLibInfo =head1 SYNOPSIS use PGF::GapResolution::ParseLibInfo; my $obj = PGF::GapResolution::ParseLibInfo->new($libInfoFile); my @libraries = $obj->getLibraries(); foreach my $library (@libraries) { my $insertSize = $obj->getInsertSize($library); my $stdDev = $obj->getStdDev($library); my $maxInsertLibrary = $obj->getMaxLibrary(); ... } =head1 DESCRIPTION This module parses the libinfo.txt file generated by parseNewblerMetrics.pl as part of the Gap Resolution sub system and contains access methods to the data. The format of the $libInfoFile mentioned above are as follows, separated by a tab: 1. 2. 3. =head1 AUTHOR(s) Stephan Trong =head1 HISTORY =over =item * Stephan Trong 12/11/2008 Creation =back =cut #============================================================================# use strict; use Carp; use Carp qw(cluck); use FindBin qw($RealBin); use lib "$FindBin::RealBin/../lib"; #============================================================================# sub new { my $class = shift; my $libInfoFile = shift; my $self = {}; bless $self, $class; $self->_parseFile($libInfoFile); return $self; } #============================================================================# sub _parseFile { my $self = shift; my $file = shift; my %libraries = (); unless (open FH, $file ) { confess "ERROR: failed to open file $file: $!"; } while ( my $entry = ) { chomp $entry; next if !length $entry; my @entries = split /\t/, $entry; if ( @entries < 3 ) { confess "ERROR: $file does not contain a vaild entry.\n"; } my $library = $entries[0]; my $insertSize = $entries[1]; my $stdDev = $entries[2]; $libraries{$library} = [$insertSize, $stdDev]; } close FH; $self->{_libraries} = \%libraries; } #============================================================================# sub getMaxLibrary{ my $self = shift; my $maxLibrary = ( map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_, $self->{_libraries}{$_}[0]] } keys %{$self->{_libraries}} )[0]; return $maxLibrary; } #============================================================================# sub getInsertSize{ my $self = shift; my $library = shift; my $insertSize = exists $self->{_libraries}{$library} ? $self->{_libraries}{$library}[0] : ''; return $insertSize; } #============================================================================# sub getStdDev { my $self = shift; my $library = shift; my $stdDev = exists $self->{_libraries}{$library} ? $self->{_libraries}{$library}[1] : ''; return $stdDev; } #============================================================================# sub getLibraries { my $self = shift; my @libraries = exists $self->{_libraries} ? keys %{$self->{_libraries}} : (); return @libraries; } #============================================================================# 1;