== State Parameters and Transitions == Need to identify all the possible state parameters that can be changed between two states. All of those parameters need to be retained, probably in some form of immutable data type (tuple) within a dictionary for easy access to several parameter groups (viewer, volumes, surfaces, models, labels, etc.). Some of the elements in a state may have shared spatial parameters (e.g., molecular surfaces, molecules, and atoms may share a common spatial transform). * [wiki:ChimeraProgrammingResources Programming resources], including commonly used modules for access to molecular data attributes * [wiki:ChimeraAnimationState Animation State Parameters] === Integrity Checking === Take a look at the code for {{{chimera.update.checkForChanges()}}}. This may be helpful in checking the validity of state parameters and in automatically detecting changes for transitions. Also, {{{chimera.openModels.addRemoveHandler(func, data)}}} might be used to add a trigger handler when removing models. This might be useful in the creation of a state instance as a way to maintain integrity or validity of the saved state. It may depend on whether the state instance keeps a reference or a copy of models in the saved state. For efficiency, it is better to keep a reference. For validity, it could be better to keep a copy. Perhaps a copy is required only when a model is removed, so the copy action could be triggered then. If a state instance that is registered as a handler is deleted, then call {{{chimera.openModels.deleteRemoveHandler(handler)}}} to delete the trigger handler. == Transforms == === Molecular morphing === For example, morphing of 3por to 2por, see http://molmovdb.mbb.yale.edu/cgi-bin/morph.cgi?ID=009069-29776 This is probably handled already in Chimera. Should it be some kind of transition parameter for the animation extension?