X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FUniprot.java;h=d44b1041fff1b8f7aa53c3ce7dbb1a79de94244b;hb=dc56d975105f135b5fd37a22913d164df51a02d8;hp=11fff9df709e5d533d97ba21d4e55f9645ef5c6c;hpb=ceaa7e68d47ff6a236c7445bd99c9e8d8bd7558e;p=jalview.git diff --git a/src/jalview/ws/dbsources/Uniprot.java b/src/jalview/ws/dbsources/Uniprot.java index 11fff9d..d44b104 100644 --- a/src/jalview/ws/dbsources/Uniprot.java +++ b/src/jalview/ws/dbsources/Uniprot.java @@ -42,6 +42,7 @@ import java.io.Reader; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; +import java.util.List; import java.util.Vector; import org.exolab.castor.mapping.Mapping; @@ -302,24 +303,66 @@ public class Uniprot extends DbSourceProxyImpl protected static String getDescription(UniprotFeature uf) { String orig = uf.getOriginal(); - String var = uf.getVariation(); + List variants = uf.getVariation(); StringBuilder sb = new StringBuilder(); /* * append variant in standard format if present * e.g. p.Arg59Lys */ - if (orig != null && !orig.isEmpty() && var != null && !var.isEmpty()) + if (orig != null && !orig.isEmpty() && variants != null + && !variants.isEmpty()) { - sb.append("p."); - String orig3 = ResidueProperties.aa2Triplet.get(orig); - sb.append(orig3 == null ? orig : StringUtils.toSentenceCase(orig3)); - sb.append(Integer.toString(uf.getPosition())); - String var3 = ResidueProperties.aa2Triplet.get(var); - sb.append(var3 == null ? var : StringUtils.toSentenceCase(var3)); - sb.append(" "); - } + int p = 0; + for (String var : variants) + { + // TODO proper HGVC nomenclature for delins structural variations + // for now we are pragmatic - any orig/variant sequence longer than + // three characters is shown with single-character notation rather than + // three-letter notation + sb.append("p."); + if (orig.length() < 4) + { + for (int c = 0, clen = orig.length(); c < clen; c++) + { + char origchar = orig.charAt(c); + String orig3 = ResidueProperties.aa2Triplet.get("" + origchar); + sb.append(orig3 == null ? origchar + : StringUtils.toSentenceCase(orig3)); + } + } + else + { + sb.append(orig); + } + + sb.append(Integer.toString(uf.getPosition())); + if (var.length() < 4) + { + for (int c = 0, clen = var.length(); c < clen; c++) + { + char varchar = var.charAt(c); + String var3 = ResidueProperties.aa2Triplet.get("" + varchar); + + sb.append(var3 != null ? StringUtils.toSentenceCase(var3) + : "" + varchar); + } + } + else + { + sb.append(var); + } + if (++p != variants.size()) + { + sb.append("\n"); + } + else + { + sb.append(" "); + } + } + } String description = uf.getDescription(); if (description != null) {