From 2e8a3cdf693541e552919dffabe3cda12b82ca9e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bertrand=20N=C3=A9ron?= <bneron@pasteur.fr>
Date: Thu, 21 Jan 2016 15:28:16 +0100
Subject: [PATCH] SystemInfo is now mutable

replace namedtuple SystemInfo by an object
as we need to mutate it
some information (system_status, and predicted_system are
known after the creation of new system occurrence
when the parser encounter a gene belonging a system not neighbor genes
---
 src/parser/parser.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/parser/parser.py b/src/parser/parser.py
index 136486c..278aa55 100755
--- a/src/parser/parser.py
+++ b/src/parser/parser.py
@@ -63,7 +63,17 @@ def system_parser(system_data):
     """
     system_db = {}
 
-    System_info = namedtuple('System_info', 'code, predicted_system, system_status, replicon,  genes')
+    class System_info(object):
+
+        def __init__(self, code, predicted_system, system_status, replicon, genes):
+            self.code = code
+            self.predicted_system = predicted_system
+            self.system_status = system_status
+            self.replicon = replicon
+            self.genes = genes
+
+    #System_info = namedtuple('System_info', 'code, predicted_system, system_status, replicon,  genes')
+
     Gene = namedtuple('Gene',
                       ('code', 'id', 'protein_length', 'strand', 'begin', 'end', 'match',
                        'score', 'i_evalue', 'coverage', 'match_begin', 'match_end', 'name', 'description')
@@ -123,8 +133,13 @@ def system_parser(system_data):
                     else:
                         # append this gene to System_info genes
                         system_db[system_id].genes[gene.code] = gene
+                        if predicted_system is not None and system_db[system_id].predicted_system is None:
+                                system_db[system_id].predicted_system = predicted_system
+                        if system_status is not None and system_db[system_id].system_status is None:
+                                system_db[system_id].system_status = system_status
                 else:
                     # create a new System_info entry
+                    print("@@@ create new System_info",system_id, predicted_system, system_status, replicon_id)
                     system_db[system_id] = System_info(system_id, predicted_system, system_status,
                                                        replicon_id, genes={gene.code: gene})
 
-- 
GitLab