package jalview.structure; import jalview.api.AlignmentViewPanel; import jalview.datamodel.SequenceI; import java.awt.Color; import java.util.List; import java.util.Map; /** * Methods that generate commands that can be sent to a molecular structure * viewer program (e.g. Jmol, Chimera, ChimeraX) * * @author gmcarstairs * */ public interface StructureCommandsI { /** * Returns the command to colour by chain * * @return */ StructureCommandI colourByChain(); /** * Returns the command to colour residues using a charge-based scheme: * * * @return */ List colourByCharge(); /** * Returns the command to colour residues with the colours provided in the * map, one per three letter residue code * * @param colours * @return */ List colourByResidues(Map colours); /** * Returns the command to set the background colour of the structure viewer * * @param col * @return */ StructureCommandI setBackgroundColour(Color col); /** * Returns commands to colour mapped residues of structures according to * Jalview's colouring (including feature colouring if applied). Parameter is * a map from Color to a model of all residues assigned that colour. * * @param colourMap * @return */ List colourBySequence( Map colourMap); /** * Returns a command to centre the display in the structure viewer * * @return */ StructureCommandI focusView(); /** * Returns a command to show only the selected chains. The items in the input * list should be formatted as "modelid:chainid". * * @param toShow * @return */ List showChains(List toShow); /** * Returns zero, one or more commands to set attributes on mapped residues in * the structure viewer for any features present and displayed in Jalview * * @param ssm * @param files * @param sequence * @param avp * @return */ List 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 * {@code refAtoms}. If wanted, this may include commands to visually * highlight the residues that were used for the superposition. * * @param refAtoms * @param atomSpec * @return */ List superposeStructures(AtomSpecModel refAtoms, AtomSpecModel atomSpec); /** * Returns a command to open a file of commands at the given path * * @param path * @return */ StructureCommandI openCommandFile(String path); /** * Returns a command to save the current viewer session state to the given * file * * @param filepath * @return */ StructureCommandI 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(); /** * Returns command(s) to show only the backbone of the peptide (cartoons in * Jmol, chain in Chimera) * * @return */ List showBackbone(); /** * Returns a command to open a file at the given path * * @param file * @return */ // refactor if needed to distinguish loading data or session files StructureCommandI loadFile(String file); }