annotate Roary/lib/Bio/Roary/CommandLine/RoaryReorderSpreadsheet.pm @ 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 undef $VERSION;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
2 package Bio::Roary::CommandLine::RoaryReorderSpreadsheet;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
3
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
4 # ABSTRACT: Take in a tree and a spreadsheet and output a reordered spreadsheet
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
5
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
6 =head1 SYNOPSIS
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
7
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
8 Take in a tree and a spreadsheet and output a reordered spreadsheet
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
9
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
10 =cut
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
11
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
12 use Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
13 use Getopt::Long qw(GetOptionsFromArray);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
14 use Bio::Roary::ReorderSpreadsheet;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
15 extends 'Bio::Roary::CommandLine::Common';
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
16
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
17 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
18 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
19 has 'help' => ( is => 'rw', isa => 'Bool', default => 0 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
20
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
21 has 'tree_file' => ( is => 'rw', isa => 'Str' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
22 has 'spreadsheet_filename' => ( is => 'rw', isa => 'Str', default => 'gene_presence_absence.csv' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
23 has 'output_filename' => ( is => 'rw', isa => 'Str', default => 'reordered_spreadsheet.csv' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
24 has 'tree_format' => ( is => 'rw', isa => 'Str', default => 'newick' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
25 has 'search_strategy' => ( is => 'rw', isa => 'Str', default => 'depth' );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
26 has 'sortby' => ( is => 'rw', isa => 'Str', default => 'height');
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
27 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
28
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
29
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
30 sub BUILD {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
31 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
32
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
33 my ( $output_filename, $tree_file,$search_strategy, $sortby, $tree_format, $spreadsheet_filename,$verbose, $help );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
34
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
35 GetOptionsFromArray(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
36 $self->args,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
37 'o|output_filename=s' => \$output_filename,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
38 't|tree_file=s' => \$tree_file,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
39 'f|tree_format=s' => \$tree_format,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
40 's|spreadsheet_filename=s' => \$spreadsheet_filename,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
41 'a|search_strategy=s' => \$search_strategy,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
42 'b|sortby=s' => \$sortby,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
43 'v|verbose' => \$verbose,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
44 'h|help' => \$help,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
45 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
46
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
47 if ( defined($verbose) ) {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
48 $self->verbose($verbose);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
49 $self->logger->level(10000);
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
50 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
51 $self->help($help) if(defined($help));
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
52 $self->output_filename($output_filename) if ( defined($output_filename) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
53 $self->tree_file($tree_file) if ( defined($tree_file) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
54 $self->tree_format($tree_format) if ( defined($tree_format) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
55 $self->spreadsheet_filename($spreadsheet_filename) if ( defined($spreadsheet_filename) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
56 $self->sortby($sortby) if ( defined($sortby) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
57 $self->search_strategy($search_strategy) if ( defined($search_strategy) );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
58 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
59
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
60 sub run {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
61 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
62 ( defined($self->spreadsheet_filename) && defined($self->tree_file) && ( -e $self->spreadsheet_filename ) && ( -e $self->tree_file ) && ( !$self->help ) ) or die $self->usage_text;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
63
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
64 ($self->sortby eq "height" || $self->sortby eq "creation" || $self->sortby eq "alpha" || $self->sortby eq "revalpha") or die $self->usage_text;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
65 ($self->search_strategy eq "breadth" || $self->search_strategy eq "depth") or die $self->usage_text;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
66
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
67 my $obj = Bio::Roary::ReorderSpreadsheet->new(
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
68 tree_file => $self->tree_file,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
69 spreadsheet => $self->spreadsheet_filename,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
70 output_filename => $self->output_filename,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
71 sortby => $self->sortby,
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
72 search_strategy => $self->search_strategy
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
73 );
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
74 $obj->reorder_spreadsheet();
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
75
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
76 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
77
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
78 sub usage_text {
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
79 my ($self) = @_;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
80
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
81 return <<USAGE;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
82 Usage: pan_genome_reorder_spreadsheet [options] -t tree.newick
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
83 Reorder the columns in the gene presence and absence spreadsheet against a phylogenetic tree.
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
84
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
85 Options: -t STR tree filename []
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
86 -o STR output filename [reordered_spreadsheet.csv]
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
87 -f STR tree format (newick/nexus/nhx/svggraph/tabtree/lintree) [newick]
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
88 -s STR input gene presence and absence spreadsheet [gene_presence_absence.csv]
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
89 -a STR search strategy (depth/breadth) [depth]
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
90 -b STR sorting method (height/creation/alpha/revalpha) [height]
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
91 -v verbose output to STDOUT
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
92 -h this help message
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
93
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
94 For further info see: http://sanger-pathogens.github.io/Roary/
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
95 USAGE
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
96 }
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
97
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
98 __PACKAGE__->meta->make_immutable;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
99 no Moose;
c47a5f61bc9f Uploaded
dereeper
parents:
diff changeset
100 1;