# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-# List all tracks availible in a local installation of the Biopieces Genome Browser.
+# Intersects two tracks in the Biopieces Genome Browser.
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
use strict;
use Data::Dumper;
use Maasha::Biopieces;
-use Maasha::BGB::Common;
+use Maasha::BGB::Track;
use Maasha::KISS;
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-my ( $user, $options, $in, $out, $record, @contigs, $contig, $track, @tracks, %hash, $fh1, $fh2, @records );
+my ( $user, $options, $in, $out, $record, @contigs, $contig, $track, @tracks, %hash, $fh1, $fh2, $entries, $entry );
$user = Maasha::Biopieces::biopiecesrc( "BGB_USER" );
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 )
{
if ( exists $hash{ '1' } and exists $hash{ '2' } )
{
+ print STDERR "Intersecting:\n$hash{ '1' } and\n$hash{ '2' }\n\n" if $options->{ 'verbose' };
+
$fh1 = Maasha::Filesys::file_read_open( "$hash{ '1' }/track_data.kiss" );
$fh2 = Maasha::Filesys::file_read_open( "$hash{ '2' }/track_data.kiss" );
- @records = Maasha::KISS::kiss_intersect( $fh1, $fh2, $options->{ 'invert' } );
+ $entries = Maasha::KISS::kiss_intersect( $fh1, $fh2, $options->{ 'invert' } );
- map { Maasha::Biopieces::put_record( $_, $out ) } @records;
+ foreach $entry ( @{ $entries } )
+ {
+ if ( $record = Maasha::KISS::kiss2biopiece( $entry ) ) {
+ Maasha::Biopieces::put_record( $record, $out );
+ }
+ }
}
}