top band

Building Simple Interactive Web Applications with Spyre

adam hajari

Audience level:
Novice
Category:
Science

Description

Any data driven projects can benefit greatly from a simple, interactive, and easily accessible user interface. Whether your project is in the prototyping stage or you just want a way to quickly get your ideas and research to an audience unfamiliar with the command line, Spyre gives you all the tools you need to turn your python code into interactive web applications in under 10 minutes.

Abstract

As an engineer, analyst, or scientist, sharing your work with someone outside of your immediate team can be a challenge. End-users embody many roles with a wide range of technical skill and often times no familiarity with Python or the command line. Findings, key results, and models are frequently boiled down to static graphs, tables, and figures presented in short reports or slideshow presentations. However, engaging research and data analysis is interactive, anticipating the users’ questions and giving them the tools to answer those questions with a simple and intuitive user interface. Browser based applications are an ideal vehicle for delivering these types of interactive tools, but building a web app requires setting up backend applications to serve up content and creating a UI with languages like HTML, CSS, and JavaScript. This is a non-trivial task even for web-developers and can be completely overwhelming for anyone not familiar with web stack basics. [Spyre][1] is a web application framework for the python developer who may have little knowledge of how web applications works, much less how to build them. Spyre takes care of setting up both the front and back-end of your web application. It uses CherryPy to handle HTTP request logic and Jinja2 to auto-generate all of the client-side nuts and bolts, allowing developers to quickly move the inputs and outputs of their python modules into a browser based application. Inputs, controls, outputs, and the relationships between all of these components are specified in a python dictionary. The developer need only define this dictionary and override the methods needed to generate content (text, tables, and plots). While Spyre apps are launched on CherryPy’s production-ready server, Spyre’s primary goal is to provide a development path for simple light-weight apps without the need for a designer or front-end engineer. For example, Spyre can be used for 1. rapid prototyping and building MVPs 2. data exploration 3. developing educational resources 4. building monitoring tools 5. presenting interactive scientific or analytical results to a non-technical audience just to name a few. At Next Big Sound we recently used Spyre to build an app to visualize the effects of sampling parameter values on the volume of tweets collected from one of our data providers (see screenshot below). ![][2] Web applications like this can turn a highly technical process into a simple tool that can be used by anyone with any level of technical skill. After you’ve finished the foundational parts of your project -- the data collection, data cleaning, exploration, modeling, and analysis -- Spyre provides a quick and simple way to package the results into an interactive web application that can be viewed by the rest of the world. [1]: https://github.com/adamhajari/spyre [2]: https://raw.githubusercontent.com/adamhajari/spyre/master/examples/screenshots/gnip_sampling_spyre_app.png
bottom band background