22Jdaviz Design and Infrastructure
33********************************
44
5+ This section outlines the top-level structure of Jdaviz.
6+
57.. note ::
68
79 At the time of writing, Jdaviz was still in heavy development.
810 If you notice that this page has fallen behind, please
911 `report an issue to the Jdaviz GitHub issues <https://github.com/spacetelescope/jdaviz/issues/new >`_.
1012
11- This section outlines the top- level structure of Jdaviz. At the highest level,
12- Jdaviz layers different, sometimes changing technologies in the Jupyter platform
13- to do its visualization, and therefore provides a framework for these technologies
14- to work together. This document describes that framework, as well as the high-level
15- sets of components needed for the Jdaviz use cases; it lists the layers of the Jdaviz
16- framework in essentially the order in which they contact users in a typical
17- visualization-heavy workflow. An overview of the layers is in this diagram,
18- and each is described in more details below:
13+ At the highest level, Jdaviz uses different, sometimes changing technologies in
14+ the Jupyter platform to do its visualization, and therefore provides a framework
15+ for these technologies to work together. This document describes that framework,
16+ as well as the high-level sets of components needed for the Jdaviz use cases;
17+ it lists the layers of the Jdaviz framework in approximately the order in which
18+ a user would interact with them in a typical visualization-heavy workflow.
19+ The following diagram presents an overview of the framework's layers, with each being described
20+ in more detail below:
1921
2022.. figure :: jdaviz.svg
2123 :alt: Jdaviz design and infrastructure chart.
@@ -26,13 +28,19 @@ and each is described in more details below:
2628 visualization libraries involved. The bottom layer consists of low-level
2729 data analysis and I/O libraries.
2830
31+ .. note ::
32+
33+ In the diagram above, optional dependencies of Jdaviz have dotted lines.
34+ Optional dependencies are only required for certain Jdaviz
35+ workflows and are not explicitly installed by default when Jdaviz is installed.
36+
2937Jdaviz: Interfaces and Applications
3038===================================
3139
3240Interfaces
3341----------
3442
35- "Interfaces" are the tools the user is using to access the analysis tools.
43+ "Interfaces" are the tools employed by the user to access the analysis tools.
3644The word "platform" might at first seem more applicable, but in this case
3745all of the interfaces are using Jupyter as the platform, to ensure a
3846consistent look-and-feel and a single platform for which to target the tools.
@@ -63,8 +71,8 @@ The target interfaces are:
6371 maximum flexibility in embedding.
6472
6573Each of these interfaces uses a common set of applications implemented in Python
66- and leveraging ipywidgets _ as the communication layer between Python and the
67- JavaScript-level layout, rendering, and interactivity libraries. Hence the following
74+ and leverages ipywidgets _ as the communication layer between Python and the
75+ JavaScript-level layout, rendering, and interactivity libraries. Hence, the following
6876layers are primarily implemented in Python, but utilize tools like ipyvuetify _ and
6977ipygoldenlayout _ to allow the Python code to interact with the JavaScript
7078implementations at the interface level.
@@ -84,23 +92,27 @@ applications and individual widgets.
8492
8593Specific target applications include:
8694
87- * * Specviz * : A view into a single astronomical spectrum. It provides a UI to
95+ * :ref: ` specviz ` : A view into a single astronomical spectrum. It provides a UI to
8896 view the spectrum, as well as perform common scientific operations like marking
8997 spectral regions for further analysis (e.g., in a notebook), subtracting continua,
9098 measuring and fitting spectral lines, etc.
91- * *Mosviz *: A view into many astronomical spectra, typically the output of a
99+ * :ref: `specviz2d `: A view into 2D spectral data. It offers similar capabilities to
100+ *Specviz *, namely that it provides a UI to visualize 2D spectra,
101+ and can perform the same scientific operations on data. In addition to these, Specviz2D
102+ can also extract 1D spectra from a selected region of the 2D spectrum.
103+ * :ref: `mosviz `: A view into many astronomical spectra, typically the output of a
92104 multi-object spectrograph (e.g.,
93105 `JWST NIRSpec <https://jwst.nasa.gov/content/observatory/instruments/nirspec.html >`_).
94- It provides capabilities for individual spectra like Specviz, but for multiple spectra
106+ It provides capabilities for individual spectra like * Specviz * , but for multiple spectra
95107 at a time along with additional contextual information like on-sky views of the
96108 spectrograph slit.
97- * * Cubeviz * : A view of spectroscopic data cubes (e.g., from
109+ * :ref: ` cubeviz ` : A view of spectroscopic data cubes (e.g., from
98110 `JWST MIRI <https://jwst.nasa.gov/content/observatory/instruments/miri.html >`_),
99111 along with 1D spectra extracted from the cube. In addition to common visualization
100112 capabilities like viewing slices or averages in image or wavelength space,
101- the application will provide some standard manipulations like smoothing, moment maps,
102- parallelized line fitting, etc.
103- * * Imviz * : An image-viewer for 2D images leveraging the same machinery as the other
113+ the application also provides the ability to perform smoothing operations and
114+ parallelized line fitting, as well as generate moment maps, etc.
115+ * :ref: ` imviz ` : An image-viewer for 2D images leveraging the same machinery as the other
104116 applications. While this application is not intended to encapsulate a complete
105117 range of astronomical imaging-based workflows, it enables quick-look style
106118 visualization of images in a way that is compatible with the rest of the Jdaviz framework.
@@ -123,9 +135,10 @@ also provides the interface for registering new functionality (both UI and data/
123135via glue-core's registries.
124136
125137Note that most of the application engine implementation belongs in glue-jupyter _
126- or glue-core, as it is not unique to Jdaviz (or even astronomy). However, Jdaviz has
127- customized it for specific use cases, though some of the implementations might be moved
128- upstream as Jdaviz matures, especially if they are useful beyond Jdaviz.
138+ or `glue-core <https://github.com/glue-viz/glue >`_, as it is not unique to Jdaviz
139+ (or even astronomy). However, Jdaviz has customized it for specific use cases,
140+ though some of the implementations might be moved upstream as Jdaviz matures,
141+ especially if they are useful beyond Jdaviz.
129142
130143Visualization: Component Widgets
131144================================
@@ -168,9 +181,9 @@ Known component widgets for the target applications include:
168181 and selection of specific rows (to then be highlighted in other viewers or interacted
169182 with in notebook/lab).
170183
171- In addition to the component widgets above, there are also *plugins * that go with
172- them to provide the necessary user interactions. Each plugin is specialized to do one
173- thing, e.g., a "model fitting" plugin to allow users to fit
184+ In addition to the component widgets above, there are also *plugins * (e.g. :ref: ` imviz-plugins `)
185+ that go with them to provide the necessary user interactions. Each plugin is specialized to do one
186+ thing, e.g., a :ref: ` "model fitting" < specviz-model-fitting >` plugin that allows users to fit
174187:ref: `astropy models <astropy:astropy-modeling >` to spectra.
175188
176189Data Analysis and I/O Libraries
@@ -196,13 +209,6 @@ so the list and the diagram above do not fully cover all of Jdaviz's dependencie
196209but are the primary "top-level" data analysis or I/O libraries that most users are likely
197210to focus on to complement or extend their Jdaviz workflows.
198211
199- .. note ::
200-
201- In the diagram above, optional dependencies of Jdaviz have dotted lines.
202- Optional dependencies mean they are only required for certain Jdaviz
203- workflows and are not explicitly installed by default when you install Jdaviz.
204-
205-
206212.. _ipywidgets : https://ipywidgets.readthedocs.io
207213.. _ipyvuetify : https://github.com/mariobuikhuizen/ipyvuetify
208214.. _ipygoldenlayout : https://github.com/nmearl/ipygoldenlayout
0 commit comments