From: tcofoegbu Date: Wed, 5 Oct 2016 15:13:33 +0000 (+0100) Subject: QQMerge branch 'develop' of https://source.jalview.org/git/jalview into develop X-Git-Tag: Release_2_10_0~10 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=a9a8a71c1682f639552e9954e565042847513195;hp=5db30ec116d5cc2668b6fc8db01de2ef53435d41;p=jalview.git QQMerge branch 'develop' of https://source.jalview.org/git/jalview into develop --- diff --git a/help/html/features/chimera.html b/help/html/features/chimera.html index 0569513..98d8966 100644 --- a/help/html/features/chimera.html +++ b/help/html/features/chimera.html @@ -28,43 +28,23 @@

Since Jalview 2.8.2, Chimera - (http://www.cgl.ucsf.edu/chimera/) has been integrated into Jalview - for interactively viewing structures opened by entries in the "Structure" - submenu in the sequence id - pop-up menu (if you can't see this, then you need to associate a PDB structure with the sequence). Chimera is - available from the Jalview desktop, provided Chimera has been - separately installed. + (http://www.cgl.ucsf.edu/chimera/) can be used for viewing + structures opened via the "View + Structure Data.." dialog.

You can set a default choice of Jmol or Chimera structure viewer in Preferences. You can also optionally specify the path to the Chimera program here (if it - differs from the standard paths searched by Jalview). + differs from the standard paths searched by Jalview).
+ Please make sure your version of Chimera is up to + date. Jalview requires at least Chimera version 1.11.1 +

If you save your Jalview session as a project file, the state of any open Chimera windows will also be saved, and can be reopened by loading the project file on any machine with Chimera installed. Since Jalview 2.9. -

Superposing structures based on their aligned sequences
If several structures are diff --git a/help/html/releases.html b/help/html/releases.html index 3a8c9f9..6eb42bc 100755 --- a/help/html/releases.html +++ b/help/html/releases.html @@ -90,11 +90,15 @@ Alignment sort by feature scores and feature counts preserves alignment ordering (and debugged for complex feature sets).

  • - + Chimera 1.11.1 minimum requirement for viewing structures with Jalview 2.10
  • - + Retrieve genome, transcript CCDS and gene ids via the Ensembl and Ensembl Genomes REST API +
  • +
  • + Protein sequence variant annotation computed for 'sequence_variant' annotation on CDS regions (Ensembl)
  • +
  • ENA CDS 'show cross references' for Uniprot sequences
  • @@ -113,7 +117,7 @@ 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)); } }