From 65fba13f7ec143e33d6eb8093b1b94c333f41c82 Mon Sep 17 00:00:00 2001
From: "J.F.J. Laros" <jlaros@obscured.morspoort.fixedpoint.nl>
Date: Thu, 8 Aug 2013 20:36:04 +0200
Subject: [PATCH] Synchronised the sequencer assignment solution with the
 slides.

---
 sequencer_old.py | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/sequencer_old.py b/sequencer_old.py
index 2248e8f..39ceeb3 100644
--- a/sequencer_old.py
+++ b/sequencer_old.py
@@ -32,14 +32,14 @@ class Sequence(object):
 
 class Read(object):
     def __init__(self):
-        self.read = ""
+        self.read = []
         self.qual = []
 
     def __str__(self):
-        return self.read
+        return "".join(self.read)
 
-    def add(self, base):
-        self.read += base[0]
+    def append(self, base):
+        self.read.append(base[0])
         self.qual.append(base[1])
 
     def quality(self):
@@ -48,20 +48,23 @@ class Read(object):
     def trim(self, score):
         for position in range(len(self.read) - 1, -1, -1):
             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
     run = Sequence(spots)
 
     reads = [Read() for _ in range(spots)]
     for tile in run:
         for read_id, base in enumerate(tile):
-            reads[read_id].add(base)
+            reads[read_id].append(base)
 
     for i in reads:
         print i, i.quality()
-        print i.trim(39)
+        i.trim(39)
+        print i, i.quality()
 
 def quality(quals):
     return sum(quals) / len(quals)
@@ -69,9 +72,9 @@ def quality(quals):
 def trim(read, quals, score):
     for position in range(len(read) - 1, 0, -1):
         if quals[position] >= score:
-            return read[:position]
+            return read[:position + 1], quals[:position + 1]
 
-def withoutClass():
+def without_class():
     spots = 2
     run = Sequence(spots)
 
@@ -84,7 +87,9 @@ def withoutClass():
 
     for read_id, read in enumerate(reads):
         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__":
-    withoutClass()
+    #without_class()
+    with_class()
-- 
GitLab