From e870730e73ba6ea047d745ba0354ba27cb2d3c9f Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 7 Sep 2023 10:31:34 -0400 Subject: [PATCH] Cleaner indel feature description --- .../__snapshots__/VcfImport.test.ts.snap | 2 +- plugins/variants/src/VcfFeature/util.ts | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/__snapshots__/VcfImport.test.ts.snap b/plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/__snapshots__/VcfImport.test.ts.snap index 258fc09cb0..3ca9446fd9 100644 --- a/plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/__snapshots__/VcfImport.test.ts.snap +++ b/plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/__snapshots__/VcfImport.test.ts.snap @@ -15009,7 +15009,7 @@ exports[`vcf file import 1`] = ` "QUAL": 1112.65, "REF": "AAAAAAAAAGAAAAG", "aliases": undefined, - "description": "deletion AAAAAAAAAGAAAAG -> A", + "description": "14bp DEL", "end": 41256103, "name": "rs373413425", "refName": "17", diff --git a/plugins/variants/src/VcfFeature/util.ts b/plugins/variants/src/VcfFeature/util.ts index 4bc20f5db8..d74d0d8a87 100644 --- a/plugins/variants/src/VcfFeature/util.ts +++ b/plugins/variants/src/VcfFeature/util.ts @@ -50,16 +50,16 @@ export function getSOTermAndDescription( ) descriptions = new Set( - [...prefixes].map(prefix => { - const suffixes = descs - .map(desc => { - const pref = desc.split('-> ') - return pref[1] && pref[0] === prefix ? pref[1] : '' - }) - .filter(f => !!f) + [...prefixes] + .map(r => r.trim()) + .map(prefix => { + const suffixes = descs + .map(desc => desc.split('->').map(r => r.trim())) + .map(pref => (pref[1] && pref[0] === prefix ? pref[1] : '')) + .filter(f => !!f) - return suffixes.length ? prefix + '-> ' + suffixes.join(',') : prefix - }), + return suffixes.length ? `${prefix} -> ${suffixes.join(',')}` : prefix + }), ) } if (soTerms.size) { @@ -115,7 +115,7 @@ export function getSOAndDescByExamination(ref: string, alt: string) { } else if (alt === '') { return ['deletion', alt] } else if (alt === '') { - return ['deletion', alt] + return ['inversion', alt] } else if (alt === '') { return ['translocation', alt] } else if (alt.includes('<')) { @@ -125,9 +125,19 @@ export function getSOAndDescByExamination(ref: string, alt: string) { ? ['inversion', makeDescriptionString('inversion', ref, alt)] : ['substitution', makeDescriptionString('substitution', ref, alt)] } else if (ref.length <= alt.length) { - return ['insertion', makeDescriptionString('insertion', ref, alt)] + const len = alt.length - ref.length + const lena = len.toLocaleString('en-US') + return [ + 'insertion', + len > 5 ? lena + 'bp INS' : makeDescriptionString('insertion', ref, alt), + ] } else if (ref.length > alt.length) { - return ['deletion', makeDescriptionString('deletion', ref, alt)] + const len = ref.length - alt.length + const lena = len.toLocaleString('en-US') + return [ + 'deletion', + len > 5 ? lena + 'bp DEL' : makeDescriptionString('deletion', ref, alt), + ] } return ['indel', makeDescriptionString('indel', ref, alt)]