JAL-3518 basic refactoring / pull up of superposeStructures; to tidy!
[jalview.git] / src / jalview / structure / StructureCommandsI.java
index eda5aa9..359eac6 100644 (file)
@@ -1,7 +1,6 @@
 package jalview.structure;
 
 import jalview.api.AlignmentViewPanel;
-import jalview.api.SequenceRenderer;
 import jalview.datamodel.SequenceI;
 
 import java.awt.Color;
@@ -17,6 +16,41 @@ import java.util.Map;
  */
 public interface StructureCommandsI
 {
+  /**
+   * Data bean class to simplify parameterisation in superposeStructures
+   */
+  public class SuperposeData
+  {
+    public String filename;
+
+    public String pdbId;
+
+    public String chain = "";
+
+    public boolean isRna;
+
+    /*
+     * The pdb residue number (if any) mapped to columns of the alignment
+     */
+    public int[] pdbResNo; // or use SparseIntArray?
+
+    public int modelNo;
+
+    /**
+     * Constructor
+     * 
+     * @param width
+     *          width of alignment (number of columns that may potentially
+     *          participate in superposition)
+     * @param model
+     *          structure viewer model number
+     */
+    public SuperposeData(int width, int model)
+    {
+      pdbResNo = new int[width];
+      modelNo = model;
+    }
+  }
 
   /**
    * Returns the command to colour by chain
@@ -57,19 +91,14 @@ public interface StructureCommandsI
 
   /**
    * Returns commands to colour mapped residues of structures according to
-   * Jalview's colouring (including feature colouring if applied)
+   * Jalview's colouring (including feature colouring if applied). Parameter is
+   * a map from Color to a model of all residues assigned that colour.
    * 
-   * @param structureSelectionManager
-   * @param files
-   * @param seqs
-   * @param sr
-   * @param alignmentv
+   * @param colourMap
    * @return
    */
-  String[] colourBySequence(
-          StructureSelectionManager structureSelectionManager,
-          String[] files, SequenceI[][] seqs, SequenceRenderer sr,
-          AlignmentViewPanel alignmentv);
+
+  String[] colourBySequence(Map<Object, AtomSpecModel> colourMap);
 
   /**
    * Returns a command to centre the display in the structure viewer
@@ -100,4 +129,61 @@ public interface StructureCommandsI
   String[] setAttributesForFeatures(StructureSelectionManager ssm,
           String[] files, SequenceI[][] sequence, AlignmentViewPanel avp);
 
+  /**
+   * Returns a command to superpose structures by closest positioning of
+   * residues in {@code atomSpec} to the corresponding residues in {@ refAtoms}.
+   * If wanted, this may include commands to visually highlight the residues
+   * that were used for the superposition.
+   * 
+   * @param refAtoms
+   * @param atomSpec
+   * @return
+   */
+  String superposeStructures(AtomSpecModel refAtoms,
+          AtomSpecModel atomSpec);
+
+  /**
+   * Returns a command to open a file of commands at the given path
+   * 
+   * @param path
+   * @return
+   */
+  String openCommandFile(String path);
+
+  /**
+   * Returns a command to save the current viewer session state to the given
+   * file
+   * 
+   * @param filepath
+   * @return
+   */
+  String saveSession(String filepath);
+
+  /**
+   * Returns a representation of the atom set represented by the model, in
+   * viewer syntax format. If {@code alphaOnly} is true, this is restricted to
+   * Alpha Carbon (peptide) or Phosphorous (rna) only
+   * 
+   * @param model
+   * @param alphaOnly
+   * @return
+   */
+  String getAtomSpec(AtomSpecModel model, boolean alphaOnly);
+
+  /**
+   * Returns the lowest model number used by the structure viewer (likely 0 or
+   * 1)
+   * 
+   * @return
+   */
+  // TODO remove by refactoring so command generation is purely driven by
+  // AtomSpecModel objects derived in the binding classes?
+  int getModelStartNo();
+
+  /**
+   * Show only the backbone of the peptide (cartoons in Jmol, chain in Chimera)
+   * 
+   * @return
+   */
+  String showBackbone();
 }