merge
authortcofoegbu <tcnofoegbu@dundee.ac.uk>
Thu, 8 Oct 2015 10:09:41 +0000 (11:09 +0100)
committertcofoegbu <tcnofoegbu@dundee.ac.uk>
Thu, 8 Oct 2015 10:09:41 +0000 (11:09 +0100)
1  2 
src/jalview/gui/AlignFrame.java
src/jalview/io/JSONFile.java

@@@ -2415,6 -2415,7 +2415,6 @@@ public class AlignFrame extends GAlignF
      }
    }
  
 -
    /**
     * DOCUMENT ME!
     * 
          cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
                  cs, "Background"));
        }
+       if (cs instanceof TCoffeeColourScheme)
+       {
+         tcoffeeColour.setEnabled(true);
+         tcoffeeColour.setSelected(true);
+       }
      }
  
      viewport.setGlobalColourScheme(cs);
@@@ -39,12 -39,14 +39,14 @@@ import jalview.datamodel.SequenceGroup
  import jalview.datamodel.SequenceI;
  import jalview.json.binding.biojson.v1.AlignmentAnnotationPojo;
  import jalview.json.binding.biojson.v1.AlignmentPojo;
+ import jalview.json.binding.biojson.v1.AnnotationDisplaySettingPojo;
  import jalview.json.binding.biojson.v1.AnnotationPojo;
  import jalview.json.binding.biojson.v1.ColourSchemeMapper;
  import jalview.json.binding.biojson.v1.SequenceFeaturesPojo;
  import jalview.json.binding.biojson.v1.SequenceGrpPojo;
  import jalview.json.binding.biojson.v1.SequencePojo;
  import jalview.schemes.ColourSchemeProperty;
+ import jalview.schemes.UserColourScheme;
  import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
  
  import java.awt.Color;
@@@ -90,6 -92,8 +92,8 @@@ public class JSONFile extends AlignFil
  
    private ArrayList<SequenceI> hiddenSequences;
  
+   private final static String TCOFFEE_SCORE = "TCoffeeScore";
    public JSONFile()
    {
      super();
        }
        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");
          }
        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.scaleColLabel);
+       annotSetting.setShowAllColLabels(annot.showAllColLabels);
+       annotSetting.setVisible(annot.visible);
+       annotSetting.setHasIcon(annot.hasIcons);
+       alignAnnotPojo.setAnnotationSettings(annotSetting);
+       SequenceI refSeq = annot.sequenceRef;
+       if (refSeq != null)
+       {
+         alignAnnotPojo.setSequenceRef(String.valueOf(refSeq.hashCode()));
+       }
        for (Annotation annotation : annot.annotations)
        {
          AnnotationPojo annotationPojo = new AnnotationPojo();
            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
+                     .getHexString(annotation.colour));
+           }
            alignAnnotPojo.getAnnotations().add(annotationPojo);
          }
          else
          {
-           alignAnnotPojo.getAnnotations().add(annotationPojo);
+           if (annot.getCalcId() != null
+                   && annot.getCalcId().equalsIgnoreCase(TCOFFEE_SCORE))
+           {
+             // do nothing
+           }
+           else
+           {
+             alignAnnotPojo.getAnnotations().add(annotationPojo);
+           }
          }
        }
        jsonAnnotations.add(alignAnnotPojo);
          seqMap.put(seqUniqueId, seq);
        }
  
 -
        parseFeatures(jsonSeqArray);
  
        for (Iterator<JSONObject> seqGrpIter = seqGrpJsonArray.iterator(); seqGrpIter
            }
          }
          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);
                      : annot.get("displayCharacter").toString();
  
              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;
          }
          AlignmentAnnotation alignAnnot = new AlignmentAnnotation(alAnnot
                  .get("label").toString(), alAnnot.get("description")
                  .toString(), annotations);
+         alignAnnot.graph = (alAnnot.get("graphType") == null) ? 0 : Integer
+                 .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;
+         Sequence sequence = (seqHash != null) ? seqMap.get(seqHash) : null;
+         if (sequence != null)
+         {
+           alignAnnot.sequenceRef = sequence;
+           sequence.addAlignmentAnnotation(alignAnnot);
+           if (alignAnnot.label.equalsIgnoreCase("T-COFFEE"))
+           {
+             alignAnnot.createSequenceMapping(sequence, sequence.getStart(),
+                     false);
+             sequence.addAlignmentAnnotation(alignAnnot);
+             alignAnnot.adjustForAlignment();
+           }
+         }
+         alignAnnot.validateRangeAndDisplay();
          this.annotations.add(alignAnnot);
        }
      } catch (Exception e)
      {
      {
        if (annot != null && !annot.autoCalculated)
        {
-         if (!annot.visible)
-         {
-           continue;
-         }
          annotations.add(annot);
        }
      }