From cc67267056fc9cc46a5aeebb67e6b1541de50959 Mon Sep 17 00:00:00 2001 From: Ben Capodanno Date: Tue, 23 Jul 2024 15:00:20 -0700 Subject: [PATCH 1/2] Fixed: Allow Heatmap to Display Variants Reported w/ Respect to a Protein Accession --- src/lib/mave-hgvs.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/mave-hgvs.ts b/src/lib/mave-hgvs.ts index a36cb52d..daf5d235 100644 --- a/src/lib/mave-hgvs.ts +++ b/src/lib/mave-hgvs.ts @@ -13,6 +13,8 @@ interface SimpleProteinVariation { * change of another sort. */ substitution: string + /** The genomic target (accession) from a fully qualified MaveHGVS-pro string. */ + target: null | string } /** @@ -30,7 +32,10 @@ const proVariantRegex = /^p\.([A-Za-z]{3})([0-9]+)([A-Za-z]{3}|=|\*|-)$/ * @returns An object with properties indicating */ export function parseSimpleProVariant(variant: string): SimpleProteinVariation | null { - const match = variant.match(proVariantRegex) + const parts = variant.split(":") + const variation = parts.length == 1 ? parts[0] : parts[1] + const target = parts.length == 1 ? null : parts[0] + const match = variation.match(proVariantRegex) if (!match) { // console.log(`WARNING: Unrecognized pro variant: ${variant}`) return null @@ -38,7 +43,8 @@ export function parseSimpleProVariant(variant: string): SimpleProteinVariation | return { position: parseInt(match[2]), original: match[1], - substitution: match[3] + substitution: match[3], + target: target } } From 25cf973d098353bcc351ce6b48bbd086080e989d Mon Sep 17 00:00:00 2001 From: Ben Capodanno Date: Wed, 24 Jul 2024 13:02:26 -0700 Subject: [PATCH 2/2] Don't Display Heatmap Variants when Multiple Accessions are Defined --- src/components/ScoreSetHeatmap.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/ScoreSetHeatmap.vue b/src/components/ScoreSetHeatmap.vue index 2e25e57c..74b7ffcc 100644 --- a/src/components/ScoreSetHeatmap.vue +++ b/src/components/ScoreSetHeatmap.vue @@ -169,6 +169,8 @@ export default { // Count of variants that do not appear to be complex but are don't have a valid substitution let numIgnoredVariantInstances = 0 + const distinctAccessions = new Set() + const simpleVariantInstances = _.filter( scores.map((score) => { const variant = parseSimpleProVariant(score.hgvs_pro) @@ -176,6 +178,9 @@ export default { numComplexVariantInstances++ return null } + if (variant.target) { + distinctAccessions.add(variant.target) + } const row = heatmapRowForVariant(variant.substitution) if (row == null) { numIgnoredVariantInstances++ @@ -187,6 +192,11 @@ export default { }), (x) => x != null ) + // TODO(#237) See https://github.com/VariantEffect/mavedb-ui/issues/237. + if (distinctAccessions.size > 1) { + numComplexVariantInstances += simpleVariantInstances.length + simpleVariantInstances = [] + } return {simpleVariantInstances, numComplexVariantInstances, numIgnoredVariantInstances} },