]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_perl/Maasha/BBrowser/Track.pm
implemented search function in bbrowser
[biopieces.git] / code_perl / Maasha / BBrowser / Track.pm
index e24bde81c14bd9076864bb3d4b1fd5d203d5bdbb..c43ca5f524eb5639b451940a61cd1ae8daf1b114 100644 (file)
@@ -35,6 +35,7 @@ use Maasha::Common;
 use Maasha::Calc;
 use Maasha::Filesys;
 use Maasha::KISS;
+use Maasha::Biopieces;
 use Maasha::Seq;
 
 use vars qw( @ISA @EXPORT );
@@ -527,6 +528,56 @@ sub path_tracks
     }
 }
 
+
+sub search_tracks
+{
+    # Martin A. Hansen, December 2009.
+
+    # Uses grep to search all tracks in all contigs
+    # for a given pattern and return a list of KISS entries.
+
+    my ( $cookie,   # cookie hash
+       ) = @_;
+
+    # Returns a list.
+
+    my ( $contig, @tracks, $track, $file, $line, $out_file, $fh, $entry, @entries );
+
+    foreach $contig ( @{ $cookie->{ 'LIST_CONTIG' } } )
+    {
+        $cookie->{ 'CONTIG' } = $contig;
+
+        push @tracks, path_tracks( $cookie );
+    }
+
+    foreach $track ( @tracks )
+    {
+        $file = "$track/track_data.kiss";
+      
+        if ( -f $file )
+        {
+            $fh = Maasha::Filesys::file_read_open( $file );
+
+            while ( $line = <$fh> )
+            {
+                chomp $line;
+
+                if ( $line =~ /$cookie->{ 'SEARCH' }/i )
+                {
+                    $entry = Maasha::KISS::kiss_entry_parse( $line );
+
+                    push @entries, $entry;
+                }
+            }
+
+            close $fh;
+        }
+    }
+
+    return wantarray ? @entries : \@entries;
+}
+
+
 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
 1;