Skip to content
Snippets Groups Projects
Commit 65fba13f authored by J.F.J. Laros's avatar J.F.J. Laros
Browse files

Synchronised the sequencer assignment solution with the slides.

parent 98ad3d13
Branches
Tags
No related merge requests found
...@@ -32,14 +32,14 @@ class Sequence(object): ...@@ -32,14 +32,14 @@ class Sequence(object):
class Read(object): class Read(object):
def __init__(self): def __init__(self):
self.read = "" self.read = []
self.qual = [] self.qual = []
def __str__(self): def __str__(self):
return self.read return "".join(self.read)
def add(self, base): def append(self, base):
self.read += base[0] self.read.append(base[0])
self.qual.append(base[1]) self.qual.append(base[1])
def quality(self): def quality(self):
...@@ -48,20 +48,23 @@ class Read(object): ...@@ -48,20 +48,23 @@ class Read(object):
def trim(self, score): def trim(self, score):
for position in range(len(self.read) - 1, -1, -1): for position in range(len(self.read) - 1, -1, -1):
if self.qual[position] >= score: if self.qual[position] >= score:
return self.read[:position] self.read = self.read[:position + 1]
self.qual = self.qual[:position + 1]
break
def withClass(): def with_class():
spots = 2 spots = 2
run = Sequence(spots) run = Sequence(spots)
reads = [Read() for _ in range(spots)] reads = [Read() for _ in range(spots)]
for tile in run: for tile in run:
for read_id, base in enumerate(tile): for read_id, base in enumerate(tile):
reads[read_id].add(base) reads[read_id].append(base)
for i in reads: for i in reads:
print i, i.quality() print i, i.quality()
print i.trim(39) i.trim(39)
print i, i.quality()
def quality(quals): def quality(quals):
return sum(quals) / len(quals) return sum(quals) / len(quals)
...@@ -69,9 +72,9 @@ def quality(quals): ...@@ -69,9 +72,9 @@ def quality(quals):
def trim(read, quals, score): def trim(read, quals, score):
for position in range(len(read) - 1, 0, -1): for position in range(len(read) - 1, 0, -1):
if quals[position] >= score: if quals[position] >= score:
return read[:position] return read[:position + 1], quals[:position + 1]
def withoutClass(): def without_class():
spots = 2 spots = 2
run = Sequence(spots) run = Sequence(spots)
...@@ -84,7 +87,9 @@ def withoutClass(): ...@@ -84,7 +87,9 @@ def withoutClass():
for read_id, read in enumerate(reads): for read_id, read in enumerate(reads):
print read, quality(quals[read_id]) print read, quality(quals[read_id])
print trim(read, quals[read_id], 39) read, quals[read_id] = trim(read, quals[read_id], 39)
print read, quality(quals[read_id])
if __name__ == "__main__": if __name__ == "__main__":
withoutClass() #without_class()
with_class()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment