Mercurial > repos > dereeper > roary_plots
diff Roary/t/Bio/Roary/AssemblyStatistics.t @ 0:c47a5f61bc9f draft
Uploaded
author | dereeper |
---|---|
date | Fri, 14 May 2021 20:27:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Roary/t/Bio/Roary/AssemblyStatistics.t Fri May 14 20:27:06 2021 +0000 @@ -0,0 +1,121 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Data::Dumper; +use Test::Files; + +BEGIN { unshift( @INC, './lib' ) } + +BEGIN { + use Test::Most; + use_ok('Bio::Roary::AssemblyStatistics'); +} + +my $obj; +ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/input_block_spreadsheet.csv' ), 'initialise spreadsheet' ); + +my @genes = sort keys %{ $obj->_genes_to_rows }; +is_deeply( + \@genes, + [ + 'SBOV29371', 'SBOV38871', 'SBOV43201', 'STY3593', 'STY4162', 'bcsC_1', 'betC_2', 'comM_2', + 'dmsA4_1', 'dosC', 'dsbA_3', 'fadH_1', 'fimD_3', 'fliB_2', 'fliF', 'ftsN', + 'gatY_1', 'glfT2', 'group_1000', 'group_1001', 'group_1004', 'group_1006', 'group_1009', 'group_220', + 'group_277', 'group_281', 'group_283', 'group_284', 'group_288', 'hemD', 'hsrA_2', 'icsA', + 'kdpD', 'ligB_1', 'marT_1', 'nepI', 'rffH', 'rpoS', 'selA_1', 'speC_3', + 'sptP', 'srgB', 'stp', 'tmcA', 'tub', 'yadA', 'ybbW_1', 'yhaO_2', + 'yicJ_1', 'yigZ' + ], + 'all gene rows available' +); + +is_deeply( + $obj->ordered_genes, + [ + 'dmsA4_1', 'group_1000', 'group_1001', 'SBOV43201', 'dosC', 'stp', 'fliB_2', 'fliF', + 'dsbA_3', 'srgB', 'fimD_3', 'betC_2', 'tmcA', 'tub', 'rffH', 'hemD', + 'group_1006', 'STY3593', 'group_1004', 'yigZ', 'group_220', 'glfT2', 'kdpD', 'speC_3', + 'ybbW_1', 'sptP', 'SBOV29371', 'rpoS', 'fadH_1', 'yhaO_2', 'bcsC_1', 'STY4162', + 'yadA', 'ligB_1', 'icsA', 'marT_1', 'selA_1', 'nepI', 'gatY_1', 'SBOV38871', + 'group_288', 'hsrA_2', 'group_281', 'group_283', 'group_284', 'yicJ_1', 'ftsN', 'group_277', + 'group_1009', 'comM_2' + ], + 'ordered genes' +); + +is_deeply( + $obj->sample_names_to_column_index, + { + 'threeblocks' => 18, + 'nocontigs' => 17, + 'contigwithgaps' => 16, + 'oneblock' => 14, + 'threeblocksinversion' => 19, + 'oneblockrev' => 15 + }, + 'sample names to column index' +); + +is_deeply( $obj->_sample_statistics('oneblock'), { num_blocks => 1, largest_block_size => 50 }, 'one block' ); +is_deeply( $obj->_sample_statistics('oneblockrev'), { num_blocks => 1, largest_block_size => 50 }, 'one block reversed' ); +is_deeply( + $obj->_sample_statistics('contigwithgaps'), + { num_blocks => 1, largest_block_size => 50 }, + 'one block where there are gaps everywhere' +); +is_deeply( $obj->_sample_statistics('nocontigs'), { num_blocks => 50, largest_block_size => 1 }, 'no contiguous blocks' ); +is_deeply( $obj->_sample_statistics('threeblocks'), { num_blocks => 3, largest_block_size => 21 }, 'three blocks' ); +is_deeply( + $obj->_sample_statistics('threeblocksinversion'), + { num_blocks => 3, largest_block_size => 20 }, + 'three blocks with an inversion in the middle' +); +is_deeply( $obj->gene_category_count, { core => 50 }, 'Gene category counts' ); + +# t/data/gene_category_count.csv +ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv' ), + 'initialise spreadsheet with variable numbers of genes in samples' ); +is_deeply( + $obj->gene_category_count, + { + 'core' => 1, + 'cloud' => 4, + 'soft_core' => 1, + 'shell' => 24 + }, + 'Categories as expected' +); +ok($obj->create_summary_output, 'create output file'); +compare_ok('summary_statistics.txt', 't/data/expected_summary_statistics.txt', 'summary statistics as expected'); + + +# t/data/gene_category_count.csv +ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv', core_definition => 0.9667 ), + 'initialise spreadsheet with core of 96.67%' ); +is_deeply( + $obj->gene_category_count, + { + 'core' => 1, + 'soft_core' => 1, + 'cloud' => 4, + 'shell' => 24 + }, + 'Categories as expected with cd of 96.67%' +); + +# t/data/gene_category_count.csv +ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv', core_definition => 0.9666 ), + 'initialise spreadsheet with core of 96.66%' ); +is_deeply( + $obj->gene_category_count, + { + 'core' => 2, + 'cloud' => 4, + 'shell' => 24 + }, + 'Categories as expected with cd of 96.66%' +); + + +unlink('summary_statistics.txt'); +done_testing();