- object.marshal(out);\r
- out.close();\r
- fos.close();\r
- jout.close();\r
- }\r
- catch (Exception ex)\r
- {\r
- ex.printStackTrace();\r
- }\r
- }\r
-\r
- public static void LoadState(String file)\r
- {\r
- try{\r
- JalviewState state = new JalviewState();\r
- BufferedReader in = new BufferedReader(new FileReader(file));\r
- state = (JalviewState)state.unmarshal(in);\r
- Enumeration en = state.enumerateFile();\r
- while( en.hasMoreElements() )\r
- {\r
- LoadJalviewAlign( en.nextElement().toString());\r
- }\r
- }\r
- catch(Exception ex)\r
- { ex.printStackTrace(); return; }\r
- }\r
-\r
- public static void LoadJalviewAlign(String file)\r
- {\r
- JalviewModel object = new JalviewModel();\r
- Vector seqids = new Vector();\r
- try{\r
- FileInputStream fis = new FileInputStream(file);\r
- JarInputStream jin = new JarInputStream(fis);\r
- jin.getNextJarEntry();\r
- InputStreamReader in = new InputStreamReader(jin, "UTF-8");\r
- object = (JalviewModel) object.unmarshal(in);\r
- }\r
- catch(Exception ex)\r
- { System.out.println(ex); return; }\r
-\r
-\r
- SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);\r
- Sequence [] vamsasSeq = vamsasSet.getSequence();\r
-\r
- JalviewModelSequence jms = object.getJalviewModelSequence();\r
- //////////////////////////////////\r
- //LOAD SEQUENCES\r
- jalview.datamodel.Sequence [] jseqs = new jalview.datamodel.Sequence[vamsasSeq.length];\r
- JSeq [] JSEQ = object.getJalviewModelSequence().getJSeq();\r
- for(int i=0; i<vamsasSeq.length; i++)\r
- {\r
- jseqs[i] = new jalview.datamodel.Sequence(vamsasSeq[i].getName(),\r
- vamsasSeq[i].getSequence());\r
-\r
- jseqs[i].setStart( JSEQ[i].getStart());\r
- jseqs[i].setEnd( JSEQ[i].getEnd());\r
- jseqs[i].setColor( new java.awt.Color(JSEQ[i].getColour()) );\r
- seqids.add(jseqs[i]);\r
- }\r
-\r
- /////////////////////////////////\r
- jalview.datamodel.Alignment al = new jalview.datamodel.Alignment(jseqs);\r
- /////////////////////////////////\r
-\r
- //////////////////////////////////\r
- //LOAD ANNOTATIONS\r
- if(vamsasSet.getAnnotation()!=null)\r
- {\r
- Annotation[] an = vamsasSet.getAnnotation();\r
- for (int i = 0; i < an.length; i++)\r
- {\r
- AnnotationElement[] ae = an[i].getAnnotationElement();\r
- jalview.datamodel.Annotation anot[]\r
- = new jalview.datamodel.Annotation[al.getWidth()];\r
- for (int aa = 0; aa < ae.length; aa++)\r
+ }\r
+ }\r
+\r
+\r
+\r
+ /////////////////////////////////\r
+ //////////////////////////////////\r
+ //LOAD ANNOTATIONS\r
+ boolean hideQuality = true,\r
+ hideConservation = true,\r
+ hideConsensus = true;\r
+\r
+ if (vamsasSet.getAnnotation() != null)\r
+ {\r
+ Annotation[] an = vamsasSet.getAnnotation();\r
+\r
+ for (int i = 0; i < an.length; i++)\r
+ {\r
+ if (an[i].getLabel().equals("Quality"))\r
+ {\r
+ hideQuality = false;\r
+ continue;\r
+ }\r
+ else if(an[i].getLabel().equals("Conservation"))\r
+ {\r
+ hideConservation = false;\r
+ continue;\r
+ }\r
+ else if(an[i].getLabel().equals("Consensus"))\r
+ {\r
+ hideConsensus = false;\r
+ continue;\r
+ }\r
+\r
+ AnnotationElement[] ae = an[i].getAnnotationElement();\r
+ jalview.datamodel.Annotation[] anot = new jalview.datamodel.Annotation[al.getWidth()];\r
+\r
+ for (int aa = 0; aa < ae.length; aa++)\r
+ {\r
+ anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation(ae[aa].getDisplayCharacter(),\r
+ ae[aa].getDescription(),\r
+ ae[aa].getSecondaryStructure().length()==0?' ':ae[aa].getSecondaryStructure().charAt(0),\r
+ ae[aa].getValue());\r
+ anot[ae[aa].getPosition()].colour = new java.awt.Color( ae[aa].getColour() );\r
+ }\r
+\r
+ jalview.datamodel.AlignmentAnnotation jaa = null;\r
+\r
+ if (an[i].getGraph())\r
+ {\r
+ jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),\r
+ an[i].getDescription(), anot, 0, 0,\r
+ an[i].getGraphType());\r
+\r
+ jaa.graphGroup = an[i].getGraphGroup();\r
+\r
+ if (an[i].getThresholdLine() != null)\r
+ {\r
+ jaa.setThreshold(new jalview.datamodel.GraphLine(\r
+ an[i].getThresholdLine().getValue(),\r
+ an[i].getThresholdLine().getLabel(),\r
+ new java.awt.Color(an[i].getThresholdLine().getColour()))\r
+ );\r
+\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ jaa = new jalview.datamodel.AlignmentAnnotation(an[i].getLabel(),\r
+ an[i].getDescription(), anot);\r
+ }\r
+\r
+ if(an[i].getSequenceRef()!=null)\r
+ {\r
+ jaa.createSequenceMapping(\r
+ al.findName(an[i].getSequenceRef()), 1\r
+ );\r
+ al.findName(an[i].getSequenceRef()).addAlignmentAnnotation(jaa);\r
+ }\r
+\r
+ al.addAnnotation(jaa);\r
+ }\r
+ }\r
+\r
+\r
+ // af.changeColour() );\r
+ /////////////////////////\r
+ //LOAD GROUPS\r
+ if (jms.getJGroupCount() > 0)\r
+ {\r
+ JGroup[] groups = jms.getJGroup();\r
+\r
+ for (int i = 0; i < groups.length; i++)\r
+ {\r
+ ColourSchemeI cs = null;\r
+\r
+ if (groups[i].getColour() != null)\r
+ {\r
+ if (groups[i].getColour().startsWith("ucs"))\r
+ {\r
+ cs = GetUserColourScheme(jms, groups[i].getColour());\r
+ }\r
+ else\r
+ {\r
+ cs = ColourSchemeProperty.getColour(al,\r
+ groups[i].getColour());\r
+ }\r
+\r
+ if(cs!=null)\r
+ cs.setThreshold(groups[i].getPidThreshold(), true);\r
+ }\r
+\r
+ Vector seqs = new Vector();\r
+ int[] ids = groups[i].getSeq();\r
+\r
+ for (int s = 0; s < ids.length; s++)\r
+ {\r
+ seqs.addElement((jalview.datamodel.SequenceI) seqids.elementAt(\r
+ ids[s]));\r
+ }\r
+\r
+ jalview.datamodel.SequenceGroup sg = new jalview.datamodel.SequenceGroup(seqs,\r
+ groups[i].getName(), cs, groups[i].getDisplayBoxes(),\r
+ groups[i].getDisplayText(), groups[i].getColourText(),\r
+ groups[i].getStart(), groups[i].getEnd());\r
+\r
+ sg.setOutlineColour(new java.awt.Color(\r
+ groups[i].getOutlineColour()));\r
+\r
+ if (groups[i].getConsThreshold() != 0)\r
+ {\r
+ jalview.analysis.Conservation c = new jalview.analysis.Conservation("All",\r
+ ResidueProperties.propHash, 3, sg.getSequences(false), 0,\r
+ sg.getWidth() - 1);\r
+ c.calculate();\r
+ c.verdict(false, 25);\r
+ sg.cs.setConservation(c);\r
+ }\r
+\r
+ al.addGroup(sg);\r
+ }\r
+ }\r
+\r
+\r
+ /////////////////////////////////\r
+ // LOAD VIEWPORT\r
+ Viewport[] views = jms.getViewport();\r
+ Viewport view = views[0]; // DEAL WITH MULTIPLE VIEWPORTS LATER\r
+\r
+\r
+ AlignFrame af = new AlignFrame(al);\r
+\r
+ if(hiddenSeqs!=null)\r
+ {\r
+ for(int s=0; s<JSEQ.length; s++)\r
+ {\r
+ for(int r=0; r<JSEQ[s].getHiddenSequencesCount(); r++)\r
+ {\r
+ al.getSequenceAt(s).addHiddenSequence(\r
+ al.getSequenceAt( JSEQ[s].getHiddenSequences(r) )\r
+ );\r
+ }\r
+ }\r
+\r
+ for(int s=0; s<hiddenSeqs.size(); s++)\r
+ {\r
+ af.viewport.hideSequence(\r
+ (jalview.datamodel.SequenceI)hiddenSeqs.elementAt(s));\r
+ }\r
+ }\r
+\r
+\r
+ if(hideConsensus || hideQuality || hideConservation)\r
+ {\r
+ int hSize = al.getAlignmentAnnotation().length;\r
+ for (int h = 0; h < hSize; h++)\r
+ {\r
+ if (\r
+ (hideConsensus &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Consensus"))\r
+ ||\r
+ (hideQuality &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Quality"))\r
+ ||\r
+ (hideConservation &&\r
+ al.getAlignmentAnnotation()[h].label.equals("Conservation")))\r
+ {\r
+ al.deleteAnnotation(al.getAlignmentAnnotation()[h]);\r
+ hSize--;\r
+ h--;\r
+ }\r
+ }\r
+ af.alignPanel.adjustAnnotationHeight();\r
+ }\r
+\r
+ af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),\r
+ view.getHeight());\r
+ af.viewport.setStartRes(view.getStartRes());\r
+ af.viewport.setStartSeq(view.getStartSeq());\r
+ af.viewport.setShowAnnotation(view.getShowAnnotation());\r
+ af.viewport.showConservation = view.getShowConservation();\r
+ af.viewport.showQuality = view.getShowQuality();\r
+ af.viewport.showIdentity = view.getShowIdentity();\r
+ af.viewport.setAbovePIDThreshold(view.getPidSelected());\r
+ af.abovePIDThreshold.setSelected(view.getPidSelected());\r
+ af.viewport.setColourText(view.getShowColourText());\r
+ af.colourTextMenuItem.setSelected(view.getShowColourText());\r
+ af.viewport.setConservationSelected(view.getConservationSelected());\r
+ af.conservationMenuItem.setSelected(view.getConservationSelected());\r
+\r
+ af.viewport.setShowJVSuffix(view.getShowFullId());\r
+ af.seqLimits.setSelected(view.getShowFullId());\r
+\r
+ af.viewport.setFont(new java.awt.Font(view.getFontName(),\r
+ view.getFontStyle(), view.getFontSize()));\r
+ af.alignPanel.fontChanged();\r
+\r
+ af.viewport.setRenderGaps(view.getRenderGaps());\r
+ af.renderGapsMenuItem.setSelected(view.getRenderGaps());\r
+\r
+ af.viewport.setWrapAlignment(view.getWrapAlignment());\r
+ af.wrapMenuItem.setSelected(view.getWrapAlignment());\r
+\r
+ af.alignPanel.setWrapAlignment(view.getWrapAlignment());\r
+\r
+ af.annotationPanelMenuItem.setState(view.getShowAnnotation());\r
+ af.viewport.setShowAnnotation(view.getShowAnnotation());\r
+ af.alignPanel.setAnnotationVisible(view.getShowAnnotation());\r
+\r
+ af.viewport.setShowBoxes(view.getShowBoxes());\r
+ af.viewBoxesMenuItem.setSelected(view.getShowBoxes());\r
+ af.viewport.setShowText(view.getShowText());\r
+ af.viewTextMenuItem.setSelected(view.getShowText());\r
+\r
+ ColourSchemeI cs = null;\r
+\r
+ if (view.getBgColour() != null)\r
+ {\r
+ if (view.getBgColour().startsWith("ucs"))\r
+ {\r
+ cs = GetUserColourScheme(jms, view.getBgColour());\r
+ }\r
+ else if(view.getBgColour().startsWith("Annotation"))\r
+ {\r
+ //int find annotation\r
+ for (int i = 0; i < af.viewport.alignment.getAlignmentAnnotation().length; i++)\r
+ {\r
+ if (af.viewport.alignment.getAlignmentAnnotation()[i].label.\r
+ equals(view.getAnnotationColours().getAnnotation()))\r
+ {\r
+ if (af.viewport.alignment.getAlignmentAnnotation()[i].\r
+ getThreshold() == null)\r
+ {\r
+ af.viewport.alignment.getAlignmentAnnotation()[i].\r
+ setThreshold(\r
+ new jalview.datamodel.GraphLine(\r
+ view.getAnnotationColours().getThreshold(),\r
+ "Threshold", java.awt.Color.black)\r
+\r
+ );\r
+ }\r
+\r
+\r
+ if (view.getAnnotationColours().getColourScheme().equals(\r
+ "None"))\r
+ {\r
+ cs = new AnnotationColourGradient(\r
+ af.viewport.alignment.getAlignmentAnnotation()[i],\r
+ new java.awt.Color(view.getAnnotationColours().\r
+ getMinColour()),\r
+ new java.awt.Color(view.getAnnotationColours().\r
+ getMaxColour()),\r
+ view.getAnnotationColours().getAboveThreshold());\r
+ }\r
+ else if (view.getAnnotationColours().getColourScheme().\r
+ startsWith("ucs"))\r
+ {\r
+ cs = new AnnotationColourGradient(\r
+ af.viewport.alignment.getAlignmentAnnotation()[i],\r
+ GetUserColourScheme(jms, view.getAnnotationColours().\r
+ getColourScheme()),\r
+ view.getAnnotationColours().getAboveThreshold()\r
+ );\r
+ }\r
+ else\r
+ {\r
+ cs = new AnnotationColourGradient(\r
+ af.viewport.alignment.getAlignmentAnnotation()[i],\r
+ ColourSchemeProperty.getColour(al,\r
+ view.getAnnotationColours().getColourScheme()),\r
+ view.getAnnotationColours().getAboveThreshold()\r
+ );\r
+ }\r
+\r
+ // Also use these settings for all the groups\r
+ if (al.getGroups() != null)\r
+ for (int g = 0; g < al.getGroups().size(); g++)\r
+ {\r
+ jalview.datamodel.SequenceGroup sg\r
+ = (jalview.datamodel.SequenceGroup)al.getGroups().elementAt(g);\r
+\r
+ if(sg.cs == null)\r
+ continue;\r
+\r
+\r
+ /* if (view.getAnnotationColours().getColourScheme().equals("None"))\r
+ {\r
+ sg.cs = new AnnotationColourGradient(\r
+ af.viewport.alignment.getAlignmentAnnotation()[i],\r
+ new java.awt.Color(view.getAnnotationColours().\r
+ getMinColour()),\r
+ new java.awt.Color(view.getAnnotationColours().\r
+ getMaxColour()),\r
+ view.getAnnotationColours().getAboveThreshold());\r
+ }\r
+ else*/\r
+ {\r
+ sg.cs = new AnnotationColourGradient(\r
+ af.viewport.alignment.getAlignmentAnnotation()[i],\r
+ sg.cs,\r
+ view.getAnnotationColours().getAboveThreshold()\r
+ );\r
+ }\r
+\r
+ }\r
+\r
+\r
+ break;\r
+ }\r
+\r
+ }\r
+ }\r
+ else\r
+ {\r
+ cs = ColourSchemeProperty.getColour(al, view.getBgColour());\r
+ }\r
+\r
+ if(cs!=null)\r
+ {\r
+ cs.setThreshold(view.getPidThreshold(), true);\r
+ cs.setConsensus(af.viewport.vconsensus);\r
+ }\r
+ }\r
+\r
+ af.setColourSelected(view.getBgColour());\r
+ af.viewport.setGlobalColourScheme(cs);\r
+ af.viewport.setColourAppliesToAllGroups(false);\r
+ af.changeColour(cs);\r
+ if (view.getConservationSelected() && cs!=null)\r
+ {\r
+ cs.setConservationInc(view.getConsThreshold());\r
+ }\r
+\r
+ af.viewport.setColourAppliesToAllGroups(true);\r
+\r
+ if (view.getShowSequenceFeatures())\r
+ {\r
+ af.viewport.showSequenceFeatures = true;\r
+ af.showSeqFeatures.setSelected(true);\r
+ }\r
+\r
+ if(jms.getFeatureSettings()!=null)\r
+ {\r
+ af.viewport.featuresDisplayed = new Hashtable();\r
+ String [] renderOrder = new String[jms.getFeatureSettings().getSettingCount()];\r
+ for(int fs=0; fs<jms.getFeatureSettings().getSettingCount(); fs++)\r