annotate Roary/t/Bio/Roary/AssemblyStatistics.t @ 0:c47a5f61bc9f draft

Uploaded
author dereeper
date Fri, 14 May 2021 20:27:06 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
1 #!/usr/bin/env perl
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
2 use strict;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
3 use warnings;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
4 use Data::Dumper;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
5 use Test::Files;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
6
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
7 BEGIN { unshift( @INC, './lib' ) }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
8
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
9 BEGIN {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
10 use Test::Most;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
11 use_ok('Bio::Roary::AssemblyStatistics');
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
12 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
13
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
14 my $obj;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
15 ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/input_block_spreadsheet.csv' ), 'initialise spreadsheet' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
16
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
17 my @genes = sort keys %{ $obj->_genes_to_rows };
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
18 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
19 \@genes,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
20 [
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
21 'SBOV29371', 'SBOV38871', 'SBOV43201', 'STY3593', 'STY4162', 'bcsC_1', 'betC_2', 'comM_2',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
22 'dmsA4_1', 'dosC', 'dsbA_3', 'fadH_1', 'fimD_3', 'fliB_2', 'fliF', 'ftsN',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
23 'gatY_1', 'glfT2', 'group_1000', 'group_1001', 'group_1004', 'group_1006', 'group_1009', 'group_220',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
24 'group_277', 'group_281', 'group_283', 'group_284', 'group_288', 'hemD', 'hsrA_2', 'icsA',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
25 'kdpD', 'ligB_1', 'marT_1', 'nepI', 'rffH', 'rpoS', 'selA_1', 'speC_3',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
26 'sptP', 'srgB', 'stp', 'tmcA', 'tub', 'yadA', 'ybbW_1', 'yhaO_2',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
27 'yicJ_1', 'yigZ'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
28 ],
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
29 'all gene rows available'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
30 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
31
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
32 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
33 $obj->ordered_genes,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
34 [
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
35 'dmsA4_1', 'group_1000', 'group_1001', 'SBOV43201', 'dosC', 'stp', 'fliB_2', 'fliF',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
36 'dsbA_3', 'srgB', 'fimD_3', 'betC_2', 'tmcA', 'tub', 'rffH', 'hemD',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
37 'group_1006', 'STY3593', 'group_1004', 'yigZ', 'group_220', 'glfT2', 'kdpD', 'speC_3',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
38 'ybbW_1', 'sptP', 'SBOV29371', 'rpoS', 'fadH_1', 'yhaO_2', 'bcsC_1', 'STY4162',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
39 'yadA', 'ligB_1', 'icsA', 'marT_1', 'selA_1', 'nepI', 'gatY_1', 'SBOV38871',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
40 'group_288', 'hsrA_2', 'group_281', 'group_283', 'group_284', 'yicJ_1', 'ftsN', 'group_277',
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
41 'group_1009', 'comM_2'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
42 ],
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
43 'ordered genes'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
44 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
45
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
46 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
47 $obj->sample_names_to_column_index,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
48 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
49 'threeblocks' => 18,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
50 'nocontigs' => 17,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
51 'contigwithgaps' => 16,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
52 'oneblock' => 14,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
53 'threeblocksinversion' => 19,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
54 'oneblockrev' => 15
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
55 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
56 'sample names to column index'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
57 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
58
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
59 is_deeply( $obj->_sample_statistics('oneblock'), { num_blocks => 1, largest_block_size => 50 }, 'one block' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
60 is_deeply( $obj->_sample_statistics('oneblockrev'), { num_blocks => 1, largest_block_size => 50 }, 'one block reversed' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
61 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
62 $obj->_sample_statistics('contigwithgaps'),
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
63 { num_blocks => 1, largest_block_size => 50 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
64 'one block where there are gaps everywhere'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
65 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
66 is_deeply( $obj->_sample_statistics('nocontigs'), { num_blocks => 50, largest_block_size => 1 }, 'no contiguous blocks' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
67 is_deeply( $obj->_sample_statistics('threeblocks'), { num_blocks => 3, largest_block_size => 21 }, 'three blocks' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
68 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
69 $obj->_sample_statistics('threeblocksinversion'),
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
70 { num_blocks => 3, largest_block_size => 20 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
71 'three blocks with an inversion in the middle'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
72 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
73 is_deeply( $obj->gene_category_count, { core => 50 }, 'Gene category counts' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
74
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
75 # t/data/gene_category_count.csv
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
76 ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv' ),
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
77 'initialise spreadsheet with variable numbers of genes in samples' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
78 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
79 $obj->gene_category_count,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
80 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
81 'core' => 1,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
82 'cloud' => 4,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
83 'soft_core' => 1,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
84 'shell' => 24
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
85 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
86 'Categories as expected'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
87 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
88 ok($obj->create_summary_output, 'create output file');
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
89 compare_ok('summary_statistics.txt', 't/data/expected_summary_statistics.txt', 'summary statistics as expected');
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
90
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
91
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
92 # t/data/gene_category_count.csv
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
93 ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv', core_definition => 0.9667 ),
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
94 'initialise spreadsheet with core of 96.67%' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
95 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
96 $obj->gene_category_count,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
97 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
98 'core' => 1,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
99 'soft_core' => 1,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
100 'cloud' => 4,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
101 'shell' => 24
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
102 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
103 'Categories as expected with cd of 96.67%'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
104 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
105
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
106 # t/data/gene_category_count.csv
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
107 ok( $obj = Bio::Roary::AssemblyStatistics->new( spreadsheet => 't/data/gene_category_count.csv', core_definition => 0.9666 ),
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
108 'initialise spreadsheet with core of 96.66%' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
109 is_deeply(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
110 $obj->gene_category_count,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
111 {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
112 'core' => 2,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
113 'cloud' => 4,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
114 'shell' => 24
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
115 },
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
116 'Categories as expected with cd of 96.66%'
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
117 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
118
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
119
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
120 unlink('summary_statistics.txt');
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
121 done_testing();