def test_handle_error_codes(self): """handle_error_codes raises the right error.""" self.assertRaises(OSError, handle_error_codes, "test", False,1) self.assertEqual(handle_error_codes("test", True, 1), 1) self.assertEqual(handle_error_codes("test", False, 0), 0) self.assertEqual(handle_error_codes("test"), 0)
def test_handle_error_codes(self): """handle_error_codes raises the right error.""" self.assertRaises(OSError, handle_error_codes, "test", False, 1) self.assertEqual(handle_error_codes("test", True, 1), 1) self.assertEqual(handle_error_codes("test", False, 0), 0) self.assertEqual(handle_error_codes("test"), 0)
def main(): """run denoiser on input flowgrams""" option_parser, opts, args = parse_command_line_parameters(**script_info) sff_files = opts.sff_fps for f in sff_files: if (not exists(f)): option_parser.error(('Flowgram file path does not exist:\n %s \n'+\ 'Pass a valid one via -i.')% f) outdir = opts.output_dir ret_val = create_dir(outdir, handle_errors_externally=True) if ret_val == 1: #dir exists if opts.force: #do nothing, just overwrite content pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose"+\ " a different directory, or force overwrite with -f.") else: handle_error_codes(outdir, error_code=ret_val) log_fh = None if (not (opts.primer or opts.map_fname)): raise ApplicationError, "Either mapping file or primer required" #Read primer from Meta data file if not set on command line if not opts.primer: mapping_data, header, comments = \ parse_mapping_file(open(opts.map_fname,"U")) index = header.index("LinkerPrimerSequence") all_primers = set(array(mapping_data)[:, index]) if len(all_primers) != 1: raise ValueError,"Currently only data sets with one primer are allowed.\n"+\ "Make separate mapping files with only one primer, re-run split_libraries and\n"\ +"denoise with each split_library output separately." primer = list(all_primers)[0] last_char = primer[-1] if (last_char not in "ACGT"): raise ValueError,"We currently do not support primer with "+\ "degenerate bases at it's 3' end." else: primer = opts.primer centroids, cluster_mapping = fast_denoiser(opts.sff_fps, opts.fasta_fp, outdir, opts.num_cpus, primer, titanium=opts.titanium) # store mapping file and centroids result_otu_path = '%s/denoised_clusters.txt' % outdir of = open(result_otu_path, 'w') for i, cluster in cluster_mapping.iteritems(): of.write('%s\t%s\n' % (str(i), '\t'.join(cluster))) of.close() result_fasta_path = '%s/denoised_seqs.fasta' % outdir oh = open(result_fasta_path, 'w') write_Fasta_from_name_seq_pairs(centroids, oh)
def main(): """run denoiser on input flowgrams""" option_parser, opts, args = parse_command_line_parameters(**script_info) sff_files = opts.sff_fps for f in sff_files: if (not exists(f)): option_parser.error(('Flowgram file path does not exist:\n %s \n'+\ 'Pass a valid one via -i.')% f) outdir = opts.output_dir ret_val = create_dir(outdir, handle_errors_externally=True) if ret_val==1: #dir exists if opts.force: #do nothing, just overwrite content pass else: # Since the analysis can take quite a while, I put this check # in to help users avoid overwriting previous output. option_parser.error("Output directory already exists. Please choose"+\ " a different directory, or force overwrite with -f.") else: handle_error_codes(outdir, error_code=ret_val) log_fh=None if (not (opts.primer or opts.map_fname)): raise ApplicationError, "Either mapping file or primer required" #Read primer from Meta data file if not set on command line if not opts.primer: mapping_data, header, comments = \ parse_mapping_file(open(opts.map_fname,"U")) index = header.index("LinkerPrimerSequence") all_primers = set(array(mapping_data)[:,index]) if len(all_primers)!= 1: raise ValueError,"Currently only data sets with one primer are allowed.\n"+\ "Make separate mapping files with only one primer, re-run split_libraries and\n"\ +"denoise with each split_library output separately." primer = list(all_primers)[0] last_char = primer[-1] if(last_char not in "ACGT"): raise ValueError,"We currently do not support primer with "+\ "degenerate bases at it's 3' end." else: primer=opts.primer centroids, cluster_mapping = fast_denoiser(opts.sff_fps,opts.fasta_fp, outdir, opts.num_cpus, primer, titanium=opts.titanium) # store mapping file and centroids result_otu_path = '%s/denoised_clusters.txt' % outdir of = open(result_otu_path,'w') for i,cluster in cluster_mapping.iteritems(): of.write('%s\t%s\n' % (str(i),'\t'.join(cluster))) of.close() result_fasta_path = '%s/denoised_seqs.fasta' % outdir oh = open(result_fasta_path,'w') write_Fasta_from_name_seq_pairs(centroids, oh)