Classes
Members
userContextMenuHandler :function|null
User specified function for handling a context menu event.
Handler is passed the selected object, x and y in canvas coordinates,
and original event.
- function |
null
- Source
Methods
addArrow(spec) → {GLShape}
Create and add arrow shape
| Name | Type | Description |
|---|---|---|
spec | ArrowSpec | Style specification |
- Source
- Type:
- GLShape
$3Dmol.download("pdb:4DM7",viewer,{},function(){
viewer.setBackgroundColor(0xffffffff);
viewer.addArrow({
start: {x:-10.0, y:0.0, z:0.0},
end: {x:0.0, y:-10.0, z:0.0},
radius: 1.0,
radiusRadio:1.0,
mid:1.0,
clickable:true,
callback:function(){
this.color.setHex(0xFF0000FF);
viewer.render( );
}
});
viewer.render();
});addAsOneMolecule(data, format) → {GLModel}
Create and add model to viewer. Given multimodel file and its format,
all atoms are added to one model
| Name | Type | Description |
|---|---|---|
data | string | Input data |
format | string | Input format (see |
- Source
- Type:
- GLModel
$3Dmol.get('../test_structs/multiple.sdf', function(data){
viewer.addAsOneMolecule(data, "sdf");
viewer.zoomTo();
viewer.render();
});addBox(spec) → {GLShape}
Create and add box shape. This method provides a shorthand
way to create a box shape object
| Name | Type | Description |
|---|---|---|
spec | BoxSpec | Box shape style specification |
- Source
- Type:
- GLShape
viewer.addLine({color:'red',start:{x:0,y:0,z:0},end:{x:5,y:0,z:0}});
viewer.addLine({color:'blue',start:{x:0,y:0,z:0},end:{x:0,y:5,z:0}});
viewer.addLine({color:'green',start:{x:0,y:0,z:0},end:{x:0,y:0,z:5}});
viewer.addBox({center:{x:0,y:0,z:0},dimensions: {w:3,h:4,d:2},color:'magenta'});
viewer.zoomTo();
viewer.rotate(45, {x:1,y:1,z:1});
viewer.render();addCurve(spec) → {GLShape}
Create and add Curve shape
| Name | Type | Description |
|---|---|---|
spec | CurveSpec | Style specification |
- Source
- Type:
- GLShape
viewer.addCurve({points: [{x:0.0,y:0.0,z:0.0}, {x:5.0,y:3.0,z:0.0}, {x:5.0,y:7.0,z:0.0}, {x:0.0,y:10.0,z:0.0}],
radius:0.5,
smooth: 10,
fromArrow:false,
toArrow: true,
color:'orange',
});
viewer.addCurve({points: [{x:-1,y:0.0,z:0.0}, {x:-5.0,y:5.0,z:0.0}, {x:-2,y:10.0,z:0.0}],
radius:1,
fromArrow:true,
toArrow: false,
color:'purple',
});
viewer.zoomTo();
viewer.render();addCustom(spec) → {GLShape}
Add custom shape component from user supplied function
| Name | Type | Description |
|---|---|---|
spec | CustomSpec | Style specification |
- Source
- Type:
- GLShape
function triangle(viewer) {
var vertices = [];
var normals = [];
var colors = [];
var r = 20;
//triangle
vertices.push(new $3Dmol.Vector3(0,0,0));
vertices.push(new $3Dmol.Vector3(r,0,0));
vertices.push(new $3Dmol.Vector3(0,r,0));
normals.push(new $3Dmol.Vector3(0,0,1));
normals.push(new $3Dmol.Vector3(0,0,1));
normals.push(new $3Dmol.Vector3(0,0,1));
colors.push({r:1,g:0,b:0});
colors.push({r:0,g:1,b:0});
colors.push({r:0,g:0,b:1});
var faces = [ 0,1,2 ];
var spec = {vertexArr:vertices, normalArr: normals, faceArr:faces,color:colors};
viewer.addCustom(spec);
}
triangle(viewer);
viewer.render();addCylinder(spec) → {GLShape}
Create and add cylinder shape
| Name | Type | Description |
|---|---|---|
spec | CylinderSpec | Style specification |
- Source
- Type:
- GLShape
viewer.setBackgroundColor(0xffffffff);
viewer.addCylinder({start:{x:0.0,y:0.0,z:0.0},
end:{x:10.0,y:0.0,z:0.0},
radius:1.0,
fromCap:1,
toCap:2,
color:'red',
hoverable:true,
clickable:true,
callback:function(){ this.color.setHex(0x00FFFF00);viewer.render( );},
hover_callback: function(){ viewer.render( );},
unhover_callback: function(){ this.color.setHex(0xFF000000);viewer.render( );}
});
viewer.addCylinder({start:{x:0.0,y:2.0,z:0.0},
end:{x:0.0,y:10.0,z:0.0},
radius:0.5,
fromCap:false,
toCap:true,
color:'teal'});
viewer.addCylinder({start:{x:15.0,y:0.0,z:0.0},
end:{x:20.0,y:0.0,z:0.0},
radius:1.0,
color:'black',
fromCap:false,
toCap:false});
viewer.render();addIsosurface(data, spec) → {GLShape}
Construct isosurface from volumetric data. This is more flexible
than addVolumetricData, but can not be used with py3Dmol.
| Name | Type | Description |
|---|---|---|
data | VolumeData | volumetric data |
spec | IsoSurfaceSpec | Shape style specification |
- Source
- Type:
- GLShape
$3Dmol.get('../test_structs/benzene-homo.cube', function(data){
var voldata = new $3Dmol.VolumeData(data, "cube");
viewer.addIsosurface(voldata, {isoval: 0.01,
color: "blue"});
viewer.addIsosurface(voldata, {isoval: -0.01,
color: "red"});
viewer.zoomTo();
viewer.render();
});addLabel(text, options, sel, noshow) → {Label}
Add label to viewer
| Name | Type | Description |
|---|---|---|
text | string | Label text |
options | LabelSpec | Label style specification |
sel | AtomSelection | Set position of label to center of this selection |
noshow | boolean | if true, do not immediately display label - when adding multiple labels this is more efficient |
- Source
- Type:
- Label
$3Dmol.download("pdb:2EJ0",viewer,{},function(){
viewer.addLabel("Aromatic", {position: {x:-6.89, y:0.75, z:0.35}, backgroundColor: 0x800080, backgroundOpacity: 0.8});
viewer.addLabel("Label",{font:'sans-serif',fontSize:18,fontColor:'white',fontOpacity:1,borderThickness:1.0,
borderColor:'red',borderOpacity:0.5,backgroundColor:'black',backgroundOpacity:0.5,
position:{x:50.0,y:0.0,z:0.0},inFront:true,showBackground:true});
viewer.setStyle({chain:'A'},{cross:{hidden:true}});
viewer.setStyle({chain:'B'},{cross:{hidden:false,
linewidth:1.0,
colorscheme:'greenCarbon'}});
viewer.setStyle({chain:'C'},{cross:{hidden:false,
linewidth:1.0,
radius:0.5}});
viewer.setStyle({chain:'D'},{cross:{hidden:false,
linewidth:10.0}});
viewer.setStyle({chain:'E'},{cross:{hidden:false,
linewidth:1.0,
color:'black'}});
viewer.render();
});addLine(spec) → {GLShape}
Create and add line shape
| Name | Type | Description |
|---|---|---|
spec | LineSpec | Style specification, can specify dashed, dashLength, and gapLength |
- Source
- Type:
- GLShape
$3Dmol.download("pdb:2ABJ",viewer,{},function(){
viewer.setViewStyle({style:"outline"});
viewer.setStyle({chain:'A'},{sphere:{hidden:true}});
viewer.setStyle({chain:'D'},{sphere:{radius:3.0}});
viewer.setStyle({chain:'G'},{sphere:{colorscheme:'greenCarbon'}});
viewer.setStyle({chain:'J'},{sphere:{color:'blue'}});
viewer.addLine({dashed:true,start:{x:0,y:0,z:0},end:{x:100,y:100,z:100}});
viewer.render();
});addLineDashed(spec, s)
Add dashed line to shape
| Name | Type | Description |
|---|---|---|
spec | CylinderSpec | |
s | GLShape |
- Source
addMesh(mesh, style) → {number}
Adds an explicit mesh as a surface object.
| Name | Type | Description |
|---|---|---|
mesh | Mesh | |
style | Object |
- Source
surfid
- Type:
- number
addModel(data, format, options) → {GLModel}
Create and add model to viewer, given molecular data and its format
| Name | Type | Description |
|---|---|---|
data | string | Input data |
format | string | Input format ('pdb', 'sdf', 'xyz', 'pqr', or 'mol2') |
options | ParserOptionsSpec | format dependent options. Attributes depend on the input file format. |
- Source
- Type:
- GLModel
viewer.setViewStyle({style:"outline"});
$3Dmol.get('data/1fas.pqr', function(data){
viewer.addModel(data, "pqr");
$3Dmol.get("data/1fas.cube",function(volumedata){
viewer.addSurface($3Dmol.SurfaceType.VDW, {opacity:0.85,voldata: new $3Dmol.VolumeData(volumedata, "cube"), volscheme: new $3Dmol.Gradient.RWB(-10,10)},{});
viewer.render();
});
viewer.zoomTo();
});addModels(data, format) → {Array.<GLModel>}
Given multimodel file and its format, add atom data to the viewer as separate models
and return list of these models
| Name | Type | Description |
|---|---|---|
data | string | Input data |
format | string | Input format (see |
- Source
- Type:
- Array.<GLModel>
addModelsAsFrames(data, format) → {GLModel}
Create and add model to viewer. Given multimodel file and its format,
different atomlists are stored in model's frame
property and model's atoms are set to the 0th frame
| Name | Type | Description |
|---|---|---|
data | string | Input data |
format | string | Input format (see |
- Source
- Type:
- GLModel
$3Dmol.get('../test_structs/multiple2.xyz', function(data){
viewer.addModelsAsFrames(data, "xyz");
viewer.animate({loop: "forward",reps: 1});
viewer.setStyle({stick:{colorscheme:'magentaCarbon'}});
viewer.zoomTo();
viewer.render();
});addPropertyLabels(prop, sel, style)
Add property labels. This will generate one label per a selected
atom at the atom's coordinates with the property value as the label text.
| Name | Type | Description |
|---|---|---|
prop | string | property name |
sel | AtomSelectionSpec | |
style | AtomStyleSpec |
|
- Source
addResLabels(sel, style, byframe)
Add residue labels. This will generate one label per a
residue within the selected atoms. The label will be at the
centroid of the atoms and styled according to the passed style.
The label text will be [resn][resi]
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | |
style | AtomStyleSpec | |
byframe | boolean | if true, create labels for every individual frame, not just current |
- Source
$3Dmol.download("mmtf:2ll5",viewer,{},function(){
viewer.setStyle({stick:{radius:0.15},cartoon:{}});
viewer.addResLabels({hetflag:false}, {font: 'Arial', fontColor:'black',showBackground:false, screenOffset: {x:0,y:0}});
viewer.zoomTo();
viewer.render();
});addShape(shapeSpec) → {GLShape}
Add shape object to viewer
| Name | Type | Description |
|---|---|---|
shapeSpec | ShapeSpec | style specification for label |
- Source
- See
- {GLShape}
- Type:
- GLShape
addSphere(spec) → {GLShape}
Create and add sphere shape. This method provides a shorthand
way to create a spherical shape object
| Name | Type | Description |
|---|---|---|
spec | SphereShapeSpec | Sphere shape style specification |
- Source
- Type:
- GLShape
viewer.addSphere({center:{x:0,y:0,z:0},radius:10.0,color:'red'});
viewer.render();addStyle(sel, style)
Add style properties to all selected atoms
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | Atom selection specification. Can be omitted to select all |
style | AtomStyleSpec | style spec to add to specified atoms |
- Source
$3Dmol.download('pdb:5IRE',viewer,{doAssembly: false},function(m) {
viewer.setStyle({cartoon:{}});
//keep cartoon style, but show thick sticks for chain A
viewer.addStyle({chain:'A'},{stick:{radius:.5,colorscheme:"magentaCarbon"}});
viewer.zoomTo();
viewer.render();
});addSurface(type, style, atomsel, allsel, focus, surfacecallback) → {Promise}
Add surface representation to atoms
| Name | Type | Description |
|---|---|---|
type | SurfaceType | | Surface type (VDW, MS, SAS, or SES) |
style | SurfaceStyleSpec | optional style specification for surface material (e.g. for different coloring scheme, etc) |
atomsel | AtomSelectionSpec | Show surface for atoms in this selection |
allsel | AtomSelectionSpec | Use atoms in this selection to calculate surface; may be larger group than 'atomsel' |
focus | AtomSelectionSpec | Optionally begin rendering surface specified atoms |
surfacecallback | function | function to be called after setting the surface |
- Source
promise - Returns a promise that ultimately resovles to the surfid. Returns surfid immediately if surfacecallback is specified. Returned promise has a [surfid, GLViewer, style, atomsel, allsel, focus] fields for immediate access.
- Type:
- Promise
addUnitCell(model, spec)
Create and add unit cell visualization.
| Name | Type | Description |
|---|---|---|
model | GLModel | | Model with unit cell information (e.g., pdb derived). If omitted uses most recently added model. |
spec | UnitCellStyleSpec | visualization style |
- Source
$3Dmol.get('data/1jpy.cif', function(data) {
let m = viewer.addModel(data);
viewer.addUnitCell(m, {box:{color:'purple'},alabel:'X',blabel:'Y',clabel:'Z',alabelstyle: {fontColor: 'black',backgroundColor:'white',inFront:true,fontSize:40},astyle:{color:'darkred', radius:5,midpos: -10}});
viewer.zoomTo();
viewer.render();
});addVolumetricData(data, format, spec) → {GLShape}
Construct isosurface from volumetric data in gaussian cube format
| Name | Type | Description |
|---|---|---|
data | String | Input file contents |
format | String | Input file format |
spec | VolumetricRendererSpec | | Shape style specification |
- Source
- Type:
- GLShape
$3Dmol.get('data/bohr.cube', function(data) {
viewer.addVolumetricData(data, "cube", {isoval: -0.01, color: "red", opacity: 0.95});
viewer.setStyle({cartoon:{},stick:{}});
viewer.zoomTo();
viewer.render();
});addVolumetricRender(data, spec) → {GLShape}
Create volumetric renderer for volumetricData
| Name | Type | Description |
|---|---|---|
data | VolumeData | volumetric data |
spec | VolumetricRenderSpec | specification of volumetric render |
- Source
- Type:
- GLShape
animate(options)
Animate all models in viewer from their respective frames
| Name | Type | Description |
|---|---|---|
options | Object | can specify interval (speed of animation), loop (direction |
- Source
apngURI(nframes) → {Promise}
Return a promise that resolves to an animated PNG image URI of
viewer contents (base64 encoded) for nframes of viewer changes.
| Name | Type | Description |
|---|---|---|
nframes | number |
- Source
- Type:
- Promise
atomIsSelected(atom, sel) → {boolean}
| Name | Type | Description |
|---|---|---|
atom | AtomSpec | |
sel | AtomSelectionSpec |
- Source
- Type:
- boolean
carveUpExtent(extent, atomlist, atomstoshow) → {Array}
- Source
- Type:
- Array
center(selopt, animationDurationopt, fixedPathopt)
Re-center the viewer around the provided selection (unlike zoomTo, does not zoom).
| Name | Type | Attributes | Description |
|---|---|---|---|
sel | AtomSelectionSpec | <optional> | Selection specification specifying model and atom |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | Boolean | <optional> | if true animation is constrained to |
- Source
// if the user were to pass the animationDuration value to
// the function like so viewer.zoomTo({resn:'STI'},1000);
// the program would center on resn 'STI' over the course
// of 1 second(1000 milleseconds).
// Reposition to centroid of all atoms of all models in this
//viewer glviewer.center();
$3Dmol.get('data/4csv.pdb', function(data) {
viewer.addModel(data,'pdb');
viewer.setStyle({cartoon:{},stick:{}});
viewer.center();
viewer.render(callback);
});clear()
Clear scene of all objects
- Source
closeEnoughForClick(event, options)
Determine if a positioned event is "close enough" to mouseStart to be considered a click.
With a mouse, the position should be exact, but allow a slight delta for a touch interface.
| Name | Type | Description |
|---|---|---|
event | Event | |
options | Object |
- Source
createModelFrom(sel, extractopt) → {GLModel}
Create a new model from atoms specified by sel.
If extract, removes selected atoms from existing models
| Name | Type | Attributes | Description |
|---|---|---|---|
sel | AtomSelectionSpec | Atom selection specification | |
extract | boolean | <optional> | If true, remove selected atoms from existing models |
- Source
- Type:
- GLModel
enableContextMenu(sel, contextMenuEnabled)
enable context menu and callback of selected atoms
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | atom selection to apply hoverable settings to |
contextMenuEnabled | boolean | whether contextMenu-handling is enabled for the selection |
- Source
enableFog(fog)
Enable/disable fog for content far from the camera
| Name | Type | Description |
|---|---|---|
fog | boolean | whether to enable or disable the fog |
- Source
exportJSON(includeStyles, modelID) → {string}
Export one or all of the loaded models into ChemDoodle compatible JSON.
| Name | Type | Description |
|---|---|---|
includeStyles | boolean | Whether or not to include style information. |
modelID | number | Optional parameter for which model to export. If left out, export all of them. |
- Source
- Type:
- string
exportVRML()
return a VRML string representation of the scene. Include VRML header information
- Source
VRML
fitSlab(sel)
Adjust slab to fully enclose selection (default everything).
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | Selection specification specifying model and atom |
- Source
getAtomsFromSel(sel) → {Array.<AtomSpec>}
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec |
- Source
- Type:
- Array.<AtomSpec>
getCanvas() → {HTMLCanvasElement}
Return underlying canvas element.
- Source
- Type:
- HTMLCanvasElement
getConfig()
Return configuration of viewer
- Source
getFrame()
Gets the current viewer frame.
- Source
getInternalState()
Return object representing internal state of
the viewer appropriate for passing to setInternalState
- Source
getModel(idopt) → {GLModel}
Return specified model
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
id | number | <optional> | last model id | Retrieve model with specified id |
- Default Value
- Returns last model added to viewer or null if there are no models
- Source
- Type:
- GLModel
// Retrieve reference to first GLModel added var m =
$3Dmol.download("pdb:1UBQ",viewer,{},function(m1){
$3Dmol.download("pdb:1UBI", viewer,{}, function(m2) {
viewer.zoomTo();
m1.setStyle({cartoon: {color:'green'}});
//could use m2 here as well
viewer.getModel().setStyle({cartoon: {color:'blue'}});
viewer.render();
})
});getNumFrames() → {number}
Returns the number of frames that the model with the most frames in the viewer has
- Source
- Type:
- number
getPerceivedDistance() → {number}
Return the z distance between the model and the camera
- Source
distance
- Type:
- number
getRenderer()
Return renderer element.
- Source
getSlab() → {Object}
Get slab of view (contents outside of slab are clipped).
| Name | Type | Description |
|---|---|---|
near | number | near clipping plane distance |
far | number | far clipping plane distance |
- Source
- Type:
- Object
getSurface(surf)
Return surface object
| Name | Type | Description |
|---|---|---|
surf | number | surface id |
- Source
getUniqueValues(attribute, sel) → {Array.<Object>}
Returns valid values for the specified attribute in the given selection
| Name | Type | Description |
|---|---|---|
attribute | string | |
sel | AtomSelectionSpec |
- Source
- Type:
- Array.<Object>
getView() → {Array.<number>}
Returns an array representing the current viewpoint.
Translation, zoom, and rotation quaternion.
- Source
[ pos.x, pos.y, pos.z, rotationGroup.position.z, q.x, q.y, q.z, q.w ]
- Type:
- Array.<number>
hasVolumetricRender() → {boolean}
Return true if volumetric rendering is supported (WebGL 2.0 required)
- Source
- Type:
- boolean
isAnimated() → {boolean}
Return true if viewer is currently being animated, false otherwise
- Source
- Type:
- boolean
jmolMoveTo()
return Jmol moveto command to position this scene
- Source
linkViewer(otherview)
Synchronize this view matrix of this viewer to the passed viewer.
When the viewpoint of this viewer changes, the other viewer will
be set to this viewer's view.
| Name | Type | Description |
|---|---|---|
otherview | GLViewer |
- Source
mapAtomProperties(props,, sel)
Add specified properties to all atoms matching input argument
| Name | Type | Description |
|---|---|---|
props, | Object | either array of atom selectors with associated props, or function that takes atom and sets its properties |
sel | AtomSelectionSpec | subset of atoms to work on - model selection must be specified here |
- Source
$3Dmol.get('../test_structs/b.sdf', function(data){
viewer.addModel(data,'sdf');
let props = [];
//make the atom index a property x
for(let i = 0; i < 8; i++) {
props.push({index:i,props:{'x':i}});
}
viewer.mapAtomProperties(props);
viewer.setStyle({sphere:{colorscheme:{gradient:'roygb',prop:'x',min:0,max:8}}});
viewer.zoomTo();
viewer.render();
});modelToScreen() → {object|list}
Convert model coordinates to screen coordinates.
| Type | Description |
|---|---|
| object | | an object or list of objects with x,y,z attributes (e.g. an atom) |
- Source
- and object or list of {x: screenX, y: screenY}
- Type:
- object |
list
pauseAnimate()
Pause animation of all models in viewer
- Source
pdbData(sel) → {string}
Return pdb output of selected atoms (if atoms from pdb input)
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | Selection specification specifying model and atom properties to select. Default: all atoms in viewer |
- Source
PDB string of selected atoms
- Type:
- string
pngURI()
Return image URI of viewer contents (base64 encoded). *
- Source
removeAllLabels()
Remove all labels from viewer
- Source
$3Dmol.download("pdb:1ubq",viewer,{},function(){
viewer.addResLabels();
viewer.setStyle({},{stick:{}});
viewer.render( ); //show labels
viewer.removeAllLabels();
viewer.render(); //hide labels
});removeAllModels()
Delete all existing models
- Source
removeAllShapes()
Remove all shape objects from viewer
- Source
removeAllSurfaces()
Remove all surfaces.
- Source
removeLabel(label)
Remove label from viewer
| Name | Type | Description |
|---|---|---|
label | Label | $3Dmol label |
- Source
// Remove labels created in
$3Dmol.download("pdb:2EJ0",viewer,{},function(){
var toremove = viewer.addLabel("Aromatic", {position: {x:-6.89, y:0.75, z:0.35}, backgroundColor: 0x800080, backgroundOpacity: 0.8});
viewer.addLabel("Label",{font:'sans-serif',fontSize:18,fontColor:'white',fontOpacity:1,borderThickness:1.0,
borderColor:'red',borderOpacity:0.5,backgroundColor:'black',backgroundOpacity:0.5,
position:{x:50.0,y:0.0,z:0.0},inFront:true,showBackground:true});
viewer.removeLabel(toremove);
viewer.render();
});removeModel(model)
Delete specified model from viewer
| Name | Type | Description |
|---|---|---|
model | GLModel | |
- Source
removeShape(shape)
Remove shape object from viewer
| Name | Type | Description |
|---|---|---|
shape | GLShape | Reference to shape object to remove |
- Source
removeSurface(surf)
Remove surface with given ID
| Name | Type | Description |
|---|---|---|
surf | number | surface id |
- Source
removeUnitCell(model)
Remove unit cell visualization from model.
| Name | Type | Description |
|---|---|---|
model | GLModel | | Model with unit cell information (e.g., pdb derived). If omitted uses most recently added model. |
- Source
$3Dmol.get('data/icsd_200866.cif', function(data) {
let m = viewer.addModel(data);
viewer.setStyle({sphere:{}})
viewer.addUnitCell();
viewer.zoomTo();
viewer.removeUnitCell();
viewer.render();
});render(callbackopt, extsopt)
Render current state of viewer, after
adding/removing models, applying styles, etc.
| Name | Type | Attributes | Description |
|---|---|---|---|
callback | <optional> | ||
exts | <optional> |
- Source
replicateUnitCell(A, B, C, model, addBonds, prune)
Replicate atoms in model to form a super cell of the specified dimensions.
Original cell will be centered as much as possible.
| Name | Type | Description |
|---|---|---|
A | integer | number of times to replicate cell in X dimension. |
B | integer | number of times to replicate cell in Y dimension. If absent, X value is used. |
C | integer | number of times to replicate cell in Z dimension. If absent, Y value is used. |
model | GLModel | Model with unit cell information (e.g., pdb derived). If omitted uses most recently added model. |
addBonds | boolean | Create bonds between unit cells based on distances. |
prune | boolean | Keep only atoms that are within the original unit cell (i.e., on edges). Alternatively, call replicateUnitCell(1). |
- Source
$3Dmol.get('data/icsd_200866.cif', function(data) {
let m = viewer.addModel(data);
viewer.setStyle({sphere:{scale:.25}})
viewer.addUnitCell();
viewer.zoomTo();
viewer.replicateUnitCell(3,2,1,m);
viewer.render();
});resize()
Resize viewer according to containing HTML element's dimensions
- Source
resumeAnimate()
Resume animation of all models in viewer
- Source
rotate(angleopt, axisopt, animationDurationopt, fixedPathopt)
Rotate scene by angle degrees around axis
| Name | Type | Attributes | Description |
|---|---|---|---|
angle | number | <optional> | Angle, in degrees, to rotate by. |
axis | string | <optional> | Axis ("x", "y", "z", "vx", "vy", or "vz") to rotate around. |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | boolean | <optional> | if true animation is constrained to |
- Source
$3Dmol.download('cid:4000', viewer, {}, function() {
viewer.setStyle({stick:{}});
viewer.zoomTo();
viewer.rotate(90,'y',1);
viewer.render(callback);
});screenOffsetToModel()
For a given screen (x,y) displacement return model displacement
- Source
screenToModelDistance()
Distance from screen coordinate to model coordinate assuming screen point
is projected to the same depth as model coordinate
- Source
selectedAtoms(sel) → {Array.<AtomSpec>}
return list of atoms selected by sel
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec |
- Source
- Type:
- Array.<AtomSpec>
setAutoEyeSeparation(isright, x) → {number}
Used for setting an approx value of eyeSeparation. Created for calling by StereoViewer object
| Name | Type | Description |
|---|---|---|
isright | boolean | |
x | number |
- Source
camera x position
- Type:
- number
setBackgroundColor(hex, a)
Set the background color (default white)
| Name | Type | Description |
|---|---|---|
hex | number | Hexcode specified background color, or standard color spec |
a | number | Alpha level (default 1.0) |
- Source
viewer.setBackgroundColor("green",0.5);setCameraParameters()
Set camera parameters (distance to the origin and field of view)
| Type | Description |
|---|---|
| parameters | new camera parameters, with possible fields |
- Source
$3Dmol.get("data/set1_122_complex.mol2", function(data) {
var m = viewer.addModel(data);
viewer.setStyle({stick:{}});
viewer.zoomTo();
viewer.setCameraParameters({ fov: 10 , z: 300 });
viewer.render();
});setClickable(sel, clickable, callback)
Set click-handling properties to all selected atoms. Important: render must be called for this to take effect.
| 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. The function is passed |
- Source
$3Dmol.download("cid:307900",viewer,{},function(){
viewer.setStyle({},{sphere:{}});
viewer.setClickable({},true,function(atom,viewer,event,container) {
viewer.addLabel(atom.resn+":"+atom.atom,{position: atom, backgroundColor: 'darkgreen', backgroundOpacity: 0.8});
});
viewer.render();
});setColorByElement(sel, colors)
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | |
colors | object |
- Source
setColorByProperty(sel, prop, scheme, range)
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | |
prop | string | |
scheme | Gradient | | |
range | object |
- Source
setConfig(c)
Set the configuration object. Note that some settings may only
have an effect at viewer creation time.
| Name | Type | Description |
|---|---|---|
c | ViewerSpec |
- Source
setContainer(element)
Change the viewer's container element
Also useful if the original container element was removed from the DOM.
| Name | Type | Description |
|---|---|---|
element | Object | | Either HTML element or string identifier. Defaults to the element used to initialize the viewer. |
- Source
setDefaultCartoonQuality(val)
Set the default cartoon quality for newly created models. Default is 5.
Current models are not affected.
| Name | Type | Description |
|---|---|---|
val | number |
- Source
setFrame(framenum) → {Promise}
Sets the atomlists of all models in the viewer to specified frame.
Shapes and labels can also be displayed by frame.
Sets to last frame if framenum out of range
| Name | Type | Description |
|---|---|---|
framenum | number | fame index to use, starts at zero |
- Source
- Type:
- Promise
setHeight(h)
Set viewer height independently of the HTML container. This is probably not what you want.
| Name | Type | Description |
|---|---|---|
h | number | Height in pixels |
- Source
setHoverDuration(hoverDurationopt)
Set the duration of the hover delay
| Name | Type | Attributes | Description |
|---|---|---|---|
hoverDuration | number | <optional> | an optional parameter that denotes |
- Source
setHoverable(sel, hoverable, hover_callback, unhover_callback)
Set hoverable and callback of selected atoms
| 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. The function has the same signature as a click handler. |
unhover_callback | function | function called when the mouse moves out of the hover area |
- Source
$3Dmol.download("pdb:1ubq",viewer,{},function(){
viewer.setHoverable({},true,function(atom,viewer,event,container) {
if(!atom.label) {
atom.label = viewer.addLabel(atom.resn+":"+atom.atom,{position: atom, backgroundColor: 'mintcream', fontColor:'black'});
}
},
function(atom) {
if(atom.label) {
viewer.removeLabel(atom.label);
delete atom.label;
}
}
);
viewer.setStyle({},{stick:{}});
viewer.render();
});setInternalState(state)
Overwrite internal state of the viewer with passed object
which should come from getInternalState.
| Name | Type | Description |
|---|---|---|
state |
- Source
setLabelStyle(label, stylespec) → {Label}
Modify existing label's style
- Source
- Type:
- Label
setLabelText(label, text) → {Label}
Modify existing label's text
| Name | Type | Description |
|---|---|---|
label | Label | $3Dmol label |
text | String | Label text |
- Source
- Type:
- Label
setPerceivedDistance(dist)
Set the distance between the model and the camera
Essentially zooming. Useful while stereo rendering.
| Name | Type | Description |
|---|---|---|
dist | number |
- Source
setProjection(proj)
Set view projection scheme. Either orthographic or perspective.
Default is perspective. Orthographic can also be enabled on viewer creation
by setting orthographic to true in the config object.
| Name | Type | Description |
|---|---|---|
proj |
- Source
viewer.setViewStyle({style:"outline"});
$3Dmol.get('data/1fas.pqr', function(data){
viewer.addModel(data, "pqr");
$3Dmol.get("data/1fas.cube",function(volumedata){
viewer.addSurface($3Dmol.SurfaceType.VDW, {opacity:0.85,voldata: new $3Dmol.VolumeData(volumedata, "cube"), volscheme: new $3Dmol.Gradient.RWB(-10,10)},{});
});
viewer.zoomTo();
viewer.setProjection("orthographic");
viewer.render(callback);
});setSlab(near, far)
Set slab of view (contents outside of slab are clipped).
Must call render to update.
| Name | Type | Description |
|---|---|---|
near | number | near clipping plane distance |
far | number | far clipping plane distance |
- Source
setStateChangeCallback(callback)
Set a callback to call when the view has potentially changed.
| Name | Type | Description |
|---|---|---|
callback |
- Source
setStyle(sel, style)
Set style properties to all selected atoms
| Name | Type | Description |
|---|---|---|
sel | AtomSelectionSpec | Atom selection specification. Can be omitted to select all. |
style | AtomStyleSpec | Style spec to apply to specified atoms |
- Source
viewer.setBackgroundColor(0xffffffff);
$3Dmol.download('pdb:5IRE',viewer,{doAssembly: false},function(m) {
m.setStyle({chain:'A'},{'cartoon':{color:'spectrum'}});
m.setStyle({chain:'C'},{'cartoon':{style:'trace',color:'blue'}});
m.setStyle({chain:'E'},{'cartoon':{tubes:true,arrows:true,color:'green',opacity:0.75}});
m.setStyle({chain:'B'},{'cartoon':{color:'red',opacity:0.5}});
m.setStyle({chain:'D'},{'cartoon':{style:'trace',color:'grey',opacity:0.75}});
m.setStyle({chain:'F'},{'cartoon':{arrows:true,color:'white'}});
// viewer.addStyle({chain:'B'},{line:{}});
viewer.zoomTo();
viewer.render();
});setSurfaceMaterialStyle(surf, style)
Set the surface material to something else, must render change
| Name | Type | Description |
|---|---|---|
surf | number | Surface ID to apply changes to |
style | SurfaceStyleSpec | new material style specification |
- Source
$3Dmol.get("data/9002806.cif",function(data){
viewer.addModel(data);
viewer.setStyle({stick:{}});
let surf = viewer.addSurface("SAS");
surf.then(function() {
viewer.setSurfaceMaterialStyle(surf.surfid, {color:'blue',opacity:0.5});
viewer.render();
});
});setView(arg)
Sets the view to the specified translation, zoom, and rotation.
| Name | Type | Description |
|---|---|---|
arg | Array.<number> | Array formatted identically to the return value of getView |
- Source
setViewChangeCallback(callback)
Set a callback to call when the view has potentially changed.
| Name | Type | Description |
|---|---|---|
callback |
- Source
setViewStyle(parameters)
Set global view styles.
| Name | Type | Description |
|---|---|---|
parameters | ViewStyle |
- Source
viewer.setViewStyle({style:"outline"});
$3Dmol.get('data/1fas.pqr', function(data){
viewer.addModel(data, "pqr");
$3Dmol.get("data/1fas.cube",function(volumedata){
viewer.addSurface($3Dmol.SurfaceType.VDW, {opacity:0.85,voldata: new $3Dmol.VolumeData(volumedata, "cube"), volscheme: new $3Dmol.Gradient.RWB(-10,10)},{});
});
viewer.zoomTo();
viewer.render(callback);
});setWidth(w)
Set viewer width independently of the HTML container. This is probably not what you want.
| Name | Type | Description |
|---|---|---|
w | number | Width in pixels |
- Source
setZoomLimits()
Set lower and upper limit stops for zoom.
| Type | Description |
|---|---|
| lower | limit on zoom in (positive number). Default 0. |
| upper | limit on zoom out (positive number). Default infinite. |
- Source
$3Dmol.get("data/set1_122_complex.mol2", function(moldata) {
var m = viewer.addModel(moldata);
viewer.setStyle({stick:{colorscheme:"Jmol"}});
viewer.setZoomLimits(100,200);
viewer.zoomTo();
viewer.zoom(10); //will not zoom all the way
viewer.render();
});spin(axis, speed)
Continuously rotate a scene around the specified axis.
Call spin(false) to stop spinning.
| Name | Type | Description |
|---|---|---|
axis | string | | [axis] - Axis ("x", "y", "z", "vx", "vy", or "vz") to rotate around. |
speed | number | [speed] - Speed multiplier for spinning the viewer. 1 is default and a negative |
- Source
stopAnimate()
Stop animation of all models in viewer
- Source
targetedObjects(x, y)
Return a list of objects that intersect that at the specified viewer position.
| Name | Type | Description |
|---|---|---|
x | x position in screen coordinates | |
y | y position in screen coordinates | |
| Array.<Object> | list of objects or selection object specifying what object to check for targeting |
- Source
translate(x, y, animationDurationopt, fixedPathopt)
Translate current view by x,y screen coordinates
This pans the camera rather than translating the model.
| Name | Type | Attributes | Description |
|---|---|---|---|
x | number | Relative change in view coordinates of camera | |
y | number | Relative change in view coordinates of camera | |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | Boolean | <optional> | if true animation is constrained to |
- Source
$3Dmol.get('data/4csv.pdb', function(data) {
viewer.addModel(data,'pdb');
viewer.setStyle({cartoon:{},stick:{}});
viewer.zoomTo();
viewer.translate(200,50);
viewer.rotate(90,'z');
viewer.render(callback);
});translateScene(x, y, animationDurationopt, fixedPathopt)
Translate current models by x,y screen coordinates
This translates the models relative to the current view. It does
not change the center of rotation.
| Name | Type | Attributes | Description |
|---|---|---|---|
x | number | Relative change in x screen coordinate | |
y | number | Relative change in y screen coordinate | |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | Boolean | <optional> | if true animation is constrained to |
- Source
$3Dmol.get('data/4csv.pdb', function(data) {
viewer.addModel(data,'pdb');
viewer.setStyle({cartoon:{},stick:{}});
viewer.zoomTo();
viewer.translateScene(200,50);
viewer.rotate(90,'z'); // will no longer be around model center
viewer.render(callback);
});vibrate(numFrames, amplitude, bothWays, arrowSpec)
If atoms have dx, dy, dz properties (in some xyz files), vibrate populates each model's frame property based on parameters.
Models can then be animated
| 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 |
arrowSpec | ArrowSpec | specification for drawing animated arrows. If color isn't specified, atom color (sphere, stick, line preference) is used. |
- Source
zoom(factoropt, animationDurationopt, fixedPathopt)
Zoom current view by a constant factor
| Name | Type | Attributes | Description |
|---|---|---|---|
factor | number | <optional> | Magnification factor. Values greater than 1 |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | Boolean | <optional> | if true animation is constrained to |
- Source
$3Dmol.get('data/4csv.pdb', function(data) {
viewer.addModel(data,'pdb');
viewer.setStyle({cartoon:{},stick:{}});
viewer.zoomTo()
viewer.zoom(2,1000);
viewer.render();
});zoomTo(selopt, animationDurationopt, fixedPathopt)
Zoom to center of atom selection. The slab will be set appropriately for
the selection, unless an empty selection is provided, in which case there will be no slab.
| Name | Type | Attributes | Description |
|---|---|---|---|
sel | Object | <optional> | Selection specification specifying model and atom |
animationDuration | number | <optional> | an optional parameter that denotes |
fixedPath | Boolean | <optional> | if true animation is constrained to |
- Source
$3Dmol.get('data/1fas.pqr', function(data){
viewer.addModel(data, "pqr");
viewer.zoomTo();
$3Dmol.get("data/1fas.cube",function(volumedata){
viewer.addSurface($3Dmol.SurfaceType.VDW, {
opacity:0.85,
voldata: new $3Dmol.VolumeData(volumedata, "cube"),
volscheme: new $3Dmol.Gradient.Sinebow($3Dmol.getPropertyRange(viewer.selectedAtoms(),'charge'))
},{});
viewer.render();
});
});(static) generateMeshSyncHelper(type, expandedExtent, extendedAtoms, atomsToShow, atoms, vol) → {Object}
| Name | Type | Description |
|---|---|---|
type | SurfaceType | |
expandedExtent | Array | |
extendedAtoms | Array.<AtomSpec> | |
atomsToShow | Array.<AtomSpec> | |
atoms | Array.<AtomSpec> | |
vol | number |
- Source
- Type:
- Object
(static) generateSurfaceMesh(atoms, VandF, mat) → {Mesh}
| Name | Type | Description |
|---|---|---|
atoms | Array.<AtomSpec> | |
VandF | Object | |
mat | MeshLambertMaterial |
- Source
- Type:
- Mesh
(static) getAtomsWithin(atomlist, extent) → {Array}
| Name | Type | Description |
|---|---|---|
atomlist | Array.<AtomSpec> | |
extent | Array |
- Source
- Type:
- Array