comparison mothur/tools/mothur/mothur_wrapper.py @ 27:49058b1f8d3f

Update to mothur version 1.27 and add tool_dependencies.xml to automatically install mothur
author Jim Johnson <jj@umn.edu>
date Tue, 04 Dec 2012 11:05:19 -0600
parents 5c77423823cb
children 7238483c96fa
comparison
equal deleted inserted replaced
26:5c77423823cb 27:49058b1f8d3f
2 2
3 """ 3 """
4 http://www.mothur.org/ 4 http://www.mothur.org/
5 5
6 Supports mothur version 6 Supports mothur version
7 mothur v.1.24.0 7 mothur v.1.27.0
8 8
9 Class encapsulating Mothur galaxy tool. 9 Class encapsulating Mothur galaxy tool.
10 Expect each invocation to include: 10 Expect each invocation to include:
11 Here is an example call to this script with an explanation before each param : 11 Here is an example call to this script with an explanation before each param :
12 mothur_wrapper.py 12 mothur_wrapper.py
193 cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','group','probs','basis','reftaxonomy']}) 193 cmd_dict['classify.otu'] = dict({'required' : ['list','taxonomy'],'optional' : ['name','cutoff','label','group','probs','basis','reftaxonomy']})
194 cmd_dict['classify.seqs'] = dict({'required' : ['fasta','reference','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','save','processors']}) 194 cmd_dict['classify.seqs'] = dict({'required' : ['fasta','reference','taxonomy'],'optional' : ['name','search','ksize','method','match','mismatch','gapopen','gapextend','numwanted','probs','save','processors']})
195 cmd_dict['classify.tree'] = dict({'required' : ['taxonomy','tree'],'optional' : ['name','group','cutoff']}) 195 cmd_dict['classify.tree'] = dict({'required' : ['taxonomy','tree'],'optional' : ['name','group','cutoff']})
196 #clear.memory ## not needed in galaxy framework 196 #clear.memory ## not needed in galaxy framework
197 cmd_dict['clearcut'] = dict({'required' : [['phylip','fasta']],'optional' : ['seed','norandom','shuffle','neighbor','expblen','expdist','ntrees','matrixout','kimura','jukes','protein','DNA']}) 197 cmd_dict['clearcut'] = dict({'required' : [['phylip','fasta']],'optional' : ['seed','norandom','shuffle','neighbor','expblen','expdist','ntrees','matrixout','kimura','jukes','protein','DNA']})
198 cmd_dict['cluster'] = dict({'required' : [['phylip','column']] , 'optional' : ['name','method','cutoff','hard','precision','sim','showabund','timing']}) 198 cmd_dict['cluster'] = dict({'required' : [['phylip','column']] , 'optional' : ['name','count','method','cutoff','hard','precision','sim','showabund','timing']})
199 cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] , 'optional' : ['name','method','cutoff','hard','sim','precision']}) 199 cmd_dict['cluster.classic'] = dict({'required' : ['phylip'] , 'optional' : ['name','count','method','cutoff','hard','sim','precision']})
200 cmd_dict['cluster.fragments'] = dict({'required' : ['fasta'] , 'optional' : ['name','diffs','percent']}) 200 cmd_dict['cluster.fragments'] = dict({'required' : ['fasta'] , 'optional' : ['name','diffs','percent']})
201 cmd_dict['cluster.split'] = dict({'required' : [['fasta','phylip','column']] , 'optional' : ['name','method','splitmethod','taxonomy','taxlevel','showabund','cutoff','hard','large','precision','timing','processors']}) 201 cmd_dict['cluster.split'] = dict({'required' : [['fasta','phylip','column']] , 'optional' : ['name','count','method','splitmethod','taxonomy','taxlevel','showabund','cutoff','hard','large','precision','classic','timing','processors']})
202 cmd_dict['collect.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','freq','groups','all']}) 202 cmd_dict['collect.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','freq','groups','all']})
203 cmd_dict['collect.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','size','label','freq']}) 203 cmd_dict['collect.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','size','label','freq']})
204 cmd_dict['consensus.seqs'] = dict({'required' : ['fasta'], 'optional' : ['list','name','label','cutoff']}) 204 cmd_dict['consensus.seqs'] = dict({'required' : ['fasta'], 'optional' : ['list','name','label','cutoff']})
205 205
206 cmd_dict['cooccurrence'] = dict({'required' : ['shared'], 'optional' : ['iters','metric','matrixmodel','groups','label']}) 206 cmd_dict['cooccurrence'] = dict({'required' : ['shared'], 'optional' : ['iters','metric','matrixmodel','groups','label']})
207 207
208 cmd_dict['corr.axes'] = dict({'required' : [['shared','relabund','metadata'],'axes'], 'optional' : ['label','groups','method','numaxes']}) 208 cmd_dict['corr.axes'] = dict({'required' : [['shared','relabund','metadata'],'axes'], 'optional' : ['label','groups','method','numaxes']})
209 cmd_dict['count.groups'] = dict({'required' : ['group','shared'], 'optional' : ['accnos','groups']}) 209 cmd_dict['count.groups'] = dict({'required' : [['group','shared','count']], 'optional' : ['accnos','groups']})
210 cmd_dict['count.seqs'] = dict({'required' : ['name'], 'optional' : ['group','groups']}) 210 cmd_dict['count.seqs'] = dict({'required' : ['name'], 'optional' : ['group','groups','large']})
211 211
212 cmd_dict['create.database'] = dict({'required' : ['list, repfasta','repname','contaxonomy'], 'optional' : ['group','label']}) 212 cmd_dict['create.database'] = dict({'required' : [['list','shared'],'repfasta','repname','contaxonomy'], 'optional' : ['group','label']})
213 213
214 cmd_dict['degap.seqs'] = dict({'required' : ['fasta']}) 214 cmd_dict['degap.seqs'] = dict({'required' : ['fasta']})
215 cmd_dict['deunique.seqs'] = dict({'required' : ['fasta','name'], 'optional' : []}) 215 cmd_dict['deunique.seqs'] = dict({'required' : ['fasta','name'], 'optional' : []})
216 cmd_dict['deunique.tree'] = dict({'required' : ['tree','name'], 'optional' : []}) 216 cmd_dict['deunique.tree'] = dict({'required' : ['tree','name'], 'optional' : []})
217 cmd_dict['dist.seqs'] = dict({'required' : ['fasta'], 'optional' : ['calc','countends','output','cutoff','oldfasta','column','processors']}) 217 cmd_dict['dist.seqs'] = dict({'required' : ['fasta'], 'optional' : ['calc','countends','output','cutoff','oldfasta','column','processors']})
236 cmd_dict['indicator'] = dict({'required' : [['tree','design'],['shared','relabund']], 'optional' : ['groups','label','processors']}) 236 cmd_dict['indicator'] = dict({'required' : [['tree','design'],['shared','relabund']], 'optional' : ['groups','label','processors']})
237 cmd_dict['libshuff'] = dict({'required' : ['phylip','group'],'optional' : ['groups','iters','form','sim','step','cutoff']}) 237 cmd_dict['libshuff'] = dict({'required' : ['phylip','group'],'optional' : ['groups','iters','form','sim','step','cutoff']})
238 cmd_dict['list.seqs'] = dict({'required' : [['fasta','name','group','list','alignreport','taxonomy']]}) 238 cmd_dict['list.seqs'] = dict({'required' : [['fasta','name','group','list','alignreport','taxonomy']]})
239 239
240 cmd_dict['make.biom'] = dict({'required' : ['shared'] , 'optional' : ['contaxonomy','matrixtype','groups','label']}) 240 cmd_dict['make.biom'] = dict({'required' : ['shared'] , 'optional' : ['contaxonomy','matrixtype','groups','label']})
241 cmd_dict['make.contigs'] = dict({'required' : ['ffastq','rfastq',], 'optional' : ['align','match','mismatch','gapopen','gapextend','threshold','oligos','bdiffs','pdiffs','tdiffs','processors']})
241 242
242 cmd_dict['make.fastq'] = dict({'required' : ['fasta','qfile'] , 'optional' : []}) 243 cmd_dict['make.fastq'] = dict({'required' : ['fasta','qfile'] , 'optional' : []})
243 cmd_dict['make.group'] = dict({'required' : ['fasta','groups'], 'optional' : []}) 244 cmd_dict['make.group'] = dict({'required' : ['fasta','groups'], 'optional' : []})
244 cmd_dict['make.shared'] = dict({'required' : [['list','group','biom']], 'optional' : ['label','groups']}) 245 cmd_dict['make.shared'] = dict({'required' : [['list','group','biom']], 'optional' : ['label','groups']})
245 cmd_dict['mantel'] = dict({'required' : ['phylip','phylip2'] , 'optional' : ['method','iters']}) 246 cmd_dict['mantel'] = dict({'required' : ['phylip','phylip2'] , 'optional' : ['method','iters']})
246 cmd_dict['merge.files'] = dict({'required' : ['input','output']}) 247 cmd_dict['merge.files'] = dict({'required' : ['input','output']})
247 cmd_dict['merge.groups'] = dict({'required' : [['shared','group'],'design'], 'optional' : ['groups', 'label']}) 248 cmd_dict['merge.groups'] = dict({'required' : [['shared','group'],'design'], 'optional' : ['groups', 'label']})
248 cmd_dict['metastats'] = dict({'required' : ['shared','design'], 'optional' : ['groups', 'label','iters','threshold','sets','processors']}) 249 cmd_dict['metastats'] = dict({'required' : ['shared','design'], 'optional' : ['groups', 'label','iters','threshold','sets','processors']})
249 cmd_dict['nmds'] = dict({'required' : ['phylip'], 'optional' : ['axes','mindim','maxdim','iters','maxiters','epsilon']}) 250 cmd_dict['nmds'] = dict({'required' : ['phylip'], 'optional' : ['axes','mindim','maxdim','iters','maxiters','epsilon']})
250 cmd_dict['normalize.shared'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','method','norm','groups','makerelabund']}) 251 cmd_dict['normalize.shared'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','method','norm','groups','makerelabund']})
251 cmd_dict['otu.association'] = dict({'required' : [['shared','relabund']], 'optional' : ['groups', 'label','method']}) 252 cmd_dict['otu.association'] = dict({'required' : [['shared','relabund']], 'optional' : ['groups', 'label','method','metadata']})
252 cmd_dict['otu.hierarchy'] = dict({'required' : ['list','label'], 'optional' : ['output']}) 253 cmd_dict['otu.hierarchy'] = dict({'required' : ['list','label'], 'optional' : ['output']})
253 cmd_dict['pairwise.seqs'] = dict({'required' : ['fasta'], 'optional' : ['align','calc','countends','output','cutoff','match','mismatch','gapopen','gapextend','processors']}) 254 cmd_dict['pairwise.seqs'] = dict({'required' : ['fasta'], 'optional' : ['align','calc','countends','output','cutoff','match','mismatch','gapopen','gapextend','processors']})
254 cmd_dict['parse.list'] = dict({'required' : ['list','group'], 'optional' : ['label']}) 255 cmd_dict['parse.list'] = dict({'required' : ['list','group'], 'optional' : ['label']})
255 cmd_dict['parsimony'] = dict({'required' : ['tree'], 'optional' : ['group','groups','name','iters','random','processors']}) 256 cmd_dict['parsimony'] = dict({'required' : ['tree'], 'optional' : ['group','groups','name','iters','random','processors']})
256 cmd_dict['pca'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','groups','metric']}) 257 cmd_dict['pca'] = dict({'required' : [['shared','relabund']], 'optional' : ['label','groups','metric']})
259 cmd_dict['pcr.seqs'] = dict({'required' : ['fasta'], 'optional' : ['oligos','name','group','taxonomy','ecoli','start','end','nomatch','keepprimer','keepdots','processors']}) 260 cmd_dict['pcr.seqs'] = dict({'required' : ['fasta'], 'optional' : ['oligos','name','group','taxonomy','ecoli','start','end','nomatch','keepprimer','keepdots','processors']})
260 261
261 cmd_dict['phylo.diversity'] = dict({'required' : ['tree'],'optional' : ['group','name','groups','iters','freq','scale','rarefy','collect','summary','processors']}) 262 cmd_dict['phylo.diversity'] = dict({'required' : ['tree'],'optional' : ['group','name','groups','iters','freq','scale','rarefy','collect','summary','processors']})
262 cmd_dict['phylotype'] = dict({'required' : ['taxonomy'],'optional' : ['name','cutoff','label']}) 263 cmd_dict['phylotype'] = dict({'required' : ['taxonomy'],'optional' : ['name','cutoff','label']})
263 cmd_dict['pre.cluster'] = dict({'required' : ['fasta'], 'optional' : ['name','diffs','group','processors']}) 264 cmd_dict['pre.cluster'] = dict({'required' : ['fasta'], 'optional' : ['name','diffs','group','processors']})
264 cmd_dict['rarefaction.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','iters','groups','jumble']}) 265 cmd_dict['rarefaction.shared'] = dict({'required' : ['shared'], 'optional' : ['calc','label','iters','groups','jumble','design','sets','groupmode']})
265 cmd_dict['rarefaction.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','iters','label','freq','processors']}) 266 cmd_dict['rarefaction.single'] = dict({'required' : [['list', 'sabund', 'rabund', 'shared']], 'optional' : ['calc','abund','iters','label','freq','processors']})
266 cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','shared','taxonomy','design']}) 267 cmd_dict['remove.groups'] = dict({'required' : ['group'], 'optional' : ['groups','accnos','fasta','name','list','shared','taxonomy','design']})
267 cmd_dict['remove.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']}) 268 cmd_dict['remove.lineage'] = dict({'required' : ['taxonomy','taxon'],'optional' : ['fasta','name','group','list','alignreport','dups']})
268 cmd_dict['remove.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']}) 269 cmd_dict['remove.otus'] = dict({'required' : ['group','list','label'], 'optional' : ['groups','accnos']})
269 cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']}) 270 cmd_dict['remove.rare'] = dict({'required' : [['list','sabund','rabund','shared'],'nseqs'], 'optional' : ['group','groups','label','bygroup']})
271 cmd_dict['reverse.seqs'] = dict({'required' : ['fasta']}) 272 cmd_dict['reverse.seqs'] = dict({'required' : ['fasta']})
272 cmd_dict['screen.seqs'] = dict({'required' : ['fasta'], 'optional' : ['start','end','maxambig','maxhomop','minlength','maxlength','criteria','optimize','name','group','alignreport','taxonomy','processors']}) 273 cmd_dict['screen.seqs'] = dict({'required' : ['fasta'], 'optional' : ['start','end','maxambig','maxhomop','minlength','maxlength','criteria','optimize','name','group','alignreport','taxonomy','processors']})
273 cmd_dict['sens.spec'] = dict({'required' : ['list',['column','phylip']] , 'optional' : ['label','cutoff','hard','precision']}) 274 cmd_dict['sens.spec'] = dict({'required' : ['list',['column','phylip']] , 'optional' : ['label','cutoff','hard','precision']})
274 cmd_dict['seq.error'] = dict({'required' : ['fasta','reference'] , 'optional' : ['name','qfile','report','ignorechimeras','threshold','processors']}) 275 cmd_dict['seq.error'] = dict({'required' : ['fasta','reference'] , 'optional' : ['name','qfile','report','ignorechimeras','threshold','processors']})
275 cmd_dict['sffinfo'] = dict({'required' : [['sff','sfftxt']], 'optional' : ['fasta','qfile','trim','sfftxt','flow','accnos']}) 276 cmd_dict['sffinfo'] = dict({'required' : [['sff','sfftxt']], 'optional' : ['fasta','qfile','trim','sfftxt','flow','accnos']})
276 cmd_dict['shhh.flows'] = dict({'required' : [['flow','files']], 'optional' : ['lookup','maxiter','mindelta','cutoff','sigma','order','processors']}) 277 cmd_dict['shhh.flows'] = dict({'required' : [['flow','files']], 'optional' : ['lookup','maxiter','mindelta','cutoff','sigma','order','large','processors']})
277 cmd_dict['shhh.seqs'] = dict({'required' : [['fasta','files']], 'optional' : ['group','sigma','processors']}) 278 cmd_dict['shhh.seqs'] = dict({'required' : [['fasta','files']], 'optional' : ['group','sigma','processors']})
278 cmd_dict['split.abund'] = dict({'required' : ['fasta',['name','list']], 'optional' : ['cutoff','group','groups','label','accnos']}) 279 cmd_dict['split.abund'] = dict({'required' : ['fasta',['name','list']], 'optional' : ['cutoff','group','groups','label','accnos']})
279 cmd_dict['split.groups'] = dict({'required' : ['fasta','group'], 'optional' : ['name','groups']}) 280 cmd_dict['split.groups'] = dict({'required' : ['fasta','group'], 'optional' : ['name','groups']})
280 cmd_dict['sort.seqs'] = dict({'required' : [['fasta','qfile','name','group','flow','taxonomy']], 'optional' : ['accnos','large']}) 281 cmd_dict['sort.seqs'] = dict({'required' : [['fasta','qfile','name','group','flow','taxonomy']], 'optional' : ['accnos','large']})
281 cmd_dict['sub.sample'] = dict({'required' : [['fasta','list','sabund','rabund','shared']], 'optional' : ['name','group','groups','label','size','persample']}) 282 cmd_dict['sub.sample'] = dict({'required' : [['fasta','list','sabund','rabund','shared']], 'optional' : ['name','group','groups','label','size','persample']})
329 parser.add_option( '--READ_label', dest='READ_label', help='' ) 330 parser.add_option( '--READ_label', dest='READ_label', help='' )
330 # Parameter specified in mothur 331 # Parameter specified in mothur
331 parser.add_option( '--numbases', dest='numbases', type="int", help='Number of base to allow' ) 332 parser.add_option( '--numbases', dest='numbases', type="int", help='Number of base to allow' )
332 parser.add_option( '--fasta', dest='fasta', help='fasta file paths' ) 333 parser.add_option( '--fasta', dest='fasta', help='fasta file paths' )
333 parser.add_option( '--fastq', dest='fastq', help='fastq file paths' ) 334 parser.add_option( '--fastq', dest='fastq', help='fastq file paths' )
335 parser.add_option( '--ffastq', dest='ffastq', help='forward fastq file' )
336 parser.add_option( '--rfastq', dest='rfastq', help='reverse fastq file' )
334 parser.add_option( '--qfile', dest='qfile', help='Sequence read quality file (454 platform)' ) 337 parser.add_option( '--qfile', dest='qfile', help='Sequence read quality file (454 platform)' )
335 parser.add_option( '--repfasta', dest='repfasta', help='fasta file paths' ) 338 parser.add_option( '--repfasta', dest='repfasta', help='fasta file paths' )
336 parser.add_option( '--qaverage', dest='qaverage', type="int", help='Remove sequences that have an average quality below the value' ) 339 parser.add_option( '--qaverage', dest='qaverage', type="int", help='Remove sequences that have an average quality below the value' )
337 parser.add_option( '--qthreshold', dest='qthreshold', type="int", help='If at any point a base call in a sequence has a quality score below the value provided to the option, the sequence is terminated' ) 340 parser.add_option( '--qthreshold', dest='qthreshold', type="int", help='If at any point a base call in a sequence has a quality score below the value provided to the option, the sequence is terminated' )
338 parser.add_option( '--qwindowaverage', dest='qwindowaverage', type="int", help='Remove sequences that have a window average quality below the value' ) 341 parser.add_option( '--qwindowaverage', dest='qwindowaverage', type="int", help='Remove sequences that have a window average quality below the value' )
399 parser.add_option( '--vertical', dest='vertical', help='Ignore any column that only contains gap characters, "-" or "."' ) 402 parser.add_option( '--vertical', dest='vertical', help='Ignore any column that only contains gap characters, "-" or "."' )
400 parser.add_option( '--trump', dest='trump', help='Remove a column if the trump character is found at that position in any sequence of the alignment.' ) 403 parser.add_option( '--trump', dest='trump', help='Remove a column if the trump character is found at that position in any sequence of the alignment.' )
401 parser.add_option( '--soft', dest='soft', type='int', help='Soft Mask - percentage required to retain column. (0-100)' ) 404 parser.add_option( '--soft', dest='soft', type='int', help='Soft Mask - percentage required to retain column. (0-100)' )
402 parser.add_option( '--hard', dest='hard', help='Hard Column Filter - A file should only contain one line consisting of 0 and 1 chars' ) 405 parser.add_option( '--hard', dest='hard', help='Hard Column Filter - A file should only contain one line consisting of 0 and 1 chars' )
403 parser.add_option( '--calc', dest='calc', help='Calc Method - Gap Penality' ) 406 parser.add_option( '--calc', dest='calc', help='Calc Method - Gap Penality' )
407 parser.add_option( '--count', dest='count', help='Count file' )
404 parser.add_option( '--countends', dest='countends', help='Penalize terminal gaps' ) 408 parser.add_option( '--countends', dest='countends', help='Penalize terminal gaps' )
405 parser.add_option( '--cutoff', dest='cutoff', help='Distance Cutoff threshold, discard larger distances' ) 409 parser.add_option( '--cutoff', dest='cutoff', help='Distance Cutoff threshold, discard larger distances' )
406 parser.add_option( '--countgaps', dest='countgaps', help='count gaps as bases' ) 410 parser.add_option( '--countgaps', dest='countgaps', help='count gaps as bases' )
407 parser.add_option( '--output', dest='output', help='Format for output' ) 411 parser.add_option( '--output', dest='output', help='Format for output' )
408 parser.add_option( '--method', dest='method', help='Method to use for analysis - cluster' ) 412 parser.add_option( '--method', dest='method', help='Method to use for analysis - cluster' )
513 parser.add_option( '--keepprimer', dest='keepprimer', help='Whether to retain the primer' ) 517 parser.add_option( '--keepprimer', dest='keepprimer', help='Whether to retain the primer' )
514 parser.add_option( '--keepdots', dest='keepdots', help='Whether to retain dots in the sequence' ) 518 parser.add_option( '--keepdots', dest='keepdots', help='Whether to retain dots in the sequence' )
515 parser.add_option( '--matrixtype', dest='matrixtype', help='' ) 519 parser.add_option( '--matrixtype', dest='matrixtype', help='' )
516 parser.add_option( '--consensus', dest='consensus', help='boolean' ) 520 parser.add_option( '--consensus', dest='consensus', help='boolean' )
517 parser.add_option( '--biom', dest='biom', help='biom file' ) 521 parser.add_option( '--biom', dest='biom', help='biom file' )
522 parser.add_option( '--classic', dest='classic', help='boolean' )
518 # include read.otu options 523 # include read.otu options
519 parser.add_option( '--rabund', dest='rabund', help='' ) 524 parser.add_option( '--rabund', dest='rabund', help='' )
520 parser.add_option( '--sabund', dest='sabund', help='' ) 525 parser.add_option( '--sabund', dest='sabund', help='' )
521 parser.add_option( '--shared', dest='shared', help='' ) 526 parser.add_option( '--shared', dest='shared', help='' )
522 parser.add_option( '--relabund', dest='relabund', help='' ) 527 parser.add_option( '--relabund', dest='relabund', help='' )
651 chimera_count = 0 656 chimera_count = 0
652 for line in tmp_stdout: 657 for line in tmp_stdout:
653 if re.match(pattern,line): 658 if re.match(pattern,line):
654 chimera_count += 1 659 chimera_count += 1
655 info += "Chimeras: %d" % chimera_count 660 info += "Chimeras: %d" % chimera_count
661 elif options.cmd == 'count.groups':
662 fh = open(os.path.join(outputdir,'tmp.groups.count'),'w')
663 for line in tmp_stdout:
664 m = re.match('(.+) contains (\d+)\.',line)
665 if m and len(m.groups()) == 2:
666 info += line
667 print >> fh, "%s\t%s\n" % (m.group(1),m.group(2))
668 fh.close()
656 else: 669 else:
657 found_begin = False 670 found_begin = False
658 info_chars = 0 671 info_chars = 0
659 for line in tmp_stdout: 672 for line in tmp_stdout:
673 if re.match('mothur > ' + options.cmd + '\(.*\)', line):
674 found_begin = True
675 continue
660 if line.find(outputdir) >= 0: 676 if line.find(outputdir) >= 0:
661 continue 677 continue
662 if line.startswith('**************'): 678 if line.startswith('**************'):
663 continue 679 continue
664 if re.match('^Processing.*',line): 680 if re.match('^Processing.*',line):
669 continue 685 continue
670 if re.match('^DONE.*',line): 686 if re.match('^DONE.*',line):
671 continue 687 continue
672 if re.match('.*\.\.\.\s*$',line): 688 if re.match('.*\.\.\.\s*$',line):
673 continue 689 continue
674 if re.match('^\d*\s*$',line): 690 if re.match('^\d*\s*$',line) and not line.find(' contains '):
675 continue 691 continue
676 # if re.match('^(unique|[0-9.]*)(\t\d+)+',line): # abundance from cluster commands 692 # if re.match('^(unique|[0-9.]*)(\t\d+)+',line): # abundance from cluster commands
677 if not options.cmd.startswith('unifrac') and re.match('^(unique|[0-9.]+)(\t\d+)*',line): # abundance from cluster commands, allow unique line into info 693 if (not (options.cmd.startswith('unifrac') or options.cmd.startswith('count.groups'))
694 and re.match('^(unique|[0-9.]+)(\t\d+)*',line)): # abundance from cluster commands, allow unique line into info
678 continue 695 continue
679 if re.match('Output .*',line): 696 if re.match('Output .*',line):
697 break
698 if re.match('mothur > quit()',line):
680 break 699 break
681 if found_begin and info_chars < 200: 700 if found_begin and info_chars < 200:
682 info += "%s" % line 701 info += "%s" % line
683 info_chars += len(line) 702 info_chars += len(line)
684 if re.match('mothur > ' + options.cmd + '\(.*\)', line):
685 found_begin = True
686 tmp_stdout.close() 703 tmp_stdout.close()
687 print >> sys.stdout, info 704 print >> sys.stdout, info
688 # Collect output files 705 # Collect output files
689 flist = os.listdir(outputdir) 706 flist = os.listdir(outputdir)
690 if debug: print >> sys.stdout, '%s' % flist 707 if debug: print >> sys.stdout, '%s' % flist