Mercurial > repos > mheinzl > fasta2fastq
diff fasta2fastq.py @ 0:8ab09593f2eb draft default tip
planemo upload commit ee4a8e6cf290e6c8a4d55f9cd2839d60ab3b11c8
author | mheinzl |
---|---|
date | Wed, 07 Oct 2020 18:48:40 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fasta2fastq.py Wed Oct 07 18:48:40 2020 +0000 @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +"""fasta2fastq.py + +Author -- Monika Heinzl +Contact -- monika.heinzl@edumail.at + +Takes a fasta file and converts it to fastq file with a fake quality score. + +======= ========== ================= ================================ +Version Date Author Description +1.0.0 2020-10-07 Monika Heinzl +======= ========== ================= ================================ + +USAGE: python fasta2fastq.py -i in.fasta -o out.fastq -s 40 +""" + +import argparse +import sys, os +from Bio import SeqIO + + +def make_argparser(): + parser = argparse.ArgumentParser(description='Takes a fasta file and converts it to fastq file with a fake quality score.') + parser.add_argument('-i', '--infile', required = True, + help='Input FASTA file.') + parser.add_argument('-o', '--outfile', required = True, + help='Output FASTQ file.') + parser.add_argument('-s', '--score', type=int, default=40, + help='Quality score added to each base in the read. Default 40.') + return parser + +def fasta2fastq(argv): + parser = make_argparser() + args = parser.parse_args(argv[1:]) + + infasta = args.infile + outfastq = args.outfile + score = args.score + + if os.path.isfile(infasta) is False: + sys.exit("Error: Could not find '{}'".format(infasta)) + if os.path.isfile(outfastq) is False: + sys.exit("Error: Could not find '{}'".format(outfastq)) + if score < 0: + sys.exit("Error: score is '{}', but only non-negative integers allowed".format(score)) + + # make fastq + with open(infasta, "r") as fasta, open(outfastq, "w") as fastq: + for record in SeqIO.parse(fasta, "fasta"): + record.letter_annotations["phred_quality"] = [score] * len(record) + SeqIO.write(record, fastq, "fastq") + + +if __name__ == '__main__': + sys.exit(fasta2fastq(sys.argv)) +