Mercurial > repos > xuebing > sharplabtool
diff tools/rgenetics/rgClustalw.py @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/rgenetics/rgClustalw.py Fri Mar 09 19:37:19 2012 -0500 @@ -0,0 +1,60 @@ +""" +rgclustalw.py +wrapper for clustalw necessitated by bad choice of output path for .dnd file based on input file. Naughty. +Copyright ross lazarus march 2011 +All rights reserved +Licensed under the LGPL +""" + +import sys,optparse,os,subprocess,tempfile,shutil + +class Clustrunner: + """ + """ + def __init__(self,opts=None): + self.opts = opts + self.iname = 'infile_copy' + shutil.copy(self.opts.input,self.iname) + + def run(self): + tlf = open(self.opts.outlog,'w') + cl = ['clustalw2 -INFILE=%s -OUTFILE=%s -OUTORDER=%s -TYPE=%s -OUTPUT=%s' % (self.iname,self.opts.output,self.opts.out_order,self.opts.dnarna,self.opts.outform)] + if self.opts.seq_range_end <> None and self.opts.seq_range_start <> None: + cl.append('-RANGE=%s,%s' % (self.opts.seq_range_start,self.opts.seq_range_end)) + if self.opts.outform=='CLUSTAL' and self.opts.outseqnos <> None: + cl.append('-SEQNOS=ON') + process = subprocess.Popen(' '.join(cl), shell=True, stderr=tlf, stdout=tlf) + rval = process.wait() + dndf = '%s.dnd' % self.iname + if os.path.exists(dndf): + tlf.write('\nClustal created the following dnd file for your information:\n') + dnds = open('%s.dnd' % self.iname,'r').readlines() + for row in dnds: + tlf.write(row) + tlf.write('\n') + tlf.close() + os.unlink(self.iname) + + + +if __name__ == "__main__": + op = optparse.OptionParser() + op.add_option('-i', '--input', default=None) + op.add_option('-o', '--output', default=None) + op.add_option('-t', '--outname', default="rgClustal") + op.add_option('-s', '--out_order', default='ALIGNMENT') + op.add_option('-f', '--outform', default='CLUSTAL') + op.add_option('-e', '--seq_range_end',default=None) + op.add_option('-b', '--seq_range_start',default=None) + op.add_option('-l','--outlog',default='rgClustalw.log') + op.add_option('-q', '--outseqnos',default=None) + op.add_option('-d', '--dnarna',default='DNA') + + opts, args = op.parse_args() + assert opts.input <> None + assert os.path.isfile(opts.input) + c = Clustrunner(opts) + c.run() + + +