X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FChimeraXCommands.java;fp=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FChimeraXCommands.java;h=780d2922708d8ec6b282f9e39bd233599fedae3a;hb=3efc24bc7b7855ff135fa96e35ab1004eaeb4f5e;hp=314e6db08f667ecd97371941c743331b5edfc5f7;hpb=dae56c38c3f14e96308540c30f35ca8f1d917edf;p=jalview.git diff --git a/src/jalview/ext/rbvi/chimera/ChimeraXCommands.java b/src/jalview/ext/rbvi/chimera/ChimeraXCommands.java index 314e6db..780d292 100644 --- a/src/jalview/ext/rbvi/chimera/ChimeraXCommands.java +++ b/src/jalview/ext/rbvi/chimera/ChimeraXCommands.java @@ -28,7 +28,7 @@ import java.util.List; import jalview.structure.AtomSpecModel; import jalview.structure.StructureCommand; import jalview.structure.StructureCommandI; -import jalview.util.ColorUtils; +import jalview.structure.StructureCommandsI.AtomSpecType; /** * Routines for generating ChimeraX commands for Jalview/ChimeraX binding @@ -36,15 +36,19 @@ import jalview.util.ColorUtils; 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"); + 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"); + 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_SELECTION = new StructureCommand( + "info notify stop selection jalview"); - private static final StructureCommand STOP_NOTIFY_MODELS = new StructureCommand("info notify stop models 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( @@ -99,8 +103,8 @@ public class ChimeraXCommands extends ChimeraCommands } /** - * 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 * *
    * setattr #0/A:3-9,14-20,39-43 res jv_strand 'strand' create true
@@ -116,7 +120,7 @@ public class ChimeraXCommands extends ChimeraCommands
           String attributeValue, AtomSpecModel atomSpecModel)
   {
     StringBuilder sb = new StringBuilder(128);
-    sb.append("setattr ").append(getAtomSpec(atomSpecModel, false));
+    sb.append("setattr ").append(getAtomSpec(atomSpecModel, AtomSpecType.RESIDUE_ONLY));
     sb.append(" res ").append(attributeName).append(" '")
             .append(attributeValue).append("'");
     sb.append(" create true");
@@ -142,11 +146,15 @@ public class ChimeraXCommands extends ChimeraCommands
    * Returns the range(s) formatted as a ChimeraX atomspec, for example
    * 

* #1/A:2-20,30-40/B:10-20|#2/A:12-30 + *

+ * 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 */ @Override - public String getAtomSpec(AtomSpecModel atomSpec, boolean alphaOnly) + public String getAtomSpec(AtomSpecModel atomSpec, AtomSpecType specType) { StringBuilder sb = new StringBuilder(128); boolean firstModel = true; @@ -158,12 +166,14 @@ public class ChimeraXCommands extends ChimeraCommands } firstModel = false; appendModel(sb, model, atomSpec); - if (alphaOnly) + if (specType == AtomSpecType.ALPHA) { - // TODO @P if RNA - add nucleotide flag to AtomSpecModel? sb.append("@CA"); } - // todo: is there ChimeraX syntax to exclude altlocs? + if (specType == AtomSpecType.PHOSPHATE) + { + sb.append("@P"); + } } return sb.toString(); } @@ -207,7 +217,7 @@ public class ChimeraXCommands extends ChimeraCommands @Override public List superposeStructures(AtomSpecModel ref, - AtomSpecModel spec) + AtomSpecModel spec, AtomSpecType backbone) { /* * Form ChimeraX match command to match spec to ref @@ -217,8 +227,8 @@ public class ChimeraXCommands extends ChimeraCommands * @see https://www.cgl.ucsf.edu/chimerax/docs/user/commands/align.html */ StringBuilder cmd = new StringBuilder(); - String atomSpec = getAtomSpec(spec, true); - String refSpec = getAtomSpec(ref, true); + String atomSpec = getAtomSpec(spec, backbone); + String refSpec = getAtomSpec(ref, backbone); cmd.append("align ").append(atomSpec).append(" toAtoms ") .append(refSpec); @@ -226,8 +236,8 @@ public class ChimeraXCommands extends ChimeraCommands * show superposed residues as ribbon, others as chain */ cmd.append("; ribbon "); - cmd.append(getAtomSpec(spec, false)).append("|"); - cmd.append(getAtomSpec(ref, false)).append("; view"); + cmd.append(getAtomSpec(spec, AtomSpecType.RESIDUE_ONLY)).append("|"); + cmd.append(getAtomSpec(ref, AtomSpecType.RESIDUE_ONLY)).append("; view"); return Arrays.asList(new StructureCommand(cmd.toString())); } @@ -250,8 +260,12 @@ public class ChimeraXCommands extends ChimeraCommands public List startNotifications(String uri) { List cmds = new ArrayList<>(); - cmds.add(new StructureCommand("info notify start models prefix ModelChanged jalview url " + uri)); - cmds.add(new StructureCommand("info notify start selection jalview prefix SelectionChanged url " + uri)); + 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; }