]> git.donarmstrong.com Git - biopieces.git/blobdiff - bp_bin/grab
adding bzip2 support in ruby
[biopieces.git] / bp_bin / grab
index 3aefa1b81d3a237f1ca03c6383f9474a221881e0..b034f2de42ca047a93550cecf9bcaab9f2d457c2 100755 (executable)
@@ -38,7 +38,7 @@ use Maasha::Patscan;
 
 
 my ( $options, $in, $out, $record, $keys, $vals_only, $keys_only, $invert,
-     $patterns, $regex, %lookup_hash, $key, $op, $val, $found );
+     $patterns, $regex, %lookup_hash, $key, $op, $val, $found, $total, $grabbed );
 
 $options = Maasha::Biopieces::parse_options(
     [
@@ -101,6 +101,9 @@ elsif ( $options->{ 'eval' } )
     }
 } 
 
+$total   = 0;
+$grabbed = 0;
+
 while ( $record = Maasha::Biopieces::get_record( $in ) ) 
 {
     $found = 0;
@@ -115,16 +118,31 @@ while ( $record = Maasha::Biopieces::get_record( $in ) )
         $found = grab_eval( $key, $op, $val, $record );
     }
 
-    if ( $found and not $invert ) {
+    if ( $found and not $invert )
+    {
         Maasha::Biopieces::put_record( $record, $out );
-    } elsif ( not $found and $invert ) {
+        $grabbed += 1;
+    }
+    elsif ( not $found and $invert )
+    {
         Maasha::Biopieces::put_record( $record, $out );
+        $grabbed += 1;
     }
+
+    $total += 1;
 }
 
 Maasha::Biopieces::close_stream( $in );
 Maasha::Biopieces::close_stream( $out );
 
+if ( $options->{ 'verbose' } )
+{
+    print STDERR "Records grabbed: $grabbed\n";
+    print STDERR "Records missed: " . ( $total - $grabbed ) . "\n";
+    print STDERR "Patterns used: " . ( scalar @{$patterns} ) . "\n" if defined $patterns;
+    print STDERR "Patterns used: " . ( scalar keys %lookup_hash ) . "\n" if %lookup_hash;
+}
+
 
 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SUBROUTINES <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
@@ -158,7 +176,7 @@ sub grab_lookup
         }
 
         if ( not $keys_only ) {
-            map { return 1 if $record->{ $_ } and exists $lookup_hash->{ $record->{ $_ } } } keys %{ $record };
+            map { return 1 if defined $record->{ $_ } and exists $lookup_hash->{ $record->{ $_ } } } keys %{ $record };
         }
     }