# HG changeset patch
# User iuc
# Date 1510929499 18000
# Node ID 13045f6015cb89ef60f90f454e8a88d0fba036cd
# Parent ced02f5334a0ca43e8073b65306adc1218351f40
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/weblogo3 commit d0f167e74e705788adcd9c846db011aee490074b
diff -r ced02f5334a0 -r 13045f6015cb rgWebLogo3.py
--- a/rgWebLogo3.py Fri Dec 18 19:20:26 2015 -0500
+++ b/rgWebLogo3.py Fri Nov 17 09:38:19 2017 -0500
@@ -1,12 +1,17 @@
-"""
# modified june 2 ross lazarus to add units option at Assaf Gordon's suggestion
# rgWebLogo3.py
# wrapper to check that all fasta files are same length
-"""
-import optparse, os, sys, subprocess, tempfile
+from __future__ import print_function
-WEBLOGO = 'weblogo' # executable name for weblogo3 - confusing isn't it?
+import optparse
+import os
+import subprocess
+import sys
+import tempfile
+
+WEBLOGO = 'weblogo' # executable name for weblogo3 - confusing isn't it?
+
class WL3:
"""
@@ -15,13 +20,13 @@
FASTASTARTSYM = '>'
badseq = '## error - sequences in file %s are not all the same length - cannot proceed. Please read the tool documentation carefully'
- def __init__(self,opts=None):
- assert opts<>None,'WL3 class needs opts passed in - got None'
+ def __init__(self, opts=None):
+ assert opts is not None, 'WL3 class needs opts passed in - got None'
self.opts = opts
- self.fastaf = file(self.opts.input,'r')
+ self.fastaf = open(self.opts.input, 'r')
self.clparams = {}
- def whereis(self,program):
+ def whereis(self, program):
for path in os.environ.get('PATH', '').split(':'):
if os.path.exists(os.path.join(path, program)) and not os.path.isdir(os.path.join(path, program)):
return os.path.join(path, program)
@@ -32,64 +37,62 @@
"""
wl = self.whereis(WEBLOGO)
if not wl:
- print >> sys.stderr, '## rgWebLogo3.py error - cannot locate the weblogo binary %s on the current path' % WEBLOGO
- print >> sys.stderr, '## Please ensure it is installed and working from http://code.google.com/p/weblogo'
+ print('## rgWebLogo3.py error - cannot locate the weblogo binary %s on the current path' % (WEBLOGO), file=sys.stderr)
+ print('## Please ensure it is installed and working from https://github.com/weblogo/weblogo', file=sys.stderr)
sys.exit(1)
- cll = [WEBLOGO,]
+ cll = [WEBLOGO, ]
cll += [' '.join(it) for it in list(self.clparams.items())]
cl = ' '.join(cll)
assert cl > '', 'runCL needs a command line as clparms'
- fd,templog = tempfile.mkstemp(suffix='rgtempRun.txt')
- tlf = open(templog,'w')
+ fd, templog = tempfile.mkstemp(suffix='rgtempRun.txt')
+ tlf = open(templog, 'w')
process = subprocess.Popen(cl, shell=True, stderr=tlf, stdout=tlf)
rval = process.wait()
tlf.close()
- tlogs = ''.join(open(templog,'r').readlines())
+ tlogs = ''.join(open(templog, 'r').readlines())
if len(tlogs) > 1:
- s = '## executing %s returned status %d and log (stdout/stderr) records: \n%s\n' % (cl,rval,tlogs)
+ s = '## executing %s returned status %d and log (stdout/stderr) records: \n%s\n' % (cl, rval, tlogs)
else:
- s = '## executing %s returned status %d. Nothing appeared on stderr/stdout\n' % (cl,rval)
- os.unlink(templog) # always
- if rval <> 0:
- print >> sys.stderr, '## rgWebLogo3.py error - executing %s returned error code %d' % (cl,rval)
- print >> sys.stderr, '## This may be a data problem or a tool dependency (%s) installation problem' % WEBLOGO
- print >> sys.stderr, '## Please ensure %s is correctly installed and working on the command line -see http://code.google.com/p/weblogo' % WEBLOGO
+ s = '## executing %s returned status %d. Nothing appeared on stderr/stdout\n' % (cl, rval)
+ os.unlink(templog) # always
+ if rval != 0:
+ print('## rgWebLogo3.py error - executing %s returned error code %d' % (cl, rval), file=sys.stderr)
+ print('## This may be a data problem or a tool dependency (%s) installation problem' % WEBLOGO, file=sys.stderr)
+ print('## Please ensure %s is correctly installed and working on the command line -see https://github.com/weblogo/weblogo' % WEBLOGO, file=sys.stderr)
sys.exit(1)
return s
-
def iter_fasta(self):
"""
generator for fasta sequences from a file
"""
aseq = []
seqname = None
- for i,row in enumerate(self.fastaf):
+ for i, row in enumerate(self.fastaf):
if row.startswith(self.FASTASTARTSYM):
- if seqname <> None: # already in a sequence
+ if seqname is not None: # already in a sequence
s = ''.join(aseq)
- l = len(s)
- yield (seqname,l)
+ ls = len(s)
+ yield (seqname, ls)
seqname = row[1:].strip()
aseq = []
else:
if i > 0:
- print >> sys.stderr,'Invalid fasta file %s - does not start with %s - please read the tool documentation carefully' % (self.opts.input,self.FASTASTARTSYM)
+ print('Invalid fasta file %s - does not start with %s - please read the tool documentation carefully' % (self.opts.input, self.FASTASTARTSYM), file=sys.stderr)
sys.exit(1)
else:
- seqname = row[1:].strip()
- else: # sequence row
- if seqname == None:
- print >> sys.stderr,'Invalid fasta file %s - does not start with %s - please read the tool documentation carefully' % (self.opts.input,self.FASTASTARTSYM)
- sys.exit(1)
+ seqname = row[1:].strip()
+ else: # sequence row
+ if seqname is None:
+ print('Invalid fasta file %s - does not start with %s - please read the tool documentation carefully' % (self.opts.input, self.FASTASTARTSYM), file=sys.stderr)
+ sys.exit(1)
else:
aseq.append(row.strip())
-
- if seqname <> None: # last one
- l = len(''.join(aseq))
- yield (seqname,l)
-
-
+
+ if seqname is not None: # last one
+ las = len(''.join(aseq))
+ yield (seqname, las)
+
def fcheck(self):
""" are all fasta sequence same length?
might be mongo big
@@ -97,61 +100,50 @@
flen = None
lasti = None
f = self.iter_fasta()
- for i,(seqname,seqlen) in enumerate(f):
+ for i, (seqname, seqlen) in enumerate(f):
lasti = i
if i == 0:
flen = seqlen
else:
- if seqlen <> flen:
- print >> sys.stderr,self.badseq % self.opts.input
+ if seqlen != flen:
+ print(self.badseq % self.opts.input, file=sys.stderr)
sys.exit(1)
- return '# weblogo input %s has %d sequences all of length %d' % (self.opts.input, lasti+1, flen)
-
+ return '# weblogo input %s has %d sequences all of length %d' % (self.opts.input, lasti + 1, flen)
def run(self):
check = self.fcheck()
self.clparams['-f'] = self.opts.input
self.clparams['-o'] = self.opts.output
- self.clparams['-t'] = '"%s"' % self.opts.logoname # must be wrapped as a string
- self.clparams['-F'] = self.opts.outformat
- if self.opts.size <> None:
+ self.clparams['-t'] = '"%s"' % self.opts.logoname # must be wrapped as a string
+ self.clparams['-F'] = self.opts.outformat
+ if self.opts.size is not None:
self.clparams['-s'] = self.opts.size
- if self.opts.lower <> None:
+ if self.opts.lower is not None:
self.clparams['-l'] = self.opts.lower
- if self.opts.upper <> None:
- self.clparams['-u'] = self.opts.upper
- if self.opts.colours <> None:
+ if self.opts.upper is not None:
+ self.clparams['-u'] = self.opts.upper
+ if self.opts.colours is not None:
self.clparams['-c'] = self.opts.colours
- if self.opts.units <> None:
+ if self.opts.units is not None:
self.clparams['-U'] = self.opts.units
s = self.runCL()
- return check,s
+ return check, s
if __name__ == '__main__':
- '''
- called as
-
- rgWebLogo3.py --outformat $outformat -s $size -i $input -o $output -t "$logoname" -c "$colours"
-#if $range.mode == 'part'
--l "$range.seqstart" -u "$range.seqend"
-#end if
-
-
- '''
op = optparse.OptionParser()
op.add_option('-i', '--input', default=None)
op.add_option('-F', '--outformat', default='png')
- op.add_option('-s', '--size', default=None)
+ op.add_option('-s', '--size', default=None)
op.add_option('-o', '--output', default='rgWebLogo3')
op.add_option('-t', '--logoname', default='rgWebLogo3')
op.add_option('-c', '--colours', default=None)
op.add_option('-l', '--lower', default=None)
- op.add_option('-u', '--upper', default=None)
- op.add_option('-U', '--units', default=None)
+ op.add_option('-u', '--upper', default=None)
+ op.add_option('-U', '--units', default=None)
opts, args = op.parse_args()
- assert opts.input <> None,'weblogo3 needs a -i parameter with a fasta input file - cannot open'
- assert os.path.isfile(opts.input),'weblogo3 needs a valid fasta input file - cannot open %s' % opts.input
+ assert opts.input is not None, 'weblogo3 needs a -i parameter with a fasta input file - cannot open'
+ assert os.path.isfile(opts.input), 'weblogo3 needs a valid fasta input file - cannot open %s' % opts.input
w = WL3(opts)
- checks,s = w.run()
- print >> sys.stdout, checks # for info
+ checks, s = w.run()
+ print(checks, file=sys.stdout) # for info
diff -r ced02f5334a0 -r 13045f6015cb rgWebLogo3.xml
--- a/rgWebLogo3.xml Fri Dec 18 19:20:26 2015 -0500
+++ b/rgWebLogo3.xml Fri Nov 17 09:38:19 2017 -0500
@@ -1,106 +1,104 @@
-
- generator for fasta (eg Clustal alignments)
-
- numpy
- weblogo
- ghostscript
-
-
- rgWebLogo3.py -F $outformat -s $size -i $input -o $output -t "$logoname" -c "$colours" -U "$units"
-#if $range.mode == 'part'
--l "$range.seqstart" -u "$range.seqend"
-#end if
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ generator for fasta (eg Clustal alignments)
+
+ weblogo
+
+
-
-
-
+ #if $range.mode == 'part'
+ -l '$range.seqstart' -u '$range.seqend'
+ #end if
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ ]]>
+
+ 10.1101/gr.849004
+
-
-
diff -r ced02f5334a0 -r 13045f6015cb tool_dependencies.xml
--- a/tool_dependencies.xml Fri Dec 18 19:20:26 2015 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-