github.com/informationsea/shellflow@v0.1.3/examples/doc-example3/create-mutated-fasta.py (about) 1 #!/usr/bin/python3 2 3 import argparse 4 import random 5 6 7 def _main(): 8 parser = argparse.ArgumentParser("Create mutated fasta") 9 parser.add_argument("input", type=argparse.FileType("r")) 10 parser.add_argument( 11 "--output", "-o", type=argparse.FileType("w"), required=True) 12 parser.add_argument("--mutation-rate", type=float, default=0.00001) 13 parser.add_argument("--seed", type=int) 14 options = parser.parse_args() 15 16 if options.seed: 17 random.seed(options.seed) 18 19 for line in options.input: 20 if line.startswith(">"): 21 options.output.write(line) 22 continue 23 for one in line: 24 if one in "ATCG" and random.random() < options.mutation_rate: 25 options.output.write("ATCG"[random.randint(0, 3)]) 26 else: 27 options.output.write(one) 28 29 30 if __name__ == "__main__": 31 _main()