GlobPlot service, runner and result parser
authorpvtroshin <pvtroshin@e3abac25-378b-4346-85de-24260fe3988d>
Mon, 7 Feb 2011 15:06:27 +0000 (15:06 +0000)
committerpvtroshin <pvtroshin@e3abac25-378b-4346-85de-24260fe3988d>
Mon, 7 Feb 2011 15:06:27 +0000 (15:06 +0000)
Some rearrangements for disembl to reuse methods

git-svn-id: link to svn.lifesci.dundee.ac.uk/svn/barton/ptroshin/JABA2@3709 e3abac25-378b-4346-85de-24260fe3988d

12 files changed:
binaries/src/disembl/DisEMBL.py
binaries/src/globplot/GlobPipe.py
datamodel/compbio/data/sequence/DisemblResultAnnot.java [deleted file]
datamodel/compbio/data/sequence/Range.java [new file with mode: 0644]
datamodel/compbio/data/sequence/Score.java
datamodel/compbio/data/sequence/SequenceUtil.java
runner/compbio/runner/disorder/GlobPlot.java [new file with mode: 0644]
testsrc/compbio/data/sequence/SequenceUtilTester.java
testsrc/compbio/runner/disorder/GlobPlotTester.java [new file with mode: 0644]
testsrc/testdata/disembl.out
testsrc/testdata/globplot.out [new file with mode: 0644]
webservices/compbio/ws/server/GlobPlotWS.java [new file with mode: 0644]

index d9618e2..7298e83 100644 (file)
@@ -118,13 +118,8 @@ def reportSlicesTXT(slices, sequence):
             if i > 0:
                 sys.stdout.write(', ')
             sys.stdout.write( str(slices[i][0]+1) + '-' + str(slices[i][1]+1) )
-            s = s + upper(sequence[slices[i][0]:(slices[i][1]+1)])
-            if i < len(slices)-1:
-                s = s + lower(sequence[(slices[i][1]+1):(slices[i+1][0])])
-            elif slices[i][1] < len(sequence)-1:
-                s = s + lower(sequence[(slices[i][1]+1):(len(sequence))])
+           
     print ''
-    print s
 
 
 
@@ -144,7 +139,6 @@ def runDisEMBLpipeline():
     except:
         print '\nDisEMBL.py sequence_file \n'
         print 'A default run would be: ./DisEMBL.py fasta_file'
-        print 'Mode: "default"(nothing) or "scores" which will give scores per residue in TAB seperated format'
         raise SystemExit
     #db = sys.stdin
     parser = Fasta.RecordParser()
@@ -159,22 +153,17 @@ def runDisEMBLpipeline():
             REM465_smooth = SavitzkyGolay(smooth_frame,0,REM465_raw)
             COILS_smooth = SavitzkyGolay(smooth_frame,0,COILS_raw)
             HOTLOOPS_smooth = SavitzkyGolay(smooth_frame,0,HOTLOOPS_raw)
-            if mode == 'default':
-                sys.stdout.write('> '+cur_record.title+'_COILS ')
-                reportSlicesTXT( getSlices(COILS_smooth, fold_coils, join_frame, peak_frame, 0.43), sequence )
-                sys.stdout.write('> '+cur_record.title+'_REM465 ')
-                reportSlicesTXT( getSlices(REM465_smooth, fold_rem465, join_frame, peak_frame, 0.50), sequence )
-                sys.stdout.write('> '+cur_record.title+'_HOTLOOPS ')
-                reportSlicesTXT( getSlices(HOTLOOPS_smooth, fold_hotloops, join_frame, peak_frame, 0.086), sequence )
-                sys.stdout.write('\n')
-            elif mode == 'scores':
-                sys.stdout.write('> '+cur_record.title+'\n')
-                sys.stdout.write('# RESIDUE COILS REM465 HOTLOOPS\n')
-                for i in range(len(REM465_smooth)):
-                    sys.stdout.write(sequence[i]+'\t'+fpformat.fix(COILS_smooth[i],5)+'\t'+fpformat.fix(REM465_smooth[i],5)+'\t'+fpformat.fix(HOTLOOPS_smooth[i],5)+'\n')
-            else:
-                sys.stderr.write('Wrong mode given: '+mode+'\n')
-                raise SystemExit
+
+            sys.stdout.write('> '+cur_record.title+'\n')
+            sys.stdout.write('# COILS ')
+            reportSlicesTXT( getSlices(COILS_smooth, fold_coils, join_frame, peak_frame, 0.43), sequence )
+            sys.stdout.write('# REM465 ')
+            reportSlicesTXT( getSlices(REM465_smooth, fold_rem465, join_frame, peak_frame, 0.50), sequence )
+            sys.stdout.write('# HOTLOOPS ')
+            reportSlicesTXT( getSlices(HOTLOOPS_smooth, fold_hotloops, join_frame, peak_frame, 0.086), sequence )
+            sys.stdout.write('# RESIDUE COILS REM465 HOTLOOPS\n')
+            for i in range(len(REM465_smooth)):
+                sys.stdout.write(sequence[i]+'\t'+fpformat.fix(COILS_smooth[i],5)+'\t'+fpformat.fix(REM465_smooth[i],5)+'\t'+fpformat.fix(HOTLOOPS_smooth[i],5)+'\n')
         except AttributeError:
             break
     file.close()
index 71be8a7..b15a28d 100644 (file)
@@ -123,9 +123,9 @@ def SavitzkyGolay(window,derivative,datalist):
 
 def reportSlicesTXT(slices, sequence, maskFlag):
     if maskFlag == 'DOM':
-        coordstr = '|GlobDoms:'
+        coordstr = 'GlobDoms '
     elif maskFlag == 'DIS':
-        coordstr = '|Disorder:'
+        coordstr = 'Disorder '
     else:
         raise SystemExit
     if slices == []:
@@ -163,18 +163,16 @@ def reportSlicesTXT(slices, sequence, maskFlag):
 
 def runGlobPlot():
     try:
-        smoothFrame = int(sys.argv[1])
-        DOM_joinFrame = int(sys.argv[2])
-        DOM_peakFrame = int(sys.argv[3])
-        DIS_joinFrame = int(sys.argv[4])
-        DIS_peakFrame = int(sys.argv[5])
-        file = str(sys.argv[6])
+        smoothFrame = 10
+        DOM_joinFrame = 15
+        DOM_peakFrame = 74
+        DIS_joinFrame = 4
+        DIS_peakFrame = 5
+        file = str(sys.argv[1])
         db = open(file,'r')
     except:
         print 'Usage:'
-        print '         ./GlobPipe.py SmoothFrame DOMjoinFrame DOMpeakFrame DISjoinFrame DISpeakFrame FASTAfile'
-        print '         Optimised for ELM: ./GlobPlot.py 10 8 75 8 8 sequence_file'
-        print '         Webserver settings: ./GlobPlot.py 10 15 74 4 5 sequence_file'
+        print '         ./GlobPipe.py FASTAfile'
         raise SystemExit
     parser = Fasta.RecordParser()
     iterator = Fasta.Iterator(db,parser)
@@ -209,9 +207,12 @@ def runGlobPlot():
             globdoms, globdis = getSlices(dydx_vector, DOM_joinFrame, DOM_peakFrame, DIS_joinFrame, DIS_peakFrame)
             s_domMask, coordstrDOM = reportSlicesTXT(globdoms, seq, 'DOM')
             s_final, coordstrDIS = reportSlicesTXT(globdis, s_domMask, 'DIS')
-            sys.stdout.write('>'+cur_record.title+coordstrDOM+coordstrDIS+'\n')
+            sys.stdout.write('>'+cur_record.title+'\n')
+            sys.stdout.write('# '+coordstrDOM+'\n')
+            sys.stdout.write('# '+coordstrDIS+'\n')
 
 # UNCOMMENT THIS IF NEED TO PRODUCE PER RESEDUE VALUES 
+            sys.stdout.write('# RESIDUE' + '\t' + 'DYDX' + '\t' + 'RAW' + '\t' +'SMOOTHED\n')
             for i in range(len(dydx_vector)):
 # dydx (positive values seems to indicate disorder in rows more than ~6 chars)  raw    smoothed
                sys.stdout.write(seq[i]+'\t'+fpformat.fix(dydx_vector[i],4)+ '\t'+fpformat.fix(smooth[i],4)+'\t'+fpformat.fix(sum_vector[i],4)+ '\n')
diff --git a/datamodel/compbio/data/sequence/DisemblResultAnnot.java b/datamodel/compbio/data/sequence/DisemblResultAnnot.java
deleted file mode 100644 (file)
index c5f026c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package compbio.data.sequence;\r
-\r
-public enum DisemblResultAnnot {\r
-       COILS, REM465, HOTLOOPS\r
-}\r
diff --git a/datamodel/compbio/data/sequence/Range.java b/datamodel/compbio/data/sequence/Range.java
new file mode 100644 (file)
index 0000000..839ae28
--- /dev/null
@@ -0,0 +1,57 @@
+package compbio.data.sequence;\r
+\r
+public class Range implements Comparable<Range> {\r
+\r
+       public final int from;\r
+       public final int to;\r
+\r
+       public Range(int from, int to) {\r
+               this.from = from;\r
+               this.to = to;\r
+       }\r
+\r
+       public Range(String[] twoElementAr) {\r
+               if (twoElementAr == null || twoElementAr.length != 2) {\r
+                       throw new IllegalArgumentException();\r
+               }\r
+               this.from = Integer.parseInt(twoElementAr[0].trim());\r
+               this.to = Integer.parseInt(twoElementAr[1].trim());\r
+       }\r
+\r
+       @Override\r
+       public String toString() {\r
+               return "[" + from + ", " + to + "]";\r
+       }\r
+\r
+       @Override\r
+       public int hashCode() {\r
+               final int prime = 31;\r
+               int result = 1;\r
+               result = prime * result + from;\r
+               result = prime * result + to;\r
+               return result;\r
+       }\r
+       @Override\r
+       public boolean equals(Object obj) {\r
+               if (this == obj)\r
+                       return true;\r
+               if (obj == null)\r
+                       return false;\r
+               if (getClass() != obj.getClass())\r
+                       return false;\r
+               Range other = (Range) obj;\r
+               if (from != other.from)\r
+                       return false;\r
+               if (to != other.to)\r
+                       return false;\r
+               return true;\r
+       }\r
+\r
+       @Override\r
+       public int compareTo(Range o) {\r
+               if (o == null)\r
+                       return 1;\r
+               return new Integer(this.from).compareTo(new Integer(o.from));\r
+       }\r
+\r
+}\r
index 8a110ee..39bb398 100644 (file)
@@ -6,10 +6,12 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;\r
 import java.text.NumberFormat;\r
 import java.util.ArrayList;\r
-import java.util.Arrays;\r
+import java.util.Collections;\r
 import java.util.List;\r
 import java.util.Locale;\r
 import java.util.Set;\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
 \r
 import javax.xml.bind.annotation.XmlAccessType;\r
 import javax.xml.bind.annotation.XmlAccessorType;\r
@@ -36,7 +38,9 @@ public class Score {
 \r
        private Enum<?> method;\r
 \r
-       private List<Float> scores;\r
+       private SortedSet<Range> ranges = new TreeSet<Range>();\r
+\r
+       private List<Float> scores = Collections.emptyList();\r
 \r
        private Score() {\r
                // JaXB default constructor\r
@@ -57,6 +61,28 @@ public class Score {
                this.scores = new ArrayList<Float>(scores);\r
        }\r
 \r
+       /**\r
+        * @param method\r
+        *            the ConservationMethod with which {@code scores} were\r
+        *            calculated\r
+        * @param scores\r
+        *            the actual conservation values for each column of the\r
+        *            alignment\r
+        * @param ranges\r
+        *            The set of ranges i.e. parts of the sequence with specific\r
+        *            function, usually can be calculated based on scores\r
+        */\r
+       public Score(Enum<?> method, List<Float> scores, SortedSet<Range> ranges) {\r
+               this.method = method;\r
+               this.ranges = ranges;\r
+               this.scores = scores;\r
+       }\r
+\r
+       public Score(Enum<?> method, SortedSet<Range> ranges) {\r
+               this.method = method;\r
+               this.ranges = ranges;\r
+       }\r
+\r
        public Score(Enum<?> method, float[] scores) {\r
                this.method = method;\r
                this.scores = toList(scores);\r
@@ -87,25 +113,35 @@ public class Score {
                return scores;\r
        }\r
 \r
+       /**\r
+        * Return Ranges if any Collections.EMPTY_SET otherwise\r
+        * \r
+        * @return\r
+        */\r
+       public SortedSet<Range> getRanges() {\r
+               return ranges;\r
+       }\r
+\r
+       public void setRanges(SortedSet<Range> ranges) {\r
+               this.ranges = ranges;\r
+       }\r
+\r
        @Override\r
        public String toString() {\r
-               return "Score [method=" + method + ", scores=" + scores + "]";\r
+               return "Score [method=" + method + ", ranges=" + ranges + ", scores="\r
+                               + scores + "]";\r
        }\r
 \r
        @Override\r
        public int hashCode() {\r
-               final int prime = 31;\r
+               final int prime = 7;\r
                int result = 1;\r
                result = prime * result + ((method == null) ? 0 : method.hashCode());\r
+               result = prime * result + ((ranges == null) ? 0 : ranges.hashCode());\r
                result = prime * result + ((scores == null) ? 0 : scores.hashCode());\r
                return result;\r
        }\r
 \r
-       /*\r
-        * TODO test ! (non-Javadoc)\r
-        * \r
-        * @see java.lang.Object#equals(java.lang.Object)\r
-        */\r
        @Override\r
        public boolean equals(Object obj) {\r
                if (this == obj)\r
@@ -115,15 +151,20 @@ public class Score {
                if (getClass() != obj.getClass())\r
                        return false;\r
                Score other = (Score) obj;\r
-               if (method != other.method)\r
+               if (method == null) {\r
+                       if (other.method != null)\r
+                               return false;\r
+               } else if (!method.equals(other.method))\r
                        return false;\r
-               if (scores == other.scores) {\r
-                       return true;\r
-               }\r
-               if (scores == null) {\r
+               if (ranges == null) {\r
+                       if (other.ranges != null)\r
+                               return false;\r
+               } else if (!ranges.equals(other.ranges))\r
                        return false;\r
-               }\r
-               if (!Arrays.deepEquals(scores.toArray(), other.scores.toArray()))\r
+               if (scores == null) {\r
+                       if (other.scores != null)\r
+                               return false;\r
+               } else if (!scores.equals(other.scores))\r
                        return false;\r
                return true;\r
        }\r
index a636c3a..7e6c672 100644 (file)
@@ -31,10 +31,14 @@ import java.util.List;
 import java.util.Map;\r
 import java.util.Scanner;\r
 import java.util.Set;\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
 import java.util.logging.Level;\r
 import java.util.regex.Matcher;\r
 import java.util.regex.Pattern;\r
 \r
+import compbio.util.Util;\r
+\r
 /**\r
  * Utility class for operations on sequences\r
  * \r
@@ -404,35 +408,37 @@ public final class SequenceUtil {
 \r
        /**\r
         * \r
-        * TODO complete!\r
+        > Foobar_dundeefriends\r
         * \r
-        * >Sequence name\r
+        * # COILS 34-41, 50-58, 83-91, 118-127, 160-169, 191-220, 243-252, 287-343\r
         * \r
-        * RESIDUE COILS REM465 HOTLOOPS\r
+        * # REM465 355-368\r
         * \r
-        * M 0.86010 0.88512 0.37094\r
+        * # HOTLOOPS 190-204\r
         * \r
-        * T 0.79983 0.85864 0.44331 ....\r
-\r
-        * >Next Sequence name \r
-        * RESIDUE COILS REM465 HOTLOOPS\r
+        * # RESIDUE COILS REM465 HOTLOOPS\r
         * \r
         * M 0.86010 0.88512 0.37094\r
         * \r
+        * T 0.79983 0.85864 0.44331\r
+        * \r
+        * >Next Sequence name\r
+        * \r
         * \r
         * @param input\r
         * @return\r
         * @throws IOException\r
         * @throws UnknownFileFormatException\r
         */\r
-       public static Map<FastaSequence, Set<Score>> readDisembl(final InputStream input)\r
-                       throws IOException, UnknownFileFormatException {\r
+       public static Map<FastaSequence, Set<Score>> readDisembl(\r
+                       final InputStream input) throws IOException,\r
+                       UnknownFileFormatException {\r
                Scanner scan = new Scanner(input);\r
                scan.useDelimiter(">");\r
                if (!scan.hasNext()) {\r
                        throw new UnknownFileFormatException(\r
-                                       "In Disembl score format each sequence score is expected " +\r
-                                       "to start from the line: >Sequence name "\r
+                                       "In Disembl score format each sequence score is expected "\r
+                                                       + "to start from the line: >Sequence name "\r
                                                        + " No such line was found!");\r
                }\r
 \r
@@ -441,31 +447,40 @@ public final class SequenceUtil {
                while (scan.hasNext()) {\r
                        seqCounter++;\r
                        String singleSeq = scan.next();\r
-                       Scanner scansingle = new Scanner(singleSeq);\r
-                       if(!scansingle.hasNextLine()) {\r
-                               throw new RuntimeException("The input looks like an incomplete disembl file - cannot parse!");\r
-                       }\r
-                       \r
+                       Scanner scansingle = new Scanner(singleSeq);\r
+                       if (!scansingle.hasNextLine()) {\r
+                               throw new RuntimeException(\r
+                                               "The input looks like an incomplete disembl file - cannot parse!");\r
+                       }\r
+\r
                        StringBuffer seqbuffer = new StringBuffer();\r
                        ArrayList<Float> coils = new ArrayList<Float>();\r
                        ArrayList<Float> rem = new ArrayList<Float>();\r
                        ArrayList<Float> hotloops = new ArrayList<Float>();\r
 \r
                        String sequenceName = scansingle.nextLine().trim();\r
-                       String title =  scansingle.nextLine();\r
+                       SortedSet<Range> coilsR = parseRanges(DisemblResult.COILS,\r
+                                       scansingle.nextLine());\r
+                       SortedSet<Range> rem465R = parseRanges(DisemblResult.REM465,\r
+                                       scansingle.nextLine());\r
+                       SortedSet<Range> loopsR = parseRanges(DisemblResult.HOTLOOPS,\r
+                                       scansingle.nextLine());\r
+\r
+                       String title = scansingle.nextLine();\r
                        assert title.startsWith("# RESIDUE COILS REM465 HOTLOOPS") : ">Sequence_name must follow column title: # RESIDUE COILS REM465 HOTLOOPS!";\r
-                       \r
+\r
                        while (scansingle.hasNext()) {\r
                                seqbuffer.append(scansingle.next());\r
                                coils.add(scansingle.nextFloat());\r
                                rem.add(scansingle.nextFloat());\r
                                hotloops.add(scansingle.nextFloat());\r
                        }\r
-                       FastaSequence fs = new FastaSequence(sequenceName,seqbuffer.toString());\r
+                       FastaSequence fs = new FastaSequence(sequenceName,\r
+                                       seqbuffer.toString());\r
                        Set<Score> scores = new HashSet<Score>();\r
-                       scores.add(new Score(DisemblResultAnnot.COILS, coils));\r
-                       scores.add(new Score(DisemblResultAnnot.HOTLOOPS, hotloops));\r
-                       scores.add(new Score(DisemblResultAnnot.REM465, rem));\r
+                       scores.add(new Score(DisemblResult.COILS, coils, coilsR));\r
+                       scores.add(new Score(DisemblResult.HOTLOOPS, hotloops, rem465R));\r
+                       scores.add(new Score(DisemblResult.REM465, rem, loopsR));\r
                        results.put(fs, scores);\r
 \r
                        scansingle.close();\r
@@ -474,15 +489,134 @@ public final class SequenceUtil {
                input.close();\r
                return results;\r
        }\r
-       \r
-       public static  Map<String, Set<Score>> removeSequences(Map<FastaSequence, Set<Score>> disemblResults) { \r
+\r
+       /**\r
+        * Parsing:\r
+        * \r
+        * # COILS 34-41, 50-58, 83-91, 118-127, 160-169, 191-220, 243-252, 287-343,\r
+        * 350-391, 429-485, 497-506, 539-547\r
+        * \r
+        * # REM465 355-368\r
+        * \r
+        * # HOTLOOPS 190-204\r
+        * \r
+        * @param lines\r
+        * @return\r
+        */\r
+       private static SortedSet<Range> parseRanges(Enum resultType, String lines) {\r
+               SortedSet<Range> ranges = new TreeSet<Range>();\r
+               Scanner scan = new Scanner(lines);\r
+\r
+               assert scan.hasNext();\r
+               assert "#".equals(scan.next()); // pass delimiter #\r
+               String type = scan.next(); // pass enum name e.g. COILS\r
+               assert resultType.toString().equalsIgnoreCase(type) : "Unknown result type: "\r
+                               + resultType.toString();\r
+\r
+               // beginning of the ranges\r
+               scan.useDelimiter(",");\r
+               while (scan.hasNext()) {\r
+                       String range = scan.next();\r
+                       if (!Util.isEmpty(range)) {\r
+                               ranges.add(new Range(range.split("-")));\r
+                       }\r
+               }\r
+               return ranges;\r
+       }\r
+\r
+       public static Map<String, Set<Score>> removeSequences(\r
+                       Map<FastaSequence, Set<Score>> disemblResults) {\r
                Map<String, Set<Score>> seqNameScores = new HashMap<String, Set<Score>>();\r
-               for(Map.Entry<FastaSequence,Set<Score>> dres: disemblResults.entrySet()) {\r
-                       seqNameScores.put(dres.getKey().getId(),dres.getValue()); \r
+               for (Map.Entry<FastaSequence, Set<Score>> dres : disemblResults\r
+                               .entrySet()) {\r
+                       seqNameScores.put(dres.getKey().getId(), dres.getValue());\r
                }\r
                return seqNameScores;\r
        }\r
-       \r
+\r
+       /**\r
+        * \r
+        > Foobar_dundeefriends\r
+        * \r
+        * # COILS 34-41, 50-58, 83-91, 118-127, 160-169, 191-220, 243-252, 287-343\r
+        * \r
+        * # REM465 355-368\r
+        * \r
+        * # HOTLOOPS 190-204\r
+        * \r
+        * # RESIDUE COILS REM465 HOTLOOPS\r
+        * \r
+        * M 0.86010 0.88512 0.37094\r
+        * \r
+        * T 0.79983 0.85864 0.44331\r
+        * \r
+        * >Next Sequence name\r
+        * \r
+        * \r
+        * @param input\r
+        * @return\r
+        * @throws IOException\r
+        * @throws UnknownFileFormatException\r
+        */\r
+       public static Map<FastaSequence, Set<Score>> readGlobPlot(\r
+                       final InputStream input) throws IOException,\r
+                       UnknownFileFormatException {\r
+               Scanner scan = new Scanner(input);\r
+               scan.useDelimiter(">");\r
+               if (!scan.hasNext()) {\r
+                       throw new UnknownFileFormatException(\r
+                                       "In GlobPlot score format each sequence score is expected "\r
+                                                       + "to start from the line: >Sequence name "\r
+                                                       + " No such line was found!");\r
+               }\r
+\r
+               Map<FastaSequence, Set<Score>> results = new HashMap<FastaSequence, Set<Score>>();\r
+               int seqCounter = 0;\r
+               while (scan.hasNext()) {\r
+                       seqCounter++;\r
+                       String singleSeq = scan.next();\r
+                       Scanner scansingle = new Scanner(singleSeq);\r
+                       if (!scansingle.hasNextLine()) {\r
+                               throw new RuntimeException(\r
+                                               "The input looks like an incomplete GlobPlot file - cannot parse!");\r
+                       }\r
+\r
+                       StringBuffer seqbuffer = new StringBuffer();\r
+                       ArrayList<Float> dydxScore = new ArrayList<Float>();\r
+                       ArrayList<Float> rawScore = new ArrayList<Float>();\r
+                       ArrayList<Float> smoothedScore = new ArrayList<Float>();\r
+\r
+                       String sequenceName = scansingle.nextLine().trim();\r
+                       SortedSet<Range> domsR = parseRanges(GlobProtResult.GlobDoms,\r
+                                       scansingle.nextLine());\r
+                       SortedSet<Range> disorderR = parseRanges(GlobProtResult.Disorder,\r
+                                       scansingle.nextLine());\r
+\r
+                       String title = scansingle.nextLine();\r
+                       assert title.startsWith("# RESIDUE      DYDX") : ">Sequence_name must follow column title: # RESIDUE DYDX RAW SMOOTHED!";\r
+\r
+                       while (scansingle.hasNext()) {\r
+                               seqbuffer.append(scansingle.next());\r
+                               dydxScore.add(scansingle.nextFloat());\r
+                               rawScore.add(scansingle.nextFloat());\r
+                               smoothedScore.add(scansingle.nextFloat());\r
+                       }\r
+                       FastaSequence fs = new FastaSequence(sequenceName,\r
+                                       seqbuffer.toString());\r
+                       Set<Score> scores = new HashSet<Score>();\r
+                       scores.add(new Score(GlobProtResult.Disorder, disorderR));\r
+                       scores.add(new Score(GlobProtResult.GlobDoms, domsR));\r
+                       scores.add(new Score(GlobProtResult.Dydx, dydxScore));\r
+                       scores.add(new Score(GlobProtResult.RawScore, rawScore));\r
+                       scores.add(new Score(GlobProtResult.SmoothedScore, smoothedScore));\r
+                       results.put(fs, scores);\r
+\r
+                       scansingle.close();\r
+               }\r
+\r
+               input.close();\r
+               return results;\r
+       }\r
        /**\r
         * Read AACon result with no alignment files. This method leaves incoming\r
         * the InputStream results open!\r
@@ -554,3 +688,20 @@ public final class SequenceUtil {
        }\r
 \r
 }\r
+\r
+enum DisemblResult {\r
+       /** These contains ranges and scores */\r
+       COILS, REM465, HOTLOOPS\r
+}\r
+enum GlobProtResult {\r
+       /** This a range with no scores */\r
+       GlobDoms,\r
+       /** This a range with no scores */\r
+       Disorder,\r
+       /** This a score with no range */\r
+       Dydx,\r
+       /** This a score with no range */\r
+       SmoothedScore,\r
+       /** This a score with no range */\r
+       RawScore\r
+}
\ No newline at end of file
diff --git a/runner/compbio/runner/disorder/GlobPlot.java b/runner/compbio/runner/disorder/GlobPlot.java
new file mode 100644 (file)
index 0000000..6decede
--- /dev/null
@@ -0,0 +1,145 @@
+/*\r
+ * Copyright (c) 2011 Peter Troshin JAva Bioinformatics Analysis Web Services\r
+ * (JABAWS) @version: 2.0 This library is free software; you can redistribute it\r
+ * and/or modify it under the terms of the Apache License version 2 as published\r
+ * by the Apache Software Foundation This library is distributed in the hope\r
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\r
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * Apache License for more details. A copy of the license is in\r
+ * apache_license.txt. It is also available here:\r
+ * @see: http://www.apache.org/licenses/LICENSE-2.0.txt Any republication or\r
+ * derived work distributed in source code form must include this copyright and\r
+ * license notice.\r
+ */\r
+\r
+package compbio.runner.disorder;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import compbio.data.sequence.Score;\r
+import compbio.data.sequence.SequenceUtil;\r
+import compbio.data.sequence.UnknownFileFormatException;\r
+import compbio.engine.client.Executable;\r
+import compbio.engine.client.PipedExecutable;\r
+import compbio.engine.client.SkeletalExecutable;\r
+import compbio.metadata.Limit;\r
+import compbio.metadata.LimitsManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.runner.Util;\r
+\r
+/**\r
+ * ./GlobPipe.py SmoothFrame DOMjoinFrame DOMpeakFrame DISjoinFrame DISpeakFrame\r
+ * \r
+ * FASTAfile' Optimised for ELM: ./GlobPlot.py 10 8 75 8 8 sequence_file'\r
+ * Webserver settings: ./GlobPlot.py 10 15 74 4 5 sequence_file'\r
+ * \r
+ * Hard-coded values are 10 15 74 4 5.\r
+ * \r
+ * Changing these values are not recommended by developers, apart from smoothing\r
+ * window. However, the binary, GlobPlot depends on - Tisean which is not happy\r
+ * with arbitrary changes to these values, so changing them can lead to\r
+ * problems. May be we can offer preset?\r
+ * \r
+ * This is not a standard GlobPlot! The script has been modified!\r
+ * \r
+ */\r
+public class GlobPlot extends SkeletalExecutable<GlobPlot>\r
+               implements\r
+                       PipedExecutable<GlobPlot> {\r
+\r
+       private static Logger log = Logger.getLogger(GlobPlot.class);\r
+\r
+       // Cache for Limits information\r
+       private static LimitsManager<GlobPlot> limits;\r
+\r
+       public static final String KEY_VALUE_SEPARATOR = Util.SPACE;\r
+\r
+       /* The parameter list there must not contain same values! */\r
+       public GlobPlot() {\r
+               // remove default input to prevent it to appear in the parameters list\r
+               // that could happen if the parameters are set first\r
+               // super.setInput("");\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       public Map<String, Set<Score>> getResults(String workDirectory)\r
+                       throws ResultNotAvailableException {\r
+\r
+               InputStream inStream = null;\r
+               Map<String, Set<Score>> results = null;\r
+               // How about getting ranges?\r
+               try {\r
+                       inStream = new FileInputStream(new File(workDirectory, getOutput()));\r
+                       results = SequenceUtil.removeSequences(SequenceUtil\r
+                                       .readDisembl(inStream));\r
+                       inStream.close();\r
+               } catch (FileNotFoundException e) {\r
+                       log.error(e.getMessage(), e.getCause());\r
+                       throw new ResultNotAvailableException(e);\r
+               } catch (IOException e) {\r
+                       log.error(e.getMessage(), e.getCause());\r
+                       throw new ResultNotAvailableException(e);\r
+               } catch (UnknownFileFormatException e) {\r
+                       log.error(e.getMessage(), e.getCause());\r
+                       throw new ResultNotAvailableException(e);\r
+               } catch (NullPointerException e) {\r
+                       log.error(e.getMessage(), e.getCause());\r
+                       throw new ResultNotAvailableException(e);\r
+               }\r
+\r
+               return results;\r
+       }\r
+\r
+       @Override\r
+       public GlobPlot setInput(String inFile) {\r
+               super.setInput(inFile);\r
+               cbuilder.setLast(inFile);\r
+               return this;\r
+       }\r
+\r
+       @Override\r
+       public Limit<GlobPlot> getLimit(String presetName) {\r
+               if (limits == null) {\r
+                       limits = getLimits();\r
+               }\r
+\r
+               Limit<GlobPlot> limit = null;\r
+               if (limits != null) {\r
+                       // this returns default limit if preset is undefined!\r
+                       limit = limits.getLimitByName(presetName);\r
+               }\r
+               // If limit is not defined for a particular preset, then return default\r
+               // limit\r
+               if (limit == null) {\r
+                       log.debug("Limit for the preset " + presetName\r
+                                       + " is not found. Using default");\r
+                       limit = limits.getDefaultLimit();\r
+               }\r
+               return limit;\r
+       }\r
+\r
+       @Override\r
+       public LimitsManager<GlobPlot> getLimits() {\r
+               // synchronise on static field\r
+               synchronized (log) {\r
+                       if (limits == null) {\r
+                               limits = Util.getLimits(this.getClass());\r
+                       }\r
+               }\r
+               return limits;\r
+       }\r
+\r
+       @Override\r
+       public Class<? extends Executable<?>> getType() {\r
+               return this.getClass();\r
+       }\r
+\r
+}\r
index edb57a4..9a8c5a0 100644 (file)
@@ -149,11 +149,11 @@ public class SequenceUtilTester {
        /**\r
         * This test tests the loading of horizontally formatted Jronn output file\r
         * \r
-        * First seq \r
+        * First seq\r
         * \r
-        * M    0.86010 0.88512 0.37094\r
+        * M 0.86010 0.88512 0.37094\r
         * \r
-        * T    0.79983 0.85864 0.44331\r
+        * T 0.79983 0.85864 0.44331\r
         * \r
         */\r
        @SuppressWarnings("unchecked")\r
@@ -163,18 +163,85 @@ public class SequenceUtilTester {
                FileInputStream fio;\r
                try {\r
                        fio = new FileInputStream(AllTestSuit.TEST_DATA_PATH\r
-                                       + "scores.out");\r
+                                       + "disembl.out");\r
                        Map<FastaSequence, Set<Score>> aseqs = SequenceUtil\r
                                        .readDisembl(fio);\r
                        assertNotNull(aseqs);\r
-                       assertEquals(aseqs.size(), 3); \r
+                       assertEquals(aseqs.size(), 3);\r
                        System.out.println(aseqs);\r
-                       for(FastaSequence fs: aseqs.keySet()) {\r
-                               assertTrue(" Foobar_dundeefriends Foobar dundeefriends ".contains(fs.getId()));\r
-                               Set<Score> scores = aseqs.get(fs); \r
-                               assertEquals(scores.size(),3);\r
+                       for (FastaSequence fs : aseqs.keySet()) {\r
+                               assertTrue(" Foobar_dundeefriends Foobar dundeefriends "\r
+                                               .contains(fs.getId()));\r
+                               Set<Score> scores = aseqs.get(fs);\r
+                               assertEquals(scores.size(), 3);\r
                        }\r
-                         fio.close();\r
+                       fio.close();\r
+               } catch (FileNotFoundException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (IOException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (UnknownFileFormatException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               }\r
+       }\r
+\r
+       /**\r
+        * This test tests the loading of horizontally formatted Jronn output file\r
+        * \r
+        * First sequence:\r
+        * \r
+        * >Foobar_dundeefriends\r
+        * \r
+        * # GlobDoms 2-358, 373-568\r
+        * \r
+        * # Disorder 1-5, 206-218, 243-250, 288-300, 313-324, 359-372, 475-481\r
+        * \r
+        * # RESIDUE DYDX RAW SMOOTHED\r
+        * \r
+        * M 0.0044 -0.2259 -0.2259\r
+        * \r
+        * T -0.1308 -0.2170 -0.2170\r
+        * \r
+        * ............\r
+        * \r
+        * > Second sequence\r
+        */\r
+       @SuppressWarnings("unchecked")\r
+       @Test\r
+       public void testReadGlobPlotResults() {\r
+\r
+               FileInputStream fio;\r
+               try {\r
+                       fio = new FileInputStream(AllTestSuit.TEST_DATA_PATH\r
+                                       + "globplot.out");\r
+                       Map<FastaSequence, Set<Score>> aseqs = SequenceUtil\r
+                                       .readGlobPlot(fio);\r
+                       assertNotNull(aseqs);\r
+                       assertEquals(aseqs.size(), 3);\r
+\r
+                       FastaSequence fsdf = null;\r
+                       Set<Score> scores = null;\r
+                       for (FastaSequence fs : aseqs.keySet()) {\r
+                               if ("Foobar_dundeefriends".contains(fs.getId())) {\r
+                                       fsdf = fs;\r
+                                       scores = aseqs.get(fs);\r
+                               }\r
+                               assertEquals(scores.size(), 5);\r
+                       }\r
+                       for (Score score : scores) {\r
+                               if (score.getMethod() == GlobProtResult.Disorder) {\r
+                                       assertEquals(score.getRanges().size(), 7);\r
+                                       assertTrue(score.getScores().isEmpty());\r
+                               }\r
+                               if (score.getMethod() == GlobProtResult.Dydx) {\r
+                                       assertFalse(score.getScores().isEmpty());\r
+                                       assertTrue(score.getRanges().isEmpty());\r
+                               }\r
+                       }\r
+                       fio.close();\r
                } catch (FileNotFoundException e) {\r
                        e.printStackTrace();\r
                        fail(e.getLocalizedMessage());\r
diff --git a/testsrc/compbio/runner/disorder/GlobPlotTester.java b/testsrc/compbio/runner/disorder/GlobPlotTester.java
new file mode 100644 (file)
index 0000000..ffafe26
--- /dev/null
@@ -0,0 +1,312 @@
+/* Copyright (c) 2009 Peter Troshin\r
+ *  \r
+ *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0     \r
+ * \r
+ *  This library is free software; you can redistribute it and/or modify it under the terms of the\r
+ *  Apache License version 2 as published by the Apache Software Foundation\r
+ * \r
+ *  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
+ *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
+ *  License for more details.\r
+ * \r
+ *  A copy of the license is in apache_license.txt. It is also available here:\r
+ * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
+ * \r
+ * Any republication or derived work distributed in source code form\r
+ * must include this copyright and license notice.\r
+ */\r
+\r
+package compbio.runner.disorder;\r
+\r
+import static org.testng.Assert.assertEquals;\r
+import static org.testng.Assert.assertFalse;\r
+import static org.testng.Assert.assertNotNull;\r
+import static org.testng.Assert.assertNull;\r
+import static org.testng.Assert.assertTrue;\r
+import static org.testng.Assert.fail;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.text.ParseException;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import javax.xml.bind.ValidationException;\r
+\r
+import org.ggf.drmaa.DrmaaException;\r
+import org.ggf.drmaa.JobInfo;\r
+import org.testng.annotations.BeforeMethod;\r
+import org.testng.annotations.Test;\r
+\r
+import compbio.data.sequence.Score;\r
+import compbio.engine.AsyncExecutor;\r
+import compbio.engine.Configurator;\r
+import compbio.engine.SyncExecutor;\r
+import compbio.engine.client.ConfExecutable;\r
+import compbio.engine.client.ConfiguredExecutable;\r
+import compbio.engine.client.Executable;\r
+import compbio.engine.client.RunConfiguration;\r
+import compbio.engine.cluster.drmaa.ClusterUtil;\r
+import compbio.engine.cluster.drmaa.JobRunner;\r
+import compbio.engine.cluster.drmaa.StatisticManager;\r
+import compbio.engine.local.LocalRunner;\r
+import compbio.metadata.AllTestSuit;\r
+import compbio.metadata.JobExecutionException;\r
+import compbio.metadata.JobStatus;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.LimitsManager;\r
+import compbio.metadata.PresetManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.metadata.RunnerConfig;\r
+import compbio.util.SysPrefs;\r
+\r
+public class GlobPlotTester {\r
+\r
+       public static String test_outfile = "TO1381.globprot.out";\r
+\r
+       private GlobPlot globprot;\r
+\r
+       @BeforeMethod(alwaysRun = true)\r
+       void init() {\r
+               globprot = new GlobPlot();\r
+               globprot.setInput(AllTestSuit.test_input).setOutput(test_outfile);\r
+       }\r
+\r
+       @Test(groups = {AllTestSuit.test_group_cluster,\r
+                       AllTestSuit.test_group_runner})\r
+       public void testRunOnCluster() {\r
+               assertFalse(SysPrefs.isWindows,\r
+                               "Cluster execution can only be in unix environment");\r
+               try {\r
+                       ConfiguredExecutable<GlobPlot> confGlobPlot = Configurator\r
+                                       .configureExecutable(globprot,\r
+                                                       Executable.ExecProvider.Cluster);\r
+                       JobRunner runner = JobRunner.getInstance(confGlobPlot);\r
+\r
+                       assertNotNull(runner, "Runner is NULL");\r
+                       runner.executeJob();\r
+                       // assertNotNull("JobId is null", jobId1);\r
+                       JobStatus status = runner.getJobStatus();\r
+                       assertTrue(status == JobStatus.PENDING\r
+                                       || status == JobStatus.RUNNING,\r
+                                       "Status of the process is wrong!");\r
+                       JobInfo info = runner.getJobInfo();\r
+                       assertNotNull(info, "JobInfo is null");\r
+                       StatisticManager sm = new StatisticManager(info);\r
+                       assertNotNull(sm, "Statictic manager is null");\r
+                       try {\r
+\r
+                               String exits = sm.getExitStatus();\r
+                               assertNotNull("Exit status is null", exits);\r
+                               // cut 4 trailing zeros from the number\r
+                               int exitsInt = ClusterUtil.CLUSTER_STAT_IN_SEC.parse(exits)\r
+                                               .intValue();\r
+                               assertEquals(0, exitsInt);\r
+                               System.out.println(sm.getAllStats());\r
+\r
+                       } catch (ParseException e) {\r
+                               e.printStackTrace();\r
+                               fail("Parse Exception: " + e.getMessage());\r
+                       }\r
+                       // assertFalse(runner.cleanup());\r
+                       assertTrue(sm.hasExited());\r
+                       assertFalse(sm.wasAborted());\r
+                       assertFalse(sm.hasDump());\r
+                       assertFalse(sm.hasSignaled());\r
+\r
+               } catch (JobSubmissionException e) {\r
+                       e.printStackTrace();\r
+                       fail("DrmaaException caught:" + e.getMessage());\r
+               } catch (JobExecutionException e) {\r
+                       e.printStackTrace();\r
+                       fail("DrmaaException caught:" + e.getMessage());\r
+               } catch (DrmaaException e) {\r
+                       e.printStackTrace();\r
+                       fail("DrmaaException caught:" + e.getMessage());\r
+               }\r
+       }\r
+\r
+       /**\r
+        * This tests fails from time to time depending on the cluster load or some\r
+        * other factors. Any client code has to adjust for this issue\r
+        */\r
+       @Test(groups = {AllTestSuit.test_group_cluster,\r
+                       AllTestSuit.test_group_runner})\r
+       public void testRunOnClusterAsync() {\r
+               assertFalse(SysPrefs.isWindows,\r
+                               "Cluster execution can only be in unix environment");\r
+               try {\r
+                       ConfiguredExecutable<GlobPlot> confGlobPlot = Configurator\r
+                                       .configureExecutable(globprot,\r
+                                                       Executable.ExecProvider.Cluster);\r
+                       AsyncExecutor aengine = Configurator.getAsyncEngine(confGlobPlot);\r
+                       String jobId = aengine.submitJob(confGlobPlot);\r
+                       assertNotNull(jobId, "Runner is NULL");\r
+                       // let drmaa to start\r
+                       Thread.sleep(500);\r
+                       JobStatus status = aengine.getJobStatus(jobId);\r
+                       while (status != JobStatus.FINISHED) {\r
+                               System.out.println("Job Status: " + status);\r
+                               Thread.sleep(1000);\r
+                               status = aengine.getJobStatus(jobId);\r
+                               ConfiguredExecutable<GlobPlot> result = (ConfiguredExecutable<GlobPlot>) aengine\r
+                                               .getResults(jobId);\r
+                               assertNotNull(result);\r
+                               System.out.println("RES:" + result);\r
+                               // Some times the job could be removed from the cluster\r
+                               // accounting\r
+                               // before it has been reported to finish. Make sure\r
+                               // to stop waiting in such case\r
+                               if (status == JobStatus.UNDEFINED) {\r
+                                       break;\r
+                               }\r
+                       }\r
+               } catch (JobSubmissionException e) {\r
+                       e.printStackTrace();\r
+                       fail("DrmaaException caught:" + e.getMessage());\r
+               } catch (InterruptedException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (ResultNotAvailableException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               }\r
+       }\r
+\r
+       @Test(groups = {AllTestSuit.test_group_runner})\r
+       public void testRunLocally() {\r
+               try {\r
+                       ConfiguredExecutable<GlobPlot> confGlobPlot = Configurator\r
+                                       .configureExecutable(globprot,\r
+                                                       Executable.ExecProvider.Local);\r
+\r
+                       // For local execution use relative\r
+                       LocalRunner lr = new LocalRunner(confGlobPlot);\r
+                       lr.executeJob();\r
+                       ConfiguredExecutable<?> al1 = lr.waitForResult();\r
+                       assertNotNull(al1.getResults());\r
+                       Map<String, Set<Score>> al2 = confGlobPlot.getResults();\r
+                       assertNotNull(al2);\r
+                       assertEquals(al2.size(), 3);\r
+                       assertEquals(al1.getResults(), al2);\r
+               } catch (JobSubmissionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (ResultNotAvailableException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (JobExecutionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               }\r
+       }\r
+\r
+       @Test(groups = {AllTestSuit.test_group_runner})\r
+       public void readStatistics() {\r
+               // No execution statistics is available!\r
+       }\r
+\r
+       @Test(groups = {AllTestSuit.test_group_runner})\r
+       public void testPersistance() {\r
+               try {\r
+                       GlobPlot disembl = new GlobPlot();\r
+                       disembl.setError("errrr.txt").setInput(AllTestSuit.test_input)\r
+                                       .setOutput("outtt.txt");\r
+                       assertEquals(disembl.getInput(), AllTestSuit.test_input);\r
+                       assertEquals(disembl.getError(), "errrr.txt");\r
+                       assertEquals(disembl.getOutput(), "outtt.txt");\r
+                       ConfiguredExecutable<GlobPlot> cGlobPlot = Configurator\r
+                                       .configureExecutable(disembl, Executable.ExecProvider.Local);\r
+\r
+                       SyncExecutor sexec = Configurator.getSyncEngine(cGlobPlot);\r
+                       sexec.executeJob();\r
+                       ConfiguredExecutable<?> al = sexec.waitForResult();\r
+                       assertNotNull(al.getResults());\r
+                       // Save run configuration\r
+                       assertTrue(cGlobPlot.saveRunConfiguration());\r
+\r
+                       // See if loaded configuration is the same as saved\r
+                       RunConfiguration loadedRun = RunConfiguration\r
+                                       .load(new FileInputStream(new File(cGlobPlot\r
+                                                       .getWorkDirectory(), RunConfiguration.rconfigFile)));\r
+                       assertEquals(\r
+                                       ((ConfExecutable<GlobPlot>) cGlobPlot)\r
+                                                       .getRunConfiguration(),\r
+                                       loadedRun);\r
+                       // Load run configuration as ConfExecutable\r
+                       ConfiguredExecutable<GlobPlot> resurrectedCGlobPlot = (ConfiguredExecutable<GlobPlot>) cGlobPlot\r
+                                       .loadRunConfiguration(new FileInputStream(new File(\r
+                                                       cGlobPlot.getWorkDirectory(),\r
+                                                       RunConfiguration.rconfigFile)));\r
+                       assertNotNull(resurrectedCGlobPlot);\r
+                       assertEquals(resurrectedCGlobPlot.getExecutable().getInput(),\r
+                                       AllTestSuit.test_input);\r
+                       assertEquals(resurrectedCGlobPlot.getExecutable().getError(),\r
+                                       "errrr.txt");\r
+                       assertEquals(resurrectedCGlobPlot.getExecutable().getOutput(),\r
+                                       "outtt.txt");\r
+                       // See in details whether executables are the same\r
+                       assertEquals(resurrectedCGlobPlot.getExecutable(), disembl);\r
+\r
+                       ConfiguredExecutable<GlobPlot> resGlobPlot = Configurator\r
+                                       .configureExecutable(resurrectedCGlobPlot.getExecutable(),\r
+                                                       Executable.ExecProvider.Local);\r
+\r
+                       sexec = Configurator.getSyncEngine(resGlobPlot,\r
+                                       Executable.ExecProvider.Local);\r
+                       sexec.executeJob();\r
+                       al = sexec.waitForResult();\r
+                       assertNotNull(al);\r
+\r
+               } catch (JobSubmissionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (JobExecutionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (FileNotFoundException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (IOException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (ResultNotAvailableException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               }\r
+       }\r
+\r
+       @Test(groups = {AllTestSuit.test_group_runner})\r
+       public void testConfigurationLoading() {\r
+               try {\r
+                       RunnerConfig<GlobPlot> disemblConfig = ConfExecutable\r
+                                       .getRunnerOptions(GlobPlot.class);\r
+                       assertNotNull(disemblConfig);\r
+                       // There is no disembl parameters\r
+                       assertTrue(disemblConfig.getArguments().size() == 0);\r
+\r
+                       PresetManager<GlobPlot> disemblPresets = ConfExecutable\r
+                                       .getRunnerPresets(GlobPlot.class);\r
+                       assertNull(disemblPresets); // there is no presets\r
+\r
+                       LimitsManager<GlobPlot> disemblLimits = ConfExecutable\r
+                                       .getRunnerLimits(GlobPlot.class);\r
+                       assertNotNull(disemblLimits);\r
+                       assertTrue(disemblLimits.getLimits().size() > 0);\r
+                       disemblLimits.validate(disemblPresets);\r
+\r
+               } catch (FileNotFoundException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (IOException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               } catch (ValidationException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getLocalizedMessage());\r
+               }\r
+       }\r
+\r
+}\r
index 06011cc..cb9301d 100644 (file)
@@ -1,3 +1,7 @@
+> Foobar_dundeefriends
+# COILS 34-41, 50-58, 83-91, 118-127, 160-169, 191-220, 243-252, 287-343, 350-391, 429-485, 497-506, 539-547
+# REM465 355-368
+# HOTLOOPS 
 # RESIDUE COILS REM465 HOTLOOPS
 M      0.86010 0.88512 0.37094
 T      0.79983 0.85864 0.44331
@@ -567,6 +571,10 @@ W  0.36015 0.55044 0.05833
 L      0.47985 0.62475 0.12977
 G      0.69681 0.58187 0.22957
 I      0.79530 0.62112 0.21132
+> Foobar
+# COILS 32-40, 65-73, 85-133, 156-165, 200-256, 263-304, 342-398, 410-419, 452-460
+# REM465 1-11, 268-281
+# HOTLOOPS 100-118
 # RESIDUE COILS REM465 HOTLOOPS
 M      0.79892 0.92921 0.40349
 G      0.74423 0.81900 0.43658
@@ -1049,6 +1057,10 @@ W        0.36015 0.55044 0.05833
 L      0.47985 0.62475 0.12977
 G      0.69681 0.58187 0.22957
 I      0.79530 0.62112 0.21132
+> dundeefriends
+# COILS 33-40, 49-57, 82-90, 99-112, 132-141, 163-192, 215-224, 259-315, 322-363, 401-457, 469-478
+# REM465 327-340
+# HOTLOOPS 162-176
 # RESIDUE COILS REM465 HOTLOOPS
 M      0.86010 0.88512 0.37094
 T      0.79983 0.85864 0.44331
diff --git a/testsrc/testdata/globplot.out b/testsrc/testdata/globplot.out
new file mode 100644 (file)
index 0000000..b64de45
--- /dev/null
@@ -0,0 +1,1580 @@
+>Foobar_dundeefriends
+# GlobDoms 2-358, 373-568
+# Disorder 1-5, 206-218, 243-250, 288-300, 313-324, 359-372, 475-481
+# RESIDUE      DYDX    RAW     SMOOTHED
+M      0.0044  -0.2259 -0.2259
+T      -0.1308 -0.2170 -0.2170
+A      0.1138  -0.4786 -0.4786
+D      0.2166  -0.2509 -0.2509
+G      0.2762  0.1823  0.1823
+P      -0.0883 0.7346  0.7346
+R      -0.1023 0.5580  0.5580
+E      -0.1690 0.3533  0.3533
+L      -0.1690 0.0154  0.0154
+L      -0.1690 -0.3225 -0.3225
+Q      -0.1314 -0.5263 -0.5102
+L      -0.1346 -0.7549 -0.8481
+R      -0.1387 -0.9758 -1.0247
+A      -0.1494 -1.2063 -1.2863
+A      -0.1578 -1.4255 -1.5478
+V      -0.1602 -1.6093 -1.9340
+R      -0.1552 -1.7255 -2.1106
+H      -0.1505 -1.8260 -2.1118
+R      -0.1481 -1.9080 -2.2884
+P      -0.1487 -1.9932 -1.7361
+Q      -0.1459 -2.1165 -1.9238
+D      -0.1448 -2.2294 -1.6961
+F      -0.1465 -2.3529 -1.9217
+V      -0.1509 -2.4723 -2.3079
+A      -0.1487 -2.6447 -2.5694
+W      -0.1496 -2.8181 -2.8128
+L      -0.1467 -3.0481 -3.1507
+M      -0.1408 -3.2963 -3.3766
+L      -0.1328 -3.5276 -3.7146
+A      -0.1251 -3.7526 -3.9761
+D      -0.1112 -3.8916 -3.7485
+A      -0.0914 -4.0331 -4.0100
+E      -0.0691 -4.0904 -4.2147
+L      -0.0503 -4.0958 -4.5526
+G      -0.0377 -4.0708 -4.1194
+M      -0.0316 -4.0132 -4.3453
+G      -0.0287 -3.9483 -3.9121
+D      -0.0304 -3.8935 -3.6844
+T      -0.0274 -3.8847 -3.6756
+T      -0.0321 -3.8781 -3.6667
+A      -0.0425 -3.8906 -3.9282
+G      -0.0526 -3.8880 -3.4950
+E      -0.0642 -3.9316 -3.6997
+M      -0.0698 -4.0514 -3.9256
+A      -0.0736 -4.2387 -4.1871
+V      -0.0714 -4.3968 -4.5733
+Q      -0.0648 -4.6000 -4.7610
+R      -0.0553 -4.7368 -4.9376
+G      -0.0456 -4.8141 -4.5043
+L      -0.0400 -4.8435 -4.8423
+A      -0.0362 -4.8415 -5.1038
+L      -0.0366 -4.8415 -5.4418
+H      -0.0336 -4.7825 -5.4430
+P      -0.0253 -4.7554 -4.8907
+G      -0.0207 -4.7156 -4.4574
+H      -0.0230 -4.6639 -4.4586
+P      -0.0313 -4.6408 -3.9063
+E      -0.0438 -4.6396 -4.1110
+A      -0.0569 -4.6841 -4.3726
+V      -0.0648 -4.7102 -4.7587
+A      -0.0777 -4.7733 -5.0203
+R      -0.0945 -4.8800 -5.1969
+L      -0.1142 -5.0570 -5.5348
+G      -0.1358 -5.2672 -5.1016
+R      -0.1503 -5.4680 -5.2782
+V      -0.1591 -5.6478 -5.6643
+R      -0.1675 -5.8306 -5.8409
+W      -0.1690 -5.9581 -6.0843
+T      -0.1725 -6.0822 -6.0754
+Q      -0.1786 -6.2127 -6.2631
+Q      -0.1870 -6.3760 -6.4508
+R      -0.1963 -6.5669 -6.6274
+H      -0.2063 -6.7759 -6.6286
+A      -0.2139 -7.0418 -6.8901
+E      -0.2076 -7.2945 -7.0948
+A      -0.2022 -7.5264 -7.3563
+A      -0.2007 -7.7587 -7.6179
+V      -0.1896 -8.0276 -8.0041
+L      -0.1806 -8.2740 -8.3420
+L      -0.1675 -8.4920 -8.6799
+Q      -0.1460 -8.7199 -8.8676
+Q      -0.1186 -8.9311 -9.0553
+A      -0.0970 -9.0628 -9.3168
+S      -0.0763 -9.1225 -9.1739
+D      -0.0608 -9.1310 -8.9463
+A      -0.0485 -9.1019 -9.2078
+A      -0.0413 -9.0427 -9.4694
+P      -0.0292 -9.0094 -8.9171
+E      -0.0203 -8.9775 -9.1218
+H      -0.0180 -8.9371 -9.1230
+P      -0.0234 -8.9005 -8.5707
+G      -0.0325 -8.8808 -8.1374
+I      -0.0396 -8.9116 -8.5597
+A      -0.0529 -8.9681 -8.8212
+L      -0.0574 -9.0678 -9.1591
+W      -0.0603 -9.1470 -9.4025
+L      -0.0692 -9.2411 -9.7404
+G      -0.0832 -9.3680 -9.3072
+H      -0.0916 -9.4644 -9.3084
+A      -0.1041 -9.5829 -9.5700
+L      -0.1176 -9.7153 -9.9079
+E      -0.1241 -9.8142 -10.1126
+D      -0.1241 -9.8709 -9.8850
+A      -0.1282 -9.9483 -10.1465
+G      -0.1316 -10.0546        -9.7133
+Q      -0.1381 -10.1852        -9.9010
+A      -0.1478 -10.3348        -10.1625
+E      -0.1585 -10.5346        -10.3672
+A      -0.1622 -10.7075        -10.6287
+A      -0.1661 -10.8657        -10.8903
+A      -0.1736 -11.0327        -11.1518
+A      -0.1740 -11.2739        -11.4133
+A      -0.1765 -11.5188        -11.6749
+Y      -0.1748 -11.7334        -11.8824
+T      -0.1657 -11.9933        -11.8735
+R      -0.1500 -12.1756        -12.0501
+A      -0.1386 -12.3069        -12.3116
+H      -0.1266 -12.4283        -12.3128
+Q      -0.1172 -12.5187        -12.5005
+L      -0.1100 -12.5936        -12.8385
+L      -0.1072 -12.6504        -13.1764
+P      -0.1086 -12.6999        -12.6241
+E      -0.1068 -12.7843        -12.8288
+E      -0.1085 -12.8699        -13.0334
+P      -0.1121 -12.9644        -12.4811
+Y      -0.1146 -13.0533        -12.6886
+I      -0.1184 -13.1500        -13.1109
+T      -0.1268 -13.2566        -13.1020
+A      -0.1318 -13.3789        -13.3635
+Q      -0.1328 -13.5388        -13.5512
+L      -0.1387 -13.7143        -13.8891
+L      -0.1487 -13.9215        -14.2271
+N      -0.1515 -14.0861        -13.9972
+W      -0.1578 -14.2523        -14.2406
+R      -0.1600 -14.4605        -14.4172
+R      -0.1559 -14.5985        -14.5937
+R      -0.1545 -14.7201        -14.7703
+L      -0.1524 -14.8781        -15.1083
+C      -0.1495 -15.0103        -15.1234
+D      -0.1483 -15.1427        -14.8958
+W      -0.1504 -15.2619        -15.1392
+R      -0.1551 -15.4013        -15.3158
+A      -0.1635 -15.5628        -15.5773
+L      -0.1678 -15.7048        -15.9152
+D      -0.1757 -15.8518        -15.6876
+V      -0.1843 -16.0133        -16.0738
+L      -0.1926 -16.1954        -16.4117
+S      -0.1926 -16.4320        -16.2688
+A      -0.1980 -16.6718        -16.5304
+Q      -0.1934 -16.9450        -16.7180
+V      -0.1850 -17.1666        -17.1042
+R      -0.1806 -17.3618        -17.2808
+A      -0.1765 -17.5442        -17.5423
+A      -0.1643 -17.7649        -17.8039
+V      -0.1560 -17.9679        -18.1901
+A      -0.1443 -18.1104        -18.4516
+Q      -0.1368 -18.2403        -18.6393
+G      -0.1345 -18.3579        -18.2061
+V      -0.1243 -18.4598        -18.5922
+G      -0.1164 -18.5430        -18.1590
+A      -0.1043 -18.6311        -18.4205
+V      -0.0978 -18.7048        -18.8067
+E      -0.0886 -18.7817        -19.0114
+P      -0.0838 -18.8410        -18.4591
+F      -0.0832 -18.8935        -18.6847
+A      -0.0880 -18.9645        -18.9462
+F      -0.0963 -19.0573        -19.1718
+L      -0.1093 -19.1660        -19.5097
+S      -0.1167 -19.2503        -19.3668
+E      -0.1263 -19.3827        -19.5715
+D      -0.1299 -19.4815        -19.3439
+A      -0.1356 -19.5982        -19.6054
+S      -0.1427 -19.7595        -19.4625
+A      -0.1517 -19.9432        -19.7241
+A      -0.1528 -20.0807        -19.9856
+E      -0.1552 -20.2254        -20.1903
+Q      -0.1603 -20.3794        -20.3780
+L      -0.1698 -20.5376        -20.7159
+A      -0.1828 -20.7297        -20.9774
+C      -0.1927 -20.9215        -20.9926
+A      -0.1986 -21.1583        -21.2541
+R      -0.2017 -21.3621        -21.4307
+T      -0.2054 -21.5805        -21.4218
+R      -0.1946 -21.8196        -21.5984
+A      -0.1872 -22.0304        -21.8600
+Q      -0.1821 -22.2253        -22.0476
+A      -0.1679 -22.4506        -22.3092
+I      -0.1523 -22.6526        -22.7314
+A      -0.1403 -22.8316        -22.9930
+A      -0.1336 -22.9780        -23.2545
+S      -0.1259 -23.0946        -23.1116
+V      -0.1163 -23.2186        -23.4978
+R      -0.1072 -23.3246        -23.6744
+P      -0.0893 -23.4273        -23.1221
+L      -0.0641 -23.5283        -23.4600
+A      -0.0453 -23.5684        -23.7215
+P      -0.0298 -23.5663        -23.1692
+T      -0.0213 -23.5249        -23.1603
+R      -0.0113 -23.5220        -23.3369
+V      -0.0072 -23.5040        -23.7231
+R      -0.0111 -23.4767        -23.8997
+S      -0.0102 -23.4531        -23.7568
+K      -0.0109 -23.4738        -23.8569
+G      -0.0084 -23.5363        -23.4237
+P      -0.0016 -23.5309        -22.8714
+L      0.0063  -23.5629        -23.2093
+R      0.0063  -23.5848        -23.3859
+V      0.0136  -23.5575        -23.7721
+G      0.0282  -23.5419        -23.3388
+F      0.0398  -23.5068        -23.5644
+V      0.0505  -23.5029        -23.9506
+S      0.0523  -23.4715        -23.8077
+N      0.0501  -23.4058        -23.5778
+G      0.0454  -23.3568        -23.1446
+F      0.0406  -23.2606        -23.3702
+G      0.0400  -23.1123        -22.9369
+A      0.0311  -22.9758        -23.1985
+H      0.0176  -22.8641        -23.1997
+P      -0.0032 -22.8087        -22.6474
+T      -0.0205 -22.7510        -22.6385
+G      -0.0439 -22.7364        -22.2053
+L      -0.0735 -22.8028        -22.5432
+L      -0.1019 -22.9191        -22.8812
+T      -0.1274 -23.0739        -22.8723
+V      -0.1467 -23.2403        -23.2584
+A      -0.1590 -23.5027        -23.5200
+L      -0.1598 -23.7667        -23.8579
+F      -0.1663 -24.0344        -24.0835
+E      -0.1727 -24.3050        -24.2882
+A      -0.1714 -24.5257        -24.5497
+L      -0.1661 -24.7373        -24.8876
+Q      -0.1552 -24.8728        -25.0753
+R      -0.1472 -24.9927        -25.2519
+R      -0.1427 -25.1024        -25.4285
+Q      -0.1335 -25.1947        -25.6162
+P      -0.1233 -25.3008        -25.0639
+D      -0.1072 -25.4241        -24.8362
+L      -0.0901 -25.5466        -25.1742
+Q      -0.0710 -25.6561        -25.3619
+M      -0.0475 -25.7581        -25.5878
+H      -0.0250 -25.8314        -25.5890
+L      -0.0069 -25.8787        -25.9269
+F      0.0040  -25.8787        -26.1525
+A      0.0101  -25.8574        -26.4140
+T      0.0139  -25.8368        -26.4051
+S      0.0125  -25.8141        -26.2623
+G      0.0145  -25.7262        -25.8290
+D      0.0173  -25.5971        -25.6014
+D      0.0144  -25.4789        -25.3738
+G      0.0068  -25.3685        -24.9405
+S      -0.0006 -25.3037        -24.7977
+T      -0.0069 -25.2567        -24.7888
+L      -0.0214 -25.2360        -25.1267
+R      -0.0381 -25.2708        -25.3033
+T      -0.0549 -25.3831        -25.2944
+R      -0.0765 -25.5151        -25.4710
+L      -0.0953 -25.6884        -25.8090
+A      -0.1106 -25.8544        -26.0705
+Q      -0.1253 -26.0173        -26.2582
+A      -0.1288 -26.2179        -26.5197
+S      -0.1239 -26.3853        -26.3768
+T      -0.1187 -26.5054        -26.3679
+L      -0.1134 -26.5926        -26.7059
+H      -0.1091 -26.6929        -26.7071
+D      -0.1076 -26.7797        -26.4795
+V      -0.1038 -26.8519        -26.8656
+T      -0.0991 -26.9263        -26.8568
+A      -0.1015 -26.9916        -27.1183
+L      -0.1065 -27.0724        -27.4562
+G      -0.1110 -27.1786        -27.0230
+H      -0.1162 -27.3159        -27.0242
+L      -0.1111 -27.4743        -27.3622
+A      -0.1091 -27.5925        -27.6237
+T      -0.1060 -27.7451        -27.6148
+A      -0.1053 -27.8685        -27.8764
+K      -0.1031 -27.9475        -27.9765
+H      -0.1060 -28.0390        -27.9777
+I      -0.1028 -28.1459        -28.3999
+R      -0.1049 -28.2461        -28.5765
+H      -0.1113 -28.3685        -28.5777
+H      -0.1031 -28.4886        -28.5789
+G      -0.0954 -28.5713        -28.1457
+I      -0.0839 -28.6855        -28.5679
+D      -0.0686 -28.8162        -28.3403
+L      -0.0463 -28.9301        -28.6782
+L      -0.0217 -29.0352        -29.0162
+F      -0.0011 -29.0778        -29.2418
+D      0.0265  -29.0999        -29.0141
+L      0.0443  -29.0805        -29.3521
+R      0.0533  -29.0122        -29.5287
+G      0.0585  -28.9098        -29.0954
+W      0.0595  -28.7809        -29.3388
+G      0.0620  -28.5919        -28.9056
+G      0.0568  -28.4241        -28.4723
+G      0.0623  -28.2793        -28.0391
+G      0.0595  -28.1365        -27.6059
+R      0.0589  -28.0622        -27.7825
+P      0.0487  -27.9900        -27.2302
+E      0.0382  -27.9138        -27.4349
+V      0.0173  -27.8738        -27.8210
+F      -0.0038 -27.9160        -28.0466
+A      -0.0228 -27.9597        -28.3081
+L      -0.0499 -28.0548        -28.6461
+R      -0.0743 -28.1644        -28.8227
+P      -0.0944 -28.2838        -28.2704
+A      -0.0994 -28.4432        -28.5319
+P      -0.0911 -28.5985        -27.9796
+V      -0.0837 -28.7475        -28.3658
+Q      -0.0652 -28.8342        -28.5534
+V      -0.0423 -28.9150        -28.9396
+N      -0.0272 -28.9569        -28.7097
+W      -0.0074 -29.0112        -28.9531
+L      0.0053  -29.0259        -29.2910
+A      0.0100  -29.0268        -29.5526
+Y      0.0148  -29.0449        -29.7601
+P      0.0239  -28.9906        -29.2078
+G      0.0244  -28.9152        -28.7745
+T      0.0286  -28.7696        -28.7657
+S      0.0343  -28.6707        -28.6228
+G      0.0407  -28.5865        -28.1895
+A      0.0380  -28.5067        -28.4511
+P      0.0353  -28.4008        -27.8988
+W      0.0260  -28.3088        -28.1421
+M      0.0077  -28.2515        -28.3680
+D      -0.0069 -28.2944        -28.1404
+Y      -0.0181 -28.4246        -28.3479
+V      -0.0265 -28.5206        -28.7341
+L      -0.0339 -28.5809        -29.0720
+G      -0.0435 -28.6470        -28.6388
+D      -0.0433 -28.7546        -28.4112
+A      -0.0399 -28.8101        -28.6727
+F      -0.0419 -28.8677        -28.8983
+A      -0.0335 -28.8878        -29.1598
+L      -0.0298 -28.8953        -29.4978
+P      -0.0281 -28.9123        -28.9454
+P      -0.0271 -28.8815        -28.3931
+A      -0.0317 -28.8459        -28.6547
+L      -0.0421 -28.8442        -28.9926
+E      -0.0600 -28.8783        -29.1973
+P      -0.0725 -28.9058        -28.6450
+F      -0.0736 -28.9652        -28.8705
+Y      -0.0796 -29.0336        -29.0780
+S      -0.0895 -29.1221        -28.9352
+E      -0.1034 -29.2457        -29.1398
+H      -0.1127 -29.4629        -29.1411
+V      -0.1114 -29.6606        -29.5272
+L      -0.0976 -29.8158        -29.8652
+R      -0.0856 -29.9581        -30.0418
+L      -0.0749 -30.1066        -30.3797
+Q      -0.0685 -30.2356        -30.5674
+G      -0.0583 -30.2758        -30.1341
+A      -0.0542 -30.2865        -30.3957
+F      -0.0541 -30.2879        -30.6213
+Q      -0.0522 -30.2616        -30.8089
+P      -0.0431 -30.2762        -30.2566
+S      -0.0250 -30.2966        -30.1137
+D      -0.0094 -30.3129        -29.8861
+T      -0.0004 -30.3098        -29.8772
+S      0.0064  -30.3003        -29.7343
+R      0.0060  -30.2935        -29.9109
+V      0.0026  -30.3039        -30.2971
+V      0.0106  -30.3086        -30.6833
+A      0.0101  -30.2983        -30.9448
+E      0.0133  -30.3408        -31.1495
+P      0.0098  -30.3825        -30.5972
+P      0.0105  -30.3742        -30.0449
+S      0.0186  -30.3758        -29.9020
+R      0.0242  -30.3158        -30.0786
+T      0.0251  -30.2191        -30.0697
+Q      0.0242  -30.0878        -30.2574
+C      0.0218  -29.9722        -30.2725
+G      0.0148  -29.8952        -29.8393
+L      -0.0001 -29.8574        -30.1772
+P      -0.0155 -29.8933        -29.6249
+E      -0.0310 -29.9994        -29.8296
+Q      -0.0377 -30.1038        -30.0173
+G      -0.0395 -30.1641        -29.5841
+V      -0.0399 -30.2095        -29.9702
+V      -0.0462 -30.2518        -30.3564
+L      -0.0482 -30.3205        -30.6943
+C      -0.0449 -30.4410        -30.7095
+C      -0.0442 -30.5439        -30.7246
+F      -0.0353 -30.6140        -30.9502
+N      -0.0337 -30.6789        -30.7203
+N      -0.0272 -30.6747        -30.4905
+S      -0.0244 -30.6608        -30.3476
+Y      -0.0258 -30.6426        -30.5551
+K      -0.0240 -30.5681        -30.6552
+L      -0.0286 -30.5061        -30.9931
+N      -0.0415 -30.4661        -30.7632
+P      -0.0612 -30.4671        -30.2109
+Q      -0.0812 -30.5064        -30.3986
+S      -0.1015 -30.5828        -30.2557
+M      -0.1273 -30.7056        -30.4816
+A      -0.1397 -30.8997        -30.7431
+R      -0.1432 -31.1137        -30.9197
+M      -0.1404 -31.3286        -31.1456
+L      -0.1429 -31.5302        -31.4836
+A      -0.1485 -31.7249        -31.7451
+V      -0.1590 -31.9466        -32.1313
+L      -0.1676 -32.1513        -32.4692
+R      -0.1690 -32.3044        -32.6458
+E      -0.1664 -32.4797        -32.8505
+V      -0.1516 -32.6542        -33.2367
+P      -0.1289 -32.8377        -32.6843
+D      -0.1012 -33.0080        -32.4567
+S      -0.0766 -33.1103        -32.3138
+V      -0.0564 -33.1536        -32.7000
+L      -0.0358 -33.1865        -33.0379
+W      -0.0209 -33.1747        -33.2813
+L      -0.0123 -33.1484        -33.6193
+L      -0.0117 -33.1105        -33.9572
+S      -0.0146 -33.0756        -33.8143
+G      -0.0227 -33.0506        -33.3811
+P      -0.0379 -33.0664        -32.8288
+G      -0.0476 -33.0547        -32.3955
+E      -0.0519 -33.0441        -32.6002
+A      -0.0550 -33.0136        -32.8618
+D      -0.0632 -33.0117        -32.6341
+A      -0.0679 -33.0817        -32.8957
+R      -0.0793 -33.1616        -33.0723
+L      -0.0907 -33.3112        -33.4102
+R      -0.1092 -33.5039        -33.5868
+A      -0.1271 -33.7185        -33.8483
+F      -0.1395 -33.9271        -34.0739
+A      -0.1462 -34.0954        -34.3354
+H      -0.1482 -34.2155        -34.3367
+A      -0.1516 -34.3410        -34.5982
+Q      -0.1572 -34.4803        -34.7859
+G      -0.1478 -34.6382        -34.3526
+V      -0.1394 -34.7855        -34.7388
+D      -0.1341 -34.9039        -34.5112
+A      -0.1224 -35.0652        -34.7727
+Q      -0.1103 -35.2091        -34.9604
+R      -0.0921 -35.3737        -35.1370
+L      -0.0779 -35.5003        -35.4749
+V      -0.0686 -35.6012        -35.8611
+F      -0.0622 -35.6581        -36.0867
+M      -0.0610 -35.7054        -36.3126
+P      -0.0628 -35.7543        -35.7603
+K      -0.0593 -35.7548        -35.8604
+L      -0.0607 -35.7677        -36.1983
+P      -0.0565 -35.7606        -35.6460
+H      -0.0566 -35.7483        -35.6472
+P      -0.0537 -35.7625        -35.0949
+Q      -0.0554 -35.7634        -35.2825
+Y      -0.0624 -35.7836        -35.4901
+L      -0.0771 -35.8344        -35.8280
+A      -0.0897 -35.9524        -36.0895
+R      -0.1038 -36.1211        -36.2661
+Y      -0.1087 -36.2737        -36.4736
+R      -0.1058 -36.4759        -36.6502
+H      -0.1092 -36.6882        -36.6514
+A      -0.1007 -36.8707        -36.9130
+D      -0.0941 -37.0154        -36.6853
+L      -0.0778 -37.0913        -37.0233
+F      -0.0616 -37.1405        -37.2488
+L      -0.0460 -37.1652        -37.5868
+D      -0.0365 -37.1639        -37.3592
+T      -0.0271 -37.1682        -37.3503
+H      -0.0159 -37.1756        -37.3515
+P      -0.0102 -37.1578        -36.7992
+Y      -0.0105 -37.1216        -37.0067
+N      -0.0129 -37.0712        -36.7768
+A      -0.0174 -37.0491        -37.0383
+H      -0.0120 -37.0407        -37.0396
+T      -0.0108 -37.0473        -37.0307
+T      -0.0052 -37.1016        -37.0218
+A      -0.0101 -37.1516        -37.2833
+S      -0.0167 -37.1752        -37.1405
+D      -0.0229 -37.2149        -36.9128
+A      -0.0288 -37.2704        -37.1744
+L      -0.0194 -37.3216        -37.5123
+W      -0.0072 -37.3920        -37.7557
+T      0.0049  -37.4004        -37.7468
+G      0.0133  -37.4023        -37.3136
+C      0.0184  -37.3712        -37.3287
+P      0.0200  -37.3122        -36.7764
+V      0.0185  -37.2334        -37.1626
+L      0.0115  -37.1714        -37.5005
+T      0.0021  -37.0919        -37.4916
+T      -0.0065 -36.9996        -37.4828
+P      -0.0113 -36.9745        -36.9304
+G      -0.0183 -36.9990        -36.4972
+E      -0.0329 -37.0438        -36.7019
+T      -0.0441 -37.1370        -36.6930
+F      -0.0490 -37.2191        -36.9186
+A      -0.0535 -37.3141        -37.1801
+A      -0.0539 -37.3509        -37.4417
+R      -0.0524 -37.4456        -37.6183
+V      -0.0595 -37.5473        -38.0044
+A      -0.0627 -37.6777        -38.2660
+G      -0.0681 -37.8036        -37.8327
+S      -0.0678 -37.8796        -37.6899
+L      -0.0566 -37.9264        -38.0278
+N      -0.0514 -37.9395        -37.7979
+H      -0.0473 -37.9213        -37.7991
+H      -0.0408 -37.9226        -37.8003
+L      -0.0332 -37.9414        -38.1383
+G      -0.0313 -37.9483        -37.7051
+L      -0.0341 -37.9503        -38.0430
+D      -0.0438 -37.9795        -37.8154
+E      -0.0611 -38.0338        -38.0200
+M      -0.0742 -38.0760        -38.2459
+N      -0.0842 -38.1298        -38.0161
+V      -0.0998 -38.2214        -38.4022
+A      -0.1147 -38.3068        -38.6638
+D      -0.1296 -38.4109        -38.4361
+D      -0.1453 -38.5293        -38.2085
+A      -0.1652 -38.6979        -38.4701
+A      -0.1729 -38.8802        -38.7316
+F      -0.1782 -39.1199        -38.9572
+V      -0.1695 -39.3787        -39.3433
+A      -0.1638 -39.6151        -39.6049
+K      -0.1615 -39.8389        -39.7050
+A      -0.1569 -40.0131        -39.9665
+V      -0.1537 -40.2059        -40.3527
+A      -0.1540 -40.3951        -40.6142
+L      -0.1519 -40.5413        -40.9522
+A      -0.1423 -40.6562        -41.2137
+S      -0.1352 -40.7501        -41.0708
+D      -0.1296 -40.8341        -40.8432
+P      -0.1277 -40.8971        -40.2909
+A      -0.1237 -40.9970        -40.5524
+A      -0.1246 -41.0840        -40.8139
+L      -0.1272 -41.1581        -41.1519
+T      -0.1315 -41.2471        -41.1430
+A      -0.1393 -41.3665        -41.4045
+L      -0.1496 -41.5127        -41.7425
+H      -0.1589 -41.7184        -41.7437
+A      -0.1630 -41.9912        -42.0052
+R      -0.1678 -42.2370        -42.1818
+V      -0.1691 -42.4577        -42.5680
+D      -0.1616 -42.6159        -42.3404
+V      -0.1561 -42.7603        -42.7265
+L      -0.1468 -42.9214        -43.0645
+R      -0.1327 -43.1088        -43.2411
+R      -0.1185 -43.2437        -43.4177
+E      -0.1082 -43.3476        -43.6223
+S      -0.0964 -43.4646        -43.4795
+G      -0.0792 -43.5616        -43.0462
+V      -0.0664 -43.6236        -43.4324
+F      -0.0484 -43.6908        -43.6580
+E      -0.0379 -43.7311        -43.8627
+M      -0.0273 -43.7039        -44.0886
+D      -0.0246 -43.6635        -43.8609
+G      -0.0273 -43.6339        -43.4277
+F      -0.0342 -43.6103        -43.6533
+A      -0.0462 -43.5988        -43.9148
+D      -0.0625 -43.6188        -43.6872
+D      -0.0769 -43.6544        -43.4596
+F      -0.0850 -43.6743        -43.6851
+G      -0.0952 -43.7451        -43.2519
+A      -0.1003 -43.8827        -43.5134
+L      -0.1095 -44.0355        -43.8514
+L      -0.1243 -44.2104        -44.1893
+Q      -0.1281 -44.4236        -44.3770
+A      -0.1293 -44.5813        -44.6385
+L      -0.1308 -44.9765        -44.9765
+A      -0.0883 -45.2380        -45.2380
+R      -0.0883 -45.4146        -45.4146
+R      -0.0006 -45.5912        -45.5912
+H      0.2166  -45.5924        -45.5924
+G      -0.1217 -45.1592        -45.1592
+W      -0.1690 -45.4026        -45.4026
+L      0.2166  -45.7405        -45.7405
+G      -0.2111 -45.3073        -45.3073
+I      -0.2111 -45.7295        -45.7295
+
+
+>Foobar
+# GlobDoms 5-271, 286-481
+# Disorder 1-6, 119-131, 156-163, 201-213, 226-237, 272-285, 388-394
+# RESIDUE      DYDX    RAW     SMOOTHED
+M      0.2166  -0.2259 -0.2259
+G      0.1138  0.2073  0.2073
+D      0.0044  0.4350  0.4350
+T      0.0044  0.4438  0.4438
+T      -0.1308 0.4527  0.4527
+A      0.2166  0.1912  0.1912
+G      -0.1023 0.6244  0.6244
+E      -0.1130 0.4197  0.4197
+M      -0.1308 0.1938  0.1938
+A      -0.1308 -0.0677 -0.0677
+V      -0.1150 -0.1599 -0.4539
+Q      -0.1308 -0.3499 -0.6416
+R      -0.1417 -0.5234 -0.8182
+G      -0.1489 -0.6885 -0.3849
+L      -0.1559 -0.8519 -0.7229
+A      -0.1621 -1.0123 -0.9844
+L      -0.1728 -1.1849 -1.3224
+H      -0.1771 -1.3208 -1.3236
+Q      -0.1834 -1.4605 -1.5112
+Q      -0.1896 -1.6186 -1.6989
+R      -0.1965 -1.7985 -1.8755
+H      -0.2067 -2.0090 -1.8767
+A      -0.2124 -2.2634 -2.1383
+E      -0.2128 -2.5547 -2.3430
+A      -0.2060 -2.7877 -2.6045
+A      -0.2022 -3.0129 -2.8660
+V      -0.1897 -3.2763 -3.2522
+L      -0.1806 -3.5222 -3.5901
+L      -0.1675 -3.7401 -3.9281
+Q      -0.1460 -3.9681 -4.1158
+Q      -0.1186 -4.1793 -4.3034
+A      -0.0970 -4.3110 -4.5650
+S      -0.0763 -4.3706 -4.4221
+D      -0.0608 -4.3792 -4.1945
+A      -0.0485 -4.3500 -4.4560
+A      -0.0413 -4.2909 -4.7175
+P      -0.0348 -4.2332 -4.1652
+E      -0.0344 -4.1760 -4.3699
+H      -0.0407 -4.1261 -4.3711
+P      -0.0518 -4.1078 -3.8188
+G      -0.0603 -4.1441 -3.3856
+I      -0.0729 -4.2017 -3.8078
+A      -0.0817 -4.3363 -4.0694
+L      -0.0898 -4.4683 -4.4073
+W      -0.0965 -4.5837 -4.6507
+L      -0.1075 -4.7254 -4.9886
+H      -0.1235 -4.9011 -4.9898
+A      -0.1330 -5.0502 -5.2513
+L      -0.1457 -5.2230 -5.5893
+E      -0.1586 -5.4092 -5.7940
+D      -0.1628 -5.5620 -5.5663
+A      -0.1561 -5.6809 -5.8279
+G      -0.1527 -5.8049 -5.3947
+Q      -0.1516 -5.9234 -5.5823
+A      -0.1507 -6.0636 -5.8439
+E      -0.1513 -6.2074 -6.0486
+A      -0.1569 -6.3592 -6.3101
+A      -0.1627 -6.5009 -6.5716
+A      -0.1603 -6.7057 -6.8332
+A      -0.1619 -6.9191 -7.0947
+Y      -0.1655 -7.1390 -7.3022
+T      -0.1553 -7.3740 -7.2933
+R      -0.1484 -7.5915 -7.4699
+A      -0.1379 -7.7253 -7.7315
+H      -0.1259 -7.8449 -7.7327
+Q      -0.1172 -7.9385 -7.9204
+L      -0.1100 -8.0134 -8.2583
+L      -0.1072 -8.0702 -8.5962
+P      -0.1086 -8.1197 -8.0439
+E      -0.1068 -8.2041 -8.2486
+E      -0.1087 -8.2887 -8.4533
+P      -0.1153 -8.3711 -7.9010
+Y      -0.1215 -8.4500 -8.1085
+I      -0.1288 -8.5452 -8.5307
+T      -0.1302 -8.7014 -8.5218
+A      -0.1336 -8.8360 -8.7834
+Q      -0.1305 -9.0158 -8.9710
+L      -0.1329 -9.2002 -9.3090
+L      -0.1425 -9.3962 -9.6469
+N      -0.1442 -9.5517 -9.4170
+A      -0.1379 -9.7560 -9.6786
+V      -0.1347 -9.9469 -10.0647
+A      -0.1243 -10.0620        -10.3263
+Q      -0.1161 -10.1523        -10.5139
+G      -0.1144 -10.2362        -10.0807
+V      -0.1070 -10.3184        -10.4669
+G      -0.1025 -10.3897        -10.0337
+A      -0.0943 -10.4751        -10.2952
+V      -0.0914 -10.5520        -10.6814
+E      -0.0886 -10.6564        -10.8861
+P      -0.0838 -10.7157        -10.3338
+F      -0.0832 -10.7682        -10.5593
+A      -0.0880 -10.8391        -10.8209
+F      -0.0921 -10.9504        -11.0464
+L      -0.1017 -11.0647        -11.3844
+S      -0.1052 -11.1515        -11.2415
+E      -0.1039 -11.3088        -11.4462
+D      -0.0989 -11.4025        -11.2185
+A      -0.0981 -11.4888        -11.4801
+S      -0.0928 -11.6352        -11.3372
+A      -0.0885 -11.7850        -11.5987
+A      -0.0773 -11.8627        -11.8603
+E      -0.0720 -11.9079        -12.0650
+S      -0.0701 -11.9501        -11.9221
+V      -0.0671 -12.0129        -12.3083
+R      -0.0683 -12.0906        -12.4848
+P      -0.0601 -12.1805        -11.9325
+L      -0.0464 -12.2976        -12.2705
+A      -0.0336 -12.3405        -12.5320
+P      -0.0257 -12.3633        -11.9797
+T      -0.0199 -12.3308        -11.9708
+R      -0.0106 -12.3293        -12.1474
+V      -0.0072 -12.3145        -12.5336
+R      -0.0111 -12.2871        -12.7102
+S      -0.0102 -12.2636        -12.5673
+K      -0.0109 -12.2842        -12.6674
+G      -0.0084 -12.3468        -12.2341
+P      -0.0016 -12.3414        -11.6818
+L      0.0063  -12.3733        -12.0198
+R      0.0063  -12.3953        -12.1964
+V      0.0136  -12.3679        -12.5825
+G      0.0282  -12.3523        -12.1493
+F      0.0398  -12.3173        -12.3749
+V      0.0505  -12.3133        -12.7611
+S      0.0523  -12.2819        -12.6182
+N      0.0501  -12.2163        -12.3883
+G      0.0454  -12.1672        -11.9551
+F      0.0406  -12.0710        -12.1806
+G      0.0400  -11.9227        -11.7474
+A      0.0311  -11.7863        -12.0089
+H      0.0176  -11.6746        -12.0102
+P      -0.0032 -11.6191        -11.4578
+T      -0.0205 -11.5614        -11.4490
+G      -0.0439 -11.5468        -11.0157
+L      -0.0735 -11.6133        -11.3537
+L      -0.1019 -11.7296        -11.6916
+T      -0.1274 -11.8844        -11.6827
+V      -0.1467 -12.0508        -12.0689
+A      -0.1590 -12.3132        -12.3304
+L      -0.1598 -12.5772        -12.6684
+F      -0.1663 -12.8449        -12.8940
+E      -0.1727 -13.1155        -13.0986
+A      -0.1714 -13.3362        -13.3602
+L      -0.1661 -13.5478        -13.6981
+Q      -0.1552 -13.6833        -13.8858
+R      -0.1472 -13.8031        -14.0624
+R      -0.1427 -13.9128        -14.2390
+Q      -0.1335 -14.0052        -14.4266
+P      -0.1233 -14.1113        -13.8743
+D      -0.1072 -14.2346        -13.6467
+L      -0.0901 -14.3570        -13.9846
+Q      -0.0710 -14.4666        -14.1723
+M      -0.0475 -14.5685        -14.3982
+H      -0.0250 -14.6419        -14.3994
+L      -0.0069 -14.6892        -14.7374
+F      0.0040  -14.6892        -14.9629
+A      0.0101  -14.6678        -15.2245
+T      0.0139  -14.6473        -15.2156
+S      0.0125  -14.6245        -15.0727
+G      0.0145  -14.5367        -14.6395
+D      0.0173  -14.4076        -14.4119
+D      0.0144  -14.2894        -14.1842
+G      0.0068  -14.1790        -13.7510
+S      -0.0006 -14.1141        -13.6081
+T      -0.0069 -14.0672        -13.5992
+L      -0.0214 -14.0465        -13.9372
+R      -0.0381 -14.0812        -14.1138
+T      -0.0549 -14.1935        -14.1049
+R      -0.0765 -14.3256        -14.2815
+L      -0.0953 -14.4988        -14.6194
+A      -0.1106 -14.6648        -14.8810
+Q      -0.1253 -14.8277        -15.0686
+A      -0.1288 -15.0284        -15.3302
+S      -0.1239 -15.1958        -15.1873
+T      -0.1187 -15.3158        -15.1784
+L      -0.1134 -15.4030        -15.5163
+H      -0.1091 -15.5033        -15.5176
+D      -0.1076 -15.5901        -15.2899
+V      -0.1038 -15.6624        -15.6761
+T      -0.0991 -15.7367        -15.6672
+A      -0.1015 -15.8020        -15.9288
+L      -0.1065 -15.8828        -16.2667
+G      -0.1110 -15.9891        -15.8335
+H      -0.1162 -16.1264        -15.8347
+L      -0.1111 -16.2847        -16.1726
+A      -0.1091 -16.4029        -16.4342
+T      -0.1060 -16.5555        -16.4253
+A      -0.1053 -16.6790        -16.6868
+K      -0.1031 -16.7579        -16.7869
+H      -0.1060 -16.8494        -16.7881
+I      -0.1028 -16.9564        -17.2104
+R      -0.1049 -17.0565        -17.3870
+H      -0.1113 -17.1789        -17.3882
+H      -0.1031 -17.2991        -17.3894
+G      -0.0954 -17.3817        -16.9562
+I      -0.0839 -17.4960        -17.3784
+D      -0.0686 -17.6266        -17.1508
+L      -0.0463 -17.7406        -17.4887
+L      -0.0217 -17.8457        -17.8266
+F      -0.0011 -17.8883        -18.0522
+D      0.0265  -17.9103        -17.8246
+L      0.0443  -17.8910        -18.1625
+R      0.0533  -17.8227        -18.3391
+G      0.0585  -17.7203        -17.9059
+W      0.0595  -17.5914        -18.1493
+G      0.0620  -17.4024        -17.7160
+G      0.0568  -17.2345        -17.2828
+G      0.0623  -17.0897        -16.8496
+G      0.0595  -16.9469        -16.4164
+R      0.0589  -16.8727        -16.5930
+P      0.0487  -16.8005        -16.0406
+E      0.0382  -16.7243        -16.2453
+V      0.0173  -16.6843        -16.6315
+F      -0.0038 -16.7264        -16.8571
+A      -0.0228 -16.7702        -17.1186
+L      -0.0499 -16.8652        -17.4565
+R      -0.0743 -16.9749        -17.6331
+P      -0.0944 -17.0942        -17.0808
+A      -0.0994 -17.2537        -17.3424
+P      -0.0911 -17.4090        -16.7900
+V      -0.0837 -17.5579        -17.1762
+Q      -0.0652 -17.6447        -17.3639
+V      -0.0423 -17.7254        -17.7501
+N      -0.0272 -17.7674        -17.5202
+W      -0.0074 -17.8217        -17.7636
+L      0.0053  -17.8364        -18.1015
+A      0.0100  -17.8373        -18.3630
+Y      0.0148  -17.8553        -18.5705
+P      0.0239  -17.8010        -18.0182
+G      0.0244  -17.7257        -17.5850
+T      0.0286  -17.5801        -17.5761
+S      0.0343  -17.4811        -17.4332
+G      0.0407  -17.3969        -17.0000
+A      0.0380  -17.3171        -17.2615
+P      0.0353  -17.2113        -16.7092
+W      0.0260  -17.1192        -16.9526
+M      0.0077  -17.0620        -17.1785
+D      -0.0069 -17.1048        -16.9509
+Y      -0.0181 -17.2350        -17.1584
+V      -0.0265 -17.3311        -17.5446
+L      -0.0339 -17.3913        -17.8825
+G      -0.0435 -17.4575        -17.4493
+D      -0.0433 -17.5651        -17.2216
+A      -0.0399 -17.6206        -17.4832
+F      -0.0419 -17.6782        -17.7087
+A      -0.0335 -17.6983        -17.9703
+L      -0.0298 -17.7058        -18.3082
+P      -0.0281 -17.7228        -17.7559
+P      -0.0271 -17.6920        -17.2036
+A      -0.0317 -17.6564        -17.4651
+L      -0.0421 -17.6547        -17.8031
+E      -0.0600 -17.6888        -18.0077
+P      -0.0725 -17.7162        -17.4554
+F      -0.0736 -17.7757        -17.6810
+Y      -0.0796 -17.8441        -17.8885
+S      -0.0895 -17.9325        -17.7456
+E      -0.1034 -18.0562        -17.9503
+H      -0.1127 -18.2734        -17.9515
+V      -0.1114 -18.4711        -18.3377
+L      -0.0976 -18.6263        -18.6756
+R      -0.0856 -18.7686        -18.8522
+L      -0.0749 -18.9170        -19.1902
+Q      -0.0685 -19.0460        -19.3778
+G      -0.0583 -19.0863        -18.9446
+A      -0.0542 -19.0969        -19.2061
+F      -0.0541 -19.0983        -19.4317
+Q      -0.0522 -19.0720        -19.6194
+P      -0.0431 -19.0866        -19.0671
+S      -0.0250 -19.1071        -18.9242
+D      -0.0094 -19.1233        -18.6966
+T      -0.0004 -19.1203        -18.6877
+S      0.0064  -19.1107        -18.5448
+R      0.0060  -19.1039        -18.7214
+V      0.0026  -19.1144        -19.1076
+V      0.0106  -19.1190        -19.4937
+A      0.0101  -19.1087        -19.7553
+E      0.0133  -19.1513        -19.9600
+P      0.0098  -19.1930        -19.4077
+P      0.0105  -19.1846        -18.8553
+S      0.0186  -19.1862        -18.7125
+R      0.0242  -19.1262        -18.8890
+T      0.0251  -19.0296        -18.8802
+Q      0.0242  -18.8983        -19.0678
+C      0.0218  -18.7826        -19.0830
+G      0.0148  -18.7056        -18.6498
+L      -0.0001 -18.6679        -18.9877
+P      -0.0155 -18.7037        -18.4354
+E      -0.0310 -18.8098        -18.6401
+Q      -0.0377 -18.9143        -18.8277
+G      -0.0395 -18.9745        -18.3945
+V      -0.0399 -19.0200        -18.7807
+V      -0.0462 -19.0622        -19.1669
+L      -0.0482 -19.1309        -19.5048
+C      -0.0449 -19.2514        -19.5200
+C      -0.0442 -19.3544        -19.5351
+F      -0.0353 -19.4244        -19.7607
+N      -0.0337 -19.4893        -19.5308
+N      -0.0272 -19.4852        -19.3009
+S      -0.0244 -19.4713        -19.1580
+Y      -0.0258 -19.4530        -19.3655
+K      -0.0240 -19.3785        -19.4656
+L      -0.0286 -19.3165        -19.8036
+N      -0.0415 -19.2765        -19.5737
+P      -0.0612 -19.2776        -19.0214
+Q      -0.0812 -19.3169        -19.2090
+S      -0.1015 -19.3932        -19.0662
+M      -0.1273 -19.5160        -19.2921
+A      -0.1397 -19.7101        -19.5536
+R      -0.1432 -19.9242        -19.7302
+M      -0.1404 -20.1391        -19.9561
+L      -0.1429 -20.3407        -20.2940
+A      -0.1485 -20.5353        -20.5556
+V      -0.1590 -20.7571        -20.9417
+L      -0.1676 -20.9618        -21.2797
+R      -0.1690 -21.1148        -21.4563
+E      -0.1664 -21.2902        -21.6609
+V      -0.1516 -21.4646        -22.0471
+P      -0.1289 -21.6482        -21.4948
+D      -0.1012 -21.8184        -21.2672
+S      -0.0766 -21.9208        -21.1243
+V      -0.0564 -21.9641        -21.5105
+L      -0.0358 -21.9969        -21.8484
+W      -0.0209 -21.9852        -22.0918
+L      -0.0123 -21.9589        -22.4297
+L      -0.0117 -21.9210        -22.7676
+S      -0.0146 -21.8861        -22.6248
+G      -0.0227 -21.8610        -22.1915
+P      -0.0379 -21.8769        -21.6392
+G      -0.0476 -21.8652        -21.2060
+E      -0.0519 -21.8545        -21.4107
+A      -0.0550 -21.8240        -21.6722
+D      -0.0632 -21.8221        -21.4446
+A      -0.0679 -21.8921        -21.7061
+R      -0.0793 -21.9720        -21.8827
+L      -0.0907 -22.1216        -22.2207
+R      -0.1092 -22.3144        -22.3972
+A      -0.1271 -22.5289        -22.6588
+F      -0.1395 -22.7375        -22.8844
+A      -0.1462 -22.9059        -23.1459
+H      -0.1482 -23.0260        -23.1471
+A      -0.1516 -23.1515        -23.4087
+Q      -0.1572 -23.2907        -23.5963
+G      -0.1478 -23.4487        -23.1631
+V      -0.1394 -23.5960        -23.5493
+D      -0.1341 -23.7144        -23.3216
+A      -0.1224 -23.8756        -23.5832
+Q      -0.1103 -24.0195        -23.7709
+R      -0.0921 -24.1841        -23.9475
+L      -0.0779 -24.3107        -24.2854
+V      -0.0686 -24.4117        -24.6716
+F      -0.0622 -24.4686        -24.8971
+M      -0.0610 -24.5159        -25.1230
+P      -0.0628 -24.5648        -24.5707
+K      -0.0593 -24.5652        -24.6708
+L      -0.0607 -24.5782        -25.0087
+P      -0.0565 -24.5711        -24.4564
+H      -0.0566 -24.5588        -24.4576
+P      -0.0537 -24.5729        -23.9053
+Q      -0.0554 -24.5739        -24.0930
+Y      -0.0624 -24.5940        -24.3005
+L      -0.0771 -24.6449        -24.6384
+A      -0.0897 -24.7629        -24.9000
+R      -0.1038 -24.9315        -25.0766
+Y      -0.1087 -25.0841        -25.2841
+R      -0.1058 -25.2864        -25.4607
+H      -0.1092 -25.4986        -25.4619
+A      -0.1007 -25.6811        -25.7234
+D      -0.0941 -25.8258        -25.4958
+L      -0.0778 -25.9017        -25.8337
+F      -0.0616 -25.9510        -26.0593
+L      -0.0460 -25.9757        -26.3972
+D      -0.0365 -25.9744        -26.1696
+T      -0.0271 -25.9786        -26.1607
+H      -0.0159 -25.9860        -26.1620
+P      -0.0102 -25.9683        -25.6096
+Y      -0.0105 -25.9321        -25.8171
+N      -0.0129 -25.8817        -25.5873
+A      -0.0174 -25.8596        -25.8488
+H      -0.0120 -25.8512        -25.8500
+T      -0.0108 -25.8578        -25.8411
+T      -0.0052 -25.9121        -25.8323
+A      -0.0101 -25.9621        -26.0938
+S      -0.0167 -25.9857        -25.9509
+D      -0.0229 -26.0253        -25.7233
+A      -0.0288 -26.0809        -25.9848
+L      -0.0194 -26.1321        -26.3228
+W      -0.0072 -26.2024        -26.5661
+T      0.0049  -26.2108        -26.5573
+G      0.0133  -26.2128        -26.1240
+C      0.0184  -26.1817        -26.1392
+P      0.0200  -26.1226        -25.5869
+V      0.0185  -26.0439        -25.9730
+L      0.0115  -25.9819        -26.3110
+T      0.0021  -25.9023        -26.3021
+T      -0.0065 -25.8101        -26.2932
+P      -0.0113 -25.7849        -25.7409
+G      -0.0183 -25.8094        -25.3077
+E      -0.0329 -25.8543        -25.5124
+T      -0.0441 -25.9475        -25.5035
+F      -0.0490 -26.0296        -25.7291
+A      -0.0535 -26.1246        -25.9906
+A      -0.0539 -26.1614        -26.2521
+R      -0.0524 -26.2561        -26.4287
+V      -0.0595 -26.3578        -26.8149
+A      -0.0627 -26.4882        -27.0764
+G      -0.0681 -26.6140        -26.6432
+S      -0.0678 -26.6900        -26.5003
+L      -0.0566 -26.7369        -26.8383
+N      -0.0514 -26.7500        -26.6084
+H      -0.0473 -26.7318        -26.6096
+H      -0.0408 -26.7330        -26.6108
+L      -0.0332 -26.7519        -26.9487
+G      -0.0313 -26.7588        -26.5155
+L      -0.0341 -26.7607        -26.8535
+D      -0.0438 -26.7900        -26.6258
+E      -0.0611 -26.8442        -26.8305
+M      -0.0742 -26.8865        -27.0564
+N      -0.0842 -26.9402        -26.8265
+V      -0.0998 -27.0318        -27.2127
+A      -0.1147 -27.1172        -27.4742
+D      -0.1296 -27.2214        -27.2466
+D      -0.1453 -27.3397        -27.0190
+A      -0.1652 -27.5083        -27.2805
+A      -0.1729 -27.6907        -27.5421
+F      -0.1782 -27.9304        -27.7676
+V      -0.1695 -28.1891        -28.1538
+A      -0.1638 -28.4256        -28.4153
+K      -0.1615 -28.6494        -28.5154
+A      -0.1569 -28.8235        -28.7770
+V      -0.1537 -29.0164        -29.1631
+A      -0.1540 -29.2056        -29.4247
+L      -0.1519 -29.3517        -29.7626
+A      -0.1423 -29.4666        -30.0242
+S      -0.1352 -29.5605        -29.8813
+D      -0.1296 -29.6446        -29.6536
+P      -0.1277 -29.7076        -29.1013
+A      -0.1237 -29.8075        -29.3629
+A      -0.1246 -29.8944        -29.6244
+L      -0.1272 -29.9686        -29.9623
+T      -0.1315 -30.0576        -29.9535
+A      -0.1393 -30.1770        -30.2150
+L      -0.1496 -30.3232        -30.5529
+H      -0.1589 -30.5289        -30.5541
+A      -0.1630 -30.8017        -30.8157
+R      -0.1678 -31.0474        -30.9923
+V      -0.1691 -31.2681        -31.3785
+D      -0.1616 -31.4264        -31.1508
+V      -0.1561 -31.5708        -31.5370
+L      -0.1468 -31.7319        -31.8749
+R      -0.1327 -31.9193        -32.0515
+R      -0.1185 -32.0541        -32.2281
+E      -0.1082 -32.1580        -32.4328
+S      -0.0964 -32.2750        -32.2899
+G      -0.0792 -32.3721        -31.8567
+V      -0.0664 -32.4340        -32.2429
+F      -0.0484 -32.5013        -32.4684
+E      -0.0379 -32.5416        -32.6731
+M      -0.0273 -32.5144        -32.8990
+D      -0.0246 -32.4739        -32.6714
+G      -0.0273 -32.4444        -32.2382
+F      -0.0342 -32.4207        -32.4637
+A      -0.0462 -32.4092        -32.7253
+D      -0.0625 -32.4292        -32.4977
+D      -0.0769 -32.4649        -32.2700
+F      -0.0850 -32.4848        -32.4956
+G      -0.0952 -32.5555        -32.0624
+A      -0.1003 -32.6932        -32.3239
+L      -0.1095 -32.8460        -32.6618
+L      -0.1243 -33.0209        -32.9998
+Q      -0.1281 -33.2341        -33.1875
+A      -0.1293 -33.3918        -33.4490
+L      -0.1308 -33.7869        -33.7869
+A      -0.0883 -34.0485        -34.0485
+R      -0.0883 -34.2251        -34.2251
+R      -0.0006 -34.4016        -34.4016
+H      0.2166  -34.4029        -34.4029
+G      -0.1217 -33.9696        -33.9696
+W      -0.1690 -34.2130        -34.2130
+L      0.2166  -34.5510        -34.5510
+G      -0.2111 -34.1177        -34.1177
+I      -0.2111 -34.5400        -34.5400
+
+
+>dundeefriends
+# GlobDoms 2-330, 345-513
+# Disorder 1-5, 178-190, 215-222, 260-272, 285-296, 331-344, 447-453
+# RESIDUE      DYDX    RAW     SMOOTHED
+M      0.0044  -0.2259 -0.2259
+T      -0.1308 -0.2170 -0.2170
+A      0.1138  -0.4786 -0.4786
+D      0.2166  -0.2509 -0.2509
+G      0.2762  0.1823  0.1823
+P      -0.0883 0.7346  0.7346
+R      -0.1023 0.5580  0.5580
+E      -0.1690 0.3533  0.3533
+L      -0.1690 0.0154  0.0154
+L      -0.1690 -0.3225 -0.3225
+Q      -0.1314 -0.5263 -0.5102
+L      -0.1346 -0.7549 -0.8481
+R      -0.1408 -0.9669 -1.0247
+A      -0.1517 -1.2003 -1.2863
+A      -0.1601 -1.4240 -1.5478
+V      -0.1637 -1.6071 -1.9340
+R      -0.1582 -1.7315 -2.1106
+H      -0.1547 -1.8330 -2.1118
+R      -0.1522 -1.9226 -2.2884
+P      -0.1462 -2.0425 -1.7361
+Q      -0.1439 -2.1574 -1.9238
+D      -0.1424 -2.2663 -1.6961
+V      -0.1456 -2.3773 -2.0823
+A      -0.1411 -2.5309 -2.3438
+W      -0.1397 -2.6796 -2.5872
+L      -0.1326 -2.8678 -2.9251
+M      -0.1254 -3.0823 -3.1511
+L      -0.1185 -3.2925 -3.4890
+A      -0.1099 -3.4840 -3.7505
+D      -0.1054 -3.6527 -3.5229
+A      -0.0856 -3.7822 -3.7844
+E      -0.0691 -3.8648 -3.9891
+L      -0.0503 -3.8702 -4.3270
+G      -0.0377 -3.8452 -3.8938
+M      -0.0316 -3.7876 -4.1197
+G      -0.0287 -3.7227 -3.6865
+D      -0.0304 -3.6679 -3.4589
+T      -0.0274 -3.6592 -3.4500
+T      -0.0321 -3.6526 -3.4411
+A      -0.0425 -3.6650 -3.7027
+G      -0.0526 -3.6624 -3.2694
+E      -0.0642 -3.7060 -3.4741
+M      -0.0698 -3.8258 -3.7000
+A      -0.0736 -4.0132 -3.9616
+V      -0.0714 -4.1712 -4.3477
+Q      -0.0648 -4.3744 -4.5354
+R      -0.0553 -4.5112 -4.7120
+G      -0.0456 -4.5885 -4.2788
+L      -0.0400 -4.6179 -4.6167
+A      -0.0362 -4.6159 -4.8782
+L      -0.0366 -4.6159 -5.2162
+H      -0.0336 -4.5570 -5.2174
+P      -0.0253 -4.5299 -4.6651
+G      -0.0207 -4.4900 -4.2319
+H      -0.0230 -4.4384 -4.2331
+P      -0.0313 -4.4152 -3.6808
+E      -0.0438 -4.4140 -3.8854
+A      -0.0569 -4.4585 -4.1470
+V      -0.0648 -4.4846 -4.5332
+A      -0.0777 -4.5478 -4.7947
+R      -0.0945 -4.6545 -4.9713
+L      -0.1142 -4.8315 -5.3092
+G      -0.1358 -5.0416 -4.8760
+R      -0.1503 -5.2424 -5.0526
+V      -0.1591 -5.4223 -5.4388
+R      -0.1675 -5.6050 -5.6154
+W      -0.1690 -5.7325 -5.8587
+T      -0.1725 -5.8566 -5.8499
+Q      -0.1786 -5.9872 -6.0375
+Q      -0.1870 -6.1504 -6.2252
+R      -0.1963 -6.3413 -6.4018
+H      -0.2063 -6.5504 -6.4030
+A      -0.2139 -6.8162 -6.6646
+E      -0.2076 -7.0689 -6.8692
+A      -0.2022 -7.3008 -7.1308
+A      -0.2007 -7.5331 -7.3923
+V      -0.1896 -7.8020 -7.7785
+L      -0.1806 -8.0485 -8.1164
+L      -0.1675 -8.2664 -8.4544
+Q      -0.1460 -8.4944 -8.6420
+Q      -0.1186 -8.7056 -8.8297
+A      -0.0970 -8.8373 -9.0912
+S      -0.0763 -8.8969 -8.9484
+D      -0.0608 -8.9055 -8.7207
+A      -0.0485 -8.8763 -8.9823
+A      -0.0413 -8.8171 -9.2438
+P      -0.0292 -8.7838 -8.6915
+E      -0.0203 -8.7519 -8.8962
+H      -0.0180 -8.7115 -8.8974
+P      -0.0234 -8.6749 -8.3451
+G      -0.0325 -8.6552 -7.9119
+I      -0.0396 -8.6860 -8.3341
+A      -0.0495 -8.7570 -8.5956
+L      -0.0590 -8.8286 -8.9336
+W      -0.0685 -8.8831 -9.1769
+L      -0.0842 -8.9639 -9.5149
+G      -0.0944 -9.1361 -9.0816
+H      -0.0985 -9.2717 -9.0829
+A      -0.1063 -9.4221 -9.3444
+L      -0.1049 -9.6207 -9.6823
+E      -0.0972 -9.7528 -9.8870
+D      -0.0865 -9.8000 -9.6594
+H      -0.0785 -9.8548 -9.6606
+Q      -0.0748 -9.8949 -9.8483
+L      -0.0757 -9.9424 -10.1862
+L      -0.0819 -9.9918 -10.5242
+P      -0.0872 -10.0966        -9.9718
+E      -0.0895 -10.1519        -10.1765
+E      -0.0931 -10.1902        -10.3812
+P      -0.0952 -10.2650        -9.8289
+Y      -0.1026 -10.3573        -10.0364
+I      -0.1126 -10.4726        -10.4586
+T      -0.1215 -10.5673        -10.4498
+A      -0.1291 -10.6702        -10.7113
+Q      -0.1390 -10.7898        -10.8990
+L      -0.1532 -10.9452        -11.2369
+D      -0.1734 -11.1404        -11.0093
+V      -0.1853 -11.3172        -11.3954
+L      -0.1975 -11.5256        -11.7334
+S      -0.2022 -11.8014        -11.5905
+A      -0.1999 -12.0123        -11.8520
+Q      -0.1896 -12.2537        -12.0397
+V      -0.1843 -12.4871        -12.4259
+R      -0.1796 -12.6793        -12.6025
+A      -0.1765 -12.8659        -12.8640
+A      -0.1643 -13.0866        -13.1256
+V      -0.1560 -13.2895        -13.5117
+A      -0.1443 -13.4320        -13.7733
+Q      -0.1368 -13.5620        -13.9609
+G      -0.1345 -13.6796        -13.5277
+V      -0.1243 -13.7814        -13.9139
+G      -0.1164 -13.8646        -13.4807
+A      -0.1043 -13.9528        -13.7422
+V      -0.0978 -14.0264        -14.1284
+E      -0.0886 -14.1034        -14.3331
+P      -0.0838 -14.1627        -13.7807
+F      -0.0832 -14.2152        -14.0063
+A      -0.0880 -14.2861        -14.2679
+F      -0.0963 -14.3790        -14.4934
+L      -0.1093 -14.4877        -14.8314
+S      -0.1167 -14.5719        -14.6885
+E      -0.1263 -14.7044        -14.8932
+D      -0.1299 -14.8032        -14.6655
+A      -0.1356 -14.9199        -14.9271
+S      -0.1427 -15.0812        -14.7842
+A      -0.1517 -15.2648        -15.0457
+A      -0.1528 -15.4024        -15.3073
+E      -0.1552 -15.5470        -15.5120
+Q      -0.1603 -15.7011        -15.6996
+L      -0.1698 -15.8593        -16.0376
+A      -0.1828 -16.0514        -16.2991
+C      -0.1927 -16.2432        -16.3143
+A      -0.1986 -16.4800        -16.5758
+R      -0.2017 -16.6837        -16.7524
+T      -0.2054 -16.9022        -16.7435
+R      -0.1946 -17.1413        -16.9201
+A      -0.1872 -17.3520        -17.1816
+Q      -0.1821 -17.5470        -17.3693
+A      -0.1679 -17.7722        -17.6309
+I      -0.1523 -17.9742        -18.0531
+A      -0.1403 -18.1532        -18.3146
+A      -0.1336 -18.2997        -18.5762
+S      -0.1259 -18.4163        -18.4333
+V      -0.1163 -18.5403        -18.8195
+R      -0.1072 -18.6463        -18.9960
+P      -0.0893 -18.7490        -18.4437
+L      -0.0641 -18.8500        -18.7817
+A      -0.0453 -18.8901        -19.0432
+P      -0.0298 -18.8880        -18.4909
+T      -0.0213 -18.8466        -18.4820
+R      -0.0113 -18.8437        -18.6586
+V      -0.0072 -18.8257        -19.0448
+R      -0.0111 -18.7983        -19.2214
+S      -0.0102 -18.7748        -19.0785
+K      -0.0109 -18.7954        -19.1786
+G      -0.0084 -18.8580        -18.7454
+P      -0.0016 -18.8526        -18.1930
+L      0.0063  -18.8845        -18.5310
+R      0.0063  -18.9065        -18.7076
+V      0.0136  -18.8791        -19.0937
+G      0.0282  -18.8636        -18.6605
+F      0.0398  -18.8285        -18.8861
+V      0.0505  -18.8245        -19.2723
+S      0.0523  -18.7931        -19.1294
+N      0.0501  -18.7275        -18.8995
+G      0.0454  -18.6785        -18.4663
+F      0.0406  -18.5822        -18.6918
+G      0.0400  -18.4339        -18.2586
+A      0.0311  -18.2975        -18.5202
+H      0.0176  -18.1858        -18.5214
+P      -0.0032 -18.1303        -17.9691
+T      -0.0205 -18.0726        -17.9602
+G      -0.0439 -18.0581        -17.5270
+L      -0.0735 -18.1245        -17.8649
+L      -0.1019 -18.2408        -18.2028
+T      -0.1274 -18.3956        -18.1939
+V      -0.1467 -18.5620        -18.5801
+A      -0.1590 -18.8244        -18.8417
+L      -0.1598 -19.0884        -19.1796
+F      -0.1663 -19.3561        -19.4052
+E      -0.1727 -19.6267        -19.6098
+A      -0.1714 -19.8474        -19.8714
+L      -0.1661 -20.0590        -20.2093
+Q      -0.1552 -20.1945        -20.3970
+R      -0.1472 -20.3143        -20.5736
+R      -0.1427 -20.4240        -20.7502
+Q      -0.1335 -20.5164        -20.9379
+P      -0.1233 -20.6225        -20.3855
+D      -0.1072 -20.7458        -20.1579
+L      -0.0901 -20.8682        -20.4958
+Q      -0.0710 -20.9778        -20.6835
+M      -0.0475 -21.0797        -20.9094
+H      -0.0250 -21.1531        -20.9106
+L      -0.0069 -21.2004        -21.2486
+F      0.0040  -21.2004        -21.4741
+A      0.0101  -21.1790        -21.7357
+T      0.0139  -21.1585        -21.7268
+S      0.0125  -21.1358        -21.5839
+G      0.0145  -21.0479        -21.1507
+D      0.0173  -20.9188        -20.9231
+D      0.0144  -20.8006        -20.6954
+G      0.0068  -20.6902        -20.2622
+S      -0.0006 -20.6253        -20.1193
+T      -0.0069 -20.5784        -20.1105
+L      -0.0214 -20.5577        -20.4484
+R      -0.0381 -20.5924        -20.6250
+T      -0.0549 -20.7048        -20.6161
+R      -0.0765 -20.8368        -20.7927
+L      -0.0953 -21.0101        -21.1306
+A      -0.1106 -21.1761        -21.3922
+Q      -0.1253 -21.3389        -21.5798
+A      -0.1288 -21.5396        -21.8414
+S      -0.1239 -21.7070        -21.6985
+T      -0.1187 -21.8270        -21.6896
+L      -0.1134 -21.9142        -22.0276
+H      -0.1091 -22.0145        -22.0288
+D      -0.1076 -22.1013        -21.8011
+V      -0.1038 -22.1736        -22.1873
+T      -0.0991 -22.2479        -22.1784
+A      -0.1015 -22.3133        -22.4400
+L      -0.1065 -22.3941        -22.7779
+G      -0.1110 -22.5003        -22.3447
+H      -0.1162 -22.6376        -22.3459
+L      -0.1111 -22.7959        -22.6838
+A      -0.1091 -22.9141        -22.9454
+T      -0.1060 -23.0667        -22.9365
+A      -0.1053 -23.1902        -23.1980
+K      -0.1031 -23.2691        -23.2981
+H      -0.1060 -23.3606        -23.2993
+I      -0.1028 -23.4676        -23.7216
+R      -0.1049 -23.5677        -23.8982
+H      -0.1113 -23.6901        -23.8994
+H      -0.1031 -23.8103        -23.9006
+G      -0.0954 -23.8929        -23.4674
+I      -0.0839 -24.0072        -23.8896
+D      -0.0686 -24.1378        -23.6620
+L      -0.0463 -24.2518        -23.9999
+L      -0.0217 -24.3569        -24.3378
+F      -0.0011 -24.3995        -24.5634
+D      0.0265  -24.4215        -24.3358
+L      0.0443  -24.4022        -24.6737
+R      0.0533  -24.3339        -24.8503
+G      0.0585  -24.2315        -24.4171
+W      0.0595  -24.1026        -24.6605
+G      0.0620  -23.9136        -24.2272
+G      0.0568  -23.7458        -23.7940
+G      0.0623  -23.6009        -23.3608
+G      0.0595  -23.4582        -22.9276
+R      0.0589  -23.3839        -23.1042
+P      0.0487  -23.3117        -22.5518
+E      0.0382  -23.2355        -22.7565
+V      0.0173  -23.1955        -23.1427
+F      -0.0038 -23.2376        -23.3683
+A      -0.0228 -23.2814        -23.6298
+L      -0.0499 -23.3764        -23.9677
+R      -0.0743 -23.4861        -24.1443
+P      -0.0944 -23.6054        -23.5920
+A      -0.0994 -23.7649        -23.8536
+P      -0.0911 -23.9202        -23.3012
+V      -0.0837 -24.0691        -23.6874
+Q      -0.0652 -24.1559        -23.8751
+V      -0.0423 -24.2366        -24.2613
+N      -0.0272 -24.2786        -24.0314
+W      -0.0074 -24.3329        -24.2748
+L      0.0053  -24.3476        -24.6127
+A      0.0100  -24.3485        -24.8742
+Y      0.0148  -24.3665        -25.0817
+P      0.0239  -24.3122        -24.5294
+G      0.0244  -24.2369        -24.0962
+T      0.0286  -24.0913        -24.0873
+S      0.0343  -23.9923        -23.9444
+G      0.0407  -23.9081        -23.5112
+A      0.0380  -23.8283        -23.7727
+P      0.0353  -23.7225        -23.2204
+W      0.0260  -23.6304        -23.4638
+M      0.0077  -23.5731        -23.6897
+D      -0.0069 -23.6161        -23.4621
+Y      -0.0181 -23.7462        -23.6696
+V      -0.0265 -23.8423        -24.0558
+L      -0.0339 -23.9025        -24.3937
+G      -0.0435 -23.9687        -23.9605
+D      -0.0433 -24.0763        -23.7328
+A      -0.0399 -24.1318        -23.9944
+F      -0.0419 -24.1894        -24.2200
+A      -0.0335 -24.2095        -24.4815
+L      -0.0298 -24.2170        -24.8194
+P      -0.0281 -24.2340        -24.2671
+P      -0.0271 -24.2032        -23.7148
+A      -0.0317 -24.1676        -23.9763
+L      -0.0421 -24.1659        -24.3143
+E      -0.0600 -24.2000        -24.5189
+P      -0.0725 -24.2275        -23.9666
+F      -0.0736 -24.2869        -24.1922
+Y      -0.0796 -24.3553        -24.3997
+S      -0.0895 -24.4437        -24.2568
+E      -0.1034 -24.5674        -24.4615
+H      -0.1127 -24.7846        -24.4627
+V      -0.1114 -24.9823        -24.8489
+L      -0.0976 -25.1375        -25.1868
+R      -0.0856 -25.2798        -25.3634
+L      -0.0749 -25.4282        -25.7014
+Q      -0.0685 -25.5573        -25.8890
+G      -0.0583 -25.5975        -25.4558
+A      -0.0542 -25.6081        -25.7174
+F      -0.0541 -25.6095        -25.9429
+Q      -0.0522 -25.5833        -26.1306
+P      -0.0431 -25.5979        -25.5783
+S      -0.0250 -25.6183        -25.4354
+D      -0.0094 -25.6345        -25.2078
+T      -0.0004 -25.6315        -25.1989
+S      0.0064  -25.6219        -25.0560
+R      0.0060  -25.6151        -25.2326
+V      0.0026  -25.6256        -25.6188
+V      0.0106  -25.6303        -26.0050
+A      0.0101  -25.6199        -26.2665
+E      0.0133  -25.6625        -26.4712
+P      0.0098  -25.7042        -25.9189
+P      0.0105  -25.6959        -25.3665
+S      0.0186  -25.6975        -25.2237
+R      0.0242  -25.6375        -25.4003
+T      0.0251  -25.5408        -25.3914
+Q      0.0242  -25.4095        -25.5791
+C      0.0218  -25.2938        -25.5942
+G      0.0148  -25.2169        -25.1610
+L      -0.0001 -25.1791        -25.4989
+P      -0.0155 -25.2149        -24.9466
+E      -0.0310 -25.3210        -25.1513
+Q      -0.0377 -25.4255        -25.3390
+G      -0.0395 -25.4857        -24.9057
+V      -0.0399 -25.5312        -25.2919
+V      -0.0462 -25.5734        -25.6781
+L      -0.0482 -25.6422        -26.0160
+C      -0.0449 -25.7627        -26.0312
+C      -0.0442 -25.8656        -26.0463
+F      -0.0353 -25.9356        -26.2719
+N      -0.0337 -26.0005        -26.0420
+N      -0.0272 -25.9964        -25.8121
+S      -0.0244 -25.9825        -25.6692
+Y      -0.0258 -25.9642        -25.8767
+K      -0.0240 -25.8897        -25.9768
+L      -0.0286 -25.8278        -26.3148
+N      -0.0415 -25.7877        -26.0849
+P      -0.0612 -25.7888        -25.5326
+Q      -0.0812 -25.8281        -25.7202
+S      -0.1015 -25.9045        -25.5774
+M      -0.1273 -26.0272        -25.8033
+A      -0.1397 -26.2213        -26.0648
+R      -0.1432 -26.4354        -26.2414
+M      -0.1404 -26.6503        -26.4673
+L      -0.1429 -26.8519        -26.8052
+A      -0.1485 -27.0465        -27.0668
+V      -0.1590 -27.2683        -27.4529
+L      -0.1676 -27.4730        -27.7909
+R      -0.1690 -27.6260        -27.9675
+E      -0.1664 -27.8014        -28.1722
+V      -0.1516 -27.9759        -28.5583
+P      -0.1289 -28.1594        -28.0060
+D      -0.1012 -28.3296        -27.7784
+S      -0.0766 -28.4320        -27.6355
+V      -0.0564 -28.4753        -28.0217
+L      -0.0358 -28.5082        -28.3596
+W      -0.0209 -28.4964        -28.6030
+L      -0.0123 -28.4701        -28.9409
+L      -0.0117 -28.4322        -29.2789
+S      -0.0146 -28.3973        -29.1360
+G      -0.0227 -28.3722        -28.7027
+P      -0.0379 -28.3881        -28.1504
+G      -0.0476 -28.3764        -27.7172
+E      -0.0519 -28.3657        -27.9219
+A      -0.0550 -28.3352        -28.1834
+D      -0.0632 -28.3333        -27.9558
+A      -0.0679 -28.4033        -28.2173
+R      -0.0793 -28.4833        -28.3939
+L      -0.0907 -28.6328        -28.7319
+R      -0.1092 -28.8256        -28.9085
+A      -0.1271 -29.0401        -29.1700
+F      -0.1395 -29.2488        -29.3956
+A      -0.1462 -29.4171        -29.6571
+H      -0.1482 -29.5372        -29.6583
+A      -0.1516 -29.6627        -29.9199
+Q      -0.1572 -29.8020        -30.1075
+G      -0.1478 -29.9599        -29.6743
+V      -0.1394 -30.1072        -30.0605
+D      -0.1341 -30.2256        -29.8329
+A      -0.1224 -30.3868        -30.0944
+Q      -0.1103 -30.5308        -30.2821
+R      -0.0921 -30.6954        -30.4587
+L      -0.0779 -30.8219        -30.7966
+V      -0.0686 -30.9229        -31.1828
+F      -0.0622 -30.9798        -31.4083
+M      -0.0610 -31.0271        -31.6342
+P      -0.0628 -31.0760        -31.0819
+K      -0.0593 -31.0764        -31.1820
+L      -0.0607 -31.0894        -31.5200
+P      -0.0565 -31.0823        -30.9676
+H      -0.0566 -31.0700        -30.9689
+P      -0.0537 -31.0841        -30.4165
+Q      -0.0554 -31.0851        -30.6042
+Y      -0.0624 -31.1052        -30.8117
+L      -0.0771 -31.1561        -31.1497
+A      -0.0897 -31.2741        -31.4112
+R      -0.1038 -31.4427        -31.5878
+Y      -0.1087 -31.5953        -31.7953
+R      -0.1058 -31.7976        -31.9719
+H      -0.1092 -32.0099        -31.9731
+A      -0.1007 -32.1924        -32.2346
+D      -0.0941 -32.3370        -32.0070
+L      -0.0778 -32.4130        -32.3449
+F      -0.0616 -32.4622        -32.5705
+L      -0.0460 -32.4869        -32.9084
+D      -0.0365 -32.4856        -32.6808
+T      -0.0271 -32.4898        -32.6719
+H      -0.0159 -32.4973        -32.6732
+P      -0.0102 -32.4795        -32.1208
+Y      -0.0105 -32.4433        -32.3283
+N      -0.0129 -32.3929        -32.0985
+A      -0.0174 -32.3708        -32.3600
+H      -0.0120 -32.3624        -32.3612
+T      -0.0108 -32.3690        -32.3523
+T      -0.0052 -32.4233        -32.3435
+A      -0.0101 -32.4733        -32.6050
+S      -0.0167 -32.4969        -32.4621
+D      -0.0229 -32.5365        -32.2345
+A      -0.0288 -32.5921        -32.4960
+L      -0.0194 -32.6433        -32.8340
+W      -0.0072 -32.7137        -33.0773
+T      0.0049  -32.7220        -33.0685
+G      0.0133  -32.7240        -32.6352
+C      0.0184  -32.6929        -32.6504
+P      0.0200  -32.6338        -32.0981
+V      0.0185  -32.5551        -32.4842
+L      0.0115  -32.4931        -32.8222
+T      0.0021  -32.4135        -32.8133
+T      -0.0065 -32.3213        -32.8044
+P      -0.0113 -32.2961        -32.2521
+G      -0.0183 -32.3206        -31.8189
+E      -0.0329 -32.3655        -32.0236
+T      -0.0441 -32.4587        -32.0147
+F      -0.0490 -32.5408        -32.2403
+A      -0.0535 -32.6358        -32.5018
+A      -0.0539 -32.6726        -32.7633
+R      -0.0524 -32.7673        -32.9399
+V      -0.0595 -32.8690        -33.3261
+A      -0.0627 -32.9994        -33.5876
+G      -0.0681 -33.1252        -33.1544
+S      -0.0678 -33.2012        -33.0115
+L      -0.0566 -33.2481        -33.3495
+N      -0.0514 -33.2612        -33.1196
+H      -0.0473 -33.2430        -33.1208
+H      -0.0408 -33.2442        -33.1220
+L      -0.0332 -33.2631        -33.4599
+G      -0.0313 -33.2700        -33.0267
+L      -0.0341 -33.2719        -33.3647
+D      -0.0438 -33.3012        -33.1370
+E      -0.0611 -33.3554        -33.3417
+M      -0.0742 -33.3977        -33.5676
+N      -0.0842 -33.4514        -33.3377
+V      -0.0998 -33.5430        -33.7239
+A      -0.1147 -33.6285        -33.9854
+D      -0.1296 -33.7326        -33.7578
+D      -0.1453 -33.8509        -33.5302
+A      -0.1652 -34.0195        -33.7917
+A      -0.1729 -34.2019        -34.0533
+F      -0.1782 -34.4416        -34.2788
+V      -0.1695 -34.7003        -34.6650
+A      -0.1638 -34.9368        -34.9265
+K      -0.1615 -35.1606        -35.0266
+A      -0.1569 -35.3347        -35.2882
+V      -0.1537 -35.5276        -35.6744
+A      -0.1540 -35.7168        -35.9359
+L      -0.1519 -35.8629        -36.2738
+A      -0.1423 -35.9778        -36.5354
+S      -0.1352 -36.0717        -36.3925
+D      -0.1296 -36.1558        -36.1648
+P      -0.1277 -36.2188        -35.6125
+A      -0.1237 -36.3187        -35.8741
+A      -0.1246 -36.4057        -36.1356
+L      -0.1272 -36.4798        -36.4735
+T      -0.1315 -36.5688        -36.4647
+A      -0.1393 -36.6882        -36.7262
+L      -0.1496 -36.8344        -37.0641
+H      -0.1589 -37.0401        -37.0654
+A      -0.1742 -37.2651        -37.3269
+R      -0.1931 -37.5035        -37.5035
+V      0.1138  -37.8897        -37.8897
+D      -0.1931 -37.6620        -37.6620
+V      -0.1690 -38.0482        -38.0482
+L      -0.0883 -38.3861        -38.3861
+R      -0.0883 -38.5627        -38.5627
+R      -0.1023 -38.7393        -38.7393
+E      0.0714  -38.9440        -38.9440
+S      -0.2111 -38.8011        -38.8011
+I      -0.2111 -39.2234        -39.2234
+
+
diff --git a/webservices/compbio/ws/server/GlobPlotWS.java b/webservices/compbio/ws/server/GlobPlotWS.java
new file mode 100644 (file)
index 0000000..df402fa
--- /dev/null
@@ -0,0 +1,157 @@
+package compbio.ws.server;\r
+\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+\r
+import javax.annotation.Resource;\r
+import javax.jws.WebService;\r
+import javax.xml.ws.WebServiceContext;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import compbio.data.msa.SequenceAnnotation;\r
+import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.Score;\r
+import compbio.engine.AsyncExecutor;\r
+import compbio.engine.Configurator;\r
+import compbio.engine.client.ConfiguredExecutable;\r
+import compbio.metadata.ChunkHolder;\r
+import compbio.metadata.JobStatus;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.Limit;\r
+import compbio.metadata.LimitExceededException;\r
+import compbio.metadata.LimitsManager;\r
+import compbio.metadata.Option;\r
+import compbio.metadata.Preset;\r
+import compbio.metadata.PresetManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.metadata.RunnerConfig;\r
+import compbio.metadata.UnsupportedRuntimeException;\r
+import compbio.metadata.WrongParameterException;\r
+import compbio.runner.Util;\r
+import compbio.runner.disorder.GlobPlot;\r
+\r
+@WebService(endpointInterface = "compbio.data.msa.SequenceAnnotation", targetNamespace = "http://msa.data.compbio/01/12/2010/", serviceName = "GlobPlotWS")\r
+public class GlobPlotWS implements SequenceAnnotation<GlobPlot> {\r
+\r
+       // Ask for resource injection\r
+       @Resource\r
+       WebServiceContext wsContext;\r
+\r
+       private static Logger statLog = Logger.getLogger("GlobPlotWS-stats");\r
+\r
+       private static Logger log = Logger.getLogger(GlobPlotWS.class);\r
+\r
+       private static final RunnerConfig<GlobPlot> globPlotOptions = Util\r
+                       .getSupportedOptions(GlobPlot.class);\r
+\r
+       private static final PresetManager<GlobPlot> globPlotPresets = Util\r
+                       .getPresets(GlobPlot.class);\r
+\r
+       ConfiguredExecutable<GlobPlot> init(List<FastaSequence> sequences)\r
+                       throws JobSubmissionException {\r
+               GlobPlot globPlot = new GlobPlot();\r
+               globPlot.setInput("fasta.in").setOutput("globPlot.out");\r
+               return Configurator.configureExecutable(globPlot, sequences);\r
+       }\r
+\r
+       @Override\r
+       public HashMap<String, HashSet<Score>> getAnnotation(String jobId)\r
+                       throws ResultNotAvailableException {\r
+               WSUtil.validateJobId(jobId);\r
+               AsyncExecutor asyncEngine = Configurator.getAsyncEngine(jobId);\r
+               ConfiguredExecutable<GlobPlot> globPlot = (ConfiguredExecutable<GlobPlot>) asyncEngine\r
+                               .getResults(jobId);\r
+               HashMap<String, HashSet<Score>> mas = globPlot.getResults();\r
+               log.trace(jobId + " getConservation : " + mas);\r
+               return mas;\r
+       }\r
+\r
+       @Override\r
+       public Limit<GlobPlot> getLimit(String presetName) {\r
+               return new GlobPlot().getLimit(presetName);\r
+       }\r
+\r
+       @Override\r
+       public LimitsManager<GlobPlot> getLimits() {\r
+               return new GlobPlot().getLimits();\r
+       }\r
+\r
+       @Override\r
+       public ChunkHolder pullExecStatistics(String jobId, long position) {\r
+               // Execution stat is not supported\r
+               return new ChunkHolder("", -1);\r
+       }\r
+\r
+       @Override\r
+       public boolean cancelJob(String jobId) {\r
+               WSUtil.validateJobId(jobId);\r
+               return WSUtil.cancelJob(jobId);\r
+       }\r
+\r
+       @Override\r
+       public JobStatus getJobStatus(String jobId) {\r
+               WSUtil.validateJobId(jobId);\r
+               return WSUtil.getJobStatus(jobId);\r
+       }\r
+\r
+       @Override\r
+       public PresetManager<GlobPlot> getPresets() {\r
+               return globPlotPresets;\r
+       }\r
+\r
+       @Override\r
+       public RunnerConfig<GlobPlot> getRunnerOptions() {\r
+               return globPlotOptions;\r
+       }\r
+\r
+       String analize(List<FastaSequence> sequences,\r
+                       ConfiguredExecutable<GlobPlot> confExec, Logger log, String method,\r
+                       Limit<GlobPlot> limit) throws JobSubmissionException {\r
+               if (limit != null && limit.isExceeded(sequences)) {\r
+                       throw LimitExceededException.newLimitExceeded(limit, sequences);\r
+               }\r
+\r
+               compbio.runner.Util.writeInput(sequences, confExec);\r
+               AsyncExecutor engine = Configurator.getAsyncEngine(confExec);\r
+               String jobId = engine.submitJob(confExec);\r
+               return jobId;\r
+       }\r
+\r
+       @Override\r
+       public String analize(List<FastaSequence> sequences)\r
+                       throws UnsupportedRuntimeException, LimitExceededException,\r
+                       JobSubmissionException {\r
+               WSUtil.validateFastaInput(sequences);\r
+               ConfiguredExecutable<GlobPlot> confGlobPlot = init(sequences);\r
+\r
+               return analize(sequences, confGlobPlot, null, "analize", getLimit(""));\r
+       }\r
+\r
+       /*\r
+        * No options are supported, thus the result of this call will be as simple\r
+        * call to analize without parameters\r
+        */\r
+       @Override\r
+       public String customAnalize(List<FastaSequence> sequences,\r
+                       List<Option<GlobPlot>> options) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+               return analize(sequences);\r
+       }\r
+\r
+       /*\r
+        * No presets are supported, thus the result of this call will be as simple\r
+        * call to analize without parameters\r
+        */\r
+       @Override\r
+       public String presetAnalize(List<FastaSequence> sequences,\r
+                       Preset<GlobPlot> preset) throws UnsupportedRuntimeException,\r
+                       LimitExceededException, JobSubmissionException,\r
+                       WrongParameterException {\r
+\r
+               return analize(sequences);\r
+       }\r
+\r
+}\r