From fb66c8c6f243b60fa18b42040d6c38d535e363d2 Mon Sep 17 00:00:00 2001 From: carcruz Date: Mon, 21 Feb 2022 18:49:32 +0000 Subject: [PATCH] feat: parse GenesForVariantSchema pQTL --- src/pages/VariantPage/VariantPage.js | 7 ++++++- src/utils/variant.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/pages/VariantPage/VariantPage.js b/src/pages/VariantPage/VariantPage.js index 994988fa..f5ba3718 100644 --- a/src/pages/VariantPage/VariantPage.js +++ b/src/pages/VariantPage/VariantPage.js @@ -25,6 +25,7 @@ import { variantHasAssociatedGenes, variantTransformAssociatedIndexVariants, variantTransformAssociatedTagVariants, + variantParseGenesForVariantSchema, } from '../../utils'; const VARIANT_PAGE_QUERY = loader('../../queries/VariantPageQuery.gql'); @@ -118,6 +119,10 @@ function VariantPage(props) { ? variantTransformAssociatedTagVariants(data) : []; + const genesForVariantSchema = isGeneVariant + ? variantParseGenesForVariantSchema(data) + : []; + return ( ) : ( diff --git a/src/utils/variant.js b/src/utils/variant.js index 6d3909c7..ec1a95c2 100644 --- a/src/utils/variant.js +++ b/src/utils/variant.js @@ -80,3 +80,31 @@ export const variantPopulations = [ { code: 'NFESEU', description: 'Non-Finnish European Southern European' }, { code: 'OTH', description: 'Other (population not assigned)' }, ]; + +export function variantParseGenesForVariantSchema(data) { + const genesForVariantSchema = data.genesForVariantSchema; + const currentQtls = genesForVariantSchema.qtls; + if (currentQtls.length === 0) return genesForVariantSchema; + if (currentQtls[0].id === 'pqtl') { + const pqtl = currentQtls[0]; + const restQtls = currentQtls.slice(1, pqtl.length); + const sourceDescriptionBreakdown = parseSourceDescriptionBreakdown( + pqtl.sourceDescriptionBreakdown + ); + const sourceLabel = parseSourceLabel(pqtl.sourceLabel); + const newPqtl = { ...pqtl, sourceDescriptionBreakdown, sourceLabel }; + const newQtls = [newPqtl, ...restQtls]; + return { ...genesForVariantSchema, qtls: newQtls }; + } + return genesForVariantSchema; +} + +function parseSourceDescriptionBreakdown(description = '') { + if (!description) return; + return description.replace(' Sun *et al.* (2018)', ''); +} + +function parseSourceLabel(label = '') { + if (!label) return; + return label.replace(' (Sun, 2018)', ''); +}