0
|
1 #!/usr/bin/env perl
|
|
2 use strict;
|
|
3 use warnings;
|
|
4 use Data::Dumper;
|
|
5 use Test::Files;
|
|
6 use File::Which;
|
|
7
|
|
8 BEGIN { unshift( @INC, './lib' ) }
|
|
9
|
|
10 BEGIN {
|
|
11 use Test::Most;
|
|
12 use_ok('Bio::Roary::QC::Report');
|
|
13 }
|
|
14
|
|
15
|
|
16
|
|
17 my $kraken_data = [
|
|
18 [ 'assembly1', 'Clostridium', 'Clostridium difficile' ],
|
|
19 [ 'assembly2', 'Escherichia', 'Escherichia coli' ],
|
|
20 [ 'assembly3', 'Streptococcus', 'Streptococcus pneumoniae' ]
|
|
21 ];
|
|
22
|
|
23 ok(
|
|
24 my $qc_report_obj = Bio::Roary::QC::Report->new(
|
|
25 input_files => [],
|
|
26 outfile => "kraken_report.csv",
|
|
27 _kraken_data => $kraken_data,
|
|
28 kraken_db => 't/data/kraken_test/',
|
|
29 job_runner => "Local"
|
|
30 ),
|
|
31 'QC report object created with no input gff files'
|
|
32 );
|
|
33
|
|
34 ok( $qc_report_obj->report, 'report generated' );
|
|
35 ok( -e 'kraken_report.csv', 'report file exists' );
|
|
36
|
|
37 compare_ok('kraken_report.csv',"t/data/exp_qc_report.csv", 'report file correct' );
|
|
38
|
|
39 unlink('kraken_report.csv');
|
|
40
|
|
41
|
|
42 ok(
|
|
43 $qc_report_obj = Bio::Roary::QC::Report->new(
|
|
44 input_files => [ 't/data/query_1.gff', 't/data/query_2.gff' ],
|
|
45 outfile => "kraken_report.csv",
|
|
46 job_runner => "Local",
|
|
47 kraken_db => 't/data/kraken_test/',
|
|
48 verbose => 0,
|
|
49 ),
|
|
50 'QC report object created with data'
|
|
51 );
|
|
52
|
|
53 is( $qc_report_obj->_tmp_directory . '/abc.fna', $qc_report_obj->_nuc_fasta_filename('abc.gff'), 'filename of nuc from gff' );
|
|
54 is(
|
|
55 'sed -n \'/##FASTA/,//p\' abc.gff | grep -v \'##FASTA\' > ' . $qc_report_obj->_tmp_directory . '/abc.fna',
|
|
56 $qc_report_obj->_extract_nuc_fasta_cmd('abc.gff'),
|
|
57 'extract nuc command'
|
|
58 );
|
|
59
|
|
60 ok( my $nuc_files = $qc_report_obj->_extract_nuc_files_from_all_gffs(), 'extract nuc files from gffs' );
|
|
61
|
|
62 is_deeply( [ $qc_report_obj->_tmp_directory . '/query_1.fna', $qc_report_obj->_tmp_directory . '/query_2.fna' ],
|
|
63 $nuc_files, 'check extracted nuc files from gffs list' );
|
|
64
|
|
65 compare_ok( $qc_report_obj->_tmp_directory . '/query_1.fna' ,
|
|
66 't/data/expected_query_1.fna',
|
|
67 'Check FASTA file 1 extracted as expected'
|
|
68 );
|
|
69 compare_ok( $qc_report_obj->_tmp_directory . '/query_2.fna' ,
|
|
70 't/data/expected_query_2.fna',
|
|
71 'Check FASTA file 2 extracted as expected'
|
|
72 );
|
|
73
|
|
74 SKIP:
|
|
75 {
|
|
76
|
|
77 skip "kraken not installed", 2 unless ( which('kraken') );
|
|
78 skip "kraken-report not installed", 2 unless ( which('kraken-report') );
|
|
79
|
|
80 ok( my $kraken_files = $qc_report_obj->_run_kraken_on_nuc_files($nuc_files), 'run kraken over everything' );
|
|
81 is_deeply( [ $qc_report_obj->_tmp_directory . '/query_1.kraken', $qc_report_obj->_tmp_directory . '/query_2.kraken' ],
|
|
82 $kraken_files, 'check kraken files are created from nuc files' );
|
|
83
|
|
84 ok(my $kraken_report_files = $qc_report_obj->_run_kraken_report_on_kraken_files( $kraken_files ), 'build reports');
|
|
85 is_deeply( [ $qc_report_obj->_tmp_directory . '/query_1.kraken.report', $qc_report_obj->_tmp_directory . '/query_2.kraken.report' ],
|
|
86 $kraken_report_files, 'check kraken report files are created from kraken files' );
|
|
87
|
|
88 is_deeply([['query_1','Staphylococcus', 'Staphylococcus aureus'],['query_2','Staphylococcus', 'Staphylococcus aureus']],$qc_report_obj->_parse_kraken_reports($kraken_report_files),'check output report');
|
|
89
|
|
90
|
|
91 ok( $qc_report_obj->report, 'report generated with real data' );
|
|
92 ok( -e 'kraken_report.csv', 'report file exists with real data' );
|
|
93 compare_ok('kraken_report.csv',"t/data/exp_qc_report_real.csv", 'report file correct' );
|
|
94 unlink('kraken_report.csv');
|
|
95
|
|
96 }
|
|
97
|
|
98
|
|
99 done_testing();
|
|
100
|