Mercurial > repos > ktnyt > gembassy
comparison glang-galaxy-conf/kbws/acdgalaxy.pl @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:84a17b3fad1f | 2:8947fca5f715 |
---|---|
1 #!/usr/bin/env perl | |
2 use strict; | |
3 use warnings; | |
4 | |
5 my $progname = shift; | |
6 $progname =~ s/\.acd$//g; | |
7 my $progfile = "/usr/local/share/EMBOSS/acd/$progname.acd"; | |
8 open my $acdfh, "<", $progfile; | |
9 open my $xmlfh, ">", "$progname.xml"; | |
10 | |
11 my $tool; | |
12 my $description; | |
13 my $command; | |
14 my @params; | |
15 my @args; | |
16 my $help; | |
17 my $plot = 0+`grep -c 'toggle: plot' $progfile`; | |
18 my $pngout = 0+`grep -c 'string: format' $progfile`; | |
19 | |
20 while(<$acdfh>) { | |
21 chomp; | |
22 if(/\s*application\s*:\s*\w+\s*\[\s*$/../^\s*\]\s*$/) { | |
23 if(/\s*application\s*:\s*(\w+)\s*\[\s*$/) { | |
24 $tool = qq(<tool id="EMBOSS: $1" name="$1" version="1.0.2">); | |
25 } | |
26 | |
27 if(/\s*documentation:\s*"([^"]+)"?\s*/) { | |
28 my $tmp = $1; | |
29 if(/\s*documentation:\s*".+"\s*/) { | |
30 $description = qq( <description>$tmp</description>); | |
31 } else { | |
32 while(<$acdfh>) { | |
33 if(/\s*(.*)"/) { | |
34 $tmp.= " $1"; | |
35 last; | |
36 } elsif(/\s*(.*)\s*/) { | |
37 $tmp .= " $1"; | |
38 } | |
39 } | |
40 $description = qq( <description>$tmp</description>); | |
41 } | |
42 } | |
43 } | |
44 | |
45 if(/\s*section\s*:\s*advanced\s*\[/../\s*endsection:\s*advanced/) { | |
46 if(/\s*section\s*:\s*advanced\s*\[/../\]/ or /\s*endsction:\s*advanced/) { | |
47 next; | |
48 } | |
49 | |
50 if(/\s*\w+\s*:\s*\w+\s*\[/../\s*\]/) { | |
51 if(/\s*(\w+)\s*:\s*(\w+)\s*\[/) { | |
52 my ($type, $name) = ($1, $2); | |
53 my $information; | |
54 my $default; | |
55 my @values; | |
56 | |
57 next if $name eq "accid"; | |
58 next if $name eq "plot"; | |
59 | |
60 push @args, $name; | |
61 | |
62 while(<$acdfh>) { | |
63 chomp; | |
64 if(/\]/) { | |
65 last; | |
66 } | |
67 if(/\s*information:\s*"([^"]+)"?\s*/) { | |
68 my $tmp = $1; | |
69 if(/\s*information:\s*".+"\s*/) { | |
70 $information = $tmp; | |
71 } else { | |
72 while(<$acdfh>) { | |
73 if(/\s*(.*)"/) { | |
74 $tmp.= " $1"; | |
75 last; | |
76 } elsif(/\s*(.*)\s*/) { | |
77 $tmp .= " $1"; | |
78 } | |
79 } | |
80 $information = $tmp; | |
81 } | |
82 } | |
83 | |
84 if(/\s*default:\s*"(.+)"\s*/) { | |
85 $default = $1; | |
86 } | |
87 | |
88 if(/\s*values:\s*"(.+)"\s*/) { | |
89 @values = split ";", $1; | |
90 } | |
91 } | |
92 #print "$type\t$name\t$information"; | |
93 #print "\t$default" if defined $default; | |
94 #print "\n"; | |
95 my $param; | |
96 | |
97 if($default) { | |
98 $default = "yes" if $default eq "Y"; | |
99 $default = "no" if $default eq "N"; | |
100 $default = "[^ACDEFGHIKLMNPQRSTVWYacgtU]" if $name eq "delkey"; | |
101 } else { | |
102 $default = ""; | |
103 } | |
104 | |
105 if($type eq "boolean") { | |
106 $param = <<EOS; | |
107 <param name="$name" type="select" value="$default"> | |
108 <label>$information</label> | |
109 <option value="no">No</option> | |
110 <option value="yes">Yes</option> | |
111 </param> | |
112 EOS | |
113 } | |
114 | |
115 if($type =~ /(integer)|(float)|(string)/) { | |
116 $type =~ s/string/text/g; | |
117 $param = <<EOS; | |
118 <param name="$name" size="4" type="$type" value="$default"> | |
119 <label>$information</label> | |
120 </param> | |
121 EOS | |
122 } | |
123 | |
124 if($type =~ /selection/) { | |
125 my $vals = join "\n", map{ | |
126 " <option value=\"$_\">". ucfirst($_) ."</option>" | |
127 }@values; | |
128 $param = <<EOS | |
129 <param name="$name" type="select" value="$default"> | |
130 <label>$information</label> | |
131 $vals | |
132 </param> | |
133 EOS | |
134 } | |
135 | |
136 print "$type: $name\n"; | |
137 if($param && length $param) { | |
138 chomp($param); | |
139 push @params, $param; | |
140 } | |
141 } | |
142 } | |
143 } | |
144 } | |
145 close $acdfh; | |
146 | |
147 my $args = join(" ", map{"-$_ \$$_"}@args); | |
148 | |
149 my $paramstr = ""; | |
150 foreach my $param (@params) { | |
151 $paramstr .= "$param\n"; | |
152 } | |
153 | |
154 my $outputs; | |
155 | |
156 if($plot) { | |
157 $command = "<command interpreter=\"perl\">gembassy_calcandplot_wrapper.pl $progname -sequence \$input1 $args -auto \$out_file1 \$out_file2</command>"; | |
158 $outputs = <<EOS; | |
159 <data format="csv" name="out_file1" label="\${tool.name} data for \${input1.name}" /> | |
160 <data format="png" name="out_file2" label="\${tool.name} plot for \${input1.name}" /> | |
161 EOS | |
162 } elsif($pngout) { | |
163 $command = "<command interpreter=\"perl\">emboss_single_outputfile_wrapper.pl $progname -sequence \$input1 -format png -goutfile \$out_file1 -auto $args</command>"; | |
164 $outputs = <<EOS; | |
165 <data format="png" name="out_file1" label="\${tool.name} for \${input1.name}" /> | |
166 EOS | |
167 } else { | |
168 $command = "<command>$progname -sequence \$input1 $args -auto -outfile \$out_file1</command>"; | |
169 printf(STDERR "Enter output data format of $progname (1: txt 2: csv): "); | |
170 chomp(my $format = <>); | |
171 $format = $format == 1 ? "txt" : "csv"; | |
172 $outputs = <<EOS; | |
173 <data format="$format" name="out_file1" label="\${tool.name} for \${input1.name}" /> | |
174 EOS | |
175 } | |
176 chomp $outputs; | |
177 | |
178 print $xmlfh <<EOS; | |
179 $tool | |
180 $description | |
181 $command | |
182 <inputs> | |
183 <param format="data" name="input1" type="data"> | |
184 <label>Sequence</label> | |
185 </param> | |
186 $paramstr | |
187 </inputs> | |
188 <outputs> | |
189 $outputs | |
190 </outputs> | |
191 </tool> | |
192 EOS | |
193 | |
194 close $xmlfh; |