Merge branch 'develop' into feature/JAL-2422ChimeraX
authorBen Soares <b.soares@dundee.ac.uk>
Mon, 13 Sep 2021 17:05:44 +0000 (18:05 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Mon, 13 Sep 2021 17:05:44 +0000 (18:05 +0100)
1  2 
src/jalview/ext/rbvi/chimera/ChimeraXCommands.java

  package jalview.ext.rbvi.chimera;
  
  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;
- import jalview.util.ColorUtils;
  
  /**
   * 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");
++  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(
+           "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
@@@ -74,7 -83,6 +87,6 @@@
    @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));
++    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;
+   }
  }