package jalview.ext.rbvi.chimera; import static org.testng.AssertJUnit.assertTrue; import jalview.api.structures.JalviewStructureDisplayI; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.StructureViewer; import jalview.gui.StructureViewer.ViewerType; import jalview.io.FormatAdapter; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class JalviewChimeraView { /** * @throws java.lang.Exception */ @BeforeClass public static void setUpBeforeClass() throws Exception { jalview.bin.Jalview.main(new String[] { "-noquestionnaire -nonews -props", "test/src/jalview/ext/rbvi/chimera/testProps.jvprops" }); } /** * @throws java.lang.Exception */ @AfterClass public static void tearDownAfterClass() throws Exception { try { jalview.gui.Desktop.instance.closeAll_actionPerformed(null); } catch (Exception e) { // ignore NullPointerException thrown by JMol } } @Test(groups ={ "Functional" }) public void testSingleSeqViewJMol() { String inFile = "examples/1gaq.txt"; AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( inFile, FormatAdapter.FILE); assertTrue("Didn't read input file " + inFile, af != null); for (SequenceI sq : af.getViewport().getAlignment().getSequences()) { SequenceI dsq = sq.getDatasetSequence(); while (dsq.getDatasetSequence() != null) { dsq = dsq.getDatasetSequence(); } if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0) { for (int q = 0; q < dsq.getPDBId().size(); q++) { final StructureViewer structureViewer = new StructureViewer(af .getViewport().getStructureSelectionManager()); structureViewer.setViewerType(ViewerType.JMOL); JalviewStructureDisplayI jmolViewer = structureViewer .viewStructures(dsq.getPDBId().elementAt(q), new SequenceI[] { sq }, af.getCurrentView().getAlignPanel()); /* * Wait for viewer thread to start */ try { Thread.sleep(1000); } catch (InterruptedException e) { } jmolViewer.closeViewer(true); // todo: break here means only once through this loop? break; } break; } } } @Test(groups ={ "Functional" }) public void testSingleSeqViewChimera() { String inFile = "examples/1gaq.txt"; AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( inFile, FormatAdapter.FILE); assertTrue("Didn't read input file " + inFile, af != null); for (SequenceI sq : af.getViewport().getAlignment().getSequences()) { SequenceI dsq = sq.getDatasetSequence(); while (dsq.getDatasetSequence() != null) { dsq = dsq.getDatasetSequence(); } if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0) { for (int q = 0; q < dsq.getPDBId().size(); q++) { final StructureViewer structureViewer = new StructureViewer(af .getViewport().getStructureSelectionManager()); structureViewer.setViewerType(ViewerType.CHIMERA); JalviewStructureDisplayI chimeraViewer = structureViewer .viewStructures(dsq.getPDBId().elementAt(q), new SequenceI[] { sq }, af.getCurrentView().getAlignPanel()); /* * Wait for viewer thread to start */ try { Thread.sleep(1000); } catch (InterruptedException e) { } chimeraViewer.closeViewer(true); // todo: break here means only once through this loop? break; } break; } } } }