From 48190e32e896a6f674284844a9ae75605aa40157 Mon Sep 17 00:00:00 2001 From: pvtroshin Date: Wed, 21 Jul 2010 16:27:56 +0000 Subject: [PATCH] Add JRonn runner, tester, methods to parse jronn output files. git-svn-id: link to svn.lifesci.dundee.ac.uk/svn/barton/ptroshin/JABA2@2638 e3abac25-378b-4346-85de-24260fe3988d --- TODO.txt | 53 ++- binaries/jronn3.1.jar | Bin 0 -> 403703 bytes build.xml | 29 +- conf/Executable.properties | 33 +- conf/log4j.properties | 26 +- conf/settings/JronnLimits.xml | 13 + conf/settings/JronnParameters.xml | 17 + .../compbio/data/sequence/AnnotatedSequence.java | 56 +++ datamodel/compbio/data/sequence/SequenceUtil.java | 189 ++++++--- .../compbio/engine/client/SkeletalExecutable.java | 414 ++++++++++---------- runner/compbio/runner/Util.java | 18 + .../disorder/{RonnWrapper.java => Jronn.java} | 87 ++-- .../compbio/data/sequence/SequenceUtilTester.java | 176 +++++---- testsrc/compbio/runner/disorder/JronnTester.java | 332 ++++++++++++++++ testsrc/testdata/jronn.out | 13 + 15 files changed, 1052 insertions(+), 404 deletions(-) create mode 100644 binaries/jronn3.1.jar create mode 100644 conf/settings/JronnLimits.xml create mode 100644 conf/settings/JronnParameters.xml create mode 100644 datamodel/compbio/data/sequence/AnnotatedSequence.java rename runner/compbio/runner/disorder/{RonnWrapper.java => Jronn.java} (58%) create mode 100644 testsrc/compbio/runner/disorder/JronnTester.java create mode 100644 testsrc/testdata/jronn.out diff --git a/TODO.txt b/TODO.txt index a212651..79f6ca1 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,35 +1,40 @@ TODO: -DONE: LocalExecutor service must be shutdown on web application undeploy event not on JVM shutdown. -This is because JVM is still running even after web application is shut down! - - -Good toString method for Limits (test with command line client -limits) +Add globprot ws +Add ronn ws -Add facility to distribute other results of the calculations like the trees and annotation file for probcons. +USE CASE - TURN ALIGNMENT INTO PROFILE AND SEARCH SEQUENCE DATABASE USECASE +- Receive user alignment +- use hmmerbuild to turn it to profile +- use hmmersearch to search the database -Use absolute path for web site download links as archives are not included into distro! +#END OF - TURN ALIGNMENT INTO PROFILE AND SEARCH SEQUENCE DATABASE USECASE +New data model for representing psiblast,blast,phmmer,jackhmmer results -(later) Define limits for presets +new parsers for the above programmes output (Stockholm MSA format?) -Add documentation on Presets, Parameters and Limits +Think hard on what to do with large output files? +e.g. serve the hits table in full, but retrieve alignments on demand. +What actually neeeds to be sent? -Explain how to define a limit +Add facility to distribute other results of the calculations like the trees and +annotation file for probcons. -Rearrange web site docs - add links to the top of the page to the topics discussed below +# END OF SEARCHING SEQUENCE DATABASE USECASE -Put the documentation for various executables online - -Pack the test cases and build file to run them in one of the distributives +Good toString method for Limits (test with command line client -limits) -Add test for repeated result collection from cluster engine +JABA DOCS +(later) Define limits for presets - if required +(later) Add documentation on Presets, Parameters and Limits +(later) Explain how to define a limit -Add logging facility to WSTester so more details of the problem can be reported +Add test for repeated result collection from cluster engine -Make left gradient image one-two characters larger + change "For developer ->For Developers" +(low) Pack the test cases and build file to run them in one of the distributives -PART DONE: test local/cluster execution - test Load balancer +(low) Add logging facility to WSTester so more details of the problem can be reported (low) Statistics collector for engines (number of operations/timing) @@ -37,17 +42,23 @@ PART DONE: test local/cluster execution - test Load balancer (later) Implement utility to rerun died tasks -(later) Progress bars - talk about (1. Proper time assessment vs low hustle option - dumping output to screen) - (later) Add recognition for executables for the different architectures (later) use Latch to manage engine reservations. Reservations for parallel jobs? DONE +WILL NOT DO: Progress bars - needs assessing how long does it take to run a task +DONE: LocalExecutor service must be shutdown on web application undeploy event not on JVM shutdown. + This is because JVM is still running even after web application is shut down! +DONE: Use absolute path for web site download links as archives are not included into distro! +DONE: Rearrange web site docs - add links to the top of the page to the topics discussed below +DONE: Put the documentation for various executables online +DONE: Make left gradient image one-two characters larger + change "For developer ->For Developers" +DONE: test local/cluster execution - test Load balancer DONE: Improve SimpleWS client so it can be scripted against: give user alignment and accept parameters DONE: Make a configuration tester class (check that configuration files point to the executables, and they can be executed) DONE: PUT CLIENT JAR INTO WEB-INF/LIB - most likely need to get rid of dist prefix in the build file -DONE: Different packages for donwload and dundee. generic vs specific settings. +DONE: Different packages for download and dundee. generic vs specific settings. DONE: JAVADOC DONE: Refactor EngineResourcesLeak tester to hide a map implementation! DONE: Compile executables for linux in the most generic way diff --git a/binaries/jronn3.1.jar b/binaries/jronn3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..fa39e9874513aa0d91f5f66324fc2e8ba0fa103f GIT binary patch literal 403703 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 {Z+P^K^590Kq%rtSkMPuk?eZj z+)ocpDkcJovdMRtcUx=5xBk?TNv;0)mOUQ&Sks}@q6$av$P?L03VT|Kcj5bL3)QQ<&b zfHwMUPDm@TU}!v4d$3m$bA*f5jHTVk!!7V=Eyj*YgABMl4u6Ms4;w^g-Ub& z(Eq84jH}I&K~_XW4@Xj~Ab%O&kSf&!6~NGoj;ixP;>ztVwD=p5=spi%s~t%xRRM`f zYXU|yf-x<6W1gE1K6RSZiEzXdqZ8QoAvbRB`1wj;d|HOp>-_BlZ&!;XYHCsF9xyrN>J!TG®mJ13C0zP#0ThdN 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μ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�hV| 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

ou;56$^BbaS-fy#~z9j&^P~N+fjkZ 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 + @@ -147,18 +148,34 @@ + + Jar file: Minimal WS client jar + + + + + + + + + + + + + + + + + + - + Jar file: Minimal WS client jar - - - + - - diff --git a/conf/Executable.properties b/conf/Executable.properties index 681b3f0..cb3daa1 100644 --- a/conf/Executable.properties +++ b/conf/Executable.properties @@ -2,7 +2,7 @@ ### Clustal configuration ### local.clustalw.bin.windows=binaries/clustalw2.exe local.clustalw.bin=binaries/src/clustalw/src/clustalw2 -#cluster.clustalw.bin=/homes/pvtroshin/workspace/clustengine/binaries/src/clustalw/src/clustalw2 +cluster.clustalw.bin=/homes/pvtroshin/workspace/JABA2/binaries/src/clustalw/src/clustalw2 # Parameters names which come from RunnerConfig -> Parameters.xml file ultimately are all lowercased in comparison! # see engine.client.Util.getExecProperty() method for details # So they are case insensitive. @@ -10,50 +10,61 @@ clustalw.-matrix.path=binaries/matrices clustalw.presets.file=conf/settings/ClustalPresets.xml clustalw.parameters.file=conf/settings/ClustalParameters.xml clustalw.limits.file=conf/settings/ClustalLimits.xml -#clustalw.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M +clustalw.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M ### Muscle configuration ### local.muscle.bin.windows=binaries/muscle.exe local.muscle.bin=binaries/src/muscle/muscle # Beware version of muscle on the cluster older and does not support some # of the newer version attributed thus, will not work with Muscle.java wrapper! -cluster.muscle.bin=/homes/pvtroshin/workspace/clustengine/binaries/src/muscle/muscle +cluster.muscle.bin=/homes/pvtroshin/workspace/JABA2/binaries/src/muscle/muscle #The environment variable MUSCLE_MXPATH can be used to specify a path where the matrices are stored # e.g. MUSCLE_MXPATH#binaries/matrices - but need to privide absolute path! muscle.-matrix.path=binaries/matrices muscle.presets.file=conf/settings/MusclePresets.xml muscle.parameters.file=conf/settings/MuscleParameters.xml muscle.limits.file=conf/settings/MuscleLimits.xml -#muscle.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M +muscle.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M ### Mafft configuration ### #local.mafft.bin.windows= local.mafft.bin=binaries/src/mafft/binaries/mafft -#cluster.mafft.bin=/homes/pvtroshin/workspace/clustengine/binaries/src/mafft/core/mafft +cluster.mafft.bin=/homes/pvtroshin/workspace/JABA2/binaries/src/mafft/core/mafft mafft.bin.env=MAFFT_BINARIES#binaries/src/mafft/binaries;FASTA_4_MAFFT#binaries/src/fasta34/fasta34; mafft.--aamatrix.path=binaries/matrices mafft.presets.file=conf/settings/MafftPresets.xml mafft.parameters.file=conf/settings/MafftParameters.xml mafft.limits.file=conf/settings/MafftLimits.xml -#mafft.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M +mafft.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M ### Tcoffee configuration ### local.tcoffee.bin=binaries/src/tcoffee/t_coffee_source/t_coffee -#cluster.tcoffee.bin=/homes/pvtroshin/workspace/clustengine/binaries/src/tcoffee/t_coffee_source/t_coffee +cluster.tcoffee.bin=/homes/pvtroshin/workspace/JABA2/binaries/src/tcoffee/t_coffee_source/t_coffee #/sw/bin/t_coffee # Sub matrix support does not work #tcoffee.-matrix.path=binaries/matrices tcoffee.presets.file=conf/settings/TcoffeePresets.xml tcoffee.parameters.file=conf/settings/TcoffeeParameters.xml tcoffee.limits.file=conf/settings/TcoffeeLimits.xml -#tcoffee.cluster.cpunum=4 -#tcoffee.cluster.settings=-q mpi -pe mpi 4 -l h_vmem=1700M -l ram=1700M -l h_cpu=24:00:00 +tcoffee.cluster.cpunum=4 +tcoffee.cluster.settings=-q 64bit-pri.q -pe smp 4 -l h_vmem=1700M -l ram=1700M -l h_cpu=24:00:00 ### Probcons configuration ### #local.probcons.bin.windows= local.probcons.bin=binaries/src/probcons/probcons -#cluster.probcons.bin=/homes/pvtroshin/workspace/clustengine/binaries/src/probcons/probcons +cluster.probcons.bin=/homes/pvtroshin/workspace/JABA2/binaries/src/probcons/probcons #Probcons does not support matrix loading - unrecognised option reported! probcons.parameters.file=conf/settings/ProbconsParameters.xml probcons.limits.file=conf/settings/ProbconsLimits.xml -#probcons.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M +probcons.cluster.settings=-l h_cpu=24:00:00 -l h_vmem=6000M -l ram=6000M + +### Jronn configuration ### +local.jronn.bin.windows=D:\\Java\\jdk1.6.0_14\\bin\\java.exe +local.jronn.bin=/sw/java/latest/bin/java +cluster.jronn.bin=/sw/java/latest/bin/java +jronn.jar.file=binaries/jronn3.1.jar +jronn.parameters.file=conf/settings/JronnParameters.xml +jronn.limits.file=conf/settings/JronnLimits.xml +jronn.jvm.options=-Xms32M -Xmx512M +jronn.cluster.cpunum=4 +jronn.cluster.settings=-q 64bit-pri.q -pe smp 4 -l h_vmem=1700M -l ram=1700M -l h_cpu=24:00:00 diff --git a/conf/log4j.properties b/conf/log4j.properties index 6d52128..9fe9a23 100644 --- a/conf/log4j.properties +++ b/conf/log4j.properties @@ -1,6 +1,6 @@ ## CHANGE THIS (The root directory where to store all the log files) -#logDir = . +logDir = . ## Uncomment to enable JWS2 activity logging to standard out (to the console if available) ## for possible log levels please refer to Log4j documentation http://logging.apache.org/log4j/1.2/manual.html @@ -13,20 +13,20 @@ ## FATAL - log fatal events only ## Uncomment this if you would like the system to log messages into stdout -#log4j.rootLogger=ERROR, stdout -#log4j.appender.stdout=org.apache.log4j.ConsoleAppender -#log4j.appender.stdout.Target=System.out -#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -#log4j.appender.stdout.layout.ConversionPattern=%m%n +log4j.rootLogger=ERROR, stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%m%n ## Uncomment to enable JWS2 activity logging to the file -#log4j.logger.compbio=ERROR, ACTIVITY -#log4j.appender.ACTIVITY=org.apache.log4j.RollingFileAppender -#log4j.appender.ACTIVITY.File=${logDir}/activity.log -#log4j.appender.ACTIVITY.MaxFileSize=10MB -#log4j.appender.ACTIVITY.MaxBackupIndex=10000 -#log4j.appender.ACTIVITY.layout=org.apache.log4j.PatternLayout -#log4j.appender.ACTIVITY.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p %3x - %m%n +log4j.logger.compbio=ERROR, ACTIVITY +log4j.appender.ACTIVITY=org.apache.log4j.RollingFileAppender +log4j.appender.ACTIVITY.File=${logDir}/activity.log +log4j.appender.ACTIVITY.MaxFileSize=10MB +log4j.appender.ACTIVITY.MaxBackupIndex=10000 +log4j.appender.ACTIVITY.layout=org.apache.log4j.PatternLayout +log4j.appender.ACTIVITY.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p %3x - %m%n ## Uncomment for separate local engine execution log (debugging only) #log4j.logger.compbio.engine.local.LocalExecutorService=INFO, C diff --git a/conf/settings/JronnLimits.xml b/conf/settings/JronnLimits.xml new file mode 100644 index 0000000..9ea48b0 --- /dev/null +++ b/conf/settings/JronnLimits.xml @@ -0,0 +1,13 @@ + + + compbio.runner.disorder.Jronn + + 2000 + 2000 + + + # LocalEngineExecutionLimit # + 5 + 500 + + diff --git a/conf/settings/JronnParameters.xml b/conf/settings/JronnParameters.xml new file mode 100644 index 0000000..27e7a86 --- /dev/null +++ b/conf/settings/JronnParameters.xml @@ -0,0 +1,17 @@ + + + compbio.runner.disorder.Jronn + = + + Disorder probability + The probability of disorder threshold + -d + prog_docs/jronn.html + 0.53 + + Float + 0.01 + 0.99 + + + diff --git a/datamodel/compbio/data/sequence/AnnotatedSequence.java b/datamodel/compbio/data/sequence/AnnotatedSequence.java new file mode 100644 index 0000000..5d09534 --- /dev/null +++ b/datamodel/compbio/data/sequence/AnnotatedSequence.java @@ -0,0 +1,56 @@ +package compbio.data.sequence; + +import java.util.Arrays; + +public class AnnotatedSequence extends FastaSequence { + + private final float[] annotation; + + public AnnotatedSequence(String id, String sequence, float[] annotation) { + super(id, sequence); + this.annotation = annotation; + if (annotation == null || annotation.length != sequence.length()) { + throw new IllegalArgumentException("The length of the annotation (" + + ((annotation != null) ? annotation.length : "0") + + ") does not match the length of the sequence (" + + sequence.length() + ")!"); + } + } + + public AnnotatedSequence(FastaSequence fsequence, float[] annotation) { + this(fsequence.getId(), fsequence.getSequence(), annotation); + } + + public float[] getAnnotation() { + return annotation; + } + + @Override + public int hashCode() { + final int prime = 7; + int result = super.hashCode(); + result = prime * result + Arrays.hashCode(annotation); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + AnnotatedSequence other = (AnnotatedSequence) obj; + if (!Arrays.equals(annotation, other.annotation)) + return false; + return true; + } + + @Override + public String toString() { + return super.toString() + "Annotation:\n " + + Arrays.toString(annotation) + "\n"; + } + +} diff --git a/datamodel/compbio/data/sequence/SequenceUtil.java b/datamodel/compbio/data/sequence/SequenceUtil.java index 1a3ce5b..f7c923a 100644 --- a/datamodel/compbio/data/sequence/SequenceUtil.java +++ b/datamodel/compbio/data/sequence/SequenceUtil.java @@ -1,6 +1,9 @@ -/* Copyright (c) 2009 Peter Troshin +/* + * @(#)SequenceUtil.java 1.0 September 2009 + * + * Copyright (c) 2009 Peter Troshin * - * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * Jalview Web Services version: 2.0 * * This library is free software; you can redistribute it and/or modify it under the terms of the * Apache License version 2 as published by the Apache Software Foundation @@ -10,7 +13,7 @@ * License for more details. * * A copy of the license is in apache_license.txt. It is also available here: - * @see: http://www.apache.org/licenses/LICENSE-2.0.txt + * see: http://www.apache.org/licenses/LICENSE-2.0.txt * * Any republication or derived work distributed in source code form * must include this copyright and license notice. @@ -21,6 +24,8 @@ package compbio.data.sequence; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Closeable; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -35,9 +40,8 @@ import java.util.regex.Pattern; /** * Utility class for operations on sequences * - * @author pvtroshin - * - * Date September 2009 + * @author Petr Troshin + * @version 1.0 */ public final class SequenceUtil { @@ -111,8 +115,8 @@ public final class SequenceUtil { /** * @return true is the sequence contains only letters a,c, t, g, u */ - public static boolean isNucleotideSequence(FastaSequence s) { - return isNonAmbNucleotideSequence(s.getSequence()); + public static boolean isNucleotideSequence(final FastaSequence s) { + return SequenceUtil.isNonAmbNucleotideSequence(s.getSequence()); } /** @@ -120,11 +124,11 @@ public final class SequenceUtil { * (!) - B char */ public static boolean isNonAmbNucleotideSequence(String sequence) { - sequence = cleanSequence(sequence); - if (DIGIT.matcher(sequence).find()) { + sequence = SequenceUtil.cleanSequence(sequence); + if (SequenceUtil.DIGIT.matcher(sequence).find()) { return false; } - if (NON_NUCLEOTIDE.matcher(sequence).find()) { + if (SequenceUtil.NON_NUCLEOTIDE.matcher(sequence).find()) { return false; /* * System.out.format("I found the text starting at " + @@ -132,7 +136,7 @@ public final class SequenceUtil { * nonDNAmatcher.end()); */ } - Matcher DNAmatcher = NUCLEOTIDE.matcher(sequence); + final Matcher DNAmatcher = SequenceUtil.NUCLEOTIDE.matcher(sequence); return DNAmatcher.find(); } @@ -144,7 +148,7 @@ public final class SequenceUtil { */ public static String cleanSequence(String sequence) { assert sequence != null; - final Matcher m = WHITE_SPACE.matcher(sequence); + final Matcher m = SequenceUtil.WHITE_SPACE.matcher(sequence); sequence = m.replaceAll("").toUpperCase(); return sequence; } @@ -157,10 +161,10 @@ public final class SequenceUtil { * @return cleaned up sequence */ public static String deepCleanSequence(String sequence) { - sequence = cleanSequence(sequence); - sequence = DIGIT.matcher(sequence).replaceAll(""); - sequence = NONWORD.matcher(sequence).replaceAll(""); - Pattern othernonSeqChars = Pattern.compile("[_-]+"); + sequence = SequenceUtil.cleanSequence(sequence); + sequence = SequenceUtil.DIGIT.matcher(sequence).replaceAll(""); + sequence = SequenceUtil.NONWORD.matcher(sequence).replaceAll(""); + final Pattern othernonSeqChars = Pattern.compile("[_-]+"); sequence = othernonSeqChars.matcher(sequence).replaceAll(""); return sequence; } @@ -171,17 +175,17 @@ public final class SequenceUtil { * @return true is the sequence is a protein sequence, false overwise */ public static boolean isProteinSequence(String sequence) { - sequence = cleanSequence(sequence); - if (isNonAmbNucleotideSequence(sequence)) { + sequence = SequenceUtil.cleanSequence(sequence); + if (SequenceUtil.isNonAmbNucleotideSequence(sequence)) { return false; } - if (DIGIT.matcher(sequence).find()) { + if (SequenceUtil.DIGIT.matcher(sequence).find()) { return false; } - if (NON_AA.matcher(sequence).find()) { + if (SequenceUtil.NON_AA.matcher(sequence).find()) { return false; } - Matcher protmatcher = AA.matcher(sequence); + final Matcher protmatcher = SequenceUtil.AA.matcher(sequence); return protmatcher.find(); } @@ -194,20 +198,20 @@ public final class SequenceUtil { * protein or DNA */ public static boolean isAmbiguosProtein(String sequence) { - sequence = cleanSequence(sequence); - if (isNonAmbNucleotideSequence(sequence)) { + sequence = SequenceUtil.cleanSequence(sequence); + if (SequenceUtil.isNonAmbNucleotideSequence(sequence)) { return false; } - if (DIGIT.matcher(sequence).find()) { + if (SequenceUtil.DIGIT.matcher(sequence).find()) { return false; } - if (NON_AA.matcher(sequence).find()) { + if (SequenceUtil.NON_AA.matcher(sequence).find()) { return false; } - if (AA.matcher(sequence).find()) { + if (SequenceUtil.AA.matcher(sequence).find()) { return false; } - Matcher amb_prot = AMBIGUOUS_AA.matcher(sequence); + final Matcher amb_prot = SequenceUtil.AMBIGUOUS_AA.matcher(sequence); return amb_prot.find(); } @@ -221,12 +225,13 @@ public final class SequenceUtil { * - the maximum number of characters to write in one line * @throws IOException */ - public static void writeFasta(OutputStream outstream, - List sequences, int width) throws IOException { - OutputStreamWriter writer = new OutputStreamWriter(outstream); - BufferedWriter fastawriter = new BufferedWriter(writer); - for (FastaSequence fs : sequences) { - fastawriter.write(fs.getOnelineFasta()); + public static void writeFasta(final OutputStream outstream, + final List sequences, final int width) + throws IOException { + final OutputStreamWriter writer = new OutputStreamWriter(outstream); + final BufferedWriter fastawriter = new BufferedWriter(writer); + for (final FastaSequence fs : sequences) { + fastawriter.write(fs.getFormatedSequence(width)); } outstream.flush(); fastawriter.close(); @@ -242,28 +247,30 @@ public final class SequenceUtil { * @return list of FastaSequence objects * @throws IOException */ - public static List readFasta(InputStream inStream) + public static List readFasta(final InputStream inStream) throws IOException { - List seqs = new ArrayList(); - InputStreamReader inReader = new InputStreamReader(inStream); - BufferedReader infasta = new BufferedReader(inReader); - Pattern pattern = Pattern.compile("//s+"); + final List seqs = new ArrayList(); + + final BufferedReader infasta = new BufferedReader( + new InputStreamReader(inStream, "UTF8"), 16000); + final Pattern pattern = Pattern.compile("//s+"); String line; String sname = "", seqstr = null; do { line = infasta.readLine(); - if (line == null || line.startsWith(">")) { - if (seqstr != null) + if ((line == null) || line.startsWith(">")) { + if (seqstr != null) { seqs.add(new FastaSequence(sname.substring(1), seqstr)); + } sname = line; // remove > seqstr = ""; } else { - String subseq = pattern.matcher(line).replaceAll(""); + final String subseq = pattern.matcher(line).replaceAll(""); seqstr += subseq; } } while (line != null); - inReader.close(); + infasta.close(); return seqs; } @@ -275,17 +282,103 @@ public final class SequenceUtil { * @param sequences * @throws IOException */ - public static void writeFasta(OutputStream os, List sequences) - throws IOException { - OutputStreamWriter outWriter = new OutputStreamWriter(os); - BufferedWriter fasta_out = new BufferedWriter(outWriter); - for (FastaSequence fs : sequences) { + public static void writeFasta(final OutputStream os, + final List sequences) throws IOException { + final OutputStreamWriter outWriter = new OutputStreamWriter(os); + final BufferedWriter fasta_out = new BufferedWriter(outWriter); + for (final FastaSequence fs : sequences) { fasta_out.write(fs.getOnelineFasta()); } fasta_out.close(); outWriter.close(); } + public static List readJRonn(final File result) + throws IOException, UnknownFileFormatException { + InputStream input = new FileInputStream(result); + List sequences = readJRonn(input); + input.close(); + return sequences; + } + + /** + * Reader for JRonn horizontal file format + * + * >Foobar + * + * M G D T T A G + * + * 0.48 0.42 0.42 0.48 0.52 0.53 0.54 + * + * All values are tab delimited + * + * @param inStream + * @return + * @throws IOException + * @throws UnknownFileFormatException + */ + public static List readJRonn(final InputStream inStream) + throws IOException, UnknownFileFormatException { + final List seqs = new ArrayList(); + + final BufferedReader infasta = new BufferedReader( + new InputStreamReader(inStream, "UTF8"), 16000); + + String line; + String sname = ""; + do { + line = infasta.readLine(); + if (line == null || line.isEmpty()) { + // skip empty lines + continue; + } + if (line.startsWith(">")) { + // read name + sname = line.trim().substring(1); + // read sequence line + line = infasta.readLine(); + final String sequence = line.replace("\t", ""); + // read annotation line + line = infasta.readLine(); + String[] annotValues = line.split("\t"); + float[] annotation = convertToNumber(annotValues); + if (annotation.length != sequence.length()) { + throw new UnknownFileFormatException( + "File does not look like Jronn horizontally formatted output file!\n" + + JRONN_WRONG_FORMAT_MESSAGE); + } + seqs.add(new AnnotatedSequence(sname, sequence, annotation)); + } + } while (line != null); + + infasta.close(); + return seqs; + } + + private static float[] convertToNumber(String[] annotValues) + throws UnknownFileFormatException { + float[] annotation = new float[annotValues.length]; + try { + for (int i = 0; i < annotation.length; i++) { + annotation[i] = Float.parseFloat(annotValues[i]); + } + } catch (NumberFormatException e) { + throw new UnknownFileFormatException(JRONN_WRONG_FORMAT_MESSAGE, e + .getCause()); + } + return annotation; + } + + private static final String JRONN_WRONG_FORMAT_MESSAGE = "Jronn file must be in the following format:\n" + + ">sequence_name\n " + + "M V S\n" + + "0.43 0.22 0.65\n" + + "Where first line is the sequence name,\n" + + "second line is the tab delimited sequence,\n" + + "third line contains tab delimited disorder prediction values.\n" + + "No lines are allowed between these three. Additionally, the number of " + + "sequence residues must be equal to the number of the disorder values."; + /** * Closes the Closable and logs the exception if any * diff --git a/engine/compbio/engine/client/SkeletalExecutable.java b/engine/compbio/engine/client/SkeletalExecutable.java index b4f82fd..adc3e0b 100644 --- a/engine/compbio/engine/client/SkeletalExecutable.java +++ b/engine/compbio/engine/client/SkeletalExecutable.java @@ -31,233 +31,233 @@ import compbio.util.Util; public abstract class SkeletalExecutable implements Executable { - private static final PropertyHelper ph = PropertyHelperManager - .getPropertyHelper(); + protected static final PropertyHelper ph = PropertyHelperManager + .getPropertyHelper(); - private static Logger log = Logger.getLogger(SkeletalExecutable.class); + private static Logger log = Logger.getLogger(SkeletalExecutable.class); - protected String inputFile = "input.txt"; - protected String outputFile = "output.txt"; - protected String errorFile = "error.txt"; + protected String inputFile = "input.txt"; + protected String outputFile = "output.txt"; + protected String errorFile = "error.txt"; - private boolean isInputSet = false; - private boolean isOutputSet = false; - private boolean isErrorSet = false; + private boolean isInputSet = false; + private boolean isOutputSet = false; + private boolean isErrorSet = false; - /** - * This has to allow duplicate parameters as different options may have the - * same value e.g. Muscle -weight1 clustalw -weight2 clustalw - */ - protected CommandBuilder cbuilder; - - public SkeletalExecutable() { - cbuilder = new CommandBuilder(" "); - } + /** + * This has to allow duplicate parameters as different options may have the + * same value e.g. Muscle -weight1 clustalw -weight2 clustalw + */ + protected CommandBuilder cbuilder; - public SkeletalExecutable(String parameterKeyValueDelimiter) { - assert parameterKeyValueDelimiter != null; - cbuilder = new CommandBuilder(parameterKeyValueDelimiter); - } + public SkeletalExecutable() { + cbuilder = new CommandBuilder(" "); + } - public SkeletalExecutable setInput(String inFile) { - if (compbio.util.Util.isEmpty(inFile)) { - throw new IllegalArgumentException("Input file must not be NULL"); - } - this.inputFile = inFile; - this.isInputSet = true; - return this; - } + public SkeletalExecutable(String parameterKeyValueDelimiter) { + assert parameterKeyValueDelimiter != null; + cbuilder = new CommandBuilder(parameterKeyValueDelimiter); + } - public SkeletalExecutable setOutput(String outFile) { - if (compbio.util.Util.isEmpty(outFile) - || PathValidator.isAbsolutePath(outFile)) { - throw new IllegalArgumentException( - "Output file must not be NULL and Absolute path could not be used! Please provide the filename only. Value provided: " - + outFile); - } - this.outputFile = outFile; - this.isOutputSet = true; - return this; + public SkeletalExecutable setInput(String inFile) { + if (compbio.util.Util.isEmpty(inFile)) { + throw new IllegalArgumentException("Input file must not be NULL"); } - - public SkeletalExecutable setError(String errFile) { - if (compbio.util.Util.isEmpty(errFile) - || PathValidator.isAbsolutePath(errFile)) { - throw new IllegalArgumentException( - "Error file must not be NULL and Absolute path could not be used! Please provide the filename only. Value provided: " - + errFile); - } - this.errorFile = errFile; - this.isErrorSet = true; - return this; + this.inputFile = inFile; + this.isInputSet = true; + return this; + } + + public SkeletalExecutable setOutput(String outFile) { + if (compbio.util.Util.isEmpty(outFile) + || PathValidator.isAbsolutePath(outFile)) { + throw new IllegalArgumentException( + "Output file must not be NULL and Absolute path could not be used! Please provide the filename only. Value provided: " + + outFile); } - - @Override - public CommandBuilder getParameters(ExecProvider provider) { - /* - * Prevent modification of the parameters unintentionally. This is - * important to preserve executable parameters intact as engine could - * add things into the array as it see fit. For instance - * ExecutableWrapper (part of local engines) add command line as the - * first element of an array. - */ - paramValueUpdater(); - return cbuilder; + this.outputFile = outFile; + this.isOutputSet = true; + return this; + } + + public SkeletalExecutable setError(String errFile) { + if (compbio.util.Util.isEmpty(errFile) + || PathValidator.isAbsolutePath(errFile)) { + throw new IllegalArgumentException( + "Error file must not be NULL and Absolute path could not be used! Please provide the filename only. Value provided: " + + errFile); } - - @Override - public Executable addParameters(List parameters) { - cbuilder.addParams(parameters); - return this; - } - - public Executable setParameter(String parameter) { - cbuilder.setParam(parameter); - return this; - } - - /** - * This is a generic method of changing values of the parameters with - * properties - * - * This method iterates via commands for an executable finding matches from - * the Executable.properties file and replacing values in CommandBuilder - * with a combination of value from CommandBuilder to merge path from - * properties + this.errorFile = errFile; + this.isErrorSet = true; + return this; + } + + @Override + public CommandBuilder getParameters(ExecProvider provider) { + /* + * Prevent modification of the parameters unintentionally. This is + * important to preserve executable parameters intact as engine could + * add things into the array as it see fit. For instance + * ExecutableWrapper (part of local engines) add command line as the + * first element of an array. */ - void paramValueUpdater() { - for (Parameter command : cbuilder.getCommandList()) { - if (command.value == null) { - continue; - } - String propertyPath = compbio.engine.client.Util.getExecProperty( - command.name + ".path", getType()); - if (Util.isEmpty(propertyPath)) { - continue; - } - if (new File(command.value).isAbsolute()) { - // Matrix can be found so no actions necessary - // This method has been called already and the matrix name - // is modified to contain full path // no further actions is - // necessary - continue; - } - String absMatrixPath = compbio.engine.client.Util - .convertToAbsolute(propertyPath); - command.value = absMatrixPath + File.separator + command.value; - cbuilder.setParam(command); - } + paramValueUpdater(); + return cbuilder; + } + + @Override + public Executable addParameters(List parameters) { + cbuilder.addParams(parameters); + return this; + } + + public Executable setParameter(String parameter) { + cbuilder.setParam(parameter); + return this; + } + + /** + * This is a generic method of changing values of the parameters with + * properties + * + * This method iterates via commands for an executable finding matches from + * the Executable.properties file and replacing values in CommandBuilder + * with a combination of value from CommandBuilder to merge path from + * properties + */ + void paramValueUpdater() { + for (Parameter command : cbuilder.getCommandList()) { + if (command.value == null) { + continue; + } + String propertyPath = compbio.engine.client.Util.getExecProperty( + command.name + ".path", getType()); + if (Util.isEmpty(propertyPath)) { + continue; + } + if (new File(command.value).isAbsolute()) { + // Matrix can be found so no actions necessary + // This method has been called already and the matrix name + // is modified to contain full path // no further actions is + // necessary + continue; + } + String absMatrixPath = compbio.engine.client.Util + .convertToAbsolute(propertyPath); + command.value = absMatrixPath + File.separator + command.value; + cbuilder.setParam(command); } - - /** - * This method cannot really tell whether the files has actually been - * created or not. It must be overridden as required. - * - * @see compbio.engine.client.Executable#getCreatedFiles() - */ - @Override - public List getCreatedFiles() { - return Arrays.asList(getOutput(), getError()); + } + + /** + * This method cannot really tell whether the files has actually been + * created or not. It must be overridden as required. + * + * @see compbio.engine.client.Executable#getCreatedFiles() + */ + @Override + public List getCreatedFiles() { + return Arrays.asList(getOutput(), getError()); + } + + @Override + public String getInput() { + return inputFile; + } + + protected boolean isInputSet() { + return isInputSet; + } + + protected boolean isOutputSet() { + return isOutputSet; + } + + protected boolean isErrorSet() { + return isErrorSet; + } + + @Override + public String getOutput() { + return outputFile; + } + + @Override + public String getError() { + return errorFile; + } + + @Override + public String toString() { + String value = "Input: " + this.getInput() + "\n"; + value += "Output: " + this.getOutput() + "\n"; + value += "Error: " + this.getError() + "\n"; + value += "Class: " + this.getClass() + "\n"; + value += "Params: " + cbuilder + "\n"; + return value; + } + + @Override + public Executable loadRunConfiguration(RunConfiguration rconfig) { + if (!compbio.util.Util.isEmpty(rconfig.getOutput())) { + setOutput(rconfig.getOutput()); } - - @Override - public String getInput() { - return inputFile; + if (!compbio.util.Util.isEmpty(rconfig.getError())) { + setError(rconfig.getError()); } - - protected boolean isInputSet() { - return isInputSet; - } - - protected boolean isOutputSet() { - return isOutputSet; - } - - protected boolean isErrorSet() { - return isErrorSet; - } - - @Override - public String getOutput() { - return outputFile; + if (!compbio.util.Util.isEmpty(rconfig.getInput())) { + setInput(rconfig.getInput()); } - - @Override - public String getError() { - return errorFile; + this.cbuilder = (CommandBuilder) rconfig.getParameters(); + return this; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; } - - @Override - public String toString() { - String value = "Input: " + this.getInput() + "\n"; - value += "Output: " + this.getOutput() + "\n"; - value += "Error: " + this.getError() + "\n"; - value += "Class: " + this.getClass() + "\n"; - value += "Params: " + cbuilder + "\n"; - return value; + if (!(obj instanceof SkeletalExecutable)) { + return false; } - - @Override - public Executable loadRunConfiguration(RunConfiguration rconfig) { - if (!compbio.util.Util.isEmpty(rconfig.getOutput())) { - setOutput(rconfig.getOutput()); - } - if (!compbio.util.Util.isEmpty(rconfig.getError())) { - setError(rconfig.getError()); - } - if (!compbio.util.Util.isEmpty(rconfig.getInput())) { - setInput(rconfig.getInput()); - } - this.cbuilder = (CommandBuilder) rconfig.getParameters(); - return this; + SkeletalExecutable exec = (SkeletalExecutable) obj; + if (!Util.isEmpty(this.inputFile) && !Util.isEmpty(exec.inputFile)) { + if (!this.inputFile.equals(exec.inputFile)) { + return false; + } } - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (!(obj instanceof SkeletalExecutable)) { - return false; - } - SkeletalExecutable exec = (SkeletalExecutable) obj; - if (!Util.isEmpty(this.inputFile) && !Util.isEmpty(exec.inputFile)) { - if (!this.inputFile.equals(exec.inputFile)) { - return false; - } - } - if (!Util.isEmpty(this.outputFile) && !Util.isEmpty(exec.outputFile)) { - if (!this.outputFile.equals(exec.outputFile)) { - return false; - } - } - if (!Util.isEmpty(this.errorFile) && !Util.isEmpty(exec.errorFile)) { - if (!this.errorFile.equals(exec.errorFile)) { - return false; - } - } - if (!this.cbuilder.equals(exec.cbuilder)) { - return false; - } - return true; + if (!Util.isEmpty(this.outputFile) && !Util.isEmpty(exec.outputFile)) { + if (!this.outputFile.equals(exec.outputFile)) { + return false; + } } - - @Override - public int hashCode() { - int code = inputFile.hashCode(); - code += outputFile.hashCode(); - code += errorFile.hashCode(); - code *= this.cbuilder.hashCode(); - return code; + if (!Util.isEmpty(this.errorFile) && !Util.isEmpty(exec.errorFile)) { + if (!this.errorFile.equals(exec.errorFile)) { + return false; + } } - - public String getClusterSettings() { - String settings = ph.getProperty(getType().getSimpleName() - .toLowerCase() - + ".cluster.settings"); - return settings == null ? "" : settings; + if (!this.cbuilder.equals(exec.cbuilder)) { + return false; } - - public abstract Class> getType(); + return true; + } + + @Override + public int hashCode() { + int code = inputFile.hashCode(); + code += outputFile.hashCode(); + code += errorFile.hashCode(); + code *= this.cbuilder.hashCode(); + return code; + } + + public String getClusterSettings() { + String settings = ph.getProperty(getType().getSimpleName() + .toLowerCase() + + ".cluster.settings"); + return settings == null ? "" : settings; + } + + public abstract Class> getType(); } diff --git a/runner/compbio/runner/Util.java b/runner/compbio/runner/Util.java index a3c86c6..9475a0b 100644 --- a/runner/compbio/runner/Util.java +++ b/runner/compbio/runner/Util.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.log4j.Logger; import compbio.data.sequence.Alignment; +import compbio.data.sequence.AnnotatedSequence; import compbio.data.sequence.ClustalAlignmentUtil; import compbio.data.sequence.FastaSequence; import compbio.data.sequence.SequenceUtil; @@ -130,6 +131,23 @@ public final class Util { return ClustalAlignmentUtil.readClustalFile(cfile); } + public static final List readJronnFile( + String workDirectory, String clustFile) + throws UnknownFileFormatException, IOException, + FileNotFoundException, NullPointerException { + assert !compbio.util.Util.isEmpty(workDirectory); + assert !compbio.util.Util.isEmpty(clustFile); + File cfile = new File(compbio.engine.client.Util.getFullPath( + workDirectory, clustFile)); + log.trace("Jronn OUTPUT FILE PATH: " + cfile.getAbsolutePath()); + if (!(cfile.exists() && cfile.length() > 0)) { + throw new FileNotFoundException("Result for the jobId " + + workDirectory + " with file name " + clustFile + + " is not found!"); + } + return SequenceUtil.readJRonn(cfile); + } + public static void writeInput(List sequences, ConfiguredExecutable exec) { diff --git a/runner/compbio/runner/disorder/RonnWrapper.java b/runner/compbio/runner/disorder/Jronn.java similarity index 58% rename from runner/compbio/runner/disorder/RonnWrapper.java rename to runner/compbio/runner/disorder/Jronn.java index 0bd621e..0c4245a 100644 --- a/runner/compbio/runner/disorder/RonnWrapper.java +++ b/runner/compbio/runner/disorder/Jronn.java @@ -18,52 +18,59 @@ package compbio.runner.disorder; +import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.util.Arrays; import java.util.List; import org.apache.log4j.Logger; -import compbio.data.sequence.Alignment; +import compbio.data.sequence.AnnotatedSequence; +import compbio.data.sequence.SequenceUtil; import compbio.data.sequence.UnknownFileFormatException; import compbio.engine.client.Executable; -import compbio.engine.client.PipedExecutable; import compbio.engine.client.SkeletalExecutable; import compbio.metadata.Limit; import compbio.metadata.LimitsManager; import compbio.metadata.ResultNotAvailableException; import compbio.runner.Util; -public class RonnWrapper extends SkeletalExecutable implements - PipedExecutable { - /* - * RONN does not accept stdin the file name must be defined as parameter It - * can only analyse ONE sequence per run! (or may be not, but the results - * gets overriden!) FASTA format is accepted. - * - * To run it do the following: - * - * 1) copy ronn executables and task file to work directory - * - * 2) execute run processes one by one for each sequence - */ - - private static final String command = "/homes/pvtroshin/soft/RONNv3_fasta/Ronn_runner.sh"; +/** + * Command line + * + * java -Xmx512 -jar jronn_v3.jar -i=test_seq.txt -n=1 -o=out.txt -s=stat.out + * + * @author pvtroshin + * + */ +public class Jronn extends SkeletalExecutable { - private static Logger log = Logger.getLogger(RonnWrapper.class); + private static Logger log = Logger.getLogger(Jronn.class); // Cache for Limits information - private static LimitsManager limits; + private static LimitsManager limits; public static final String KEY_VALUE_SEPARATOR = Util.SPACE; + public static final String STAT_FILE = "stat.txt"; + + public Jronn() { + addParameters(Arrays.asList("-jar", getLibPath(), "-n=1", "-s=" + + STAT_FILE, "-f=H")); + } @SuppressWarnings("unchecked") @Override - public Alignment getResults(String workDirectory) + public List getResults(String workDirectory) throws ResultNotAvailableException { + List sequences = null; try { - return Util.readClustalFile(workDirectory, getOutput()); + InputStream inStream = new FileInputStream(new File(workDirectory, + getOutput())); + sequences = SequenceUtil.readJRonn(inStream); + inStream.close(); } catch (FileNotFoundException e) { log.error(e.getMessage(), e.getCause()); throw new ResultNotAvailableException(e); @@ -77,6 +84,23 @@ public class RonnWrapper extends SkeletalExecutable implements log.error(e.getMessage(), e.getCause()); throw new ResultNotAvailableException(e); } + return sequences; + } + + private static String getLibPath() { + + String settings = ph.getProperty("jronn.jar.file"); + if (compbio.util.Util.isEmpty(settings)) { + throw new NullPointerException( + "Please define jronn.jar.file property in Executable.properties file" + + "and initialize it with the location of jronn jar file"); + } + if (new File(settings).isAbsolute()) { + // Jronn jar can be found so no actions necessary + // no further actions is necessary + return settings; + } + return compbio.engine.client.Util.convertToAbsolute(settings); } @Override @@ -85,18 +109,25 @@ public class RonnWrapper extends SkeletalExecutable implements } @Override - public RonnWrapper setInput(String inFile) { - String input = getInput(); + public Jronn setInput(String inFile) { super.setInput(inFile); + cbuilder.setParam("-i=" + inFile); return this; } @Override - public Limit getLimit(String presetName) { + public Jronn setOutput(String outFile) { + super.setOutput(outFile); + cbuilder.setParam("-o=" + outFile); + return this; + } + + @Override + public Limit getLimit(String presetName) { if (limits == null) { limits = getLimits(); } - Limit limit = null; + Limit limit = null; if (limits != null) { // this returns default limit if preset is undefined! limit = limits.getLimitByName(presetName); @@ -112,7 +143,7 @@ public class RonnWrapper extends SkeletalExecutable implements } @Override - public LimitsManager getLimits() { + public LimitsManager getLimits() { // synchronise on static field synchronized (log) { if (limits == null) { @@ -126,4 +157,8 @@ public class RonnWrapper extends SkeletalExecutable implements public Class> getType() { return this.getClass(); } + + public static String getStatFile() { + return STAT_FILE; + } } diff --git a/testsrc/compbio/data/sequence/SequenceUtilTester.java b/testsrc/compbio/data/sequence/SequenceUtilTester.java index 3dd09ef..f2af670 100644 --- a/testsrc/compbio/data/sequence/SequenceUtilTester.java +++ b/testsrc/compbio/data/sequence/SequenceUtilTester.java @@ -36,80 +36,112 @@ import compbio.metadata.AllTestSuit; public class SequenceUtilTester { - @Test() - public void testisNonAmbNucleotideSequence() { - String dnaseq = "atgatTGACGCTGCTGatgtcgtgagtgga"; - assertTrue(SequenceUtil.isNonAmbNucleotideSequence(dnaseq)); - String dirtyDnaseq = "atgAGTggt\taGGTgc\ncgcACTgc gACtcgcGAt cgA "; - assertTrue(SequenceUtil.isNonAmbNucleotideSequence(dirtyDnaseq)); - String nonDna = "atgfctgatgcatgcatgatgctga"; - assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); - - nonDna = "atgc1tgatgcatgcatgatgctga"; - assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); - - nonDna = "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL"; - assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); - // String ambDna = "AGTCRYMKSWHBVDN"; // see IUPAC Nucleotide Code - assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); - - } - - @Test() - public void testCleanSequence() { - String dirtySeq = "atgAGTggt\taGGTgc\ncgcAC\rTgc gACtcgcGAt cgA "; - assertEquals("atgAGTggtaGGTgccgcACTgcgACtcgcGAtcgA".toUpperCase(), - SequenceUtil.cleanSequence(dirtySeq)); - } - - @Test() - public void testDeepCleanSequence() { - String dirtySeq = "a!t?g.A;GTggt\ta12GGTgc\ncgc23AC\rTgc gAC<>.,?!|\\|/t@cg-c¬GA=_+(0){]}[:£$&^*\"t cgA "; - assertEquals("atgAGTggtaGGTgccgcACTgcgACtcgcGAtcgA".toUpperCase(), - SequenceUtil.deepCleanSequence(dirtySeq)); + @Test() + public void testisNonAmbNucleotideSequence() { + String dnaseq = "atgatTGACGCTGCTGatgtcgtgagtgga"; + assertTrue(SequenceUtil.isNonAmbNucleotideSequence(dnaseq)); + String dirtyDnaseq = "atgAGTggt\taGGTgc\ncgcACTgc gACtcgcGAt cgA "; + assertTrue(SequenceUtil.isNonAmbNucleotideSequence(dirtyDnaseq)); + String nonDna = "atgfctgatgcatgcatgatgctga"; + assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); + + nonDna = "atgc1tgatgcatgcatgatgctga"; + assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); + + nonDna = "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL"; + assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); + // String ambDna = "AGTCRYMKSWHBVDN"; // see IUPAC Nucleotide Code + assertFalse(SequenceUtil.isNonAmbNucleotideSequence(nonDna)); + + } + + @Test() + public void testCleanSequence() { + String dirtySeq = "atgAGTggt\taGGTgc\ncgcAC\rTgc gACtcgcGAt cgA "; + assertEquals("atgAGTggtaGGTgccgcACTgcgACtcgcGAtcgA".toUpperCase(), + SequenceUtil.cleanSequence(dirtySeq)); + } + + @Test() + public void testDeepCleanSequence() { + String dirtySeq = "a!t?g.A;GTggt\ta12GGTgc\ncgc23AC\rTgc gAC<>.,?!|\\|/t@cg-c¬GA=_+(0){]}[:£$&^*\"t cgA "; + assertEquals("atgAGTggtaGGTgccgcACTgcgACtcgcGAtcgA".toUpperCase(), + SequenceUtil.deepCleanSequence(dirtySeq)); + } + + @Test() + public void testisProteinSequence() { + String dirtySeq = "atgAGTggt\taGGTgc\ncgcAC\rTgc gACtcgcGAt cgA "; + assertFalse(SequenceUtil.isProteinSequence(dirtySeq)); + String notaSeq = "atgc1tgatgcatgcatgatgctga"; + assertFalse(SequenceUtil.isProteinSequence(notaSeq)); + String AAseq = "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL"; + assertTrue(SequenceUtil.isProteinSequence(AAseq)); + AAseq += "XU"; + assertFalse(SequenceUtil.isProteinSequence(AAseq)); + + } + + @Test() + public void testReadWriteFasta() { + + try { + FileInputStream fio = new FileInputStream( + AllTestSuit.TEST_DATA_PATH + "TO1381.fasta"); + assertNotNull(fio); + List fseqs = SequenceUtil.readFasta(fio); + assertNotNull(fseqs); + assertEquals(3, fseqs.size()); + assertEquals(3, fseqs.size()); + fio.close(); + FileOutputStream fou = new FileOutputStream( + AllTestSuit.TEST_DATA_PATH + "TO1381.fasta.written"); + SequenceUtil.writeFasta(fou, fseqs); + fou.close(); + FileOutputStream fou20 = new FileOutputStream( + AllTestSuit.TEST_DATA_PATH + "TO1381.fasta20.written"); + SequenceUtil.writeFasta(fou20, fseqs, 20); + fou20.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); } - - @Test() - public void testisProteinSequence() { - String dirtySeq = "atgAGTggt\taGGTgc\ncgcAC\rTgc gACtcgcGAt cgA "; - assertFalse(SequenceUtil.isProteinSequence(dirtySeq)); - String notaSeq = "atgc1tgatgcatgcatgatgctga"; - assertFalse(SequenceUtil.isProteinSequence(notaSeq)); - String AAseq = "ARLGRVRWTQQRHAEAAVLLQQASDAAPEHPGIALWLGHALEDAGQAEAAAAAYTRAHQL"; - assertTrue(SequenceUtil.isProteinSequence(AAseq)); - AAseq += "XU"; - assertFalse(SequenceUtil.isProteinSequence(AAseq)); - + } + + /** + * This test tests the loading of horizontally formatted Jronn output file + */ + @Test + public void loadJronnFile() { + + FileInputStream fio; + try { + fio = new FileInputStream(AllTestSuit.TEST_DATA_PATH + "jronn.out"); + List aseqs = SequenceUtil.readJRonn(fio); + assertNotNull(aseqs); + assertEquals(aseqs.size(), 3); + AnnotatedSequence aseq = aseqs.get(0); + assertNotNull(aseq); + assertNotNull(aseq.getAnnotation()); + //System.out.println(aseq); + assertEquals(aseq.getAnnotation().length, aseq.getSequence() + .length()); + fio.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (UnknownFileFormatException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); } - @Test() - public void testReadWriteFasta() { - - try { - FileInputStream fio = new FileInputStream( - AllTestSuit.TEST_DATA_PATH + "TO1381.fasta"); - assertNotNull(fio); - List fseqs = SequenceUtil.readFasta(fio); - assertNotNull(fseqs); - assertEquals(3, fseqs.size()); - assertEquals(3, fseqs.size()); - fio.close(); - FileOutputStream fou = new FileOutputStream( - AllTestSuit.TEST_DATA_PATH + "TO1381.fasta.written"); - SequenceUtil.writeFasta(fou, fseqs); - fou.close(); - FileOutputStream fou20 = new FileOutputStream( - AllTestSuit.TEST_DATA_PATH + "TO1381.fasta20.written"); - SequenceUtil.writeFasta(fou20, fseqs, 20); - fou20.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - fail(e.getLocalizedMessage()); - } catch (IOException e) { - e.printStackTrace(); - fail(e.getLocalizedMessage()); - } - } + } } diff --git a/testsrc/compbio/runner/disorder/JronnTester.java b/testsrc/compbio/runner/disorder/JronnTester.java new file mode 100644 index 0000000..ba0b171 --- /dev/null +++ b/testsrc/compbio/runner/disorder/JronnTester.java @@ -0,0 +1,332 @@ +/* Copyright (c) 2009 Peter Troshin + * + * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * + * This library is free software; you can redistribute it and/or modify it under the terms of the + * Apache License version 2 as published by the Apache Software Foundation + * + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache + * License for more details. + * + * A copy of the license is in apache_license.txt. It is also available here: + * @see: http://www.apache.org/licenses/LICENSE-2.0.txt + * + * Any republication or derived work distributed in source code form + * must include this copyright and license notice. + */ + +package compbio.runner.disorder; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.text.ParseException; +import java.util.List; + +import javax.xml.bind.ValidationException; + +import org.ggf.drmaa.DrmaaException; +import org.ggf.drmaa.JobInfo; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import compbio.data.sequence.AnnotatedSequence; +import compbio.engine.AsyncExecutor; +import compbio.engine.Configurator; +import compbio.engine.FilePuller; +import compbio.engine.SyncExecutor; +import compbio.engine.client.ConfExecutable; +import compbio.engine.client.ConfiguredExecutable; +import compbio.engine.client.Executable; +import compbio.engine.client.RunConfiguration; +import compbio.engine.cluster.drmaa.ClusterUtil; +import compbio.engine.cluster.drmaa.JobRunner; +import compbio.engine.cluster.drmaa.StatisticManager; +import compbio.engine.local.LocalRunner; +import compbio.metadata.AllTestSuit; +import compbio.metadata.ChunkHolder; +import compbio.metadata.JobExecutionException; +import compbio.metadata.JobStatus; +import compbio.metadata.JobSubmissionException; +import compbio.metadata.LimitsManager; +import compbio.metadata.PresetManager; +import compbio.metadata.ResultNotAvailableException; +import compbio.metadata.RunnerConfig; +import compbio.util.FileWatcher; +import compbio.util.SysPrefs; + +public class JronnTester { + + public static String test_outfile = "TO1381.jronn.out"; // "/homes/pvtroshin/TO1381.clustal.cluster.out + + private Jronn jronn; + + @BeforeMethod(alwaysRun = true) + void init() { + jronn = new Jronn(); + jronn.setInput(AllTestSuit.test_input).setOutput(test_outfile); + } + + @Test(groups = { AllTestSuit.test_group_cluster, + AllTestSuit.test_group_runner }) + public void testRunOnCluster() { + assertFalse(SysPrefs.isWindows, + "Cluster execution can only be in unix environment"); + try { + ConfiguredExecutable confJronn = Configurator + .configureExecutable(jronn, Executable.ExecProvider.Cluster); + JobRunner runner = JobRunner.getInstance(confJronn); + + assertNotNull(runner, "Runner is NULL"); + runner.executeJob(); + // assertNotNull("JobId is null", jobId1); + JobStatus status = runner.getJobStatus(); + assertTrue(status == JobStatus.PENDING + || status == JobStatus.RUNNING, + "Status of the process is wrong!"); + JobInfo info = runner.getJobInfo(); + assertNotNull(info, "JobInfo is null"); + StatisticManager sm = new StatisticManager(info); + assertNotNull(sm, "Statictic manager is null"); + try { + + String exits = sm.getExitStatus(); + assertNotNull("Exit status is null", exits); + // cut 4 trailing zeros from the number + int exitsInt = ClusterUtil.CLUSTER_STAT_IN_SEC.parse(exits) + .intValue(); + assertEquals(0, exitsInt); + System.out.println(sm.getAllStats()); + + } catch (ParseException e) { + e.printStackTrace(); + fail("Parse Exception: " + e.getMessage()); + } + assertFalse(runner.cleanup()); + assertTrue(sm.hasExited()); + assertFalse(sm.wasAborted()); + assertFalse(sm.hasDump()); + assertFalse(sm.hasSignaled()); + + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail("DrmaaException caught:" + e.getMessage()); + } catch (JobExecutionException e) { + e.printStackTrace(); + fail("DrmaaException caught:" + e.getMessage()); + } catch (DrmaaException e) { + e.printStackTrace(); + fail("DrmaaException caught:" + e.getMessage()); + } + } + + /** + * This tests fails from time to time depending on the cluster load or some + * other factors. Any client code has to adjust for this issue + */ + @Test(enabled = false, groups = { AllTestSuit.test_group_cluster, + AllTestSuit.test_group_runner }) + public void testRunOnClusterAsync() { + assertFalse(SysPrefs.isWindows, + "Cluster execution can only be in unix environment"); + try { + ConfiguredExecutable confJronn = Configurator + .configureExecutable(jronn, Executable.ExecProvider.Cluster); + AsyncExecutor aengine = Configurator.getAsyncEngine(confJronn); + String jobId = aengine.submitJob(confJronn); + assertNotNull(jobId, "Runner is NULL"); + // let drmaa to start + Thread.sleep(500); + JobStatus status = aengine.getJobStatus(jobId); + while (status != JobStatus.FINISHED + || status != JobStatus.UNDEFINED) { + System.out.println("Job Status: " + status); + Thread.sleep(1000); + status = aengine.getJobStatus(jobId); + } + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail("DrmaaException caught:" + e.getMessage()); + } catch (InterruptedException e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test(groups = { AllTestSuit.test_group_runner }) + public void testRunLocally() { + try { + ConfiguredExecutable confJronn = Configurator + .configureExecutable(jronn, Executable.ExecProvider.Local); + + // For local execution use relative + LocalRunner lr = new LocalRunner(confJronn); + lr.executeJob(); + ConfiguredExecutable al1 = lr.waitForResult(); + assertNotNull(al1.getResults()); + List al2 = confJronn.getResults(); + assertNotNull(al2); + assertEquals(al2.size(), 3); + assertEquals(al1.getResults(), al2); + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (ResultNotAvailableException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (JobExecutionException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } + } + + @Test(groups = { AllTestSuit.test_group_runner }) + public void readStatistics() { + try { + ConfiguredExecutable confJronn = Configurator + .configureExecutable(jronn, Executable.ExecProvider.Local); + // For local execution use relavive + + AsyncExecutor sexec = Configurator.getAsyncEngine(confJronn); + String jobId = sexec.submitJob(confJronn); + FilePuller fw = FilePuller.newFilePuller(confJronn + .getWorkDirectory() + + File.separator + Jronn.getStatFile(), + FileWatcher.MIN_CHUNK_SIZE_BYTES); + int count = 0; + long position = 0; + fw.waitForFile(4); + while (!(sexec.getJobStatus(jobId) == JobStatus.FINISHED + || sexec.getJobStatus(jobId) == JobStatus.FAILED || sexec + .getJobStatus(jobId) == JobStatus.UNDEFINED) + || fw.hasMoreData()) { + ChunkHolder ch = fw.pull(position); + String chunk = ch.getChunk(); + position = ch.getNextPosition(); + System.out.print(chunk); + count++; + } + assertTrue(count > 1); + ConfiguredExecutable al = sexec.getResults(jobId); + assertNotNull(al.getResults()); + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (ResultNotAvailableException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test(groups = { AllTestSuit.test_group_runner }) + public void testPersistance() { + try { + Jronn jronn = new Jronn(); + jronn.setError("errrr.txt").setInput(AllTestSuit.test_input) + .setOutput("outtt.txt"); + assertEquals(jronn.getInput(), AllTestSuit.test_input); + assertEquals(jronn.getError(), "errrr.txt"); + assertEquals(jronn.getOutput(), "outtt.txt"); + ConfiguredExecutable cJronn = Configurator + .configureExecutable(jronn, Executable.ExecProvider.Local); + + SyncExecutor sexec = Configurator.getSyncEngine(cJronn); + sexec.executeJob(); + ConfiguredExecutable al = sexec.waitForResult(); + assertNotNull(al.getResults()); + // Save run configuration + assertTrue(cJronn.saveRunConfiguration()); + + // See if loaded configuration is the same as saved + RunConfiguration loadedRun = RunConfiguration + .load(new FileInputStream(new File(cJronn + .getWorkDirectory(), RunConfiguration.rconfigFile))); + assertEquals( + ((ConfExecutable) cJronn).getRunConfiguration(), + loadedRun); + // Load run configuration as ConfExecutable + ConfiguredExecutable resurrectedCMuscle = (ConfiguredExecutable) cJronn + .loadRunConfiguration(new FileInputStream(new File(cJronn + .getWorkDirectory(), RunConfiguration.rconfigFile))); + assertNotNull(resurrectedCMuscle); + assertEquals(resurrectedCMuscle.getExecutable().getInput(), + AllTestSuit.test_input); + assertEquals(resurrectedCMuscle.getExecutable().getError(), + "errrr.txt"); + assertEquals(resurrectedCMuscle.getExecutable().getOutput(), + "outtt.txt"); + // See in details whether executables are the same + assertEquals(resurrectedCMuscle.getExecutable(), jronn); + + ConfiguredExecutable resJronn = Configurator + .configureExecutable(resurrectedCMuscle.getExecutable(), + Executable.ExecProvider.Local); + + sexec = Configurator.getSyncEngine(resJronn, + Executable.ExecProvider.Local); + sexec.executeJob(); + al = sexec.waitForResult(); + assertNotNull(al); + + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (JobExecutionException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage()); + } catch (ResultNotAvailableException e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + @Test(groups = { AllTestSuit.test_group_runner }) + public void testConfigurationLoading() { + try { + RunnerConfig jronnConfig = ConfExecutable + .getRunnerOptions(Jronn.class); + assertNotNull(jronnConfig); + assertTrue(jronnConfig.getArguments().size() > 0); + + PresetManager jronnPresets = ConfExecutable + .getRunnerPresets(Jronn.class); + assertNotNull(jronnPresets); + assertTrue(jronnPresets.getPresets().size() > 0); + jronnPresets.validate(jronnConfig); + + LimitsManager jronnLimits = ConfExecutable + .getRunnerLimits(Jronn.class); + assertNotNull(jronnLimits); + assertTrue(jronnLimits.getLimits().size() > 0); + jronnLimits.validate(jronnPresets); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (ValidationException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } + } + +} diff --git a/testsrc/testdata/jronn.out b/testsrc/testdata/jronn.out new file mode 100644 index 0000000..2752911 --- /dev/null +++ b/testsrc/testdata/jronn.out @@ -0,0 +1,13 @@ + +>Foobar_dundeefriends +M T A D G P R E L L Q L R A A V R H R P Q D F V A W L M L A D A E L G M G D T T A G E M A V Q R G L A L H P G H P E A V A R L G R V R W T Q Q R H A E A A V L L Q Q A S D A A P E H P G I A L W L G H A L E D A G Q A E A A A A A Y T R A H Q L L P E E P Y I T A Q L L N W R R R L C D W R A L D V L S A Q V R A A V A Q G V G A V E P F A F L S E D A S A A E Q L A C A R T R A Q A I A A S V R P L A P T R V R S K G P L R V G F V S N G F G A H P T G L L T V A L F E A L Q R R Q P D L Q M H L F A T S G D D G S T L R T R L A Q A S T L H D V T A L G H L A T A K H I R H H G I D L L F D L R G W G G G G R P E V F A L R P A P V Q V N W L A Y P G T S G A P W M D Y V L G D A F A L P P A L E P F Y S E H V L R L Q G A F Q P S D T S R V V A E P P S R T Q C G L P E Q G V V L C C F N N S Y K L N P Q S M A R M L A V L R E V P D S V L W L L S G P G E A D A R L R A F A H A Q G V D A Q R L V F M P K L P H P Q Y L A R Y R H A D L F L D T H P Y N A H T T A S D A L W T G C P V L T T P G E T F A A R V A G S L N H H L G L D E M N V A D D A A F V A K A V A L A S D P A A L T A L H A R V D V L R R E S G V F E M D G F A D D F G A L L Q A L A R R H G W L G I +0.39 0.42 0.46 0.45 0.44 0.42 0.41 0.4 0.4 0.39 0.37 0.37 0.37 0.37 0.38 0.38 0.38 0.38 0.38 0.37 0.36 0.35 0.35 0.34 0.35 0.36 0.37 0.37 0.38 0.41 0.43 0.44 0.45 0.45 0.46 0.46 0.46 0.46 0.47 0.49 0.51 0.51 0.52 0.52 0.52 0.52 0.52 0.51 0.5 0.48 0.49 0.48 0.49 0.48 0.48 0.49 0.5 0.49 0.49 0.47 0.46 0.45 0.45 0.45 0.44 0.43 0.44 0.44 0.46 0.47 0.49 0.49 0.5 0.52 0.52 0.51 0.5 0.49 0.49 0.5 0.52 0.53 0.53 0.55 0.54 0.54 0.53 0.51 0.48 0.46 0.45 0.43 0.41 0.4 0.4 0.4 0.42 0.43 0.43 0.43 0.44 0.44 0.44 0.46 0.46 0.46 0.46 0.47 0.47 0.47 0.47 0.48 0.48 0.48 0.48 0.46 0.45 0.44 0.42 0.39 0.37 0.35 0.32 0.31 0.3 0.28 0.26 0.26 0.25 0.24 0.23 0.23 0.23 0.23 0.24 0.24 0.25 0.26 0.27 0.29 0.3 0.32 0.34 0.34 0.36 0.37 0.38 0.4 0.41 0.42 0.42 0.42 0.42 0.42 0.42 0.43 0.43 0.44 0.44 0.45 0.45 0.45 0.46 0.46 0.47 0.48 0.48 0.5 0.51 0.53 0.54 0.56 0.57 0.57 0.58 0.58 0.58 0.57 0.58 0.58 0.59 0.59 0.59 0.59 0.59 0.59 0.59 0.58 0.59 0.59 0.6 0.6 0.59 0.59 0.59 0.6 0.6 0.6 0.59 0.58 0.58 0.59 0.59 0.58 0.57 0.55 0.53 0.51 0.49 0.45 0.43 0.42 0.4 0.38 0.36 0.34 0.33 0.34 0.34 0.33 0.32 0.3 0.29 0.29 0.28 0.29 0.29 0.29 0.3 0.32 0.34 0.36 0.38 0.41 0.42 0.43 0.43 0.44 0.45 0.46 0.48 0.49 0.52 0.55 0.58 0.58 0.59 0.58 0.58 0.58 0.57 0.56 0.55 0.56 0.55 0.54 0.53 0.52 0.51 0.5 0.49 0.47 0.45 0.44 0.45 0.45 0.46 0.46 0.45 0.45 0.44 0.44 0.44 0.44 0.45 0.45 0.45 0.44 0.44 0.44 0.44 0.43 0.42 0.4 0.39 0.38 0.37 0.38 0.38 0.38 0.37 0.36 0.37 0.36 0.36 0.36 0.37 0.37 0.37 0.36 0.36 0.37 0.38 0.39 0.39 0.4 0.4 0.4 0.39 0.38 0.38 0.36 0.35 0.34 0.34 0.33 0.33 0.33 0.33 0.32 0.31 0.31 0.3 0.3 0.3 0.3 0.3 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.37 0.37 0.38 0.4 0.42 0.42 0.43 0.44 0.44 0.44 0.44 0.45 0.46 0.47 0.49 0.5 0.52 0.52 0.54 0.56 0.58 0.6 0.62 0.63 0.63 0.63 0.64 0.65 0.65 0.65 0.64 0.62 0.59 0.57 0.54 0.51 0.49 0.46 0.44 0.41 0.39 0.37 0.35 0.32 0.31 0.29 0.27 0.26 0.28 0.29 0.29 0.3 0.3 0.3 0.3 0.3 0.31 0.3 0.3 0.3 0.3 0.29 0.29 0.29 0.3 0.3 0.3 0.28 0.27 0.27 0.28 0.28 0.28 0.29 0.3 0.31 0.33 0.34 0.35 0.36 0.37 0.39 0.39 0.39 0.39 0.38 0.38 0.39 0.38 0.38 0.38 0.39 0.4 0.39 0.38 0.38 0.38 0.37 0.36 0.35 0.33 0.34 0.34 0.35 0.35 0.35 0.35 0.34 0.34 0.34 0.32 0.3 0.31 0.31 0.31 0.31 0.32 0.33 0.32 0.33 0.32 0.32 0.32 0.34 0.34 0.35 0.36 0.37 0.38 0.4 0.42 0.43 0.44 0.44 0.45 0.44 0.44 0.45 0.46 0.47 0.47 0.47 0.47 0.46 0.48 0.48 0.49 0.48 0.48 0.45 0.43 0.41 0.39 0.38 0.38 0.38 0.39 0.39 0.38 0.38 0.37 0.36 0.36 0.34 0.33 0.33 0.34 0.34 0.36 0.38 0.39 0.4 0.41 0.42 0.42 0.41 0.41 0.42 0.43 0.44 0.44 0.45 0.45 0.44 0.43 0.42 0.41 0.4 0.39 0.37 0.36 0.36 0.35 0.35 0.34 0.33 0.32 0.32 0.32 0.32 0.33 0.33 0.33 0.32 0.31 0.3 0.29 0.29 0.29 0.3 0.3 0.29 0.28 0.27 0.26 0.26 0.25 0.25 0.23 0.21 0.21 0.2 0.21 0.22 0.22 0.23 0.24 0.23 0.2 0.18 0.16 0.15 0.15 +>Foobar +M G D T T A G E M A V Q R G L A L H Q Q R H A E A A V L L Q Q A S D A A P E H P G I A L W L H A L E D A G Q A E A A A A Y T R A H Q L L P E E P Y I T A Q L L N A V A Q G V G A V E P F A F L S E D A S A A E S V R P L A P T R V R S K G P L R V G F V S N G F G A H P T G L L T V A L F E A L Q R R Q P D L Q M H L F A T S G D D G S T L R T R L A Q A S T L H D V T A L G H L A T A K H I R H H G I D L L F D L R G W G G G G R P E V F A L R P A P V Q V N W L A Y P G T S G A P W M D Y V L G D A F A L P P A L E P F Y S E H V L R L Q G A F Q P S D T S R V V A E P P S R T Q C G L P E Q G V V L C C F N N S Y K L N P Q S M A R M L A V L R E V P D S V L W L L S G P G E A D A R L R A F A H A Q G V D A Q R L V F M P K L P H P Q Y L A R Y R H A D L F L D T H P Y N A H T T A S D A L W T G C P V L T T P G E T F A A R V A G S L N H H L G L D E M N V A D D A A F V A K A V A L A S D P A A L T A L H A R V D V L R R E S G V F E M D G F A D D F G A L L Q A L A R R H G W L G I +0.48 0.42 0.42 0.48 0.52 0.53 0.54 0.53 0.52 0.5 0.49 0.49 0.49 0.48 0.47 0.47 0.47 0.49 0.51 0.53 0.54 0.55 0.55 0.54 0.53 0.52 0.51 0.5 0.51 0.52 0.51 0.51 0.52 0.52 0.52 0.51 0.5 0.48 0.45 0.45 0.43 0.43 0.42 0.42 0.43 0.45 0.47 0.47 0.47 0.47 0.47 0.46 0.47 0.47 0.49 0.48 0.47 0.47 0.47 0.47 0.46 0.46 0.46 0.45 0.44 0.42 0.41 0.41 0.41 0.41 0.4 0.4 0.39 0.39 0.4 0.4 0.39 0.38 0.38 0.38 0.38 0.38 0.38 0.38 0.39 0.41 0.42 0.42 0.43 0.44 0.44 0.44 0.46 0.46 0.48 0.5 0.52 0.55 0.57 0.59 0.6 0.61 0.62 0.63 0.63 0.63 0.63 0.63 0.64 0.64 0.64 0.63 0.62 0.61 0.61 0.61 0.59 0.57 0.55 0.53 0.51 0.49 0.45 0.43 0.42 0.4 0.38 0.36 0.34 0.33 0.34 0.34 0.33 0.32 0.3 0.29 0.29 0.28 0.29 0.29 0.29 0.3 0.32 0.34 0.36 0.38 0.41 0.42 0.43 0.43 0.44 0.45 0.46 0.48 0.49 0.52 0.55 0.58 0.58 0.59 0.58 0.58 0.58 0.57 0.56 0.55 0.56 0.55 0.54 0.53 0.52 0.51 0.5 0.49 0.47 0.45 0.44 0.45 0.45 0.46 0.46 0.45 0.45 0.44 0.44 0.44 0.44 0.45 0.45 0.45 0.44 0.44 0.44 0.44 0.43 0.42 0.4 0.39 0.38 0.37 0.38 0.38 0.38 0.37 0.36 0.37 0.36 0.36 0.36 0.37 0.37 0.37 0.36 0.36 0.37 0.38 0.39 0.39 0.4 0.4 0.4 0.39 0.38 0.38 0.36 0.35 0.34 0.34 0.33 0.33 0.33 0.33 0.32 0.31 0.31 0.3 0.3 0.3 0.3 0.3 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.37 0.37 0.38 0.4 0.42 0.42 0.43 0.44 0.44 0.44 0.44 0.45 0.46 0.47 0.49 0.5 0.52 0.52 0.54 0.56 0.58 0.6 0.62 0.63 0.63 0.63 0.64 0.65 0.65 0.65 0.64 0.62 0.59 0.57 0.54 0.51 0.49 0.46 0.44 0.41 0.39 0.37 0.35 0.32 0.31 0.29 0.27 0.26 0.28 0.29 0.29 0.3 0.3 0.3 0.3 0.3 0.31 0.3 0.3 0.3 0.3 0.29 0.29 0.29 0.3 0.3 0.3 0.28 0.27 0.27 0.28 0.28 0.28 0.29 0.3 0.31 0.33 0.34 0.35 0.36 0.37 0.39 0.39 0.39 0.39 0.38 0.38 0.39 0.38 0.38 0.38 0.39 0.4 0.39 0.38 0.38 0.38 0.37 0.36 0.35 0.33 0.34 0.34 0.35 0.35 0.35 0.35 0.34 0.34 0.34 0.32 0.3 0.31 0.31 0.31 0.31 0.32 0.33 0.32 0.33 0.32 0.32 0.32 0.34 0.34 0.35 0.36 0.37 0.38 0.4 0.42 0.43 0.44 0.44 0.45 0.44 0.44 0.45 0.46 0.47 0.47 0.47 0.47 0.46 0.48 0.48 0.49 0.48 0.48 0.45 0.43 0.41 0.39 0.38 0.38 0.38 0.39 0.39 0.38 0.38 0.37 0.36 0.36 0.34 0.33 0.33 0.34 0.34 0.36 0.38 0.39 0.4 0.41 0.42 0.42 0.41 0.41 0.42 0.43 0.44 0.44 0.45 0.45 0.44 0.43 0.42 0.41 0.4 0.39 0.37 0.36 0.36 0.35 0.35 0.34 0.33 0.32 0.32 0.32 0.32 0.33 0.33 0.33 0.32 0.31 0.3 0.29 0.29 0.29 0.3 0.3 0.29 0.28 0.27 0.26 0.26 0.25 0.25 0.23 0.21 0.21 0.2 0.21 0.22 0.22 0.23 0.24 0.23 0.2 0.18 0.16 0.15 0.15 + + +>dundeefriends +M T A D G P R E L L Q L R A A V R H R P Q D V A W L M L A D A E L G M G D T T A G E M A V Q R G L A L H P G H P E A V A R L G R V R W T Q Q R H A E A A V L L Q Q A S D A A P E H P G I A L W L G H A L E D H Q L L P E E P Y I T A Q L D V L S A Q V R A A V A Q G V G A V E P F A F L S E D A S A A E Q L A C A R T R A Q A I A A S V R P L A P T R V R S K G P L R V G F V S N G F G A H P T G L L T V A L F E A L Q R R Q P D L Q M H L F A T S G D D G S T L R T R L A Q A S T L H D V T A L G H L A T A K H I R H H G I D L L F D L R G W G G G G R P E V F A L R P A P V Q V N W L A Y P G T S G A P W M D Y V L G D A F A L P P A L E P F Y S E H V L R L Q G A F Q P S D T S R V V A E P P S R T Q C G L P E Q G V V L C C F N N S Y K L N P Q S M A R M L A V L R E V P D S V L W L L S G P G E A D A R L R A F A H A Q G V D A Q R L V F M P K L P H P Q Y L A R Y R H A D L F L D T H P Y N A H T T A S D A L W T G C P V L T T P G E T F A A R V A G S L N H H L G L D E M N V A D D A A F V A K A V A L A S D P A A L T A L H A R V D V L R R E S I +0.39 0.42 0.46 0.45 0.44 0.42 0.4 0.37 0.37 0.36 0.35 0.34 0.33 0.33 0.32 0.32 0.32 0.32 0.31 0.3 0.29 0.28 0.28 0.28 0.29 0.3 0.32 0.32 0.35 0.38 0.39 0.41 0.42 0.44 0.45 0.44 0.45 0.47 0.49 0.5 0.51 0.52 0.52 0.52 0.52 0.52 0.51 0.5 0.48 0.49 0.48 0.49 0.48 0.48 0.49 0.5 0.49 0.49 0.47 0.46 0.45 0.45 0.45 0.44 0.43 0.44 0.44 0.46 0.47 0.49 0.49 0.5 0.52 0.52 0.51 0.5 0.49 0.49 0.5 0.52 0.53 0.53 0.55 0.54 0.54 0.53 0.52 0.49 0.46 0.44 0.43 0.41 0.41 0.4 0.4 0.41 0.42 0.41 0.4 0.39 0.38 0.37 0.37 0.37 0.35 0.34 0.35 0.35 0.35 0.36 0.36 0.37 0.38 0.38 0.39 0.38 0.39 0.38 0.39 0.4 0.4 0.41 0.41 0.42 0.42 0.42 0.43 0.44 0.44 0.45 0.45 0.45 0.46 0.45 0.46 0.46 0.47 0.48 0.48 0.5 0.51 0.53 0.54 0.56 0.57 0.57 0.58 0.58 0.58 0.57 0.58 0.58 0.59 0.59 0.59 0.59 0.59 0.59 0.59 0.58 0.59 0.59 0.6 0.6 0.59 0.59 0.59 0.6 0.6 0.6 0.59 0.58 0.58 0.59 0.59 0.58 0.57 0.55 0.53 0.51 0.49 0.45 0.43 0.42 0.4 0.38 0.36 0.34 0.33 0.34 0.34 0.33 0.32 0.3 0.29 0.29 0.28 0.29 0.29 0.29 0.3 0.32 0.34 0.36 0.38 0.41 0.42 0.43 0.43 0.44 0.45 0.46 0.48 0.49 0.52 0.55 0.58 0.58 0.59 0.58 0.58 0.58 0.57 0.56 0.55 0.56 0.55 0.54 0.53 0.52 0.51 0.5 0.49 0.47 0.45 0.44 0.45 0.45 0.46 0.46 0.45 0.45 0.44 0.44 0.44 0.44 0.45 0.45 0.45 0.44 0.44 0.44 0.44 0.43 0.42 0.4 0.39 0.38 0.37 0.38 0.38 0.38 0.37 0.36 0.37 0.36 0.36 0.36 0.37 0.37 0.37 0.36 0.36 0.37 0.38 0.39 0.39 0.4 0.4 0.4 0.39 0.38 0.38 0.36 0.35 0.34 0.34 0.33 0.33 0.33 0.33 0.32 0.31 0.31 0.3 0.3 0.3 0.3 0.3 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.37 0.37 0.38 0.4 0.42 0.42 0.43 0.44 0.44 0.44 0.44 0.45 0.46 0.47 0.49 0.5 0.52 0.52 0.54 0.56 0.58 0.6 0.62 0.63 0.63 0.63 0.64 0.65 0.65 0.65 0.64 0.62 0.59 0.57 0.54 0.51 0.49 0.46 0.44 0.41 0.39 0.37 0.35 0.32 0.31 0.29 0.27 0.26 0.28 0.29 0.29 0.3 0.3 0.3 0.3 0.3 0.31 0.3 0.3 0.3 0.3 0.29 0.29 0.29 0.3 0.3 0.3 0.28 0.27 0.27 0.28 0.28 0.28 0.29 0.3 0.31 0.33 0.34 0.35 0.36 0.37 0.39 0.39 0.39 0.39 0.38 0.38 0.39 0.38 0.38 0.38 0.39 0.4 0.39 0.38 0.38 0.38 0.37 0.36 0.35 0.33 0.34 0.34 0.35 0.35 0.35 0.35 0.34 0.34 0.34 0.32 0.3 0.31 0.31 0.31 0.31 0.32 0.33 0.32 0.33 0.32 0.32 0.32 0.34 0.34 0.35 0.36 0.37 0.38 0.4 0.42 0.43 0.44 0.44 0.45 0.44 0.44 0.45 0.46 0.47 0.47 0.47 0.47 0.46 0.48 0.48 0.49 0.48 0.48 0.45 0.43 0.41 0.39 0.38 0.38 0.38 0.39 0.39 0.38 0.38 0.37 0.36 0.36 0.34 0.33 0.33 0.34 0.34 0.36 0.38 0.39 0.4 0.41 0.42 0.42 0.41 0.41 0.42 0.43 0.44 0.44 0.45 0.45 0.44 0.43 0.42 0.41 0.39 0.39 0.38 0.38 0.38 0.37 0.35 0.35 0.34 0.33 0.31 0.3 0.3 0.29 0.28 0.28 0.28 0.26 0.25 + -- 1.7.10.2