X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fext%2Frbvi%2Fchimera%2FJalviewChimeraView.java;fp=test%2Fjalview%2Fext%2Frbvi%2Fchimera%2FJalviewChimeraView.java;h=4f9fe7559d9396b40c9bdfa5b8beba15c494e1af;hb=304e64fb34b32659be1bbfd39fb4e15b2f79586e;hp=194d34a4793f643733bc2be32934548f6c9e0f57;hpb=cfb79b69d9fa44595560659bd95d1d1cd27677ad;p=jalview.git diff --git a/test/jalview/ext/rbvi/chimera/JalviewChimeraView.java b/test/jalview/ext/rbvi/chimera/JalviewChimeraView.java index 194d34a..4f9fe75 100644 --- a/test/jalview/ext/rbvi/chimera/JalviewChimeraView.java +++ b/test/jalview/ext/rbvi/chimera/JalviewChimeraView.java @@ -25,12 +25,24 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Vector; + +import org.testng.annotations.AfterClass; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + import jalview.api.FeatureRenderer; import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.bin.Jalview; +import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.PDBEntry; +import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; @@ -41,22 +53,13 @@ import jalview.gui.StructureViewer; import jalview.gui.StructureViewer.ViewerType; import jalview.io.DataSourceType; import jalview.io.FileLoader; +import jalview.structure.StructureCommand; import jalview.structure.StructureMapping; import jalview.structure.StructureSelectionManager; import jalview.ws.sifts.SiftsClient; import jalview.ws.sifts.SiftsException; import jalview.ws.sifts.SiftsSettings; -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Vector; - -import org.testng.annotations.AfterClass; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - @Test(singleThreaded = true) public class JalviewChimeraView { @@ -117,6 +120,7 @@ public class JalviewChimeraView @Test(groups = { "External" }) public void testSingleSeqViewChimera() { + String inFile = "examples/1gaq.txt"; AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile, DataSourceType.FILE); @@ -138,7 +142,7 @@ public class JalviewChimeraView /* * Wait for viewer load thread to complete */ - while (!binding.isFinishedInit()) + do { try { @@ -146,11 +150,36 @@ public class JalviewChimeraView } catch (InterruptedException e) { } - } + } while (!binding.isFinishedInit() || !chimeraViewer.isVisible()); - assertTrue(binding.isChimeraRunning(), "Failed to start Chimera"); + assertTrue(binding.isViewerRunning(), "Failed to start Chimera"); assertEquals(chimeraViewer.getBinding().getPdbCount(), 1); + assertTrue(chimeraViewer.hasViewerActionsMenu()); + + // now add another sequence and bind to view + // + AlignmentI al = af.getViewport().getAlignment(); + PDBEntry xpdb = al.getSequenceAt(0).getPDBEntry("1GAQ"); + sq = new Sequence("1GAQ", al.getSequenceAt(0).getSequence(25, 95).toString()); + al.addSequence(sq); + structureViewer.viewStructures(new PDBEntry[] { xpdb }, new SequenceI[] { sq }, af.getCurrentView().getAlignPanel()); + + /* + * Wait for viewer load thread to complete + */ + do + { + try { + Thread.sleep(1500); + } catch (InterruptedException q) {}; + } while (!binding.isLoadingFinished()); + + // still just one PDB structure shown + assertEquals(chimeraViewer.getBinding().getPdbCount(), 1); + // and the viewer action menu should still be visible + assertTrue(chimeraViewer.hasViewerActionsMenu()); + chimeraViewer.closeViewer(true); chimeraViewer = null; return; @@ -208,7 +237,7 @@ public class JalviewChimeraView } } while (!binding.isFinishedInit()); - assertTrue(binding.isChimeraRunning(), "Failed to launch Chimera"); + assertTrue(binding.isViewerRunning(), "Failed to launch Chimera"); assertEquals(binding.getPdbCount(), 1); @@ -290,7 +319,8 @@ public class JalviewChimeraView /* * ask Chimera for its residue attribute names */ - List reply = binding.sendChimeraCommand("list resattr", true); + List reply = binding + .executeCommand(new StructureCommand("list resattr"), true); // prefixed and sanitised attribute names for Jalview features: assertTrue(reply.contains("resattr jv_domain")); assertTrue(reply.contains("resattr jv_metal_ion_binding_site")); @@ -306,8 +336,9 @@ public class JalviewChimeraView * ask Chimera for residues with an attribute * 91 and 96 on sequence --> residues 40 and 45 on chains A and B */ - reply = binding.sendChimeraCommand( - "list resi att jv_metal_ion_binding_site", true); + reply = binding.executeCommand( + new StructureCommand("list resi att jv_metal_ion_binding_site"), + true); assertEquals(reply.size(), 4); assertTrue(reply .contains("residue id #0:40.A jv_metal_ion_binding_site \"Iron-Sulfur (2Fe-2S)\" index 40")); @@ -322,7 +353,8 @@ public class JalviewChimeraView * check attributes with score values * sequence positions 62 and 65 --> residues 11 and 14 on chains A and B */ - reply = binding.sendChimeraCommand("list resi att jv_kd", true); + reply = binding.executeCommand( + new StructureCommand("list resi att jv_kd"), true); assertEquals(reply.size(), 4); assertTrue(reply.contains("residue id #0:11.A jv_kd -2.1 index 11")); assertTrue(reply.contains("residue id #0:14.A jv_kd 3.6 index 14")); @@ -332,8 +364,9 @@ public class JalviewChimeraView /* * list residues with positive kd score */ - reply = binding.sendChimeraCommand( - "list resi spec :*/jv_kd>0 attr jv_kd", true); + reply = binding.executeCommand( + new StructureCommand("list resi spec :*/jv_kd>0 attr jv_kd"), + true); assertEquals(reply.size(), 2); assertTrue(reply.contains("residue id #0:14.A jv_kd 3.6 index 14")); assertTrue(reply.contains("residue id #0:14.B jv_kd 3.6 index 14")); @@ -397,13 +430,13 @@ public class JalviewChimeraView } } while (!binding.isFinishedInit()); - assertTrue(binding.isChimeraRunning(), "Failed to launch Chimera"); + assertTrue(binding.isViewerRunning(), "Failed to launch Chimera"); assertEquals(binding.getPdbCount(), 1); /* - * 'perform' menu action to copy visible features to - * attributes in Chimera + * 'perform' menu action to copy Chimera attributes + * to features in Jalview */ // TODO rename and pull up method to binding interface // once functionality is added for Jmol as well @@ -440,14 +473,9 @@ public class JalviewChimeraView binding.copyStructureAttributesToFeatures("phi", af.getViewport() .getAlignPanel()); fr.setVisible("phi"); - List fs = fer2Arath.getFeatures().findFeatures(54, 54); - assertEquals(fs.size(), 3); - /* - * order of returned features is not guaranteed - */ - assertTrue("RESNUM".equals(fs.get(0).getType()) - || "RESNUM".equals(fs.get(1).getType()) - || "RESNUM".equals(fs.get(2).getType())); + List fs = fer2Arath.getFeatures().findFeatures(54, 54, + "phi"); + assertEquals(fs.size(), 2); assertTrue(fs.contains(new SequenceFeature("phi", "A", 54, 54, -131.0713f, "Chimera"))); assertTrue(fs.contains(new SequenceFeature("phi", "B", 54, 54, @@ -473,11 +501,11 @@ public class JalviewChimeraView int res, String featureType) { String where = "at position " + res; - List fs = seq.getFeatures().findFeatures(res, res); + List fs = seq.getFeatures().findFeatures(res, res, + featureType); - assertEquals(fs.size(), 2, where); - assertEquals(fs.get(0).getType(), "RESNUM", where); - SequenceFeature sf = fs.get(1); + assertEquals(fs.size(), 1, where); + SequenceFeature sf = fs.get(0); assertEquals(sf.getType(), featureType, where); assertEquals(sf.getFeatureGroup(), "Chimera", where); assertEquals(sf.getDescription(), "True", where);