diff --git a/mutalyzer/describe.py b/mutalyzer/describe.py index 644573a72c7a1aeab7bd14a49ab3ef9feb8572df..1863bb9d9496fa89cee210345fca0bc29b117d92 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 758a9a4d50afd275de45b058b6b892fea95d2721..89da7bb08c0ebe1d41faa7ead3d9a6b55b4cdca4 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 f7d706cea4793cc7efa81f3d02b012921a15a23f..89ee649dc0f15e51a63df63ef3072f2a650b0b99 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)