From 646ce812f052219048762b012d45337b0345492d Mon Sep 17 00:00:00 2001 From: "J.F.J. Laros" <j.f.j.laros@lumc.nl> Date: Sun, 19 Aug 2012 13:51:35 +0000 Subject: [PATCH] Added description extractor functionality to the name checker as an experimental service. describe.py: - Added an `unknown' type to the possible types of raw variants. - Disabled the experimental LCSMatrix() code. git-svn-id: https://humgenprojects.lumc.nl/svn/mutalyzer/trunk@596 eb6bd6ab-9ccd-42b9-aceb-e2899b4a52f1 --- mutalyzer/describe.py | 17 +++++++++++++++-- mutalyzer/templates/check.html | 14 ++++++++++++++ mutalyzer/website.py | 13 ++++++++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/mutalyzer/describe.py b/mutalyzer/describe.py index 644573a7..1863bb9d 100644 --- a/mutalyzer/describe.py +++ b/mutalyzer/describe.py @@ -298,6 +298,8 @@ class RawVar(models.RawVar): @returns: The HGVS description of the raw variant stored in this class. @rtype: str """ + if self.type == "unknown": + return "?" if not self.start: return "=" @@ -317,6 +319,7 @@ class RawVar(models.RawVar): descr += self.type if self.inserted: descr += "%s" % seq3(self.inserted) + if self.type == "stop": return descr + '*' if self.term: @@ -336,7 +339,7 @@ class RawVar(models.RawVar): variant stored in this class. @rtype: int """ - if not self.start : # = + if not self.start : # `=' or `?' return 1 descrLen = 1 # Start position. @@ -625,6 +628,13 @@ def protein_description(M, s1, s2, s1_start, s1_end, s2_start, s2_end): @returns: A list of RawVar objects, representing the allele. @rval: list(RawVar) """ + if s1 == '?' or s2 == '?': + return [RawVar(DNA=False, type="unknown")] + + # One of the sequences is missing. + if not (s1 and s2): + return [RawVar(DNA=False)] + # Nothing happened. if s1 == s2: return [RawVar(DNA=False)] @@ -743,7 +753,10 @@ def describe(original, mutated, DNA=True): s1_end = len(s1) - lcs s2_end = len(s2) - lcs - M = LCSMatrix(s1, s2) + # TODO: use only the altered part for the rest of the analysis. + # the lcp and lcs can be ignored. + #M = LCSMatrix(s1, s2) + M = [] if not DNA: return protein_description(M, s1, s2, lcp, s1_end, lcp, s2_end) diff --git a/mutalyzer/templates/check.html b/mutalyzer/templates/check.html index 758a9a4d..89da7bb0 100644 --- a/mutalyzer/templates/check.html +++ b/mutalyzer/templates/check.html @@ -268,7 +268,21 @@ <br> <br> </div> <!-- interactive --> + <br> </div> <!-- reference --> + <div> + <b>Experimental services:</b><br> + <br> + Genomic description: + <tt> + <div tal:replace = "structure extractedDescription/0"></div><br> + </tt> + <br> + Protein description: + <tt> + <div tal:replace = "structure extractedProtein/0"></div><br> + </tt> + </div> <!-- experimental --> </div> <!-- name --> </div> </body> diff --git a/mutalyzer/website.py b/mutalyzer/website.py index f7d706ce..89ee649d 100644 --- a/mutalyzer/website.py +++ b/mutalyzer/website.py @@ -824,6 +824,15 @@ class Check: chromosome=raw_variants[0], start=min(positions) - 10, stop=max(positions) + 10, bed_file=urllib.quote(bed_url)) + extracted = describe.alleleDescription( + describe.describe(output.getIndexedOutput("original", 0), + output.getIndexedOutput("mutated", 0))) + + extractedProt = describe.alleleDescription( + describe.describe(output.getIndexedOutput("oldprotein", 0), + output.getIndexedOutput("newprotein", 0, default=""), DNA=False)) + + # Todo: Generate the fancy HTML views for the proteins here instead # of in mutalyzer/variantchecker.py. args = { @@ -852,7 +861,9 @@ class Check: 'restrictionSites' : output.getOutput('restrictionSites'), 'legends' : output.getOutput('legends'), 'reference' : reference, - 'browserLink' : browser_link + 'browserLink' : browser_link, + 'extractedDescription' : (extracted, urllib.quote(extracted)), + 'extractedProtein' : (extractedProt, urllib.quote(extractedProt)) } output.addMessage(__file__, -1, 'INFO', 'Finished variant %s' % name) -- GitLab