X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FSequenceAnnotationReport.java;h=66db038818bc4d8c71e4bc197eb74cc9e239f809;hb=b3eead416d4a16141910b7dae1eda4eaf2272b6a;hp=6b826712db05ff9503209a7999a09128cf6a6cf2;hpb=8ace2707dd1c5cfbb1688efa265fd0afcec35def;p=jalview.git diff --git a/src/jalview/io/SequenceAnnotationReport.java b/src/jalview/io/SequenceAnnotationReport.java index 6b82671..66db038 100644 --- a/src/jalview/io/SequenceAnnotationReport.java +++ b/src/jalview/io/SequenceAnnotationReport.java @@ -21,8 +21,11 @@ package jalview.io; import jalview.api.FeatureColourI; +import jalview.datamodel.AlignmentAnnotation; 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 +71,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 +128,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 +167,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 +237,15 @@ public class SequenceAnnotationReport } } } + + if (mf != null) + { + String variants = mf.findProteinVariants(feature); + if (!variants.isEmpty()) + { + sb.append(" ").append(variants); + } + } } } @@ -353,12 +380,27 @@ public class SequenceAnnotationReport sb.append("
").append(tmp); maxWidth = Math.max(maxWidth, tmp.length()); } + SequenceI ds = sequence; while (ds.getDatasetSequence() != null) { ds = ds.getDatasetSequence(); } + /* + * add any annotation scores + */ + AlignmentAnnotation[] anns = ds.getAnnotation(); + for (int i = 0; anns != null && i < anns.length; i++) + { + AlignmentAnnotation aa = anns[i]; + if (aa != null && aa.hasScore() && aa.sequenceRef != null) + { + sb.append("
").append(aa.label).append(": ") + .append(aa.getScore()); + } + } + if (showDbRefs) { maxWidth = Math.max(maxWidth, appendDbRefs(sb, ds, summary)); @@ -373,12 +415,29 @@ 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); } } + + + if (sequence.getAnnotation("Search Scores") != null) + { + sb.append("
"); + String eValue = " E-Value: " + + sequence.getAnnotation("Search Scores")[0].getEValue(); + String bitScore = " Bit Score: " + + sequence.getAnnotation("Search Scores")[0].getBitScore(); + sb.append(eValue); + sb.append("
"); + sb.append(bitScore); + maxWidth = Math.max(maxWidth, eValue.length()); + maxWidth = Math.max(maxWidth, bitScore.length()); + } + sb.append("
"); sb.append(""); + return maxWidth; }