Skip to content

JorenBE/jsmol-bokeh-extension

 
 

Repository files navigation

Build Status

JSmol bokeh extension

This extension lets you visualize atomic structures in bokeh using JSmol.

Features

  • Works both using bokeh and bokeh server
  • See example.html. Structure displays in standalone html, button will start working in bokeh server

Prerequisites

Note: As of 2019-06, NodeJS is required to compile the .ts / .coffee files. Once bokeh provides guidelines on how to bundle compiled javascript, the NodeJS dependency may be dropped.

Installation

Versioning

  • jsmol-bokeh-extension 0.1.x works with bokeh < 1.1 (written in CoffeScript)
  • jsmol-bokeh-extension 0.2 and above works with bokeh >= 1.1 (written in TypeScript)
pip install jsmol-bokeh-extension

Usage

Below a complete example.py demonstrating how to use the jsmol bokeh extension:

rom bokeh.models import ColumnDataSource
from bokeh.io import show, curdoc
from bokeh.models.widgets import Button, TextInput
from bokeh.layouts import layout, widgetbox

from jsmol_bokeh_extension import JSMol

script_source = ColumnDataSource()

info = dict(
    height="100%",
    width="100%",
    serverURL="https://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php",
    use="HTML5",
    j2sPath="https://chemapps.stolaf.edu/jmol/jsmol/j2s",
    script=
    "background black;load https://chemapps.stolaf.edu/jmol/jsmol-2013-09-18/data/caffeine.mol",
)

applet = JSMol(
    width=600,
    height=600,
    script_source=script_source,
    info=info,
)

button = Button(label='Execute')
inp_script = TextInput(value='background white;')


def run_script():
    script_source.data['script'] = [inp_script.value]


button.on_click(run_script)

ly = layout([applet, widgetbox(button, inp_script)])

show(ly)
curdoc().add_root(ly)

Note: The example can be run both using bokeh and bokeh server:

# run locally (displays structure but button won't work)
python example.py

# run using bokeh server (displays structure and button should work)
bokeh serve example.py --show

Links

About

JSmol extension for bokeh

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 73.6%
  • Python 19.5%
  • TypeScript 6.9%