X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FJalviewChimeraBinding.java;fp=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FJalviewChimeraBinding.java;h=3553d68777c715eb7057080529d9ad77f90607f7;hb=42f4227ed213d422a87d3b22fc9e85d14ffaf53f;hp=ae34bd07db27bef90a8eb822ac7b0e4977d540ce;hpb=09ec96d9ac0fd717d6cf32417d9916cca781d92c;p=jalview.git diff --git a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java index ae34bd0..3553d68 100644 --- a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java +++ b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java @@ -24,7 +24,6 @@ import jalview.api.AlignmentViewPanel; import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.datamodel.AlignmentI; -import jalview.datamodel.HiddenColumns; import jalview.datamodel.PDBEntry; import jalview.datamodel.SearchResultMatchI; import jalview.datamodel.SearchResultsI; @@ -34,10 +33,10 @@ import jalview.gui.StructureViewer.ViewerType; import jalview.httpserver.AbstractRequestHandler; import jalview.io.DataSourceType; import jalview.structure.AtomSpec; -import jalview.structure.StructureCommandsI.SuperposeData; +import jalview.structure.StructureCommand; +import jalview.structure.StructureCommandI; import jalview.structure.StructureSelectionManager; import jalview.structures.models.AAStructureBindingModel; -import jalview.util.MessageManager; import java.io.File; import java.io.FileOutputStream; @@ -45,7 +44,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.net.BindException; import java.util.ArrayList; -import java.util.BitSet; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; @@ -352,7 +350,7 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel * @param getResponse */ @Override - public List executeCommand(final String command, + public List executeCommand(final StructureCommandI command, boolean getResponse) { if (chimeraManager == null || command == null) @@ -362,43 +360,21 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel } List reply = null; // trim command or it may never find a match in the replyLog!! + String cmd = command.getCommand().trim(); List lastReply = chimeraManager - .sendChimeraCommand(command.trim(), getResponse); + .sendChimeraCommand(cmd, getResponse); if (getResponse) { reply = lastReply; if (debug) { - log("Response from command ('" + command + "') was:\n" + lastReply); + log("Response from command ('" + cmd + "') was:\n" + lastReply); } } return reply; } - /** - * @param command - */ - protected void executeWhenReady(String command) - { - waitForChimera(); - executeCommand(command, false); - waitForChimera(); - } - - private void waitForChimera() - { - while (chimeraManager != null && chimeraManager.isBusy()) - { - try - { - Thread.sleep(15); - } catch (InterruptedException q) - { - } - } - } - @Override public synchronized String[] getStructureFiles() { @@ -582,7 +558,8 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel * Chimera: https://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/midas/save.html * ChimeraX: https://www.cgl.ucsf.edu/chimerax/docs/user/commands/save.html */ - String command = getCommandGenerator().saveSession(filepath); + String command = getCommandGenerator().saveSession(filepath) + .getCommand(); List reply = chimeraManager.sendChimeraCommand(command, true); if (reply.contains("Session written")) { @@ -611,7 +588,7 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel * Chimera: https://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/midas/open.html * ChimeraX: https://www.cgl.ucsf.edu/chimerax/docs/user/commands/open.html */ - executeCommand("open " + filepath, true); + executeCommand(getCommandGenerator().loadFile(filepath), true); // todo: test for failure - how? return true; } @@ -660,20 +637,20 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel return 0; } - String[] commands = getCommandGenerator() + List commands = getCommandGenerator() .setAttributesForFeatures(getSsm(), files, getSequence(), avp); - if (commands.length > 10) + if (commands.size() > 10) { sendCommandsByFile(commands); } else { - for (String command : commands) + for (StructureCommandI command : commands) { sendAsynchronousCommand(command, null); } } - return commands.length; + return commands.size(); } /** @@ -683,21 +660,22 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel * * @param commands */ - protected void sendCommandsByFile(String[] commands) + protected void sendCommandsByFile(List commands) { try { File tmp = File.createTempFile("chim", getCommandFileExtension()); tmp.deleteOnExit(); PrintWriter out = new PrintWriter(new FileOutputStream(tmp)); - for (String command : commands) + for (StructureCommandI command : commands) { - out.println(command); + out.println(command.getCommand()); } out.flush(); out.close(); String path = tmp.getAbsolutePath(); - String command = getCommandGenerator().openCommandFile(path); + StructureCommandI command = getCommandGenerator() + .openCommandFile(path); sendAsynchronousCommand(command, null); } catch (IOException e) { @@ -737,7 +715,7 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel // fails for 'average.bfactor' (which is bad): String cmd = "list residues attr '" + attName + "'"; - List residues = executeCommand(cmd, true); + List residues = executeCommand(new StructureCommand(cmd), true); boolean featureAdded = createFeaturesForAttributes(attName, residues); if (featureAdded) @@ -852,14 +830,14 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel } @Override - public int getModelNoForFile(String pdbFile) + public String getModelIdForFile(String pdbFile) { List foundModels = chimeraMaps.get(pdbFile); if (foundModels != null && !foundModels.isEmpty()) { - return foundModels.get(0).getModelNumber(); + return String.valueOf(foundModels.get(0).getModelNumber()); } - return -1; + return ""; } /**