Mercurial > repos > p.lucas > fasta_to_fastq
changeset 1:60e768cf5101 draft
Uploaded
author | p.lucas |
---|---|
date | Tue, 23 Jul 2024 14:28:53 +0000 |
parents | 3c99ff6e67ca |
children | 1ae786d82161 |
files | fasta_to_fastq.py |
diffstat | 1 files changed, 53 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fasta_to_fastq.py Tue Jul 23 14:28:53 2024 +0000 @@ -0,0 +1,53 @@ +#!/usr/bin/python +#-*- coding: utf-8 -*- + +""" + +Scripts ayant pour rôle l'extraction de tous les noms de segment contenus dans un fichier genbank. +Réalisé par Pierrick Lucas. +Usage : python fastq_to_fastq.py -i sequences.fasta -s 40 -o output_file.fastq + +""" + +# Import +import argparse +import sys +import os +from Bio import SeqIO + +##### MAIN +def __main__(): + # Options : + parser = argparse.ArgumentParser(description="""Takes a fasta file and converts it to fastq file with a fake quality score.""", + epilog="""This script need few options, use -h to see it.""") + parser.add_argument("-i", "--infile", dest="infile", help="Input fasta file.") + parser.add_argument("-s", "--score", type=int, default=40, dest="score", help="Quality score you wanted for each base in all reads. (default: 40)") + parser.add_argument("-o", "--outfile", dest="outfile", help="Output file in fastq format.") + + if len(sys.argv) == 1 or len(sys.argv) < 5 or len(sys.argv) > 7: + parser.print_help() + sys.exit(1) + + # Get options : + options = parser.parse_args() + infile = options.infile + score = options.score + outfile = options.outfile + + outputfile = open(outfile,"w") + + # Check score + if score < 0: + sys.exit("Error: only positive integers for the score".format(score)) + + # Create fastq output file + with open(infile, "r") as inf: + for record in SeqIO.parse(inf, "fasta"): + record.letter_annotations["phred_quality"] = [score] * len(record) + SeqIO.write(record, outputfile, "fastq") + + # Close output file + outputfile.close() + +#### MAIN END +if __name__ == "__main__": __main__()