-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #496 from spacetelescope/v0.22
Release 0.22.0 [master]
- Loading branch information
Showing
47 changed files
with
2,301 additions
and
220 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,37 @@ | ||
channels: | ||
- http://ssb.stsci.edu/astroconda-dev | ||
- defaults | ||
- http://ssb.stsci.edu/astroconda-dev | ||
dependencies: | ||
- asdf=2.3.0 | ||
- astropy>=3.1.2 | ||
- astroquery=0.3.9 | ||
- bokeh=0.13.0 | ||
- crds>=7.2.7 | ||
- django=2.1.1 | ||
- bokeh=1.3.2 | ||
- django=2.2.1 | ||
- flake8=3.7.7 | ||
- inflection=0.3.1 | ||
- ipython=6.5.0 | ||
- ipython=7.7.0 | ||
- jinja2=2.10 | ||
- jsonschema>=2.6.0 | ||
- jsonschema=2.6.0 | ||
- jwst=0.13.0 | ||
- matplotlib=3.0.0 | ||
- numpy=1.15.2 | ||
- numpydoc=0.8.0 | ||
- pandas=0.23.4 | ||
- matplotlib=3.1.0 | ||
- numpy=1.16.4 | ||
- numpydoc=0.9.0 | ||
- pandas=0.24.2 | ||
- pip=19.1.1 | ||
- postgresql=9.6.6 | ||
- psycopg2=2.7.5 | ||
- python=3.5.6 | ||
- python-dateutil=2.7.3 | ||
- pytest=3.8.1 | ||
- pytest-cov=2.6.0 | ||
- pytest-html=1.19.0 | ||
- sphinx=2.0.1 | ||
- sphinx_rtd_theme=0.1.9 | ||
- sqlalchemy=1.2.11 | ||
- python=3.6.4 | ||
- pytest=5.0.1 | ||
- pytest-cov=2.7.1 | ||
- scipy=1.3.0 | ||
- setuptools=41.0.1 | ||
- sphinx=2.1.0 | ||
- sqlalchemy=1.3.5 | ||
- stsci_rtd_theme=0.0.2 | ||
- twine=1.11.0 | ||
- twine=1.13.0 | ||
- pip: | ||
- authlib==0.10 | ||
- asdf==2.3.3 | ||
- astropy==3.2.1 | ||
- authlib==0.11 | ||
- codecov==2.0.15 | ||
- jwedb>=0.0.3 | ||
- pysiaf==0.2.5 | ||
- sphinx-automodapi==0.10 | ||
- pysiaf==0.3.1 | ||
- pysqlite3==0.2.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,37 @@ | ||
channels: | ||
- http://ssb.stsci.edu/astroconda-dev | ||
- defaults | ||
- http://ssb.stsci.edu/astroconda-dev | ||
dependencies: | ||
- asdf=2.3.1 | ||
- astropy>=3.1.2 | ||
- astroquery=0.3.9 | ||
- bokeh=1.2.0 | ||
- crds>=7.2.7 | ||
- bokeh=1.3.4 | ||
- django=2.2.1 | ||
- flake8=3.7.7 | ||
- inflection=0.3.1 | ||
- ipython=7.6.1 | ||
- ipython=7.7.0 | ||
- jinja2=2.10 | ||
- jsonschema>=3.0.1 | ||
- jwst=0.13.1 | ||
- jsonschema=2.6.0 | ||
- jwst=0.13.0 | ||
- matplotlib=3.1.0 | ||
- numpy=1.16.4 | ||
- numpydoc=0.9.0 | ||
- pandas=0.24.2 | ||
- pip=19.1.1 | ||
- postgresql=9.6.6 | ||
- psycopg2=2.7.5 | ||
- python=3.6.4 | ||
- python-dateutil=2.7.5 | ||
- pytest=5.0.1 | ||
- pytest-cov=2.6.1 | ||
- pytest-html=1.19.0 | ||
- sphinx=2.1.0 | ||
- sphinx_rtd_theme=0.1.9 | ||
- sqlalchemy=1.3.5 | ||
- sqlparse=0.3.0 | ||
- pytest-cov=2.7.1 | ||
- scipy=1.3.0 | ||
- setuptools=41.0.1 | ||
- sphinx=2.1.2 | ||
- sqlalchemy=1.3.7 | ||
- stsci_rtd_theme=0.0.2 | ||
- twine=1.13.0 | ||
- pip: | ||
- authlib==0.10 | ||
- asdf==2.3.3 | ||
- astropy==3.2.1 | ||
- authlib==0.11 | ||
- codecov==2.0.15 | ||
- jwedb>=0.0.3 | ||
- pysiaf==0.3.1 | ||
- sphinx-automodapi==0.10 | ||
- pysiaf==0.4.0 | ||
- pysqlite3==0.2.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from .template import BokehTemplate |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Mon May 21 13:45:34 2018 | ||
@author: gkanarek | ||
""" | ||
|
||
from bokeh.core.properties import Instance, String, Any, Dict | ||
from bokeh.models import ColumnDataSource, LayoutDOM | ||
|
||
DEFAULTS = { | ||
'width': '600px', | ||
'height': '600px', | ||
'style': 'surface', | ||
'showPerspective': True, | ||
'showGrid': True, | ||
'keepAspectRatio': True, | ||
'verticalRatio': 1.0, | ||
'legendLabel': 'stuff', | ||
'cameraPosition': { | ||
'horizontal': -0.35, | ||
'vertical': 0.22, | ||
'distance': 1.8, | ||
} | ||
} | ||
|
||
JS_CODE = """ | ||
# This file contains the JavaScript (CoffeeScript) implementation | ||
# for a Bokeh custom extension. The "surface3d.py" contains the | ||
# python counterpart. | ||
# | ||
# This custom model wraps one part of the third-party vis.js library: | ||
# | ||
# http://visjs.org/index.html | ||
# | ||
# Making it easy to hook up python data analytics tools (NumPy, SciPy, | ||
# Pandas, etc.) to web presentations using the Bokeh server. | ||
# These "require" lines are similar to python "import" statements | ||
import * as p from "core/properties" | ||
import {LayoutDOM, LayoutDOMView} from "models/layouts/layout_dom" | ||
# This defines some default options for the Graph3d feature of vis.js | ||
# See: http://visjs.org/graph3d_examples.html for more details. | ||
OPTIONS = | ||
width: '600px' | ||
height: '600px' | ||
style: 'surface' | ||
showPerspective: true | ||
showGrid: true | ||
keepAspectRatio: true | ||
verticalRatio: 1.0 | ||
legendLabel: 'stuff' | ||
cameraPosition: | ||
horizontal: -0.35 | ||
vertical: 0.22 | ||
distance: 1.8 | ||
# To create custom model extensions that will render on to the HTML canvas | ||
# or into the DOM, we must create a View subclass for the model. Currently | ||
# Bokeh models and views are based on BackBone. More information about | ||
# using Backbone can be found here: | ||
# | ||
# http://backbonejs.org/ | ||
# | ||
# In this case we will subclass from the existing BokehJS ``LayoutDOMView``, | ||
# corresponding to our | ||
export class Surface3dView extends LayoutDOMView | ||
initialize: (options) -> | ||
super(options) | ||
url = "https://cdnjs.cloudflare.com/ajax/libs/vis/4.16.1/vis.min.js" | ||
script = document.createElement('script') | ||
script.src = url | ||
script.async = false | ||
script.onreadystatechange = script.onload = () => @_init() | ||
document.querySelector("head").appendChild(script) | ||
_init: () -> | ||
# Create a new Graph3s using the vis.js API. This assumes the vis.js has | ||
# already been loaded (e.g. in a custom app template). In the future Bokeh | ||
# models will be able to specify and load external scripts automatically. | ||
# | ||
# Backbone Views create <div> elements by default, accessible as @el. Many | ||
# Bokeh views ignore this default <div>, and instead do things like draw | ||
# to the HTML canvas. In this case though, we use the <div> to attach a | ||
# Graph3d to the DOM. | ||
@_graph = new vis.Graph3d(@el, @get_data(), @model.options) | ||
# Set Backbone listener so that when the Bokeh data source has a change | ||
# event, we can process the new data | ||
@listenTo(@model.data_source, 'change', () => | ||
@_graph.setData(@get_data()) | ||
) | ||
# This is the callback executed when the Bokeh data has an change. Its basic | ||
# function is to adapt the Bokeh data source to the vis.js DataSet format. | ||
get_data: () -> | ||
data = new vis.DataSet() | ||
source = @model.data_source | ||
for i in [0...source.get_length()] | ||
data.add({ | ||
x: source.get_column(@model.x)[i] | ||
y: source.get_column(@model.y)[i] | ||
z: source.get_column(@model.z)[i] | ||
}) | ||
return data | ||
# We must also create a corresponding JavaScript Backbone model sublcass to | ||
# correspond to the python Bokeh model subclass. In this case, since we want | ||
# an element that can position itself in the DOM according to a Bokeh layout, | ||
# we subclass from ``LayoutDOM`` | ||
export class Surface3d extends LayoutDOM | ||
# This is usually boilerplate. In some cases there may not be a view. | ||
default_view: Surface3dView | ||
# The ``type`` class attribute should generally match exactly the name | ||
# of the corresponding Python class. | ||
type: "Surface3d" | ||
# The @define block adds corresponding "properties" to the JS model. These | ||
# should basically line up 1-1 with the Python model class. Most property | ||
# types have counterparts, e.g. ``bokeh.core.properties.String`` will be | ||
# ``p.String`` in the JS implementatin. Where the JS type system is not yet | ||
# as rich, you can use ``p.Any`` as a "wildcard" property type. | ||
@define { | ||
x: [ p.String ] | ||
y: [ p.String ] | ||
z: [ p.String ] | ||
data_source: [ p.Instance ] | ||
options: [ p.Any, OPTIONS ] | ||
} | ||
""" | ||
|
||
|
||
# This custom extension model will have a DOM view that should layout-able in | ||
# Bokeh layouts, so use ``LayoutDOM`` as the base class. If you wanted to create | ||
# a custom tool, you could inherit from ``Tool``, or from ``Glyph`` if you | ||
# wanted to create a custom glyph, etc. | ||
class Surface3d(LayoutDOM): | ||
|
||
# The special class attribute ``__implementation__`` should contain a string | ||
# of JavaScript (or CoffeeScript) code that implements the JavaScript side | ||
# of the custom extension model. | ||
__implementation__ = JS_CODE | ||
|
||
# Below are all the "properties" for this model. Bokeh properties are | ||
# class attributes that define the fields (and their types) that can be | ||
# communicated automatically between Python and the browser. Properties | ||
# also support type validation. More information about properties in | ||
# can be found here: | ||
# | ||
# http://bokeh.pydata.org/en/latest/docs/reference/core.html#bokeh-core-properties | ||
|
||
# This is a Bokeh ColumnDataSource that can be updated in the Bokeh | ||
# server by Python code | ||
data_source = Instance(ColumnDataSource) | ||
|
||
# The vis.js library that we are wrapping expects data for x, y, z, and | ||
# color. The data will actually be stored in the ColumnDataSource, but | ||
# these properties let us specify the *name* of the column that should | ||
# be used for each field. | ||
x = String | ||
y = String | ||
z = String | ||
color = String | ||
|
||
options = Dict(String, Any, default=DEFAULTS) |
Oops, something went wrong.