Skip to content

Commit

Permalink
Fix test flatfile-to-json using similar technique to biodb-to-json fi…
Browse files Browse the repository at this point in the history
…x (lookup class structure). Problem remains where many different ArrayRepr classes are generated. See issue #470
  • Loading branch information
cmdcolin committed May 12, 2014
1 parent faded29 commit e5c4115
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 13 deletions.
85 changes: 74 additions & 11 deletions tests/perl_tests/flatfile-to-json.pl.t
Expand Up @@ -92,9 +92,20 @@ sub tempdir {
scalar( @{$cds_trackdata->{histograms}{stats}}),
'have stats for each precalculated hist' );

is( ref $cds_trackdata->{intervals}{nclist}[1][10], 'ARRAY', 'exonerate mRNA has its subfeatures' )
my $class=$cds_trackdata->{intervals}{nclist}[1][0];
my $structure=$cds_trackdata->{intervals}{classes}[$class];
my @structure_attributes=$structure->{attributes};

my $index=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Subfeatures' ) {
$index=$i+1;
}
}

is( ref $cds_trackdata->{intervals}{nclist}[1][$index], 'ARRAY', 'exonerate mRNA has its subfeatures' )
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[1][10]}, 5, 'exonerate mRNA has 5 subfeatures' );
is( scalar @{$cds_trackdata->{intervals}{nclist}[1][$index]}, 5, 'exonerate mRNA has 5 subfeatures' );

my $tracklist = $read_json->('trackList.json');
is( $tracklist->{tracks}[1]{storeClass}, 'JBrowse/Store/SeqFeature/NCList' );
Expand Down Expand Up @@ -133,9 +144,22 @@ sub tempdir {
my $read_json = sub { slurp( $tempdir, @_ ) };
my $cds_trackdata = $read_json->(qw( tracks AU_mRNA Group1.33 trackData.json ));
is( $cds_trackdata->{featureCount}, 1, 'got right feature count' ) or diag explain $cds_trackdata;
is( ref $cds_trackdata->{intervals}{nclist}[0][10], 'ARRAY', 'mRNA has its subfeatures' )

my $class=$cds_trackdata->{intervals}{nclist}[0][0];
my $structure=$cds_trackdata->{intervals}{classes}[$class];
my @structure_attributes=$structure->{attributes};

my $index=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Subfeatures' ) {
$index=$i+1;
}
}


is( ref $cds_trackdata->{intervals}{nclist}[0][$index], 'ARRAY', 'mRNA has its subfeatures' )
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][10]}, 7, 'mRNA has 7 subfeatures' );
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][$index]}, 7, 'mRNA has 7 subfeatures' );

my $tracklist = $read_json->( 'trackList.json' );
is( $tracklist->{tracks}[0]{key}, 'AU mRNA', 'got a tracklist' ) or diag explain $tracklist;
Expand All @@ -160,10 +184,22 @@ sub tempdir {

# check that we got the same data as before
$cds_trackdata = $read_json->(qw( tracks AU_mRNA Group1.33 trackData.json ));

$class=$cds_trackdata->{intervals}{nclist}[0][0];
$structure=$cds_trackdata->{intervals}{classes}[$class];
@structure_attributes=$structure->{attributes};

$index=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Subfeatures' ) {
$index=$i+1;
}
}

is( $cds_trackdata->{featureCount}, 1, 'got right feature count' ) or diag explain $cds_trackdata;
is( ref $cds_trackdata->{intervals}{nclist}[0][10], 'ARRAY', 'mRNA has its subfeatures' )
is( ref $cds_trackdata->{intervals}{nclist}[0][$index], 'ARRAY', 'mRNA has its subfeatures' )
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][10]}, 7, 'mRNA has 7 subfeatures' );
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][$index]}, 7, 'mRNA has 7 subfeatures' );
}

{ #diag "running on single_au9_gene.gff3, testing that we emit 2 levels of subfeatures";
Expand All @@ -187,13 +223,40 @@ sub tempdir {

my $read_json = sub { slurp( $tempdir, @_ ) };
my $cds_trackdata = $read_json->(qw( tracks AU_mRNA Group1.33 trackData.json ));

my $class=$cds_trackdata->{intervals}{nclist}[0][0];
my $structure=$cds_trackdata->{intervals}{classes}[$class];
my @structure_attributes=$structure->{attributes};

my $index=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Subfeatures' ) {
$index=$i+1;
}
}


is( $cds_trackdata->{featureCount}, 1, 'got right feature count' ) or diag explain $cds_trackdata;
is( ref $cds_trackdata->{intervals}{nclist}[0][10], 'ARRAY', 'gene has its subfeatures' )
is( ref $cds_trackdata->{intervals}{nclist}[0][$index], 'ARRAY', 'gene has its subfeatures' )
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][10]}, 1, 'gene has 1 subfeature' );
is( ref $cds_trackdata->{intervals}{nclist}[0][10][0][10], 'ARRAY', 'mRNA has its subfeatures' )
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][$index]}, 1, 'gene has 1 subfeature' );

$class=$cds_trackdata->{intervals}{nclist}[0][$index][0][0];
$structure=$cds_trackdata->{intervals}{classes}[$class];
@structure_attributes=$structure->{attributes};

my $index_subfeature=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Subfeatures' ) {
$index_subfeature=$i+1;
}
}



is( ref $cds_trackdata->{intervals}{nclist}[0][$index][0][$index_subfeature], 'ARRAY', 'mRNA has its subfeatures' )
or diag explain $cds_trackdata;
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][10][0][10]}, 7, 'mRNA has 7 subfeatures' );
is( scalar @{$cds_trackdata->{intervals}{nclist}[0][$index][0][$index_subfeature]}, 7, 'mRNA has 7 subfeatures' );
}

{
Expand Down Expand Up @@ -272,6 +335,7 @@ for my $testfile ( "tests/data/au9_scaffold_subset.gff3", "tests/data/au9_scaffo
my $read_json = sub { slurp( $tempdir, @_ ) };
my $cds_trackdata = $read_json->(qw( tracks au9_full1 Group1.33 trackData.json ));
is( $cds_trackdata->{featureCount}, 28, 'got right feature count' ) or diag explain $cds_trackdata;

is( scalar @{$cds_trackdata->{intervals}{classes}}, 5, 'got the right number of classes' )
or diag explain $cds_trackdata->{intervals}{classes};

Expand Down Expand Up @@ -319,7 +383,6 @@ for my $testfile ( "tests/data/au9_scaffold_subset.gff3", "tests/data/au9_scaffo
0,
'no empty chunks in trackdata'
) or diag explain $trackdata;

is_deeply( $trackdata->{'trackData.jsonz'}{intervals}{classes}[0],
{
'attributes' => [
Expand Down
26 changes: 24 additions & 2 deletions tests/perl_tests/genbank.t
Expand Up @@ -70,9 +70,20 @@ sub tempdir {

# test start/stop of parent feature (full record)
#diag explain $trackdata->{'trackData.json'}{'intervals'}{'nclist'};
my $class=$trackdata->{'trackData.json'}->{'intervals'}{'nclist'}[0][0];
my $structure=$trackdata->{'trackData.json'}->{'intervals'}{'classes'}[$class];
my @structure_attributes=$structure->{attributes};

my $index=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Type' ) {
$index=$i+1;
}
}

is( $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0][1], 5001, "got right start coordinate (full record)" );
is( $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0][2], 10950, "got right stop coordinate (full record)" );
is( $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0][21], 'mRNA', "got right type in parent feature (full record)" ) or diag explain $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0];
is( $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0][$index], 'mRNA', "got right type in parent feature (full record)" ) or diag explain $trackdata->{'trackData.json'}{'intervals'}{'nclist'}[0];

# test that the right attributes are present
is_deeply( [sort(@{$trackdata->{'trackData.json'}->{'intervals'}->{'classes'}->[0]->{'attributes'}})],
Expand All @@ -97,10 +108,21 @@ sub tempdir {
# ok ( scalar(@{$subfeatures->[0]}) == scalar(@{$trackdata->{'trackData.json'}->{'intervals'}->{'classes'}->[0]->{'attributes'}}) + 1,
# "subfeature array is the right length (length of attribute array + 1)");
# test first subfeature completely
$class=$subfeatures->[0][0];
$structure=$trackdata->{'trackData.json'}->{'intervals'}{'classes'}[$class];
@structure_attributes=$structure->{attributes};

my $index_subfeature=0;
for(my $i=0; $i < scalar @{$structure_attributes[0]}; $i++) {
if( $structure_attributes[0][$i] eq 'Type' ) {
$index_subfeature=$i+1;
}
}

is ( $subfeatures->[0][0] && $subfeatures->[0][0], 1, "first item set correctly in subfeature");
is ( $subfeatures->[0][1] && $subfeatures->[0][1], 5001, "start set correctly in subfeature") or diag explain $subfeatures->[0];
is ( $subfeatures->[0][2] && $subfeatures->[0][2], 5114, "end set correctly in subfeature") or diag explain $subfeatures->[0];
is ( $subfeatures->[0][2] && $subfeatures->[0][9], 'exon', "type set correctly in subfeature") or diag explain $subfeatures->[0];
is ( $subfeatures->[0][$index_subfeature] && $subfeatures->[0][$index_subfeature], 'exon', "type set correctly in subfeature") or diag explain $subfeatures->[0];

}

Expand Down

0 comments on commit e5c4115

Please sign in to comment.