diff --git a/deblur/workflow.py b/deblur/workflow.py index 30e20d6..e6a863c 100644 --- a/deblur/workflow.py +++ b/deblur/workflow.py @@ -492,7 +492,7 @@ def op(x): return x in aligned_seq_ids return output_fp, okseqs, [blast_output_filename] -def multiple_sequence_alignment(seqs_fp, threads=1): +def multiple_sequence_alignment(seqs_fp, threads=1, output_fp=None): """Perform multiple sequence alignment on FASTA file using MAFFT. Parameters @@ -517,7 +517,10 @@ def multiple_sequence_alignment(seqs_fp, threads=1): if stat(seqs_fp).st_size == 0: logger.warning('msa failed. file %s has no reads' % seqs_fp) return None - msa_fp = seqs_fp + '.msa' + if output_fp is None: + msa_fp = seqs_fp + '.msa' + else: + msa_fp = output_fp params = ['mafft', '--quiet', '--preservecase', '--parttree', '--auto', '--thread', str(threads), seqs_fp] sout, serr, res = _system_call(params, stdoutfilename=msa_fp) diff --git a/scripts/deblur b/scripts/deblur index dcb2c25..95a4437 100755 --- a/scripts/deblur +++ b/scripts/deblur @@ -325,10 +325,8 @@ def multiple_seq_alignment(seqs_fp, output_fp, threads_per_sample, """Multiple sequence alignment""" start_log(level=log_level * 10, filename=log_file) alignment = multiple_sequence_alignment(seqs_fp, - threads=threads_per_sample) - - with open(output_fp, 'w') as f: - f.write(alignment.to_fasta()) + threads=threads_per_sample, + output_fp=output_fp) # DE NOVO CHIMERA REMOVAL COMMAND