package jalview.structure;
import jalview.api.AlignmentViewPanel;
-import jalview.api.SequenceRenderer;
import jalview.datamodel.SequenceI;
import java.awt.Color;
*/
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
/**
* 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
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();
}