Skip to content

Commit

Permalink
experimental implementation a partial sort instead of external sort f…
Browse files Browse the repository at this point in the history
…or HashStore
  • Loading branch information
rbuels committed Jan 31, 2013
1 parent 6d7d819 commit c10bab9
Show file tree
Hide file tree
Showing 18 changed files with 113 additions and 64 deletions.
62 changes: 13 additions & 49 deletions src/perl5/Bio/JBrowse/HashStore.pm
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ use JSON 2;
use File::Spec ();
use File::Path ();

use Bio::JBrowse::ExternalSorter;
use Bio::JBrowse::PartialSorter;

my $bucket_class = 'Bio::JBrowse::HashStore::Bucket';

Expand Down Expand Up @@ -141,60 +141,24 @@ reading them back in sorted order.
=cut

use constant SORT_EOF => 1;
use constant SORT_EOBATCH => 2;
sub sort_stream {
my ( $self, $in_stream ) = @_;

$self->{sort_state} = 0;

# sort up to 40 million records at a time
my $batch_size = 40_000_000;

my $sorted_stream = $self->_sort_batch( $in_stream, $batch_size );

return sub {
my $d = $sorted_stream->();

if( !$d && $self->{sort_state} != SORT_EOF ) {
# sort another batch if we have not yet reached the end of the input stream
$sorted_stream = $self->_sort_batch( $in_stream, $batch_size );
$d = $sorted_stream->();
}

return $d;
};
}

sub _sort_batch {
my ( $self, $in_stream, $batch_size ) = @_;

$batch_size ||= 10_000_000;

my $sorter = Bio::JBrowse::ExternalSorter->new(
sub ($$) {
$_[0]->[0] cmp $_[1]->[0]
}, $self->{sort_mem} || 256*1024*1024 );

local $SIG{INT} = sub {
$sorter->cleanup;
exit -1;
};

my $data;
while( $batch_size-- && ( $data = $in_stream->() ) ) {
# hash each of the keys and values, spool them to a single log file
$sorter->add( $data );
}
$sorter->finish;

$self->{sort_state} = $batch_size > -1 ? SORT_EOF : SORT_EOBATCH;

# sorted entries should have perfect cache locality, so use a
use Data::Dump;
my $sorted_stream = Bio::JBrowse::PartialSorter
->new(
size => 20_000_000,
compare => sub($$) {
$_[0][0] cmp $_[1][0]
},
)
->sort( $in_stream );

# sorted entries should have nearly perfect cache locality, so use a
# 1-element cache for crc32 computations
my $hash_cache = $self->{tiny_hash_cache} ||= { key => '' };
return sub {
my $d = $sorter->get;
my $d = $sorted_stream->();
return unless $d;
my $key = $d->[0];
my $hash = $hash_cache->{key} eq $key
Expand Down
46 changes: 46 additions & 0 deletions src/perl5/Bio/JBrowse/PartialSorter.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package Bio::JBrowse::PartialSorter;
use strict;
use warnings;

=head1 NAME
Bio::JBrowse::PartialSorter - partially sort a stream
=head1 METHODS
=head2 new( size => $num_items, compare => sub($$) )
=cut

sub new {
my ( $class, @args ) = @_;
bless { @args }, $class;
}

=head2 sort( $stream )
Returns another stream, partially sorted with the comparison function.
=cut

sub sort {
my ( $self, $in ) = @_;

my $size = $self->{size} || 10_000_000;
my $compare = $self->{compare} || sub { $a cmp $b };
my @buffer;
#$#buffer = $size;

return sub {
unless( @buffer ) {
while( @buffer < $size && ( my $d = $in->() ) ) {
push @buffer, $d;
}
@buffer = sort $compare @buffer;
}
return unless @buffer;
return shift @buffer;
};
}

1;
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/0.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"seg04":{"exact":[["seg04",4,"seg04","ctgA",5232,5302],["seg04",4,"seg04","ctgA",5799,6101],["seg04",4,"seg04","ctgA",6441,6854],["seg04",4,"seg04","ctgA",7105,7211],["seg04",4,"seg04","ctgA",7694,8177],["seg04",4,"seg04","ctgA",8544,8783],["seg04",4,"seg04","ctgA",8868,8935],["seg04",4,"seg04","ctgA",9403,9825]],"prefix":[]},"protein:hgb":{"exact":[["Protein:HGB",1,"Protein:HGB","ctgA",1799,2900]],"prefix":[]},"apple":{"exact":[],"prefix":["Apple2","Apple3","Apple1"]},"eden.2":{"exact":[["EDEN.2",6,"EDEN.2","ctgA",1049,9000]],"prefix":[]},"m15":{"exact":[["m15",3,"m15","ctgA",37496,40559]],"prefix":[]},"f05":{"exact":[["f05",0,"f05","ctgB",4714,5968],["f05",0,"f05","ctgA",4714,5968]],"prefix":[]},"fa":{"exact":[],"prefix":["FakeSNP"]},"protein:h":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"b1":{"exact":[],"prefix":["b101.2"]},"f":{"exact":[],"prefix":["f07","f06","f05","f08","f10","f13","f15","f14","f02","f09","f03","f04","f01","f11","f12",{"name":"too many matches","hitLimit":1}]},"agt":{"exact":[],"prefix":["agt221.5","agt830.5","agt767.5","agt830.3","agt221.3","agt767.3"]}}
{"seg04":{"exact":[["seg04",4,"seg04","ctgA",5232,5302],["seg04",4,"seg04","ctgA",5799,6101],["seg04",4,"seg04","ctgA",6441,6854],["seg04",4,"seg04","ctgA",7105,7211],["seg04",4,"seg04","ctgA",7694,8177],["seg04",4,"seg04","ctgA",8544,8783],["seg04",4,"seg04","ctgA",8868,8935],["seg04",4,"seg04","ctgA",9403,9825]],"prefix":[]},"protein:hgb":{"exact":[["Protein:HGB",1,"Protein:HGB","ctgA",1799,2900]],"prefix":[]},"apple":{"exact":[],"prefix":["Apple2","Apple3","Apple1"]},"eden.2":{"exact":[["EDEN.2",6,"EDEN.2","ctgA",1049,9000]],"prefix":[]},"f05":{"exact":[["f05",0,"f05","ctgB",4714,5968],["f05",0,"f05","ctgA",4714,5968]],"prefix":[]},"m15":{"exact":[["m15",3,"m15","ctgA",37496,40559]],"prefix":[]},"fa":{"exact":[],"prefix":["FakeSNP"]},"protein:h":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"b1":{"exact":[],"prefix":["b101.2"]},"f":{"exact":[],"prefix":["f07","f06","f05","f08","f10","f13","f15","f14","f02","f09","f03","f04","f01","f11","f12",{"name":"too many matches","hitLimit":1}]},"agt":{"exact":[],"prefix":["agt221.5","agt830.5","agt767.5","agt830.3","agt221.3","agt767.3"]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/1.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"p":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"f15":{"exact":[["f15",0,"f15","ctgA",22131,24633]],"prefix":[]},"agt767.5":{"exact":[["agt767.5",10,"agt767.5","ctgA",1149,7200]],"prefix":[]},"seg14":{"exact":[["seg14",4,"seg14","ctgA",41136,41318],["seg14",4,"seg14","ctgA",41753,41948],["seg14",4,"seg14","ctgA",42056,42474],["seg14",4,"seg14","ctgA",42889,43270],["seg14",4,"seg14","ctgA",43394,43811],["seg14",4,"seg14","ctgA",44064,44556],["seg14",4,"seg14","ctgA",44762,45030],["seg14",4,"seg14","ctgA",45230,45488],["seg14",4,"seg14","ctgA",45789,46022],["seg14",4,"seg14","ctgA",46091,46318],["seg14",4,"seg14","ctgA",46815,46992],["seg14",4,"seg14","ctgA",47448,47829]],"prefix":[]},"m05":{"exact":[["m05",3,"m05","ctgA",13800,14007]],"prefix":[]},"agt221.3":{"exact":[["agt221.3",10,"agt221.3","ctgA",7499,8000]],"prefix":[]}}
{"f15":{"exact":[["f15",0,"f15","ctgA",22131,24633]],"prefix":[]},"p":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"agt767.5":{"exact":[["agt767.5",10,"agt767.5","ctgA",1149,7200]],"prefix":[]},"seg14":{"exact":[["seg14",4,"seg14","ctgA",41136,41318],["seg14",4,"seg14","ctgA",41753,41948],["seg14",4,"seg14","ctgA",42056,42474],["seg14",4,"seg14","ctgA",42889,43270],["seg14",4,"seg14","ctgA",43394,43811],["seg14",4,"seg14","ctgA",44064,44556],["seg14",4,"seg14","ctgA",44762,45030],["seg14",4,"seg14","ctgA",45230,45488],["seg14",4,"seg14","ctgA",45789,46022],["seg14",4,"seg14","ctgA",46091,46318],["seg14",4,"seg14","ctgA",46815,46992],["seg14",4,"seg14","ctgA",47448,47829]],"prefix":[]},"m05":{"exact":[["m05",3,"m05","ctgA",13800,14007]],"prefix":[]},"agt221.3":{"exact":[["agt221.3",10,"agt221.3","ctgA",7499,8000]],"prefix":[]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/3.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fakes":{"exact":[],"prefix":["FakeSNP"]},"a":{"exact":[],"prefix":["Apple2","Apple3","Apple1","agt221.5","agt830.5","agt767.5","agt830.3","agt221.3","agt767.3"]},"f02":{"exact":[["f02",0,"f02","ctgA",24561,28338]],"prefix":[]},"gene":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"prot":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"apple1":{"exact":[["Apple1",7,"Apple1","ctgA",9999,11500]],"prefix":[]},"agt767.":{"exact":[],"prefix":["agt767.5","agt767.3"]},"agt8":{"exact":[],"prefix":["agt830.5","agt830.3"]},"m12":{"exact":[["m12",3,"m12","ctgA",21747,25612]],"prefix":[]},"gene:hg":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"ctga":{"exact":[["ctgA",50001,"ctgA",null,0,50001,20000]],"prefix":[]},"seg03":{"exact":[["seg03",4,"seg03","ctgA",6884,7241],["seg03",4,"seg03","ctgA",7409,7737],["seg03",4,"seg03","ctgA",8054,8080],["seg03",4,"seg03","ctgA",8305,8999]],"prefix":[]}}
{"fakes":{"exact":[],"prefix":["FakeSNP"]},"a":{"exact":[],"prefix":["Apple2","Apple3","Apple1","agt221.5","agt830.5","agt767.5","agt830.3","agt221.3","agt767.3"]},"f02":{"exact":[["f02",0,"f02","ctgA",24561,28338]],"prefix":[]},"gene":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"prot":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"apple1":{"exact":[["Apple1",7,"Apple1","ctgA",9999,11500]],"prefix":[]},"agt8":{"exact":[],"prefix":["agt830.5","agt830.3"]},"m12":{"exact":[["m12",3,"m12","ctgA",21747,25612]],"prefix":[]},"agt767.":{"exact":[],"prefix":["agt767.5","agt767.3"]},"gene:hg":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"seg03":{"exact":[["seg03",4,"seg03","ctgA",6884,7241],["seg03",4,"seg03","ctgA",7409,7737],["seg03",4,"seg03","ctgA",8054,8080],["seg03",4,"seg03","ctgA",8305,8999]],"prefix":[]},"ctga":{"exact":[["ctgA",50001,"ctgA",null,0,50001,20000]],"prefix":[]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/4.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"f13":{"exact":[["f13",0,"f13","ctgA",19156,22915]],"prefix":[]},"agt767.3":{"exact":[["agt767.3",10,"agt767.3","ctgA",7999,9000]],"prefix":[]},"f1":{"exact":[],"prefix":["f10","f13","f15","f14","f11","f12"]},"seg12":{"exact":[["seg12",4,"seg12","ctgA",12530,12895],["seg12",4,"seg12","ctgA",13121,13449],["seg12",4,"seg12","ctgA",13451,13745],["seg12",4,"seg12","ctgA",13907,13965],["seg12",4,"seg12","ctgA",13997,14488],["seg12",4,"seg12","ctgA",14563,14899],["seg12",4,"seg12","ctgA",15184,15276],["seg12",4,"seg12","ctgA",15638,15736],["seg12",4,"seg12","ctgA",15744,15870]],"prefix":[]},"agt221.5":{"exact":[["agt221.5",10,"agt221.5","ctgA",1049,7300]],"prefix":[]},"gene:h":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"hga":{"exact":[["hga",0,"Remark:hga","ctgA",999,2000],["hga",1,"Gene:hga","ctgA",1099,2000],["hga",1,"Protein:HGA","ctgA",1199,1900]],"prefix":[]},"rema":{"exact":[],"prefix":["Remark:hga"]},"m03":{"exact":[["m03",3,"m03","ctgA",15395,16159]],"prefix":[]}}
{"f13":{"exact":[["f13",0,"f13","ctgA",19156,22915]],"prefix":[]},"agt767.3":{"exact":[["agt767.3",10,"agt767.3","ctgA",7999,9000]],"prefix":[]},"agt221.5":{"exact":[["agt221.5",10,"agt221.5","ctgA",1049,7300]],"prefix":[]},"f1":{"exact":[],"prefix":["f10","f13","f15","f14","f11","f12"]},"seg12":{"exact":[["seg12",4,"seg12","ctgA",12530,12895],["seg12",4,"seg12","ctgA",13121,13449],["seg12",4,"seg12","ctgA",13451,13745],["seg12",4,"seg12","ctgA",13907,13965],["seg12",4,"seg12","ctgA",13997,14488],["seg12",4,"seg12","ctgA",14563,14899],["seg12",4,"seg12","ctgA",15184,15276],["seg12",4,"seg12","ctgA",15638,15736],["seg12",4,"seg12","ctgA",15744,15870]],"prefix":[]},"gene:h":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"hga":{"exact":[["hga",0,"Remark:hga","ctgA",999,2000],["hga",1,"Gene:hga","ctgA",1099,2000],["hga",1,"Protein:HGA","ctgA",1199,1900]],"prefix":[]},"rema":{"exact":[],"prefix":["Remark:hga"]},"m03":{"exact":[["m03",3,"m03","ctgA",15395,16159]],"prefix":[]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/5.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"seg02":{"exact":[["seg02",4,"seg02","ctgA",26121,26126],["seg02",4,"seg02","ctgA",26496,26869],["seg02",4,"seg02","ctgA",27200,27325],["seg02",4,"seg02","ctgA",27371,27433],["seg02",4,"seg02","ctgA",27564,27565],["seg02",4,"seg02","ctgA",27812,28091],["seg02",4,"seg02","ctgA",28092,28201],["seg02",4,"seg02","ctgA",28328,28377],["seg02",4,"seg02","ctgA",28828,29194],["seg02",4,"seg02","ctgA",29516,29702],["seg02",4,"seg02","ctgA",29712,30061],["seg02",4,"seg02","ctgA",30328,30774],["seg02",4,"seg02","ctgA",30807,31306],["seg02",4,"seg02","ctgA",31515,31729],["seg02",4,"seg02","ctgA",31752,32154],["seg02",4,"seg02","ctgA",32594,32696],["seg02",4,"seg02","ctgA",32891,32901],["seg02",4,"seg02","ctgA",33126,33388],["seg02",4,"seg02","ctgA",33438,33443],["seg02",4,"seg02","ctgA",33758,34209],["seg02",4,"seg02","ctgA",34400,34466]],"prefix":[]},"ap":{"exact":[],"prefix":["Apple2","Apple3","Apple1"]},"m13":{"exact":[["m13",3,"m13","ctgA",17666,17690]],"prefix":[]},"protein:hg":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"agt767":{"exact":[],"prefix":["agt767.5","agt767.3"]},"f03":{"exact":[["f03",0,"f03","ctgA",36648,40440]],"prefix":[]}}
{"seg02":{"exact":[["seg02",4,"seg02","ctgA",26121,26126],["seg02",4,"seg02","ctgA",26496,26869],["seg02",4,"seg02","ctgA",27200,27325],["seg02",4,"seg02","ctgA",27371,27433],["seg02",4,"seg02","ctgA",27564,27565],["seg02",4,"seg02","ctgA",27812,28091],["seg02",4,"seg02","ctgA",28092,28201],["seg02",4,"seg02","ctgA",28328,28377],["seg02",4,"seg02","ctgA",28828,29194],["seg02",4,"seg02","ctgA",29516,29702],["seg02",4,"seg02","ctgA",29712,30061],["seg02",4,"seg02","ctgA",30328,30774],["seg02",4,"seg02","ctgA",30807,31306],["seg02",4,"seg02","ctgA",31515,31729],["seg02",4,"seg02","ctgA",31752,32154],["seg02",4,"seg02","ctgA",32594,32696],["seg02",4,"seg02","ctgA",32891,32901],["seg02",4,"seg02","ctgA",33126,33388],["seg02",4,"seg02","ctgA",33438,33443],["seg02",4,"seg02","ctgA",33758,34209],["seg02",4,"seg02","ctgA",34400,34466]],"prefix":[]},"m13":{"exact":[["m13",3,"m13","ctgA",17666,17690]],"prefix":[]},"ap":{"exact":[],"prefix":["Apple2","Apple3","Apple1"]},"protein:hg":{"exact":[],"prefix":["Protein:HGA","Protein:HGB"]},"agt767":{"exact":[],"prefix":["agt767.5","agt767.3"]},"f03":{"exact":[["f03",0,"f03","ctgA",36648,40440]],"prefix":[]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/6.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"eden.3":{"exact":[["EDEN.3",6,"EDEN.3","ctgA",1299,9000]],"prefix":[]},"m14":{"exact":[["m14",3,"m14","ctgA",14730,17239]],"prefix":[]},"g":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"remar":{"exact":[],"prefix":["Remark:hga"]},"remark:hga":{"exact":[["Remark:hga",0,"Remark:hga","ctgA",999,2000]],"prefix":[]},"seg05":{"exact":[["seg05",4,"seg05","ctgA",26502,26799],["seg05",4,"seg05","ctgA",27171,27185],["seg05",4,"seg05","ctgA",27447,27860],["seg05",4,"seg05","ctgA",27886,28076],["seg05",4,"seg05","ctgA",28224,28316],["seg05",4,"seg05","ctgA",28776,29058],["seg05",4,"seg05","ctgA",29512,29647],["seg05",4,"seg05","ctgA",30107,30216],["seg05",4,"seg05","ctgA",30464,30798],["seg05",4,"seg05","ctgA",31231,31236],["seg05",4,"seg05","ctgA",31420,31817],["seg05",4,"seg05","ctgA",32009,32057],["seg05",4,"seg05","ctgA",32207,32680],["seg05",4,"seg05","ctgA",33052,33325],["seg05",4,"seg05","ctgA",33437,33868],["seg05",4,"seg05","ctgA",34243,34313],["seg05",4,"seg05","ctgA",34604,34983],["seg05",4,"seg05","ctgA",35332,35507],["seg05",4,"seg05","ctgA",35641,35904]],"prefix":[]},"fak":{"exact":[],"prefix":["FakeSNP"]},"f04":{"exact":[["f04",0,"f04","ctgA",37241,38653]],"prefix":[]}}
{"eden.3":{"exact":[["EDEN.3",6,"EDEN.3","ctgA",1299,9000]],"prefix":[]},"m14":{"exact":[["m14",3,"m14","ctgA",14730,17239]],"prefix":[]},"remar":{"exact":[],"prefix":["Remark:hga"]},"g":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"remark:hga":{"exact":[["Remark:hga",0,"Remark:hga","ctgA",999,2000]],"prefix":[]},"seg05":{"exact":[["seg05",4,"seg05","ctgA",26502,26799],["seg05",4,"seg05","ctgA",27171,27185],["seg05",4,"seg05","ctgA",27447,27860],["seg05",4,"seg05","ctgA",27886,28076],["seg05",4,"seg05","ctgA",28224,28316],["seg05",4,"seg05","ctgA",28776,29058],["seg05",4,"seg05","ctgA",29512,29647],["seg05",4,"seg05","ctgA",30107,30216],["seg05",4,"seg05","ctgA",30464,30798],["seg05",4,"seg05","ctgA",31231,31236],["seg05",4,"seg05","ctgA",31420,31817],["seg05",4,"seg05","ctgA",32009,32057],["seg05",4,"seg05","ctgA",32207,32680],["seg05",4,"seg05","ctgA",33052,33325],["seg05",4,"seg05","ctgA",33437,33868],["seg05",4,"seg05","ctgA",34243,34313],["seg05",4,"seg05","ctgA",34604,34983],["seg05",4,"seg05","ctgA",35332,35507],["seg05",4,"seg05","ctgA",35641,35904]],"prefix":[]},"f04":{"exact":[["f04",0,"f04","ctgA",37241,38653]],"prefix":[]},"fak":{"exact":[],"prefix":["FakeSNP"]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/7.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"agt830.5":{"exact":[["agt830.5",10,"agt830.5","ctgA",1049,3202]],"prefix":[]},"agt22":{"exact":[],"prefix":["agt221.5","agt221.3"]},"f14":{"exact":[["f14",0,"f14","ctgA",23071,23185]],"prefix":[]},"seg15":{"exact":[["seg15",4,"seg15","ctgA",39264,39361],["seg15",4,"seg15","ctgA",39752,40034],["seg15",4,"seg15","ctgA",40514,40954],["seg15",4,"seg15","ctgA",41251,41365],["seg15",4,"seg15","ctgA",41491,41504],["seg15",4,"seg15","ctgA",41940,42377],["seg15",4,"seg15","ctgA",42747,42954],["seg15",4,"seg15","ctgA",43400,43897],["seg15",4,"seg15","ctgA",44042,44113],["seg15",4,"seg15","ctgA",44398,44888],["seg15",4,"seg15","ctgA",45280,45375],["seg15",4,"seg15","ctgA",45710,46041],["seg15",4,"seg15","ctgA",46424,46564],["seg15",4,"seg15","ctgA",46737,47087],["seg15",4,"seg15","ctgA",47328,47595],["seg15",4,"seg15","ctgA",47857,47979],["seg15",4,"seg15","ctgA",48168,48453]],"prefix":[]},"h":{"exact":[],"prefix":["hga","hgb"]},"gene:hgb":{"exact":[["Gene:hgb",1,"Gene:hgb","ctgA",1599,3000]],"prefix":[]},"remark:hg":{"exact":[],"prefix":["Remark:hga"]},"m04":{"exact":[["m04",3,"m04","ctgA",33324,35791]],"prefix":[]}}
{"gene:hgb":{"exact":[["Gene:hgb",1,"Gene:hgb","ctgA",1599,3000]],"prefix":[]},"h":{"exact":[],"prefix":["hga","hgb"]},"agt22":{"exact":[],"prefix":["agt221.5","agt221.3"]},"agt830.5":{"exact":[["agt830.5",10,"agt830.5","ctgA",1049,3202]],"prefix":[]},"remark:hg":{"exact":[],"prefix":["Remark:hga"]},"f14":{"exact":[["f14",0,"f14","ctgA",23071,23185]],"prefix":[]},"seg15":{"exact":[["seg15",4,"seg15","ctgA",39264,39361],["seg15",4,"seg15","ctgA",39752,40034],["seg15",4,"seg15","ctgA",40514,40954],["seg15",4,"seg15","ctgA",41251,41365],["seg15",4,"seg15","ctgA",41491,41504],["seg15",4,"seg15","ctgA",41940,42377],["seg15",4,"seg15","ctgA",42747,42954],["seg15",4,"seg15","ctgA",43400,43897],["seg15",4,"seg15","ctgA",44042,44113],["seg15",4,"seg15","ctgA",44398,44888],["seg15",4,"seg15","ctgA",45280,45375],["seg15",4,"seg15","ctgA",45710,46041],["seg15",4,"seg15","ctgA",46424,46564],["seg15",4,"seg15","ctgA",46737,47087],["seg15",4,"seg15","ctgA",47328,47595],["seg15",4,"seg15","ctgA",47857,47979],["seg15",4,"seg15","ctgA",48168,48453]],"prefix":[]},"m04":{"exact":[["m04",3,"m04","ctgA",33324,35791]],"prefix":[]}}
2 changes: 1 addition & 1 deletion tests/data/volvox_formatted_names/names/8.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"seg10":{"exact":[["seg10",4,"seg10","ctgA",29770,29942],["seg10",4,"seg10","ctgA",30041,30340],["seg10",4,"seg10","ctgA",30809,31307],["seg10",4,"seg10","ctgA",31760,31984],["seg10",4,"seg10","ctgA",32373,32937]],"prefix":[]},"m":{"exact":[],"prefix":["m11","m05","m14","m03","m08","m13","m07","m12","m02","m10","m06","m04","m15","m09","m01"]},"m01":{"exact":[["m01",3,"m01","ctgA",48252,48366]],"prefix":[]},"ge":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"f11":{"exact":[["f11",0,"f11","ctgA",46989,48410]],"prefix":[]}}
{"seg10":{"exact":[["seg10",4,"seg10","ctgA",29770,29942],["seg10",4,"seg10","ctgA",30041,30340],["seg10",4,"seg10","ctgA",30809,31307],["seg10",4,"seg10","ctgA",31760,31984],["seg10",4,"seg10","ctgA",32373,32937]],"prefix":[]},"m":{"exact":[],"prefix":["m11","m05","m14","m03","m08","m13","m07","m12","m02","m10","m06","m04","m15","m09","m01"]},"f11":{"exact":[["f11",0,"f11","ctgA",46989,48410]],"prefix":[]},"ge":{"exact":[],"prefix":["Gene:hga","Gene:hgb"]},"m01":{"exact":[["m01",3,"m01","ctgA",48252,48366]],"prefix":[]}}

0 comments on commit c10bab9

Please sign in to comment.