Mercurial > repos > ktnyt > gembassy
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glang-galaxy-conf/kbws/acdgalaxy.pl Fri Jun 26 05:21:44 2015 -0400 @@ -0,0 +1,194 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my $progname = shift; +$progname =~ s/\.acd$//g; +my $progfile = "/usr/local/share/EMBOSS/acd/$progname.acd"; +open my $acdfh, "<", $progfile; +open my $xmlfh, ">", "$progname.xml"; + +my $tool; +my $description; +my $command; +my @params; +my @args; +my $help; +my $plot = 0+`grep -c 'toggle: plot' $progfile`; +my $pngout = 0+`grep -c 'string: format' $progfile`; + +while(<$acdfh>) { + chomp; + if(/\s*application\s*:\s*\w+\s*\[\s*$/../^\s*\]\s*$/) { + if(/\s*application\s*:\s*(\w+)\s*\[\s*$/) { + $tool = qq(<tool id="EMBOSS: $1" name="$1" version="1.0.2">); + } + + if(/\s*documentation:\s*"([^"]+)"?\s*/) { + my $tmp = $1; + if(/\s*documentation:\s*".+"\s*/) { + $description = qq( <description>$tmp</description>); + } else { + while(<$acdfh>) { + if(/\s*(.*)"/) { + $tmp.= " $1"; + last; + } elsif(/\s*(.*)\s*/) { + $tmp .= " $1"; + } + } + $description = qq( <description>$tmp</description>); + } + } + } + + if(/\s*section\s*:\s*advanced\s*\[/../\s*endsection:\s*advanced/) { + if(/\s*section\s*:\s*advanced\s*\[/../\]/ or /\s*endsction:\s*advanced/) { + next; + } + + if(/\s*\w+\s*:\s*\w+\s*\[/../\s*\]/) { + if(/\s*(\w+)\s*:\s*(\w+)\s*\[/) { + my ($type, $name) = ($1, $2); + my $information; + my $default; + my @values; + + next if $name eq "accid"; + next if $name eq "plot"; + + push @args, $name; + + while(<$acdfh>) { + chomp; + if(/\]/) { + last; + } + if(/\s*information:\s*"([^"]+)"?\s*/) { + my $tmp = $1; + if(/\s*information:\s*".+"\s*/) { + $information = $tmp; + } else { + while(<$acdfh>) { + if(/\s*(.*)"/) { + $tmp.= " $1"; + last; + } elsif(/\s*(.*)\s*/) { + $tmp .= " $1"; + } + } + $information = $tmp; + } + } + + if(/\s*default:\s*"(.+)"\s*/) { + $default = $1; + } + + if(/\s*values:\s*"(.+)"\s*/) { + @values = split ";", $1; + } + } + #print "$type\t$name\t$information"; + #print "\t$default" if defined $default; + #print "\n"; + my $param; + + if($default) { + $default = "yes" if $default eq "Y"; + $default = "no" if $default eq "N"; + $default = "[^ACDEFGHIKLMNPQRSTVWYacgtU]" if $name eq "delkey"; + } else { + $default = ""; + } + + if($type eq "boolean") { + $param = <<EOS; + <param name="$name" type="select" value="$default"> + <label>$information</label> + <option value="no">No</option> + <option value="yes">Yes</option> + </param> +EOS + } + + if($type =~ /(integer)|(float)|(string)/) { + $type =~ s/string/text/g; + $param = <<EOS; + <param name="$name" size="4" type="$type" value="$default"> + <label>$information</label> + </param> +EOS + } + + if($type =~ /selection/) { + my $vals = join "\n", map{ + " <option value=\"$_\">". ucfirst($_) ."</option>" + }@values; + $param = <<EOS + <param name="$name" type="select" value="$default"> + <label>$information</label> +$vals + </param> +EOS + } + + print "$type: $name\n"; + if($param && length $param) { + chomp($param); + push @params, $param; + } + } + } + } +} +close $acdfh; + +my $args = join(" ", map{"-$_ \$$_"}@args); + +my $paramstr = ""; +foreach my $param (@params) { + $paramstr .= "$param\n"; +} + +my $outputs; + +if($plot) { + $command = "<command interpreter=\"perl\">gembassy_calcandplot_wrapper.pl $progname -sequence \$input1 $args -auto \$out_file1 \$out_file2</command>"; + $outputs = <<EOS; + <data format="csv" name="out_file1" label="\${tool.name} data for \${input1.name}" /> + <data format="png" name="out_file2" label="\${tool.name} plot for \${input1.name}" /> +EOS +} elsif($pngout) { + $command = "<command interpreter=\"perl\">emboss_single_outputfile_wrapper.pl $progname -sequence \$input1 -format png -goutfile \$out_file1 -auto $args</command>"; + $outputs = <<EOS; + <data format="png" name="out_file1" label="\${tool.name} for \${input1.name}" /> +EOS +} else { + $command = "<command>$progname -sequence \$input1 $args -auto -outfile \$out_file1</command>"; + printf(STDERR "Enter output data format of $progname (1: txt 2: csv): "); + chomp(my $format = <>); + $format = $format == 1 ? "txt" : "csv"; + $outputs = <<EOS; + <data format="$format" name="out_file1" label="\${tool.name} for \${input1.name}" /> +EOS +} +chomp $outputs; + +print $xmlfh <<EOS; +$tool +$description + $command + <inputs> + <param format="data" name="input1" type="data"> + <label>Sequence</label> + </param> +$paramstr + </inputs> + <outputs> +$outputs + </outputs> +</tool> +EOS + +close $xmlfh;