def test_plotly(remove_build): """Tests plotly.""" viz = Plotly() ctrl = Nouislider() ctrl2 = Button() path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'build') layout = Layout(directory=path) layout.add(viz) layout.add_sidebar(ctrl) layout.add_sidebar(ctrl2) layout.subscribe(callback, ctrl.on_change) layout.subscribe(callback, ctrl2.on_click) layout.build() env = os.environ env['PYTHONPATH'] = '{}:{}'.format(os.getcwd(), os.environ.get('PYTHONPATH', '')) server = subprocess.Popen(os.path.join(path, 'src/server.py'), env=env) time.sleep(5) driver = PhantomJS() driver.get('http://localhost:9991') assert driver.title == 'Bowtie App' server.kill()
def test_build(remove_build): ctrl = Nouislider() viz = Plotly() layout = Layout() layout.add_controller(ctrl) layout.add_visual(viz) layout.subscribe(ctrl.on_change, callback) layout.build()
def test_build(remove_build): """Tests the build process.""" ctrl = Nouislider() viz = Plotly() path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'build') layout = Layout(directory=path) layout.add_sidebar(ctrl) layout.add(viz) layout.subscribe(callback, ctrl.on_change) layout.build()
def test_build(build_path): """Tests the build process.""" reset_uuid() ctrl = Nouislider() viz = Plotly() app = App(directory=build_path) app.add_sidebar(ctrl) app.add(viz) app.subscribe(callback, ctrl.on_change) app.build()
def test_build(build_path): """Tests the build process.""" reset_uuid() ctrl = Nouislider() viz = Plotly() layout = Layout(directory=build_path) layout.add_sidebar(ctrl) layout.add(viz) layout.subscribe(callback, ctrl.on_change) layout.build()
def test_build(build_reset, monkeypatch): """Tests the build process.""" reset_uuid() ctrl = Nouislider() viz = Plotly() app = App(__name__, sidebar=True) app.add_sidebar(ctrl) app.add(viz) app.subscribe(ctrl.on_change)(callback) # pylint: disable=protected-access app._build()
def test_build(build_path, monkeypatch): """Tests the build process.""" monkeypatch.setattr(App, '_sourcefile', lambda self: 'bowtie.tests.test_compile') reset_uuid() ctrl = Nouislider() viz = Plotly() app = App() app.add_sidebar(ctrl) app.add(viz) app.subscribe(callback, ctrl.on_change) # pylint: disable=protected-access app._build()
#!/usr/bin/env python """Example Bowtie App.""" from bowtie import App from bowtie.control import Nouislider from bowtie.visual import Plotly from bowtie import Pager, cache, command import numpy as np from numpy import random as rng import plotlywrapper as pw app = App(debug=True, sidebar=True) pager = Pager() sigma = Nouislider(start=0., minimum=0.1, maximum=50.) mainplot = Plotly() app.add_sidebar(sigma) app.add(mainplot) def initialize(): cache.save('data', [0.] * 100) @app.subscribe(pager) def upgraph(): data = cache.load('data') value = float(sigma.get()) data.pop(0) data.append(value * rng.randn() + data[-1])
''' The only working example in bowtie so far. ¯\(°_o)/¯ python 2.7 bowtie==0.3.2 ''' from bowtie.visual import Plotly from bowtie.control import Nouislider import numpy as np import plotlywrapper as pw sine_plot = Plotly() freq_slider = Nouislider(caption='frequency', minimum=1, maximum=10, start=5) def listener(freq): freq = float(freq[0]) t = np.linspace(0, 10, 100) sine_plot.do_all(pw.line(t, np.sin(freq * t)).to_json()) from bowtie import command @command def construct(path): from bowtie import Layout layout = Layout(directory=path) layout.add_sidebar(freq_slider) layout.add(sine_plot) layout.subscribe(listener, freq_slider.on_change) layout.build()
import time import pytest from plotly.graph_objs import Scatter from plotly.graph_objs import Layout as PlotLayout from bowtie import App from bowtie.control import Nouislider, Button from bowtie.visual import Plotly from bowtie.tests.utils import reset_uuid reset_uuid() # pylint: disable=invalid-name viz = Plotly() ctrl = Nouislider() ctrl2 = Button() def callback(*args): """dummy function""" # pylint: disable=unused-argument chart = { "data": [Scatter(x=[1, 2, 3, 4], y=[4, 1, 3, 7])], "app": PlotLayout(title="hello world") } viz.do_all(chart) # pylint: disable=unused-argument @pytest.fixture
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Example Bowtie App. """ from bowtie.control import Nouislider from bowtie.visual import Plotly from bowtie import command import numpy as np from numpy import random as rng import plotlywrapper as pw sigma = Nouislider(caption='Sigma', start=1, minimum=0.1, maximum=50) mainplot = Plotly() data = np.zeros(100).tolist() def walk(): value = float(sigma.get()) data.pop(0) data.append(value * rng.randn() + data[-1]) mainplot.do_all(pw.line(data).to_json()) @command def main(): from bowtie import App app = App(debug=True)
import subprocess import time import pytest from plotly import graph_objs as go from bowtie import App from bowtie.control import Nouislider, Button from bowtie.visual import Plotly from bowtie.tests.utils import reset_uuid reset_uuid() viz = Plotly() ctrl = Nouislider() ctrl_range = Nouislider(start=(20, 200)) ctrl2 = Button() def callback(*args): """dummy function""" chart = go.Figure() chart.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[4, 1, 3, 7])) chart.layout.title = 'hello world' viz.do_all(chart.to_dict()) @pytest.fixture def plotly(build_path, monkeypatch): """Create plotly app."""
from bowtie.visual import Plotly from bowtie.control import Nouislider, Upload, Dropdown, Slider from Analyzer.ResultAnalizer import ResultAnalyzer sine_plot = Plotly() freq_slider = Nouislider(caption='Aggregation time, ms', minimum=50, maximum=2000, start=500) upload = Upload(multiple=False, caption='Upload csv to analyze') dropdown_src = Dropdown(caption='src_ips', labels=[''], values=['']) dropdown_dst = Dropdown(caption='dst_ips', labels=[''], values=['']) scale_factor_input = Nouislider(caption='Scaling factor', start=1, minimum=0, maximum=1) result_analyzer = ResultAnalyzer() src_ips = [] dst_ips = [] initialized = False def upload_listener(name, file): result_analyzer.read_df(file) def update_scale_factor(scale_factor): scale_factor = float(scale_factor[0]) result_analyzer.scale_factor_ = scale_factor