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()