import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.api.ViewStyleI;
-import jalview.bin.Cache;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.HiddenSequences;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.PDBEntry.Type;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
+import jalview.gui.AlignmentPanel;
import jalview.gui.Desktop;
import jalview.gui.Jalview2XML;
import jalview.schemes.AnnotationColourGradient;
import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ColourSchemeProperty;
+import jalview.schemes.TCoffeeColourScheme;
+import jalview.structure.StructureImportSettings;
import jalview.viewmodel.AlignmentViewport;
import java.io.File;
import org.testng.Assert;
import org.testng.AssertJUnit;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(singleThreaded = true)
-public class Jalview2xmlTests
+public class Jalview2xmlTests extends Jalview2xmlBase
{
- /**
- * @throws java.lang.Exception
- */
- @BeforeClass(alwaysRun = true)
- public static void setUpBeforeClass() throws Exception
- {
- jalview.bin.Jalview.main(new String[] { "-props",
- "test/jalview/io/testProps.jvprops" });
- }
-
- /**
- * @throws java.lang.Exception
- */
- @AfterClass(alwaysRun = true)
- public static void tearDownAfterClass() throws Exception
- {
- jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
- }
-
- int countDsAnn(jalview.viewmodel.AlignmentViewport avp)
- {
- int numdsann = 0;
- for (SequenceI sq : avp.getAlignment().getDataset().getSequences())
- {
- if (sq.getAnnotation() != null)
- {
- for (AlignmentAnnotation dssa : sq.getAnnotation())
- {
- if (dssa.isValidStruc())
- {
- numdsann++;
- }
- }
- }
- }
- return numdsann;
- }
-
@Test(groups = { "Functional" })
public void testRNAStructureRecovery() throws Exception
{
String inFile = "examples/RF00031_folded.stk";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
- assertTrue("Didn't read input file " + inFile, af != null);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+ FormatAdapter.FILE);
+ assertNotNull("Didn't read input file " + inFile, af);
int olddsann = countDsAnn(af.getViewport());
assertTrue("Didn't find any dataset annotations", olddsann > 0);
af.rnahelicesColour_actionPerformed(null);
af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile,
- FormatAdapter.FILE);
- assertTrue("Failed to import new project", af != null);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
+ assertNotNull("Failed to import new project", af);
int newdsann = countDsAnn(af.getViewport());
assertTrue(
"Differing numbers of dataset sequence annotation\nOriginally "
String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
- assertTrue("Didn't read input file " + inFile, af != null);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+ FormatAdapter.FILE);
+ assertNotNull("Didn't read input file " + inFile, af);
af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null);
- assertTrue(
- "Didn't set T-coffee colourscheme",
- af.getViewport().getGlobalColourScheme().getClass()
- .equals(jalview.schemes.TCoffeeColourScheme.class));
- assertTrue(
- "Recognise T-Coffee score from string",
+ assertSame("Didn't set T-coffee colourscheme", af.getViewport()
+ .getGlobalColourScheme().getClass(), TCoffeeColourScheme.class);
+ assertNotNull("Recognise T-Coffee score from string",
jalview.schemes.ColourSchemeProperty.getColour(af.getViewport()
- .getAlignment(),
- jalview.schemes.ColourSchemeProperty.getColourName(af
- .getViewport().getGlobalColourScheme())) != null);
+ .getAlignment(), ColourSchemeProperty.getColourName(af
+ .getViewport().getGlobalColourScheme())));
assertTrue("Failed to store as a project.",
af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile,
- FormatAdapter.FILE);
- assertTrue("Failed to import new project", af != null);
- assertTrue(
- "Didn't set T-coffee colourscheme for imported project.",
- af.getViewport().getGlobalColourScheme().getClass()
- .equals(jalview.schemes.TCoffeeColourScheme.class));
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
+ assertNotNull("Failed to import new project", af);
+ assertSame("Didn't set T-coffee colourscheme for imported project.", af
+ .getViewport().getGlobalColourScheme().getClass(),
+ TCoffeeColourScheme.class);
System.out
.println("T-Coffee score shading successfully recovered from project.");
}
String inFile = "examples/uniref50.fa", inAnnot = "examples/testdata/uniref50_iupred.jva";
String tfile = File.createTempFile("JalviewTest", ".jvp")
.getAbsolutePath();
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- inFile, FormatAdapter.FILE);
- assertTrue("Didn't read input file " + inFile, af != null);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+ FormatAdapter.FILE);
+ assertNotNull("Didn't read input file " + inFile, af);
af.loadJalviewDataFile(inAnnot, FormatAdapter.FILE, null, null);
AlignmentAnnotation[] aa = af.getViewport().getAlignment()
.getSequenceAt(0).getAnnotation("IUPredWS (Short)");
assertTrue(
"Didn't find any IUPred annotation to use to shade alignment.",
aa != null && aa.length > 0);
- AnnotationColourGradient cs = new jalview.schemes.AnnotationColourGradient(
- aa[0], null, AnnotationColourGradient.ABOVE_THRESHOLD);
- AnnotationColourGradient gcs = new jalview.schemes.AnnotationColourGradient(
- aa[0], null, AnnotationColourGradient.BELOW_THRESHOLD);
+ AnnotationColourGradient cs = new AnnotationColourGradient(aa[0], null,
+ AnnotationColourGradient.ABOVE_THRESHOLD);
+ AnnotationColourGradient gcs = new AnnotationColourGradient(aa[0],
+ null, AnnotationColourGradient.BELOW_THRESHOLD);
cs.setSeqAssociated(true);
gcs.setSeqAssociated(true);
af.changeColour(cs);
af.saveAlignment(tfile, "Jalview"));
af.closeMenuItem_actionPerformed(true);
af = null;
- af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(tfile,
- FormatAdapter.FILE);
- assertTrue("Failed to import new project", af != null);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile, FormatAdapter.FILE);
+ assertNotNull("Failed to import new project", af);
// check for group and alignment colourschemes
ColourSchemeI _rcs = af.getViewport().getGlobalColourScheme();
ColourSchemeI _rgcs = af.getViewport().getAlignment().getGroups()
.get(0).cs;
- assertTrue("Didn't recover global colourscheme", _rcs != null);
+ assertNotNull("Didn't recover global colourscheme", _rcs);
assertTrue("Didn't recover annotation colour global scheme",
_rcs instanceof AnnotationColourGradient);
AnnotationColourGradient __rcs = (AnnotationColourGradient) _rcs;
System.out
.println("Per sequence colourscheme (Background) successfully applied and recovered.");
- assertTrue("Didn't recover group colourscheme", _rgcs != null);
+ assertNotNull("Didn't recover group colourscheme", _rgcs);
assertTrue("Didn't recover annotation colour group colourscheme",
_rgcs instanceof AnnotationColourGradient);
__rcs = (AnnotationColourGradient) _rgcs;
{
int origCount = Desktop.getAlignFrames() == null ? 0 : Desktop
.getAlignFrames().length;
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
+ assertNotNull("Didn't read in the example file correctly.", af);
assertTrue("Didn't gather the views in the example file.",
Desktop.getAlignFrames().length == 1 + origCount);
@Test(groups = { "Functional" })
public void viewRefPdbAnnotation() throws Exception
{
- Cache.applicationProperties.setProperty("STRUCT_FROM_PDB",
- Boolean.TRUE.toString());
- Cache.applicationProperties.setProperty("ADD_SS_ANN",
- Boolean.TRUE.toString());
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+ StructureImportSettings.setProcessSecondaryStructure(true);
+ StructureImportSettings.setVisibleChainAnnotation(true);
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
+ assertNotNull("Didn't read in the example file correctly.", af);
AlignmentViewPanel sps = null;
for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
{
break;
}
}
- assertTrue("Couldn't find the structure view", sps != null);
- SequenceI sq = sps.getAlignment().findName("1A70|");
+ assertNotNull("Couldn't find the structure view", sps);
AlignmentAnnotation refan = null;
for (AlignmentAnnotation ra : sps.getAlignment()
.getAlignmentAnnotation())
break;
}
}
- assertTrue("Annotation secondary structure not found.", refan != null);
- assertTrue("Couldn't find 1a70 null chain", sq != null);
+ assertNotNull("Annotation secondary structure not found.", refan);
+ SequenceI sq = sps.getAlignment().findName("1A70|");
+ assertNotNull("Couldn't find 1a70 null chain", sq);
// compare the manually added temperature factor annotation
// to the track automatically transferred from the pdb structure on load
+ assertNotNull("1a70 has no annotation", sq.getDatasetSequence()
+ .getAnnotation());
for (AlignmentAnnotation ala : sq.getDatasetSequence().getAnnotation())
{
AlignmentAnnotation alaa;
@Test(groups = { "Functional" })
public void testCopyViewSettings() throws Exception
{
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
+ assertNotNull("Didn't read in the example file correctly.", af);
AlignmentViewPanel sps = null, groups = null;
for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
{
groups = ap;
}
}
- assertTrue("Couldn't find the structure view", sps != null);
- assertTrue("Couldn't find the MAFFT view", groups != null);
+ assertNotNull("Couldn't find the structure view", sps);
+ assertNotNull("Couldn't find the MAFFT view", groups);
ViewStyleI structureStyle = sps.getAlignViewport().getViewStyle();
ViewStyleI groupStyle = groups.getAlignViewport().getViewStyle();
{
Desktop.instance.closeAll_actionPerformed(null);
- AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
Assert.assertEquals(Desktop.getAlignFrames().length, 1);
String afid = af.getViewport().getSequenceSetId();
{
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
- af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
- tfile.getAbsolutePath(), FormatAdapter.FILE);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ FormatAdapter.FILE);
Assert.assertNotNull(af);
Assert.assertEquals(
Desktop.getAlignFrames().length,
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/exampleFile_2_7.jar", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
+ assertNotNull("Didn't read in the example file correctly.", af);
String afid = af.getViewport().getSequenceSetId();
// remember reference sequence for each panel
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
- af = new FileLoader().LoadFileWaitTillLoaded(
- tfile.getAbsolutePath(), FormatAdapter.FILE);
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ FormatAdapter.FILE);
afid = af.getViewport().getSequenceSetId();
for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid))
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/uniref50.fa", FormatAdapter.FILE);
- assertTrue("Didn't read in the example file correctly.", af != null);
+ assertNotNull("Didn't read in the example file correctly.", af);
String afid = af.getViewport().getSequenceSetId();
// make a second view of the alignment
af.newView_actionPerformed(null);
-
+
/*
* remember representative and hidden sequences marked
* on each panel
*/
Map<String, SequenceI> repSeqs = new HashMap<String, SequenceI>();
Map<String, List<String>> hiddenSeqNames = new HashMap<String, List<String>>();
-
+
/*
* mark sequence 2, 3, 4.. in panels 1, 2, 3...
* as reference sequence for itself and the preceding sequence
repSeqs.put(ap.getViewName(), repSeq);
List<String> hiddenNames = new ArrayList<String>();
hiddenSeqNames.put(ap.getViewName(), hiddenNames);
-
+
/*
* have rep sequence represent itself and the one before it
* this hides the group (except for the rep seq)
assertTrue(sg.getSequences().contains(repSeq));
assertTrue(sg.getSequences().contains(precedingSeq));
assertTrue("alignment has groups", alignment.getGroups().isEmpty());
- Map<SequenceI, SequenceCollectionI> hiddenRepSeqsMap = av.getHiddenRepSequences();
+ Map<SequenceI, SequenceCollectionI> hiddenRepSeqsMap = av
+ .getHiddenRepSequences();
assertNotNull(hiddenRepSeqsMap);
assertEquals(1, hiddenRepSeqsMap.size());
assertSame(sg, hiddenRepSeqsMap.get(repSeq));
n++;
}
File tfile = File
- .createTempFile("testStoreAndRecoverGroupReps",
- ".jvp");
+ .createTempFile("testStoreAndRecoverGroupReps", ".jvp");
try
{
new Jalview2XML(false).saveState(tfile);
{
Assert.assertEquals(Desktop.getAlignFrames().length, 0);
}
-
- af = new FileLoader().LoadFileWaitTillLoaded(
- tfile.getAbsolutePath(), FormatAdapter.FILE);
+
+ af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+ FormatAdapter.FILE);
afid = af.getViewport().getSequenceSetId();
-
+
for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid))
{
String viewName = ap.getViewName();
HiddenSequences hs = alignment.getHiddenSequences();
assertEquals(
"wrong number of restored hidden sequences in "
- + ap.getViewName(),
- hidden.size(), hs.getSize());
+ + ap.getViewName(), hidden.size(), hs.getSize());
+ }
+ }
+
+ /**
+ * Test save and reload of PDBEntry in Jalview project
+ *
+ * @throws Exception
+ */
+ @Test(groups = { "Functional" })
+ public void testStoreAndRecoverPDBEntry() throws Exception
+ {
+ Desktop.instance.closeAll_actionPerformed(null);
+ String exampleFile = "examples/3W5V.pdb";
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(exampleFile,
+ FormatAdapter.FILE);
+ assertNotNull("Didn't read in the example file correctly.", af);
+ String afid = af.getViewport().getSequenceSetId();
+
+ AlignmentPanel[] alignPanels = Desktop.getAlignmentPanels(afid);
+ System.out.println();
+ AlignmentViewPanel ap = alignPanels[0];
+ String tfileBase = new File(".").getAbsolutePath().replace(".", "");
+ String testFile = tfileBase + exampleFile;
+ AlignmentI alignment = ap.getAlignment();
+ System.out.println("blah");
+ SequenceI[] seqs = alignment.getSequencesArray();
+ Assert.assertNotNull(seqs[0]);
+ Assert.assertNotNull(seqs[1]);
+ Assert.assertNotNull(seqs[2]);
+ Assert.assertNotNull(seqs[3]);
+ Assert.assertNotNull(seqs[0].getDatasetSequence());
+ Assert.assertNotNull(seqs[1].getDatasetSequence());
+ Assert.assertNotNull(seqs[2].getDatasetSequence());
+ Assert.assertNotNull(seqs[3].getDatasetSequence());
+ PDBEntry[] pdbEntries = new PDBEntry[4];
+ pdbEntries[0] = new PDBEntry("3W5V", "A", Type.PDB, testFile);
+ pdbEntries[1] = new PDBEntry("3W5V", "B", Type.PDB, testFile);
+ pdbEntries[2] = new PDBEntry("3W5V", "C", Type.PDB, testFile);
+ pdbEntries[3] = new PDBEntry("3W5V", "D", Type.PDB, testFile);
+ Assert.assertEquals(seqs[0].getDatasetSequence().getAllPDBEntries()
+ .get(0), pdbEntries[0]);
+ Assert.assertEquals(seqs[1].getDatasetSequence().getAllPDBEntries()
+ .get(0), pdbEntries[1]);
+ Assert.assertEquals(seqs[2].getDatasetSequence().getAllPDBEntries()
+ .get(0), pdbEntries[2]);
+ Assert.assertEquals(seqs[3].getDatasetSequence().getAllPDBEntries()
+ .get(0), pdbEntries[3]);
+
+ File tfile = File.createTempFile("testStoreAndRecoverPDBEntry", ".jvp");
+ try
+ {
+ new Jalview2XML(false).saveState(tfile);
+ } catch (Throwable e)
+ {
+ Assert.fail("Didn't save the state", e);
+ }
+ Desktop.instance.closeAll_actionPerformed(null);
+ if (Desktop.getAlignFrames() != null)
+ {
+ Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ }
+
+ AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded(
+ tfile.getAbsolutePath(), FormatAdapter.FILE);
+ String rfid = restoredFrame.getViewport().getSequenceSetId();
+ AlignmentPanel[] rAlignPanels = Desktop.getAlignmentPanels(rfid);
+ AlignmentViewPanel rap = rAlignPanels[0];
+ AlignmentI rAlignment = rap.getAlignment();
+ System.out.println("blah");
+ SequenceI[] rseqs = rAlignment.getSequencesArray();
+ Assert.assertNotNull(rseqs[0]);
+ Assert.assertNotNull(rseqs[1]);
+ Assert.assertNotNull(rseqs[2]);
+ Assert.assertNotNull(rseqs[3]);
+ Assert.assertNotNull(rseqs[0].getDatasetSequence());
+ Assert.assertNotNull(rseqs[1].getDatasetSequence());
+ Assert.assertNotNull(rseqs[2].getDatasetSequence());
+ Assert.assertNotNull(rseqs[3].getDatasetSequence());
+
+ // The Asserts below are expected to fail until the PDB chainCode is
+ // recoverable from a Jalview projects
+ for (int chain = 0; chain < 4; chain++)
+ {
+ PDBEntry recov = rseqs[chain].getDatasetSequence().getAllPDBEntries()
+ .get(0);
+ PDBEntry expected = pdbEntries[chain];
+ Assert.assertEquals(recov.getId(), expected.getId(),
+ "Mismatch PDB ID");
+ Assert.assertEquals(recov.getChainCode(), expected.getChainCode(),
+ "Mismatch PDB ID");
+ Assert.assertEquals(recov.getType(), expected.getType(),
+ "Mismatch PDBEntry 'Type'");
+ Assert.assertNotNull(recov.getFile(),
+ "Recovered PDBEntry should have a non-null file entry");
}
}
}