Skip to content
Snippets Groups Projects
Commit 2e2bb3fc authored by Vermaat's avatar Vermaat
Browse files

Merge remote-tracking branch 'gitlab/jfjlaros_2014'

parents 2445cbb8 44222ed4
Branches master
No related tags found
No related merge requests found
#!/usr/bin/env python
class Stack(list):
def push(self, element):
self.append(element)
def __str__(self):
return str(self[-1])
class Calculator(Stack):
def add(self):
self.push(self.pop() + self.pop())
def sub(self):
temp = self.pop()
self.push(self.pop() - temp)
def mul(self):
self.push(self.pop() * self.pop())
def div(self):
temp = self.pop()
self.push(self.pop() / temp)
#!/usr/bin/env python
from sequencer import Sequencer
def quality(quals):
return sum(quals) / len(quals)
def trim(read, quals, score):
for position in range(len(read) - 1, -1, -1):
if quals[position] >= score:
return read[:position + 1], quals[:position + 1]
def make_fastq():
spots = 2
run = Sequencer(spots)
reads = ["" for _ in range(spots)]
quals = [[] for _ in range(spots)]
for tile in run:
for read_id, base in enumerate(tile):
reads[read_id] += base[0]
quals[read_id].append(base[1])
for read_id, read in enumerate(reads):
print read, quality(quals[read_id])
read, quals[read_id] = trim(read, quals[read_id], 39)
print read, quality(quals[read_id])
if __name__ == "__main__":
make_fastq()
#!/usr/bin/env python
from sequencer import Sequencer
if __name__ == "__main__":
for tile in Sequencer(20):
print tile
#!/usr/bin/env python
import random
class Sequencer(object):
"""
Simulate a sequencing run.
For every iteration, return a tile of data points as a list of tuples. The
first element of the tuple contains the nucleotide, the second element
contains the quality score.
"""
bases = ['A', 'C', 'G', 'T']
def __init__(self, spots, readlength=100):
self.cycle = 0
self.readlength = readlength
self.spots = spots
def __iter__(self):
return self
def __len__(self):
return self.readlength
def next(self):
self.cycle += 1
if self.cycle > self.readlength:
raise StopIteration
tile = []
for _ in range(self.spots):
nucleotide = self.bases[random.randrange(4)]
quality = 40 - (self.cycle * random.randrange(40) /
self.readlength)
tile.append((nucleotide, quality))
return tile
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment