annotate cpt_psm_plotter/lib/CPT/OutputFiles.pm @ 0:54c7a3ea81e2 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:40:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
1 package CPT::OutputFiles;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
2 use Carp;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
3 use Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
4 use strict;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
5 use warnings;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
6 use autodie;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
7 use File::Spec;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
8
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
9
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
10 # ABSTRACT: Handles script outputs in a sane way, providing facilities to format data and name files for regular use, or in galaxy.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
11
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
12
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
13 # A list of acceptable ouput formats. Some/many of these may be missing implementations.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
14 # For instance, the pandoc output format is completely unimplemented
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
15 # These will NEED to be re-worked.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
16 has 'acceptable_formats' => (
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
17 is => 'ro',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
18 isa => 'HashRef',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
19 default => sub {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
20 {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
21 'text/tabular' => [qw(TSV TSV_U CSV CSV_U XLS ODS Dumper JSON YAML XLSX)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
22 'genomic/annotated' => [qw(ABI Ace AGAVE ALF AsciiTree BSML BSML_SAX ChadoXML Chaos ChaosXML CTF EMBL EntrezGene Excel Exp Fasta Fastq GAME GCG Genbank Interpro KEGG LargeFasta LaserGene LocusLink PHD PIR PLN Qual Raw SCF SeqXML Strider Swiss Tab TIGR TIGRXML TinySeq ZTR)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
23 'genomic/raw' => [qw(Fasta)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
24 'genomic/interval' => [qw(GFF3)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
25 'text/html' => [qw(HTML)], # Theoretically this will be consumed by text/report
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
26 'text/report' => [qw(Pandoc)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
27 'text/plain' => [qw(TXT CONF)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
28 'image/svg' => [qw(SVG)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
29 'image/png' => [qw(PNG)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
30 'archive' => [qw(tar.gz zip tar)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
31 'Dummy' => [qw(Dummy)],
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
32 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
33 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
34 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
35
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
36 has 'format_mapping' => (
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
37 is => 'ro',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
38 isa => 'HashRef',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
39 default => sub {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
40 {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
41 'TSV' => 'tabular',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
42 'CSV' => 'tabular',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
43 'TSV_U' => 'tabular',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
44 'CSV_U' => 'tabular',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
45 'XLS' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
46 'ODS' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
47 'Dumper' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
48 'JSON' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
49 'YAML' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
50 'XLSX' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
51 'Fasta' => 'fasta',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
52 'GFF3' => 'interval',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
53 'HTML' => 'html',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
54 'Pandoc' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
55 'TXT' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
56 'CONF' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
57 'SVG' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
58 'PNG' => 'png',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
59 'Dummy' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
60 'tar.gz' => 'tar.gz',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
61 'zip' => 'zip',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
62 'tar' => 'tar',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
63 #Genomic formats
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
64 'ABI' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
65 'Ace' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
66 'AGAVE' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
67 'ALF' => '',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
68 'AsciiTree' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
69 'BSML' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
70 'BSML_SAX' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
71 'ChadoXML' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
72 'Chaos' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
73 'ChaosXML' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
74 'CTF' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
75 'EMBL' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
76 'EntrezGene' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
77 'Excel' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
78 'Exp' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
79 'Fastq' => 'fastq',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
80 'GAME' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
81 'GCG' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
82 'Genbank' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
83 'Interpro' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
84 'KEGG' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
85 'LargeFasta' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
86 'LaserGene' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
87 'LocusLink' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
88 'PHD' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
89 'PIR' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
90 'PLN' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
91 'Qual' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
92 'Raw' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
93 'SCF' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
94 'SeqXML' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
95 'Strider' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
96 'Swiss' => 'txt',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
97 'Tab' => 'tabular',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
98 'TIGR' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
99 'TIGRXML' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
100 'TinySeq' => 'xml',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
101 'ZTR' => 'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
102 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
103 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
104 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
105
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
106 sub valid_formats {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
107 my ($self, $format) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
108 return ${$self->acceptable_formats()}{$format};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
109 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
110
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
111 sub get_format_mapping{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
112 my ($self, $format) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
113 return ${$self->format_mapping()}{$format};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
114 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
115
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
116
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
117 # User supplied options
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
118 has 'name' => ( is => 'ro', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
119 has 'GGO' => ( is => 'ro', isa => 'Any' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
120 has 'galaxy' => (is => 'rw', isa => 'Bool');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
121
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
122 # These are extracted on init from from CPT
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
123 has 'output_id' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
124 has 'output_label' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
125 has 'output_opts' => (is => 'rw', isa => 'HashRef');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
126 # From galaxy
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
127 has 'new_file_path' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
128 has 'files_path' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
129 has 'files_id' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
130 # ???
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
131 has 'parent_filename' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
132 has 'parent_internal_format' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
133 has 'parent_default_output_format' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
134
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
135 has 'init_called' => (is => 'rw', isa =>'Bool');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
136
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
137 sub initFromArgs {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
138 my ($self, %args) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
139
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
140 # We will only ever care about one (as there is one of these objects
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
141 # per registered output)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
142 my %registered_outputs = %{$self->GGO()->registered_outputs()};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
143 # If the output name specified in "name" was not known to registered_outputs
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
144 if(!defined($self->name())){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
145 croak("You must supply a name to the instantiation of CRR");
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
146 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
147 #if(!defined($registered_outputs{$args{name}})){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
148 #croak("The script author tried to call GGO's classyReturnResults method with an output file not mentioned in the outputs section.");
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
149 #}
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
150
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
151 # Carrying on
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
152 # We grab the pre-specified data regarding that output
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
153 my %reg_out_params = %{$registered_outputs{$self->name()}};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
154 # Store these for future calls of sub/var
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
155 $self->output_id($self->name());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
156 $self->output_label($reg_out_params{description});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
157 $self->output_opts($reg_out_params{options});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
158
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
159
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
160 $self->parent_internal_format($reg_out_params{options}{data_format});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
161 $self->parent_default_output_format($reg_out_params{options}{default_format});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
162 $self->parent_filename($reg_out_params{options}{default});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
163
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
164 # Special variables
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
165 # --genemark "${genemark}" --genemark_format "${genemark_format}"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
166 # --genemark_files_path "${genemark_files_path}"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
167 # --genemark_id "${genemark_id}"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
168
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
169 # If they've specified a filename on the command line, that should
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
170 # override the default value
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
171 if(defined $self->GGO->opt->{$self->name()}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
172 $self->parent_filename($self->GGO->opt->{$self->name()});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
173 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
174 # If they've specified a {str}_format option on the command line, that
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
175 # should override the default value
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
176 if(defined $self->GGO->opt->{$self->name() . '_format'}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
177 $self->parent_default_output_format($self->GGO->opt->{$self->name() . '_format'});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
178 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
179
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
180 # Grab supporting files path (added as new history items)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
181 $self->new_file_path($self->GGO->opt->{outfile_supporting});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
182 # Copy galaxy specific variables
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
183 if(defined $self->GGO->opt->{$self->name() . '_files_path'}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
184 $self->files_path($self->GGO->opt->{$self->name() . '_files_path'});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
185 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
186 if(defined $self->GGO->opt->{$self->name() . '_id'}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
187 $self->files_id($self->GGO->opt->{$self->name() . '_id'});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
188 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
189
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
190 # If --galaxy has been specified, we need to be aware of this
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
191 if ( $self->GGO->opt->{galaxy} ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
192 $self->galaxy(1);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
193 }else{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
194 $self->galaxy(0);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
195 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
196 $self->init_called(1);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
197 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
198
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
199
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
200
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
201 has 'times_called' => ( is => 'rw', isa => 'Num', default => sub {0} );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
202 has 'naming_strategy' => ( is => 'rw', isa => 'Str', default => "norm" ); #Other options are "var" and "sub"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
203
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
204
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
205 sub _genCRR {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
206 my ($self, %args) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
207 if(!$self->init_called()){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
208 $self->initFromArgs(%args);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
209 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
210
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
211 # If the user supplied a custom extension, pull that (useful in
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
212 # dummy/data output type)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
213 if(defined $args{extension}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
214 $self->extension($args{extension});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
215 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
216
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
217 # This is a mandatory parameter
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
218 if(!defined $args{filename}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
219 $self->given_filename($self->parent_filename());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
220 }else{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
221 $self->given_filename($args{filename});
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
222 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
223
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
224 # Allow overriding default format parameters
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
225 my $writer = $self->writer_for_format(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
226 defined $args{data_format} ? $args{data_format} : $self->parent_internal_format(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
227 defined $args{format_as} ? $args{format_as} : $self->parent_default_output_format(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
228 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
229
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
230 # Ugh
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
231 $writer->OutputFilesClass($self);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
232 if($args{'data'}){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
233 $writer->data( $args{'data'} );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
234 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
235 $writer->process_data();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
236 $writer->write();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
237 my @returned_filenames = @{$writer->used_filenames()};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
238 print STDERR join("\n",map{"FN: $_"} @returned_filenames)."\n";
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
239 $self->bump_times_called();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
240 return @returned_filenames;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
241 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
242
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
243
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
244 sub CRR {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
245 my ( $self, %args ) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
246 return $self->_genCRR(%args);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
247 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
248
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
249
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
250 sub subCRR {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
251 my ( $self, %args ) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
252 # Change naming behaviour
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
253 $self->naming_strategy('sub');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
254 return $self->_genCRR(%args);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
255 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
256
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
257
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
258 sub varCRR {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
259 my ( $self, %args ) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
260 # Change naming behaviour
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
261 $self->naming_strategy('var');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
262 return $self->_genCRR(%args);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
263 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
264
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
265
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
266 sub bump_times_called{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
267 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
268 $self->times_called($self->times_called() + 1 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
269 return $self->times_called();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
270 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
271
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
272
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
273 sub writer_for_format{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
274 my($self, $format, $requested) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
275
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
276 # For the specified data_format, grab the acceptable handlers for that format
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
277 my %acceptable = %{$self->acceptable_formats()};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
278 my %acceptable_handlers = map { $_ => 1 } @{ $acceptable{ $format } };
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
279
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
280 if (!$acceptable_handlers{$requested} ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
281 carp(sprintf( "Unacceptable output format choice [%s] for internal"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
282 ."data type for type %s. Acceptable formats are [%s]."
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
283 ."Alternatively, unacceptable output file.", $requested, $format,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
284 join( ', ', keys(%acceptable_handlers) ) ));
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
285 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
286
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
287 if ( $requested eq 'Dumper' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
288 require CPT::Writer::Dumper;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
289 return CPT::Writer::Dumper->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
290 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
291 elsif ( $requested eq 'TSV' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
292 require CPT::Writer::TSV;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
293 return CPT::Writer::TSV->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
294 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
295 elsif ( $requested eq 'CSV' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
296 require CPT::Writer::CSV;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
297 return CPT::Writer::CSV->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
298 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
299 elsif ( $requested eq 'TSV_U' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
300 require CPT::Writer::TSV_U;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
301 return CPT::Writer::TSV_U->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
302 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
303 elsif ( $requested eq 'CSV_U' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
304 require CPT::Writer::CSV_U;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
305 return CPT::Writer::CSV_U->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
306 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
307 elsif ( $requested eq 'YAML' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
308 require CPT::Writer::YAML;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
309 return CPT::Writer::YAML->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
310 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
311 elsif ( $requested eq 'JSON' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
312 require CPT::Writer::JSON;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
313 return CPT::Writer::JSON->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
314 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
315 elsif ( $requested eq 'Pandoc' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
316 require CPT::Writer::Pandoc;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
317 return CPT::Writer::Pandoc->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
318 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
319 elsif ( $requested eq 'XLS' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
320 require CPT::Writer::Spreadsheet::XLS;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
321 return CPT::Writer::Spreadsheet::XLS->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
322 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
323 elsif ( $requested eq 'XLSX' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
324 require CPT::Writer::Spreadsheet::XLSX;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
325 return CPT::Writer::Spreadsheet::XLSX->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
326 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
327 elsif ( $requested eq 'TXT' || $requested eq 'CONF' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
328 require CPT::Writer::TXT;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
329 return CPT::Writer::TXT->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
330 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
331 elsif ( $acceptable_handlers{$requested} && $format eq 'genomic/annotated'){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
332 require CPT::Writer::Genomic;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
333 return CPT::Writer::Genomic->new(format => $requested);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
334 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
335 elsif ( $requested eq 'Fasta' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
336 require CPT::Writer::Fasta;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
337 return CPT::Writer::Fasta->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
338 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
339 elsif ( $requested eq 'GFF3' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
340 require CPT::Writer::GFF3;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
341 return CPT::Writer::GFF3->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
342 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
343 elsif ( $requested eq 'HTML' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
344 require CPT::Writer::HTML;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
345 return CPT::Writer::HTML->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
346 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
347 elsif ( $requested eq 'SVG' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
348 require CPT::Writer::SVG;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
349 return CPT::Writer::SVG->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
350 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
351 elsif ( $requested eq 'PNG' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
352 require CPT::Writer::Dummy;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
353 return CPT::Writer::Dummy->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
354 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
355 elsif ( $requested eq 'Dummy' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
356 require CPT::Writer::Dummy;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
357 return CPT::Writer::Dummy->new();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
358 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
359 elsif ( $requested eq 'tar.gz') {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
360 require CPT::Writer::Archive;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
361 return CPT::Writer::Archive->new( format => 'tar.gz' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
362 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
363 elsif ( $requested eq 'zip') {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
364 require CPT::Writer::Archive;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
365 return CPT::Writer::Archive->new( format => 'zip' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
366 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
367 elsif ( $requested eq 'tar') {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
368 require CPT::Writer::Archive;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
369 return CPT::Writer::Archive->new( format => 'tar' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
370 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
371 else {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
372 carp(sprintf("Data Format not yet supported [%s, %s]", $format, $requested));
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
373 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
374 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
375
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
376 # File extension
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
377 has 'extension' => ( is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
378 # What the user said this file was called.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
379 has 'given_filename' => (is => 'rw', isa => 'Str');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
380
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
381
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
382
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
383
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
384 sub generate_galaxy_variable{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
385 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
386 unless( -d $self->new_file_path()){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
387 mkdir($self->new_file_path());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
388 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
389 my $filename =File::Spec->catfile(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
390 $self->new_file_path(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
391 sprintf( "primary_%s_%s_visible_%s", $self->files_id(), $self->given_filename(), $self->extension())
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
392 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
393 return $filename;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
394 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
395
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
396
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
397 sub generate_nongalaxy_variable{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
398 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
399 my $filename =File::Spec->catfile(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
400 sprintf( "%s.%s", $self->given_filename(), $self->extension())
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
401 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
402 return $filename;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
403 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
404
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
405
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
406 sub generate_galaxy_subfile {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
407 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
408 unless( -d $self->files_path()){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
409 mkdir($self->files_path());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
410 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
411 my $filename =File::Spec->catfile(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
412 $self->files_path,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
413 sprintf( "%s.%s", $self->given_filename(), $self->extension())
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
414 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
415 return $filename;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
416 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
417
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
418
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
419 sub generate_nongalaxy_subfile {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
420 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
421 # they're pretty much equivalent for now
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
422 return $self->generate_galaxy_subfile();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
423 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
424
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
425
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
426 sub get_next_file{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
427 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
428 my $filename;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
429 if ( $self->galaxy() ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
430 # In which case we want to return the primary output file.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
431 if ( $self->times_called() == 0 ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
432 $filename = $self->parent_filename();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
433 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
434 else {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
435 if ( $self->naming_strategy eq 'sub' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
436 $filename = $self->generate_galaxy_subfile();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
437 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
438 elsif($self->naming_strategy eq 'var') {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
439 $filename = $self->generate_galaxy_variable();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
440 }else{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
441 confess("Unknown startegy for multiple output files: " . $self->naming_strategy());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
442 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
443 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
444 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
445 else # do NOT use galaxy overrides. Paths should be more...sane
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
446 {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
447 # First time we request, should $filename = the primary value, which
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
448 # should be the file they specify.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
449 if ( $self->times_called() == 0 ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
450 $filename = $self->given_filename() . '.' . $self->extension();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
451 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
452 else {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
453 if ( $self->naming_strategy eq 'sub' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
454 $filename = $self->generate_nongalaxy_subfile();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
455 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
456 elsif($self->naming_strategy eq 'var') {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
457 $filename = $self->generate_nongalaxy_variable();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
458 }else{
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
459 confess("Unknown startegy for multiple output files: " . $self->naming_strategy());
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
460 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
461 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
462 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
463 return $filename;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
464 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
465
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
466 no Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
467 1;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
468
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
469 __END__
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
470
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
471 =pod
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
472
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
473 =encoding UTF-8
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
474
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
475 =head1 NAME
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
476
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
477 CPT::OutputFiles - Handles script outputs in a sane way, providing facilities to format data and name files for regular use, or in galaxy.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
478
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
479 =head1 VERSION
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
480
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
481 version 1.99.4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
482
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
483 =head1 METHODS
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
484
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
485 =head2 initFromArgs
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
486
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
487 $o->initFromArgs(name => 'GGO_known_output_name', GGO => $GGO);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
488
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
489 Internal method to intialise data structures from the output id provide in C<name> and the data accessible via the C<GGO> object. You B<must> have already called C<< $GGO->getOptions >>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
490
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
491 =head2 classyReturnResults
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
492
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
493 # in $GGO->getOptions(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
494 outputs => [
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
495 ['html_page', 'HTML output page',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
496 {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
497 validate => 'File/Output',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
498 default => 'aa', # will produce aa.html
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
499 data_format => 'text/html',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
500 default_format => 'HTML'
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
501 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
502 ]
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
503 ['genbank_download', 'Variable number of GBK files',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
504 {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
505 validate => 'File/Output',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
506 default => 'result', # will produce result.gbk
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
507 data_format => 'genomic/annotated',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
508 default_format => 'Genbank'
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
509 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
510 ]
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
511 ]
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
512 # )
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
513
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
514 # Then in your script
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
515 $csv_output = CPT::OutputFiles->new(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
516 name => 'html_page',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
517 opt => $options,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
518 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
519 $csv_output->CRR(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
520 data => $data
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
521 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
522 # Subfile
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
523 my $loc = $csv_output->subCRR(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
524 filename => 'cool_picture',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
525 data_format=>'data',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
526 extension=>"png"
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
527 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
528 move($png_file,$loc);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
529
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
530 # You give subfiles a name in case you need to refer to them at any
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
531 # point in the parent file.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
532 $csv_output->subCRR(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
533 filename => 'output',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
534 data => $svg_object,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
535 data_format => 'image/svg',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
536 format_as => 'SVG'
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
537 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
538
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
539
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
540 $gbk_output = CPT::OutputFiles->new(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
541 name => 'genbank_download',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
542 opt => $options,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
543 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
544 while(my $individual_genbank = $large_seqio->next){
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
545 $gbk_output->varCRR(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
546 filename => $individual_genbank->seqid(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
547 data => $individual_genbank,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
548 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
549 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
550
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
551 =head2 _genCRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
552
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
553 _genCRR(extension => 'png', data => $data_ref, data_format => 'Dummy',
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
554 format_as => 'Dummy', filename => "my-image");
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
555
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
556 This is an internal method and should not be called directly. It's the end call of all C<CRR>, C<subCRR>, and C<varCRR>. Those methods should be used instead.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
557
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
558 This method
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
559
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
560 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
561
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
562 =item Stores some parameters
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
563
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
564 Specifically C<extension>, C<filename>, C<data_format>, C<format_as>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
565
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
566 =item Creates a CPT::Writer
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
567
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
568 =item Calls the writer's C<write> method
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
569
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
570 =item returns an array (not arrayref) of filenames
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
571
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
572 These were the filenames that were produced in the writing process. This may be useful for data like CSV data where the output writer may produce N differently named files for each sheet of data.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
573
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
574 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
575
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
576 =head2 CRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
577
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
578 $o->CRR(data => $ref);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
579
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
580 Writes data to an appropriately named file. (This is usually the "default" parameter supplied in the definition of this output). You should call this method first.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
581
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
582 =head2 subCRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
583
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
584 $o->subCRR(data => $ref, filename => 'subreport', extension => 'html', data_format => 'text/html', format_as => 'HTML');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
585
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
586 Writes data to an appropriately named sub file. A subfile is a file that will appear in a folder in the current directory. Subfiles are useful when you want to reference other output files in a primary HTML output or similar. C<subCRR> gives you a method to produce files and have them automatically placed in a sensible location, from which you can reference the files.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
587
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
588 Files are placed in C<< $self->files_path >>. We C<mkdir> this for you, ignoring any errors. If you're paranoid you might want to re-run the mkdir/test for permissions/etc.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
589
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
590 You must provide
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
591
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
592 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
593
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
594 =item filename
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
595
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
596 name for the output file. You must generate this or it will be named identically to the parent. (And if you call it twice they will clobber each other silently and without mercy)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
597
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
598 =item extension
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
599
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
600 E.g., 'png'
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
601
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
602 =item data_format
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
603
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
604 Internal data type. One of the standard C<text/html>, C<genomic/raw>, C<genomic/annotated>, etc.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
605
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
606 =item format_as
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
607
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
608 You're welcome to provide a way to access the format parameter of subfiles to your users, however this is not done for you as there is no way for this module to know ahead of time how many subfiles you will produce.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
609
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
610 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
611
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
612 You may call this method after the first call to CRR or instead of calls to CRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
613
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
614 =head2 varCRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
615
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
616 $o->varCRR(data => $ref, filename => 'subreport', extension => 'html', data_format => 'text/html', format_as => 'HTML');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
617
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
618 Writes data to an appropriately named var file. A var file or variable file is much like a subfile, except that in galaxy they will show up as individual history items. Additionally, the default behaviour from the command line is to place all generated files in the current working directory, rather than in a special folder.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
619
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
620 You must provide
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
621
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
622 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
623
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
624 =item filename
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
625
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
626 name for the output file. You must generate this or it will be named identically to the parent. (And if you call it twice they will clobber each other silently and without mercy)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
627
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
628 =item extension
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
629
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
630 E.g., 'png'
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
631
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
632 =item data_format
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
633
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
634 Internal data type. One of the standard C<text/html>, C<genomic/raw>, C<genomic/annotated>, etc.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
635
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
636 =item format_as
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
637
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
638 You're welcome to provide a way to access the format parameter of subfiles to your users, however this is not done for you as there is no way for this module to know ahead of time how many subfiles you will produce.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
639
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
640 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
641
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
642 You may call this method after the first call to CRR or instead of calls to CRR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
643
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
644 =head2 bump_times_called
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
645
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
646 $o->bump_times_called();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
647
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
648 Bumps the internal number representing the number of times you've tried to output files for a given output object. This data is used in construction of filenames
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
649
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
650 =head2 writer_for_format
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
651
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
652 $o->writer_for_format('text/tabular', 'TSV_U');
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
653
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
654 Get the appropriate writer class and instantiate it for a given C<data_format> and C<format_as>.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
655
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
656 =head2 generate_galaxy_variable
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
657
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
658 $o->generate_galaxy_variable();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
659
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
660 If we need the files to show up as separate History items in galaxy, filenames have to be constructed like this:
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
661
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
662 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
663
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
664 =item F<$filepath/primary_546_output2_visible_bed>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
665
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
666 =item F<$filepath/primary_546_output3_visible_pdf>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
667
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
668 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
669
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
670 where filenames consist of 'primary', an ID number (provided in C<outputname_id> on the command lien), a filename, 'visible', and an extension, all joined with C<_>. Additionally C<$filepath> is generally CWD (I think...)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
671
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
672 =head2 generate_nongalaxy_variable
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
673
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
674 $o->generate_nongalaxy_variable();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
675
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
676 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
677
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
678 =item F<$given_filename.$extension>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
679
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
680 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
681
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
682 Parameters are taken from the object variables of the same names.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
683
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
684 =head2 generate_galaxy_subfile
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
685
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
686 $o->generate_galaxy_subfile();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
687
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
688 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
689
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
690 =item F<$files_path/$given_filename.$extension>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
691
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
692 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
693
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
694 The paths for images and other files will end up looking something like
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
695 F</home/galaxy/galaxy_dist/database/files/000/dataset_56/img1.jpg> with the galaxy provided C<files_path> prepended to the filename.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
696
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
697 =head2 generate_nongalaxy_subfile
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
698
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
699 $o->generate_nongalaxy_subfile();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
700
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
701 See L</generate_galaxy_subfile>. Know that the default for C<< $self->files_path >> is C<"outputname.files_path">. It's only "special" when run from inside galaxy.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
702
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
703 =head2 get_next_file
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
704
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
705 $o->get_next_file();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
706
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
707 If it's the first time this method has been called, it constructs a default filename. If the C<galaxy> variable is true, then it's just whatever value was passed. Otherwise it's just C<given_filename> and C<extension> put together. C<given_filename> is taken from C<parent_filename>.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
708
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
709 If it's not the first time it was called, this module expects you to be using L</varCRR> or L</subCRR> to call (which has set C<naming_strategy>). Those will generate appropriate filenames with calls to one of
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
710
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
711 =over 4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
712
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
713 =item L</generate_galaxy_subfile>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
714
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
715 =item L</generate_galaxy_variable>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
716
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
717 =item L</generate_nongalaxy_subfile>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
718
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
719 =item L</generate_nongalaxy_variable>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
720
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
721 =back
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
722
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
723 based on appropriate variables.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
724
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
725 =head1 AUTHOR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
726
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
727 Eric Rasche <rasche.eric@yandex.ru>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
728
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
729 =head1 COPYRIGHT AND LICENSE
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
730
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
731 This software is Copyright (c) 2014 by Eric Rasche.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
732
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
733 This is free software, licensed under:
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
734
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
735 The GNU General Public License, Version 3, June 2007
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
736
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
737 =cut