summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/MUM/genreads.py
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/CUDA/MUM/genreads.py')
-rw-r--r--benchmarks/CUDA/MUM/genreads.py125
1 files changed, 125 insertions, 0 deletions
diff --git a/benchmarks/CUDA/MUM/genreads.py b/benchmarks/CUDA/MUM/genreads.py
new file mode 100644
index 0000000..4302470
--- /dev/null
+++ b/benchmarks/CUDA/MUM/genreads.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+# encoding: utf-8
+"""
+untitled.py
+
+Created by Cole Trapnell on 2007-04-26.
+Copyright (c) 2007 __MyCompanyName__. All rights reserved.
+"""
+
+import sys
+import getopt
+import random
+
+
+help_message = """
+genreads outputs a multi-FASTA file containing a random sampling of
+read-sized subsequences of the provided reference sequence.
+
+Usage:
+ genreads [options] <reference file> <length of reads> <# of reads>
+
+Options:
+ -m < % mismatch> --mismatches= the % of bases in each read that
+ don't match the reference
+ -s <integer value> --seed= the seed for the random number
+ generator
+"""
+
+
+class Usage(Exception):
+ def __init__(self, msg):
+ self.msg = msg
+
+
+def main(argv=None):
+
+ if argv is None:
+ argv = sys.argv
+ try:
+ try:
+ opts, args = getopt.getopt(argv[1:], "hSd:m:s:v", ["help","distribution=", "mismatches=", "seed=", "sort"])
+ except getopt.error, msg:
+ raise Usage(msg)
+
+ mismatch = 0.0
+
+ seed_val = 0
+ sorted = False
+ # option processing
+ for option, value in opts:
+ if option == "-v":
+ verbose = True
+ if option in ("-h", "--help"):
+ raise Usage(help_message)
+ if option in ("-d", "--distribution"):
+ dist = value
+ if option in ("-m", "--mismatches"):
+ mismatch = float(value)
+ if option in ("-s", "--seed"):
+ seed_val = long(value)
+ if option in ("-S", "--sort"):
+ sorted = True
+
+ random.seed(seed_val)
+
+ if len(args) != 3:
+ raise Usage(help_message)
+
+ fasta_input = args[0]
+ read_length = int(args[1])
+ num_reads = int(args[2])
+
+ #fasta_input = "NC_003997.fna"
+ #read_length = 47
+ #num_reads = 10000
+
+ f = open(fasta_input, "r")
+ lines = f.readlines()
+
+ if lines[0].find(">") == -1:
+ raise Usage("File is not FASTA format")
+
+
+ seq = "".join([line.strip() for line in lines[1:]])
+
+# for line in lines[1:]:
+# line = line.strip()
+# if line.find(">") != -1:
+# raise("Multi-FASTA format not supported")
+# seq += line
+
+
+
+ #print seq
+ L = len(seq)
+
+ #allowable = range(0, L - read_length)
+
+ rid = 0
+
+ base_mismatcher = {
+ "A" : "C",
+ "C" : "G",
+ "G" : "T",
+ "T" : "A"
+ }
+
+ reads = []
+
+ for i in range(0, num_reads):
+ start = random.randint(0, L - read_length)
+ #assert start <= L - read_length
+ end = start + read_length
+
+ rid +=1
+ print ">" + "rid" + str(rid)
+ print seq[start:end]
+
+ except Usage, err:
+ print >> sys.stderr, sys.argv[0].split("/")[-1] + ": " + str(err.msg)
+ return 2
+
+
+if __name__ == "__main__":
+ sys.exit(main())