From: jprocter Date: Mon, 4 Jun 2012 16:09:07 +0000 (+0100) Subject: Merge branch 'JWS-27-jronn' into develop X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=80667e45ee288ebd40326fd15150a96c467a5de4;hp=63193df50e954f74c63611a1176034491b4615a1;p=jabaws.git Merge branch 'JWS-27-jronn' into develop --- diff --git a/datamodel/compbio/data/sequence/FastaReader.java b/datamodel/compbio/data/sequence/FastaReader.java index 1641d34..6c3e943 100644 --- a/datamodel/compbio/data/sequence/FastaReader.java +++ b/datamodel/compbio/data/sequence/FastaReader.java @@ -22,6 +22,9 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Iterator; import java.util.Scanner; +import java.util.regex.MatchResult; + +import javax.vecmath.MismatchedSizeException; import compbio.util.Util; @@ -67,7 +70,10 @@ import compbio.util.Util; public class FastaReader implements Iterator { private final Scanner input; - + /** + * Delimiter for the scanner + */ + private final String DELIM=">"; /** * Header data can contain non-ASCII symbols and read in UTF8 * @@ -82,7 +88,7 @@ public class FastaReader implements Iterator { */ public FastaReader(final String inputFile) throws FileNotFoundException { input = new Scanner(new File(inputFile), "UTF8"); - input.useDelimiter("\\s*>"); + input.useDelimiter(DELIM); Runtime.getRuntime().addShutdownHook(new Thread() { @Override @@ -104,7 +110,7 @@ public class FastaReader implements Iterator { public FastaReader(final InputStream inputStream) throws FileNotFoundException { input = new Scanner(inputStream); - input.useDelimiter("\\s*>"); + input.useDelimiter(DELIM); } /** * {@inheritDoc} @@ -124,10 +130,17 @@ public class FastaReader implements Iterator { * if the header or the sequence is missing * @throws IllegalStateException * if the close method was called on this instance + * @throws MismatchException - if there were no more FastaSequence's. */ @Override public FastaSequence next() { - return FastaReader.toFastaSequence(input.next()); + String fastaHeader=input.next(); + while (fastaHeader.indexOf("\n")<0 && input.hasNext()) + { + fastaHeader = fastaHeader.concat(">"); + fastaHeader = fastaHeader.concat(input.next()); + } + return FastaReader.toFastaSequence(fastaHeader); } /** diff --git a/datamodel/compbio/data/sequence/Score.java b/datamodel/compbio/data/sequence/Score.java index ec4cadc..fed0ef0 100644 --- a/datamodel/compbio/data/sequence/Score.java +++ b/datamodel/compbio/data/sequence/Score.java @@ -187,12 +187,13 @@ public class Score implements Comparable { * *
 	 * {@code
-	 * #MethodName 
+	 * #MethodName [comma separated list of ranges] 
 	 * 	  
 	 * For example:
 	 * 	 
 	 * #KABAT 0.2 0.3 0.2 0 0.645 0.333 1 1 0 0
 	 * #SMERFS 0.645 0.333 1 1 0 0 0.2 0.3 0.2 0
+	 * #COILS 22-33, 44-56 0.121 3.212
 	 * }
 	 * 
* @@ -212,17 +213,17 @@ public class Score implements Comparable { throw new NullPointerException("Writer must be provided!"); } for (Score score : scores) { - writer.write("#" + score.method + " "); + writer.write("#" + score.method); int count = score.ranges.size(); for (Range range : score.ranges) { count--; - writer.write(range.toString()); + writer.write(" "+range.toString()); if (count != 0) { - writer.write(", "); + writer.write(","); } } for (Float scoreVal : score.scores) { - writer.write(NUMBER_FORMAT.format(scoreVal) + " "); + writer.write(" "+NUMBER_FORMAT.format(scoreVal)); } writer.write("\n"); writer.flush(); diff --git a/datamodel/compbio/data/sequence/SequenceUtil.java b/datamodel/compbio/data/sequence/SequenceUtil.java index 6e20988..14dedf4 100644 --- a/datamodel/compbio/data/sequence/SequenceUtil.java +++ b/datamodel/compbio/data/sequence/SequenceUtil.java @@ -589,8 +589,8 @@ public final class SequenceUtil { */ HashSet scores = new HashSet(); scores.add(new Score(DisemblResult.COILS, coils, coilsR)); - scores.add(new Score(DisemblResult.HOTLOOPS, hotloops, rem465R)); - scores.add(new Score(DisemblResult.REM465, rem, loopsR)); + scores.add(new Score(DisemblResult.REM465, rem, rem465R)); + scores.add(new Score(DisemblResult.HOTLOOPS, hotloops, loopsR)); results.put(sequenceName, scores); scansingle.close(); diff --git a/testsrc/compbio/data/sequence/FastaReaderTester.java b/testsrc/compbio/data/sequence/FastaReaderTester.java index d57bbe5..3a3b747 100644 --- a/testsrc/compbio/data/sequence/FastaReaderTester.java +++ b/testsrc/compbio/data/sequence/FastaReaderTester.java @@ -34,6 +34,9 @@ public class FastaReaderTester { static FastaSequence s3 = new FastaSequence(" 12 d t y wi k jbke ", " KLSHHDCD" + " N" + " H" + " HSKCTEPHCGNSHQML\n\rHRDP" + " CCDQCQSWEAENWCASMRKAILF"); + static FastaSequence s4 = new FastaSequence(" 12 d t>y wi->foo k jbke ", + " KLSHHDCD" + " N" + " H" + " HSKCTEPHCGNSHQML\n\rHRDP" + + " CCDQCQSWEAENWCASMRKAILF"); @Test() public void test() { @@ -68,6 +71,7 @@ public class FastaReaderTester { Assert.assertEquals(FastaReaderTester.s1, list.get(1)); Assert.assertEquals(FastaReaderTester.s2, list.get(2)); Assert.assertEquals(FastaReaderTester.s3, list.get(3)); + Assert.assertEquals(FastaReaderTester.s4, list.get(4)); } } diff --git a/testsrc/compbio/data/sequence/SequenceUtilTester.java b/testsrc/compbio/data/sequence/SequenceUtilTester.java index 2b2ca1a..e646c1e 100644 --- a/testsrc/compbio/data/sequence/SequenceUtilTester.java +++ b/testsrc/compbio/data/sequence/SequenceUtilTester.java @@ -35,6 +35,7 @@ import java.util.Set; import org.testng.annotations.Test; import compbio.metadata.AllTestSuit; +import compbio.runner.disorder.Disembl; public class SequenceUtilTester { @@ -188,6 +189,35 @@ public class SequenceUtilTester { @Test public void testReadDisemblResults() { + + Map>> _ranges=new HashMap>>(); + Map> ranges=new HashMap>(); + Map> _values=new HashMap>(); + Map values = new HashMap(); + Set rset; + rset = new HashSet(); + for (String[] se:new String[][] { { "34","41"},{"50","58"},{"83","91"},{"118","127"},{" 160","169"},{" 191","220"},{" 243","252"},{" 287","343"},{" 350","391"},{" 429","485"},{" 497","506"},{"539","547"}}) + { + rset.add(new Range(se)); + } + ranges.put(DisemblResult.COILS.toString(), rset); + values.put(DisemblResult.COILS.toString(), Float.valueOf(0.86010f)); + rset = new HashSet(); + for (String[] se:new String[][] { { "355","368"}}) + { + rset.add(new Range(se)); + } + ranges.put(DisemblResult.REM465.toString(), rset); + values.put(DisemblResult.REM465.toString(), Float.valueOf(0.88512f)); + rset = new HashSet(); + for (String[] se:new String[][] { { "190","204"}}) + { + rset.add(new Range(se)); + } + ranges.put(DisemblResult.HOTLOOPS.toString(), rset); + values.put(DisemblResult.HOTLOOPS.toString(), Float.valueOf(0.37094f)); + _ranges.put("Foobar_dundeefriends", ranges); + _values.put("Foobar_dundeefriends", values); FileInputStream fio; try { fio = new FileInputStream(AllTestSuit.TEST_DATA_PATH @@ -202,6 +232,13 @@ public class SequenceUtilTester { .contains(fs)); Set scores = aseqs.get(fs); assertEquals(scores.size(), 3); + for (Score sc:scores) { + if (_ranges.containsKey(fs)) + { + assertEquals("Checking range for Method "+sc.getMethod(),_ranges.get(fs).get(sc.getMethod()), sc.getRanges()); + assertEquals("Checking first value for Method "+sc.getMethod(), _values.get(fs).get(sc.getMethod()), sc.getScores().get(0)); + } + } } fio.close(); } catch (FileNotFoundException e) { @@ -215,7 +252,6 @@ public class SequenceUtilTester { fail(e.getLocalizedMessage()); } } - /** * This test tests the loading of horizontally formatted Jronn output file * @@ -302,19 +338,19 @@ public class SequenceUtilTester { assertEquals(0, score.getRanges().size()); assertEquals(568, score.getScores().size()); assertEquals("Long", score.getMethod()); - + score = scores.get("Foobar"); assertNotNull(score); assertEquals(0, score.getRanges().size()); assertEquals(481, score.getScores().size()); assertEquals("Long", score.getMethod()); - + score = scores.get("dundeefriends"); assertNotNull(score); assertEquals(0, score.getRanges().size()); assertEquals(513, score.getScores().size()); assertEquals("Long", score.getMethod()); - + } catch (IOException e) { e.printStackTrace(); fail(e.getLocalizedMessage()); diff --git a/testsrc/compbio/ws/server/RegistryWSTester.java b/testsrc/compbio/ws/server/RegistryWSTester.java index 51bfa71..34f7b6c 100644 --- a/testsrc/compbio/ws/server/RegistryWSTester.java +++ b/testsrc/compbio/ws/server/RegistryWSTester.java @@ -4,15 +4,27 @@ 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.net.ConnectException; import java.util.Arrays; +import java.util.List; import java.util.Set; import javax.xml.ws.WebServiceException; import org.testng.annotations.Test; +import compbio.data.msa.MsaWS; +import compbio.data.sequence.FastaSequence; +import compbio.data.sequence.SequenceUtil; import compbio.metadata.AllTestSuit; +import compbio.metadata.ChunkHolder; +import compbio.metadata.JobStatus; +import compbio.metadata.JobSubmissionException; +import compbio.metadata.ResultNotAvailableException; import compbio.ws.client.Jws2Client; import compbio.ws.client.Services; import compbio.ws.client.WSTesterTester; @@ -119,4 +131,92 @@ public class RegistryWSTester { fail(e.getLocalizedMessage()); } } + + @Test(groups = {AllTestSuit.test_group_webservices}) + public void testProgressReporting() { + MsaWS service = null; + try { + service = (MsaWS) Jws2Client.connect( + "http://www.compbio.dundee.ac.uk/jabaws", + // "http://webserv1.cluster.lifesci.dundee.ac.uk:8089/jabaws", + Services.ProbconsWS); + File input = new File(AllTestSuit.TEST_DATA_PATH_ABSOLUTE + + "200x500Protein.fasta"); + assertTrue(input.exists()); + List fs = SequenceUtil + .readFasta(new FileInputStream(input)); + String jobId = service.align(fs); + Thread.sleep(5000); + ChunkHolder pos = null; + while (service.getJobStatus(jobId) == JobStatus.RUNNING) { + if (pos == null) { + pos = service.pullExecStatistics(jobId, 0); + } else { + pos = service.pullExecStatistics(jobId, + pos.getNextPosition()); + } + Thread.sleep(10); + System.out.print(pos.getChunk()); + } + System.out.println(); + System.out.println(service.getResult(jobId)); + } catch (ConnectException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (WebServiceException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (ResultNotAvailableException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (JobSubmissionException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (InterruptedException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } + } + + @Test(groups = {AllTestSuit.test_group_webservices}) + public void testPullRunningJob() { + MsaWS service = null; + try { + service = (MsaWS) Jws2Client.connect( + "http://webserv1.cluster.lifesci.dundee.ac.uk:8089/jabaws", + Services.ProbconsWS); + String jobId = "@Probcons#158079030012566"; + ChunkHolder pos = null; + while (service.getJobStatus(jobId) == JobStatus.RUNNING) { + if (pos == null) { + pos = service.pullExecStatistics(jobId, 0); + } else { + pos = service.pullExecStatistics(jobId, + pos.getNextPosition()); + } + Thread.sleep(10); + System.out.print(pos.getChunk()); + } + System.out.println(); + System.out.println(service.getResult(jobId)); + } catch (ConnectException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (WebServiceException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (ResultNotAvailableException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } catch (InterruptedException e) { + e.printStackTrace(); + fail(e.getLocalizedMessage()); + } + } } diff --git a/testsrc/testdata/complicated.fasta b/testsrc/testdata/complicated.fasta index 3c891d6..e0a71d5 100644 --- a/testsrc/testdata/complicated.fasta +++ b/testsrc/testdata/complicated.fasta @@ -20,4 +20,11 @@ EFITEA WWGRWGAITFFHAH ENKNEIQECSDQNLKE SRTTCEIID TCHLFTRHLDGW N H HSKCTEPHCGNSHQMLHRDP - CCDQCQSWEAENWCASMRKAILF \ No newline at end of file + CCDQCQSWEAENWCASMRKAILF + > 12 d t>y wi->foo k jbke + KLSHHDCD + N + H + HSKCTEPHCGNSHQMLHRDP + CCDQCQSWEAENWCASMRKAILF + \ No newline at end of file