Class

GLModel

GLModel()

GLModel represents a group of related atoms

Constructor

# new GLModel()

View Source GLModel.ts, line 24

Classes

GLModel

Methods

# addAtomSpecs(customAtomSpecs)

add atomSpecs to validAtomSelectionSpecs

Parameters:
Name Type Description
customAtomSpecs Array

array of strings that can be used as atomSelectionSpecs
this is to prevent the 'Unknown Selector x' message on the console for the strings passed.
These messages are no longer generated as, in theory, typescript will catch problems at compile time.
In practice, there may still be issues at run-time but we don't check for them...

What we should do is use something like https://github.com/woutervh-/typescript-is to do runtime
type checking, but it currently doesn't work with our types...

Deprecated:
  • Yes

View Source GLModel.ts, line 3078

# addAtoms(newatoms)

Add list of new atoms to model. Adjusts bonds appropriately.

Parameters:
Name Type Description
newatoms Array.<AtomSpec>

View Source GLModel.ts, line 2857

Example
var atoms = [{elem: 'C', x: 0, y: 0, z: 0, bonds: [1,2], bondOrder: [1,2]}, {elem: 'O', x: -1.5, y: 0, z: 0, bonds: [0]},{elem: 'O', x: 1.5, y: 0, z: 0, bonds: [0], bondOrder: [2]}];
       
        viewer.setBackgroundColor(0xffffffff);
        var m = viewer.addModel();
        m.addAtoms(atoms);
        m.setStyle({},{stick:{}});
        viewer.zoomTo();
        viewer.render();

# addFrame(atoms)

Add atoms as frames of model

Parameters:
Name Type Description
atoms Array.<AtomSpec>

atoms to be added

View Source GLModel.ts, line 2767

# addMolData(data, format, options)

add atoms to this model from molecular data string

Parameters:
Name Type Description
data string | ArrayBuffer

atom structure file input data string, for gzipped input use ArrayBuffer

format string

input file string format (e.g 'pdb', 'sdf', 'sdf.gz', etc.)

options ParserOptionsSpec

format dependent options. Attributes depend on the input format

View Source GLModel.ts, line 2799

# addPropertyLabels(prop, sel, viewer, options)

Create labels for atoms that show the value of the passed property.

Parameters:
Name Type Description
prop String

property name

sel AtomSelectionSpec
viewer GLViewer
options LabelSpec

View Source GLModel.ts, line 3026

# addResLabels(sel, viewer, options, byframe)

Create labels for residues of selected atoms.
Will create a single label at the center of mass of all atoms
with the same chain,resn, and resi.

Parameters:
Name Type Description
sel AtomSelectionSpec
viewer GLViewer
options LabelSpec
byframe boolean

if true, create labels for every individual frame, not just current; frames must be loaded already

View Source GLModel.ts, line 3038

# assignBonds()

Assign bonds based on atomic coordinates.
This currently uses a primitive distance-based algorithm that does not
consider valence constraints and will only create single bonds.

View Source GLModel.ts, line 2864

# atomIsSelected(atom, sel) → {boolean}

given a selection specification, return true if atom is selected.
Does not support context-aware selectors like expand/within/byres.

Parameters:
Name Type Description
atom AtomSpec
sel AtomSelectionSpec

View Source GLModel.ts, line 2809

boolean

# createMolObj()

param {AtomSpec[]} atoms

View Source GLModel.ts, line 880

# drawAtomClickSphere()

Register atom shaped click handlers

View Source GLModel.ts, line 459

# drawAtomCross(atom, geos)

Parameters:
Name Type Description
atom AtomSpec
geos Record.<number, Geometry>

View Source GLModel.ts, line 157

# drawAtomSphere(atom, geo)

Parameters:
Name Type Description
atom AtomSpec
geo Geometry

View Source GLModel.ts, line 443

# drawBondLines(atom, atoms, geos)

Parameters:
Name Type Description
atom AtomSpec
atoms Array.<AtomSpec>
geos Record.<number, Geometry>

View Source GLModel.ts, line 298

# enableContextMenu(sel, contextMenuEnabled)

enable context menu of selected atoms

Parameters:
Name Type Description
sel AtomSelectionSpec

atom selection to apply hoverable settings to

contextMenuEnabled boolean

whether contextMenu-handling is enabled for the selection

View Source GLModel.ts, line 2921

# expandAtomList()

returns a list of atoms in the expanded bounding box, but not in the current one

Bounding box:

[ [ xmin, ymin, zmin ],
[ xmax, ymax, zmax ],
[ xctr, yctr, zctr ] ]

View Source GLModel.ts, line 1693

# exportVRML()

return a VRML string representation of the model. Does not include VRML header information

View Source GLModel.ts, line 2978

VRML

# getCrystData()

Returns crystallographic information if present.

View Source GLModel.ts, line 2690

# getID() → {number}

Returns model id number

View Source GLModel.ts, line 2741

Model ID

number

# getInternalState()

Return object representing internal state of
the model appropriate for passing to setInternalState

View Source GLModel.ts, line 2674

# getNumFrames() → {number}

Returns model's frames property, a list of atom lists

View Source GLModel.ts, line 2749

number

# getRadiusFromStyle(atom, style) → {number}

Parameters:
Name Type Description
atom AtomSpec
style atomstyle

View Source GLModel.ts, line 134

number

# getSymmetries() → {Array.<Matrix4>}

Returns list of rotational/translational matrices if there is BIOMT data
Otherwise returns a list of just the ID matrix

View Source GLModel.ts, line 2724

Array.<Matrix4>

# globj(group, Object)

manage the globj for this model in the possed modelGroup - if it has to be regenerated, remove and add

Parameters:
Name Type Description
group Object3D
Object

options

View Source GLModel.ts, line 2972

# hide()

Don't show this model in future renderings. Keep all styles and state
so it can be efficiencly shown again.

  • @see GLModel#show

View Source GLModel.ts, line 3001

Example
$3Dmol.download("pdb:3ucr",viewer,{},function(){  
        viewer.setStyle({},{stick:{}});
        viewer.getModel().hide();  
        viewer.render();
        });

# removeAtoms(badatoms)

Remove specified atoms from model

Parameters:
Name Type Description
badatoms Array.<AtomSpec>

list of atoms

View Source GLModel.ts, line 2871

# removegl(group)

Remove any renderable mol object from scene

Parameters:
Name Type Description
group Object3D

View Source GLModel.ts, line 2985

# selectedAtoms(sel) → {Array.<Object>}

return list of atoms selected by sel, this is specific to glmodel

Parameters:
Name Type Description
sel AtomSelectionSpec

View Source GLModel.ts, line 2841

Array.<Object>
Example
$3Dmol.download("pdb:4wwy",viewer,{},function(){
              var atoms = viewer.selectedAtoms({chain:'A'});
              for(var i = 0, n = atoms.length; i < n; i++) {
                 atoms[i].b = 0.0;
              }
              viewer.setStyle({cartoon:{colorscheme:{prop:'b',gradient: 'roygb',min:0,max:30}}});
              viewer.render();
          });

# setClickable(sel, clickable, callback)

Set clickable and callback of selected atoms

Parameters:
Name Type Description
sel AtomSelectionSpec

atom selection to apply clickable settings to

clickable boolean

whether click-handling is enabled for the selection

callback function

function called when an atom in the selection is clicked

View Source GLModel.ts, line 2903

# setColorByElement(sel, colors)

given a mapping from element to color, set atom colors

Parameters:
Name Type Description
sel AtomSelectionSpec
colors object

View Source GLModel.ts, line 2929

# setColorByFunction(sel, func)

Parameters:
Name Type Description
sel AtomSelectionSpec

selection object

func function

function to be used to set the color

Deprecated:
  • use setStyle and colorfunc attribute

View Source GLModel.ts, line 2956

Example
$3Dmol.download("pdb:4UAA",viewer,{},function(){
              viewer.setBackgroundColor(0xffffffff);
              var colorAsSnake = function(atom) {
                return atom.resi % 2 ? 'white': 'green'
              };
     
              viewer.setStyle( {}, { cartoon: {colorfunc: colorAsSnake }});
     
              viewer.render();
          });

# setColorByProperty(sel, prop, scheme)

Parameters:
Name Type Description
sel AtomSelectionSpec
prop string
scheme Gradient | string

View Source GLModel.ts, line 2937

# setCoordinates(str, format)

Set coordinates for the atoms from provided trajectory file.

Parameters:
Name Type Description
str string | ArrayBuffer

contains the data of the file

format string

contains the format of the file (mdcrd, inpcrd, pdb, netcdf, or array). Arrays should be TxNx3 where T is the number of timesteps and N the number of atoms.

View Source GLModel.ts, line 3064

Example
let m = viewer.addModel()  //create an empty model
         m.addAtoms([{x:0,y:0,z:0,elem:'C'},{x:2,y:0,z:0,elem:'C'}]) //provide a list of dictionaries representing the atoms
         viewer.setStyle({'sphere':{}})
         m.setCoordinates([[[0.0, 0.0, 0.0], [2.0, 0.0, 0.0]], [[0.0, 0.0, 0.0], [2.8888888359069824, 0.0, 0.0]], [[0.0, 0.0, 0.0], [3.777777671813965, 0.0, 0.0]], [[0.0, 0.0, 0.0], [4.666666507720947, 0.0, 0.0]], [[0.0, 0.0, 0.0], [5.55555534362793, 0.0, 0.0]], [[0.0, 0.0, 0.0], [6.44444465637207, 0.0, 0.0]], [[0.0, 0.0, 0.0], [7.333333492279053, 0.0, 0.0]], [[0.0, 0.0, 0.0], [8.222222328186035, 0.0, 0.0]], [[0.0, 0.0, 0.0], [9.11111068725586, 0.0, 0.0]], [[0.0, 0.0, 0.0], [10.0, 0.0, 0.0]]],'array');
         viewer.animate({loop: "forward",reps: 1});
         viewer.zoomTo();
         viewer.zoom(0.5);
         viewer.render();

# setCoordinatesFromURL(url, path) → {Promise}

Set coordinates from remote trajectory file.

Parameters:
Name Type Description
url string

contains the url where mdsrv has been hosted

path string

contains the path of the file (/filename)

View Source GLModel.ts, line 3047

Promise

# setCrystData(a, b, c, alpha, beta, gamma)

Set crystallographic information using three angles and three lengths

Parameters:
Name Type Description
a number

length of unit cell side

b number

length of unit cell side

c number

length of unit cell side

alpha number

unit cell angle in degrees (default 90)

beta number

unit cell angle in degrees (default 90)

gamma number

unit cell angle in degrees (default 90)

View Source GLModel.ts, line 2703

# setCrystMatrix(matrix)

Set the crystallographic matrix to the given matrix.

This function removes a, b, c, alpha, beta, gamma from
the crystal data.

Parameters:
Name Type Description
matrix Matrix3

unit cell matrix

View Source GLModel.ts, line 2714

# setFrame(framenum) → {Promise}

Sets model's atomlist to specified frame
Sets to last frame if framenum out of range

Parameters:
Name Type Description
framenum number

model's atoms are set to this index in frames list

View Source GLModel.ts, line 2759

Promise

# setHoverable(sel, hoverable, hover_callback, unhover_callback)

Set hoverable and callback of selected atoms

Parameters:
Name Type Description
sel AtomSelectionSpec

atom selection to apply hoverable settings to

hoverable boolean

whether hover-handling is enabled for the selection

hover_callback function

function called when an atom in the selection is hovered over

unhover_callback function

function called when the mouse moves out of the hover area

View Source GLModel.ts, line 2913

# setInternalState(state)

Overwrite the internal model state with the passed state.

Parameters:
Name Type Description
state

View Source GLModel.ts, line 2682

# setStyle(sel, style, add)

Set atom style of selected atoms

Parameters:
Name Type Description
sel AtomSelectionSpec
style AtomStyleSpec
add boolean

if true, add to current style, don't replace

View Source GLModel.ts, line 2894

Example
$3Dmol.download("pdb:4UB9",viewer,{},function(){
              viewer.setBackgroundColor(0xffffffff);
     
              viewer.setStyle({chain:'A'},{line:{hidden:true,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.Sinebow($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'B'},{line:{colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.Sinebow($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'C'},{cross:{hidden:true,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.Sinebow($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'D'},{cross:{colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.RWB($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'E'},{cross:{radius:2.0,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.RWB($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'F'},{stick:{hidden:true,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.RWB($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'G'},{stick:{radius:0.8,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.ROYGB($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.setStyle({chain:'H'},{stick:{singleBonds:true,colorscheme:{prop:'b',gradient: new $3Dmol.Gradient.ROYGB($3Dmol.getPropertyRange(viewer.selectedAtoms(),'b'))}}});
              viewer.render();
          });

# setSymmetries(list)

Sets symmetries based on specified matrices in list

Parameters:
Name Type Description
list Array.<Matrix4>

View Source GLModel.ts, line 2733

# show()

Unhide a hidden model

See:

View Source GLModel.ts, line 3016

Example
$3Dmol.download("pdb:3ucr",viewer,{},function(){  
        viewer.setStyle({},{stick:{}});
        viewer.getModel().hide();  
        viewer.render(  )
        viewer.getModel().show()
        viewer.render();
        });

# toCDObject(whether) → {Object}

Convert the model into an object in the format of a ChemDoodle JSON model.

Parameters:
Name Type Description
whether boolean

or not to include style information. Defaults to false.

View Source GLModel.ts, line 2964

Object

# vibrate(numFrames, amplitude, bothWays, viewer, arrowSpec)

If model atoms have dx, dy, dz properties (in some xyz files), vibrate populates the model's frame property based on parameters.
Model can then be animated

Parameters:
Name Type Description
numFrames number

number of frames to be created, default to 10

amplitude number

amplitude of distortion, default to 1 (full)

bothWays boolean

if true, extend both in positive and negative directions by numFrames

viewer GLViewer

required if arrowSpec is provided

arrowSpec ArrowSpec

specification for drawing animated arrows. If color isn't specified, atom color (sphere, stick, line preference) is used.

View Source GLModel.ts, line 2790

Example
$3Dmol.download("pdb:4UAA",viewer,{},function(){  
        viewer.setStyle({},{stick:{}});
        viewer.vibrate(10, 1);
        viewer.animate({loop: "forward",reps: 1});
     
        viewer.zoomTo();
              viewer.render();
          });