Class PyMOLScene

java.lang.Object
org.jmol.adapter.readers.pymol.PyMOLScene
All Implemented Interfaces:
JmolSceneGenerator

class PyMOLScene extends Object implements JmolSceneGenerator
A class to allow manipulation of scenes dissociated from file loading. A "scene" in this context is a distillation of PyMOL information into a Hashtable for easier retrieval using RESTORE SCENE name.
  • Field Details

    • vwr

      private Viewer vwr
    • pymolVersion

      private int pymolVersion
    • bsHidden

      javajs.util.BS bsHidden
    • bsNucleic

      javajs.util.BS bsNucleic
    • bsNonbonded

      javajs.util.BS bsNonbonded
    • bsLabeled

      javajs.util.BS bsLabeled
    • bsHydrogen

      javajs.util.BS bsHydrogen
    • bsNoSurface

      javajs.util.BS bsNoSurface
    • htSpacefill

      private Map<Float,javajs.util.BS> htSpacefill
    • ssMapAtom

      private Map<String,javajs.util.BS> ssMapAtom
    • atomColorList

      private javajs.util.Lst<Integer> atomColorList
    • occludedObjects

      private Map<String,Boolean> occludedObjects
    • labels

      private Map<Integer,Text> labels
    • colixes

      private short[] colixes
    • frameObj

      private JmolObject frameObj
    • groups

      private Map<String,PyMOLGroup> groups
    • objectSettings

      private Map<Integer,javajs.util.Lst<Object>> objectSettings
    • bsCartoon

      private javajs.util.BS bsCartoon
    • htCarveSets

      private Map<String,javajs.util.BS> htCarveSets
    • htDefinedAtoms

      private Map<String,javajs.util.BS> htDefinedAtoms
    • htHiddenObjects

      private Map<String,Boolean> htHiddenObjects
    • moleculeNames

      private javajs.util.Lst<String> moleculeNames
    • jmolObjects

      private javajs.util.Lst<JmolObject> jmolObjects
    • htAtomMap

      private Map<String,int[]> htAtomMap
    • htObjectAtoms

      private Map<String,javajs.util.BS> htObjectAtoms
    • htObjectGroups

      private Map<String,String> htObjectGroups
    • htMeasures

      private Map<String,MeasurementData[]> htMeasures
    • htObjectSettings

      private Map<String,Map<Integer,javajs.util.Lst<Object>>> htObjectSettings
    • objectInfo

      private Map<String,Object[]> objectInfo
    • settings

      private javajs.util.Lst<Object> settings
    • htStateSettings

      private Map<String,Map<Integer,javajs.util.Lst<Object>>> htStateSettings
    • stateSettings

      private Map<Integer,javajs.util.Lst<Object>> stateSettings
    • uniqueSettings

      private Map<Integer,javajs.util.Lst<Object>> uniqueSettings
    • uniqueList

      private Map<Integer,Integer> uniqueList
    • bsUniqueBonds

      private javajs.util.BS bsUniqueBonds
    • bgRgb

      private int bgRgb
    • dotColor

      private int dotColor
    • surfaceMode

      private int surfaceMode
    • surfaceColor

      private int surfaceColor
    • cartoonColor

      private int cartoonColor
    • ribbonColor

      private int ribbonColor
    • sphereColor

      private int sphereColor
    • labelFontId

      private int labelFontId
    • labelColor

      private int labelColor
    • cartoonTranslucency

      private float cartoonTranslucency
    • ribbonTranslucency

      private float ribbonTranslucency
    • labelSize

      private float labelSize
    • meshWidth

      private float meshWidth
    • nonbondedSize

      private float nonbondedSize
    • nonbondedTranslucency

      private float nonbondedTranslucency
    • sphereScale

      private float sphereScale
    • sphereTranslucency

      private float sphereTranslucency
    • stickTranslucency

      private float stickTranslucency
    • transparency

      private float transparency
    • cartoonLadderMode

      private boolean cartoonLadderMode
    • cartoonRockets

      private boolean cartoonRockets
    • haveNucleicLadder

      private boolean haveNucleicLadder
    • labelPosition

      private javajs.util.P3 labelPosition
    • labelPosition0

      private javajs.util.P3 labelPosition0
    • objectName

      private String objectName
    • objectNameID

      private String objectNameID
    • objectJmolName

      private String objectJmolName
    • objectType

      private int objectType
    • bsAtoms

      private javajs.util.BS bsAtoms
    • objectHidden

      private boolean objectHidden
    • reader

      private PymolAtomReader reader
    • uniqueIDs

      private int[] uniqueIDs
    • cartoonTypes

      private int[] cartoonTypes
    • sequenceNumbers

      private int[] sequenceNumbers
    • newChain

      private boolean[] newChain
    • radii

      private float[] radii
    • baseModelIndex

      private int baseModelIndex
    • baseAtomIndex

      private int baseAtomIndex
    • stateCount

      private int stateCount
    • mepList

      String mepList
    • doCache

      boolean doCache
    • haveScenes

      private boolean haveScenes
    • bsCarve

      private javajs.util.BS bsCarve
    • solventAccessible

      private boolean solventAccessible
    • bsLineBonds

      private javajs.util.BS bsLineBonds
    • bsStickBonds

      private javajs.util.BS bsStickBonds
    • thisState

      private int thisState
    • currentAtomSetIndex

      int currentAtomSetIndex
    • surfaceInfoName

      String surfaceInfoName
    • ptTemp

      private final javajs.util.P3 ptTemp
    • MEAS_DIGITS

      private static final int[] MEAS_DIGITS
  • Constructor Details

    • PyMOLScene

      PyMOLScene(PymolAtomReader reader, Viewer vwr, javajs.util.Lst<Object> settings, Map<Integer,javajs.util.Lst<Object>> uniqueSettings, int pymolVersion, boolean haveScenes, int baseAtomIndex, int baseModelIndex, boolean doCache, String filePath)
  • Method Details

    • clearReaderData

      private void clearReaderData()
    • setUniqueBond

      void setUniqueBond(int index, int uniqueID)
    • setStateCount

      void setStateCount(int stateCount)
    • colorSetting

      private int colorSetting(int i)
    • pointSetting

      private javajs.util.P3 pointSetting(int i)
    • ensureCapacity

      void ensureCapacity(int n)
    • setReaderObjectInfo

      void setReaderObjectInfo(String name, int type, String groupName, boolean isHidden, javajs.util.Lst<Object> listObjSettings, javajs.util.Lst<Object> listStateSettings, String ext)
    • listToSettings

      private void listToSettings(javajs.util.Lst<Object> list, Map<Integer,javajs.util.Lst<Object>> objectSettings)
    • getObjectSettings

      private void getObjectSettings()
    • setAtomInfo

      void setAtomInfo(int[] uniqueIDs, int[] cartoonTypes, int[] sequenceNumbers, boolean[] newChain, float[] radii)
    • setSceneObject

      private void setSceneObject(String name, int istate)
      Set scene object/state-specific global fields and settings based on the name and state or stored values from when the file was loaded.
      Parameters:
      name -
      istate -
    • buildScene

      void buildScene(String name, javajs.util.Lst<Object> thisScene, Map<String,javajs.util.Lst<Object>> htObjNames, Map<String,javajs.util.Lst<Object>> htSecrets)
      Build a scene at file reading time. We only implement frame-specific scenes. Creates a map of information that can be used later and will also be a reference to this instance of PyMOLScene, which is an implementation of JmolSceneGenerator.
      Parameters:
      name -
      thisScene -
      htObjNames -
      htSecrets -
    • generateScene

      public void generateScene(Map<String,Object> scene)
      Generate the saved scene using file settings preserved here and scene-specific information including frame, view, colors, visibilities, . Called by StateManager via implemented JmolSceneGenerator.
      Specified by:
      generateScene in interface JmolSceneGenerator
      Parameters:
      scene -
    • generateColors

      private void generateColors(Object[] colors)
      Set PyMOL "atom-wise" colors -- the colors that are defined initially as element colors but possibly set with the PyMOL 'color' command and are used when representation colors (cartoon, dots, etc.) are not defined (-1). This is the same as Jmol's inherited atom color.
      Parameters:
      colors -
    • processSelection

      void processSelection(javajs.util.Lst<Object> selection)
      process the selection sets (sele), (...)
      Parameters:
      selection -
    • getSelectionAtoms

      private javajs.util.BS getSelectionAtoms(javajs.util.Lst<Object> molecules, int istate, javajs.util.BS bs)
      Add selected atoms to a growing bit set.
      Parameters:
      molecules -
      istate -
      bs -
      Returns:
      bs for convenience
    • selectAllAtoms

      private void selectAllAtoms(javajs.util.Lst<Object> obj, int istate, javajs.util.BS bs)
      Collect all the atoms specified by an object state into a bit set.
      Parameters:
      obj -
      istate - 0 for "all states"
      bs -
    • generateVisibilities

      private void generateVisibilities(Map<String,Object> vis)
      Hide everything, then just make visible the sets of atoms specified in the visibility (i.e. "activity") list within scene_dict.
      Parameters:
      vis -
    • generateShapes

      private void generateShapes(Object[] reps)
      Create all Jmol shape objects.
      Parameters:
      reps -
    • getBS

      private javajs.util.BS getBS(javajs.util.Lst<Object> list)
    • getBsAtoms

      private void getBsAtoms(javajs.util.Lst<Object> list, int[] atomMap, javajs.util.BS bs)
    • setReaderObjects

      void setReaderObjects()
    • finalizeObjects

      private void finalizeObjects()
      Finally, we turn each JmolObject into its Jmol equivalent.
    • offsetObjects

      void offsetObjects()
    • getJmolObject

      private JmolObject getJmolObject(int id, javajs.util.BS bsAtoms, Object info)
    • addJmolObject

      private JmolObject addJmolObject(int id, javajs.util.BS bsAtoms, Object info)
    • getPymolView

      private float[] getPymolView(javajs.util.Lst<Object> view, boolean isViewObj)
      adds depth_cue, fog, and fog_start
      Parameters:
      view -
      isViewObj -
      Returns:
      22-element array
    • globalSetting

      float globalSetting(int i)
    • addGroup

      PyMOLGroup addGroup(javajs.util.Lst<Object> object, String parent, int type, javajs.util.BS bsAtoms)
      Create a hierarchical list of named groups as generally seen on the PyMOL app's right-hand object menu.
      Parameters:
      object -
      parent -
      type -
      bsAtoms -
      Returns:
      group
    • getGroup

      PyMOLGroup getGroup(String name)
    • finalizeVisibility

      void finalizeVisibility()
      Create group JmolObjects, and set hierarchical visibilities
    • setCarveSets

      void setCarveSets(Map<String,javajs.util.Lst<Object>> htObjNames)
    • setGroupVisibilities

      private void setGroupVisibilities()
    • defineAtoms

      private void defineAtoms(String name, javajs.util.BS bs)
    • getJmolName

      private String getJmolName(String name)
    • createShapeObjects

      void createShapeObjects(javajs.util.BS[] reps, boolean allowSurface, int ac0, int ac)
      create all objects for a given molecule or scene
      Parameters:
      reps -
      allowSurface -
      ac0 - > 0 for a molecule; -1 for a scene
      ac -
    • addLabel

      void addLabel(int atomIndex, int uniqueID, int atomColor, float[] labelPos, String label)
    • getUniqueFloatDef

      float getUniqueFloatDef(int id, int key, float defaultValue)
    • getUniquePoint

      javajs.util.P3 getUniquePoint(int id, int key, javajs.util.P3 pt)
    • getObjectSetting

      javajs.util.Lst<Object> getObjectSetting(int i)
    • booleanSetting

      boolean booleanSetting(int i)
    • floatSetting

      float floatSetting(int i)
    • stringSetting

      String stringSetting(int i)
    • getSetting

      private javajs.util.Lst<Object> getSetting(int i)
    • setLabelPosition

      float[] setLabelPosition(javajs.util.P3 offset, float[] labelPos)
    • addCGO

      String addCGO(javajs.util.Lst<Object> data, int color)
    • addMeasurements

      boolean addMeasurements(MeasurementData[] mdList, int nCoord, javajs.util.Lst<Object> list, javajs.util.BS bsReps, int color, javajs.util.Lst<Object> offsets, boolean haveLabels)
    • getViewScript

      javajs.util.SB getViewScript(javajs.util.Lst<Object> view)
    • getColix

      short getColix(int colorIndex, float translucency)
    • setAtomColor

      void setAtomColor(int atomColor)
    • setFrameObject

      void setFrameObject(int type, Object info)
    • fixName

      private String fixName(String name)
    • getObjectID

      String getObjectID(String name)
    • getObjectType

      private int getObjectType(String name)
    • setAtomMap

      javajs.util.BS setAtomMap(int[] atomMap, int ac0)
    • newTextLabel

      private Text newTextLabel(String label, float[] labelOffset, int colorIndex, int fontID, float fontSize)
    • setVersionSettings

      private void setVersionSettings()
      Attempt to adjust for PyMOL versions. See PyMOL layer3.Executive.c
    • addSetting

      private void addSetting(int key, int type, Object val)
    • fixReps

      private void fixReps(javajs.util.BS[] reps)
    • cleanSingletons

      private void cleanSingletons(javajs.util.BS bs)
      PyMOL does not display cartoons or traces for single-residue runs. This two-pass routine first sets bits in a residue bitset, then it clears out all singletons, and in a second pass all atom bits for not-represented residues are cleared.
      Parameters:
      bs -
    • createShapeObject

      private void createShapeObject(int shapeID, javajs.util.BS bs)
      Create JmolObjects for each shape. Note that LINES and STICKS are done initially, then all the others are processed.
      Parameters:
      shapeID -
      bs -
    • setUniqueObjects

      private JmolObject setUniqueObjects(int shape, javajs.util.BS bs, int setColor, int color, int setTrans, float trans, int setSize, float size, float f)
    • createSpacefillObjects

      private void createSpacefillObjects()
      Create a BALLS JmolObject for each radius.
    • createTraceObject

      private void createTraceObject(javajs.util.BS bs)
      trace, or cartoon in the case of cartoon ladders.
      Parameters:
      bs -
    • checkNucleicObject

      private void checkNucleicObject(javajs.util.BS bs, boolean isTrace)
    • createPuttyObject

      private void createPuttyObject(javajs.util.BS bs)
      "Putty" shapes scaled in a variety of ways.
      Parameters:
      bs -
    • createRibbonObject

      private void createRibbonObject(javajs.util.BS bs)
      PyMOL "ribbons" could be Jmol backbone or trace, depending upon the value of PyMOL.ribbon_sampling.
      Parameters:
      bs -
    • createCartoonObject

      private void createCartoonObject(String key, int sizeID)
    • addObject

      private JmolObject addObject(JmolObject obj)
    • setGroupVisible

      private void setGroupVisible(PyMOLGroup g, boolean parentVis)
      Iterate through groups, setting visibility flags.
      Parameters:
      g -
      parentVis -
    • getSSMapAtom

      javajs.util.BS getSSMapAtom(String ssType)
    • setAtomDefs

      Map<String,Object> setAtomDefs()
    • needSelections

      boolean needSelections()
    • setUniqueBonds

      void setUniqueBonds(javajs.util.BS bsBonds, boolean isSticks)
    • finalizeUniqueBonds

      private void finalizeUniqueBonds()
    • setBondParameters

      void setBondParameters(Bond b, int modelIndex, float rad, float pymolValence, int argb, float trans)
      used in PyMOL reader to set unique bond settings and for valence
      Parameters:
      b -
      modelIndex -
      rad -
      pymolValence - 1 for "show multiple bonds"
      argb -
      trans -
    • addMesh

      void addMesh(int tok, javajs.util.Lst<Object> obj, String objName, boolean isMep)
    • addIsosurface

      JmolObject addIsosurface(String objectName)