A Template for Rapid Development of Interactive Computing Tools
Description
A minimal set of reusable software packages and
methodologies is described which have enabled the efficient
creation of multiple, self-contained, data-centric web
applications ("tools"). The tools themselves are dedicated to
the analysis, sharing, and visualization of data produced by
researchers from diverse domains. The development template
described is intended to support a range of development
contexts, developer proficiencies, and hosting environments.
Specifically, we organized the tools' codebases within a
simplified Model–View–Controller pattern and used
Anaconda, Python, Jupyter, Docker, and Voilà [1] to develop
and deploy the tools. The basis of the tool code is Python
running as a Jupyter notebook. However, we forgo traditional,
cell-based notebook organization and use Jupyter only to
enable the use of ipywidgets for user interface controls.
Further, this development context allowed us to leverage the
use of libraries such as Pandas for data access, Ipyleaflet for
geospatial visualization, and Matplotlib and Plotly for plots,
charts, and graphs.
A portion of the tools produced were published as
stand-alone, containerized, independently hosted [2] web
applications. We relied on Docker and Voilà to create
containerized applications which include their own web
servers. Others were published as tools embedded within a
HUBzero [3] based science gateway. In this context, we relied
on the gateway's Jupyter server and its ability to render the
tool using Jupyter's "Appmode" extension. Thus far six tools
have been developed using this template with subsequent tools
only taking approximately one third as long as the initial effort
employed in developing the template.
The development template emerged in order to easily
enhance code created by researchers and supplement it with a
user interface (UI) in order to expose a tool allowing others to
explore the researchers' data through a variety of rich UI
elements that provide data-specific filtering, query, and
visualization capabilities. One requirement was that the
researchers themselves, not dedicated web developers, should
be able to enhance and maintain the tool code. The template
then evolved as we used it as the basis for the development of
other tools and then as the basis for student interns to quickly
build data-centric applications.
We describe the steps we use to create these types of tools
as well as the pitfalls we encountered as we assembled the
template over time.
Files
Gateways2021_paper_12.pdf
Files
(67.8 kB)
Name | Size | Download all |
---|---|---|
md5:fa3e19f725e7975ff6f10920ad680f0e
|
67.8 kB | Preview Download |