Merge branch 'JAL-1422_srs' into JAL-1422_srs_r281
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 13 Jan 2014 14:09:34 +0000 (14:09 +0000)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 13 Jan 2014 14:09:34 +0000 (14:09 +0000)
Conflicts:
examples/linkedapplets_ng.html

197 files changed:
.classpath
.project
appletlib/JmolApplet-12.2.4.jar
build.xml
doc/i18n.html [new file with mode: 0644]
examples/PF00111_seed.stk [new file with mode: 0644]
examples/appletParameters.html
examples/applets.html
examples/embedded.html
examples/embeddedWJmol.html
examples/exampleFile_2_3.jar
examples/exampleFile_2_7.jar
examples/formComplete.html
examples/jalviewLiteJs.html
examples/javascriptLaunch.html
examples/linkedapplets_ng.html
examples/testdata/example_annot_file.jva [new file with mode: 0644]
examples/testdata/smad.fa [new file with mode: 0644]
examples/testdata/smad_groups.jva [new file with mode: 0644]
examples/testdata/test_combine_annot.jva [new file with mode: 0644]
examples/testdata/uniref50_iupred.jva [new file with mode: 0644]
examples/unfolded_RF00031.aln [new file with mode: 0644]
help/help.jhm
help/helpTOC.xml
help/html/features/annotationsFormat.html
help/html/features/preferences.html
help/html/menus/alignmentMenu.html
help/html/menus/alwselect.html
help/html/menus/popupMenu.html
help/html/webServices/RNAalifold.html [new file with mode: 0644]
help/html/webServices/RNAalifoldAnnotationRows.png [new file with mode: 0644]
lib/Jmol-12.2.4.jar
lib/min-jaba-client-2.0.jar [deleted file]
lib/min-jabaws-client-2.1.0.jar [new file with mode: 0644]
resources/lang/Messages.properties [new file with mode: 0644]
resources/lang/Messages_es.properties [new file with mode: 0644]
schemas/jalview.xsd
src/MCview/AppletPDBCanvas.java
src/MCview/AppletPDBViewer.java [changed mode: 0755->0644]
src/MCview/PDBViewer.java
src/jalview/analysis/AAFrequency.java
src/jalview/analysis/Dna.java
src/jalview/analysis/StructureFrequency.java
src/jalview/api/AlignViewControllerI.java [new file with mode: 0644]
src/jalview/api/AlignViewportI.java
src/jalview/appletgui/APopupMenu.java [changed mode: 0755->0644]
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/AlignViewport.java
src/jalview/appletgui/AnnotationColourChooser.java [changed mode: 0755->0644]
src/jalview/appletgui/AnnotationLabels.java
src/jalview/appletgui/AnnotationPanel.java
src/jalview/appletgui/AppletJmol.java
src/jalview/appletgui/CutAndPasteTransfer.java [changed mode: 0755->0644]
src/jalview/appletgui/FeatureColourChooser.java
src/jalview/appletgui/FeatureRenderer.java [changed mode: 0755->0644]
src/jalview/appletgui/FeatureSettings.java
src/jalview/appletgui/Finder.java [changed mode: 0755->0644]
src/jalview/appletgui/FontChooser.java [changed mode: 0755->0644]
src/jalview/appletgui/PCAPanel.java [changed mode: 0755->0644]
src/jalview/appletgui/PairwiseAlignPanel.java [changed mode: 0755->0644]
src/jalview/appletgui/RedundancyPanel.java [changed mode: 0755->0644]
src/jalview/appletgui/RotatableCanvas.java
src/jalview/appletgui/ScalePanel.java
src/jalview/appletgui/SeqPanel.java
src/jalview/appletgui/SliderPanel.java [changed mode: 0755->0644]
src/jalview/appletgui/TreeCanvas.java
src/jalview/appletgui/TreePanel.java
src/jalview/appletgui/UserDefinedColours.java [changed mode: 0755->0644]
src/jalview/bin/Cache.java
src/jalview/bin/Jalview.java
src/jalview/bin/JalviewLite.java
src/jalview/controller/AlignViewController.java [new file with mode: 0644]
src/jalview/datamodel/AlignedCodonFrame.java
src/jalview/datamodel/Alignment.java
src/jalview/datamodel/AlignmentI.java
src/jalview/datamodel/Annotation.java
src/jalview/datamodel/GraphLine.java
src/jalview/datamodel/Sequence.java
src/jalview/datamodel/SequenceCollectionI.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/datamodel/SequenceI.java
src/jalview/ext/jmol/JalviewJmolBinding.java
src/jalview/gui/AlignFrame.java [changed mode: 0755->0644]
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AnnotationColourChooser.java [changed mode: 0755->0644]
src/jalview/gui/AnnotationExporter.java [changed mode: 0755->0644]
src/jalview/gui/AnnotationLabels.java
src/jalview/gui/AnnotationPanel.java
src/jalview/gui/AppJmol.java
src/jalview/gui/AppVarnaBinding.java
src/jalview/gui/AssociatePdbFileWithSeq.java
src/jalview/gui/BlogReader.java
src/jalview/gui/Console.java
src/jalview/gui/CutAndPasteHtmlTransfer.java
src/jalview/gui/CutAndPasteTransfer.java [changed mode: 0755->0644]
src/jalview/gui/DasSourceBrowser.java [changed mode: 0755->0644]
src/jalview/gui/Desktop.java
src/jalview/gui/EPSOptions.java [changed mode: 0755->0644]
src/jalview/gui/EditNameDialog.java
src/jalview/gui/FeatureColourChooser.java
src/jalview/gui/FeatureRenderer.java [changed mode: 0755->0644]
src/jalview/gui/FeatureSettings.java [changed mode: 0755->0644]
src/jalview/gui/Finder.java
src/jalview/gui/JDatabaseTree.java
src/jalview/gui/Jalview2XML.java
src/jalview/gui/Jalview2XML_V1.java
src/jalview/gui/JalviewDialog.java
src/jalview/gui/OptsAndParamsPage.java
src/jalview/gui/PCAPanel.java [changed mode: 0755->0644]
src/jalview/gui/PaintRefresher.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/Preferences.java
src/jalview/gui/RotatableCanvas.java
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/SequenceFetcher.java
src/jalview/gui/TreeCanvas.java
src/jalview/gui/UserDefinedColours.java
src/jalview/gui/UserQuestionnaireCheck.java
src/jalview/gui/WebserviceInfo.java [changed mode: 0755->0644]
src/jalview/gui/WsJobParameters.java
src/jalview/gui/WsPreferences.java
src/jalview/io/AnnotationFile.java
src/jalview/io/AppletFormatAdapter.java
src/jalview/io/FileLoader.java
src/jalview/io/FileParse.java
src/jalview/io/NewickFile.java
src/jalview/io/StockholmFile.java
src/jalview/jbgui/GAlignFrame.java
src/jalview/jbgui/GRestServiceEditorPane.java
src/jalview/renderer/AnnotationRenderer.java
src/jalview/renderer/AwtRenderPanelI.java
src/jalview/schemabinding/version2/.castor.cdr
src/jalview/schemabinding/version2/AnnotationColours.java
src/jalview/schemabinding/version2/descriptors/AnnotationColoursDescriptor.java
src/jalview/schemes/AnnotationColourGradient.java
src/jalview/schemes/RNAHelicesColour.java
src/jalview/schemes/RNAHelicesColourChooser.java
src/jalview/schemes/ResidueProperties.java
src/jalview/structure/StructureSelectionManager.java
src/jalview/util/MessageManager.java [new file with mode: 0644]
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/workers/ConsensusThread.java
src/jalview/workers/StrucConsensusThread.java
src/jalview/ws/DBRefFetcher.java
src/jalview/ws/dbsources/EmblCdsSouce.java
src/jalview/ws/dbsources/EmblSource.java
src/jalview/ws/dbsources/GeneDbSource.java
src/jalview/ws/dbsources/Pdb.java
src/jalview/ws/dbsources/PfamFull.java
src/jalview/ws/dbsources/PfamSeed.java
src/jalview/ws/dbsources/RfamFull.java
src/jalview/ws/dbsources/RfamSeed.java
src/jalview/ws/dbsources/Uniprot.java
src/jalview/ws/dbsources/das/api/jalviewSourceI.java
src/jalview/ws/dbsources/das/datamodel/DasSequenceSource.java
src/jalview/ws/dbsources/das/datamodel/DasSourceRegistry.java
src/jalview/ws/dbsources/das/datamodel/JalviewSource.java
src/jalview/ws/jws2/AAConClient.java
src/jalview/ws/jws2/AADisorderClient.java
src/jalview/ws/jws2/JabaParamStore.java
src/jalview/ws/jws2/JabaWsServerQuery.java
src/jalview/ws/jws2/JabawsAlignCalcWorker.java
src/jalview/ws/jws2/JabawsCalcWorker.java [new file with mode: 0644]
src/jalview/ws/jws2/Jws2Discoverer.java
src/jalview/ws/jws2/ParameterUtils.java
src/jalview/ws/jws2/RNAalifoldClient.java [new file with mode: 0644]
src/jalview/ws/jws2/SequenceAnnotationWSClient.java
src/jalview/ws/jws2/dm/JabaOption.java
src/jalview/ws/jws2/jabaws2/Jws2Instance.java
src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java [new file with mode: 0644]
src/jalview/ws/rest/RestClient.java
src/jalview/ws/rest/RestJob.java
src/jalview/ws/rest/RestServiceDescription.java
src/jalview/ws/rest/params/SeqGroupIndexVector.java
src/jalview/ws/seqfetcher/ASequenceFetcher.java
src/jalview/ws/seqfetcher/DbSourceProxy.java
src/jalview/ws/uimodel/AlignAnalysisUIText.java [new file with mode: 0644]
test/jalview/analysis/DnaTranslation.java [new file with mode: 0644]
test/jalview/bin/CommandLineOperations.java [new file with mode: 0644]
test/jalview/gui/JAL1353bugdemo.java [new file with mode: 0644]
test/jalview/io/AnnotationFileIOTest.java [new file with mode: 0644]
test/jalview/io/FileIOTester.java [new file with mode: 0644]
test/jalview/io/NewickFileTests.java [new file with mode: 0644]
test/jalview/io/StockholmFileTest.java [new file with mode: 0644]
test/jalview/io/test_gz_fasta.gz [new file with mode: 0644]
test/jalview/schemes/DnaCodonTests.java [new file with mode: 0644]
test/jalview/ws/gui/Jws2ParamView.java
test/jalview/ws/jabaws/DisorderAnnotExportImport.java [new file with mode: 0644]
test/jalview/ws/jabaws/JalviewJabawsTestUtils.java [new file with mode: 0644]
test/jalview/ws/jabaws/RNAStructExportImport.java [new file with mode: 0644]
test/jalview/ws/rest/ShmmrRSBSService.java [new file with mode: 0644]
test/jalview/ws/seqfetcher/DbRefFetcherTest.java [new file with mode: 0644]
utils/InstallAnywhere/Jalview.iap_xml
utils/InstallAnywhere/jalview_buildinstaller.xml
utils/proguard.jar

index 6cffc21..c22cae5 100644 (file)
        <classpathentry kind="lib" path="lib/miglayout-4.0-swing.jar"/>
        <classpathentry kind="lib" path="lib/jswingreader-0.3.jar" sourcepath="/jswingreader"/>
        <classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/>
-       <classpathentry kind="lib" path="lib/min-jaba-client-2.0.jar" sourcepath="/clustengine2"/>
        <classpathentry kind="lib" path="lib/Jmol-12.2.4.jar"/>
        <classpathentry kind="lib" path="appletlib/JmolApplet-12.2.4.jar"/>
        <classpathentry kind="lib" path="lib/jdas-1.0.4.jar"/>
        <classpathentry kind="lib" path="lib/spring-core-3.0.5.RELEASE.jar"/>
        <classpathentry kind="lib" path="lib/spring-web-3.0.5.RELEASE.jar"/>
+       <classpathentry kind="lib" path="lib/VARNAv3-9-dev.jar"/>
+       <classpathentry kind="lib" path="lib/groovy-all-1.8.2.jar"/>
+       <classpathentry kind="lib" path="lib/min-jabaws-client-2.1.0.jar" sourcepath="/clustengine"/>
        <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin.jar"/>
-       <classpathentry kind="lib" path="/Users/jimp/git/jalview_clean/lib/VARNAv3-9-dev.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
        <classpathentry kind="output" path="classes"/>
 </classpath>
index 5f4b511..aa7e6f2 100644 (file)
--- a/.project
+++ b/.project
                                </dictionary>
                        </arguments>
                </buildCommand>
-               <buildCommand>
-                       <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
-                       <triggers>full,incremental,</triggers>
-                       <arguments>
-                               <dictionary>
-                                       <key>LaunchConfigHandle</key>
-                                       <value>&lt;project&gt;/.externalToolBuilders/buildapplet [Builder].launch</value>
-                               </dictionary>
-                       </arguments>
-               </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
index aeecb80..e17c4ac 100644 (file)
Binary files a/appletlib/JmolApplet-12.2.4.jar and b/appletlib/JmolApplet-12.2.4.jar differ
index 0f81af7..12e16a8 100755 (executable)
--- a/build.xml
+++ b/build.xml
@@ -85,6 +85,8 @@
                <!-- Key Password -->
                <property name="jalview.key.pass" value="alignmentisfun" />
 
+                   
+                   
                <!-- Don't change anything below here unless you know what you are doing! -->
                <!-- Url path for WebStart in JNLP file -->
                <property name="WebStartLocation" value="http://www.jalview.org/webstart" />
                <property name="WebStartImage" value="JalviewLogo_big.png"/>
                <!-- J2SE version needed for webstart launch -->
                <property name="j2sev" value="1.6+"/>
+
+    <!-- Permissions for running Java applets and applications. Defaults are those suitable for deploying jalview webstart/jalviewLite at www.jalview.org -->
+    <property name="application.codebase" value="*.jalview.org"/>
+    <property name="applet.codebase" value="*.jalview.org"/>
+    <property name="applet.caller-codebase" value="${applet.codebase}"/>
+
                <!-- build directory configuration -->
                <property name="libDir" value="lib" />
                <property name="resourceDir" value="resources" />
 
        <target name="makefulldist" depends="makedist">
                <!-- the default keystore details might need to be edited here -->
-               <signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false">
+               <signjar storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false" sigalg="SHA1withRSA">
 
                        <fileset dir="${packageDir}">
                                <include name="*.jar" />
                                <include name="*.jar"/>
                        </fileset>
                </delete>
-               <jar destfile="${packageDir}/${outputJar}">
+               <jar destfile="${packageDir}/${outputJar}" index="true">
                        <manifest>
                                <attribute name="Main-Class" value="jalview.bin.Jalview" />
+        <attribute name="Permissions" value="all-permissions" />
+        <!--<attribute name="Trusted-Lib" value="true" /> -->
+        <attribute name="Application-Name" value="Jalview Desktop"/>
+        <attribute name="Codebase" value="${application.codebase}"/>
                        </manifest>
                        <fileset dir="${outputDir}/">
                                <exclude name="cache*/**" />
        <target name="packageApplet" depends="compileApplet, buildPropertiesFile">
                <copy file="${resourceDir}/images/idwidth.gif" toFile="${outputDir}/images/idwidth.gif" />
                <copy file="${resourceDir}/images/link.gif" toFile="${outputDir}/images/link.gif" />
-               <jar destfile="in.jar">
+               <copy todir="${outputDir}/lang">
+                       <fileset dir="${resourceDir}/lang"><include name="**.*"/></fileset></copy>
+               <jar destfile="in.jar" index="true">
                        <manifest>
                                <attribute name="Main-Class" value="jalview.bin.JalviewLite" />
+                               <attribute name="Application-Name" value="JalviewLite Applet"/>
+                               <!--            <attribute name="Permissions" value="sandbox" /> -->
+                               <!--<attribute name="Trusted-Lib" value="true" /> -->
+                               <attribute name="Codebase" value="${applet.codebase}"/>
+                               <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}"/>
                        </manifest>
                        <fileset dir="${outputDir}">
                                <include name="com/**" />
                                <include name=".build_properties" />
                                <include name="images/idwidth.gif" />
                                <include name="images/link.gif" />
+                               <include name="lang/**" />
                        </fileset>
                </jar>
        </target>
                        <injar file="in.jar" />
                        <outjar file="${jalviewLiteJar}" />
                        <libraryjar refid="obfuscateDeps.path" />
+                       <dontwarn/>
                        <keep access="public" type="class" name="jalview.bin.JalviewLite">
                                <field access="public" />
                                <method access="public" />
                                <constructor access="public" />
                        </keep>
+                       <keep access="public" type="class" name="jalview.appletgui.AlignFrame">
+                               <field access="public" />
+                               <method access="public" />
+                               <constructor access="public" />
+                       </keep>
                        <!--      -libraryjars "${obfuscateDeps}"
       -injars      in.jar
       -outjars     jalviewApplet.jar
                      <include name="**/*"/>
                        </fileset>
          </copy>
-                       
+           <jar update="true" index="true" jarfile="${packageDir}/examples/${jalviewLiteJar}"/>
+           <jar update="true" index="true" jarfile="${packageDir}/examples/${jmolJar}">
+               <manifest>
+               <attribute name="Application-Name" value="Jmol (bundled with JalviewLite)"/>
+               <!--          <attribute name="Permissions" value="sandbox" /> -->
+               <!--<attribute name="Trusted-Lib" value="true" /> -->
+               <attribute name="Codebase" value="${applet.codebase}"/>
+               <attribute name="Caller-Allowable-Codebase" value="${applet.caller-codebase}"/>
+                 </manifest>
+               </jar>
+    <signjar sigalg="SHA1WithRSA" storepass="${jalview.keystore.pass}" keypass="${jalview.key.pass}" keystore="${jalview.keystore}" alias="${jalview.key}" lazy="false" verbose="false">
+      <fileset dir="${packageDir}/examples">
+        <include name="*.jar" />
+      </fileset>
+    </signjar>
        </target>
        <target name="sourcedoc" description="Create jalview source documentation pages" depends="init">
         <javadoc destdir="${javadocDir}">
diff --git a/doc/i18n.html b/doc/i18n.html
new file mode 100644 (file)
index 0000000..d2a7420
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<!--\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)\r
+ * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle\r
+ * \r
+ * This file is part of Jalview.\r
+ * \r
+ * Jalview is free software: you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License \r
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
+ *  \r
+ * Jalview is distributed in the hope that it will be useful, but \r
+ * WITHOUT ANY WARRANTY; without even the implied warranty \r
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
+ * PURPOSE.  See the GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
+-->\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+  <head>Jalview i18n</head>\r
+  <body>\r
+<h1>Best practices</h1>\r
+<ol>\r
+<li>Follow the standards described in this guide</li>\r
+<li>Always use properties files for user interface text; never include displayable text in code</li>\r
+<li>Use properties files only for user interface text (Messages_xx.properties) and config files for configuration settings (jalview.properties).</li>\r
+<li>Use a proper naming schema for keys in your resource bundles. The name of the keys should provide some information about the context of the displayed text. This helps the translators during the translation process.</li>\r
+<li>Group keys by view, ie. edit.title, edit.instructions, list.title, list.instructions, create.title, etc</li>\r
+<li>Never use displayable text when executing comparisons within the logic of the tool (separate codified values from displayable text)</li>\r
+<li>Always use the MessageManager class for retrieving properties values, and invoke MessageManager methods dynamically, to accommodate dynamic user preferences (see MessageManager below).</li>\r
+<li>All numbers and dates should be formatted specific to the user's locale (e.g. java.text.NumberFormat and java.text.DateFormat)</li>\r
+<li>Test code in more than one language</li>\r
+</ol>\r
+<h1>MessageManager</h1>\r
+<p>The jalview.util.MessageManager class is a wrapper class for the ResourceBundle class. It provides dynamic language/locale support for individual users, and is recommended for all Jalview code.</p>\r
+<p>To use it within your code, you only have to invoke MessageManager with the text key in Messages_xx.properties:</p>\r
+<p>JButton ok = new JButton(MessageManager.getString("button.ok"));</p>\r
+<p>This will set JButton text to the one included at button.ok key. In English JButton text will be OK, while in Spanish will be Aceptar. This is the big thing of i18n. :)</p>\r
+<h1>How to translate Jalview</h1>\r
+<p>Anyone interested in localizing/translating Jalview is strongly encouraged to join the <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a> list. We would recommend that you read this entire page before proceeding.</p>\r
+<p>If you are planning on working on a Jalview translation, please send us an email (<a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>). There may be someone else already working on translating Jalview to your target language.</p>\r
+<p>Once you have downloaded the source code (available at <a href="http://www.jalview.org/download">http://www.jalview.org/download</a>), you must edit {jalview.home}/resources/lang/Messages_xx.properties, where xx refers to your language country code. If it doesn't exits, rename Messages.properties to Messages_xx.properties.</p>\r
+<p>Next step...start transtalation!</p>\r
+<p>Once you have it translated, we would appreciate if you contribute it forwarding the file to <a href="mailto:jalview-dev@jalview.org">Jalview Development List</a>. We will commit it to the code base as soon as possible. Thanks so much for this in advance!</p>\r
+</body>\r
+</html>\r
+\r
diff --git a/examples/PF00111_seed.stk b/examples/PF00111_seed.stk
new file mode 100644 (file)
index 0000000..d98c09f
--- /dev/null
@@ -0,0 +1,523 @@
+# STOCKHOLM 1.0
+#=GF ID   Fer2
+#=GF AC   PF00111.22
+#=GF DE   2Fe-2S iron-sulfur cluster binding domain
+#=GF PI   fer2; 
+#=GF AU   Sonnhammer ELL
+#=GF SE   Prosite
+#=GF GA   20.70 15.00;
+#=GF TC   20.70 15.70;
+#=GF NC   20.60 14.90;
+#=GF BM   hmmbuild HMM.ann SEED.ann
+#=GF SM   hmmsearch -Z 15929002 -E 1000 --cpu 4 HMM pfamseq
+#=GF TP   Domain
+#=GF WK   Ferredoxin
+#=GF DR   INTERPRO; IPR001041;
+#=GF DR   PROSITE; PDOC00175;
+#=GF DR   PROSITE; PDOC00642;
+#=GF DR   SCOP; 3fxc; fa;
+#=GF DR   HOMSTRAD; fer2;
+#=GF DR   HOMSTRAD; Ald_Xan_dh_1;
+#=GF SQ   206
+#=GS FER_GLEJA/8-82        AC P00233.1
+#=GS FER2_RAPSA/9-84       AC P14937.1
+#=GS Q39648_CITSI/61-136   AC Q39648.1
+#=GS FER3_MAIZE/63-138     AC P27788.1
+#=GS FER6_MAIZE/66-141     AC P94044.1
+#=GS FER1_SYNP2/9-83       AC P31965.2
+#=GS FER1_EQUAR/7-81       AC P00235.1
+#=GS FER2_EQUAR/7-80       AC P00237.1
+#=GS FER2_EQUAR/7-80       DR PDB; 1WRI A; 7-80;
+#=GS FER2_PLEBO/10-85      AC P46035.2
+#=GS P95533_PSEPU/253-328  AC P95533.1
+#=GS KSHB_MYCTU/273-348    AC P96853.1
+#=GS Q44253_ACISP/251-326  AC Q44253.1
+#=GS Q59656_PLEBO/573-647  AC Q59656.1
+#=GS P71846_MYCTU/600-675  AC P71846.3
+#=GS O84985_PSEPU/271-347  AC O84985.2
+#=GS PAAE_ECOLI/266-342    AC P76081.1
+#=GS HCR_ECOLI/241-316     AC P75824.3
+#=GS O87803_PSEST/5-82     AC O87803.2
+#=GS TMOF_PSEME/4-81       AC Q03304.1
+#=GS O32476_PSESP/4-81     AC O32476.1
+#=GS Q51944_BURPI/5-82     AC Q51944.1
+#=GS Q53028_RHOCO/4-80     AC Q53028.1
+#=GS Q45344_BURPI/10-88    AC Q45344.1
+#=GS Q9ZNP1_COMTE/9-88     AC Q9ZNP1.1
+#=GS Q9Z418_PSEPU/11-90    AC Q9Z418.1
+#=GS Q9ZAN6_9BURK/12-91    AC Q9ZAN6.1
+#=GS FERN_PSEPU/7-85       AC P23263.1
+#=GS O24827_ACISP/7-85     AC O24827.1
+#=GS FERX_PSEPU/8-86       AC P23103.1
+#=GS Q52061_PSEPU/8-86     AC Q52061.1
+#=GS Q52167_PSEPU/8-86     AC Q52167.1
+#=GS O84964_9RALS/4-82     AC O84964.1
+#=GS Q9Z3W9_9SPHN/8-85     AC Q9Z3W9.1
+#=GS DMPP_PSEUF/5-82       AC P19734.3
+#=GS O84963_9RALS/4-81     AC O84963.1
+#=GS Q52574_PSESP/5-83     AC Q52574.1
+#=GS Q9ZNP2_COMTE/5-82     AC Q9ZNP2.1
+#=GS Q43983_ACICA/5-82     AC Q43983.1
+#=GS O87617_PSEAE/3-78     AC O87617.1
+#=GS O52378_9RALS/3-78     AC O52378.1
+#=GS Q51492_PSEAE/3-78     AC Q51492.1
+#=GS NDOR_PSEPU/3-78       AC Q52126.1
+#=GS Q52140_PSEPU/3-78     AC Q52140.1
+#=GS Q9Z9X8_9GAMM/242-317  AC Q9Z9X8.1
+#=GS VANB_PSEUH/234-309    AC O05617.1
+#=GS VANB_PSES9/231-306    AC P12580.1
+#=GS VANB_PSEPU/231-307    AC O54037.1
+#=GS VANB_ACIAD/234-309    AC O24840.1
+#=GS O88034_STRCO/230-305  AC O88034.1
+#=GS P94680_COMTE/234-309  AC P94680.1
+#=GS CBAB_COMTE/232-307    AC Q44257.2
+#=GS POBB_PSEPS/236-311    AC Q52186.1
+#=GS YEAX_ECOLI/237-313    AC P76254.1
+#=GS Q47914_SPHCR/241-316  AC Q47914.2
+#=GS PDR_BURCE/241-314     AC P33164.3
+#=GS PDR_BURCE/241-314     DR PDB; 2PIA A; 240-313;
+#=GS PHT2_PSEPU/243-316    AC Q05182.1
+#=GS O86347_MYCTU/231-301  AC O86347.3
+#=GS YFAE_ECOLI/4-77       AC P0ABW3.1
+#=GS Y1309_HAEIN/3-75      AC P45154.1
+#=GS O31003_VIBAN/5-73     AC O31003.1
+#=GS RFBI_SALTY/5-76       AC P26395.1
+#=GS P95461_9PSED/17-94    AC P95461.1
+#=GS O85971_SPHAR/13-90    AC O85971.1
+#=GS XYLA_PSEPU/20-97      AC P21394.1
+#=GS YCBX_ECOLI/293-362    AC P75863.1
+#=GS P96096_THIFE/9-86     AC P96096.1
+#=GS MMOC_METTR/7-81       AC Q53563.1
+#=GS O85675_ACIAD/8-85     AC O85675.1
+#=GS BENC_ACIAD/19-98      AC P07771.2
+#=GS BENC_ACIAD/19-98      DR PDB; 1KRH B; 9-88;
+#=GS BENC_ACIAD/19-98      DR PDB; 1KRH A; 9-88;
+#=GS XYLZ_PSEPU/8-86       AC P23101.1
+#=GS CBDC_BURCE/8-85       AC Q51603.1
+#=GS O66892_AQUAE/7-72     AC O66892.1
+#=GS O85226_PSEFL/27-86    AC O85226.1
+#=GS O29575_ARCFU/14-75    AC O29575.1
+#=GS O27878_METTH/21-82    AC O27878.1
+#=GS Y092_METJA/14-73      AC Q57557.1
+#=GS FER5_RHOCA/10-107     AC P37097.2
+#=GS Q44501_AZOVI/10-107   AC Q44501.1
+#=GS Q46508_DESFR/6-74     AC Q46508.1
+#=GS Q9ZBV9_STRCO/15-78    AC Q9ZBV9.1
+#=GS NUOG_MYCTU/19-82      AC P95175.2
+#=GS O87815_CUPNE/22-85    AC O87815.1
+#=GS NQO3_THET8/4-88       AC Q56223.2
+#=GS NQO3_THET8/4-88       DR PDB; 3M9S C; 4-88;
+#=GS NQO3_THET8/4-88       DR PDB; 3M9S 3; 4-88;
+#=GS P74022_SYNY3/6-69     AC P74022.1
+#=GS P94157_SYNP6/6-69     AC P94157.1
+#=GS Q44513_ANAVA/6-69     AC Q44513.1
+#=GS P77908_MOOTH/4-67     AC P77908.3
+#=GS Q9ZJW1_HELPJ/4-65     AC Q9ZJW1.1
+#=GS O05397_BACSU/11-72    AC O05397.1
+#=GS YJGC_BACSU/7-68       AC O34720.1
+#=GS NUOG_SALTI/4-72       AC P0A1Y5.2
+#=GS O66748_AQUAE/6-70     AC O66748.1
+#=GS NDUS1_DICDI/5-71      AC Q34312.1
+#=GS NQO3_PARDE/7-71       AC P29915.4
+#=GS NDUS1_NEUCR/38-101    AC P24918.2
+#=GS NUOG_RICPR/4-67       AC Q9ZCF6.1
+#=GS NDUS1_SOLTU/70-133    AC Q43644.1
+#=GS NDUS1_RECAM/4-67      AC O21241.1
+#=GS NDUS1_BOVIN/34-97     AC P15690.1
+#=GS O52683_THEMA/3-65     AC O52683.1
+#=GS Q46606_DESVU/3-71     AC Q46606.1
+#=GS HOXU_CUPNH/5-66       AC P22318.2
+#=GS P72305_RHOOP/5-66     AC P72305.1
+#=GS Q59261_CLOSA/4-67     AC Q59261.1
+#=GS Q9ZNE4_CLOPE/4-67     AC Q9ZNE4.1
+#=GS PHF1_CLOPA/4-67       AC P29166.1
+#=GS Q59262_CLOAB/4-66     AC Q59262.1
+#=GS P74801_SYNY3/5-63     AC P74801.1
+#=GS XDHE_BACSU/18-77      AC O32143.1
+#=GS HCRC_THAAR/7-66       AC O33818.1
+#=GS HCRC_THAAR/7-66       DR PDB; 1SB3 F; 7-66;
+#=GS HCRC_THAAR/7-66       DR PDB; 1RM6 C; 7-66;
+#=GS HCRC_THAAR/7-66       DR PDB; 1RM6 F; 7-66;
+#=GS HCRC_THAAR/7-66       DR PDB; 1SB3 C; 7-66;
+#=GS P95635_RHOPA/15-74    AC P95635.1
+#=GS XDHC_ECOLI/11-69      AC Q46801.1
+#=GS YAGT_ECOLI/65-124     AC P77165.1
+#=GS DCMS_HYDPS/8-67       AC P19915.2
+#=GS Q52589_9PSED/8-67     AC Q52589.1
+#=GS O52837_BRAJA/6-65     AC O52837.1
+#=GS O53709_MYCTU/5-64     AC O53709.1
+#=GS O87682_ARTNI/8-67     AC O87682.1
+#=GS Q59128_ARTNI/14-73    AC Q59128.1
+#=GS P72223_PSEPU/14-73    AC P72223.1
+#=GS P72223_PSEPU/14-73    DR PDB; 1T3Q A; 14-73;
+#=GS P72223_PSEPU/14-73    DR PDB; 1T3Q D; 14-73;
+#=GS Q9ZBN8_STRCO/5-65     AC Q9ZBN8.1
+#=GS O54050_RHOCA/5-68     AC O54050.1
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRP A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3R A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3S A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRP G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W54 E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRP E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W55 A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3R E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3S E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W54 G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3R G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W54 A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRO A; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRO E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W55 E; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W55 C; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3R C; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRO C; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W54 C; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3S G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W55 G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 2W3S C; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRO G; 5-68;
+#=GS O54050_RHOCA/5-68     DR PDB; 1JRP C; 5-68;
+#=GS O23887_MAIZE/15-85    AC O23887.1
+#=GS ALDO4_ARATH/8-78      AC Q7G191.2
+#=GS ALDO1_ARATH/23-95     AC Q7G193.2
+#=GS O30328_ACEEU/4-63     AC O30328.1
+#=GS IORA_BREDI/4-64       AC Q51697.1
+#=GS XDH_EMENI/39-108      AC Q12553.2
+#=GS O61198_CAEEL/8-78     AC O61198.2
+#=GS O17892_CAEEL/18-86    AC O17892.1
+#=GS XDH_DROSU/13-83       AC P91711.1
+#=GS O17506_BOMMO/19-89    AC O17506.1
+#=GS Q17250_BOMMO/18-88    AC Q17250.2
+#=GS ADO_BOVIN/9-79        AC P48034.2
+#=GS XDH_BOVIN/8-78        AC P80457.4
+#=GS XDH_BOVIN/8-78        DR PDB; 1V97 B; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NVY A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NVY J; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NRZ J; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NVV A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NRZ A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 1N5X A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 1N5X B; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 1V97 A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 1VDV A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NVV J; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 1VDV B; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NS1 A; 8-78;
+#=GS XDH_BOVIN/8-78        DR PDB; 3NS1 J; 8-78;
+#=GS MOP_DESGI/6-65        AC Q46509.1
+#=GS MOP_DESGI/6-65        DR PDB; 1VLB A; 6-65;
+#=GS MOP_DESGI/6-65        DR PDB; 1SIJ A; 6-65;
+#=GS O53669_MYCTU/13-78    AC O53669.1
+#=GS O29566_ARCFU/5-80     AC O29566.1
+#=GS O30225_ARCFU/5-84     AC O30225.1
+#=GS NQRF_CHLTR/46-122     AC O84745.1
+#=GS NQRF_HAEIN/43-119     AC O05012.1
+#=GS NQRF_VIBAL/39-115     AC Q56584.1
+#=GS O84062_CHLTR/8-83     AC O84062.1
+#=GS Q9Z8H9_CHLPN/8-83     AC Q9Z8H9.1
+#=GS CSMJ_CHLTE/5-82       AC O68983.1
+#=GS CSMI_CHLTE/5-82       AC O68988.1
+#=GS FER_TRIVA/13-90       AC P21149.1
+#=GS FER_TRIVA/13-90       DR PDB; 1L5P A; 5-83;
+#=GS FER_TRIVA/13-90       DR PDB; 1L5P C; 5-83;
+#=GS FER_TRIVA/13-90       DR PDB; 1L5P B; 5-83;
+#=GS P73774_SYNY3/7-88     AC P73774.1
+#=GS FER_BUCAP/10-92       AC O51882.1
+#=GS O69222_AZOVI/11-93    AC O69222.1
+#=GS FER_HAEIN/10-92       AC P44428.2
+#=GS FER_PSEAE/10-92       AC Q51383.2
+#=GS ADRX_YEAST/67-149     AC Q12184.1
+#=GS ADX_PIG/71-155        AC P00258.2
+#=GS FER2_RICPR/11-93      AC Q9ZDW6.1
+#=GS O49551_ARATH/44-127   AC O49551.1
+#=GS ETP1_SCHPO/525-592    AC Q10361.2
+#=GS ETP1_SCHPO/525-592    DR PDB; 2WLB A; 525-607;
+#=GS ETP1_SCHPO/525-592    DR PDB; 2WLB B; 525-607;
+#=GS O07876_SPHSX/8-91     AC O07876.1
+#=GS Q9ZAM5_SPHSX/8-91     AC Q9ZAM5.1
+#=GS FER2_CAUCR/8-91       AC P37098.1
+#=GS FER6_RHOCA/7-91       AC P80306.1
+#=GS FER6_RHOCA/7-91       DR PDB; 1UWM A; 7-91;
+#=GS P74447_SYNY3/31-113   AC P74447.1
+#=GS P73171_SYNY3/7-85     AC P73171.1
+#=GS FER1_AQUAE/3-83       AC O67065.1
+#=GS FER4_RHOCA/7-86       AC P16022.1
+#=GS P74283_SYNY3/5-88     AC P74283.1
+#=GS PUTX_PSEPU/8-92       AC P00259.3
+#=GS PUTX_PSEPU/8-92       DR PDB; 1PDX A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1OQR C; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1OQR B; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1XLP C; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1R7S A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1OQR A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1YJJ A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1R7S C; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1OQQ B; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1XLP A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1XLP B; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1R7S B; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1OQQ A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1XLN B; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1YJI A; 7-91;
+#=GS PUTX_PSEPU/8-92       DR PDB; 1XLN A; 7-91;
+#=GS TERPB_PSESP/8-92      AC P33007.2
+#=GS P95277_MYCTU/9-84     AC P95277.1
+#=GS O05933_PSEPU/11-88    AC O05933.1
+#=GS DESET_MYCTU/303-373   AC O05875.1
+#=GS O23344_ARATH/57-131   AC O23344.1
+#=GS P74159_SYNY3/11-86    AC P74159.1
+#=GS FER2_SYNP6/8-83       AC P08451.2
+#=GS P73388_SYNY3/9-84     AC P73388.1
+#=GS FER1_HALMA/35-108     AC P00217.2
+#=GS P74449_SYNY3/11-88    AC P74449.1
+#=GS FER2_NOSMU/10-85      AC P00249.2
+#=GS FER2_APHSA/10-86      AC P00251.2
+#=GS FER1_CYAPA/10-85      AC P17007.3
+#=GS FER_PORPU/10-85       AC P51320.2
+#=GS FER_ODOSI/10-85       AC P49522.2
+#=GS FER_BUMFI/9-84        AC P13106.1
+#=GS FER3_CYACA/9-84       AC P00241.1
+#=GS FER2_CYACA/8-83       AC P15789.1
+#=GS FER_BRYMA/8-83        AC P07838.1
+#=GS FER_APHSA/9-83        AC P00250.2
+#=GS FER_THEVL/9-84        AC P0A3D1.2
+#=GS FER_PERBI/6-80        AC P10770.1
+#=GS FER3_RAPSA/8-82       AC P14938.1
+#=GS FER1_SPIOL/58-132     AC P00221.2
+#=GS FER_SILPR/57-131      AC P04669.1
+#=GS FER_WHEAT/54-128      AC P00228.2
+#=GS FER_SAMNI/8-82        AC P00226.1
+#=GS FERA_ALOMA/8-82       AC P81372.1
+#=GS FER_ARCLA/8-82        AC P00223.1
+#=GS FER_DATST/8-82        AC P68165.1
+#=GS FER_PALPL/9-83        AC P07484.1
+#=GS FER_EUGVI/8-82        AC P22341.1
+#=GS FER_CHLFU/6-80        AC P56408.1
+#=GS FER_SYNY4/9-83        AC P00243.2
+#=GS FER1_PHYAM/8-82       AC P00229.1
+#=GS FER2_PHYAM/9-83       AC P00231.1
+#=GS FER2_SPIOL/8-82       AC P00224.1
+#=GS FER_PHYPA/57-132      AC O04166.1
+#=GS FER_MARPO/7-81        AC P09735.1
+FER_GLEJA/8-82                   LTPDGE...RTIEVPDDKF.ILDAGE...E.A.GLDLPYSCRA.......GA....CSSCTGKLLDGRV.....DQSE...QSFLDDDQMAEGFV.....................LTCVAYPA
+FER2_RAPSA/9-84                  IGPEGE..ENEFEVQDDQF.ILDAAE...E.A.GVDLPYSCRA.......GA....CSTCAGQIVKGQV.....DQSE...GSFLEDDHFEKGFV.....................LTCVAYPQ
+Q39648_CITSI/61-136              IGPMGE..EHEFEAQEDQY.ILDAAE...E.A.GVDLPYSCRA.......GA....CSTCAGKLVSGSV.....DQSD...GSFLDDNQMEAGYL.....................LTCISYPT
+FER3_MAIZE/63-138                VGPEGE..EHEFDAPDDAY.ILDAAE...T.A.GVELPYSCRA.......GA....CSTCAGKIESGSV.....DQSD...GSFLDDGQQEEGYV.....................LTCVSYPK
+FER6_MAIZE/66-141                VGPDGT..EHEFEAPDDTY.ILEAAE...T.A.GVELPFSCRA.......GS....CSTCAGRMSAGEV.....DQSE...GSFLDDGQMAEGYL.....................LTCISYPK
+FER1_SYNP2/9-83                  ITPDGE...VSYDAPDDEY.ILDSAG...D.A.GYDLPASCRA.......GA....CSTCAGKIVSGTV.....DQSE...QSFLDDDQIEAGYV.....................LTCIAYPQ
+FER1_EQUAR/7-81                  KTPSGE...FTLDVPEGTT.ILDAAE...E.A.GYDLPFSCRA.......GA....CSSCLGKVVSGSV.....DESE...GSFLDDGQMEEGFV.....................LTCIAIPE
+FER2_EQUAR/7-80                  KTPDGD...ITFDVEPGER.LIDIGS...E.K..ADLPLSCQA.......GA....CSTCLGKIVSGTV.....DQSE...GSFLDDEQIEQGYV.....................LTCIAIPE
+#=GR FER2_EQUAR/7-80       SS    E-----...EEEEE-----.TT----...-.S..S----SS--.......--....-STT---EEE-EE.....E---...-----HHHHH----.....................-TTT-EEE
+FER2_PLEBO/10-85                 NKKRNL..DITLPVDEDTT.VLEAAE...E.A.ELDLPFSCHS.......GA....CSSCVGKVVEGEI.....NQDD...QTFLDEEQVAKGFV.....................LLCVTYPR
+P95533_PSEPU/253-328             VLMKGQ..THAVPVRAGEL.LLSAML...R.A.GLPAPHACRV.......GE....CASCMCRLQAGEVQ....RLDS....SVLDEDDVAAG.W...................L.LACRTRAA
+KSHB_MYCTU/273-348               VELDGQ..THTVSWPRTAK.LLDVLL...A.A.GLDAPFSCRE.......GH....CGACACTLRAGKVN....MGVN....DVLEQQDLDEG.L...................I.LACQSRPE
+Q44253_ACISP/251-326             FMLNGI..KNSVMCSEDDFILNEIIK......AGINVPSSCCA.......GN....CGSCMCLLVSGDVI....LESN....TVLDASDEEDGWI.....................LACRSKPR
+Q59656_PLEBO/573-647             FAQSGK....EITCTQDDL.ILDIAD.....QAEVAIESSCRS.......GT....CGSCKCTLLEGEV.....SYDS..EPDVLDEHDRASGQI.....................LTCIARPV
+P71846_MYCTU/600-675             FTLSGQ..RAIFDLVPGDS.ILEGAL...G..LRSDAPYACMG.......GA....CGTCRAKLIEGNVE....MD....HNFALRKAELDAGYI.....................LTCQSHPT
+O84985_PSEPU/271-347             VISDGR..ALTFDLPRNTQNVLDAGN...A.I.GAELPYSCKA.......GV....CSTCKCRVIEGEV.....EMDS...NHALEDYEVAAGYV.....................LSCQTYPV
+PAAE_ECOLI/266-342               VRQDGR..DREIVLNADDESILDAAL...R.Q.GADLPYACKG.......GV....CATCKCKVLRGKV.....AMET...NYSLEPDELAAGYV.....................LSCQALPL
+HCR_ECOLI/241-316                FTKLQP..AREFYAPVGTT.LLEALE.....SNNVPVVAACRA.......GV....CGCCKTKVVSGEY.....TVSS...TMTLTDAEIAEGYV.....................LACSCHPQ
+O87803_PSEST/5-82                IKIADT..DVEFTISDRDT.ILRAAL...R.D.GIPISYECNS.......GG....CGSCKIDVVEGQVE...TLWGE...APGLSPRDKRK.SR...................K.LACQCLAS
+TMOF_PSEME/4-81                  IQSDDL..LHHFEADSNDT.LLSAAL...R.A.ELVFPYECNS.......GG....CGACKIELLEGEVS...NLWPD...APGLAARELRK.NR...................F.LACQCKPL
+O32476_PSESP/4-81                LKIEGQ..APGTCG.SGKS.LLVSAL...A.N.GIGFPYECAS.......GG....CGVCKFELLEGNVQ...SMWPD...APGLSSRDREKGNR...................H.LACQCVAL
+Q51944_BURPI/5-82                ITIEGG..SAFSVAADEDT.LLRGAL...R.G.GIALPHECSV.......GG....CGACRFDLLSGLVE...SIWPE...APGLSERDRKR.GK...................H.LACQSRPL
+Q53028_RHOCO/4-80                INVQPF..SHEYSCEDGES.LLDGAL..RN...SLLLKYGCKH.......GG....CGTCKVRLLDGDV.....EEPG..SSFALTPEDRENDVI.....................LACASVPL
+Q45344_BURPI/10-88               YAWNRP..RSTTHARPPKA.SLTGML...R.LGRKGIPVGCVN.......GG....CGVCKVRVLDGST......RLGR.RQPCPRQRRRRSAGL...................T.LACREAPL
+Q9ZNP1_COMTE/9-88                VSVEQT..GDTYACGTHES.LLSGML...R.LGRKGIPVGCVN.......GG....CGVCKVQVLEGAV.....RHLGP.VSCAHVSDLERDQGY...................T.LACRVAPL
+Q9Z418_PSEPU/11-90               VHVMQT..GETFPCATDES.LLQGML...R.LGRKGIPVGCVN.......GG....CGVCKVHVIEGQC.....RPLGP.VSRAHVSAAEEARGF...................T.LACRVAPV
+Q9ZAN6_9BURK/12-91               VHVAQT..DETFPCAGNES.LLTGMV...R.LGRKGIPVGCVN.......GG....CGVCKVRIVEGQI.....KALGP.ISRAHVTLDEENQGY...................T.LACRVAPQ
+FERN_PSEPU/7-85                  ITVQPG..GERFVCQPQQS.ALHAME...T.QGKRCLPVGCRG.......GG....CGLCKVRVLAGDY......ESGR.VSCKHLPVEAREQGY...................A.LACRLFAR
+O24827_ACISP/7-85                ITEQCS..GQRFPCKAGQS.VLKAME...Q.QGLECAPVGCRG.......GG....CGLCKVTVREGDY......ECGK.MSRVHAPPEALAQGE...................V.LACRIYPL
+FERX_PSEPU/8-86                  VFEVLS..GQSFRCAEGQS.VLRAME...A.QGKRCIPVGCRG.......GG....CGLCRVRVLSGAY......RSGR.MSRGHVPAKAAAEAL...................A.LACQVFPQ
+Q52061_PSEPU/8-86                IRETVS..GQTFRCLPDQS.VLSAME...Q.QGKRCVPVGCRG.......GG....CGLCKVRVLSGTY......QCHK.MSCNHVPPEAAKQGL...................A.LACQLFPQ
+Q52167_PSEPU/8-86                VHETNS..GQSFTCRPDQS.VLRAME...E.QGKRCVPVGCRG.......GG....CGLCKVRVLSGDY......QCGR.MSCSQVPPEAAQQGL...................A.LACQLYPR
+O84964_9RALS/4-82                VEIADS..GQRYPCDPGQN.LLRAME...V.LGQRGIPAGCRG.......GG....CGVCKVRIESGRY......RTGK.MSRACLSEAEQGQGL...................V.LACKAFPD
+Q9Z3W9_9SPHN/8-85                IRILGG..GQ.FACPEGER.VLIAME...Q.FGSSDIGVGCRG.......GG....CGFCLVRVVEGEY......RTGK.MSTAKVSVADQAKGY...................A.LACRIYPM
+DMPP_PSEUF/5-82                  VTIEPT..GEVIEVEDGQT.ILQAAL...R.Q.GVWLPFACGH.......GT....CATCKVQVVEGEVD...IGEAS...PFALMDIERDERKV.....................LACCAIPL
+O84963_9RALS/4-81                LTIEPI..GQTIPIAPGQT.VLDACL...R.S.GVWLPHACCH.......GL....CATCKVQVVEGEVD...QGEAS..SFALMDFER.DNGQC.....................LACCATAQ
+Q52574_PSESP/5-83                LTIEPL..GRTLDVAEGQT.LLDAAL...R.S.GVYIPHACGH.......GL....CGTCKVQVTSGEVD...HGAAN..PLRRSWISSGEEGKT.....................LACCATAL
+Q9ZNP2_COMTE/5-82                LTLEPL..GASIEVEEGQT.LLDAAL...R.Q.GIYIPHACGH.......GL....CGTCKIQVCDGDVD...HGAAN..PFALMDMER.EDGMT.....................LACCATLQ
+Q43983_ACICA/5-82                VTIEPA..GTIIQVEEDQT.ILDAAL...R.Q.GVWLPFACGH.......GT....CGTCKVQVTDGFYD...VGEAS..PFALMDIER.EENKV.....................LACCCKPE
+O87617_PSEAE/3-78                LHIQPL..GQTLSVDSGAN.LLEALR...A.AE.VPISYSCMA.......GR....CGTCRCKVLKGQV......L..E.SGREATLTNPHADDY...................V.LACMSAIT
+O52378_9RALS/3-78                LVVEPL..NLHLNAETGST.LLDVLR...S.NE.VPISYSCMS.......GR....CGTCRCRVIAGHL......R..D.NGPETGRPQAGKGTY...................V.LACQAVLT
+Q51492_PSEAE/3-78                LLVLPN..NRRLPFDSGAN.LLEVLR...E.HR.VGISYSCMS.......GR....CGTCRCRVIDGSV......I..S.SAAKSGDSNRIEEHY...................V.LACQSVLT
+NDOR_PSEPU/3-78                  LLIQPN..NRIIPFSAGAN.LLEVLR...E.NG.VAISYSCLS.......GR....CGTCRCRVIDGSV......I..D.SGAENGQSNLTDKQY...................V.LACQSVLT
+Q52140_PSEPU/3-78                LLIQPN..NRLISFSPGAN.LLEVLR...E.NG.VAISYSCMS.......GR....CGTCRCRVTDGSV......I..D.SGTGSGLPHLVDEHY...................V.LACRSVLT
+Q9Z9X8_9GAMM/242-317             VRIASS..GATVHVDKHTT.IVAALA...S.I.GIEVDTSCGE.......GV....CGTCMVDVVSGTP.....EHRD....HCLSKAERASGKV...................I.CCCVSRAR
+VANB_PSEUH/234-309               VRIHST..GQVLQVPADQT.VSQVLD...A.A.GIIVPVSCEQ.......GI....CGTCITRVVDGEP.....DHRD....FFLTDAEKAKNDQ...................F.TPCCSRAK
+VANB_PSES9/231-306               GRLARS..GLTLQVPAERS.VAQVLD...D.A.GVCIPLACEQ.......GI....CGTCLTRVLDGEP.....EHRD....SFLTDAERARNDQ...................F.TPCCSRAR
+VANB_PSEPU/231-307               VQLNST..GQVFEVPADQS.VVHVLE...Q.H.GIAIAMSCEQ.......GI....CGTCLTRVLSGTPE....ASRP....VFLTEQEQALNDQ...................F.TPCCSRSK
+VANB_ACIAD/234-309               IEVLGS..DRKIEVSAHQT.ATQALL...E.H.GFDVPVSCEQ.......GI....CGTCITRVVSGTP.....DHRD....VFMTDEEHALNDQ...................F.TPCCSRAK
+O88034_STRCO/230-305             VVLARS..GRTVAVPPGTS.VLDAVR...E.T.GVEVLYSCTE.......GT....CGTCETEVVEGEP.....DHRD....SVLTEEERAAGET...................M.LICVSRCR
+P94680_COMTE/234-309             LVLQRA..GLSTTVDAHES.VLDAME...R.V.GVDFPWSCRE.......GI....CGTCEAPVLEGEV.....QHLD....YVLSPEERAEQRR...................M.MVCVSRCG
+CBAB_COMTE/232-307               VNLARS..GAQYVVREGET.ILDVLR...N.A.GHHVTSSCRQ.......GI....CGMCETTLISGVP.....DHRD....RLLTDSEKASGRT...................M.LICCSRAL
+POBB_PSEPS/236-311               VHLARS..GRTIPIAAGCT.ILDALQ...A.G.GVAVPSSCQQ.......GV....CGICETAVLAGVP.....DHRD....LVLSDQERAAGRT...................M.MICCSGSK
+YEAX_ECOLI/237-313               LVLARS..GKEFVVPEEMT.ILQVIE...N.NKAAKVECLCRE.......GV....CGTCETAILEGEA.....DHRD....QYFSDEERASQQS...................M.LICCSRAK
+Q47914_SPHCR/241-316             VLARRS..GQEFTVEPGMT.ILETLL...Q.N.GISRNYSCTQ.......GV....CGTCETKVLEGEP.....DHRD....WVLSDEKKASNST...................M.LICCSLSK
+PDR_BURCE/241-314                VRLSRS..GTSFEIPANRS.ILEVLR...D.A.NVRVPSSCES.......GT....CGSCKTALCSGEA.....DHRD....MVLRDD..EKGTQ...................I.MVCVSRAK
+#=GR PDR_BURCE/241-314     SS    EEES--..--EEEE-TTS-.HHHHHH...H.T.T-----S---.......--....----EEEEEE--E.....E---....SS--TT..T---E...................E.ETTT-EES
+PHT2_PSEPU/243-316               VTLGRS..GIDLEIPVDRS.ILEVLR...D.N.GIRAPSSCES.......GT....CGSCRTRLIEGDV.....EHRD....MVLREDEQH..DQ...................I.MICVSRAR
+O86347_MYCTU/231-301             LELARS..RRVLRVPANRS.ALDVML.....DWDPTTAYSCQQ.......GF....CGTCKVRVLAGQV.....DRRG....RIIEGDN.....E...................M.LVCVSRAV
+YFAE_ECOLI/4-77                  VTLRIT..GTQLLCQDEHP.SLLAAL...E.SHNVAVEYQCRE.......GY....CGSCRTRLVAGQV......D......WIAEPLAFIQPGE...................I.LPCCCRAK
+Y1309_HAEIN/3-75                 IHLIRH..NTTLEFNNET..SLLDHL...E.KNNIHHEYQCRS.......GY....CGSCRVKIKKGKV......S......YKEMPLAFIQPDE...................I.LLCCCHVE
+O31003_VIBAN/5-73                VIVKPS..GVEYQSG..RN.ILDDAF...A.S.SISLEHSCKT.......GD....CGVCCAEVISGLV.....ENEN........GELVTQG.H...................I.LTCQSKAK
+RFBI_SALTY/5-76                  IKIFPS..NIEFSGREDES.ILDAAL...S.A.GIHLEHSCKA.......GD....CGICESDLLAGEVV....DSKG.........NIFGQGDK...................I.LTCCCKPK
+P95461_9PSED/17-94               VQILPQ..DVTIVLEPGQT.LLEAAL...A.N.GIAYPHDCTV.......GT....CASCKTRLKQGRVR...EATPF...GYTLSKAELDA.GY...................I.LACQAFPR
+O85971_SPHAR/13-90               VTVEGS..PTTLDIPAGKT.LLEAML...D.A.GLAMPHDCKV.......GS....CGTCKFKLVSGKIG...ELSPS...ALALEGDELRS.GF...................R.LACQAIPR
+XYLA_PSEPU/20-97                 VSVRGQ..GFQFKVPRGQT.ILESAL...H.Q.GIAFPHDCKV.......GS....CGTCKYKLISGRVN...ELTSS...AMGLSGDLYQS.GY...................R.LGCQCIPK
+YCBX_ECOLI/293-362               IDWQGQ....AFRGNNQQV.LLEQLE.....NQGIRIPYSCRA.......GI....CGSCRVQLLEGEV......T.P......LKKSAMGDDGT....................ILCCSCVPK
+P96096_THIFE/9-86                HTRDKQ..QVSFVCSEAED.LLSAAD...R.G.SILLPSQCRK.......GT....CGACVATVTAGTYH...LGEVS..MEALPEKAQ.ARGDV.....................LLCRTYPR
+MMOC_METTR/7-81                  ETEDGE..TCRRMR.PSED.WISR.A...E.A.ERNLLASCRA.......G.....CATCKADCTDGDYE...LIDVK..VQAVPPDEE.EDGKV.....................LLCRTFPR
+O85675_ACIAD/8-85                NFADGK..TFFIAVQEDEL.LLDAAV...R.Q.GINLPLDCRE.......GV....CGTCQGTCETGIYE...QEYVD..EDALSERDL.AKRKM.....................LACQTRVK
+BENC_ACIAD/19-98                 QFEDGV..TRFIRIAQGET.LSDAAY...R.Q.QINIPMDCRE.......GA....CGTCRAFCESGNYD...MPEDNY.IEDALTPEEAQQGYV.....................LACQCRPT
+#=GR BENC_ACIAD/19-98      SS    E-----..EEEEEE-----.HHHHHH...H.T.T---S-S---.......--....----EEEEEE-EEE...--GGGS.-TTT--HHHHH---E.....................ETTT-EEE
+XYLZ_PSEPU/8-86                  DFEDGV..TRFIDANTGET.VADAAY...R.Q.GINLPLDCRD.......GA....CGACKCFAESGRYS...LGEE.YIEDALSEAEA.EQGYV.....................LTCQMRAE
+CBDC_BURCE/8-85                  RFEDDV..TYFITSSEHET.VADAAY...Q.H.GIRIPLDCRN.......GV....CGTCKGFCEHGEYD...GGDY.I.EDALSADEA.REGFV.....................LPCQMQAR
+O66892_AQUAE/7-72                RYSDGDFRWEEYEVDGEGKTVLEILQNIKEIDPTLSFRAMCRA.......GI....CGTCVVKVN.....................GEHK..........................LACNTRVY
+O85226_PSEFL/27-86               VTA.AL..GETVLSVIQATGLRQVAR...N.DHGQLVGAYCGM.......GV....CHCCLVQIDG...................RHKR...........................RACQTLVK
+O29575_ARCFU/14-75               AYWQSFEVPAKR.GMTVLEALYYIKE...NLDSSLAFRASCRM.......GI....CGSCAMKIN.....................DKP..........................RLACETQVL
+O27878_METTH/21-82               PHLESYEIPSKE.KMKVLDALQLINK...IHGANIAFRSSCRA.......GQ....CGSCAVKMN.....................GEV..........................VLACRAEVE
+Y092_METJA/14-73                 EYLESYEVP..E.NITVLEALEYINK...HYEANILFRASCRN.......AQ....CGSCAVTIN.....................GEP..........................RLACETKVE
+FER5_RHOCA/10-107                IMKKDK..TIYAVAGNTATILALAKE...H.AIPIPF..ECG........DG...DCASCLIEVTHLDN.....KPAMAMMLTEKEKARLKELQMITAEEIEAA..EVSDLPPRFRLACQFIPR
+Q44501_AZOVI/10-107              LMPHNK..KVQAVAGKRSTLLGVAQE...N.GVKIPF..ECQ........DG...NCGSCLVKITHLDG.....ERIKGMLLTDKERNVLKSVGKLPKSEEERA..AVRDLPPTYRLACQTIVT
+Q46508_DESFR/6-74                ITIDGK..TTSVPE...GSTILDAAK...T.L.DIDIPTLCYLNLEALSINNKAASCRVCVVE.....................VEGRRN....L....................APSCATPVT
+Q9ZBV9_STRCO/15-78               FTLDGQ..EARVPE...GSTILDACR...A.A.GKDVPTLCEGDT..LAPKN...ACRVCVVD.....................VEGART....L....................APACSRKAE
+NUOG_MYCTU/19-82                 LTIDGV..EISVPK...GTLVIRAAE...L.M.GIQIPRFCDHPL..LEPVG...ACRQCLV.....................EVEGQR....KP....................LASCTTVAT
+O87815_CUPNE/22-85               LEVDGV..SVTVPA...GTSVMRAAM...E.A.QIAVPKLCATDS..LRNFG...SCRLCLV.....................EIEGRR....GY....................PASCTTPVE
+NQO3_THET8/4-88                  VKVNDR..IVEVPP...GTSVMDAVF...H.A.GYDVPLFCSEKH..LSPIG...ACRMCLVRIGLPKKGPDGKPLLNEKGEPEIQWQP....KL....................AASCVTAVA
+#=GR NQO3_THET8/4-88       SS    EE-SS-..EEEE--...--BHHHHHH...H.-.------SS--TT..S----...----SEEB-------------------------S....S-....................EETTT-B--
+P74022_SYNY3/6-69                LTIDDK..AIAIEE...GASILQAAK...E.A.GVPIPTLCHLEG..ISEAA...ACRLCMVE.....................VEGTNK....L....................MPACVTAVS
+P94157_SYNP6/6-69                LQIDDQ..ELAANV...GQTVLQVAR...E.A.SIPIPTLCHLQG..VSDVG...ACRLCVVE.....................VAGSPK....L....................QPACLLTVS
+Q44513_ANAVA/6-69                LTINDQ..LISAQE...EETLLQAAQ...E.A.GIHIPTLCHLEG..VGDVG...ACRLCLVE.....................VAGSNK....L....................LPACVTKVA
+P77908_MOOTH/4-67                LTIDGQ..RVTAPE...GMTILEVAR...E.N.GIHIPTLCHHPK..LRPLG...YCRLCLVD.....................IEGAAK....P....................MTACNTPVA
+Q9ZJW1_HELPJ/4-65                MNINGK..TIECQE...GQSVLEAAR...S.A.GIYIPTICYLSG..CSPTV...ACKMCMV........................EMDG...KR....................IYSCNTKAK
+O05397_BACSU/11-72               VRVDGT..EIQARA...GATILDILN...E.N.GIEYPQICHVPE..VDPIQ...TCDTCIV........................EANG...KL....................VRSCATVAE
+YJGC_BACSU/7-68                  ITINGV..EMEASE...EQTVLQLLN...N.S.SIEVPQVCYHPS..LGPIE...TCDTCIV........................SING...EL....................KRSCSAELK
+NUOG_SALTI/4-72                  IHVDGK....EYEVNGADN.LLQACL...S.L.GLDIPYFCWHPAL.GSVGA....CRQCAVK..................QYQNAEDTR...GR...................LVMSCMTPAT
+O66748_AQUAE/6-70                KIYIDD...VEIEAEKGKTVLQVALE..N....GIDIPYFCYHPR..LSIAG...ACRMCVVY.......................WEDINR......................LVISCNLPVQ
+NDUS1_DICDI/5-71                 FKINEI..ECEVNEEKEDITILQACT...A.N.GIEIPRFCYHEK..LTIAG...NCRMCLV.....................YVTNEE....KL....................LAACGIPLD
+NQO3_PARDE/7-71                  IKIDDT....IIEVDPNMT.LIQACE...M.A.GIEVPRFCYHER..LSIAG...NCRMCLVEVVGG........PPK........PA............................ASCAMQVK
+NDUS1_NEUCR/38-101               LTIDGK..KVSIEA...GSALIQACE...K.A.GVTIPRYCYHEK..LMIAG...NCRMCLV.....................EVEKVP....KP....................VASCAWPVQ
+NUOG_RICPR/4-67                  LIIDGS..EIEISE...GSTVYQACI...Q.A.GKEIPHFCYHAR..LKIAG...NCRMCLV.....................EIEKSQ....KP....................VASCAMPVS
+NDUS1_SOLTU/70-133               VFVDGY..PVKIPK...GMTVLQACE...I.A.GVDIPRFCYHSR..LSIAG...NCRMCLV.....................EVEKSP....KP....................VASCAMPAL
+NDUS1_RECAM/4-67                 VFVDGL..SVEVKK...GATILQACA...Q.V.GIEIPRFCYHER..LSIAG...NCRMCLV.....................EVEKSP....KP....................VASCAMPVM
+NDUS1_BOVIN/34-97                VFVDGQ..SVMVEP...GTTVLQACE...K.V.GMQIPRFCYHER..LSVAG...NCRMCLV.....................EIEKAP....KV....................VAACAMPVM
+O52683_THEMA/3-65                IYVDGR..EVIIN..DNERNLLEALK.....NVGIEIPNLCYLS.....EASIYGACRMCLVEIN.......................GQIT........................TSCTLKPY
+Q46606_DESVU/3-71                AFINGK..EVRCEP...GRTILEAAR...E.N.GHFIPTLCELADIGHAPGT....CRVCLVE.....................IWRDKEAGPQI....................VTSCTTPVE
+HOXU_CUPNH/5-66                  ITIDGK..TLTTEE...GRTLVDVAA...E.N.GVYIPTLCYLKDK.PCLGT....CRVCSVKVN.....................GN......V....................AAACTVRVS
+P72305_RHOOP/5-66                IEIDGV..TVTTEE...SRTLVDVAA...E.A.GVYIPTLCYLKGK.PSLGT....CRVCSVK.....................LNGTV..........................VAACTIRVA
+Q59261_CLOSA/4-67                IVIDEK..TIQVQE...NTTVIQAAL...A.N.GIDIPSLCYLNEC.GNVGK....CGVCAVE.....................IEGKNN....L....................ALACITKVE
+Q9ZNE4_CLOPE/4-67                IIINDK..TIEFDG...DKTILDLAR...E.N.GFDIPVLCELKNC.GNKGQ....CGVCLVE.....................QEGNDR....L....................LRSCAIKAK
+PHF1_CLOPA/4-67                  IIINGV..QFNTDE...DTTILKFAR...D.N.NIDISALCFLNNCNNDINK....CEICTVE.....................VEGTG.....L....................VTACDTLIE
+Q59262_CLOAB/4-66                IILNGN..EVHTDK...DITILELAR...E.N.NVDIPTLCFLKDC.GNFGK....CGVCMVE.....................VEGKG.....F....................RAACVAKVE
+P74801_SYNY3/5-63                IHFLPD..DVTVAARVGEPILDVAER......AGVFIPTGCLM.......GS....CHACEVELG.......................DGTP.......................ICACISAVP
+XDHE_BACSU/18-77                 MTVNGQ..AWEV.AAVPTTHLSDLLR...KEFQLTGTKVSCGI.......GR....CGACSILID.....................GK......L....................ANACMTMAY
+HCRC_THAAR/7-66                  LTLNGR..ARED.LVPDNMLLLDYLR...ETVGLTGTKQGCDG.......GE....CGACTVLVD.....................DR......P....................RLACSTLAH
+#=GR HCRC_THAAR/7-66       SS    EEE---..EEEE.EEETT-BHHHHHH...HT------------.......--....----EEEET.....................TE......E....................EEGGGSBGG
+P95635_RHOPA/15-74               LNVNGR..WRED.AVTDDMLLVDYLR...DIAGLTGVKTGCDG.......GE....CGACTVLID.....................GE......A....................APSCLVLAV
+XDHC_ECOLI/11-69                 CTINGM..PFQLHAAPGTP.LSELLR...E.QGLLSVKQGCCV.......GE....CGACTVLVD....................G..TAID.........................SCLYLAA
+YAGT_ECOLI/65-124                LKVNGK..TEQL.EVDTRTTLLDTLR...ENLHLIGTKKGCDH.......GQ....CGACTVLVN.....................GR......R....................LNACLTLAV
+DCMS_HYDPS/8-67                  VNVNGK..AQEK.AVEPRTLLIHFLR...EELNLTGAHIGCET.......SH....CGACTVDID.....................GR......S....................VKSCTHLAV
+Q52589_9PSED/8-67                MTVNGR..KVEE.AVEARTLLVHFLR...EKLNLTGTHIGCDT.......SH....CGACTVDVD.....................GK......S....................IKSCTHLAV
+O52837_BRAJA/6-65                LIVNGN..PVTA.NVDPRTLLVQFLR...ENLRLTGTHVGCDT.......SQ....CGACVVHLD.....................GK......A....................VKSCTTLAV
+O53709_MYCTU/5-64                MTVNGE..PVTA.EVEPRMLLVHFLR...DQLRLTGTHWGCDT.......SN....CGTCVVEVD.....................GV......P....................VKSCTMLAV
+O87682_ARTNI/8-67                VEVNGV..THAT.DVEPRRLLADFLR...DDLHLRGTRVGCEH.......GV....CGSCTVLLD.....................GQ......P....................VRSCTVLAV
+Q59128_ARTNI/14-73               VEVNGR..RRTV.AVDARETLADHLR...NDQKLTGIKLGCEH.......GV....CGACTILMD.....................GA......A....................VRSCLTLAA
+P72223_PSEPU/14-73               ATINGK..PRVF.YVEPRMHLADALR...EVVGLTGTKIGCEQ.......GV....CGSCTILID.....................GA......P....................MRSCLTLAV
+#=GR P72223_PSEPU/14-73    SS    EEE---..EEEE.EE-TTSBHHHHHH...HT------------.......--....----EEEE-.....................--......E....................EEGGGSBGG
+Q9ZBN8_STRCO/5-65                LTVNGR..PQEADDVWEGESLLYVLR...ERMGLPGSKNACEQ.......GE....CGSCTVRLD.....................GVP..........................VCSCLVAAG
+O54050_RHOCA/5-68                FLLNGE..TRRVRIEDPTQSLLELLR...A.EGLTGTKEGCNE.......GD....CGACTVMIRD.................AAGSR......A....................VNACLMMLP
+#=GR O54050_RHOCA/5-68     SS    EEE---..EEEEE-S-TT-BHHHHHH...H.------------.......--....----EEEEES.................----E......E....................EETTTSBGG
+O23887_MAIZE/15-85               LAVNGK..RYEAAGVAPSTSLLEFLR...TQTPVRGPKLGCGE.......GG....CGACVVLVSK.................YDPATDEVTEFS....................ASSCLTLLH
+ALDO4_ARATH/8-78                 FAVNGE..KFEVLSVNPSTTLLEFLR...SNTCFKSVKLSCGE.......GG....CGACIVILSK.................YDPVLDQVEEYS....................INSCLTLLC
+ALDO1_ARATH/23-95                FAINGQRFELELSSIDPSTTLVDFLR...NKTPFKSVKLGCGE.......GG....CGACVVLLSK.................YDPLLEKVDEFT....................ISSCLTLLC
+O30328_ACEEU/4-63                FRLNGR..EVTV.DVPGDTPLLWVIR...DEVGLTGTKFGCGI.......GM....CGACTIHIG.....................GR......A....................TRSCVTPVS
+IORA_BREDI/4-64                  FILNGQ..PVRVTEVPEDAPLLWVVR...EHLKLSGTKFGCGL.......GL....CGACTVHIN.....................GE......A....................ARSCITPLS
+XDH_EMENI/39-108                 FYLNGT..KVILDSVDPEITLLEYLR...G.IGLTGTKLGCAE.......GG....CGACTVVVS..........QIN.....PTTKKL....YHA..................SINACIAPLV
+O61198_CAEEL/8-78                FNVNGK..DIKEENVDPELTLAYYLR...NKLGLRGTKLGCEE.......GV....CGSCTVVLGT.................WDDSLNKAVYSA....................VNACLVPLF
+O17892_CAEEL/18-86               FYVNGK..RVEEKDVDPKMTLATYLR...DKLKLTGTKIGCNE.......GG....CGACTIMISH.................IENGE..IKHFS....................ANSCLMPVC
+XDH_DROSU/13-83                  FFVNGK..KVTDTNPDPECTLLTYLR...DKLRLCGTKLGCAE.......GG....CGACTVMISR.................MDRGQHKIRHLA....................VNACLTPVC
+O17506_BOMMO/19-89               FYVNGK..KVIESSPDPEWTLLWYLR...KKLRLTGTKLGCAE.......GG....CGACTVMVSK.................YNRQENKIIHLA....................VNACLAPVC
+Q17250_BOMMO/18-88               FFVNGK..KVLESNPDPEWTLLFYLR...KKLKLTGTKYGCGE.......GG....CGACTVMVSK.................YLKNEDRINHIA....................VNACLISVC
+ADO_BOVIN/9-79                   FYVNGR..KVTEKNVDPETMLLPYLR...KKLRLTGTKYGCGG.......GG....CGACTVMISR.................YNPITKKIRHYP....................ANACLTPIC
+XDH_BOVIN/8-78                   FFVNGK..KVVEKNADPETTLLAYLR...RKLGLRGTKLGCGE.......GG....CGACTVM............LSK.....YDRLQDKIIHFS....................ANACLAPIC
+#=GR XDH_BOVIN/8-78        SS    EEE---..EEEETT--TT-BHHHHHH...HT------------.......--....----EEE............EEE.....EETTTTEEEEEE....................EETTT-BGG
+MOP_DESGI/6-65                   ITVNGI..EQNL.FVDAEALLSDVLR...QQLGLTGVKVGCEQ.......GQ....CGACSVILD.....................GK......V....................VRACVTKMK
+#=GR MOP_DESGI/6-65        SS    EEE---..EEEE.EE-TTSBHHHHHH...HT------------.......--....----EEEE-.....................--......E....................EEGGG-BGG
+O53669_MYCTU/13-78               DESCGELREFTVEVNEGEVVLDVILRLQQTQTPDLAVRWNCKA.......GK....CGSCSAEIN.....................GKPR..........................LMCMTRMS
+O29566_ARCFU/5-80                TFL.PS..GKRAEVDEGKTILSAAQE...I.GEGIRS..LCGG.......KG...SCGKCL..VVVR........KGDVEILSEEAHEKFVRE..K.................GYYLACQTAVK
+O30225_ARCFU/5-84                TFE.PV..GKKVE.DEPDTILEIARR...N.GVLIRS..DCGG.......KG...VCGKCK..VVVVDY......RGSLSDITDHERKHLIEEEISK................GYRLACQARVE
+NQRF_CHLTR/46-122                NND.DS..LTKTV.DSGKTLLSSLLD...S.GIAIPS..PCGG.......KA...ACKQCK..VRIT.........KNADEPLETDRSTFSKQQLEQ................GWRLSCQTKVQ
+NQRF_HAEIN/43-119                NDD.PE..KAITL.PAGGKLLGALAS...K.GIFVSS..ACGG.......GG...SCGQCI..VKVK.........NGGGEILPTELSHINKREAKE................GYRLACQVNVK
+NQRF_VIBAL/39-115                NDD.PS..LAIVT.QPGGKLLSALAG...A.GVFVSS..ACGG.......GG...SCGQCR..VKVK.........SGGGDILPTELDHITKGEARE................GERLACQVAMK
+O84062_CHLTR/8-83                ADD......ENQEFHLEDGSSIAEV......CEHSGVPLACT........EG...VCGTCVIEVLEGA........DNLSDFSEAEYDFLGDPEDS.................NERLACQCCIK
+Q9Z8H9_CHLPN/8-83                SDD......EQQEFELEDNSEIAEP......CESMGIPFACT........EG...VCGTCVIEVLEGR........ENLSEFTEPEYDFLGEPEDS.................NERLACQCRIK
+CSMJ_CHLTE/5-82                  IND......KPCNAKVGDLLLNTAK......LNKAHIGYICGG.......NG...ICQSCFVYVLEGA........ECLSEPGEDEKAFISDKLFAE................GGRLACRTTIV
+CSMI_CHLTE/5-82                  IND......KTASSSVGQTIGKAAR......LNHAHVGYVCGG.......HG...LCQACYITVQEGA........DCLAPLTDVEKAFLSPRQIAA................GGRIACQATIA
+FER_TRIVA/13-90                  AVKGGVKKQLKFEDDQTLFTVLTEAG.......LMSADDTCQG.......NK...ACGKCICKHVSGKV......A.A..E..DDEKEFLEDQPAN..................ARLACAITLS
+#=GR FER_TRIVA/13-90       SS    EE----EEEE---TTEEHHHHHHT--.......----TTS---.......--...-----EEEEEE---......-.-..-..HHHHHHCTTS-TT..................EEEGGG-EE-
+P73774_SYNY3/7-88                LICLPD..NRLLEIDSNETILDALLK..G....DIAHISVCGG.......KA...NCSTCRIMVLDGIK.....NCSPPTSIEQALAKKLDFPFHV..................R.LACQTKLS
+FER_BUCAP/10-92                  KLLLPK..GGCFECKEGETILNVALK...N.NIKLEHA..CEK.......SC...ACSTCH..CIIRKG......FLSLSGWSEKEEDVLDKAWGLE...............STSRLSCQAIIG
+O69222_AZOVI/11-93               EVHCPE..GRVVEAETGESILEAALR...N.DIEIEHA..CEM.......SC...ACTTCH..VIVRDG......FDSLEPSDELEDDMLDKAWGLE...............PESRLSCQARVG
+FER_HAEIN/10-92                  EDFCPE..GMVVDAATGDN.LLEVAH...N.A.GVEIHHACDG.......SC...ACTTCHVIVREG........FDSLNETSDQEEDMLDKAWGLE...............MDSRLSCQCVVG
+FER_PSEAE/10-92                  ADHCPE..GAVFEAKPGET.ILDAAL...R.N.GIEIEHACEK.......SC...ACTTCHVIVREG........LDSMEPSDELEDDMLDKAWGLE...............PDSRLSCQAVVA
+ADRX_YEAST/67-149                LKD.GS..QKTYEVCEGETILDIAQG...H.NLDMEG..ACGG.......SC...ACSTCH.VIVDPDY......YDALPEPEDDENDMLDLAYGLT...............ETSRLGCQIKMS
+ADX_PIG/71-155                   NRD.GK..TLTTQGKVGDSLLDVVIE...N.NLDIDGFGACEG.......TL...ACSTCH.LIFEDHI......FEKLEAITDEENDMLDLAYGLT...............DRSRLGCQICLT
+FER2_RICPR/11-93                 IND.EE..ERTVEAPIGLSILEIAHS...N.DLDLEG..ACEG.......SL...ACATCH.VMLEEEF......YNKLKKPTEAEEDMLDLAFGLT...............DTSRLGCQIILT
+O49551_ARATH/44-127              DKD.GE..EIHIKVPVGMNILEAAHE...N.DIELEG..ACEG.......SL...ACSTCHVIVMDTKY......YNKLEEPTDEENDMLDLAFGLT...............ATSRLGCQVIAK
+ETP1_SCHPO/525-592               TPE.GR..EIMIE....GN......E...E.G.......ACEG.......SV...ACSTCHVIVDPEHY.....ELLD..PPEEDEEDMLDLAFGLE...............ETSRLGCQVLLR
+#=GR ETP1_SCHPO/525-592    SS    ---.--..EEEE-....--......-...-.-.......----.......--...--STT-EEE-HHHH.....HHS-..---HHHHHHHCTB----...............TTEE-----B--
+O07876_SPHSX/8-91                AAD.GR..EIETNVDIGTDLMHAGLY...N.SVPGLLG.ECSG.......GL...ACATCR.VHVPAEW......QGVLPAALPAEAELLGFCEESP...............PEARLSCQIKMT
+Q9ZAM5_SPHSX/8-91                SED.GS..ELETTVDVGVDLMHAGLY...N.SIPGILG.ECSG.......GL...ACATCR.VRVPVEW......QSILPPAFPSEAELLGFCDEAP...............PEARLSCQIKMT
+FER2_CAUCR/8-91                  QHD.GA..EQVIDVKPGLTVMEGAVK...N.NVPGIDA.DCGG.......AC...ACATCH.VYVDEAW......LDKTGDKSAMEESMLDFAENVE...............PNSRLSCQIKVS
+FER6_RHOCA/7-91                  EHN.GT..RHEVEAKPGLTVMEAARD...N.GVPGIDA.DCGG.......AC...ACSTCH.AYVDPAW......VDKLPKALPTETDMIDFAYEPNP..............ATSRLTCQIKVT
+#=GR FER6_RHOCA/7-91       SS    ---.--..EEEEE-----BHHHHHHT...-.-------.----.......--...SS-TTE.EEE-HHH......HTTS----HHHHHHHTTSSS--T..............TTEEEGGG-B--
+P74447_SYNY3/31-113              IKLDPIDLKVAIETNDNLLSGLLGQD........LRIMKECGG.......RG...MCATCHVYITAGMES...LSPLNRREQRTLEVITTHNRYS...................R.LACQARVL
+P73171_SYNY3/7-85                SFPQTKFLPLSLEFNACLAEYLTPDN........SPILFGCRT.......GL....CGTCLVKVVGEIL......SPEAEEREILAILAPDDVQA...................R.LACQIKLT
+FER1_AQUAE/3-83                  VIINGK....EFDIPKGVRFGELSHE.....IEKAGIEFGCTD.......GQ....CGVCVARVIKGMECL..NEPSEEEEETLWRVGAVDEDQR.....................LTCQLVIE
+FER4_RHOCA/7-86                  TFTDVS...ITVNVPTGTRIIEMSEK......VGSGITYGCRE.......GE....CGTCMTHILEGSE.....NLSEPTALEMRVLEENLGGKD...................DRLACQCRVL
+P74283_SYNY3/5-88                FVKEQK....DIVVAQGANLREKALQNGVDIYTLKGKLMNCGG......YGQ....CGTCIVEITAGME.....NLSPKTDFENRVLRKKPDNFR.....................LACQTLVN
+PUTX_PSEPU/8-92                  SHD.GT..RRELDVADGVS.LMQAAV...S.NGIYDIVGDCGG.......SA...SCATCHVYVN................EAFTDKVP.....AANEREIGMLECVTAELKPNSRLCCQIIMT
+#=GR PUTX_PSEPU/8-92       SS    E--.--..EEEEE-----B.HHHHHH...H.---TTG------.......--...SSSTTEEEE-................TTTGTTS-.....---TTT---GGGSSS---TTEEEGGG-B--
+TERPB_PSESP/8-92                 DEQSGE...YAVDAQDGQS.LMEVAT...Q.NGVPGIVAECGG.......SC...VCATCRIEIEDAWV......E.......IVGEANPDENDLLQSTGE........PMTAGTRLSCQVFID
+P95277_MYCTU/9-84                GYSDGT..HKTMPVRCDQT.VLDAAE.....EHGVAIVNECQS.......GI....CGTCVATCTAGRYQ....MG.R...TEGLSDVERAARKI.....................LTCQTFVT
+O05933_PSEPU/11-88               NFSDGV..SRSFDVEAGTS.ILDAAI.....ESEIPLLYQCRS.......GS....CSTCIAQLTEGEAH....TRAG..ASSTLLASEYASGQR.....................LLCLCQAQ
+DESET_MYCTU/303-373              FARSGK....SVAADAATS.LMDAGE.....GAGVQLPFGCRM.......GI....CQSCVVDLVEGHV......R.D.....LRTGQRHEPGTR....................VQTCVSAAS
+O23344_ARATH/57-131              VEHDGK..TTELEVEPDETILSKALD...S...GLDVPYDCNL.......GV....CMTCPAKLVTGTV.....DQSG....GMLSDDVVERGYT.....................LLCASYPT
+P74159_SYNY3/11-86               DRQNEK..DYSVIVSDDRYILHQAED...Q...GFELPFSCRN.......GA....CTACAVRVISGQIH....QP....EAMGLSPDLQRQGYA.....................LLCVSYAQ
+FER2_SYNP6/8-83                  VIYQGQ..SQTFTADSDQS.VLDSAQ...A.A.GVDLPASCLT.......GV....CTTCAARILSGEV.....DQPD...AMGVGPEPAKQGYT.....................LLCVAYPR
+P73388_SYNY3/9-84                IQHQGQ..TYTISVPEDKT.VLQAAD...D.E.GIQLPTSCGA.......GV....CTTCAALITEGTA.....EQAD...GMGVSAELQAEGYA.....................LLCVAYPR
+FER1_HALMA/35-108                DEDYGS.....LEVNEGEY.ILEAAE...A.Q.GYDWPFSCRA.......GA....CANCAAIVLEGDI.....DM..D.MQQILSDEEVEDKNV....................RLTCIGSPD
+P74449_SYNY3/11-88               NPATGS..DVTIEVAEDEL.ILEAAE...N.Q.GLDLPYSCRA.......AS....CVACAGRLLEGTVE...HTDKG...SDFLKPEELAAGCV.....................LLCAAYAT
+FER2_NOSMU/10-85                 NAAEGL..DETIEVPDDEY.ILDAAE...E.A.GLDLPFSCRS.......GS....CSSCNGILKKGTV.....DQSD...QNFLDDDQIAAGNV.....................LTCVAYPT
+FER2_APHSA/10-86                 NEEEGI..NAILEVADDQT.ILDAGE...E.A.GLDLPSSCRA.......GS....CSTCAGKLVSGAA.......PNQDDQAFLDDDQLAAGWV.....................MTCVAYPT
+FER1_CYAPA/10-85                 CEEQGL..DTTIECPDDEY.ILDAAE...E.Q.GIDLPYSCRA.......GA....CSTCAGKVVEGTV.....DQSD...QSFLDDAQLAAGYV.....................LTCVAYPS
+FER_PORPU/10-85                  SEDEGI..DVTFDCSEDTY.ILDAAE...E.A.GIELPYSCRA.......GA....CSTCAGKVTEGSV.....DQSD...QSFLDDEQLLKGYV.....................LTCIAYPE
+FER_ODOSI/10-85                  SEEHDI..DATIDCNDDVF.LLDAAE...E.Q.GIELPYSCRA.......GA....CSTCAGKVTEGDI.....DQSE...QTFLDDDQVGAGFV.....................LTCIAYPK
+FER_BUMFI/9-84                   NEEKNI..NAVIKCPDDQF.ILDAAE...E.Q.GIELPYSCRA.......GA....CSTCAGKVLSGTI.....DQSE...QSFLDDDQMGAGFL.....................LTCVAYPT
+FER3_CYACA/9-84                  NKDQGI..DETIECPDDQY.ILDAAE...E.Q.GLDLPYSCRA.......GA....CSTCAGKLLEGEV.....DQSD...QSFLDDDQVKAGFV.....................LTCVAYPT
+FER2_CYACA/8-83                  NQKEGV..DVTINCPGDQY.ILDAAE...E.Q.GVDLPYSCRA.......GA....CSTCAGKLVKGSV.....DQSD...QSFLDEEQINNGFI.....................LTCVAYPT
+FER_BRYMA/8-83                   KLDDGS..EAVIDCDEDSF.ILDVAE...E.E.GIDIPFSCRS.......GS....CSTCAGKIEGGTV.....DQSE...QTFLDDDQMEEGYV.....................LTCVAYPT
+FER_APHSA/9-83                   KTPDGD..NVIT.VPDDEY.ILDVAE...E.E.GLDLPYSCRA.......GA....CSTCAGKLVSG........PAPDEDQSFLDDDQIQAGYI.....................LTCVAYPT
+FER_THEVL/9-84                   VRPDGS..ETTIDVPEDEY.ILDVAE...E.Q.GLDLPFSCRA.......GA....CSTCAGKLLEGEV.....DQSD...QSFLDDDQIEKGFV.....................LTCVAYPR
+FER_PERBI/6-80                   DTPDGK...KSFECPGDSY.ILDKAE...E.E.GLELPYSCRA.......GS....CSSCAGKVLTGSI.....DQSD...QAFLDDDQGGDGYC.....................LTCVTYPT
+FER3_RAPSA/8-82                  ITPEGE...QEVECDDDVY.VLDAAE...E.A.GIDLPYSCRA.......GS....CSSCAGKVVSGSV.....DQSD...QSFLDDDQIAEGFV.....................LTCAAYPT
+FER1_SPIOL/58-132                VTPTGN...VEFQCPDDVY.ILDAAE...E.E.GIDLPYSCRA.......GS....CSSCAGKLKTGSL.....NQDD...QSFLDDDQIDEGWV.....................LTCAAYPV
+FER_SILPR/57-131                 TKESGT...VTFDCPDDVY.VLDQAE...E.E.GIDLPYSCRA.......GS....CSSCAGKVVAGSV.....DQSD...QSFLDDDQIEAGWV.....................LTCAAYPS
+FER_WHEAT/54-128                 VTPEGE...VELEVPDDVY.ILDQAE...E.E.GIDLPYSCRA.......GS....CSSCAGKLVSGEI.....DQSD...QSFLDDDQMEAGWV.....................LTCHAYPK
+FER_SAMNI/8-82                   ITPDGP...QEFECPDDVY.ILEHAE...E.L.GIDIPYSCRA.......GS....CSSCAGKLVAGSV.....DQSD...QSFLDDEQIEEGWV.....................LTCVAYPK
+FERA_ALOMA/8-82                  VTPQGQ...QEFDCPDDVY.ILDQAE...E.E.GIDLPYSCRA.......GS....CSSCAGKVKQGEV.....DQSD...GSFLDDEQMEQGWV.....................LTCVAFPT
+FER_ARCLA/8-82                   ITPEGK...QEFEVPDDVY.ILDHAA...E.E.VGDLPYSCRA.......GS....CSSCAGKVTAGSV.....DQSD...GSYLDDDQMEAGWV.....................LTCVAYPT
+FER_DATST/8-82                   VTPDGP...VEFNCPDDVY.ILDQAE...E.E.GHDLPYSCRA.......GS....CSSCAGKVTAGTV.....DQSD...GNYLDDDQMADGFV.....................LTCVAYPQ
+FER_PALPL/9-83                   STPGGV...EEIEGDETTY.VLDSAE...D.Q.GIDLPYSCRA.......GA....CSTCAGIVELGTV.....DQSD...QSFLDDDQLNDSFV.....................LTCVAYPT
+FER_EUGVI/8-82                   INPDGE..VTI.ECGEDQY.ILDAAE...D.A.GIDLPYSCRA.......GA....CSSCTGIVKEGTV.....DQSD...QSFLDDDQMAKGFC.....................LTCTTYPT
+FER_CHLFU/6-80                   KTPSGE...ETIECPEDTY.ILDAAE...E.A.GLDLPYSCRA.......GA....CSSCAGKVESGEV.....DQSD...QSFLDDAQMGKGFV.....................LTCVAYPT
+FER_SYNY4/9-83                   ITPDGE...NSIECSDDTY.ILDAAE...E.A.GLDLPYSCRA.......GA....CSTCAGKITAGSV.....DQSD...QSFLDDDQIEAGYV.....................LTCVAYPT
+FER1_PHYAM/8-82                  VTPSGT...QTIDCPDDTY.VLDAAE...E.A.GLDLPYSCRA.......GS....CSSCTGKVTAGTV.....DQED...QSFLDDDQIEAGFV.....................LTCVAFPK
+FER2_PHYAM/9-83                  VTPSGT...NTITCPADTY.VLDAAE...E.S.GLDLPYSCRA.......GA....CSSCAGKVTAGAV.....NQED...GSFLEEEQMEAGWV.....................LTCVAYPT
+FER2_SPIOL/8-82                  VTPSGS...QVIECGDDEY.ILDAAE...E.K.GMDLPYSCRA.......GA....CSSCAGKVTSGSV.....DQSD...QSFLEDGQMEEGWV.....................LTCIAYPT
+FER_PHYPA/57-132                 DGETGA..ENVXECSDEEY.XLDAAE...R.A.GMDLPYSCRA.......GA....CSSCAGIIKAGEV.....DQSD...QSFLDDSQIDDGFV.....................LTCVAYPA
+FER_MARPO/7-81                   NTPTGQ...SVIDVEDDEY.ILDAAE...E.A.GLSLPYSCRA.......GA....CSSCAGKVTAGEV.....DQSD...ESFLDDDQMDEGYV.....................LTCIAYPT
+#=GC SS_cons                     EEESS-EEEEEEEEEETTCBHHHHHH...HTT-TTTGTTSS--TT..S..--...SSSTTEEEEEEHCEE....EHCCS..TTHHHHHHHTTSSET-TTT---GGGSSS---TTEEECCCSBGG
+#=GC seq_cons                    hphsup..thphpsssspp.lLcshc...p.t.slslshuCps.......Gs....CusCtsplhtu.................hpspphttt.h.....................LuCtshsp
+//
index af1ec87..5f7305d 100644 (file)
@@ -80,7 +80,11 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script> 
 </head>
 
 
@@ -88,10 +92,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -100,39 +104,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -171,6 +174,11 @@ document.onclick = mclose;
             <td width="80" ><strong>value=&quot;&quot;&gt;</strong></td>
             <td width="100%"><strong>Description</strong></td>
           </tr>
+          <tr>
+          <td>permissions</td>
+          <td>sandbox</td>
+          <td><strong>This parameter is necessary, and must have the value <em>sandbox</em> to allow the JalviewLite applet to run.</strong></td>
+          </tr>
           <tr> 
             <td>file</td>
             <td>fileName</td>
@@ -546,7 +554,7 @@ document.onclick = mclose;
           </li>
           <li>Note parameter &quot;PDBSeq&quot; is no longer required.<br>
           </li>
-          <li>Jalview 2.3 was updated to work with Jmol 11. See the <a href="../versions.html">versions archive if you want to download the old Jmol applet</a>.</li> 
+          <li>Jalview 2.3 was updated to work with Jmol 11. See the <a href="/development">versions archive if you want to download the old Jmol applet</a>.</li> 
             <p>&nbsp;</p>
           </li>
         </ul>
@@ -599,18 +607,5 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script>
 </body>
 </html>
index e88742e..0629af0 100755 (executable)
@@ -79,7 +79,11 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script>
 </head>
 
 
@@ -87,10 +91,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -99,39 +103,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -175,6 +178,7 @@ document.onclick = mclose;
       <td width="10%" valign="center"><applet
         code="jalview.bin.JalviewLite" width="140" height="35"
         archive="jalviewApplet.jar">
+<param name="permissions" value="sandbox">
        <param name="file" value="uniref50.fa">
         <param name="treeFile" value="ferredoxin.nw">
          <param name="userDefinedColour"
@@ -200,6 +204,7 @@ document.onclick = mclose;
       <td width="10%" valign="center"><applet
         code="jalview.bin.JalviewLite" width="140" height="35"
         archive="jalviewApplet.jar">
+<param name="permissions" value="sandbox">
        <param name="file" value="uniref50.fa">
         <param name="features" value="exampleFeatures.txt">
          <param name="showFeatureSettings" value="true">
@@ -223,6 +228,7 @@ document.onclick = mclose;
       <td width="10%" valign="center"><applet
         code="jalview.bin.JalviewLite" width="140" height="35"
         archive="jalviewApplet.jar,JmolApplet-12.2.4.jar">
+<param name="permissions" value="sandbox">
        <param name="file" value="uniref50.fa">
         <!-- <param name="debug" value="true">
                         -->
@@ -249,6 +255,7 @@ document.onclick = mclose;
       <td width="10%" valign="middle"><applet
         code="jalview.bin.JalviewLite" width="140" height="35"
         archive="jalviewApplet.jar">
+<param name="permissions" value="sandbox">
        <param name="file" value="jpred_msa.fasta">
         <param name="jnetfile" value="jpred_msa.seq.concise">
          <param name="defaultColour" value="Clustal">
@@ -281,6 +288,7 @@ document.onclick = mclose;
       <td width="10%" valign="center"><applet
         code="jalview.bin.JalviewLite" width="140" height="35"
         archive="jalviewApplet.jar">
+<param name="permissions" value="sandbox">
        <param name="file" value="RF00031_folded.stk">
         <param name="defaultColour" value="Purine/Pyrimidine">
          <param name="showAnnotation" value="true">
@@ -319,4 +327,4 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </body>
 </html>
-          
\ No newline at end of file
+          
index b9d26cb..ce6fca5 100644 (file)
@@ -79,7 +79,11 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script>
 </head>
 
 
@@ -87,10 +91,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -99,39 +103,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -166,7 +169,8 @@ document.onclick = mclose;
 </ul>
 <applet code="jalview.bin.JalviewLite"
                        width="756" height="560" archive="jalviewApplet.jar">
-                       <param name="file" value="plantfdx.fa">
+                       <param name="permissions" value="sandbox">
+      <param name="file" value="plantfdx.fa">
                        <param name="annotations" value="plantfdx.annotations">
                        <param name="features" value="plantfdx.features">
                        <param name="embedded" value="true">
index a3a7c3d..af15654 100644 (file)
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <TITLE>Embedded JalviewLite talking to externally managed Jmol</TITLE>
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script>
 <script src="javascript/deployJava.js"></script>
 <script src="jmol/Jmol.js"></script>
 <script src="javascript/jquery-1.4.4.min.js"></script>
@@ -103,7 +108,8 @@ function genHref()
   ,
   linkUrl_2 : "http://www.uniprot.org/uniprot/$SEQUENCE_ID$",
   APPLICATION_URL : "http://www.jalview.org/services/launchApp",
-  PDBfile : "1gaq.txt FER1_MAIZE"
+  PDBfile : "1gaq.txt FER1_MAIZE",
+  permissions : "sandbox"
  };
  jmolSetCallback("hoverCallback","_jmolhover");
   jmolSetCallback("pickCallback","_jmolpick");
@@ -177,10 +183,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -189,39 +195,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -269,18 +274,5 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script>
 </body>
 </html>
index 8c6114d..adf707e 100644 (file)
Binary files a/examples/exampleFile_2_3.jar and b/examples/exampleFile_2_3.jar differ
index 3c1ea42..71967a5 100644 (file)
Binary files a/examples/exampleFile_2_7.jar and b/examples/exampleFile_2_7.jar differ
index 71a904a..2f3f2f0 100644 (file)
@@ -79,7 +79,11 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script>
 </head>
 
 
@@ -87,10 +91,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -99,39 +103,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -160,6 +163,7 @@ document.onclick = mclose;
                <a name="api">View the full <a href="jalviewLiteJs.html">JalviewLite API documentation</a>.</a>
                <applet code="jalview.bin.JalviewLite" width="0" height="0"
                        archive="jalviewApplet.jar" name="Jalview">
+                       <param name="permissions" value="sandbox">
                        <param name="file" value="plantfdx.fa">
                        <param name="features" value="plantfdx.features">
                        <param name="wrap" value="true">
@@ -218,18 +222,6 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script></body>
+</body>
 </html>
-  
\ No newline at end of file
+  
index 5d0af5d..0e8b78a 100644 (file)
@@ -80,7 +80,9 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
 </head>
 
 
@@ -88,10 +90,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -100,39 +102,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
-       <li><a href="#">Home</a></li>
-       <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
-               <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-               <a href="#">Documentation</a>
-               <a href="#">Publications</a>
-               <a href="#">Credits</a>
-               <a href="#">Screenshots</a>
-               </div>
-       </li>
-       <li><a href="#">FAQ</a></li>
-       <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
-               <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-               <a href="#">News Mailing List</a>
-               <a href="#">Discussion Mailing List</a>
-               <a href="#">Links</a>
-               <a href="#">Community News</a>
-               </div>
-       </li>
-       <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
-               <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-               <a href="#">Release History</a>
-               <a href="#">Jalview Bug Tracker</a>
-               <a href="#">Jalview Git Web</a>
-               <a href="#">Development News</a>
-               </div>
-       </li>
-       <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
-               <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-               <a href="#">Training Courses</a>
-               <a href="#">Training News</a>
-               </div>
-       </li>
-       <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+  <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
+  </div>
+ </li>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+  <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
+  </div>
+ </li>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+  <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
+  </div>
+ </li>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+  <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
+  </div>
+ </li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -422,17 +423,5 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script></body>
+</body>
 </html>
index 7dbf8e0..d565ed2 100644 (file)
@@ -79,7 +79,9 @@ function mcancelclosetime()
 document.onclick = mclose; 
 // -->
 </script>
-
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
 </head>
 
 
@@ -87,10 +89,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -99,39 +101,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -241,6 +242,7 @@ function startJalview(aligURL,title,alwvar) {
 archive="jalviewApplet.jar" width="0" height="0">
 <param name="debug" value="true"/>
 <param name="showbutton" value="false"/>
+<param name="permissions" value="sandbox"/>
 </applet>
 
 
@@ -267,19 +269,6 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script>
 </body>
 </head>
-</html>
\ No newline at end of file
+</html>
index 3418068..4c67efc 100644 (file)
   
  <link href="css/reset.css" rel="stylesheet" type="text/css" />
  <link href="css/style.css" rel="stylesheet" type="text/css" />
+<script>
+<!--//--><![CDATA[//><!--
+var _gaq = _gaq || [];_gaq.push(["_setAccount", "UA-9060947-1"]);_gaq.push(["_trackPageview"]);(function() {var ga = document.createElement("script");ga.type = "text/javascript";ga.async = true;ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga, s);})();
+//--><!]]>
+</script>
 <script src="http://www.java.com/js/deployJava.js"></script>
 <script src="javascript/jalview.js" language="javascript"></script>
 <script>  //deployJava.debug="true";
@@ -106,10 +111,10 @@ document.onclick = mclose;
 
 
 <div id="header">
-<div id="logo"><a href="/" title="Home"></a></div>
+<div id="logo"><a href="http://www.jalview.org" title="Home"></a></div>
 <ul id="buttons">
 <li id="applet"><a href="applets.html" title="applet"></a></li>
-<li id="desktop"><a href="/webstart/jalview.jnlp" title="desktop"></a></li>
+<li id="desktop"><a href="../webstart/jalview.jnlp" title="desktop"></a></li>
 </ul>
 </div>
 
@@ -118,39 +123,38 @@ document.onclick = mclose;
 <div id="navInner">
 
 <ul id="sddm">
- <li><a href="#">Home</a></li>
- <li><a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
+ <li><a href="http://www.jalview.org">Home</a></li>
+ <li><a href="http://www.jalview.org/about" onmouseover="mopen('m1')" onmouseout="mclosetime()">About</a>
   <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Documentation</a>
-  <a href="#">Publications</a>
-  <a href="#">Credits</a>
-  <a href="#">Screenshots</a>
+  <a href="http://www.jalview.org/about/documentation">Documentation</a>
+  <a href="http://www.jalview.org/about/citation">Publications</a>
+  <a href="http://www.jalview.org/about/credits">Credits</a>
   </div>
  </li>
- <li><a href="#">FAQ</a></li>
- <li><a href="#" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
+ <li><a href="http://www.jalview.org/faq">FAQ</a></li>
+ <li><a href="http://www.jalview.org/community" onmouseover="mopen('m3')" onmouseout="mclosetime()" class="community">Community</a>
   <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">News Mailing List</a>
-  <a href="#">Discussion Mailing List</a>
-  <a href="#">Links</a>
-  <a href="#">Community News</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-announce">News Mailing List</a>
+  <a href="http://www.jalview.org/mailman/listinfo/jalview-discuss">Discussion Mailing List</a>
+  <a href="http://www.jalview.org/community/links">Links</a>
+  <a href="http://www.jalview.org/community/community-news">Community News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
+ <li><a href="http://www.jalview.org/development" onmouseover="mopen('m4')" onmouseout="mclosetime()" class="development">Development</a>
   <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Release History</a>
-  <a href="#">Jalview Bug Tracker</a>
-  <a href="#">Jalview Git Web</a>
-  <a href="#">Development News</a>
+  <a href="http://www.jalview.org/development/release-history">Release History</a>
+  <a href="http://issues.jalview.org">Jalview Bug Tracker</a>
+  <a href="http://source.jalview.org/gitweb/">Jalview Git Web</a>
+  <a href="http://www.jalview.org/development/development-news">Development News</a>
   </div>
  </li>
- <li><a href="#" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
+ <li><a href="http://www.jalview.org/training" onmouseover="mopen('m5')" onmouseout="mclosetime()" class="training">Training</a>
   <div id="m5" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
-  <a href="#">Training Courses</a>
-  <a href="#">Training News</a>
+  <a href="http://www.jalview.org/training/training-courses">Training Courses</a>
+  <a href="http://www.jalview.org/training/training-news">Training News</a>
   </div>
  </li>
- <li><a href="#" class="download-right">Download</a></li>
+ <li><a href="http://www.jalview.org/download" class="download-right">Download</a></li>
 </ul>
 <div style="clear:both"></div>
 </div>
@@ -202,6 +206,7 @@ document.onclick = mclose;
     linkLabel_2 : "Uniprot"
     ,
     linkUrl_2 : "http://www.uniprot.org/uniprot/$SEQUENCE_ID$",
+    permissions : 'sandbox',
     APPLICATION_URL : "http://www.jalview.org/services/launchApp"
   };
  
@@ -231,9 +236,9 @@ document.onclick = mclose;
     linkLabel_1 : "EMBL-EBI Search",
     linkUrl_1 : "http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$"
     ,
-    linkLabel_2 : "Uniprot"
-    ,
+    linkLabel_2 : "Uniprot",
     linkUrl_2 : "http://www.uniprot.org/uniprot/$SEQUENCE_ID$",
+    permissions : 'sandbox',
    APPLICATION_URL : "http://www.jalview.org/services/launchApp"
   };
   deployJava.runApplet(attributes, parameters, '1.6');
@@ -263,18 +268,5 @@ Bioinformatics 25 (9) 1189-1191 <a href="http://dx.doi.org/10.1093/bioinformatic
 </div>
 </div>
 </div>
-
-<script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ?
- "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src=\'" + gaJsHost +
- "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try{
-    var pageTracker = _gat._getTracker("'UA-9060947-1'");
-    pageTracker._trackPageview();
-} catch(err) {}
-</script>
 </body>
 </html>
diff --git a/examples/testdata/example_annot_file.jva b/examples/testdata/example_annot_file.jva
new file mode 100644 (file)
index 0000000..794f42b
--- /dev/null
@@ -0,0 +1,22 @@
+#Comment lines follow the hash symbol
+JALVIEW_ANNOTATION
+SEQUENCE_REF   FER1_MESCR      5
+BAR_GRAPH      Bar Graph 1     <html>an <em>html tooltip</em> for Bar graph 1.</html>  ||-100,-|-200,-|-300,-|-400,-|200,+|300,+|150,+
+LINE_GRAPH     Green Values    1.1|2.2|1.3|3.4|0.7|1.4|3.3|2.2|2.1|-1.1|3.2
+LINE_GRAPH     Red Values      2.1|3.2|1.3|-1.4|5.5|1.4|1.3|4.2|-1.1|1.1|3.2
+BAR_GRAPH      Bar Graph       2 1,.|2,*|3,:|4,.|5,*|4,:|3,.|2|1|1|2|3|4|5|4
+NO_GRAPH       Icons   ||||E,Sheet1|E|E||||H,Sheet 2|H|H|H||||||
+NO_GRAPH       Purple Letters  m|y|p|r|o|t|e|i|n
+COLOUR Bar Graph 2     blue
+COLOUR Red Values      255,0,0
+COLOUR Green Values    green
+COLOUR Purple Letters  151,52,228
+COMBINE        Green Values    Red Values
+GRAPHLINE      Red Values      2.6     threshold       black
+
+SEQUENCE_GROUP Group_A 30      50      *
+SEQUENCE_GROUP Group_B 1       351     2-5
+SEQUENCE_GROUP Group_C 12      14      -1      seq1    seq2    seq3
+PROPERTIES     Group_A description=This is the description     colour=Helix Propensity pidThreshold=0  outlineColour=red       displayBoxes=true       displayText=false       colourText=false        textCol1=black  textCol2=black  textColThreshold=0
+PROPERTIES     Group_B outlineColour=red
+PROPERTIES     Group_C colour=Clustal
diff --git a/examples/testdata/smad.fa b/examples/testdata/smad.fa
new file mode 100644 (file)
index 0000000..6a3b27b
--- /dev/null
@@ -0,0 +1,132 @@
+>gi|7160686|emb|CAB76819.1|/1-465
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSILVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTLRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|61967924|gb|AAX56944.1|/1-465
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSILVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTLRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|11464653|gb|AAG35265.1|/1-455
+TMHPVNYQEPKYWCSIVYYELNNRVGEAFNASQLSIIIDGFTDPSNNSDRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHNFHPTTVCKIPPGCSLKIFSNQEF----AHLLSRTVHH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWVEIHLNGPLQWLDRVLTQMGTPRNPISSVS
+>gi|6273783|gb|AAF06361.1|/1-472
+DVHPVAYQEPKHWCSIVYYELNNRVGEAFLASSTSVLVDGFTDPSNNRNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSRCSLKIFNNQEF----AELLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAKYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|11907945|gb|AAG41407.1|/1-465
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|29725652|gb|AAO88909.1|/1-465
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|1654323|gb|AAC50790.1|/1-465
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|3192871|gb|AAC19116.1|/1-468
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|55926152|ref|NP_001007481.1|/1-464
+DVQAVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNRNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNFHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFETVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|61967926|gb|AAX56945.1|/1-465
+DVQPVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPLNPISSVS
+>gi|2360958|gb|AAB92396.1|/1-465
+DVQPVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKSRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNFHHGFHPTTVCKIPSSCSLKIFNNQEF----AQLLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPLNPISSVS
+>gi|5706366|dbj|BAA83093.1|/1-465
+DVQPVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPANNKSRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNFHHGFHPTTVCKIPSSCSLKIFNNQEF----AQLLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPLNPISSVS
+>gi|3982649|gb|AAC83580.1|/1-465
+DVQPVAYEEPKHWCSIVYYELNNRVGEAFHASSTSVLVDGFTDPSNNKSRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDSSIFVQSRNCNFHHGFHPTTVCKIPSSCSLKIFNNQEF----AQLLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPLNPISSVS
+>gi|6288777|gb|AAF06738.1|/1-464
+DVQPVEYQEPSHWCSIVYYELNNRVGEAYHASSTSVLVDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECLSDTSIFVQSRNCNYHHGFHPTTVCKIPSGCSLKIFNNQEF----AQLLAQSVNH
+GFEAVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEVHLHGPLQWLDKVLTQMGSPLNPISSVS
+>gi|61967928|gb|AAX56946.1|/1-476
+NFRPVCYEEPQHWCSVAYYELNNRVGETFQASSRSILIDGFTDPSNNKNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECVSDSSIFVQSRNCNYQHGFHPATVCKIPSGCSLKIFNNQLF----AQPLAQSVNH
+GFEVVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|2689629|gb|AAC53515.1|/1-434
+DFRPVCYEEPLHWCSVAYYELNNRVGETFQASSRSVLIDGFTDPSNNRNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECVSDSSIFVQSRNCNYQHGFHPATVCKIPSGCSLKVFNNQLFAQLLAQLLAQSVHH
+GFEVVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|22532988|gb|AAF77079.2|/1-428
+DFRPVCYEEPQHWCSVAYYELNNRVGETFQASSRSVLIDGFTDPSNNRNRFCLGLLSNVNRNSTIENTRRHI
+GKGVHLYYVGGEVYAECVSDSSIFVQSRNCNYQHGFHPATVCKIPSGCSLKVFNNQLF----AQLLAQSVHH
+GFEVVYELTKMCTIRMSFVKGWGAEYHRQDVTSTPCWIEIHLHGPLQWLDKVLTQMGSPHNPISSVS
+>gi|2967646|gb|AAC39657.1|/1-467
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|45331050|gb|AAS57861.1|/1-468
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYDWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|5360217|dbj|BAA81909.1|/1-467
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|6288775|gb|AAF06737.1|/1-468
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLCLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|58047721|gb|AAH89184.1|/1-467
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|4009524|gb|AAD11458.1|/1-486
+DAAPVMYHEPAFWCSISYYELNTRVGETFHASQPSITVDGFTDPSNS-ERFCLGLLSNVNRNEVVEQTRRHI
+GKGVRLYYIGGEVFAECLSDSSIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLSQSVSQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDRVLTQMGSPRLPCSSMS
+>gi|40254710|ref|NP_571441.2|/1-468
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|18655485|pdb|1KHX|A|/22-227
+DLQPVTYSEPAFWCSIAYYELNQRVGETFHASQPSLTVDGFTDPSNS-ERFCLGLLSNVNRNATVEMTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSVRCSSMS
+>gi|13992583|emb|CAC38118.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDNAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|11875329|dbj|BAB19634.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|45331052|gb|AAS57862.1|/1-422
+DLQPVTYCESAFWCSISYYELNQRVGETFHASQPSLTVDGFTDPSNA-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYRLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPNLRCSSVS
+>gi|18418623|gb|AAL68976.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|2564493|gb|AAB81755.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERLCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|6981174|ref|NP_037227.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|45383213|ref|NP_989806.1|/1-426
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
+>gi|47523074|ref|NP_999302.1|/1-425
+DLQPVTYCEPAFWCSISYYELNQRVGETFHASQPSMTVDGFTDPSNS-ERFCLGLLSNVNRNAAVELTRRHI
+GRGVRLYYIGGEVFAECLSDSAIFVQSPNCNQRYGWHPATVCKIPPGCNLKIFNNQEF----AALLAQSVNQ
+GFEAVYQLTRMCTIRMSFVKGWGAEYRRQTVTSTPCWIELHLNGPLQWLDKVLTQMGSPSIRCSSVS
diff --git a/examples/testdata/smad_groups.jva b/examples/testdata/smad_groups.jva
new file mode 100644 (file)
index 0000000..ca5f507
--- /dev/null
@@ -0,0 +1,19 @@
+JALVIEW_ANNOTATION
+# Created: Tue Jun 04 16:56:03 BST 2013
+
+
+SEQUENCE_GROUP group1  1       211     -1      gi|7160686|emb|CAB76819.1|      gi|61967924|gb|AAX56944.1|      gi|11464653|gb|AAG35265.1|      gi|6273783|gb|AAF06361.1|       gi|11907945|gb|AAG41407.1|      gi|29725652|gb|AAO88909.1|      gi|1654323|gb|AAC50790.1|       gi|3192871|gb|AAC19116.1|       gi|55926152|ref|NP_001007481.1| 
+PROPERTIES     group1  outlineColour=000000    displayBoxes=true       displayText=true        colourText=false        showUnconserved=false   textCol1=000000 textCol2=ffffff 
+
+SEQUENCE_GROUP group2  1       211     -1      gi|61967926|gb|AAX56945.1|      gi|2360958|gb|AAB92396.1|       gi|5706366|dbj|BAA83093.1|      gi|3982649|gb|AAC83580.1|       gi|6288777|gb|AAF06738.1|       
+PROPERTIES     group2  outlineColour=000000    displayBoxes=true       displayText=true        colourText=false        showUnconserved=false   textCol1=000000 textCol2=ffffff 
+
+SEQUENCE_GROUP group3  1       211     -1      gi|61967928|gb|AAX56946.1|      gi|2689629|gb|AAC53515.1|       gi|22532988|gb|AAF77079.2|      
+PROPERTIES     group3  outlineColour=000000    displayBoxes=true       displayText=true        colourText=false        showUnconserved=false   textCol1=000000 textCol2=ffffff 
+
+SEQUENCE_GROUP group4  1       211     -1      gi|2967646|gb|AAC39657.1|       gi|45331050|gb|AAS57861.1|      gi|5360217|dbj|BAA81909.1|      gi|6288775|gb|AAF06737.1|       gi|58047721|gb|AAH89184.1|      gi|4009524|gb|AAD11458.1|       gi|40254710|ref|NP_571441.2|    gi|18655485|pdb|1KHX|A| 
+PROPERTIES     group4  outlineColour=000000    displayBoxes=true       displayText=true        colourText=false        showUnconserved=false   textCol1=000000 textCol2=ffffff 
+
+SEQUENCE_GROUP group5  1       211     -1      gi|13992583|emb|CAC38118.1|     gi|11875329|dbj|BAB19634.1|     gi|45331052|gb|AAS57862.1|      gi|18418623|gb|AAL68976.1|      gi|2564493|gb|AAB81755.1|       gi|6981174|ref|NP_037227.1|     gi|45383213|ref|NP_989806.1|    gi|47523074|ref|NP_999302.1|    
+PROPERTIES     group5  outlineColour=000000    displayBoxes=true       displayText=true        colourText=false        showUnconserved=false   textCol1=000000 textCol2=ffffff 
+
diff --git a/examples/testdata/test_combine_annot.jva b/examples/testdata/test_combine_annot.jva
new file mode 100644 (file)
index 0000000..e1ee9e0
--- /dev/null
@@ -0,0 +1,31 @@
+#Comment lines follow the hash symbol
+JALVIEW_ANNOTATION
+SEQUENCE_REF   FER1_MESCR      5
+BAR_GRAPH      Bar Graph 1     <html>an <em>html tooltip</em> for Bar graph 1.</html>  ||-100,-|-200,-|-300,-|-400,-|200,+|300,+|150,+
+LINE_GRAPH     Green Values    1.1|2.2|1.3|3.4|0.7|1.4|3.3|2.2|2.1|-1.1|3.2
+LINE_GRAPH     Red Values      2.1|3.2|1.3|-1.4|5.5|1.4|1.3|4.2|-1.1|1.1|3.2
+LINE_GRAPH     Blue Values     0|0|0|1.1|2.2|1.3|3.4|0.7|1.4|3.3|2.2
+LINE_GRAPH     Yellow Values   3.0|3.0|3.0|2.1|3.2|1.3|-1.4|5.5|1.4|1.3|4.2
+
+BAR_GRAPH      Bar Graph       2 1,.|2,*|3,:|4,.|5,*|4,:|3,.|2|1|1|2|3|4|5|4
+
+NO_GRAPH       Icons   ||||E,Sheet1|E|E||||H,Sheet 2|H|H|H||||||
+NO_GRAPH       Purple Letters  m|y|p|r|o|t|e|i|n
+COLOUR Bar Graph 2     blue
+COLOUR Red Values      255,0,0
+COLOUR Green Values    green
+COLOUR Blue Values     blue
+COLOUR Yellow Values   yellow
+COLOUR Purple Letters  151,52,228
+
+COMBINE        Green Values    Red Values
+COMBINE        Blue Values     Yellow Values
+
+GRAPHLINE      Red Values      2.6     threshold       black
+
+SEQUENCE_GROUP Group_A 30      50      *
+SEQUENCE_GROUP Group_B 1       351     2-5
+SEQUENCE_GROUP Group_C 12      14      -1      seq1    seq2    seq3
+PROPERTIES     Group_A description=This is the description     colour=Helix Propensity pidThreshold=0  outlineColour=red       displayBoxes=true       displayText=false       colourText=false        textCol1=black  textCol2=black  textColThreshold=0
+PROPERTIES     Group_B outlineColour=red
+PROPERTIES     Group_C colour=Clustal
diff --git a/examples/testdata/uniref50_iupred.jva b/examples/testdata/uniref50_iupred.jva
new file mode 100644 (file)
index 0000000..cc7f4de
--- /dev/null
@@ -0,0 +1,172 @@
+JALVIEW_ANNOTATION
+# Created: Fri Jun 21 13:44:50 BST 2013
+
+BAR_GRAPH      Conservation    Conservation of total alignment less than 25% gaps      1.0,1,1.0,[5d1500]|3.0,3,3.0,[7d3f00]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|1.0,1,1.0,[5d1500]|2.0,2,2.0,[6d2a00]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|2.0,2,2.0,[6d2a00]|1.0,1,1.0,[5d1500]|1.0,1,1.0,[5d1500]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,-,0.0,[4d0000]|2.0,2,2.0,[6d2a00]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|11.0,*,11.0,[ffe600]|7.0,7,7.0,[be9200]|11.0,*,11.0,[ffe600]|6.0,6,6.0,[ae7d00]|11.0,*,11.0,[ffe600]|6.0,6,6.0,[ae7d00]|8.0,8,8.0,[cea700]|9.0,9,9.0,[dfbc00]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|7.0,7,7.0,[be9200]|11.0,*,11.0,[ffe600]|3.0,3,3.0,[7d3f00]|6.0,6,6.0,[ae7d00]|11.0,*,11.0,[ffe600]|7.0,7,7.0,[be9200]|7.0,7,7.0,[be9200]|9.0,9,9.0,[dfbc00]|5.0,5,5.0,[9e6800]|6.0,6,6.0,[ae7d00]|8.0,8,8.0,[cea700]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|9.0,9,9.0,[dfbc00]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|3.0,3,3.0,[7d3f00]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|3.0,3,3.0,[7d3f00]|11.0,*,11.0,[ffe600]|5.0,5,5.0,[9e6800]|9.0,9,9.0,[dfbc00]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|9.0,9,9.0,[dfbc00]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|11.0,*,11.0,[ffe600]|9.0,9,9.0,[dfbc00]|3.0,3,3.0,[7d3f00]|7.0,7,7.0,[be9200]|11.0,*,11.0,[ffe600]|3.0,3,3.0,[7d3f00]|9.0,9,9.0,[dfbc00]|8.0,8,8.0,[cea700]|11.0,*,11.0,[ffe600]|6.0,6,6.0,[ae7d00]|11.0,*,11.0,[ffe600]|4.0,4,4.0,[8d5300]|5.0,5,5.0,[9e6800]|9.0,9,9.0,[dfbc00]|11.0,*,11.0,[ffe600]|8.0,8,8.0,[cea700]|9.0,9,9.0,[dfbc00]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|3.0,3,3.0,[7d3f00]|2.0,2,2.0,[6d2a00]|3.0,3,3.0,[7d3f00]|2.0,2,2.0,[6d2a00]|2.0,2,2.0,[6d2a00]|2.0,2,2.0,[6d2a00]|1.0,1,1.0,[5d1500]|3.0,3,3.0,[7d3f00]|2.0,2,2.0,[6d2a00]|2.0,2,2.0,[6d2a00]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|4.0,4,4.0,[8d5300]|3.0,3,3.0,[7d3f00]|1.0,1,1.0,[5d1500]|2.0,2,2.0,[6d2a00]|3.0,3,3.0,[7d3f00]|2.0,2,2.0,[6d2a00]|5.0,5,5.0,[9e6800]|3.0,3,3.0,[7d3f00]|3.0,3,3.0,[7d3f00]|0.0,0,0.0,[4d0000]|0.0,0,0.0,[4d0000]|1.0,1,1.0,[5d1500]|0.0,0,0.0,[4d0000]|0.0,-,0.0,[4d0000]|0.0,-,0.0,[4d0000]|
+BAR_GRAPH      Quality Alignment Quality based on Blosum62 scores      29.151815,29.151815,[cba200]|30.574812,30.574812,[d1aa00]|14.400199,14.400199,[8b5000]|16.93248,16.93248,[965e00]|2.1220763,2.1220763,[560c00]|2.2049963,2.2049963,[560c00]|3.647952,3.647952,[5c1400]|4.814642,4.814642,[611b00]|18.351393,18.351393,[9c6600]|17.532412,17.532412,[996200]|7.5054855,7.5054855,[6d2a00]|15.490477,15.490477,[905600]|14.241707,14.241707,[8a4f00]|9.905579,9.905579,[773700]|20.354017,20.354017,[a57100]|26.870352,26.870352,[c19600]|24.969187,24.969187,[b98b00]|27.419409,27.419409,[c39900]|15.350427,15.350427,[8f5600]|21.116522,21.116522,[a87600]|9.34032,9.34032,[753400]|14.1895275,14.1895275,[8a4f00]|10.104505,10.104505,[783800]|8.587312,8.587312,[723000]|18.694708,18.694708,[9e6800]|11.420612,11.420612,[7e4000]|6.8467255,6.8467255,[6a2600]|17.449827,17.449827,[986100]|16.825909,16.825909,[955e00]|2.4334474,2.4334474,[570e00]|15.685622,15.685622,[915700]|9.836516,9.836516,[773700]|3.4712791,3.4712791,[5c1300]|4.531816,4.531816,[601900]|7.8744216,7.8744216,[6f2c00]|0.0,0.0,[4d0000]|9.01113,9.01113,[743200]|3.174218,3.174218,[5a1200]|2.0395048,2.0395048,[550b00]|2.1654668,2.1654668,[560c00]|21.517344,21.517344,[aa7800]|15.738462,15.738462,[915800]|14.844854,14.844854,[8d5300]|22.159096,22.159096,[ad7c00]|13.956608,13.956608,[894e00]|20.147892,20.147892,[a47000]|25.067545,25.067545,[b98c00]|2.0943506,2.0943506,[560c00]|20.30842,20.30842,[a57100]|10.254437,10.254437,[793900]|6.5836596,6.5836596,[692500]|19.446732,19.446732,[a16c00]|6.2202287,6.2202287,[672300]|9.796006,9.796006,[773700]|6.0385494,6.0385494,[672200]|13.963727,13.963727,[894e00]|13.838549,13.838549,[884d00]|18.48424,18.48424,[9d6700]|18.302633,18.302633,[9c6600]|41.172745,41.172745,[ffe600]|32.59908,32.59908,[dab600]|41.172745,41.172745,[ffe600]|34.495945,34.495945,[e2c000]|41.172745,41.172745,[ffe600]|33.501804,33.501804,[debb00]|27.034466,27.034466,[c29700]|40.020737,40.020737,[fadf00]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|29.252739,29.252739,[cba300]|41.172745,41.172745,[ffe600]|14.935498,14.935498,[8d5300]|0.88449144,0.88449144,[500500]|41.172745,41.172745,[ffe600]|20.81991,20.81991,[a77400]|31.73346,31.73346,[d6b100]|29.757969,29.757969,[cea600]|16.279755,16.279755,[935b00]|32.647984,32.647984,[dab600]|38.352337,38.352337,[f3d600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|39.6125,39.6125,[f8dd00]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|9.671661,9.671661,[763600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|11.17141,11.17141,[7d3e00]|41.172745,41.172745,[ffe600]|3.2054348,3.2054348,[5a1200]|38.569283,38.569283,[f4d700]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|39.707684,39.707684,[f9dd00]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|41.172745,41.172745,[ffe600]|39.447525,39.447525,[f8dc00]|21.229778,21.229778,[a97600]|27.779364,27.779364,[c59b00]|41.172745,41.172745,[ffe600]|24.149143,24.149143,[b58700]|39.447525,39.447525,[f8dc00]|33.857655,33.857655,[dfbd00]|41.172745,41.172745,[ffe600]|28.69976,28.69976,[c9a000]|41.172745,41.172745,[ffe600]|14.611241,14.611241,[8c5100]|32.346375,32.346375,[d9b400]|39.24055,39.24055,[f7db00]|41.172745,41.172745,[ffe600]|38.352337,38.352337,[f3d600]|38.569283,38.569283,[f4d700]|22.374107,22.374107,[ae7d00]|36.98438,36.98438,[edce00]|12.34415,12.34415,[824500]|11.811655,11.811655,[804200]|14.798897,14.798897,[8d5200]|36.60138,36.60138,[ebcc00]|14.0762415,14.0762415,[8a4e00]|36.817875,36.817875,[eccd00]|36.53897,36.53897,[ebcc00]|37.583706,37.583706,[efd100]|35.536423,35.536423,[e7c600]|18.004925,18.004925,[9b6400]|37.633095,37.633095,[f0d200]|34.738743,34.738743,[e3c200]|36.451622,36.451622,[ebcb00]|19.948801,19.948801,[a36f00]|28.285,28.285,[c79e00]|35.93151,35.93151,[e8c800]|36.817875,36.817875,[eccd00]|26.762383,26.762383,[c19500]|36.37101,36.37101,[eacb00]|36.413998,36.413998,[eacb00]|37.583706,37.583706,[efd100]|36.282784,36.282784,[eaca00]|34.729824,34.729824,[e3c200]|36.413998,36.413998,[eacb00]|24.348654,24.348654,[b68800]|24.349539,24.349539,[b68800]|34.091675,34.091675,[e0be00]|21.114677,21.114677,[a87600]|13.676696,13.676696,[884c00]|2.1107035,2.1107035,[560c00]|
+BAR_GRAPH      Consensus       PID     80.0,M,M 80%|80.0,A,A 80%|20.0,+,[AST] 20%|53.333332,T,T 53%|0.0,-,- 0%|0.0,-,- 0%|13.333333,T,T 13%|20.0,P,P 20%|40.0,A,A 40%|40.0,L,L 40%|46.666668,S,S 46%|40.0,G,G 40%|33.333332,T,T 33%|20.0,+,[AIM] 20%|33.333332,V,V 33%|66.666664,S,S 66%|66.666664,T,T 66%|66.666664,S,S 66%|66.666664,F,F 66%|46.666668,L,L 46%|46.666668,R,R 46%|46.666668,R,R 46%|26.666666,Q,Q 26%|46.666668,P,P 46%|40.0,A,A 40%|60.0,P,P 60%|26.666666,T,T 26%|53.333332,S,S 53%|40.0,L,L 40%|20.0,R,R 20%|26.666666,S,S 26%|33.333332,L,L 33%|40.0,P,P 40%|26.666666,S,S 26%|33.333332,+,[AN] 33%|26.666666,V,V 26%|33.333332,G,G 33%|20.0,+,[EQ] 20%|0.0,-,- 0%|0.0,-,- 0%|33.333332,+,[AS] 33%|53.333332,L,L 53%|60.0,F,F 60%|73.333336,G,G 73%|66.666664,L,L 66%|66.666664,K,K 66%|53.333332,S,S 53%|0.0,-,- 0%|40.0,S,S 40%|26.666666,T,T 26%|20.0,A,A 20%|66.666664,R,R 66%|40.0,G,G 40%|53.333332,G,G 53%|46.666668,R,R 46%|33.333332,V,V 33%|46.666668,T,T 46%|53.333332,A,A 53%|66.666664,M,M 66%|100.0,A,A 100%|53.333332,T,T 53%|100.0,Y,Y 100%|86.666664,K,K 86%|100.0,V,V 100%|86.666664,K,K 86%|66.666664,L,L 66%|80.0,I,I 80%|100.0,T,T 100%|100.0,P,P 100%|66.666664,E,E 66%|100.0,G,G 100%|46.666668,E,E 46%|46.666668,Q,Q 46%|100.0,E,E 100%|46.666668,F,F 46%|60.0,E,E 60%|86.666664,C,C 86%|66.666664,P,P 66%|80.0,D,D 80%|93.333336,D,D 93%|100.0,V,V 100%|100.0,Y,Y 100%|66.666664,I,I 66%|100.0,L,L 100%|100.0,D,D 100%|46.666668,A,A 46%|100.0,A,A 100%|100.0,E,E 100%|100.0,E,E 100%|53.333332,A,A 53%|100.0,G,G 100%|60.0,I,I 60%|93.333336,D,D 93%|100.0,L,L 100%|100.0,P,P 100%|93.333336,Y,Y 93%|100.0,S,S 100%|100.0,C,C 100%|100.0,R,R 100%|100.0,A,A 100%|100.0,G,G 100%|100.0,S,S 100%|100.0,C,C 100%|100.0,S,S 100%|100.0,S,S 100%|100.0,C,C 100%|100.0,A,A 100%|100.0,G,G 100%|100.0,K,K 100%|80.0,V,V 80%|60.0,V,V 60%|53.333332,S,S 53%|100.0,G,G 100%|60.0,S,S 60%|80.0,V,V 80%|80.0,D,D 80%|100.0,Q,Q 100%|66.666664,S,S 66%|100.0,D,D 100%|46.666668,+,[GQ] 46%|73.333336,S,S 73%|93.333336,F,F 93%|100.0,L,L 100%|93.333336,D,D 93%|93.333336,D,D 93%|53.333332,D,D 53%|93.333336,Q,Q 93%|53.333332,I,I 53%|40.0,A,A 40%|53.333332,E,E 53%|93.333336,G,G 93%|46.666668,W,W 46%|93.333336,V,V 93%|93.333336,L,L 93%|93.333336,T,T 93%|93.333336,C,C 93%|53.333332,V,V 53%|93.333336,A,A 93%|86.666664,Y,Y 86%|93.333336,P,P 93%|60.0,T,T 60%|73.333336,S,S 73%|93.333336,D,D 93%|93.333336,V,V 93%|66.666664,T,T 66%|93.333336,I,I 93%|93.333336,E,E 93%|93.333336,T,T 93%|93.333336,H,H 93%|86.666664,K,K 86%|93.333336,E,E 93%|73.333336,E,E 73%|60.0,E,E 60%|73.333336,L,L 73%|46.666668,T,T 46%|40.0,A,A 40%|0.0,-,- 0%|
+
+SEQUENCE_REF   FER2_ARATH
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1671,0.1671,[72144e]|0.2129,0.2129,[72144e]|0.247,0.247,[72144e]|0.1554,0.1554,[72144e]|0.1162,0.1162,[72144e]|0.1449,0.1449,[72144e]|0.1731,0.1731,[72144e]|0.2064,0.2064,[72144e]|0.2436,0.2436,[72144e]|0.2715,0.2715,[72144e]|0.3249,0.3249,[72144e]|0.2783,0.2783,[72144e]|0.3019,0.3019,[72144e]|0.2399,0.2399,[72144e]|0.2364,0.2364,[72144e]|0.2645,0.2645,[72144e]|0.2609,0.2609,[72144e]|0.2988,0.2988,[72144e]|0.2064,0.2064,[72144e]|0.2094,0.2094,[72144e]|0.2849,0.2849,[72144e]|0.3426,0.3426,[72144e]|0.3529,0.3529,[72144e]|0.3426,0.3426,[72144e]|0.2817,0.2817,[72144e]|0.2783,0.2783,[72144e]|0.3426,0.3426,[72144e]|0.2715,0.2715,[72144e]|0.2609,0.2609,[72144e]|0.2503,0.2503,[72144e]|0.2364,0.2364,[72144e]|0.2364,0.2364,[72144e]|0.1791,0.1791,[72144e]|0.247,0.247,[72144e]|0.2503,0.2503,[72144e]|0.3149,0.3149,[72144e]|0.3149,0.3149,[72144e]|0.2645,0.2645,[72144e]|0.3356,0.3356,[72144e]|0.2752,0.2752,[72144e]|0.346,0.346,[72144e]|0.346,0.346,[72144e]|0.3426,0.3426,[72144e]|0.2645,0.2645,[72144e]|0.247,0.247,[72144e]|0.1969,0.1969,[72144e]|0.2503,0.2503,[72144e]|0.2503,0.2503,[72144e]|0.1852,0.1852,[72144e]|0.2541,0.2541,[72144e]|0.2951,0.2951,[72144e]|0.3182,0.3182,[72144e]|0.3215,0.3215,[72144e]|0.3392,0.3392,[72144e]|0.374,0.374,[72144e]|0.3948,0.3948,[72144e]|0.3392,0.3392,[72144e]|0.3599,0.3599,[72144e]|0.268,0.268,[72144e]|0.3426,0.3426,[72144e]|0.3599,0.3599,[72144e]|0.4051,0.4051,[72144e]|0.374,0.374,[72144e]|0.3249,0.3249,[72144e]|0.268,0.268,[72144e]|0.2783,0.2783,[72144e]|0.3019,0.3019,[72144e]|0.3286,0.3286,[72144e]|0.3117,0.3117,[72144e]|0.4292,0.4292,[72144e]|0.5296,0.5296,[72144e]|0.4901,0.4901,[72144e]|0.4582,0.4582,[72144e]|0.3667,0.3667,[72144e]|0.384,0.384,[72144e]|0.2918,0.2918,[72144e]|0.3182,0.3182,[72144e]|0.2193,0.2193,[72144e]|0.2752,0.2752,[72144e]|0.1643,0.1643,[72144e]|0.2541,0.2541,[72144e]|0.2034,0.2034,[72144e]|0.1852,0.1852,[72144e]|0.1702,0.1702,[72144e]|0.1399,0.1399,[72144e]|0.2034,0.2034,[72144e]|0.2541,0.2541,[72144e]|0.2292,0.2292,[72144e]|0.1881,0.1881,[72144e]|0.2129,0.2129,[72144e]|0.2292,0.2292,[72144e]|0.1643,0.1643,[72144e]|0.107,0.107,[72144e]|0.1251,0.1251,[72144e]|0.1251,0.1251,[72144e]|0.1759,0.1759,[72144e]|0.1115,0.1115,[72144e]|0.1731,0.1731,[72144e]|0.1501,0.1501,[72144e]|0.2164,0.2164,[72144e]|0.2328,0.2328,[72144e]|0.3286,0.3286,[72144e]|0.3286,0.3286,[72144e]|0.2645,0.2645,[72144e]|0.2034,0.2034,[72144e]|0.2193,0.2193,[72144e]|0.3286,0.3286,[72144e]|0.3529,0.3529,[72144e]|0.3631,0.3631,[72144e]|0.4292,0.4292,[72144e]|0.4541,0.4541,[72144e]|0.4766,0.4766,[72144e]|0.4864,0.4864,[72144e]|0.4652,0.4652,[72144e]|0.4685,0.4685,[72144e]|0.4051,0.4051,[72144e]|0.4087,0.4087,[72144e]|0.3117,0.3117,[72144e]|0.3321,0.3321,[72144e]|0.2918,0.2918,[72144e]|0.2164,0.2164,[72144e]|0.2503,0.2503,[72144e]|0.2364,0.2364,[72144e]|0.2292,0.2292,[72144e]|0.2503,0.2503,[72144e]|0.2918,0.2918,[72144e]|0.3053,0.3053,[72144e]|0.2258,0.2258,[72144e]|0.2292,0.2292,[72144e]|0.2129,0.2129,[72144e]|0.2064,0.2064,[72144e]|0.2164,0.2164,[72144e]|0.2436,0.2436,[72144e]|0.2436,0.2436,[72144e]|0.2193,0.2193,[72144e]|0.2258,0.2258,[72144e]|0.2503,0.2503,[72144e]|0.3117,0.3117,[72144e]|0.2884,0.2884,[72144e]|0.374,0.374,[72144e]|0.4149,0.4149,[72144e]|0.4292,0.4292,[72144e]|0.5098,0.5098,[72144e]|0.4476,0.4476,[72144e]|0.422,0.422,[72144e]|0.4017,0.4017,[72144e]|0.3494,0.3494,[72144e]|0.4087,0.4087,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.82,0.82,[329440]|0.7147,0.7147,[329440]|0.6715,0.6715,[329440]|0.6334,0.6334,[329440]|0.59,0.59,[329440]|0.4513,0.4513,[329440]|0.3263,0.3263,[329440]|0.2963,0.2963,[329440]|0.2657,0.2657,[329440]|0.2292,0.2292,[329440]|0.1998,0.1998,[329440]|0.2209,0.2209,[329440]|0.2865,0.2865,[329440]|0.2122,0.2122,[329440]|0.2041,0.2041,[329440]|0.1667,0.1667,[329440]|0.2602,0.2602,[329440]|0.2558,0.2558,[329440]|0.1844,0.1844,[329440]|0.2483,0.2483,[329440]|0.2292,0.2292,[329440]|0.2657,0.2657,[329440]|0.2748,0.2748,[329440]|0.2748,0.2748,[329440]|0.2865,0.2865,[329440]|0.3762,0.3762,[329440]|0.3847,0.3847,[329440]|0.2786,0.2786,[329440]|0.27,0.27,[329440]|0.1878,0.1878,[329440]|0.1805,0.1805,[329440]|0.1805,0.1805,[329440]|0.1532,0.1532,[329440]|0.2255,0.2255,[329440]|0.1958,0.1958,[329440]|0.2786,0.2786,[329440]|0.2657,0.2657,[329440]|0.2748,0.2748,[329440]|0.3491,0.3491,[329440]|0.2531,0.2531,[329440]|0.3456,0.3456,[329440]|0.3491,0.3491,[329440]|0.3146,0.3146,[329440]|0.282,0.282,[329440]|0.27,0.27,[329440]|0.1998,0.1998,[329440]|0.2558,0.2558,[329440]|0.282,0.282,[329440]|0.2602,0.2602,[329440]|0.2602,0.2602,[329440]|0.1878,0.1878,[329440]|0.1844,0.1844,[329440]|0.2122,0.2122,[329440]|0.2292,0.2292,[329440]|0.2602,0.2602,[329440]|0.2786,0.2786,[329440]|0.282,0.282,[329440]|0.3005,0.3005,[329440]|0.2385,0.2385,[329440]|0.3184,0.3184,[329440]|0.2255,0.2255,[329440]|0.2748,0.2748,[329440]|0.3225,0.3225,[329440]|0.3762,0.3762,[329440]|0.3225,0.3225,[329440]|0.3225,0.3225,[329440]|0.2865,0.2865,[329440]|0.2865,0.2865,[329440]|0.3263,0.3263,[329440]|0.3717,0.3717,[329440]|0.4037,0.4037,[329440]|0.4245,0.4245,[329440]|0.4116,0.4116,[329440]|0.3578,0.3578,[329440]|0.3535,0.3535,[329440]|0.2748,0.2748,[329440]|0.2963,0.2963,[329440]|0.2167,0.2167,[329440]|0.3096,0.3096,[329440]|0.2255,0.2255,[329440]|0.3225,0.3225,[329440]|0.1732,0.1732,[329440]|0.1495,0.1495,[329440]|0.1088,0.1088,[329440]|0.1456,0.1456,[329440]|0.2041,0.2041,[329440]|0.1532,0.1532,[329440]|0.2041,0.2041,[329440]|0.1878,0.1878,[329440]|0.1322,0.1322,[329440]|0.1349,0.1349,[329440]|0.1205,0.1205,[329440]|0.0965,0.0965,[329440]|0.0884,0.0884,[329440]|0.0643,0.0643,[329440]|0.0935,0.0935,[329440]|0.0771,0.0771,[329440]|0.1088,0.1088,[329440]|0.0587,0.0587,[329440]|0.0991,0.0991,[329440]|0.0991,0.0991,[329440]|0.1958,0.1958,[329440]|0.2255,0.2255,[329440]|0.2602,0.2602,[329440]|0.2657,0.2657,[329440]|0.1844,0.1844,[329440]|0.2292,0.2292,[329440]|0.2483,0.2483,[329440]|0.2657,0.2657,[329440]|0.3939,0.3939,[329440]|0.4245,0.4245,[329440]|0.4037,0.4037,[329440]|0.4203,0.4203,[329440]|0.4967,0.4967,[329440]|0.5473,0.5473,[329440]|0.4781,0.4781,[329440]|0.4282,0.4282,[329440]|0.3578,0.3578,[329440]|0.4203,0.4203,[329440]|0.3491,0.3491,[329440]|0.2913,0.2913,[329440]|0.2657,0.2657,[329440]|0.1805,0.1805,[329440]|0.2167,0.2167,[329440]|0.208,0.208,[329440]|0.2963,0.2963,[329440]|0.3806,0.3806,[329440]|0.2963,0.2963,[329440]|0.2255,0.2255,[329440]|0.1456,0.1456,[329440]|0.1635,0.1635,[329440]|0.1766,0.1766,[329440]|0.1698,0.1698,[329440]|0.1349,0.1349,[329440]|0.1532,0.1532,[329440]|0.2292,0.2292,[329440]|0.2483,0.2483,[329440]|0.2432,0.2432,[329440]|0.2041,0.2041,[329440]|0.3005,0.3005,[329440]|0.4037,0.4037,[329440]|0.4749,0.4749,[329440]|0.59,0.59,[329440]|0.5941,0.5941,[329440]|0.6442,0.6442,[329440]|0.6827,0.6827,[329440]|0.7034,0.7034,[329440]|0.8001,0.8001,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   Q93Z60_ARATH
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1671,0.1671,[72144e]|0.2129,0.2129,[72144e]|0.247,0.247,[72144e]|0.1554,0.1554,[72144e]|0.1162,0.1162,[72144e]|0.1449,0.1449,[72144e]|0.1731,0.1731,[72144e]|0.2064,0.2064,[72144e]|0.2436,0.2436,[72144e]|0.2715,0.2715,[72144e]|0.3215,0.3215,[72144e]|0.2752,0.2752,[72144e]|0.2988,0.2988,[72144e]|0.2364,0.2364,[72144e]|0.2328,0.2328,[72144e]|0.2575,0.2575,[72144e]|0.2575,0.2575,[72144e]|0.2918,0.2918,[72144e]|0.2034,0.2034,[72144e]|0.2034,0.2034,[72144e]|0.2817,0.2817,[72144e]|0.3392,0.3392,[72144e]|0.3494,0.3494,[72144e]|0.3426,0.3426,[72144e]|0.2783,0.2783,[72144e]|0.2752,0.2752,[72144e]|0.3426,0.3426,[72144e]|0.2715,0.2715,[72144e]|0.2609,0.2609,[72144e]|0.247,0.247,[72144e]|0.2364,0.2364,[72144e]|0.2364,0.2364,[72144e]|0.1791,0.1791,[72144e]|0.247,0.247,[72144e]|0.2503,0.2503,[72144e]|0.3215,0.3215,[72144e]|0.3215,0.3215,[72144e]|0.2715,0.2715,[72144e]|0.3426,0.3426,[72144e]|0.2817,0.2817,[72144e]|0.3566,0.3566,[72144e]|0.3566,0.3566,[72144e]|0.3529,0.3529,[72144e]|0.2715,0.2715,[72144e]|0.2575,0.2575,[72144e]|0.2064,0.2064,[72144e]|0.2645,0.2645,[72144e]|0.2645,0.2645,[72144e]|0.1942,0.1942,[72144e]|0.2645,0.2645,[72144e]|0.3053,0.3053,[72144e]|0.3286,0.3286,[72144e]|0.3321,0.3321,[72144e]|0.3494,0.3494,[72144e]|0.384,0.384,[72144e]|0.4051,0.4051,[72144e]|0.3494,0.3494,[72144e]|0.3667,0.3667,[72144e]|0.2752,0.2752,[72144e]|0.346,0.346,[72144e]|0.3631,0.3631,[72144e]|0.4051,0.4051,[72144e]|0.3704,0.3704,[72144e]|0.3215,0.3215,[72144e]|0.268,0.268,[72144e]|0.2783,0.2783,[72144e]|0.2988,0.2988,[72144e]|0.3249,0.3249,[72144e]|0.3053,0.3053,[72144e]|0.422,0.422,[72144e]|0.5139,0.5139,[72144e]|0.4801,0.4801,[72144e]|0.4476,0.4476,[72144e]|0.3566,0.3566,[72144e]|0.374,0.374,[72144e]|0.2849,0.2849,[72144e]|0.3087,0.3087,[72144e]|0.2129,0.2129,[72144e]|0.2645,0.2645,[72144e]|0.1583,0.1583,[72144e]|0.247,0.247,[72144e]|0.2002,0.2002,[72144e]|0.1852,0.1852,[72144e]|0.1702,0.1702,[72144e]|0.1399,0.1399,[72144e]|0.2002,0.2002,[72144e]|0.247,0.247,[72144e]|0.2224,0.2224,[72144e]|0.1852,0.1852,[72144e]|0.2094,0.2094,[72144e]|0.2258,0.2258,[72144e]|0.1611,0.1611,[72144e]|0.1092,0.1092,[72144e]|0.1251,0.1251,[72144e]|0.1251,0.1251,[72144e]|0.1759,0.1759,[72144e]|0.1115,0.1115,[72144e]|0.1731,0.1731,[72144e]|0.1501,0.1501,[72144e]|0.2129,0.2129,[72144e]|0.2292,0.2292,[72144e]|0.3249,0.3249,[72144e]|0.3215,0.3215,[72144e]|0.2645,0.2645,[72144e]|0.2002,0.2002,[72144e]|0.2193,0.2193,[72144e]|0.3286,0.3286,[72144e]|0.3249,0.3249,[72144e]|0.3117,0.3117,[72144e]|0.391,0.391,[72144e]|0.4051,0.4051,[72144e]|0.384,0.384,[72144e]|0.3774,0.3774,[72144e]|0.4292,0.4292,[72144e]|0.4901,0.4901,[72144e]|0.4801,0.4801,[72144e]|0.4582,0.4582,[72144e]|0.4409,0.4409,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.82,0.82,[329440]|0.7147,0.7147,[329440]|0.6715,0.6715,[329440]|0.6334,0.6334,[329440]|0.59,0.59,[329440]|0.4513,0.4513,[329440]|0.3263,0.3263,[329440]|0.2963,0.2963,[329440]|0.2657,0.2657,[329440]|0.2292,0.2292,[329440]|0.1998,0.1998,[329440]|0.2209,0.2209,[329440]|0.2865,0.2865,[329440]|0.2122,0.2122,[329440]|0.2041,0.2041,[329440]|0.1667,0.1667,[329440]|0.2602,0.2602,[329440]|0.2558,0.2558,[329440]|0.1844,0.1844,[329440]|0.2483,0.2483,[329440]|0.2292,0.2292,[329440]|0.2657,0.2657,[329440]|0.2748,0.2748,[329440]|0.2748,0.2748,[329440]|0.2865,0.2865,[329440]|0.3762,0.3762,[329440]|0.3847,0.3847,[329440]|0.2786,0.2786,[329440]|0.27,0.27,[329440]|0.1878,0.1878,[329440]|0.1805,0.1805,[329440]|0.1805,0.1805,[329440]|0.1532,0.1532,[329440]|0.2255,0.2255,[329440]|0.1958,0.1958,[329440]|0.2786,0.2786,[329440]|0.2657,0.2657,[329440]|0.2748,0.2748,[329440]|0.3491,0.3491,[329440]|0.2531,0.2531,[329440]|0.3456,0.3456,[329440]|0.3491,0.3491,[329440]|0.3146,0.3146,[329440]|0.282,0.282,[329440]|0.27,0.27,[329440]|0.1998,0.1998,[329440]|0.2558,0.2558,[329440]|0.282,0.282,[329440]|0.2602,0.2602,[329440]|0.2602,0.2602,[329440]|0.1878,0.1878,[329440]|0.1844,0.1844,[329440]|0.2122,0.2122,[329440]|0.2292,0.2292,[329440]|0.2602,0.2602,[329440]|0.2786,0.2786,[329440]|0.282,0.282,[329440]|0.3005,0.3005,[329440]|0.2385,0.2385,[329440]|0.3184,0.3184,[329440]|0.2255,0.2255,[329440]|0.2748,0.2748,[329440]|0.3225,0.3225,[329440]|0.3762,0.3762,[329440]|0.3225,0.3225,[329440]|0.3225,0.3225,[329440]|0.2865,0.2865,[329440]|0.2865,0.2865,[329440]|0.3263,0.3263,[329440]|0.3717,0.3717,[329440]|0.4037,0.4037,[329440]|0.4245,0.4245,[329440]|0.4116,0.4116,[329440]|0.3578,0.3578,[329440]|0.3535,0.3535,[329440]|0.2748,0.2748,[329440]|0.2963,0.2963,[329440]|0.2167,0.2167,[329440]|0.3096,0.3096,[329440]|0.2255,0.2255,[329440]|0.3225,0.3225,[329440]|0.1732,0.1732,[329440]|0.1495,0.1495,[329440]|0.1088,0.1088,[329440]|0.1456,0.1456,[329440]|0.2041,0.2041,[329440]|0.1532,0.1532,[329440]|0.1998,0.1998,[329440]|0.1844,0.1844,[329440]|0.1205,0.1205,[329440]|0.124,0.124,[329440]|0.1088,0.1088,[329440]|0.0858,0.0858,[329440]|0.0789,0.0789,[329440]|0.0607,0.0607,[329440]|0.0858,0.0858,[329440]|0.0701,0.0701,[329440]|0.1018,0.1018,[329440]|0.0567,0.0567,[329440]|0.0935,0.0935,[329440]|0.0965,0.0965,[329440]|0.1921,0.1921,[329440]|0.2167,0.2167,[329440]|0.2558,0.2558,[329440]|0.2602,0.2602,[329440]|0.1921,0.1921,[329440]|0.2602,0.2602,[329440]|0.2786,0.2786,[329440]|0.2913,0.2913,[329440]|0.4556,0.4556,[329440]|0.5331,0.5331,[329440]|0.5802,0.5802,[329440]|0.6412,0.6412,[329440]|0.7232,0.7232,[329440]|0.8074,0.8074,[329440]|0.8457,0.8457,[329440]|0.8823,0.8823,[329440]|0.9141,0.9141,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_ARATH
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1583,0.1583,[72144e]|0.2034,0.2034,[72144e]|0.2364,0.2364,[72144e]|0.1476,0.1476,[72144e]|0.1048,0.1048,[72144e]|0.1349,0.1349,[72144e]|0.1643,0.1643,[72144e]|0.1881,0.1881,[72144e]|0.247,0.247,[72144e]|0.2399,0.2399,[72144e]|0.2951,0.2951,[72144e]|0.2503,0.2503,[72144e]|0.2783,0.2783,[72144e]|0.2129,0.2129,[72144e]|0.2094,0.2094,[72144e]|0.2364,0.2364,[72144e]|0.2328,0.2328,[72144e]|0.2715,0.2715,[72144e]|0.2715,0.2715,[72144e]|0.2715,0.2715,[72144e]|0.346,0.346,[72144e]|0.4051,0.4051,[72144e]|0.4149,0.4149,[72144e]|0.4087,0.4087,[72144e]|0.3392,0.3392,[72144e]|0.3392,0.3392,[72144e]|0.4087,0.4087,[72144e]|0.3321,0.3321,[72144e]|0.3215,0.3215,[72144e]|0.3215,0.3215,[72144e]|0.2884,0.2884,[72144e]|0.3215,0.3215,[72144e]|0.2609,0.2609,[72144e]|0.3321,0.3321,[72144e]|0.3356,0.3356,[72144e]|0.4051,0.4051,[72144e]|0.4017,0.4017,[72144e]|0.3494,0.3494,[72144e]|0.4292,0.4292,[72144e]|0.3667,0.3667,[72144e]|0.346,0.346,[72144e]|0.3494,0.3494,[72144e]|0.346,0.346,[72144e]|0.268,0.268,[72144e]|0.247,0.247,[72144e]|0.1969,0.1969,[72144e]|0.2541,0.2541,[72144e]|0.2541,0.2541,[72144e]|0.1881,0.1881,[72144e]|0.2609,0.2609,[72144e]|0.3019,0.3019,[72144e]|0.3249,0.3249,[72144e]|0.3249,0.3249,[72144e]|0.346,0.346,[72144e]|0.3053,0.3053,[72144e]|0.3249,0.3249,[72144e]|0.2715,0.2715,[72144e]|0.2951,0.2951,[72144e]|0.2034,0.2034,[72144e]|0.2715,0.2715,[72144e]|0.2817,0.2817,[72144e]|0.3249,0.3249,[72144e]|0.2951,0.2951,[72144e]|0.247,0.247,[72144e]|0.1942,0.1942,[72144e]|0.2002,0.2002,[72144e]|0.2224,0.2224,[72144e]|0.2503,0.2503,[72144e]|0.2328,0.2328,[72144e]|0.346,0.346,[72144e]|0.4409,0.4409,[72144e]|0.4087,0.4087,[72144e]|0.3774,0.3774,[72144e]|0.2849,0.2849,[72144e]|0.2988,0.2988,[72144e]|0.2064,0.2064,[72144e]|0.3087,0.3087,[72144e]|0.2094,0.2094,[72144e]|0.2645,0.2645,[72144e]|0.1554,0.1554,[72144e]|0.2399,0.2399,[72144e]|0.1969,0.1969,[72144e]|0.1852,0.1852,[72144e]|0.1702,0.1702,[72144e]|0.1399,0.1399,[72144e]|0.2002,0.2002,[72144e]|0.2503,0.2503,[72144e]|0.2258,0.2258,[72144e]|0.1881,0.1881,[72144e]|0.2129,0.2129,[72144e]|0.2292,0.2292,[72144e]|0.1611,0.1611,[72144e]|0.107,0.107,[72144e]|0.1251,0.1251,[72144e]|0.1229,0.1229,[72144e]|0.1759,0.1759,[72144e]|0.1229,0.1229,[72144e]|0.1914,0.1914,[72144e]|0.1702,0.1702,[72144e]|0.2364,0.2364,[72144e]|0.2503,0.2503,[72144e]|0.3529,0.3529,[72144e]|0.3494,0.3494,[72144e]|0.2884,0.2884,[72144e]|0.2258,0.2258,[72144e]|0.2436,0.2436,[72144e]|0.3529,0.3529,[72144e]|0.3774,0.3774,[72144e]|0.3872,0.3872,[72144e]|0.4119,0.4119,[72144e]|0.4369,0.4369,[72144e]|0.4619,0.4619,[72144e]|0.4725,0.4725,[72144e]|0.433,0.433,[72144e]|0.4369,0.4369,[72144e]|0.374,0.374,[72144e]|0.3774,0.3774,[72144e]|0.2817,0.2817,[72144e]|0.3087,0.3087,[72144e]|0.2715,0.2715,[72144e]|0.1942,0.1942,[72144e]|0.2292,0.2292,[72144e]|0.2164,0.2164,[72144e]|0.2064,0.2064,[72144e]|0.2224,0.2224,[72144e]|0.2609,0.2609,[72144e]|0.3249,0.3249,[72144e]|0.2436,0.2436,[72144e]|0.2503,0.2503,[72144e]|0.2328,0.2328,[72144e]|0.2193,0.2193,[72144e]|0.2715,0.2715,[72144e]|0.2951,0.2951,[72144e]|0.2988,0.2988,[72144e]|0.3149,0.3149,[72144e]|0.3392,0.3392,[72144e]|0.3356,0.3356,[72144e]|0.3948,0.3948,[72144e]|0.3774,0.3774,[72144e]|0.4725,0.4725,[72144e]|0.4864,0.4864,[72144e]|0.5055,0.5055,[72144e]|0.6043,0.6043,[72144e]|0.5296,0.5296,[72144e]|0.5098,0.5098,[72144e]|0.4979,0.4979,[72144e]|0.4507,0.4507,[72144e]|0.5296,0.5296,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8242,0.8242,[329440]|0.7275,0.7275,[329440]|0.6906,0.6906,[329440]|0.6516,0.6516,[329440]|0.6124,0.6124,[329440]|0.4781,0.4781,[329440]|0.3535,0.3535,[329440]|0.3225,0.3225,[329440]|0.2913,0.2913,[329440]|0.2432,0.2432,[329440]|0.2292,0.2292,[329440]|0.2209,0.2209,[329440]|0.2913,0.2913,[329440]|0.2167,0.2167,[329440]|0.208,0.208,[329440]|0.1766,0.1766,[329440]|0.2657,0.2657,[329440]|0.2657,0.2657,[329440]|0.1958,0.1958,[329440]|0.2558,0.2558,[329440]|0.3184,0.3184,[329440]|0.3456,0.3456,[329440]|0.3456,0.3456,[329440]|0.3399,0.3399,[329440]|0.3578,0.3578,[329440]|0.4458,0.4458,[329440]|0.46,0.46,[329440]|0.3578,0.3578,[329440]|0.3456,0.3456,[329440]|0.2786,0.2786,[329440]|0.2558,0.2558,[329440]|0.2913,0.2913,[329440]|0.2602,0.2602,[329440]|0.3399,0.3399,[329440]|0.3096,0.3096,[329440]|0.3885,0.3885,[329440]|0.3717,0.3717,[329440]|0.3762,0.3762,[329440]|0.4556,0.4556,[329440]|0.363,0.363,[329440]|0.3668,0.3668,[329440]|0.3668,0.3668,[329440]|0.3359,0.3359,[329440]|0.3005,0.3005,[329440]|0.282,0.282,[329440]|0.208,0.208,[329440]|0.2602,0.2602,[329440]|0.282,0.282,[329440]|0.2602,0.2602,[329440]|0.2483,0.2483,[329440]|0.1732,0.1732,[329440]|0.1698,0.1698,[329440]|0.1998,0.1998,[329440]|0.2122,0.2122,[329440]|0.2432,0.2432,[329440]|0.2602,0.2602,[329440]|0.1878,0.1878,[329440]|0.208,0.208,[329440]|0.1532,0.1532,[329440]|0.2209,0.2209,[329440]|0.1456,0.1456,[329440]|0.1844,0.1844,[329440]|0.2255,0.2255,[329440]|0.2748,0.2748,[329440]|0.2209,0.2209,[329440]|0.2255,0.2255,[329440]|0.1878,0.1878,[329440]|0.1844,0.1844,[329440]|0.2167,0.2167,[329440]|0.2657,0.2657,[329440]|0.3005,0.3005,[329440]|0.3225,0.3225,[329440]|0.3096,0.3096,[329440]|0.2483,0.2483,[329440]|0.2483,0.2483,[329440]|0.1698,0.1698,[329440]|0.2602,0.2602,[329440]|0.1805,0.1805,[329440]|0.27,0.27,[329440]|0.1878,0.1878,[329440]|0.2786,0.2786,[329440]|0.138,0.138,[329440]|0.1205,0.1205,[329440]|0.0884,0.0884,[329440]|0.1178,0.1178,[329440]|0.1732,0.1732,[329440]|0.1292,0.1292,[329440]|0.1805,0.1805,[329440]|0.1698,0.1698,[329440]|0.1178,0.1178,[329440]|0.124,0.124,[329440]|0.1088,0.1088,[329440]|0.0858,0.0858,[329440]|0.0771,0.0771,[329440]|0.0554,0.0554,[329440]|0.0832,0.0832,[329440]|0.0677,0.0677,[329440]|0.1018,0.1018,[329440]|0.0554,0.0554,[329440]|0.0965,0.0965,[329440]|0.0965,0.0965,[329440]|0.1921,0.1921,[329440]|0.2167,0.2167,[329440]|0.2558,0.2558,[329440]|0.2602,0.2602,[329440]|0.1844,0.1844,[329440]|0.2333,0.2333,[329440]|0.2531,0.2531,[329440]|0.2657,0.2657,[329440]|0.3992,0.3992,[329440]|0.4333,0.4333,[329440]|0.3762,0.3762,[329440]|0.3992,0.3992,[329440]|0.4781,0.4781,[329440]|0.5374,0.5374,[329440]|0.4651,0.4651,[329440]|0.4203,0.4203,[329440]|0.3535,0.3535,[329440]|0.4078,0.4078,[329440]|0.3311,0.3311,[329440]|0.3096,0.3096,[329440]|0.2865,0.2865,[329440]|0.208,0.208,[329440]|0.2531,0.2531,[329440]|0.2483,0.2483,[329440]|0.3263,0.3263,[329440]|0.4078,0.4078,[329440]|0.3225,0.3225,[329440]|0.3005,0.3005,[329440]|0.2041,0.2041,[329440]|0.2255,0.2255,[329440]|0.2748,0.2748,[329440]|0.2602,0.2602,[329440]|0.208,0.208,[329440]|0.2292,0.2292,[329440]|0.3263,0.3263,[329440]|0.3885,0.3885,[329440]|0.3939,0.3939,[329440]|0.3456,0.3456,[329440]|0.4458,0.4458,[329440]|0.5173,0.5173,[329440]|0.5802,0.5802,[329440]|0.6789,0.6789,[329440]|0.6789,0.6789,[329440]|0.7275,0.7275,[329440]|0.7644,0.7644,[329440]|0.7912,0.7912,[329440]|0.8823,0.8823,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER_BRANA
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1969,0.1969,[72144e]|0.2783,0.2783,[72144e]|0.3182,0.3182,[72144e]|0.384,0.384,[72144e]|0.3321,0.3321,[72144e]|0.3872,0.3872,[72144e]|0.2752,0.2752,[72144e]|0.3182,0.3182,[72144e]|0.3599,0.3599,[72144e]|0.3948,0.3948,[72144e]|0.3566,0.3566,[72144e]|0.3149,0.3149,[72144e]|0.2609,0.2609,[72144e]|0.268,0.268,[72144e]|0.3053,0.3053,[72144e]|0.3321,0.3321,[72144e]|0.3249,0.3249,[72144e]|0.4476,0.4476,[72144e]|0.5456,0.5456,[72144e]|0.5098,0.5098,[72144e]|0.4766,0.4766,[72144e]|0.384,0.384,[72144e]|0.4017,0.4017,[72144e]|0.3087,0.3087,[72144e]|0.3321,0.3321,[72144e]|0.2399,0.2399,[72144e]|0.2918,0.2918,[72144e]|0.1643,0.1643,[72144e]|0.2541,0.2541,[72144e]|0.2094,0.2094,[72144e]|0.1942,0.1942,[72144e]|0.1759,0.1759,[72144e]|0.1323,0.1323,[72144e]|0.1852,0.1852,[72144e]|0.2292,0.2292,[72144e]|0.1914,0.1914,[72144e]|0.1528,0.1528,[72144e]|0.1759,0.1759,[72144e]|0.1791,0.1791,[72144e]|0.1206,0.1206,[72144e]|0.0765,0.0765,[72144e]|0.0888,0.0888,[72144e]|0.0888,0.0888,[72144e]|0.0749,0.0749,[72144e]|0.0473,0.0473,[72144e]|0.0817,0.0817,[72144e]|0.0704,0.0704,[72144e]|0.1048,0.1048,[72144e]|0.1162,0.1162,[72144e]|0.2258,0.2258,[72144e]|0.2364,0.2364,[72144e]|0.1731,0.1731,[72144e]|0.1251,0.1251,[72144e]|0.1399,0.1399,[72144e]|0.2503,0.2503,[72144e]|0.2715,0.2715,[72144e]|0.2783,0.2783,[72144e]|0.3215,0.3215,[72144e]|0.3215,0.3215,[72144e]|0.346,0.346,[72144e]|0.3667,0.3667,[72144e]|0.3249,0.3249,[72144e]|0.3249,0.3249,[72144e]|0.2645,0.2645,[72144e]|0.268,0.268,[72144e]|0.2541,0.2541,[72144e]|0.2817,0.2817,[72144e]|0.2399,0.2399,[72144e]|0.1702,0.1702,[72144e]|0.2034,0.2034,[72144e]|0.1914,0.1914,[72144e]|0.1643,0.1643,[72144e]|0.1823,0.1823,[72144e]|0.2164,0.2164,[72144e]|0.2849,0.2849,[72144e]|0.2002,0.2002,[72144e]|0.2064,0.2064,[72144e]|0.1942,0.1942,[72144e]|0.1823,0.1823,[72144e]|0.2224,0.2224,[72144e]|0.2752,0.2752,[72144e]|0.2752,0.2752,[72144e]|0.2988,0.2988,[72144e]|0.3249,0.3249,[72144e]|0.3249,0.3249,[72144e]|0.3872,0.3872,[72144e]|0.3667,0.3667,[72144e]|0.4685,0.4685,[72144e]|0.4864,0.4864,[72144e]|0.5017,0.5017,[72144e]|0.5951,0.5951,[72144e]|0.5296,0.5296,[72144e]|0.5055,0.5055,[72144e]|0.494,0.494,[72144e]|0.4441,0.4441,[72144e]|0.5254,0.5254,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.7605,0.7605,[329440]|0.7458,0.7458,[329440]|0.7079,0.7079,[329440]|0.6906,0.6906,[329440]|0.6557,0.6557,[329440]|0.6412,0.6412,[329440]|0.5374,0.5374,[329440]|0.5173,0.5173,[329440]|0.3806,0.3806,[329440]|0.3578,0.3578,[329440]|0.3311,0.3311,[329440]|0.3885,0.3885,[329440]|0.3456,0.3456,[329440]|0.3456,0.3456,[329440]|0.3225,0.3225,[329440]|0.3225,0.3225,[329440]|0.3806,0.3806,[329440]|0.4116,0.4116,[329440]|0.4379,0.4379,[329440]|0.4651,0.4651,[329440]|0.4458,0.4458,[329440]|0.3806,0.3806,[329440]|0.3762,0.3762,[329440]|0.2913,0.2913,[329440]|0.3096,0.3096,[329440]|0.2167,0.2167,[329440]|0.3146,0.3146,[329440]|0.2255,0.2255,[329440]|0.3184,0.3184,[329440]|0.1698,0.1698,[329440]|0.138,0.138,[329440]|0.1018,0.1018,[329440]|0.1322,0.1322,[329440]|0.1805,0.1805,[329440]|0.1322,0.1322,[329440]|0.1805,0.1805,[329440]|0.1667,0.1667,[329440]|0.1117,0.1117,[329440]|0.115,0.115,[329440]|0.1018,0.1018,[329440]|0.0771,0.0771,[329440]|0.066,0.066,[329440]|0.0478,0.0478,[329440]|0.0677,0.0677,[329440]|0.0554,0.0554,[329440]|0.0478,0.0478,[329440]|0.0268,0.0268,[329440]|0.0441,0.0441,[329440]|0.0455,0.0455,[329440]|0.1018,0.1018,[329440]|0.124,0.124,[329440]|0.1667,0.1667,[329440]|0.1698,0.1698,[329440]|0.1088,0.1088,[329440]|0.138,0.138,[329440]|0.1532,0.1532,[329440]|0.1667,0.1667,[329440]|0.2786,0.2786,[329440]|0.3184,0.3184,[329440]|0.2602,0.2602,[329440]|0.2558,0.2558,[329440]|0.3399,0.3399,[329440]|0.4078,0.4078,[329440]|0.3263,0.3263,[329440]|0.2786,0.2786,[329440]|0.2913,0.2913,[329440]|0.3491,0.3491,[329440]|0.27,0.27,[329440]|0.2432,0.2432,[329440]|0.2209,0.2209,[329440]|0.1532,0.1532,[329440]|0.1732,0.1732,[329440]|0.1698,0.1698,[329440]|0.2483,0.2483,[329440]|0.3311,0.3311,[329440]|0.2483,0.2483,[329440]|0.2292,0.2292,[329440]|0.1495,0.1495,[329440]|0.1698,0.1698,[329440]|0.2122,0.2122,[329440]|0.2292,0.2292,[329440]|0.1805,0.1805,[329440]|0.1998,0.1998,[329440]|0.3053,0.3053,[329440]|0.3806,0.3806,[329440]|0.3939,0.3939,[329440]|0.3399,0.3399,[329440]|0.4513,0.4513,[329440]|0.5173,0.5173,[329440]|0.5846,0.5846,[329440]|0.6827,0.6827,[329440]|0.6827,0.6827,[329440]|0.7317,0.7317,[329440]|0.7688,0.7688,[329440]|0.7951,0.7951,[329440]|0.8857,0.8857,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER3_RAPSA
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.2224,0.2224,[72144e]|0.3053,0.3053,[72144e]|0.346,0.346,[72144e]|0.4087,0.4087,[72144e]|0.3599,0.3599,[72144e]|0.4149,0.4149,[72144e]|0.2988,0.2988,[72144e]|0.3426,0.3426,[72144e]|0.384,0.384,[72144e]|0.4186,0.4186,[72144e]|0.384,0.384,[72144e]|0.3426,0.3426,[72144e]|0.2918,0.2918,[72144e]|0.2988,0.2988,[72144e]|0.3356,0.3356,[72144e]|0.3599,0.3599,[72144e]|0.3529,0.3529,[72144e]|0.4685,0.4685,[72144e]|0.5665,0.5665,[72144e]|0.5342,0.5342,[72144e]|0.4979,0.4979,[72144e]|0.4087,0.4087,[72144e]|0.4256,0.4256,[72144e]|0.3356,0.3356,[72144e]|0.3599,0.3599,[72144e]|0.268,0.268,[72144e]|0.3182,0.3182,[72144e]|0.1881,0.1881,[72144e]|0.2849,0.2849,[72144e]|0.2399,0.2399,[72144e]|0.2224,0.2224,[72144e]|0.2034,0.2034,[72144e]|0.1528,0.1528,[72144e]|0.2094,0.2094,[72144e]|0.2575,0.2575,[72144e]|0.2129,0.2129,[72144e]|0.1759,0.1759,[72144e]|0.1969,0.1969,[72144e]|0.2034,0.2034,[72144e]|0.1424,0.1424,[72144e]|0.0929,0.0929,[72144e]|0.107,0.107,[72144e]|0.107,0.107,[72144e]|0.1501,0.1501,[72144e]|0.1028,0.1028,[72144e]|0.1611,0.1611,[72144e]|0.1399,0.1399,[72144e]|0.1942,0.1942,[72144e]|0.2129,0.2129,[72144e]|0.3249,0.3249,[72144e]|0.3321,0.3321,[72144e]|0.2715,0.2715,[72144e]|0.2094,0.2094,[72144e]|0.2258,0.2258,[72144e]|0.3529,0.3529,[72144e]|0.374,0.374,[72144e]|0.3807,0.3807,[72144e]|0.4256,0.4256,[72144e]|0.4256,0.4256,[72144e]|0.4507,0.4507,[72144e]|0.4685,0.4685,[72144e]|0.4256,0.4256,[72144e]|0.4292,0.4292,[72144e]|0.3667,0.3667,[72144e]|0.3704,0.3704,[72144e]|0.2645,0.2645,[72144e]|0.2918,0.2918,[72144e]|0.2503,0.2503,[72144e]|0.1823,0.1823,[72144e]|0.2129,0.2129,[72144e]|0.2002,0.2002,[72144e]|0.1914,0.1914,[72144e]|0.2094,0.2094,[72144e]|0.247,0.247,[72144e]|0.3117,0.3117,[72144e]|0.2292,0.2292,[72144e]|0.2328,0.2328,[72144e]|0.2193,0.2193,[72144e]|0.2064,0.2064,[72144e]|0.2609,0.2609,[72144e]|0.3087,0.3087,[72144e]|0.3087,0.3087,[72144e]|0.3286,0.3286,[72144e]|0.3983,0.3983,[72144e]|0.3948,0.3948,[72144e]|0.4541,0.4541,[72144e]|0.4369,0.4369,[72144e]|0.5533,0.5533,[72144e]|0.5758,0.5758,[72144e]|0.5992,0.5992,[72144e]|0.708,0.708,[72144e]|0.6375,0.6375,[72144e]|0.6227,0.6227,[72144e]|0.6136,0.6136,[72144e]|0.5577,0.5577,[72144e]|0.6661,0.6661,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.7605,0.7605,[329440]|0.7458,0.7458,[329440]|0.7079,0.7079,[329440]|0.6906,0.6906,[329440]|0.6557,0.6557,[329440]|0.6412,0.6412,[329440]|0.5374,0.5374,[329440]|0.5173,0.5173,[329440]|0.3806,0.3806,[329440]|0.3578,0.3578,[329440]|0.3311,0.3311,[329440]|0.3885,0.3885,[329440]|0.3456,0.3456,[329440]|0.3456,0.3456,[329440]|0.3225,0.3225,[329440]|0.3225,0.3225,[329440]|0.3806,0.3806,[329440]|0.4116,0.4116,[329440]|0.4379,0.4379,[329440]|0.4651,0.4651,[329440]|0.4458,0.4458,[329440]|0.3806,0.3806,[329440]|0.3806,0.3806,[329440]|0.2963,0.2963,[329440]|0.3184,0.3184,[329440]|0.2292,0.2292,[329440]|0.3225,0.3225,[329440]|0.2385,0.2385,[329440]|0.3359,0.3359,[329440]|0.1844,0.1844,[329440]|0.1566,0.1566,[329440]|0.115,0.115,[329440]|0.1495,0.1495,[329440]|0.2041,0.2041,[329440]|0.1532,0.1532,[329440]|0.2041,0.2041,[329440]|0.1878,0.1878,[329440]|0.1322,0.1322,[329440]|0.1349,0.1349,[329440]|0.1205,0.1205,[329440]|0.0965,0.0965,[329440]|0.0832,0.0832,[329440]|0.0607,0.0607,[329440]|0.0858,0.0858,[329440]|0.0701,0.0701,[329440]|0.1018,0.1018,[329440]|0.0554,0.0554,[329440]|0.0909,0.0909,[329440]|0.0909,0.0909,[329440]|0.1844,0.1844,[329440]|0.208,0.208,[329440]|0.2483,0.2483,[329440]|0.2531,0.2531,[329440]|0.1732,0.1732,[329440]|0.2167,0.2167,[329440]|0.2333,0.2333,[329440]|0.2483,0.2483,[329440]|0.3717,0.3717,[329440]|0.4078,0.4078,[329440]|0.3535,0.3535,[329440]|0.3456,0.3456,[329440]|0.4282,0.4282,[329440]|0.4879,0.4879,[329440]|0.4116,0.4116,[329440]|0.3668,0.3668,[329440]|0.3005,0.3005,[329440]|0.3578,0.3578,[329440]|0.282,0.282,[329440]|0.2558,0.2558,[329440]|0.2385,0.2385,[329440]|0.1667,0.1667,[329440]|0.2041,0.2041,[329440]|0.1998,0.1998,[329440]|0.282,0.282,[329440]|0.363,0.363,[329440]|0.282,0.282,[329440]|0.2602,0.2602,[329440]|0.1766,0.1766,[329440]|0.1998,0.1998,[329440]|0.2483,0.2483,[329440]|0.2657,0.2657,[329440]|0.2255,0.2255,[329440]|0.2531,0.2531,[329440]|0.3491,0.3491,[329440]|0.4116,0.4116,[329440]|0.4458,0.4458,[329440]|0.3992,0.3992,[329440]|0.5008,0.5008,[329440]|0.5623,0.5623,[329440]|0.6293,0.6293,[329440]|0.7275,0.7275,[329440]|0.7275,0.7275,[329440]|0.7724,0.7724,[329440]|0.8118,0.8118,[329440]|0.8391,0.8391,[329440]|0.9141,0.9141,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_MAIZE
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.422,0.422,[72144e]|0.2918,0.2918,[72144e]|0.1852,0.1852,[72144e]|0.1115,0.1115,[72144e]|0.1373,0.1373,[72144e]|0.1643,0.1643,[72144e]|0.1914,0.1914,[72144e]|0.2193,0.2193,[72144e]|0.1731,0.1731,[72144e]|0.2002,0.2002,[72144e]|0.1969,0.1969,[72144e]|0.1969,0.1969,[72144e]|0.2575,0.2575,[72144e]|0.2193,0.2193,[72144e]|0.3087,0.3087,[72144e]|0.384,0.384,[72144e]|0.3566,0.3566,[72144e]|0.3019,0.3019,[72144e]|0.2436,0.2436,[72144e]|0.1731,0.1731,[72144e]|0.2292,0.2292,[72144e]|0.1759,0.1759,[72144e]|0.1759,0.1759,[72144e]|0.2575,0.2575,[72144e]|0.2918,0.2918,[72144e]|0.384,0.384,[72144e]|0.3117,0.3117,[72144e]|0.2817,0.2817,[72144e]|0.2849,0.2849,[72144e]|0.2849,0.2849,[72144e]|0.3529,0.3529,[72144e]|0.3215,0.3215,[72144e]|0.3494,0.3494,[72144e]|0.374,0.374,[72144e]|0.3426,0.3426,[72144e]|0.374,0.374,[72144e]|0.3426,0.3426,[72144e]|0.268,0.268,[72144e]|0.2951,0.2951,[72144e]|0.3249,0.3249,[72144e]|0.3631,0.3631,[72144e]|0.4087,0.4087,[72144e]|0.384,0.384,[72144e]|0.3321,0.3321,[72144e]|0.3704,0.3704,[72144e]|0.3215,0.3215,[72144e]|0.3704,0.3704,[72144e]|0.3019,0.3019,[72144e]|0.3053,0.3053,[72144e]|0.3392,0.3392,[72144e]|0.3704,0.3704,[72144e]|0.3872,0.3872,[72144e]|0.391,0.391,[72144e]|0.4409,0.4409,[72144e]|0.3872,0.3872,[72144e]|0.4087,0.4087,[72144e]|0.3392,0.3392,[72144e]|0.3494,0.3494,[72144e]|0.2951,0.2951,[72144e]|0.3948,0.3948,[72144e]|0.4119,0.4119,[72144e]|0.4582,0.4582,[72144e]|0.391,0.391,[72144e]|0.3426,0.3426,[72144e]|0.2645,0.2645,[72144e]|0.2783,0.2783,[72144e]|0.2849,0.2849,[72144e]|0.3494,0.3494,[72144e]|0.3286,0.3286,[72144e]|0.4149,0.4149,[72144e]|0.5139,0.5139,[72144e]|0.5296,0.5296,[72144e]|0.494,0.494,[72144e]|0.3983,0.3983,[72144e]|0.4119,0.4119,[72144e]|0.3215,0.3215,[72144e]|0.4087,0.4087,[72144e]|0.3087,0.3087,[72144e]|0.3774,0.3774,[72144e]|0.2817,0.2817,[72144e]|0.3356,0.3356,[72144e]|0.2817,0.2817,[72144e]|0.2645,0.2645,[72144e]|0.247,0.247,[72144e]|0.2164,0.2164,[72144e]|0.2918,0.2918,[72144e]|0.3631,0.3631,[72144e]|0.346,0.346,[72144e]|0.3019,0.3019,[72144e]|0.2951,0.2951,[72144e]|0.3117,0.3117,[72144e]|0.2399,0.2399,[72144e]|0.1702,0.1702,[72144e]|0.1554,0.1554,[72144e]|0.1554,0.1554,[72144e]|0.2193,0.2193,[72144e]|0.1554,0.1554,[72144e]|0.2364,0.2364,[72144e]|0.2129,0.2129,[72144e]|0.2918,0.2918,[72144e]|0.3087,0.3087,[72144e]|0.4017,0.4017,[72144e]|0.4017,0.4017,[72144e]|0.3566,0.3566,[72144e]|0.2884,0.2884,[72144e]|0.3087,0.3087,[72144e]|0.4119,0.4119,[72144e]|0.4119,0.4119,[72144e]|0.422,0.422,[72144e]|0.4369,0.4369,[72144e]|0.4409,0.4409,[72144e]|0.4541,0.4541,[72144e]|0.4619,0.4619,[72144e]|0.4409,0.4409,[72144e]|0.4441,0.4441,[72144e]|0.374,0.374,[72144e]|0.3774,0.3774,[72144e]|0.2918,0.2918,[72144e]|0.3494,0.3494,[72144e]|0.3087,0.3087,[72144e]|0.2328,0.2328,[72144e]|0.268,0.268,[72144e]|0.2541,0.2541,[72144e]|0.247,0.247,[72144e]|0.2645,0.2645,[72144e]|0.2849,0.2849,[72144e]|0.3053,0.3053,[72144e]|0.2193,0.2193,[72144e]|0.2224,0.2224,[72144e]|0.2224,0.2224,[72144e]|0.2164,0.2164,[72144e]|0.2752,0.2752,[72144e]|0.3149,0.3149,[72144e]|0.3149,0.3149,[72144e]|0.3356,0.3356,[72144e]|0.346,0.346,[72144e]|0.4017,0.4017,[72144e]|0.4685,0.4685,[72144e]|0.4409,0.4409,[72144e]|0.5296,0.5296,[72144e]|0.5139,0.5139,[72144e]|0.5296,0.5296,[72144e]|0.6136,0.6136,[72144e]|0.5493,0.5493,[72144e]|0.5296,0.5296,[72144e]|0.5139,0.5139,[72144e]|0.4685,0.4685,[72144e]|0.5342,0.5342,[72144e]|0.6136,0.6136,[72144e]|0.7547,0.7547,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.865,0.865,[329440]|0.8488,0.8488,[329440]|0.7724,0.7724,[329440]|0.6557,0.6557,[329440]|0.5253,0.5253,[329440]|0.3847,0.3847,[329440]|0.3399,0.3399,[329440]|0.2913,0.2913,[329440]|0.2432,0.2432,[329440]|0.1958,0.1958,[329440]|0.106,0.106,[329440]|0.1456,0.1456,[329440]|0.1456,0.1456,[329440]|0.115,0.115,[329440]|0.1844,0.1844,[329440]|0.2122,0.2122,[329440]|0.2333,0.2333,[329440]|0.2531,0.2531,[329440]|0.1998,0.1998,[329440]|0.1322,0.1322,[329440]|0.1456,0.1456,[329440]|0.0858,0.0858,[329440]|0.1266,0.1266,[329440]|0.1667,0.1667,[329440]|0.2122,0.2122,[329440]|0.3225,0.3225,[329440]|0.2483,0.2483,[329440]|0.2483,0.2483,[329440]|0.1766,0.1766,[329440]|0.1602,0.1602,[329440]|0.2255,0.2255,[329440]|0.2209,0.2209,[329440]|0.2558,0.2558,[329440]|0.2657,0.2657,[329440]|0.2432,0.2432,[329440]|0.2865,0.2865,[329440]|0.27,0.27,[329440]|0.2748,0.2748,[329440]|0.3146,0.3146,[329440]|0.3184,0.3184,[329440]|0.3491,0.3491,[329440]|0.3847,0.3847,[329440]|0.3668,0.3668,[329440]|0.363,0.363,[329440]|0.4037,0.4037,[329440]|0.3184,0.3184,[329440]|0.4037,0.4037,[329440]|0.3359,0.3359,[329440]|0.4116,0.4116,[329440]|0.3717,0.3717,[329440]|0.3005,0.3005,[329440]|0.2865,0.2865,[329440]|0.3263,0.3263,[329440]|0.3668,0.3668,[329440]|0.3717,0.3717,[329440]|0.3806,0.3806,[329440]|0.3053,0.3053,[329440]|0.3146,0.3146,[329440]|0.2292,0.2292,[329440]|0.3096,0.3096,[329440]|0.2432,0.2432,[329440]|0.3146,0.3146,[329440]|0.3225,0.3225,[329440]|0.3806,0.3806,[329440]|0.3184,0.3184,[329440]|0.3311,0.3311,[329440]|0.2657,0.2657,[329440]|0.2657,0.2657,[329440]|0.2913,0.2913,[329440]|0.3578,0.3578,[329440]|0.3939,0.3939,[329440]|0.4116,0.4116,[329440]|0.3885,0.3885,[329440]|0.4037,0.4037,[329440]|0.3939,0.3939,[329440]|0.3184,0.3184,[329440]|0.4116,0.4116,[329440]|0.3263,0.3263,[329440]|0.4379,0.4379,[329440]|0.363,0.363,[329440]|0.4282,0.4282,[329440]|0.2865,0.2865,[329440]|0.2602,0.2602,[329440]|0.2041,0.2041,[329440]|0.2558,0.2558,[329440]|0.3225,0.3225,[329440]|0.2748,0.2748,[329440]|0.3399,0.3399,[329440]|0.3225,0.3225,[329440]|0.2122,0.2122,[329440]|0.2209,0.2209,[329440]|0.1998,0.1998,[329440]|0.1698,0.1698,[329440]|0.1178,0.1178,[329440]|0.0909,0.0909,[329440]|0.1292,0.1292,[329440]|0.106,0.106,[329440]|0.1532,0.1532,[329440]|0.0935,0.0935,[329440]|0.138,0.138,[329440]|0.138,0.138,[329440]|0.2292,0.2292,[329440]|0.2531,0.2531,[329440]|0.2865,0.2865,[329440]|0.2865,0.2865,[329440]|0.2122,0.2122,[329440]|0.2558,0.2558,[329440]|0.27,0.27,[329440]|0.2786,0.2786,[329440]|0.3847,0.3847,[329440]|0.4203,0.4203,[329440]|0.363,0.363,[329440]|0.3535,0.3535,[329440]|0.4149,0.4149,[329440]|0.4703,0.4703,[329440]|0.3939,0.3939,[329440]|0.3535,0.3535,[329440]|0.2865,0.2865,[329440]|0.3359,0.3359,[329440]|0.2602,0.2602,[329440]|0.2558,0.2558,[329440]|0.2333,0.2333,[329440]|0.1635,0.1635,[329440]|0.1958,0.1958,[329440]|0.1878,0.1878,[329440]|0.2657,0.2657,[329440]|0.3456,0.3456,[329440]|0.2748,0.2748,[329440]|0.2167,0.2167,[329440]|0.1602,0.1602,[329440]|0.1766,0.1766,[329440]|0.2255,0.2255,[329440]|0.2333,0.2333,[329440]|0.1998,0.1998,[329440]|0.2209,0.2209,[329440]|0.3184,0.3184,[329440]|0.3847,0.3847,[329440]|0.3847,0.3847,[329440]|0.3847,0.3847,[329440]|0.4513,0.4513,[329440]|0.4282,0.4282,[329440]|0.4967,0.4967,[329440]|0.6079,0.6079,[329440]|0.6124,0.6124,[329440]|0.6604,0.6604,[329440]|0.6944,0.6944,[329440]|0.7232,0.7232,[329440]|0.8118,0.8118,[329440]|0.8857,0.8857,[329440]|0.9491,0.9491,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   O80429_MAIZE
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1007,0.1007,[72144e]|0.1028,0.1028,[72144e]|0.1731,0.1731,[72144e]|0.2503,0.2503,[72144e]|0.3249,0.3249,[72144e]|0.2292,0.2292,[72144e]|0.1476,0.1476,[72144e]|0.1731,0.1731,[72144e]|0.1942,0.1942,[72144e]|0.2503,0.2503,[72144e]|0.1969,0.1969,[72144e]|0.2258,0.2258,[72144e]|0.1823,0.1823,[72144e]|0.2094,0.2094,[72144e]|0.1501,0.1501,[72144e]|0.1501,0.1501,[72144e]|0.1611,0.1611,[72144e]|0.1399,0.1399,[72144e]|0.1554,0.1554,[72144e]|0.1823,0.1823,[72144e]|0.1881,0.1881,[72144e]|0.2258,0.2258,[72144e]|0.1969,0.1969,[72144e]|0.2541,0.2541,[72144e]|0.1942,0.1942,[72144e]|0.1671,0.1671,[72144e]|0.1399,0.1399,[72144e]|0.2292,0.2292,[72144e]|0.2575,0.2575,[72144e]|0.1881,0.1881,[72144e]|0.1881,0.1881,[72144e]|0.1399,0.1399,[72144e]|0.2129,0.2129,[72144e]|0.1852,0.1852,[72144e]|0.2645,0.2645,[72144e]|0.1852,0.1852,[72144e]|0.2503,0.2503,[72144e]|0.2193,0.2193,[72144e]|0.2752,0.2752,[72144e]|0.2292,0.2292,[72144e]|0.1611,0.1611,[72144e]|0.1424,0.1424,[72144e]|0.2364,0.2364,[72144e]|0.2884,0.2884,[72144e]|0.3182,0.3182,[72144e]|0.3087,0.3087,[72144e]|0.2783,0.2783,[72144e]|0.2988,0.2988,[72144e]|0.2224,0.2224,[72144e]|0.2224,0.2224,[72144e]|0.2364,0.2364,[72144e]|0.3392,0.3392,[72144e]|0.3566,0.3566,[72144e]|0.4051,0.4051,[72144e]|0.3356,0.3356,[72144e]|0.2817,0.2817,[72144e]|0.1969,0.1969,[72144e]|0.2094,0.2094,[72144e]|0.2164,0.2164,[72144e]|0.1791,0.1791,[72144e]|0.1583,0.1583,[72144e]|0.2436,0.2436,[72144e]|0.3426,0.3426,[72144e]|0.3566,0.3566,[72144e]|0.3286,0.3286,[72144e]|0.2258,0.2258,[72144e]|0.2436,0.2436,[72144e]|0.1554,0.1554,[72144e]|0.2364,0.2364,[72144e]|0.1298,0.1298,[72144e]|0.1914,0.1914,[72144e]|0.1115,0.1115,[72144e]|0.1528,0.1528,[72144e]|0.1115,0.1115,[72144e]|0.1007,0.1007,[72144e]|0.0909,0.0909,[72144e]|0.0734,0.0734,[72144e]|0.1206,0.1206,[72144e]|0.1823,0.1823,[72144e]|0.1643,0.1643,[72144e]|0.1298,0.1298,[72144e]|0.2164,0.2164,[72144e]|0.2399,0.2399,[72144e]|0.1671,0.1671,[72144e]|0.1092,0.1092,[72144e]|0.0948,0.0948,[72144e]|0.0948,0.0948,[72144e]|0.1501,0.1501,[72144e]|0.0967,0.0967,[72144e]|0.1611,0.1611,[72144e]|0.1424,0.1424,[72144e]|0.2328,0.2328,[72144e]|0.2503,0.2503,[72144e]|0.3529,0.3529,[72144e]|0.3494,0.3494,[72144e]|0.2817,0.2817,[72144e]|0.2064,0.2064,[72144e]|0.2193,0.2193,[72144e]|0.3286,0.3286,[72144e]|0.3392,0.3392,[72144e]|0.3494,0.3494,[72144e]|0.384,0.384,[72144e]|0.3872,0.3872,[72144e]|0.4017,0.4017,[72144e]|0.4087,0.4087,[72144e]|0.3807,0.3807,[72144e]|0.384,0.384,[72144e]|0.3117,0.3117,[72144e]|0.3182,0.3182,[72144e]|0.2328,0.2328,[72144e]|0.268,0.268,[72144e]|0.2258,0.2258,[72144e]|0.1501,0.1501,[72144e]|0.1791,0.1791,[72144e]|0.1702,0.1702,[72144e]|0.1611,0.1611,[72144e]|0.1791,0.1791,[72144e]|0.2164,0.2164,[72144e]|0.2328,0.2328,[72144e]|0.1554,0.1554,[72144e]|0.1583,0.1583,[72144e]|0.1528,0.1528,[72144e]|0.1424,0.1424,[72144e]|0.1823,0.1823,[72144e]|0.2224,0.2224,[72144e]|0.2224,0.2224,[72144e]|0.2436,0.2436,[72144e]|0.2541,0.2541,[72144e]|0.2399,0.2399,[72144e]|0.3087,0.3087,[72144e]|0.2817,0.2817,[72144e]|0.3566,0.3566,[72144e]|0.3667,0.3667,[72144e]|0.3774,0.3774,[72144e]|0.4541,0.4541,[72144e]|0.391,0.391,[72144e]|0.3599,0.3599,[72144e]|0.3356,0.3356,[72144e]|0.2783,0.2783,[72144e]|0.3426,0.3426,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.7573,0.7573,[329440]|0.6516,0.6516,[329440]|0.6293,0.6293,[329440]|0.5412,0.5412,[329440]|0.5229,0.5229,[329440]|0.5008,0.5008,[329440]|0.4825,0.4825,[329440]|0.3806,0.3806,[329440]|0.2292,0.2292,[329440]|0.1921,0.1921,[329440]|0.1602,0.1602,[329440]|0.208,0.208,[329440]|0.1667,0.1667,[329440]|0.2167,0.2167,[329440]|0.1416,0.1416,[329440]|0.1878,0.1878,[329440]|0.1921,0.1921,[329440]|0.1635,0.1635,[329440]|0.1322,0.1322,[329440]|0.1088,0.1088,[329440]|0.1805,0.1805,[329440]|0.2748,0.2748,[329440]|0.1805,0.1805,[329440]|0.1921,0.1921,[329440]|0.1495,0.1495,[329440]|0.1495,0.1495,[329440]|0.1088,0.1088,[329440]|0.1532,0.1532,[329440]|0.2531,0.2531,[329440]|0.2531,0.2531,[329440]|0.1805,0.1805,[329440]|0.106,0.106,[329440]|0.1667,0.1667,[329440]|0.1292,0.1292,[329440]|0.1998,0.1998,[329440]|0.1566,0.1566,[329440]|0.2292,0.2292,[329440]|0.1844,0.1844,[329440]|0.27,0.27,[329440]|0.2255,0.2255,[329440]|0.2041,0.2041,[329440]|0.124,0.124,[329440]|0.1205,0.1205,[329440]|0.1416,0.1416,[329440]|0.1998,0.1998,[329440]|0.1958,0.1958,[329440]|0.2292,0.2292,[329440]|0.2483,0.2483,[329440]|0.1732,0.1732,[329440]|0.1805,0.1805,[329440]|0.1667,0.1667,[329440]|0.2432,0.2432,[329440]|0.1732,0.1732,[329440]|0.2385,0.2385,[329440]|0.2531,0.2531,[329440]|0.3096,0.3096,[329440]|0.2385,0.2385,[329440]|0.2531,0.2531,[329440]|0.1844,0.1844,[329440]|0.1921,0.1921,[329440]|0.2167,0.2167,[329440]|0.208,0.208,[329440]|0.2558,0.2558,[329440]|0.27,0.27,[329440]|0.2558,0.2558,[329440]|0.2558,0.2558,[329440]|0.2531,0.2531,[329440]|0.1732,0.1732,[329440]|0.27,0.27,[329440]|0.1844,0.1844,[329440]|0.3005,0.3005,[329440]|0.208,0.208,[329440]|0.282,0.282,[329440]|0.1456,0.1456,[329440]|0.124,0.124,[329440]|0.0884,0.0884,[329440]|0.1292,0.1292,[329440]|0.1805,0.1805,[329440]|0.1416,0.1416,[329440]|0.1998,0.1998,[329440]|0.1844,0.1844,[329440]|0.1635,0.1635,[329440]|0.1667,0.1667,[329440]|0.1532,0.1532,[329440]|0.124,0.124,[329440]|0.0789,0.0789,[329440]|0.0554,0.0554,[329440]|0.0858,0.0858,[329440]|0.0701,0.0701,[329440]|0.106,0.106,[329440]|0.0587,0.0587,[329440]|0.1088,0.1088,[329440]|0.1088,0.1088,[329440]|0.1878,0.1878,[329440]|0.2122,0.2122,[329440]|0.2483,0.2483,[329440]|0.2432,0.2432,[329440]|0.1667,0.1667,[329440]|0.208,0.208,[329440]|0.2041,0.2041,[329440]|0.2209,0.2209,[329440]|0.3311,0.3311,[329440]|0.3668,0.3668,[329440]|0.3184,0.3184,[329440]|0.3096,0.3096,[329440]|0.3762,0.3762,[329440]|0.4282,0.4282,[329440]|0.3578,0.3578,[329440]|0.3096,0.3096,[329440]|0.2385,0.2385,[329440]|0.2865,0.2865,[329440]|0.2167,0.2167,[329440]|0.1878,0.1878,[329440]|0.1732,0.1732,[329440]|0.115,0.115,[329440]|0.1416,0.1416,[329440]|0.1349,0.1349,[329440]|0.208,0.208,[329440]|0.2865,0.2865,[329440]|0.2255,0.2255,[329440]|0.1667,0.1667,[329440]|0.106,0.106,[329440]|0.1205,0.1205,[329440]|0.1456,0.1456,[329440]|0.1495,0.1495,[329440]|0.1266,0.1266,[329440]|0.1416,0.1416,[329440]|0.208,0.208,[329440]|0.27,0.27,[329440]|0.27,0.27,[329440]|0.208,0.208,[329440]|0.3146,0.3146,[329440]|0.3806,0.3806,[329440]|0.4513,0.4513,[329440]|0.5623,0.5623,[329440]|0.5623,0.5623,[329440]|0.6219,0.6219,[329440]|0.6604,0.6604,[329440]|0.6906,0.6906,[329440]|0.7817,0.7817,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   Q7XA98_TRIPR
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.2292,0.2292,[72144e]|0.2645,0.2645,[72144e]|0.3019,0.3019,[72144e]|0.3286,0.3286,[72144e]|0.2328,0.2328,[72144e]|0.2258,0.2258,[72144e]|0.2645,0.2645,[72144e]|0.2988,0.2988,[72144e]|0.3286,0.3286,[72144e]|0.3774,0.3774,[72144e]|0.346,0.346,[72144e]|0.4051,0.4051,[72144e]|0.4051,0.4051,[72144e]|0.4017,0.4017,[72144e]|0.3494,0.3494,[72144e]|0.2988,0.2988,[72144e]|0.3286,0.3286,[72144e]|0.3948,0.3948,[72144e]|0.4864,0.4864,[72144e]|0.494,0.494,[72144e]|0.494,0.494,[72144e]|0.5139,0.5139,[72144e]|0.5419,0.5419,[72144e]|0.4441,0.4441,[72144e]|0.4685,0.4685,[72144e]|0.4685,0.4685,[72144e]|0.5707,0.5707,[72144e]|0.4901,0.4901,[72144e]|0.4831,0.4831,[72144e]|0.4087,0.4087,[72144e]|0.3872,0.3872,[72144e]|0.3566,0.3566,[72144e]|0.3566,0.3566,[72144e]|0.3215,0.3215,[72144e]|0.3566,0.3566,[72144e]|0.346,0.346,[72144e]|0.3983,0.3983,[72144e]|0.4256,0.4256,[72144e]|0.4369,0.4369,[72144e]|0.3667,0.3667,[72144e]|0.3392,0.3392,[72144e]|0.2884,0.2884,[72144e]|0.2609,0.2609,[72144e]|0.2436,0.2436,[72144e]|0.2436,0.2436,[72144e]|0.3392,0.3392,[72144e]|0.2328,0.2328,[72144e]|0.2258,0.2258,[72144e]|0.1791,0.1791,[72144e]|0.2575,0.2575,[72144e]|0.1969,0.1969,[72144e]|0.1969,0.1969,[72144e]|0.2094,0.2094,[72144e]|0.2399,0.2399,[72144e]|0.3149,0.3149,[72144e]|0.3182,0.3182,[72144e]|0.3426,0.3426,[72144e]|0.3599,0.3599,[72144e]|0.3807,0.3807,[72144e]|0.2884,0.2884,[72144e]|0.2884,0.2884,[72144e]|0.2609,0.2609,[72144e]|0.3149,0.3149,[72144e]|0.3774,0.3774,[72144e]|0.4119,0.4119,[72144e]|0.391,0.391,[72144e]|0.3356,0.3356,[72144e]|0.268,0.268,[72144e]|0.2849,0.2849,[72144e]|0.3117,0.3117,[72144e]|0.3599,0.3599,[72144e]|0.346,0.346,[72144e]|0.4292,0.4292,[72144e]|0.5254,0.5254,[72144e]|0.4652,0.4652,[72144e]|0.4369,0.4369,[72144e]|0.346,0.346,[72144e]|0.3704,0.3704,[72144e]|0.2783,0.2783,[72144e]|0.2988,0.2988,[72144e]|0.1969,0.1969,[72144e]|0.2849,0.2849,[72144e]|0.1852,0.1852,[72144e]|0.2752,0.2752,[72144e]|0.2193,0.2193,[72144e]|0.2064,0.2064,[72144e]|0.1942,0.1942,[72144e]|0.1583,0.1583,[72144e]|0.2258,0.2258,[72144e]|0.2918,0.2918,[72144e]|0.2609,0.2609,[72144e]|0.2224,0.2224,[72144e]|0.2258,0.2258,[72144e]|0.2399,0.2399,[72144e]|0.1731,0.1731,[72144e]|0.1184,0.1184,[72144e]|0.1611,0.1611,[72144e]|0.1611,0.1611,[72144e]|0.2292,0.2292,[72144e]|0.1643,0.1643,[72144e]|0.2292,0.2292,[72144e]|0.2064,0.2064,[72144e]|0.3053,0.3053,[72144e]|0.3215,0.3215,[72144e]|0.4149,0.4149,[72144e]|0.4119,0.4119,[72144e]|0.3494,0.3494,[72144e]|0.2884,0.2884,[72144e]|0.3053,0.3053,[72144e]|0.4087,0.4087,[72144e]|0.433,0.433,[72144e]|0.4409,0.4409,[72144e]|0.4685,0.4685,[72144e]|0.5176,0.5176,[72144e]|0.5139,0.5139,[72144e]|0.5296,0.5296,[72144e]|0.5098,0.5098,[72144e]|0.5098,0.5098,[72144e]|0.433,0.433,[72144e]|0.4369,0.4369,[72144e]|0.3249,0.3249,[72144e]|0.3249,0.3249,[72144e]|0.2951,0.2951,[72144e]|0.1969,0.1969,[72144e]|0.2064,0.2064,[72144e]|0.2002,0.2002,[72144e]|0.1942,0.1942,[72144e]|0.2094,0.2094,[72144e]|0.2436,0.2436,[72144e]|0.3087,0.3087,[72144e]|0.2258,0.2258,[72144e]|0.2328,0.2328,[72144e]|0.2164,0.2164,[72144e]|0.2034,0.2034,[72144e]|0.2541,0.2541,[72144e]|0.2575,0.2575,[72144e]|0.2783,0.2783,[72144e]|0.3019,0.3019,[72144e]|0.3019,0.3019,[72144e]|0.3529,0.3529,[72144e]|0.3948,0.3948,[72144e]|0.384,0.384,[72144e]|0.4766,0.4766,[72144e]|0.5254,0.5254,[72144e]|0.5419,0.5419,[72144e]|0.6755,0.6755,[72144e]|0.6136,0.6136,[72144e]|0.5901,0.5901,[72144e]|0.5807,0.5807,[72144e]|0.5382,0.5382,[72144e]|0.6322,0.6322,[72144e]|0.6089,0.6089,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.892,0.892,[329440]|0.835,0.835,[329440]|0.7388,0.7388,[329440]|0.6944,0.6944,[329440]|0.6557,0.6557,[329440]|0.6124,0.6124,[329440]|0.4967,0.4967,[329440]|0.4149,0.4149,[329440]|0.3939,0.3939,[329440]|0.3717,0.3717,[329440]|0.3359,0.3359,[329440]|0.3939,0.3939,[329440]|0.363,0.363,[329440]|0.3847,0.3847,[329440]|0.3535,0.3535,[329440]|0.3311,0.3311,[329440]|0.3053,0.3053,[329440]|0.3225,0.3225,[329440]|0.3992,0.3992,[329440]|0.3939,0.3939,[329440]|0.3939,0.3939,[329440]|0.4203,0.4203,[329440]|0.4781,0.4781,[329440]|0.4825,0.4825,[329440]|0.4513,0.4513,[329440]|0.363,0.363,[329440]|0.4651,0.4651,[329440]|0.4967,0.4967,[329440]|0.4749,0.4749,[329440]|0.3535,0.3535,[329440]|0.3456,0.3456,[329440]|0.2558,0.2558,[329440]|0.3225,0.3225,[329440]|0.2963,0.2963,[329440]|0.2602,0.2602,[329440]|0.2657,0.2657,[329440]|0.3184,0.3184,[329440]|0.3359,0.3359,[329440]|0.3491,0.3491,[329440]|0.3491,0.3491,[329440]|0.3578,0.3578,[329440]|0.3096,0.3096,[329440]|0.2865,0.2865,[329440]|0.2292,0.2292,[329440]|0.2292,0.2292,[329440]|0.2865,0.2865,[329440]|0.2292,0.2292,[329440]|0.2255,0.2255,[329440]|0.1566,0.1566,[329440]|0.2333,0.2333,[329440]|0.1766,0.1766,[329440]|0.2209,0.2209,[329440]|0.1602,0.1602,[329440]|0.1088,0.1088,[329440]|0.1495,0.1495,[329440]|0.1766,0.1766,[329440]|0.1921,0.1921,[329440]|0.1998,0.1998,[329440]|0.2122,0.2122,[329440]|0.2255,0.2255,[329440]|0.2385,0.2385,[329440]|0.2041,0.2041,[329440]|0.2483,0.2483,[329440]|0.2122,0.2122,[329440]|0.27,0.27,[329440]|0.3225,0.3225,[329440]|0.3762,0.3762,[329440]|0.3225,0.3225,[329440]|0.3311,0.3311,[329440]|0.2865,0.2865,[329440]|0.282,0.282,[329440]|0.3184,0.3184,[329440]|0.3668,0.3668,[329440]|0.4037,0.4037,[329440]|0.4245,0.4245,[329440]|0.4116,0.4116,[329440]|0.3359,0.3359,[329440]|0.3311,0.3311,[329440]|0.2483,0.2483,[329440]|0.2558,0.2558,[329440]|0.1766,0.1766,[329440]|0.2913,0.2913,[329440]|0.2041,0.2041,[329440]|0.3005,0.3005,[329440]|0.1416,0.1416,[329440]|0.1205,0.1205,[329440]|0.0884,0.0884,[329440]|0.1205,0.1205,[329440]|0.1766,0.1766,[329440]|0.1266,0.1266,[329440]|0.1766,0.1766,[329440]|0.1667,0.1667,[329440]|0.0991,0.0991,[329440]|0.1041,0.1041,[329440]|0.0935,0.0935,[329440]|0.0723,0.0723,[329440]|0.0771,0.0771,[329440]|0.0554,0.0554,[329440]|0.0771,0.0771,[329440]|0.066,0.066,[329440]|0.0935,0.0935,[329440]|0.0526,0.0526,[329440]|0.0771,0.0771,[329440]|0.0744,0.0744,[329440]|0.1805,0.1805,[329440]|0.2041,0.2041,[329440]|0.2333,0.2333,[329440]|0.2385,0.2385,[329440]|0.1667,0.1667,[329440]|0.2167,0.2167,[329440]|0.2255,0.2255,[329440]|0.2333,0.2333,[329440]|0.3717,0.3717,[329440]|0.4037,0.4037,[329440]|0.3399,0.3399,[329440]|0.3806,0.3806,[329440]|0.4333,0.4333,[329440]|0.4918,0.4918,[329440]|0.442,0.442,[329440]|0.3992,0.3992,[329440]|0.3399,0.3399,[329440]|0.4037,0.4037,[329440]|0.3456,0.3456,[329440]|0.2963,0.2963,[329440]|0.2602,0.2602,[329440]|0.1805,0.1805,[329440]|0.2209,0.2209,[329440]|0.2167,0.2167,[329440]|0.2963,0.2963,[329440]|0.3717,0.3717,[329440]|0.2913,0.2913,[329440]|0.2786,0.2786,[329440]|0.1921,0.1921,[329440]|0.2122,0.2122,[329440]|0.27,0.27,[329440]|0.2292,0.2292,[329440]|0.1998,0.1998,[329440]|0.2209,0.2209,[329440]|0.2963,0.2963,[329440]|0.3717,0.3717,[329440]|0.363,0.363,[329440]|0.3578,0.3578,[329440]|0.3992,0.3992,[329440]|0.4967,0.4967,[329440]|0.5549,0.5549,[329440]|0.665,0.665,[329440]|0.6681,0.6681,[329440]|0.7111,0.7111,[329440]|0.7501,0.7501,[329440]|0.7772,0.7772,[329440]|0.8677,0.8677,[329440]|0.904,0.904,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_PEA
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.1914,0.1914,[72144e]|0.2258,0.2258,[72144e]|0.268,0.268,[72144e]|0.2951,0.2951,[72144e]|0.1914,0.1914,[72144e]|0.1476,0.1476,[72144e]|0.1823,0.1823,[72144e]|0.2094,0.2094,[72144e]|0.247,0.247,[72144e]|0.3019,0.3019,[72144e]|0.2918,0.2918,[72144e]|0.3566,0.3566,[72144e]|0.3566,0.3566,[72144e]|0.3529,0.3529,[72144e]|0.2988,0.2988,[72144e]|0.2752,0.2752,[72144e]|0.3087,0.3087,[72144e]|0.3774,0.3774,[72144e]|0.4541,0.4541,[72144e]|0.4256,0.4256,[72144e]|0.3215,0.3215,[72144e]|0.346,0.346,[72144e]|0.4087,0.4087,[72144e]|0.4087,0.4087,[72144e]|0.3087,0.3087,[72144e]|0.2436,0.2436,[72144e]|0.3392,0.3392,[72144e]|0.3321,0.3321,[72144e]|0.3182,0.3182,[72144e]|0.3182,0.3182,[72144e]|0.3053,0.3053,[72144e]|0.2064,0.2064,[72144e]|0.2258,0.2258,[72144e]|0.1969,0.1969,[72144e]|0.2258,0.2258,[72144e]|0.2399,0.2399,[72144e]|0.2292,0.2292,[72144e]|0.2002,0.2002,[72144e]|0.1501,0.1501,[72144e]|0.1275,0.1275,[72144e]|0.1162,0.1162,[72144e]|0.1162,0.1162,[72144e]|0.1942,0.1942,[72144e]|0.1298,0.1298,[72144e]|0.1162,0.1162,[72144e]|0.0851,0.0851,[72144e]|0.1424,0.1424,[72144e]|0.1424,0.1424,[72144e]|0.1048,0.1048,[72144e]|0.1554,0.1554,[72144e]|0.1914,0.1914,[72144e]|0.2002,0.2002,[72144e]|0.2034,0.2034,[72144e]|0.2752,0.2752,[72144e]|0.2918,0.2918,[72144e]|0.3117,0.3117,[72144e]|0.2164,0.2164,[72144e]|0.2258,0.2258,[72144e]|0.2002,0.2002,[72144e]|0.2575,0.2575,[72144e]|0.3087,0.3087,[72144e]|0.3494,0.3494,[72144e]|0.3249,0.3249,[72144e]|0.2752,0.2752,[72144e]|0.2064,0.2064,[72144e]|0.2193,0.2193,[72144e]|0.247,0.247,[72144e]|0.2988,0.2988,[72144e]|0.2817,0.2817,[72144e]|0.3704,0.3704,[72144e]|0.4476,0.4476,[72144e]|0.391,0.391,[72144e]|0.3599,0.3599,[72144e]|0.2752,0.2752,[72144e]|0.2884,0.2884,[72144e]|0.2164,0.2164,[72144e]|0.2399,0.2399,[72144e]|0.1476,0.1476,[72144e]|0.2328,0.2328,[72144e]|0.1323,0.1323,[72144e]|0.2129,0.2129,[72144e]|0.1583,0.1583,[72144e]|0.1611,0.1611,[72144e]|0.1476,0.1476,[72144e]|0.1206,0.1206,[72144e]|0.1791,0.1791,[72144e]|0.2436,0.2436,[72144e]|0.2164,0.2164,[72144e]|0.1791,0.1791,[72144e]|0.1823,0.1823,[72144e]|0.1969,0.1969,[72144e]|0.1349,0.1349,[72144e]|0.0851,0.0851,[72144e]|0.1184,0.1184,[72144e]|0.1162,0.1162,[72144e]|0.1914,0.1914,[72144e]|0.1373,0.1373,[72144e]|0.2034,0.2034,[72144e]|0.1823,0.1823,[72144e]|0.2575,0.2575,[72144e]|0.2715,0.2715,[72144e]|0.3631,0.3631,[72144e]|0.3599,0.3599,[72144e]|0.2918,0.2918,[72144e]|0.2258,0.2258,[72144e]|0.2436,0.2436,[72144e]|0.3494,0.3494,[72144e]|0.374,0.374,[72144e]|0.384,0.384,[72144e]|0.4051,0.4051,[72144e]|0.4541,0.4541,[72144e]|0.4256,0.4256,[72144e]|0.4369,0.4369,[72144e]|0.391,0.391,[72144e]|0.3948,0.3948,[72144e]|0.3249,0.3249,[72144e]|0.3286,0.3286,[72144e]|0.2064,0.2064,[72144e]|0.2034,0.2034,[72144e]|0.1702,0.1702,[72144e]|0.1092,0.1092,[72144e]|0.1323,0.1323,[72144e]|0.1251,0.1251,[72144e]|0.1251,0.1251,[72144e]|0.1373,0.1373,[72144e]|0.1702,0.1702,[72144e]|0.1852,0.1852,[72144e]|0.1184,0.1184,[72144e]|0.1251,0.1251,[72144e]|0.1115,0.1115,[72144e]|0.1028,0.1028,[72144e]|0.1424,0.1424,[72144e]|0.1449,0.1449,[72144e]|0.1881,0.1881,[72144e]|0.2064,0.2064,[72144e]|0.2328,0.2328,[72144e]|0.2849,0.2849,[72144e]|0.3249,0.3249,[72144e]|0.3182,0.3182,[72144e]|0.4051,0.4051,[72144e]|0.4541,0.4541,[72144e]|0.4725,0.4725,[72144e]|0.5577,0.5577,[72144e]|0.494,0.494,[72144e]|0.4766,0.4766,[72144e]|0.4619,0.4619,[72144e]|0.4149,0.4149,[72144e]|0.4831,0.4831,[72144e]|0.5665,0.5665,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8781,0.8781,[329440]|0.82,0.82,[329440]|0.7192,0.7192,[329440]|0.6756,0.6756,[329440]|0.6374,0.6374,[329440]|0.59,0.59,[329440]|0.4651,0.4651,[329440]|0.3578,0.3578,[329440]|0.3359,0.3359,[329440]|0.2913,0.2913,[329440]|0.2531,0.2531,[329440]|0.3184,0.3184,[329440]|0.3184,0.3184,[329440]|0.3491,0.3491,[329440]|0.3184,0.3184,[329440]|0.2913,0.2913,[329440]|0.2531,0.2531,[329440]|0.2963,0.2963,[329440]|0.3806,0.3806,[329440]|0.3762,0.3762,[329440]|0.3806,0.3806,[329440]|0.3717,0.3717,[329440]|0.3399,0.3399,[329440]|0.3456,0.3456,[329440]|0.3535,0.3535,[329440]|0.3535,0.3535,[329440]|0.3359,0.3359,[329440]|0.3263,0.3263,[329440]|0.3053,0.3053,[329440]|0.2333,0.2333,[329440]|0.2255,0.2255,[329440]|0.1958,0.1958,[329440]|0.2292,0.2292,[329440]|0.1456,0.1456,[329440]|0.1698,0.1698,[329440]|0.1805,0.1805,[329440]|0.2385,0.2385,[329440]|0.2483,0.2483,[329440]|0.1878,0.1878,[329440]|0.1635,0.1635,[329440]|0.1178,0.1178,[329440]|0.1205,0.1205,[329440]|0.1667,0.1667,[329440]|0.138,0.138,[329440]|0.1322,0.1322,[329440]|0.0813,0.0813,[329440]|0.1416,0.1416,[329440]|0.1456,0.1456,[329440]|0.1349,0.1349,[329440]|0.1322,0.1322,[329440]|0.0909,0.0909,[329440]|0.0884,0.0884,[329440]|0.1088,0.1088,[329440]|0.1602,0.1602,[329440]|0.1635,0.1635,[329440]|0.1495,0.1495,[329440]|0.1635,0.1635,[329440]|0.1698,0.1698,[329440]|0.1456,0.1456,[329440]|0.1844,0.1844,[329440]|0.1602,0.1602,[329440]|0.2167,0.2167,[329440]|0.2483,0.2483,[329440]|0.3053,0.3053,[329440]|0.2483,0.2483,[329440]|0.2602,0.2602,[329440]|0.2122,0.2122,[329440]|0.2167,0.2167,[329440]|0.2432,0.2432,[329440]|0.3053,0.3053,[329440]|0.3263,0.3263,[329440]|0.3491,0.3491,[329440]|0.3359,0.3359,[329440]|0.2748,0.2748,[329440]|0.27,0.27,[329440]|0.2209,0.2209,[329440]|0.2292,0.2292,[329440]|0.1602,0.1602,[329440]|0.2748,0.2748,[329440]|0.1921,0.1921,[329440]|0.282,0.282,[329440]|0.1322,0.1322,[329440]|0.124,0.124,[329440]|0.0909,0.0909,[329440]|0.124,0.124,[329440]|0.1805,0.1805,[329440]|0.1322,0.1322,[329440]|0.1844,0.1844,[329440]|0.1732,0.1732,[329440]|0.1041,0.1041,[329440]|0.1088,0.1088,[329440]|0.0991,0.0991,[329440]|0.0771,0.0771,[329440]|0.0771,0.0771,[329440]|0.0554,0.0554,[329440]|0.0771,0.0771,[329440]|0.0643,0.0643,[329440]|0.1088,0.1088,[329440]|0.0607,0.0607,[329440]|0.1041,0.1041,[329440]|0.1041,0.1041,[329440]|0.208,0.208,[329440]|0.2385,0.2385,[329440]|0.2657,0.2657,[329440]|0.2748,0.2748,[329440]|0.1878,0.1878,[329440]|0.2292,0.2292,[329440]|0.2483,0.2483,[329440]|0.2602,0.2602,[329440]|0.3992,0.3992,[329440]|0.4282,0.4282,[329440]|0.363,0.363,[329440]|0.4116,0.4116,[329440]|0.4333,0.4333,[329440]|0.4967,0.4967,[329440]|0.4203,0.4203,[329440]|0.3762,0.3762,[329440]|0.282,0.282,[329440]|0.3399,0.3399,[329440]|0.2558,0.2558,[329440]|0.1998,0.1998,[329440]|0.1844,0.1844,[329440]|0.1178,0.1178,[329440]|0.1566,0.1566,[329440]|0.1495,0.1495,[329440]|0.2209,0.2209,[329440]|0.3053,0.3053,[329440]|0.2209,0.2209,[329440]|0.1566,0.1566,[329440]|0.0884,0.0884,[329440]|0.1041,0.1041,[329440]|0.1416,0.1416,[329440]|0.1178,0.1178,[329440]|0.1205,0.1205,[329440]|0.1349,0.1349,[329440]|0.2209,0.2209,[329440]|0.282,0.282,[329440]|0.2748,0.2748,[329440]|0.27,0.27,[329440]|0.3005,0.3005,[329440]|0.3992,0.3992,[329440]|0.4703,0.4703,[329440]|0.5762,0.5762,[329440]|0.5762,0.5762,[329440]|0.6293,0.6293,[329440]|0.6715,0.6715,[329440]|0.6944,0.6944,[329440]|0.7951,0.7951,[329440]|0.8781,0.8781,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_SPIOL
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.3704,0.3704,[72144e]|0.4017,0.4017,[72144e]|0.4292,0.4292,[72144e]|0.3215,0.3215,[72144e]|0.2884,0.2884,[72144e]|0.3566,0.3566,[72144e]|0.3704,0.3704,[72144e]|0.4292,0.4292,[72144e]|0.4619,0.4619,[72144e]|0.4476,0.4476,[72144e]|0.4979,0.4979,[72144e]|0.5807,0.5807,[72144e]|0.5758,0.5758,[72144e]|0.5758,0.5758,[72144e]|0.5382,0.5382,[72144e]|0.5055,0.5055,[72144e]|0.4409,0.4409,[72144e]|0.4685,0.4685,[72144e]|0.5055,0.5055,[72144e]|0.5493,0.5493,[72144e]|0.5533,0.5533,[72144e]|0.5951,0.5951,[72144e]|0.6375,0.6375,[72144e]|0.6322,0.6322,[72144e]|0.5493,0.5493,[72144e]|0.5456,0.5456,[72144e]|0.6043,0.6043,[72144e]|0.4864,0.4864,[72144e]|0.4864,0.4864,[72144e]|0.4507,0.4507,[72144e]|0.4369,0.4369,[72144e]|0.4652,0.4652,[72144e]|0.433,0.433,[72144e]|0.3983,0.3983,[72144e]|0.4292,0.4292,[72144e]|0.4619,0.4619,[72144e]|0.4541,0.4541,[72144e]|0.4831,0.4831,[72144e]|0.5176,0.5176,[72144e]|0.4541,0.4541,[72144e]|0.433,0.433,[72144e]|0.3392,0.3392,[72144e]|0.3286,0.3286,[72144e]|0.2849,0.2849,[72144e]|0.2817,0.2817,[72144e]|0.2224,0.2224,[72144e]|0.2364,0.2364,[72144e]|0.3249,0.3249,[72144e]|0.3599,0.3599,[72144e]|0.422,0.422,[72144e]|0.433,0.433,[72144e]|0.4409,0.4409,[72144e]|0.391,0.391,[72144e]|0.4186,0.4186,[72144e]|0.3249,0.3249,[72144e]|0.3392,0.3392,[72144e]|0.247,0.247,[72144e]|0.2783,0.2783,[72144e]|0.3215,0.3215,[72144e]|0.3321,0.3321,[72144e]|0.3182,0.3182,[72144e]|0.2609,0.2609,[72144e]|0.2193,0.2193,[72144e]|0.247,0.247,[72144e]|0.268,0.268,[72144e]|0.2918,0.2918,[72144e]|0.2645,0.2645,[72144e]|0.3494,0.3494,[72144e]|0.422,0.422,[72144e]|0.4476,0.4476,[72144e]|0.4119,0.4119,[72144e]|0.346,0.346,[72144e]|0.3599,0.3599,[72144e]|0.2918,0.2918,[72144e]|0.3704,0.3704,[72144e]|0.2609,0.2609,[72144e]|0.3494,0.3494,[72144e]|0.2436,0.2436,[72144e]|0.3392,0.3392,[72144e]|0.2817,0.2817,[72144e]|0.268,0.268,[72144e]|0.2541,0.2541,[72144e]|0.2094,0.2094,[72144e]|0.2951,0.2951,[72144e]|0.3566,0.3566,[72144e]|0.3215,0.3215,[72144e]|0.2849,0.2849,[72144e]|0.3117,0.3117,[72144e]|0.3249,0.3249,[72144e]|0.2399,0.2399,[72144e]|0.2064,0.2064,[72144e]|0.1852,0.1852,[72144e]|0.1852,0.1852,[72144e]|0.247,0.247,[72144e]|0.1759,0.1759,[72144e]|0.2399,0.2399,[72144e]|0.2193,0.2193,[72144e]|0.3182,0.3182,[72144e]|0.3321,0.3321,[72144e]|0.4369,0.4369,[72144e]|0.433,0.433,[72144e]|0.3704,0.3704,[72144e]|0.3087,0.3087,[72144e]|0.3249,0.3249,[72144e]|0.433,0.433,[72144e]|0.4476,0.4476,[72144e]|0.4582,0.4582,[72144e]|0.4864,0.4864,[72144e]|0.5296,0.5296,[72144e]|0.5533,0.5533,[72144e]|0.5665,0.5665,[72144e]|0.5456,0.5456,[72144e]|0.5017,0.5017,[72144e]|0.4369,0.4369,[72144e]|0.4369,0.4369,[72144e]|0.3356,0.3356,[72144e]|0.374,0.374,[72144e]|0.3426,0.3426,[72144e]|0.2609,0.2609,[72144e]|0.2817,0.2817,[72144e]|0.2164,0.2164,[72144e]|0.2034,0.2034,[72144e]|0.2164,0.2164,[72144e]|0.2541,0.2541,[72144e]|0.3117,0.3117,[72144e]|0.2328,0.2328,[72144e]|0.2399,0.2399,[72144e]|0.2224,0.2224,[72144e]|0.2064,0.2064,[72144e]|0.2575,0.2575,[72144e]|0.268,0.268,[72144e]|0.268,0.268,[72144e]|0.2918,0.2918,[72144e]|0.3019,0.3019,[72144e]|0.3494,0.3494,[72144e]|0.3872,0.3872,[72144e]|0.3807,0.3807,[72144e]|0.4685,0.4685,[72144e]|0.4831,0.4831,[72144e]|0.494,0.494,[72144e]|0.5854,0.5854,[72144e]|0.5176,0.5176,[72144e]|0.5807,0.5807,[72144e]|0.5707,0.5707,[72144e]|0.5296,0.5296,[72144e]|0.6183,0.6183,[72144e]|0.5992,0.5992,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.928,0.928,[329440]|0.8823,0.8823,[329440]|0.8283,0.8283,[329440]|0.7912,0.7912,[329440]|0.754,0.754,[329440]|0.6474,0.6474,[329440]|0.5473,0.5473,[329440]|0.5296,0.5296,[329440]|0.4918,0.4918,[329440]|0.4703,0.4703,[329440]|0.4379,0.4379,[329440]|0.442,0.442,[329440]|0.4967,0.4967,[329440]|0.5514,0.5514,[329440]|0.5229,0.5229,[329440]|0.4879,0.4879,[329440]|0.4556,0.4556,[329440]|0.4245,0.4245,[329440]|0.4116,0.4116,[329440]|0.4651,0.4651,[329440]|0.4703,0.4703,[329440]|0.5008,0.5008,[329440]|0.5296,0.5296,[329440]|0.5229,0.5229,[329440]|0.5374,0.5374,[329440]|0.6174,0.6174,[329440]|0.6255,0.6255,[329440]|0.5253,0.5253,[329440]|0.5229,0.5229,[329440]|0.4458,0.4458,[329440]|0.442,0.442,[329440]|0.4781,0.4781,[329440]|0.4513,0.4513,[329440]|0.4282,0.4282,[329440]|0.4749,0.4749,[329440]|0.4967,0.4967,[329440]|0.5173,0.5173,[329440]|0.5549,0.5549,[329440]|0.5667,0.5667,[329440]|0.5412,0.5412,[329440]|0.5043,0.5043,[329440]|0.4703,0.4703,[329440]|0.4333,0.4333,[329440]|0.3578,0.3578,[329440]|0.3311,0.3311,[329440]|0.2657,0.2657,[329440]|0.3146,0.3146,[329440]|0.3263,0.3263,[329440]|0.27,0.27,[329440]|0.3184,0.3184,[329440]|0.3456,0.3456,[329440]|0.3311,0.3311,[329440]|0.3311,0.3311,[329440]|0.3311,0.3311,[329440]|0.2531,0.2531,[329440]|0.2748,0.2748,[329440]|0.1921,0.1921,[329440]|0.1921,0.1921,[329440]|0.1456,0.1456,[329440]|0.1698,0.1698,[329440]|0.2122,0.2122,[329440]|0.2657,0.2657,[329440]|0.2333,0.2333,[329440]|0.2385,0.2385,[329440]|0.1844,0.1844,[329440]|0.1844,0.1844,[329440]|0.1998,0.1998,[329440]|0.2209,0.2209,[329440]|0.2432,0.2432,[329440]|0.2657,0.2657,[329440]|0.2483,0.2483,[329440]|0.27,0.27,[329440]|0.2657,0.2657,[329440]|0.208,0.208,[329440]|0.282,0.282,[329440]|0.1998,0.1998,[329440]|0.3184,0.3184,[329440]|0.2432,0.2432,[329440]|0.3359,0.3359,[329440]|0.1732,0.1732,[329440]|0.1566,0.1566,[329440]|0.1205,0.1205,[329440]|0.1602,0.1602,[329440]|0.2255,0.2255,[329440]|0.1766,0.1766,[329440]|0.2385,0.2385,[329440]|0.2255,0.2255,[329440]|0.1635,0.1635,[329440]|0.1732,0.1732,[329440]|0.1602,0.1602,[329440]|0.1292,0.1292,[329440]|0.0771,0.0771,[329440]|0.0701,0.0701,[329440]|0.0965,0.0965,[329440]|0.0858,0.0858,[329440]|0.124,0.124,[329440]|0.0643,0.0643,[329440]|0.0935,0.0935,[329440]|0.0935,0.0935,[329440]|0.2041,0.2041,[329440]|0.2209,0.2209,[329440]|0.2602,0.2602,[329440]|0.2657,0.2657,[329440]|0.1878,0.1878,[329440]|0.2333,0.2333,[329440]|0.2432,0.2432,[329440]|0.2531,0.2531,[329440]|0.3668,0.3668,[329440]|0.3992,0.3992,[329440]|0.3359,0.3359,[329440]|0.3717,0.3717,[329440]|0.4556,0.4556,[329440]|0.4825,0.4825,[329440]|0.4245,0.4245,[329440]|0.3806,0.3806,[329440]|0.3146,0.3146,[329440]|0.3762,0.3762,[329440]|0.3263,0.3263,[329440]|0.3005,0.3005,[329440]|0.2748,0.2748,[329440]|0.1998,0.1998,[329440]|0.2432,0.2432,[329440]|0.1878,0.1878,[329440]|0.2657,0.2657,[329440]|0.3456,0.3456,[329440]|0.2748,0.2748,[329440]|0.2558,0.2558,[329440]|0.1766,0.1766,[329440]|0.1998,0.1998,[329440]|0.2483,0.2483,[329440]|0.2209,0.2209,[329440]|0.1732,0.1732,[329440]|0.1921,0.1921,[329440]|0.282,0.282,[329440]|0.3535,0.3535,[329440]|0.3456,0.3456,[329440]|0.3491,0.3491,[329440]|0.3806,0.3806,[329440]|0.4458,0.4458,[329440]|0.5084,0.5084,[329440]|0.6174,0.6174,[329440]|0.6174,0.6174,[329440]|0.7034,0.7034,[329440]|0.7418,0.7418,[329440]|0.7644,0.7644,[329440]|0.8595,0.8595,[329440]|0.8945,0.8945,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_MESCR
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.3117,0.3117,[72144e]|0.2951,0.2951,[72144e]|0.3249,0.3249,[72144e]|0.3566,0.3566,[72144e]|0.3426,0.3426,[72144e]|0.2503,0.2503,[72144e]|0.2436,0.2436,[72144e]|0.3053,0.3053,[72144e]|0.3182,0.3182,[72144e]|0.3426,0.3426,[72144e]|0.3948,0.3948,[72144e]|0.4619,0.4619,[72144e]|0.4619,0.4619,[72144e]|0.4979,0.4979,[72144e]|0.4652,0.4652,[72144e]|0.433,0.433,[72144e]|0.3983,0.3983,[72144e]|0.4619,0.4619,[72144e]|0.5296,0.5296,[72144e]|0.5419,0.5419,[72144e]|0.4864,0.4864,[72144e]|0.5176,0.5176,[72144e]|0.5176,0.5176,[72144e]|0.5176,0.5176,[72144e]|0.4541,0.4541,[72144e]|0.3599,0.3599,[72144e]|0.3872,0.3872,[72144e]|0.4119,0.4119,[72144e]|0.4292,0.4292,[72144e]|0.3948,0.3948,[72144e]|0.4017,0.4017,[72144e]|0.3704,0.3704,[72144e]|0.3356,0.3356,[72144e]|0.3053,0.3053,[72144e]|0.3286,0.3286,[72144e]|0.3286,0.3286,[72144e]|0.3087,0.3087,[72144e]|0.3392,0.3392,[72144e]|0.3774,0.3774,[72144e]|0.3182,0.3182,[72144e]|0.2918,0.2918,[72144e]|0.2609,0.2609,[72144e]|0.2292,0.2292,[72144e]|0.2224,0.2224,[72144e]|0.1731,0.1731,[72144e]|0.2002,0.2002,[72144e]|0.2002,0.2002,[72144e]|0.2436,0.2436,[72144e]|0.247,0.247,[72144e]|0.3426,0.3426,[72144e]|0.3774,0.3774,[72144e]|0.3774,0.3774,[72144e]|0.3704,0.3704,[72144e]|0.4087,0.4087,[72144e]|0.4369,0.4369,[72144e]|0.3704,0.3704,[72144e]|0.3948,0.3948,[72144e]|0.2988,0.2988,[72144e]|0.3807,0.3807,[72144e]|0.391,0.391,[72144e]|0.4292,0.4292,[72144e]|0.4087,0.4087,[72144e]|0.3529,0.3529,[72144e]|0.3149,0.3149,[72144e]|0.3356,0.3356,[72144e]|0.3566,0.3566,[72144e]|0.3807,0.3807,[72144e]|0.3529,0.3529,[72144e]|0.4369,0.4369,[72144e]|0.5139,0.5139,[72144e]|0.4831,0.4831,[72144e]|0.4507,0.4507,[72144e]|0.3566,0.3566,[72144e]|0.3704,0.3704,[72144e]|0.3182,0.3182,[72144e]|0.3392,0.3392,[72144e]|0.2328,0.2328,[72144e]|0.2951,0.2951,[72144e]|0.1791,0.1791,[72144e]|0.2715,0.2715,[72144e]|0.2164,0.2164,[72144e]|0.2002,0.2002,[72144e]|0.1881,0.1881,[72144e]|0.1501,0.1501,[72144e]|0.2164,0.2164,[72144e]|0.2817,0.2817,[72144e]|0.247,0.247,[72144e]|0.2094,0.2094,[72144e]|0.2328,0.2328,[72144e]|0.2503,0.2503,[72144e]|0.1823,0.1823,[72144e]|0.1643,0.1643,[72144e]|0.1852,0.1852,[72144e]|0.1852,0.1852,[72144e]|0.247,0.247,[72144e]|0.1881,0.1881,[72144e]|0.2541,0.2541,[72144e]|0.2328,0.2328,[72144e]|0.3249,0.3249,[72144e]|0.3426,0.3426,[72144e]|0.4369,0.4369,[72144e]|0.4292,0.4292,[72144e]|0.3704,0.3704,[72144e]|0.3117,0.3117,[72144e]|0.3249,0.3249,[72144e]|0.4369,0.4369,[72144e]|0.4507,0.4507,[72144e]|0.4619,0.4619,[72144e]|0.4901,0.4901,[72144e]|0.5055,0.5055,[72144e]|0.5342,0.5342,[72144e]|0.5419,0.5419,[72144e]|0.5176,0.5176,[72144e]|0.4619,0.4619,[72144e]|0.4017,0.4017,[72144e]|0.4051,0.4051,[72144e]|0.3053,0.3053,[72144e]|0.3053,0.3053,[72144e]|0.2783,0.2783,[72144e]|0.1942,0.1942,[72144e]|0.2129,0.2129,[72144e]|0.2002,0.2002,[72144e]|0.2002,0.2002,[72144e]|0.2129,0.2129,[72144e]|0.2503,0.2503,[72144e]|0.3117,0.3117,[72144e]|0.2328,0.2328,[72144e]|0.2399,0.2399,[72144e]|0.2258,0.2258,[72144e]|0.2129,0.2129,[72144e]|0.268,0.268,[72144e]|0.2988,0.2988,[72144e]|0.2988,0.2988,[72144e]|0.3215,0.3215,[72144e]|0.3249,0.3249,[72144e]|0.3774,0.3774,[72144e]|0.4149,0.4149,[72144e]|0.4051,0.4051,[72144e]|0.4979,0.4979,[72144e]|0.5456,0.5456,[72144e]|0.5665,0.5665,[72144e]|0.6755,0.6755,[72144e]|0.6089,0.6089,[72144e]|0.5901,0.5901,[72144e]|0.5807,0.5807,[72144e]|0.5382,0.5382,[72144e]|0.6227,0.6227,[72144e]|0.6043,0.6043,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8857,0.8857,[329440]|0.8283,0.8283,[329440]|0.7912,0.7912,[329440]|0.7111,0.7111,[329440]|0.6681,0.6681,[329440]|0.6334,0.6334,[329440]|0.5549,0.5549,[329440]|0.4282,0.4282,[329440]|0.3491,0.3491,[329440]|0.3311,0.3311,[329440]|0.2913,0.2913,[329440]|0.3225,0.3225,[329440]|0.3806,0.3806,[329440]|0.442,0.442,[329440]|0.4078,0.4078,[329440]|0.4078,0.4078,[329440]|0.4078,0.4078,[329440]|0.4037,0.4037,[329440]|0.3939,0.3939,[329440]|0.4203,0.4203,[329440]|0.4245,0.4245,[329440]|0.46,0.46,[329440]|0.3885,0.3885,[329440]|0.4282,0.4282,[329440]|0.4556,0.4556,[329440]|0.4149,0.4149,[329440]|0.3885,0.3885,[329440]|0.3847,0.3847,[329440]|0.4203,0.4203,[329440]|0.3263,0.3263,[329440]|0.3311,0.3311,[329440]|0.3263,0.3263,[329440]|0.3005,0.3005,[329440]|0.2432,0.2432,[329440]|0.2786,0.2786,[329440]|0.2865,0.2865,[329440]|0.3146,0.3146,[329440]|0.3578,0.3578,[329440]|0.3535,0.3535,[329440]|0.3263,0.3263,[329440]|0.2913,0.2913,[329440]|0.2558,0.2558,[329440]|0.2913,0.2913,[329440]|0.2657,0.2657,[329440]|0.1698,0.1698,[329440]|0.1958,0.1958,[329440]|0.1878,0.1878,[329440]|0.2748,0.2748,[329440]|0.2041,0.2041,[329440]|0.208,0.208,[329440]|0.1998,0.1998,[329440]|0.2333,0.2333,[329440]|0.2483,0.2483,[329440]|0.2748,0.2748,[329440]|0.2602,0.2602,[329440]|0.2602,0.2602,[329440]|0.2786,0.2786,[329440]|0.1998,0.1998,[329440]|0.2748,0.2748,[329440]|0.1844,0.1844,[329440]|0.2483,0.2483,[329440]|0.2913,0.2913,[329440]|0.3456,0.3456,[329440]|0.3184,0.3184,[329440]|0.3225,0.3225,[329440]|0.27,0.27,[329440]|0.2748,0.2748,[329440]|0.2913,0.2913,[329440]|0.3225,0.3225,[329440]|0.3491,0.3491,[329440]|0.3717,0.3717,[329440]|0.3578,0.3578,[329440]|0.3053,0.3053,[329440]|0.3005,0.3005,[329440]|0.2602,0.2602,[329440]|0.2748,0.2748,[329440]|0.1958,0.1958,[329440]|0.3005,0.3005,[329440]|0.2209,0.2209,[329440]|0.3146,0.3146,[329440]|0.1602,0.1602,[329440]|0.138,0.138,[329440]|0.1041,0.1041,[329440]|0.1349,0.1349,[329440]|0.1958,0.1958,[329440]|0.1532,0.1532,[329440]|0.2041,0.2041,[329440]|0.1878,0.1878,[329440]|0.1322,0.1322,[329440]|0.1349,0.1349,[329440]|0.124,0.124,[329440]|0.0991,0.0991,[329440]|0.0884,0.0884,[329440]|0.0858,0.0858,[329440]|0.1205,0.1205,[329440]|0.1018,0.1018,[329440]|0.138,0.138,[329440]|0.0832,0.0832,[329440]|0.1178,0.1178,[329440]|0.1178,0.1178,[329440]|0.2385,0.2385,[329440]|0.2602,0.2602,[329440]|0.2865,0.2865,[329440]|0.2963,0.2963,[329440]|0.2209,0.2209,[329440]|0.2748,0.2748,[329440]|0.2865,0.2865,[329440]|0.2963,0.2963,[329440]|0.4116,0.4116,[329440]|0.442,0.442,[329440]|0.3885,0.3885,[329440]|0.3885,0.3885,[329440]|0.4651,0.4651,[329440]|0.4749,0.4749,[329440]|0.4149,0.4149,[329440]|0.3762,0.3762,[329440]|0.3184,0.3184,[329440]|0.3668,0.3668,[329440]|0.3146,0.3146,[329440]|0.2657,0.2657,[329440]|0.2333,0.2333,[329440]|0.1667,0.1667,[329440]|0.208,0.208,[329440]|0.1998,0.1998,[329440]|0.2786,0.2786,[329440]|0.3456,0.3456,[329440]|0.2786,0.2786,[329440]|0.2602,0.2602,[329440]|0.1844,0.1844,[329440]|0.1998,0.1998,[329440]|0.2483,0.2483,[329440]|0.2531,0.2531,[329440]|0.2041,0.2041,[329440]|0.2209,0.2209,[329440]|0.2963,0.2963,[329440]|0.3578,0.3578,[329440]|0.3491,0.3491,[329440]|0.3491,0.3491,[329440]|0.3847,0.3847,[329440]|0.4781,0.4781,[329440]|0.5374,0.5374,[329440]|0.6442,0.6442,[329440]|0.6474,0.6474,[329440]|0.6944,0.6944,[329440]|0.7317,0.7317,[329440]|0.7605,0.7605,[329440]|0.8521,0.8521,[329440]|0.892,0.892,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER_CAPAN
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.2817,0.2817,[72144e]|0.1671,0.1671,[72144e]|0.1611,0.1611,[72144e]|0.2364,0.2364,[72144e]|0.2783,0.2783,[72144e]|0.2951,0.2951,[72144e]|0.3566,0.3566,[72144e]|0.3426,0.3426,[72144e]|0.3053,0.3053,[72144e]|0.3286,0.3286,[72144e]|0.346,0.346,[72144e]|0.3087,0.3087,[72144e]|0.3321,0.3321,[72144e]|0.3631,0.3631,[72144e]|0.346,0.346,[72144e]|0.3774,0.3774,[72144e]|0.4119,0.4119,[72144e]|0.3566,0.3566,[72144e]|0.384,0.384,[72144e]|0.4766,0.4766,[72144e]|0.4507,0.4507,[72144e]|0.3807,0.3807,[72144e]|0.2884,0.2884,[72144e]|0.3774,0.3774,[72144e]|0.3392,0.3392,[72144e]|0.3019,0.3019,[72144e]|0.2918,0.2918,[72144e]|0.2752,0.2752,[72144e]|0.2503,0.2503,[72144e]|0.2752,0.2752,[72144e]|0.3249,0.3249,[72144e]|0.3149,0.3149,[72144e]|0.2645,0.2645,[72144e]|0.3356,0.3356,[72144e]|0.2399,0.2399,[72144e]|0.1852,0.1852,[72144e]|0.2258,0.2258,[72144e]|0.1969,0.1969,[72144e]|0.1251,0.1251,[72144e]|0.1583,0.1583,[72144e]|0.1229,0.1229,[72144e]|0.1028,0.1028,[72144e]|0.0817,0.0817,[72144e]|0.0799,0.0799,[72144e]|0.1399,0.1399,[72144e]|0.1611,0.1611,[72144e]|0.2399,0.2399,[72144e]|0.247,0.247,[72144e]|0.2783,0.2783,[72144e]|0.2328,0.2328,[72144e]|0.2503,0.2503,[72144e]|0.1643,0.1643,[72144e]|0.1791,0.1791,[72144e]|0.1092,0.1092,[72144e]|0.1702,0.1702,[72144e]|0.1791,0.1791,[72144e]|0.2849,0.2849,[72144e]|0.2645,0.2645,[72144e]|0.2094,0.2094,[72144e]|0.1501,0.1501,[72144e]|0.1643,0.1643,[72144e]|0.1852,0.1852,[72144e]|0.247,0.247,[72144e]|0.2258,0.2258,[72144e]|0.3149,0.3149,[72144e]|0.4087,0.4087,[72144e]|0.3774,0.3774,[72144e]|0.346,0.346,[72144e]|0.3286,0.3286,[72144e]|0.3494,0.3494,[72144e]|0.2541,0.2541,[72144e]|0.3529,0.3529,[72144e]|0.247,0.247,[72144e]|0.3392,0.3392,[72144e]|0.2224,0.2224,[72144e]|0.3249,0.3249,[72144e]|0.268,0.268,[72144e]|0.2541,0.2541,[72144e]|0.2436,0.2436,[72144e]|0.1969,0.1969,[72144e]|0.2752,0.2752,[72144e]|0.3426,0.3426,[72144e]|0.3053,0.3053,[72144e]|0.2645,0.2645,[72144e]|0.2503,0.2503,[72144e]|0.2715,0.2715,[72144e]|0.1823,0.1823,[72144e]|0.1424,0.1424,[72144e]|0.1611,0.1611,[72144e]|0.1611,0.1611,[72144e]|0.1424,0.1424,[72144e]|0.0967,0.0967,[72144e]|0.1528,0.1528,[72144e]|0.1399,0.1399,[72144e]|0.2129,0.2129,[72144e]|0.2292,0.2292,[72144e]|0.3286,0.3286,[72144e]|0.3356,0.3356,[72144e]|0.2752,0.2752,[72144e]|0.2094,0.2094,[72144e]|0.2292,0.2292,[72144e]|0.346,0.346,[72144e]|0.3631,0.3631,[72144e]|0.374,0.374,[72144e]|0.4119,0.4119,[72144e]|0.4619,0.4619,[72144e]|0.4864,0.4864,[72144e]|0.4901,0.4901,[72144e]|0.4979,0.4979,[72144e]|0.4725,0.4725,[72144e]|0.4051,0.4051,[72144e]|0.4087,0.4087,[72144e]|0.3182,0.3182,[72144e]|0.3215,0.3215,[72144e]|0.2817,0.2817,[72144e]|0.1969,0.1969,[72144e]|0.2224,0.2224,[72144e]|0.2164,0.2164,[72144e]|0.2129,0.2129,[72144e]|0.2193,0.2193,[72144e]|0.2575,0.2575,[72144e]|0.3215,0.3215,[72144e]|0.2399,0.2399,[72144e]|0.2436,0.2436,[72144e]|0.2292,0.2292,[72144e]|0.2164,0.2164,[72144e]|0.268,0.268,[72144e]|0.268,0.268,[72144e]|0.2193,0.2193,[72144e]|0.2436,0.2436,[72144e]|0.2436,0.2436,[72144e]|0.247,0.247,[72144e]|0.3087,0.3087,[72144e]|0.3019,0.3019,[72144e]|0.4017,0.4017,[72144e]|0.4441,0.4441,[72144e]|0.4541,0.4541,[72144e]|0.5419,0.5419,[72144e]|0.4831,0.4831,[72144e]|0.4507,0.4507,[72144e]|0.4369,0.4369,[72144e]|0.391,0.391,[72144e]|0.4541,0.4541,[72144e]|0.4292,0.4292,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8424,0.8424,[329440]|0.8074,0.8074,[329440]|0.7644,0.7644,[329440]|0.6442,0.6442,[329440]|0.5762,0.5762,[329440]|0.5549,0.5549,[329440]|0.5253,0.5253,[329440]|0.4879,0.4879,[329440]|0.4651,0.4651,[329440]|0.3847,0.3847,[329440]|0.2748,0.2748,[329440]|0.2963,0.2963,[329440]|0.3311,0.3311,[329440]|0.2657,0.2657,[329440]|0.3311,0.3311,[329440]|0.3535,0.3535,[329440]|0.3146,0.3146,[329440]|0.3311,0.3311,[329440]|0.3578,0.3578,[329440]|0.363,0.363,[329440]|0.3578,0.3578,[329440]|0.363,0.363,[329440]|0.3225,0.3225,[329440]|0.3491,0.3491,[329440]|0.2913,0.2913,[329440]|0.2657,0.2657,[329440]|0.1878,0.1878,[329440]|0.1878,0.1878,[329440]|0.1732,0.1732,[329440]|0.1732,0.1732,[329440]|0.2292,0.2292,[329440]|0.2255,0.2255,[329440]|0.2255,0.2255,[329440]|0.282,0.282,[329440]|0.2209,0.2209,[329440]|0.1958,0.1958,[329440]|0.1844,0.1844,[329440]|0.138,0.138,[329440]|0.1088,0.1088,[329440]|0.1602,0.1602,[329440]|0.1041,0.1041,[329440]|0.0965,0.0965,[329440]|0.0813,0.0813,[329440]|0.1088,0.1088,[329440]|0.1205,0.1205,[329440]|0.0789,0.0789,[329440]|0.1117,0.1117,[329440]|0.1322,0.1322,[329440]|0.1349,0.1349,[329440]|0.1602,0.1602,[329440]|0.1805,0.1805,[329440]|0.1322,0.1322,[329440]|0.1495,0.1495,[329440]|0.0965,0.0965,[329440]|0.1495,0.1495,[329440]|0.0771,0.0771,[329440]|0.1495,0.1495,[329440]|0.1921,0.1921,[329440]|0.2209,0.2209,[329440]|0.1698,0.1698,[329440]|0.1805,0.1805,[329440]|0.1456,0.1456,[329440]|0.1495,0.1495,[329440]|0.1732,0.1732,[329440]|0.2432,0.2432,[329440]|0.2786,0.2786,[329440]|0.3053,0.3053,[329440]|0.2913,0.2913,[329440]|0.2432,0.2432,[329440]|0.2432,0.2432,[329440]|0.1958,0.1958,[329440]|0.2865,0.2865,[329440]|0.2041,0.2041,[329440]|0.3225,0.3225,[329440]|0.2385,0.2385,[329440]|0.3578,0.3578,[329440]|0.1844,0.1844,[329440]|0.1698,0.1698,[329440]|0.1495,0.1495,[329440]|0.1844,0.1844,[329440]|0.2558,0.2558,[329440]|0.1844,0.1844,[329440]|0.2483,0.2483,[329440]|0.2385,0.2385,[329440]|0.1266,0.1266,[329440]|0.1322,0.1322,[329440]|0.1205,0.1205,[329440]|0.0965,0.0965,[329440]|0.0832,0.0832,[329440]|0.0744,0.0744,[329440]|0.0813,0.0813,[329440]|0.0677,0.0677,[329440]|0.0832,0.0832,[329440]|0.0478,0.0478,[329440]|0.0813,0.0813,[329440]|0.0813,0.0813,[329440]|0.1766,0.1766,[329440]|0.1958,0.1958,[329440]|0.2209,0.2209,[329440]|0.2255,0.2255,[329440]|0.1566,0.1566,[329440]|0.208,0.208,[329440]|0.2209,0.2209,[329440]|0.2292,0.2292,[329440]|0.3668,0.3668,[329440]|0.3939,0.3939,[329440]|0.3263,0.3263,[329440]|0.3717,0.3717,[329440]|0.4513,0.4513,[329440]|0.4825,0.4825,[329440]|0.4245,0.4245,[329440]|0.3762,0.3762,[329440]|0.3399,0.3399,[329440]|0.3885,0.3885,[329440]|0.3053,0.3053,[329440]|0.2531,0.2531,[329440]|0.2385,0.2385,[329440]|0.1635,0.1635,[329440]|0.2041,0.2041,[329440]|0.208,0.208,[329440]|0.2865,0.2865,[329440]|0.3668,0.3668,[329440]|0.2865,0.2865,[329440]|0.27,0.27,[329440]|0.1805,0.1805,[329440]|0.1998,0.1998,[329440]|0.2602,0.2602,[329440]|0.2209,0.2209,[329440]|0.1766,0.1766,[329440]|0.1958,0.1958,[329440]|0.2209,0.2209,[329440]|0.2913,0.2913,[329440]|0.2913,0.2913,[329440]|0.2385,0.2385,[329440]|0.3096,0.3096,[329440]|0.4078,0.4078,[329440]|0.4749,0.4749,[329440]|0.5846,0.5846,[329440]|0.59,0.59,[329440]|0.6334,0.6334,[329440]|0.6681,0.6681,[329440]|0.6906,0.6906,[329440]|0.7869,0.7869,[329440]|0.835,0.835,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER_CAPAA
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.247,0.247,[72144e]|0.3392,0.3392,[72144e]|0.2609,0.2609,[72144e]|0.3249,0.3249,[72144e]|0.2258,0.2258,[72144e]|0.2817,0.2817,[72144e]|0.1759,0.1759,[72144e]|0.2364,0.2364,[72144e]|0.2817,0.2817,[72144e]|0.3215,0.3215,[72144e]|0.2918,0.2918,[72144e]|0.2436,0.2436,[72144e]|0.1852,0.1852,[72144e]|0.1942,0.1942,[72144e]|0.2258,0.2258,[72144e]|0.2884,0.2884,[72144e]|0.2783,0.2783,[72144e]|0.3667,0.3667,[72144e]|0.4541,0.4541,[72144e]|0.4292,0.4292,[72144e]|0.3948,0.3948,[72144e]|0.3704,0.3704,[72144e]|0.391,0.391,[72144e]|0.2918,0.2918,[72144e]|0.3948,0.3948,[72144e]|0.2951,0.2951,[72144e]|0.3872,0.3872,[72144e]|0.2575,0.2575,[72144e]|0.3599,0.3599,[72144e]|0.3019,0.3019,[72144e]|0.2849,0.2849,[72144e]|0.2645,0.2645,[72144e]|0.2034,0.2034,[72144e]|0.2752,0.2752,[72144e]|0.3356,0.3356,[72144e]|0.2918,0.2918,[72144e]|0.247,0.247,[72144e]|0.2364,0.2364,[72144e]|0.247,0.247,[72144e]|0.1643,0.1643,[72144e]|0.1275,0.1275,[72144e]|0.1449,0.1449,[72144e]|0.1449,0.1449,[72144e]|0.1323,0.1323,[72144e]|0.0888,0.0888,[72144e]|0.1449,0.1449,[72144e]|0.1275,0.1275,[72144e]|0.1881,0.1881,[72144e]|0.2064,0.2064,[72144e]|0.3149,0.3149,[72144e]|0.3286,0.3286,[72144e]|0.268,0.268,[72144e]|0.2034,0.2034,[72144e]|0.2224,0.2224,[72144e]|0.3494,0.3494,[72144e]|0.3704,0.3704,[72144e]|0.3807,0.3807,[72144e]|0.422,0.422,[72144e]|0.4725,0.4725,[72144e]|0.5017,0.5017,[72144e]|0.5176,0.5176,[72144e]|0.5176,0.5176,[72144e]|0.4901,0.4901,[72144e]|0.422,0.422,[72144e]|0.422,0.422,[72144e]|0.3356,0.3356,[72144e]|0.3356,0.3356,[72144e]|0.2951,0.2951,[72144e]|0.2129,0.2129,[72144e]|0.2436,0.2436,[72144e]|0.2328,0.2328,[72144e]|0.2328,0.2328,[72144e]|0.247,0.247,[72144e]|0.2849,0.2849,[72144e]|0.3494,0.3494,[72144e]|0.2609,0.2609,[72144e]|0.268,0.268,[72144e]|0.2541,0.2541,[72144e]|0.2328,0.2328,[72144e]|0.2849,0.2849,[72144e]|0.2884,0.2884,[72144e]|0.2364,0.2364,[72144e]|0.2609,0.2609,[72144e]|0.2645,0.2645,[72144e]|0.2645,0.2645,[72144e]|0.3286,0.3286,[72144e]|0.3215,0.3215,[72144e]|0.4186,0.4186,[72144e]|0.4582,0.4582,[72144e]|0.4725,0.4725,[72144e]|0.5533,0.5533,[72144e]|0.494,0.494,[72144e]|0.4652,0.4652,[72144e]|0.4476,0.4476,[72144e]|0.3983,0.3983,[72144e]|0.4619,0.4619,[72144e]|0.433,0.433,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.7724,0.7724,[329440]|0.7501,0.7501,[329440]|0.7111,0.7111,[329440]|0.6984,0.6984,[329440]|0.59,0.59,[329440]|0.5711,0.5711,[329440]|0.442,0.442,[329440]|0.4203,0.4203,[329440]|0.2786,0.2786,[329440]|0.27,0.27,[329440]|0.2385,0.2385,[329440]|0.3005,0.3005,[329440]|0.2385,0.2385,[329440]|0.2483,0.2483,[329440]|0.2167,0.2167,[329440]|0.2255,0.2255,[329440]|0.2657,0.2657,[329440]|0.3456,0.3456,[329440]|0.3717,0.3717,[329440]|0.3992,0.3992,[329440]|0.3847,0.3847,[329440]|0.3311,0.3311,[329440]|0.3225,0.3225,[329440]|0.27,0.27,[329440]|0.3668,0.3668,[329440]|0.2786,0.2786,[329440]|0.4037,0.4037,[329440]|0.3096,0.3096,[329440]|0.4116,0.4116,[329440]|0.2255,0.2255,[329440]|0.2041,0.2041,[329440]|0.1602,0.1602,[329440]|0.1998,0.1998,[329440]|0.2657,0.2657,[329440]|0.1921,0.1921,[329440]|0.2558,0.2558,[329440]|0.2483,0.2483,[329440]|0.1322,0.1322,[329440]|0.138,0.138,[329440]|0.124,0.124,[329440]|0.0991,0.0991,[329440]|0.0884,0.0884,[329440]|0.0771,0.0771,[329440]|0.0858,0.0858,[329440]|0.0701,0.0701,[329440]|0.0858,0.0858,[329440]|0.049,0.049,[329440]|0.0813,0.0813,[329440]|0.0813,0.0813,[329440]|0.1766,0.1766,[329440]|0.1998,0.1998,[329440]|0.2255,0.2255,[329440]|0.2255,0.2255,[329440]|0.1566,0.1566,[329440]|0.208,0.208,[329440]|0.2209,0.2209,[329440]|0.2292,0.2292,[329440]|0.3668,0.3668,[329440]|0.3939,0.3939,[329440]|0.3263,0.3263,[329440]|0.3717,0.3717,[329440]|0.4513,0.4513,[329440]|0.4825,0.4825,[329440]|0.4245,0.4245,[329440]|0.3762,0.3762,[329440]|0.3399,0.3399,[329440]|0.3885,0.3885,[329440]|0.3053,0.3053,[329440]|0.2531,0.2531,[329440]|0.2385,0.2385,[329440]|0.1635,0.1635,[329440]|0.2041,0.2041,[329440]|0.208,0.208,[329440]|0.2865,0.2865,[329440]|0.3668,0.3668,[329440]|0.2865,0.2865,[329440]|0.27,0.27,[329440]|0.1805,0.1805,[329440]|0.1998,0.1998,[329440]|0.2602,0.2602,[329440]|0.2209,0.2209,[329440]|0.1766,0.1766,[329440]|0.1958,0.1958,[329440]|0.2209,0.2209,[329440]|0.2913,0.2913,[329440]|0.2913,0.2913,[329440]|0.2385,0.2385,[329440]|0.3096,0.3096,[329440]|0.4078,0.4078,[329440]|0.4749,0.4749,[329440]|0.5846,0.5846,[329440]|0.59,0.59,[329440]|0.6334,0.6334,[329440]|0.6681,0.6681,[329440]|0.6906,0.6906,[329440]|0.7869,0.7869,[329440]|0.835,0.835,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   Q93XJ9_SOLTU
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.3182,0.3182,[72144e]|0.2002,0.2002,[72144e]|0.1449,0.1449,[72144e]|0.2164,0.2164,[72144e]|0.2503,0.2503,[72144e]|0.268,0.268,[72144e]|0.3286,0.3286,[72144e]|0.2951,0.2951,[72144e]|0.2609,0.2609,[72144e]|0.2849,0.2849,[72144e]|0.3053,0.3053,[72144e]|0.2609,0.2609,[72144e]|0.2817,0.2817,[72144e]|0.2541,0.2541,[72144e]|0.2575,0.2575,[72144e]|0.2575,0.2575,[72144e]|0.2645,0.2645,[72144e]|0.2064,0.2064,[72144e]|0.2292,0.2292,[72144e]|0.3149,0.3149,[72144e]|0.2884,0.2884,[72144e]|0.2164,0.2164,[72144e]|0.1399,0.1399,[72144e]|0.2129,0.2129,[72144e]|0.2094,0.2094,[72144e]|0.1731,0.1731,[72144e]|0.1702,0.1702,[72144e]|0.1759,0.1759,[72144e]|0.1501,0.1501,[72144e]|0.2002,0.2002,[72144e]|0.247,0.247,[72144e]|0.2436,0.2436,[72144e]|0.1823,0.1823,[72144e]|0.2503,0.2503,[72144e]|0.1583,0.1583,[72144e]|0.1611,0.1611,[72144e]|0.2002,0.2002,[72144e]|0.2002,0.2002,[72144e]|0.1298,0.1298,[72144e]|0.1643,0.1643,[72144e]|0.1275,0.1275,[72144e]|0.107,0.107,[72144e]|0.087,0.087,[72144e]|0.087,0.087,[72144e]|0.1501,0.1501,[72144e]|0.1759,0.1759,[72144e]|0.2503,0.2503,[72144e]|0.2609,0.2609,[72144e]|0.2918,0.2918,[72144e]|0.2258,0.2258,[72144e]|0.2436,0.2436,[72144e]|0.1554,0.1554,[72144e]|0.1731,0.1731,[72144e]|0.0948,0.0948,[72144e]|0.1611,0.1611,[72144e]|0.1702,0.1702,[72144e]|0.2849,0.2849,[72144e]|0.2609,0.2609,[72144e]|0.2094,0.2094,[72144e]|0.1554,0.1554,[72144e]|0.1671,0.1671,[72144e]|0.1852,0.1852,[72144e]|0.2436,0.2436,[72144e]|0.2258,0.2258,[72144e]|0.3117,0.3117,[72144e]|0.3983,0.3983,[72144e]|0.4186,0.4186,[72144e]|0.3872,0.3872,[72144e]|0.374,0.374,[72144e]|0.3872,0.3872,[72144e]|0.2918,0.2918,[72144e]|0.391,0.391,[72144e]|0.2918,0.2918,[72144e]|0.384,0.384,[72144e]|0.2541,0.2541,[72144e]|0.3631,0.3631,[72144e]|0.3053,0.3053,[72144e]|0.2918,0.2918,[72144e]|0.2783,0.2783,[72144e]|0.2193,0.2193,[72144e]|0.2951,0.2951,[72144e]|0.3599,0.3599,[72144e]|0.3149,0.3149,[72144e]|0.2752,0.2752,[72144e]|0.2645,0.2645,[72144e]|0.2817,0.2817,[72144e]|0.2094,0.2094,[72144e]|0.1942,0.1942,[72144e]|0.1528,0.1528,[72144e]|0.1528,0.1528,[72144e]|0.1554,0.1554,[72144e]|0.1092,0.1092,[72144e]|0.1671,0.1671,[72144e]|0.1501,0.1501,[72144e]|0.2164,0.2164,[72144e]|0.2292,0.2292,[72144e]|0.3392,0.3392,[72144e]|0.3249,0.3249,[72144e]|0.2645,0.2645,[72144e]|0.2034,0.2034,[72144e]|0.2164,0.2164,[72144e]|0.3356,0.3356,[72144e]|0.3494,0.3494,[72144e]|0.3599,0.3599,[72144e]|0.494,0.494,[72144e]|0.494,0.494,[72144e]|0.4652,0.4652,[72144e]|0.4766,0.4766,[72144e]|0.4369,0.4369,[72144e]|0.3872,0.3872,[72144e]|0.3494,0.3494,[72144e]|0.3529,0.3529,[72144e]|0.2292,0.2292,[72144e]|0.2328,0.2328,[72144e]|0.2002,0.2002,[72144e]|0.1349,0.1349,[72144e]|0.1611,0.1611,[72144e]|0.1399,0.1399,[72144e]|0.0676,0.0676,[72144e]|0.078,0.078,[72144e]|0.1007,0.1007,[72144e]|0.1424,0.1424,[72144e]|0.0948,0.0948,[72144e]|0.0985,0.0985,[72144e]|0.0929,0.0929,[72144e]|0.0851,0.0851,[72144e]|0.0676,0.0676,[72144e]|0.0909,0.0909,[72144e]|0.1229,0.1229,[72144e]|0.1399,0.1399,[72144e]|0.1583,0.1583,[72144e]|0.1969,0.1969,[72144e]|0.2364,0.2364,[72144e]|0.2292,0.2292,[72144e]|0.3321,0.3321,[72144e]|0.3667,0.3667,[72144e]|0.3774,0.3774,[72144e]|0.4441,0.4441,[72144e]|0.3872,0.3872,[72144e]|0.384,0.384,[72144e]|0.5577,0.5577,[72144e]|0.5176,0.5176,[72144e]|0.6043,0.6043,[72144e]|0.5854,0.5854,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8311,0.8311,[329440]|0.7912,0.7912,[329440]|0.7501,0.7501,[329440]|0.6255,0.6255,[329440]|0.5008,0.5008,[329440]|0.4825,0.4825,[329440]|0.4513,0.4513,[329440]|0.4078,0.4078,[329440]|0.3885,0.3885,[329440]|0.2786,0.2786,[329440]|0.1732,0.1732,[329440]|0.1921,0.1921,[329440]|0.2292,0.2292,[329440]|0.1635,0.1635,[329440]|0.2385,0.2385,[329440]|0.2041,0.2041,[329440]|0.138,0.138,[329440]|0.138,0.138,[329440]|0.1566,0.1566,[329440]|0.1698,0.1698,[329440]|0.1698,0.1698,[329440]|0.1698,0.1698,[329440]|0.138,0.138,[329440]|0.1566,0.1566,[329440]|0.1456,0.1456,[329440]|0.1266,0.1266,[329440]|0.0744,0.0744,[329440]|0.0744,0.0744,[329440]|0.0621,0.0621,[329440]|0.0965,0.0965,[329440]|0.1416,0.1416,[329440]|0.138,0.138,[329440]|0.1349,0.1349,[329440]|0.2041,0.2041,[329440]|0.138,0.138,[329440]|0.1667,0.1667,[329440]|0.1635,0.1635,[329440]|0.138,0.138,[329440]|0.1117,0.1117,[329440]|0.1635,0.1635,[329440]|0.1088,0.1088,[329440]|0.1041,0.1041,[329440]|0.0884,0.0884,[329440]|0.1266,0.1266,[329440]|0.1416,0.1416,[329440]|0.1018,0.1018,[329440]|0.1495,0.1495,[329440]|0.1732,0.1732,[329440]|0.1805,0.1805,[329440]|0.1805,0.1805,[329440]|0.2041,0.2041,[329440]|0.1566,0.1566,[329440]|0.1732,0.1732,[329440]|0.1117,0.1117,[329440]|0.1766,0.1766,[329440]|0.0991,0.0991,[329440]|0.1805,0.1805,[329440]|0.2292,0.2292,[329440]|0.2865,0.2865,[329440]|0.2292,0.2292,[329440]|0.2432,0.2432,[329440]|0.2041,0.2041,[329440]|0.2122,0.2122,[329440]|0.2432,0.2432,[329440]|0.3184,0.3184,[329440]|0.3535,0.3535,[329440]|0.3762,0.3762,[329440]|0.363,0.363,[329440]|0.3762,0.3762,[329440]|0.3717,0.3717,[329440]|0.3225,0.3225,[329440]|0.4078,0.4078,[329440]|0.3359,0.3359,[329440]|0.4458,0.4458,[329440]|0.3668,0.3668,[329440]|0.4879,0.4879,[329440]|0.3096,0.3096,[329440]|0.2865,0.2865,[329440]|0.2385,0.2385,[329440]|0.2865,0.2865,[329440]|0.3578,0.3578,[329440]|0.2865,0.2865,[329440]|0.3491,0.3491,[329440]|0.3359,0.3359,[329440]|0.208,0.208,[329440]|0.2167,0.2167,[329440]|0.1958,0.1958,[329440]|0.1635,0.1635,[329440]|0.1117,0.1117,[329440]|0.1088,0.1088,[329440]|0.1041,0.1041,[329440]|0.0858,0.0858,[329440]|0.1117,0.1117,[329440]|0.0643,0.0643,[329440]|0.1041,0.1041,[329440]|0.1041,0.1041,[329440]|0.2122,0.2122,[329440]|0.2292,0.2292,[329440]|0.2483,0.2483,[329440]|0.2333,0.2333,[329440]|0.1602,0.1602,[329440]|0.208,0.208,[329440]|0.2167,0.2167,[329440]|0.2209,0.2209,[329440]|0.3491,0.3491,[329440]|0.3717,0.3717,[329440]|0.3885,0.3885,[329440]|0.3806,0.3806,[329440]|0.3992,0.3992,[329440]|0.4116,0.4116,[329440]|0.3668,0.3668,[329440]|0.3263,0.3263,[329440]|0.2748,0.2748,[329440]|0.3225,0.3225,[329440]|0.2122,0.2122,[329440]|0.1635,0.1635,[329440]|0.1495,0.1495,[329440]|0.0991,0.0991,[329440]|0.1322,0.1322,[329440]|0.1292,0.1292,[329440]|0.1117,0.1117,[329440]|0.1667,0.1667,[329440]|0.1117,0.1117,[329440]|0.1018,0.1018,[329440]|0.0607,0.0607,[329440]|0.0723,0.0723,[329440]|0.0587,0.0587,[329440]|0.0643,0.0643,[329440]|0.0643,0.0643,[329440]|0.0771,0.0771,[329440]|0.1292,0.1292,[329440]|0.1766,0.1766,[329440]|0.1667,0.1667,[329440]|0.1667,0.1667,[329440]|0.2255,0.2255,[329440]|0.3225,0.3225,[329440]|0.3885,0.3885,[329440]|0.5008,0.5008,[329440]|0.5008,0.5008,[329440]|0.5667,0.5667,[329440]|0.7079,0.7079,[329440]|0.7342,0.7342,[329440]|0.835,0.835,[329440]|0.8746,0.8746,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+SEQUENCE_REF   FER1_SOLLC
+LINE_GRAPH     IUPredWS (Long) <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.3286,0.3286,[72144e]|0.2094,0.2094,[72144e]|0.1528,0.1528,[72144e]|0.2258,0.2258,[72144e]|0.2609,0.2609,[72144e]|0.2752,0.2752,[72144e]|0.3356,0.3356,[72144e]|0.3249,0.3249,[72144e]|0.2918,0.2918,[72144e]|0.3149,0.3149,[72144e]|0.3321,0.3321,[72144e]|0.2884,0.2884,[72144e]|0.3087,0.3087,[72144e]|0.2849,0.2849,[72144e]|0.2849,0.2849,[72144e]|0.2849,0.2849,[72144e]|0.2951,0.2951,[72144e]|0.2364,0.2364,[72144e]|0.2575,0.2575,[72144e]|0.3426,0.3426,[72144e]|0.3149,0.3149,[72144e]|0.247,0.247,[72144e]|0.1643,0.1643,[72144e]|0.2436,0.2436,[72144e]|0.2399,0.2399,[72144e]|0.2034,0.2034,[72144e]|0.2002,0.2002,[72144e]|0.2064,0.2064,[72144e]|0.1823,0.1823,[72144e]|0.2094,0.2094,[72144e]|0.2609,0.2609,[72144e]|0.2575,0.2575,[72144e]|0.1942,0.1942,[72144e]|0.2645,0.2645,[72144e]|0.1759,0.1759,[72144e]|0.1791,0.1791,[72144e]|0.2193,0.2193,[72144e]|0.2193,0.2193,[72144e]|0.1476,0.1476,[72144e]|0.1852,0.1852,[72144e]|0.1424,0.1424,[72144e]|0.1206,0.1206,[72144e]|0.0985,0.0985,[72144e]|0.0985,0.0985,[72144e]|0.1671,0.1671,[72144e]|0.1942,0.1942,[72144e]|0.2817,0.2817,[72144e]|0.2918,0.2918,[72144e]|0.3215,0.3215,[72144e]|0.2575,0.2575,[72144e]|0.2752,0.2752,[72144e]|0.1823,0.1823,[72144e]|0.2034,0.2034,[72144e]|0.1206,0.1206,[72144e]|0.1969,0.1969,[72144e]|0.2034,0.2034,[72144e]|0.3182,0.3182,[72144e]|0.2951,0.2951,[72144e]|0.2436,0.2436,[72144e]|0.1852,0.1852,[72144e]|0.1969,0.1969,[72144e]|0.2193,0.2193,[72144e]|0.2817,0.2817,[72144e]|0.2645,0.2645,[72144e]|0.3494,0.3494,[72144e]|0.4369,0.4369,[72144e]|0.4541,0.4541,[72144e]|0.422,0.422,[72144e]|0.4017,0.4017,[72144e]|0.4186,0.4186,[72144e]|0.3215,0.3215,[72144e]|0.422,0.422,[72144e]|0.3215,0.3215,[72144e]|0.4119,0.4119,[72144e]|0.2884,0.2884,[72144e]|0.391,0.391,[72144e]|0.3321,0.3321,[72144e]|0.3182,0.3182,[72144e]|0.3053,0.3053,[72144e]|0.2541,0.2541,[72144e]|0.3286,0.3286,[72144e]|0.391,0.391,[72144e]|0.3529,0.3529,[72144e]|0.3117,0.3117,[72144e]|0.3019,0.3019,[72144e]|0.3182,0.3182,[72144e]|0.247,0.247,[72144e]|0.2292,0.2292,[72144e]|0.1852,0.1852,[72144e]|0.1852,0.1852,[72144e]|0.1823,0.1823,[72144e]|0.1298,0.1298,[72144e]|0.1942,0.1942,[72144e]|0.1759,0.1759,[72144e]|0.2436,0.2436,[72144e]|0.2609,0.2609,[72144e]|0.3631,0.3631,[72144e]|0.3667,0.3667,[72144e]|0.3087,0.3087,[72144e]|0.247,0.247,[72144e]|0.2609,0.2609,[72144e]|0.384,0.384,[72144e]|0.3983,0.3983,[72144e]|0.4087,0.4087,[72144e]|0.5419,0.5419,[72144e]|0.5419,0.5419,[72144e]|0.5139,0.5139,[72144e]|0.5211,0.5211,[72144e]|0.4831,0.4831,[72144e]|0.4292,0.4292,[72144e]|0.3948,0.3948,[72144e]|0.3983,0.3983,[72144e]|0.2884,0.2884,[72144e]|0.2884,0.2884,[72144e]|0.2541,0.2541,[72144e]|0.1791,0.1791,[72144e]|0.2094,0.2094,[72144e]|0.1823,0.1823,[72144e]|0.1823,0.1823,[72144e]|0.1881,0.1881,[72144e]|0.2224,0.2224,[72144e]|0.2884,0.2884,[72144e]|0.2164,0.2164,[72144e]|0.2164,0.2164,[72144e]|0.2064,0.2064,[72144e]|0.1942,0.1942,[72144e]|0.1643,0.1643,[72144e]|0.2064,0.2064,[72144e]|0.2541,0.2541,[72144e]|0.2783,0.2783,[72144e]|0.3019,0.3019,[72144e]|0.3494,0.3494,[72144e]|0.391,0.391,[72144e]|0.3807,0.3807,[72144e]|0.4864,0.4864,[72144e]|0.5342,0.5342,[72144e]|0.5533,0.5533,[72144e]|0.6576,0.6576,[72144e]|0.5901,0.5901,[72144e]|0.6043,0.6043,[72144e]|0.5951,0.5951,[72144e]|0.5493,0.5493,[72144e]|0.6427,0.6427,[72144e]|0.6227,0.6227,[72144e]|
+GRAPHLINE      IUPredWS (Long) 0.5     Above 0.5 indicates disorder    ff0000
+LINE_GRAPH     IUPredWS (Short)        <html>Protein Disorder with IUPredWS - raw scores<br/>Above 0.5 indicates disorder</html>       0.8391,0.8391,[329440]|0.8001,0.8001,[329440]|0.7573,0.7573,[329440]|0.6334,0.6334,[329440]|0.5173,0.5173,[329440]|0.5008,0.5008,[329440]|0.4703,0.4703,[329440]|0.4245,0.4245,[329440]|0.4116,0.4116,[329440]|0.3263,0.3263,[329440]|0.2167,0.2167,[329440]|0.2385,0.2385,[329440]|0.2786,0.2786,[329440]|0.2041,0.2041,[329440]|0.2865,0.2865,[329440]|0.2531,0.2531,[329440]|0.1805,0.1805,[329440]|0.1766,0.1766,[329440]|0.1958,0.1958,[329440]|0.2122,0.2122,[329440]|0.208,0.208,[329440]|0.2122,0.2122,[329440]|0.1766,0.1766,[329440]|0.1921,0.1921,[329440]|0.1844,0.1844,[329440]|0.1602,0.1602,[329440]|0.0991,0.0991,[329440]|0.1018,0.1018,[329440]|0.0858,0.0858,[329440]|0.1041,0.1041,[329440]|0.1566,0.1566,[329440]|0.1495,0.1495,[329440]|0.1495,0.1495,[329440]|0.2167,0.2167,[329440]|0.1495,0.1495,[329440]|0.1766,0.1766,[329440]|0.1732,0.1732,[329440]|0.1456,0.1456,[329440]|0.1205,0.1205,[329440]|0.1732,0.1732,[329440]|0.115,0.115,[329440]|0.1088,0.1088,[329440]|0.0935,0.0935,[329440]|0.1292,0.1292,[329440]|0.1456,0.1456,[329440]|0.1018,0.1018,[329440]|0.1532,0.1532,[329440]|0.1732,0.1732,[329440]|0.1878,0.1878,[329440]|0.1878,0.1878,[329440]|0.2122,0.2122,[329440]|0.1602,0.1602,[329440]|0.1766,0.1766,[329440]|0.1178,0.1178,[329440]|0.1844,0.1844,[329440]|0.1018,0.1018,[329440]|0.1844,0.1844,[329440]|0.2333,0.2333,[329440]|0.2913,0.2913,[329440]|0.2333,0.2333,[329440]|0.2483,0.2483,[329440]|0.208,0.208,[329440]|0.2167,0.2167,[329440]|0.2531,0.2531,[329440]|0.3263,0.3263,[329440]|0.3578,0.3578,[329440]|0.3806,0.3806,[329440]|0.3668,0.3668,[329440]|0.3762,0.3762,[329440]|0.3717,0.3717,[329440]|0.3225,0.3225,[329440]|0.4116,0.4116,[329440]|0.3399,0.3399,[329440]|0.4513,0.4513,[329440]|0.3717,0.3717,[329440]|0.4879,0.4879,[329440]|0.3146,0.3146,[329440]|0.2865,0.2865,[329440]|0.2385,0.2385,[329440]|0.2865,0.2865,[329440]|0.363,0.363,[329440]|0.2913,0.2913,[329440]|0.3535,0.3535,[329440]|0.3359,0.3359,[329440]|0.2122,0.2122,[329440]|0.2209,0.2209,[329440]|0.1998,0.1998,[329440]|0.1667,0.1667,[329440]|0.115,0.115,[329440]|0.115,0.115,[329440]|0.106,0.106,[329440]|0.0884,0.0884,[329440]|0.1205,0.1205,[329440]|0.0723,0.0723,[329440]|0.115,0.115,[329440]|0.115,0.115,[329440]|0.2292,0.2292,[329440]|0.2558,0.2558,[329440]|0.2786,0.2786,[329440]|0.2786,0.2786,[329440]|0.1958,0.1958,[329440]|0.2558,0.2558,[329440]|0.27,0.27,[329440]|0.2865,0.2865,[329440]|0.4149,0.4149,[329440]|0.442,0.442,[329440]|0.4651,0.4651,[329440]|0.46,0.46,[329440]|0.4781,0.4781,[329440]|0.4879,0.4879,[329440]|0.4513,0.4513,[329440]|0.4078,0.4078,[329440]|0.3491,0.3491,[329440]|0.3992,0.3992,[329440]|0.3146,0.3146,[329440]|0.2602,0.2602,[329440]|0.2385,0.2385,[329440]|0.1698,0.1698,[329440]|0.2167,0.2167,[329440]|0.1921,0.1921,[329440]|0.2748,0.2748,[329440]|0.3456,0.3456,[329440]|0.27,0.27,[329440]|0.2432,0.2432,[329440]|0.1667,0.1667,[329440]|0.1844,0.1844,[329440]|0.1635,0.1635,[329440]|0.1805,0.1805,[329440]|0.1844,0.1844,[329440]|0.2041,0.2041,[329440]|0.2913,0.2913,[329440]|0.3535,0.3535,[329440]|0.3399,0.3399,[329440]|0.3399,0.3399,[329440]|0.3806,0.3806,[329440]|0.4781,0.4781,[329440]|0.5374,0.5374,[329440]|0.6442,0.6442,[329440]|0.6442,0.6442,[329440]|0.7111,0.7111,[329440]|0.7458,0.7458,[329440]|0.7724,0.7724,[329440]|0.865,0.865,[329440]|0.9009,0.9009,[329440]|
+GRAPHLINE      IUPredWS (Short)        0.5     Above 0.5 indicates disorder    ff0000
+
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COLOUR IUPredWS (Long) 72144e
+COLOUR IUPredWS (Short)        329440
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   Q93XJ9_SOLTU
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER_CAPAA
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER_CAPAN
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_MESCR
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_SPIOL
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_PEA
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   Q7XA98_TRIPR
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   O80429_MAIZE
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_MAIZE
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER3_RAPSA
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER_BRANA
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_ARATH
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   Q93Z60_ARATH
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER2_ARATH
+COMBINE        IUPredWS (Long) IUPredWS (Short)
+
+SEQUENCE_REF   FER1_SOLLC
diff --git a/examples/unfolded_RF00031.aln b/examples/unfolded_RF00031.aln
new file mode 100644 (file)
index 0000000..69a7850
--- /dev/null
@@ -0,0 +1,126 @@
+CLUSTAL
+
+B.taurus.1/1-64       C-UUGCGUU--AAUGAGAACAGAAACG-UAAA--CUAUAA-CCUAG-G---------GGU
+D.melanogaster.3/1-68 G-UGGCGCU--UAUGACGCAGUUGUCU-UAAA-CUCGAAC--UCGA-GC--------GGG
+D.melanogaster.2/1-63 C-AUUCAACU-UAUGAGGAUUAUUUCU-UAAA-GGCCUCU---GGC--U-------CGGA
+D.melanogaster.1/1-65 G-AGCC-CU---AUGAUCGAUGAUUGG-CAAA-UCCUCUC--GAGG--A-------ACCG
+R.norvegicus.7/1-66   C-CGGCACU--CAUGACGGUCUGCCUG-AAAA-CCAGCCC--GCUG-GU--------GGG
+R.norvegicus.6/1-67   G-CCGCUUC---AUGACAGGAAGGACU-GAAA-UGUCUCA-AAGAC--C-----UGUGGU
+R.norvegicus.5/1-62   G-UUUUUCC---AUGACGGUGUUUCCUCUAAA--UUUAC----AUG-----------GAG
+R.norvegicus.4/1-61   G-UCAGAUG---AUGACGGCCUGUGCA-GAAA-CCCCCAC-GUGGG--C--------UGC
+R.norvegicus.3/1-67   U-UUGCAUU--AAUGAGGAUUACACAG-AAAA-CCUUUGU--UAAGGGU--------UUG
+R.norvegicus.2/1-64   G-UUACAUU--GAUGAGAACAGAAACA-UAAA--CUAUGA-CCUAG-G---------GGU
+R.norvegicus.1/1-61   A-UAUUUGUU-UAUGAUGGUCACAGUG-UAAA--GUUCA----CAC-----------AGC
+O.aries.1/1-68        G-ACGCUUC---AUGACAGGAAGGACU-GAAA-UGUCUCU-UGGAC-GC------CUGGU
+M.musculus.9/1-66     C-CGGCACU--CAUGAAGGUCUGCUUG-AAAA-CCAGCCU--GCUG-GU--------GGG
+M.musculus.8/1-67     U-UUGCAUU--AAUGAGGAUUACACAG-AAAA-CCUUUGU--UAAG-GA-------CUUG
+O.niloticus.3/1-65    G-UGUCUCU---GUGAAGUUCGGUUUU-UAAA-AGGGUCA---UCC--A-------GAAA
+M.musculus.7/1-64     G-UGUCUCU---AUGAAGGAGGGGCCC-GAAG-CCCUUGU---GGG--C--------GGG
+O.niloticus.2/1-61    U-GUUUAUU--AAUGACGGCUACAGAU-UAAA--CCUUU----AGC-----------CUC
+M.musculus.6/1-61     G-UCAGAUG---AUGAUGGCCUGGGCA-GAAA-CCCCAUG--UGGG--C--------CGC
+O.niloticus.1/1-59    G-UUUCUCA---GUGAAGGCUACAGAU-UAAA--CCUCU----GGC-----------CUC
+M.musculus.5/1-66     G-CCGCUUC---AUGACAGGAAGGACU-GAAA-UGUCUUA---GAC--C-----UGUGGU
+M.musculus.4/1-65     G-UGUGCGA---AUGAUAACUACUGAC-GAAA-GAGCUGU-CUGCU--C-------AGUC
+M.musculus.3/1-64     G-GUUCUUC--CAUGAUGGUGUUUCCUCUAAA--UUUGC----ACG-----------GAG
+M.musculus.2/1-64     G-UUACAUU--AAUGAGAACAGAAACA-UAAA--CUAUGA-CCUAG-G---------GGU
+M.musculus.1/1-64     G-UCACCGA---AUGAUCUGCUCUGGU-CAAA-UCCUUCU---AUG--C------CAGCC
+C.elegans.1/1-64      G-AGGCAGCUUUGUGACGACCUUUGGC-UAAA-CUCCAUC--GUGA-GC--------GCC
+H.sapiens.15/1-63     U-UUUCAUC--UAUGAGGGUGUUUCCUCUAAA--CCUACG---AGG-----------GAG
+H.sapiens.14/1-62     C-ACUGCUG---AUGACGAACUAUCUC-UAAC-UGGUCUU--GACC--A-------CGAG
+H.sapiens.13/1-64     G-UCACUGC---AUGAUCCGCUCUGGU-CAAA-CCCUUCC---AGG--C------CAGCC
+H.sapiens.12/1-67     C-UCUGUUA---AUGACGUCUCUCCCUCUAAA-CCCCAUU-AAGGA--C--------UGG
+D.rerio.1/1-66        A-UGUGGUCUUUAUGAAGGCAGGUGCA-GAAA-CUAUGCA---CUA-GU--------GGU
+H.sapiens.11/1-63     G-CCGGAUG---AUGACGACCUGGGUG-GAAA-CCUACCC-UGUGG--G--------CAC
+H.sapiens.10/1-62     C-CGGCACU--CAUGACGGCCUGCCUG-CAAA--CCUGC----UGG--U--------GGG
+S.mansoni.1/1-67      C-UCGCUAU---AUGACGAUGGCAAUC-UCAA--AUGUU----CAU--U--------GGU
+S.scrofa.4/1-64       C-UGGCACC--CAUGACAGUCUGCCUA-AAAA-CCAGCC----CUG-GU--------GGG
+S.scrofa.3/1-63       A-UUUUAUC--CAUGAAAGUGUUUCCUCUAAA--CCUAU----GUG-----------GAG
+S.scrofa.2/1-65       C-UGGCACC--CAUGACAGUCUGCCUA-AAAA-CCAGCCC---CUG-GU--------GGG
+S.scrofa.1/1-68       G-ACGCUUC---AUGACAGGAAGGACU-GAAA-UGUCUUG-UGGAC-GC------CUGGU
+H.sapiens.9/1-58      U-AUUUGUU--UAUGAUGGCCACAGCC-UAAA--GUACA----CAC-----------GGC
+H.sapiens.8/1-67      U-UUGCUUU--AAUGAGAAUAGAAACG-UAAA--CUAUGA-CCUAG-G---------GGU
+X.laevis.1/1-67       G-UGUUUGCA-AAUGACGACCGAUUUU-GAAA-UGGUCUCACGGCC--A-------AAAA
+H.sapiens.7/1-70      U-GGCGUCUU-CAUGAGGGAGGGGCCC--AAA-GCCCUUG--UGGG--C--------GGA
+H.sapiens.6/1-66      G-UGUGCGG---AUGAUAACUACUGAC-GAAAGAGUCAUC---GAC--C-----UCAGUU
+H.sapiens.5/1-57      U-UCACAGA---AUGAUGGCACCUUCC-UAA---ACCCU----CAU-----------GGG
+H.sapiens.4/1-71      G-ACUGACAU-UAUGAAGGCCUGUACU-GAAG-ACAGCAA--GCUG--U-------UAGU
+H.sapiens.3/1-68      G-ACGCUUC---AUGAUAGGAAGGACU-GAAA-AGUCUUG-UGGAC--A-----CCUGGU
+H.sapiens.2/1-65      G-UGUGCGG---AUGAUAACUACUGAC-GAAA-GAGUCAU-CGACU--C-------AGUU
+H.sapiens.1/1-63      G-CCAGAUG---AUGACGACCUGGGUG-GAAA-CCUACCC-UGUGG--G--------CAC
+M.musculus.14/1-67    C-UCUGAUA---AUGAUGUCUCUCCCU-CUAA-CUCCCAGUAAGGA--C--------UGG
+M.musculus.13/1-60    C-AUGCGUC--CAUGAAGUCACUGGCC-UCAA-GCCCAA----GUG-GU--------GGG
+M.musculus.12/1-65    C-UCAGCAG--GAUGAUGAGAAGGGCU-GAAA-UGCUGCC--AAAC--C-------AGGU
+M.musculus.11/1-63    U-AUUUGUG--UAUGAUGGUCACAGUG-UAAA--GUUCC----CAC-----------AGC
+M.musculus.10/1-66    C-CGGCACU--CAUGAAGGUCUGCCUG-AAAA-CCAGCCU--GCUG-GU--------GGG
+B.taurus.7/1-61       U-UUUGCCC---AUGAAGGUGUUCCCUCUAAA--CCUAC----GUG-----------GAG
+B.taurus.6/1-67       G-AUGCGUC--CAUGAAGUCACCAGCC-CCAA-GCCCCUC---GUG-GU--------GGG
+B.taurus.5/1-61       G-CCAGAUG---AUGAGGACCUGUGCG-GAAA-CCCCCCG--CGGG--C--------UGC
+B.taurus.4/1-64       ACUUGCGUU--AAUGAGAACAGAAACG-UAAA--CUAUAA-CCUAG-G---------GGU
+G.gallus.3/1-73       U-AUUUCUU--UGUGAUGACCGAUUUU-GAAA-UGGGUUU---CUC--UAAUGCCAGGAA
+B.taurus.3/1-66       C-CCGGUGCC-UAUGACGGUCUGUCUG-AAAA-CCAGCCC---CUG-GU--------GGG
+G.gallus.2/1-60       U-AUUUGUC---AUGACAGUCACAGCA-UAAA--GCGCA----GAC-----------GGC
+B.taurus.2/1-64       C-UUGCGUU--AAUGAGAACAGAAACG-AAAA--CUAUAA-CCUAG-G---------GGU
+G.gallus.1/1-63       G-UGUGUUU---AUGAAGAGCACUAAC-AAAA-GAGUAAU-UGACU--C-------AGUU
+
+B.taurus.1/1-64       UUC-U-G-UUGGAU--GGUUG-------GCAAC
+D.melanogaster.3/1-68 CAA-U-U-GCUGAU---UACG---AUUAACCAC
+D.melanogaster.2/1-63 AAU-A-G-UCUGAA---CCU--------UAUUG
+D.melanogaster.1/1-65 AUC-G-U-UGAGAA--CCCCU-----UUGCCUU
+R.norvegicus.7/1-66   GCA-G-U-CCCGAG-GACCUG-------GCGUG
+R.norvegicus.6/1-67   CUU-U-C-UUCGAU--GUUCU-------GCGGC
+R.norvegicus.5/1-62   AAA-C-A-CCUGAU-UUCCAG------AAAAAU
+R.norvegicus.4/1-61   -CA-G-G-UUUGAA---CCC--------CUGGC
+R.norvegicus.3/1-67   UGUCG-A-UCUGCU--AAUUG-------GCAAA
+R.norvegicus.2/1-64   UUC-U-G-UUGGAU--AGCUC-------GUAAU
+R.norvegicus.1/1-61   UGU-G-A-CUUGAU--UUUUA-------AAAAU
+O.aries.1/1-68        CCU-U-C-CUUGAU--GUUCU------CACGGC
+M.musculus.9/1-66     GCA-G-U-CCUGAG-GACCUG-------GCGUG
+M.musculus.8/1-67     UGU-AGA-UCUGAU--AAUUG-------GCAAA
+O.niloticus.3/1-65    ACC-G-ACACUGAU--GUUUC------CGACAC
+M.musculus.7/1-64     CCU-C-C-CCUGAG---CCCG----UCUGUGGU
+O.niloticus.2/1-61    UGG-A-G-CCAGAU--GCAUU------CAAACA
+M.musculus.6/1-61     CCA-G-G-UUUGAA---CCC--------CUGGC
+O.niloticus.1/1-59    UGG-A-G-CCAGAU--GCAUU-------GAAAC
+M.musculus.5/1-66     CUU-U-C-CUCGAU--GUUCC------UGCGGC
+M.musculus.4/1-65     UGU-G-G-UUGGAU---GUAG------UCACAC
+M.musculus.3/1-64     AAA-C-A-CCUGAU-UUCCAG-----GAAAAUC
+M.musculus.2/1-64     UUC-U-G-UUGGAU--AGCUU-------GUAAU
+M.musculus.1/1-64     AGG-G-U-GGUGAU--GACCC-------GUGAC
+C.elegans.1/1-64      UCU-G-G-UCUGAU---GC---------GCCUC
+H.sapiens.15/1-63     GAA-C-A-CCUGAU---CUUA-----CAGAAAA
+H.sapiens.14/1-62     CUA-G-U-UCUGAA---UU-G-------CAGGG
+H.sapiens.13/1-64     AGA-G-U-GGGGAU--GGUCU-------GUGAC
+H.sapiens.12/1-67     GAG-A-G-GCAGAGCAAGCCU-------CAGAG
+D.rerio.1/1-66        GUC-U-G-UCUGAU--GUUUG-------GCCAU
+H.sapiens.11/1-63     CCA-U-G-UCCGAG---CCCC-------CUGGC
+H.sapiens.10/1-62     GCA-G-A-CCCGAA-AAUCCA-------GCGUG
+S.mansoni.1/1-67      UGC-C-A-UUUGAU--GAAAUCAGUUUUGUGUG
+S.scrofa.4/1-64       GCA-G-A-CUCGAG-AACCUG-------GCGUG
+S.scrofa.3/1-63       GAA-C-A-CCUGAU-GUCCAG------GAAAAU
+S.scrofa.2/1-65       GCA-G-A-CUCGAG-AACCUG-------GCGUG
+S.scrofa.1/1-68       CCU-U-C-CCUGAU--GUUCU------CAUGGC
+H.sapiens.9/1-58      UGU-G-A-CUUGAU---UCA--------AAAGA
+H.sapiens.8/1-67      UUC-U-G-UUGGAU-AAUUAG-----CAGUUUA
+X.laevis.1/1-67       CUC-GUG-UCCGAC---AUC--------AACCC
+H.sapiens.7/1-70      CCU-C-C-CCUGAG---CCUGUCUGAGGGGCCA
+H.sapiens.6/1-66      AGU-G-G-UUGGAU---GUAG------UCACAU
+H.sapiens.5/1-57      UGG-U-G-UCUGAG--AGGC--------GUGAA
+H.sapiens.4/1-71      ACA-G-A-CCAGAU--GCUUU--CUUGGCAGGC
+H.sapiens.3/1-68      CUU-U-C-CCUGAU--GUUCU------CGUGGC
+H.sapiens.2/1-65      AGU-G-G-UUGGAU---GUAG------UCACAU
+H.sapiens.1/1-63      CCA-U-G-UCCGAG---CCCC-------CUGGC
+M.musculus.14/1-67    GAG-A-G-GCUGAACAAACCU-------CAGAG
+M.musculus.13/1-60    CAG-U-G-ACAGAA---GA---------GCUGC
+M.musculus.12/1-65    CCU-U-U-UCUGAU--GGUGG-------CUGGG
+M.musculus.11/1-63    UGU-G-A-CUUGAU--UUUUA----AAAAUGUC
+M.musculus.10/1-66    GCA-G-U-CCUGAG-GACCUG-------GCGUG
+B.taurus.7/1-61       GAA-U-G-CCUGAU-GUCCAG-------GAAAA
+B.taurus.6/1-67       UGG-U-G-AUGGAA-CCGUCA-----AAGCAGU
+B.taurus.5/1-61       CCA-U-G-UCUGAG---CCC--------CUGGC
+B.taurus.4/1-64       UUC-U-G-UUGGAU--GGUUG-------GCAA-
+G.gallus.3/1-73       AUC-GUG-UCUGAU---GUUG-----UCAAGUA
+B.taurus.3/1-66       GCA-G-A-CCUGAG-AACCUG-------GCGUG
+G.gallus.2/1-60       UGU-G-A-CCUGAU--UUUAG------AAAAUA
+B.taurus.2/1-64       UUC-U-G-UUGGAU--GGUUG-------GCAAC
+G.gallus.1/1-63       GGU-G-U-UCAGAU--GCU---------CUCAC
+
index b850b79..aaaaaf8 100755 (executable)
@@ -37,6 +37,7 @@
    <mapID target="newsreader" url="html/webServices/newsreader.html"/>
    <mapID target="disorder" url="html/webServices/proteinDisorder.html"/>
    <mapID target="aacon" url="html/webServices/AACon.html"/>
+   <mapID target="rnaalifold" url="html/webServices/RNAalifold.html"/>
    <mapID target="seqfetch" url="html/features/seqfetch.html"/>
    <mapID target="dbreffetcher" url="html/webServices/dbreffetcher.html"/>
    <mapID target="seqmappings" url="html/features/seqmappings.html"/>
index 0d2e096..e27d41a 100755 (executable)
@@ -22,6 +22,7 @@
        <tocitem text="What's new" target="new" expand="true">
     <tocitem text="Protein Disorder Prediction" target="disorder"/>
     <tocitem text="Alignment Conservation Analysis" target="aacon"/>
+       <tocitem text="RNAalifold RNA Secondary Structure Prediction" target="rnaalifold"/>
                <tocitem text="Viewing RNA structure" target="varna" />
                <tocitem text="RNA Structure Consensus" target="calcs.alstrconsensus"/>
                <tocitem text="RNA Helices coloring" target="colours.rnahelices"/>
@@ -65,6 +66,7 @@
                 <tocitem text="Multiple Alignment Subjobs" target="msaservice"/>
             </tocitem>
           <tocitem text="Secondary Structure Prediction" target="jnet"/>
+          <tocitem text="RNAalifold RNA Secondary Structure Prediction" target="rnaalifold"/>
           <tocitem text="Protein Disorder Prediction" target="disorder"/>
           <tocitem text="Alignment Conservation Analysis" target="aacon"/>
           <tocitem text="Multi-Harmony Alignment Analysis" target="shmrws"/>
index fa6d3dd..665fb3f 100755 (executable)
@@ -132,13 +132,13 @@ GRAPHLINE&#9;<em>graph_name</em>&#9;<em>value</em>&#9;<em>label</em>&#9;<em>colo
 </ul></p>
 <h3><font face="Arial, Helvetica, sans-serif">(Since Jalview 2.2.1) SEQUENCE_GROUP</font></h3>
 <p>Groups of sequences can be defined using the tab delimited line</p>
-<pre>SEQUENCE_GROUP    Group_Name      Group_Start     Group_End       Sequences</pre>
+<pre>SEQUENCE_GROUP    Group_Name      Group_Start     Group_End       <em>Sequences</em></pre>
 <p>The sequences can be defined by alignment index and a range of sequences can 
   be defined in a comma delimited field such as</p>
 <p>2-5,8-15,20,22</p>
 <p>Enter * to select all groups. </p>
-<p>If the alignment indices are not known, enter -1 then a tab delimited list 
-  of sequence ids. </p>
+<p><strong>Note:</strong> If the alignment indices are not known, enter -1, followed by a tab and then a tab delimited list 
+specifying the sequence ids. </p>
 <p>If the SEQUENCE_REF has been defined, the group_start and group_end will be 
   relative to the sequence residue numbering, otherwise the group_start and group_end 
   will be the alignment column indices. </p>
@@ -178,6 +178,9 @@ property, then the idColour will also be used to colour the sequence.</li>
  <em>SEQUENCE_REF</em> sequence reference statement, the sequence representative
  for the group will be set to the referenced sequence.<!-- <br><strong>Note:</strong> if the <em>hide</em> 
  property is set then only the representative sequence for the group will be shown in the alignment.--></li>
+ <li>The interpretation of the COMBINE statement in <em>Version 2.8.1</em> was refined
+ so that only annotation line graphs with the given names ands the same 
+ <strong>SEQUENCE_REF</strong> and <strong>GROUP_REF</strong> scope are grouped.</li>
 </ul>
 <p> </p>
 <p>An example Annotation file is given below:
@@ -197,13 +200,14 @@ COLOUR&#9;Purple Letters&#9;151,52,228
 COMBINE&#9;Green Values&#9;Red Values
 GRAPHLINE&#9;Red Values&#9;2.6&#9;threshold&#9;black
 
-SEQUENCE_GROUP Group_A 30 50 *
-SEQUENCE_GROUP Group_B 1 351 2-5
-SEQUENCE_GROUP Group_C 12 14 -1 seq1   seq2    seq3
-PROPERTIES Group_A description=This is the description colour=Helix Propensity pidThreshold=0 outlineColour=red displayBoxes=true displayText=false    colourText=false textCol1=black textCol2=black textColThreshold=0
-PROPERTIES Group_B outlineColour=red
-PROPERTIES Group_C colour=Clustal
+SEQUENCE_GROUP&#9;Group_A&#9;30&#9;50&#9;*
+SEQUENCE_GROUP&#9;Group_B&#9;1&#9;351&#9;2-5
+SEQUENCE_GROUP&#9;Group_C&#9;12&#9;14&#9;-1&#9;seq1&#9;seq2&#9;seq3
+PROPERTIES&#9;Group_A&#9;description=This is the description&#9;colour=Helix Propensity&#9;pidThreshold=0&#9;outlineColour=red&#9;displayBoxes=true&#9;displayText=false&#9;colourText=false&#9;textCol1=black&#9;textCol2=black&#9;textColThreshold=0
+PROPERTIES&#9;Group_B&#9;outlineColour=red
+PROPERTIES&#9;Group_C&#9;colour=Clustal
 </pre>
 </p>
+<p><em>Last updated for version 2.8.1</em></p>
 </body>
 </html>
index ca3b32e..9651f78 100755 (executable)
@@ -22,6 +22,7 @@
 
 <body>
 <p><strong>Preferences</strong></p>
+<p>The preferences panel is opened from the Jalview Desktop&rsquo;s <strong><em>Tools</em></strong> menu.</p>
 <p>There are six tabs in the Preferences dialog box:
 <ul>
        <li>The <a href="#visual"><strong>&quot;Visual&quot;</strong>
@@ -87,7 +88,7 @@ be sorted by Id or pairwise identity.</p>
 <p><em>Open file</em> - If this is selected then the default
 alignment file will be opened when Jalview is started. You can change
 the default file by clicking on file name and either typing in the file
-path or selecting it from the file chooser window.</p>
+path or selecting it from the file chooser window.<br/><em>Note: The default example alignment is updated periodically to demonstrate new features in Jalview.</em></p>
 <p><a name="colours"><strong>&quot;Colours&quot; Preferences tab</strong></p>
 <p><em>Alignment Colour</em> - The default colour scheme for a new alignment
 window. If the chosen option is &quot;User Defined&quot; then the last
index 9ec5adc..d53b3eb 100755 (executable)
                                </strong><em>Any columns currently not selected will replace the current
                                                column selection. </em>
                                </li>
-                               <li><strong>Undefine Groups (Control U)<br> </strong><em>The
-                                               alignment will be reset with no defined groups.<br> <strong>WARNING</strong>:
-                                               This cannot be undone.</em>
-                               </li>
-                               <li><strong>Make Groups<br /> </strong> <em>The currently
+                                 <li><strong>Create Group (Control G)<br></strong>
+  <em>Create a group containing the currently selected sequences.</em></li>
+  <li><strong>Remove Group (Shift Control G)<br></strong>
+  <em>Ungroup the currently selected sequence group. (Create/Remove group new in Jalview 2.8.1)</em></li>
+                       <li><strong>Make Groups for selection<br /> </strong> <em>The currently
                                                selected groups of the alignment will be subdivided according to
                                                the contents of the currently selected region. <br />Use this to
                                                subdivide an alignment based on the different combinations of
                                                residues observed at specific positions. (new in jalview 2.5)</em>
                                </li>
-                       </ul></li>
+       <li><strong>Undefine Groups (Control U)<br> </strong><em>The
+            alignment will be reset with no defined groups.<br> <strong>WARNING</strong>:
+            This cannot be undone.</em>
+        </li>
+               </ul></li>
                <li><strong>View</strong>
                        <ul>
                                <li><strong>New View (Control T)</strong><em><br>
index c4b3002..bd17fa7 100644 (file)
        <li><strong>Invert Column Selection (Control Alt I)<br>
        </strong><em>Any columns currently not selected will replace the current
        column selection. </em></li>
-       <li><strong>Undefine Groups (Control U)<br>
-       </strong><em>The alignment will be reset with no defined groups.<br>
-       <strong>WARNING</strong>: This cannot be undone.</em></li>
-       <li><strong>Make Groups<br/></strong>
+       <li><strong>Create Group (Control G)<br></strong>
+       <em>Create a group containing the currently selected sequences.</em></li>
+  <li><strong>Remove Group (Shift Control G)<br></strong>
+  <em>Ungroup the currently selected sequence group. (Create/Remove group new in Jalview 2.8.1)</em></li>
+       <li><strong>Make Groups for selection<br/></strong>
        <em>The currently selected groups of the alignment will be subdivided according to the contents of the currently selected region. <br/>Use this to subdivide an alignment based on the different combinations of residues observed at specific positions. (new in jalview 2.5)</em></li>
+<li><strong>Undefine Groups (Control U)<br>
+  </strong><em>The alignment will be reset with no defined groups.<br>
+  <strong>WARNING</strong>: This cannot be undone.</em></li>
+  
 </ul>
 </body>
 </html>
index 7c3db2c..8eab2d0 100755 (executable)
@@ -59,18 +59,22 @@ not be accessible when in 'Cursor Mode' (toggled with the F2 key).</em></p>
       <li><strong><a href="../features/creatinFeatures.html">Create Sequence Feature...</a></strong><br>
         <em>Opens the dialog box for creating sequence features over the currently 
         selected region on each selected sequence.</em></li>
-      <li><strong>Group</strong><br>
-        <em>Group Operations</em> 
-        <ul>
-          <li><strong>Group</strong><em>This is the first entry in the
-         menu, and will display the currently selected group's
-         name. Selecting it displays a window allowing the name and
-         description for this group to be edited. Click OK to set the
-         new name and decription, and cancel to leave the existing
-         name and description unchanged.</em></li>
+      <li><strong>Create Group<br>
+            </strong><em>This will define a new group from the current selection.</em><strong> 
+            </strong></li>
           <li><strong>Remove Group<br>
             </strong><em>This will undefine the selected group. </em><strong> 
             </strong></li>
+          <li><strong>Edit (New) Group</strong><br>
+        <em>Group Editing Menu</em> <br />Options in this menu modify
+                                       the name and display properties of the currently selected group, or
+                                       a new group defined using the current selection.
+                                       <ul>
+          <li><strong>Name: &lt;Group&gt;</strong> or <strong>Edit name and description</strong><br><em>The first entry in the
+         menu displays the name for the currently selected group, if it has one. Selecting this option opens a window allowing the name and
+         description for this group to be edited. Click OK to set the
+         new name and decription, and cancel to leave the existing
+         name and description unchanged.</em></li>
           <li><strong>Group Colour<br>
             </strong><em>Sets the <a href="../colourSchemes/index.html">colour</a> 
             of the group.</em><strong> </strong></li>
diff --git a/help/html/webServices/RNAalifold.html b/help/html/webServices/RNAalifold.html
new file mode 100644 (file)
index 0000000..ac9df34
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="ISO-8859-1">
+<title>RNAalifold Web Service</title>
+</head>
+<body>
+       <strong>RNAalifold RNA Alignment Secondary Structure
+               Prediction Service</strong>
+       <p>
+               RNAalifold is part of the <a href="http://www.tbi.univie.ac.at/RNA/">Vienna
+                       RNA</a> Secondary Structure Prediction and Comparison Package. It was
+               described in 2008 by Ivo L. Hofacker, Sebastian Will, Andreas R.
+               Gruber, and Peter F. Stadler, <em>RNAalifold: Improved consensus
+               structure prediction for RNA alignments</em>. (<a
+                       href=http://www.biomedcentral.com/1471-2105/9/474>BMC
+                       Bioinformatics, 9:474, 2008</a>).
+       </p>
+       <p>
+               <strong>Example RNAalifold Output</strong><br />
+               RNAalifold prints a consensus alignment and mfe structure to stdout with its
+               associated energy. Depending on the arguments given, other information such as
+               alternate structures are displayed below while base pairing probabilities (-p or --MEA 
+               options) are stored in a separate 'alifold.out' file.<br />
+               <pre><br />
+G_UUUCAUU___AUGACGGCCUGUGCU_UAAA__CCUCC____GAG__C________GGGUCA_G_G_UCUGAU___CUUG_______GAGAC
+(.((((...........(((((((((........(((......)))............))))).).).))..................))))) (-19.16 = -11.80 +  -7.36) 
+(.((((...........(((((((((........(((......)))............))))).).).))..................))))) [-19.32]
+       frequency of mfe structure in ensemble 0.765639
+(.((((...........(((((((((........(((......)))............))))).).).))..................))))) -19.16 {-11.80 +  -7.36}
+(.((((...........(((((((((........(((......)))............))))).).).))..................))))) { 13.20 MEA=92.14}
+
+Alifold.out
+       6    89  9  99.2%   0.023 CG:29   GC:14   UA:9   
+       4    91 11  99.1%   0.028 CG:20   GC:11   UG:2    UA:17  
+       3    92 18  96.9%   0.090 CG:5    GC:2    GU:1    UG:4    AU:6    UA:25  
+       35    46  3  93.3%   0.195 CG:31   GC:16   UG:2    AU:5    UA:4   
+       36    45 10  93.6%   0.185 CG:16   GC:6    GU:1    UG:2    AU:8    UA:18  
+               .
+               .
+               .
+       </pre>
+       </p>
+       <p>
+               <strong>Running RNAalifold from Jalview</strong><br />
+               To run RNAalifold go to <strong>Webservices&rarr;RNA Structure Prediction</strong>
+               and choose <strong>RNAalifold Defaults</strong> to run with no arguments or 
+               <strong>edit settings and run ...</strong> to adjust the parameters before running.
+               Details of all the RNAalifold parameters can be found in the 
+               <a href=http://www.tbi.univie.ac.at/RNA/man/RNAalifold.html>RNAalifold Manpage</a>.
+               JABAWS and Jalview support a selection of the RNAalifold arguments only.
+       </p>
+       <p><strong>Supported Arguments which give alternate structures</strong></p>
+       <p>
+       <em>Partition Function (-p)</em><br />
+       Calculate the Partition Function and base pairing probability matrix in addition to the mfe 
+       structure. A coarse representation of the pair probabilities in the from of a psuedo
+       bracket notation, as well as the centroid structure derived from the pair probabilities
+       are displayed. The most likely base pairings are stored in a separate file by RNAalifold
+       and represented in Jalview by a bar graph annotation line labelled 'Contact Probabilities'.
+       </p>
+       <p>
+       <em>Maximum Expected Accuracy Structure (--MEA)</em><br />
+       Calculate an MEA structure where the expected Accuracy is computed from the base pair 
+       probabilities. A more detailed description is found in the <a href=http://www.tbi.univie.ac.at/RNA/man/RNAfold.html>
+       RNAfold documentation</a>.
+       </p>
+       <p><strong>Example RNAalifold Structure Annotation rows</strong><p>
+       
+               <div align="center">
+               <img src="RNAalifoldAnnotationRows.png" width="500" height="216"></div>
+       
+</body>
+</html>
\ No newline at end of file
diff --git a/help/html/webServices/RNAalifoldAnnotationRows.png b/help/html/webServices/RNAalifoldAnnotationRows.png
new file mode 100644 (file)
index 0000000..5077d19
Binary files /dev/null and b/help/html/webServices/RNAalifoldAnnotationRows.png differ
index 755365a..f1254cd 100644 (file)
Binary files a/lib/Jmol-12.2.4.jar and b/lib/Jmol-12.2.4.jar differ
diff --git a/lib/min-jaba-client-2.0.jar b/lib/min-jaba-client-2.0.jar
deleted file mode 100644 (file)
index 4ba3f33..0000000
Binary files a/lib/min-jaba-client-2.0.jar and /dev/null differ
diff --git a/lib/min-jabaws-client-2.1.0.jar b/lib/min-jabaws-client-2.1.0.jar
new file mode 100644 (file)
index 0000000..7ad030a
Binary files /dev/null and b/lib/min-jabaws-client-2.1.0.jar differ
diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties
new file mode 100644 (file)
index 0000000..53a05dd
--- /dev/null
@@ -0,0 +1,389 @@
+action.cancel = Cancel\r
+action.create = Create\r
+action.update = Update\r
+action.delete = Delete\r
+action.snapshot = Snapshot\r
+action.clear = Clear\r
+action.accept = Accept\r
+action.select_ddbb = --- Select Database ---\r
+action.undo = Undo\r
+action.redo = Redo\r
+action.reset = Reset\r
+action.remove_left = Remove left\r
+action.remove_right = Remove right\r
+action.remove_empty_columns = Remove Empty Columns\r
+action.remove_all_gaps = Remove All Gaps\r
+action.boxes = Boxes\r
+action.text = Text\r
+action.by_pairwise_id = by Pairwise Identity\r
+action.by_id = by Id\r
+action.by_length = by Length\r
+action.by_group = by Group\r
+action.remove_redundancy = Remove Redundancy...\r
+action.pairwise_alignment = Pairwise Alignments...\r
+action.by_rna_helixes = by RNA Helices\r
+action.user_defined = User Defined...\r
+action.by_conservation = By Conservation\r
+action.wrap = Wrap\r
+action.show_gaps = Show Gaps\r
+action.find = Find...\r
+action.undefine_groups = Undefine Groups\r
+action.make_groups_selection = Make Groups For Selection\r
+action.copy = Copy\r
+action.cut = Cut\r
+action.paste = Paste\r
+action.font = Font...\r
+action.scale_above = Scale Above\r
+action.scale_left = Scale Left\r
+action.scale_right = Scale Right\r
+action.by_tree_order = By Tree Order\r
+action.sort = Sort\r
+action.calculate_tree = Calculate Tree\r
+action.help = Help\r
+action.by_annotation = by Annotation...\r
+action.invert_sequence_selection = Invert Sequence Selection\r
+action.invert_column_selection = Invert Column Selection\r
+action.show = Show\r
+action.hide = Hide\r
+action.ok = OK\r
+action.set_defaults = Defaults\r
+action.create_group = Create Group\r
+action.remove_group = Remove Group\r
+action.edit_group = Edit Group\r
+action.edit_new_group = Edit New Group\r
+action.hide_sequences = Hide Sequences\r
+action.reveal_all = Reveal All\r
+action.reveal_sequences = Reveal Sequences\r
+action.find_all = Find all\r
+action.find_next = Find next\r
+action.file = File\r
+action.view = View\r
+action.change_params = Change Parameters\r
+action.apply = Apply\r
+action.apply_threshold_all_groups = Apply threshold to all groups\r
+action.apply_all_groups = Apply to all Groups\r
+action.by_chain = By chain\r
+action.by_sequence = By Sequence\r
+action.paste_annotations = Paste Annotations\r
+action.format = Format\r
+action.select = Select\r
+action.new_view = New View\r
+action.close = Close\r
+action.add = Add\r
+action.save_as_default = Save as default\r
+action.cancel_fetch = Cancel Fetch\r
+action.save_omit_hidden_columns = Save / Omit Hidden Columns\r
+action.change_font = Change Font\r
+action.colour = Colour\r
+action.calculate = Calculate\r
+action.select_all = Select all\r
+action.deselect_all = Deselect all\r
+action.invert_selection = Invert selection\r
+action.using_jmol = Using Jmol\r
+action.link = Link\r
+action.show_chain = Show Chain\r
+label.str = Str:\r
+label.seq = Seq:\r
+label.structures_manager = Structures Manager\r
+label.nickname = Nickname:\r
+label.url = URL:\r
+label.input_file_url = Enter URL or Input File\r
+label.select_feature = Select feature:\r
+label.name = Name:\r
+label.name_param = Name: {0}\r
+label.group = Group:\r
+label.colour = Colour:\r
+label.description = Description:\r
+label.start = Start:\r
+label.end = End:\r
+label.current_parameter_set_name = Current parameter set name:\r
+label.service_action = Service Action:\r
+label.post_url = POST URL:\r
+label.url_suffix = URL Suffix\r
+label.sequence_source = Sequence Source\r
+label.per_seq = per Sequence\r
+label.result_vertically_separable = Results are vertically separable\r
+label.amend = Amend\r
+label.undo_command = Undo {0}\r
+label.redo_command = Redo {0}\r
+label.principal_component_analysis = Principal Component Analysis\r
+label.average_distance_identity = Average Distance Using % Identity\r
+label.neighbour_joining_identity = Neighbour Joining Using % Identity\r
+label.status_bar = Status bar\r
+label.out_to_textbox = Output to Textbox\r
+label.clustalx = Clustalx\r
+label.zappo = Zappo\r
+label.taylor = Taylor\r
+label.hydrophobicity = Hydrophobicity\r
+label.helix_propensity = Helix Propensity\r
+label.strand_propensity = Strand Propensity\r
+label.turn_propensity = Turn Propensity\r
+label.buried_index = Buried Index\r
+label.purine_pyrimidine = Purine/Pyrimidine\r
+label.percentage_identity = Percentage Identity\r
+label.blosum62_score = BLOSUM62 Score\r
+label.tcoffee_scores = T-Coffee Scores\r
+label.average_distance_bloslum62 = Average Distance Using BLOSUM62\r
+label.neighbour_blosum62 = Neighbour Joining Using BLOSUM62\r
+label.show_annotations = Show annotations\r
+label.colour_text = Colour Text\r
+label.show_non_conversed = Show nonconserved\r
+label.overview_window = Overview Window\r
+label.none = None\r
+label.above_identity_threshold = Above Identity Threshold\r
+label.nucleotide = Nucleotide\r
+label.to_new_alignment = To New Alignment\r
+label.to_this_alignment = Add To This Alignment\r
+label.apply_colour_to_all_groups = Apply Colour To All Groups\r
+label.modify_identity_thereshold = Modify Identity Threshold...\r
+label.modify_conservation_thereshold = Modify Conservation Threshold...\r
+label.input_from_textbox = Input from textbox\r
+label.centre_column_labels = Centre column labels\r
+label.automatic_scrolling = Automatic Scrolling\r
+label.documentation = Documentation\r
+label.about = About...\r
+label.show_sequence_limits = Show Sequence Limits\r
+label.feature_settings = Feature Settings...\r
+label.sequence_features = Sequence Features\r
+label.all_columns = All Columns\r
+label.all_sequences = All Sequences\r
+label.selected_columns = Selected Columns \r
+label.selected_sequences = Selected Sequences\r
+label.all_but_selected_region = All but Selected Region (Shift+Ctrl+H)\r
+label.selected_region = Selected Region\r
+label.all_sequences_columns = All Sequences and Columns\r
+label.group_consensus = Group Consensus\r
+label.group_conservation = Group Conservation\r
+label.show_consensus_histogram = Show Consensus Histogram\r
+label.show_consensus_logo = Show Consensus Logo\r
+label.norm_consensus_logo = Normalise Consensus Logo\r
+label.apply_all_groups = Apply to all groups\r
+label.autocalculated_annotation = Autocalculated Annotation\r
+label.min_colour = Min Colour\r
+label.max_colour = Max Colour\r
+label.use_original_colours = Use Original Colours\r
+label.threshold_minmax = Threshold is min/max\r
+label.represent_group_with = Represent Group with\r
+label.selection = Selection\r
+label.group_colour = Group Colour\r
+label.sequence = Sequence\r
+label.view_pdb_structure = View PDB Structure\r
+label.min = Min:\r
+label.max = Max:\r
+label.colour_by_label = Colour by label\r
+label.new_feature = New Feature\r
+label.match_case = Match Case\r
+label.view_alignment_editor = View in alignment editor\r
+label.labels = Labels\r
+label.output_values = Output Values...\r
+label.input_data = Input Data...\r
+label.nucleotide_matrix = Nucleotide matrix\r
+label.protein_matrix = Protein matrix\r
+label.show_bootstrap_values = Show Bootstrap Values\r
+label.show_distances = Show distances\r
+label.mark_unassociated_leaves = Mark Unassociated Leaves\r
+label.fit_to_window = Fit To Window\r
+label.newick_format = Newick Format\r
+label.colours = Colours\r
+label.view_mapping = View Mapping\r
+label.wireframe = Wireframe\r
+label.depthcue = Depthcue\r
+label.z_buffering = Z Buffering\r
+label.charge_cysteine = Charge & Cysteine\r
+label.all_chains_visible = All Chains Visible\r
+label.successfully_added_features_alignment = Successfully added features to alignment\r
+label.keyboard_editing_mode = Keyboard editing mode is {0}\r
+label.paste_features_annotations_Tcoffee_here = Paste your features / annotations / T-coffee score file here.\r
+label.removed_columns = Removed {0} columns.\r
+label.removed_empty_columns = Removed {0} empty columns.\r
+label.paste_newick_tree_file = Paste your Newick tree file here.\r
+label.order_by_params = Order by {0}\r
+label.html_content = <html>{0}</html>\r
+label.paste_pdb_file= Paste your PDB file here.\r
+label.paste_pdb_file_for_sequence = Paste PDB file for sequence {0}\r
+label.could_not_parse_newick_file  = Could not parse Newick file\!\n {0}\r
+label.successfully_pasted_tcoffee_scores_to_alignment= Successfully pasted T-Coffee scores to alignment.\r
+label.failed_add_tcoffee_scores = Failed to add T-Coffee scores: \r
+label.successfully_pasted_annotation_to_alignment= Successfully pasted annotation to alignment.\r
+label.successfully_pasted_alignment_file = Successfully pasted alignment file\r
+label.paste_your_alignment_file = Paste your alignment file here\r
+label.paste_your = Paste your\r
+label.finished_searching = Finished searching\r
+label.search_results= Search results {0} : {1}\r
+label.found_match_for = Found match for {0}\r
+label.font = Font:\r
+label.size = Size:\r
+label.style = Style:\r
+label.enter_redundancy_threshold = Enter the redundancy threshold\r
+label.calculating = Calculating....\r
+label.modify_conservation_visibility = Modify conservation visibility\r
+label.colour_residues_above_occurence = Colour residues above % occurence\r
+label.set_this_label_text = set this label text\r
+label.sequences_from = Sequences from {0}\r
+label.successfully_loaded_file  = Successfully loaded file {0}\r
+label.successfully_saved_to_file_in_format = Successfully saved to file: {0} in {1} format.\r
+label.copied_sequences_to_clipboard = Copied {0} sequences to clipboard.\r
+label.check_file_matches_sequence_ids_alignment = Check that the file matches sequence IDs in the alignment.\r
+label.problem_reading_tcoffee_score_file = Problem reading T-COFFEE score file\r
+label.source_to_target = {0} to '{1}'\r
+label.per_sequence_only= Per-sequence only\r
+label.to_file = to File\r
+label.to_textbox = to Textbox\r
+label.jalview = Jalview\r
+label.csv_spreadsheet = CSV (Spreadsheet)\r
+label.status =  [Status]\r
+label.channels = Channels\r
+label.channel_title_item_count = {0} ({1})\r
+label.blog_item_published_on_date = {0} {1} \r
+label.select_das_service_from_table = Select a DAS service from the table to read a full description here.</font></html>\r
+label.session_update = Session Update\r
+label.new_vamsas_session = New Vamsas Session\r
+label.groovy_console = Groovy Console...\r
+label.lineart = Lineart\r
+label.dont_ask_me_again = Don't ask me again\r
+label.select_eps_character_rendering_style = Select EPS character rendering style\r
+label.invert_selection = Invert Selection\r
+label.optimise_order = Optimise Order\r
+label.seq_sort_by_score = Seq sort by Score\r
+label.load_colours = Load Colours\r
+label.save_colours = Save Colours\r
+label.fetch_das_features = Fetch DAS Features\r
+label.selected_database_to_fetch_from = Selected {0} database {1} to fetch from {2} \r
+label.database_param = Database: {0}\r
+label.example_param = Example: {0}\r
+label.select_file_format_before_saving = You must select a file format before saving!\r
+label.file_format_not_specified = File format not specified\r
+label.alignment_contains_hidden_columns = The Alignment contains hidden columns.\nDo you want to save only the visible alignment?\r
+label.couldnt_save_file = Couldn't save file: {0}\r
+label.error_saving_file = Error Saving File\r
+label.remove_from_default_list = Remove from default list?\r
+label.remove_user_defined_colour = Remove user defined colour\r
+label.you_must_select_least_two_sequences = You must select at least 2 sequences.\r
+label.invalid_selection = Invalid Selection\r
+label.principal_component_analysis_must_take_least_four_input_sequences = Principal component analysis must take\nat least 4 input sequences.\r
+label.sequence_selection_insufficient = Sequence selection insufficient\r
+label.you_need_more_two_sequences_selected_build_tree = You need to have more than two sequences selected to build a tree!\r
+label.not_enough_sequences = Not enough sequences\r
+label.selected_region_to_tree_may_only_contain_residues_or_gaps =  The selected region to create a tree may\nonly contain residues or gaps.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.\r
+label.sequences_selection_not_aligned = Sequences in selection are not aligned\r
+label.sequences_must_be_aligned_before_creating_tree = The sequences must be aligned before creating a tree.\nTry using the Pad function in the edit menu,\n or one of the multiple sequence alignment web services.\r
+label.sequences_not_aligned = Sequences not aligned\r
+label.problem_reading_tree_file =  Problem reading tree file\r
+label.possible_problem_with_tree_file = Possible problem with tree file\r
+label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Please select at least three bases in at least one sequence in order to perform a cDNA translation.\r
+label.translation_failed = Translation Failed\r
+label.error_when_translating_sequences_submit_bug_report = Unfortunately, something went wrong when translating your sequences.\nPlease take a look in the Jalview java console\nand submit a bug report including the stacktrace.\r
+label.implementation_error  = Implementation error:\r
+label.automatically_associate_pdb_files_with_sequences_same_name = Do you want to automatically associate the {0} PDB files with sequences in the alignment that have the same name?\r
+label.automatically_associate_pdb_files_by_name = Automatically Associate PDB files by name\r
+label.ignore_unmatched_dropped_files_info = <html>Do you want to <em>ignore</em> the {0} files whose names did not match any sequence IDs ?</html>\r
+label.ignore_unmatched_dropped_files = Ignore unmatched dropped files?\r
+label.enter_view_name = Enter View Name\r
+label.enter_label = Enter label\r
+label.enter_label_for_the_structure = Enter a label for the structure?\r
+label.pdb_entry_is_already_displayed = {0} is already displayed.\nDo you want to re-use this viewer ?\r
+label.map_sequences_to_visible_window = Map Sequences to Visible Window: {0}\r
+label.add_pdbentry_to_view = Do you want to add {0} to the view called\n'{1}'\n\r
+label.align_to_existing_structure_view = Align to existing structure view\r
+label.pdb_entries_couldnt_be_retrieved = The following pdb entries could not be retrieved from the PDB\:\n{0}\nPlease try downloading them manually.\r
+label.couldnt_load_file = Couldn't load file\r
+label.couldnt_find_pdb_id_in_file = Couldn't find a PDB id in the file supplied. Please enter an Id to identify this structure.\r
+label.no_pdb_id_in_file = No PDB Id in File\r
+label.couldnt_read_pasted_text = Couldn't read the pasted text {0}\r
+label.error_parsing_text = Error parsing text\r
+label.enter_local_das_source = Enter Nickname & URL of Local DAS Source\r
+label.you_can_only_edit_or_remove_local_das_sources = You can only edit or remove local DAS Sources!\r
+label.public_das_source = Public DAS source - not editable\r
+label.input_alignment_from_url = Input Alignment From URL\r
+label.couldnt_import_as_vamsas_session = Couldn't import '{0}' as a new vamsas session.\r
+label.vamsas_document_import_failed = Vamsas Document Import Failed\r
+label.couldnt_locate = Couldn't locate {0}\r
+label.url_not_found = URL not found\r
+label.no_link_selected = No link selected\r
+label.new_sequence_url_link = New sequence URL link\r
+label.cannot_edit_annotations_in_wrapped_view = Cannot edit annotations in wrapped view\r
+label.wrapped_view_no_edit = Wrapped view - no edit\r
+label.error_retrieving_data = Error Retrieving Data\r
+label.user_colour_scheme_must_have_name = User colour scheme must have a name\r
+label.no_name_colour_scheme = No name for colour scheme\r
+label.invalid_url = Invalid URL !\r
+label.error_loading_file = Error loading file\r
+label.problems_opening_file = Encountered problems opening {0}!!\r
+label.file_open_error = File open error\r
+label.no_das_sources_selected_warn = No das sources were selected.\nPlease select some sources and\ntry again.\r
+label.no_das_sources_selected_title = No DAS Sources Selected\r
+label.colour_scheme_exists_overwrite = Colour scheme {0} exists.\nContinue saving colour scheme as {1}?"\r
+label.duplicate_scheme_name = Duplicate scheme name\r
+label.jalview_new_questionnaire = There is a new Questionnaire available. Would you like to complete it now ?\n\r
+label.jalview_user_survey = Jalview User Survey\r
+label.alignment_properties = Alignment Properties: {0}\r
+label.alignment_props = Alignment Properties\r
+label.input_cut_paste = Cut & Paste Input\r
+label.alignment_output_command = Alignment output - {0}\r
+label.annotations = Annotations\r
+label.features = Features\r
+label.overview_params = Overview {0}\r
+label.paste_newick_file = Paste Newick file\r
+label.load_tree_from_file = From File - \r
+label.colour_by_annotation = Colour by Annotation\r
+label.selection_output_command = Selection output - {0}\r
+label.annotation_for_displayid = <p><h2>Annotation for {0} </h2></p><p>\r
+label.pdb_sequence_mapping = PDB - Sequence Mapping\r
+label.pca_details = PCA details\r
+label.redundancy_threshold_selection = Redundancy threshold selection\r
+label.user_defined_colours = User defined colours\r
+label.jalviewLite_release = JalviewLite - Release {0}\r
+label.jaview_build_date = Build date: {0}\r
+label.jalview_authors_1 = Authors:  Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,\r
+label.jalview_authors_2 = Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.\r
+label.jalview_dev_managers = Development managed by The Barton Group, University of Dundee, Scotland, UK.\r
+label.jalview_distribution_lists = For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list\r
+label.jalview_please_cite = If  you use Jalview, please cite:\r
+label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)\r
+label.jalview_cite_1_title = Jalview Version 2 - a multiple sequence alignment editor and analysis workbench\r
+label.jalview_cite_1_ref = Bioinformatics doi: 10.1093/bioinformatics/btp033\r
+label.right_click = Right click\r
+label.to_add_annotation = to add annotation\r
+label.alignment_has_no_annotations = Alignment has no annotations\r
+label.retrieving_pdb_data = Retrieving PDB data...\r
+label.label = Label\r
+label.no_features_added_to_this_alignment = No Features added to this alignment!!\r
+label.features_can_be_added_from_searches_1 = (Features can be added from searches or\r
+label.features_can_be_added_from_searches_2 = from Jalview / GFF features files)\r
+label.calculating_pca= Calculating PCA\r
+label.reveal_columns = Reveal Columns\r
+label.jalview_cannot_open_file = Jalview can't open file\r
+label.jalview_applet = Jalview applet\r
+label.loading_data = Loading data\r
+label.memory_stats = Total Free Memory: {0} MB; Max Memory: {1} MB; {2} %\r
+label.calculating_tree = Calculating tree\r
+label.state_queueing = queuing\r
+label.state_running = running\r
+label.state_complete = complete\r
+label.state_job_cancelled = job cancelled!!\r
+label.state_job_error = job error!\r
+label.server_error_try_later = Server Error! (try later)\r
+label.error_loading_pdb_data = Error loading PDB data!!\r
+label.fetching_pdb_data = Fetching PDB data...\r
+label.structure_type = Structure_type\r
+label.settings_for_type = Settings for {0}\r
+label.view_full_application = View in Full Application\r
+label.load_associated_tree = Load Associated Tree ...\r
+label.load_features_annotations = Load Features/Annotations ...\r
+label.export_features = Export Features ...\r
+label.export_annotations = Export Annotations ...\r
+label.jalview_copy = Copy (Jalview Only)\r
+label.jalview_cut = Cut (Jalview Only)\r
+label.to_upper_case = To Upper Case\r
+label.to_lower_case = To Lower Case\r
+label.toggle_case = Toggle Case\r
+label.edit_name_description = Edit Name/Description\r
+label.create_sequence_feature = Create Sequence Feature\r
+label.edit_sequence = Edit Sequence\r
+label.sequence_details = Sequence Details\r
+label.jmol_help = Jmol Help\r
+label.all = All\r
+label.sort_by_score = Sort by Score\r
+label.sort_by_density = Sort by Density\r
+label.reveal = Reveal\r
+label.hide_columns = Hide Columns\r
diff --git a/resources/lang/Messages_es.properties b/resources/lang/Messages_es.properties
new file mode 100644 (file)
index 0000000..c1fb406
--- /dev/null
@@ -0,0 +1,7 @@
+action.cancel = Cancelar\r
+action.create = Crear\r
+action.update = Actualizar\r
+action.delete = Borrar\r
+action.snapshot = Captura\r
+action.clear = Limpiar\r
+action.accept = Aceptar\r
index 03c5728..0138f63 100755 (executable)
                                                                                type="xs:string" />
                                                                        <xs:attribute name="threshold"
                                                                                type="xs:float" />
+                       <xs:attribute name="perSequence" 
+                       type="xs:boolean" 
+                       use="optional" />
+                       <xs:attribute name="predefinedColours" 
+                  type="xs:boolean" 
+                  use="optional" />
                                                                </xs:complexType>
                                                        </xs:element>
                                                        <xs:element name="hiddenColumns"
index 714c33f..40e99db 100644 (file)
@@ -29,6 +29,7 @@ import jalview.datamodel.*;
 
 import jalview.appletgui.*;
 import jalview.structure.*;
+import jalview.util.MessageManager;
 
 public class AppletPDBCanvas extends Panel implements MouseListener,
         MouseMotionListener, StructureListener
@@ -468,7 +469,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener,
       g.fillRect(0, 0, getSize().width, getSize().height);
       g.setColor(Color.black);
       g.setFont(new Font("Verdana", Font.BOLD, 14));
-      g.drawString("Error loading PDB data!!", 50, getSize().height / 2);
+      g.drawString(MessageManager.getString("label.error_loading_pdb_data"), 50, getSize().height / 2);
       return;
     }
 
@@ -476,7 +477,7 @@ public class AppletPDBCanvas extends Panel implements MouseListener,
     {
       g.setColor(Color.black);
       g.setFont(new Font("Verdana", Font.BOLD, 14));
-      g.drawString("Fetching PDB data...", 50, getSize().height / 2);
+      g.drawString(MessageManager.getString("label.fetching_pdb_data"), 50, getSize().height / 2);
       return;
     }
 
old mode 100755 (executable)
new mode 100644 (file)
index 2872320..b2e1187
@@ -23,6 +23,7 @@ import java.awt.event.*;
 import jalview.appletgui.*;
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 public class AppletPDBViewer extends EmbmenuFrame implements
         ActionListener, ItemListener
@@ -60,7 +61,7 @@ public class AppletPDBViewer extends EmbmenuFrame implements
               false, null);
       Frame frame = new Frame();
       frame.add(cap);
-      jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping",
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.pdb_sequence_mapping"),
               500, 600);
       cap.setText(pdbcanvas.mappingDetails.toString());
 
@@ -146,42 +147,42 @@ public class AppletPDBViewer extends EmbmenuFrame implements
   private void jbInit() throws Exception
   {
     setMenuBar(jMenuBar1);
-    fileMenu.setLabel("File");
-    coloursMenu.setLabel("Colours");
-    mapping.setLabel("View Mapping");
+    fileMenu.setLabel(MessageManager.getString("action.file"));
+    coloursMenu.setLabel(MessageManager.getString("label.colours"));
+    mapping.setLabel(MessageManager.getString("label.view_mapping"));
     mapping.addActionListener(this);
-    wire.setLabel("Wireframe");
+    wire.setLabel(MessageManager.getString("label.wireframe"));
     wire.addItemListener(this);
     depth.setState(true);
-    depth.setLabel("Depthcue");
+    depth.setLabel(MessageManager.getString("label.depthcue"));
     depth.addItemListener(this);
     zbuffer.setState(true);
-    zbuffer.setLabel("Z Buffering");
+    zbuffer.setLabel(MessageManager.getString("label.z_buffering"));
     zbuffer.addItemListener(this);
-    charge.setLabel("Charge & Cysteine");
+    charge.setLabel(MessageManager.getString("label.charge_cysteine"));
     charge.addActionListener(this);
-    hydro.setLabel("Hydrophobicity");
+    hydro.setLabel(MessageManager.getString("label.hydrophobicity"));
     hydro.addActionListener(this);
-    chain.setLabel("By Chain");
+    chain.setLabel(MessageManager.getString("action.by_chain"));
     chain.addActionListener(this);
-    seqButton.setLabel("By Sequence");
+    seqButton.setLabel(MessageManager.getString("action.by_sequence"));
     seqButton.addActionListener(this);
-    allchains.setLabel("All Chains Visible");
+    allchains.setLabel(MessageManager.getString("label.all_chains_visible"));
     allchains.addItemListener(this);
-    viewMenu.setLabel("View");
-    zappo.setLabel("Zappo");
+    viewMenu.setLabel(MessageManager.getString("action.view"));
+    zappo.setLabel(MessageManager.getString("label.zappo"));
     zappo.addActionListener(this);
-    taylor.setLabel("Taylor");
+    taylor.setLabel(MessageManager.getString("label.taylor"));
     taylor.addActionListener(this);
-    helix.setLabel("Helix Propensity");
+    helix.setLabel(MessageManager.getString("label.helix_propensity"));
     helix.addActionListener(this);
-    strand.setLabel("Strand Propensity");
+    strand.setLabel(MessageManager.getString("label.strand_propensity"));
     strand.addActionListener(this);
-    turn.setLabel("Turn Propensity");
+    turn.setLabel(MessageManager.getString("label.turn_propensity"));
     turn.addActionListener(this);
-    buried.setLabel("Buried Index");
+    buried.setLabel(MessageManager.getString("label.buried_index"));
     buried.addActionListener(this);
-    user.setLabel("User Defined...");
+    user.setLabel(MessageManager.getString("action.user_defined"));
     user.addActionListener(this);
     jMenuBar1.add(fileMenu);
     jMenuBar1.add(coloursMenu);
index 8bfd7b5..b9cdaea 100755 (executable)
@@ -26,6 +26,7 @@ import jalview.datamodel.*;
 import jalview.gui.*;
 import jalview.io.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 import jalview.ws.ebi.EBIFetchClient;
 
 public class PDBViewer extends JInternalFrame implements Runnable
@@ -362,8 +363,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
 
               int option = JOptionPane.showInternalConfirmDialog(
                       jalview.gui.Desktop.desktop,
-                      "Remove from default list?",
-                      "Remove user defined colour",
+                      MessageManager.getString("label.remove_from_default_list"),
+                      MessageManager.getString("label.remove_user_defined_colour"),
                       JOptionPane.YES_NO_OPTION);
               if (option == JOptionPane.YES_OPTION)
               {
index 50b1b4b..08a3f52 100755 (executable)
@@ -19,6 +19,7 @@ package jalview.analysis;
 
 import java.util.*;
 
+import jalview.util.Format;
 import jalview.datamodel.*;
 
 /**
@@ -90,7 +91,7 @@ public class AAFrequency
     Hashtable residueHash;
     int maxCount, nongap, i, j, v, jSize = sequences.length;
     String maxResidue;
-    char c;
+    char c='-';
     float percentage;
 
     int[] values = new int[255];
@@ -104,7 +105,7 @@ public class AAFrequency
       maxResidue = "";
       nongap = 0;
       values = new int[255];
-
+      
       for (j = 0; j < jSize; j++)
       {
         if (sequences[j] == null)
@@ -142,8 +143,11 @@ public class AAFrequency
           values['-']++;
         }
       }
-
-      for (v = 'A'; v < 'Z'; v++)
+      if (jSize==1)
+      {
+        maxResidue = String.valueOf(c);
+        maxCount=1;
+      } else {for (v = 'A'; v < 'Z'; v++)
       {
         if (values[v] < 2 || values[v] < maxCount)
         {
@@ -160,7 +164,7 @@ public class AAFrequency
         }
         maxCount = values[v];
       }
-
+      }
       if (maxResidue.length() == 0)
       {
         maxResidue = "-";
@@ -177,8 +181,10 @@ public class AAFrequency
       percentage = ((float) maxCount * 100) / jSize;
       residueHash.put(PID_GAPS, new Float(percentage));
 
-      percentage = ((float) maxCount * 100) / nongap;
-      residueHash.put(PID_NOGAPS, new Float(percentage));
+      if (nongap>0) {
+        percentage = ((float) maxCount * 100) / nongap;
+        residueHash.put(PID_NOGAPS, new Float(percentage));
+      }
       result[i] = residueHash;
     }
   }
@@ -194,14 +200,15 @@ public class AAFrequency
    * @param width
    * @param ignoreGapsInConsensusCalculation
    * @param includeAllConsSymbols
+   * @param nseq 
    */
   public static void completeConsensus(AlignmentAnnotation consensus,
           Hashtable[] hconsensus, int iStart, int width,
           boolean ignoreGapsInConsensusCalculation,
-          boolean includeAllConsSymbols)
+          boolean includeAllConsSymbols, long nseq)
   {
     completeConsensus(consensus, hconsensus, iStart, width,
-            ignoreGapsInConsensusCalculation, includeAllConsSymbols, null); // new
+            ignoreGapsInConsensusCalculation, includeAllConsSymbols, null, nseq); // new
                                                                             // char[]
     // { 'A', 'C', 'G', 'T', 'U' });
   }
@@ -209,7 +216,7 @@ public class AAFrequency
   public static void completeConsensus(AlignmentAnnotation consensus,
           Hashtable[] hconsensus, int iStart, int width,
           boolean ignoreGapsInConsensusCalculation,
-          boolean includeAllConsSymbols, char[] alphabet)
+          boolean includeAllConsSymbols, char[] alphabet, long nseq)
   {
     float tval, value;
     if (consensus == null || consensus.annotations == null
@@ -219,6 +226,23 @@ public class AAFrequency
       // initialised properly
       return;
     }
+    String fmtstr="%3.1f";
+    int precision=0;
+    while (nseq>=10) {
+      precision++;
+      nseq/=10;
+    }
+    final Format fmt;
+    if (precision>1)
+    {
+      //if (precision>2)
+      {
+        fmtstr = "%"+(2+precision)+"."+(precision)+"f";
+      }
+      fmt = new Format(fmtstr);
+    } else {
+      fmt = null;
+    }
     for (int i = iStart; i < width; i++)
     {
       Hashtable hci;
@@ -229,7 +253,6 @@ public class AAFrequency
         consensus.annotations[i] = null;
         continue;
       }
-
       value = 0;
       Float fv;
       if (ignoreGapsInConsensusCalculation)
@@ -265,7 +288,7 @@ public class AAFrequency
             tval = profile[0][alphabet[c]] * 100f
                     / profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
             mouseOver += ((c == 0) ? "" : "; ") + alphabet[c] + " "
-                    + ((int) tval) + "%";
+                    + ((fmt!=null) ? fmt.form(tval) : ((int) tval)) + "%";
           }
         }
         else
@@ -288,7 +311,7 @@ public class AAFrequency
                       * 100f
                       / profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
               mouseOver += ((p == 0) ? "" : "; ") + ((char[]) ca[c])[0]
-                      + " " + ((int) tval) + "%";
+                      + " " + ((fmt!=null) ? fmt.form(tval) : ((int) tval)) + "%";
               p++;
 
             }
@@ -298,7 +321,7 @@ public class AAFrequency
       }
       else
       {
-        mouseOver += ((int) value + "%");
+        mouseOver += ((fmt!=null) ? fmt.form(value) : ((int) value)) + "%";
       }
       consensus.annotations[i] = new Annotation(maxRes, mouseOver, ' ',
               value);
index a3a0fe1..f610d08 100644 (file)
@@ -17,6 +17,7 @@
  */
 package jalview.analysis;
 
+import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.Vector;
 
@@ -124,17 +125,20 @@ public class Dna
     {
       SequenceI newseq = translateCodingRegion(selection[s], seqstring[s],
               viscontigs, codons, gapCharacter,
-              (product != null) ? product[s] : null); // possibly anonymous
+              (product != null) ? product[s] : null, false); // possibly anonymous
       // product
       if (newseq != null)
       {
         pepseqs.addElement(newseq);
         SequenceI ds = newseq;
-        while (ds.getDatasetSequence() != null)
+        if (dataset != null)
         {
-          ds = ds.getDatasetSequence();
+          while (ds.getDatasetSequence() != null)
+          {
+            ds = ds.getDatasetSequence();
+          }
+          dataset.addSequence(ds);
         }
-        dataset.addSequence(ds);
       }
     }
     if (codons.aaWidth == 0)
@@ -416,14 +420,37 @@ public class Dna
    * @param codons
    *          Definition of global ORF alignment reference frame
    * @param gapCharacter
-   * @param newSeq
    * @return sequence ready to be added to alignment.
+   * @deprecated Use {@link #translateCodingRegion(SequenceI,String,int[],AlignedCodonFrame,char,DBRefEntry,boolean)} instead
    */
   public static SequenceI translateCodingRegion(SequenceI selection,
           String seqstring, int[] viscontigs, AlignedCodonFrame codons,
           char gapCharacter, DBRefEntry product)
   {
-    Vector skip = new Vector();
+    return translateCodingRegion(selection, seqstring, viscontigs, codons,
+            gapCharacter, product, false);
+  }
+
+  /**
+   * Translate a na sequence
+   * 
+   * @param selection
+   *          sequence displayed under viscontigs visible columns
+   * @param seqstring
+   *          ORF read in some global alignment reference frame
+   * @param viscontigs
+   *          mapping from global reference frame to visible seqstring ORF read
+   * @param codons
+   *          Definition of global ORF alignment reference frame
+   * @param gapCharacter
+   * @param starForStop when true stop codons will translate as '*', otherwise as 'X'  
+   * @return sequence ready to be added to alignment.
+   */
+  public static SequenceI translateCodingRegion(SequenceI selection,
+          String seqstring, int[] viscontigs, AlignedCodonFrame codons,
+          char gapCharacter, DBRefEntry product, final boolean starForStop)
+  {
+    java.util.List skip = new ArrayList();
     int skipint[] = null;
     ShiftList vismapping = new ShiftList(); // map from viscontigs to seqstring
     // intervals
@@ -479,32 +506,84 @@ public class Dna
             // edit scontigs
             skipint[0] = vismapping.shift(skipint[0]);
             skipint[1] = vismapping.shift(skipint[1]);
-            for (vc = 0; vc < scontigs.length; vc += 2)
+            for (vc = 0; vc < scontigs.length; )
             {
               if (scontigs[vc + 1] < skipint[0])
               {
+                // before skipint starts
+                vc += 2;
                 continue;
               }
+              if (scontigs[vc]>skipint[1])
+              {
+                // finished editing so
+                break;
+              }
+              // Edit the contig list to include the skipped region which did not translate
+              int[] t;
+              // from : s1 e1 s2 e2 s3 e3
+              // to s:  s1 e1 s2 k0 k1 e2 s3 e3
+              // list increases by one unless one boundary (s2==k0 or e2==k1) matches, and decreases by one if skipint intersects whole visible contig 
               if (scontigs[vc] <= skipint[0])
               {
                 if (skipint[0] == scontigs[vc])
                 {
-
+                  // skipint at start of contig
+                  // shift the start of this contig
+                  if (scontigs[vc + 1] > skipint[1])
+                  {
+                    scontigs[vc] = skipint[1];
+                    vc+=2;
+                  }
+                  else
+                  {
+                    if (scontigs[vc+1]==skipint[1])
+                    {
+                      // remove the contig
+                      t = new int[scontigs.length - 2];
+                      if (vc > 0)
+                      {
+                        System.arraycopy(scontigs, 0, t, 0, vc - 1);
+                      }
+                      if (vc + 2 < t.length)
+                      {
+                        System.arraycopy(scontigs, vc + 2, t, vc, t.length
+                              - vc + 2);
+                      }
+                      scontigs=t;
+                    } else {
+                      // truncate contig to before the skipint region
+                      scontigs[vc+1] = skipint[0]-1;
+                      vc+=2;
+                    }
+                  }
                 }
                 else
                 {
-                  int[] t = new int[scontigs.length + 2];
-                  System.arraycopy(scontigs, 0, t, 0, vc - 1);
-                  // scontigs[vc]; //
+                  // scontig starts before start of skipint
+                  if (scontigs[vc+1]<skipint[1]) {
+                    // skipint truncates end of scontig
+                    scontigs[vc+1] = skipint[0]-1; 
+                    vc+=2;
+                  } else {
+                    // divide region to new contigs
+                    t = new int[scontigs.length + 2];
+                    System.arraycopy(scontigs, 0, t, 0, vc +1);
+                    t[vc+1] = skipint[0];
+                    t[vc+2] = skipint[1];
+                    System.arraycopy(scontigs, vc + 1, t, vc+3, scontigs.length-(vc+1));
+                    scontigs=t;
+                    vc+=4;
+                  }
                 }
               }
             }
-            skip.addElement(skipint);
+            skip.add(skipint);
             skipint = null;
           }
           if (aa.equals("STOP"))
           {
-            aa = "X";
+            aa = starForStop ? "*" : "X";
           }
           resSize++;
         }
@@ -561,8 +640,11 @@ public class Dna
               protein.toString());
       if (rf != 0)
       {
-        jalview.bin.Cache.log
-                .debug("trimming contigs for incomplete terminal codon.");
+        if (jalview.bin.Cache.log!=null) {
+          jalview.bin.Cache.log.debug("trimming contigs for incomplete terminal codon.");
+        } else {
+          System.err.println("trimming contigs for incomplete terminal codon.");
+        }
         // map and trim contigs to ORF region
         vc = scontigs.length - 1;
         lastnpos = vismapping.shift(lastnpos); // place npos in context of
@@ -675,7 +757,7 @@ public class Dna
   private static void transferCodedFeatures(SequenceI dna, SequenceI pep,
           MapList map, Hashtable featureTypes, Hashtable featureGroups)
   {
-    SequenceFeature[] sf = dna.getDatasetSequence().getSequenceFeatures();
+    SequenceFeature[] sf = (dna.getDatasetSequence()!=null ? dna.getDatasetSequence() : dna).getSequenceFeatures();
     Boolean fgstate;
     jalview.datamodel.DBRefEntry[] dnarefs = jalview.util.DBRefUtils
             .selectRefs(dna.getDBRef(),
index 08bb3fd..948bdc1 100644 (file)
@@ -21,6 +21,7 @@ package jalview.analysis;
 
 import java.util.*;
 
+import jalview.util.Format;
 import jalview.datamodel.*;
 
 /**
@@ -299,7 +300,7 @@ public class StructureFrequency
   public static void completeConsensus(AlignmentAnnotation consensus,
           Hashtable[] hconsensus, int iStart, int width,
           boolean ignoreGapsInConsensusCalculation,
-          boolean includeAllConsSymbols)
+          boolean includeAllConsSymbols, long nseq)
   {
     float tval, value;
     if (consensus == null || consensus.annotations == null
@@ -309,6 +310,18 @@ public class StructureFrequency
       // initialised properly
       return;
     }
+    String fmtstr="%3.1f";
+    int precision=2;
+    while (nseq>100) {
+      precision++;
+      nseq/=10;
+    }
+    if (precision>2)
+    {
+      fmtstr = "%"+(2+precision)+"."+precision+"f";
+    }
+    Format fmt = new Format(fmtstr);
+    
     for (int i = iStart; i < width; i++)
     {
       Hashtable hci;
@@ -385,7 +398,7 @@ public class StructureFrequency
             tval = (vl[c] * 100f / profile[1][ignoreGapsInConsensusCalculation ? 1
                     : 0]);
             mouseOver += ((p == 0) ? "" : "; ") + (char) ((int[]) ca[c])[0]
-                    + (char) ((int[]) ca[c])[1] + " " + ((int) tval) + "%";
+                    + (char) ((int[]) ca[c])[1] + " " + fmt.form(tval) + "%";
             p++;
 
           }
@@ -395,7 +408,7 @@ public class StructureFrequency
       }
       else
       {
-        mouseOver += ((int) value + "%");
+        mouseOver += (fmt.form(value) + "%");
       }
       consensus.annotations[i] = new Annotation(maxRes, mouseOver, ' ',
               value);
diff --git a/src/jalview/api/AlignViewControllerI.java b/src/jalview/api/AlignViewControllerI.java
new file mode 100644 (file)
index 0000000..fc63fd6
--- /dev/null
@@ -0,0 +1,24 @@
+package jalview.api;
+
+/**
+ * prototype abstract controller for a Jalview alignment view
+ * @author jimp
+ * 
+ * All operations should return true if the view has changed as a result of the operation
+ * @param <ViewportI>
+ *
+ */
+public interface AlignViewControllerI<ViewportI>
+{
+
+  public boolean makeGroupsFromSelection();
+
+  public boolean createGroup();
+
+  public boolean unGroup();
+
+  public boolean deleteGroups();
+
+  public void setViewportAndAlignmentPanel(AlignViewportI viewport, AlignmentViewPanel alignPanel);
+
+}
index f42293d..5f759b8 100644 (file)
  */
 package jalview.api;
 
+import java.awt.Color;
 import java.util.Hashtable;
 import java.util.Map;
 
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AlignmentView;
+import jalview.datamodel.CigarArray;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SequenceCollectionI;
+import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.schemes.ColourSchemeI;
 
@@ -155,4 +159,29 @@ public interface AlignViewportI
   void updateGroupAnnotationSettings(boolean applyGlobalSettings,
           boolean preserveNewGroupSettings);
 
+  void setSequenceColour(SequenceI seq, Color col);
+
+  Color getSequenceColour(SequenceI seq);
+
+  void updateSequenceIdColours();
+
+  SequenceGroup getSelectionGroup();
+
+  SequenceI[] getSequenceSelection();
+
+  void clearSequenceColours();
+
+  CigarArray getViewAsCigars(boolean selectedRegionOnly);
+
+  AlignmentView getAlignmentView(boolean selectedOnly);
+
+  AlignmentView getAlignmentView(boolean selectedOnly, boolean markGroups);
+
+  String[] getViewAsString(boolean selectedRegionOnly);
+
+  void setSelectionGroup(SequenceGroup sg);
+
+  char getGapCharacter();
+
+
 }
old mode 100755 (executable)
new mode 100644 (file)
index c71818e..c51653d
@@ -26,6 +26,7 @@ import jalview.analysis.*;
 import jalview.commands.*;
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 import jalview.util.UrlLink;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.SequenceAnnotationReport;
@@ -69,6 +70,8 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   MenuItem unGroupMenuItem = new MenuItem();
 
+  MenuItem createGroupMenuItem = new MenuItem();
+
   MenuItem nucleotideMenuItem = new MenuItem();
 
   Menu colourMenu = new Menu();
@@ -81,17 +84,17 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   CheckboxMenuItem displayNonconserved = new CheckboxMenuItem();
 
-  Menu editMenu = new Menu("Edit");
+  Menu editMenu = new Menu(MessageManager.getString("action.edit"));
 
-  MenuItem copy = new MenuItem("Copy (Jalview Only)");
+  MenuItem copy = new MenuItem(MessageManager.getString("label.jalview_copy"));
 
-  MenuItem cut = new MenuItem("Cut (Jalview Only)");
+  MenuItem cut = new MenuItem(MessageManager.getString("label.jalview_cut"));
 
-  MenuItem toUpper = new MenuItem("To Upper Case");
+  MenuItem toUpper = new MenuItem(MessageManager.getString("label.to_upper_case"));
 
-  MenuItem toLower = new MenuItem("To Lower Case");
+  MenuItem toLower = new MenuItem(MessageManager.getString("label.to_lower_case"));
 
-  MenuItem toggleCase = new MenuItem("Toggle Case");
+  MenuItem toggleCase = new MenuItem(MessageManager.getString("label.toggle_case"));
 
   Menu outputmenu = new Menu();
 
@@ -103,15 +106,15 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   MenuItem repGroup = new MenuItem();
 
-  MenuItem sequenceName = new MenuItem("Edit Name/Description");
+  MenuItem sequenceName = new MenuItem(MessageManager.getString("label.edit_name_description"));
 
-  MenuItem sequenceFeature = new MenuItem("Create Sequence Feature");
+  MenuItem sequenceFeature = new MenuItem(MessageManager.getString("label.create_sequence_feature"));
 
-  MenuItem editSequence = new MenuItem("Edit Sequence");
+  MenuItem editSequence = new MenuItem(MessageManager.getString("label.edit_sequence"));
 
-  MenuItem sequenceDetails = new MenuItem("Sequence Details ...");
+  MenuItem sequenceDetails = new MenuItem(MessageManager.getString("label.sequence_details") + "...");
 
-  MenuItem selSeqDetails = new MenuItem("Sequence Details ...");
+  MenuItem selSeqDetails = new MenuItem(MessageManager.getString("label.sequence_details") + "...");
 
   Sequence seq;
 
@@ -159,14 +162,18 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
     if (sg != null && sg.getSize() > 0)
     {
-      editGroupName.setLabel("Name: " + sg.getName());
+      editGroupName.setLabel(MessageManager.formatMessage("label.name_param", new String[]{sg.getName()}));
       showText.setState(sg.getDisplayText());
       showColourText.setState(sg.getColourText());
       showBoxes.setState(sg.getDisplayBoxes());
       displayNonconserved.setState(sg.getShowNonconserved());
       if (!ap.av.getAlignment().getGroups().contains(sg))
       {
+        menu1.setLabel(MessageManager.getString("action.edit_new_group"));
         groupMenu.remove(unGroupMenuItem);
+      } else {
+        menu1.setLabel(MessageManager.getString("action.edit_group"));
+        groupMenu.remove(createGroupMenuItem);
       }
 
     }
@@ -178,7 +185,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
     if (links != null && links.size() > 0)
     {
-      Menu linkMenu = new Menu("Link");
+      Menu linkMenu = new Menu(MessageManager.getString("action.link"));
       String link;
       for (int i = 0; i < links.size(); i++)
       {
@@ -300,7 +307,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     if (seq != null)
     {
       seqMenu.setLabel(seq.getName());
-      repGroup.setLabel("Represent Group with " + seq.getName());
+      repGroup.setLabel(MessageManager.formatMessage("label.represent_group_with", new String[]{seq.getName()}));
     }
     else
     {
@@ -457,6 +464,11 @@ public class APopupMenu extends java.awt.PopupMenu implements
       unGroupMenuItem_actionPerformed();
     }
 
+    else if (source == createGroupMenuItem)
+    {
+      createGroupMenuItem_actionPerformed();
+    }
+
     else if (source == sequenceName)
     {
       editName();
@@ -635,7 +647,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     Frame frame = new Frame();
     frame.add(cap);
     jalview.bin.JalviewLite.addFrame(frame,
-            "Selection output - " + e.getActionCommand(), 600, 500);
+               MessageManager.formatMessage("label.selection_output_command", new String[]{e.getActionCommand()}),600, 500);
     // JBPNote: getSelectionAsNewSequence behaviour has changed - this method
     // now returns a full copy of sequence data
     // TODO consider using getSequenceSelection instead here
@@ -666,8 +678,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     StringBuffer contents = new StringBuffer();
     for (SequenceI seq : sequences)
     {
-      contents.append("<p><h2>Annotation for " + seq.getDisplayId(true)
-              + "</h2></p><p>");
+      contents.append(MessageManager.formatMessage("label.annotation_for_displayid",new String[]{seq.getDisplayId(true)}));
       new SequenceAnnotationReport(null)
               .createSequenceAnnotationReport(
                       contents,
@@ -684,7 +695,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     jalview.bin.JalviewLite.addFrame(frame, "Sequence Details for "
             + (sequences.length == 1 ? sequences[0].getDisplayId(true)
                     : "Selection"), 600, 500);
-    cap.setText("<html>" + contents.toString() + "</html>");
+    cap.setText(MessageManager.formatMessage("label.html_content", new String[]{contents.toString()}));
   }
 
   void editName()
@@ -719,61 +730,64 @@ public class APopupMenu extends java.awt.PopupMenu implements
     else
     {
       CutAndPasteTransfer cap = new CutAndPasteTransfer(true, ap.alignFrame);
-      cap.setText("Paste your PDB file here.");
+      cap.setText(MessageManager.getString("label.paste_pdb_file"));
       cap.setPDBImport(seq);
       Frame frame = new Frame();
       frame.add(cap);
       jalview.bin.JalviewLite.addFrame(frame,
-              "Paste PDB file for sequence " + seq.getName(), 400, 300);
+              MessageManager.formatMessage("label.paste_pdb_file_for_sequence",  new String[]{seq.getName()}), 400, 300);
     }
   }
 
   private void jbInit() throws Exception
   {
-    groupMenu.setLabel("Group");
-    groupMenu.setLabel("Selection");
+    groupMenu.setLabel(MessageManager.getString("label.selection"));
     sequenceFeature.addActionListener(this);
 
     editGroupName.addActionListener(this);
-    unGroupMenuItem.setLabel("Remove Group");
+    unGroupMenuItem.setLabel(MessageManager.getString("action.remove_group"));
     unGroupMenuItem.addActionListener(this);
 
-    nucleotideMenuItem.setLabel("Nucleotide");
+    createGroupMenuItem.setLabel(MessageManager.getString("action.create_group"));
+    createGroupMenuItem.addActionListener(this);
+
+    nucleotideMenuItem.setLabel(MessageManager.getString("label.nucleotide"));
     nucleotideMenuItem.addActionListener(this);
     conservationMenuItem.addItemListener(this);
     abovePIDColour.addItemListener(this);
-    colourMenu.setLabel("Group Colour");
-    showBoxes.setLabel("Boxes");
+    colourMenu.setLabel(MessageManager.getString("label.group_colour"));
+    showBoxes.setLabel(MessageManager.getString("label.boxes"));
     showBoxes.setState(true);
     showBoxes.addItemListener(this);
     sequenceName.addActionListener(this);
     sequenceDetails.addActionListener(this);
     selSeqDetails.addActionListener(this);
-    displayNonconserved.setLabel("Show Nonconserved");
+    displayNonconserved.setLabel(MessageManager.getString("label.show_non_conversed"));
     displayNonconserved.setState(false);
     displayNonconserved.addItemListener(this);
-    showText.setLabel("Text");
+    showText.setLabel(MessageManager.getString("label.text"));
     showText.addItemListener(this);
-    showColourText.setLabel("Colour Text");
+    showColourText.setLabel(MessageManager.getString("label.colour_text"));
     showColourText.addItemListener(this);
-    outputmenu.setLabel("Output to Textbox...");
-    seqMenu.setLabel("Sequence");
-    pdb.setLabel("View PDB Structure");
-    hideSeqs.setLabel("Hide Sequences");
-    repGroup.setLabel("Represent Group with");
-    revealAll.setLabel("Reveal All");
-    revealSeq.setLabel("Reveal Sequences");
-    menu1.setLabel("Group");
+    outputmenu.setLabel(MessageManager.getString("label.out_to_textbox"));
+    seqMenu.setLabel(MessageManager.getString("label.sequence"));
+    pdb.setLabel(MessageManager.getString("label.view_pdb_structure"));
+    hideSeqs.setLabel(MessageManager.getString("action.hide_sequences"));
+    repGroup.setLabel(MessageManager.getString("label.represent_group_with"));
+    revealAll.setLabel(MessageManager.getString("action.reveal_all"));
+    revealSeq.setLabel(MessageManager.getString("action.reveal_sequences"));
+    menu1.setLabel(MessageManager.getString("label.group"));
     add(groupMenu);
     this.add(seqMenu);
     this.add(hideSeqs);
     this.add(revealSeq);
     this.add(revealAll);
     // groupMenu.add(selSeqDetails);
-    groupMenu.add(editGroupName);
     groupMenu.add(editMenu);
     groupMenu.add(outputmenu);
     groupMenu.add(sequenceFeature);
+    groupMenu.add(createGroupMenuItem);
+    groupMenu.add(unGroupMenuItem);
     groupMenu.add(menu1);
 
     colourMenu.add(noColourmenuItem);
@@ -843,7 +857,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
       seqMenu.add(pdb);
     }
     seqMenu.add(repGroup);
-    menu1.add(unGroupMenuItem);
+    menu1.add(editGroupName);
     menu1.add(colourMenu);
     menu1.add(showBoxes);
     menu1.add(showText);
@@ -1027,6 +1041,12 @@ public class APopupMenu extends java.awt.PopupMenu implements
     ap.paintAlignment(true);
   }
 
+  void createGroupMenuItem_actionPerformed()
+  {
+    getGroup(); // implicitly create group
+    refresh();
+  }
+
   public void showColourText_itemStateChanged()
   {
     getGroup().setColourText(showColourText.getState());
index 0f0ba4e..564f28c 100644 (file)
@@ -19,6 +19,7 @@ package jalview.appletgui;
 
 import jalview.analysis.AlignmentSorter;
 import jalview.analysis.Conservation;
+import jalview.api.AlignViewControllerI;
 import jalview.api.SequenceStructureBinding;
 import jalview.bin.JalviewLite;
 import jalview.commands.CommandI;
@@ -57,6 +58,7 @@ import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.ZappoColourScheme;
 import jalview.structure.StructureSelectionManager;
+import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
 import java.awt.Canvas;
@@ -92,6 +94,7 @@ import java.util.Vector;
 public class AlignFrame extends EmbmenuFrame implements ActionListener,
         ItemListener, KeyListener
 {
+  public AlignViewControllerI avc;
   public AlignmentPanel alignPanel;
 
   public AlignViewport viewport;
@@ -120,7 +123,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
     viewport = new AlignViewport(al, applet);
     alignPanel = new AlignmentPanel(this, viewport);
-
+    avc = new jalview.controller.AlignViewController(viewport, alignPanel);
     viewport.updateConservation(alignPanel);
     viewport.updateConsensus(alignPanel);
 
@@ -295,7 +298,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         viewport.featureSettings.refreshTable();
       }
       alignPanel.paintAlignment(true);
-      statusBar.setText("Successfully added features to alignment.");
+      statusBar.setText(MessageManager.getString("label.successfully_added_features_alignment"));
     }
     return featuresFile;
   }
@@ -439,8 +442,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
     case KeyEvent.VK_F2:
       viewport.cursorMode = !viewport.cursorMode;
-      statusBar.setText("Keyboard editing mode is "
-              + (viewport.cursorMode ? "on" : "off"));
+      statusBar.setText(MessageManager.formatMessage("label.keyboard_editing_mode", new String[]{(viewport.cursorMode ? "on" : "off")}));
       if (viewport.cursorMode)
       {
         alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes;
@@ -542,6 +544,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
       break;
 
+    case KeyEvent.VK_G:
+      if (evt.isControlDown())
+      {
+        if (evt.isShiftDown())
+        {
+          this.unGroup_actionPerformed();
+        }
+        else
+        {
+          this.createGroup_actionPerformed();
+        }
+      }
+      break;
+      
     case KeyEvent.VK_U:
       if (evt.isControlDown())
       {
@@ -970,8 +986,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       cap.setText(contents.toString());
       Frame frame = new Frame();
       frame.add(cap);
-      jalview.bin.JalviewLite.addFrame(frame, "Alignment Properties: "
-              + getTitle(), 400, 250);
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage("label.alignment_properties", new String[]{getTitle()}),
+                 400, 250);
     }
     else if (source == overviewMenuItem)
     {
@@ -1114,7 +1130,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);
     Frame frame = new Frame();
     frame.add(cap);
-    jalview.bin.JalviewLite.addFrame(frame, "Cut & Paste Input", 500, 500);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.input_cut_paste"), 500, 500);
   }
 
   protected void outputText_actionPerformed(ActionEvent e)
@@ -1123,7 +1139,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     Frame frame = new Frame();
     frame.add(cap);
     jalview.bin.JalviewLite.addFrame(frame,
-            "Alignment output - " + e.getActionCommand(), 600, 500);
+               MessageManager.formatMessage("label.alignment_output_command", new String[]{e.getActionCommand()}),600, 500);
     cap.setText(new AppletFormatAdapter().formatSequences(
             e.getActionCommand(), viewport.getAlignment(),
             viewport.showJVSuffix));
@@ -1132,11 +1148,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   public void loadAnnotations()
   {
     CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);
-    cap.setText("Paste your features / annotations / T-coffee score file here.");
+    cap.setText(MessageManager.getString("label.paste_features_annotations_Tcoffee_here"));
     cap.setAnnotationImport();
     Frame frame = new Frame();
     frame.add(cap);
-    jalview.bin.JalviewLite.addFrame(frame, "Paste Annotations ", 400, 300);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("action.paste_annotations"), 400, 300);
 
   }
 
@@ -1153,7 +1169,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this);
       Frame frame = new Frame();
       frame.add(cap);
-      jalview.bin.JalviewLite.addFrame(frame, "Annotations", 600, 500);
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.annotations"), 600, 500);
       cap.setText(annotation);
     }
 
@@ -1209,7 +1225,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
       Frame frame = new Frame();
       frame.add(cap);
-      jalview.bin.JalviewLite.addFrame(frame, "Features", 600, 500);
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.features"), 600, 500);
       cap.setText(features);
     }
     else
@@ -1347,12 +1363,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       undoMenuItem.setEnabled(true);
       CommandI command = (CommandI) viewport.historyList.peek();
-      undoMenuItem.setLabel("Undo " + command.getDescription());
+      undoMenuItem.setLabel(MessageManager.formatMessage("label.undo_command", new String[]{command.getDescription()}));
     }
     else
     {
       undoMenuItem.setEnabled(false);
-      undoMenuItem.setLabel("Undo");
+      undoMenuItem.setLabel(MessageManager.getString("action.undo"));
     }
 
     if (viewport.redoList.size() > 0)
@@ -1360,12 +1376,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       redoMenuItem.setEnabled(true);
 
       CommandI command = (CommandI) viewport.redoList.peek();
-      redoMenuItem.setLabel("Redo " + command.getDescription());
+      redoMenuItem.setLabel(MessageManager.formatMessage("label.redo_command", new String[]{command.getDescription()}));
     }
     else
     {
       redoMenuItem.setEnabled(false);
-      redoMenuItem.setLabel("Redo");
+      redoMenuItem.setLabel(MessageManager.getString("action.redo"));
     }
   }
 
@@ -1887,41 +1903,30 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   protected void makeGrpsFromSelection_actionPerformed()
   {
-    if (viewport.getSelectionGroup() != null)
-    {
-      SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom(
-              viewport.getSequenceSelection(),
-              viewport.getAlignmentView(true).getSequenceStrings(
-                      viewport.getGapCharacter()), viewport.getAlignment()
-                      .getGroups());
-      viewport.getAlignment().deleteAllGroups();
-      viewport.sequenceColours = null;
-      viewport.setSelectionGroup(null);
-      // set view properties for each group
-      for (int g = 0; g < gps.length; g++)
-      {
-        // gps[g].setShowunconserved(viewport.getShowUnconserved());
-        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
-        viewport.getAlignment().addGroup(gps[g]);
-        Color col = new Color((int) (Math.random() * 255),
-                (int) (Math.random() * 255), (int) (Math.random() * 255));
-        col = col.brighter();
-        for (SequenceI sq : gps[g].getSequences(null))
-          viewport.setSequenceColour(sq, col);
-      }
+    if (avc.makeGroupsFromSelection()) {
       PaintRefresher.Refresh(this, viewport.getSequenceSetId());
       alignPanel.updateAnnotation();
       alignPanel.paintAlignment(true);
     }
   }
 
+  protected void createGroup_actionPerformed()
+  {
+    avc.createGroup();
+  }
+  protected void unGroup_actionPerformed()
+  {
+    if (avc.unGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
   protected void deleteGroups_actionPerformed()
   {
-    viewport.getAlignment().deleteAllGroups();
-    viewport.sequenceColours = null;
-    viewport.setSelectionGroup(null);
-
-    alignPanel.paintAlignment(true);
+    if (avc.deleteGroups())
+    {
+      alignPanel.alignmentChanged();
+    }
   }
 
   public void selectAllSequenceMenuItem_actionPerformed()
@@ -2019,8 +2024,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
                 viewport.getSelectionGroup());
       }
 
-      statusBar.setText("Removed " + trimRegion.getSize() + " columns.");
-
+      statusBar.setText(MessageManager.formatMessage("label.removed_columns", new String[]{Integer.valueOf(trimRegion.getSize()).toString()}));
       addHistoryItem(trimRegion);
 
       for (SequenceGroup sg : viewport.getAlignment().getGroups())
@@ -2060,8 +2064,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
     addHistoryItem(removeGapCols);
 
-    statusBar.setText("Removed " + removeGapCols.getSize()
-            + " empty columns.");
+    statusBar.setText(MessageManager.formatMessage("label.removed_empty_columns", new String[]{Integer.valueOf(removeGapCols.getSize()).toString()}));
 
     // This is to maintain viewport position on first residue
     // of first sequence
@@ -2288,7 +2291,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     OverviewPanel overview = new OverviewPanel(alignPanel);
     frame.add(overview);
     // +50 must allow for applet frame window
-    jalview.bin.JalviewLite.addFrame(frame, "Overview " + this.getTitle(),
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage("label.overview_params", new String[]{this.getTitle()}),
             overview.getPreferredSize().width,
             overview.getPreferredSize().height + 50);
 
@@ -2466,7 +2469,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       Frame frame = new Frame();
       frame.add(new PairwiseAlignPanel(alignPanel));
-      jalview.bin.JalviewLite.addFrame(frame, "Pairwise Alignment", 600,
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("action.pairwise_alignment"), 600,
               500);
     }
   }
@@ -2564,16 +2567,16 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   void loadTree_actionPerformed()
   {
     CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this);
-    cap.setText("Paste your Newick tree file here.");
+    cap.setText(MessageManager.getString("label.paste_newick_tree_file"));
     cap.setTreeImport();
     Frame frame = new Frame();
     frame.add(cap);
-    jalview.bin.JalviewLite.addFrame(frame, "Paste Newick file ", 400, 300);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.paste_newick_file"), 400, 300);
   }
 
   public void loadTree(jalview.io.NewickFile tree, String treeFile)
   {
-    TreePanel tp = new TreePanel(alignPanel, treeFile, "From File - ", tree);
+    TreePanel tp = new TreePanel(alignPanel, treeFile, MessageManager.getString("label.load_tree_from_file"), tree);
     jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500);
     addTreeMenuItem(tp, treeFile);
   }
@@ -2593,7 +2596,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
             .sortByTree(viewport.getAlignment(), treePanel.getTree());
     // addHistoryItem(new HistoryItem("Sort", viewport.alignment,
     // HistoryItem.SORT));
-    addHistoryItem(new OrderCommand("Order by " + title, oldOrder,
+    addHistoryItem(new OrderCommand(MessageManager.formatMessage("label.order_by_params", new String[]{title}), oldOrder,
             viewport.getAlignment()));
     alignPanel.paintAlignment(true);
   }
@@ -2690,28 +2693,28 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         // TODO: update this text for each release or centrally store it for
         // lite and application
         g.setFont(new Font("Helvetica", Font.BOLD, 14));
-        g.drawString("JalviewLite - Release " + version, x, y += fh);
+        g.drawString(MessageManager.formatMessage("label.jalviewLite_release", new String[]{version}), x, y += fh);
         g.setFont(new Font("Helvetica", Font.BOLD, 12));
-        g.drawString("Build date: " + builddate, x, y += fh);
+        g.drawString(MessageManager.formatMessage("label.jaview_build_date", new String[]{builddate}), x, y += fh);
         g.setFont(new Font("Helvetica", Font.PLAIN, 12));
         g.drawString(
-                "Authors:  Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui,",
+                MessageManager.getString("label.jalview_authors_1"),
                 x, y += fh * 1.5);
-        g.drawString("Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.", x + 50, y += fh+8);
+        g.drawString(MessageManager.getString("label.jalview_authors_2"), x + 50, y += fh+8);
         g.drawString(
-                "Development managed by The Barton Group, University of Dundee, Scotland, UK.",
+                MessageManager.getString("label.jalview_dev_managers"),
                 x, y += fh);
         g.drawString(
-                "For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list",
+                MessageManager.getString("label.jalview_distribution_lists"),
                 x, y += fh);
-        g.drawString("If  you use Jalview, please cite:", x, y += fh + 8);
+        g.drawString(MessageManager.getString("label.jalview_please_cite"), x, y += fh + 8);
         g.drawString(
-                "Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)",
+                MessageManager.getString("label.jalview_cite_1_authors"),
                 x, y += fh);
         g.drawString(
-                "Jalview Version 2 - a multiple sequence alignment editor and analysis workbench",
+                MessageManager.getString("label.jalview_cite_1_title"),
                 x, y += fh);
-        g.drawString("Bioinformatics doi: 10.1093/bioinformatics/btp033",
+        g.drawString(MessageManager.getString("label.jalview_cite_1_ref"),
                 x, y += fh);
       }
     }
@@ -2719,7 +2722,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     Frame frame = new Frame();
     frame.add(new AboutPanel(JalviewLite.getVersion(), JalviewLite
             .getBuildDate()));
-    jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 220);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.jalview"), 580, 220);
 
   }
 
@@ -2740,33 +2743,33 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   MenuBar alignFrameMenuBar = new MenuBar();
 
-  Menu fileMenu = new Menu("File");
+  Menu fileMenu = new Menu(MessageManager.getString("action.file"));
 
-  MenuItem loadApplication = new MenuItem("View in Full Application");
+  MenuItem loadApplication = new MenuItem(MessageManager.getString("label.view_full_application"));
 
-  MenuItem loadTree = new MenuItem("Load Associated Tree ...");
+  MenuItem loadTree = new MenuItem(MessageManager.getString("label.load_associated_tree"));
 
-  MenuItem loadAnnotations = new MenuItem("Load Features/Annotations ...");
+  MenuItem loadAnnotations = new MenuItem(MessageManager.getString("label.load_features_annotations"));
 
-  MenuItem outputFeatures = new MenuItem("Export Features ...");
+  MenuItem outputFeatures = new MenuItem(MessageManager.getString("label.export_features"));
 
-  MenuItem outputAnnotations = new MenuItem("Export Annotations ...");
+  MenuItem outputAnnotations = new MenuItem(MessageManager.getString("label.export_annotations"));
 
-  MenuItem closeMenuItem = new MenuItem("Close");
+  MenuItem closeMenuItem = new MenuItem(MessageManager.getString("action.close"));
 
-  Menu editMenu = new Menu("Edit");
+  Menu editMenu = new Menu(MessageManager.getString("action.edit"));
 
-  Menu viewMenu = new Menu("View");
+  Menu viewMenu = new Menu(MessageManager.getString("action.view"));
 
-  Menu colourMenu = new Menu("Colour");
+  Menu colourMenu = new Menu(MessageManager.getString("action.colour"));
 
-  Menu calculateMenu = new Menu("Calculate");
+  Menu calculateMenu = new Menu(MessageManager.getString("action.calculate"));
 
-  MenuItem selectAllSequenceMenuItem = new MenuItem("Select all");
+  MenuItem selectAllSequenceMenuItem = new MenuItem(MessageManager.getString("action.select_all"));
 
-  MenuItem deselectAllSequenceMenuItem = new MenuItem("Deselect All");
+  MenuItem deselectAllSequenceMenuItem = new MenuItem(MessageManager.getString("action.deselect_all"));
 
-  MenuItem invertSequenceMenuItem = new MenuItem("Invert Selection");
+  MenuItem invertSequenceMenuItem = new MenuItem(MessageManager.getString("action.invert_selection"));
 
   MenuItem remove2LeftMenuItem = new MenuItem();
 
@@ -2842,7 +2845,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   CheckboxMenuItem displayNonconservedMenuItem = new CheckboxMenuItem();
 
-  MenuItem alProperties = new MenuItem("Alignment Properties...");
+  MenuItem alProperties = new MenuItem(MessageManager.getString("label.alignment_props"));
 
   MenuItem overviewMenuItem = new MenuItem();
 
@@ -2868,6 +2871,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   MenuItem grpsFromSelection = new MenuItem();
 
+  MenuItem createGroup = new MenuItem();
+
+  MenuItem unGroup = new MenuItem();
+
   MenuItem delete = new MenuItem();
 
   MenuItem copy = new MenuItem();
@@ -2969,191 +2976,193 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     selectAllSequenceMenuItem.addActionListener(this);
     deselectAllSequenceMenuItem.addActionListener(this);
     invertSequenceMenuItem.addActionListener(this);
-    remove2LeftMenuItem.setLabel("Remove Left");
+    remove2LeftMenuItem.setLabel(MessageManager.getString("action.remove_left"));
     remove2LeftMenuItem.addActionListener(this);
-    remove2RightMenuItem.setLabel("Remove Right");
+    remove2RightMenuItem.setLabel(MessageManager.getString("action.remove_right"));
     remove2RightMenuItem.addActionListener(this);
-    removeGappedColumnMenuItem.setLabel("Remove Empty Columns");
+    removeGappedColumnMenuItem.setLabel(MessageManager.getString("action.remove_empty_columns"));
     removeGappedColumnMenuItem.addActionListener(this);
-    removeAllGapsMenuItem.setLabel("Remove All Gaps");
+    removeAllGapsMenuItem.setLabel(MessageManager.getString("action.remove_all_gaps"));
     removeAllGapsMenuItem.addActionListener(this);
-    viewBoxesMenuItem.setLabel("Boxes");
+    viewBoxesMenuItem.setLabel(MessageManager.getString("action.boxes"));
     viewBoxesMenuItem.setState(true);
     viewBoxesMenuItem.addItemListener(this);
-    viewTextMenuItem.setLabel("Text");
+    viewTextMenuItem.setLabel(MessageManager.getString("action.text"));
     viewTextMenuItem.setState(true);
     viewTextMenuItem.addItemListener(this);
-    sortPairwiseMenuItem.setLabel("by Pairwise Identity");
+    sortPairwiseMenuItem.setLabel(MessageManager.getString("action.by_pairwise_id"));
     sortPairwiseMenuItem.addActionListener(this);
-    sortIDMenuItem.setLabel("by ID");
+    sortIDMenuItem.setLabel(MessageManager.getString("action.by_id"));
     sortIDMenuItem.addActionListener(this);
-    sortLengthMenuItem.setLabel("by Length");
+    sortLengthMenuItem.setLabel(MessageManager.getString("action.by_length"));
     sortLengthMenuItem.addActionListener(this);
-    sortGroupMenuItem.setLabel("by Group");
+    sortGroupMenuItem.setLabel(MessageManager.getString("action.by_group"));
     sortGroupMenuItem.addActionListener(this);
-    removeRedundancyMenuItem.setLabel("Remove Redundancy...");
+    removeRedundancyMenuItem.setLabel(MessageManager.getString("action.remove_redundancy"));
     removeRedundancyMenuItem.addActionListener(this);
-    pairwiseAlignmentMenuItem.setLabel("Pairwise Alignments...");
+    pairwiseAlignmentMenuItem.setLabel(MessageManager.getString("action.pairwise_alignment"));
     pairwiseAlignmentMenuItem.addActionListener(this);
-    PCAMenuItem.setLabel("Principal Component Analysis");
+    PCAMenuItem.setLabel(MessageManager.getString("label.principal_component_analysis"));
     PCAMenuItem.addActionListener(this);
     averageDistanceTreeMenuItem
-            .setLabel("Average Distance Using % Identity");
+            .setLabel(MessageManager.getString("label.average_distance_identity"));
     averageDistanceTreeMenuItem.addActionListener(this);
-    neighbourTreeMenuItem.setLabel("Neighbour Joining Using % Identity");
+    neighbourTreeMenuItem.setLabel(MessageManager.getString("label.neighbour_joining_identity"));
     neighbourTreeMenuItem.addActionListener(this);
     statusBar.setBackground(Color.white);
     statusBar.setFont(new java.awt.Font("Verdana", 0, 11));
-    statusBar.setText("Status bar");
-    outputTextboxMenu.setLabel("Output to Textbox");
-    clustalColour.setLabel("Clustalx");
+    statusBar.setText(MessageManager.getString("label.status_bar"));
+    outputTextboxMenu.setLabel(MessageManager.getString("label.out_to_textbox"));
+    clustalColour.setLabel(MessageManager.getString("label.clustalx"));
 
     clustalColour.addActionListener(this);
-    zappoColour.setLabel("Zappo");
+    zappoColour.setLabel(MessageManager.getString("label.zappo"));
     zappoColour.addActionListener(this);
-    taylorColour.setLabel("Taylor");
+    taylorColour.setLabel(MessageManager.getString("label.taylor"));
     taylorColour.addActionListener(this);
-    hydrophobicityColour.setLabel("Hydrophobicity");
+    hydrophobicityColour.setLabel(MessageManager.getString("label.hydrophobicity"));
     hydrophobicityColour.addActionListener(this);
-    helixColour.setLabel("Helix Propensity");
+    helixColour.setLabel(MessageManager.getString("label.helix_propensity"));
     helixColour.addActionListener(this);
-    strandColour.setLabel("Strand Propensity");
+    strandColour.setLabel(MessageManager.getString("label.strand_propensity"));
     strandColour.addActionListener(this);
-    turnColour.setLabel("Turn Propensity");
+    turnColour.setLabel(MessageManager.getString("label.turn_propensity"));
     turnColour.addActionListener(this);
-    buriedColour.setLabel("Buried Index");
+    buriedColour.setLabel(MessageManager.getString("label.buried_index"));
     buriedColour.addActionListener(this);
-    purinePyrimidineColour.setLabel("Purine/Pyrimidine");
+    purinePyrimidineColour.setLabel(MessageManager.getString("label.purine_pyrimidine"));
     purinePyrimidineColour.addActionListener(this);
-    RNAHelixColour.setLabel("by RNA Helices");
+    RNAHelixColour.setLabel(MessageManager.getString("action.by_rna_helixes"));
     RNAHelixColour.addActionListener(this);
-    userDefinedColour.setLabel("User Defined...");
+    userDefinedColour.setLabel(MessageManager.getString("action.user_defined"));
     userDefinedColour.addActionListener(this);
-    PIDColour.setLabel("Percentage Identity");
+    PIDColour.setLabel(MessageManager.getString("label.percentage_identity"));
     PIDColour.addActionListener(this);
-    BLOSUM62Colour.setLabel("BLOSUM62 Score");
+    BLOSUM62Colour.setLabel(MessageManager.getString("label.blosum62_score"));
     BLOSUM62Colour.addActionListener(this);
-    tcoffeeColour.setLabel("T-Coffee Scores");
+    tcoffeeColour.setLabel(MessageManager.getString("label.tcoffee_scores"));
     tcoffeeColour.setEnabled(false); // it will enabled only if a score file is
                                      // provided
     tcoffeeColour.addActionListener(this);
     avDistanceTreeBlosumMenuItem
-            .setLabel("Average Distance Using BLOSUM62");
+            .setLabel(MessageManager.getString("label.average_distance_bloslum62"));
     avDistanceTreeBlosumMenuItem.addActionListener(this);
-    njTreeBlosumMenuItem.setLabel("Neighbour Joining Using BLOSUM62");
+    njTreeBlosumMenuItem.setLabel(MessageManager.getString("label.neighbour_blosum62"));
     njTreeBlosumMenuItem.addActionListener(this);
-    annotationPanelMenuItem.setLabel("Show Annotations");
+    annotationPanelMenuItem.setLabel(MessageManager.getString("label.show_annotations"));
     annotationPanelMenuItem.addItemListener(this);
-    colourTextMenuItem.setLabel("Colour Text");
+    colourTextMenuItem.setLabel(MessageManager.getString("label.colour_text"));
     colourTextMenuItem.addItemListener(this);
-    displayNonconservedMenuItem.setLabel("Show nonconserved");
+    displayNonconservedMenuItem.setLabel(MessageManager.getString("label.show_non_conversed"));
     displayNonconservedMenuItem.addItemListener(this);
     alProperties.addActionListener(this);
-    overviewMenuItem.setLabel("Overview Window");
+    overviewMenuItem.setLabel(MessageManager.getString("label.overview_window"));
     overviewMenuItem.addActionListener(this);
     undoMenuItem.setEnabled(false);
-    undoMenuItem.setLabel("Undo");
+    undoMenuItem.setLabel(MessageManager.getString("action.undo"));
     undoMenuItem.addActionListener(this);
     redoMenuItem.setEnabled(false);
-    redoMenuItem.setLabel("Redo");
+    redoMenuItem.setLabel(MessageManager.getString("action.redo"));
     redoMenuItem.addActionListener(this);
-    conservationMenuItem.setLabel("by Conservation");
+    conservationMenuItem.setLabel(MessageManager.getString("action.by_conservation"));
     conservationMenuItem.addItemListener(this);
-    noColourmenuItem.setLabel("None");
+    noColourmenuItem.setLabel(MessageManager.getString("label.none"));
     noColourmenuItem.addActionListener(this);
-    wrapMenuItem.setLabel("Wrap");
+    wrapMenuItem.setLabel(MessageManager.getString("action.wrap"));
     wrapMenuItem.addItemListener(this);
-    renderGapsMenuItem.setLabel("Show Gaps");
+    renderGapsMenuItem.setLabel(MessageManager.getString("action.show_gaps"));
     renderGapsMenuItem.setState(true);
     renderGapsMenuItem.addItemListener(this);
-    findMenuItem.setLabel("Find...");
+    findMenuItem.setLabel(MessageManager.getString("action.find"));
     findMenuItem.addActionListener(this);
-    abovePIDThreshold.setLabel("Above Identity Threshold");
+    abovePIDThreshold.setLabel(MessageManager.getString("label.above_identity_threshold"));
     abovePIDThreshold.addItemListener(this);
-    nucleotideColour.setLabel("Nucleotide");
+    nucleotideColour.setLabel(MessageManager.getString("label.nucleotide"));
     nucleotideColour.addActionListener(this);
-    deleteGroups.setLabel("Undefine Groups");
+    deleteGroups.setLabel(MessageManager.getString("action.undefine_groups"));
     deleteGroups.addActionListener(this);
-    grpsFromSelection.setLabel("Make Groups for selection");
+    grpsFromSelection.setLabel(MessageManager.getString("action.make_groups_selection"));
     grpsFromSelection.addActionListener(this);
-    copy.setLabel("Copy");
+    createGroup.setLabel(MessageManager.getString("action.create_group"));
+    unGroup.setLabel(MessageManager.getString("action.remove_group"));
+    copy.setLabel(MessageManager.getString("action.copy"));
     copy.addActionListener(this);
-    cut.setLabel("Cut");
+    cut.setLabel(MessageManager.getString("action.cut"));
     cut.addActionListener(this);
-    delete.setLabel("Delete");
+    delete.setLabel(MessageManager.getString("action.delete"));
     delete.addActionListener(this);
-    pasteMenu.setLabel("Paste");
-    pasteNew.setLabel("To New Alignment");
+    pasteMenu.setLabel(MessageManager.getString("action.paste"));
+    pasteNew.setLabel(MessageManager.getString("label.to_new_alignment"));
     pasteNew.addActionListener(this);
-    pasteThis.setLabel("Add To This Alignment");
+    pasteThis.setLabel(MessageManager.getString("label.to_this_alignment"));
     pasteThis.addActionListener(this);
-    applyToAllGroups.setLabel("Apply Colour To All Groups");
+    applyToAllGroups.setLabel(MessageManager.getString("label.apply_colour_to_all_groups"));
     applyToAllGroups.setState(true);
     applyToAllGroups.addItemListener(this);
-    font.setLabel("Font...");
+    font.setLabel(MessageManager.getString("action.font"));
     font.addActionListener(this);
-    scaleAbove.setLabel("Scale Above");
+    scaleAbove.setLabel(MessageManager.getString("action.scale_above"));
     scaleAbove.setState(true);
     scaleAbove.setEnabled(false);
     scaleAbove.addItemListener(this);
     scaleLeft.setEnabled(false);
     scaleLeft.setState(true);
-    scaleLeft.setLabel("Scale Left");
+    scaleLeft.setLabel(MessageManager.getString("action.scale_left"));
     scaleLeft.addItemListener(this);
     scaleRight.setEnabled(false);
     scaleRight.setState(true);
-    scaleRight.setLabel("Scale Right");
+    scaleRight.setLabel(MessageManager.getString("action.scale_right"));
     scaleRight.addItemListener(this);
-    modifyPID.setLabel("Modify Identity Threshold...");
+    modifyPID.setLabel(MessageManager.getString("label.modify_identity_thereshold"));
     modifyPID.addActionListener(this);
-    modifyConservation.setLabel("Modify Conservation Threshold...");
+    modifyConservation.setLabel(MessageManager.getString("label.modify_conservation_thereshold"));
     modifyConservation.addActionListener(this);
-    sortByTreeMenu.setLabel("By Tree Order");
-    sort.setLabel("Sort");
-    calculate.setLabel("Calculate Tree");
+    sortByTreeMenu.setLabel(MessageManager.getString("action.by_tree_order"));
+    sort.setLabel(MessageManager.getString("action.sort"));
+    calculate.setLabel(MessageManager.getString("action.calculate_tree"));
     autoCalculate.addItemListener(this);
     sortByTree.addItemListener(this);
-    inputText.setLabel("Input from textbox");
+    inputText.setLabel(MessageManager.getString("label.input_from_textbox"));
     inputText.addActionListener(this);
-    centreColumnLabelFlag.setLabel("Centre column labels");
+    centreColumnLabelFlag.setLabel(MessageManager.getString("label.centre_column_labels"));
     centreColumnLabelFlag.addItemListener(this);
-    followMouseOverFlag.setLabel("Automatic Scrolling");
+    followMouseOverFlag.setLabel(MessageManager.getString("label.automatic_scrolling"));
     followMouseOverFlag.addItemListener(this);
-    helpMenu.setLabel("Help");
-    documentation.setLabel("Documentation");
+    helpMenu.setLabel(MessageManager.getString("action.help"));
+    documentation.setLabel(MessageManager.getString("label.documentation"));
     documentation.addActionListener(this);
 
-    about.setLabel("About...");
+    about.setLabel(MessageManager.getString("label.about"));
     about.addActionListener(this);
     seqLimits.setState(true);
-    seqLimits.setLabel("Show Sequence Limits");
+    seqLimits.setLabel(MessageManager.getString("label.show_sequence_limits"));
     seqLimits.addItemListener(this);
-    featureSettings.setLabel("Feature Settings...");
+    featureSettings.setLabel(MessageManager.getString("label.feature_settings"));
     featureSettings.addActionListener(this);
-    sequenceFeatures.setLabel("Sequence Features");
+    sequenceFeatures.setLabel(MessageManager.getString("label.sequence_features"));
     sequenceFeatures.addItemListener(this);
     sequenceFeatures.setState(false);
-    annotationColour.setLabel("by Annotation...");
+    annotationColour.setLabel(MessageManager.getString("action.by_annotation"));
     annotationColour.addActionListener(this);
-    invertSequenceMenuItem.setLabel("Invert Sequence Selection");
-    invertColSel.setLabel("Invert Column Selection");
-    menu1.setLabel("Show");
-    showColumns.setLabel("All Columns ");
-    showSeqs.setLabel("All Sequences");
-    menu2.setLabel("Hide");
-    hideColumns.setLabel("Selected Columns");
-    hideSequences.setLabel("Selected Sequences");
-    hideAllButSelection.setLabel("All but Selected Region (Shift+Ctrl+H)");
-    hideAllSelection.setLabel("Selected Region");
-    showAllHidden.setLabel("All Sequences and Columns");
-    showGroupConsensus.setLabel("Group Consensus");
-    showGroupConservation.setLabel("Group Conservation");
-    showConsensusHistogram.setLabel("Show Consensus Histogram");
-    showSequenceLogo.setLabel("Show Consensus Logo");
-    normSequenceLogo.setLabel("Normalise Consensus Logo");
-    applyAutoAnnotationSettings.setLabel("Apply to all groups");
+    invertSequenceMenuItem.setLabel(MessageManager.getString("action.invert_sequence_selection"));
+    invertColSel.setLabel(MessageManager.getString("action.invert_column_selection"));
+    menu1.setLabel(MessageManager.getString("action.show"));
+    showColumns.setLabel(MessageManager.getString("label.all_columns"));
+    showSeqs.setLabel(MessageManager.getString("label.all_sequences"));
+    menu2.setLabel(MessageManager.getString("aciton.hide"));
+    hideColumns.setLabel(MessageManager.getString("label.selected_columns"));
+    hideSequences.setLabel(MessageManager.getString("label.selected_sequences"));
+    hideAllButSelection.setLabel(MessageManager.getString("label.all_but_selected_region"));
+    hideAllSelection.setLabel(MessageManager.getString("label.selected_region"));
+    showAllHidden.setLabel(MessageManager.getString("label.all_sequences_columns"));
+    showGroupConsensus.setLabel(MessageManager.getString("label.group_consensus"));
+    showGroupConservation.setLabel(MessageManager.getString("label.group_conservation"));
+    showConsensusHistogram.setLabel(MessageManager.getString("label.show_consensus_histogram"));
+    showSequenceLogo.setLabel(MessageManager.getString("label.show_consensus_logo"));
+    normSequenceLogo.setLabel(MessageManager.getString("label.norm_consensus_logo"));
+    applyAutoAnnotationSettings.setLabel(MessageManager.getString("label.apply_all_groups"));
     applyAutoAnnotationSettings.setState(true);
-    autoAnnMenu.setLabel("Autocalculated Annotation");
+    autoAnnMenu.setLabel(MessageManager.getString("label.autocalculated_annotation"));
 
     invertColSel.addActionListener(this);
     showColumns.addActionListener(this);
@@ -3170,9 +3179,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     normSequenceLogo.addItemListener(this);
 
     applyAutoAnnotationSettings.addItemListener(this);
-    formatMenu.setLabel("Format");
-    selectMenu.setLabel("Select");
-    newView.setLabel("New View");
+    formatMenu.setLabel(MessageManager.getString("action.format"));
+    selectMenu.setLabel(MessageManager.getString("action.select"));
+    newView.setLabel(MessageManager.getString("action.new_view"));
     newView.addActionListener(this);
     alignFrameMenuBar.add(fileMenu);
     alignFrameMenuBar.add(editMenu);
@@ -3304,6 +3313,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     selectMenu.add(deselectAllSequenceMenuItem);
     selectMenu.add(invertSequenceMenuItem);
     selectMenu.add(invertColSel);
+    selectMenu.add(createGroup);
+    selectMenu.add(unGroup);
     selectMenu.add(grpsFromSelection);
     selectMenu.add(deleteGroups);
 
index cc04b58..9e4f071 100644 (file)
@@ -91,8 +91,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   public jalview.bin.JalviewLite applet;
 
-  Hashtable sequenceColours;
-
   boolean MAC = false;
 
   Stack historyList = new Stack();
@@ -592,35 +590,6 @@ public class AlignViewport extends AlignmentViewport implements
     showHiddenMarkers = show;
   }
 
-  public Color getSequenceColour(SequenceI seq)
-  {
-    if (sequenceColours == null || !sequenceColours.containsKey(seq))
-    {
-      return Color.white;
-    }
-    else
-    {
-      return (Color) sequenceColours.get(seq);
-    }
-  }
-
-  public void setSequenceColour(SequenceI seq, Color col)
-  {
-    if (sequenceColours == null)
-    {
-      sequenceColours = new Hashtable();
-    }
-
-    if (col == null)
-    {
-      sequenceColours.remove(seq);
-    }
-    else
-    {
-      sequenceColours.put(seq, col);
-    }
-  }
-
   boolean centreColumnLabels;
 
   public boolean getCentreColumnLabels()
@@ -628,21 +597,6 @@ public class AlignViewport extends AlignmentViewport implements
     return centreColumnLabels;
   }
 
-  public void updateSequenceIdColours()
-  {
-
-    for (SequenceGroup sg : alignment.getGroups())
-    {
-      if (sg.idColour != null)
-      {
-        for (SequenceI s : sg.getSequences(getHiddenRepSequences()))
-        {
-          this.setSequenceColour(s, sg.idColour);
-        }
-      }
-    }
-  }
-
   public boolean followHighlight = true;
 
   public boolean getFollowHighlight()
old mode 100755 (executable)
new mode 100644 (file)
index d26680d..3c0f704
@@ -24,6 +24,7 @@ import java.awt.event.*;
 
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 public class AnnotationColourChooser extends Panel implements
         ActionListener, AdjustmentListener, ItemListener, MouseListener
@@ -80,18 +81,19 @@ public class AnnotationColourChooser extends Panel implements
 
     setDefaultMinMax();
 
+    adjusting = true;
     if (oldcs instanceof AnnotationColourGradient)
     {
       AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
-      currentColours.setState(acg.predefinedColours);
-      if (!acg.predefinedColours)
+      currentColours.setState(acg.isPredefinedColours() || acg.getBaseColour()!=null);
+      if (!acg.isPredefinedColours() && acg.getBaseColour()==null)
       {
         minColour.setBackground(acg.getMinColour());
         maxColour.setBackground(acg.getMaxColour());
       }
+      // seqAssociated.setState(acg.isSeqAssociated());
     }
 
-    adjusting = true;
 
     Vector list = new Vector();
     int index = 1;
@@ -142,7 +144,7 @@ public class AnnotationColourChooser extends Panel implements
 
     frame = new Frame();
     frame.add(this);
-    jalview.bin.JalviewLite.addFrame(frame, "Colour by Annotation", 560,
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.colour_by_annotation"), 560,
             175);
     validate();
   }
@@ -170,21 +172,21 @@ public class AnnotationColourChooser extends Panel implements
   private void jbInit() throws Exception
   {
     minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    minColour.setLabel("Min Colour");
+    minColour.setLabel(MessageManager.getString("label.min_colour"));
     minColour.addActionListener(this);
 
     maxColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    maxColour.setLabel("Max Colour");
+    maxColour.setLabel(MessageManager.getString("label.max_colour"));
     maxColour.addActionListener(this);
 
     thresholdIsMin.addItemListener(this);
-    ok.setLabel("OK");
+    ok.setLabel(MessageManager.getString("action.ok"));
     ok.addActionListener(this);
 
-    cancel.setLabel("Cancel");
+    cancel.setLabel(MessageManager.getString("action.cancel"));
     cancel.addActionListener(this);
 
-    defColours.setLabel("Defaults");
+    defColours.setLabel(MessageManager.getString("action.set_defaults"));
     defColours.addActionListener(this);
 
     annotations.addItemListener(this);
@@ -197,11 +199,11 @@ public class AnnotationColourChooser extends Panel implements
     thresholdValue.setEnabled(false);
     thresholdValue.setColumns(5);
     currentColours.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    currentColours.setLabel("Use Original Colours");
+    currentColours.setLabel(MessageManager.getString("label.use_original_colours"));
     currentColours.addItemListener(this);
 
     thresholdIsMin.setBackground(Color.white);
-    thresholdIsMin.setLabel("Threshold is min/max");
+    thresholdIsMin.setLabel(MessageManager.getString("label.threshold_minmax"));
 
     this.setLayout(borderLayout1);
 
@@ -457,13 +459,14 @@ public class AnnotationColourChooser extends Panel implements
     if (currentAnnotation.graphMin == 0f
             && currentAnnotation.graphMax == 0f)
     {
-      acg.predefinedColours = true;
+      acg.setPredefinedColours(true);
     }
 
     acg.thresholdIsMinMax = thresholdIsMin.getState();
 
     av.setGlobalColourScheme(acg);
 
+    // TODO: per group colour propagation not always desired
     if (av.getAlignment().getGroups() != null)
     {
       for (SequenceGroup sg : ap.av.getAlignment().getGroups())
@@ -490,6 +493,7 @@ public class AnnotationColourChooser extends Panel implements
     }
 
     // update colours in linked windows
+    ap.alignmentChanged();
     ap.paintAlignment(true);
   }
 
index c85de33..a4b7af2 100755 (executable)
@@ -23,6 +23,7 @@ import java.awt.*;
 import java.awt.event.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 import jalview.util.ParseHtmlBodyAndLinks;
 
 public class AnnotationLabels extends Panel implements ActionListener,
@@ -405,7 +406,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
     if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
     {
 
-      PopupMenu popup = new PopupMenu("Annotations");
+      PopupMenu popup = new PopupMenu(MessageManager.getString("label.annotations"));
 
       MenuItem item = new MenuItem(ADDNEW);
       item.addActionListener(this);
@@ -762,11 +763,11 @@ public class AnnotationLabels extends Panel implements ActionListener,
               dragEvent.getY());
     }
 
-    if ((aa == null) || (aa.length < 1))
+    if (!av.wrapAlignment && ((aa == null) || (aa.length < 1)))
     {
       g.setColor(Color.black);
-      g.drawString("Right click", 2, 8);
-      g.drawString("to add annotation", 2, 18);
+      g.drawString(MessageManager.getString("label.right_click"), 2, 8);
+      g.drawString(MessageManager.getString("label.to_add_annotation"), 2, 18);
     }
   }
 }
index 540a0e0..7129eee 100755 (executable)
@@ -25,6 +25,7 @@ import java.awt.event.*;
 import jalview.datamodel.*;
 import jalview.renderer.AnnotationRenderer;
 import jalview.renderer.AwtRenderPanelI;
+import jalview.util.MessageManager;
 
 public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         AdjustmentListener, ActionListener, MouseListener,
@@ -253,10 +254,10 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
       }
     }
 
-    aa[activeRow].validateRangeAndDisplay();
+    av.getAlignment().validateAnnotation(aa[activeRow]);
 
-    adjustPanelHeight();
     ap.alignmentChanged();
+    adjustPanelHeight();
     repaint();
 
     return;
@@ -317,7 +318,7 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         return;
       }
 
-      PopupMenu pop = new PopupMenu("Structure type");
+      PopupMenu pop = new PopupMenu(MessageManager.getString("label.structure_type"));
       MenuItem item;
       /*
        * Just display the needed structure options
@@ -618,7 +619,7 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
       g.setColor(Color.black);
       if (av.validCharWidth)
       {
-        g.drawString("Alignment has no annotations", 20, 15);
+        g.drawString(MessageManager.getString("label.alignment_has_no_annotations"), 20, 15);
       }
 
       return;
@@ -653,4 +654,16 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
   {
     return imgWidth;
   }
+  private int[] bounds = new int[2];
+  @Override
+  public int[] getVisibleVRange()
+  {
+    if (ap!=null && ap.alabels!=null)
+    {
+    int sOffset=-ap.alabels.scrollOffset;
+    int visHeight = sOffset+ap.annotationPanelHolder.getHeight();
+    bounds[0] = sOffset; bounds[1]=visHeight;
+    return bounds;
+    } else return null;
+  }
 }
index a3dbe22..e109ae8 100644 (file)
@@ -27,51 +27,52 @@ import jalview.structure.*;
 import jalview.io.*;
 
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 public class AppletJmol extends EmbmenuFrame implements
 // StructureListener,
         KeyListener, ActionListener, ItemListener, SequenceStructureBinding
 
 {
-  Menu fileMenu = new Menu("File");
+  Menu fileMenu = new Menu(MessageManager.getString("action.file"));
 
-  Menu viewMenu = new Menu("View");
+  Menu viewMenu = new Menu(MessageManager.getString("action.view"));
 
-  Menu coloursMenu = new Menu("Colours");
+  Menu coloursMenu = new Menu(MessageManager.getString("action.colour"));
 
-  Menu chainMenu = new Menu("Show Chain");
+  Menu chainMenu = new Menu(MessageManager.getString("action.show_chain"));
 
-  Menu helpMenu = new Menu("Help");
+  Menu helpMenu = new Menu(MessageManager.getString("action.help"));
 
-  MenuItem mappingMenuItem = new MenuItem("View Mapping");
+  MenuItem mappingMenuItem = new MenuItem(MessageManager.getString("label.view_mapping"));
 
-  CheckboxMenuItem seqColour = new CheckboxMenuItem("By Sequence", true);
+  CheckboxMenuItem seqColour = new CheckboxMenuItem(MessageManager.getString("action.by_sequence"), true);
 
-  CheckboxMenuItem jmolColour = new CheckboxMenuItem("Using Jmol", false);
+  CheckboxMenuItem jmolColour = new CheckboxMenuItem(MessageManager.getString("action.using_jmol"), false);
 
-  MenuItem chain = new MenuItem("By Chain");
+  MenuItem chain = new MenuItem(MessageManager.getString("action.by_chain"));
 
-  MenuItem charge = new MenuItem("Charge & Cysteine");
+  MenuItem charge = new MenuItem(MessageManager.getString("label.charge_cysteine"));
 
-  MenuItem zappo = new MenuItem("Zappo");
+  MenuItem zappo = new MenuItem(MessageManager.getString("label.zappo"));
 
-  MenuItem taylor = new MenuItem("Taylor");
+  MenuItem taylor = new MenuItem(MessageManager.getString("label.taylor"));
 
-  MenuItem hydro = new MenuItem("Hydrophobicity");
+  MenuItem hydro = new MenuItem(MessageManager.getString("label.hydrophobicity"));
 
-  MenuItem helix = new MenuItem("Helix Propensity");
+  MenuItem helix = new MenuItem(MessageManager.getString("label.helix_propensity"));
 
-  MenuItem strand = new MenuItem("Strand Propensity");
+  MenuItem strand = new MenuItem(MessageManager.getString("label.strand_propensity"));
 
-  MenuItem turn = new MenuItem("Turn Propensity");
+  MenuItem turn = new MenuItem(MessageManager.getString("label.turn_propensity"));
 
-  MenuItem buried = new MenuItem("Buried Index");
+  MenuItem buried = new MenuItem(MessageManager.getString("label.buried_index"));
 
-  MenuItem purinepyrimidine = new MenuItem("Purine/Pyrimidine");
+  MenuItem purinepyrimidine = new MenuItem(MessageManager.getString("label.purine_pyrimidine"));
 
-  MenuItem user = new MenuItem("User Defined Colours");
+  MenuItem user = new MenuItem(MessageManager.getString("label.user_defined_colours"));
 
-  MenuItem jmolHelp = new MenuItem("Jmol Help");
+  MenuItem jmolHelp = new MenuItem(MessageManager.getString("label.jmol_help"));
 
   Panel scriptWindow;
 
@@ -328,7 +329,7 @@ public class AppletJmol extends EmbmenuFrame implements
   {
     chainMenu.removeAll();
 
-    MenuItem menuItem = new MenuItem("All");
+    MenuItem menuItem = new MenuItem(MessageManager.getString("label.all"));
     menuItem.addActionListener(this);
 
     chainMenu.add(menuItem);
@@ -396,7 +397,7 @@ public class AppletJmol extends EmbmenuFrame implements
                 .println("Out of memory when trying to create dialog box with sequence-structure mapping.");
         return;
       }
-      jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping",
+      jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.pdb_sequence_mapping"),
               550, 600);
     }
     else if (evt.getSource() == charge)
@@ -615,7 +616,7 @@ public class AppletJmol extends EmbmenuFrame implements
         g.fillRect(0, 0, currentSize.width, currentSize.height);
         g.setColor(Color.white);
         g.setFont(new Font("Verdana", Font.BOLD, 14));
-        g.drawString("Retrieving PDB data....", 20, currentSize.height / 2);
+        g.drawString(MessageManager.getString("label.retrieving_pdb_data"), 20, currentSize.height / 2);
       }
       else
       {
old mode 100755 (executable)
new mode 100644 (file)
index c7a49f3..8e758e6
@@ -23,6 +23,7 @@ import java.awt.event.*;
 import jalview.datamodel.*;
 import jalview.io.*;
 import jalview.schemes.TCoffeeColourScheme;
+import jalview.util.MessageManager;
 
 public class CutAndPasteTransfer extends Panel implements ActionListener,
         MouseListener
@@ -68,7 +69,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   public void setPDBImport(Sequence seq)
   {
     this.seq = seq;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
     pdbImport = true;
   }
@@ -76,14 +77,14 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   public void setTreeImport()
   {
     treeImport = true;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
   }
 
   public void setAnnotationImport()
   {
     annotationImport = true;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
   }
 
@@ -153,7 +154,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
       {
         // TODO: JAL-1102 - should have a warning message in dialog, not simply
         // overwrite the broken input data with the exception
-        textarea.setText("Could not parse Newick file!\n" + ex);
+        textarea.setText(MessageManager.formatMessage("label.could_not_parse_newick_file", new String[]{ex.getMessage()}));
         return;
       }
     }
@@ -174,14 +175,12 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
             alignFrame.changeColour(new TCoffeeColourScheme(
                     alignFrame.viewport.getAlignment()));
             alignFrame.statusBar
-                    .setText("Successfully pasted T-Coffee scores to alignment.");
+                    .setText(MessageManager.getString("label.successfully_pasted_tcoffee_scores_to_alignment"));
           }
           else
           {
             // file valid but didn't get added to alignment for some reason
-            alignFrame.statusBar.setText("Failed to add T-Coffee scores: "
-                    + (tcf.getWarningMessage() != null ? tcf
-                            .getWarningMessage() : ""));
+            alignFrame.statusBar.setText(MessageManager.formatMessage("label.failed_add_tcoffee_scores", new String[]{(tcf.getWarningMessage() != null ? tcf.getWarningMessage() : "")}));
           }
         }
         else
@@ -236,13 +235,13 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
         {
           AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet,
                   "Cut & Paste input - " + format, false);
-          af.statusBar.setText("Successfully pasted alignment file");
+          af.statusBar.setText(MessageManager.getString("label.successfully_pasted_annotation_to_alignment"));
         }
         else
         {
           alignFrame.addSequences(al.getSequencesArray());
           alignFrame.statusBar
-                  .setText("Successfully pasted alignment file");
+                  .setText(MessageManager.getString("label.successfully_pasted_alignment_file"));
         }
       }
     }
@@ -286,7 +285,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   private void jbInit() throws Exception
   {
     textarea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 10));
-    textarea.setText("Paste your alignment file here");
+    textarea.setText(MessageManager.getString("label.paste_your_alignment_file"));
     textarea.addMouseListener(this);
     this.setLayout(borderLayout1);
     accept.addActionListener(this);
@@ -301,7 +300,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
 
   public void mousePressed(MouseEvent evt)
   {
-    if (textarea.getText().startsWith("Paste your"))
+    if (textarea.getText().startsWith(MessageManager.getString("label.paste_your")))
     {
       textarea.setText("");
     }
index 235e82c..c36d680 100644 (file)
@@ -24,6 +24,7 @@ import java.awt.event.*;
 
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 public class FeatureColourChooser extends Panel implements ActionListener,
         AdjustmentListener, ItemListener, MouseListener
@@ -143,7 +144,7 @@ public class FeatureColourChooser extends Panel implements ActionListener,
 
   private void jbInit() throws Exception
   {
-    Label minLabel = new Label("Min:"), maxLabel = new Label("Max:");
+    Label minLabel = new Label(MessageManager.getString("label.min")), maxLabel = new Label(MessageManager.getString("label.max"));
     minLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
     maxLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
     // minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
@@ -182,11 +183,11 @@ public class FeatureColourChooser extends Panel implements ActionListener,
     jPanel3.setBackground(Color.white);
 
     colourFromLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    colourFromLabel.setLabel("Colour by Label");
+    colourFromLabel.setLabel(MessageManager.getString("label.colour_by_label"));
     colourFromLabel.setSize(new Dimension(139, 22));
     // threshold.setBounds(new Rectangle(11, 3, 139, 22));
     thresholdIsMin.setBackground(Color.white);
-    thresholdIsMin.setLabel("Threshold is min/max");
+    thresholdIsMin.setLabel(MessageManager.getString("label.threshold_minmax"));
     thresholdIsMin.setSize(new Dimension(135, 23));
     // thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23));
     jPanel1.add(minLabel);
old mode 100755 (executable)
new mode 100644 (file)
index dd236bd..a14c321
@@ -26,6 +26,7 @@ import java.awt.event.*;
 import jalview.datamodel.*;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.GraduatedColor;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -194,7 +195,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
           g.setColor(Color.black);
           Font f = new Font("Verdana", Font.PLAIN, 10);
           g.setFont(f);
-          g.drawString("Label", 0, 0);
+          g.drawString(MessageManager.getString("label.label"), 0, 0);
         }
         else
         {
@@ -364,7 +365,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     }
     else
     {
-      dialog.ok.setLabel("Amend");
+      dialog.ok.setLabel(MessageManager.getString("label.amend"));
       dialog.buttonPanel.add(deleteButton, 1);
       deleteButton.addActionListener(new ActionListener()
       {
index db7d9b3..267a251 100755 (executable)
@@ -27,6 +27,7 @@ import jalview.commands.OrderCommand;
 import jalview.datamodel.*;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.GraduatedColor;
+import jalview.util.MessageManager;
 
 public class FeatureSettings extends Panel implements ItemListener,
         MouseListener, MouseMotionListener, ActionListener,
@@ -146,16 +147,16 @@ public class FeatureSettings extends Panel implements ItemListener,
     height = Math.max(200, height);
     height = Math.min(400, height);
     int width = 300;
-    jalview.bin.JalviewLite.addFrame(frame, "Feature Settings", width,
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.feature_settings"), width,
             height);
   }
 
   public void paint(Graphics g)
   {
     g.setColor(Color.black);
-    g.drawString("No Features added to this alignment!!", 10, 20);
-    g.drawString("(Features can be added from searches or", 10, 40);
-    g.drawString("from Jalview / GFF features files)", 10, 60);
+    g.drawString(MessageManager.getString("label.no_features_added_to_this_alignment"), 10, 20);
+    g.drawString(MessageManager.getString("label.features_can_be_added_from_searches_1"), 10, 40);
+    g.drawString(MessageManager.getString("label.features_can_be_added_from_searches_2"), 10, 60);
   }
 
   protected void popupSort(final MyCheckbox check, final Hashtable minmax,
@@ -163,8 +164,8 @@ public class FeatureSettings extends Panel implements ItemListener,
   {
     final String type = check.type;
     final Object typeCol = fr.getFeatureStyle(type);
-    java.awt.PopupMenu men = new PopupMenu("Settings for " + type);
-    java.awt.MenuItem scr = new MenuItem("Sort by Score");
+    java.awt.PopupMenu men = new PopupMenu(MessageManager.formatMessage("label.settings_for_type", new String[]{type}));
+    java.awt.MenuItem scr = new MenuItem(MessageManager.getString("label.sort_by_score"));
     men.add(scr);
     final FeatureSettings me = this;
     scr.addActionListener(new ActionListener()
@@ -177,7 +178,7 @@ public class FeatureSettings extends Panel implements ItemListener,
       }
 
     });
-    MenuItem dens = new MenuItem("Sort by Density");
+    MenuItem dens = new MenuItem(MessageManager.getString("label.sort_by_density"));
     dens.addActionListener(new ActionListener()
     {
 
old mode 100755 (executable)
new mode 100644 (file)
index 7722461..93ab314
@@ -23,6 +23,7 @@ import java.awt.*;
 import java.awt.event.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 
 public class Finder extends Panel implements ActionListener
 {
@@ -53,7 +54,7 @@ public class Finder extends Panel implements ActionListener
     this.ap = ap;
     frame = new Frame();
     frame.add(this);
-    jalview.bin.JalviewLite.addFrame(frame, "Find", 340, 120);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("action.find"), 340, 120);
     frame.repaint();
     frame.addWindowListener(new WindowAdapter()
     {
@@ -163,7 +164,7 @@ public class Finder extends Panel implements ActionListener
     // 'SelectRegion' selection
     if (!haveResults)
     {
-      ap.alignFrame.statusBar.setText("Finished searching.");
+      ap.alignFrame.statusBar.setText(MessageManager.getString("label.finished_searching"));
       resIndex = -1;
       seqIndex = 0;
     }
@@ -182,14 +183,13 @@ public class Finder extends Panel implements ActionListener
         {
           message += searchResults.getSize() + " subsequence matches.";
         }
-        ap.alignFrame.statusBar.setText("Search results: " + searchString
-                + " : " + message);
+        ap.alignFrame.statusBar.setText(MessageManager.formatMessage("label.search_results", new String[] {searchString, message}));
 
       }
       else
       {
         // TODO: indicate sequence and matching position in status bar
-        ap.alignFrame.statusBar.setText("Found match for " + searchString);
+        ap.alignFrame.statusBar.setText(MessageManager.formatMessage("label.found_match_for", new String[]{searchString}));
       }
     }
   }
@@ -213,7 +213,7 @@ public class Finder extends Panel implements ActionListener
   private void jbInit() throws Exception
   {
     jLabel1.setFont(new java.awt.Font("Verdana", 0, 12));
-    jLabel1.setText("Find");
+    jLabel1.setText(MessageManager.getString("action.find"));
     jLabel1.setBounds(new Rectangle(3, 30, 34, 15));
     this.setLayout(null);
     textfield.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
@@ -228,11 +228,11 @@ public class Finder extends Panel implements ActionListener
     });
     textfield.addActionListener(this);
     findAll.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
-    findAll.setLabel("Find all");
+    findAll.setLabel(MessageManager.getString("action.find_all"));
     findAll.addActionListener(this);
     findNext.setEnabled(false);
     findNext.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
-    findNext.setLabel("Find Next");
+    findNext.setLabel(MessageManager.getString("action.find_next"));
     findNext.addActionListener(this);
     jPanel1.setBounds(new Rectangle(180, 5, 141, 64));
     jPanel1.setLayout(gridLayout1);
@@ -241,9 +241,9 @@ public class Finder extends Panel implements ActionListener
     gridLayout1.setVgap(2);
     createNewGroup.setEnabled(false);
     createNewGroup.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
-    createNewGroup.setLabel("New Feature");
+    createNewGroup.setLabel(MessageManager.getString("label.new_feature"));
     createNewGroup.addActionListener(this);
-    caseSensitive.setLabel("Match Case");
+    caseSensitive.setLabel(MessageManager.getString("label.match_case"));
     caseSensitive.setBounds(new Rectangle(40, 49, 126, 23));
     jPanel1.add(findNext, null);
     jPanel1.add(findAll, null);
old mode 100755 (executable)
new mode 100644 (file)
index 5df659b..7de8789
@@ -17,6 +17,8 @@
  */
 package jalview.appletgui;
 
+import jalview.util.MessageManager;
+
 import java.awt.*;
 import java.awt.event.*;
 
@@ -87,7 +89,7 @@ public class FontChooser extends Panel implements ActionListener,
     Frame frame = new Frame();
     this.frame = frame;
     frame.add(this);
-    jalview.bin.JalviewLite.addFrame(frame, "Change Font", 440, 115);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("action.change_font"), 440, 115);
 
     init = false;
   }
@@ -272,7 +274,7 @@ public class FontChooser extends Panel implements ActionListener,
   {
     label1.setFont(new java.awt.Font("Verdana", 0, 11));
     label1.setAlignment(Label.RIGHT);
-    label1.setText("Font: ");
+    label1.setText(MessageManager.getString("label.font"));
     this.setLayout(borderLayout4);
     fontSize.setFont(new java.awt.Font("Verdana", 0, 11));
     fontSize.addItemListener(this);
@@ -280,17 +282,17 @@ public class FontChooser extends Panel implements ActionListener,
     fontStyle.addItemListener(this);
     label2.setAlignment(Label.RIGHT);
     label2.setFont(new java.awt.Font("Verdana", 0, 11));
-    label2.setText("Size: ");
+    label2.setText(MessageManager.getString("label.size"));
     label3.setAlignment(Label.RIGHT);
     label3.setFont(new java.awt.Font("Verdana", 0, 11));
-    label3.setText("Style: ");
+    label3.setText(MessageManager.getString("label.style"));
     fontName.setFont(new java.awt.Font("Verdana", 0, 11));
     fontName.addItemListener(this);
     ok.setFont(new java.awt.Font("Verdana", 0, 11));
-    ok.setLabel("OK");
+    ok.setLabel(MessageManager.getString("action.ok"));
     ok.addActionListener(this);
     cancel.setFont(new java.awt.Font("Verdana", 0, 11));
-    cancel.setLabel("Cancel");
+    cancel.setLabel(MessageManager.getString("action.cancel"));
     cancel.addActionListener(this);
     this.setBackground(Color.white);
     panel1.setLayout(borderLayout1);
old mode 100755 (executable)
new mode 100644 (file)
index 9ddb132..bcd3634
@@ -21,6 +21,7 @@ import java.awt.*;
 import java.awt.event.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 import jalview.viewmodel.PCAModel;
 
 public class PCAPanel extends EmbmenuFrame implements Runnable,
@@ -83,7 +84,7 @@ public class PCAPanel extends EmbmenuFrame implements Runnable,
     embedMenuIfNeeded(rc);
     add(rc, BorderLayout.CENTER);
 
-    jalview.bin.JalviewLite.addFrame(this, "Principal component analysis",
+    jalview.bin.JalviewLite.addFrame(this, MessageManager.getString("label.principal_component_analysis"),
             475, 400);
 
     Thread worker = new Thread(this);
@@ -217,7 +218,7 @@ public class PCAPanel extends EmbmenuFrame implements Runnable,
     CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null);
     Frame frame = new Frame();
     frame.add(cap);
-    jalview.bin.JalviewLite.addFrame(frame, "PCA details", 500, 500);
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.pca_details"), 500, 500);
 
     cap.setText(pcaModel.getDetails());
   }
@@ -314,20 +315,20 @@ public class PCAPanel extends EmbmenuFrame implements Runnable,
     xCombobox.setFont(new java.awt.Font("Verdana", 0, 12));
     xCombobox.addItemListener(this);
     resetButton.setFont(new java.awt.Font("Verdana", 0, 12));
-    resetButton.setLabel("Reset");
+    resetButton.setLabel(MessageManager.getString("action.reset"));
     resetButton.addActionListener(this);
     this.setMenuBar(menuBar1);
-    menu1.setLabel("File");
-    menu2.setLabel("View");
-    calcSettings.setLabel("Change Parameters");
-    labels.setLabel("Labels");
+    menu1.setLabel(MessageManager.getString("action.file"));
+    menu2.setLabel(MessageManager.getString("action.view"));
+    calcSettings.setLabel(MessageManager.getString("action.change_params"));
+    labels.setLabel(MessageManager.getString("label.labels"));
     labels.addItemListener(this);
-    values.setLabel("Output Values...");
+    values.setLabel(MessageManager.getString("label.output_values"));
     values.addActionListener(this);
-    inputData.setLabel("Input Data...");
-    nuclSetting.setLabel("Nucleotide matrix");
+    inputData.setLabel(MessageManager.getString("label.input_data"));
+    nuclSetting.setLabel(MessageManager.getString("label.nucleotide_matrix"));
     nuclSetting.addItemListener(this);
-    protSetting.setLabel("Protein matrix");
+    protSetting.setLabel(MessageManager.getString("label.protein_matrix"));
     protSetting.addItemListener(this);
     this.add(jPanel2, BorderLayout.SOUTH);
     jPanel2.add(jLabel1, null);
old mode 100755 (executable)
new mode 100644 (file)
index 8841864..a377892
@@ -24,6 +24,7 @@ import java.awt.event.*;
 
 import jalview.analysis.*;
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 
 public class PairwiseAlignPanel extends Panel implements ActionListener
 {
@@ -160,7 +161,7 @@ public class PairwiseAlignPanel extends Panel implements ActionListener
     textarea.setFont(new java.awt.Font("Monospaced", 0, 12));
     textarea.setText("");
     viewInEditorButton.setFont(new java.awt.Font("Verdana", 0, 12));
-    viewInEditorButton.setLabel("View in alignment editor");
+    viewInEditorButton.setLabel(MessageManager.getString("label.view_alignment_editor"));
     viewInEditorButton.addActionListener(this);
     this.add(scrollPane, BorderLayout.CENTER);
     scrollPane.add(textarea);
old mode 100755 (executable)
new mode 100644 (file)
index ef00017..d91e53b
@@ -25,6 +25,7 @@ import java.awt.event.*;
 import jalview.analysis.AlignSeq;
 import jalview.commands.*;
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 
 public class RedundancyPanel extends SliderPanel implements Runnable,
         WindowListener
@@ -49,7 +50,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable,
     applyButton.setVisible(true);
     allGroupsCheck.setVisible(false);
 
-    label.setText("Enter the redundancy threshold");
+    label.setText(MessageManager.getString("label.enter_redundancy_threshold"));
     valueField.setText("100");
 
     slider.setVisibleAmount(1);
@@ -69,7 +70,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable,
     frame = new Frame();
     frame.add(this);
     jalview.bin.JalviewLite.addFrame(frame,
-            "Redundancy threshold selection", 400, 100);
+            MessageManager.getString("label.redundancy_threshold_selection"), 400, 100);
 
     frame.addWindowListener(this);
 
@@ -91,7 +92,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable,
    */
   public void run()
   {
-    label.setText("Calculating....");
+    label.setText(MessageManager.getString("label.calculating"));
 
     slider.setVisible(false);
     applyButton.setEnabled(false);
@@ -123,7 +124,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable,
 
     redundancy = AlignSeq.computeRedundancyMatrix(originalSequences,
             omitHidden, start, end, false);
-    label.setText("Enter the redundancy threshold");
+    label.setText(MessageManager.getString("label.enter_redundancy_threshold"));
     slider.setVisible(true);
     applyButton.setEnabled(true);
     valueField.setVisible(true);
index e8294ba..86d06d9 100755 (executable)
@@ -316,7 +316,7 @@ public class RotatableCanvas extends Panel implements MouseListener,
     if (points == null)
     {
       g.setFont(new Font("Verdana", Font.PLAIN, 18));
-      g.drawString("Calculating PCA....", 20, getSize().height / 2);
+      g.drawString(MessageManager.getString("label.calculating_pca") + "....", 20, getSize().height / 2);
     }
     else
     {
index baa4165..cd78fab 100755 (executable)
@@ -21,6 +21,7 @@ import java.awt.*;
 import java.awt.event.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 
 public class ScalePanel extends Panel implements MouseMotionListener,
         MouseListener
@@ -76,7 +77,7 @@ public class ScalePanel extends Panel implements MouseMotionListener,
       PopupMenu pop = new PopupMenu();
       if (reveal != null)
       {
-        MenuItem item = new MenuItem("Reveal");
+        MenuItem item = new MenuItem(MessageManager.getString("label.reveal"));
         item.addActionListener(new ActionListener()
         {
           public void actionPerformed(ActionEvent e)
@@ -94,7 +95,7 @@ public class ScalePanel extends Panel implements MouseMotionListener,
 
         if (av.getColumnSelection().getHiddenColumns().size() > 1)
         {
-          item = new MenuItem("Reveal All");
+          item = new MenuItem(MessageManager.getString("action.reveal_all"));
           item.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
@@ -115,7 +116,7 @@ public class ScalePanel extends Panel implements MouseMotionListener,
       }
       else if (av.getColumnSelection().contains(res))
       {
-        MenuItem item = new MenuItem("Hide Columns");
+        MenuItem item = new MenuItem(MessageManager.getString("label.hide_columns"));
         item.addActionListener(new ActionListener()
         {
           public void actionPerformed(ActionEvent e)
@@ -447,7 +448,7 @@ public class ScalePanel extends Panel implements MouseMotionListener,
 
       if (reveal != null && reveal[0] > startx && reveal[0] < endx)
       {
-        gg.drawString("Reveal Columns", reveal[0] * av.charWidth, 0);
+        gg.drawString(MessageManager.getString("label.reveal_columns"), reveal[0] * av.charWidth, 0);
       }
     }
 
index 5238750..89289c0 100644 (file)
@@ -146,7 +146,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(
             seqCanvas.cursorY);
 
-    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1() - 1);
+    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1;
     scrollToVisible();
   }
 
@@ -342,31 +342,35 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       keyboardNo1.append(value);
     }
   }
-
   int getKeyboardNo1()
   {
-    if (keyboardNo1 == null)
-      return 1;
-    else
+    try {
+    if (keyboardNo1 != null) 
     {
       int value = Integer.parseInt(keyboardNo1.toString());
       keyboardNo1 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo1 = null;
+    return 1;
   }
 
   int getKeyboardNo2()
   {
-    if (keyboardNo2 == null)
-      return 1;
-    else
-    {
+    try {
+    if (keyboardNo2!=null){
       int value = Integer.parseInt(keyboardNo2.toString());
       keyboardNo2 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo2 = null;
+    return 1;
   }
-
+  
   void setStatusMessage(SequenceI sequence, int res, int seq)
   {
     StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: "
old mode 100755 (executable)
new mode 100644 (file)
index d25caa4..886c194
@@ -24,6 +24,7 @@ import java.awt.event.*;
 
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 public class SliderPanel extends Panel implements ActionListener,
         AdjustmentListener, MouseListener
@@ -167,14 +168,14 @@ public class SliderPanel extends Panel implements ActionListener,
     applyButton.setVisible(false);
     if (forConservation)
     {
-      label.setText("Modify conservation visibility");
+      label.setText(MessageManager.getString("label.modify_conservation_visibility"));
       slider.setMinimum(0);
       slider.setMaximum(50 + slider.getVisibleAmount());
       slider.setUnitIncrement(1);
     }
     else
     {
-      label.setText("Colour residues above % occurence");
+      label.setText(MessageManager.getString("label.colour_residues_above_occurence"));
       slider.setMinimum(0);
       slider.setMaximum(100 + slider.getVisibleAmount());
       slider.setBlockIncrement(1);
@@ -316,20 +317,20 @@ public class SliderPanel extends Panel implements ActionListener,
     valueField.setText("      ");
     valueField.addActionListener(this);
     label.setFont(new java.awt.Font("Verdana", 0, 11));
-    label.setText("set this label text");
+    label.setText(MessageManager.getString("label.set_this_label_text"));
     jPanel1.setLayout(borderLayout1);
     jPanel2.setLayout(flowLayout1);
     applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    applyButton.setLabel("Apply");
+    applyButton.setLabel(MessageManager.getString("action.apply"));
     applyButton.addActionListener(this);
     undoButton.setEnabled(false);
     undoButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    undoButton.setLabel("Undo");
+    undoButton.setLabel(MessageManager.getString("action.undo"));
     undoButton.addActionListener(this);
     allGroupsCheck.setEnabled(false);
     allGroupsCheck.setFont(new java.awt.Font("Verdana", 0, 11));
-    allGroupsCheck.setLabel("Apply threshold to all groups");
-    allGroupsCheck.setName("Apply to all Groups");
+    allGroupsCheck.setLabel(MessageManager.getString("action.apply_threshold_all_groups"));
+    allGroupsCheck.setName(MessageManager.getString("action.apply_all_groups"));
     this.setBackground(Color.white);
     this.setForeground(Color.black);
     jPanel2.add(label, null);
index 5c62234..68ffd7a 100755 (executable)
@@ -578,7 +578,7 @@ public class TreeCanvas extends Panel implements MouseListener,
 
         av.setSelectionGroup(null);
         av.getAlignment().deleteAllGroups();
-        av.sequenceColours = null;
+        av.clearSequenceColours();
 
         colourGroups();
 
index 65f3d91..5f3f6f6 100644 (file)
@@ -23,6 +23,7 @@ import java.awt.event.*;
 import jalview.analysis.*;
 import jalview.datamodel.*;
 import jalview.io.*;
+import jalview.util.MessageManager;
 
 public class TreePanel extends EmbmenuFrame implements ActionListener,
         ItemListener
@@ -351,22 +352,22 @@ public class TreePanel extends EmbmenuFrame implements ActionListener,
     setLayout(borderLayout1);
     this.setBackground(Color.white);
     this.setFont(new java.awt.Font("Verdana", 0, 12));
-    jMenu2.setLabel("View");
-    fontSize.setLabel("Font...");
+    jMenu2.setLabel(MessageManager.getString("action.view"));
+    fontSize.setLabel(MessageManager.getString("action.font"));
     fontSize.addActionListener(this);
-    bootstrapMenu.setLabel("Show Bootstrap Values");
+    bootstrapMenu.setLabel(MessageManager.getString("label.show_bootstrap_values"));
     bootstrapMenu.addItemListener(this);
-    distanceMenu.setLabel("Show Distances");
+    distanceMenu.setLabel(MessageManager.getString("label.show_distances"));
     distanceMenu.addItemListener(this);
-    placeholdersMenu.setLabel("Mark Unassociated Leaves");
+    placeholdersMenu.setLabel(MessageManager.getString("label.mark_unassociated_leaves"));
     placeholdersMenu.addItemListener(this);
     fitToWindow.setState(true);
-    fitToWindow.setLabel("Fit To Window");
+    fitToWindow.setLabel(MessageManager.getString("label.fit_to_window"));
     fitToWindow.addItemListener(this);
-    fileMenu.setLabel("File");
-    newickOutput.setLabel("Newick Format");
+    fileMenu.setLabel(MessageManager.getString("action.file"));
+    newickOutput.setLabel(MessageManager.getString("label.newick_format"));
     newickOutput.addActionListener(this);
-    inputData.setLabel("Input Data...");
+    inputData.setLabel(MessageManager.getString("label.input_data"));
 
     add(scrollPane, BorderLayout.CENTER);
     jMenuBar1.add(fileMenu);
old mode 100755 (executable)
new mode 100644 (file)
index 4735006..55f7c65
@@ -22,6 +22,7 @@ import jalview.schemes.ColourSchemeI;
 import jalview.schemes.GraduatedColor;
 import jalview.schemes.ResidueProperties;
 import jalview.schemes.UserColourScheme;
+import jalview.util.MessageManager;
 
 import java.awt.Button;
 import java.awt.Color;
@@ -274,7 +275,7 @@ public class UserDefinedColours extends Panel implements ActionListener,
     }
     frame = new Frame();
     frame.add(this);
-    jalview.bin.JalviewLite.addFrame(frame, "User defined colours", 420,
+    jalview.bin.JalviewLite.addFrame(frame, MessageManager.getString("label.user_defined_colours"), 420,
             345);
 
     if (seqGroup != null)
@@ -630,13 +631,13 @@ public class UserDefinedColours extends Panel implements ActionListener,
     gridLayout.setColumns(6);
     gridLayout.setRows(4);
     okButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    okButton.setLabel("OK");
+    okButton.setLabel(MessageManager.getString("action.ok"));
     okButton.addActionListener(this);
     applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    applyButton.setLabel("Apply");
+    applyButton.setLabel(MessageManager.getString("action.apply"));
     applyButton.addActionListener(this);
     cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    cancelButton.setLabel("Cancel");
+    cancelButton.setLabel(MessageManager.getString("action.cancel"));
     cancelButton.addActionListener(this);
     this.setBackground(new Color(212, 208, 223));
     okcancelPanel.setBounds(new Rectangle(0, 265, 400, 35));
index 5d26b85..f3c8745 100755 (executable)
  */
 package jalview.bin;
 
+import jalview.util.MessageManager;
 import jalview.ws.dbsources.das.api.DasSourceRegistryI;
 import jalview.ws.dbsources.das.datamodel.DasSourceRegistry;
 
 import java.awt.Color;
 import java.io.*;
 import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 import org.apache.log4j.*;
@@ -780,8 +780,7 @@ public class Cache
     setProperty(property, jalview.util.Format.getHexString(colour));
   }
 
-  public static final DateFormat date_format = SimpleDateFormat
-          .getDateTimeInstance();
+  public static final DateFormat date_format = DateFormat.getDateInstance(DateFormat.LONG,MessageManager.getLocale());
 
   /**
    * store a date in a jalview property
index 5e4569a..142b4c3 100755 (executable)
@@ -128,6 +128,11 @@ public class Jalview
                       + "\n~Read documentation in Application or visit http://www.jalview.org for description of Features and Annotations file~\n\n");
       System.exit(0);
     }
+    if (aparser.contains("nodisplay") || aparser.contains("nogui") || aparser.contains("headless"))
+    {
+      System.setProperty("java.awt.headless", "true");
+      headless=true;
+    }
     Cache.loadProperties(aparser.getValue("props")); // must do this before
     // anything else!
     String defs = aparser.getValue("setprop");
@@ -147,10 +152,6 @@ public class Jalview
       }
       defs = aparser.getValue("setprop");
     }
-    if (aparser.contains("nodisplay"))
-    {
-      System.setProperty("java.awt.headless", "true");
-    }
     if (System.getProperty("java.awt.headless") != null
             && System.getProperty("java.awt.headless").equals("true"))
     {
index 438bd7d..c3e56c6 100644 (file)
@@ -40,6 +40,7 @@ import jalview.javascript.JalviewLiteJsApi;
 import jalview.javascript.JsCallBack;
 import jalview.structure.SelectionListener;
 import jalview.structure.StructureSelectionManager;
+import jalview.util.MessageManager;
 
 import java.applet.Applet;
 import java.awt.Button;
@@ -1474,7 +1475,7 @@ public class JalviewLite extends Applet implements
       // still be called to open new alignments.
       file = "NO FILE";
       fileFound = false;
-      // callInitCallback();
+      callInitCallback();
     }
   }
 
@@ -1610,15 +1611,15 @@ public class JalviewLite extends Applet implements
       g.setColor(Color.cyan);
       g.fillRect(0, 0, getSize().width, getSize().height);
       g.setColor(Color.red);
-      g.drawString("Jalview can't open file", 5, 15);
+      g.drawString(MessageManager.getString("label.jalview_cannot_open_file"), 5, 15);
       g.drawString("\"" + file + "\"", 5, 30);
     }
     else if (embedded)
     {
       g.setColor(Color.black);
       g.setFont(new Font("Arial", Font.BOLD, 24));
-      g.drawString("Jalview Applet", 50, getSize().height / 2 - 30);
-      g.drawString("Loading Data...", 50, getSize().height / 2);
+      g.drawString(MessageManager.getString("label.jalview_applet"), 50, getSize().height / 2 - 30);
+      g.drawString(MessageManager.getString("label.loading_data") + "...", 50, getSize().height / 2);
     }
   }
 
@@ -1825,11 +1826,10 @@ public class JalviewLite extends Applet implements
 
         if (protocol == jalview.io.AppletFormatAdapter.PASTE)
         {
-          newAlignFrame.setTitle("Sequences from "
-                  + applet.getDocumentBase());
+          newAlignFrame.setTitle(MessageManager.formatMessage("label.sequences_from", new String[]{applet.getDocumentBase().toString()}));
         }
 
-        newAlignFrame.statusBar.setText("Successfully loaded file " + file);
+        newAlignFrame.statusBar.setText(MessageManager.formatMessage("label.successfully_loaded_file", new String []{file}));
 
         String treeFile = applet.getParameter("tree");
         if (treeFile == null)
diff --git a/src/jalview/controller/AlignViewController.java b/src/jalview/controller/AlignViewController.java
new file mode 100644 (file)
index 0000000..16e8cdd
--- /dev/null
@@ -0,0 +1,100 @@
+package jalview.controller;
+
+import java.awt.Color;
+
+import jalview.api.AlignViewControllerI;
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+
+public class AlignViewController implements AlignViewControllerI
+{
+  AlignViewportI viewport=null;
+  AlignmentViewPanel alignPanel=null;
+  @Override
+  protected void finalize() throws Throwable {
+    viewport = null;
+    alignPanel = null;
+  };
+  
+  public AlignViewController(AlignViewportI viewport,
+          AlignmentViewPanel alignPanel)
+  {
+    this.viewport=viewport;
+    this.alignPanel = alignPanel;
+  }
+  @Override
+  public void setViewportAndAlignmentPanel(AlignViewportI viewport,AlignmentViewPanel alignPanel)
+  {
+    this.alignPanel = alignPanel;
+    this.viewport = viewport;
+    
+  }
+  @Override
+  public boolean makeGroupsFromSelection()
+  {
+
+    if (viewport.getSelectionGroup() != null)
+    {
+      SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom(
+              viewport.getSequenceSelection(),
+              viewport.getAlignmentView(true).getSequenceStrings(
+                      viewport.getGapCharacter()), viewport.getAlignment()
+                      .getGroups());
+      viewport.getAlignment().deleteAllGroups();
+      viewport.clearSequenceColours();
+      viewport.setSelectionGroup(null);
+      // set view properties for each group
+      for (int g = 0; g < gps.length; g++)
+      {
+        // gps[g].setShowunconserved(viewport.getShowUnconserved());
+        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
+        viewport.getAlignment().addGroup(gps[g]);
+        Color col = new Color((int) (Math.random() * 255),
+                (int) (Math.random() * 255), (int) (Math.random() * 255));
+        col = col.brighter();
+        for (SequenceI sq : gps[g].getSequences(null))
+          viewport.setSequenceColour(sq, col);
+      }
+      return true;
+    }
+    return false;
+}
+  @Override
+  public boolean createGroup()
+  {
+
+    SequenceGroup sg = viewport.getSelectionGroup();
+    if (sg!=null)
+    {
+        viewport.getAlignment().addGroup(sg);
+        return true;
+      } 
+    return false;
+  }
+  @Override
+  public boolean unGroup()
+  {
+    SequenceGroup sg = viewport.getSelectionGroup();
+    if (sg!=null)
+    {
+        viewport.getAlignment().deleteGroup(sg);
+        return true;
+    }
+    return false;
+  }
+  @Override
+  public boolean deleteGroups()
+  {
+    if (viewport.getAlignment().getGroups()!=null && viewport.getAlignment().getGroups().size()>0)
+    {
+    viewport.getAlignment().deleteAllGroups();
+    viewport.clearSequenceColours();
+    viewport.setSelectionGroup(null);
+    return true;
+    }
+    return false;
+  }
+    
+  }
index 48b3346..6215a93 100644 (file)
@@ -120,7 +120,7 @@ public class AlignedCodonFrame
     if (aspos < aaWidth)
     {
       aaWidth++;
-      System.arraycopy(codons, aspos, codons, aspos + 1, aaWidth - aspos);
+      System.arraycopy(codons, aspos, codons, aspos + 1, codons.length - aspos - 1);
       codons[aspos] = null; // clear so new codon position can be marked.
     }
   }
index 83aab4e..70663aa 100755 (executable)
@@ -1385,13 +1385,17 @@ public class Alignment implements AlignmentI
           SequenceGroup groupRef)
   {
     assert (name != null);
-    for (AlignmentAnnotation annot : getAlignmentAnnotation())
+    if (annotations != null)
     {
-      if (annot.autoCalculated == autoCalc && (name.equals(annot.label))
-              && (calcId == null || annot.getCalcId().equals(calcId))
-              && annot.sequenceRef == seqRef && annot.groupRef == groupRef)
+      for (AlignmentAnnotation annot : getAlignmentAnnotation())
       {
-        return annot;
+        if (annot.autoCalculated == autoCalc && (name.equals(annot.label))
+                && (calcId == null || annot.getCalcId().equals(calcId))
+                && annot.sequenceRef == seqRef
+                && annot.groupRef == groupRef)
+        {
+          return annot;
+        }
       }
     }
     AlignmentAnnotation annot = new AlignmentAnnotation(name, name,
@@ -1475,5 +1479,22 @@ public class Alignment implements AlignmentI
 
     }
   }
-
+ @Override
+ public void validateAnnotation(AlignmentAnnotation alignmentAnnotation)
+ {
+   alignmentAnnotation.validateRangeAndDisplay();
+   if (isNucleotide() && alignmentAnnotation.isValidStruc())
+   {
+     hasRNAStructure = true;
+   }
+ }
+ @Override
+public int getEndRes()
+{
+  return getWidth()-1;
+}@Override
+public int getStartRes()
+{
+  return 0;
+}
 }
index 06026ef..64dcabb 100755 (executable)
@@ -469,4 +469,10 @@ public interface AlignmentI extends AnnotatedCollectionI
    */
   public void moveSelectedSequencesByOne(SequenceGroup sg,
           Map<SequenceI, SequenceCollectionI> map, boolean up);
+
+  /**
+   * validate annotation after an edit and update any alignment state flags accordingly
+   * @param alignmentAnnotation
+   */
+  public void validateAnnotation(AlignmentAnnotation alignmentAnnotation);
 }
index 73611bd..f692234 100755 (executable)
  */
 package jalview.datamodel;
 
-import java.awt.*;
+import java.awt.Color;
 
 /**
- * DOCUMENT ME!
+ * Holds all annotation values for a position in an AlignmentAnnotation row
  * 
  * @author $author$
  * @version $Revision$
  */
 public class Annotation
 {
-  /** DOCUMENT ME!! */
+  /** Character label - also shown below histogram */
   public String displayCharacter = "";
 
-  /** DOCUMENT ME!! */
-  public String description = ""; // currently used as mouse over
+  /**
+   * Text label for position: shown in mouse over and displayed on secondary
+   * structure glyphs
+   */
+  public String description = "";
 
-  /** DOCUMENT ME!! */
-  public char secondaryStructure = ' '; // recognises H, E and S(?)
+  /**
+   * Secondary structure symbol: Protein symbols are H, E and S(?), RNA are
+   * WUSS/Vienna plus extended pseudoknot symbols
+   */
+  public char secondaryStructure = ' ';
 
-  /** DOCUMENT ME!! */
+  /** Score for the position - used in histograms, line graphs and for shading */
   public float value;
 
-  // add visual cues here
-
-  /** DOCUMENT ME!! */
+  /** Colour for position */
   public Color colour;
 
   /**
@@ -117,4 +121,66 @@ public class Annotation
   {
     this(null, null, ' ', val);
   }
+
+  /**
+   * human readable representation of an annotation row element.
+   *
+   * Format is 'display Char','secondary Structure
+   * Char',"description",score,[colourstring]
+   *
+   * fields may be missing if they are null, whitespace, or equivalent to
+   * Float.NaN
+   */
+  @Override
+  public String toString()
+  {
+    StringBuffer sb = new StringBuffer();
+    if (displayCharacter != null)
+    {
+      sb.append("\'");
+      sb.append(displayCharacter);
+      sb.append("\'");
+    }
+    {
+      sb.append(",");
+    }
+    if (secondaryStructure != 0
+            && !("" + displayCharacter).equals("" + secondaryStructure))
+    {
+      sb.append("\'");
+      sb.append(secondaryStructure);
+      sb.append("\'");
+    }
+    {
+      sb.append(",");
+    }
+    if (description != null && description.length() > 0)
+    {
+      sb.append("\"");
+      sb.append(description);
+      sb.append("\"");
+    }
+    {
+      sb.append(",");
+    }
+    if (value != Float.NaN)
+    {
+      sb.append(value);
+    }
+    if (colour != null)
+    {
+      if (sb.length() > 0)
+      {
+        sb.append(",");
+      }
+      sb.append("[");
+      sb.append(colour.getRed());
+      sb.append(",");
+      sb.append(colour.getGreen());
+      sb.append(",");
+      sb.append(colour.getBlue());
+      sb.append("]");
+    }
+    return sb.toString();
+  }
 }
index 494ffae..001f6b2 100755 (executable)
@@ -51,4 +51,19 @@ public class GraphLine
       displayed = from.displayed;
     }
   }
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (obj!=null && obj instanceof GraphLine)
+    {
+      GraphLine other = (GraphLine) obj;
+      return displayed == other.displayed
+              && value == other.value
+              && (colour != null ? (other.colour != null && other.colour
+                      .equals(colour)) : other.colour == null)
+              && (label != null ? (other.label != null && other.label
+                      .equals(label)) : other.label == null);
+    }
+    return false;
+  }
 }
index 580c850..fa063ff 100755 (executable)
@@ -707,6 +707,7 @@ public class Sequence implements SequenceI
     {
       tmp = new char[i];
       System.arraycopy(sequence, 0, tmp, 0, i);
+      j=sequence.length;
     }
     else
     {
@@ -715,6 +716,9 @@ public class Sequence implements SequenceI
       System.arraycopy(sequence, j, tmp, i, sequence.length - j);
     }
     boolean createNewDs = false;
+    // TODO: take a look at the new dataset creation validation method below -
+    // this could become time comsuming for large sequences - consider making it
+    // more efficient
     for (int s = i; s < j; s++)
     {
       if (jalview.schemes.ResidueProperties.aaIndex[sequence[s]] != 23)
index c5cee01..f0d7284 100644 (file)
@@ -29,4 +29,16 @@ public interface SequenceCollectionI
 
   int getWidth();
 
+  /** 
+  * @return the first column included in this collection. Runs from 0<=i<N_cols
+  */
+  int getStartRes();
+  
+
+  /**
+   * 
+   * @return the last column in this collection. Runs from 0<=i<N_cols
+   */
+  int getEndRes();
+
 }
index c42a955..9ed3a53 100755 (executable)
@@ -493,7 +493,7 @@ public class SequenceGroup implements AnnotatedCollectionI
               endRes + 1, showSequenceLogo);
       if (consensus != null)
       {
-        _updateConsensusRow(cnsns);
+        _updateConsensusRow(cnsns, sequences.size());
       }
       if (cs != null)
       {
@@ -552,7 +552,7 @@ public class SequenceGroup implements AnnotatedCollectionI
 
   public Hashtable[] consensusData = null;
 
-  private void _updateConsensusRow(Hashtable[] cnsns)
+  private void _updateConsensusRow(Hashtable[] cnsns, long nseq)
   {
     if (consensus == null)
     {
@@ -569,7 +569,7 @@ public class SequenceGroup implements AnnotatedCollectionI
     consensus.annotations = new Annotation[aWidth]; // should be alignment width
 
     AAFrequency.completeConsensus(consensus, cnsns, startRes, endRes + 1,
-            ignoreGapsInConsensus, showSequenceLogo); // TODO: setting container
+            ignoreGapsInConsensus, showSequenceLogo, nseq); // TODO: setting container
                                                       // for
                                                       // ignoreGapsInConsensusCalculation);
   }
@@ -612,9 +612,9 @@ public class SequenceGroup implements AnnotatedCollectionI
   }
 
   /**
-   * DOCUMENT ME!
    * 
-   * @return DOCUMENT ME!
+   * 
+   * @return the first column selected by this group. Runs from 0<=i<N_cols
    */
   public int getStartRes()
   {
@@ -622,9 +622,8 @@ public class SequenceGroup implements AnnotatedCollectionI
   }
 
   /**
-   * DOCUMENT ME!
    * 
-   * @return DOCUMENT ME!
+   * @return the groups last selected column. Runs from 0<=i<N_cols
    */
   public int getEndRes()
   {
@@ -1034,12 +1033,12 @@ public class SequenceGroup implements AnnotatedCollectionI
     {
       consensus = new AlignmentAnnotation("", "", new Annotation[1], 0f,
               100f, AlignmentAnnotation.BAR_GRAPH);
+      consensus.hasText = true;
+      consensus.autoCalculated = true;
+      consensus.groupRef = this;
+      consensus.label = "Consensus for " + getName();
+      consensus.description = "Percent Identity";
     }
-    consensus.hasText = true;
-    consensus.autoCalculated = true;
-    consensus.groupRef = this;
-    consensus.label = "Consensus for " + getName();
-    consensus.description = "Percent Identity";
     return consensus;
   }
 
index aded6e8..5f9b049 100755 (executable)
@@ -97,21 +97,21 @@ public interface SequenceI
   public String getSequenceAsString();
 
   /**
-   * get a range on the seuqence as a string
+   * get a range on the sequence as a string
    * 
    * @param start
-   *          DOCUMENT ME!
+   *          position relative to start of sequence including gaps (from 0)
    * @param end
-   *          DOCUMENT ME!
+   *          position relative to start of sequence including gaps (from 0)
    * 
-   * @return DOCUMENT ME!
+   * @return String containing all gap and symbols in specified range
    */
   public String getSequenceAsString(int start, int end);
 
   /**
-   * DOCUMENT ME!
+   * Get the sequence as a character array
    * 
-   * @return DOCUMENT ME!
+   * @return seqeunce and any gaps
    */
   public char[] getSequence();
 
index 257ca8c..f31272a 100644 (file)
@@ -323,9 +323,55 @@ public abstract class JalviewJmolBinding implements StructureListener,
   public void superposeStructures(AlignmentI[] _alignment,
           int[] _refStructure, ColumnSelection[] _hiddenCols)
   {
+    assert (_alignment.length == _refStructure.length && _alignment.length != _hiddenCols.length);
+
     String[] files = getPdbFile();
+    // check to see if we are still waiting for Jmol files
+    long starttime=System.currentTimeMillis();
+    boolean waiting=true;
+    do {
+      waiting=false;
+      for (String file:files)
+      {
+        try {
+          // HACK - in Jalview 2.8 this call may not be threadsafe so we catch
+          // every possible exception
+          StructureMapping[] sm = ssm.getMapping(file);
+          if (sm == null || sm.length == 0)
+          {
+            waiting = true;
+          }
+        } catch (Exception x)
+        {
+          waiting = true;
+        } catch (Error q)
+        {
+          waiting = true;
+        }
+      }
+      // we wait around for a reasonable time before we give up
+    } while (waiting && System.currentTimeMillis()<(10000+1000*files.length+starttime));
+    if (waiting)
+    {
+      System.err.println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures.");
+      return;
+    }
     StringBuffer selectioncom = new StringBuffer();
-    assert (_alignment.length == _refStructure.length && _alignment.length != _hiddenCols.length);
+    // In principle - nSeconds specifies the speed of animation for each
+    // superposition - but is seems to behave weirdly, so we don't specify it.
+    String nSeconds = " ";
+    if (files.length > 10)
+    {
+      nSeconds = " 0.00001 ";
+    }
+    else
+    {
+      nSeconds = " " + (2.0 / files.length) + " ";
+      // if (nSeconds).substring(0,5)+" ";
+    }
+    // see JAL-1345 - should really automatically turn off the animation for
+    // large numbers of structures, but Jmol doesn't seem to allow that.
+    nSeconds = " ";
     // union of all aligned positions are collected together.
     for (int a = 0; a < _alignment.length; a++)
     {
@@ -370,8 +416,9 @@ public abstract class JalviewJmolBinding implements StructureListener,
         // RACE CONDITION - getMapping only returns Jmol loaded filenames once
         // Jmol callback has completed.
         if (mapping == null || mapping.length < 1)
-          continue;
-
+        {
+          throw new Error("Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016");
+        }
         int lastPos = -1;
         for (int s = 0; s < sequence[pdbfnum].length; s++)
         {
@@ -436,6 +483,13 @@ public abstract class JalviewJmolBinding implements StructureListener,
           }
         }
       }
+      
+      // TODO: consider bailing if nmatched less than 4 because superposition
+      // not
+      // well defined.
+      // TODO: refactor superposable position search (above) from jmol selection
+      // construction (below)
+
       String[] selcom = new String[files.length];
       int nmatched = 0;
       // generate select statements to select regions to superimpose structures
@@ -501,11 +555,6 @@ public abstract class JalviewJmolBinding implements StructureListener,
           }
         }
       }
-      // TODO: consider bailing if nmatched less than 4 because superposition
-      // not
-      // well defined.
-      // TODO: refactor superposable position search (above) from jmol selection
-      // construction (below)
       for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
       {
         if (pdbfnum == refStructure)
@@ -517,7 +566,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
         command.append(chainNames[pdbfnum]);
         command.append(") against reference (");
         command.append(chainNames[refStructure]);
-        command.append(")\";\ncompare ");
+        command.append(")\";\ncompare "+nSeconds);
         command.append("{");
         command.append(1 + pdbfnum);
         command.append(".1} {");
old mode 100755 (executable)
new mode 100644 (file)
index 77c3b6a..62fd29d
@@ -24,6 +24,7 @@ import jalview.analysis.CrossRef;
 import jalview.analysis.NJTree;
 import jalview.analysis.ParseProperties;
 import jalview.analysis.SequenceIdMatcher;
+import jalview.api.AlignViewControllerI;
 import jalview.bin.Cache;
 import jalview.commands.CommandI;
 import jalview.commands.EditCommand;
@@ -75,8 +76,10 @@ import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
+import jalview.util.MessageManager;
 import jalview.ws.jws1.Discoverer;
 import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
 import java.awt.BorderLayout;
@@ -144,6 +147,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public AlignmentPanel alignPanel;
 
   AlignViewport viewport;
+  public AlignViewControllerI avc;
 
   Vector alignPanels = new Vector();
 
@@ -287,6 +293,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   void init()
   {
+    avc = new jalview.controller.AlignViewController(viewport, alignPanel);
     if (viewport.getAlignmentConservationAnnotation() == null)
     {
       BLOSUM62Colour.setEnabled(false);
@@ -329,7 +336,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     addKeyListener();
-
+    
   }
 
   /**
@@ -475,8 +482,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
         case KeyEvent.VK_F2:
           viewport.cursorMode = !viewport.cursorMode;
-          statusBar.setText("Keyboard editing mode is "
-                  + (viewport.cursorMode ? "on" : "off"));
+          statusBar.setText(MessageManager.formatMessage("label.keyboard_editing_mode", new String[]{(viewport.cursorMode ? "on" : "off")}));
           if (viewport.cursorMode)
           {
             alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes;
@@ -557,6 +563,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public void addAlignmentPanel(final AlignmentPanel ap, boolean newPanel)
   {
     ap.alignFrame = this;
+    avc = new jalview.controller.AlignViewController(viewport, alignPanel);
 
     alignPanels.addElement(ap);
 
@@ -734,7 +741,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     rnahelicesColour
             .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
     setShowProductsEnabled();
-
     updateEditMenuBar();
   }
 
@@ -808,7 +814,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
     if (handler.canCancel())
     {
-      JButton cancel = new JButton("Cancel");
+      JButton cancel = new JButton(MessageManager.getString("action.cancel"));
       final IProgressIndicator us = this;
       cancel.addActionListener(new ActionListener()
       {
@@ -988,8 +994,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       if (currentFileFormat == null)
       {
         JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                "You must select a file format before saving!",
-                "File format not specified", JOptionPane.WARNING_MESSAGE);
+                MessageManager.getString("label.select_file_format_before_saving"),
+                MessageManager.getString("label.file_format_not_specified"), JOptionPane.WARNING_MESSAGE);
         value = chooser.showSaveDialog(this);
         return;
       }
@@ -1025,8 +1031,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
       success = new Jalview2XML().SaveAlignment(this, file, shortName);
 
-      statusBar.setText("Successfully saved to file: " + fileName + " in "
-              + format + " format.");
+      statusBar.setText(MessageManager.formatMessage("label.successfully_saved_to_file_in_format",new String[]{fileName, format}));
+
 
     }
     else
@@ -1047,9 +1053,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         int reply = JOptionPane
                 .showInternalConfirmDialog(
                         Desktop.desktop,
-                        "The Alignment contains hidden columns."
-                                + "\nDo you want to save only the visible alignment?",
-                        "Save / Omit Hidden Columns",
+                        MessageManager.getString("label.alignment_contains_hidden_columns"),
+                        MessageManager.getString("action.save_omit_hidden_columns"),
                         JOptionPane.YES_NO_OPTION,
                         JOptionPane.QUESTION_MESSAGE);
 
@@ -1079,8 +1084,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           out.print(output);
           out.close();
           this.setTitle(file);
-          statusBar.setText("Successfully saved to file: " + fileName
-                  + " in " + format + " format.");
+          statusBar.setText(MessageManager.formatMessage("label.successfully_saved_to_file_in_format",new String[]{fileName, format}));
         } catch (Exception ex)
         {
           success = false;
@@ -1091,8 +1095,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (!success)
     {
-      JOptionPane.showInternalMessageDialog(this, "Couldn't save file: "
-              + fileName, "Error Saving File", JOptionPane.WARNING_MESSAGE);
+      JOptionPane.showInternalMessageDialog(this, MessageManager.formatMessage("label.couldnt_save_file", new String[]{fileName}),
+              MessageManager.getString("label.error_saving_file"), JOptionPane.WARNING_MESSAGE);
     }
 
     return success;
@@ -1129,9 +1133,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       int reply = JOptionPane
               .showInternalConfirmDialog(
                       Desktop.desktop,
-                      "The Alignment contains hidden columns."
-                              + "\nDo you want to output only the visible alignment?",
-                      "Save / Omit Hidden Columns",
+                      MessageManager.getString("label.alignment_contains_hidden_columns"),
+                      MessageManager.getString("action.save_omit_hidden_columns"),
                       JOptionPane.YES_NO_OPTION,
                       JOptionPane.QUESTION_MESSAGE);
 
@@ -1347,12 +1350,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       undoMenuItem.setEnabled(true);
       CommandI command = (CommandI) viewport.historyList.peek();
-      undoMenuItem.setText("Undo " + command.getDescription());
+      undoMenuItem.setText(MessageManager.formatMessage("label.undo_command", new String[]{command.getDescription()}));
     }
     else
     {
       undoMenuItem.setEnabled(false);
-      undoMenuItem.setText("Undo");
+      undoMenuItem.setText(MessageManager.getString("action.undo"));
     }
 
     if (viewport.redoList.size() > 0)
@@ -1360,12 +1363,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       redoMenuItem.setEnabled(true);
 
       CommandI command = (CommandI) viewport.redoList.peek();
-      redoMenuItem.setText("Redo " + command.getDescription());
+      redoMenuItem.setText(MessageManager.formatMessage("label.redo_command", new String[]{command.getDescription()}));
     }
     else
     {
       redoMenuItem.setEnabled(false);
-      redoMenuItem.setText("Redo");
+      redoMenuItem.setText(MessageManager.getString("action.redo"));
     }
   }
 
@@ -1693,7 +1696,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     Desktop.jalviewClipboard = new Object[]
     { seqs, viewport.getAlignment().getDataset(), hiddenColumns };
-    statusBar.setText("Copied " + seqs.length + " sequences to clipboard.");
+    statusBar.setText(MessageManager.formatMessage("label.copied_sequences_to_clipboard", new String[]{Integer.valueOf(seqs.length).toString()}));
   }
 
   /**
@@ -2135,12 +2138,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   protected void deleteGroups_actionPerformed(ActionEvent e)
   {
-    viewport.getAlignment().deleteAllGroups();
-    viewport.sequenceColours = null;
-    viewport.setSelectionGroup(null);
-    PaintRefresher.Refresh(this, viewport.getSequenceSetId());
-    alignPanel.updateAnnotation();
-    alignPanel.paintAlignment(true);
+    if (avc.deleteGroups()) {
+      PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+      alignPanel.updateAnnotation();
+      alignPanel.paintAlignment(true);
+    }
   }
 
   /**
@@ -2294,7 +2296,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                 viewport.getSelectionGroup());
       }
 
-      statusBar.setText("Removed " + trimRegion.getSize() + " columns.");
+      statusBar.setText(MessageManager.formatMessage("label.removed_columns", new String[]{Integer.valueOf(trimRegion.getSize()).toString()}));
 
       addHistoryItem(trimRegion);
 
@@ -2342,8 +2344,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     addHistoryItem(removeGapCols);
 
-    statusBar.setText("Removed " + removeGapCols.getSize()
-            + " empty columns.");
+    statusBar.setText(MessageManager.formatMessage("label.removed_empty_columns", new String[]{Integer.valueOf(removeGapCols.getSize()).toString()}));
 
     // This is to maintain viewport position on first residue
     // of first sequence
@@ -2537,7 +2538,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     newap.av.viewName = newViewName;
 
     addAlignmentPanel(newap, true);
-
+    newap.alignmentChanged();
+    
     if (alignPanels.size() == 2)
     {
       viewport.gatherViewsHere = true;
@@ -2951,7 +2953,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     editPane.setEditable(false);
     StringBuffer contents = new AlignmentProperties(viewport.getAlignment())
             .formatAsHtml();
-    editPane.setText("<html>" + contents.toString() + "</html>");
+    editPane.setText(MessageManager.formatMessage("label.html_content", new String[]{contents.toString()}));
     JInternalFrame frame = new JInternalFrame();
     frame.getContentPane().add(new JScrollPane(editPane));
 
@@ -3411,8 +3413,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
               int option = JOptionPane.showInternalConfirmDialog(
                       jalview.gui.Desktop.desktop,
-                      "Remove from default list?",
-                      "Remove user defined colour",
+                      MessageManager.getString("label.remove_from_default_list"),
+                      MessageManager.getString("label.remove_user_defined_colour"),
                       JOptionPane.YES_NO_OPTION);
               if (option == JOptionPane.YES_OPTION)
               {
@@ -3564,7 +3566,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             || (viewport.getSelectionGroup().getSize() < 2))
     {
       JOptionPane.showInternalMessageDialog(this,
-              "You must select at least 2 sequences.", "Invalid Selection",
+              MessageManager.getString("label.you_must_select_least_two_sequences"), MessageManager.getString("label.invalid_selection"),
               JOptionPane.WARNING_MESSAGE);
     }
     else
@@ -3590,9 +3592,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             || (viewport.getAlignment().getHeight() < 4))
     {
       JOptionPane.showInternalMessageDialog(this,
-              "Principal component analysis must take\n"
-                      + "at least 4 input sequences.",
-              "Sequence selection insufficient",
+              MessageManager.getString("label.principal_component_analysis_must_take_least_four_input_sequences"),
+              MessageManager.getString("label.sequence_selection_insufficient"),
               JOptionPane.WARNING_MESSAGE);
 
       return;
@@ -3694,8 +3695,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         JOptionPane
                 .showMessageDialog(
                         Desktop.desktop,
-                        "You need to have more than two sequences selected to build a tree!",
-                        "Not enough sequences", JOptionPane.WARNING_MESSAGE);
+                        MessageManager.getString("label.you_need_more_two_sequences_selected_build_tree"),
+                        MessageManager.getString("label.not_enough_sequences"), JOptionPane.WARNING_MESSAGE);
         return;
       }
 
@@ -3709,10 +3710,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           JOptionPane
                   .showMessageDialog(
                           Desktop.desktop,
-                          "The selected region to create a tree may\nonly contain residues or gaps.\n"
-                                  + "Try using the Pad function in the edit menu,\n"
-                                  + "or one of the multiple sequence alignment web services.",
-                          "Sequences in selection are not aligned",
+                          MessageManager.getString("label.selected_region_to_tree_may_only_contain_residues_or_gaps"),
+                          MessageManager.getString("label.sequences_selection_not_aligned"),
                           JOptionPane.WARNING_MESSAGE);
 
           return;
@@ -3730,10 +3729,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         JOptionPane
                 .showMessageDialog(
                         Desktop.desktop,
-                        "The sequences must be aligned before creating a tree.\n"
-                                + "Try using the Pad function in the edit menu,\n"
-                                + "or one of the multiple sequence alignment web services.",
-                        "Sequences not aligned",
+                        MessageManager.getString("label.sequences_must_be_aligned_before_creating_tree"),
+                        MessageManager.getString("label.sequences_not_aligned"),
                         JOptionPane.WARNING_MESSAGE);
 
         return;
@@ -4047,13 +4044,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       } catch (Exception ex)
       {
         JOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(),
-                "Problem reading tree file", JOptionPane.WARNING_MESSAGE);
+                MessageManager.getString("label.problem_reading_tree_file"), JOptionPane.WARNING_MESSAGE);
         ex.printStackTrace();
       }
       if (fin != null && fin.hasWarningMessage())
       {
         JOptionPane.showMessageDialog(Desktop.desktop,
-                fin.getWarningMessage(), "Possible problem with tree file",
+                fin.getWarningMessage(), MessageManager.getString("label.possible_problem_with_tree_file"),
                 JOptionPane.WARNING_MESSAGE);
       }
     }
@@ -4158,6 +4155,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       @Override
       public void run()
       {
+        final List<JMenuItem> legacyItems=new ArrayList<JMenuItem>();
         try
         {
           System.err.println("Building ws menu again "
@@ -4189,28 +4187,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             // TODO: refactor to allow list of AbstractName/Handler bindings to
             // be
             // stored or retrieved from elsewhere
-            Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
+            // No MSAWS used any more:
+            // Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
             Vector secstrpr = (Vector) Discoverer.services
                     .get("SecStrPred");
-            Vector seqsrch = null; // (Vector)
-                                   // Discoverer.services.get("SeqSearch");
-            // TODO: move GUI generation code onto service implementation - so a
-            // client instance attaches itself to the GUI with method call like
-            // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance,
-            // alignframe)
-            if (msaws != null)
-            {
-              // Add any Multiple Sequence Alignment Services
-              for (int i = 0, j = msaws.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws
-                        .get(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(msawsmenu, me);
-
-              }
-            }
             if (secstrpr != null)
             {
               // Add any secondary structure prediction services
@@ -4220,35 +4200,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         .get(i);
                 jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
                         .getServiceClient(sh);
+                int p=secstrmenu.getItemCount();
                 impl.attachWSMenuEntry(secstrmenu, me);
-              }
-            }
-            if (seqsrch != null)
-            {
-              // Add any sequence search services
-              for (int i = 0, j = seqsrch.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch
-                        .elementAt(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(seqsrchmenu, me);
+                int q=secstrmenu.getItemCount();
+                for (int litm=p;litm<q; litm++)
+                {
+                  legacyItems.add(secstrmenu.getItem(litm));
+                }
               }
             }
           }
-
+          
           // Add all submenus in the order they should appear on the web
           // services menu
           wsmenu.add(msawsmenu);
           wsmenu.add(secstrmenu);
           wsmenu.add(dismenu);
           wsmenu.add(analymenu);
-          // final ArrayList<JMenu> submens=new ArrayList<JMenu>();
-          // submens.add(msawsmenu);
-          // submens.add(secstrmenu);
-          // submens.add(dismenu);
-          // submens.add(analymenu);
-
           // No search services yet
           // wsmenu.add(seqsrchmenu);
 
@@ -4273,6 +4241,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   webService.add(me.webServiceNoServices);
                 }
                 // TODO: move into separate menu builder class.
+                boolean new_sspred=false;
                 if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
                 {
                   Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer();
@@ -4281,6 +4250,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     if (jws2servs.hasServices())
                     {
                       jws2servs.attachWSMenuEntry(webService, me);
+                      for (Jws2Instance sv:jws2servs.getServices()) {
+                        if (sv.description.toLowerCase().contains("jpred"))
+                        {
+                          for (JMenuItem jmi:legacyItems)
+                          {
+                            jmi.setVisible(false);
+                          }
+                        }
+                      }
+                      
                     }
                     if (jws2servs.isRunning())
                     {
@@ -4291,7 +4270,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     }
                   }
                 }
-
                 build_urlServiceMenu(me.webService);
                 build_fetchdbmenu(webService);
                 for (JMenu item : wsmenu)
@@ -4573,8 +4551,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       JOptionPane
               .showMessageDialog(
                       Desktop.desktop,
-                      "Please select at least three bases in at least one sequence in order to perform a cDNA translation.",
-                      "Translation Failed", JOptionPane.WARNING_MESSAGE);
+                      MessageManager.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"),
+                      MessageManager.getString("label.translation_failed"), JOptionPane.WARNING_MESSAGE);
     }
     else
     {
@@ -4603,15 +4581,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     } catch (Exception ex)
     {
       al = null;
-      jalview.bin.Cache.log.debug("Exception during translation.", ex);
+      jalview.bin.Cache.log.error("Exception during translation. Please report this !", ex);
+      JOptionPane
+      .showMessageDialog(
+              Desktop.desktop,
+              MessageManager.getString("label.error_when_translating_sequences_submit_bug_report"),
+              MessageManager.getString("label.implementation_error") + MessageManager.getString("translation_failed"), JOptionPane.ERROR_MESSAGE);
+      return;
     }
     if (al == null)
     {
       JOptionPane
               .showMessageDialog(
                       Desktop.desktop,
-                      "Please select at least three bases in at least one sequence in order to perform a cDNA translation.",
-                      "Translation Failed", JOptionPane.WARNING_MESSAGE);
+                      MessageManager.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"),
+                      MessageManager.getString("label.translation_failed"), JOptionPane.WARNING_MESSAGE);
     }
     else
     {
@@ -4810,10 +4794,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   || JOptionPane
                           .showConfirmDialog(
                                   this,
-                                  "Do you want to automatically associate the "
-                                          + filesmatched.size()
-                                          + " PDB files with sequences in the alignment that have the same name ?",
-                                  "Automatically Associate PDB files by name",
+                                  MessageManager.formatMessage("label.automatically_associate_pdb_files_with_sequences_same_name",
+                                                 new String[]{Integer.valueOf(filesmatched.size()).toString()}),
+                                  MessageManager.getString("label.automatically_associate_pdb_files_by_name"),
                                   JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
 
           {
@@ -4846,10 +4829,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                           "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JOptionPane
                           .showConfirmDialog(
                                   this,
-                                  "<html>Do you want to <em>ignore</em> the "
-                                          + filesnotmatched.size()
-                                          + " files whose names did not match any sequence IDs ?</html>",
-                                  "Ignore unmatched dropped files ?",
+                                  MessageManager.formatMessage("label.ignore_unmatched_dropped_files_info", new String[]{Integer.valueOf(filesnotmatched.size()).toString()}),
+                                  MessageManager.getString("label.ignore_unmatched_dropped_files"),
                                   JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION))
           {
             return;
@@ -4908,8 +4889,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               tcoffeeColour.setSelected(true);
               changeColour(new TCoffeeColourScheme(viewport.getAlignment()));
               isAnnotation = true;
-              statusBar
-                      .setText("Successfully pasted T-Coffee scores to alignment.");
+              statusBar.setText(MessageManager.getString("label.successfully_pasted_tcoffee_scores_to_alignment"));
             }
             else
             {
@@ -4918,9 +4898,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               JOptionPane
                       .showMessageDialog(
                               Desktop.desktop,
-                              tcf.getWarningMessage() == null ? "Check that the file matches sequence IDs in the alignment."
+                              tcf.getWarningMessage() == null ? MessageManager.getString("label.check_file_matches_sequence_ids_alignment")
                                       : tcf.getWarningMessage(),
-                              "Problem reading T-COFFEE score file",
+                              MessageManager.getString("label.problem_reading_tcoffee_score_file"),
                               JOptionPane.WARNING_MESSAGE);
             }
           }
@@ -5027,6 +5007,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       alignPanel = (AlignmentPanel) alignPanels.elementAt(index);
       viewport = alignPanel.av;
+      avc.setViewportAndAlignmentPanel(viewport, alignPanel);
       setMenusFromViewport(viewport);
     }
   }
@@ -5037,7 +5018,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (SwingUtilities.isRightMouseButton(e))
     {
       String reply = JOptionPane.showInternalInputDialog(this,
-              "Enter View Name", "Edit View Name",
+              MessageManager.getString("label.enter_view_name"), MessageManager.getString("label.enter_view_name"),
               JOptionPane.QUESTION_MESSAGE);
 
       if (reply != null)
@@ -5317,7 +5298,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   ++i;
                   if (++icomp >= mcomp || i == (otherdb.size()))
                   {
-                    ifetch.setText(imname + " to '" + sname + "'");
+                    ifetch.setText(MessageManager.formatMessage("label.source_to_target",new String[]{imname,sname}));
                     dfetch.add(ifetch);
                     ifetch = new JMenu();
                     imname = null;
@@ -5329,7 +5310,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               ++dbi;
               if (comp >= mcomp || dbi >= (dbclasses.length))
               {
-                dfetch.setText(mname + " to '" + dbclass + "'");
+                dfetch.setText(MessageManager.formatMessage("label.source_to_target",new String[]{mname,dbclass}));
                 rfetch.add(dfetch);
                 dfetch = new JMenu();
                 mname = null;
@@ -5467,34 +5448,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   protected void makeGrpsFromSelection_actionPerformed(ActionEvent e)
   {
-    if (viewport.getSelectionGroup() != null)
-    {
-      SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom(
-              viewport.getSequenceSelection(),
-              viewport.getAlignmentView(true).getSequenceStrings(
-                      viewport.getGapCharacter()), viewport.getAlignment()
-                      .getGroups());
-      viewport.getAlignment().deleteAllGroups();
-      viewport.sequenceColours = null;
-      viewport.setSelectionGroup(null);
-      // set view properties for each group
-      for (int g = 0; g < gps.length; g++)
-      {
-        gps[g].setShowNonconserved(viewport.getShowUnconserved());
-        gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
-        viewport.getAlignment().addGroup(gps[g]);
-        Color col = new Color((int) (Math.random() * 255),
-                (int) (Math.random() * 255), (int) (Math.random() * 255));
-        col = col.brighter();
-        for (SequenceI s : gps[g].getSequences())
-          viewport.setSequenceColour(s, col);
-      }
+    if (avc.makeGroupsFromSelection()) {
       PaintRefresher.Refresh(this, viewport.getSequenceSetId());
       alignPanel.updateAnnotation();
       alignPanel.paintAlignment(true);
     }
   }
 
+  @Override
+  protected void createGroup_actionPerformed(ActionEvent e)
+  {
+    if (avc.createGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
+
+  @Override
+  protected void unGroup_actionPerformed(ActionEvent e)
+  {
+    if (avc.unGroup())
+    {
+      alignPanel.alignmentChanged();
+    }
+  }
+
   /**
    * make the given alignmentPanel the currently selected tab
    * 
index 7a01b27..407fa94 100644 (file)
@@ -138,8 +138,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   Stack redoList = new Stack();
 
-  Hashtable sequenceColours;
-
   int thresholdTextColour = 0;
 
   Color textColour = Color.black;
@@ -934,35 +932,6 @@ public class AlignViewport extends AlignmentViewport implements
     showHiddenMarkers = show;
   }
 
-  public Color getSequenceColour(SequenceI seq)
-  {
-    if (sequenceColours == null || !sequenceColours.containsKey(seq))
-    {
-      return Color.white;
-    }
-    else
-    {
-      return (Color) sequenceColours.get(seq);
-    }
-  }
-
-  public void setSequenceColour(SequenceI seq, Color col)
-  {
-    if (sequenceColours == null)
-    {
-      sequenceColours = new Hashtable();
-    }
-
-    if (col == null)
-    {
-      sequenceColours.remove(seq);
-    }
-    else
-    {
-      sequenceColours.put(seq, col);
-    }
-  }
-
   /**
    * returns the visible column regions of the alignment
    * 
@@ -1044,23 +1013,6 @@ public class AlignViewport extends AlignmentViewport implements
     centreColumnLabels = centrecolumnlabels;
   }
 
-  public void updateSequenceIdColours()
-  {
-    if (sequenceColours == null)
-    {
-      sequenceColours = new Hashtable();
-    }
-    for (SequenceGroup sg : alignment.getGroups())
-    {
-      if (sg.idColour != null)
-      {
-        for (SequenceI s : sg.getSequences(getHiddenRepSequences()))
-        {
-          sequenceColours.put(s, sg.idColour);
-        }
-      }
-    }
-  }
 
   /**
    * enable or disable the display of Database Cross References in the sequence
index f8a2543..4a679b6 100644 (file)
@@ -688,7 +688,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
         seqPanel.seqCanvas.fastPaint(scrollX, scrollY);
         scalePanel.repaint();
 
-        if (av.getShowAnnotation())
+        if (av.getShowAnnotation() && scrollX!=0)
         {
           annotationPanel.fastPaint(scrollX);
         }
@@ -1094,7 +1094,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
   void makeAlignmentImage(int type, File file)
   {
     long progress = System.currentTimeMillis();
-    if (alignFrame != null)
+    boolean headless = (System.getProperty("java.awt.headless") != null
+            && System.getProperty("java.awt.headless").equals("true"));
+    if (alignFrame != null && !headless)
     {
       alignFrame.setProgressBar("Saving "
               + (type == jalview.util.ImageMaker.PNG ? "PNG image"
@@ -1115,8 +1117,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       if (av.getWrapAlignment())
       {
         height = getWrappedHeight();
-        if (System.getProperty("java.awt.headless") != null
-                && System.getProperty("java.awt.headless").equals("true"))
+        if (headless)
         {
           // need to obtain default alignment width and then add in any
           // additional allowance for id margin
@@ -1184,7 +1185,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       }
     } finally
     {
-      if (alignFrame != null)
+      if (alignFrame != null && !headless)
       {
         alignFrame.setProgressBar("Export complete.", progress);
       }
old mode 100755 (executable)
new mode 100644 (file)
index 599cf0b..5ee69f2
@@ -30,6 +30,8 @@ import net.miginfocom.swing.MigLayout;
 import jalview.bin.Cache;
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
+
 import java.awt.Dimension;
 
 public class AnnotationColourChooser extends JPanel
@@ -47,6 +49,10 @@ public class AnnotationColourChooser extends JPanel
   jalview.datamodel.AlignmentAnnotation currentAnnotation;
 
   boolean adjusting = false;
+  /**
+   * enabled if the user is dragging the slider - try to keep updates to a minimun
+   */
+  boolean sliderDragging = false;
 
   public AnnotationColourChooser(AlignViewport av, final AlignmentPanel ap)
   {
@@ -76,14 +82,32 @@ public class AnnotationColourChooser extends JPanel
         if (!adjusting)
         {
           thresholdValue.setText(((float) slider.getValue() / 1000f) + "");
-          valueChanged();
+          valueChanged(!sliderDragging);
         }
       }
     });
     slider.addMouseListener(new MouseAdapter()
     {
+      @Override
+      public void mousePressed(MouseEvent e)
+      {
+        sliderDragging=true;
+        super.mousePressed(e);
+      }
+
+      @Override
+      public void mouseDragged(MouseEvent e)
+      {
+        sliderDragging=true;
+        super.mouseDragged(e);
+      }
       public void mouseReleased(MouseEvent evt)
       {
+        if (sliderDragging)
+        {
+          sliderDragging=false;
+          valueChanged(true);
+        }
         ap.paintAlignment(true);
       }
     });
@@ -96,18 +120,19 @@ public class AnnotationColourChooser extends JPanel
     // Always get default shading from preferences.
     setDefaultMinMax();
 
+    adjusting = true;
     if (oldcs instanceof AnnotationColourGradient)
     {
       AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
-      currentColours.setSelected(acg.predefinedColours);
-      if (!acg.predefinedColours)
+      currentColours.setSelected(acg.isPredefinedColours() || acg.getBaseColour()!=null);
+      if (!acg.isPredefinedColours() && acg.getBaseColour()==null)
       {
         minColour.setBackground(acg.getMinColour());
         maxColour.setBackground(acg.getMaxColour());
       }
       seqAssociated.setSelected(acg.isSeqAssociated());
+      
     }
-    adjusting = true;
     annotations = new JComboBox(
             getAnnotationItems(seqAssociated.isSelected()));
 
@@ -193,7 +218,6 @@ public class AnnotationColourChooser extends JPanel
     System.arraycopy(anmap, 0, annmap, 0, annmap.length);
     return list;
   }
-
   private void setDefaultMinMax()
   {
     minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
@@ -244,7 +268,7 @@ public class AnnotationColourChooser extends JPanel
       }
     });
     ok.setOpaque(false);
-    ok.setText("OK");
+    ok.setText(MessageManager.getString("action.ok"));
     ok.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -253,7 +277,7 @@ public class AnnotationColourChooser extends JPanel
       }
     });
     cancel.setOpaque(false);
-    cancel.setText("Cancel");
+    cancel.setText(MessageManager.getString("action.cancel"));
     cancel.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -262,7 +286,7 @@ public class AnnotationColourChooser extends JPanel
       }
     });
     defColours.setOpaque(false);
-    defColours.setText("Defaults");
+    defColours.setText(MessageManager.getString("action.set_defaults"));
     defColours
             .setToolTipText("Reset min and max colours to defaults from user preferences.");
     defColours.addActionListener(new ActionListener()
@@ -306,7 +330,7 @@ public class AnnotationColourChooser extends JPanel
     thresholdValue.setColumns(7);
     currentColours.setFont(JvSwingUtils.getLabelFont());
     currentColours.setOpaque(false);
-    currentColours.setText("Use Original Colours");
+    currentColours.setText(MessageManager.getString("label.use_original_colours"));
     currentColours.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -316,7 +340,7 @@ public class AnnotationColourChooser extends JPanel
     });
     thresholdIsMin.setBackground(Color.white);
     thresholdIsMin.setFont(JvSwingUtils.getLabelFont());
-    thresholdIsMin.setText("Threshold is Min/Max");
+    thresholdIsMin.setText(MessageManager.getString("label.threshold_minmax"));
     thresholdIsMin.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent actionEvent)
@@ -326,7 +350,7 @@ public class AnnotationColourChooser extends JPanel
     });
     seqAssociated.setBackground(Color.white);
     seqAssociated.setFont(JvSwingUtils.getLabelFont());
-    seqAssociated.setText("Per-sequence only");
+    seqAssociated.setText(MessageManager.getString("label.per_sequence_only"));
     seqAssociated.addActionListener(new ActionListener()
     {
 
@@ -527,7 +551,7 @@ public class AnnotationColourChooser extends JPanel
     if (currentAnnotation.graphMin == 0f
             && currentAnnotation.graphMax == 0f)
     {
-      acg.predefinedColours = true;
+      acg.setPredefinedColours(true);
     }
 
     acg.thresholdIsMinMax = thresholdIsMin.isSelected();
@@ -632,18 +656,38 @@ public class AnnotationColourChooser extends JPanel
     }
   }
 
-  public void valueChanged()
+  public void valueChanged(boolean updateAllAnnotation)
   {
     if (currentColours.isSelected()
             && !(av.getGlobalColourScheme() instanceof AnnotationColourGradient))
     {
       changeColour();
     }
-
     currentAnnotation.threshold.value = (float) slider.getValue() / 1000f;
+    propagateSeqAssociatedThreshold(updateAllAnnotation);
     ap.paintAlignment(false);
   }
 
+  private void propagateSeqAssociatedThreshold(boolean allAnnotation)
+  {
+    if (currentAnnotation.sequenceRef == null
+            || currentAnnotation.threshold == null)
+    {
+      return;
+    }
+    // TODO: JAL-1327 only update visible annotation thresholds if allAnnotation is false, since we only need to provide a quick visual indicator
+
+    float thr = currentAnnotation.threshold.value;
+    for (int i = 0; i < av.getAlignment().getAlignmentAnnotation().length; i++)
+    {
+      AlignmentAnnotation aa = av.getAlignment().getAlignmentAnnotation()[i];
+      if (aa.label.equals(currentAnnotation.label))
+      {
+        aa.threshold.value = thr;
+      }
+    }
+  }
+
   public void currentColours_actionPerformed(ActionEvent e)
   {
     if (currentColours.isSelected())
old mode 100755 (executable)
new mode 100644 (file)
index e255cd6..02758fa
@@ -26,6 +26,7 @@ import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.io.*;
+import jalview.util.MessageManager;
 
 /**
  * 
@@ -229,7 +230,7 @@ public class AnnotationExporter extends JPanel
   {
     this.setLayout(new BorderLayout());
 
-    toFile.setText("to File");
+    toFile.setText(MessageManager.getString("label.to_file"));
     toFile.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -237,7 +238,7 @@ public class AnnotationExporter extends JPanel
         toFile_actionPerformed(e);
       }
     });
-    toTextbox.setText("to Textbox");
+    toTextbox.setText(MessageManager.getString("label.to_textbox"));
     toTextbox.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -245,7 +246,7 @@ public class AnnotationExporter extends JPanel
         toTextbox_actionPerformed(e);
       }
     });
-    close.setText("Close");
+    close.setText(MessageManager.getString("action.close"));
     close.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -259,9 +260,9 @@ public class AnnotationExporter extends JPanel
     GFFFormat.setOpaque(false);
     GFFFormat.setText("GFF");
     CSVFormat.setOpaque(false);
-    CSVFormat.setText("CSV(Spreadsheet)");
+    CSVFormat.setText(MessageManager.getString("label.csv_spreadsheet"));
     jLabel1.setHorizontalAlignment(SwingConstants.TRAILING);
-    jLabel1.setText("Format: ");
+    jLabel1.setText(MessageManager.getString("action.format") + " ");
     this.setBackground(Color.white);
     jPanel3.setBorder(BorderFactory.createEtchedBorder());
     jPanel3.setOpaque(false);
index 1577477..c7fd4fe 100755 (executable)
@@ -29,6 +29,7 @@ import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.io.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -816,18 +817,32 @@ public class AnnotationLabels extends JPanel implements MouseListener,
               RenderingHints.VALUE_ANTIALIAS_ON);
     }
 
-    drawComponent(g2, width);
+    drawComponent(g2, true, width);
 
   }
 
   /**
-   * DOCUMENT ME!
+   * Draw the full set of annotation Labels for the alignment at the given cursor
    * 
-   * @param g
-   *          DOCUMENT ME!
+   * @param g Graphics2D instance (needed for font scaling)
+   * @param width Width for scaling labels
+   *          
    */
   public void drawComponent(Graphics g, int width)
   {
+    drawComponent(g, false, width);
+  }
+
+  private final boolean debugRedraw = false;
+  /**
+   * Draw the full set of annotation Labels for the alignment at the given cursor
+   * 
+   * @param g Graphics2D instance (needed for font scaling)
+   * @param clip - true indicates that only current visible area needs to be rendered
+   * @param width Width for scaling labels         
+   */
+  public void drawComponent(Graphics g, boolean clip, int width)
+  {
     if (av.getFont().getSize() < 10)
     {
       g.setFont(font);
@@ -843,7 +858,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
 
     g.translate(0, scrollOffset);
     g.setColor(Color.black);
-
+    
     AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
     int fontHeight = g.getFont().getSize();
     int y = 0;
@@ -853,22 +868,54 @@ public class AnnotationLabels extends JPanel implements MouseListener,
     Font baseFont = g.getFont();
     FontMetrics baseMetrics = fm;
     int ofontH = fontHeight;
-    boolean visible = true;
+    int sOffset=0;
+    int visHeight = 0;
+    int[] visr = (ap!=null && ap.annotationPanel!=null) ? ap.annotationPanel.getVisibleVRange() : null;
+    if (clip && visr!=null){ 
+      sOffset = visr[0]; 
+      visHeight = visr[1];
+    }
+    boolean visible = true,before=false,after=false;
     if (aa != null)
     {
       hasHiddenRows = false;
+      int olY=0;
       for (int i = 0; i < aa.length; i++)
       {
         visible = true;
-        g.setColor(Color.black);
-
         if (!aa[i].visible)
         {
           hasHiddenRows = true;
           continue;
         }
-
+        olY=y;
         y += aa[i].height;
+        if (clip) {if (y<sOffset)
+        {
+          if (!before)
+          {
+            if (debugRedraw) {
+              System.out.println("before vis: "+i);
+            }
+          before=true;
+          }
+          // don't draw what isn't visible
+          continue;
+        }
+        if (olY>visHeight)
+        {
+
+          if (!after)
+          {
+            if (debugRedraw) {
+              System.out.println("Scroll offset: "+sOffset+" after vis: "+i);
+            }
+          after=true;
+          }
+          // don't draw what isn't visible
+          continue;
+        }}
+        g.setColor(Color.black);
 
         offset = -aa[i].height / 2;
 
@@ -885,6 +932,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
         if (aa[i].graphGroup > -1)
         {
           int groupSize = 0;
+          // TODO: JAL-1291 revise rendering model so the graphGroup map is computed efficiently for all visible labels
           for (int gg = 0; gg < aa.length; gg++)
           {
             if (aa[gg].graphGroup == aa[i].graphGroup)
@@ -960,10 +1008,10 @@ public class AnnotationLabels extends JPanel implements MouseListener,
               dragEvent.getY() - scrollOffset);
     }
 
-    if ((aa == null) || (aa.length < 1))
+    if (!av.wrapAlignment && ((aa == null) || (aa.length < 1)))
     {
-      g.drawString("Right click", 2, 8);
-      g.drawString("to add annotation", 2, 18);
+      g.drawString(MessageManager.getString("label.right_click"), 2, 8);
+      g.drawString(MessageManager.getString("label.to_add_annotation"), 2, 18);
     }
   }
 }
index d0af0a5..ce731ad 100755 (executable)
@@ -20,11 +20,13 @@ package jalview.gui;
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.image.*;
+
 import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.renderer.AnnotationRenderer;
 import jalview.renderer.AwtRenderPanelI;
+import jalview.util.MessageManager;
 
 /**
  * AnnotationPanel displays visible portion of annotation rows below unwrapped
@@ -266,7 +268,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     else if (evt.getActionCommand().equals(LABEL))
     {
       String exMesg = collectAnnotVals(anot, av.getColumnSelection(), LABEL);
-      String label = JOptionPane.showInputDialog(this, "Enter label",
+      String label = JOptionPane.showInputDialog(this, MessageManager.getString("label.enter_label"),
               exMesg);
 
       if (label == null)
@@ -348,7 +350,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       }
 
       String label = JOptionPane.showInputDialog(
-              "Enter a label for the structure?", symbol);
+              MessageManager.getString("label.enter_label_for_the_structure"), symbol);
 
       if (label == null)
       {
@@ -376,10 +378,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
         anot[index].displayCharacter = label;
       }
     }
-    aa[activeRow].validateRangeAndDisplay();
-
-    adjustPanelHeight();
+    av.getAlignment().validateAnnotation(aa[activeRow]);
     ap.alignmentChanged();
+    
+    adjustPanelHeight();
     repaint();
 
     return;
@@ -663,7 +665,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
               && aa[row].annotations[res].description != null
               && aa[row].annotations[res].description.length() > 0)
       {
-        this.setToolTipText(aa[row].annotations[res].description);
+        this.setToolTipText("<html>"+JvSwingUtils.wrapTooltip(aa[row].annotations[res].description)+"</html>");
       }
       else
       {
@@ -699,16 +701,11 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   @Override
   public void mouseClicked(MouseEvent evt)
   {
-    if (activeRow != -1)
-    {
-      AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
-      AlignmentAnnotation anot = aa[activeRow];
-
-      if (anot.description.equals("secondary structure"))
-      {
-        // System.out.println(anot.description+" "+anot.getRNAStruc());
-      }
-    }
+//    if (activeRow != -1)
+//    {
+//      AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
+//      AlignmentAnnotation anot = aa[activeRow];
+//    }
   }
 
   // TODO mouseClicked-content and drawCursor are quite experimental!
@@ -760,7 +757,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;
     if (imgWidth < 1)
       return;
-    if (image == null || imgWidth != image.getWidth()
+    if (image == null || imgWidth != image.getWidth(this)
             || image.getHeight(this) != getHeight())
     {
       try
@@ -800,7 +797,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     imageFresh = false;
     g.drawImage(image, 0, 0, this);
   }
-
+  /**
+   * set true to enable redraw timing debug output on stderr
+   */
+  private final boolean debugRedraw = false;
   /**
    * non-Thread safe repaint
    * 
@@ -809,7 +809,6 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
    */
   public void fastPaint(int horizontal)
   {
-
     if ((horizontal == 0) || gg == null
             || av.getAlignment().getAlignmentAnnotation() == null
             || av.getAlignment().getAlignmentAnnotation().length < 1
@@ -818,8 +817,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       repaint();
       return;
     }
+    long stime=System.currentTimeMillis();
     gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0);
-
+    long mtime=System.currentTimeMillis();
     int sr = av.startRes;
     int er = av.endRes + 1;
     int transX = 0;
@@ -839,9 +839,13 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     drawComponent(gg, sr, er);
 
     gg.translate(-transX, 0);
-
+    long dtime=System.currentTimeMillis();
     fastPaint = true;
     repaint();
+    long rtime=System.currentTimeMillis();
+    if (debugRedraw) {
+      System.err.println("Scroll:\t"+horizontal+"\tCopyArea:\t"+(mtime-stime)+"\tDraw component:\t"+(dtime-mtime)+"\tRepaint call:\t"+(rtime-dtime));
+    }
 
   }
 
@@ -902,7 +906,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       }
       fadedImage = null;
     }
-
+    
     g.setColor(Color.white);
     g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());
 
@@ -920,7 +924,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       g.setColor(Color.black);
       if (av.validCharWidth)
       {
-        g.drawString("Alignment has no annotations", 20, 15);
+        g.drawString(MessageManager.getString("label.alignment_has_no_annotations"), 20, 15);
       }
 
       return;
@@ -950,4 +954,16 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   {
     return imgWidth;
   }
+  private int[] bounds = new int[2];
+  @Override
+  public int[] getVisibleVRange()
+  {
+    if (ap!=null && ap.alabels!=null)
+    {
+    int sOffset=-ap.alabels.scrollOffset;
+    int visHeight = sOffset+ap.annotationSpaceFillerHolder.getHeight();
+    bounds[0] = sOffset; bounds[1]=visHeight;
+    return bounds;
+    } else return null;
+  }
 }
index b1f7e4c..3b4b738 100644 (file)
@@ -33,6 +33,7 @@ import jalview.gui.ViewSelectionMenu.ViewSetProvider;
 import jalview.datamodel.PDBEntry;
 import jalview.io.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 import jalview.util.Platform;
 
 public class AppJmol extends GStructureViewer implements Runnable,
@@ -251,9 +252,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
     if (alreadyMapped != null)
     {
       int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-              pdbentry.getId() + " is already displayed."
-                      + "\nDo you want to re-use this viewer ?",
-              "Map Sequences to Visible Window: " + pdbentry.getId(),
+                 MessageManager.formatMessage("label.pdb_entry_is_already_displayed",  new String[]{pdbentry.getId()}),
+              MessageManager.formatMessage("label.map_sequences_to_visible_window", new String[]{pdbentry.getId()}),
               JOptionPane.YES_NO_OPTION);
 
       if (option == JOptionPane.YES_OPTION)
@@ -310,9 +310,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
         AppJmol topJmol = (AppJmol) jm.nextElement();
         // TODO: highlight topJmol in view somehow
         int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-                "Do you want to add " + pdbentry.getId()
-                        + " to the view called\n'" + topJmol.getTitle()
-                        + "'\n", "Align to existing structure view",
+                       MessageManager.formatMessage("label.add_pdbentry_to_view", new String[]{pdbentry.getId(),topJmol.getTitle()}),
+                       MessageManager.getString("label.align_to_existing_structure_view"),
                 JOptionPane.YES_NO_OPTION);
         if (option == JOptionPane.YES_OPTION)
         {
@@ -781,10 +780,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
     {
 
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "The following pdb entries could not be retrieved from the PDB:\n"
-                      + errormsgs.toString()
-                      + "\nPlease try downloading them manually.",
-              "Couldn't load file", JOptionPane.ERROR_MESSAGE);
+                 MessageManager.formatMessage("label.pdb_entries_couldnt_be_retrieved", new String[]{errormsgs.toString()}),
+              MessageManager.getString("label.couldnt_load_file"), JOptionPane.ERROR_MESSAGE);
 
     }
     long lastnotify = jmb.getLoadNotifiesHandled();
@@ -1145,7 +1142,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
         g.fillRect(0, 0, currentSize.width, currentSize.height);
         g.setColor(Color.white);
         g.setFont(new Font("Verdana", Font.BOLD, 14));
-        g.drawString("Error loading file...", 20, currentSize.height / 2);
+        g.drawString(MessageManager.getString("label.error_loading_file") + "...", 20, currentSize.height / 2);
         StringBuffer sb = new StringBuffer();
         int lines = 0;
         for (int e = 0; e < jmb.pdbentry.length; e++)
@@ -1170,7 +1167,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
         g.fillRect(0, 0, currentSize.width, currentSize.height);
         g.setColor(Color.white);
         g.setFont(new Font("Verdana", Font.BOLD, 14));
-        g.drawString("Retrieving PDB data....", 20, currentSize.height / 2);
+        g.drawString(MessageManager.getString("label.retrieving_pdb_data"), 20, currentSize.height / 2);
       }
       else
       {
index 81452af..d19a711 100644 (file)
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
@@ -104,17 +106,17 @@ public class AppVarnaBinding extends jalview.ext.varna.JalviewVarnaBinding
 
   private JTextField _seq = new JTextField();
 
-  private JLabel _strLabel = new JLabel(" Str:");
+  private JLabel _strLabel = new JLabel(MessageManager.getString("label.str"));
 
-  private JLabel _seqLabel = new JLabel(" Seq:");
+  private JLabel _seqLabel = new JLabel(MessageManager.getString("label.seq"));
 
-  private JButton _createButton = new JButton("Create");
+  private JButton _createButton = new JButton(MessageManager.getString("action.create"));
 
-  private JButton _updateButton = new JButton("Update");
+  private JButton _updateButton = new JButton(MessageManager.getString("action.update"));
 
-  private JButton _deleteButton = new JButton("Delete");
+  private JButton _deleteButton = new JButton(MessageManager.getString("action.delete"));
 
-  private JButton _duplicateButton = new JButton("Snapshot");
+  private JButton _duplicateButton = new JButton(MessageManager.getString("action.snapshot"));
 
   protected JPanel _listPanel = new JPanel();
 
@@ -339,7 +341,7 @@ public class AppVarnaBinding extends jalview.ext.varna.JalviewVarnaBinding
     ops.add(_deleteButton);
     ops.add(_duplicateButton);
 
-    JLabel j = new JLabel("Structures Manager", JLabel.CENTER);
+    JLabel j = new JLabel(MessageManager.getString("label.structures_manager"), JLabel.CENTER);
     _listPanel.setLayout(new BorderLayout());
 
     // _listPanel.add(ops, BorderLayout.SOUTH);
index 6896863..bf0957e 100644 (file)
@@ -21,6 +21,7 @@ import javax.swing.JOptionPane;
 
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
+import jalview.util.MessageManager;
 
 /**
  * GUI related routines for associating PDB files with sequences
@@ -54,9 +55,8 @@ public class AssociatePdbFileWithSeq
           reply = JOptionPane
                   .showInternalInputDialog(
                           Desktop.desktop,
-                          "Couldn't find a PDB id in the file supplied."
-                                  + "Please enter an Id to identify this structure.",
-                          "No PDB Id in File", JOptionPane.QUESTION_MESSAGE);
+                          MessageManager.getString("label.couldnt_find_pdb_id_in_file"),
+                          MessageManager.getString("label.no_pdb_id_in_file"), JOptionPane.QUESTION_MESSAGE);
         }
         if (reply == null)
         {
index 7b6567d..c0cfb78 100644 (file)
@@ -18,6 +18,8 @@
 package jalview.gui;
 
 import jalview.bin.Cache;
+import jalview.util.MessageManager;
+
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
@@ -349,7 +351,7 @@ public class BlogReader extends JPanel
     java.util.Date earliest = null;
     try
     {
-      earliest = new SimpleDateFormat("YYYY-MM-DD").parse(chan
+      earliest = new SimpleDateFormat("YYYY-MM-DD",MessageManager.getLocale()).parse(chan
               .getHTTPLastModified());
     } catch (Exception x)
     {
@@ -435,7 +437,7 @@ public class BlogReader extends JPanel
     topBottomSplitPane.setBottomComponent(bottomPanel);
     JScrollPane spTextDescription = new JScrollPane(textDescription);
     textDescription.setText("");
-    statusBar.setText(" [Status] ");
+    statusBar.setText(MessageManager.getString("label.status"));
     buttonRefresh.addActionListener(new ActionListener()
     {
 
@@ -477,7 +479,7 @@ public class BlogReader extends JPanel
             _popupChannels);
     listItems.addMouseListener(popupAdapter);
     listItems.setCellRenderer(new ItemsRenderer());
-    lblChannels.setText("Channels");
+    lblChannels.setText(MessageManager.getString("label.channels"));
   }
 
   private void postInit()
@@ -811,8 +813,7 @@ class ChannelsRenderer extends DefaultListCellRenderer
     if (value instanceof Channel)
     {
       Channel channel = (Channel) value;
-      component.setText(channel.getTitle() + " ("
-              + channel.getUnreadItemCount() + ")");
+      component.setText(MessageManager.formatMessage("label.channel_title_item_count", new String[]{channel.getTitle(),Integer.valueOf(channel.getUnreadItemCount()).toString()}));
       component.setToolTipText(channel.getURL());
     }
     return component;
@@ -835,9 +836,7 @@ class ItemsRenderer extends DefaultListCellRenderer
       Item item = (Item) value;
       if (item.getPublishDate() != null)
       {
-        component.setText(DateFormat.getDateInstance().format(
-                item.getPublishDate())
-                + " " + item.getTitle());
+        component.setText(MessageManager.formatMessage("label.blog_item_published_on_date", new String[]{DateFormat.getDateInstance(DateFormat.LONG, MessageManager.getLocale()).format(item.getPublishDate()).toString(),item.getTitle()}));
       }
       component.setToolTipText(item.getLink());
       if (!item.isRead())
index 19526aa..965d010 100644 (file)
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.io.*;
 import java.awt.*;
 import java.awt.event.*;
@@ -91,7 +93,7 @@ public class Console extends WindowAdapter implements WindowListener,
     // textArea = cpt.getTextArea();
     textArea = new JTextArea();
     textArea.setEditable(false);
-    JButton button = new JButton("clear");
+    JButton button = new JButton(MessageManager.getString("action.clear"));
 
     // frame = cpt;
     frame.getContentPane().setLayout(new BorderLayout());
index ccb6c59..02b375f 100644 (file)
@@ -29,6 +29,7 @@ import javax.swing.event.HyperlinkEvent.EventType;
 
 import jalview.io.*;
 import jalview.jbgui.*;
+import jalview.util.MessageManager;
 
 /**
  * Cut'n'paste files into the desktop See JAL-1105
@@ -103,7 +104,7 @@ public class CutAndPasteHtmlTransfer extends GCutAndPasteHtmlTransfer
     this.viewport = viewport;
     if (viewport != null)
     {
-      ok.setText("Add");
+      ok.setText(MessageManager.getString("action.add"));
     }
 
     getContentPane().add(inputButtonPanel, java.awt.BorderLayout.SOUTH);
old mode 100755 (executable)
new mode 100644 (file)
index cb71128..2a555d0
@@ -25,6 +25,7 @@ import javax.swing.*;
 import jalview.datamodel.*;
 import jalview.io.*;
 import jalview.jbgui.*;
+import jalview.util.MessageManager;
 
 /**
  * Cut'n'paste files into the desktop See JAL-1105
@@ -57,7 +58,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
     this.viewport = viewport;
     if (viewport != null)
     {
-      ok.setText("Add");
+      ok.setText(MessageManager.getString("action.add"));
     }
 
     getContentPane().add(inputButtonPanel, java.awt.BorderLayout.SOUTH);
@@ -176,8 +177,8 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
       } catch (java.io.IOException ex)
       {
         JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                "Couldn't read the pasted text.\n" + ex.toString(),
-                "Error parsing text", JOptionPane.WARNING_MESSAGE);
+                       MessageManager.formatMessage("label.couldnt_read_pasted_text", new String[]{ex.toString()}),
+                MessageManager.getString("label.error_parsing_text"), JOptionPane.WARNING_MESSAGE);
       }
     }
 
@@ -200,7 +201,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
         af.currentFileFormat = format;
         Desktop.addInternalFrame(af, "Cut & Paste input - " + format,
                 AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
-        af.statusBar.setText("Successfully pasted alignment file");
+        af.statusBar.setText(MessageManager.getString("label.successfully_pasted_alignment_file"));
 
         try
         {
old mode 100755 (executable)
new mode 100644 (file)
index 3efde6a..293f9db
@@ -18,6 +18,7 @@
 package jalview.gui;
 
 import jalview.jbgui.GDasSourceBrowser;
+import jalview.util.MessageManager;
 import jalview.util.TableSorter;
 import jalview.ws.dbsources.das.api.DasSourceRegistryI;
 import jalview.ws.dbsources.das.api.jalviewSourceI;
@@ -170,8 +171,7 @@ public class DasSourceBrowser extends GDasSourceBrowser implements
 
     if (nickName == null)
     {
-      fullDetails.setText(text + "Select a DAS service from the table"
-              + " to read a full description here.</font></html>");
+      fullDetails.setText(text + MessageManager.getString("label.select_das_service_from_table"));
       return;
     }
 
@@ -430,21 +430,21 @@ public class DasSourceBrowser extends GDasSourceBrowser implements
 
     JTextField nametf = new JTextField(nickname, 40);
     JTextField urltf = new JTextField(url, 40);
-    JCheckBox seqs = new JCheckBox("Sequence Source");
+    JCheckBox seqs = new JCheckBox(MessageManager.getString("label.sequence_source"));
     seqs.setSelected(seqsrc);
     JPanel panel = new JPanel(new BorderLayout());
     JPanel pane12 = new JPanel(new BorderLayout());
-    pane12.add(new JLabel("Nickname: "), BorderLayout.CENTER);
+    pane12.add(new JLabel(MessageManager.getString("label.structure_manager")), BorderLayout.CENTER);
     pane12.add(nametf, BorderLayout.EAST);
     panel.add(pane12, BorderLayout.NORTH);
     pane12 = new JPanel(new BorderLayout());
-    pane12.add(new JLabel("URL: "), BorderLayout.NORTH);
+    pane12.add(new JLabel(MessageManager.getString("label.url")), BorderLayout.NORTH);
     pane12.add(seqs, BorderLayout.SOUTH);
     pane12.add(urltf, BorderLayout.EAST);
     panel.add(pane12, BorderLayout.SOUTH);
 
     int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-            panel, "Enter Nickname & URL of Local DAS Source",
+            panel, MessageManager.getString("label.enter_local_das_source"),
             JOptionPane.OK_CANCEL_OPTION);
 
     if (reply != JOptionPane.OK_OPTION)
@@ -517,8 +517,8 @@ public class DasSourceBrowser extends GDasSourceBrowser implements
     if (!sourceRegistry.getSource(nickname).isLocal())
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "You can only edit or remove local DAS Sources!",
-              "Public DAS source - not editable",
+              MessageManager.getString("label.you_can_only_edit_or_remove_local_das_sources"),
+              MessageManager.getString("label.public_das_source"),
               JOptionPane.WARNING_MESSAGE);
       return;
     }
index 877aebb..f4d1885 100644 (file)
@@ -23,6 +23,7 @@ import jalview.io.FormatAdapter;
 import jalview.io.IdentifyFile;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
+import jalview.util.MessageManager;
 import jalview.ws.params.ParamManager;
 
 import java.awt.BorderLayout;
@@ -647,8 +648,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     // A HEADLESS STATE WHEN NO DESKTOP EXISTS. MUST RETURN
     // IF JALVIEW IS RUNNING HEADLESS
     // ///////////////////////////////////////////////
-    if (System.getProperty("java.awt.headless") != null
-            && System.getProperty("java.awt.headless").equals("true"))
+    if (instance == null || (System.getProperty("java.awt.headless") != null
+            && System.getProperty("java.awt.headless").equals("true")))
     {
       return;
     }
@@ -943,7 +944,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
   {
     // This construct allows us to have a wider textfield
     // for viewing
-    JLabel label = new JLabel("Enter URL of Input File");
+    JLabel label = new JLabel(MessageManager.getString("label.input_file_url"));
     final JComboBox history = new JComboBox();
 
     JPanel panel = new JPanel(new GridLayout(2, 1));
@@ -968,7 +969,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     }
 
     int reply = JOptionPane.showInternalConfirmDialog(desktop, panel,
-            "Input Alignment From URL", JOptionPane.OK_CANCEL_OPTION);
+            MessageManager.getString("label.input_alignment_from_url"), JOptionPane.OK_CANCEL_OPTION);
 
     if (reply != JOptionPane.OK_OPTION)
     {
@@ -1721,8 +1722,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements
         if (!vamsasImport(chooser.getSelectedFile()))
         {
           JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                  "Couldn't import '" + fle + "' as a new vamsas session.",
-                  "Vamsas Document Import Failed",
+                  MessageManager.formatMessage("label.couldnt_import_as_vamsas_session", new String[]{fle}),
+                  MessageManager.getString("label.vamsas_document_import_failed"),
                   JOptionPane.ERROR_MESSAGE);
         }
       }
@@ -1865,7 +1866,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
 
   protected void setupVamsasConnectedGui()
   {
-    vamsasStart.setText("Session Update");
+    vamsasStart.setText(MessageManager.getString("label.session_update"));
     vamsasSave.setVisible(true);
     vamsasStop.setVisible(true);
     vamsasImport.setVisible(false); // Document import to existing session is
@@ -1877,7 +1878,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     vamsasSave.setVisible(false);
     vamsasStop.setVisible(false);
     vamsasImport.setVisible(true);
-    vamsasStart.setText("New Vamsas Session");
+    vamsasStart.setText(MessageManager.getString("label.new_vamsas_session"));
   }
 
   public void vamsasStop_actionPerformed(ActionEvent e)
@@ -2136,9 +2137,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
         if (fm != null)
         {
           g.drawString(
-                  "Total Free Memory: " + df.format(totalFreeMemory)
-                          + "MB; Max Memory: " + df.format(maxMemory)
-                          + "MB; " + df.format(percentUsage) + "%", 10,
+                         MessageManager.formatMessage("label.memory_stats", new String[]{df.format(totalFreeMemory),df.format(maxMemory),df.format(percentUsage)}), 10,
                   getHeight() - fm.getHeight());
         }
       }
@@ -2161,7 +2160,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     if (jalview.bin.Cache.groovyJarsPresent())
     {
       groovyShell = new JMenuItem();
-      groovyShell.setText("Groovy Console...");
+      groovyShell.setText(MessageManager.getString("label.groovy_console"));
       groovyShell.addActionListener(new ActionListener()
       {
         public void actionPerformed(ActionEvent e)
@@ -2341,7 +2340,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
     if (handler.canCancel())
     {
-      JButton cancel = new JButton("Cancel");
+      JButton cancel = new JButton(MessageManager.getString("action.cancel"));
       final IProgressIndicator us = this;
       cancel.addActionListener(new ActionListener()
       {
@@ -2436,7 +2435,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements
   {
     boolean alive = true;
     Thread t0 = null, t1 = null, t2 = null;
-
+    // JAL-940 - JALVIEW 1 services are now being EOLed as of JABA 2.1 release
+    if (true)
+    {
     // todo: changesupport handlers need to be transferred
     if (discoverer == null)
     {
@@ -2446,28 +2447,31 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     }
     // JAL-940 - disabled JWS1 service configuration - always start discoverer
     // until we phase out completely
-    if (true)
-    {
       (t0 = new Thread(discoverer)).start();
     }
 
-    try
+    // ENFIN services are EOLed as of Jalview 2.8.1 release
+    if (false)
     {
-      if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+      try
       {
-        // EnfinEnvision web service menu entries are rebuild every time the
-        // menu is shown, so no changeSupport events are needed.
-        jalview.ws.EnfinEnvision2OneWay.getInstance();
-        (t1 = new Thread(jalview.ws.EnfinEnvision2OneWay.getInstance()))
-                .start();
+        if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+        {
+          // EnfinEnvision web service menu entries are rebuild every time the
+          // menu is shown, so no changeSupport events are needed.
+          jalview.ws.EnfinEnvision2OneWay.getInstance();
+          (t1 = new Thread(jalview.ws.EnfinEnvision2OneWay.getInstance()))
+                  .start();
+        }
+      } catch (Exception e)
+      {
+        Cache.log
+                .info("Exception when trying to launch Envision2 workflow discovery.",
+                        e);
+        Cache.log.info(e.getStackTrace());
       }
-    } catch (Exception e)
-    {
-      Cache.log
-              .info("Exception when trying to launch Envision2 workflow discovery.",
-                      e);
-      Cache.log.info(e.getStackTrace());
     }
+
     if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
     {
       if (jalview.ws.jws2.Jws2Discoverer.getDiscoverer().isRunning())
old mode 100755 (executable)
new mode 100644 (file)
index 127e5cf..89e34f7
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
@@ -55,13 +57,13 @@ public class EPSOptions extends JPanel
   private void jbInit() throws Exception
   {
     lineart.setFont(JvSwingUtils.getLabelFont());
-    lineart.setText("Lineart");
+    lineart.setText(MessageManager.getString("label.lineart"));
     text.setFont(JvSwingUtils.getLabelFont());
-    text.setText("Text");
+    text.setText(MessageManager.getString("action.text"));
     text.setSelected(true);
     askAgain.setFont(JvSwingUtils.getLabelFont());
-    askAgain.setText("Don\'t ask me again");
-    ok.setText("OK");
+    askAgain.setText(MessageManager.getString("label.dont_ask_me_again"));
+    ok.setText(MessageManager.getString("action.ok"));
     ok.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -69,7 +71,7 @@ public class EPSOptions extends JPanel
         ok_actionPerformed(e);
       }
     });
-    cancel.setText("Cancel");
+    cancel.setText(MessageManager.getString("action.cancel"));
     cancel.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -78,7 +80,7 @@ public class EPSOptions extends JPanel
       }
     });
     jLabel1.setFont(JvSwingUtils.getLabelFont());
-    jLabel1.setText("Select EPS character rendering style");
+    jLabel1.setText(MessageManager.getString("label.select_eps_character_rendering_style"));
     this.setLayout(borderLayout1);
     jPanel3.setBorder(BorderFactory.createEtchedBorder());
     jPanel2.add(text);
index 18076e6..f3aefe4 100644 (file)
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.awt.*;
 import javax.swing.*;
 
@@ -24,9 +26,9 @@ public class EditNameDialog
 {
   JTextField id, description;
 
-  JButton ok = new JButton("Accept");
+  JButton ok = new JButton(MessageManager.getString("action.accept"));
 
-  JButton cancel = new JButton("Cancel");
+  JButton cancel = new JButton(MessageManager.getString("action.cancel"));
 
   boolean accept = false;
 
index 1fb53e4..0fc55e1 100644 (file)
@@ -27,6 +27,8 @@ import javax.swing.event.*;
 
 import jalview.datamodel.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
+
 import java.awt.Dimension;
 
 public class FeatureColourChooser extends JalviewDialog
@@ -207,9 +209,9 @@ public class FeatureColourChooser extends JalviewDialog
       }
     });
     maxColour.setBorder(new LineBorder(Color.black));
-    minText.setText("Min:");
+    minText.setText(MessageManager.getString("label.min"));
     minText.setFont(JvSwingUtils.getLabelFont());
-    maxText.setText("Max:");
+    maxText.setText(MessageManager.getString("label.max"));
     maxText.setFont(JvSwingUtils.getLabelFont());
     this.setLayout(borderLayout1);
     jPanel2.setLayout(flowLayout1);
@@ -245,7 +247,7 @@ public class FeatureColourChooser extends JalviewDialog
     thresholdValue.setColumns(7);
     jPanel3.setBackground(Color.white);
     thresholdIsMin.setBackground(Color.white);
-    thresholdIsMin.setText("Threshold is Min/Max");
+    thresholdIsMin.setText(MessageManager.getString("label.threshold_minmax"));
     thresholdIsMin
             .setToolTipText("Toggle between absolute and relative display threshold.");
     thresholdIsMin.addActionListener(new ActionListener()
@@ -256,7 +258,7 @@ public class FeatureColourChooser extends JalviewDialog
       }
     });
     colourByLabel.setBackground(Color.white);
-    colourByLabel.setText("Colour by Label");
+    colourByLabel.setText(MessageManager.getString("label.colour_by_label"));
     colourByLabel
             .setToolTipText("Display features of the same type with a different label using a different colour. (e.g. domain features)");
     colourByLabel.addActionListener(new ActionListener()
old mode 100755 (executable)
new mode 100644 (file)
index cc2c048..587c12f
@@ -30,6 +30,7 @@ import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.schemes.GraduatedColor;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -1061,7 +1062,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     {
       panel = new JPanel(new GridLayout(4, 1));
       tmp = new JPanel();
-      tmp.add(new JLabel("Select Feature: "));
+      tmp.add(new JLabel(MessageManager.getString("label.select_feature")));
       overlaps = new JComboBox();
       for (int i = 0; i < features.length; i++)
       {
@@ -1111,17 +1112,17 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
     tmp = new JPanel();
     panel.add(tmp);
-    tmp.add(new JLabel("Name: ", JLabel.RIGHT));
+    tmp.add(new JLabel(MessageManager.getString("label.name"), JLabel.RIGHT));
     tmp.add(name);
 
     tmp = new JPanel();
     panel.add(tmp);
-    tmp.add(new JLabel("Group: ", JLabel.RIGHT));
+    tmp.add(new JLabel(MessageManager.getString("label.group"), JLabel.RIGHT));
     tmp.add(source);
 
     tmp = new JPanel();
     panel.add(tmp);
-    tmp.add(new JLabel("Colour: ", JLabel.RIGHT));
+    tmp.add(new JLabel(MessageManager.getString("label.colour"), JLabel.RIGHT));
     tmp.add(colour);
     colour.setPreferredSize(new Dimension(150, 15));
     colour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 9));
@@ -1133,7 +1134,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     bigPanel.add(panel, BorderLayout.NORTH);
 
     panel = new JPanel();
-    panel.add(new JLabel("Description: ", JLabel.RIGHT));
+    panel.add(new JLabel(MessageManager.getString("label.description"), JLabel.RIGHT));
     description.setFont(JvSwingUtils.getTextAreaFont());
     description.setLineWrap(true);
     panel.add(new JScrollPane(description));
@@ -1143,9 +1144,9 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
       bigPanel.add(panel, BorderLayout.SOUTH);
 
       panel = new JPanel();
-      panel.add(new JLabel(" Start:", JLabel.RIGHT));
+      panel.add(new JLabel(MessageManager.getString("label.start"), JLabel.RIGHT));
       panel.add(start);
-      panel.add(new JLabel("  End:", JLabel.RIGHT));
+      panel.add(new JLabel(MessageManager.getString("label.end"), JLabel.RIGHT));
       panel.add(end);
       bigPanel.add(panel, BorderLayout.CENTER);
     }
old mode 100755 (executable)
new mode 100644 (file)
index 3ce17e2..106ced9
@@ -37,6 +37,7 @@ import jalview.datamodel.*;
 import jalview.io.*;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.GraduatedColor;
+import jalview.util.MessageManager;
 import jalview.ws.dbsources.das.api.jalviewSourceI;
 
 public class FeatureSettings extends JPanel
@@ -905,7 +906,7 @@ public class FeatureSettings extends JPanel
     dasSettingsPane.setLayout(borderLayout3);
     bigPanel.setLayout(borderLayout4);
     invert.setFont(JvSwingUtils.getLabelFont());
-    invert.setText("Invert Selection");
+    invert.setText(MessageManager.getString("label.invert_selection"));
     invert.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -914,7 +915,7 @@ public class FeatureSettings extends JPanel
       }
     });
     optimizeOrder.setFont(JvSwingUtils.getLabelFont());
-    optimizeOrder.setText("Optimise Order");
+    optimizeOrder.setText(MessageManager.getString("label.optimise_order"));
     optimizeOrder.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -923,7 +924,7 @@ public class FeatureSettings extends JPanel
       }
     });
     sortByScore.setFont(JvSwingUtils.getLabelFont());
-    sortByScore.setText("Seq sort by Score");
+    sortByScore.setText(MessageManager.getString("label.seq_sort_by_score"));
     sortByScore.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -941,7 +942,7 @@ public class FeatureSettings extends JPanel
       }
     });
     cancel.setFont(JvSwingUtils.getLabelFont());
-    cancel.setText("Cancel");
+    cancel.setText(MessageManager.getString("action.cancel"));
     cancel.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -951,7 +952,7 @@ public class FeatureSettings extends JPanel
       }
     });
     ok.setFont(JvSwingUtils.getLabelFont());
-    ok.setText("OK");
+    ok.setText(MessageManager.getString("action.ok"));
     ok.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -960,7 +961,7 @@ public class FeatureSettings extends JPanel
       }
     });
     loadColours.setFont(JvSwingUtils.getLabelFont());
-    loadColours.setText("Load Colours");
+    loadColours.setText(MessageManager.getString("label.load_colours"));
     loadColours.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -969,7 +970,7 @@ public class FeatureSettings extends JPanel
       }
     });
     saveColours.setFont(JvSwingUtils.getLabelFont());
-    saveColours.setText("Save Colours");
+    saveColours.setText(MessageManager.getString("label.save_colours"));
     saveColours.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -987,7 +988,7 @@ public class FeatureSettings extends JPanel
     });
 
     transparency.setMaximum(70);
-    fetchDAS.setText("Fetch DAS Features");
+    fetchDAS.setText(MessageManager.getString("label.fetch_das_features"));
     fetchDAS.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -995,7 +996,7 @@ public class FeatureSettings extends JPanel
         fetchDAS_actionPerformed(e);
       }
     });
-    saveDAS.setText("Save as default");
+    saveDAS.setText(MessageManager.getString("action.save_as_default"));
     saveDAS.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -1006,7 +1007,7 @@ public class FeatureSettings extends JPanel
     dasButtonPanel.setBorder(BorderFactory.createEtchedBorder());
     dasSettingsPane.setBorder(null);
     cancelDAS.setEnabled(false);
-    cancelDAS.setText("Cancel Fetch");
+    cancelDAS.setText(MessageManager.getString("action.cancel_fetch"));
     cancelDAS.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -1311,9 +1312,8 @@ public class FeatureSettings extends JPanel
   {
     complete();
     JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-            "No das sources were selected.\n"
-                    + "Please select some sources and\n" + " try again.",
-            "No Sources Selected", JOptionPane.DEFAULT_OPTION,
+            MessageManager.getString("label.no_das_sources_selected_warn"),
+            MessageManager.getString("label.no_das_sources_selected_title"), JOptionPane.DEFAULT_OPTION,
             JOptionPane.INFORMATION_MESSAGE);
   }
 
@@ -1593,7 +1593,7 @@ class FeatureIcon implements Icon
       // width/g.getFontMetrics().stringWidth("Label"),
       // height/g.getFontMetrics().getHeight())));
 
-      g.drawString("Label", 0, 0);
+      g.drawString(MessageManager.getString("label.label"), 0, 0);
 
     }
     else
index 069c1f9..f63f74f 100755 (executable)
 package jalview.gui;
 
 import java.util.*;
-
 import java.awt.event.*;
+
 import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.jbgui.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -235,7 +236,7 @@ public class Finder extends GFinder
     // 'SelectRegion' selection
     if (!haveResults)
     {
-      JOptionPane.showInternalMessageDialog(this, "Finished searching",
+      JOptionPane.showInternalMessageDialog(this, MessageManager.getString("label.finished_searching"),
               null, JOptionPane.INFORMATION_MESSAGE);
       resIndex = -1;
       seqIndex = 0;
index 69f0fef..e747055 100644 (file)
@@ -18,6 +18,7 @@
 package jalview.gui;
 
 import jalview.bin.Cache;
+import jalview.util.MessageManager;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
 import java.awt.BorderLayout;
@@ -58,7 +59,7 @@ public class JDatabaseTree extends JalviewDialog implements KeyListener
 
   JButton getDatabaseSelectorButton()
   {
-    final JButton viewdbs = new JButton("--- Select Database ---");
+    final JButton viewdbs = new JButton(MessageManager.getString("action.select_ddbb"));
     viewdbs.addActionListener(new ActionListener()
     {
 
@@ -361,21 +362,9 @@ public class JDatabaseTree extends JalviewDialog implements KeyListener
             }
             else
             {
-              if ((admt = dmt.getFirstLeaf()) != null
-                      && admt.getUserObject() != null)
-              {
-                // modify db selection to just first leaf.
-                if (admt.getUserObject() instanceof DbSourceProxy)
-                {
-                  srcs.add((DbSourceProxy) admt.getUserObject());
-                }
-                else
-                {
-                  srcs.add(sfetcher.getSourceProxy(
-                          (String) admt.getUserObject()).get(0));
-                }
-                forcedFirstChild = true;
-              }
+              srcs.add(sfetcher.getSourceProxy((String) dmt
+                      .getUserObject()).get(0));
+              forcedFirstChild = true;
             }
           }
         }
@@ -417,23 +406,17 @@ public class JDatabaseTree extends JalviewDialog implements KeyListener
 
     if (allowMultiSelections)
     {
-      dbstatus.setText("Selected "
-              + srcs.size()
-              + " database"
-              + (srcs.size() == 1 ? "" : "s")
-              + " to fetch from"
-              + (srcs.size() > 0 ? " with " + x + " test quer"
-                      + (x == 1 ? "y" : "ies") : "."));
+      dbstatus.setText(MessageManager.formatMessage("label.selected_database_to_fetch_from", new String[]{Integer.valueOf(srcs.size()).toString(),(srcs.size() == 1 ? "" : "s"),(srcs.size() > 0 ? " with " + x + " test quer" + (x == 1 ? "y" : "ies") : ".")}));
       dbstatex.setText(" ");
     }
     else
     {
       if (nm.length() > 0)
       {
-        dbstatus.setText("Database: " + nm);
+        dbstatus.setText(MessageManager.formatMessage("label.database_param",new String[]{nm}));
         if (qr.length() > 0)
         {
-          dbstatex.setText("Example: " + qr);
+          dbstatex.setText(MessageManager.formatMessage("label.example_param", new String[]{qr}));
         }
         else
         {
index e88b190..45e8102 100644 (file)
@@ -429,7 +429,7 @@ public class Jalview2XML
     object.setVamsasModel(new jalview.schemabinding.version2.VamsasModel());
 
     object.setCreationDate(new java.util.Date(System.currentTimeMillis()));
-    object.setVersion(jalview.bin.Cache.getProperty("VERSION"));
+    object.setVersion(jalview.bin.Cache.getDefault("VERSION","Development Build"));
 
     jalview.datamodel.AlignmentI jal = av.getAlignment();
 
@@ -1069,6 +1069,8 @@ public class Jalview2XML
 
       ac.setMaxColour(acg.getMaxColour().getRGB());
       ac.setMinColour(acg.getMinColour().getRGB());
+      ac.setPerSequence(acg.isSeqAssociated());
+      ac.setPredefinedColours(acg.isPredefinedColours());
       view.setAnnotationColours(ac);
       view.setBgColour("AnnotationColourGradient");
     }
@@ -3238,7 +3240,14 @@ public class Jalview2XML
                                 .getAnnotationColours().getColourScheme()),
                         view.getAnnotationColours().getAboveThreshold());
               }
-
+              if (view.getAnnotationColours().hasPerSequence())
+              {
+                ((AnnotationColourGradient)cs).setSeqAssociated(view.getAnnotationColours().isPerSequence());
+              }
+              if (view.getAnnotationColours().hasPredefinedColours())
+              {
+                ((AnnotationColourGradient)cs).setPredefinedColours(view.getAnnotationColours().isPredefinedColours());
+              }
               // Also use these settings for all the groups
               if (al.getGroups() != null)
               {
@@ -3268,6 +3277,17 @@ public class Jalview2XML
                             .getAlignment().getAlignmentAnnotation()[i],
                             sg.cs, view.getAnnotationColours()
                                     .getAboveThreshold());
+                    if (cs instanceof AnnotationColourGradient) 
+                    {
+                      if (view.getAnnotationColours().hasPerSequence())
+                      { 
+                        ((AnnotationColourGradient)cs).setSeqAssociated(view.getAnnotationColours().isPerSequence());
+                      }
+                      if (view.getAnnotationColours().hasPredefinedColours())
+                      {
+                        ((AnnotationColourGradient)cs).setPredefinedColours(view.getAnnotationColours().isPredefinedColours());
+                      }
+                    }
                   }
 
                 }
@@ -3467,6 +3487,7 @@ public class Jalview2XML
             view.getHeight());
     af.alignPanel.updateAnnotation(false, true); // recompute any autoannotation
     reorderAutoannotation(af, al, autoAlan);
+    af.alignPanel.alignmentChanged();
     return af;
   }
 
index 639b9b2..3b6678d 100755 (executable)
@@ -26,6 +26,7 @@ import javax.swing.*;
 import org.exolab.castor.xml.*;
 import jalview.binding.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 import jalview.util.jarInputStreamProvider;
 
 /**
@@ -135,7 +136,8 @@ public class Jalview2XML_V1
             System.err.println("Couldn't locate Jalview XML file : " + ex
                     + "\n");
             JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                    "Couldn't locate " + file, "URL not found",
+                       MessageManager.formatMessage("label.couldnt_locate", new String[]{file}),
+                    MessageManager.getString("label.url_not_found"),
                     JOptionPane.WARNING_MESSAGE);
           }
         });
index a74c435..7356f3a 100644 (file)
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.awt.Container;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
@@ -87,7 +89,7 @@ public abstract class JalviewDialog extends JPanel
     this.block = block;
 
     ok.setOpaque(false);
-    ok.setText("OK");
+    ok.setText(MessageManager.getString("action.ok"));
     ok.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -97,7 +99,7 @@ public abstract class JalviewDialog extends JPanel
       }
     });
     cancel.setOpaque(false);
-    cancel.setText("Cancel");
+    cancel.setText(MessageManager.getString("action.cancel"));
     cancel.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
index eab240f..eb55994 100644 (file)
@@ -109,7 +109,7 @@ public class OptsAndParamsPage
 
         enabled.setToolTipText("<html>"
                 + JvSwingUtils
-                        .wrapTooltip(((desc == null) ? "see further details by right-clicking"
+                        .wrapTooltip(((desc == null || desc.trim().length()==0) ? "see further details by right-clicking"
                                 : desc)
                                 + "<br><img src=\"" + linkImageURL + "\"/>")
                 + "</html>");
@@ -117,7 +117,7 @@ public class OptsAndParamsPage
       }
       else
       {
-        if (desc != null)
+        if (desc != null && desc.trim().length()>0)
         {
           enabled.setToolTipText("<html>"
                   + JvSwingUtils.wrapTooltip(opt.getDescription())
@@ -235,10 +235,11 @@ public class OptsAndParamsPage
 
     }
 
-    public void resetToDefault()
+
+    public void resetToDefault(boolean setDefaultParams)
     {
       enabled.setSelected(false);
-      if (option.isRequired())
+      if (option.isRequired() || (setDefaultParams && option.getValue()!=null))
       {
         // Apply default value
         selectOption(option, option.getValue());
@@ -258,7 +259,7 @@ public class OptsAndParamsPage
         initVal = (initEnabled) ? (String) val.getSelectedItem() : null;
       }
     }
-
+    
   }
 
   public class ParamBox extends JPanel implements ChangeListener,
@@ -783,9 +784,9 @@ public class OptsAndParamsPage
 
   URL linkImageURL = getClass().getResource("/images/link.gif");
 
-  Map<String, OptionBox> optSet = new Hashtable<String, OptionBox>();
+  Map<String, OptionBox> optSet = new java.util.LinkedHashMap<String, OptionBox>();
 
-  Map<String, ParamBox> paramSet = new Hashtable<String, ParamBox>();
+  Map<String, ParamBox> paramSet = new java.util.LinkedHashMap<String, ParamBox>();
 
   public Map<String, OptionBox> getOptSet()
   {
old mode 100755 (executable)
new mode 100644 (file)
index d2a6426..663c262
@@ -26,6 +26,7 @@ import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.jbgui.*;
+import jalview.util.MessageManager;
 import jalview.viewmodel.PCAModel;
 
 /**
@@ -624,7 +625,7 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
     if (handler.canCancel())
     {
-      JButton cancel = new JButton("Cancel");
+      JButton cancel = new JButton(MessageManager.getString("action.cancel"));
       final IProgressIndicator us = this;
       cancel.addActionListener(new ActionListener()
       {
index 014f076..21a2224 100755 (executable)
@@ -25,7 +25,8 @@ import java.awt.*;
 import jalview.datamodel.*;
 
 /**
- * DOCUMENT ME!
+ * Route datamodel/view update events for a sequence set to any display components involved
+ * TODO: JV3 refactor to abstract gui/view package
  * 
  * @author $author$
  * @version $Revision$
index 1a367c5..3bc7c5c 100644 (file)
@@ -89,7 +89,7 @@ public class PopupMenu extends JPopupMenu
   JMenuItem sequenceSelDetails = new JMenuItem();
 
   SequenceI sequence;
-
+  JMenuItem createGroupMenuItem = new JMenuItem();
   JMenuItem unGroupMenuItem = new JMenuItem();
 
   JMenuItem outline = new JMenuItem();
@@ -392,9 +392,10 @@ public class PopupMenu extends JPopupMenu
     }
 
     SequenceGroup sg = ap.av.getSelectionGroup();
+    boolean isDefinedGroup = (sg!=null) ? ap.av.getAlignment().getGroups().contains(sg) : false;
 
     if (sg != null && sg.getSize() > 0)
-    {
+    {      
       groupName.setText("Name: " + sg.getName());
       groupName.setText("Edit name and description of current group.");
 
@@ -520,9 +521,15 @@ public class PopupMenu extends JPopupMenu
       editMenu.setVisible(false);
     }
 
-    if (!ap.av.getAlignment().getGroups().contains(sg))
+    if (!isDefinedGroup)
     {
+      createGroupMenuItem.setVisible(true);
       unGroupMenuItem.setVisible(false);
+      jMenu1.setText("Edit New Group");
+    } else {
+      createGroupMenuItem.setVisible(false);
+      unGroupMenuItem.setVisible(true);
+      jMenu1.setText("Edit Group");
     }
 
     if (seq == null)
@@ -935,6 +942,14 @@ public class PopupMenu extends JPopupMenu
         unGroupMenuItem_actionPerformed();
       }
     });
+    createGroupMenuItem.setText("Create Group");
+    createGroupMenuItem.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        createGroupMenuItem_actionPerformed();
+      }
+    });
 
     outline.setText("Border colour");
     outline.addActionListener(new java.awt.event.ActionListener()
@@ -1097,6 +1112,8 @@ public class PopupMenu extends JPopupMenu
     groupMenu.add(editMenu);
     groupMenu.add(outputMenu);
     groupMenu.add(sequenceFeature);
+    groupMenu.add(createGroupMenuItem);
+    groupMenu.add(unGroupMenuItem);
     groupMenu.add(jMenu1);
     sequenceMenu.add(sequenceName);
     sequenceMenu.add(sequenceDetails);
@@ -1153,7 +1170,6 @@ public class PopupMenu extends JPopupMenu
     pdbMenu.add(enterPDB);
     pdbMenu.add(discoverPDB);
     jMenu1.add(groupName);
-    jMenu1.add(unGroupMenuItem);
     jMenu1.add(colourMenu);
     jMenu1.add(showBoxes);
     jMenu1.add(showText);
@@ -1626,7 +1642,7 @@ public class PopupMenu extends JPopupMenu
             sequence.getAnnotation()[0], null,
             AnnotationColourGradient.NO_THRESHOLD);
 
-    acg.predefinedColours = true;
+    acg.setPredefinedColours(true);
     sg.cs = acg;
 
     refresh();
@@ -1726,6 +1742,11 @@ public class PopupMenu extends JPopupMenu
     ap.av.setSelectionGroup(null);
     refresh();
   }
+  void createGroupMenuItem_actionPerformed()
+  {
+    getGroup(); // implicitly creates group - note - should apply defaults / use standard alignment window logic for this
+    refresh();
+  }
 
   /**
    * DOCUMENT ME!
index 0f23ecd..c446f7f 100755 (executable)
@@ -28,6 +28,7 @@ import jalview.bin.*;
 import jalview.io.*;
 import jalview.jbgui.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -565,7 +566,7 @@ public class Preferences extends GPreferences
     while (!valid)
     {
       if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
-              "New sequence URL link", JOptionPane.OK_CANCEL_OPTION, -1,
+              MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
               null) == JOptionPane.OK_OPTION)
       {
         if (link.checkValid())
@@ -591,7 +592,7 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "No link selected!", "No link selected",
+              MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
               JOptionPane.WARNING_MESSAGE);
       return;
     }
@@ -604,7 +605,7 @@ public class Preferences extends GPreferences
     {
 
       if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
-              "New sequence URL link", JOptionPane.OK_CANCEL_OPTION, -1,
+              MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
               null) == JOptionPane.OK_OPTION)
       {
         if (link.checkValid())
@@ -629,7 +630,7 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "No link selected!", "No link selected",
+              MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
               JOptionPane.WARNING_MESSAGE);
       return;
     }
index 9f9f39c..91eb991 100755 (executable)
 package jalview.gui;
 
 import java.util.*;
-
 import java.awt.*;
 import java.awt.event.*;
+
 import javax.swing.*;
 
 import jalview.api.RotatableCanvasI;
 import jalview.datamodel.*;
 import jalview.math.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -369,7 +370,7 @@ public class RotatableCanvas extends JPanel implements MouseListener,
     if (points == null)
     {
       g.setFont(new Font("Verdana", Font.PLAIN, 18));
-      g.drawString("Calculating PCA....", 20, getHeight() / 2);
+      g.drawString(MessageManager.getString("label.calculating_pca")+ "....", 20, getHeight() / 2);
     }
     else
     {
index 89d315c..abd41c0 100755 (executable)
@@ -19,9 +19,11 @@ package jalview.gui;
 
 import java.awt.*;
 import java.awt.event.*;
+
 import javax.swing.*;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -503,7 +505,7 @@ public class ScalePanel extends JPanel implements MouseMotionListener,
 
       if (reveal != null && reveal[0] > startx && reveal[0] < endx)
       {
-        gg.drawString("Reveal Columns", reveal[0] * av.charWidth, 0);
+        gg.drawString(MessageManager.getString("label.reveal_columns"), reveal[0] * av.charWidth, 0);
       }
     }
 
index 3095c47..c71b154 100644 (file)
@@ -31,6 +31,7 @@ import jalview.datamodel.*;
 import jalview.io.SequenceAnnotationReport;
 import jalview.schemes.*;
 import jalview.structure.*;
+import jalview.util.MessageManager;
 
 /**
  * DOCUMENT ME!
@@ -129,8 +130,7 @@ public class SeqPanel extends JPanel implements MouseListener,
       addMouseMotionListener(this);
       addMouseListener(this);
       addMouseWheelListener(this);
-      ssm = StructureSelectionManager
-              .getStructureSelectionManager(Desktop.instance);
+      ssm = av.getStructureSelectionManager();
       ssm.addStructureViewerListener(this);
       ssm.addSelectionListener(this);
     }
@@ -307,7 +307,7 @@ public class SeqPanel extends JPanel implements MouseListener,
   {
     SequenceI sequence = av.getAlignment().getSequenceAt(seqCanvas.cursorY);
 
-    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1() - 1);
+    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1;
     scrollToVisible();
   }
 
@@ -518,26 +518,31 @@ public class SeqPanel extends JPanel implements MouseListener,
 
   int getKeyboardNo1()
   {
-    if (keyboardNo1 == null)
-      return 1;
-    else
+    try {
+    if (keyboardNo1 != null) 
     {
       int value = Integer.parseInt(keyboardNo1.toString());
       keyboardNo1 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo1 = null;
+    return 1;
   }
 
   int getKeyboardNo2()
   {
-    if (keyboardNo2 == null)
-      return 1;
-    else
-    {
+    try {
+    if (keyboardNo2!=null){
       int value = Integer.parseInt(keyboardNo2.toString());
       keyboardNo2 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo2 = null;
+    return 1;
   }
 
   /**
@@ -1426,8 +1431,8 @@ public class SeqPanel extends JPanel implements MouseListener,
     if (av.wrapAlignment && seq > av.getAlignment().getHeight())
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "Cannot edit annotations in wrapped view.",
-              "Wrapped view - no edit", JOptionPane.WARNING_MESSAGE);
+              MessageManager.getString("label.cannot_edit_annotations_in_wrapped_view"),
+              MessageManager.getString("label.wrapped_view_no_edit"), JOptionPane.WARNING_MESSAGE);
       return;
     }
 
index faebb1a..c069adb 100755 (executable)
@@ -31,6 +31,7 @@ import com.stevesoft.pat.Regex;
 import jalview.datamodel.*;
 import jalview.io.*;
 import jalview.util.DBRefUtils;
+import jalview.util.MessageManager;
 import jalview.ws.dbsources.das.api.DasSourceRegistryI;
 import jalview.ws.seqfetcher.DbSourceProxy;
 import java.awt.BorderLayout;
@@ -843,7 +844,7 @@ public class SequenceFetcher extends JPanel implements Runnable
       public void run()
       {
         JOptionPane.showInternalMessageDialog(Desktop.desktop, error,
-                "Error Retrieving Data", JOptionPane.WARNING_MESSAGE);
+                MessageManager.getString("label.error_retrieving_data"), JOptionPane.WARNING_MESSAGE);
       }
     });
   }
index d1003e5..09708da 100755 (executable)
@@ -608,7 +608,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
 
     if (tree == null)
     {
-      g.drawString("Calculating tree....", 20, getHeight() / 2);
+      g.drawString(MessageManager.getString("label.calculating_tree") + "....", 20, getHeight() / 2);
     }
     else
     {
@@ -852,7 +852,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         {
           aps[a].av.setSelectionGroup(null);
           aps[a].av.getAlignment().deleteAllGroups();
-          aps[a].av.sequenceColours = null;
+          aps[a].av.clearSequenceColours();
         }
         colourGroups();
       }
index 60c45c5..a104ad9 100755 (executable)
@@ -23,6 +23,7 @@ import jalview.jbgui.GUserDefinedColours;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ResidueProperties;
 import jalview.schemes.UserColourScheme;
+import jalview.util.MessageManager;
 
 import java.awt.Color;
 import java.awt.Font;
@@ -710,8 +711,8 @@ public class UserDefinedColours extends GUserDefinedColours implements
     if (schemeName.getText().trim().length() < 1)
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "User colour scheme must have a name!",
-              "No name for colour scheme", JOptionPane.WARNING_MESSAGE);
+              MessageManager.getString("label.user_colour_scheme_must_have_name"),
+              MessageManager.getString("label.no_name_colour_scheme"), JOptionPane.WARNING_MESSAGE);
       return;
     }
 
@@ -720,10 +721,8 @@ public class UserDefinedColours extends GUserDefinedColours implements
     {
       int reply = JOptionPane.showInternalConfirmDialog(
               Desktop.desktop,
-              "Colour scheme " + schemeName.getText() + " exists."
-                      + "\nContinue saving colour scheme as "
-                      + schemeName.getText() + "?",
-              "Duplicate scheme name", JOptionPane.YES_NO_OPTION);
+              MessageManager.formatMessage("label.colour_scheme_exists_overwrite", new String[]{schemeName.getText(),schemeName.getText()}),
+              MessageManager.getString("label.duplicate_scheme_name"), JOptionPane.YES_NO_OPTION);
       if (reply != JOptionPane.YES_OPTION)
       {
         return;
index a232987..92dd354 100644 (file)
@@ -17,6 +17,8 @@
  */
 package jalview.gui;
 
+import jalview.util.MessageManager;
+
 import java.io.*;
 import java.net.*;
 
@@ -137,9 +139,8 @@ public class UserQuestionnaireCheck implements Runnable
         jalview.bin.Cache.log.info("Prompting user for questionnaire at "
                 + qurl);
         int reply = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-                "There is a new Questionnaire available."
-                        + "Would you like to complete it now ?\n",
-                "Jalview User Survey", JOptionPane.YES_NO_OPTION,
+                MessageManager.getString("label.jalview_new_questionnaire"),
+                MessageManager.getString("label.jalview_user_survey"), JOptionPane.YES_NO_OPTION,
                 JOptionPane.QUESTION_MESSAGE);
 
         if (reply == JOptionPane.YES_OPTION)
old mode 100755 (executable)
new mode 100644 (file)
index c44e041..ea2bacb
@@ -29,6 +29,7 @@ import javax.swing.text.html.HTMLEditorKit;
 import javax.swing.text.html.StyleSheet;
 
 import jalview.jbgui.*;
+import jalview.util.MessageManager;
 import jalview.ws.WSClientI;
 
 /**
@@ -766,32 +767,32 @@ public class WebserviceInfo extends GWebserviceInfo implements
       switch (currentStatus)
       {
       case STATE_QUEUING:
-        g.drawString(title.concat(" - queuing"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_queueing")), 60, 30);
 
         break;
 
       case STATE_RUNNING:
-        g.drawString(title.concat(" - running"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_running")), 60, 30);
 
         break;
 
       case STATE_STOPPED_OK:
-        g.drawString(title.concat(" - complete"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_completed")), 60, 30);
 
         break;
 
       case STATE_CANCELLED_OK:
-        g.drawString(title.concat(" - job cancelled!"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_cancelled")), 60, 30);
 
         break;
 
       case STATE_STOPPED_ERROR:
-        g.drawString(title.concat(" - job error!"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.state_job_error")), 60, 30);
 
         break;
 
       case STATE_STOPPED_SERVERERROR:
-        g.drawString(title.concat(" - Server Error! (try later)"), 60, 30);
+        g.drawString(title.concat(" - ").concat(MessageManager.getString("label.server_error_try_later")), 60, 30);
 
         break;
       }
@@ -895,7 +896,7 @@ public class WebserviceInfo extends GWebserviceInfo implements
     final JPanel progressPanel = (JPanel) progressBars.get(new Long(id));
     if (handler.canCancel())
     {
-      JButton cancel = new JButton("Cancel");
+      JButton cancel = new JButton(MessageManager.getString("action.cancel"));
       final IProgressIndicator us = this;
       cancel.addActionListener(new ActionListener()
       {
index 8abbcee..4f222bf 100644 (file)
@@ -19,6 +19,7 @@ package jalview.gui;
 
 import jalview.gui.OptsAndParamsPage.OptionBox;
 import jalview.gui.OptsAndParamsPage.ParamBox;
+import jalview.util.MessageManager;
 import jalview.ws.jws2.JabaParamStore;
 import jalview.ws.jws2.JabaPreset;
 import jalview.ws.jws2.Jws2Discoverer;
@@ -337,7 +338,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     GridBagLayout gbl = new GridBagLayout();
     SetNamePanel.setLayout(gbl);
 
-    JLabel setNameLabel = new JLabel("Current parameter set name :");
+    JLabel setNameLabel = new JLabel(MessageManager.getString("label.current_parameter_set_name"));
     setNameLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
 
     setNameInfo.add(setNameLabel);
@@ -566,14 +567,27 @@ public class WsJobParameters extends JPanel implements ItemListener,
   @SuppressWarnings("unchecked")
   private void updateTable(WsParamSetI p, List<ArgumentI> jobArgset)
   {
+    boolean setDefaultParams=false;
+    if (lastParmSet == null)
+    {
+      isUserPreset = false;
+      // First call - so provide Service default settings
+      setName.setSelectedItem(lastSetName = SVC_DEF);
+    }
+    if (p==null && SVC_DEF.equals(""+setName.getSelectedItem()))
+    {
+      // indicate that service defaults should be set if available
+      setDefaultParams=true;
+    }
     // populate table from default parameter set.
     List<ArgumentI> args = paramStore.getServiceParameters();
 
     // split to params and required arguments
     {
       int cw = 0;
+      boolean optset=false;
       for (ArgumentI myarg : args)
-      {
+      { 
         // Ideally, Argument would implement isRequired !
         if (myarg instanceof ParameterI)
         {
@@ -586,7 +600,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
           {
             OptionI opt = (OptionI) myarg;
             OptionBox ob = opanp.addOption(opt);
-            ob.resetToDefault();
+            ob.resetToDefault(setDefaultParams);
             if (MAX_OPTWIDTH < ob.getPreferredSize().width)
             {
               MAX_OPTWIDTH = ob.getPreferredSize().width;
@@ -620,16 +634,6 @@ public class WsJobParameters extends JPanel implements ItemListener,
       // TODO: check if args should be unselected prior to resetting using the
       // preset
     }
-    else
-    {
-      if (lastParmSet == null)
-      {
-        isUserPreset = false;
-        // first call - so create a dummy name
-
-        setName.setSelectedItem(lastSetName = SVC_DEF);
-      }
-    }
 
     if (jobArgset != null)
     {
index 6be5d44..744cd8f 100644 (file)
@@ -19,6 +19,7 @@ package jalview.gui;
 
 import jalview.bin.Cache;
 import jalview.jbgui.GWsPreferences;
+import jalview.util.MessageManager;
 import jalview.ws.jws2.Jws2Discoverer;
 import jalview.ws.rest.RestServiceDescription;
 
@@ -445,7 +446,7 @@ public class WsPreferences extends GWsPreferences
     JTextField urltf = new JTextField(url, 40);
     JPanel panel = new JPanel(new BorderLayout());
     JPanel pane12 = new JPanel(new BorderLayout());
-    pane12.add(new JLabel("URL: "), BorderLayout.CENTER);
+    pane12.add(new JLabel(MessageManager.getString("label.url")), BorderLayout.CENTER);
     pane12.add(urltf, BorderLayout.EAST);
     panel.add(pane12, BorderLayout.NORTH);
     boolean valid = false;
@@ -471,7 +472,7 @@ public class WsPreferences extends GWsPreferences
       {
         valid = false;
         JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                "Invalid URL !");
+                MessageManager.getString("label.invalid_url"));
       }
     }
     if (valid && resp == JOptionPane.OK_OPTION)
index 45e6c47..4abd768 100755 (executable)
@@ -131,7 +131,9 @@ public class AnnotationFile
       StringBuffer colours = new StringBuffer();
       StringBuffer graphLine = new StringBuffer();
       StringBuffer rowprops = new StringBuffer();
-      Hashtable graphGroup = new Hashtable();
+      Hashtable<Integer,String> graphGroup = new Hashtable<Integer,String>();
+      Hashtable<Integer, Object[]> graphGroup_refs = new Hashtable<Integer,Object[]>();
+      BitSet graphGroupSeen = new BitSet();
 
       java.awt.Color color;
 
@@ -139,61 +141,20 @@ public class AnnotationFile
       {
         row = annotations[i];
 
-        if (!row.visible && !row.hasScore())
+        if (!row.visible && !row.hasScore() && !(row.graphGroup>-1 && graphGroupSeen.get(row.graphGroup)))
         {
           continue;
         }
 
         color = null;
         oneColour = true;
-
-        if (row.sequenceRef == null)
-        {
-          if (refSeq != null)
-          {
-            text.append(newline);
-            text.append("SEQUENCE_REF\tALIGNMENT");
-            text.append(newline);
-          }
-
-          refSeq = null;
-        }
-
-        else
-        {
-          if (refSeq == null || refSeq != row.sequenceRef)
-          {
-            refSeq = row.sequenceRef;
-            text.append(newline);
-            text.append("SEQUENCE_REF\t");
-            text.append(refSeq.getName());
-            text.append(newline);
-          }
-        }
+        
+        // mark any sequence references for the row
+        writeSequence_Ref(refSeq ,row.sequenceRef);
+        refSeq = row.sequenceRef;
         // mark any group references for the row
-        if (row.groupRef == null)
-        {
-
-          if (refGroup != null)
-          {
-            text.append(newline);
-            text.append("GROUP_REF\tALIGNMENT");
-            text.append(newline);
-          }
-
-          refGroup = null;
-        }
-        else
-        {
-          if (refGroup == null || refGroup != row.groupRef)
-          {
-            refGroup = row.groupRef;
-            text.append(newline);
-            text.append("GROUP_REF\t");
-            text.append(refGroup.getName());
-            text.append(newline);
-          }
-        }
+        writeGroup_Ref(refGroup, row.groupRef);
+        refGroup = row.groupRef;
 
         boolean hasGlyphs = row.hasIcons, hasLabels = row.hasText, hasValues = row.hasScore, hasText = false;
         // lookahead to check what the annotation row object actually contains.
@@ -251,13 +212,16 @@ public class AnnotationFile
 
           if (row.graphGroup > -1)
           {
-            String key = String.valueOf(row.graphGroup);
+            graphGroupSeen.set(row.graphGroup);
+            Integer key = new Integer(row.graphGroup);
             if (graphGroup.containsKey(key))
             {
               graphGroup.put(key, graphGroup.get(key) + "\t" + row.label);
+              
             }
             else
             {
+              graphGroup_refs.put(key, new Object[] { refSeq, refGroup});
               graphGroup.put(key, row.label);
             }
           }
@@ -374,21 +338,37 @@ public class AnnotationFile
           rowprops.append(row.centreColLabels);
           rowprops.append(newline);
         }
+        if (graphLine.length()>0) {
+          text.append(graphLine.toString());
+          graphLine.setLength(0);
+        }
       }
 
       text.append(newline);
 
       text.append(colours.toString());
-      text.append(graphLine.toString());
       if (graphGroup.size() > 0)
       {
-        text.append("COMBINE\t");
-        Enumeration en = graphGroup.elements();
-        while (en.hasMoreElements())
-        {
-          text.append(en.nextElement());
+        SequenceI oldRefSeq = refSeq;
+        SequenceGroup oldRefGroup = refGroup;
+        for (Map.Entry<Integer, String> combine_statement:graphGroup.entrySet())
+        {
+          Object[] seqRefAndGroup=graphGroup_refs.get(combine_statement.getKey());
+          
+          writeSequence_Ref(refSeq, (SequenceI)seqRefAndGroup[0]);
+          refSeq = (SequenceI)seqRefAndGroup[0];
+          
+          writeGroup_Ref(refGroup, (SequenceGroup)seqRefAndGroup[1]);
+          refGroup = (SequenceGroup)seqRefAndGroup[1];
+          text.append("COMBINE\t");
+          text.append(combine_statement.getValue());
           text.append(newline);
         }
+        writeSequence_Ref(refSeq, oldRefSeq);
+        refSeq = oldRefSeq;
+        
+        writeGroup_Ref(refGroup, oldRefGroup);
+        refGroup = oldRefGroup;
       }
       text.append(rowprops.toString());
     }
@@ -419,6 +399,62 @@ public class AnnotationFile
     return text.toString();
   }
 
+  private Object writeGroup_Ref(SequenceGroup refGroup, SequenceGroup next_refGroup)
+  {
+    if (next_refGroup == null)
+    {
+
+      if (refGroup != null)
+      {
+        text.append(newline);
+        text.append("GROUP_REF\t");
+        text.append("ALIGNMENT");
+        text.append(newline);
+      }
+      return true;
+    }
+    else
+    {
+      if (refGroup == null || refGroup != next_refGroup)
+      {
+        text.append(newline);
+        text.append("GROUP_REF\t");
+        text.append(next_refGroup.getName());
+        text.append(newline);
+        return true;
+      }
+    }
+    return false;  
+  }
+  
+  private boolean writeSequence_Ref(SequenceI refSeq, SequenceI next_refSeq)
+  {
+
+    if (next_refSeq==null)
+    {
+      if (refSeq != null)
+      {
+        text.append(newline);
+        text.append("SEQUENCE_REF\t");
+        text.append("ALIGNMENT");
+        text.append(newline);
+        return true;
+      }
+    }
+    else
+    {
+      if (refSeq == null || refSeq != next_refSeq)
+      {
+        text.append(newline);
+        text.append("SEQUENCE_REF\t");
+        text.append(next_refSeq.getName());
+        text.append(newline);
+        return true;
+      }
+    }
+    return false;
+  }
+
   public void printGroups(List<SequenceGroup> list)
   {
     SequenceI seqrep = null;
@@ -579,14 +615,22 @@ public class AnnotationFile
     {
       ex.printStackTrace();
       System.out.println("Problem reading annotation file: " + ex);
+      if (nlinesread>0) {
+        System.out.println("Last read line "+nlinesread+": '"+lastread+"' (first 80 chars) ...");
+      }
       return false;
     }
     return false;
   }
-
+  long nlinesread=0;
+  String lastread="";
+  private static String GRAPHLINE="GRAPHLINE", COMBINE="COMBINE"; 
   public boolean parseAnnotationFrom(AlignmentI al, BufferedReader in)
           throws Exception
   {
+    nlinesread = 0;
+    ArrayList<Object[]> combineAnnotation_calls = new ArrayList<Object[]>();
+    ArrayList<Object[]> deferredAnnotation_calls = new ArrayList<Object[]>();
     boolean modified = false;
     String groupRef = null;
     Hashtable groupRefRows = new Hashtable();
@@ -631,6 +675,7 @@ public class AnnotationFile
       boolean jvAnnotationFile = false;
       while ((line = in.readLine()) != null)
       {
+        nlinesread++;lastread = new String(line);
         if (line.indexOf("#") == 0)
         {
           continue;
@@ -651,6 +696,7 @@ public class AnnotationFile
 
       while ((line = in.readLine()) != null)
       {
+        nlinesread++;lastread = new String(line);
         if (line.indexOf("#") == 0
                 || line.indexOf("JALVIEW_ANNOTATION") > -1
                 || line.length() == 0)
@@ -668,9 +714,10 @@ public class AnnotationFile
           continue;
         }
 
-        else if (token.equalsIgnoreCase("COMBINE"))
+        else if (token.equalsIgnoreCase(COMBINE))
         {
-          combineAnnotations(al, st);
+          // keep a record of current state and resolve groupRef at end
+          combineAnnotation_calls.add(new Object[] { st, refSeq, groupRef});
           modified = true;
           continue;
         }
@@ -680,9 +727,10 @@ public class AnnotationFile
           modified = true;
           continue;
         }
-        else if (token.equalsIgnoreCase("GRAPHLINE"))
+        else if (token.equalsIgnoreCase(GRAPHLINE))
         {
-          addLine(al, st);
+          // resolve at end
+          deferredAnnotation_calls.add(new Object[] { GRAPHLINE, st, refSeq, groupRef});
           modified = true;
           continue;
         }
@@ -885,7 +933,8 @@ public class AnnotationFile
         // and set modification flag
         modified = true;
       }
-      // Finally, resolve the groupRefs
+      // Resolve the groupRefs
+      Hashtable <String,SequenceGroup> groupRefLookup=new Hashtable<String,SequenceGroup>();
       Enumeration en = groupRefRows.keys();
 
       while (en.hasMoreElements())
@@ -909,6 +958,7 @@ public class AnnotationFile
             {
               matched = true;
               Vector rowset = (Vector) groupRefRows.get(groupRef);
+              groupRefLookup.put(groupRef,  theGroup);
               if (rowset != null && rowset.size() > 0)
               {
                 AlignmentAnnotation alan = null;
@@ -923,6 +973,34 @@ public class AnnotationFile
         }
         ((Vector) groupRefRows.get(groupRef)).removeAllElements();
       }
+      // process any deferred attribute settings for each context
+      for (Object[] _deferred_args : deferredAnnotation_calls)
+      {
+        if (_deferred_args[0] == GRAPHLINE)
+        {
+          addLine(al,
+                  (StringTokenizer) _deferred_args[1], // st
+                  (SequenceI) _deferred_args[2], // refSeq
+                  (_deferred_args[3] == null) ? null : groupRefLookup
+                          .get((String) _deferred_args[3]) // the reference
+                                                           // group, or null
+          );
+        }
+      }      
+
+      // finally, combine all the annotation rows within each context.
+      /**
+       * number of combine statements in this annotation file. Used to create new groups for combined annotation graphs without disturbing existing ones
+       */
+      int combinecount = 0;
+      for (Object[] _combine_args:combineAnnotation_calls) {
+        combineAnnotations(al, 
+                ++combinecount,
+                (StringTokenizer) _combine_args[0], // st
+                (SequenceI) _combine_args[1], // refSeq
+                (_combine_args[2]==null) ? null : groupRefLookup.get((String)_combine_args[2]) // the reference group, or null
+                );
+      }
     }
     return modified;
   }
@@ -1079,19 +1157,34 @@ public class AnnotationFile
     }
   }
 
-  void combineAnnotations(AlignmentI al, StringTokenizer st)
+  void combineAnnotations(AlignmentI al, int combineCount, StringTokenizer st, SequenceI seqRef, SequenceGroup groupRef)
   {
-    int graphGroup = -1;
     String group = st.nextToken();
     // First make sure we are not overwriting the graphIndex
+    int graphGroup=0;
     if (al.getAlignmentAnnotation() != null)
     {
       for (int i = 0; i < al.getAlignmentAnnotation().length; i++)
       {
-        if (al.getAlignmentAnnotation()[i].label.equalsIgnoreCase(group))
+        AlignmentAnnotation aa = al.getAlignmentAnnotation()[i];
+        
+        if (aa.graphGroup>graphGroup)
+        {
+          // try to number graphGroups in order of occurence.
+          graphGroup=aa.graphGroup+1;
+        }
+        if (aa.sequenceRef==seqRef && aa.groupRef==groupRef && aa.label.equalsIgnoreCase(group))
         {
-          graphGroup = al.getAlignmentAnnotation()[i].graphGroup + 1;
-          al.getAlignmentAnnotation()[i].graphGroup = graphGroup;
+          if (aa.graphGroup>-1)
+          {
+            graphGroup = aa.graphGroup;
+          } else {
+            if (graphGroup <= combineCount)
+            {
+              graphGroup=combineCount+1;
+            }
+            aa.graphGroup = graphGroup;
+          }
           break;
         }
       }
@@ -1102,9 +1195,10 @@ public class AnnotationFile
         group = st.nextToken();
         for (int i = 0; i < al.getAlignmentAnnotation().length; i++)
         {
-          if (al.getAlignmentAnnotation()[i].label.equalsIgnoreCase(group))
+          AlignmentAnnotation aa = al.getAlignmentAnnotation()[i];
+          if (aa.sequenceRef==seqRef && aa.groupRef==groupRef && aa.label.equalsIgnoreCase(group))
           {
-            al.getAlignmentAnnotation()[i].graphGroup = graphGroup;
+            aa.graphGroup = graphGroup;
             break;
           }
         }
@@ -1117,19 +1211,26 @@ public class AnnotationFile
     }
   }
 
-  void addLine(AlignmentI al, StringTokenizer st)
+  void addLine(AlignmentI al, StringTokenizer st, SequenceI seqRef, SequenceGroup groupRef)
   {
     String group = st.nextToken();
     AlignmentAnnotation annotation = null, alannot[] = al
             .getAlignmentAnnotation();
+    float value = new Float(st.nextToken()).floatValue();
+    String label = st.hasMoreTokens() ? st.nextToken() : null;
+    java.awt.Color colour = null;
+    if (st.hasMoreTokens())
+    {
+      UserColourScheme ucs = new UserColourScheme(st.nextToken());
+      colour = ucs.findColour('A');
+    }
     if (alannot != null)
     {
       for (int i = 0; i < alannot.length; i++)
       {
-        if (alannot[i].label.equalsIgnoreCase(group))
+        if (alannot[i].label.equalsIgnoreCase(group) && (seqRef==null || alannot[i].sequenceRef==seqRef) && (groupRef==null || alannot[i].groupRef==groupRef))
         {
-          annotation = alannot[i];
-          break;
+          alannot[i].setThreshold(new GraphLine(value, label, colour));
         }
       }
     }
@@ -1137,16 +1238,6 @@ public class AnnotationFile
     {
       return;
     }
-    float value = new Float(st.nextToken()).floatValue();
-    String label = st.hasMoreTokens() ? st.nextToken() : null;
-    java.awt.Color colour = null;
-    if (st.hasMoreTokens())
-    {
-      UserColourScheme ucs = new UserColourScheme(st.nextToken());
-      colour = ucs.findColour('A');
-    }
-
-    annotation.setThreshold(new GraphLine(value, label, colour));
   }
 
   void addGroup(AlignmentI al, StringTokenizer st)
index 11f5adb..67d50ee 100755 (executable)
@@ -45,21 +45,24 @@ public class AppletFormatAdapter
    * method
    */
   public static final String[] WRITEABLE_FORMATS = new String[]
-  { "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA" };
+  { "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH",
+      "AMSA" };
 
   /**
    * List of extensions corresponding to file format types in WRITABLE_FNAMES
    * that are writable by the application.
    */
   public static final String[] WRITABLE_EXTENSIONS = new String[]
-  { "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "jar" };
+  { "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "jar",
+      "sto,stk" };
 
   /**
    * List of writable formats by the application. Order must correspond with the
    * WRITABLE_EXTENSIONS list of formats.
    */
   public static final String[] WRITABLE_FNAMES = new String[]
-  { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Jalview" };
+  { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Jalview",
+      "STH" };
 
   /**
    * List of readable format file extensions by application in order
@@ -445,7 +448,7 @@ public class AppletFormatAdapter
       }
       else if (format.equalsIgnoreCase("STH"))
       {
-        afile = new StockholmFile();
+        afile = new StockholmFile(alignment);
       }
       else if (format.equalsIgnoreCase("AMSA"))
       {
@@ -502,44 +505,47 @@ public class AppletFormatAdapter
         {
           System.out.println("Reading file: " + f);
           AppletFormatAdapter afa = new AppletFormatAdapter();
-          Runtime r = Runtime.getRuntime();
-          System.gc();
-          long memf = -r.totalMemory() + r.freeMemory();
-          long t1 = -System.currentTimeMillis();
-          Alignment al = afa.readFile(args[i], FILE,
-                  new IdentifyFile().Identify(args[i], FILE));
-          t1 += System.currentTimeMillis();
-          System.gc();
-          memf += r.totalMemory() - r.freeMemory();
-          if (al != null)
+          String fName = f.getName();
           {
-            System.out.println("Alignment contains " + al.getHeight()
-                    + " sequences and " + al.getWidth() + " columns.");
-            try
+            Runtime r = Runtime.getRuntime();
+            System.gc();
+            long memf = -r.totalMemory() + r.freeMemory();
+            long t1 = -System.currentTimeMillis();
+            Alignment al = afa.readFile(args[i], FILE,
+                    new IdentifyFile().Identify(args[i], FILE));
+            t1 += System.currentTimeMillis();
+            System.gc();
+            memf += r.totalMemory() - r.freeMemory();
+            if (al != null)
             {
-              System.out.println(new AppletFormatAdapter().formatSequences(
-                      "FASTA", al, true));
-            } catch (Exception e)
+              System.out.println("Alignment contains " + al.getHeight()
+                      + " sequences and " + al.getWidth() + " columns.");
+              try
+              {
+                System.out.println(new AppletFormatAdapter()
+                        .formatSequences("FASTA", al, true));
+              } catch (Exception e)
+              {
+                System.err
+                        .println("Couln't format the alignment for output as a FASTA file.");
+                e.printStackTrace(System.err);
+              }
+            }
+            else
             {
-              System.err
-                      .println("Couln't format the alignment for output as a FASTA file.");
-              e.printStackTrace(System.err);
+              System.out.println("Couldn't read alignment");
             }
+            System.out.println("Read took " + (t1 / 1000.0) + " seconds.");
+            System.out
+                    .println("Difference between free memory now and before is "
+                            + (memf / (1024.0 * 1024.0) * 1.0) + " MB");
           }
-          else
-          {
-            System.out.println("Couldn't read alignment");
-          }
-          System.out.println("Read took " + (t1 / 1000.0) + " seconds.");
-          System.out
-                  .println("Difference between free memory now and before is "
-                          + (memf / (1024.0 * 1024.0) * 1.0) + " MB");
-
         } catch (Exception e)
         {
           System.err.println("Exception when dealing with " + i
                   + "'th argument: " + args[i] + "\n" + e);
         }
+
       }
       else
       {
@@ -720,4 +726,5 @@ public class AppletFormatAdapter
     }
     return null;
   }
+
 }
index 975a1a3..a8c60fd 100755 (executable)
@@ -23,6 +23,7 @@ import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.gui.*;
+import jalview.util.MessageManager;
 
 public class FileLoader implements Runnable
 {
@@ -322,9 +323,14 @@ public class FileLoader implements Runnable
 
             if (!protocol.equals(AppletFormatAdapter.PASTE))
               alignFrame.setFileName(file, format);
-
-            Desktop.addInternalFrame(alignFrame, title,
-                    AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+            if (raiseGUI)
+            {
+              // add the window to the GUI
+              // note - this actually should happen regardless of raiseGUI status in Jalview 3
+              // TODO: define 'virtual desktop' for benefit of headless scripts that perform queries to find the 'current working alignment'
+              Desktop.addInternalFrame(alignFrame, title,
+                      AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+            }
 
             try
             {
@@ -351,7 +357,7 @@ public class FileLoader implements Runnable
               public void run()
               {
                 JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                        errorMessage, "Error loading file",
+                        errorMessage, MessageManager.getString("label.error_loading_file"),
                         JOptionPane.WARNING_MESSAGE);
               }
             });
@@ -376,8 +382,8 @@ public class FileLoader implements Runnable
           public void run()
           {
             javax.swing.JOptionPane.showInternalMessageDialog(
-                    Desktop.desktop, "Encountered problems opening " + file
-                            + "!!", "File open error",
+                    Desktop.desktop, MessageManager.formatMessage("label.problems_opening_file", new String[]{file}),
+                    MessageManager.getString("label.file_open_error"),
                     javax.swing.JOptionPane.WARNING_MESSAGE);
           }
         });
index 62237d9..bb52ec2 100755 (executable)
@@ -19,6 +19,7 @@ package jalview.io;
 
 import java.io.*;
 import java.net.*;
+import java.util.zip.GZIPInputStream;
 
 /**
  * implements a random access wrapper around a particular datasource, for
@@ -141,18 +142,63 @@ public class FileParse
     }
     if (!error)
     {
+      if (fileStr.toLowerCase().endsWith(".gz"))
+      {
+        try
+        {
+          dataIn = tryAsGzipSource(new FileInputStream(fileStr));
+          dataName = fileStr;
+          return error;
+        } catch (Exception x)
+        {
+          warningMessage = "Failed  to resolve as a GZ stream ("
+                  + x.getMessage() + ")";
+          x.printStackTrace();
+        }
+        ;
+      }
+      
       dataIn = new BufferedReader(new FileReader(fileStr));
       dataName = fileStr;
     }
     return error;
   }
-
+  private BufferedReader tryAsGzipSource(InputStream inputStream) throws Exception
+  {
+    BufferedReader inData = new BufferedReader(new InputStreamReader(new GZIPInputStream(inputStream)));
+    inData.mark(2048);
+    inData.read();
+    inData.reset();
+    return inData;
+  }
   private boolean checkURLSource(String fileStr) throws IOException,
           MalformedURLException
   {
     errormessage = "URL NOT FOUND";
     URL url = new URL(fileStr);
-    dataIn = new BufferedReader(new InputStreamReader(url.openStream()));
+    //
+    // GZIPInputStream code borrowed from Aquaria (soon to be open sourced) via Kenny Sabir
+    Exception e=null;
+    if (fileStr.toLowerCase().endsWith(".gz")) {
+      try {
+          InputStream inputStream = url.openStream();
+          dataIn = tryAsGzipSource(inputStream);
+          dataName = fileStr;
+          return false;
+      } catch (Exception ex) {
+        e=ex;
+      }
+    }
+
+    try {
+      dataIn = new BufferedReader(new InputStreamReader(url.openStream()));
+    } catch (IOException q) {
+      if (e!=null)
+      {
+        throw new IOException("Failed to resolve GZIP stream", e);
+      }
+      throw q;
+    }
     // record URL as name of datasource.
     dataName = fileStr;
     return false;
index d664dcf..9ed1491 100755 (executable)
@@ -292,6 +292,7 @@ public class NewickFile extends FileParse
 
     int nextcp = 0;
     int ncp = cp;
+    boolean parsednodename=false;
     while (majorsyms.searchFrom(nf, cp) && (Error == null))
     {
       int fcp = majorsyms.matchedFrom();
@@ -349,14 +350,20 @@ public class NewickFile extends FileParse
       case '\'':
 
         com.stevesoft.pat.Regex qnodename = new com.stevesoft.pat.Regex(
-                "([^']|'')+'");
+                "'([^']|'')+'");
 
         if (qnodename.searchFrom(nf, fcp))
         {
           int nl = qnodename.stringMatched().length();
-          nodename = new String(qnodename.stringMatched().substring(0,
+          nodename = new String(qnodename.stringMatched().substring(1,
                   nl - 1));
-          cp = fcp + nl + 1;
+          // unpack any escaped colons
+          com.stevesoft.pat.Regex xpandquotes = com.stevesoft.pat.Regex.perlCode("s/''/'/");
+          String widernodename = xpandquotes.replaceAll(nodename);
+          nodename=widernodename;
+          // jump to after end of quoted nodename
+          nextcp = fcp + nl + 1;
+          parsednodename=true;
         }
         else
         {
@@ -425,7 +432,7 @@ public class NewickFile extends FileParse
         com.stevesoft.pat.Regex ndist = new com.stevesoft.pat.Regex(
                 ":([-0-9Ee.+]+)");
 
-        if (uqnodename.search(fstring)
+        if (!parsednodename && uqnodename.search(fstring)
                 && ((uqnodename.matchedFrom(1) == 0) || (fstring
                         .charAt(uqnodename.matchedFrom(1) - 1) != ':'))) // JBPNote
         // HACK!
@@ -584,6 +591,7 @@ public class NewickFile extends FileParse
         distance = DefDistance;
         bootstrap = DefBootstrap;
         commentString2 = null;
+        parsednodename=false;
       }
       if (nextcp == 0)
       {
index 669181a..02ab5c1 100644 (file)
@@ -25,6 +25,7 @@ import java.util.*;
 
 import com.stevesoft.pat.*;
 import jalview.datamodel.*;
+import jalview.util.Format;
 
 // import org.apache.log4j.*;
 
@@ -43,11 +44,22 @@ import jalview.datamodel.*;
 public class StockholmFile extends AlignFile
 {
   // static Logger logger = Logger.getLogger("jalview.io.StockholmFile");
+  StringBuffer out; // output buffer
+
+  AlignmentI al;
 
   public StockholmFile()
   {
   }
 
+  /**
+   * Creates a new StockholmFile object for output.
+   */
+  public StockholmFile(AlignmentI al)
+  {
+    this.al = al;
+  }
+
   public StockholmFile(String inFile, String type) throws IOException
   {
     super(inFile, type);
@@ -132,8 +144,24 @@ public class StockholmFile extends AlignFile
       if (rend.search(line))
       {
         // End of the alignment, pass stuff back
-
         this.noSeqs = seqs.size();
+
+        String seqdb,dbsource = null;
+        Regex pf = new Regex("PF[0-9]{5}(.*)"); // Finds AC for Pfam
+        Regex rf = new Regex("RF[0-9]{5}(.*)"); // Finds AC for Rfam
+        if (getAlignmentProperty("AC") != null)
+        {
+          String dbType = getAlignmentProperty("AC").toString();
+          if (pf.search(dbType))
+          {
+            // PFAM Alignment - so references are typically from Uniprot
+            dbsource = "PFAM";
+          }
+          else if (rf.search(dbType))
+          {
+            dbsource = "RFAM";
+          }
+        }
         // logger.debug("Number of sequences: " + this.noSeqs);
         Enumeration accs = seqs.keys();
         while (accs.hasMoreElements())
@@ -176,6 +204,7 @@ public class StockholmFile extends AlignFile
             String desc = (String) accAnnotations.get("DE");
             seqO.setDescription((desc == null) ? "" : desc);
           }
+
           // Add DB References (if any)
           if (accAnnotations != null && accAnnotations.containsKey("DR"))
           {
@@ -185,19 +214,22 @@ public class StockholmFile extends AlignFile
               String src = dbr.substring(0, dbr.indexOf(";"));
               String acn = dbr.substring(dbr.indexOf(";") + 1);
               jalview.util.DBRefUtils.parseToDbRef(seqO, src, "0", acn);
-              // seqO.addDBRef(dbref);
             }
           }
-          if (accAnnotations != null && accAnnotations.containsKey("SS"))
-          {
-            Vector v = (Vector) accAnnotations.get("SS");
 
-            for (int i = 0; i < v.size(); i++)
+          if (accAnnotations != null && accAnnotations.containsKey("AC"))
+          {
+            if (dbsource != null)
             {
-              AlignmentAnnotation an = (AlignmentAnnotation) v.elementAt(i);
-              seqO.addAlignmentAnnotation(an);
-              // annotations.add(an);
-            }
+              String dbr = (String) accAnnotations.get("AC");
+              if (dbr != null)
+              {
+                // we could get very clever here - but for now - just try to guess accession type from source of alignment plus structure of accession
+                guessDatabaseFor(seqO, dbr, dbsource);
+                
+              }
+            } 
+            // else - do what ?  add the data anyway and prompt the user to specify what references these are ?
           }
 
           Hashtable features = null;
@@ -224,6 +256,24 @@ public class StockholmFile extends AlignFile
               // TODO: map coding region to core jalview feature types
               String type = i.nextElement().toString();
               Hashtable content = (Hashtable) features.remove(type);
+
+              // add alignment annotation for this feature
+              String key = type2id(type);
+              if (key != null)
+              {
+                if (accAnnotations != null
+                        && accAnnotations.containsKey(key))
+                {
+                  Vector vv = (Vector) accAnnotations.get(key);
+                  for (int ii = 0; ii < vv.size(); ii++)
+                  {
+                    AlignmentAnnotation an = (AlignmentAnnotation) vv
+                            .elementAt(ii);
+                    seqO.addAlignmentAnnotation(an);
+                  }
+                }
+              }
+
               Enumeration j = content.keys();
               while (j.hasMoreElements())
               {
@@ -477,25 +527,20 @@ public class StockholmFile extends AlignFile
             }
             ns += seq;
             content.put(description, ns);
-
-            if (type.equals("SS"))
+            Hashtable strucAnn;
+            if (seqAnn.containsKey(acc))
             {
-              Hashtable strucAnn;
-              if (seqAnn.containsKey(acc))
-              {
-                strucAnn = (Hashtable) seqAnn.get(acc);
-              }
-              else
-              {
-                strucAnn = new Hashtable();
-              }
-
-              Vector newStruc = new Vector();
-              parseAnnotationRow(newStruc, type, ns);
-
-              strucAnn.put(type, newStruc);
-              seqAnn.put(acc, strucAnn);
+              strucAnn = (Hashtable) seqAnn.get(acc);
             }
+            else
+            {
+              strucAnn = new Hashtable();
+            }
+
+            Vector newStruc = new Vector();
+            parseAnnotationRow(newStruc, type, ns);
+            strucAnn.put(type, newStruc);
+            seqAnn.put(acc, strucAnn);
           }
           else
           {
@@ -522,6 +567,95 @@ public class StockholmFile extends AlignFile
     }
   }
 
+  /**
+   * Demangle an accession string and guess the originating sequence database for a given sequence
+   * @param seqO sequence to be annotated
+   * @param dbr Accession string for sequence
+   * @param dbsource source database for alignment (PFAM or RFAM)
+   */
+  private void guessDatabaseFor(Sequence seqO, String dbr, String dbsource)
+  {
+    DBRefEntry dbrf=null;
+    List<DBRefEntry> dbrs=new ArrayList<DBRefEntry>();
+    String seqdb="Unknown",sdbac=""+dbr;
+    int st=-1,en=-1,p;
+    if ((st=sdbac.indexOf("/"))>-1)
+    {
+      String num,range=sdbac.substring(st+1);
+      sdbac = sdbac.substring(0,st);
+      if ((p=range.indexOf("-"))>-1)
+      {
+        p++;
+        if (p<range.length())
+        {
+        num = range.substring(p).trim();
+        try {
+          en = Integer.parseInt(num);
+        } catch (NumberFormatException x)
+        {
+          // could warn here that index is invalid
+          en = -1;
+        }
+        }
+      } else {
+        p=range.length();
+      }
+      num=range.substring(0,p).trim();
+      try {
+        st = Integer.parseInt(num);
+      } catch (NumberFormatException x)
+      {
+        // could warn here that index is invalid
+        st = -1;
+      }
+    }
+    if (dbsource.equals("PFAM")) {
+      seqdb = "UNIPROT";
+      if (sdbac.indexOf(".")>-1)
+      {
+        // strip of last subdomain
+        sdbac = sdbac.substring(0,sdbac.indexOf("."));
+        dbrf = jalview.util.DBRefUtils.parseToDbRef(seqO, seqdb, dbsource, sdbac);
+        if (dbrf!=null)
+        {
+          dbrs.add(dbrf);
+        }
+      }
+      dbrf = jalview.util.DBRefUtils.parseToDbRef(seqO, dbsource, dbsource, dbr);
+      if (dbr!=null)
+      {
+        dbrs.add(dbrf);
+      }
+    } else {
+      seqdb = "EMBL"; // total guess - could be ENA, or something else these days
+      if (sdbac.indexOf(".")>-1)
+      {
+        // strip off last subdomain
+        sdbac = sdbac.substring(0,sdbac.indexOf("."));
+        dbrf = jalview.util.DBRefUtils.parseToDbRef(seqO, seqdb, dbsource, sdbac);
+        if (dbrf!=null)
+        {
+          dbrs.add(dbrf);
+        }
+      }
+      
+      dbrf = jalview.util.DBRefUtils.parseToDbRef(seqO, dbsource, dbsource, dbr);
+      if (dbrf!=null)
+      {
+        dbrs.add(dbrf);
+      }
+    }
+    if (st!=-1 && en!=-1)
+    {
+      for (DBRefEntry d:dbrs)
+      {
+        jalview.util.MapList mp = new jalview.util.MapList(new int[] { seqO.getStart(),seqO.getEnd()},new int[] { st,en},1,1);
+        jalview.datamodel.Mapping mping = new Mapping(mp);
+        d.setMap(mping);
+      }
+    }
+  }
+
   protected static AlignmentAnnotation parseAnnotationRow(
           Vector annotation, String label, String annots)
   {
@@ -538,8 +672,12 @@ public class StockholmFile extends AlignFile
     convert2 = closeparen.replaceAll(convert1);
     annots = convert2;
 
-    String type = (label.indexOf("_cons") == label.length() - 5) ? label
-            .substring(0, label.length() - 5) : label;
+    String type = label;
+    if (label.contains("_cons"))
+    {
+      type = (label.indexOf("_cons") == label.length() - 5) ? label
+              .substring(0, label.length() - 5) : label;
+    }
     boolean ss = false;
     type = id2type(type);
     if (type.equals("secondary structure"))
@@ -606,14 +744,211 @@ public class StockholmFile extends AlignFile
     return annot;
   }
 
-  public static String print(SequenceI[] s)
+  public String print(SequenceI[] s)
   {
-    return "not yet implemented";
+    // find max length of id
+    int max = 0;
+    int maxid = 0;
+    int in = 0;
+    Hashtable dataRef = null;
+    while ((in < s.length) && (s[in] != null))
+    {
+      String tmp = printId(s[in]);
+      if (s[in].getSequence().length > max)
+      {
+        max = s[in].getSequence().length;
+      }
+
+      if (tmp.length() > maxid)
+      {
+        maxid = tmp.length();
+      }
+      if (s[in].getDBRef() != null)
+      {
+        for (int idb = 0; idb < s[in].getDBRef().length; idb++)
+        {
+          if (dataRef == null)
+            dataRef = new Hashtable();
+
+          String datAs1 = s[in].getDBRef()[idb].getSource().toString()
+                  + " ; "
+                  + s[in].getDBRef()[idb].getAccessionId().toString();
+          dataRef.put(tmp, datAs1);
+        }
+      }
+      in++;
+    }
+    maxid += 9;
+    int i = 0;
+
+    // output database type
+    if (al.getProperties() != null)
+    {
+      if (!al.getProperties().isEmpty())
+      {
+        Enumeration key = al.getProperties().keys();
+        Enumeration val = al.getProperties().elements();
+        while (key.hasMoreElements())
+        {
+          out.append("#=GF " + key.nextElement() + " " + val.nextElement());
+          out.append(newline);
+        }
+      }
+    }
+
+    // output database accessions
+    if (dataRef != null)
+    {
+      Enumeration en = dataRef.keys();
+      while (en.hasMoreElements())
+      {
+        Object idd = en.nextElement();
+        String type = (String) dataRef.remove(idd);
+        out.append(new Format("%-" + (maxid - 2) + "s").form("#=GS "
+                + idd.toString() + " "));
+        if (type.contains("PFAM") || type.contains("RFAM"))
+        {
+
+          out.append(" AC " + type.substring(type.indexOf(";") + 1));
+        }
+        else
+        {
+          out.append(" DR " + type + " ");
+        }
+        out.append(newline);
+      }
+    }
+
+    // output annotations
+    while (i < s.length && s[i] != null)
+    {
+      if (s[i].getDatasetSequence() != null)
+      {
+        SequenceI ds = s[i].getDatasetSequence();
+        AlignmentAnnotation[] alAnot;
+        Annotation[] ann;
+        Annotation annot;
+        alAnot = s[i].getAnnotation();
+        String feature = "";
+        if (alAnot != null)
+        {
+          for (int j = 0; j < alAnot.length; j++)
+          {
+            if (ds.getSequenceFeatures() != null)
+            {
+              feature = ds.getSequenceFeatures()[0].type;
+            }
+            String key = type2id(feature);
+
+            if (key == null)
+              continue;
+
+            // out.append("#=GR ");
+            out.append(new Format("%-" + maxid + "s").form("#=GR "
+                    + printId(s[i]) + " " + key + " "));
+            ann = alAnot[j].annotations;
+            String seq = "";
+            for (int k = 0; k < ann.length; k++)
+            {
+              annot = ann[k];
+              String ch = (annot == null) ? Character.toString(s[i]
+                      .getCharAt(k)) : annot.displayCharacter;
+              if (ch.length() == 0)
+              {
+                if (key.equals("SS"))
+                {
+                  char ll = annot.secondaryStructure;
+                  seq = (Character.toString(ll).equals(" ")) ? seq + "C"
+                          : seq + ll;
+                }
+                else
+                {
+                  seq += ".";
+                }
+              }
+              else if (ch.length() == 1)
+              {
+                seq += ch;
+              }
+              else if (ch.length() > 1)
+              {
+                seq += ch.charAt(1);
+              }
+            }
+            out.append(seq);
+            out.append(newline);
+          }
+        }
+      }
+
+      out.append(new Format("%-" + maxid + "s").form(printId(s[i]) + " "));
+      out.append(s[i].getSequenceAsString());
+      out.append(newline);
+      i++;
+    }
+
+    // alignment annotation
+    AlignmentAnnotation aa;
+    if (al.getAlignmentAnnotation() != null)
+    {
+      for (int ia = 0; ia < al.getAlignmentAnnotation().length; ia++)
+      {
+        aa = al.getAlignmentAnnotation()[ia];
+        if (aa.autoCalculated || !aa.visible)
+        {
+          continue;
+        }
+        String seq = "";
+        String label;
+
+        if (aa.label.equals("seq"))
+          label = "seq_cons";
+        else
+          label = type2id(aa.label.toLowerCase()) + "_cons";
+
+        if (label == null)
+          label = aa.label;
+
+        out.append(new Format("%-" + maxid + "s").form("#=GC " + label
+                + " "));
+        for (int j = 0; j < aa.annotations.length; j++)
+        {
+          String ch = (aa.annotations[j] == null) ? "-"
+                  : aa.annotations[j].displayCharacter;
+          if (ch.length() == 0)
+          {
+            char ll = aa.annotations[j].secondaryStructure;
+            if (Character.toString(ll).equals(" "))
+              seq += "C";
+            else
+              seq += ll;
+          }
+          else if (ch.length() == 1)
+          {
+            seq += ch;
+          }
+          else if (ch.length() > 1)
+          {
+            seq += ch.charAt(1);
+          }
+        }
+        out.append(seq);
+        out.append(newline);
+      }
+    }
+    return out.toString();
   }
 
   public String print()
   {
-    return print(getSeqsAsArray());
+    out = new StringBuffer();
+    out.append("# STOCKHOLM 1.0");
+    out.append(newline);
+    print(getSeqsAsArray());
+
+    out.append("//");
+    out.append(newline);
+    return out.toString();
   }
 
   private static Hashtable typeIds = null;
@@ -651,6 +986,28 @@ public class StockholmFile extends AlignFile
             + id);
     return id;
   }
+
+  protected static String type2id(String type)
+  {
+    String key = null;
+    Enumeration e = typeIds.keys();
+    while (e.hasMoreElements())
+    {
+      Object ll = e.nextElement();
+      if (typeIds.get(ll).toString().equals(type))
+      {
+        key = (String) ll;
+        break;
+      }
+    }
+    if (key != null)
+    {
+      return (String) key;
+    }
+    System.err.println("Warning : Unknown Stockholm annotation type: "
+            + type);
+    return key;
+  }
   /**
    * //ssline is complete secondary structure line private AlignmentAnnotation
    * addHelices(Vector annotation, String label, String ssline) {
index b523763..f070c84 100755 (executable)
@@ -18,6 +18,7 @@
 package jalview.jbgui;
 
 import jalview.schemes.ColourSchemeProperty;
+import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
@@ -181,6 +182,9 @@ public class GAlignFrame extends JInternalFrame
   public JCheckBoxMenuItem showSeqFeaturesHeight = new JCheckBoxMenuItem();
 
   JMenuItem deleteGroups = new JMenuItem();
+  
+  JMenuItem createGroup = new JMenuItem();
+  JMenuItem unGroup = new JMenuItem();
 
   JMenuItem delete = new JMenuItem();
 
@@ -404,8 +408,8 @@ public class GAlignFrame extends JInternalFrame
 
               int option = JOptionPane.showInternalConfirmDialog(
                       jalview.gui.Desktop.desktop,
-                      "Remove from default list?",
-                      "Remove user defined colour",
+                      MessageManager.getString("label.remove_from_default_list"),
+                      MessageManager.getString("label.remove_user_defined_colour"),
                       JOptionPane.YES_NO_OPTION);
               if (option == JOptionPane.YES_OPTION)
               {
@@ -617,7 +621,7 @@ public class GAlignFrame extends JInternalFrame
                 invertSequenceMenuItem_actionPerformed(e);
               }
             });
-    grpsFromSelection.setText("Make Groups for selection");
+    grpsFromSelection.setText("Make Groups For Selection");
     grpsFromSelection.addActionListener(new java.awt.event.ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -1199,6 +1203,28 @@ public class GAlignFrame extends JInternalFrame
         deleteGroups_actionPerformed(e);
       }
     });
+    createGroup.setText("Create group");
+    createGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
+            java.awt.event.KeyEvent.VK_G, Toolkit.getDefaultToolkit()
+                    .getMenuShortcutKeyMask(), false));
+    createGroup.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        createGroup_actionPerformed(e);
+      }
+    });
+    unGroup.setText("Remove Group");
+    unGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
+            java.awt.event.KeyEvent.VK_G,Toolkit.getDefaultToolkit()
+                    .getMenuShortcutKeyMask() | java.awt.event.KeyEvent.SHIFT_MASK, false));
+    unGroup.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        unGroup_actionPerformed(e);
+      }
+    });
     copy.setText("Copy");
     copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
             java.awt.event.KeyEvent.VK_C, Toolkit.getDefaultToolkit()
@@ -1946,8 +1972,10 @@ public class GAlignFrame extends JInternalFrame
     selectMenu.add(deselectAllSequenceMenuItem);
     selectMenu.add(invertSequenceMenuItem);
     selectMenu.add(invertColSel);
-    selectMenu.add(deleteGroups);
+    selectMenu.add(createGroup);
+    selectMenu.add(unGroup);
     selectMenu.add(grpsFromSelection);
+    selectMenu.add(deleteGroups);
     // TODO - determine if the listenToViewSelections button is needed : see bug
     // JAL-574
     // selectMenu.addSeparator();
@@ -2307,6 +2335,14 @@ public class GAlignFrame extends JInternalFrame
   protected void deleteGroups_actionPerformed(ActionEvent e)
   {
   }
+  
+  protected void createGroup_actionPerformed(ActionEvent e)
+  {
+  }
+  
+  protected void unGroup_actionPerformed(ActionEvent e)
+  {
+  }
 
   protected void copy_actionPerformed(ActionEvent e)
   {
index a403088..92747b5 100644 (file)
@@ -18,6 +18,7 @@
 package jalview.jbgui;
 
 import jalview.gui.JvSwingUtils;
+import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
@@ -106,14 +107,14 @@ public class GRestServiceEditorPane extends JPanel
     name = new JTextArea(1, 12);
 
     JvSwingUtils.mgAddtoLayout(cpanel,
-            "Short descriptive name for service", new JLabel("Name:"),
+            "Short descriptive name for service", new JLabel(MessageManager.getString("label.name")),
             name, "wrap");
     action = new JComboBox();
     JvSwingUtils
             .mgAddtoLayout(
                     cpanel,
                     "What kind of function the service performs (e.g. alignment, analysis, search, etc).",
-                    new JLabel("Service Action:"), action, "wrap");
+                    new JLabel(MessageManager.getString("label.service_action")), action, "wrap");
     descr = new JTextArea(4, 60);
     descrVp = new JScrollPane();
     descrVp.setViewportView(descr);
@@ -127,7 +128,7 @@ public class GRestServiceEditorPane extends JPanel
             .mgAddtoLayout(
                     cpanel,
                     "URL to post data to service. Include any special parameters needed here",
-                    new JLabel("POST URL:"), urlVp, "wrap");
+                    new JLabel(MessageManager.getString("label.post_url")), urlVp, "wrap");
 
     urlsuff = new JTextArea();
     urlsuff.setColumns(60);
@@ -136,12 +137,12 @@ public class GRestServiceEditorPane extends JPanel
             .mgAddtoLayout(
                     cpanel,
                     "Optional suffix added to URL when retrieving results from service",
-                    new JLabel("URL Suffix:"), urlsuff, "wrap");
+                    new JLabel(MessageManager.getString("label.url_suffix")), urlsuff, "wrap");
 
     // input options
     // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
     // cpanel.setLayout(new FlowLayout());
-    hSeparable = new JCheckBox("per Sequence");
+    hSeparable = new JCheckBox(MessageManager.getString("label.per_seq"));
     hSeparable
             .setToolTipText("<html>"
                     + JvSwingUtils
@@ -157,7 +158,7 @@ public class GRestServiceEditorPane extends JPanel
 
       }
     });
-    vSeparable = new JCheckBox("Results are vertically separable");
+    vSeparable = new JCheckBox(MessageManager.getString("label.result_vertically_separable"));
     vSeparable
             .setToolTipText("<html>"
                     + JvSwingUtils
index 7ab7fda..09152d6 100644 (file)
@@ -35,16 +35,29 @@ import java.awt.Image;
 import java.awt.font.LineMetrics;
 import java.awt.geom.AffineTransform;
 import java.awt.image.ImageObserver;
+import java.util.BitSet;
 import java.util.Hashtable;
 
 import com.stevesoft.pat.Regex;
 
 public class AnnotationRenderer
 {
+  /**
+   * flag indicating if timing and redraw parameter info should be output
+   */
+  private final boolean debugRedraw;
 
   public AnnotationRenderer()
   {
-    // TODO Auto-generated constructor stub
+    this(false);
+  }
+  /**
+   * Create a new annotation Renderer
+   * @param debugRedraw flag indicating if timing and redraw parameter info should be output
+   */
+  public AnnotationRenderer(boolean debugRedraw)
+  {
+    this.debugRedraw=debugRedraw;
   }
 
   public void drawStemAnnot(Graphics g, Annotation[] row_annotations,
@@ -141,7 +154,23 @@ public class AnnotationRenderer
    * width of image to render in panel
    */
   private int imgWidth;
-
+  /**
+   * offset to beginning of visible area
+   */
+  private int sOffset;
+  /**
+   * offset to end of visible area
+   */
+  private int visHeight;
+  /**
+   * indicate if the renderer should only render the visible portion of the annotation given the current view settings
+   */
+  private boolean useClip=true;
+  /**
+   * master flag indicating if renderer should ever try to clip. not enabled for jalview 2.8.1 
+   */
+  private boolean canClip=false;
+  
   // public void updateFromAnnotationPanel(FontMetrics annotFM, AlignViewportI
   // av)
   public void updateFromAwtRenderPanel(AwtRenderPanelI annotPanel,
@@ -151,6 +180,22 @@ public class AnnotationRenderer
     annotationPanel = annotPanel;
     fadedImage = annotPanel.getFadedImage();
     imgWidth = annotPanel.getFadedImageWidth();
+    // visible area for rendering
+    int[] bounds=annotPanel.getVisibleVRange();
+    if (bounds!=null)
+    {
+      sOffset = bounds[0];
+      visHeight = bounds[1];
+      if (visHeight==0)
+      {
+        useClip=false;
+      } else {
+        useClip=canClip;
+      }
+    } else {
+      useClip=false;
+    }
+
     updateFromAlignViewport(av);
   }
 
@@ -195,7 +240,7 @@ public class AnnotationRenderer
       }
       // TODO extend annotation row to enable dynamic and static profile data to
       // be stored
-      if (aa.groupRef == null && aa.sequenceRef == null && av_renderProfile)
+      if (aa.groupRef == null && aa.sequenceRef == null)
       {
         return AAFrequency.extractProfile(hconsensus[column],
                 av_ignoreGapsConsensus);
@@ -217,7 +262,7 @@ public class AnnotationRenderer
         // to
         // be stored
         if (aa.groupRef == null && aa.sequenceRef == null
-                && av_renderProfile && hStrucConsensus != null
+                && hStrucConsensus != null
                 && hStrucConsensus.length > column)
         {
           return StructureFrequency.extractProfile(hStrucConsensus[column],
@@ -250,6 +295,7 @@ public class AnnotationRenderer
           AlignViewportI av, Graphics g, int activeRow, int startRes,
           int endRes)
   {
+    long stime=System.currentTimeMillis();
     boolean usedFaded = false;
     // NOTES:
     // AnnotationPanel needs to implement: ImageObserver, access to
@@ -257,7 +303,10 @@ public class AnnotationRenderer
     updateFromAwtRenderPanel(annotPanel, av);
     fm = g.getFontMetrics();
     AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
-
+    if (aa==null)
+    {
+      return false;
+    }
     int x = 0, y = 0;
     int column = 0;
     char lastSS;
@@ -269,15 +318,41 @@ public class AnnotationRenderer
     boolean centreColLabels, centreColLabelsDef = av
             .getCentreColumnLabels();
     boolean scaleColLabel = false;
-    boolean[] graphGroupDrawn = new boolean[aa.length];
+    AlignmentAnnotation consensusAnnot=av.getAlignmentConsensusAnnotation(),structConsensusAnnot=av.getAlignmentStrucConsensusAnnotation();
+    boolean renderHistogram = true, renderProfile = true, normaliseProfile = false;
+
+    BitSet graphGroupDrawn = new BitSet();
     int charOffset = 0; // offset for a label
     float fmWidth, fmScaling = 1f; // scaling for a label to fit it into a
     // column.
     Font ofont = g.getFont();
     // \u03B2 \u03B1
+    // debug ints
+    int yfrom=0,f_i=0,yto=0,f_to=0;
+    boolean clipst=false,clipend=false;
     for (int i = 0; i < aa.length; i++)
     {
       AlignmentAnnotation row = aa[i];
+      {
+        // check if this is a consensus annotation row and set the display settings appropriately
+        // TODO: generalise this to have render styles for consensus/profile
+        // data
+        if (row.groupRef != null && row == row.groupRef.getConsensus())
+        {
+          renderHistogram = row.groupRef.isShowConsensusHistogram();
+          renderProfile = row.groupRef.isShowSequenceLogo();
+          normaliseProfile = row.groupRef.isNormaliseSequenceLogo();
+        }
+        else if (row == consensusAnnot || row == structConsensusAnnot)
+        {
+          renderHistogram = av_renderHistogram;
+          renderProfile = av_renderProfile;
+          normaliseProfile = av_normaliseProfile;
+        } else {
+          renderHistogram = true;
+          // don't need to set render/normaliseProfile since they are not currently used in any other annotation track renderer
+        }
+      }
       Annotation[] row_annotations = row.annotations;
       if (!row.visible)
       {
@@ -288,10 +363,20 @@ public class AnnotationRenderer
       scaleColLabel = row.scaleColLabel;
       lastSS = ' ';
       lastSSX = 0;
+      
+      if (!useClip || ((y-charHeight)<visHeight && (y+row.height+charHeight*2)>=sOffset)) 
+      {// if_in_visible_region
+        if (!clipst)
+        {
+          clipst=true;
+          yfrom=y;
+          f_i=i;
+        }
+        yto = y;
+        f_to=i;
       if (row.graph > 0)
       {
-        if (row.graphGroup > -1 && graphGroupDrawn[row.graphGroup])
-        {
+        if (row.graphGroup > -1 && graphGroupDrawn.get(row.graphGroup)) {
           continue;
         }
 
@@ -566,8 +651,9 @@ public class AnnotationRenderer
       {
         if (row.graph == AlignmentAnnotation.LINE_GRAPH)
         {
-          if (row.graphGroup > -1 && !graphGroupDrawn[row.graphGroup])
+          if (row.graphGroup > -1 && !graphGroupDrawn.get(row.graphGroup))
           {
+            // TODO: JAL-1291 revise rendering model so the graphGroup map is computed efficiently for all visible labels
             float groupmax = -999999, groupmin = 9999999;
             for (int gg = 0; gg < aa.length; gg++)
             {
@@ -599,7 +685,7 @@ public class AnnotationRenderer
               }
             }
 
-            graphGroupDrawn[row.graphGroup] = true;
+            graphGroupDrawn.set(row.graphGroup);
           }
           else
           {
@@ -610,10 +696,15 @@ public class AnnotationRenderer
         else if (row.graph == AlignmentAnnotation.BAR_GRAPH)
         {
           drawBarGraph(g, row, row_annotations, startRes, endRes,
-                  row.graphMin, row.graphMax, y);
+                  row.graphMin, row.graphMax, y, renderHistogram,renderProfile,normaliseProfile);
         }
       }
-
+    } else {
+      if (clipst && !clipend)
+      {
+        clipend = true;
+      }
+    }// end if_in_visible_region
       if (row.graph > 0 && row.hasText)
       {
         y += charHeight;
@@ -624,6 +715,27 @@ public class AnnotationRenderer
         y += aa[i].height;
       }
     }
+    if (debugRedraw)
+    {
+      if (canClip)
+      {
+        if (clipst)
+        {
+          System.err.println("Start clip at : " + yfrom + " (index " + f_i
+                  + ")");
+        }
+        if (clipend)
+        {
+          System.err.println("End clip at : " + yto + " (index " + f_to
+                  + ")");
+        }
+      }
+      ;
+      System.err.println("Annotation Rendering time:"
+              + (System.currentTimeMillis() - stime));
+    }
+    ;
+
     return !usedFaded;
   }
 
@@ -820,7 +932,7 @@ public class AnnotationRenderer
 
   public void drawBarGraph(Graphics g, AlignmentAnnotation _aa,
           Annotation[] aa_annotations, int sRes, int eRes, float min,
-          float max, int y)
+          float max, int y, boolean renderHistogram,boolean renderProfile,boolean normaliseProfile)
   {
     if (sRes > aa_annotations.length)
     {
@@ -844,23 +956,6 @@ public class AnnotationRenderer
 
     int column;
     int aaMax = aa_annotations.length - 1;
-    boolean renderHistogram = true, renderProfile = true, normaliseProfile = false;
-    // if (aa.autoCalculated && aa.label.startsWith("Consensus"))
-    {
-      // TODO: generalise this to have render styles for consensus/profile data
-      if (_aa.groupRef != null)
-      {
-        renderHistogram = _aa.groupRef.isShowConsensusHistogram();
-        renderProfile = _aa.groupRef.isShowSequenceLogo();
-        normaliseProfile = _aa.groupRef.isNormaliseSequenceLogo();
-      }
-      else
-      {
-        renderHistogram = av_renderHistogram;
-        renderProfile = av_renderProfile;
-        normaliseProfile = av_normaliseProfile;
-      }
-    }
     while (x < eRes - sRes)
     {
       column = sRes + x;
index 70bbc7b..e73a673 100644 (file)
@@ -41,4 +41,10 @@ public interface AwtRenderPanelI extends ImageObserver
    */
   int getFadedImageWidth();
 
+  /**
+   * height of visible area on to the image - used to draw only what is visible.
+   * @return [start, end of visible region]
+   */
+  int[] getVisibleVRange();
+
 }
index abf5fc6..af45e9d 100644 (file)
@@ -1,4 +1,4 @@
-#Thu Sep 06 17:55:29 BST 2012
+#Thu Oct 17 10:35:33 BST 2013
 jalview.schemabinding.version2.ThresholdLine=jalview.schemabinding.version2.descriptors.ThresholdLineDescriptor
 jalview.schemabinding.version2.SequenceSetProperties=jalview.schemabinding.version2.descriptors.SequenceSetPropertiesDescriptor
 jalview.schemabinding.version2.StructureState=jalview.schemabinding.version2.descriptors.StructureStateDescriptor
index 805e70c..9eef6f0 100644 (file)
@@ -1,24 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.schemabinding.version2;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -29,360 +19,461 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class AnnotationColours implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _aboveThreshold.
-   */
-  private int _aboveThreshold;
-
-  /**
-   * keeps track of state for field: _aboveThreshold
-   */
-  private boolean _has_aboveThreshold;
-
-  /**
-   * Field _annotation.
-   */
-  private java.lang.String _annotation;
-
-  /**
-   * Field _minColour.
-   */
-  private int _minColour;
-
-  /**
-   * keeps track of state for field: _minColour
-   */
-  private boolean _has_minColour;
-
-  /**
-   * Field _maxColour.
-   */
-  private int _maxColour;
-
-  /**
-   * keeps track of state for field: _maxColour
-   */
-  private boolean _has_maxColour;
-
-  /**
-   * Field _colourScheme.
-   */
-  private java.lang.String _colourScheme;
-
-  /**
-   * Field _threshold.
-   */
-  private float _threshold;
-
-  /**
-   * keeps track of state for field: _threshold
-   */
-  private boolean _has_threshold;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public AnnotationColours()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-     */
-  public void deleteAboveThreshold()
-  {
-    this._has_aboveThreshold = false;
-  }
-
-  /**
-     */
-  public void deleteMaxColour()
-  {
-    this._has_maxColour = false;
-  }
-
-  /**
-     */
-  public void deleteMinColour()
-  {
-    this._has_minColour = false;
-  }
-
-  /**
-     */
-  public void deleteThreshold()
-  {
-    this._has_threshold = false;
-  }
-
-  /**
-   * Returns the value of field 'aboveThreshold'.
-   * 
-   * @return the value of field 'AboveThreshold'.
-   */
-  public int getAboveThreshold()
-  {
-    return this._aboveThreshold;
-  }
-
-  /**
-   * Returns the value of field 'annotation'.
-   * 
-   * @return the value of field 'Annotation'.
-   */
-  public java.lang.String getAnnotation()
-  {
-    return this._annotation;
-  }
-
-  /**
-   * Returns the value of field 'colourScheme'.
-   * 
-   * @return the value of field 'ColourScheme'.
-   */
-  public java.lang.String getColourScheme()
-  {
-    return this._colourScheme;
-  }
-
-  /**
-   * Returns the value of field 'maxColour'.
-   * 
-   * @return the value of field 'MaxColour'.
-   */
-  public int getMaxColour()
-  {
-    return this._maxColour;
-  }
-
-  /**
-   * Returns the value of field 'minColour'.
-   * 
-   * @return the value of field 'MinColour'.
-   */
-  public int getMinColour()
-  {
-    return this._minColour;
-  }
-
-  /**
-   * Returns the value of field 'threshold'.
-   * 
-   * @return the value of field 'Threshold'.
-   */
-  public float getThreshold()
-  {
-    return this._threshold;
-  }
-
-  /**
-   * Method hasAboveThreshold.
-   * 
-   * @return true if at least one AboveThreshold has been added
-   */
-  public boolean hasAboveThreshold()
-  {
-    return this._has_aboveThreshold;
-  }
-
-  /**
-   * Method hasMaxColour.
-   * 
-   * @return true if at least one MaxColour has been added
-   */
-  public boolean hasMaxColour()
-  {
-    return this._has_maxColour;
-  }
-
-  /**
-   * Method hasMinColour.
-   * 
-   * @return true if at least one MinColour has been added
-   */
-  public boolean hasMinColour()
-  {
-    return this._has_minColour;
-  }
-
-  /**
-   * Method hasThreshold.
-   * 
-   * @return true if at least one Threshold has been added
-   */
-  public boolean hasThreshold()
-  {
-    return this._has_threshold;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'aboveThreshold'.
-   * 
-   * @param aboveThreshold
-   *          the value of field 'aboveThreshold'.
-   */
-  public void setAboveThreshold(final int aboveThreshold)
-  {
-    this._aboveThreshold = aboveThreshold;
-    this._has_aboveThreshold = true;
-  }
-
-  /**
-   * Sets the value of field 'annotation'.
-   * 
-   * @param annotation
-   *          the value of field 'annotation'.
-   */
-  public void setAnnotation(final java.lang.String annotation)
-  {
-    this._annotation = annotation;
-  }
-
-  /**
-   * Sets the value of field 'colourScheme'.
-   * 
-   * @param colourScheme
-   *          the value of field 'colourScheme'.
-   */
-  public void setColourScheme(final java.lang.String colourScheme)
-  {
-    this._colourScheme = colourScheme;
-  }
-
-  /**
-   * Sets the value of field 'maxColour'.
-   * 
-   * @param maxColour
-   *          the value of field 'maxColour'.
-   */
-  public void setMaxColour(final int maxColour)
-  {
-    this._maxColour = maxColour;
-    this._has_maxColour = true;
-  }
-
-  /**
-   * Sets the value of field 'minColour'.
-   * 
-   * @param minColour
-   *          the value of field 'minColour'.
-   */
-  public void setMinColour(final int minColour)
-  {
-    this._minColour = minColour;
-    this._has_minColour = true;
-  }
-
-  /**
-   * Sets the value of field 'threshold'.
-   * 
-   * @param threshold
-   *          the value of field 'threshold'.
-   */
-  public void setThreshold(final float threshold)
-  {
-    this._threshold = threshold;
-    this._has_threshold = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.schemabinding.version2.AnnotationColours
-   */
-  public static jalview.schemabinding.version2.AnnotationColours unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.schemabinding.version2.AnnotationColours) Unmarshaller
-            .unmarshal(
-                    jalview.schemabinding.version2.AnnotationColours.class,
-                    reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class AnnotationColours implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _aboveThreshold.
+     */
+    private int _aboveThreshold;
+
+    /**
+     * keeps track of state for field: _aboveThreshold
+     */
+    private boolean _has_aboveThreshold;
+
+    /**
+     * Field _annotation.
+     */
+    private java.lang.String _annotation;
+
+    /**
+     * Field _minColour.
+     */
+    private int _minColour;
+
+    /**
+     * keeps track of state for field: _minColour
+     */
+    private boolean _has_minColour;
+
+    /**
+     * Field _maxColour.
+     */
+    private int _maxColour;
+
+    /**
+     * keeps track of state for field: _maxColour
+     */
+    private boolean _has_maxColour;
+
+    /**
+     * Field _colourScheme.
+     */
+    private java.lang.String _colourScheme;
+
+    /**
+     * Field _threshold.
+     */
+    private float _threshold;
+
+    /**
+     * keeps track of state for field: _threshold
+     */
+    private boolean _has_threshold;
+
+    /**
+     * Field _perSequence.
+     */
+    private boolean _perSequence;
+
+    /**
+     * keeps track of state for field: _perSequence
+     */
+    private boolean _has_perSequence;
+
+    /**
+     * Field _predefinedColours.
+     */
+    private boolean _predefinedColours;
+
+    /**
+     * keeps track of state for field: _predefinedColours
+     */
+    private boolean _has_predefinedColours;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public AnnotationColours() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deleteAboveThreshold(
+    ) {
+        this._has_aboveThreshold= false;
+    }
+
+    /**
+     */
+    public void deleteMaxColour(
+    ) {
+        this._has_maxColour= false;
+    }
+
+    /**
+     */
+    public void deleteMinColour(
+    ) {
+        this._has_minColour= false;
+    }
+
+    /**
+     */
+    public void deletePerSequence(
+    ) {
+        this._has_perSequence= false;
+    }
+
+    /**
+     */
+    public void deletePredefinedColours(
+    ) {
+        this._has_predefinedColours= false;
+    }
+
+    /**
+     */
+    public void deleteThreshold(
+    ) {
+        this._has_threshold= false;
+    }
+
+    /**
+     * Returns the value of field 'aboveThreshold'.
+     * 
+     * @return the value of field 'AboveThreshold'.
+     */
+    public int getAboveThreshold(
+    ) {
+        return this._aboveThreshold;
+    }
+
+    /**
+     * Returns the value of field 'annotation'.
+     * 
+     * @return the value of field 'Annotation'.
+     */
+    public java.lang.String getAnnotation(
+    ) {
+        return this._annotation;
+    }
+
+    /**
+     * Returns the value of field 'colourScheme'.
+     * 
+     * @return the value of field 'ColourScheme'.
+     */
+    public java.lang.String getColourScheme(
+    ) {
+        return this._colourScheme;
+    }
+
+    /**
+     * Returns the value of field 'maxColour'.
+     * 
+     * @return the value of field 'MaxColour'.
+     */
+    public int getMaxColour(
+    ) {
+        return this._maxColour;
+    }
+
+    /**
+     * Returns the value of field 'minColour'.
+     * 
+     * @return the value of field 'MinColour'.
+     */
+    public int getMinColour(
+    ) {
+        return this._minColour;
+    }
+
+    /**
+     * Returns the value of field 'perSequence'.
+     * 
+     * @return the value of field 'PerSequence'.
+     */
+    public boolean getPerSequence(
+    ) {
+        return this._perSequence;
+    }
+
+    /**
+     * Returns the value of field 'predefinedColours'.
+     * 
+     * @return the value of field 'PredefinedColours'.
+     */
+    public boolean getPredefinedColours(
+    ) {
+        return this._predefinedColours;
+    }
+
+    /**
+     * Returns the value of field 'threshold'.
+     * 
+     * @return the value of field 'Threshold'.
+     */
+    public float getThreshold(
+    ) {
+        return this._threshold;
+    }
+
+    /**
+     * Method hasAboveThreshold.
+     * 
+     * @return true if at least one AboveThreshold has been added
+     */
+    public boolean hasAboveThreshold(
+    ) {
+        return this._has_aboveThreshold;
+    }
+
+    /**
+     * Method hasMaxColour.
+     * 
+     * @return true if at least one MaxColour has been added
+     */
+    public boolean hasMaxColour(
+    ) {
+        return this._has_maxColour;
+    }
+
+    /**
+     * Method hasMinColour.
+     * 
+     * @return true if at least one MinColour has been added
+     */
+    public boolean hasMinColour(
+    ) {
+        return this._has_minColour;
+    }
+
+    /**
+     * Method hasPerSequence.
+     * 
+     * @return true if at least one PerSequence has been added
+     */
+    public boolean hasPerSequence(
+    ) {
+        return this._has_perSequence;
+    }
+
+    /**
+     * Method hasPredefinedColours.
+     * 
+     * @return true if at least one PredefinedColours has been added
+     */
+    public boolean hasPredefinedColours(
+    ) {
+        return this._has_predefinedColours;
+    }
+
+    /**
+     * Method hasThreshold.
+     * 
+     * @return true if at least one Threshold has been added
+     */
+    public boolean hasThreshold(
+    ) {
+        return this._has_threshold;
+    }
+
+    /**
+     * Returns the value of field 'perSequence'.
+     * 
+     * @return the value of field 'PerSequence'.
+     */
+    public boolean isPerSequence(
+    ) {
+        return this._perSequence;
+    }
+
+    /**
+     * Returns the value of field 'predefinedColours'.
+     * 
+     * @return the value of field 'PredefinedColours'.
+     */
+    public boolean isPredefinedColours(
+    ) {
+        return this._predefinedColours;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'aboveThreshold'.
+     * 
+     * @param aboveThreshold the value of field 'aboveThreshold'.
+     */
+    public void setAboveThreshold(
+            final int aboveThreshold) {
+        this._aboveThreshold = aboveThreshold;
+        this._has_aboveThreshold = true;
+    }
+
+    /**
+     * Sets the value of field 'annotation'.
+     * 
+     * @param annotation the value of field 'annotation'.
+     */
+    public void setAnnotation(
+            final java.lang.String annotation) {
+        this._annotation = annotation;
+    }
+
+    /**
+     * Sets the value of field 'colourScheme'.
+     * 
+     * @param colourScheme the value of field 'colourScheme'.
+     */
+    public void setColourScheme(
+            final java.lang.String colourScheme) {
+        this._colourScheme = colourScheme;
+    }
+
+    /**
+     * Sets the value of field 'maxColour'.
+     * 
+     * @param maxColour the value of field 'maxColour'.
+     */
+    public void setMaxColour(
+            final int maxColour) {
+        this._maxColour = maxColour;
+        this._has_maxColour = true;
+    }
+
+    /**
+     * Sets the value of field 'minColour'.
+     * 
+     * @param minColour the value of field 'minColour'.
+     */
+    public void setMinColour(
+            final int minColour) {
+        this._minColour = minColour;
+        this._has_minColour = true;
+    }
+
+    /**
+     * Sets the value of field 'perSequence'.
+     * 
+     * @param perSequence the value of field 'perSequence'.
+     */
+    public void setPerSequence(
+            final boolean perSequence) {
+        this._perSequence = perSequence;
+        this._has_perSequence = true;
+    }
+
+    /**
+     * Sets the value of field 'predefinedColours'.
+     * 
+     * @param predefinedColours the value of field
+     * 'predefinedColours'.
+     */
+    public void setPredefinedColours(
+            final boolean predefinedColours) {
+        this._predefinedColours = predefinedColours;
+        this._has_predefinedColours = true;
+    }
+
+    /**
+     * Sets the value of field 'threshold'.
+     * 
+     * @param threshold the value of field 'threshold'.
+     */
+    public void setThreshold(
+            final float threshold) {
+        this._threshold = threshold;
+        this._has_threshold = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled
+     * jalview.schemabinding.version2.AnnotationColours
+     */
+    public static jalview.schemabinding.version2.AnnotationColours unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.schemabinding.version2.AnnotationColours) Unmarshaller.unmarshal(jalview.schemabinding.version2.AnnotationColours.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 876e928..196ad60 100644 (file)
@@ -1,24 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.schemabinding.version2.descriptors;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import jalview.schemabinding.version2.AnnotationColours;
@@ -28,447 +18,468 @@ import jalview.schemabinding.version2.AnnotationColours;
  * 
  * @version $Revision$ $Date$
  */
-public class AnnotationColoursDescriptor extends
-        org.exolab.castor.xml.util.XMLClassDescriptorImpl
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _elementDefinition.
-   */
-  private boolean _elementDefinition;
-
-  /**
-   * Field _nsPrefix.
-   */
-  private java.lang.String _nsPrefix;
-
-  /**
-   * Field _nsURI.
-   */
-  private java.lang.String _nsURI;
-
-  /**
-   * Field _xmlName.
-   */
-  private java.lang.String _xmlName;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public AnnotationColoursDescriptor()
-  {
-    super();
-    _nsURI = "www.jalview.org";
-    _xmlName = "AnnotationColours";
-    _elementDefinition = true;
-    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
-    org.exolab.castor.mapping.FieldHandler handler = null;
-    org.exolab.castor.xml.FieldValidator fieldValidator = null;
-    // -- initialize attribute descriptors
-
-    // -- _aboveThreshold
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.Integer.TYPE, "_aboveThreshold", "aboveThreshold",
-            org.exolab.castor.xml.NodeType.Attribute);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        if (!target.hasAboveThreshold())
-        {
-          return null;
+public class AnnotationColoursDescriptor extends org.exolab.castor.xml.util.XMLClassDescriptorImpl {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _elementDefinition.
+     */
+    private boolean _elementDefinition;
+
+    /**
+     * Field _nsPrefix.
+     */
+    private java.lang.String _nsPrefix;
+
+    /**
+     * Field _nsURI.
+     */
+    private java.lang.String _nsURI;
+
+    /**
+     * Field _xmlName.
+     */
+    private java.lang.String _xmlName;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public AnnotationColoursDescriptor() {
+        super();
+        _nsURI = "www.jalview.org";
+        _xmlName = "AnnotationColours";
+        _elementDefinition = true;
+        org.exolab.castor.xml.util.XMLFieldDescriptorImpl  desc           = null;
+        org.exolab.castor.mapping.FieldHandler             handler        = null;
+        org.exolab.castor.xml.FieldValidator               fieldValidator = null;
+        //-- initialize attribute descriptors
+        
+        //-- _aboveThreshold
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Integer.TYPE, "_aboveThreshold", "aboveThreshold", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasAboveThreshold()) { return null; }
+                return new java.lang.Integer(target.getAboveThreshold());
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deleteAboveThreshold();
+                        return;
+                    }
+                    target.setAboveThreshold( ((java.lang.Integer) value).intValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _aboveThreshold
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.IntValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setMinInclusive(-2147483648);
+            typeValidator.setMaxInclusive(2147483647);
         }
-        return new java.lang.Integer(target.getAboveThreshold());
-      }
-
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          // if null, use delete method for optional primitives
-          if (value == null)
-          {
-            target.deleteAboveThreshold();
-            return;
-          }
-          target.setAboveThreshold(((java.lang.Integer) value).intValue());
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
+        desc.setValidator(fieldValidator);
+        //-- _annotation
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_annotation", "annotation", org.exolab.castor.xml.NodeType.Attribute);
+        desc.setImmutable(true);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                return target.getAnnotation();
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    target.setAnnotation( (java.lang.String) value);
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _annotation
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.StringValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setWhiteSpace("preserve");
         }
-      }
-
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
-
-    // -- validation code for: _aboveThreshold
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.IntValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setMinInclusive(-2147483648);
-      typeValidator.setMaxInclusive(2147483647);
-    }
-    desc.setValidator(fieldValidator);
-    // -- _annotation
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.String.class, "_annotation", "annotation",
-            org.exolab.castor.xml.NodeType.Attribute);
-    desc.setImmutable(true);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        return target.getAnnotation();
-      }
-
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          target.setAnnotation((java.lang.String) value);
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
+        desc.setValidator(fieldValidator);
+        //-- _minColour
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Integer.TYPE, "_minColour", "minColour", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasMinColour()) { return null; }
+                return new java.lang.Integer(target.getMinColour());
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deleteMinColour();
+                        return;
+                    }
+                    target.setMinColour( ((java.lang.Integer) value).intValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _minColour
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.IntValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setMinInclusive(-2147483648);
+            typeValidator.setMaxInclusive(2147483647);
         }
-      }
-
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
-
-    // -- validation code for: _annotation
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.StringValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setWhiteSpace("preserve");
-    }
-    desc.setValidator(fieldValidator);
-    // -- _minColour
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.Integer.TYPE, "_minColour", "minColour",
-            org.exolab.castor.xml.NodeType.Attribute);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        if (!target.hasMinColour())
-        {
-          return null;
+        desc.setValidator(fieldValidator);
+        //-- _maxColour
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Integer.TYPE, "_maxColour", "maxColour", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasMaxColour()) { return null; }
+                return new java.lang.Integer(target.getMaxColour());
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deleteMaxColour();
+                        return;
+                    }
+                    target.setMaxColour( ((java.lang.Integer) value).intValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _maxColour
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.IntValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setMinInclusive(-2147483648);
+            typeValidator.setMaxInclusive(2147483647);
         }
-        return new java.lang.Integer(target.getMinColour());
-      }
-
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          // if null, use delete method for optional primitives
-          if (value == null)
-          {
-            target.deleteMinColour();
-            return;
-          }
-          target.setMinColour(((java.lang.Integer) value).intValue());
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
+        desc.setValidator(fieldValidator);
+        //-- _colourScheme
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.String.class, "_colourScheme", "colourScheme", org.exolab.castor.xml.NodeType.Attribute);
+        desc.setImmutable(true);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                return target.getColourScheme();
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    target.setColourScheme( (java.lang.String) value);
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _colourScheme
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.StringValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setWhiteSpace("preserve");
         }
-      }
-
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
-
-    // -- validation code for: _minColour
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.IntValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setMinInclusive(-2147483648);
-      typeValidator.setMaxInclusive(2147483647);
-    }
-    desc.setValidator(fieldValidator);
-    // -- _maxColour
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.Integer.TYPE, "_maxColour", "maxColour",
-            org.exolab.castor.xml.NodeType.Attribute);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        if (!target.hasMaxColour())
-        {
-          return null;
+        desc.setValidator(fieldValidator);
+        //-- _threshold
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Float.TYPE, "_threshold", "threshold", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasThreshold()) { return null; }
+                return new java.lang.Float(target.getThreshold());
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deleteThreshold();
+                        return;
+                    }
+                    target.setThreshold( ((java.lang.Float) value).floatValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _threshold
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.FloatValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+            fieldValidator.setValidator(typeValidator);
+            typeValidator.setMinInclusive((float) -3.4028235E38);
+            typeValidator.setMaxInclusive((float) 3.4028235E38);
         }
-        return new java.lang.Integer(target.getMaxColour());
-      }
-
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          // if null, use delete method for optional primitives
-          if (value == null)
-          {
-            target.deleteMaxColour();
-            return;
-          }
-          target.setMaxColour(((java.lang.Integer) value).intValue());
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
+        desc.setValidator(fieldValidator);
+        //-- _perSequence
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_perSequence", "perSequence", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasPerSequence()) { return null; }
+                return (target.getPerSequence() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deletePerSequence();
+                        return;
+                    }
+                    target.setPerSequence( ((java.lang.Boolean) value).booleanValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _perSequence
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+            fieldValidator.setValidator(typeValidator);
         }
-      }
-
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
-
-    // -- validation code for: _maxColour
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.IntValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setMinInclusive(-2147483648);
-      typeValidator.setMaxInclusive(2147483647);
-    }
-    desc.setValidator(fieldValidator);
-    // -- _colourScheme
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.String.class, "_colourScheme", "colourScheme",
-            org.exolab.castor.xml.NodeType.Attribute);
-    desc.setImmutable(true);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        return target.getColourScheme();
-      }
-
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          target.setColourScheme((java.lang.String) value);
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
+        desc.setValidator(fieldValidator);
+        //-- _predefinedColours
+        desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(java.lang.Boolean.TYPE, "_predefinedColours", "predefinedColours", org.exolab.castor.xml.NodeType.Attribute);
+        handler = new org.exolab.castor.xml.XMLFieldHandler() {
+            public java.lang.Object getValue( java.lang.Object object ) 
+                throws IllegalStateException
+            {
+                AnnotationColours target = (AnnotationColours) object;
+                if (!target.hasPredefinedColours()) { return null; }
+                return (target.getPredefinedColours() ? java.lang.Boolean.TRUE : java.lang.Boolean.FALSE);
+            }
+            public void setValue( java.lang.Object object, java.lang.Object value) 
+                throws IllegalStateException, IllegalArgumentException
+            {
+                try {
+                    AnnotationColours target = (AnnotationColours) object;
+                    // if null, use delete method for optional primitives 
+                    if (value == null) {
+                        target.deletePredefinedColours();
+                        return;
+                    }
+                    target.setPredefinedColours( ((java.lang.Boolean) value).booleanValue());
+                } catch (java.lang.Exception ex) {
+                    throw new IllegalStateException(ex.toString());
+                }
+            }
+            public java.lang.Object newInstance(java.lang.Object parent) {
+                return null;
+            }
+        };
+        desc.setHandler(handler);
+        desc.setMultivalued(false);
+        addFieldDescriptor(desc);
+        
+        //-- validation code for: _predefinedColours
+        fieldValidator = new org.exolab.castor.xml.FieldValidator();
+        { //-- local scope
+            org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+            typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+            fieldValidator.setValidator(typeValidator);
         }
-      }
-
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
-
-    // -- validation code for: _colourScheme
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.StringValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setWhiteSpace("preserve");
+        desc.setValidator(fieldValidator);
+        //-- initialize element descriptors
+        
     }
-    desc.setValidator(fieldValidator);
-    // -- _threshold
-    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
-            java.lang.Float.TYPE, "_threshold", "threshold",
-            org.exolab.castor.xml.NodeType.Attribute);
-    handler = new org.exolab.castor.xml.XMLFieldHandler()
-    {
-      public java.lang.Object getValue(java.lang.Object object)
-              throws IllegalStateException
-      {
-        AnnotationColours target = (AnnotationColours) object;
-        if (!target.hasThreshold())
-        {
-          return null;
-        }
-        return new java.lang.Float(target.getThreshold());
-      }
 
-      public void setValue(java.lang.Object object, java.lang.Object value)
-              throws IllegalStateException, IllegalArgumentException
-      {
-        try
-        {
-          AnnotationColours target = (AnnotationColours) object;
-          // if null, use delete method for optional primitives
-          if (value == null)
-          {
-            target.deleteThreshold();
-            return;
-          }
-          target.setThreshold(((java.lang.Float) value).floatValue());
-        } catch (java.lang.Exception ex)
-        {
-          throw new IllegalStateException(ex.toString());
-        }
-      }
 
-      public java.lang.Object newInstance(java.lang.Object parent)
-      {
-        return null;
-      }
-    };
-    desc.setHandler(handler);
-    desc.setMultivalued(false);
-    addFieldDescriptor(desc);
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-    // -- validation code for: _threshold
-    fieldValidator = new org.exolab.castor.xml.FieldValidator();
-    { // -- local scope
-      org.exolab.castor.xml.validators.FloatValidator typeValidator;
-      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
-      fieldValidator.setValidator(typeValidator);
-      typeValidator.setMinInclusive((float) -3.4028235E38);
-      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    /**
+     * Method getAccessMode.
+     * 
+     * @return the access mode specified for this class.
+     */
+    public org.exolab.castor.mapping.AccessMode getAccessMode(
+    ) {
+        return null;
     }
-    desc.setValidator(fieldValidator);
-    // -- initialize element descriptors
-
-  }
 
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Method getAccessMode.
-   * 
-   * @return the access mode specified for this class.
-   */
-  public org.exolab.castor.mapping.AccessMode getAccessMode()
-  {
-    return null;
-  }
-
-  /**
-   * Method getIdentity.
-   * 
-   * @return the identity field, null if this class has no identity.
-   */
-  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
-  {
-    return super.getIdentity();
-  }
+    /**
+     * Method getIdentity.
+     * 
+     * @return the identity field, null if this class has no
+     * identity.
+     */
+    public org.exolab.castor.mapping.FieldDescriptor getIdentity(
+    ) {
+        return super.getIdentity();
+    }
 
-  /**
-   * Method getJavaClass.
-   * 
-   * @return the Java class represented by this descriptor.
-   */
-  public java.lang.Class getJavaClass()
-  {
-    return jalview.schemabinding.version2.AnnotationColours.class;
-  }
+    /**
+     * Method getJavaClass.
+     * 
+     * @return the Java class represented by this descriptor.
+     */
+    public java.lang.Class getJavaClass(
+    ) {
+        return jalview.schemabinding.version2.AnnotationColours.class;
+    }
 
-  /**
-   * Method getNameSpacePrefix.
-   * 
-   * @return the namespace prefix to use when marshaling as XML.
-   */
-  public java.lang.String getNameSpacePrefix()
-  {
-    return _nsPrefix;
-  }
+    /**
+     * Method getNameSpacePrefix.
+     * 
+     * @return the namespace prefix to use when marshaling as XML.
+     */
+    public java.lang.String getNameSpacePrefix(
+    ) {
+        return _nsPrefix;
+    }
 
-  /**
-   * Method getNameSpaceURI.
-   * 
-   * @return the namespace URI used when marshaling and unmarshaling as XML.
-   */
-  public java.lang.String getNameSpaceURI()
-  {
-    return _nsURI;
-  }
+    /**
+     * Method getNameSpaceURI.
+     * 
+     * @return the namespace URI used when marshaling and
+     * unmarshaling as XML.
+     */
+    public java.lang.String getNameSpaceURI(
+    ) {
+        return _nsURI;
+    }
 
-  /**
-   * Method getValidator.
-   * 
-   * @return a specific validator for the class described by this
-   *         ClassDescriptor.
-   */
-  public org.exolab.castor.xml.TypeValidator getValidator()
-  {
-    return this;
-  }
+    /**
+     * Method getValidator.
+     * 
+     * @return a specific validator for the class described by this
+     * ClassDescriptor.
+     */
+    public org.exolab.castor.xml.TypeValidator getValidator(
+    ) {
+        return this;
+    }
 
-  /**
-   * Method getXMLName.
-   * 
-   * @return the XML Name for the Class being described.
-   */
-  public java.lang.String getXMLName()
-  {
-    return _xmlName;
-  }
+    /**
+     * Method getXMLName.
+     * 
+     * @return the XML Name for the Class being described.
+     */
+    public java.lang.String getXMLName(
+    ) {
+        return _xmlName;
+    }
 
-  /**
-   * Method isElementDefinition.
-   * 
-   * @return true if XML schema definition of this Class is that of a global
-   *         element or element with anonymous type definition.
-   */
-  public boolean isElementDefinition()
-  {
-    return _elementDefinition;
-  }
+    /**
+     * Method isElementDefinition.
+     * 
+     * @return true if XML schema definition of this Class is that
+     * of a global
+     * element or element with anonymous type definition.
+     */
+    public boolean isElementDefinition(
+    ) {
+        return _elementDefinition;
+    }
 
 }
index 218b5fa..9c5512c 100755 (executable)
@@ -17,6 +17,7 @@
  */
 package jalview.schemes;
 
+import jalview.analysis.Conservation;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AnnotatedCollectionI;
 import jalview.datamodel.GraphLine;
@@ -24,6 +25,7 @@ import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceI;
 
 import java.awt.Color;
+import java.util.Hashtable;
 import java.util.IdentityHashMap;
 import java.util.Map;
 
@@ -47,9 +49,9 @@ public class AnnotationColourGradient extends ResidueColourScheme
 
   ColourSchemeI colourScheme;
 
-  public boolean predefinedColours = false;
+  private boolean predefinedColours = false;
 
-  public boolean seqAssociated = false;
+  private boolean seqAssociated = false;
 
   IdentityHashMap<SequenceI, AlignmentAnnotation> seqannot = null;
 
@@ -228,14 +230,14 @@ public class AnnotationColourGradient extends ResidueColourScheme
           if (thresholdIsMinMax
                   && annotation.threshold != null
                   && aboveAnnotationThreshold == ABOVE_THRESHOLD
-                  && annotation.annotations[j].value > annotation.threshold.value)
+                  && annotation.annotations[j].value >= annotation.threshold.value)
           {
             range = (annotation.annotations[j].value - annotation.threshold.value)
                     / (annotation.graphMax - annotation.threshold.value);
           }
           else if (thresholdIsMinMax && annotation.threshold != null
                   && aboveAnnotationThreshold == BELOW_THRESHOLD
-                  && annotation.annotations[j].value > annotation.graphMin)
+                  && annotation.annotations[j].value >= annotation.graphMin)
           {
             range = (annotation.annotations[j].value - annotation.graphMin)
                     / (annotation.threshold.value - annotation.graphMin);
@@ -250,7 +252,7 @@ public class AnnotationColourGradient extends ResidueColourScheme
           {
             currentColour = colourScheme.findColour(c, j, seq);
           }
-          else if (range != 0)
+          else 
           {
             dr = rr * range + r1;
             dg = gg * range + g1;
@@ -270,6 +272,16 @@ public class AnnotationColourGradient extends ResidueColourScheme
     return currentColour;
   }
 
+  public boolean isPredefinedColours()
+  {
+    return predefinedColours;
+  }
+
+  public void setPredefinedColours(boolean predefinedColours)
+  {
+    this.predefinedColours = predefinedColours;
+  }
+
   public boolean isSeqAssociated()
   {
     return seqAssociated;
@@ -279,4 +291,28 @@ public class AnnotationColourGradient extends ResidueColourScheme
   {
     seqAssociated = sassoc;
   }
+  @Override
+  public void setConsensus(Hashtable[] consensus)
+  {
+    if (colourScheme!=null)
+    {
+      colourScheme.setConsensus(consensus);
+    }
+  }
+  @Override
+  public void setConservation(Conservation cons)
+  {
+    if (colourScheme!=null)
+    {
+      colourScheme.setConservation(cons);
+    }
+  }
+  @Override
+  public void setConservationInc(int i)
+  {
+    if (colourScheme!=null)
+    {
+      colourScheme.setConservationInc(i);
+    }
+  }
 }
index 168aa31..a2ffff5 100644 (file)
@@ -66,7 +66,8 @@ public class RNAHelicesColour extends ResidueColourScheme
 
   public void refresh()
   {
-    if (lastrefresh != annotation._rnasecstr.hashCode()
+    if ((annotation._rnasecstr == null
+               || lastrefresh != annotation._rnasecstr.hashCode())
             && annotation.isValidStruc())
     {
       annotation.getRNAStruc();
index 25b65b3..cef7eb6 100644 (file)
@@ -97,8 +97,24 @@ public class RNAHelicesColourChooser
       return;
     }
 
-    currentAnnotation = av.getAlignment().getAlignmentAnnotation()[0];// annotations.getSelectedIndex()];
-
+    // This loop will find the first rna structure annotation by which to colour
+    //  the sequences.
+    AlignmentAnnotation[] annotations = av.getAlignment().getAlignmentAnnotation();
+    for (int i = 0; i < annotations.length; i++) {
+       
+       // is this a sensible way of determining type of annotation?
+       if (annotations[i].getRNAStruc() != null) { 
+               currentAnnotation = annotations[i];
+               break;
+       }
+    }
+    if (currentAnnotation == null)   
+    {
+       System.err.println("Jalview is about to try and colour by RNAHelices even"
+                       + " though there are no RNA secondary structure annotations present!");
+       currentAnnotation = av.getAlignment().getAlignmentAnnotation()[0];// annotations.getSelectedIndex()];
+    }
+    
     RNAHelicesColour rhc = null;
 
     rhc = new RNAHelicesColour(currentAnnotation);
index fa4260f..bfff972 100755 (executable)
@@ -18,6 +18,7 @@
 package jalview.schemes;
 
 import java.util.*;
+import java.util.List;
 
 import java.awt.*;
 
@@ -690,22 +691,135 @@ public class ResidueProperties
     codonHash.put("STOP", STOP);
   }
 
-  public static Hashtable codonHash2 = new Hashtable();
+  /**
+   * Nucleotide Ambiguity Codes 
+   */
+  public static final Hashtable<String,String[]> ambiguityCodes=new Hashtable<String,String[]>();
+  /**
+   * Codon triplets with additional symbols for unambiguous codons that include ambiguity codes
+   */
+  public static final Hashtable<String,String> codonHash2 = new Hashtable<String,String>();
+  
+  /**
+   * all ambiguity codes for a given base
+   */
+  public final static Hashtable<String,List<String>> _ambiguityCodes = new Hashtable<String,List<String>>();
+
 
   static
   {
+    /**
+     * 3.2. Purine (adenine or guanine): R
+     * 
+     * R is the symbol previously recommended [1].
+     */
+    ambiguityCodes.put("R", new String[]
+    { "A", "G" });
+
+    /**
+     * 3.3. Pyrimidine (thymine or cytosine): Y
+     * 
+     * Y is the symbol previously recommended [1].
+     */
+    ambiguityCodes.put("Y", new String[]
+    { "T", "C" });
+    /**
+     * 3.4. Adenine or thymine: W
+     * 
+     * Although several diverse symbols have been used for this pair, (and for
+     * the reciprocal pair G+C), only two symbols have a rational basis, L and
+     * W: L derives from DNA density (light; G+C - heavy - would thus be H); W
+     * derives from the strength of the hydrogen bonding interaction between the
+     * base pairs (weak for A+T: G +C - strong - would thus be S). However, the
+     * system recommended for the three-base series (not-A = B, etc., see below,
+     * section 3.8) rules out H as this would be not-G. W is thus recommended.
+     */
+    ambiguityCodes.put("W", new String[]
+    { "A", "T" });
+    /**
+     * 3.5. Guanine or cytosine: S
+     * 
+     * The choice of this symbol is discussed above in section 3.4.
+     */
+    ambiguityCodes.put("S", new String[]
+    { "G", "C" });
+    /**
+     * 3.6. Adenine or cytosine: M
+     * 
+     * There are few common features between A and C. The presence of an NH2
+     * group in similar positions on both bases (Fig. 1) makes possible a
+     * logically derived symbol. A and N being ruled out, M (from aMino) is
+     * recommended.
+     * 
+     * 
+     * Fig. 1. Origin of the symbols M and K The four bases are drawn so as to
+     * show the relationship between adenine and cytosine on the one hand, which
+     * both have aMino groups at the ring position most distant from the point
+     * of attachment to the sugar, and between guanine and thymine on the other,
+     * which both have Keto groups at the corresponding position. The ring atoms
+     * are numbered as recommended [24-26], although for the present purpose
+     * this has the disadvantage of giving discordant numbers to the
+     * corresponding positions.
+     */
+    ambiguityCodes.put("M", new String[]
+    { "A", "C" });
+    /**
+     * 3.7. Guanine or thymine: K By analogy with A and C (section 3.6), both G
+     * and T have Keto groups in similar positions (Fig. 1).
+     */
+    ambiguityCodes.put("K", new String[]
+    { "G", "T" });
+    /**
+     * 3.8. Adenine or thymine or cytosine: H
+     * 
+     * Not-G is the most simple means of memorising this combination and symbols
+     * logically related to G were examined. F and H would both be suitable, as
+     * the letters before and after G in the alphabet, but A would have no
+     * equivalent to F. The use of H has historical precedence [2].
+     */
+    ambiguityCodes.put("H", new String[]
+    { "A", "T", "C" });
+    /**
+     * 3.9. Guanine or cytosine or thymine: B
+     * 
+     * Not-A as above (section 3.8).
+     */
+    ambiguityCodes.put("B", new String[]
+    { "G", "T", "C" });
+    /**
+     * 3.10. Guanine or adenine or cytosine: V
+     * 
+     * Not-T by analogy with not-G (section 3.8) would be U but this is ruled
+     * out to eliminate confusion with uracil. V is the next logical choice.
+     * Note that T and U may in some cases be considered to be synonyms.
+     */
+    ambiguityCodes.put("V", new String[]
+    { "G", "A", "C" });
+    /**
+     * 3.11. Guanine or adenine or thymine: D
+     * 
+     * Not-C as above (section 3.8).
+     */
+    ambiguityCodes.put("D", new String[]
+    { "G", "A", "T" });
+    /**
+     * 3.12. Guanine or adenine or thymine or cytosine: N
+     */
+    ambiguityCodes.put("R", new String[]
+    { "G", "A", "T", "C" });
+    // Now build codon translation table
     codonHash2.put("AAA", "K");
     codonHash2.put("AAG", "K");
     codonHash2.put("AAC", "N");
     codonHash2.put("AAT", "N");
 
-    codonHash2.put("CAA", "E");
-    codonHash2.put("CAG", "E");
+    codonHash2.put("CAA", "Q");
+    codonHash2.put("CAG", "Q");
     codonHash2.put("CAC", "H");
     codonHash2.put("CAT", "H");
 
-    codonHash2.put("GAA", "Q");
-    codonHash2.put("GAG", "Q");
+    codonHash2.put("GAA", "E");
+    codonHash2.put("GAG", "E");
     codonHash2.put("GAC", "D");
     codonHash2.put("GAT", "D");
 
@@ -713,9 +827,9 @@ public class ResidueProperties
     codonHash2.put("TAT", "Y");
 
     codonHash2.put("ACA", "T");
-    codonHash2.put("AAG", "T");
     codonHash2.put("ACC", "T");
     codonHash2.put("ACT", "T");
+    codonHash2.put("ACG", "T");
 
     codonHash2.put("CCA", "P");
     codonHash2.put("CCG", "P");
@@ -775,6 +889,145 @@ public class ResidueProperties
 
     codonHash2.put("TTC", "F");
     codonHash2.put("TTT", "F");
+    
+    buildAmbiguityCodonSet();
+  }
+  
+  /**
+   * programmatic generation of codons including ambiguity codes
+   */
+  public static void buildAmbiguityCodonSet()
+  {
+    if (_ambiguityCodes.size() > 0)
+    {
+      System.err
+              .println("Ignoring multiple calls to buildAmbiguityCodonSet");
+      return;
+    }
+    // Invert the ambiguity code set
+    for (Map.Entry<String, String[]> acode : ambiguityCodes.entrySet())
+    {
+      for (String r : acode.getValue())
+      {
+        List<String> codesfor = _ambiguityCodes.get(r);
+        if (codesfor == null)
+        {
+          _ambiguityCodes.put(r, codesfor = new ArrayList<String>());
+        }
+        if (!codesfor.contains(acode.getKey()))
+        {
+          codesfor.add(acode.getKey());
+        }
+        else
+        {
+          System.err
+                  .println("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for "
+                          + acode.getKey() + " in residue " + r);
+        }
+      }
+    }
+    // and programmatically add in the ambiguity codes that yield the same amino
+    // acid
+    String[] unambcodons = codonHash2.keySet().toArray(new String[codonHash2.size()]);
+    for (String codon : unambcodons)
+    {
+      String residue = codonHash2.get(codon);
+      String acodon[][] = new String[codon.length()][];
+      for (int i = 0, iSize = codon.length(); i < iSize; i++)
+      {
+        String _ac = "" + codon.charAt(i);
+        List<String> acodes = _ambiguityCodes.get(_ac);
+        if (acodes != null)
+        {
+          acodon[i] = acodes.toArray(new String[acodes.size()]);
+        }
+        else
+        {
+          acodon[i] = new String[]
+          {};
+        }
+      }
+      // enumerate all combinations and test for veracity of translation
+      int tpos[] = new int[codon.length()], cpos[] = new int[codon.length()];
+      for (int i = 0; i < tpos.length; i++)
+      {
+        tpos[i] = -1;
+      }
+      tpos[acodon.length - 1] = 0;
+      int ipos, j;
+      while (tpos[0] < acodon[0].length)
+      {
+        // make all codons for this combination
+        char allres[][] = new char[tpos.length][];
+        String _acodon = "";
+        char _anuc;
+        for (ipos = 0; ipos < tpos.length; ipos++)
+        {
+          if (acodon[ipos].length==0 || tpos[ipos] < 0)
+          {
+            _acodon += codon.charAt(ipos);
+            allres[ipos] = new char[]
+            { codon.charAt(ipos) };
+          }
+          else
+          {
+            _acodon += acodon[ipos][tpos[ipos]];
+            String[] altbase = ambiguityCodes.get(acodon[ipos][tpos[ipos]]);
+            allres[ipos] = new char[altbase.length];
+            j = 0;
+            for (String ab : altbase)
+            {
+              allres[ipos][j++] = ab.charAt(0);
+            }
+          }
+        }
+        // test all codons for this combination
+        for (ipos = 0; ipos < cpos.length; ipos++)
+        {
+          cpos[ipos] = 0;
+        }
+        boolean valid = true;
+        do
+        {
+          String _codon = "";
+          for (j = 0; j < cpos.length; j++)
+          {
+            _codon += allres[j][cpos[j]];
+          }
+          String tr = codonHash2.get(_codon);
+          if (valid = (tr!=null && tr.equals(residue)))
+          {
+            // advance to next combination
+            ipos = acodon.length - 1;
+            while (++cpos[ipos] >= allres[ipos].length && ipos > 0)
+            {
+              cpos[ipos] = 0;
+              ipos--;
+            }
+          }
+        } while (valid && cpos[0] < allres[0].length);
+        if (valid)
+        {
+          // Add this to the set of codons we will translate
+//          System.out.println("Adding ambiguity codon: " + _acodon + " for "
+//                  + residue);
+          codonHash2.put(_acodon, residue);
+        }
+        else
+        {
+//          System.err.println("Rejecting ambiguity codon: " + _acodon
+//                  + " for " + residue);
+        }
+        // next combination
+        ipos = acodon.length - 1;
+        while (++tpos[ipos] >= acodon[ipos].length && ipos > 0)
+        {
+          tpos[ipos] = -1;
+          ipos--;
+        }
+      }
+    }
+
   }
 
   static
@@ -1232,6 +1485,19 @@ public class ResidueProperties
 
   public static String codonTranslate(String lccodon)
   {
+    if (false)
+    {
+      return _codonTranslate(lccodon);
+    }
+    String cdn = codonHash2.get(lccodon.toUpperCase());
+    if (cdn!=null && cdn.equals("*"))
+    {
+      return "STOP";
+    }
+    return cdn;
+  }
+  public static String _codonTranslate(String lccodon)
+  {
     String codon = lccodon.toUpperCase();
     // all base ambiguity codes yield an 'X' amino acid residue
     if (codon.indexOf('X') > -1 || codon.indexOf('N') > -1)
index e598120..8d684c1 100644 (file)
@@ -53,10 +53,26 @@ public class StructureSelectionManager
   }
 
   Hashtable mappingData = new Hashtable();
-
+  private static StructureSelectionManager nullProvider = null;
   public static StructureSelectionManager getStructureSelectionManager(
           StructureSelectionManagerProvider context)
   {
+    if (context==null) { 
+      if (nullProvider == null)
+      {
+        if (instances != null)
+        {
+          throw new Error(
+                  "Implementation error. Structure selection manager's context is 'null'",
+                  new NullPointerException("SSM context is null"));
+        }
+        else
+        {
+          nullProvider = new StructureSelectionManager();
+        }
+        return nullProvider;
+      }
+    }
     if (instances == null)
     {
       instances = new java.util.IdentityHashMap<StructureSelectionManagerProvider, StructureSelectionManager>();
@@ -64,7 +80,13 @@ public class StructureSelectionManager
     StructureSelectionManager instance = instances.get(context);
     if (instance == null)
     {
-      instances.put(context, instance = new StructureSelectionManager());
+      if (nullProvider!=null)
+      {
+        instance = nullProvider;
+      } else {
+        instance = new StructureSelectionManager();
+      }
+      instances.put(context, instance);
     }
     return instance;
   }
diff --git a/src/jalview/util/MessageManager.java b/src/jalview/util/MessageManager.java
new file mode 100644 (file)
index 0000000..fcf2bfa
--- /dev/null
@@ -0,0 +1,67 @@
+package jalview.util;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * 
+ * @author David Roldan Martinez
+ * @author Thomas Abeel
+ * 
+ *
+ */
+public class MessageManager {
+
+       private static ResourceBundle rb;    
+               
+       private static Logger log=Logger.getLogger(MessageManager.class.getCanonicalName());
+       
+       private static Locale loc;
+       
+       
+       
+    static{
+      try {
+       /* Localize Java dialogs */
+        loc = Locale.getDefault();
+       // Locale.setDefault(loc);
+       /* Getting messages for GV */
+       log.info("Getting messages for lang: "+loc);
+        rb = ResourceBundle.getBundle("lang.Messages", loc);
+        if (log.isLoggable(Level.FINEST)) {
+          // this might take a while, so we only do it if it will be shown
+          log.finest("Language keys: "+rb.keySet());
+        }
+      } catch (Exception q) {
+        log.warning("Exception when initting Locale for i18n messages\n"+q.getMessage());
+        q.printStackTrace();
+      }
+      catch (Error v)
+      {
+        log.warning("Error when initting Locale for i18n messages\n"+v.getMessage());
+        v.printStackTrace();
+      }
+      
+     
+    }
+    
+    public static String getString(String key){
+       String value = "[missing key] " + key;
+       try{
+               value = rb.getString(key);
+       }catch(Exception e){
+         log.warning("I18N missing: "+loc+"\t"+key);
+       }
+       return value;
+    }
+    
+       public static Locale getLocale() {
+               return loc;
+       }
+       public static String formatMessage(String key, Object[] params){
+               return MessageFormat.format(rb.getString(key), params);
+       }
+}
index 029280b..6f3a2af 100644 (file)
@@ -40,7 +40,9 @@ import jalview.workers.AlignCalcManager;
 import jalview.workers.ConsensusThread;
 import jalview.workers.StrucConsensusThread;
 
+import java.awt.Color;
 import java.util.ArrayList;
+import java.util.BitSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -402,7 +404,8 @@ public abstract class AlignmentViewport implements AlignViewportI
     if (autoCalculateStrucConsensus && strucConsensus == null
             && alignment.isNucleotide() && alignment.hasRNAStructure())
     {
-
+      // secondary structure has been added - so init the consensus line
+      initRNAStructure();
     }
 
     // see note in mantis : issue number 8585
@@ -593,6 +596,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    * 
    * @return null or the currently selected sequence region
    */
+  @Override
   public SequenceGroup getSelectionGroup()
   {
     return selectionGroup;
@@ -605,6 +609,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    *          - group holding references to sequences in this alignment view
    * 
    */
+  @Override
   public void setSelectionGroup(SequenceGroup sg)
   {
     selectionGroup = sg;
@@ -780,6 +785,8 @@ public abstract class AlignmentViewport implements AlignViewportI
 
   protected boolean showConsensus = true;
 
+  Hashtable sequenceColours;
+
   /**
    * Property change listener for changes in alignment
    * 
@@ -1053,6 +1060,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    * 
    * @return array of references to sequence objects
    */
+  @Override
   public SequenceI[] getSequenceSelection()
   {
     SequenceI[] sequences = null;
@@ -1075,6 +1083,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    * 
    * @return String[]
    */
+  @Override
   public jalview.datamodel.CigarArray getViewAsCigars(
           boolean selectedRegionOnly)
   {
@@ -1091,6 +1100,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    *          boolean true to just return the selected view
    * @return AlignmentView
    */
+  @Override
   public jalview.datamodel.AlignmentView getAlignmentView(
           boolean selectedOnly)
   {
@@ -1109,6 +1119,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    *          is true)
    * @return AlignmentView
    */
+  @Override
   public jalview.datamodel.AlignmentView getAlignmentView(
           boolean selectedOnly, boolean markGroups)
   {
@@ -1124,6 +1135,7 @@ public abstract class AlignmentViewport implements AlignViewportI
    * 
    * @return String[]
    */
+  @Override
   public String[] getViewAsString(boolean selectedRegionOnly)
   {
     String[] selection = null;
@@ -1318,62 +1330,80 @@ public abstract class AlignmentViewport implements AlignViewportI
     {
       if (!alignment.isNucleotide())
       {
-        if (showConservation)
-        {
-          if (conservation == null)
-          {
-            conservation = new AlignmentAnnotation("Conservation",
-                    "Conservation of total alignment less than "
-                            + getConsPercGaps() + "% gaps",
-                    new Annotation[1], 0f, 11f,
-                    AlignmentAnnotation.BAR_GRAPH);
-            conservation.hasText = true;
-            conservation.autoCalculated = true;
-            alignment.addAnnotation(conservation);
-          }
-        }
-        if (showQuality)
-        {
-          if (quality == null)
-          {
-            quality = new AlignmentAnnotation("Quality",
-                    "Alignment Quality based on Blosum62 scores",
-                    new Annotation[1], 0f, 11f,
-                    AlignmentAnnotation.BAR_GRAPH);
-            quality.hasText = true;
-            quality.autoCalculated = true;
-            alignment.addAnnotation(quality);
-          }
-        }
+        initConservation();
+        initQuality();
       }
       else
       {
-        if (alignment.hasRNAStructure())
-        {
-          strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
-                  new Annotation[1], 0f, 100f,
-                  AlignmentAnnotation.BAR_GRAPH);
-          strucConsensus.hasText = true;
-          strucConsensus.autoCalculated = true;
-        }
+        initRNAStructure();
       }
+      initConsensus();
+    }
+  }
 
-      consensus = new AlignmentAnnotation("Consensus", "PID",
-              new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
-      consensus.hasText = true;
-      consensus.autoCalculated = true;
+  private void initConsensus()
+  {
 
-      if (showConsensus)
+    consensus = new AlignmentAnnotation("Consensus", "PID",
+            new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
+    consensus.hasText = true;
+    consensus.autoCalculated = true;
+
+    if (showConsensus)
+    {
+      alignment.addAnnotation(consensus);
+    }
+  }
+
+  private void initConservation()
+  {
+    if (showConservation)
+    {
+      if (conservation == null)
       {
-        alignment.addAnnotation(consensus);
-        if (strucConsensus != null)
-        {
-          alignment.addAnnotation(strucConsensus);
-        }
+        conservation = new AlignmentAnnotation("Conservation",
+                "Conservation of total alignment less than "
+                        + getConsPercGaps() + "% gaps",
+                new Annotation[1], 0f, 11f,
+                AlignmentAnnotation.BAR_GRAPH);
+        conservation.hasText = true;
+        conservation.autoCalculated = true;
+        alignment.addAnnotation(conservation);
+      }
+    }
+  }
+  private void initQuality()
+  {
+    if (showQuality)
+    {
+      if (quality == null)
+      {
+        quality = new AlignmentAnnotation("Quality",
+                "Alignment Quality based on Blosum62 scores",
+                new Annotation[1], 0f, 11f,
+                AlignmentAnnotation.BAR_GRAPH);
+        quality.hasText = true;
+        quality.autoCalculated = true;
+        alignment.addAnnotation(quality);
       }
     }
   }
+  private void initRNAStructure()
+  {
+    if (alignment.hasRNAStructure() && strucConsensus==null)
+    {
+      strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
+              new Annotation[1], 0f, 100f,
+              AlignmentAnnotation.BAR_GRAPH);
+      strucConsensus.hasText = true;
+      strucConsensus.autoCalculated = true;
 
+      if (showConsensus)
+      {
+        alignment.addAnnotation(strucConsensus);
+      }
+    }
+  }
   /*
    * (non-Javadoc)
    * 
@@ -1387,7 +1417,7 @@ public abstract class AlignmentViewport implements AlignViewportI
     int charHeight = getCharHeight();
     if (aa != null)
     {
-      boolean graphgrp[] = null;
+      BitSet graphgrp = new BitSet();
       for (int i = 0; i < aa.length; i++)
       {
         if (aa[i] == null)
@@ -1401,17 +1431,13 @@ public abstract class AlignmentViewport implements AlignViewportI
         }
         if (aa[i].graphGroup > -1)
         {
-          if (graphgrp == null)
-          {
-            graphgrp = new boolean[aa.length];
-          }
-          if (graphgrp[aa[i].graphGroup])
+          if (graphgrp.get(aa[i].graphGroup))
           {
             continue;
           }
           else
           {
-            graphgrp[aa[i].graphGroup] = true;
+            graphgrp.set(aa[i].graphGroup);
           }
         }
         aa[i].height = 0;
@@ -1516,4 +1542,60 @@ public abstract class AlignmentViewport implements AlignViewportI
     oldrfs.clear();
   }
 
+  @Override
+  public Color getSequenceColour(SequenceI seq)
+  {
+    Color sqc=Color.white;
+    if (sequenceColours != null)
+    {
+      sqc = (Color) sequenceColours.get(seq);
+      if (sqc == null) {
+        sqc = Color.white;
+      }
+    }
+    return sqc;
+  }
+
+  @Override
+  public void setSequenceColour(SequenceI seq, Color col)
+  {
+    if (sequenceColours == null)
+    {
+      sequenceColours = new Hashtable();
+    }
+
+    if (col == null)
+    {
+      sequenceColours.remove(seq);
+    }
+    else
+    {
+      sequenceColours.put(seq, col);
+    }
+  }
+
+  @Override
+  public void updateSequenceIdColours()
+  {
+    if (sequenceColours == null)
+    {
+      sequenceColours = new Hashtable();
+    }
+    for (SequenceGroup sg : alignment.getGroups())
+    {
+      if (sg.idColour != null)
+      {
+        for (SequenceI s : sg.getSequences(getHiddenRepSequences()))
+        {
+          sequenceColours.put(s, sg.idColour);
+        }
+      }
+    }
+  }
+
+  @Override
+  public void clearSequenceColours()
+  {
+    sequenceColours = null;
+  };
 }
index 343e64d..c2b4d66 100644 (file)
@@ -24,6 +24,7 @@ import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
 import jalview.schemes.ColourSchemeI;
 
 import java.util.Hashtable;
@@ -31,6 +32,8 @@ import java.util.Hashtable;
 public class ConsensusThread extends AlignCalcWorker implements
         AlignCalcWorkerI
 {
+  private long nseq=-1;
+
   public ConsensusThread(AlignViewportI alignViewport,
           AlignmentViewPanel alignPanel)
   {
@@ -94,7 +97,9 @@ public class ConsensusThread extends AlignCalcWorker implements
       hconsensus = new Hashtable[aWidth];
       try
       {
-        AAFrequency.calculate(alignment.getSequencesArray(), 0,
+        SequenceI aseqs[] = alignment.getSequencesArray();
+        nseq = aseqs.length;
+        AAFrequency.calculate(aseqs, 0,
                 alignment.getWidth(), hconsensus, true);
       } catch (ArrayIndexOutOfBoundsException x)
       {
@@ -150,7 +155,7 @@ public class ConsensusThread extends AlignCalcWorker implements
     {
       AAFrequency.completeConsensus(consensus, hconsensus, 0,
               hconsensus.length, alignViewport.getIgnoreGapsConsensus(),
-              alignViewport.isShowSequenceLogo());
+              alignViewport.isShowSequenceLogo(), nseq);
     }
   }
 }
index 86c3336..25e5cde 100644 (file)
@@ -26,6 +26,7 @@ import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
 
 public class StrucConsensusThread extends AlignCalcWorker implements
         AlignCalcWorkerI
@@ -40,6 +41,8 @@ public class StrucConsensusThread extends AlignCalcWorker implements
 
   Hashtable[] hStrucConsensus;
 
+  private long nseq=-1;
+
   @Override
   public void run()
   {
@@ -107,8 +110,10 @@ public class StrucConsensusThread extends AlignCalcWorker implements
 
       try
       {
-        jalview.analysis.StructureFrequency.calculate(
-                alignment.getSequencesArray(), 0, alignment.getWidth(),
+        final SequenceI[] arr=
+                alignment.getSequencesArray();
+        nseq = arr.length;
+        jalview.analysis.StructureFrequency.calculate(arr, 0, alignment.getWidth(),
                 hStrucConsensus, true, rnaStruc);
       } catch (ArrayIndexOutOfBoundsException x)
       {
@@ -159,7 +164,7 @@ public class StrucConsensusThread extends AlignCalcWorker implements
       StructureFrequency.completeConsensus(strucConsensus, hStrucConsensus,
               0, hStrucConsensus.length,
               alignViewport.getIgnoreGapsConsensus(),
-              alignViewport.isShowSequenceLogo());
+              alignViewport.isShowSequenceLogo(), nseq);
     }
   }
 
index a55658b..17c1bc9 100644 (file)
@@ -136,10 +136,13 @@ public class DBRefFetcher implements Runnable
       {
         jalviewSourceI src = en.nextElement();
         List<DbSourceProxy> sp = src.getSequenceSourceProxies();
-        selsources.addAll(sp);
-        if (sp.size() > 1)
+        if (sp != null)
         {
-          Cache.log.debug("Added many Db Sources for :" + src.getTitle());
+          selsources.addAll(sp);
+          if (sp.size() > 1)
+          {
+            Cache.log.debug("Added many Db Sources for :" + src.getTitle());
+          }
         }
       }
       // select appropriate databases based on alignFrame context.
index 78f2477..0940f40 100644 (file)
@@ -83,4 +83,10 @@ public class EmblCdsSouce extends EmblXmlSource implements DbSourceProxy
     return "EMBL (CDS)";
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
+
 }
index 4495be1..c7be59a 100644 (file)
@@ -114,4 +114,10 @@ public class EmblSource extends EmblXmlSource implements DbSourceProxy
   {
     return "EMBL"; // getDbSource();
   }
+
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 125a295..81c8ea3 100644 (file)
@@ -118,4 +118,9 @@ public class GeneDbSource extends EmblXmlSource implements DbSourceProxy
   {
     return "GeneDB"; // getDbSource();
   }
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index b432dff..b96a65c 100644 (file)
@@ -209,4 +209,9 @@ public class Pdb extends EbiFileRetrievedProxy implements DbSourceProxy
     return "PDB"; // getDbSource();
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 75d4559..077b929 100644 (file)
@@ -65,4 +65,9 @@ public class PfamFull extends Pfam implements DbSourceProxy
     return null;
   }
 
+   @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index cab4999..cb00a1d 100644 (file)
@@ -62,4 +62,9 @@ public class PfamSeed extends Pfam implements DbSourceProxy
     return "PF03760";
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 3703e41..e20527a 100644 (file)
@@ -70,4 +70,9 @@ public class RfamFull extends Rfam implements DbSourceProxy
     return null;
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index eb3c2c3..75fa62b 100644 (file)
@@ -69,4 +69,9 @@ public class RfamSeed extends Rfam implements DbSourceProxy
     return null;
   }
 
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 48f8649..1b967c4 100644 (file)
@@ -294,4 +294,10 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
   {
     return "Uniprot"; // getDbSource();
   }
+
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }
index 1511e6b..308bc21 100644 (file)
@@ -74,4 +74,10 @@ public interface jalviewSourceI
    */
   boolean isNewerThan(jalviewSourceI jalviewSourceI);
 
+  /**
+   * test if the source is a reference source for the authority
+   * @return
+   */
+  boolean isReferenceSource();
+
 }
index 95ff7d0..9650b8c 100644 (file)
@@ -70,6 +70,11 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
   protected MultipleConnectionPropertyProviderI connprops = null;
 
   /**
+   * DAS sources are tier 1 - if we have a direct DB connection then we should prefer it
+   */
+  private int tier=1;
+
+  /**
    * create a new DbSource proxy for a DAS 1 source
    * 
    * @param dbnbame
@@ -94,6 +99,7 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
       throw new Exception("Source " + source.getTitle()
               + " does not support the sequence command.");
     }
+    this.tier = 1+((jsrc.isLocal() || jsrc.isReferenceSource()) ? 0 : 1);
     this.source = source;
     this.dbname = dbname;
     this.dbrefname = dbrefname.toUpperCase();
@@ -334,4 +340,10 @@ public class DasSequenceSource extends DbSourceProxyImpl implements
   {
     return coordsys;
   }
+
+  @Override
+  public int getTier()
+  {
+    return tier;
+  }
 }
index 9d044bc..761bcc8 100644 (file)
@@ -178,13 +178,21 @@ public class DasSourceRegistry implements DasSourceRegistryI,
     {
       // get local sources from properties and initialise the local source list
       String local = jalview.bin.Cache.getProperty("DAS_LOCAL_SOURCE");
+
       if (local != null)
       {
+        int n = 1;
         StringTokenizer st = new StringTokenizer(local, "\t");
         while (st.hasMoreTokens())
         {
           String token = st.nextToken();
           int bar = token.indexOf("|");
+          if (bar == -1)
+          {
+            System.err
+                    .println("Warning: DAS user local source appears to have no nickname (expected a '|' followed by nickname)\nOffending definition: '"
+                            + token + "'");
+          }
           String url = token.substring(bar + 1);
           boolean features = true, sequence = false;
           if (url.startsWith("sequence:"))
@@ -193,8 +201,25 @@ public class DasSourceRegistry implements DasSourceRegistryI,
             // this source also serves sequences as well as features
             sequence = true;
           }
-          createLocalSource(url, token.substring(0, bar), sequence,
-                  features);
+          try
+          {
+            if (bar > -1)
+            {
+              createLocalSource(url, token.substring(0, bar), sequence,
+                      features);
+            }
+            else
+            {
+              createLocalSource(url, "User Source" + n, sequence, features);
+            }
+          } catch (Exception q)
+          {
+            System.err
+                    .println("Unexpected exception when creating local source from '"
+                            + token + "'");
+            q.printStackTrace();
+          }
+          n++;
         }
       }
     }
index eb9d807..f68a005 100644 (file)
@@ -366,4 +366,11 @@ public class JalviewSource implements jalviewSourceI
     return isLaterThan(getVersion().getCreated(), other.getVersion()
             .getCreated());
   }
+
+  @Override
+  public boolean isReferenceSource()
+  {
+    // TODO check source object for indication that we are the primary for a DAS coordinate system
+    return false;
+  }
 }
index 7f3847b..2750293 100644 (file)
@@ -23,6 +23,7 @@ import jalview.gui.AlignmentPanel;
 import jalview.ws.jws2.dm.AAConSettings;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.WsParamSetI;
+import jalview.ws.uimodel.AlignAnalysisUIText;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -48,23 +49,6 @@ public class AAConClient extends JabawsAlignCalcWorker
     initViewportParams();
   }
 
-  protected void initViewportParams()
-  {
-    ((jalview.gui.AlignViewport) alignViewport).setCalcIdSettingsFor(
-            getCalcId(),
-            new AAConSettings(true, service, this.preset,
-                    (arguments != null) ? JabaParamStore
-                            .getJwsArgsfromJaba(arguments) : null), true);
-  }
-
-  @Override
-  public void updateParameters(WsParamSetI newpreset,
-          java.util.List<Argument> newarguments)
-  {
-    super.updateParameters(newpreset, newarguments);
-    initViewportParams();
-  };
-
   public String getServiceActionText()
   {
     return "calculating Amino acid consensus using AACon service";
@@ -114,17 +98,21 @@ public class AAConClient extends JabawsAlignCalcWorker
     }
   }
 
+  @Override
   public String getCalcId()
   {
-    return SequenceAnnotationWSClient.AAConCalcId;
+    return CALC_ID;
   }
+  private static String CALC_ID="jabaws2.AACon";
 
-  public static void removeAAConsAnnotation(AlignmentPanel alignPanel)
+  public static AlignAnalysisUIText getAlignAnalysisUITest()
   {
-    for (AlignmentAnnotation aa : alignPanel.getAlignment().findAnnotation(
-            SequenceAnnotationWSClient.AAConCalcId))
-    {
-      alignPanel.getAlignment().deleteAnnotation(aa);
-    }
+    return new AlignAnalysisUIText(
+            compbio.ws.client.Services.AAConWS.toString(),
+            jalview.ws.jws2.AAConClient.class, CALC_ID, false, true, true,
+            "AACon Calculations",
+            "When checked, AACon calculations are updated automatically.",
+            "Change AACon Settings...",
+            "Modify settings for AACon calculations.");
   }
 }
index d64a956..41f0fd5 100644 (file)
@@ -41,7 +41,7 @@ import compbio.data.sequence.Score;
 import compbio.data.sequence.ScoreManager.ScoreHolder;
 import compbio.metadata.Argument;
 
-public class AADisorderClient extends JabawsAlignCalcWorker implements
+public class AADisorderClient extends JabawsCalcWorker implements
         AlignCalcWorkerI
 {
 
@@ -181,7 +181,7 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
       {
         boolean sameGroup = false;
         SequenceI dseq, aseq, seq = seqNames.get(seqId);
-        int base = seq.getStart() - 1;
+        int base = seq.findPosition(start)-1;
         aseq = seq;
         while ((dseq = seq).getDatasetSequence() != null)
         {
@@ -191,99 +191,102 @@ public class AADisorderClient extends JabawsAlignCalcWorker implements
         ScoreHolder scores = scoremanager.getAnnotationForSequence(seqId);
         float last = Float.NaN, val = Float.NaN;
         int lastAnnot = ourAnnot.size();
-        for (Score scr : scores.scores)
-        {
-
-          if (scr.getRanges() != null && scr.getRanges().size() > 0)
+        if (scores!=null && scores.scores!=null) {
+          for (Score scr : scores.scores)
           {
-            Iterator<Float> vals = scr.getScores().iterator();
-            // make features on sequence
-            for (Range rn : scr.getRanges())
-            {
 
-              SequenceFeature sf;
-              String[] type = featureTypeMap.get(scr.getMethod());
-              if (type == null)
+            if (scr.getRanges() != null && scr.getRanges().size() > 0)
+            {
+              Iterator<Float> vals = scr.getScores().iterator();
+              // make features on sequence
+              for (Range rn : scr.getRanges())
               {
-                // create a default type for this feature
-                type = new String[]
-                { typeName + " (" + scr.getMethod() + ")",
-                    service.getActionText() };
+
+                SequenceFeature sf;
+                String[] type = featureTypeMap.get(scr.getMethod());
+                if (type == null)
+                {
+                  // create a default type for this feature
+                  type = new String[]
+                  { typeName + " (" + scr.getMethod() + ")",
+                      service.getActionText() };
+                }
+                if (vals.hasNext())
+                {
+                  sf = new SequenceFeature(type[0], type[1],
+                          base + rn.from, base + rn.to, val = vals.next()
+                                  .floatValue(), methodName);
+                }
+                else
+                {
+                  sf = new SequenceFeature(type[0], type[1], null, base
+                          + rn.from, base + rn.to, methodName);
+                }
+                dseq.addSequenceFeature(sf);
+                if (last != val && last != Float.NaN)
+                {
+                  fc.put(sf.getType(), sf);
+                }
+                last = val;
+                dispFeatures = true;
               }
-              if (vals.hasNext())
+            }
+            else
+            {
+              if (scr.getScores().size() == 0)
               {
-                sf = new SequenceFeature(type[0], type[1], base + rn.from,
-                        base + rn.to, val = vals.next().floatValue(),
-                        methodName);
+                continue;
               }
-              else
+              AlignmentAnnotation annot = createAnnotationRowsForScores(
+                      ourAnnot,
+                      service.serviceType + " (" + scr.getMethod() + ")",
+                      service.getServiceTypeURI() + "/" + scr.getMethod(),
+                      aseq, base + 1, scr);
+              annot.graph = AlignmentAnnotation.LINE_GRAPH;
+              annot.visible = (annotTypeMap == null
+                      || annotTypeMap.get(scr.getMethod()) == null || annotTypeMap
+                      .get(scr.getMethod()).get(INVISIBLE) == null);
+              double[] thrsh = (annotTypeMap == null || annotTypeMap
+                      .get(scr.getMethod()) == null) ? null
+                      : (double[]) annotTypeMap.get(scr.getMethod()).get(
+                              THRESHOLD);
+              if (annotTypeMap == null
+                      || annotTypeMap.get(scr.getMethod()) == null
+                      || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
               {
-                sf = new SequenceFeature(type[0], type[1], null, base
-                        + rn.from, base + rn.to, methodName);
+                {
+                  if (!sameGroup)
+                  {
+                    graphGroup++;
+                    sameGroup = true;
+                  }
+
+                  annot.graphGroup = graphGroup;
+                }
               }
-              dseq.addSequenceFeature(sf);
-              if (last != val && last != Float.NaN)
+
+              annot.description = "<html>" + service.getActionText()
+                      + " - raw scores";
+              if (thrsh != null)
               {
-                fc.put(sf.getType(), sf);
+                String threshNote = (thrsh[0] > 0 ? "Above " : "Below ")
+                        + thrsh[1] + " indicates disorder";
+                annot.threshold = new GraphLine((float) thrsh[1],
+                        threshNote, Color.red);
+                annot.description += "<br/>" + threshNote;
               }
-              last = val;
-              dispFeatures = true;
-            }
-          }
-          else
-          {
-            if (scr.getScores().size() == 0)
-            {
-              continue;
-            }
-            AlignmentAnnotation annot = createAnnotationRowsForScores(
-                    ourAnnot, service.serviceType + " (" + scr.getMethod()
-                            + ")",
-                    service.getServiceTypeURI() + "/" + scr.getMethod(),
-                    aseq, base + 1, scr);
-            annot.graph = AlignmentAnnotation.LINE_GRAPH;
-            annot.visible = (annotTypeMap == null
-                    || annotTypeMap.get(scr.getMethod()) == null || annotTypeMap
-                    .get(scr.getMethod()).get(INVISIBLE) == null);
-            double[] thrsh = (annotTypeMap == null || annotTypeMap.get(scr
-                    .getMethod()) == null) ? null : (double[]) annotTypeMap
-                    .get(scr.getMethod()).get(THRESHOLD);
-            if (annotTypeMap == null
-                    || annotTypeMap.get(scr.getMethod()) == null
-                    || annotTypeMap.get(scr.getMethod()).get(DONTCOMBINE) == null)
-            {
+              annot.description += "</html>";
+              Color col = new UserColourScheme(typeName)
+                      .createColourFromName(typeName + scr.getMethod());
+              for (int p = 0, ps = annot.annotations.length; p < ps; p++)
               {
-                if (!sameGroup)
+                if (annot.annotations[p] != null)
                 {
-                  graphGroup++;
-                  sameGroup = true;
+                  annot.annotations[p].colour = col;
                 }
-
-                annot.graphGroup = graphGroup;
-              }
-            }
-
-            annot.description = "<html>" + service.getActionText()
-                    + " - raw scores";
-            if (thrsh != null)
-            {
-              String threshNote = (thrsh[0] > 0 ? "Above " : "Below ")
-                      + thrsh[1] + " indicates disorder";
-              annot.threshold = new GraphLine((float) thrsh[1], threshNote,
-                      Color.red);
-              annot.description += "<br/>" + threshNote;
-            }
-            annot.description += "</html>";
-            Color col = new UserColourScheme(typeName)
-                    .createColourFromName(typeName + scr.getMethod());
-            for (int p = 0, ps = annot.annotations.length; p < ps; p++)
-            {
-              if (annot.annotations[p] != null)
-              {
-                annot.annotations[p].colour = col;
               }
+              annot._linecolour = col;
             }
-            annot._linecolour = col;
           }
         }
         if (lastAnnot + 1 == ourAnnot.size())
index 204e0df..285777a 100644 (file)
@@ -19,10 +19,12 @@ package jalview.ws.jws2;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.StringTokenizer;
 
+import org.jmol.util.ArrayUtil;
 import compbio.metadata.Argument;
 import compbio.metadata.Option;
 import compbio.metadata.Parameter;
@@ -137,12 +139,28 @@ public class JabaParamStore implements ParamDatastoreI
 
   public static List<ArgumentI> getJwsArgsfromJaba(List jabargs)
   {
+    return getJwsArgsfromJaba(jabargs, true);
+  }
+
+  public static List<ArgumentI> getJwsArgsfromJaba(List jabargs,
+          boolean sortByOpt)
+  {
     List<ArgumentI> rgs = new ArrayList<ArgumentI>();
+    List<String> rgnames = new ArrayList<String>();
     for (Object rg : jabargs)
     {
-      ArgumentI narg = (rg instanceof Parameter) ? new JabaParameter(
-              (Parameter) rg) : (rg instanceof Option) ? new JabaOption(
-              (Option) rg) : null;
+      ArgumentI narg = null;
+      String nargstring = null;
+      if (rg instanceof Parameter)
+      {
+        narg = new JabaParameter((Parameter) rg);
+        nargstring = narg.getName(); // just sort by name for this
+      }
+      else if (rg instanceof Option)
+      {
+        narg = new JabaOption((Option) rg);
+        nargstring = (String) ((Option) rg).getOptionNames().get(0);
+      }
       if (narg == null)
       {
         throw new Error(
@@ -152,9 +170,25 @@ public class JabaParamStore implements ParamDatastoreI
       else
       {
         rgs.add(narg);
+        rgnames.add(nargstring);
       }
     }
-    return rgs;
+    if (!sortByOpt)
+    {
+      return rgs;
+    }
+    ArgumentI[] rgssort = rgs.toArray(new ArgumentI[rgs.size()]);
+    String[] rgssorton = rgnames.toArray(new String[rgs.size()]);
+    jalview.util.QuickSort.sort(rgssorton, rgssort);
+    ArgumentI tmp1;
+    int i=0;
+    while (rgssort.length-i>i)
+    {
+      tmp1=rgssort[rgssort.length-i-1];
+      rgssort[rgssort.length-i-1] = rgssort[i];
+      rgssort[i++]=tmp1;
+    }
+    return Arrays.asList(rgssort);
   }
 
   public static List getJabafromJwsArgs(List<ArgumentI> jwsargs)
index 73d5654..fe61ff3 100644 (file)
@@ -22,6 +22,7 @@ package jalview.ws.jws2;
 
 import jalview.bin.Cache;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.jws2.jabaws2.Jws2InstanceFactory;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -75,7 +76,7 @@ public class JabaWsServerQuery implements Runnable
   { Services.ClustalWS, Services.MuscleWS, Services.MafftWS,
       Services.ProbconsWS, Services.TcoffeeWS, Services.AAConWS,
       Services.DisemblWS, Services.GlobPlotWS, Services.IUPredWS,
-      Services.JronnWS };
+      Services.JronnWS, Services.RNAalifoldWS };
 
   /*
    * (non-Javadoc)
@@ -115,7 +116,14 @@ public class JabaWsServerQuery implements Runnable
 
             jabasws2 = true;
             srv_set = registry.getSupportedServices();
+            
+            // dan test
+            System.out.println("registry.getSupportedServices: " + srv_set.toString());
+            
             svccategories = registry.getServiceCategories();
+            
+            // dan test
+//            System.out.println("registry.getServiceCategories: " + svccategories.toString());
 
           }
         } catch (Exception ex)
@@ -170,12 +178,12 @@ public class JabaWsServerQuery implements Runnable
 
                 String description = registry.getServiceDescription(srv);
 
-                svc = new Jws2Instance(jwsservers, srv.toString(),
+                svc = Jws2InstanceFactory.newJws2Instance(jwsservers, srv.toString(),
                         cat.name, description, service);
               }
               if (svc == null)
               {
-                svc = new Jws2Instance(jwsservers, srv.toString(),
+                svc = Jws2InstanceFactory.newJws2Instance(jwsservers, srv.toString(),
                         cat.name, "JABAWS 1 Alignment Service", service);
               }
               jws2Discoverer.addService(jwsservers, svc);
index 55d32f5..d500406 100644 (file)
  */
 package jalview.ws.jws2;
 
-import jalview.analysis.AlignSeq;
-import jalview.analysis.SeqsetUtils;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
-import jalview.gui.IProgressIndicator;
-import jalview.workers.AlignCalcWorker;
-import jalview.ws.jws2.dm.JabaWsParamSet;
+import jalview.ws.jws2.dm.AAConSettings;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.WsParamSetI;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
-import compbio.data.msa.SequenceAnnotation;
-import compbio.data.sequence.FastaSequence;
-import compbio.data.sequence.Score;
-import compbio.data.sequence.ScoreManager;
 import compbio.metadata.Argument;
-import compbio.metadata.ChunkHolder;
-import compbio.metadata.JobStatus;
-import compbio.metadata.JobSubmissionException;
-import compbio.metadata.Option;
-import compbio.metadata.ResultNotAvailableException;
-import compbio.metadata.WrongParameterException;
 
-public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
+public abstract class JabawsAlignCalcWorker extends JabawsCalcWorker
 {
-  Jws2Instance service;
-
-  @SuppressWarnings("unchecked")
-  protected SequenceAnnotation aaservice;
-
-  protected ScoreManager scoremanager;
-
-  protected WsParamSetI preset;
-
-  protected List<Argument> arguments;
 
   public JabawsAlignCalcWorker(AlignViewportI alignViewport,
           AlignmentViewPanel alignPanel)
   {
     super(alignViewport, alignPanel);
   }
-
-  IProgressIndicator guiProgress;
-
+  
+  
+  
+  
   public JabawsAlignCalcWorker(Jws2Instance service, AlignFrame alignFrame,
           WsParamSetI preset, List<Argument> paramset)
   {
-    this(alignFrame.getCurrentView(), alignFrame.alignPanel);
-    this.guiProgress = alignFrame;
-    this.preset = preset;
-    this.arguments = paramset;
-    this.service = service;
-    aaservice = (SequenceAnnotation) service.service;
-
-  }
-
-  public WsParamSetI getPreset()
-  {
-    return preset;
-  }
-
-  public List<Argument> getArguments()
-  {
-    return arguments;
-  }
-
-  /**
-   * reconfigure and restart the AAConClient. This method will spawn a new
-   * thread that will wait until any current jobs are finished, modify the
-   * parameters and restart the conservation calculation with the new values.
-   * 
-   * @param newpreset
-   * @param newarguments
-   */
-  public void updateParameters(final WsParamSetI newpreset,
-          final List<Argument> newarguments)
-  {
-    preset = newpreset;
-    arguments = newarguments;
-    calcMan.startWorker(this);
-  }
-
-  public List<Option> getJabaArguments()
-  {
-    List<Option> newargs = new ArrayList<Option>();
-    if (preset != null && preset instanceof JabaWsParamSet)
-    {
-      newargs.addAll(((JabaWsParamSet) preset).getjabaArguments());
-    }
-    if (arguments != null && arguments.size() > 0)
-    {
-      for (Argument rg : arguments)
-      {
-        if (Option.class.isAssignableFrom(rg.getClass()))
-        {
-          newargs.add((Option) rg);
-        }
-      }
-    }
-    return newargs;
-  }
-
-  @Override
-  public void run()
-  {
-    if (aaservice == null)
-    {
-      return;
-    }
-    long progressId = -1;
-
-    int serverErrorsLeft = 3;
-
-    String rslt = "JOB NOT DEFINED";
-    StringBuffer msg = new StringBuffer();
-    try
-    {
-      if (checkDone())
-      {
-        return;
-      }
-      List<compbio.data.sequence.FastaSequence> seqs = getInputSequences(alignViewport
-              .getAlignment());
-
-      if (seqs == null)
-      {
-        calcMan.workerComplete(this);
-        return;
-      }
-
-      AlignmentAnnotation[] aa = alignViewport.getAlignment()
-              .getAlignmentAnnotation();
-      if (guiProgress != null)
-      {
-        guiProgress.setProgressBar("JABA " + getServiceActionText(),
-                progressId = System.currentTimeMillis());
-      }
-      if (preset == null && arguments == null)
-      {
-        rslt = aaservice.analize(seqs);
-      }
-      else
-      {
-        try
-        {
-          rslt = aaservice.customAnalize(seqs, getJabaArguments());
-        } catch (WrongParameterException x)
-        {
-          throw new JobSubmissionException(
-                  "Invalid paremeter set. Check Jalview implementation.", x);
-
-        }
-      }
-      boolean finished = false;
-      long rpos = 0;
-      do
-      {
-        JobStatus status = aaservice.getJobStatus(rslt);
-        if (status.equals(JobStatus.FINISHED))
-        {
-          finished = true;
-        }
-        if (calcMan.isPending(this) && this instanceof AAConClient)
-        {
-          finished = true;
-          // cancel this job and yield to the new job
-          try
-          {
-            if (aaservice.cancelJob(rslt))
-            {
-              System.err.println("Cancelled AACon job: " + rslt);
-            }
-            else
-            {
-              System.err.println("FAILED TO CANCELL AACon job: " + rslt);
-            }
-
-          } catch (Exception x)
-          {
-
-          }
-
-          return;
-        }
-        long cpos;
-        ChunkHolder stats = null;
-        do
-        {
-          cpos = rpos;
-          boolean retry = false;
-          do
-          {
-            try
-            {
-              stats = aaservice.pullExecStatistics(rslt, rpos);
-            } catch (Exception x)
-            {
-
-              if (x.getMessage().contains(
-                      "Position in a file could not be negative!"))
-              {
-                // squash index out of bounds exception- seems to happen for
-                // disorder predictors which don't (apparently) produce any
-                // progress information and JABA server throws an exception
-                // because progress length is -1.
-                stats = null;
-              }
-              else
-              {
-                if (--serverErrorsLeft > 0)
-                {
-                  retry = true;
-                  try
-                  {
-                    Thread.sleep(200);
-                  } catch (InterruptedException q)
-                  {
-                  }
-                  ;
-                }
-                else
-                {
-                  throw x;
-                }
-              }
-            }
-          } while (retry);
-          if (stats != null)
-          {
-            System.out.print(stats.getChunk());
-            msg.append(stats);
-            rpos = stats.getNextPosition();
-          }
-        } while (stats != null && rpos > cpos);
-
-        if (!finished && status.equals(JobStatus.FAILED))
-        {
-          try
-          {
-            Thread.sleep(200);
-          } catch (InterruptedException x)
-          {
-          }
-          ;
-        }
-      } while (!finished);
-      if (serverErrorsLeft > 0)
-      {
-        try
-        {
-          Thread.sleep(200);
-        } catch (InterruptedException x)
-        {
-        }
-        ;
-        scoremanager = aaservice.getAnnotation(rslt);
-        if (scoremanager != null)
-        {
-          jalview.bin.Cache.log
-                  .debug("Updating result annotation from Job " + rslt
-                          + " at " + service.getUri());
-          updateResultAnnotation(true);
-          ap.adjustAnnotationHeight();
-        }
-      }
-    }
-
-    catch (JobSubmissionException x)
-    {
-
-      System.err.println("submission error with " + getServiceActionText()
-              + " :");
-      x.printStackTrace();
-      calcMan.workerCannotRun(this);
-    } catch (ResultNotAvailableException x)
-    {
-      System.err.println("collection error:\nJob ID: " + rslt);
-      x.printStackTrace();
-      calcMan.workerCannotRun(this);
-
-    } catch (OutOfMemoryError error)
-    {
-      calcMan.workerCannotRun(this);
-
-      // consensus = null;
-      // hconsensus = null;
-      ap.raiseOOMWarning(getServiceActionText(), error);
-    } catch (Exception x)
-    {
-      calcMan.workerCannotRun(this);
-
-      // consensus = null;
-      // hconsensus = null;
-      System.err
-              .println("Blacklisting worker due to unexpected exception:");
-      x.printStackTrace();
-    } finally
-    {
-
-      calcMan.workerComplete(this);
-      if (ap != null)
-      {
-        calcMan.workerComplete(this);
-        if (guiProgress != null && progressId != -1)
-        {
-          guiProgress.setProgressBar("", progressId);
-        }
-        ap.paintAlignment(true);
-      }
-      if (msg.length() > 0)
-      {
-        // TODO: stash message somewhere in annotation or alignment view.
-        // code below shows result in a text box popup
-        /*
-         * jalview.gui.CutAndPasteTransfer cap = new
-         * jalview.gui.CutAndPasteTransfer(); cap.setText(msg.toString());
-         * jalview.gui.Desktop.addInternalFrame(cap,
-         * "Job Status for "+getServiceActionText(), 600, 400);
-         */
-      }
-    }
-
-  }
-
-  @Override
-  public void updateAnnotation()
-  {
-    updateResultAnnotation(false);
+    super(service, alignFrame, preset, paramset);
   }
 
-  public abstract void updateResultAnnotation(boolean immediate);
-
-  public abstract String getServiceActionText();
-
-  boolean submitGaps = true;
-
-  boolean alignedSeqs = true;
-
-  boolean nucleotidesAllowed = false;
-
-  boolean proteinAllowed = false;
-
   /**
-   * record sequences for mapping result back to afterwards
+   * Recover any existing parameters for this service 
    */
-  protected boolean bySequence = false;
-
-  Map<String, SequenceI> seqNames;
-
-  boolean[] gapMap;
-
-  int realw;
-
-  public List<FastaSequence> getInputSequences(AlignmentI alignment)
+  protected void initViewportParams()
   {
-    if (alignment == null || alignment.getWidth() <= 0
-            || alignment.getSequences() == null
-            // || (alignedSeqs && !alignment.isAligned() && !submitGaps)
-            || alignment.isNucleotide() ? !nucleotidesAllowed
-            : !proteinAllowed)
-    {
-      return null;
-    }
-    List<compbio.data.sequence.FastaSequence> seqs = new ArrayList<compbio.data.sequence.FastaSequence>();
-
-    int minlen = 10;
-    int ln = -1;
-    if (bySequence)
-    {
-      seqNames = new HashMap<String, SequenceI>();
-    }
-    gapMap = new boolean[0];
-    for (SequenceI sq : ((List<SequenceI>) alignment.getSequences()))
-    {
-      if (sq.getEnd() - sq.getStart() > minlen - 1)
-      {
-        String newname = SeqsetUtils.unique_name(seqs.size() + 1);
-        // make new input sequence with or without gaps
-        if (seqNames != null)
-        {
-          seqNames.put(newname, sq);
-        }
-        FastaSequence seq;
-        if (submitGaps)
-        {
-          seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
-                  sq.getSequenceAsString()));
-          if (gapMap == null || gapMap.length < seq.getSequence().length())
-          {
-            boolean[] tg = gapMap;
-            gapMap = new boolean[seq.getLength()];
-            System.arraycopy(tg, 0, gapMap, 0, tg.length);
-            for (int p = tg.length; p < gapMap.length; p++)
-            {
-              gapMap[p] = false; // init as a gap
-            }
-          }
-          for (int apos : sq.gapMap())
-          {
-            gapMap[apos] = true; // aligned.
-          }
-        }
-        else
-        {
-          seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
-                  AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
-                          sq.getSequenceAsString())));
-        }
-        if (seq.getSequence().length() > ln)
-        {
-          ln = seq.getSequence().length();
-        }
-      }
-    }
-    if (alignedSeqs && submitGaps)
-    {
-      realw = 0;
-      for (int i = 0; i < gapMap.length; i++)
-      {
-        if (gapMap[i])
-        {
-          realw++;
-        }
-      }
-      // try real hard to return something submittable
-      // TODO: some of AAcon measures need a minimum of two or three amino
-      // acids at each position, and AAcon doesn't gracefully degrade.
-      for (int p = 0; p < seqs.size(); p++)
-      {
-        FastaSequence sq = seqs.get(p);
-        int l = sq.getSequence().length();
-        // strip gapped columns
-        char[] padded = new char[realw], orig = sq.getSequence()
-                .toCharArray();
-        for (int i = 0, pp = 0; i < realw; pp++)
-        {
-          if (gapMap[pp])
-          {
-            if (orig.length > pp)
-            {
-              padded[i++] = orig[pp];
-            }
-            else
-            {
-              padded[i++] = '-';
-            }
-          }
-        }
-        seqs.set(p, new compbio.data.sequence.FastaSequence(sq.getId(),
-                new String(padded)));
-      }
-    }
-    return seqs;
+    ((jalview.gui.AlignViewport) alignViewport).setCalcIdSettingsFor(
+            getCalcId(),
+            new AAConSettings(true, service, this.preset,
+                    (arguments != null) ? JabaParamStore
+                            .getJwsArgsfromJaba(arguments) : null), true);
   }
 
   /**
-   * notify manager that we have started, and wait for a free calculation slot
    * 
-   * @return true if slot is obtained and work still valid, false if another
-   *         thread has done our work for us.
+   * @return
    */
-  boolean checkDone()
-  {
-    calcMan.notifyStart(this);
-    ap.paintAlignment(false);
-    while (!calcMan.notifyWorking(this))
-    {
-      if (calcMan.isWorking(this))
-      {
-        return true;
-      }
-      try
-      {
-        if (ap != null)
-        {
-          ap.paintAlignment(false);
-        }
+  public abstract String getCalcId();
 
-        Thread.sleep(200);
-      } catch (Exception ex)
-      {
-        ex.printStackTrace();
-      }
-    }
-    if (alignViewport.isClosed())
-    {
-      abortAndDestroy();
-      return true;
-    }
-    return false;
-  }
 
-  protected void createAnnotationRowsForScores(
-          List<AlignmentAnnotation> ourAnnot, String calcId, int alWidth,
-          Score scr)
-  {
-    // simple annotation row
-    AlignmentAnnotation annotation = alignViewport.getAlignment()
-            .findOrCreateAnnotation(scr.getMethod(), calcId, true, null,
-                    null);
-    if (alWidth == gapMap.length) // scr.getScores().size())
-    {
-      constructAnnotationFromScore(annotation, 0, alWidth, scr);
-      ourAnnot.add(annotation);
-    }
-  }
 
-  protected AlignmentAnnotation createAnnotationRowsForScores(
-          List<AlignmentAnnotation> ourAnnot, String typeName,
-          String calcId, SequenceI dseq, int base, Score scr)
-  {
-    System.out.println("Creating annotation on dseq:" + dseq.getStart()
-            + " base is " + base + " and length=" + dseq.getLength()
-            + " == " + scr.getScores().size());
-    // AlignmentAnnotation annotation = new AlignmentAnnotation(
-    // scr.getMethod(), typeName, new Annotation[]
-    // {}, 0, -1, AlignmentAnnotation.LINE_GRAPH);
-    // annotation.setCalcId(calcId);
-    AlignmentAnnotation annotation = alignViewport.getAlignment()
-            .findOrCreateAnnotation(typeName, calcId, false, dseq, null);
-    constructAnnotationFromScore(annotation, 0, dseq.getLength(), scr);
-    annotation.createSequenceMapping(dseq, base, false);
-    annotation.adjustForAlignment();
-    dseq.addAlignmentAnnotation(annotation);
-    ourAnnot.add(annotation);
-    return annotation;
-  }
-
-  private void constructAnnotationFromScore(AlignmentAnnotation annotation,
-          int base, int alWidth, Score scr)
-  {
-    Annotation[] elm = new Annotation[alWidth];
-    Iterator<Float> vals = scr.getScores().iterator();
-    float m = 0f, x = 0f;
-    for (int i = 0; vals.hasNext(); i++)
-    {
-      float val = vals.next().floatValue();
-      if (i == 0)
-      {
-        m = val;
-        x = val;
-      }
-      else
-      {
-        if (m > val)
-        {
-          m = val;
-        }
-        ;
-        if (x < val)
-        {
-          x = val;
-        }
-      }
-      // if we're at a gapped column then skip to next ungapped position
-      if (gapMap != null && gapMap.length > 0)
-      {
-        while (!gapMap[i])
-        {
-          elm[i++] = new Annotation("", "", ' ', Float.NaN);
-        }
-      }
-      elm[i] = new Annotation("", "" + val, ' ', val);
-    }
 
-    annotation.annotations = elm;
-    annotation.belowAlignment = true;
-    if (x < 0)
-    {
-      x = 0;
-    }
-    x += (x - m) * 0.1;
-    annotation.graphMax = x;
-    annotation.graphMin = m;
-    annotation.validateRangeAndDisplay();
-  }
-
-  protected void updateOurAnnots(List<AlignmentAnnotation> ourAnnot)
+  @Override
+  public void updateParameters(WsParamSetI newpreset, java.util.List<Argument> newarguments)
   {
-    List<AlignmentAnnotation> our = ourAnnots;
-    ourAnnots = ourAnnot;
-    AlignmentI alignment = alignViewport.getAlignment();
-    if (our != null)
-    {
-      if (our.size() > 0)
-      {
-        for (AlignmentAnnotation an : our)
-        {
-          if (!ourAnnots.contains(an))
-          {
-            // remove the old annotation
-            alignment.deleteAnnotation(an);
-          }
-        }
-      }
-      our.clear();
-
-      ap.adjustAnnotationHeight();
-    }
+    super.updateParameters(newpreset, newarguments);
+    initViewportParams();
   }
 }
diff --git a/src/jalview/ws/jws2/JabawsCalcWorker.java b/src/jalview/ws/jws2/JabawsCalcWorker.java
new file mode 100644 (file)
index 0000000..8515dbc
--- /dev/null
@@ -0,0 +1,609 @@
+package jalview.ws.jws2;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import compbio.data.msa.SequenceAnnotation;
+import compbio.data.sequence.FastaSequence;
+import compbio.data.sequence.Score;
+import compbio.data.sequence.ScoreManager;
+import compbio.metadata.Argument;
+import compbio.metadata.ChunkHolder;
+import compbio.metadata.JobStatus;
+import compbio.metadata.JobSubmissionException;
+import compbio.metadata.Option;
+import compbio.metadata.ResultNotAvailableException;
+import compbio.metadata.WrongParameterException;
+import jalview.analysis.AlignSeq;
+import jalview.analysis.SeqsetUtils;
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AnnotatedCollectionI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+import jalview.gui.IProgressIndicator;
+import jalview.workers.AlignCalcWorker;
+import jalview.ws.jws2.dm.JabaWsParamSet;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.WsParamSetI;
+
+public abstract class JabawsCalcWorker extends AlignCalcWorker
+{
+
+  protected Jws2Instance service;
+  @SuppressWarnings("unchecked")
+  protected SequenceAnnotation aaservice;
+  protected ScoreManager scoremanager;
+  protected WsParamSetI preset;
+  protected List<Argument> arguments;
+  protected IProgressIndicator guiProgress;
+
+  public JabawsCalcWorker(AlignViewportI alignViewport,
+          AlignmentViewPanel alignPanel)
+  {
+    super(alignViewport, alignPanel);
+  }
+
+  public JabawsCalcWorker(Jws2Instance service, AlignFrame alignFrame,
+          WsParamSetI preset, List<Argument> paramset)
+  {
+    this(alignFrame.getCurrentView(), alignFrame.alignPanel);
+    this.guiProgress = alignFrame;
+    this.preset = preset;
+    this.arguments = paramset;
+    this.service = service;
+    aaservice = (SequenceAnnotation) service.service;
+
+  }
+
+  public WsParamSetI getPreset()
+  {
+    return preset;
+  }
+
+  public List<Argument> getArguments()
+  {
+    return arguments;
+  }
+
+  /**
+   * reconfigure and restart the AAConClient. This method will spawn a new
+   * thread that will wait until any current jobs are finished, modify the
+   * parameters and restart the conservation calculation with the new values.
+   * 
+   * @param newpreset
+   * @param newarguments
+   */
+  public void updateParameters(final WsParamSetI newpreset, final List<Argument> newarguments)
+  {
+    preset = newpreset;
+    arguments = newarguments;
+    calcMan.startWorker(this);
+  }
+
+  public List<Option> getJabaArguments()
+  {
+    List<Option> newargs = new ArrayList<Option>();
+    if (preset != null && preset instanceof JabaWsParamSet)
+    {
+      newargs.addAll(((JabaWsParamSet) preset).getjabaArguments());
+    }
+    if (arguments != null && arguments.size() > 0)
+    {
+      for (Argument rg : arguments)
+      {
+        if (Option.class.isAssignableFrom(rg.getClass()))
+        {
+          newargs.add((Option) rg);
+        }
+      }
+    }
+    return newargs;
+  }
+
+  @Override
+  public void run()
+  {
+    if (aaservice == null)
+    {
+      return;
+    }
+    long progressId = -1;
+  
+    int serverErrorsLeft = 3;
+  
+    String rslt = "JOB NOT DEFINED";
+    StringBuffer msg = new StringBuffer();
+    try
+    {
+      if (checkDone())
+      {
+        return;
+      }
+      List<compbio.data.sequence.FastaSequence> seqs = getInputSequences(alignViewport
+              .getAlignment(), bySequence ? alignViewport.getSelectionGroup() : null);
+  
+      if (seqs == null)
+      {
+        calcMan.workerComplete(this);
+        return;
+      }
+  
+      AlignmentAnnotation[] aa = alignViewport.getAlignment()
+              .getAlignmentAnnotation();
+      if (guiProgress != null)
+      {
+        guiProgress.setProgressBar("JABA " + getServiceActionText(),
+                progressId = System.currentTimeMillis());
+      }
+      if (preset == null && arguments == null)
+      {
+        rslt = aaservice.analize(seqs);
+      }
+      else
+      {
+        try
+        {
+          rslt = aaservice.customAnalize(seqs, getJabaArguments());
+        } catch (WrongParameterException x)
+        {
+          throw new JobSubmissionException(
+                  "Invalid parameter set. Check Jalview implementation.", x);
+  
+        }
+      }
+      boolean finished = false;
+      long rpos = 0;
+      do
+      {
+        JobStatus status = aaservice.getJobStatus(rslt);
+        if (status.equals(JobStatus.FINISHED))
+        {
+          finished = true;
+        }
+        if (calcMan.isPending(this) && this instanceof AAConClient)
+        {
+          finished = true;
+          // cancel this job and yield to the new job
+          try
+          {
+            if (aaservice.cancelJob(rslt))
+            {
+              System.err.println("Cancelled AACon job: " + rslt);
+            }
+            else
+            {
+              System.err.println("FAILED TO CANCEL AACon job: " + rslt);
+            }
+  
+          } catch (Exception x)
+          {
+  
+          }
+  
+          return;
+        }
+        long cpos;
+        ChunkHolder stats = null;
+        do
+        {
+          cpos = rpos;
+          boolean retry = false;
+          do
+          {
+            try
+            {
+              stats = aaservice.pullExecStatistics(rslt, rpos);
+            } catch (Exception x)
+            {
+  
+              if (x.getMessage().contains(
+                      "Position in a file could not be negative!"))
+              {
+                // squash index out of bounds exception- seems to happen for
+                // disorder predictors which don't (apparently) produce any
+                // progress information and JABA server throws an exception
+                // because progress length is -1.
+                stats = null;
+              }
+              else
+              {
+                if (--serverErrorsLeft > 0)
+                {
+                  retry = true;
+                  try
+                  {
+                    Thread.sleep(200);
+                  } catch (InterruptedException q)
+                  {
+                  }
+                  ;
+                }
+                else
+                {
+                  throw x;
+                }
+              }
+            }
+          } while (retry);
+          if (stats != null)
+          {
+            System.out.print(stats.getChunk());
+            msg.append(stats);
+            rpos = stats.getNextPosition();
+          }
+        } while (stats != null && rpos > cpos);
+  
+        if (!finished && status.equals(JobStatus.FAILED))
+        {
+          try
+          {
+            Thread.sleep(200);
+          } catch (InterruptedException x)
+          {
+          }
+          ;
+        }
+      } while (!finished);
+      if (serverErrorsLeft > 0)
+      {
+        try
+        {
+          Thread.sleep(200);
+        } catch (InterruptedException x)
+        {
+        }
+        ;
+        scoremanager = aaservice.getAnnotation(rslt);
+        if (scoremanager != null)
+        {
+          jalview.bin.Cache.log
+                  .debug("Updating result annotation from Job " + rslt
+                          + " at " + service.getUri());
+          updateResultAnnotation(true);
+          ap.adjustAnnotationHeight();
+        }
+      }
+    }
+  
+    catch (JobSubmissionException x)
+    {
+  
+      System.err.println("submission error with " + getServiceActionText()
+              + " :");
+      x.printStackTrace();
+      calcMan.workerCannotRun(this);
+    } catch (ResultNotAvailableException x)
+    {
+      System.err.println("collection error:\nJob ID: " + rslt);
+      x.printStackTrace();
+      calcMan.workerCannotRun(this);
+  
+    } catch (OutOfMemoryError error)
+    {
+      calcMan.workerCannotRun(this);
+  
+      // consensus = null;
+      // hconsensus = null;
+      ap.raiseOOMWarning(getServiceActionText(), error);
+    } catch (Exception x)
+    {
+      calcMan.workerCannotRun(this);
+  
+      // consensus = null;
+      // hconsensus = null;
+      System.err
+              .println("Blacklisting worker due to unexpected exception:");
+      x.printStackTrace();
+    } finally
+    {
+  
+      calcMan.workerComplete(this);
+      if (ap != null)
+      {
+        calcMan.workerComplete(this);
+        if (guiProgress != null && progressId != -1)
+        {
+          guiProgress.setProgressBar("", progressId);
+        }
+        ap.paintAlignment(true);
+      }
+      if (msg.length() > 0)
+      {
+        // TODO: stash message somewhere in annotation or alignment view.
+        // code below shows result in a text box popup
+        /*
+         * jalview.gui.CutAndPasteTransfer cap = new
+         * jalview.gui.CutAndPasteTransfer(); cap.setText(msg.toString());
+         * jalview.gui.Desktop.addInternalFrame(cap,
+         * "Job Status for "+getServiceActionText(), 600, 400);
+         */
+      }
+    }
+  
+  }
+
+  @Override
+  public void updateAnnotation()
+  {
+    updateResultAnnotation(false);
+  }
+
+  public abstract void updateResultAnnotation(boolean immediate);
+
+  public abstract String getServiceActionText();
+
+  protected boolean submitGaps = true;
+  protected boolean alignedSeqs = true;
+  protected boolean nucleotidesAllowed = false;
+  protected boolean proteinAllowed = false;
+  /**
+   * record sequences for mapping result back to afterwards
+   */
+  protected boolean bySequence = false;
+  protected Map<String, SequenceI> seqNames;
+  protected boolean[] gapMap;
+  int realw;
+  int start,end;
+
+  public List<FastaSequence> getInputSequences(AlignmentI alignment, AnnotatedCollectionI inputSeqs)
+  {
+    if (alignment == null || alignment.getWidth() <= 0
+            || alignment.getSequences() == null
+            || alignment.isNucleotide() ? !nucleotidesAllowed
+            : !proteinAllowed)
+    {
+      return null;
+    }
+    if (inputSeqs==null || inputSeqs.getWidth()<=0 || inputSeqs.getSequences()==null || inputSeqs.getSequences().size()<1)
+    {
+      inputSeqs = alignment;
+    }
+    
+    List<compbio.data.sequence.FastaSequence> seqs = new ArrayList<compbio.data.sequence.FastaSequence>();
+
+    int minlen = 10;
+    int ln = -1;
+    if (bySequence)
+    {
+      seqNames = new HashMap<String, SequenceI>();
+    }
+    gapMap = new boolean[0];
+    start=inputSeqs.getStartRes();
+    end=inputSeqs.getEndRes();
+    
+
+    for (SequenceI sq : ((List<SequenceI>) alignment.getSequences()))
+    {
+      if (bySequence ? sq.findPosition(end+1) -sq.findPosition(start+1) > minlen - 1 : sq.getEnd() - sq.getStart() > minlen - 1)
+      {
+        String newname = SeqsetUtils.unique_name(seqs.size() + 1);
+        // make new input sequence with or without gaps
+        if (seqNames != null)
+        {
+          seqNames.put(newname, sq);
+        }
+        FastaSequence seq;
+        if (submitGaps)
+        {
+          seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
+                  sq.getSequenceAsString()));
+          if (gapMap == null || gapMap.length < seq.getSequence().length())
+          {
+            boolean[] tg = gapMap;
+            gapMap = new boolean[seq.getLength()];
+            System.arraycopy(tg, 0, gapMap, 0, tg.length);
+            for (int p = tg.length; p < gapMap.length; p++)
+            {
+              gapMap[p] = false; // init as a gap
+            }
+          }
+          for (int apos : sq.gapMap())
+          {
+            gapMap[apos] = true; // aligned.
+          }
+        }
+        else
+        {
+          seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
+                  AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
+                          sq.getSequenceAsString(start,end+1))));
+        }
+        if (seq.getSequence().length() > ln)
+        {
+          ln = seq.getSequence().length();
+        }
+      }
+    }
+    if (alignedSeqs && submitGaps)
+    {
+      realw = 0;
+      for (int i = 0; i < gapMap.length; i++)
+      {
+        if (gapMap[i])
+        {
+          realw++;
+        }
+      }
+      // try real hard to return something submittable
+      // TODO: some of AAcon measures need a minimum of two or three amino
+      // acids at each position, and AAcon doesn't gracefully degrade.
+      for (int p = 0; p < seqs.size(); p++)
+      {
+        FastaSequence sq = seqs.get(p);
+        int l = sq.getSequence().length();
+        // strip gapped columns
+        char[] padded = new char[realw], orig = sq.getSequence()
+                .toCharArray();
+        for (int i = 0, pp = 0; i < realw; pp++)
+        {
+          if (gapMap[pp])
+          {
+            if (orig.length > pp)
+            {
+              padded[i++] = orig[pp];
+            }
+            else
+            {
+              padded[i++] = '-';
+            }
+          }
+        }
+        seqs.set(p, new compbio.data.sequence.FastaSequence(sq.getId(),
+                new String(padded)));
+      }
+    }
+    return seqs;
+  }
+
+  /**
+   * notify manager that we have started, and wait for a free calculation slot
+   * 
+   * @return true if slot is obtained and work still valid, false if another
+   *         thread has done our work for us.
+   */
+  boolean checkDone()
+  {
+    calcMan.notifyStart(this);
+    ap.paintAlignment(false);
+    while (!calcMan.notifyWorking(this))
+    {
+      if (calcMan.isWorking(this))
+      {
+        return true;
+      }
+      try
+      {
+        if (ap != null)
+        {
+          ap.paintAlignment(false);
+        }
+  
+        Thread.sleep(200);
+      } catch (Exception ex)
+      {
+        ex.printStackTrace();
+      }
+    }
+    if (alignViewport.isClosed())
+    {
+      abortAndDestroy();
+      return true;
+    }
+    return false;
+  }
+
+  protected void createAnnotationRowsForScores(List<AlignmentAnnotation> ourAnnot, String calcId,
+          int alWidth, Score scr)
+  {
+    // simple annotation row
+    AlignmentAnnotation annotation = alignViewport.getAlignment()
+            .findOrCreateAnnotation(scr.getMethod(), calcId, true, null,
+                    null);
+    if (alWidth == gapMap.length) // scr.getScores().size())
+    {
+      constructAnnotationFromScore(annotation, 0, alWidth, scr);
+      ourAnnot.add(annotation);
+    }
+  }
+
+  protected AlignmentAnnotation createAnnotationRowsForScores(List<AlignmentAnnotation> ourAnnot, String typeName,
+          String calcId, SequenceI dseq, int base, Score scr)
+  {
+    System.out.println("Creating annotation on dseq:" + dseq.getStart()
+            + " base is " + base + " and length=" + dseq.getLength()
+            + " == " + scr.getScores().size());
+    // AlignmentAnnotation annotation = new AlignmentAnnotation(
+    // scr.getMethod(), typeName, new Annotation[]
+    // {}, 0, -1, AlignmentAnnotation.LINE_GRAPH);
+    // annotation.setCalcId(calcId);
+    AlignmentAnnotation annotation = alignViewport.getAlignment()
+            .findOrCreateAnnotation(typeName, calcId, false, dseq, null);
+    constructAnnotationFromScore(annotation, 0, dseq.getLength(), scr);
+    annotation.createSequenceMapping(dseq, base, false);
+    annotation.adjustForAlignment();
+    dseq.addAlignmentAnnotation(annotation);
+    ourAnnot.add(annotation);
+    return annotation;
+  }
+
+  private void constructAnnotationFromScore(AlignmentAnnotation annotation, int base,
+          int alWidth, Score scr)
+  {
+    Annotation[] elm = new Annotation[alWidth];
+    Iterator<Float> vals = scr.getScores().iterator();
+    float m = 0f, x = 0f;
+    for (int i = 0; vals.hasNext(); i++)
+    {
+      float val = vals.next().floatValue();
+      if (i == 0)
+      {
+        m = val;
+        x = val;
+      }
+      else
+      {
+        if (m > val)
+        {
+          m = val;
+        }
+        ;
+        if (x < val)
+        {
+          x = val;
+        }
+      }
+      // if we're at a gapped column then skip to next ungapped position
+      if (gapMap != null && gapMap.length > 0)
+      {
+        while (!gapMap[i])
+        {
+          elm[i++] = new Annotation("", "", ' ', Float.NaN);
+        }
+      }
+      elm[i] = new Annotation("", "" + val, ' ', val);
+    }
+  
+    annotation.annotations = elm;
+    annotation.belowAlignment = true;
+    if (x < 0)
+    {
+      x = 0;
+    }
+    x += (x - m) * 0.1;
+    annotation.graphMax = x;
+    annotation.graphMin = m;
+    annotation.validateRangeAndDisplay();
+  }
+
+  protected void updateOurAnnots(List<AlignmentAnnotation> ourAnnot)
+  {
+    List<AlignmentAnnotation> our = ourAnnots;
+    ourAnnots = ourAnnot;
+    AlignmentI alignment = alignViewport.getAlignment();
+    if (our != null)
+    {
+      if (our.size() > 0)
+      {
+        for (AlignmentAnnotation an : our)
+        {
+          if (!ourAnnots.contains(an))
+          {
+            // remove the old annotation
+            alignment.deleteAnnotation(an);
+          }
+        }
+      }
+      our.clear();
+  
+      ap.adjustAnnotationHeight();
+    }
+  }
+
+}
index 1a21fea..8f56e2f 100644 (file)
@@ -23,6 +23,7 @@ import jalview.gui.Desktop;
 import jalview.gui.JvSwingUtils;
 import jalview.ws.WSMenuEntryProviderI;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.ParamDatastoreI;
 
 import java.awt.Color;
 import java.awt.event.ActionEvent;
@@ -37,6 +38,7 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -104,6 +106,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
   public void run()
   {
+
     if (running && oldthread != null && oldthread.isAlive())
     {
       if (!aborted)
@@ -125,6 +128,15 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       Cache.log.debug("Old discovery thread has finished.");
     }
     running = true;
+    
+    // first set up exclusion list if needed
+    final Set<String> ignoredServices = new HashSet<String>();
+    for (String ignored:jalview.bin.Cache.getDefault("IGNORED_JABAWS_SERVICETYPES", Services.JpredWS.toString()).split("\\|"))
+    {
+      ignoredServices.add(ignored);
+    }
+
+    
     changeSupport.firePropertyChange("services", services, new Vector());
     oldthread = Thread.currentThread();
     try
@@ -168,7 +180,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         // for all possible services
         for (Services sv : squery.JABAWS2SERVERS)
         {
-          svctypes.add(sv.toString());
+          if (!ignoredServices.contains(sv.toString()))
+          {
+            svctypes.add(sv.toString());
+          }
         }
 
       }
@@ -188,7 +203,9 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       ;
       for (JabaWsServerQuery squery : qrys)
       {
-        finished = finished && !squery.isRunning();
+        if (squery.isRunning()){
+          finished=false;
+        }
       }
       if (aborted)
       {
@@ -221,7 +238,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         services = new Vector<Jws2Instance>();
         for (Jws2Instance svc : svcs)
         {
-          services.add(svc);
+          if (!ignoredServices.contains(svc.serviceType))
+          {
+            services.add(svc);
+          }
         }
       }
     }
@@ -250,7 +270,11 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
     services.add(service);
     // retrieve the presets and parameter set and cache now
-    service.getParamStore().getPresets();
+    ParamDatastoreI pds = service.getParamStore();
+    if (pds != null)
+    {
+      pds.getPresets();
+    }
     service.hasParameters();
     if (validServiceUrls == null)
     {
index 16959ff..e6b9f53 100644 (file)
@@ -17,6 +17,7 @@
  */
 package jalview.ws.jws2;
 
+import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -126,6 +127,7 @@ public class ParameterUtils
   {
     copy.setName(option.getName());
     copy.setDescription(option.getDescription());
+    copy.setBasicURL(option.getBasicURL());
     copy.setFurtherDetails(option.getFurtherDetails());
     copy.setRequired(option.isRequired());
     List<String> names = option.getOptionNames();
diff --git a/src/jalview/ws/jws2/RNAalifoldClient.java b/src/jalview/ws/jws2/RNAalifoldClient.java
new file mode 100644 (file)
index 0000000..ec40552
--- /dev/null
@@ -0,0 +1,371 @@
+package jalview.ws.jws2;
+
+import jalview.api.AlignCalcWorkerI;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.gui.AlignFrame;
+import jalview.ws.jws2.dm.AAConSettings;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.WsParamSetI;
+import jalview.ws.uimodel.AlignAnalysisUIText;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
+
+import compbio.data.sequence.RNAStructReader.AlifoldResult;
+import compbio.data.sequence.RNAStructScoreManager;
+import compbio.data.sequence.Range;
+import compbio.data.sequence.Score;
+import compbio.metadata.Argument;
+
+/**
+ * Client for the JABA RNA Alifold Service
+ * @author daluke - Daniel Barton
+ *
+ */
+
+public class RNAalifoldClient extends JabawsAlignCalcWorker implements
+        AlignCalcWorkerI
+{
+
+  String methodName;
+
+  AlignFrame af;
+
+  // keeps track of whether the RNAalifold result includes base contact
+  // probabilities
+  boolean bpScores;
+
+  public RNAalifoldClient(Jws2Instance sh, AlignFrame alignFrame,
+          WsParamSetI preset, List<Argument> paramset)
+  {
+    super(sh, alignFrame, preset, paramset);
+
+    //if (arguments == null)
+    //  arguments = new ArrayList<Argument>();
+
+    af = alignFrame;
+    methodName = sh.serviceType;
+    alignedSeqs=true;
+    submitGaps=true;
+    nucleotidesAllowed = true;
+    proteinAllowed = false;
+    initViewportParams();
+  }
+  
+  public String getCalcId()
+  {
+    return CALC_ID;
+  }
+  private static String CALC_ID="jalview.ws.jws2.RNAalifoldClient";
+
+  public static AlignAnalysisUIText getAlignAnalysisUITest()
+  {
+    return new AlignAnalysisUIText(
+            compbio.ws.client.Services.RNAalifoldWS.toString(),
+            jalview.ws.jws2.RNAalifoldClient.class,
+            CALC_ID,
+            true,
+            false,
+            true,
+            "RNAAliFold Prediction",
+            "When checked, RNA secondary structure predictions will be calculated for the alignment, and updated when edits are made.",
+            "Change RNAAliFold settings...",
+            "Modify settings for the RNAAliFold prediction. Use this to hide or show different results of the RNA calculation, and change RNA folding parameters");
+
+  }
+
+  @Override
+  public String getServiceActionText()
+  {
+    return "Submitting RNA alignment for Secondary Structure prediction using "
+            + "RNAalifold Service";
+  }
+
+  @Override
+  public void updateResultAnnotation(boolean immediate)
+  {
+
+    if (immediate || !calcMan.isWorking(this) && scoremanager != null)
+    {
+
+      List<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
+
+      // Unpack the ScoreManager
+      List<String> structs = ((RNAStructScoreManager) scoremanager)
+              .getStructs();
+      List<TreeSet<Score>> data = ((RNAStructScoreManager) scoremanager)
+              .getData();
+
+      // test to see if this data object contains base pair contacts
+      Score fscore = data.get(0).first();
+      this.bpScores = (fscore.getMethod()
+              .equals(AlifoldResult.contactProbabilities.toString()));
+
+      // add annotation for the consensus sequence alignment
+      createAnnotationRowforScoreHolder(ourAnnot, getCalcId(),
+              structs.get(0), null, null);
+
+      // Add annotations for the mfe Structure
+      createAnnotationRowforScoreHolder(ourAnnot, getCalcId(),
+              structs.get(1), data.get(1), null);
+
+      // decide whether to add base pair contact probability histogram
+      int count = 2;
+      if (bpScores)
+      {
+        createAnnotationRowforScoreHolder(ourAnnot, getCalcId(),
+                structs.get(2), data.get(0), data.get(2));
+        count++;
+      }
+
+      // Now loop for the rest of the Annotations (if there it isn't stochastic
+      // output
+      // only the centroid and MEA structures remain anyway)
+      for (int i = count; i < structs.size(); i++)
+      {
+        // The ensemble values should be displayed in the description of the
+        // first (or all?) Stochastic Backtrack Structures.
+        if (!data.get(i).first().getMethod()
+                .equals(AlifoldResult.ensembleValues.toString()))
+        {
+
+          createAnnotationRowforScoreHolder(ourAnnot, getCalcId(),
+                  structs.get(i), data.get(i), null);
+        }
+      }
+
+      if (ourAnnot.size() > 0)
+      {
+
+        updateOurAnnots(ourAnnot);
+        ap.adjustAnnotationHeight();
+      }
+    }
+  }
+
+  protected void createAnnotationRowforScoreHolder(
+          List<AlignmentAnnotation> ourAnnot, String calcId, String struct,
+          TreeSet<Score> data, TreeSet<Score> descriptionData)
+  {
+    /*
+     * If contactProbability information is returned from RNAalifold it is
+     * stored in the first TreeSet<Score> object corresponding to the String Id
+     * which holds the consensus alignment. The method enumeration is then
+     * updated to AlifoldResult.contactProbabilties. This line recreates the
+     * same data object as was overwritten with the contact probabilites data.
+     */
+    if (data == null)
+      data = compbio.data.sequence.RNAStructReader
+              .newEmptyScore(AlifoldResult.consensusAlignment);
+
+    if (descriptionData == null)
+      descriptionData = data;
+
+    String[] typenameAndDescription = constructTypenameAndDescription(descriptionData
+            .first());
+    String typename = typenameAndDescription[0];
+    String description = typenameAndDescription[1];
+
+    AlignmentAnnotation annotation = alignViewport.getAlignment()
+            .findOrCreateAnnotation(typename, calcId, false, null, null);
+
+    constructAnnotationFromScoreHolder(annotation, struct, data);
+
+    /*
+     * update annotation description with the free Energy, frequency in ensemble
+     * or other data where appropriate.
+     * 
+     * Doesnt deal with AlifoldResult.ensembleValues, the free energy of
+     * ensemble and frequency of mfe structure in ensemble. How to deal with
+     * these?
+     */
+    annotation.description = description;
+
+    annotation.belowAlignment = false;
+    // annotation.showAllColLabels = true;
+
+    alignViewport.getAlignment().validateAnnotation(annotation);
+    af.setMenusForViewport();
+
+    ourAnnot.add(annotation);
+  }
+
+  private AlignmentAnnotation constructAnnotationFromScoreHolder(
+          AlignmentAnnotation annotation, String struct, TreeSet<Score> data)
+  {
+    Annotation[] anns = new Annotation[struct.length()];
+
+    if (data != null
+            && data.size() > 1
+            && data.first().getMethod()
+                    .equals(AlifoldResult.contactProbabilities.toString()))
+    {
+
+      // The base pair probabilities are stored in a set in scoreholder. we want
+      // a map
+      LinkedHashMap<Range, Float> basePairs = new LinkedHashMap<Range, Float>();
+      for (Score score : data)
+      {
+        // The Score objects contain a set of size one containing the range and
+        // an ArrayList<float> of size one containing the probabilty
+        basePairs.put(score.getRanges().first(), new Float(score
+                .getScores().get(0)));
+      }
+      
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
+      {
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
+        // Return all the contacts associated with position i
+        LinkedHashMap<Range, Float> contacts = isContact(basePairs, i + 1);
+
+        String description = "";
+        float prob = 0f;
+
+        if (contacts.size() == 0)
+        {
+          description = "No Data";
+        }
+        else
+        {
+          for (Range contact : contacts.keySet())
+          {
+            float t = contacts.get(contact);
+            if (t > prob)
+              prob = t;
+            description += Integer.toString(contact.from) + "->"
+                    + Integer.toString(contact.to) + ": "
+                    + Float.toString(t) + "%  |  ";
+          }
+        }
+
+        anns[ri] = new Annotation(struct.substring(i, i + 1), description,
+                isSS(struct.charAt(i)), prob);
+      }
+    }
+    else if (data == null || data.size() == 1)
+    {
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
+      {
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
+        anns[ri] = new Annotation(struct.substring(i, i + 1), "",
+                isSS(struct.charAt(i)), Float.NaN);
+      }
+
+      annotation.graph = 0; // No graph
+    }
+
+    annotation.annotations = anns;
+
+    return annotation;
+  }
+
+  private String[] constructTypenameAndDescription(Score score)
+  {
+    String description = "";
+    String typename = "";
+    String datatype = score.getMethod();
+
+    // Look up java switch syntax and use one here
+    if (datatype.equals(AlifoldResult.mfeStructure.toString()))
+    {
+
+      description = MessageFormat.format(
+              "Minimum Free Energy Structure. Energy: {0} = {1} + {2}",
+              score.getScores().get(0), score.getScores().get(1), score
+                      .getScores().get(2));
+      typename = "MFE Structure";
+    }
+    else if (datatype.equals(AlifoldResult.contactProbabilityStructure
+            .toString()))
+    {
+      description = MessageFormat
+              .format("Base Pair Contact Probabilities. "
+                      + "Energy of Ensemble: {0}  Frequency of Ensemble: {1}",
+                      score.getScores().get(0), score.getScores().get(1));
+      typename = "Contact Probabilities";
+    }
+    else if (datatype.equals(AlifoldResult.centroidStructure.toString()))
+    {
+      description = MessageFormat.format(
+              "Centroid Structure. Energy: {0} = {1} + {2}", score
+                      .getScores().get(0), score.getScores().get(1), score
+                      .getScores().get(2));
+      typename = "Centroid Structure";
+    }
+    else if (datatype.equals(AlifoldResult.stochBTStructure.toString()))
+    {
+      if (score.getScores().size() > 0)
+      {
+        description = MessageFormat.format("Probability: {0}  Energy: {1}",
+                score.getScores().get(0), score.getScores().get(1));
+      }
+      else
+        description = "Stochastic Backtrack Structure";
+    }
+    else if (datatype.equals(AlifoldResult.MEAStucture.toString()))
+    {
+      description = MessageFormat.format(
+              "Maximum Expected Accuracy Values: '{' {0} MEA={1} '}", score
+                      .getScores().get(0), score.getScores().get(1));
+      typename = "MEA Structure";
+    }
+    else if (datatype.equals(AlifoldResult.consensusAlignment.toString()))
+    {
+      typename = "RNAalifold Consensus";
+      description = "Consensus Alignment Produced by RNAalifold";
+    }
+    else
+    {
+      typename = datatype;
+      description = typename;
+    }
+
+    return new String[]
+    { typename, description };
+  }
+
+  // Check whether, at position i there is a base contact and return all the
+  // contacts at this position. Should be in order of descending probability.
+  private LinkedHashMap<Range, Float> isContact(
+          LinkedHashMap<Range, Float> basePairs, int i)
+  {
+    LinkedHashMap<Range, Float> contacts = new LinkedHashMap<Range, Float>();
+
+    for (Range contact : basePairs.keySet())
+    {
+      // finds the contacts associtated with position i ordered by the natural
+      // ordering of the Scores TreeSet in ScoreManager which is, descending
+      // probability
+      if (contact.from == i || contact.to == i)
+        contacts.put(contact, basePairs.get(contact));
+    }
+
+    return contacts;
+  }
+
+  private char isSS(char chr)
+  {
+    String regex = "\\(|\\)|\\{|\\}|\\[|\\]";
+    char ss = (Pattern.matches(regex, Character.toString(chr))) ? 'S' : ' ';
+    return ss;
+  }
+}
index d57eae4..59cc962 100644 (file)
@@ -25,6 +25,7 @@ import jalview.gui.JvSwingUtils;
 import jalview.ws.jws2.dm.AAConSettings;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.WsParamSetI;
+import jalview.ws.uimodel.AlignAnalysisUIText;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -43,9 +44,6 @@ import javax.swing.event.MenuListener;
  */
 public class SequenceAnnotationWSClient extends Jws2Client
 {
-
-  public static final String AAConCalcId = "jabaws2.AACon";
-
   /**
    * initialise a client so its attachWSMenuEntry method can be called.
    */
@@ -61,44 +59,59 @@ public class SequenceAnnotationWSClient extends Jws2Client
     initSequenceAnnotationWSClient(sh, alignFrame, preset, editParams);
   }
 
+  // dan think. Do I need to change this method to run RNAalifold through the GUI
+  
   public void initSequenceAnnotationWSClient(final Jws2Instance sh,
           AlignFrame alignFrame, WsParamSetI preset, boolean editParams)
   {
-    if (alignFrame.getViewport().getAlignment().isNucleotide())
-    {
-      JOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
-              + " can only be used\nfor amino acid alignments.",
-              "Wrong type of sequences!", JOptionPane.WARNING_MESSAGE);
-      return;
-
-    }
-    if (sh.action.toLowerCase().contains("conservation"))
+       // dan changed! dan test. comment out if conditional
+//    if (alignFrame.getViewport().getAlignment().isNucleotide())
+//    {
+//      JOptionPane.showMessageDialog(Desktop.desktop, sh.serviceType
+//              + " can only be used\nfor amino acid alignments.",
+//              "Wrong type of sequences!", JOptionPane.WARNING_MESSAGE);
+//      return;
+//
+//    }
+    AlignAnalysisUIText aaui = sh.getAlignAnalysisUI();
+    if (aaui!=null)
     {
+      Class clientClass = aaui.getClient();
+      
       // Build an AACon style client - take alignment, return annotation for
       // columns
 
       List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
               .getCalcManager()
-              .getRegisteredWorkersOfClass(AAConClient.class);
+              .getRegisteredWorkersOfClass(clientClass);
+      JabawsAlignCalcWorker worker;
       if (clnts == null || clnts.size() == 0)
       {
         if (!processParams(sh, editParams))
         {
           return;
         }
-        AAConClient worker;
+        try {
+          worker = (JabawsAlignCalcWorker) (clientClass.getConstructor(
+                  new Class[] { Jws2Instance.class, 
+                          AlignFrame.class, WsParamSetI.class, 
+                          List.class }).newInstance(new Object[] { sh, alignFrame, this.preset, paramset}));
+        } catch (Exception x)
+        {
+          x.printStackTrace();
+          throw new Error("Implementation error",x);
+        }
         alignFrame
                 .getViewport()
                 .getCalcManager()
                 .registerWorker(
-                        worker = new AAConClient(sh, alignFrame,
-                                this.preset, paramset));
+                        worker);
         alignFrame.getViewport().getCalcManager().startWorker(worker);
 
       }
       else
       {
-        AAConClient worker = (AAConClient) clnts.get(0);
+        worker = (JabawsAlignCalcWorker) clnts.get(0);
         if (editParams)
         {
           paramset = worker.getArguments();
@@ -113,7 +126,6 @@ public class SequenceAnnotationWSClient extends Jws2Client
         // invalid parameters)
         alignFrame.getViewport().getCalcManager().workerMayRun(worker);
         worker.updateParameters(this.preset, paramset);
-
       }
     }
     if (sh.action.toLowerCase().contains("disorder"))
@@ -131,7 +143,6 @@ public class SequenceAnnotationWSClient extends Jws2Client
               .startWorker(
                       new AADisorderClient(sh, alignFrame, preset, paramset));
     }
-
   }
 
   public SequenceAnnotationWSClient(AAConSettings fave,
@@ -151,10 +162,8 @@ public class SequenceAnnotationWSClient extends Jws2Client
   public void attachWSMenuEntry(JMenu wsmenu, final Jws2Instance service,
           final AlignFrame alignFrame)
   {
-    if (service.serviceType.equals(compbio.ws.client.Services.AAConWS
-            .toString()))
-    {
-      registerAAConWSInstance(wsmenu, service, alignFrame);
+    if (registerAAConWSInstance(wsmenu, service, alignFrame)) {
+      // Alignment dependent analysis calculation WS gui
       return;
     }
     boolean hasparams = service.hasParameters();
@@ -240,21 +249,24 @@ public class SequenceAnnotationWSClient extends Jws2Client
     }
   }
 
-  private final String AAconToggle = "AACon Calculations",
-          AAconToggleTooltip = "When checked, AACon calculations are updated automatically.",
-          AAeditSettings = "Change AACon Settings...",
-          AAeditSettingsTooltip = "Modify settings for AACon calculations.";
-
-  private void registerAAConWSInstance(final JMenu wsmenu,
+  
+  private boolean registerAAConWSInstance(final JMenu wsmenu,
           final Jws2Instance service, final AlignFrame alignFrame)
   {
-    // register this in the AACon settings set
+    final AlignAnalysisUIText aaui = service.getAlignAnalysisUI(); // null ; // AlignAnalysisUIText.aaConGUI.get(service.serviceType.toString());
+    if (aaui==null)
+    {
+      // not an instantaneous calculation GUI type service
+      return false;
+    }
+    // create the instaneous calculation GUI bits and update state if existing GUI elements already present
+    
     JCheckBoxMenuItem _aaConEnabled = null;
     for (int i = 0; i < wsmenu.getItemCount(); i++)
     {
       JMenuItem item = wsmenu.getItem(i);
       if (item instanceof JCheckBoxMenuItem
-              && item.getText().equals(AAconToggle))
+              && item.getText().equals(aaui.getAAconToggle()))
       {
         _aaConEnabled = (JCheckBoxMenuItem) item;
       }
@@ -264,10 +276,10 @@ public class SequenceAnnotationWSClient extends Jws2Client
     {
       List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
               .getCalcManager()
-              .getRegisteredWorkersOfClass(AAConClient.class);
+              .getRegisteredWorkersOfClass(aaui.getClient());
       if (aaconClient != null && aaconClient.size() > 0)
       {
-        AAConClient worker = (AAConClient) aaconClient.get(0);
+        JabawsAlignCalcWorker worker = (JabawsAlignCalcWorker) aaconClient.get(0);
         if (!worker.service.hosturl.equals(service.hosturl))
         {
           // javax.swing.SwingUtilities.invokeLater(new Runnable()
@@ -275,8 +287,8 @@ public class SequenceAnnotationWSClient extends Jws2Client
             // @Override
             // public void run()
             {
-              removeCurrentAAConWorkerFor(alignFrame);
-              buildCurrentAAConWorkerFor(alignFrame, service);
+              removeCurrentAAConWorkerFor(aaui, alignFrame);
+              buildCurrentAAConWorkerFor(aaui, alignFrame, service);
             }
           }// );
         }
@@ -288,85 +300,95 @@ public class SequenceAnnotationWSClient extends Jws2Client
     if (_aaConEnabled == null)
     {
       final JCheckBoxMenuItem aaConEnabled = new JCheckBoxMenuItem(
-              AAconToggle);
-      wsmenu.addMenuListener(new MenuListener()
-      {
+              aaui.getAAconToggle());
 
+      aaConEnabled.setToolTipText("<html><p>"
+              + JvSwingUtils.wrapTooltip(aaui.getAAconToggleTooltip() + "</p>")
+              + "</html>");
+      aaConEnabled.addActionListener(new ActionListener()
+      {
         @Override
-        public void menuSelected(MenuEvent arg0)
+        public void actionPerformed(ActionEvent arg0)
         {
-          wsmenu.setEnabled(!alignFrame.getViewport().getAlignment()
-                  .isNucleotide());
           List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
                   .getCalcManager()
-                  .getRegisteredWorkersOfClass(AAConClient.class);
+                  .getRegisteredWorkersOfClass(aaui.getClient());
           if (aaconClient != null && aaconClient.size() > 0)
           {
-            aaConEnabled.setSelected(true);
+            removeCurrentAAConWorkerFor(aaui, alignFrame);
           }
           else
           {
-            aaConEnabled.setSelected(false);
+            buildCurrentAAConWorkerFor(aaui, alignFrame);
+
           }
         }
 
-        @Override
-        public void menuDeselected(MenuEvent arg0)
-        {
-          // TODO Auto-generated method stub
-
-        }
+      });
+      wsmenu.add(aaConEnabled);
+      final JMenuItem modifyParams = new JMenuItem(aaui.getAAeditSettings());
+      modifyParams.setToolTipText("<html><p>"
+              + JvSwingUtils.wrapTooltip(aaui.getAAeditSettingsTooltip() + "</p>")
+              + "</html>");
+      modifyParams.addActionListener(new ActionListener()
+      {
 
         @Override
-        public void menuCanceled(MenuEvent arg0)
+        public void actionPerformed(ActionEvent arg0)
         {
-          // TODO Auto-generated method stub
-
+          showAAConAnnotationSettingsFor(aaui, alignFrame);
         }
       });
-      aaConEnabled.setToolTipText("<html><p>"
-              + JvSwingUtils.wrapTooltip(AAconToggleTooltip + "</p>")
-              + "</html>");
-      aaConEnabled.addActionListener(new ActionListener()
+      wsmenu.add(modifyParams);
+      wsmenu.addMenuListener(new MenuListener()
       {
+
         @Override
-        public void actionPerformed(ActionEvent arg0)
+        public void menuSelected(MenuEvent arg0)
         {
+          // TODO: refactor to the implementing class.
+          if (alignFrame.getViewport().getAlignment()
+                  .isNucleotide() ? aaui.isNa() : aaui.isPr()) {
+            aaConEnabled.setEnabled(true);
+            modifyParams.setEnabled(true);
+          }
+          else {
+            aaConEnabled.setEnabled(false);
+            modifyParams.setEnabled(false);
+          }
           List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
                   .getCalcManager()
-                  .getRegisteredWorkersOfClass(AAConClient.class);
+                  .getRegisteredWorkersOfClass(aaui.getClient());
           if (aaconClient != null && aaconClient.size() > 0)
           {
-            removeCurrentAAConWorkerFor(alignFrame);
+            aaConEnabled.setSelected(true);
           }
           else
           {
-            buildCurrentAAConWorkerFor(alignFrame);
-
+            aaConEnabled.setSelected(false);
           }
         }
 
-      });
-      wsmenu.add(aaConEnabled);
-      JMenuItem modifyParams = new JMenuItem(AAeditSettings);
-      modifyParams.setToolTipText("<html><p>"
-              + JvSwingUtils.wrapTooltip(AAeditSettingsTooltip + "</p>")
-              + "</html>");
-      modifyParams.addActionListener(new ActionListener()
-      {
+        @Override
+        public void menuDeselected(MenuEvent arg0)
+        {
+          // TODO Auto-generated method stub
+
+        }
 
         @Override
-        public void actionPerformed(ActionEvent arg0)
+        public void menuCanceled(MenuEvent arg0)
         {
-          showAAConAnnotationSettingsFor(alignFrame);
+          // TODO Auto-generated method stub
+
         }
       });
-      wsmenu.add(modifyParams);
 
     }
+    return true;
   }
 
-  private static void showAAConAnnotationSettingsFor(AlignFrame alignFrame)
+  private static void showAAConAnnotationSettingsFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame)
   {
     /*
      * preferred settings Whether AACon is automatically recalculated Which
@@ -374,21 +396,21 @@ public class SequenceAnnotationWSClient extends Jws2Client
      */
     // could actually do a class search for this too
     AAConSettings fave = (AAConSettings) alignFrame.getViewport()
-            .getCalcIdSettingsFor(AAConCalcId);
+            .getCalcIdSettingsFor(aaui.getCalcId());
     if (fave == null)
     {
-      fave = createDefaultAAConSettings();
+      fave = createDefaultAAConSettings(aaui);
     }
     new SequenceAnnotationWSClient(fave, alignFrame, true);
 
   }
 
-  private static void buildCurrentAAConWorkerFor(AlignFrame alignFrame)
+  private static void buildCurrentAAConWorkerFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame)
   {
-    buildCurrentAAConWorkerFor(alignFrame, null);
+    buildCurrentAAConWorkerFor(aaui, alignFrame, null);
   }
 
-  private static void buildCurrentAAConWorkerFor(AlignFrame alignFrame,
+  private static void buildCurrentAAConWorkerFor(final AlignAnalysisUIText aaui, AlignFrame alignFrame,
           Jws2Instance service)
   {
     /*
@@ -396,10 +418,10 @@ public class SequenceAnnotationWSClient extends Jws2Client
      * AACon server to use What parameters to use
      */
     AAConSettings fave = (AAConSettings) alignFrame.getViewport()
-            .getCalcIdSettingsFor(AAConCalcId);
+            .getCalcIdSettingsFor(aaui.getCalcId());
     if (fave == null)
     {
-      fave = createDefaultAAConSettings(service);
+      fave = createDefaultAAConSettings(aaui, service);
     }
     else
     {
@@ -414,12 +436,12 @@ public class SequenceAnnotationWSClient extends Jws2Client
     new SequenceAnnotationWSClient(fave, alignFrame, false);
   }
 
-  private static AAConSettings createDefaultAAConSettings()
+  private static AAConSettings createDefaultAAConSettings(AlignAnalysisUIText aaui)
   {
-    return createDefaultAAConSettings(null);
+    return createDefaultAAConSettings(aaui, null);
   }
 
-  private static AAConSettings createDefaultAAConSettings(
+  private static AAConSettings createDefaultAAConSettings(AlignAnalysisUIText aaui,
           Jws2Instance service)
   {
     if (service != null)
@@ -447,7 +469,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
     {
       // get the default service for AACon
       service = Jws2Discoverer.getDiscoverer().getPreferredServiceFor(null,
-              compbio.ws.client.Services.AAConWS.toString());
+              aaui.getServiceType());
     }
     if (service == null)
     {
@@ -458,9 +480,9 @@ public class SequenceAnnotationWSClient extends Jws2Client
     return new AAConSettings(true, service, null, null);
   }
 
-  private static void removeCurrentAAConWorkerFor(AlignFrame alignFrame)
+  private static void removeCurrentAAConWorkerFor(AlignAnalysisUIText aaui, AlignFrame alignFrame)
   {
     alignFrame.getViewport().getCalcManager()
-            .removeRegisteredWorkersOfClass(AAConClient.class);
+            .removeRegisteredWorkersOfClass(aaui.getClient());
   }
 }
index 69f8f7b..7316d2f 100644 (file)
@@ -20,6 +20,7 @@ package jalview.ws.jws2.dm;
 import jalview.ws.jws2.ParameterUtils;
 import jalview.ws.params.OptionI;
 
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
 
@@ -49,7 +50,15 @@ public class JabaOption implements jalview.ws.params.OptionI
   @Override
   public URL getFurtherDetails()
   {
-    return opt.getFurtherDetails();
+    try {
+    return new URL(opt.getBasicURL().toExternalForm()+"/"+opt.getFurtherDetails());
+    }
+    catch (NullPointerException q) {}
+    catch (MalformedURLException q)
+    {
+      
+    }
+    return null;
   }
 
   @Override
index 09f4a48..509b96f 100644 (file)
@@ -48,6 +48,14 @@ public class Jws2Instance
 
   public String docUrl;
 
+  /**
+   * 
+   * @param hosturl Service endpoint
+   * @param serviceType Category for this service's analysis
+   * @param action text describing their action that service performs (eg 'aligning', 'analysing')
+   * @param description Description from JABAWS registry
+   * @param service JABAWS registry ID for service
+   */
   public Jws2Instance(String hosturl, String serviceType, String action,
           String description, JABAService service)
   {
@@ -173,6 +181,8 @@ public class Jws2Instance
                         : null));
       } catch (Exception ex)
       {
+        System.err.println("Unexpected exception creating JabaParamStore.");
+        ex.printStackTrace();
       }
 
     }
@@ -222,4 +232,9 @@ public class Jws2Instance
   {
     return "java:" + serviceType;
   }
+  jalview.ws.uimodel.AlignAnalysisUIText aaui;
+  public jalview.ws.uimodel.AlignAnalysisUIText getAlignAnalysisUI()
+  {
+    return aaui;
+  }
 }
diff --git a/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java b/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java
new file mode 100644 (file)
index 0000000..5907713
--- /dev/null
@@ -0,0 +1,53 @@
+package jalview.ws.jws2.jabaws2;
+
+import java.util.HashMap;
+
+import compbio.data.msa.JABAService;
+
+import jalview.ws.jws2.AAConClient;
+import jalview.ws.jws2.RNAalifoldClient;
+import jalview.ws.uimodel.AlignAnalysisUIText;
+
+public class Jws2InstanceFactory
+{
+  private static HashMap<String, AlignAnalysisUIText> aaConGUI;
+  private static String category_rewrite(String cat_name)
+  {
+    return (cat_name != null && cat_name.equals("Prediction")) ? "Secondary Structure Prediction" : cat_name;
+  }
+  private static void init()
+  {
+    if (aaConGUI == null)
+    {
+      aaConGUI = new HashMap<String, AlignAnalysisUIText>();
+      aaConGUI.put(compbio.ws.client.Services.AAConWS.toString(),
+              AAConClient.getAlignAnalysisUITest());
+      aaConGUI.put(compbio.ws.client.Services.RNAalifoldWS.toString(),
+              RNAalifoldClient.getAlignAnalysisUITest());
+    }
+  }
+
+  /**
+   * construct a service instance and configure it with any additional
+   * properties needed so Jalview can access it correctly
+   * 
+   * @param jwsservers
+   * @param serviceType
+   * @param name
+   * @param description
+   * @param service
+   * @return
+   */
+  public static Jws2Instance newJws2Instance(String jwsservers,
+          String serviceType, String name, String description,
+          JABAService service)
+  {
+    init();
+    Jws2Instance svc = new Jws2Instance(jwsservers, serviceType, category_rewrite(name),
+            description, service);
+    
+    svc.aaui = aaConGUI.get(serviceType.toString());
+    return svc;
+  }
+
+}
index ba6dbeb..437d3b4 100644 (file)
@@ -76,9 +76,15 @@ public class RestClient extends WSClient implements WSClientI,
 
   public RestClient(RestServiceDescription service2, AlignFrame alignFrame)
   {
+    this(service2, alignFrame, false);
+  }
+  boolean headless = false;
+  public RestClient(RestServiceDescription service2, AlignFrame alignFrame, boolean nogui)
+  {
     service = service2;
     af = alignFrame;
     av = alignFrame.getViewport();
+    headless = nogui;
     constructJob();
   }
 
@@ -219,7 +225,6 @@ public class RestClient extends WSClient implements WSClientI,
    * informative name for results
    */
   public String viewTitle;
-
   protected void constructJob()
   {
     service.setInvolvesFlags();
@@ -285,9 +290,11 @@ public class RestClient extends WSClient implements WSClientI,
 
     if (jobsthread.isValid())
     {
-      setWebserviceInfo(false);
-      wsInfo.setthisService(this);
-      jobsthread.setWebServiceInfo(wsInfo);
+      setWebserviceInfo(headless);
+      if (!headless) {
+        wsInfo.setthisService(this);
+        jobsthread.setWebServiceInfo(wsInfo);
+      }
       jobsthread.start();
     }
     else
index d2a0a05..c89f241 100644 (file)
@@ -87,12 +87,13 @@ public class RestJob extends AWsJob
     // get sequences for the alignmentI
     // get groups trimmed to alignment columns
     // get any annotation trimmed to start/end columns, too.
-
+    squniq = jalview.analysis.SeqsetUtils.uniquify(_input.getSequencesArray(), true);
     // prepare input
     // form alignment+groups+annotation,preprocess and then record references
     // for formatters
     ArrayList<InputType> alinp = new ArrayList<InputType>();
     int paramsWithData = 0;
+    // TODO: JAL-715 - generalise the following validation logic for all parameter types
     // we cheat for moment - since we know a-priori what data is available and
     // what inputs we have implemented so far
     for (Map.Entry<String, InputType> prm : rsd.inputParams.entrySet())
@@ -105,11 +106,11 @@ public class RestJob extends AWsJob
         }
         else
         {
-          // TODO: move validation of input data to SeqGroupIndexVector
-          if ((prm.getValue() instanceof SeqGroupIndexVector)
-                  && (_input.getGroups() != null && _input.getGroups()
-                          .size() >= prm.getValue().min))
+          if (prm.getValue() instanceof SeqGroupIndexVector
+                  && _input.getGroups() != null
+                  && _input.getGroups().size() >= -1 + prm.getValue().min)
           {
+            // the test above is not rigorous but fixes JAL-1298, since submission will fail if the partition set doesn't contain at least one partition
             alinp.add(prm.getValue());
           }
           else
index 6828f2d..fd9e3b4 100644 (file)
@@ -873,100 +873,6 @@ public class RestServiceDescription
     return valid;
   }
 
-  public static void main(String argv[])
-  {
-    // test separator list
-    try
-    {
-      assert (separatorListToArray("foo=',',min='foo',max='1,2,3',fa=','",
-              ",").length == 4);
-      if (separatorListToArray("minsize='2', sep=','", ",").length == 2)
-      {
-        assert (false);
-      }
-
-    } catch (AssertionError x)
-    {
-      System.err.println("separatorListToArray is faulty.");
-    }
-    if (argv.length == 0)
-    {
-      if (!testRsdExchange("Test using default Shmmr service",
-              RestClient.makeShmmrRestClient().service))
-      {
-        System.err.println("default test failed.");
-      }
-      else
-      {
-        System.err.println("default test passed.");
-      }
-    }
-    else
-    {
-      int i = 0, p = 0;
-      for (String svc : argv)
-      {
-        p += testRsdExchange("Test " + (++i), svc) ? 1 : 0;
-      }
-      System.err.println("" + p + " out of " + i + " tests passed.");
-
-    }
-  }
-
-  private static boolean testRsdExchange(String desc, String servicestring)
-  {
-    try
-    {
-      RestServiceDescription newService = new RestServiceDescription(
-              servicestring);
-      if (!newService.isValid())
-      {
-        throw new Error("Failed to create service from '" + servicestring
-                + "'.\n" + newService.getInvalidMessage());
-      }
-      return testRsdExchange(desc, newService);
-    } catch (Throwable x)
-    {
-      System.err.println("Failed for service (" + desc + "): "
-              + servicestring);
-      x.printStackTrace();
-      return false;
-    }
-  }
-
-  private static boolean testRsdExchange(String desc,
-          RestServiceDescription service)
-  {
-    try
-    {
-      String fromservicetostring = service.toString();
-      RestServiceDescription newService = new RestServiceDescription(
-              fromservicetostring);
-      if (!newService.isValid())
-      {
-        throw new Error("Failed to create service from '"
-                + fromservicetostring + "'.\n"
-                + newService.getInvalidMessage());
-      }
-
-      if (!service.equals(newService))
-      {
-        System.err.println("Failed for service (" + desc + ").");
-        System.err.println("Original service and parsed service differ.");
-        System.err.println("Original: " + fromservicetostring);
-        System.err.println("Parsed  : " + newService.toString());
-        return false;
-      }
-    } catch (Throwable x)
-    {
-      System.err.println("Failed for service (" + desc + "): "
-              + service.toString());
-      x.printStackTrace();
-      return false;
-    }
-    return true;
-  }
-
   /**
    * covenience method to generate the id and sequence string vector from a set
    * of seuqences using each sequence's getName() and getSequenceAsString()
index 766720b..0532035 100644 (file)
@@ -88,7 +88,7 @@ public class SeqGroupIndexVector extends InputType implements
     // assume that alignment is properly ordered so groups form consecutive
     // blocks
     ArrayList<int[]> gl = new ArrayList<int[]>();
-    int p = 0;
+    int p = 0,lowest=al.getHeight(), highest=0;
     List<SequenceGroup> sgs;
     synchronized (sgs = al.getGroups())
     {
@@ -105,6 +105,14 @@ public class SeqGroupIndexVector extends InputType implements
         for (SequenceI sq : sg.getSequencesInOrder(al))
         {
           p = al.findIndex(sq);
+          if (lowest>p)
+          {
+            lowest=p;
+          }
+          if (highest<p)
+          {
+            highest=p;
+          }
           if (se == null)
           {
             se = new int[]
@@ -128,40 +136,14 @@ public class SeqGroupIndexVector extends InputType implements
     // remaining group ? - these might be at the start or the end
     if (gl.size() > 0)
     {
-      int[] tail = gl.get(0);
-      if (tail[0] > 0)
+      if (lowest-1>minsize)
       {
-        if (1 + tail[0] > minsize)
-        {
-          gl.add(0, new int[]
-          { 0, tail[0] - 1 });
-        }
-        else
-        {
-          // lets be intelligent here - if the remaining sequences aren't enough
-          // to make a final group, then don't make one.
-          // throw new
-          // NoValidInputDataException("Group from remaining ungrouped sequences in input contains less than "+minsize+" sequences.");
-        }
+        gl.add(0, new int[]
+          { 0, lowest-2});
       }
-      else
+      if ((al.getHeight()-1-highest)>minsize)
       {
-        tail = gl.get(gl.size() - 1);
-        if (1 + tail[1] < al.getHeight())
-        {
-          if (al.getHeight() - (1 + tail[1]) > minsize)
-          {
-            gl.add(new int[]
-            { tail[1] + 1, al.getHeight() - 1 });
-          }
-          else
-          {
-            // lets be intelligent here - if the remaining sequences aren't
-            // enough to make a final group, then don't make one.
-            // throw new
-            // NoValidInputDataException("Group from remaining ungrouped sequences in input contains less than "+minsize+" sequences.");
-          }
-        }
+        gl.add(new int[] { highest+1, al.getHeight()-1});
       }
     }
     else
index 45b866e..e475915 100644 (file)
@@ -272,9 +272,10 @@ public class ASequenceFetcher
       DbSourceProxy[] l = dblist.values().toArray(new DbSourceProxy[0]);
       int i = 0;
       String[] nm = new String[l.length];
+      // make sure standard dbs appear first, followed by reference das sources, followed by anything else.
       for (DbSourceProxy s : l)
       {
-        nm[i++] = s.getDbName().toLowerCase();
+        nm[i++] = ""+s.getTier()+s.getDbName().toLowerCase();
       }
       jalview.util.QuickSort.sort(nm, l);
       dbs = new ArrayList<DbSourceProxy>();
index cc9997f..e4b76b9 100644 (file)
@@ -134,4 +134,11 @@ public interface DbSourceProxy
    * @return true if the source has this property
    */
   public boolean isA(Object dbsourceproperty);
+
+  /**
+   * Tier for this data source
+   *  
+   * @return 0 - primary datasource, 1 - das primary source, 2 - secondary
+   */
+  public int getTier();
 }
diff --git a/src/jalview/ws/uimodel/AlignAnalysisUIText.java b/src/jalview/ws/uimodel/AlignAnalysisUIText.java
new file mode 100644 (file)
index 0000000..0d018a3
--- /dev/null
@@ -0,0 +1,115 @@
+package jalview.ws.uimodel;
+
+import java.util.HashMap;
+
+public class AlignAnalysisUIText
+{
+
+  private String serviceType;
+
+  public String getServiceType()
+  {
+    return serviceType;
+  }
+
+  private Class client;
+
+  private String calcId;
+
+  public String getCalcId()
+  {
+    return calcId;
+  }
+
+  private String AAconToggle, AAconToggleTooltip, AAeditSettings,
+          AAeditSettingsTooltip;
+
+  private boolean isNa;
+
+  public boolean isNa()
+  {
+    return isNa;
+  }
+
+  public boolean isPr()
+  {
+    return isPr;
+  }
+
+  public boolean isAA()
+  {
+    return isAA;
+  }
+
+  private boolean isPr;
+
+  private boolean isAA;
+
+  public AlignAnalysisUIText(String serviceType, Class<?> client,
+          String calcId, boolean acceptNucl, boolean acceptProt,
+          boolean acceptGaps, String toggle, String toggleTooltip,
+          String settings, String settingsTooltip)
+  {
+    this.serviceType = serviceType;
+    this.calcId = calcId;
+    isNa = acceptNucl;
+    isPr = acceptProt;
+    isAA = acceptGaps;
+    this.client = client;
+    this.AAconToggle = toggle;
+    this.AAconToggleTooltip = toggleTooltip;
+    this.AAeditSettings = settings;
+    this.AAeditSettingsTooltip = settingsTooltip;
+  }
+
+  public Class getClient()
+  {
+    return client;
+  }
+
+  public void setClient(Class client)
+  {
+    this.client = client;
+  }
+
+  public String getAAconToggle()
+  {
+    return AAconToggle;
+  }
+
+  public void setAAconToggle(String aAconToggle)
+  {
+    AAconToggle = aAconToggle;
+  }
+
+  public String getAAconToggleTooltip()
+  {
+    return AAconToggleTooltip;
+  }
+
+  public void setAAconToggleTooltip(String aAconToggleTooltip)
+  {
+    AAconToggleTooltip = aAconToggleTooltip;
+  }
+
+  public String getAAeditSettings()
+  {
+    return AAeditSettings;
+  }
+
+  public void setAAeditSettings(String aAeditSettings)
+  {
+    AAeditSettings = aAeditSettings;
+  }
+
+  public String getAAeditSettingsTooltip()
+  {
+    return AAeditSettingsTooltip;
+  }
+
+  public void setAAeditSettingsTooltip(String aAeditSettingsTooltip)
+  {
+    AAeditSettingsTooltip = aAeditSettingsTooltip;
+  }
+
+}
\ No newline at end of file
diff --git a/test/jalview/analysis/DnaTranslation.java b/test/jalview/analysis/DnaTranslation.java
new file mode 100644 (file)
index 0000000..d29ee15
--- /dev/null
@@ -0,0 +1,126 @@
+package jalview.analysis;
+
+import static org.junit.Assert.*;
+import jalview.datamodel.ColumnSelection;
+
+import java.io.IOException;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+public class DnaTranslation
+{
+
+  private static String JAL_1312_example_align_fasta = ">B.FR.83.HXB2_LAI_IIIB_BRU_K03455/45-306\n"
+          + "ATGGGAAAAAATTCGGTTAAGGCCAGGGGGAAAGAAAAAATATAAATTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTCGCAGTTAATCCTGGCCTGTTAGAAACATCAGAAGGCTGTAGACAAATACTGGGACA\n"
+          + "GCTACAACCATCCCTTCAGACAGGATCAGAAGAACTTAGATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTGCATCAAAGGATAGAGATAAAAGACACCAAGGAAGCTTTAGAC\n"
+          + ">gi|27804621|gb|AY178912.1|/1-259\n"
+          + "-TGGGAGAA-ATTCGGTT-CGGCCAGGGGGAAAGAAAAAATATCAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "AGAGCTAGAACGATTCGCAGTTAACCCTGGCCTTTTAGAGACATCACAAGGCTGTAGACAAATACTGGGACA\n"
+          + "GCTACAACCATCCCTTCAGACAGGATCAGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTTCATCAAAGGATAGATATAAAAGACACCAAGGAAGCTTTAGAT\n"
+          + ">gi|27804623|gb|AY178913.1|/1-259\n"
+          + "-TGGGAGAA-ATTCGGTT-CGGCCAGGGGGAAAGAAAAAATATCAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "AGAGCTAGAACGATTCGCAGTTAACCCTGGCCTTTTAGAGACATCACAAGGCTGTAGACAAATACTGGAACA\n"
+          + "GCTACAACCATCCCTTCAGACAGGATCAGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTTCATCAAAGGATAGATGTAAAAGACACCAAGGAAGCTTTAGAT\n"
+          + ">gi|27804627|gb|AY178915.1|/1-260\n"
+          + "-TGGGAAAA-ATTCGGTTAAGGCCAGGGGGAAAGAAAAAATATAAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTCGCAGTTAACCCTGGCCTGTTAGAAACATCAGAAGGTTGTAGACAAATATTGGGACA\n"
+          + "GCTACAACCATCCCTTGAGACAGGATCAGAAGAACTTAAATCATTATWTAATACCATAGCAGTCCTCTATTG\n"
+          + "TGTACATCAAAGGATAGATATAAAAGACACCAAGGAAGCTTTAGAG\n"
+          + ">gi|27804631|gb|AY178917.1|/1-261\n"
+          + "-TGGGAAAAAATTCGGTTGAGGCCAGGGGGAAAGAAAAAATATAAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTCGCAGTCAACCCTGGCCTGTTAGAAACACCAGAAGGCTGTAGACAAATACTGGGACA\n"
+          + "GCTACAACCGTCCCTTCAGACAGGATCGGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTGCATCAAAGGATAGATGTAAAAGACACCAAGGAGGCTTTAGAC\n"
+          + ">gi|27804635|gb|AY178919.1|/1-261\n"
+          + "-TGGGAGAGAATTCGGTTACGGCCAGGAGGAAAGAAAAAATATAAATTGAAACATATAGTATGGGCAGGCAG\n"
+          + "AGAGCTAGATCGATTCGCAGTCAATCCTGGCCTGTTAGAAACATCAGAAGGCTGCAGACAGATATTGGGACA\n"
+          + "GCTACAACCGTCCCTTAAGACAGGATCAGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTACATCAAAGGATAGATGTAAAAGACACCAAGGAAGCTTTAGAT\n"
+          + ">gi|27804641|gb|AY178922.1|/1-261\n"
+          + "-TGGGAGAAAATTCGGTTACGGCCAGGGGGAAAGAAAAGATATAAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTCGCAGTCAACCCTGGCCTGTTAGAAACATCAGAAGGCTGCAGACAAATACTGGGACA\n"
+          + "GTTACACCCATCCCTTCATACAGGATCAGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTGCATCAAAGGATAGAAGTAAAAGACACCAAGGAAGCTTTAGAC\n"
+          + ">gi|27804647|gb|AY178925.1|/1-261\n"
+          + "-TGGGAAAAAATTCGGTTAAGGCCAGGGGGAAAGAAAAAATATCAATTAAAACATGTAGTATGGGCAAGCAG\n"
+          + "GGAACTAGAACGATTCGCAGTTAATCCTGGCCTGTTAGAAACATCAGAAGGCTGTAGACAAATATTGGGACA\n"
+          + "GCTACAACCATCCCTTCAGACAGGATCAGAGGAACTTAAATCATTATTTAATACAGTAGCAGTCCTCTATTG\n"
+          + "TGTACATCAAAGAATAGATGTAAAAGACACCAAGGAAGCTCTAGAA\n"
+          + ">gi|27804649|gb|AY178926.1|/1-261\n"
+          + "-TGGGAAAAAATTCGGTTAAGGCCAGGGGGAAAGAAAAAATATAAGTTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTCGCGGTCAATCCTGGCCTGTTAGAAACATCAGAAGGCTGTAGACAACTACTGGGACA\n"
+          + "GTTACAACCATCCCTTCAGACAGGATCAGAAGAACTCAAATCATTATATAATACAATAGCAACCCTCTATTG\n"
+          + "TGTGCATCAAAGGATAGAGATAAAAGACACCAAGGAAGCCTTAGAT\n"
+          + ">gi|27804653|gb|AY178928.1|/1-261\n"
+          + "-TGGGAAAGAATTCGGTTAAGGCCAGGGGGAAAGAAACAATATAAATTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGACCGATTCGCACTTAACCCCGGCCTGTTAGAAACATCAGAAGGCTGTAGACAAATATTGGGACA\n"
+          + "GCTACAATCGTCCCTTCAGACAGGATCAGAAGAACTTAGATCACTATATAATACAGTAGCAGTCCTCTATTG\n"
+          + "TGTGCATCAAAAGATAGATGTAAAAGACACCAAGGAAGCCTTAGAC\n"
+          + ">gi|27804659|gb|AY178931.1|/1-261\n"
+          + "-TGGGAAAAAATTCGGTTACGGCCAGGAGGAAAGAAAAGATATAAATTAAAACATATAGTATGGGCAAGCAG\n"
+          + "GGAGCTAGAACGATTYGCAGTTAATCCTGGCCTTTTAGAAACAGCAGAAGGCTGTAGACAAATACTGGGACA\n"
+          + "GCTACAACCATCCCTTCAGACAGGATCAGAAGAACTTAAATCATTATATAATACAGTAGCAACCCTCTATTG\n"
+          + "TGTACATCAAAGGATAGAGATAAAAGACACCAAGGAAGCTTTAGAA\n";
+
+  
+  @Test
+  public void translationWithUntranslatableCodonsTest()
+  {
+    // Corner case for this test is the presence of codons after codons that
+    // were not translated.
+    jalview.datamodel.AlignmentI alf = null;
+    try
+    {
+      alf = new jalview.io.FormatAdapter().readFile(JAL_1312_example_align_fasta,
+              jalview.io.FormatAdapter.PASTE, "FASTA");
+    } catch (IOException x)
+    {
+      x.printStackTrace();
+      fail("Unexpected IOException (" + x.getMessage()
+              + ") - check test environment");
+    }
+    {
+      // full translation
+      ColumnSelection cs = new jalview.datamodel.ColumnSelection();
+      assertNotNull("Couldn't do a full width translation of test data.",
+              jalview.analysis.Dna.CdnaTranslate(
+                      alf.getSequencesArray(),
+                      cs.getVisibleSequenceStrings(0, alf.getWidth(),
+                              alf.getSequencesArray()), new int[]
+                      { 0, alf.getWidth() - 1 }, alf.getGapCharacter(),
+                      null, alf.getWidth(), null));
+    }
+    int vwidth = 15; // translate in 15 base stretches
+    for (int ipos = 0; ipos + vwidth < alf.getWidth(); ipos += vwidth)
+    {
+      ColumnSelection cs = new jalview.datamodel.ColumnSelection();
+      if (ipos > 0)
+      {
+        cs.hideColumns(0, ipos - 1);
+      }
+      cs.hideColumns(ipos + vwidth, alf.getWidth());
+      int[] vcontigs = cs.getVisibleContigs(0, alf.getWidth());
+      String[] sel = cs.getVisibleSequenceStrings(0, alf.getWidth(),
+              alf.getSequencesArray());
+      jalview.datamodel.AlignmentI transAlf = jalview.analysis.Dna
+              .CdnaTranslate(alf.getSequencesArray(), sel, vcontigs,
+                      alf.getGapCharacter(), null, alf.getWidth(), null);
+
+      assertTrue("Translation failed (ipos=" + ipos
+              + ") No alignment data.", transAlf != null);
+      assertTrue("Translation failed (ipos=" + ipos + ") Empty algnment.",
+              transAlf.getHeight() > 0);
+      assertTrue("Translation failed (ipos=" + ipos + ") Translated "
+              + transAlf.getHeight() + " sequences from " + alf.getHeight()
+              + " sequences", alf.getHeight() == transAlf.getHeight());
+    }
+
+  }
+}
diff --git a/test/jalview/bin/CommandLineOperations.java b/test/jalview/bin/CommandLineOperations.java
new file mode 100644 (file)
index 0000000..c6c82c9
--- /dev/null
@@ -0,0 +1,91 @@
+package jalview.bin;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CommandLineOperations
+{
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+/***
+ * from http://stackoverflow.com/questions/808276/how-to-add-a-timeout-value-when-using-javas-runtime-exec
+ * @author jimp
+ *
+ */
+private static class Worker extends Thread {
+  private final Process process;
+  private Integer exit;
+  private Worker(Process process) {
+    this.process = process;
+  }
+  public void run() {
+    try { 
+      exit = process.waitFor();
+    } catch (InterruptedException ignore) {
+      return;
+    }
+  }
+}
+  @Test
+  public void testHeadlessModeEPS() throws Exception
+  {
+    String[] headlessArgs=new String[] { "nodisplay","headless","nogui"};
+    for (String _harg:headlessArgs)
+    {
+      boolean _switch=false,withAwt=false;
+      do {
+        if (_switch)
+        {
+          withAwt=true;
+        }
+        _switch=true;
+    String jalview_input = "examples/uniref50.fa";
+    String jalview_output = "test_uniref50_out.eps";
+    String cmd = "java "+(withAwt ? "-Djava.awt.headless=true":"")+" -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview -"+_harg+" -open "+ jalview_input + " -eps " + jalview_output;
+    String harg = _harg+(withAwt ? "-Djava.awt.headless=true":" NO AWT.HEADLESS");
+    System.out.println("Testing with Headless argument: '"+harg+"'\n###############Jalview CMD: " + cmd);
+    Process ls2_proc = Runtime.getRuntime().exec(cmd);
+    BufferedReader outputReader = new BufferedReader(new InputStreamReader(ls2_proc.getInputStream()));
+        
+    BufferedReader errorReader = new BufferedReader(new InputStreamReader(ls2_proc.getErrorStream()));
+    Worker worker = new Worker(ls2_proc);
+    worker.start();
+    worker.join(9000);
+    System.out.println("Output:  ");
+    String ln=null;
+    while ((ln=outputReader.readLine())!=null) {
+      System.out.println(ln);
+    }
+    
+    System.out.println("Error:  " );
+    while ((ln=errorReader.readLine())!=null) {
+      System.out.println(ln);
+    }
+    assertTrue("Didn't create an output EPS file.["+harg+"]", new File("test_uniref50_out.eps").exists());
+    assertTrue("Didn't create an EPS file with any content["+harg+"]", new File("test_uniref50_out.eps").length()>4096);
+    if (worker.exit == null){
+      worker.interrupt();
+      Thread.currentThread().interrupt();
+      ls2_proc.destroy();
+      fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["+harg+"]");
+    }
+    } while (!withAwt);
+    } 
+  }
+
+}
diff --git a/test/jalview/gui/JAL1353bugdemo.java b/test/jalview/gui/JAL1353bugdemo.java
new file mode 100644 (file)
index 0000000..486c098
--- /dev/null
@@ -0,0 +1,127 @@
+package jalview.gui;
+
+import static org.junit.Assert.*;
+import jalview.bin.Cache;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+import javax.swing.JDesktopPane;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class JAL1353bugdemo
+{
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+  volatile boolean finish=false;
+
+  @Test
+  public void test()
+  {
+    Cache.initLogger();
+    // final Desktop foo = new Desktop();
+    final JFrame cfoo = new JFrame("Crash Java");
+    final JDesktopPane foo=new JDesktopPane();
+    foo.setPreferredSize(new Dimension(600,800));
+    cfoo.setSize(600, 800);
+    final JInternalFrame cont = new JInternalFrame("My Frame");
+    JTextArea evt;
+    cont.setPreferredSize(new Dimension(400, 300));
+    cont.add(evt=new JTextArea("Click here and drag text over this window to freeze java.\n\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\nThis is a dummy string. See teh dummy string go.\n"));
+    cont.pack();
+    foo.add("A frame",cont);
+    foo.setVisible(true);
+    foo.setEnabled(true);
+    foo.doLayout();
+    cfoo.add(foo);
+    final JMenu jm = new JMenu("Do");
+    JMenuItem jmi=new JMenuItem("this");
+    jm.add(jmi);
+    evt.addMouseListener(new MouseListener()
+    {
+      
+      @Override
+      public void mouseReleased(MouseEvent e)
+      {
+      }
+      
+      @Override
+      public void mousePressed(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+        
+      }
+      
+      @Override
+      public void mouseExited(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+        
+      }
+      
+      @Override
+      public void mouseEntered(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+        
+      }
+      
+      @Override
+      public void mouseClicked(MouseEvent e)
+      {
+//        JFrame parent = new JFrame();
+//        parent.setBounds(foo.getBounds());
+//        JPanel oo = new JPanel();
+//        parent.add(oo);
+//        oo.setVisible(true);
+//        parent.setVisible(true);
+        EditNameDialog end =new EditNameDialog("Sequence Name", "Sequence Description","label 1", "Label 2", "Try and drag between the two text fields", foo);//);cont.getRootPane());
+        assert(end!=null);
+        finish=true;
+      }
+    });
+    cont.setVisible(true);
+
+    jmi.addActionListener(new ActionListener()
+    {
+      
+      @Override
+      public void actionPerformed(ActionEvent arg0)
+      {
+        EditNameDialog end =new EditNameDialog("Sequence Name", "Sequence Description","label 1", "Label 2", "Try and drag between the two text fields", cont);
+        assert(end!=null);
+        finish=true;
+      }
+    });
+    foo.setVisible(true);
+    cfoo.setVisible(true);
+    while (!finish)
+    {
+      try {
+        Thread.sleep(100);
+      } catch (InterruptedException x) {}
+    }
+  }
+
+}
diff --git a/test/jalview/io/AnnotationFileIOTest.java b/test/jalview/io/AnnotationFileIOTest.java
new file mode 100644 (file)
index 0000000..30f61d7
--- /dev/null
@@ -0,0 +1,91 @@
+package jalview.io;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import jalview.datamodel.AlignmentI;
+
+import java.io.File;
+
+import org.junit.Test;
+
+public class AnnotationFileIOTest
+{
+
+  static String TestFiles[][] = {{ "Test example annotation import/export","examples/uniref50.fa", "examples/testdata/example_annot_file.jva" }
+          ,{"Test multiple combine annotation statements import/export","examples/uniref50.fa", "examples/testdata/test_combine_annot.jva"}
+          ,{"Test multiple combine annotation statements with sequence_ref import/export","examples/uniref50.fa", "examples/testdata/uniref50_iupred.jva"}};
+
+  @Test
+  public void exampleAnnotationFileIO() throws Exception
+  {
+    for (String[] testPair:TestFiles)
+    {
+      testAnnotationFileIO(testPair[0], new File(testPair[1]), new File(testPair[2]));
+    }
+  }
+
+  public static AlignmentI readAlignmentFile(File f)
+  {
+    System.out.println("Reading file: " + f);
+    String ff = f.getPath();
+    try
+    {
+      FormatAdapter rf = new FormatAdapter();
+
+      AlignmentI al = rf.readFile(ff, AppletFormatAdapter.FILE,
+              new IdentifyFile().Identify(ff, AppletFormatAdapter.FILE));
+      
+      // make sure dataset is initialised ? not sure about this
+      for (int i = 0; i < al.getSequencesArray().length; ++i)
+      {
+        al.getSequenceAt(i).setDatasetSequence(al.getSequenceAt(i).createDatasetSequence());
+      }
+      assertNotNull("Couldn't read supplied alignment data.", al);
+      return al;
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    fail("Couln't read the alignment in file '"+f.toString()+"'");
+    return null;
+  }
+  /**
+   * test alignment data in given file can be imported, exported and reimported
+   * with no dataloss
+   * 
+   * @param f
+   *          - source datafile (IdentifyFile.identify() should work with it)
+   * @param ioformat
+   *          - label for IO class used to write and read back in the data from
+   *          f
+   */
+  public static void testAnnotationFileIO(String testname, File f, File annotFile)
+  {
+    System.out.println("Test: "+testname+"\nReading annotation file '"+annotFile+"' onto : " + f);
+    String af = annotFile.getPath();
+    try
+    {
+      AlignmentI al = readAlignmentFile(f);
+      
+      assertTrue("Test "+testname+"\nAlignment was not annotated - annotation file not imported.",new AnnotationFile().readAnnotationFile(al, af, FormatAdapter.FILE));
+      
+      String anfileout = new AnnotationFile().printAnnotations(al.getAlignmentAnnotation(), al.getGroups(), al.getProperties());
+      assertTrue("Test "+testname+"\nAlignment annotation file was not regenerated. Null string",anfileout!=null);
+      assertTrue("Test "+testname+"\nAlignment annotation file was not regenerated. Empty string",anfileout.length()>"JALVIEW_ANNOTATION".length());
+
+      System.out.println("Output annotation file:\n"+anfileout+"\n<<EOF\n");
+      
+      AlignmentI al_new = readAlignmentFile(f);
+      assertTrue("Test "+testname+"\nregenerated annotation file did not annotate alignment.",new AnnotationFile().readAnnotationFile(al_new, anfileout, FormatAdapter.PASTE));
+      
+      // test for consistency in io
+      StockholmFileTest.testAlignmentEquivalence(al, al_new);
+      return;
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    fail("Test "+testname+"\nCouldn't complete Annotation file roundtrip input/output/input test for '"+annotFile+"'.");
+  }
+}
diff --git a/test/jalview/io/FileIOTester.java b/test/jalview/io/FileIOTester.java
new file mode 100644 (file)
index 0000000..a2aa5da
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+ * 
+ */
+package jalview.io;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author jimp
+ *
+ */
+public class FileIOTester
+{
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+  final static File ALIGN_FILE = new File("test/jalview/io/test_gz_fasta.gz");
+  final static File NOTGZALIGN_FILE = new File("test/jalview/io/test_gz_fasta_notgz.gz");
+
+  private void assertValidFasta(String src, FileParse fp)
+  {
+    assertTrue("Couldn't resolve "+src+" as a valid file",fp.isValid());
+    String type = new IdentifyFile().Identify(fp);
+    assertTrue("Gzipped data from '"+src+"' identified as '"+type+"'",type.equalsIgnoreCase("FASTA"));
+  }
+  @Test
+  public void testGzipIo() throws IOException
+  {     
+    String uri;
+    FileParse fp = new FileParse(uri=ALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL);
+    assertValidFasta(uri, fp);
+  }
+
+  @Test
+  public void testGziplocalFileIO() throws IOException
+  {
+    String filepath;
+    FileParse fp = new FileParse(filepath=ALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE);
+    assertValidFasta(filepath, fp);
+  }
+  @Test
+  public void testNonGzipURLIO() throws IOException
+  {
+    String uri;
+    FileParse fp = new FileParse(uri=NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL);
+    assertValidFasta(uri, fp);
+  }
+  @Test
+  public void testNonGziplocalFileIO() throws IOException
+  {
+    String filepath;
+    FileParse fp = new FileParse(filepath=NOTGZALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE);
+    assertValidFasta(filepath, fp);
+  }
+}
diff --git a/test/jalview/io/NewickFileTests.java b/test/jalview/io/NewickFileTests.java
new file mode 100644 (file)
index 0000000..2ee3623
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ * 
+ */
+package jalview.io;
+
+import static org.junit.Assert.*;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Vector;
+
+import jalview.analysis.NJTree;
+import jalview.analysis.SequenceIdMatcher;
+import jalview.datamodel.SequenceI;
+import jalview.datamodel.SequenceNode;
+
+import org.jmol.util.ArrayUtil;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+/**
+ * @author jimp
+ * 
+ */
+@RunWith(Parameterized.class)
+public class NewickFileTests
+{
+
+  @Parameters
+  public static Collection data()
+  {
+    return Arrays
+            .asList(new Object[][]
+            {
+                    
+                new String[]
+                {
+                    "Simple uniref50 newick",
+                    "(((FER_BRANA:128.0,FER3_RAPSA:128.0):50.75,FER_CAPAA:178.75):121.94443,(Q93Z60_ARATH:271.45456,((O80429_MAIZE:183.0,FER1_MAIZE:183.0):30.5,((Q7XA98_TRIPR:90.0,FER1_PEA:90.0):83.32143,(((FER2_ARATH:64.0,FER1_ARATH:64.0):94.375,(FER1_SPIOL:124.5,FER1_MESCR:124.5):33.875):6.4166718,((Q93XJ9_SOLTU:33.5,FER1_SOLLC:33.5):49.0,FER_CAPAN:82.5):82.29167):8.529755):40.178574):57.95456):29.239868);" },
+                new String[]
+                {
+                    "Tree with quotes",
+                    "('Syn_PROSU-1_IIh_3d(CA4)|CK_Syn_PROSU-1_1907':1.0638313,'Syn_MINOS11_5.3_3d(CA4)|CK_Syn_MINOS11_750':1.063831);" },
+                new String[]
+                {
+                    "Tree with double escaped comma in node",
+                    "('Syn_PROSU-1_IIh_3d(CA4)|CK_Syn_PROSU-1_1907':1.0638313,'Syn_MINOS11_5.3_3d(CA4)''|CK_Syn_MINOS11_750':1.063831);" } });
+  };
+
+  String name, testTree;
+
+  public NewickFileTests(String _name, String _testTree)
+  {
+    this.name = _name;
+    this.testTree = _testTree;
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  @Test
+  public void testTreeIO() throws Exception
+  {
+    String stage = "Init", treename = " '" + name + "' :";
+    try
+    {
+      stage = "Parsing testTree " + treename;
+      System.out.println(treename + "\n" + testTree);
+      NewickFile nf = new NewickFile(testTree, FormatAdapter.PASTE);
+      nf.parse();
+      assertTrue(stage + "Invalid Tree '" + nf.getWarningMessage() + "'",
+              nf.isValid());
+      SequenceNode tree = nf.getTree();
+      assertTrue(stage + "Null Tree", tree != null);
+      stage = "Creating newick file from testTree " + treename;
+      String gentree = new NewickFile(tree).print(nf.HasBootstrap(),
+              nf.HasDistances());
+      assertTrue(stage + "Empty string generated", gentree != null
+              && gentree.trim().length() > 0);
+      stage = "Parsing regenerated testTree " + treename;
+      NewickFile nf_regen = new NewickFile(gentree, FormatAdapter.PASTE);
+      nf_regen.parse();
+      assertTrue(
+              stage + "Newick file is invalid ('"
+                      + nf_regen.getWarningMessage() + "')",
+              nf_regen.isValid());
+      SequenceNode tree_regen = nf.getTree();
+      assertTrue(stage + "Null Tree", tree_regen != null);
+      stage = "Compare original and generated tree" + treename;
+
+      Vector oseqs, nseqs;
+      oseqs = new NJTree(new SequenceI[0], nf).findLeaves(nf.getTree(),
+              new Vector());
+      assertTrue(stage + "No nodes in original tree.", oseqs.size() > 0);
+      SequenceI[] olsqs = new SequenceI[oseqs.size()];
+      for (int i = 0, iSize = oseqs.size(); i < iSize; i++)
+      {
+        olsqs[i] = (SequenceI) ((SequenceNode) oseqs.get(i)).element();
+      }
+      nseqs = (Vector) new NJTree(new SequenceI[0], nf_regen).findLeaves(
+              nf_regen.getTree(), new Vector());
+      assertTrue(stage + "No nodes in regerated tree.", nseqs.size() > 0);
+      SequenceI[] nsqs = new SequenceI[nseqs.size()];
+      for (int i = 0, iSize = nseqs.size(); i < iSize; i++)
+      {
+        nsqs[i] = (SequenceI) ((SequenceNode) nseqs.get(i)).element();
+      }
+      assertTrue(stage + " Different number of leaves (original "
+              + olsqs.length + " and regen " + nsqs.length + ")",
+              olsqs.length == nsqs.length);
+      SequenceIdMatcher omatcher = new SequenceIdMatcher(olsqs), nmatcher = new SequenceIdMatcher(
+              nsqs);
+
+      SequenceI[] osmatches = omatcher.findIdMatch(nsqs);
+      SequenceI[] nsmatches = nmatcher.findIdMatch(olsqs);
+      String warns = "";
+      for (int i = 0, iSize = nseqs.size(); i < iSize; i++)
+      {
+        if (nsmatches[i] == null)
+        {
+          warns += "\noriginal sequence ID '" + olsqs[i].getName()
+                  + "' wasn't found in regenerated set.";
+        }
+        if (osmatches[i] == null)
+        {
+          warns += "\nregenerated sequence ID '" + nsqs[i].getName()
+                  + "' wasn't found in original set.";
+        }
+      }
+
+      if (warns.length() > 0)
+      {
+        fail(stage + warns);
+      }
+    } catch (Exception x)
+    {
+      throw (new Exception(stage + "Exception raised", x));
+    }
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+
+}
diff --git a/test/jalview/io/StockholmFileTest.java b/test/jalview/io/StockholmFileTest.java
new file mode 100644 (file)
index 0000000..4505f16
--- /dev/null
@@ -0,0 +1,309 @@
+package jalview.io;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+
+import java.io.File;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class StockholmFileTest
+{
+
+  static String PfamFile = "examples/PF00111_seed.stk",
+          RfamFile = "examples/RF00031_folded.stk";
+
+  @Test
+  public void pfamFileIO() throws Exception
+  {
+    testFileIOwithFormat(new File(PfamFile), "STH");
+  }
+  @Test
+  public void pfamFileDataExtraction() throws Exception
+  {  AppletFormatAdapter af = new AppletFormatAdapter();
+    AlignmentI al = af.readFile(PfamFile, af.FILE,
+            new IdentifyFile().Identify(PfamFile, af.FILE));
+    int numpdb = 0;
+    for (SequenceI sq : al.getSequences())
+    {
+      if (sq.getPDBId() != null)
+      {
+        numpdb += sq.getPDBId().size();
+      }
+    }
+    assertTrue(
+            "PF00111 seed alignment has at least 1 PDB file, but the reader found none.",
+            numpdb > 0);
+  }
+
+  @Test
+  public void rfamFileIO() throws Exception
+  {
+    testFileIOwithFormat(new File(RfamFile), "STH");
+  }
+
+  /**
+   * test alignment data in given file can be imported, exported and reimported
+   * with no dataloss
+   * 
+   * @param f
+   *          - source datafile (IdentifyFile.identify() should work with it)
+   * @param ioformat
+   *          - label for IO class used to write and read back in the data from
+   *          f
+   */
+  public static void testFileIOwithFormat(File f, String ioformat)
+  {
+    System.out.println("Reading file: " + f);
+    String ff = f.getPath();
+    try
+    {
+      AppletFormatAdapter rf = new AppletFormatAdapter();
+
+      Alignment al = rf.readFile(ff, AppletFormatAdapter.FILE,
+              new IdentifyFile().Identify(ff, AppletFormatAdapter.FILE));
+
+      assertNotNull("Couldn't read supplied alignment data.", al);
+
+      // make sure dataset is initialised ? not sure about this
+      for (int i = 0; i < al.getSequencesArray().length; ++i)
+      {
+        al.getSequenceAt(i).setDatasetSequence(al.getSequenceAt(i));
+      }
+      String outputfile = rf.formatSequences(ioformat, al, true);
+      System.out.println("Output file in '"+ioformat+"':\n"+outputfile+"\n<<EOF\n");
+      // test for consistency in io
+      Alignment al_input = new AppletFormatAdapter().readFile(outputfile,
+              AppletFormatAdapter.PASTE, ioformat);
+      assertNotNull("Couldn't parse reimported alignment data.", al_input);
+
+      String identifyoutput = new IdentifyFile().Identify(outputfile,
+              AppletFormatAdapter.PASTE);
+      assertNotNull("Identify routine failed for outputformat " + ioformat,
+              identifyoutput);
+      assertTrue(
+              "Identify routine could not recognise output generated by '"
+                      + ioformat + "' writer",
+              ioformat.equals(identifyoutput));
+      testAlignmentEquivalence(al, al_input);
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+      assertTrue("Couln't format the alignment for output file.", false);
+    }
+  }
+
+  /**
+   * assert alignment equivalence
+   * 
+   * @param al
+   *          'original'
+   * @param al_input
+   *          'secondary' or generated alignment from some datapreserving
+   *          transformation
+   */
+  public static void testAlignmentEquivalence(AlignmentI al,
+          AlignmentI al_input)
+  {
+    assertNotNull("Original alignment was null", al);
+    assertNotNull("Generated alignment was null", al_input);
+
+    assertTrue(
+            "Alignment dimension mismatch: originl contains "
+                    + al.getHeight() + " and generated has "
+                    + al_input.getHeight() + " sequences; original has "
+                    + al.getWidth() + " and generated has "
+                    + al_input.getWidth() + " columns.",
+            al.getHeight() == al_input.getHeight()
+                    && al.getWidth() == al_input.getWidth());
+
+    // check Alignment annotation
+    AlignmentAnnotation[] aa_new = al_input.getAlignmentAnnotation();
+    AlignmentAnnotation[] aa_original = al.getAlignmentAnnotation();
+
+    // note - at moment we do not distinguish between alignment without any
+    // annotation rows and alignment with no annotation row vector
+    // we might want to revise this in future
+    int aa_new_size = (aa_new == null ? 0 : aa_new.length), aa_original_size = (aa_original == null ? 0
+            : aa_original.length);
+    Map<Integer,java.util.BitSet> orig_groups=new HashMap<Integer,java.util.BitSet>(),new_groups=new HashMap<Integer,java.util.BitSet>();
+
+    if (aa_new != null && aa_original != null)
+    {
+      for (int i = 0; i < aa_original.length; i++)
+      {
+        if (aa_new.length>i) {
+          assertTrue("Different alignment annotation at position "+i,
+                equalss(aa_original[i], aa_new[i]));
+          // compare graphGroup or graph properties - needed to verify JAL-1299
+          assertTrue("Graph type not identical.",aa_original[i].graph==aa_new[i].graph);
+          assertTrue("Visibility not identical.", aa_original[i].visible==aa_new[i].visible);
+          assertTrue(
+                  "Threshold line not identical.",
+                  aa_original[i].threshold == null ? aa_new[i].threshold == null
+                          : aa_original[i].threshold
+                                  .equals(aa_new[i].threshold));
+          // graphGroup may differ, but pattern should be the same
+          Integer o_ggrp=new Integer(aa_original[i].graphGroup+2),n_ggrp=new Integer(aa_new[i].graphGroup+2);
+          BitSet orig_g=orig_groups.get(o_ggrp),new_g=new_groups.get(n_ggrp);
+          if (orig_g==null) {
+            orig_groups.put(o_ggrp,orig_g= new BitSet());
+          }
+          if (new_g==null) {
+            new_groups.put(n_ggrp, new_g=new BitSet());
+          }
+          assertTrue("Graph Group pattern differs at annotation "+i, orig_g.equals(new_g));
+          orig_g.set(i); new_g.set(i);
+        } else {
+          System.err.println("No matching annotation row for "+aa_original[i].toString());
+        }
+      }
+    }
+    assertTrue(
+            "Generated and imported alignment have different annotation sets ("
+                    + aa_new_size + " != " + aa_original_size + ")",
+            aa_new_size == aa_original_size);
+
+    // check sequences, annotation and features
+    SequenceI[] seq_original = new SequenceI[al.getSequencesArray().length];
+    seq_original = al.getSequencesArray();
+    SequenceI[] seq_new = new SequenceI[al_input.getSequencesArray().length];
+    seq_new = al_input.getSequencesArray();
+    SequenceFeature[] sequenceFeatures_original, sequenceFeatures_new;
+    AlignmentAnnotation annot_original, annot_new;
+    //
+    for (int i = 0; i < al.getSequencesArray().length; i++)
+    {
+      String name = seq_original[i].getName();
+      int start = seq_original[i].getStart();
+      int end = seq_original[i].getEnd();
+      System.out.println("Check sequence: " + name + "/" + start + "-"
+              + end);
+
+      // search equal sequence
+      for (int in = 0; in < al_input.getSequencesArray().length; in++)
+      {
+        if (name.equals(seq_new[in].getName())
+                && start == seq_new[in].getStart()
+                && end == seq_new[in].getEnd())
+        {
+          String ss_original = seq_original[i].getSequenceAsString();
+          String ss_new = seq_new[in].getSequenceAsString();
+          assertTrue("The sequences " + name + "/" + start + "-" + end
+                  + " are not equal", ss_original.equals(ss_new));
+
+          assertTrue(
+                  "Sequence Features were not equivalent",
+                  (seq_original[i].getSequenceFeatures() == null && seq_new[in]
+                          .getSequenceFeatures() == null)
+                          || (seq_original[i].getSequenceFeatures() != null && seq_new[in]
+                                  .getSequenceFeatures() != null));
+          // compare sequence features
+          if (seq_original[i].getSequenceFeatures() != null
+                  && seq_new[in].getSequenceFeatures() != null)
+          {
+            System.out.println("There are feature!!!");
+            sequenceFeatures_original = new SequenceFeature[seq_original[i]
+                    .getSequenceFeatures().length];
+            sequenceFeatures_original = seq_original[i]
+                    .getSequenceFeatures();
+            sequenceFeatures_new = new SequenceFeature[seq_new[in]
+                    .getSequenceFeatures().length];
+            sequenceFeatures_new = seq_new[in].getSequenceFeatures();
+
+            assertTrue("different number of features", seq_original[i]
+                    .getSequenceFeatures().length == seq_new[in]
+                    .getSequenceFeatures().length);
+
+            for (int feat = 0; feat < seq_original[i].getSequenceFeatures().length; feat++)
+            {
+              assertTrue("Different features",
+                      sequenceFeatures_original[feat]
+                              .equals(sequenceFeatures_new[feat]));
+            }
+          }
+          // compare alignment annotation
+          if (al.getSequenceAt(i).getAnnotation() != null
+                  && al_input.getSequenceAt(in).getAnnotation() != null)
+          {
+            for (int j = 0; j < al.getSequenceAt(i).getAnnotation().length; j++)
+            {
+              if (al.getSequenceAt(i).getAnnotation()[j] != null
+                      && al_input.getSequenceAt(in).getAnnotation()[j] != null)
+              {
+                annot_original = al.getSequenceAt(i).getAnnotation()[j];
+                annot_new = al_input.getSequenceAt(in).getAnnotation()[j];
+                assertTrue("Different annotation elements",
+                        equalss(annot_original, annot_new));
+              }
+            }
+          }
+          else if (al.getSequenceAt(i).getAnnotation() == null
+                  && al_input.getSequenceAt(in).getAnnotation() == null)
+          {
+            System.out.println("No annotations");
+          }
+          else if (al.getSequenceAt(i).getAnnotation() != null
+                  && al_input.getSequenceAt(in).getAnnotation() == null)
+          {
+            assertTrue("Annotations differed between sequences ("
+                    + al.getSequenceAt(i).getName() + ") and ("
+                    + al_input.getSequenceAt(i).getName() + ")", false);
+          }
+          break;
+        }
+      }
+    }
+  }
+
+  /*
+   * compare annotations
+   */
+  private static boolean equalss(AlignmentAnnotation annot_or,
+          AlignmentAnnotation annot_new)
+  {
+    if (annot_or.annotations.length != annot_new.annotations.length)
+    {
+      System.err.println("Different lengths for annotation row elements: "+annot_or.annotations.length +"!="+ annot_new.annotations.length);
+      return false;
+    }
+    for (int i = 0; i < annot_or.annotations.length; i++)
+    {
+      Annotation an_or=annot_or.annotations[i],an_new=annot_new.annotations[i];
+      if (an_or != null
+              && an_new!= null)
+      {
+        if (!an_or.displayCharacter.trim()
+                .equals(an_new.displayCharacter.trim())
+                || !(""+an_or.secondaryStructure).trim().equals((""+an_new.secondaryStructure).trim())
+                || (an_or.description != an_new.description && (an_or.description == null
+                        || an_new.description == null || !an_or.description
+                          .equals(an_new.description))))
+        {
+          System.err.println("Annotation Element Mismatch\nElement "+i+" in original: "+annot_or.annotations[i].toString()+"\nElement "+i+" in new: "+annot_new.annotations[i].toString());
+          return false;
+        }
+      }
+      else if (annot_or.annotations[i] == null
+              && annot_new.annotations[i] == null)
+      {
+        continue;
+      }
+      else
+      {
+        System.err.println("Annotation Element Mismatch\nElement "+i+" in original: "+(annot_or.annotations[i]==null ? "is null" : annot_or.annotations[i].toString())+"\nElement "+i+" in new: "+(annot_new.annotations[i] == null ? "is null" : annot_new.annotations[i].toString()));
+        return false;
+      }
+    }
+    return true;
+  }
+}
diff --git a/test/jalview/io/test_gz_fasta.gz b/test/jalview/io/test_gz_fasta.gz
new file mode 100644 (file)
index 0000000..f2850cf
Binary files /dev/null and b/test/jalview/io/test_gz_fasta.gz differ
diff --git a/test/jalview/schemes/DnaCodonTests.java b/test/jalview/schemes/DnaCodonTests.java
new file mode 100644 (file)
index 0000000..3d025a8
--- /dev/null
@@ -0,0 +1,66 @@
+package jalview.schemes;
+
+import static org.junit.Assert.*;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Vector;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DnaCodonTests
+{
+
+  @Test
+  public void testAmbiguityCodeGeneration()
+  {
+    assertTrue(ResidueProperties.ambiguityCodes.size()>0);
+  }
+  @Test
+  public void testAmbiguityCodon() {
+    for (String ac:ResidueProperties.ambiguityCodes.keySet())
+    {
+      assertTrue("Couldn't resolve GGN as glycine codon",ResidueProperties.codonHash2.get("GG"+ac).equals("G"));
+    }
+  }
+  @Test
+  public void regenerateCodonTable() {
+    for (Map.Entry<String, String> codon:ResidueProperties.codonHash2.entrySet())
+    {
+      System.out.println("ResidueProperties.codonHash2.set(\""+codon.getKey()+"\", \""+codon.getValue()+"\");");
+    }
+  }
+  @Test
+  public void checkOldCodonagainstNewCodonTable() {
+    // note - this test will be removed once the old codon table (including Vectors) is removed
+    String additional="",failtrans="",differentTr="";
+    for (Object aa:ResidueProperties.codonHash.keySet())
+    {
+      String amacid=(String) aa;
+      for (Object codons:((Vector)ResidueProperties.codonHash.get(amacid)))
+      {
+        String codon = (String) codons;
+        String trans = ResidueProperties.codonTranslate(codon);
+        String oldtrans = ResidueProperties._codonTranslate(codon);
+        if (trans==null) {
+          additional+="\nOld translation table includes additional codons for "+amacid+" : "+codon;
+        }
+        if (oldtrans==null) {
+          failtrans+=("\nold translation routine failed for old translation entry (aa was "+amacid+" codon was "+codon+")");
+        }
+        if (!oldtrans.equals(trans))
+        {
+          differentTr+=("\nDifferent translation for old and new routines: "+amacid+" "+codon+" => expected "+oldtrans+" and got "+trans);
+        }
+      }
+    }
+    assertTrue(""+additional+"\n"+failtrans+"\n"+differentTr,additional.length()==0 && failtrans.length()==0 && differentTr.length()==0);
+  }
+}
index b43ada2..2d40dd4 100644 (file)
@@ -17,8 +17,9 @@
  */
 package jalview.ws.gui;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 import jalview.gui.WsJobParameters;
+import jalview.ws.jabaws.JalviewJabawsTestUtils;
 import jalview.ws.jws2.JabaPreset;
 import jalview.ws.jws2.Jws2Discoverer;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
@@ -29,11 +30,11 @@ import java.awt.event.WindowListener;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Vector;
 
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import compbio.metadata.Option;
@@ -44,12 +45,6 @@ import compbio.metadata.PresetManager;
 public class Jws2ParamView
 {
   /**
-   * test servers
-   */
-  public static String[] serviceUrls = new String[]
-  { "http://localhost:8080/jabaws" };
-
-  /**
    * which services to test
    */
   public static List<String> serviceTests = new ArrayList<String>();
@@ -63,33 +58,16 @@ public class Jws2ParamView
     serviceTests.add("AAConWS".toLowerCase());
   }
 
+  public static Jws2Discoverer disc=null;
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+    disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
+    
+  }
   @Test
   public void testJws2Gui()
   {
-    jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
-            .getDiscoverer();
-    int p = 0;
-    String svcurls="";
-    Vector<String> services = new Vector<String>();
-    for (String url : serviceUrls)
-    {
-      svcurls+=url+"; ";
-      services.add(url);
-    }
-    ;
-    Jws2Discoverer.setServiceUrls(services);
-
-    try
-    {
-      disc.run();
-    } catch (Exception e)
-    {
-      System.err.println("Aborting. Problem discovering services. Tried "+svcurls);
-      e.printStackTrace();
-      return;
-    }
-    assertTrue("Failed to discover any services at ",
-            disc.getServices().size() > 0);
     Jws2Instance lastserv = null;
     Iterator<String> presetEnum = presetTests.iterator();
     for (Jws2Instance service : disc.getServices())
diff --git a/test/jalview/ws/jabaws/DisorderAnnotExportImport.java b/test/jalview/ws/jabaws/DisorderAnnotExportImport.java
new file mode 100644 (file)
index 0000000..fa19d00
--- /dev/null
@@ -0,0 +1,144 @@
+package jalview.ws.jabaws;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.io.AnnotationFile;
+import jalview.io.FormatAdapter;
+import jalview.io.StockholmFileTest;
+import jalview.ws.jws2.AADisorderClient;
+import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DisorderAnnotExportImport
+{
+  public static String testseqs = "examples/uniref50.fa";
+
+  public static Jws2Discoverer disc;
+
+  public static List<Jws2Instance> iupreds;
+
+  jalview.ws.jws2.AADisorderClient disorderClient;
+
+  public static jalview.gui.AlignFrame af = null;
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+
+    jalview.bin.Cache.initLogger();
+    disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
+    iupreds = new ArrayList<Jws2Instance>();
+    for (Jws2Instance svc : disc.getServices())
+    {
+      if (svc.getServiceTypeURI().toLowerCase().contains("iupredws"))
+      {
+        iupreds.add(svc);
+      }
+    }
+    assertTrue("Couldn't discover any IUPred services to use to test.",
+            iupreds.size() > 0);
+    jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
+    af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.FormatAdapter.FILE);
+    assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+    if (af != null)
+    {
+      af.setVisible(false);
+      af.dispose();
+    }
+  }
+
+  /**
+   * test for patches to JAL-1294
+   */
+  @Test
+  public void testDisorderAnnotExport()
+  {
+    disorderClient = new AADisorderClient(iupreds.get(0), af, null, null);
+    af.getViewport().getCalcManager().startWorker(disorderClient);
+    do
+    {
+      try
+      {
+        Thread.sleep(50);
+      } catch (InterruptedException x)
+      {
+      }
+      ;
+    } while (af.getViewport().getCalcManager().isWorking());
+    AlignmentI orig_alig = af.getViewport().getAlignment();
+    // NOTE: Consensus annotation row cannot be exported and reimported faithfully - so we remove them
+    List<AlignmentAnnotation> toremove = new ArrayList<AlignmentAnnotation>();
+    for (AlignmentAnnotation aa:orig_alig.getAlignmentAnnotation())
+    {
+      if (aa.autoCalculated)
+      {
+        toremove.add(aa);
+      }
+    }
+    for (AlignmentAnnotation aa:toremove)
+    {
+      orig_alig.deleteAnnotation(aa);
+    }
+    testAnnotationFileIO("Testing IUPred Annotation IO", orig_alig);
+
+  }
+
+  public static void testAnnotationFileIO(String testname, AlignmentI al)
+  {
+    try
+    {
+      String aligfileout = new FormatAdapter().formatSequences("PFAM",
+              al.getSequencesArray());
+      String anfileout = new AnnotationFile().printAnnotations(
+              al.getAlignmentAnnotation(), al.getGroups(),
+              al.getProperties());
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nAlignment annotation file was not regenerated. Null string",
+              anfileout != null);
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nAlignment annotation file was not regenerated. Empty string",
+              anfileout.length() > "JALVIEW_ANNOTATION".length());
+
+      System.out.println("Output annotation file:\n" + anfileout
+              + "\n<<EOF\n");
+
+      AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
+              FormatAdapter.PASTE, "PFAM");
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nregenerated annotation file did not annotate alignment.",
+              new AnnotationFile().readAnnotationFile(al_new, anfileout,
+                      FormatAdapter.PASTE));
+
+      // test for consistency in io
+      StockholmFileTest.testAlignmentEquivalence(al, al_new);
+      return;
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    fail("Test "
+            + testname
+            + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
+  }
+
+}
diff --git a/test/jalview/ws/jabaws/JalviewJabawsTestUtils.java b/test/jalview/ws/jabaws/JalviewJabawsTestUtils.java
new file mode 100644 (file)
index 0000000..f7d0e48
--- /dev/null
@@ -0,0 +1,64 @@
+package jalview.ws.jabaws;
+
+import static org.junit.Assert.*;
+import jalview.ws.jws2.Jws2Discoverer;
+
+import java.util.Vector;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class JalviewJabawsTestUtils
+{
+  
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+
+  /**
+   * test servers
+   */
+  public static String[] serviceUrls = new String[]
+  { "http://localhost:8080/jabaws" };
+
+  @Test
+  public void testAnnotExport()
+  {
+    fail("Not yet implemented");
+  }
+
+  public static jalview.ws.jws2.Jws2Discoverer getJabawsDiscoverer() {
+    jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
+            .getDiscoverer();
+    int p = 0;
+    String svcurls="";
+    Vector<String> services = new Vector<String>();
+    for (String url : JalviewJabawsTestUtils.serviceUrls)
+    {
+      svcurls+=url+"; ";
+      services.add(url);
+    }
+    ;
+    Jws2Discoverer.setServiceUrls(services);
+  
+    try
+    {
+      disc.run();
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+      fail("Aborting. Problem discovering services. Tried "+svcurls);
+    }
+    assertTrue("Failed to discover any services at ",
+            disc.getServices().size() > 0);
+    return disc;
+  }
+
+}
diff --git a/test/jalview/ws/jabaws/RNAStructExportImport.java b/test/jalview/ws/jabaws/RNAStructExportImport.java
new file mode 100644 (file)
index 0000000..2753e64
--- /dev/null
@@ -0,0 +1,232 @@
+package jalview.ws.jabaws;
+
+import static org.junit.Assert.*;
+
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+
+import jalview.api.AlignCalcManagerI;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.gui.Jalview2XML;
+import jalview.io.AnnotationFile;
+import jalview.io.FormatAdapter;
+import jalview.io.StockholmFileTest;
+import jalview.ws.jws2.AADisorderClient;
+import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.RNAalifoldClient;
+import jalview.ws.jws2.SequenceAnnotationWSClient;
+import jalview.ws.jws2.dm.JabaOption;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.AutoCalcSetting;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import compbio.metadata.WrongParameterException;
+
+public class RNAStructExportImport
+{
+  public static String testseqs = "examples/unfolded_RF00031.aln";
+
+  public static Jws2Discoverer disc;
+
+  public static Jws2Instance rnaalifoldws;
+
+  jalview.ws.jws2.RNAalifoldClient alifoldClient;
+
+  public static jalview.gui.AlignFrame af = null;
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+
+    jalview.bin.Cache.initLogger();
+    disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
+
+    for (Jws2Instance svc : disc.getServices())
+    {
+
+      if (svc.getServiceTypeURI().toLowerCase().contains("rnaalifoldws"))
+      {
+        rnaalifoldws = svc;
+      }
+    }
+
+    System.out.println("State of rnaalifoldws: " + rnaalifoldws);
+
+    if (rnaalifoldws == null)
+      System.exit(0);
+
+    jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
+
+    af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.FormatAdapter.FILE);
+
+    assertNotNull("Couldn't load test data ('" + testseqs + "')", af);
+
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+    if (af != null)
+    {
+      af.setVisible(false);
+      af.dispose();
+    }
+  }
+
+  @Test
+  public void testRNAStructExport()
+  {
+
+    alifoldClient = new RNAalifoldClient(rnaalifoldws, af, null, null);
+
+    af.getViewport().getCalcManager().startWorker(alifoldClient);
+
+    do
+    {
+      try
+      {
+        Thread.sleep(50);
+      } catch (InterruptedException x)
+      {
+      }
+      ;
+    } while (af.getViewport().getCalcManager().isWorking());
+
+    AlignmentI orig_alig = af.getViewport().getAlignment();
+
+    testAnnotationFileIO("Testing RNAalifold Annotation IO", orig_alig);
+
+  }
+
+  public static void testAnnotationFileIO(String testname, AlignmentI al)
+  {
+    try
+    {
+      // what format would be appropriate for RNAalifold annotations?
+      String aligfileout = new FormatAdapter().formatSequences("PFAM",
+              al.getSequencesArray());
+
+      String anfileout = new AnnotationFile().printAnnotations(
+              al.getAlignmentAnnotation(), al.getGroups(),
+              al.getProperties());
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nAlignment annotation file was not regenerated. Null string",
+              anfileout != null);
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nAlignment annotation file was not regenerated. Empty string",
+              anfileout.length() > "JALVIEW_ANNOTATION".length());
+
+      System.out.println("Output annotation file:\n" + anfileout
+              + "\n<<EOF\n");
+
+      // again what format would be appropriate?
+      AlignmentI al_new = new FormatAdapter().readFile(aligfileout,
+              FormatAdapter.PASTE, "PFAM");
+      assertTrue(
+              "Test "
+                      + testname
+                      + "\nregenerated annotation file did not annotate alignment.",
+              new AnnotationFile().readAnnotationFile(al_new, anfileout,
+                      FormatAdapter.PASTE));
+
+      // test for consistency in io
+      StockholmFileTest.testAlignmentEquivalence(al, al_new);
+      return;
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    fail("Test "
+            + testname
+            + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
+  }
+
+  @Test
+  public void testRnaalifoldSettingsRecovery()
+  {
+    List<compbio.metadata.Argument> opts = new ArrayList<compbio.metadata.Argument>();
+    for (compbio.metadata.Argument rg : (List<compbio.metadata.Argument>) rnaalifoldws
+            .getRunnerConfig().getArguments())
+    {
+      if (rg.getDescription().contains("emperature"))
+      {
+        try
+        {
+          rg.setValue("292");
+        } catch (WrongParameterException q)
+        {
+          fail("Couldn't set the temperature parameter "
+                  + q.getStackTrace());
+        }
+        opts.add(rg);
+      }
+      if (rg.getDescription().contains("max"))
+      {
+        opts.add(rg);
+      }
+    }
+    alifoldClient = new RNAalifoldClient(rnaalifoldws, af, null, opts);
+    
+    af.getViewport().getCalcManager().startWorker(alifoldClient);
+    
+    do
+    {
+      try
+      {
+        Thread.sleep(50);
+      } catch (InterruptedException x)
+      {
+      }
+      ;
+    } while (af.getViewport().getCalcManager().isWorking());
+    AutoCalcSetting oldacs = af.getViewport().getCalcIdSettingsFor(alifoldClient.getCalcId());
+    String oldsettings = oldacs.getWsParamFile();
+    // write out parameters
+    jalview.gui.AlignFrame nalf=null;
+    assertTrue("Couldn't write out the Jar file",new Jalview2XML(false).SaveAlignment(af, "testRnalifold_param.jar","trial parameter writeout"));
+    assertTrue("Couldn't read back the Jar file",(nalf = new Jalview2XML(false).LoadJalviewAlign("testRnalifold_param.jar"))!=null);
+    if (nalf!=null)
+    {
+      AutoCalcSetting acs = af.getViewport().getCalcIdSettingsFor(alifoldClient.getCalcId());
+      assertTrue("Calc ID settings not recovered from viewport stash", acs.equals(oldacs));
+      assertTrue("Serialised Calc ID settings not identical to those recovered from viewport stash", acs.getWsParamFile().equals(oldsettings));
+      JMenu nmenu=new JMenu();
+      new SequenceAnnotationWSClient().attachWSMenuEntry(nmenu, rnaalifoldws, af);
+      assertTrue("Couldn't get menu entry for service",nmenu.getItemCount()>0);
+      for (Component itm: nmenu.getMenuComponents())
+      {
+        if (itm instanceof JMenuItem)
+        {
+          JMenuItem i = (JMenuItem) itm;
+          if (i.getText().equals(rnaalifoldws.getAlignAnalysisUI().getAAconToggle()))
+                  {
+            i.doClick();
+            break;
+                  }
+        }
+      }
+      while (af.getViewport().isCalcInProgress())
+      {
+        try { Thread.sleep(200);
+        } catch (Exception x) {};
+      }
+      AutoCalcSetting acs2 = af.getViewport().getCalcIdSettingsFor(alifoldClient.getCalcId());
+      assertTrue("Calc ID settings after recalculation has not been recovered.", acs2.getWsParamFile().equals(oldsettings));
+    }
+  }
+}
diff --git a/test/jalview/ws/rest/ShmmrRSBSService.java b/test/jalview/ws/rest/ShmmrRSBSService.java
new file mode 100644 (file)
index 0000000..05f7cd0
--- /dev/null
@@ -0,0 +1,132 @@
+/**
+ * 
+ */
+package jalview.ws.rest;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AlignmentView;
+import jalview.gui.AlignFrame;
+import jalview.io.FileParse;
+import jalview.ws.rest.InputType;
+import jalview.ws.rest.params.SeqGroupIndexVector;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author jimp
+ * 
+ */
+public class ShmmrRSBSService
+{
+
+  @Test
+  public void testSeparatorListToArrayForRestServiceDescriptions()
+  {
+    assertTrue(
+            "separatorListToArray is faulty.",
+            RestServiceDescription.separatorListToArray(
+                    "foo=',',min='foo',max='1,2,3',fa=','", ",").length == 4);
+    assertTrue("separatorListToArray is faulty.",
+            RestServiceDescription.separatorListToArray(
+                    "minsize='2', sep=','", ",").length != 2); // probably should come as 2
+  }
+
+  @Test
+  public void testShmmrService()
+  {
+
+    assertTrue(
+            "Test Rsd Exchange using using default Shmmr service failed.",
+            testRsdExchange("Test using default Shmmr service",
+                    RestClient.makeShmmrRestClient().service));
+  }
+  @Test
+  public void testShmmrServiceDataprep() throws Exception
+  {
+    RestClient _rc = RestClient.makeShmmrRestClient();
+    assertNotNull(_rc);
+    AlignFrame alf = new jalview.io.FileLoader(false).LoadFileWaitTillLoaded("examples/testdata/smad.fa", jalview.io.FormatAdapter.FILE);
+    assertNotNull("Couldn't find test data.",alf);
+    alf.loadJalviewDataFile("examples/testdata/smad_groups.jva",
+            jalview.io.FormatAdapter.FILE, null, null);
+    assertTrue("Couldn't load the test data's annotation file (should be 5 groups but found "+alf.getViewport().getAlignment().getGroups().size()+").", alf.getViewport().getAlignment().getGroups().size()==5);
+    
+    RestClient rc = new RestClient(_rc.service, alf, true);
+    
+    
+    
+    assertNotNull("Couldn't creat RestClient job.",rc);
+    jalview.bin.Cache.initLogger();
+    RestJob rjb = new RestJob(0, new RestJobThread(rc),rc.av.getAlignment(),null);
+    rjb.setAlignmentForInputs(rc.service.getInputParams().values(), rc.av.getAlignment());
+    for (Map.Entry<String,InputType> e:rc.service.getInputParams().entrySet()) {
+      System.out.println("For Input '"+e.getKey()+":\n"+e.getValue().formatForInput(rjb).getContentLength());
+    }
+  }
+
+  private static boolean testRsdExchange(String desc, String servicestring)
+  {
+    try
+    {
+      RestServiceDescription newService = new RestServiceDescription(
+              servicestring);
+      if (!newService.isValid())
+      {
+        throw new Error("Failed to create service from '" + servicestring
+                + "'.\n" + newService.getInvalidMessage());
+      }
+      return testRsdExchange(desc, newService);
+    } catch (Throwable x)
+    {
+      System.err.println("Failed for service (" + desc + "): "
+              + servicestring);
+      x.printStackTrace();
+      return false;
+    }
+  }
+
+  private static boolean testRsdExchange(String desc,
+          RestServiceDescription service)
+  {
+    try
+    {
+      String fromservicetostring = service.toString();
+      RestServiceDescription newService = new RestServiceDescription(
+              fromservicetostring);
+      if (!newService.isValid())
+      {
+        throw new Error("Failed to create service from '"
+                + fromservicetostring + "'.\n"
+                + newService.getInvalidMessage());
+      }
+
+      if (!service.equals(newService))
+      {
+        System.err.println("Failed for service (" + desc + ").");
+        System.err.println("Original service and parsed service differ.");
+        System.err.println("Original: " + fromservicetostring);
+        System.err.println("Parsed  : " + newService.toString());
+        return false;
+      }
+    } catch (Throwable x)
+    {
+      System.err.println("Failed for service (" + desc + "): "
+              + service.toString());
+      x.printStackTrace();
+      return false;
+    }
+    return true;
+  }
+
+}
diff --git a/test/jalview/ws/seqfetcher/DbRefFetcherTest.java b/test/jalview/ws/seqfetcher/DbRefFetcherTest.java
new file mode 100644 (file)
index 0000000..2f826b3
--- /dev/null
@@ -0,0 +1,78 @@
+/**
+ * 
+ */
+package jalview.ws.seqfetcher;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import jalview.datamodel.DBRefSource;
+import jalview.ws.DBRefFetcher;
+import jalview.ws.SequenceFetcher;
+import jalview.ws.dbsources.das.api.jalviewSourceI;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author jimp
+ *
+ */
+public class DbRefFetcherTest
+{
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception
+  {
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception
+  {
+  }
+
+  @Test
+  public void testStandardProtDbs()
+  {
+    String[] defdb = DBRefSource.PROTEINDBS;
+  List<DbSourceProxy> srces = new ArrayList<DbSourceProxy>();
+  for (String ddb : defdb)
+  {
+    SequenceFetcher sfetcher= new SequenceFetcher();
+    List<DbSourceProxy> srcesfordb = sfetcher.getSourceProxy(ddb);
+    
+    if (srcesfordb != null)
+    {
+      srces.addAll(srcesfordb);
+    }
+  }
+  DbSourceProxy uniprot=null;
+  int i=0;
+  // append the selected sequence sources to the default dbs
+  for (DbSourceProxy s:srces)
+  {
+    if (s.getDbSource().equalsIgnoreCase(DBRefSource.UNIPROT))
+    {
+      i++;
+    }
+    
+    if (s instanceof jalview.ws.dbsources.Uniprot)
+    {
+      uniprot = s;
+      break;
+    }
+  }
+          
+  assertTrue("Failed to find Uniprot source as first source amongst "+srces.size()+" sources (source was at position "+i+")", uniprot!=null && i<2);
+  }
+
+}
index 1fc49fc..e34e520 100755 (executable)
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- This script was automatically generated using InstallAnywhere 2012 Standard, Build 4349
+<!-- This script was automatically generated using InstallAnywhere 2013 Professional, Build 4538
      STATUS: Fully Functional LICENSED Edition
-     DATE:   Thu Nov 08 16:49:06 GMT 2012 -->
-<InstallAnywhere_Deployment_Project increments="4992">
+     DATE:   Fri Nov 01 13:57:32 GMT 2013 -->
+<InstallAnywhere_Deployment_Project increments="5103">
        <!-- ** DO NOT EDIT ** Essential authorization and configuration data ** DO NOT EDIT ** -->
        <essentialScriptInfo>
-               <versionID major="14" minor="0" revision="0"/>
-               <editionID>49,52,46,48,32,83,116,97,110,100,97,114,100,32,66,117,105,108,100,32,52,51,52,57</editionID>
+               <versionID major="15" minor="0" revision="0"/>
+               <editionID>49,53,46,48,32,80,114,111,102,101,115,115,105,111,110,97,108,32,66,117,105,108,100,32,52,53,51,56</editionID>
                <scriptID>12,42,11,85,78,76,73,67,69,78,83,69,68</scriptID>
-               <buildID>3,13,71,76,105,110,117,120,44,32,50,46,54,46,51,50,45,50,55,57,46,49,49,46,49,46,101,108,54,46,120,56,54,95,54,52,44,32,97,109,100,54,52,59,32,74,97,118,97,32,49,46,55,46,48,95,48,51,44,32,79,114,97,99,108,101,32,67,111,114,112,111,114,97,116,105,111,110,44,32,104,116,116,112,58,47,47,106,97,118,97,46,111,114,97,99,108,101,46,99,111,109,47,59,32,101,110,44,32,85,110,107,110,111,119,110,59,32,73,83,79,45,56,56,53,57,45,49</buildID>
+               <buildID>3,13,71,76,105,110,117,120,44,32,50,46,54,46,51,50,45,50,55,57,46,50,50,46,49,46,101,108,54,46,120,56,54,95,54,52,44,32,97,109,100,54,52,59,32,74,97,118,97,32,49,46,55,46,48,95,50,53,44,32,79,114,97,99,108,101,32,67,111,114,112,111,114,97,116,105,111,110,44,32,104,116,116,112,58,47,47,106,97,118,97,46,111,114,97,99,108,101,46,99,111,109,47,59,32,101,110,44,32,85,110,107,110,111,119,110,59,32,73,83,79,45,56,56,53,57,45,49</buildID>
                <!-- The authorizationID may change between project saves and builds.  This does not effect the integrity of the project, nor do changes in this value represent changes in the actual InstallAnywhere project. -->
-               <authorizationID>1,0,0,48,-19,-20,-64,32,80,127,118,101,93,105,116,96,121,48,48,49,56,52,67,98,113,112,112,37,82,101,96,63,55,-11,2,9,13,92,16,10,1,0,0</authorizationID>
+               <authorizationID>1,0,0,64,29,-4,96,96,80,127,118,101,93,105,116,96,121,48,48,49,56,52,67,98,113,112,112,37,82,101,96,63,55,-11,2,0,1,84,19,2,1,0,0</authorizationID>
        </essentialScriptInfo>
-       <installationObjects uniqueObjects="211">
+       <installationObjects uniqueObjects="217">
                <object class="com.zerog.ia.installer.Installer" objectID="fe7d63eda660">
                        <property name="belongsToUninstallPhase">
                                <boolean>false</boolean>
@@ -223,28 +223,28 @@ it will search for ones in this list]]></string>
                                                                </object>
                                                        </method>
                                                        <method name="addElement">
-                                                               <object class="com.zerog.ia.installer.util.LAXPropertyData" objectID="97f991ffa6f7">
+                                                               <object class="com.zerog.ia.installer.util.LAXPropertyData" objectID="bbb5f73fa453">
                                                                        <property name="propertyValue">
-                                                                               <string><![CDATA[33554432]]></string>
+                                                                               <string><![CDATA[jalview.bin.Jalview]]></string>
                                                                        </property>
                                                                        <property name="propertyName">
-                                                                               <string><![CDATA[lax.nl.java.option.java.heap.size.initial]]></string>
+                                                                               <string><![CDATA[lax.main.class]]></string>
                                                                        </property>
                                                                        <property name="propertyComment">
-                                                                               <string><![CDATA[Initial heap size for Jalview]]></string>
+                                                                               <string><![CDATA[the class that contains the main method for the application]]></string>
                                                                        </property>
                                                                </object>
                                                        </method>
                                                        <method name="addElement">
-                                                               <object class="com.zerog.ia.installer.util.LAXPropertyData" objectID="bbb5f73fa453">
+                                                               <object class="com.zerog.ia.installer.util.LAXPropertyData" objectID="97f991ffa6f7">
                                                                        <property name="propertyValue">
-                                                                               <string><![CDATA[jalview.bin.Jalview]]></string>
+                                                                               <string><![CDATA[33554432]]></string>
                                                                        </property>
                                                                        <property name="propertyName">
-                                                                               <string><![CDATA[lax.main.class]]></string>
+                                                                               <string><![CDATA[lax.nl.java.option.java.heap.size.initial]]></string>
                                                                        </property>
                                                                        <property name="propertyComment">
-                                                                               <string><![CDATA[the class that contains the main method for the application]]></string>
+                                                                               <string><![CDATA[Initial heap size for Jalview]]></string>
                                                                        </property>
                                                                </object>
                                                        </method>
@@ -1268,7 +1268,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[min-jaba-client-2.0.jar]]></string>
+                                                               <string><![CDATA[min-jabaws-client-2.1.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1286,7 +1286,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[min-jaba-client-2.0.jar]]></string>
+                                                               <string><![CDATA[min-jabaws-client-2.1.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
                                                                <long>133065</long>
@@ -1742,7 +1742,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>false</boolean>
                                                        </property>
                                                        <property name="sourcePath">
-                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/lib/]]></string>
+                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib/]]></string>
                                                        </property>
                                                        <property name="shouldUninstall">
                                                                <boolean>true</boolean>
@@ -1757,7 +1757,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[spring-web-3.0.5.RELEASE.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>-1</long>
+                                                               <long>395587</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1794,7 +1794,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>false</boolean>
                                                        </property>
                                                        <property name="sourcePath">
-                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/lib/]]></string>
+                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib/]]></string>
                                                        </property>
                                                        <property name="shouldUninstall">
                                                                <boolean>true</boolean>
@@ -1809,7 +1809,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[jdas-1.0.4.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>-1</long>
+                                                               <long>249906</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1846,7 +1846,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>false</boolean>
                                                        </property>
                                                        <property name="sourcePath">
-                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/lib/]]></string>
+                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib/]]></string>
                                                        </property>
                                                        <property name="shouldUninstall">
                                                                <boolean>true</boolean>
@@ -1861,7 +1861,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[groovy-all-1.8.2.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>-1</long>
+                                                               <long>6149494</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1898,7 +1898,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>false</boolean>
                                                        </property>
                                                        <property name="sourcePath">
-                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/lib/]]></string>
+                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib/]]></string>
                                                        </property>
                                                        <property name="shouldUninstall">
                                                                <boolean>true</boolean>
@@ -1913,7 +1913,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[spring-core-3.0.5.RELEASE.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>-1</long>
+                                                               <long>382442</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2634,11 +2634,27 @@ Press "Done" to quit the installer.]]></string>
                                        </property>
                                </object>
                        </property>
+                       <property name="winCodeSign">
+                               <object class="com.flexera.ia.designer.windows.codesign.WindowsCodeSign" objectID="ee9b87d69f5d">
+                                       <property name="certificationFileLoc">
+                                               <string><![CDATA[]]></string>
+                                       </property>
+                                       <property name="url">
+                                               <string><![CDATA[]]></string>
+                                       </property>
+                                       <property name="timestampServer">
+                                               <string><![CDATA[]]></string>
+                                       </property>
+                                       <property name="password">
+                                               <string><![CDATA[]]></string>
+                                       </property>
+                               </object>
+                       </property>
                        <property name="bundledJREInstall">
                                <int>2</int>
                        </property>
                        <property name="onlyInstallBundledVMIfOneNotFoundInSystem">
-                               <boolean>false</boolean>
+                               <boolean>true</boolean>
                        </property>
                        <property name="uninstallJRE">
                                <boolean>true</boolean>
@@ -2725,7 +2741,7 @@ Press "Done" to quit the installer.]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="withoutVmSearchOption">
-                                                                                               <short>10</short>
+                                                                                               <short>13</short>
                                                                                        </property>
                                                                                        <property name="withVMSearchOption">
                                                                                                <short>21</short>
@@ -3034,6 +3050,40 @@ Press "Done" to quit the installer.]]></string>
                                                                                        </property>
                                                                                </object>
                                                                        </method>
+                                                                       <method name="addElement">
+                                                                               <object class="com.zerog.ia.designer.build.BuildTarget" objectID="ee9b974a9f75">
+                                                                                       <property name="type">
+                                                                                               <int>9</int>
+                                                                                       </property>
+                                                                                       <property name="outputDir">
+                                                                                               <string><![CDATA[Windows_Pure_64_Bit]]></string>
+                                                                                       </property>
+                                                                                       <property name="buildNoVM">
+                                                                                               <boolean>false</boolean>
+                                                                                       </property>
+                                                                                       <property name="buildWithVM">
+                                                                                               <boolean>false</boolean>
+                                                                                       </property>
+                                                                                       <property name="withoutVmSearchOption">
+                                                                                               <short>10</short>
+                                                                                       </property>
+                                                                                       <property name="withVMSearchOption">
+                                                                                               <short>21</short>
+                                                                                       </property>
+                                                                                       <property name="win32InstallerLauncherType">
+                                                                                               <short>90</short>
+                                                                                       </property>
+                                                                                       <property name="jvmResolutionFileSpecs">
+                                                                                               <object class="java.util.Vector"/>
+                                                                                       </property>
+                                                                                       <property name="md5CheckApplicable_search_notFound_download">
+                                                                                               <boolean>false</boolean>
+                                                                                       </property>
+                                                                                       <property name="md5CheckApplicable_dontSearch_download">
+                                                                                               <boolean>false</boolean>
+                                                                                       </property>
+                                                                               </object>
+                                                                       </method>
                                                                </object>
                                                        </property>
                                                        <property name="name">
@@ -3081,7 +3131,7 @@ Press "Done" to quit the installer.]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="buildOutputLocation">
-                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/utils/InstallAnywhere/Jalview_Build_Output]]></string>
+                                                               <string><![CDATA[/home/cruisecontrol/checkout/release-jalview/utils/InstallAnywhere/Jalview_Build_Output]]></string>
                                                        </property>
                                                        <property name="relatedProjectSettings">
                                                                <object class="com.zerog.ia.installer.RelatedProjectSettings" objectID="97f2363da6ac">
@@ -3151,629 +3201,747 @@ Press "Done" to quit the installer.]]></string>
                                                                        <property name="children">
                                                                                <object class="java.util.ArrayList" list="true">
                                                                                        <method name="add">
-                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualMachine" objectID="c5bca1b1ab87">
+                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualMachineCollection" objectID="ee9b974d9f75">
                                                                                                        <property name="parent">
                                                                                                                <object refID="c5bca16bab87"/>
                                                                                                        </property>
                                                                                                        <property name="productInformationList">
+                                                                                                               <object class="java.util.ArrayList" list="true"/>
+                                                                                                       </property>
+                                                                                                       <property name="id">
+                                                                                                               <int>0</int>
+                                                                                                       </property>
+                                                                                                       <property name="name">
+                                                                                                               <string><![CDATA[Default VM Tier]]></string>
+                                                                                                       </property>
+                                                                                                       <property name="UUID">
+                                                                                                               <string><![CDATA[ee9b974b-1f13-11b2-9f76-e3eb37649f93]]></string>
+                                                                                                       </property>
+                                                                                                       <property name="info">
+                                                                                                               <string><![CDATA[]]></string>
+                                                                                                       </property>
+                                                                                                       <property name="children">
                                                                                                                <object class="java.util.ArrayList" list="true">
                                                                                                                        <method name="add">
-                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformation" objectID="c5bca17eab87">
-                                                                                                                                       <property name="productName">
-                                                                                                                                               <string><![CDATA[Jalview]]></string>
+                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualMachine" objectID="c5bca1b1ab87">
+                                                                                                                                       <property name="parent">
+                                                                                                                                               <object refID="c5bca16bab87"/>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="productInformationList">
+                                                                                                                                               <object class="java.util.ArrayList" list="true">
+                                                                                                                                                       <method name="add">
+                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformation" objectID="c5bca17eab87">
+                                                                                                                                                                       <property name="productName">
+                                                                                                                                                                               <string><![CDATA[Jalview]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="productInformation">
+                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="productVersion">
+                                                                                                                                                                               <string><![CDATA[2.5.1.0]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="productVendor">
+                                                                                                                                                                               <string><![CDATA[The Barton Group]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="productProperties">
+                                                                                                                                                                               <object class="java.util.ArrayList" list="true">
+                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformationProperty" objectID="c5bca185ab87">
+                                                                                                                                                                                                       <property name="propertyKey">
+                                                                                                                                                                                                               <string><![CDATA[USER_INSTALL_DIR]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyType">
+                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.ProductPropertyType]]></string>
+                                                                                                                                                                                                                               <string><![CDATA[string]]></string>
+                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyDescription">
+                                                                                                                                                                                                               <string><![CDATA[Choose Install Folder]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyValue">
+                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                               </object>
+                                                                                                                                                                                       </method>
+                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformationProperty" objectID="c5bca187ab87">
+                                                                                                                                                                                                       <property name="propertyKey">
+                                                                                                                                                                                                               <string><![CDATA[USER_SHORTCUTS]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyType">
+                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.ProductPropertyType]]></string>
+                                                                                                                                                                                                                               <string><![CDATA[string]]></string>
+                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyDescription">
+                                                                                                                                                                                                               <string><![CDATA[Choose Link Folder]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                       <property name="propertyValue">
+                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                       </property>
+                                                                                                                                                                                               </object>
+                                                                                                                                                                                       </method>
+                                                                                                                                                                               </object>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="internalUID">
+                                                                                                                                                                               <string><![CDATA[c5bca188-1f0c-11b2-ab87-e722731676a6]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                               </object>
+                                                                                                                                                       </method>
+                                                                                                                                               </object>
                                                                                                                                        </property>
-                                                                                                                                       <property name="productInformation">
+                                                                                                                                       <property name="UUID">
+                                                                                                                                               <string><![CDATA[c5bca1ba-1f0c-11b2-ab88-e722731676a6]]></string>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="id">
+                                                                                                                                               <int>0</int>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="name">
+                                                                                                                                               <string><![CDATA[install_VM1]]></string>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="info">
                                                                                                                                                <string><![CDATA[]]></string>
                                                                                                                                        </property>
-                                                                                                                                       <property name="productVersion">
-                                                                                                                                               <string><![CDATA[2.5.1.0]]></string>
+                                                                                                                                       <property name="virtualMachineVersion">
+                                                                                                                                               <string><![CDATA[1.0]]></string>
                                                                                                                                        </property>
-                                                                                                                                       <property name="productVendor">
-                                                                                                                                               <string><![CDATA[The Barton Group]]></string>
+                                                                                                                                       <property name="osInformation">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemInformation" objectID="c5bca18fab87">
+                                                                                                                                                       <property name="jeosType">
+                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                       <method name="add">
+                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
+                                                                                                                                                                               <string><![CDATA[LINUX_UBUNTU_JEOS]]></string>
+                                                                                                                                                                       </method>
+                                                                                                                                                               </object>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="osFullName">
+                                                                                                                                                               <string><![CDATA[Ubuntu Oneric Omelot]]></string>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="version">
+                                                                                                                                                               <string><![CDATA[12.0]]></string>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="osVendor">
+                                                                                                                                                               <string><![CDATA[Ubuntu]]></string>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="fetchPackagesFromLocalRepository">
+                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                       </property>
+                                                                                                                                               </object>
                                                                                                                                        </property>
-                                                                                                                                       <property name="productProperties">
+                                                                                                                                       <property name="operatingSystemPackageInformation">
                                                                                                                                                <object class="java.util.ArrayList" list="true">
                                                                                                                                                        <method name="add">
-                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformationProperty" objectID="c5bca185ab87">
-                                                                                                                                                                       <property name="propertyKey">
-                                                                                                                                                                               <string><![CDATA[USER_INSTALL_DIR]]></string>
+                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemPackage" objectID="c5bca192ab87">
+                                                                                                                                                                       <property name="displayName">
+                                                                                                                                                                               <string><![CDATA[openssh-server]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="version">
+                                                                                                                                                                               <string><![CDATA[1.0.1-4ubuntu3]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="internalName">
+                                                                                                                                                                               <string><![CDATA[openssh-server]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="description">
+                                                                                                                                                                               <string><![CDATA[secure shell (SSH) server, for secure access from remote machines]]></string>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyType">
+                                                                                                                                                                       <property name="targetedJeOS">
                                                                                                                                                                                <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                                                                        <method name="add">
-                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.ProductPropertyType]]></string>
-                                                                                                                                                                                               <string><![CDATA[string]]></string>
+                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
+                                                                                                                                                                                               <string><![CDATA[LINUX_UBUNTU_JEOS]]></string>
                                                                                                                                                                                        </method>
                                                                                                                                                                                </object>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyDescription">
-                                                                                                                                                                               <string><![CDATA[Choose Install Folder]]></string>
+                                                                                                                                                                       <property name="osPkgType">
+                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.OperatingSystemPackageType]]></string>
+                                                                                                                                                                                               <string><![CDATA[DEBIAN]]></string>
+                                                                                                                                                                                       </method>
+                                                                                                                                                                               </object>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyValue">
+                                                                                                                                                                       <property name="pacakgeLocationType">
+                                                                                                                                                                               <string><![CDATA[internet]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="pacakgeFileLocation">
                                                                                                                                                                                <string><![CDATA[]]></string>
                                                                                                                                                                        </property>
                                                                                                                                                                </object>
                                                                                                                                                        </method>
                                                                                                                                                        <method name="add">
-                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ProductInformationProperty" objectID="c5bca187ab87">
-                                                                                                                                                                       <property name="propertyKey">
-                                                                                                                                                                               <string><![CDATA[USER_SHORTCUTS]]></string>
+                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemPackage" objectID="c5bca193ab87">
+                                                                                                                                                                       <property name="displayName">
+                                                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="version">
+                                                                                                                                                                               <string><![CDATA[5.3p1-81.el6]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="internalName">
+                                                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="description">
+                                                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyType">
+                                                                                                                                                                       <property name="targetedJeOS">
                                                                                                                                                                                <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                                                                        <method name="add">
-                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.ProductPropertyType]]></string>
-                                                                                                                                                                                               <string><![CDATA[string]]></string>
+                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
+                                                                                                                                                                                               <string><![CDATA[LINUX_CENTOS_JEOS]]></string>
                                                                                                                                                                                        </method>
                                                                                                                                                                                </object>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyDescription">
-                                                                                                                                                                               <string><![CDATA[Choose Link Folder]]></string>
+                                                                                                                                                                       <property name="osPkgType">
+                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.OperatingSystemPackageType]]></string>
+                                                                                                                                                                                               <string><![CDATA[RPM]]></string>
+                                                                                                                                                                                       </method>
+                                                                                                                                                                               </object>
                                                                                                                                                                        </property>
-                                                                                                                                                                       <property name="propertyValue">
+                                                                                                                                                                       <property name="pacakgeLocationType">
+                                                                                                                                                                               <string><![CDATA[internet]]></string>
+                                                                                                                                                                       </property>
+                                                                                                                                                                       <property name="pacakgeFileLocation">
                                                                                                                                                                                <string><![CDATA[]]></string>
                                                                                                                                                                        </property>
                                                                                                                                                                </object>
                                                                                                                                                        </method>
                                                                                                                                                </object>
                                                                                                                                        </property>
-                                                                                                                                       <property name="internalUID">
-                                                                                                                                               <string><![CDATA[c5bca188-1f0c-11b2-ab87-e722731676a6]]></string>
-                                                                                                                                       </property>
-                                                                                                                               </object>
-                                                                                                                       </method>
-                                                                                                               </object>
-                                                                                                       </property>
-                                                                                                       <property name="UUID">
-                                                                                                               <string><![CDATA[c5bca1ba-1f0c-11b2-ab88-e722731676a6]]></string>
-                                                                                                       </property>
-                                                                                                       <property name="id">
-                                                                                                               <int>0</int>
-                                                                                                       </property>
-                                                                                                       <property name="name">
-                                                                                                               <string><![CDATA[install_VM1]]></string>
-                                                                                                       </property>
-                                                                                                       <property name="info">
-                                                                                                               <string><![CDATA[]]></string>
-                                                                                                       </property>
-                                                                                                       <property name="virtualMachineVersion">
-                                                                                                               <string><![CDATA[1.0]]></string>
-                                                                                                       </property>
-                                                                                                       <property name="osInformation">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemInformation" objectID="c5bca18fab87">
-                                                                                                                       <property name="jeosType">
-                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                       <method name="add">
-                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
-                                                                                                                                               <string><![CDATA[LINUX_UBUNTU_JEOS]]></string>
-                                                                                                                                       </method>
-                                                                                                                               </object>
-                                                                                                                       </property>
-                                                                                                                       <property name="osFullName">
-                                                                                                                               <string><![CDATA[Ubuntu Oneric Omelot]]></string>
-                                                                                                                       </property>
-                                                                                                                       <property name="version">
-                                                                                                                               <string><![CDATA[12.0]]></string>
-                                                                                                                       </property>
-                                                                                                                       <property name="osVendor">
-                                                                                                                               <string><![CDATA[Ubuntu]]></string>
-                                                                                                                       </property>
-                                                                                                                       <property name="fetchPackagesFromLocalRepository">
-                                                                                                                               <boolean>false</boolean>
-                                                                                                                       </property>
-                                                                                                               </object>
-                                                                                                       </property>
-                                                                                                       <property name="operatingSystemPackageInformation">
-                                                                                                               <object class="java.util.ArrayList" list="true">
-                                                                                                                       <method name="add">
-                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemPackage" objectID="c5bca192ab87">
-                                                                                                                                       <property name="displayName">
-                                                                                                                                               <string><![CDATA[openssh-server]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="version">
-                                                                                                                                               <string><![CDATA[1.0.1-4ubuntu3]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="internalName">
-                                                                                                                                               <string><![CDATA[openssh-server]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="description">
-                                                                                                                                               <string><![CDATA[secure shell (SSH) server, for secure access from remote machines]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="targetedJeOS">
-                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                       <method name="add">
-                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
-                                                                                                                                                               <string><![CDATA[LINUX_UBUNTU_JEOS]]></string>
-                                                                                                                                                       </method>
-                                                                                                                                               </object>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="osPkgType">
-                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                       <method name="add">
-                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.OperatingSystemPackageType]]></string>
-                                                                                                                                                               <string><![CDATA[DEBIAN]]></string>
-                                                                                                                                                       </method>
-                                                                                                                                               </object>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="pacakgeLocationType">
-                                                                                                                                               <string><![CDATA[internet]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="pacakgeFileLocation">
-                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                       </property>
-                                                                                                                               </object>
-                                                                                                                       </method>
-                                                                                                                       <method name="add">
-                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.OperatingSystemPackage" objectID="c5bca193ab87">
-                                                                                                                                       <property name="displayName">
-                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="version">
-                                                                                                                                               <string><![CDATA[5.3p1-81.el6]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="internalName">
-                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="description">
-                                                                                                                                               <string><![CDATA[openssh-server.i686]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="targetedJeOS">
-                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                       <method name="add">
-                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.JeOS]]></string>
-                                                                                                                                                               <string><![CDATA[LINUX_CENTOS_JEOS]]></string>
-                                                                                                                                                       </method>
-                                                                                                                                               </object>
+                                                                                                                                       <property name="scriptsInformation">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ScriptsInformation" objectID="c5bca1b4ab88"/>
                                                                                                                                        </property>
-                                                                                                                                       <property name="osPkgType">
-                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                       <method name="add">
-                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.OperatingSystemPackageType]]></string>
-                                                                                                                                                               <string><![CDATA[RPM]]></string>
-                                                                                                                                                       </method>
+                                                                                                                                       <property name="buildTimeApplicationInstallationInformation">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstallationInformation" objectID="c5bca1b4ab87">
+                                                                                                                                                       <property name="installers">
+                                                                                                                                                               <object class="java.util.ArrayList" list="true"/>
+                                                                                                                                                       </property>
                                                                                                                                                </object>
                                                                                                                                        </property>
-                                                                                                                                       <property name="pacakgeLocationType">
-                                                                                                                                               <string><![CDATA[internet]]></string>
-                                                                                                                                       </property>
-                                                                                                                                       <property name="pacakgeFileLocation">
-                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                       </property>
-                                                                                                                               </object>
-                                                                                                                       </method>
-                                                                                                               </object>
-                                                                                                       </property>
-                                                                                                       <property name="scriptsInformation">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ScriptsInformation" objectID="c5bca1b4ab88"/>
-                                                                                                       </property>
-                                                                                                       <property name="buildTimeApplicationInstallationInformation">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstallationInformation" objectID="c5bca1b4ab87">
-                                                                                                                       <property name="installers">
-                                                                                                                               <object class="java.util.ArrayList" list="true"/>
-                                                                                                                       </property>
-                                                                                                               </object>
-                                                                                                       </property>
-                                                                                                       <property name="virtualHardwareInformation">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardwareInformation" objectID="c5bca195ab87">
-                                                                                                                       <property name="virtualHardwareProfileList">
-                                                                                                                               <object class="java.util.ArrayList" list="true">
-                                                                                                                                       <method name="add">
-                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardwareProfile" objectID="c5bca19bab87">
-                                                                                                                                                       <property name="profileId">
-                                                                                                                                                               <string><![CDATA[A Virtual Machine]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="profileDescription">
-                                                                                                                                                               <string><![CDATA[Ubuntu 12.0 Linux]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="hardwareItems">
+                                                                                                                                       <property name="virtualHardwareInformation">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardwareInformation" objectID="c5bca195ab87">
+                                                                                                                                                       <property name="virtualHardwareProfileList">
                                                                                                                                                                <object class="java.util.ArrayList" list="true">
                                                                                                                                                                        <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualCPU" objectID="c5bca1a0ab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>30</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[Virtual CPU(s)]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[Number of virtual CPUs]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="connection">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="address">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardwareProfile" objectID="c5bca19bab87">
+                                                                                                                                                                                       <property name="profileId">
+                                                                                                                                                                                               <string><![CDATA[A Virtual Machine]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                       <property name="profileDescription">
+                                                                                                                                                                                               <string><![CDATA[Ubuntu 12.0 Linux]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                       <property name="hardwareItems">
+                                                                                                                                                                                               <object class="java.util.ArrayList" list="true">
+                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualCPU" objectID="c5bca1a0ab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>30</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[Virtual CPU(s)]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[Number of virtual CPUs]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[hertz * 10^6]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Processor]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualSCSIController" objectID="c5bca1a5ab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>92</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[SCSI Controller 0 - LSI Logic]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[SCSI Controller]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[lsilogic]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Parallel_SCSI_HBA]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualIDEController" objectID="c5bca1a6ab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>99</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[IDE]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[IDE Controller]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[lsilogic]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[IDE_Controller]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardDisk" objectID="c5bca1a8ab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>3</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[disk1]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>92</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>4</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>4</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>4</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[ovf:/disk/vmdisk1]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[byte * 2^30]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Disk_Drive]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="fileReferenceIDOfHardDisk">
+                                                                                                                                                                                                                               <string><![CDATA[file1]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="locationOfDiskFile">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualNetworkAdapter" objectID="c5bca1aaab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>9</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[Flexible]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[The bridged network]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[VM Network]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>2</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Flexible]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>true</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Ethernet_Adapter]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                       </method>
                                                                                                                                                                                                        <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
+                                                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualRAM" objectID="c5bca1abab87">
+                                                                                                                                                                                                                       <property name="id">
+                                                                                                                                                                                                                               <int>87</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="name">
+                                                                                                                                                                                                                               <string><![CDATA[MB of Memory]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="info">
+                                                                                                                                                                                                                               <string><![CDATA[Memory size]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="parent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="addressOnParent">
+                                                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualQuantity">
+                                                                                                                                                                                                                               <long>1024</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="reservation">
+                                                                                                                                                                                                                               <long>1024</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="limit">
+                                                                                                                                                                                                                               <long>1024</long>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="weight">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="hostResource">
+                                                                                                                                                                                                                               <string><![CDATA[]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="automaticAllocation">
+                                                                                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="allocationUnit">
+                                                                                                                                                                                                                               <string><![CDATA[byte * 2^20]]></string>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                                                                                       <method name="add">
+                                                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
+                                                                                                                                                                                                                                               <string><![CDATA[Memory]]></string>
+                                                                                                                                                                                                                                       </method>
+                                                                                                                                                                                                                               </object>
+                                                                                                                                                                                                                       </property>
+                                                                                                                                                                                                               </object>
                                                                                                                                                                                                        </method>
                                                                                                                                                                                                </object>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>false</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[hertz * 10^6]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
+                                                                                                                                                                                       <property name="amazonInstanceType">
                                                                                                                                                                                                <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                                                                                        <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Processor]]></string>
+                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.AmazonInstanceType]]></string>
+                                                                                                                                                                                                               <string><![CDATA[SMALL]]></string>
                                                                                                                                                                                                        </method>
                                                                                                                                                                                                </object>
                                                                                                                                                                                        </property>
                                                                                                                                                                                </object>
                                                                                                                                                                        </method>
+                                                                                                                                                               </object>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="systemType">
+                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                       <method name="add">
+                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualSystemType]]></string>
+                                                                                                                                                                               <string><![CDATA[vmx07]]></string>
+                                                                                                                                                                       </method>
+                                                                                                                                                               </object>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="instanceId">
+                                                                                                                                                               <int>97</int>
+                                                                                                                                                       </property>
+                                                                                                                                               </object>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="startupInfo">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualSystemEntityStartupInfo" objectID="c5bca1b5ab88">
+                                                                                                                                                       <property name="startupDelaySeconds">
+                                                                                                                                                               <long>10</long>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="stopDelaySeconds">
+                                                                                                                                                               <long>10</long>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="startAction">
+                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                                                        <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualSCSIController" objectID="c5bca1a5ab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>92</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[SCSI Controller 0 - LSI Logic]]></string>
+                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.StartAction]]></string>
+                                                                                                                                                                               <string><![CDATA[powerOn]]></string>
+                                                                                                                                                                       </method>
+                                                                                                                                                               </object>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="stopAction">
+                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
+                                                                                                                                                                       <method name="add">
+                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.StopAction]]></string>
+                                                                                                                                                                               <string><![CDATA[guestShutdown]]></string>
+                                                                                                                                                                       </method>
+                                                                                                                                                               </object>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="startOrder">
+                                                                                                                                                               <int>0</int>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="stopOrder">
+                                                                                                                                                               <int>0</int>
+                                                                                                                                                       </property>
+                                                                                                                                               </object>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="firstBootTimeApplicationInstallationInformation">
+                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstallationInformation" objectID="c5bca189ab87">
+                                                                                                                                                       <property name="installers">
+                                                                                                                                                               <object class="java.util.ArrayList" list="true">
+                                                                                                                                                                       <method name="add">
+                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstaller" objectID="c5bca18cab87">
+                                                                                                                                                                                       <property name="iaInstaller">
+                                                                                                                                                                                               <boolean>true</boolean>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[SCSI Controller]]></string>
+                                                                                                                                                                                       <property name="thisInstaller">
+                                                                                                                                                                                               <boolean>true</boolean>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                       <property name="buildConfiguration">
+                                                                                                                                                                                               <object refID="cc2227a996cd"/>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="connection">
+                                                                                                                                                                                       <property name="locationOfInstaller">
                                                                                                                                                                                                <string><![CDATA[]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="address">
+                                                                                                                                                                                       <property name="locationOfResponseFile">
                                                                                                                                                                                                <string><![CDATA[]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>0</int>
+                                                                                                                                                                                       <property name="installationCommand">
+                                                                                                                                                                                               <string><![CDATA[]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                       <property name="executable">
+                                                                                                                                                                                               <string><![CDATA[]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>1</long>
+                                                                                                                                                                                       <property name="buildTarget">
+                                                                                                                                                                                               <string><![CDATA[Linux]]></string>
                                                                                                                                                                                        </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[lsilogic]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>false</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Parallel_SCSI_HBA]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                               </object>
-                                                                                                                                                                       </method>
-                                                                                                                                                                       <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualIDEController" objectID="c5bca1a6ab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>99</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[IDE]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[IDE Controller]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="connection">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="address">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[lsilogic]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>false</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[IDE_Controller]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                               </object>
-                                                                                                                                                                       </method>
-                                                                                                                                                                       <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualHardDisk" objectID="c5bca1a8ab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>3</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[disk1]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>92</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="connection">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="address">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>4</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>4</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>4</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[ovf:/disk/vmdisk1]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>false</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[byte * 2^30]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Disk_Drive]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="fileReferenceIDOfHardDisk">
-                                                                                                                                                                                               <string><![CDATA[file1]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="locationOfDiskFile">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                               </object>
-                                                                                                                                                                       </method>
-                                                                                                                                                                       <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualNetworkAdapter" objectID="c5bca1aaab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>9</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[Flexible]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[The bridged network]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="connection">
-                                                                                                                                                                                               <string><![CDATA[VM Network]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="address">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>2</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>1</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Flexible]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>true</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Ethernet_Adapter]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                               </object>
-                                                                                                                                                                       </method>
-                                                                                                                                                                       <method name="add">
-                                                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.hardware.VirtualRAM" objectID="c5bca1abab87">
-                                                                                                                                                                                       <property name="id">
-                                                                                                                                                                                               <int>87</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="name">
-                                                                                                                                                                                               <string><![CDATA[MB of Memory]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="info">
-                                                                                                                                                                                               <string><![CDATA[Memory size]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="parent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="connection">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="address">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="addressOnParent">
-                                                                                                                                                                                               <int>0</int>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualQuantity">
-                                                                                                                                                                                               <long>1024</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="reservation">
-                                                                                                                                                                                               <long>1024</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="limit">
-                                                                                                                                                                                               <long>1024</long>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="weight">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="hostResource">
-                                                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceSubtype">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceSubtype]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Others]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="automaticAllocation">
-                                                                                                                                                                                               <boolean>false</boolean>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="allocationUnit">
-                                                                                                                                                                                               <string><![CDATA[byte * 2^20]]></string>
-                                                                                                                                                                                       </property>
-                                                                                                                                                                                       <property name="virtualHardwareResourceType">
-                                                                                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                                                                                       <method name="add">
-                                                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualHardwareResourceType]]></string>
-                                                                                                                                                                                                               <string><![CDATA[Memory]]></string>
-                                                                                                                                                                                                       </method>
-                                                                                                                                                                                               </object>
+                                                                                                                                                                                       <property name="internalUID">
+                                                                                                                                                                                               <string><![CDATA[c5bca188-1f0c-11b2-ab87-e722731676a6]]></string>
                                                                                                                                                                                        </property>
                                                                                                                                                                                </object>
                                                                                                                                                                        </method>
                                                                                                                                                                </object>
                                                                                                                                                        </property>
-                                                                                                                                                       <property name="amazonInstanceType">
+                                                                                                                                               </object>
+                                                                                                                                       </property>
+                                                                                                                                       <property name="choosenVMInfo">
+                                                                                                                                               <object class="com.flexera.ia.vapp.chooseavm.ChoosenVMInfo" objectID="ee9b975b9f76">
+                                                                                                                                                       <property name="templateTypeOption">
                                                                                                                                                                <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                                                        <method name="add">
-                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.AmazonInstanceType]]></string>
-                                                                                                                                                                               <string><![CDATA[SMALL]]></string>
+                                                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.chooseavm.VMTemplateTypeOption]]></string>
+                                                                                                                                                                               <string><![CDATA[IA_VM_TEMPLATE]]></string>
                                                                                                                                                                        </method>
                                                                                                                                                                </object>
                                                                                                                                                        </property>
+                                                                                                                                                       <property name="vmTemplateName">
+                                                                                                                                                               <string><![CDATA[No VM Templates available]]></string>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="powerOnVmIfNotRunning">
+                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                       </property>
+                                                                                                                                                       <property name="vmPartOfVapp">
+                                                                                                                                                               <boolean>false</boolean>
+                                                                                                                                                       </property>
                                                                                                                                                </object>
-                                                                                                                                       </method>
-                                                                                                                               </object>
-                                                                                                                       </property>
-                                                                                                                       <property name="systemType">
-                                                                                                                               <object class="java.lang.Enum" javaEnum="true">
-                                                                                                                                       <method name="add">
-                                                                                                                                               <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.VirtualSystemType]]></string>
-                                                                                                                                               <string><![CDATA[vmx07]]></string>
-                                                                                                                                       </method>
+                                                                                                                                       </property>
                                                                                                                                </object>
-                                                                                                                       </property>
-                                                                                                                       <property name="instanceId">
-                                                                                                                               <int>97</int>
-                                                                                                                       </property>
+                                                                                                                       </method>
                                                                                                                </object>
                                                                                                        </property>
-                                                                                                       <property name="startupInfo">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualSystemEntityStartupInfo" objectID="c5bca1b5ab88">
+                                                                                                       <property name="vseStartupInfo">
+                                                                                                               <object class="com.flexera.ia.vapp.datastructures.VirtualSystemEntityStartupInfo" objectID="ee9b974b9f75">
                                                                                                                        <property name="startupDelaySeconds">
                                                                                                                                <long>10</long>
                                                                                                                        </property>
@@ -3792,48 +3960,15 @@ Press "Done" to quit the installer.]]></string>
                                                                                                                                <object class="java.lang.Enum" javaEnum="true">
                                                                                                                                        <method name="add">
                                                                                                                                                <string><![CDATA[com.flexera.ia.vapp.datastructures.enums.StopAction]]></string>
-                                                                                                                                               <string><![CDATA[guestShutdown]]></string>
+                                                                                                                                               <string><![CDATA[powerOff]]></string>
                                                                                                                                        </method>
                                                                                                                                </object>
                                                                                                                        </property>
-                                                                                                               </object>
-                                                                                                       </property>
-                                                                                                       <property name="firstBootTimeApplicationInstallationInformation">
-                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstallationInformation" objectID="c5bca189ab87">
-                                                                                                                       <property name="installers">
-                                                                                                                               <object class="java.util.ArrayList" list="true">
-                                                                                                                                       <method name="add">
-                                                                                                                                               <object class="com.flexera.ia.vapp.datastructures.ApplicationInstaller" objectID="c5bca18cab87">
-                                                                                                                                                       <property name="iaInstaller">
-                                                                                                                                                               <boolean>true</boolean>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="thisInstaller">
-                                                                                                                                                               <boolean>true</boolean>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="buildConfiguration">
-                                                                                                                                                               <object refID="cc2227a996cd"/>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="locationOfInstaller">
-                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="locationOfResponseFile">
-                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="installationCommand">
-                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="executable">
-                                                                                                                                                               <string><![CDATA[]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="buildTarget">
-                                                                                                                                                               <string><![CDATA[Linux]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                                       <property name="internalUID">
-                                                                                                                                                               <string><![CDATA[c5bca188-1f0c-11b2-ab87-e722731676a6]]></string>
-                                                                                                                                                       </property>
-                                                                                                                                               </object>
-                                                                                                                                       </method>
-                                                                                                                               </object>
+                                                                                                                       <property name="startOrder">
+                                                                                                                               <int>0</int>
+                                                                                                                       </property>
+                                                                                                                       <property name="stopOrder">
+                                                                                                                               <int>0</int>
                                                                                                                        </property>
                                                                                                                </object>
                                                                                                        </property>
@@ -3880,6 +4015,9 @@ Press "Done" to quit the installer.]]></string>
                                                                                        </method>
                                                                                </object>
                                                                        </property>
+                                                                       <property name="useSameBuildCredentialsForDeployment">
+                                                                               <boolean>true</boolean>
+                                                                       </property>
                                                                </object>
                                                        </property>
                                                        <property name="supportedHypervisorType">
@@ -3899,7 +4037,7 @@ Press "Done" to quit the installer.]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="credentialInformation">
-                                                               <object class="com.flexera.ia.vapp.datastructures.VMWareCredentialInformationImpl" objectID="f46e0c60ac1e">
+                                                               <object class="com.flexera.ia.vapp.datastructures.VMWareCredentialInformationImpl" objectID="27759feba050">
                                                                        <property name="hostName">
                                                                                <string><![CDATA[]]></string>
                                                                        </property>
@@ -4021,11 +4159,11 @@ Press "Done" to quit the installer.]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.installer.options.valid.vm.list]]></string>
-                                               <string><![CDATA[1.5+]]></string>
+                                               <string><![CDATA[1.6,1.7,1.8+]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.project.build.last.date]]></string>
-                                               <string><![CDATA[30 October 2012 17:05:05 o'clock GMT]]></string>
+                                               <string><![CDATA[21 October 2013 14:27:40 o'clock BST]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.build.platform.windows.vm]]></string>
@@ -4093,7 +4231,7 @@ Press "Done" to quit the installer.]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.project.save.last.date]]></string>
-                                               <string><![CDATA[08 November 2012 16:49:06 o'clock GMT]]></string>
+                                               <string><![CDATA[01 November 2013 13:57:31 o'clock GMT]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.build.options.optimization.platform.cdrom]]></string>
@@ -4113,11 +4251,11 @@ Press "Done" to quit the installer.]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.installer.options.platform.macosx.authentication.gui]]></string>
-                                               <string><![CDATA[true]]></string>
+                                               <string><![CDATA[false]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.installer.options.platform.macosx.vm.version]]></string>
-                                               <string><![CDATA[1.5+]]></string>
+                                               <string><![CDATA[1.6+]]></string>
                                        </method>
                                        <method name="put">
                                                <string><![CDATA[com.zerog.ia.build.platform.java.novm]]></string>
@@ -4281,6 +4419,25 @@ Press "Done" to quit the installer.]]></string>
                        <property name="fileModificationTimestampBehavior">
                                <int>1</int>
                        </property>
+                       <property name="RAIRSpec">
+                               <object class="com.zerog.ia.installer.iseries.RAIRSpec" objectID="ee9b98899f7a">
+                                       <property name="belongsToUninstallPhase">
+                                               <boolean>false</boolean>
+                                       </property>
+                                       <property name="rollbackEnabledCancel">
+                                               <boolean>true</boolean>
+                                       </property>
+                                       <property name="rollbackEnabledError">
+                                               <boolean>true</boolean>
+                                       </property>
+                                       <property name="ruleExpression">
+                                               <string><![CDATA[]]></string>
+                                       </property>
+                                       <property name="enabled">
+                                               <boolean>false</boolean>
+                                       </property>
+                               </object>
+                       </property>
                        <property name="fileModificationTimestamp">
                                <long>-1</long>
                        </property>
@@ -4328,7 +4485,7 @@ Press "Done" to quit the installer.]]></string>
                                                <string><![CDATA[Jalview]]></string>
                                        </property>
                                        <property name="installerName">
-                                               <string><![CDATA[install]]></string>
+                                               <string><![CDATA[install-jalview]]></string>
                                        </property>
                                        <property name="productName">
                                                <string><![CDATA[Jalview]]></string>
@@ -4382,7 +4539,7 @@ Press "Done" to quit the installer.]]></string>
                                                <string><![CDATA[jalview-discuss@jalview.org]]></string>
                                        </property>
                                        <property name="copyright">
-                                               <string><![CDATA[2012]]></string>
+                                               <string><![CDATA[2013]]></string>
                                        </property>
                                        <property name="license">
                                                <string><![CDATA[Commercial]]></string>
@@ -5246,6 +5403,12 @@ This will remove features installed by InstallAnywhere.  It will not remove file
                                        <property name="defaultWinUninstallerUIMode">
                                                <string><![CDATA[SAME_AS_INSTALLER]]></string>
                                        </property>
+                                       <property name="defaultWin64InstallerUIMode">
+                                               <string><![CDATA[GUI]]></string>
+                                       </property>
+                                       <property name="defaultWin64UninstallerUIMode">
+                                               <string><![CDATA[SAME_AS_INSTALLER]]></string>
+                                       </property>
                                        <property name="defaultUnixInstallerUIMode">
                                                <string><![CDATA[GUI]]></string>
                                        </property>
@@ -5281,6 +5444,12 @@ This will remove features installed by InstallAnywhere.  It will not remove file
                        <property name="installerIconName">
                                <string><![CDATA[Icon1.ico]]></string>
                        </property>
+                       <property name="installerIconImagePath">
+                               <string><![CDATA[com/zerog/ia/installer/images/]]></string>
+                       </property>
+                       <property name="installerIconImageName">
+                               <string><![CDATA[iaIcon.png]]></string>
+                       </property>
                        <property name="billboardTimerEnabled">
                                <boolean>false</boolean>
                        </property>
@@ -5357,6 +5526,12 @@ This will remove features installed by InstallAnywhere.  It will not remove file
                        <property name="swidTagIncluded">
                                <boolean>true</boolean>
                        </property>
+                       <property name="codeSignOnMacEnabled">
+                               <boolean>false</boolean>
+                       </property>
+                       <property name="oldStyleInstallersEnabled">
+                               <boolean>false</boolean>
+                       </property>
                        <visualChildren>
                                <object class="com.zerog.ia.installer.InstallSet" objectID="fe7d6493a66a">
                                        <property name="belongsToUninstallPhase">
@@ -6060,7 +6235,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6069,7 +6244,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[jpred_msa.seq.concise]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>7882</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6101,7 +6276,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6110,7 +6285,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[jpred_msa.fasta]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>2079</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6142,7 +6317,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6151,7 +6326,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[plantfdx.annotations]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>547</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6183,7 +6358,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6192,7 +6367,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[plantfdx.fa]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>2655</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6224,7 +6399,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6239,7 +6414,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[exampleFile_2_7.jar]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>107135</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6274,7 +6449,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6283,7 +6458,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[1gaq.txt]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>56649</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6315,7 +6490,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6324,7 +6499,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[uniref50.fa]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>3039</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6356,7 +6531,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6365,7 +6540,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[plantfdx.features]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>6129</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6397,7 +6572,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6406,7 +6581,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[exampleFeatures.txt]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>31397</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6438,7 +6613,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6447,7 +6622,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[uniref50_mz.fa]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>1683</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6479,7 +6654,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6488,7 +6663,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[ferredoxin.nw]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>392</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6520,7 +6695,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
@@ -6529,7 +6704,7 @@ and any path to a file to read from that file]]></string>
                                                                                                <string><![CDATA[RF00031_folded.stk]]></string>
                                                                                        </property>
                                                                                        <property name="fileSize">
-                                                                                               <long>-1</long>
+                                                                                               <long>19118</long>
                                                                                        </property>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
@@ -6538,7 +6713,8 @@ and any path to a file to read from that file]]></string>
                                                                                                <int>0</int>
                                                                                        </property>
                                                                                </object>
-                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="f44fc5d5aba1">
+                                                                               <object refID="f46c2f42ab93"/>
+                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="24485f85a670">
                                                                                        <property name="belongsToUninstallPhase">
                                                                                                <boolean>false</boolean>
                                                                                        </property>
@@ -6561,13 +6737,13 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples/groovy]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
                                                                                                <boolean>true</boolean>
                                                                                        </property>
                                                                                        <property name="destinationName">
-                                                                                               <string><![CDATA[groovy]]></string>
+                                                                                               <string><![CDATA[lib]]></string>
                                                                                        </property>
                                                                                        <property name="removeRecursively">
                                                                                                <boolean>false</boolean>
@@ -6578,8 +6754,40 @@ and any path to a file to read from that file]]></string>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
                                                                                        </property>
+                                                                                       <visualChildren>
+                                                                                               <object refID="24485f87a670"/>
+                                                                                               <object refID="88d4aff3b0c6"/>
+                                                                                               <object refID="24485f88a670"/>
+                                                                                               <object refID="24485f88a671"/>
+                                                                                               <object refID="24485f89a671"/>
+                                                                                               <object refID="24485f8aa671"/>
+                                                                                               <object refID="24485f89a672"/>
+                                                                                               <object refID="24485f8aa672"/>
+                                                                                               <object refID="24485f8ba672"/>
+                                                                                               <object refID="24485f8aa673"/>
+                                                                                               <object refID="24485f8ba673"/>
+                                                                                               <object refID="24485f8ca673"/>
+                                                                                               <object refID="24485f8ba674"/>
+                                                                                               <object refID="24485f8ca674"/>
+                                                                                               <object refID="b1a16838a449"/>
+                                                                                               <object refID="b1a16839a449"/>
+                                                                                               <object refID="495aeddb8b3d"/>
+                                                                                               <object refID="4996716cba8e"/>
+                                                                                               <object refID="8fbb17519b9c"/>
+                                                                                               <object refID="8fbb17529b9c"/>
+                                                                                               <object refID="8fbb17539b9c"/>
+                                                                                               <object refID="8fbb17529b9d"/>
+                                                                                               <object refID="aa3a521fb6bc"/>
+                                                                                               <object refID="aa3a5220b6bc"/>
+                                                                                               <object refID="df3a5220b6bc"/>
+                                                                                               <object refID="aa3a5220b6bc1"/>
+                                                                                               <object refID="f44ca391ab9f"/>
+                                                                                               <object refID="f44ca392ab9f"/>
+                                                                                               <object refID="f44ca393ab9f"/>
+                                                                                               <object refID="f46c2f42ab93"/>
+                                                                                       </visualChildren>
                                                                                </object>
-                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="f44fc598aba0">
+                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="f44fc5d5aba1">
                                                                                        <property name="belongsToUninstallPhase">
                                                                                                <boolean>false</boolean>
                                                                                        </property>
@@ -6602,13 +6810,13 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/opt/homes/cruisecontrol/jalview/examples]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples/groovy]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
-                                                                                               <boolean>false</boolean>
+                                                                                               <boolean>true</boolean>
                                                                                        </property>
                                                                                        <property name="destinationName">
-                                                                                               <string><![CDATA[examples]]></string>
+                                                                                               <string><![CDATA[groovy]]></string>
                                                                                        </property>
                                                                                        <property name="removeRecursively">
                                                                                                <boolean>false</boolean>
@@ -6619,24 +6827,8 @@ and any path to a file to read from that file]]></string>
                                                                                        <property name="macBinary">
                                                                                                <boolean>false</boolean>
                                                                                        </property>
-                                                                                       <visualChildren>
-                                                                                               <object refID="f44fc5b2aba1"/>
-                                                                                               <object refID="f44fc5d5aba1"/>
-                                                                                               <object refID="f44fc608aba1"/>
-                                                                                               <object refID="f44fc63caba2"/>
-                                                                                               <object refID="f44fc640aba2"/>
-                                                                                               <object refID="f44fc645aba2"/>
-                                                                                               <object refID="f44fc648aba2"/>
-                                                                                               <object refID="f44fc64caba2"/>
-                                                                                               <object refID="f44fc654aba2"/>
-                                                                                               <object refID="f44fc67baba3"/>
-                                                                                               <object refID="f44fc683aba3"/>
-                                                                                               <object refID="f44fc687aba3"/>
-                                                                                               <object refID="f44fc68baba3"/>
-                                                                                       </visualChildren>
                                                                                </object>
-                                                                               <object refID="f46c2f42ab93"/>
-                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="24485f85a670">
+                                                                               <object class="com.zerog.ia.installer.actions.InstallDirectory" objectID="f44fc598aba0">
                                                                                        <property name="belongsToUninstallPhase">
                                                                                                <boolean>false</boolean>
                                                                                        </property>
@@ -6659,13 +6851,13 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="sourcePath">
-                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/lib]]></string>
+                                                                                               <string><![CDATA[/home/cruisecontrol/jalview/examples]]></string>
                                                                                        </property>
                                                                                        <property name="shouldUninstall">
-                                                                                               <boolean>true</boolean>
+                                                                                               <boolean>false</boolean>
                                                                                        </property>
                                                                                        <property name="destinationName">
-                                                                                               <string><![CDATA[lib]]></string>
+                                                                                               <string><![CDATA[examples]]></string>
                                                                                        </property>
                                                                                        <property name="removeRecursively">
                                                                                                <boolean>false</boolean>
@@ -6677,36 +6869,19 @@ and any path to a file to read from that file]]></string>
                                                                                                <boolean>false</boolean>
                                                                                        </property>
                                                                                        <visualChildren>
-                                                                                               <object refID="24485f87a670"/>
-                                                                                               <object refID="88d4aff3b0c6"/>
-                                                                                               <object refID="24485f88a670"/>
-                                                                                               <object refID="24485f88a671"/>
-                                                                                               <object refID="24485f89a671"/>
-                                                                                               <object refID="24485f8aa671"/>
-                                                                                               <object refID="24485f89a672"/>
-                                                                                               <object refID="24485f8aa672"/>
-                                                                                               <object refID="24485f8ba672"/>
-                                                                                               <object refID="24485f8aa673"/>
-                                                                                               <object refID="24485f8ba673"/>
-                                                                                               <object refID="24485f8ca673"/>
-                                                                                               <object refID="24485f8ba674"/>
-                                                                                               <object refID="24485f8ca674"/>
-                                                                                               <object refID="b1a16838a449"/>
-                                                                                               <object refID="b1a16839a449"/>
-                                                                                               <object refID="495aeddb8b3d"/>
-                                                                                               <object refID="4996716cba8e"/>
-                                                                                               <object refID="8fbb17519b9c"/>
-                                                                                               <object refID="8fbb17529b9c"/>
-                                                                                               <object refID="8fbb17539b9c"/>
-                                                                                               <object refID="8fbb17529b9d"/>
-                                                                                               <object refID="aa3a521fb6bc"/>
-                                                                                               <object refID="aa3a5220b6bc"/>
-                                                                                               <object refID="df3a5220b6bc"/>
-                                                                                               <object refID="aa3a5220b6bc1"/>
-                                                                                               <object refID="f44ca391ab9f"/>
-                                                                                               <object refID="f44ca392ab9f"/>
-                                                                                               <object refID="f44ca393ab9f"/>
-                                                                                               <object refID="f46c2f42ab93"/>
+                                                                                               <object refID="f44fc5b2aba1"/>
+                                                                                               <object refID="f44fc5d5aba1"/>
+                                                                                               <object refID="f44fc608aba1"/>
+                                                                                               <object refID="f44fc63caba2"/>
+                                                                                               <object refID="f44fc640aba2"/>
+                                                                                               <object refID="f44fc645aba2"/>
+                                                                                               <object refID="f44fc648aba2"/>
+                                                                                               <object refID="f44fc64caba2"/>
+                                                                                               <object refID="f44fc654aba2"/>
+                                                                                               <object refID="f44fc67baba3"/>
+                                                                                               <object refID="f44fc683aba3"/>
+                                                                                               <object refID="f44fc687aba3"/>
+                                                                                               <object refID="f44fc68baba3"/>
                                                                                        </visualChildren>
                                                                                </object>
                                                                        </installChildren>
index d44e95c..0749d9a 100644 (file)
@@ -17,7 +17,7 @@
   You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <project name="jalviewInstallAnywhere" default="build" basedir=".">
-  <property name="IA_LOCATION" value="/home/cruisecontrol/Flexera/IA_2012"/>
+  <property name="IA_LOCATION" value="/home/cruisecontrol/InstallAnywhere 2013/"/>
   <property name="IA_PROJECT" location="Jalview.iap_xml"/>
   <property name="ABS_PATH" value="/home/cruisecontrol/jalview"/> <!-- \/utils\/InstallAnywhere"/> --> <!--/home/cruisecontrol/jalview"/> -->
   <!-- location of top level of jalview distribution directory -->
@@ -42,9 +42,9 @@
   <buildinstaller 
      IAlocation="${IA_LOCATION}"
      IAProjectFile="${IA_PROJECT}_reloc.iap_xml"
-     BuildOutputLocation="${DEST_IADIR}"
-     
-/>
+     BuildOutputLocation="${DEST_IADIR}" >
+     <arg value="-nupd"/>
+     </buildinstaller>
  <delete>
        <fileset dir="${CUR_PATH}">
                <include name="mac_logo.icns"/>
index 2c249de..dfb7f29 100755 (executable)
Binary files a/utils/proguard.jar and b/utils/proguard.jar differ