In [54]:
from collections import OrderedDict
from bokeh.charts import Bar, output_file, show
from lightcurve_pipeline.utils.utils import SETTINGS
from lightcurve_pipeline.database.database_interface import session
from lightcurve_pipeline.database.database_interface import Metadata

In [55]:
# Query for data
query = session.query(Metadata.instrume, Metadata.opt_elem).all()
instrumes = [result[0] for result in query]
opt_elems = [result[1] for result in query]
opt_elems_set = sorted(list(set(opt_elems)))

In [56]:
# Initialize dictionaries that store all optical elements
cos_dict, stis_dict = {}, {}
for opt_elem in opt_elems_set:
    cos_dict[opt_elem] = 0
    stis_dict[opt_elem] = 0

In [57]:
# Count number of opt_elems
for instrument, opt_elem in zip(instrumes, opt_elems):
    if instrument == 'COS':
        cos_dict[opt_elem] += 1
    elif instrument == 'STIS':
        stis_dict[opt_elem] += 1

In [58]:
cat = list(opt_elems_set)
xyvalues = OrderedDict()
xyvalues['COS'] = [cos_dict[opt_elem] for opt_elem in opt_elems_set]
xyvalues['STIS'] = [stis_dict[opt_elem] for opt_elem in opt_elems_set]

In [74]:
bar = Bar(xyvalues, 
    cat, 
    xlabel="Optical Element", 
    ylabel="# of Lightcurves", 
    stacked=True,
    legend = "top_right")
bar.background_fill= "#cccccc"
bar.outline_line_color = 'black'
output_file("opt_elem.html")
show(bar)