X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;h=653c071579c754563068095bb0a0a2bf3e985c82;hb=refs%2Fheads%2Freleases%2FRelease_2_10_0_Branch;hp=3a08409e00713157438182b6e867af4745e09398;hpb=9359a2279fcaa47910e31805b967390bffd6a573;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 3a08409..653c071 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -26,6 +26,7 @@ import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.api.ComplexAlignFile; import jalview.api.FeatureRenderer; +import jalview.api.FeatureSettingsModelI; import jalview.api.FeaturesDisplayedI; import jalview.bin.BuildDetails; import jalview.datamodel.AlignmentAnnotation; @@ -211,12 +212,14 @@ public class JSONFile extends AlignFile implements ComplexAlignFile if (exportSettings.isExportAnnotations()) { jsonAlignmentPojo -.setAlignAnnotation(annotationToJsonPojo( - annotations, seqs)); + .setAlignAnnotation(annotationToJsonPojo(annotations)); } else { - if (globalColourScheme.equalsIgnoreCase("RNA Helices")) + // These color schemes require annotation, disable them if annotations + // are not exported + if (globalColourScheme.equalsIgnoreCase("RNA Helices") + || globalColourScheme.equalsIgnoreCase("T-COFFEE SCORES")) { jsonAlignmentPojo.setGlobalColorScheme("None"); } @@ -360,7 +363,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } public static List annotationToJsonPojo( - Vector annotations, Vector seqs) + Vector annotations) { List jsonAnnotations = new ArrayList(); if (annotations == null) @@ -369,24 +372,29 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } for (AlignmentAnnotation annot : annotations) { + AlignmentAnnotationPojo alignAnnotPojo = new AlignmentAnnotationPojo(); + alignAnnotPojo.setDescription(annot.description); + alignAnnotPojo.setLabel(annot.label); + if (!Double.isNaN(annot.score)) + { + alignAnnotPojo.setScore(annot.score); + } + alignAnnotPojo.setCalcId(annot.getCalcId()); + alignAnnotPojo.setGraphType(annot.graph); + AnnotationDisplaySettingPojo annotSetting = new AnnotationDisplaySettingPojo(); annotSetting.setBelowAlignment(annot.belowAlignment); annotSetting.setCentreColLabels(annot.centreColLabels); - annotSetting.setScaleColLabel(annot.centreColLabels); + annotSetting.setScaleColLabel(annot.scaleColLabel); annotSetting.setShowAllColLabels(annot.showAllColLabels); annotSetting.setVisible(annot.visible); - - - AlignmentAnnotationPojo alignAnnotPojo = new AlignmentAnnotationPojo(); - alignAnnotPojo.setScore(annot.score); - alignAnnotPojo.setCalcId(annot.getCalcId()); - alignAnnotPojo.setDescription(annot.description); - alignAnnotPojo.setLabel(annot.label); - alignAnnotPojo.setGraphType(annot.graph); + annotSetting.setHasIcon(annot.hasIcons); alignAnnotPojo.setAnnotationSettings(annotSetting); - int seqHash = setAnnotationRefSeq(annot, seqs); - alignAnnotPojo.setSequenceRef(seqHash == 0 ? null : String - .valueOf(seqHash)); + SequenceI refSeq = annot.sequenceRef; + if (refSeq != null) + { + alignAnnotPojo.setSequenceRef(String.valueOf(refSeq.hashCode())); + } for (Annotation annotation : annot.annotations) { AnnotationPojo annotationPojo = new AnnotationPojo(); @@ -396,7 +404,10 @@ public class JSONFile extends AlignFile implements ComplexAlignFile annotationPojo.setValue(annotation.value); annotationPojo .setSecondaryStructure(annotation.secondaryStructure); - annotationPojo.setDisplayCharacter(annotation.displayCharacter); + String displayChar = annotation.displayCharacter == null ? null + : annotation.displayCharacter; + // System.out.println("--------------------->[" + displayChar + "]"); + annotationPojo.setDisplayCharacter(displayChar); if (annotation.colour != null) { annotationPojo.setColour(jalview.util.Format @@ -413,7 +424,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } else { - alignAnnotPojo.getAnnotations().add(null); + alignAnnotPojo.getAnnotations().add(annotationPojo); } } } @@ -422,29 +433,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile return jsonAnnotations; } - private static int setAnnotationRefSeq(AlignmentAnnotation annot, - Vector seqs) - { - if (annot == null || seqs == null || seqs.size() == 0) - { - return 0; - } - for (SequenceI seq : seqs) - { - if (seq == null || seq.getAnnotation() == null) - { - continue; - } - for (AlignmentAnnotation seqAnnot : seq.getAnnotation()) - { - if (seqAnnot == annot) - { - return seq.hashCode(); - } - } - } - return 0; - } @SuppressWarnings("unchecked") public JSONFile parse(Reader jsonAlignmentString) { @@ -495,7 +483,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile seqMap.put(seqUniqueId, seq); } - parseFeatures(jsonSeqArray); for (Iterator seqGrpIter = seqGrpJsonArray.iterator(); seqGrpIter @@ -534,8 +521,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } } SequenceGroup seqGrp = new SequenceGroup(grpSeqs, grpName, null, - displayBoxes, displayText, colourText, - startRes, endRes); + displayBoxes, displayText, colourText, startRes, endRes); seqGrp.cs = ColourSchemeMapper.getJalviewColourScheme(colourScheme, seqGrp); seqGrp.setShowNonconserved(showNonconserved); @@ -548,18 +534,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile .hasNext();) { JSONObject alAnnot = alAnnotIter.next(); - if (alAnnot == null) - { - continue; - } - JSONObject diplaySettings = (JSONObject) alAnnot - .get("annotationSettings"); - JSONArray annotJsonArray = (JSONArray) alAnnot.get("annotations"); Annotation[] annotations = new Annotation[annotJsonArray.size()]; int count = 0; - String calcId = alAnnot.get("calcId") == null ? "" : alAnnot.get( - "calcId").toString(); for (Iterator annotIter = annotJsonArray.iterator(); annotIter .hasNext();) { @@ -580,11 +557,14 @@ public class JSONFile extends AlignFile implements ComplexAlignFile .get("secondaryStructure").toString().charAt(0); String displayChar = annot.get("displayCharacter") == null ? "" : annot.get("displayCharacter").toString(); - Color color = annot.get("colour") == null ? Color.white - : UserColourScheme.getColourFromString(annot.get( - "colour").toString()); - annotations[count] = new Annotation(displayChar, desc, ss, val, - color); + + annotations[count] = new Annotation(displayChar, desc, ss, val); + if (annot.get("colour") != null) + { + Color color = UserColourScheme.getColourFromString(annot.get( + "colour").toString()); + annotations[count].colour = color; + } } ++count; } @@ -593,26 +573,43 @@ public class JSONFile extends AlignFile implements ComplexAlignFile .get("label").toString(), alAnnot.get("description") .toString(), annotations); alignAnnot.graph = (alAnnot.get("graphType") == null) ? 0 : Integer - .valueOf(alAnnot.get("graphType") - .toString()); - alignAnnot.scaleColLabel = (diplaySettings.get("scaleColLabel") == null) ? false - : Boolean.valueOf(diplaySettings.get("scaleColLabel") - .toString()); - alignAnnot.showAllColLabels = (diplaySettings - .get("showAllColLabels") == null) ? true : Boolean - .valueOf(diplaySettings.get("showAllColLabels").toString()); - alignAnnot.centreColLabels = (diplaySettings.get("centreColLabels") == null) ? true - : Boolean.valueOf(diplaySettings.get("centreColLabels") - .toString()); - alignAnnot.belowAlignment = (diplaySettings.get("belowAlignment") == null) ? false - : Boolean.valueOf(diplaySettings.get("belowAlignment") - .toString()); - alignAnnot.visible = (diplaySettings.get("visible") == null) ? true - : Boolean.valueOf(diplaySettings.get("visible").toString()); - - - alignAnnot.score = alAnnot.get("score") == null ? null : Double - .valueOf(alAnnot.get("score").toString()); + .valueOf(alAnnot.get("graphType").toString()); + + JSONObject diplaySettings = (JSONObject) alAnnot + .get("annotationSettings"); + if (diplaySettings != null) + { + + alignAnnot.scaleColLabel = (diplaySettings.get("scaleColLabel") == null) ? false + : Boolean.valueOf(diplaySettings.get("scaleColLabel") + .toString()); + alignAnnot.showAllColLabels = (diplaySettings + .get("showAllColLabels") == null) ? true : Boolean + .valueOf(diplaySettings.get("showAllColLabels") + .toString()); + alignAnnot.centreColLabels = (diplaySettings + .get("centreColLabels") == null) ? true + : Boolean.valueOf(diplaySettings.get("centreColLabels") + .toString()); + alignAnnot.belowAlignment = (diplaySettings.get("belowAlignment") == null) ? false + : Boolean.valueOf(diplaySettings.get("belowAlignment") + .toString()); + alignAnnot.visible = (diplaySettings.get("visible") == null) ? true + : Boolean.valueOf(diplaySettings.get("visible") + .toString()); + alignAnnot.hasIcons = (diplaySettings.get("hasIcon") == null) ? true + : Boolean.valueOf(diplaySettings.get("hasIcon") + .toString()); + + } + if (alAnnot.get("score") != null) + { + alignAnnot.score = Double + .valueOf(alAnnot.get("score").toString()); + } + + String calcId = (alAnnot.get("calcId") == null) ? "" : alAnnot.get( + "calcId").toString(); alignAnnot.setCalcId(calcId); String seqHash = (alAnnot.get("sequenceRef") != null) ? alAnnot .get("sequenceRef").toString() : null; @@ -630,8 +627,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile alignAnnot.adjustForAlignment(); } } - this.annotations.add(alignAnnot); alignAnnot.validateRangeAndDisplay(); + this.annotations.add(alignAnnot); + } } catch (Exception e) { @@ -712,6 +710,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } } + @Override public String getGlobalColourScheme() { return globalColourScheme; @@ -733,8 +732,13 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.displayedFeatures = displayedFeatures; } + @Override public void configureForView(AlignmentViewPanel avpanel) { + if (avpanel == null) + { + return; + } super.configureForView(avpanel); AlignViewportI viewport = avpanel.getAlignViewport(); AlignmentI alignment = viewport.getAlignment(); @@ -744,11 +748,14 @@ public class JSONFile extends AlignFile implements ComplexAlignFile fr = avpanel.cloneFeatureRenderer(); // Add non auto calculated annotation to AlignFile - for (AlignmentAnnotation annot : annots) + if (annots != null) { - if (annot != null && !annot.autoCalculated) + for (AlignmentAnnotation annot : annots) { - annotations.add(annot); + if (annot != null && !annot.autoCalculated) + { + annotations.add(annot); + } } } globalColourScheme = ColourSchemeProperty.getColourName(viewport @@ -758,6 +765,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } + @Override public boolean isShowSeqFeatures() { return showSeqFeatures; @@ -778,6 +786,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile return hiddenColumns; } + @Override public ColumnSelection getColumnSelection() { return columnSelection; @@ -788,6 +797,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.columnSelection = columnSelection; } + @Override public SequenceI[] getHiddenSequences() { if (hiddenSequences == null || hiddenSequences.isEmpty()) @@ -867,4 +877,19 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.exportJalviewSettings = exportJalviewSettings; } } + + /** + * Returns a descriptor for suitable feature display settings with + *
    + *
  • ResNums or insertions features visible
  • + *
  • insertions features coloured red
  • + *
  • ResNum features coloured by label
  • + *
  • Insertions displayed above (on top of) ResNums
  • + *
+ */ + @Override + public FeatureSettingsModelI getFeatureColourScheme() + { + return new PDBFeatureSettings(); + } }