diff --git a/mutalyzer/db/models.py b/mutalyzer/db/models.py index 73a99c48994c3240b13875057bef2f113b823236..8d47461bb4457bdbee805a1a6975e138428b5586 100644 --- a/mutalyzer/db/models.py +++ b/mutalyzer/db/models.py @@ -468,6 +468,38 @@ class TranscriptMapping(db.Base): def cds(self, cds): self.cds_start, self.cds_stop = cds or (None, None) + def get_reference(self, include_version=True): + """ + Get fully qualified reference for this transcript. + + You would usually want to use the simpler :attr:`reference` property + instead, except if the accession number may not include version number + (which we consider bad practice). + """ + if include_version and self.version: + accession = '%s.%i' % (self.accession, self.version) + else: + accession = self.accession + + if self.select_transcript: + if self.reference_type == 'lrg': + selector = 't%d' % self.transcript + elif self.transcript: + selector = '(%s_v%.3i)' % (self.gene, self.transcript) + else: + selector = '(%s)' % self.gene + else: + selector = '' + + return '%s%s' % (accession, selector) + + @property + def reference(self): + """ + Fully qualified reference for this transcript. + """ + return self.get_reference() + Index('transcript_mapping_transcript', TranscriptMapping.accession, TranscriptMapping.version, diff --git a/mutalyzer/mapping.py b/mutalyzer/mapping.py index d71f3aeaec8e31e989413872fb3f2e83f335bd62..e0ae81adfa79088b804bf1add7d66520ce74ed93 100644 --- a/mutalyzer/mapping.py +++ b/mutalyzer/mapping.py @@ -735,20 +735,7 @@ class Converter(object) : if not core_mapping: #balen continue - # construct the variant description - if self.mapping.reference_type == 'lrg': - accNo = self.mapping.accession - else: - accNo = "%s.%s" % (self.mapping.accession, self.mapping.version) - if self.mapping.select_transcript: - if self.mapping.reference_type == 'lrg': - selector = 't%d' % self.mapping.transcript - elif self.mapping.transcript: - selector = '(%s_v%.3i)' % (self.mapping.gene, self.mapping.transcript) - else: - selector = '(%s)' % self.mapping.gene - else: - selector = '' + reference = self.mapping.reference geneName = self.mapping.gene strand = self.mapping.orientation == 'forward' @@ -798,7 +785,7 @@ class Converter(object) : else: mutation = '[' + ';'.join(mutations) + ']' - description = "%s%s:%c.%s" % (accNo, selector, mtype, mutation) + description = "%s:%c.%s" % (reference, mtype, mutation) HGVS_notatations[geneName].append(description) NM_list.append(description) #for diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py index 93ca06898087fb1273e2cfc6aeb506fe84190187..767c6a5f811ec637fc09f77b7f26f8c055c1a5f5 100644 --- a/mutalyzer/services/rpc.py +++ b/mutalyzer/services/rpc.py @@ -264,24 +264,8 @@ class MutalyzerService(ServiceBase): "Finished processing getTranscripts(%s %s %s %s)" % (build, chrom, pos, versions)) - transcripts = [] - for mapping in mappings: - if versions and mapping.version: - accession = '%s.%i' % (mapping.accession, mapping.version) - else: - accession = mapping.accession - if mapping.select_transcript: - if mapping.reference_type == 'lrg': - selector = 't%d' % mapping.transcript - elif mapping.transcript: - selector = '(%s_v%.3i)' % (mapping.gene, mapping.transcript) - else: - selector = '(%s)' % mapping.gene - else: - selector = '' - transcripts.append('%s%s' % (accession, selector)) - - return transcripts + return [mapping.get_reference(include_version=versions) + for mapping in mappings] #getTranscripts @srpc(Mandatory.Unicode, Mandatory.Unicode, _returns=Array(Mandatory.Unicode)) @@ -309,24 +293,7 @@ class MutalyzerService(ServiceBase): L.addMessage(__file__, -1, "INFO", "Finished processing getTranscriptsByGene(%s %s)" % (build, name)) - transcripts = [] - for mapping in mappings: - if mapping.version: - accession = '%s.%i' % (mapping.accession, mapping.version) - else: - accession = mapping.accession - if mapping.select_transcript: - if mapping.reference_type == 'lrg': - selector = 't%d' % mapping.transcript - elif mapping.transcript: - selector = '(%s_v%.3i)' % (mapping.gene, mapping.transcript) - else: - selector = '(%s)' % mapping.gene - else: - selector = '' - transcripts.append('%s%s' % (accession, selector)) - - return transcripts + return [mapping.reference for mapping in mappings] #getTranscriptsByGeneName @srpc(Mandatory.Unicode, Mandatory.Unicode, Mandatory.Integer, @@ -414,24 +381,8 @@ class MutalyzerService(ServiceBase): "Finished processing getTranscriptsRange(%s %s %s %s %s)" % ( build, chrom, pos1, pos2, method)) - transcripts = [] - for mapping in mappings: - if versions and mapping.version: - accession = '%s.%i' % (mapping.accession, mapping.version) - else: - accession = mapping.accession - if mapping.select_transcript: - if mapping.reference_type == 'lrg': - selector = 't%d' % mapping.transcript - elif mapping.transcript: - selector = '(%s_v%.3i)' % (mapping.gene, mapping.transcript) - else: - selector = '(%s)' % mapping.gene - else: - selector = '' - transcripts.append('%s%s' % (accession, selector)) - - return transcripts + return [mapping.get_reference(include_version=versions) + for mapping in mappings] #getTranscriptsRange @srpc(Mandatory.Unicode, Mandatory.Unicode, Mandatory.Integer, @@ -527,22 +478,7 @@ class MutalyzerService(ServiceBase): for mapping in mappings: t = TranscriptMappingInfo() - - if mapping.version: - accession = '%s.%i' % (mapping.accession, mapping.version) - else: - accession = mapping.accession - if mapping.select_transcript: - if mapping.reference_type == 'lrg': - selector = 't%d' % mapping.transcript - elif mapping.transcript: - selector = '(%s_v%.3i)' % (mapping.gene, mapping.transcript) - else: - selector = '(%s)' % mapping.gene - else: - selector = '' - t.transcript = '%s%s' % (accession, selector) - + t.transcript = mapping.reference t.name = mapping.accession t.version = mapping.version t.gene = mapping.gene