From: Jim Procter Date: Wed, 5 Oct 2016 15:03:09 +0000 (+0100) Subject: Revert "JAL-2245 Castor mapping and code changes for change to ENA XML format" X-Git-Tag: Release_2_10_0~10^2 X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=02d6aa2077a261d41db77a0158f2b4b779a36398 Revert "JAL-2245 Castor mapping and code changes for change to ENA XML format" This reverts commit 30b2b47cbdfa35b127b0fb09e911815cddd9ed7b. --- diff --git a/resources/embl_mapping.xml b/resources/embl_mapping.xml index 7e494b4..01b921a 100644 --- a/resources/embl_mapping.xml +++ b/resources/embl_mapping.xml @@ -26,7 +26,6 @@ see ftp://ftp.sra.ebi.ac.uk/meta/xsd/sra_1_5/ENA.embl.xsd see http://www.ebi.ac.uk/ena/submit/data-formats --> - - diff --git a/src/jalview/datamodel/xdb/embl/EmblFile.java b/src/jalview/datamodel/xdb/embl/EmblFile.java index 534b38c..69870b6 100644 --- a/src/jalview/datamodel/xdb/embl/EmblFile.java +++ b/src/jalview/datamodel/xdb/embl/EmblFile.java @@ -20,7 +20,6 @@ */ package jalview.datamodel.xdb.embl; -import jalview.bin.Cache; import jalview.datamodel.DBRefEntry; import jalview.ws.dbsources.Uniprot; @@ -28,7 +27,6 @@ import java.io.File; import java.io.FileReader; import java.io.PrintWriter; import java.io.Reader; -import java.net.URL; import java.util.Vector; import org.exolab.castor.mapping.Mapping; @@ -83,12 +81,12 @@ public class EmblFile } /** - * Parse an Embl XML file into an EmblEntry object + * Parse an EmblXML file into an EmblFile object * * @param file * @return parsed EmblXML or null if exceptions were raised */ - public static EmblEntry getEmblEntry(File file) + public static EmblFile getEmblFile(File file) { if (file == null) { @@ -96,7 +94,7 @@ public class EmblFile } try { - return EmblFile.getEntry(new FileReader(file)); + return EmblFile.getEmblFile(new FileReader(file)); } catch (Exception e) { System.err.println("Exception whilst reading EMBLfile from " + file); @@ -105,32 +103,26 @@ public class EmblFile return null; } - /** - * Reads the XML response from file and unmarshals into a Java object - * - * @param fileReader - * @return - */ - public static EmblEntry getEntry(Reader fileReader) + public static EmblFile getEmblFile(Reader file) { - EmblEntry record = new EmblEntry(); + EmblFile record = new EmblFile(); try { // 1. Load the mapping information from the file Mapping map = new Mapping(record.getClass().getClassLoader()); - URL url = record.getClass().getResource("/embl_mapping.xml"); + java.net.URL url = record.getClass().getResource("/embl_mapping.xml"); map.loadMapping(url); // 2. Unmarshal the data Unmarshaller unmar = new Unmarshaller(record); try { - if (Cache.getDefault(Cache.CASTORLOGLEVEL, + // uncomment to DEBUG EMBLFile reading + if (jalview.bin.Cache.getDefault(jalview.bin.Cache.CASTORLOGLEVEL, "debug").equalsIgnoreCase("DEBUG")) { - unmar.setDebug(Cache.log.isDebugEnabled()); - // unmar.setDebug(true);// uncomment to debug unmarshalling + unmar.setDebug(jalview.bin.Cache.log.isDebugEnabled()); } } catch (Exception e) { @@ -139,7 +131,7 @@ public class EmblFile unmar.setIgnoreExtraAttributes(true); unmar.setMapping(map); unmar.setLogWriter(new PrintWriter(System.out)); - record = (EmblEntry) unmar.unmarshal(fileReader); + record = (EmblFile) unmar.unmarshal(file); canonicaliseDbRefs(record); } catch (Exception e) @@ -155,17 +147,13 @@ public class EmblFile * Change blank version to "0" in any DBRefEntry, to ensure consistent * comparison with other DBRefEntry in Jalview * - * @param entry + * @param record * @see Uniprot#getDbVersion */ - static void canonicaliseDbRefs(EmblEntry entry) + static void canonicaliseDbRefs(EmblFile record) { - if (entry == null) + for (EmblEntry entry : record.getEntries()) { - return; - } -// for (EmblEntry entry : record.getEntries()) -// { if (entry.getDbRefs() != null) { for (DBRefEntry dbref : entry.getDbRefs()) @@ -177,7 +165,7 @@ public class EmblFile } } - if (entry.getFeatures() != null) + if (entry.getFeatures() != null) { for (EmblFeature feature : entry.getFeatures()) { @@ -193,6 +181,6 @@ public class EmblFile } } } - // } + } } } diff --git a/src/jalview/ws/dbsources/EmblXmlSource.java b/src/jalview/ws/dbsources/EmblXmlSource.java index 73e67aa..2049766 100644 --- a/src/jalview/ws/dbsources/EmblXmlSource.java +++ b/src/jalview/ws/dbsources/EmblXmlSource.java @@ -72,7 +72,7 @@ public abstract class EmblXmlSource extends EbiFileRetrievedProxy "exception.ebiembl_retrieval_failed_on", new String[] { emprefx.toLowerCase(), query.trim() }), e); } - return getEmblSequenceRecords(emprefx, reply); + return getEmblSequenceRecords(emprefx, query, reply); } /** @@ -81,38 +81,46 @@ public abstract class EmblXmlSource extends EbiFileRetrievedProxy * @param emprefx * either EMBL or EMBLCDS strings are allowed - anything else will * not retrieve emblxml + * @param query * @param file * the EMBL XML file containing the results of a query * @return * @throws Exception */ - public AlignmentI getEmblSequenceRecords(String emprefx, File reply) - throws Exception + public AlignmentI getEmblSequenceRecords(String emprefx, String query, + File reply) throws Exception { - EmblEntry entry = null; + EmblFile efile = null; + List seqs = new ArrayList(); if (reply != null && reply.exists()) { file = reply.getAbsolutePath(); if (reply.length() > EMBL_NOT_FOUND_REPLY.length()) { - entry = EmblFile.getEmblEntry(reply); + efile = EmblFile.getEmblFile(reply); } } - // TODO don't need peptides any more? List peptides = new ArrayList(); - AlignmentI al = null; - if (entry != null) + if (efile != null) { - SequenceI seq = entry.getSequence(emprefx, peptides); - if (seq != null) + for (EmblEntry entry : efile.getEntries()) { - seq.deriveSequence(); - // place DBReferences on dataset and refer - al = new Alignment(new SequenceI[] { seq }); + SequenceI seq = entry.getSequence(emprefx, peptides); + if (seq != null) + { + seqs.add(seq.deriveSequence()); + // place DBReferences on dataset and refer + } } } + + AlignmentI al = null; + if (!seqs.isEmpty()) + { + al = new Alignment(seqs.toArray(new SequenceI[seqs.size()])); + } stopQuery(); return al; } diff --git a/src/jalview/ws/ebi/EBIFetchClient.java b/src/jalview/ws/ebi/EBIFetchClient.java index 5531512..1dff32f 100644 --- a/src/jalview/ws/ebi/EBIFetchClient.java +++ b/src/jalview/ws/ebi/EBIFetchClient.java @@ -208,7 +208,6 @@ public class EBIFetchClient if (outFile != null) { FileOutputStream fio = new FileOutputStream(outFile); - // fio.write("\n".getBytes()); byte[] bb = new byte[32 * 1024]; int l; while ((l = is.read(bb)) > 0) diff --git a/test/jalview/datamodel/xdb/embl/EmblEntryTest.java b/test/jalview/datamodel/xdb/embl/EmblEntryTest.java index f332fa6..abe5099 100644 --- a/test/jalview/datamodel/xdb/embl/EmblEntryTest.java +++ b/test/jalview/datamodel/xdb/embl/EmblEntryTest.java @@ -1,7 +1,6 @@ package jalview.datamodel.xdb.embl; import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; @@ -41,21 +40,20 @@ public class EmblEntryTest // not the whole sequence but enough for this test... List peptides = new ArrayList(); SequenceIdMatcher matcher = new SequenceIdMatcher(peptides); - EmblEntry ef = EmblTestHelper.getEmblFile(); - assertNotNull(ef); - // assertEquals(1, ef.getEntries().size()); - // EmblEntry testee = ef.getEntries().get(0); + EmblFile ef = EmblTestHelper.getEmblFile(); + assertEquals(1, ef.getEntries().size()); + EmblEntry testee = ef.getEntries().get(0); String sourceDb = "EMBL"; - SequenceI dna = ef.makeSequence(sourceDb); + SequenceI dna = testee.makeSequence(sourceDb); /* * parse three CDS features, with two/one/no Uniprot cross-refs */ - for (EmblFeature feature : ef.getFeatures()) + for (EmblFeature feature : ef.getEntries().get(0).getFeatures()) { if ("CDS".equals(feature.getName())) { - ef.parseCodingFeature(feature, sourceDb, dna, peptides, matcher); + testee.parseCodingFeature(feature, sourceDb, dna, peptides, matcher); } } diff --git a/test/jalview/datamodel/xdb/embl/EmblFileTest.java b/test/jalview/datamodel/xdb/embl/EmblFileTest.java index 6afdced..906436f 100644 --- a/test/jalview/datamodel/xdb/embl/EmblFileTest.java +++ b/test/jalview/datamodel/xdb/embl/EmblFileTest.java @@ -21,11 +21,12 @@ package jalview.datamodel.xdb.embl; import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; import jalview.datamodel.DBRefEntry; +import java.util.Vector; + import org.testng.annotations.Test; public class EmblFileTest @@ -34,10 +35,9 @@ public class EmblFileTest @Test(groups = { "Functional" }) public void testGetEmblFile() { - EmblEntry entry = EmblTestHelper.getEmblFile(); - assertNotNull(entry); - // assertEquals(1, entries.size()); - // EmblEntry entry = entries.get(0); + Vector entries = EmblTestHelper.getEmblFile().getEntries(); + assertEquals(1, entries.size()); + EmblEntry entry = entries.get(0); assertEquals("X07547", entry.getAccession()); assertEquals("C. trachomatis plasmid", entry.getDescription()); diff --git a/test/jalview/datamodel/xdb/embl/EmblTestHelper.java b/test/jalview/datamodel/xdb/embl/EmblTestHelper.java index a79bdb8..6349164 100644 --- a/test/jalview/datamodel/xdb/embl/EmblTestHelper.java +++ b/test/jalview/datamodel/xdb/embl/EmblTestHelper.java @@ -7,7 +7,7 @@ public class EmblTestHelper // adapted from http://www.ebi.ac.uk/ena/data/view/X07547&display=xml // dna and translations truncated for convenience private static final String TESTDATA = "" - // + "" + + "" + "GGTATGTCCTCTAGTACAAAC\n" + "ACCCCCAATATTGTGATATAATTAAAAACATAGCAT" - + ""; + + ""; - static EmblEntry getEmblFile() + static EmblFile getEmblFile() { - return EmblFile.getEntry(new StringReader(TESTDATA)); + return EmblFile.getEmblFile(new StringReader(TESTDATA)); } }