X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fdatamodel%2FMappedFeatures.java;h=b69a103b88d818c270a9b2aec5f4d8df8c969b37;hb=3425cc9c6d08acd5f82b596d51e6577b2941d9b4;hp=07d38577e62ea2e99987bbbadd3eadaaa40e2ed5;hpb=c6d5255c09855fc1b0d03a085da9988a75cd3898;p=jalview.git 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))