From 3425cc9c6d08acd5f82b596d51e6577b2941d9b4 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Wed, 20 Feb 2019 12:15:06 +0000 Subject: [PATCH 1/1] JAL-3187 read peptide variant from CSQ:HGVSp if present (VCF/VEP data) --- src/jalview/datamodel/MappedFeatures.java | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/jalview/datamodel/MappedFeatures.java b/src/jalview/datamodel/MappedFeatures.java index 07d3857..b69a103 100644 --- a/src/jalview/datamodel/MappedFeatures.java +++ b/src/jalview/datamodel/MappedFeatures.java @@ -86,10 +86,30 @@ public class MappedFeatures baseCodon[1] = fromSeq.getCharAt(codonPos[1] - cdsStart); baseCodon[2] = fromSeq.getCharAt(codonPos[2] - cdsStart); - // todo avoid duplication of code in AlignmentUtils.buildDnaVariantsMap - for (SequenceFeature sf : features) { + /* + * VCF data may already contain the protein consequence + */ + String hgvsp = sf.getValueAsString("CSQ", "HGVSp"); + if (hgvsp != null) + { + int colonPos = hgvsp.indexOf(':'); + if (colonPos >= 0) + { + String var = hgvsp.substring(colonPos + 1); + if (!vars.contains(var)) + { + vars.add(var); + } + continue; + } + } + + /* + * otherwise, compute codon and peptide variant + */ + // todo avoid duplication of code in AlignmentUtils.buildDnaVariantsMap int cdsPos = sf.getBegin(); if (cdsPos != sf.getEnd()) { @@ -138,7 +158,8 @@ public class MappedFeatures String peptide = ResidueProperties.codonTranslate(codon); if (fromResidue != peptide.charAt(0)) { - String to3 = StringUtils.toSentenceCase( + String to3 = ResidueProperties.STOP.equals(peptide) ? "STOP" + : StringUtils.toSentenceCase( ResidueProperties.aa2Triplet.get(peptide)); String var = "p." + from3 + fromPosition + to3; if (!vars.contains(var)) -- 1.7.10.2