*/
package jalview.ext.rbvi.chimera;
-import jalview.structure.AtomSpecModel;
-import jalview.structure.StructureCommand;
-import jalview.structure.StructureCommandI;
-import jalview.util.ColorUtils;
-
import java.awt.Color;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import jalview.structure.AtomSpecModel;
+import jalview.structure.StructureCommand;
+import jalview.structure.StructureCommandI;
+
/**
* Routines for generating ChimeraX commands for Jalview/ChimeraX binding
*/
public class ChimeraXCommands extends ChimeraCommands
{
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/info.html#resattr
+ private static final StructureCommand LIST_RESIDUE_ATTRIBUTES = new StructureCommand(
+ "info resattr");
+
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/exit.html
+ private static final StructureCommand CLOSE_CHIMERAX = new StructureCommand(
+ "exit");
+
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/info.html#notify
+ private static final StructureCommand STOP_NOTIFY_SELECTION = new StructureCommand(
+ "info notify stop selection jalview");
+
+ private static final StructureCommand STOP_NOTIFY_MODELS = new StructureCommand(
+ "info notify stop models jalview");
+
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/info.html#selection
+ private static final StructureCommand GET_SELECTION = new StructureCommand(
+ "info selection level residue");
+
private static final StructureCommand SHOW_BACKBONE = new StructureCommand(
"~display all;~ribbon;show @CA|P atoms");
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/view.html
private static final StructureCommand FOCUS_VIEW = new StructureCommand(
"view");
}
@Override
- public StructureCommandI setBackgroundColour(Color col)
- {
- // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/set.html
- return new StructureCommand("set bgColor " + ColorUtils.toTkCode(col));
- }
-
- @Override
public StructureCommandI colourResidues(String atomSpec, Color colour)
{
// https://www.cgl.ucsf.edu/chimerax/docs/user/commands/color.html
@Override
public StructureCommandI focusView()
{
- // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/view.html
return FOCUS_VIEW;
}
}
/**
- * Returns a viewer command to set the given residue attribute value on
- * residues specified by the AtomSpecModel, for example
+ * Returns a viewer command to set the given residue attribute value on residues
+ * specified by the AtomSpecModel, for example
*
* <pre>
* setattr #0/A:3-9,14-20,39-43 res jv_strand 'strand' create true
public StructureCommandI saveSession(String filepath)
{
// https://www.cgl.ucsf.edu/chimerax/docs/user/commands/save.html
- return new StructureCommand("save session " + filepath);
+ // note ChimeraX will append ".cxs" to the filepath!
+ return new StructureCommand("save " + filepath + " format session");
}
/**
* Returns the range(s) formatted as a ChimeraX atomspec, for example
* <p>
* #1/A:2-20,30-40/B:10-20|#2/A:12-30
+ * <p>
+ * Note there is no need to explicitly exclude ALTLOC atoms when
+ * {@code alphaOnly == true}, as this is the default behaviour of ChimeraX (a
+ * change from Chimera)
*
* @return
*/
// TODO @P if RNA - add nucleotide flag to AtomSpecModel?
sb.append("@CA");
}
- // todo: is there ChimeraX syntax to exclude altlocs?
}
return sb.toString();
}
return Arrays.asList(new StructureCommand(cmd.toString()));
}
+ @Override
+ public StructureCommandI openSession(String filepath)
+ {
+ // https://www.cgl.ucsf.edu/chimerax/docs/user/commands/open.html#composite
+ // this version of the command has no dependency on file extension
+ return new StructureCommand("open " + filepath + " format session");
+ }
+
+ @Override
+ public StructureCommandI closeViewer()
+ {
+ return CLOSE_CHIMERAX;
+ }
+
+ @Override
+ public List<StructureCommandI> startNotifications(String uri)
+ {
+ List<StructureCommandI> cmds = new ArrayList<>();
+ cmds.add(new StructureCommand(
+ "info notify start models jalview prefix ModelChanged url "
+ + uri));
+ cmds.add(new StructureCommand(
+ "info notify start selection jalview prefix SelectionChanged url "
+ + uri));
+ return cmds;
+ }
+
+ @Override
+ public List<StructureCommandI> stopNotifications()
+ {
+ List<StructureCommandI> cmds = new ArrayList<>();
+ cmds.add(STOP_NOTIFY_MODELS);
+ cmds.add(STOP_NOTIFY_SELECTION);
+ return cmds;
+ }
+
+ @Override
+ public StructureCommandI getSelectedResidues()
+ {
+ return GET_SELECTION;
+ }
+
+ @Override
+ public StructureCommandI listResidueAttributes()
+ {
+ return LIST_RESIDUE_ATTRIBUTES;
+ }
}