X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FSequenceAnnotationReport.java;h=5a55b5b41e7a5c4e2cccc5317fdf5f2e7c2dacaf;hb=25da4ccb5679905ada8b21e4d21fd416c392ab76;hp=6b826712db05ff9503209a7999a09128cf6a6cf2;hpb=8ace2707dd1c5cfbb1688efa265fd0afcec35def;p=jalview.git diff --git a/src/jalview/io/SequenceAnnotationReport.java b/src/jalview/io/SequenceAnnotationReport.java index 6b82671..5a55b5b 100644 --- a/src/jalview/io/SequenceAnnotationReport.java +++ b/src/jalview/io/SequenceAnnotationReport.java @@ -23,6 +23,8 @@ package jalview.io; import jalview.api.FeatureColourI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; +import jalview.datamodel.GeneLociI; +import jalview.datamodel.MappedFeatures; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.util.MessageManager; @@ -68,11 +70,11 @@ public class SequenceAnnotationReport @Override public int compare(DBRefEntry ref1, DBRefEntry ref2) { - if (ref1.isChromosome()) + if (ref1 instanceof GeneLociI) { return -1; } - if (ref2.isChromosome()) + if (ref2 instanceof GeneLociI) { return 1; } @@ -125,19 +127,33 @@ public class SequenceAnnotationReport * Append text for the list of features to the tooltip * * @param sb - * @param rpos + * @param residuePos * @param features * @param minmax */ - public void appendFeatures(final StringBuilder sb, int rpos, + public void appendFeatures(final StringBuilder sb, int residuePos, List features, FeatureRendererModel fr) { - if (features != null) + for (SequenceFeature feature : features) { - for (SequenceFeature feature : features) - { - appendFeature(sb, rpos, fr, feature); - } + appendFeature(sb, residuePos, fr, feature, null); + } + } + + /** + * Appends text for mapped features (e.g. CDS feature for peptide or vice versa) + * + * @param sb + * @param residuePos + * @param mf + * @param fr + */ + public void appendFeatures(StringBuilder sb, int residuePos, + MappedFeatures mf, FeatureRendererModel fr) + { + for (SequenceFeature feature : mf.features) + { + appendFeature(sb, residuePos, fr, feature, mf); } } @@ -150,7 +166,8 @@ public class SequenceAnnotationReport * @param feature */ void appendFeature(final StringBuilder sb, int rpos, - FeatureRendererModel fr, SequenceFeature feature) + FeatureRendererModel fr, SequenceFeature feature, + MappedFeatures mf) { if (feature.isContactFeature()) { @@ -219,6 +236,15 @@ public class SequenceAnnotationReport } } } + + if (mf != null) + { + String variants = mf.findProteinVariants(feature); + if (!variants.isEmpty()) + { + sb.append(" ").append(variants); + } + } } } @@ -373,7 +399,7 @@ public class SequenceAnnotationReport .getNonPositionalFeatures()) { int sz = -sb.length(); - appendFeature(sb, 0, fr, sf); + appendFeature(sb, 0, fr, sf, null); sz += sb.length(); maxWidth = Math.max(maxWidth, sz); }