From 9f3f7dbf3985ecc92b11b174ac8d4d18aeff9496 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Tue, 2 Mar 2010 16:44:56 +0000 Subject: [PATCH] merged BGB::Common.pm to BGB::Track.pm git-svn-id: http://biopieces.googlecode.com/svn/trunk@884 74ccb610-7750-0410-82ae-013aeee3265d --- bp_bin/BGB_delete_track | 8 +- bp_bin/BGB_intersect | 8 +- bp_bin/BGB_list | 14 +- bp_bin/BGB_read_track | 8 +- bp_bin/BGB_upload | 4 +- code_perl/Maasha/BGB/Common.pm | 392 --------------------------------- code_perl/Maasha/BGB/Track.pm | 344 +++++++++++++++++++++++++++++ 7 files changed, 365 insertions(+), 413 deletions(-) delete mode 100644 code_perl/Maasha/BGB/Common.pm diff --git a/bp_bin/BGB_delete_track b/bp_bin/BGB_delete_track index c259552..390b5f4 100755 --- a/bp_bin/BGB_delete_track +++ b/bp_bin/BGB_delete_track @@ -32,7 +32,7 @@ use Data::Dumper; use Maasha::Common; use Maasha::Filesys; use Maasha::Biopieces; -use Maasha::BGB::Common; +use Maasha::BGB::Track; # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @@ -60,13 +60,13 @@ while ( $record = Maasha::Biopieces::get_record( $in ) ) Maasha::Biopieces::put_record( $record, $out ); } -Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Common::list_users(); +Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Track::list_users(); -@contigs = Maasha::BGB::Common::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); +@contigs = Maasha::BGB::Track::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); foreach $contig ( @contigs ) { - @tracks = Maasha::BGB::Common::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); + @tracks = Maasha::BGB::Track::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); foreach $track ( @tracks ) { diff --git a/bp_bin/BGB_intersect b/bp_bin/BGB_intersect index 7bf8574..d41593e 100755 --- a/bp_bin/BGB_intersect +++ b/bp_bin/BGB_intersect @@ -30,7 +30,7 @@ use warnings; use strict; use Data::Dumper; use Maasha::Biopieces; -use Maasha::BGB::Common; +use Maasha::BGB::Track; use Maasha::KISS; @@ -61,15 +61,15 @@ while ( $record = Maasha::Biopieces::get_record( $in ) ) Maasha::Biopieces::put_record( $record, $out ); } -Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Common::list_users(); +Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Track::list_users(); -@contigs = Maasha::BGB::Common::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); +@contigs = Maasha::BGB::Track::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); foreach $contig ( @contigs ) { undef %hash; - @tracks = Maasha::BGB::Common::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); + @tracks = Maasha::BGB::Track::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); foreach $track ( @tracks ) { diff --git a/bp_bin/BGB_list b/bp_bin/BGB_list index 1cc1c0b..7459e9f 100755 --- a/bp_bin/BGB_list +++ b/bp_bin/BGB_list @@ -30,7 +30,7 @@ use warnings; use strict; use Data::Dumper; use Maasha::Biopieces; -use Maasha::BGB::Common; +use Maasha::BGB::Track; # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @@ -54,17 +54,17 @@ while ( $record = Maasha::Biopieces::get_record( $in ) ) Maasha::Biopieces::put_record( $record, $out ); } -Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Common::list_users(); +Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Track::list_users(); -foreach $clade ( Maasha::BGB::Common::list_clades( $options->{ 'user' } ) ) +foreach $clade ( Maasha::BGB::Track::list_clades( $options->{ 'user' } ) ) { - foreach $genome ( Maasha::BGB::Common::list_genomes( $options->{ 'user' }, $clade ) ) + foreach $genome ( Maasha::BGB::Track::list_genomes( $options->{ 'user' }, $clade ) ) { - foreach $assembly ( Maasha::BGB::Common::list_assemblies( $options->{ 'user' }, $clade, $genome ) ) + foreach $assembly ( Maasha::BGB::Track::list_assemblies( $options->{ 'user' }, $clade, $genome ) ) { - foreach $contig ( Maasha::BGB::Common::list_contigs( $options->{ 'user' }, $clade, $genome, $assembly ) ) + foreach $contig ( Maasha::BGB::Track::list_contigs( $options->{ 'user' }, $clade, $genome, $assembly ) ) { - foreach $track ( Maasha::BGB::Common::list_tracks( $options->{ 'user' }, $clade, $genome, $assembly, $contig ) ) { + foreach $track ( Maasha::BGB::Track::list_tracks( $options->{ 'user' }, $clade, $genome, $assembly, $contig ) ) { $dir_hash->{ $options->{ 'user' } }->{ $clade }->{ $genome }->{ $assembly }->{ $track } = 1; } } diff --git a/bp_bin/BGB_read_track b/bp_bin/BGB_read_track index ec468e1..979a8aa 100755 --- a/bp_bin/BGB_read_track +++ b/bp_bin/BGB_read_track @@ -30,7 +30,7 @@ use warnings; use strict; use Data::Dumper; use Maasha::Biopieces; -use Maasha::BGB::Common; +use Maasha::BGB::Track; use Maasha::KISS; @@ -59,13 +59,13 @@ while ( $record = Maasha::Biopieces::get_record( $in ) ) Maasha::Biopieces::put_record( $record, $out ); } -Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Common::list_users(); +Maasha::Common::error( qq(Bad user: "$options->{ 'user' }") ) if not grep /^$options->{ 'user' }$/, Maasha::BGB::Track::list_users(); -@contigs = Maasha::BGB::Common::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); +@contigs = Maasha::BGB::Track::list_contigs( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); foreach $contig ( @contigs ) { - @tracks = Maasha::BGB::Common::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); + @tracks = Maasha::BGB::Track::list_track_dir( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' }, $contig ); foreach $track ( @tracks ) { diff --git a/bp_bin/BGB_upload b/bp_bin/BGB_upload index db707a9..3c265a9 100755 --- a/bp_bin/BGB_upload +++ b/bp_bin/BGB_upload @@ -33,7 +33,7 @@ use Maasha::Common; use Maasha::KISS; use Maasha::Biopieces; use Maasha::Fasta; -use Maasha::BGB::Common; +use Maasha::BGB::Track; use Maasha::BGB::Wiggle; use Maasha::Filesys; @@ -97,7 +97,7 @@ if ( $options->{ 'track_name' } ) Maasha::Biopieces::put_record( $record, $out ) if not $options->{ "no_stream" }; } - $num = Maasha::BGB::Common::max_track( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); + $num = Maasha::BGB::Track::max_track( $options->{ 'user' }, $options->{ 'clade' }, $options->{ 'genome' }, $options->{ 'assembly' } ); $num = sprintf( "%04d", $num + 10 ); foreach $key ( keys %fh_hash ) diff --git a/code_perl/Maasha/BGB/Common.pm b/code_perl/Maasha/BGB/Common.pm deleted file mode 100644 index 018380d..0000000 --- a/code_perl/Maasha/BGB/Common.pm +++ /dev/null @@ -1,392 +0,0 @@ -package Maasha::BGB::Common; - -# Copyright (C) 2009 Martin A. Hansen. - -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# http://www.gnu.org/copyleft/gpl.html - - -# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -# Common routines for manipulating the Biopieces Genome Browser. - - -# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -use warnings; -use strict; -use Data::Dumper; -use Maasha::Common; -use Maasha::Filesys; -use Maasha::Biopieces; - -use vars qw( @ISA @EXPORT ); - -@ISA = qw( Exporter ); - - -# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -sub list_user_dir -{ - # Martin A. Hansen, December 2009. - - # List all users directories in the ~/Data/Users - # directory with full path. - - # Returns a list. - - my ( @dirs, @users ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users" ); - - @users = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @users : \@users; -} - - -sub list_users -{ - # Martin A. Hansen, December 2009. - - # List all users in ~/Data/Users - - # Returns a list. - - my ( @dirs, $dir, @users ); - - @dirs = list_user_dir(); - - foreach $dir ( @dirs ) { - push @users, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @users : \@users; -} - - -sub list_clade_dir -{ - # Martin A. Hansen, December 2009. - - # List all clades for a given user in ~/Data/Users - - my ( $user, # user for which to return clades - ) = @_; - - # Returns a list. - - my ( @dirs, @clades ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - Maasha::Common::error( 'no user specified' ) if not $user; - - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user" ); - - @clades = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @clades : \@clades; -} - - -sub list_clades -{ - # Martin A. Hansen, December 2009. - - # List all clades for a given user in ~/Data/Users - - my ( $user, # user for which to return clades - ) = @_; - - # Returns a list. - - my ( @dirs, $dir, @clades ); - - @dirs = list_clade_dir( $user ); - - foreach $dir ( @dirs ) { - push @clades, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @clades : \@clades; -} - - -sub list_genome_dir -{ - # Martin A. Hansen, December 2009. - - # List all genomes for a given user and clade in ~/Data/Users - - my ( $user, # user for which to return genomes - $clade, # clade for which to return genomes - ) = @_; - - # Returns a list. - - my ( @dirs, @genomes ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - Maasha::Common::error( 'no user specified' ) if not $user; - Maasha::Common::error( 'no clade specified' ) if not $clade; - - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade" ); - - @genomes = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @genomes : \@genomes; -} - - -sub list_genomes -{ - # Martin A. Hansen, December 2009. - - # List all genomes for a given user and clade in ~/Data/Users - - my ( $user, # user for which to return genomes - $clade, # clade for which to return genomes - ) = @_; - - # Returns a list. - - my ( @dirs, $dir, @genomes ); - - @dirs = list_genome_dir( $user, $clade ); - - foreach $dir ( @dirs ) { - push @genomes, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @genomes : \@genomes; -} - - -sub list_assembly_dir -{ - # Martin A. Hansen, December 2009. - - # List all assemblies for a given user and clade and genome in ~/Data/Users - - my ( $user, # user for which to return assemblies - $clade, # clade for which to return assemblies - $genome, # genome for which to return assemblies - ) = @_; - - # Returns a list. - - my ( @dirs, @assemblies ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - Maasha::Common::error( 'no user specified' ) if not $user; - Maasha::Common::error( 'no clade specified' ) if not $clade; - Maasha::Common::error( 'no genome specified' ) if not $genome; - - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome" ); - - @assemblies = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @assemblies : \@assemblies; -} - - -sub list_assemblies -{ - # Martin A. Hansen, December 2009. - - # List all assemblies for a given user and clade and genome in ~/Data/Users - - my ( $user, # user for which to return assemblies - $clade, # clade for which to return assemblies - $genome, # genome for which to return assemblies - ) = @_; - - # Returns a list. - - my ( @dirs, $dir, @assemblies ); - - @dirs = list_assembly_dir( $user, $clade, $genome ); - - foreach $dir ( @dirs ) { - push @assemblies, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @assemblies : \@assemblies; -} - - -sub list_contig_dir -{ - # Martin A. Hansen, December 2009. - - # List all assemblies for a given user->clade->genome->assembly in ~/Data/Users - - my ( $user, # user for which to return contigs - $clade, # clade for which to return contigs - $genome, # genome for which to return contigs - $assembly, # assembly for which to return contigs - ) = @_; - - # Returns a list. - - my ( @dirs, @contigs ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - Maasha::Common::error( 'no user specified' ) if not $user; - Maasha::Common::error( 'no clade specified' ) if not $clade; - Maasha::Common::error( 'no genome specified' ) if not $genome; - Maasha::Common::error( 'no assembly specified' ) if not $assembly; - - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly" ); - - @contigs = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @contigs : \@contigs; -} - - -sub list_contigs -{ - # Martin A. Hansen, December 2009. - - # List all contigs for a given user->clade->genome->assembly in ~/Data/Users - - my ( $user, # user for which to return contigs - $clade, # clade for which to return contigs - $genome, # genome for which to return contigs - $assembly, # assembly for which to return contigs - ) = @_; - - # Returns a list. - - my ( @dirs, $dir, @contigs ); - - @dirs = list_contig_dir( $user, $clade, $genome, $assembly ); - - foreach $dir ( @dirs ) { - push @contigs, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @contigs : \@contigs; -} - - -sub list_track_dir -{ - # Martin A. Hansen, December 2009. - - # List all tracks for a given user->clade->genome->assembly->contig in ~/Data/Users - - my ( $user, # user for which to return tracks - $clade, # clade for which to return tracks - $genome, # genome for which to return tracks - $assembly, # assembly for which to return tracks - $contig, # contig for which to return tracks - ) = @_; - - # Returns a list. - - my ( @dirs, @tracks ); - - Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; - Maasha::Common::error( 'no user specified' ) if not $user; - Maasha::Common::error( 'no clade specified' ) if not $clade; - Maasha::Common::error( 'no genome specified' ) if not $genome; - Maasha::Common::error( 'no assembly specified' ) if not $assembly; - Maasha::Common::error( 'no contig specified' ) if not $contig; - - if ( -d "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly/$contig/Tracks" ) { - @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly/$contig/Tracks" ); - } - - @tracks = grep { $_ !~ /\/\.\.?$/ } @dirs; - - return wantarray ? @tracks : \@tracks; -} - - -sub list_tracks -{ - # Martin A. Hansen, December 2009. - - # List all tracks for a given user->clade->genome->assembly->contig in ~/Data/Users - - my ( $user, # user for which to return tracks - $clade, # clade for which to return tracks - $genome, # genome for which to return tracks - $assembly, # assembly for which to return tracks - $contig, # contig for which to return tracks - ) = @_; - - # Returns a list. - - my ( @dirs, $dir, @tracks ); - - @dirs = list_track_dir( $user, $clade, $genome, $assembly, $contig ); - - foreach $dir ( @dirs ) { - push @tracks, ( split "/", $dir )[ -1 ]; - } - - return wantarray ? @tracks : \@tracks; -} - - -sub max_track -{ - # Martin A. Hansen, December 2009. - - # Traverses all contigs for a given user->clade->genome->assembly and - # returns the maximum track's prefix value eg. 20 for 20_Genbank. - - my ( $user, - $clade, - $genome, - $assembly - ) = @_; - - # Returns an integer - - my ( @contigs, $contig, @tracks, $max ); - - @contigs = list_contigs( $user, $clade, $genome, $assembly ); - - foreach $contig ( @contigs ) { - push @tracks, list_tracks( $user, $clade, $genome, $assembly, $contig ); - } - - @tracks = sort @tracks; - - if ( scalar @tracks > 0 and $tracks[ -1 ] =~ /^(\d+)/ ) { - $max = $1; - } else { - $max = 0; - } - - return $max; -} - - -# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -1; diff --git a/code_perl/Maasha/BGB/Track.pm b/code_perl/Maasha/BGB/Track.pm index 8032b82..806fe96 100644 --- a/code_perl/Maasha/BGB/Track.pm +++ b/code_perl/Maasha/BGB/Track.pm @@ -681,6 +681,7 @@ sub search_tracks if ( $line =~ /$search_term/i ) { $entry = Maasha::KISS::kiss_entry_parse( $line ); + $entry = Maasha::KISS::kiss2biopiece( $entry ); push @entries, $entry; } } @@ -693,6 +694,349 @@ sub search_tracks } +sub list_user_dir +{ + # Martin A. Hansen, December 2009. + + # List all users directories in the ~/Data/Users + # directory with full path. + + # Returns a list. + + my ( @dirs, @users ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users" ); + + @users = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @users : \@users; +} + + +sub list_users +{ + # Martin A. Hansen, December 2009. + + # List all users in ~/Data/Users + + # Returns a list. + + my ( @dirs, $dir, @users ); + + @dirs = list_user_dir(); + + foreach $dir ( @dirs ) { + push @users, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @users : \@users; +} + + +sub list_clade_dir +{ + # Martin A. Hansen, December 2009. + + # List all clades for a given user in ~/Data/Users + + my ( $user, # user for which to return clades + ) = @_; + + # Returns a list. + + my ( @dirs, @clades ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + Maasha::Common::error( 'no user specified' ) if not $user; + + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user" ); + + @clades = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @clades : \@clades; +} + + +sub list_clades +{ + # Martin A. Hansen, December 2009. + + # List all clades for a given user in ~/Data/Users + + my ( $user, # user for which to return clades + ) = @_; + + # Returns a list. + + my ( @dirs, $dir, @clades ); + + @dirs = list_clade_dir( $user ); + + foreach $dir ( @dirs ) { + push @clades, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @clades : \@clades; +} + + +sub list_genome_dir +{ + # Martin A. Hansen, December 2009. + + # List all genomes for a given user and clade in ~/Data/Users + + my ( $user, # user for which to return genomes + $clade, # clade for which to return genomes + ) = @_; + + # Returns a list. + + my ( @dirs, @genomes ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + Maasha::Common::error( 'no user specified' ) if not $user; + Maasha::Common::error( 'no clade specified' ) if not $clade; + + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade" ); + + @genomes = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @genomes : \@genomes; +} + + +sub list_genomes +{ + # Martin A. Hansen, December 2009. + + # List all genomes for a given user and clade in ~/Data/Users + + my ( $user, # user for which to return genomes + $clade, # clade for which to return genomes + ) = @_; + + # Returns a list. + + my ( @dirs, $dir, @genomes ); + + @dirs = list_genome_dir( $user, $clade ); + + foreach $dir ( @dirs ) { + push @genomes, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @genomes : \@genomes; +} + + +sub list_assembly_dir +{ + # Martin A. Hansen, December 2009. + + # List all assemblies for a given user and clade and genome in ~/Data/Users + + my ( $user, # user for which to return assemblies + $clade, # clade for which to return assemblies + $genome, # genome for which to return assemblies + ) = @_; + + # Returns a list. + + my ( @dirs, @assemblies ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + Maasha::Common::error( 'no user specified' ) if not $user; + Maasha::Common::error( 'no clade specified' ) if not $clade; + Maasha::Common::error( 'no genome specified' ) if not $genome; + + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome" ); + + @assemblies = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @assemblies : \@assemblies; +} + + +sub list_assemblies +{ + # Martin A. Hansen, December 2009. + + # List all assemblies for a given user and clade and genome in ~/Data/Users + + my ( $user, # user for which to return assemblies + $clade, # clade for which to return assemblies + $genome, # genome for which to return assemblies + ) = @_; + + # Returns a list. + + my ( @dirs, $dir, @assemblies ); + + @dirs = list_assembly_dir( $user, $clade, $genome ); + + foreach $dir ( @dirs ) { + push @assemblies, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @assemblies : \@assemblies; +} + + +sub list_contig_dir +{ + # Martin A. Hansen, December 2009. + + # List all assemblies for a given user->clade->genome->assembly in ~/Data/Users + + my ( $user, # user for which to return contigs + $clade, # clade for which to return contigs + $genome, # genome for which to return contigs + $assembly, # assembly for which to return contigs + ) = @_; + + # Returns a list. + + my ( @dirs, @contigs ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + Maasha::Common::error( 'no user specified' ) if not $user; + Maasha::Common::error( 'no clade specified' ) if not $clade; + Maasha::Common::error( 'no genome specified' ) if not $genome; + Maasha::Common::error( 'no assembly specified' ) if not $assembly; + + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly" ); + + @contigs = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @contigs : \@contigs; +} + + +sub list_contigs +{ + # Martin A. Hansen, December 2009. + + # List all contigs for a given user->clade->genome->assembly in ~/Data/Users + + my ( $user, # user for which to return contigs + $clade, # clade for which to return contigs + $genome, # genome for which to return contigs + $assembly, # assembly for which to return contigs + ) = @_; + + # Returns a list. + + my ( @dirs, $dir, @contigs ); + + @dirs = list_contig_dir( $user, $clade, $genome, $assembly ); + + foreach $dir ( @dirs ) { + push @contigs, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @contigs : \@contigs; +} + + +sub list_track_dir +{ + # Martin A. Hansen, December 2009. + + # List all tracks for a given user->clade->genome->assembly->contig in ~/Data/Users + + my ( $user, # user for which to return tracks + $clade, # clade for which to return tracks + $genome, # genome for which to return tracks + $assembly, # assembly for which to return tracks + $contig, # contig for which to return tracks + ) = @_; + + # Returns a list. + + my ( @dirs, @tracks ); + + Maasha::Common::error( 'BP_WWW not set in environment' ) if not $ENV{ 'BP_WWW' }; + Maasha::Common::error( 'no user specified' ) if not $user; + Maasha::Common::error( 'no clade specified' ) if not $clade; + Maasha::Common::error( 'no genome specified' ) if not $genome; + Maasha::Common::error( 'no assembly specified' ) if not $assembly; + Maasha::Common::error( 'no contig specified' ) if not $contig; + + if ( -d "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly/$contig/Tracks" ) { + @dirs = Maasha::Filesys::ls_dirs( "$ENV{ 'BP_WWW' }/Data/Users/$user/$clade/$genome/$assembly/$contig/Tracks" ); + } + + @tracks = grep { $_ !~ /\/\.\.?$/ } @dirs; + + return wantarray ? @tracks : \@tracks; +} + + +sub list_tracks +{ + # Martin A. Hansen, December 2009. + + # List all tracks for a given user->clade->genome->assembly->contig in ~/Data/Users + + my ( $user, # user for which to return tracks + $clade, # clade for which to return tracks + $genome, # genome for which to return tracks + $assembly, # assembly for which to return tracks + $contig, # contig for which to return tracks + ) = @_; + + # Returns a list. + + my ( @dirs, $dir, @tracks ); + + @dirs = list_track_dir( $user, $clade, $genome, $assembly, $contig ); + + foreach $dir ( @dirs ) { + push @tracks, ( split "/", $dir )[ -1 ]; + } + + return wantarray ? @tracks : \@tracks; +} + + +sub max_track +{ + # Martin A. Hansen, December 2009. + + # Traverses all contigs for a given user->clade->genome->assembly and + # returns the maximum track's prefix value eg. 20 for 20_Genbank. + + my ( $user, + $clade, + $genome, + $assembly + ) = @_; + + # Returns an integer + + my ( @contigs, $contig, @tracks, $max ); + + @contigs = list_contigs( $user, $clade, $genome, $assembly ); + + foreach $contig ( @contigs ) { + push @tracks, list_tracks( $user, $clade, $genome, $assembly, $contig ); + } + + @tracks = sort @tracks; + + if ( scalar @tracks > 0 and $tracks[ -1 ] =~ /^(\d+)/ ) { + $max = $1; + } else { + $max = 0; + } + + return $max; +} + + # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1; -- 2.39.2