-
Notifications
You must be signed in to change notification settings - Fork 18
/
Cap3.t
115 lines (95 loc) · 3.33 KB
/
Cap3.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
use strict;
BEGIN {
use Bio::Root::Test;
use Bio::Tools::Run::Build::Test;
skipall_unless_feature('Cap3');
test_begin(-tests => 91,
-requires_modules => [qw(Bio::Tools::Run::Cap3)]);
use_ok('Bio::SeqIO');
}
my $assembler;
ok($assembler = Bio::Tools::Run::Cap3->new());
isa_ok($assembler, 'Bio::Tools::Run::Cap3');
ok($assembler->program_name('aaa'));
is($assembler->program_name, 'aaa');
ok($assembler->program_dir('/dir'));
is($assembler->program_dir, '/dir');
my @params = @Bio::Tools::Run::Cap3::program_params;
for my $param (@params) {
ok($assembler->$param(321));
is($assembler->$param(), 321);
}
my @switches = @Bio::Tools::Run::Cap3::program_switches;
for my $switch (@switches) {
ok($assembler->$switch(1));
is($assembler->$switch(), 1);
}
# test the program itself
my $program_name = $Bio::Tools::Run::Cap3::program_name;
ok($assembler->program_name($program_name));
SKIP: {
test_skip(-requires_executable => $assembler,
-tests => 41);
# Input data
my $result_file = 'results.ace';
my $fasta_file = test_input_file('sample_dataset_1.fa');
my $qual_file = test_input_file('sample_dataset_1.qual');
my $io = Bio::SeqIO->new( -file => $fasta_file, -format => 'fasta' );
my @seq_arr;
while (my $seq = $io->next_seq) {
push @seq_arr, $seq;
}
$io = Bio::SeqIO->new( -file => $qual_file, -format => 'qual' );
my @qual_arr;
while (my $qual = $io->next_seq) {
push @qual_arr, $qual;
}
my $asm;
ok($assembler = Bio::Tools::Run::Cap3->new());
# Try FASTA or sequence object input
ok($asm = $assembler->run($fasta_file));
isa_ok($asm, 'Bio::Assembly::ScaffoldI');
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 3);
ok($asm = $assembler->run(\@seq_arr));
isa_ok($asm, 'Bio::Assembly::ScaffoldI');
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 3);
# Try optional quality score input as a QUAL file or bioperl objects
ok($asm = $assembler->run($fasta_file, $qual_file));
isa_ok($asm, 'Bio::Assembly::ScaffoldI');
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 3);
ok($asm = $assembler->run(\@seq_arr, \@qual_arr));
isa_ok($asm, 'Bio::Assembly::ScaffoldI');
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 3);
# Try the different output types
ok($assembler->out_type($result_file));
ok($asm = $assembler->run(\@seq_arr));
ok($asm eq $result_file);
is((-f $asm), 1);
unlink $result_file;
ok($assembler->out_type('Bio::Assembly::IO'));
ok($asm = $assembler->run(\@seq_arr));
isa_ok($asm, 'Bio::Assembly::IO');
ok($asm->next_assembly);
ok($assembler->out_type('Bio::Assembly::ScaffoldI'));
ok($asm = $assembler->run(\@seq_arr));
isa_ok($asm, 'Bio::Assembly::ScaffoldI');
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 3);
# Try some Cap3 specific parameters
ok($assembler->overlap_length_cutoff(1000));
ok($asm = $assembler->run(\@seq_arr));
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 0);
ok($assembler->overlap_length_cutoff(21));
ok($assembler->overlap_identity_cutoff(100));
ok($asm = $assembler->run(\@seq_arr));
is($asm->get_nof_singlets, 0);
is($asm->get_nof_contigs, 0);
# Function alias
ok($assembler->minimum_overlap_similarity(100));
ok($assembler->minimum_overlap_length(20));
}