From d723e09e42eac7e9ce6201658728bf2c531c15de Mon Sep 17 00:00:00 2001
From: "J.F.J. Laros" <j.f.j.laros@lumc.nl>
Date: Fri, 1 Aug 2014 17:42:39 +0200
Subject: [PATCH] Removed the length and hgvs precalculation.

---
 mutalyzer/describe.py              | 98 ++----------------------------
 mutalyzer/entrypoints/mutalyzer.py |  7 ++-
 2 files changed, 10 insertions(+), 95 deletions(-)

diff --git a/mutalyzer/describe.py b/mutalyzer/describe.py
index c76ff4c4..b0b46842 100644
--- a/mutalyzer/describe.py
+++ b/mutalyzer/describe.py
@@ -218,15 +218,7 @@ class SeqList(list):
     #__str__
 #SeqList
 
-class HGVSVar(object):
-    # NOTE: This may be obsolete, but check the JSON generation.
-    def update(self):
-        self.hgvs = str(self)
-        self.hgvs_length = len(self)
-    #update
-#HGVSVar
-
-class DNAVar(models.DNAVar, HGVSVar):
+class DNAVar(models.DNAVar):
     """
     Container for a DNA variant.
     """
@@ -277,7 +269,6 @@ class DNAVar(models.DNAVar, HGVSVar):
         self.deleted = deleted
         self.inserted = inserted
         self.shift = shift
-        self.update()
     #__init__
 
     def __str__(self):
@@ -307,41 +298,9 @@ class DNAVar(models.DNAVar, HGVSVar):
 
         return description + "{}>{}".format(self.deleted, self.inserted)
     #__str__
-
-    def __len__(self):
-        """
-        Give the standardised length of the HGVS description of the raw variant
-        stored in this class.
-
-        Note that this function relies on the absence of values to make the
-        correct description. Also see the comment in the class definition.
-
-        :returns: The standardised length of the HGVS description of the raw
-            variant stored in this class.
-        :rtype: int
-        """
-        # NOTE: Obsolete?
-        if self.type in ("none", "unknown"): # `=' or `?'
-            return 1
-
-        description_length = 1 # Start position.
-
-        if self.start != self.end: # '_' and end position.
-            description_length += 2
-
-        if self.type != "subst":
-            description_length += len(self.type)
-
-            if self.type in ("ins", "delins"):
-                return description_length + len(self.inserted)
-            return description_length
-        #if
-
-        return 4 # Start position, '>' and end position.
-    #__len__
 #DNAVar
 
-class ProteinVar(models.ProteinVar, HGVSVar):
+class ProteinVar(models.ProteinVar):
     """
     Container for a raw variant.
     """
@@ -380,7 +339,6 @@ class ProteinVar(models.ProteinVar, HGVSVar):
         self.inserted = inserted
         self.shift = shift
         self.term = term
-        self.update()
     #__init__
 
     def __str__(self):
@@ -421,40 +379,6 @@ class ProteinVar(models.ProteinVar, HGVSVar):
             return description + "fs*{}".format(self.term)
         return description
     #__str__
-
-    def __len__(self):
-        """
-        Give the standardised length of the HGVS description of the raw variant
-        stored in this class.
-
-        Note that this function relies on the absence of values to make the
-        correct description. Also see the comment in the class definition.
-
-        :returns: The standardised length of the HGVS description of the raw
-            variant stored in this class.
-        :rtype: int
-        """
-        # NOTE: Obsolete?
-        if not self.start: # =
-            return 1
-
-        description_length = 1      # Start position.
-        if not self.deleted and self.type == "ext":
-            description_length += 1 # *
-        else:
-            description_length += 3 # One amino acid.
-        if self.end:
-            description_length += 5 # `_' + one amino acid + end position.
-        if self.type not in ["subst", "stop", "ext", "fs"]:
-            description_length += len(self.type)
-        if self.inserted:
-            description_length += 3 * len(self.inserted)
-        if self.type == "stop":
-            return description_length + 1 # *
-        if self.term:
-            return description_length + len(self.type) + 2 # `*' + until stop.
-        return description_length
-    #__len__
 #ProteinVar
 
 class Allele(list):
@@ -466,21 +390,9 @@ class Allele(list):
         :rtype: str
         """
         if len(self) > 1:
-            return "[{}]".format(';'.join(map(lambda x: x.hgvs, self)))
-        return self[0].hgvs
+            return "[{}]".format(';'.join(map(lambda x: str(x), self)))
+        return str(self[0])
     #__str__
-
-    def length(self):
-        """
-        Calculate the standardised length of an HGVS allele description.
-
-        :returns: The standardised length of the HGVS description of {allele}.
-        :rtype: int
-        """
-        # NOTE: Do we need to count the ; and [] ?
-        # NOTE: Obsolete?
-        return sum(map(lambda x: x.hgvs_length, self))
-    #length
 #Allele
 
 
@@ -671,8 +583,6 @@ def describe_protein(s1, s2):
 
     if description:
         description[-1].term = term + 2
-        description[-1].update()
-    #if
 
     return description
 #describe_protein
diff --git a/mutalyzer/entrypoints/mutalyzer.py b/mutalyzer/entrypoints/mutalyzer.py
index dc1ea008..8110846e 100644
--- a/mutalyzer/entrypoints/mutalyzer.py
+++ b/mutalyzer/entrypoints/mutalyzer.py
@@ -18,7 +18,12 @@ from .. import variantchecker
 
 class MyEncoder(json.JSONEncoder):
     def default(self, o):
-        return o.__dict__
+        json_object = o.__dict__
+        json_object.update({"hgvs": str(o)})
+
+        return json_object
+    #default
+#MyEncoder
 
 def check_name(description):
     """
-- 
GitLab