# Iris: Build and Analyze Broadband Spectral Energy Distributions

Abstract The abstract goes here

\label{sec:introduction}

# Introduction

The Virtual Observatory (VO) provides a set of standards and protocols that enable interoperability among astronomy-centered services and applications [NEED VO CITATION]. In order to design effective applications, one wants to leverage VO standards and protocols without exposing the complexity and technicality of their specifications to the users. Also, while application developers implement many desired functionalities, they must keep the door open for plugging in user’s analysis code, and allow third party developers to extend the application’s functionality without being aware of the standards themselves.

Designing such general purpose applications thus becomes an exercise in designing a framework that implements some basic, effective functionality for a wide set of use cases, while being highly extensible.

Iris, the Virtual Astronomical Observatory1 (Berriman 2012) spectral energy distribution (SED) analysis tool, is such a VO-enabled application. Iris was developed to provide the astronomical community with a desktop application for building, viewing and analyzing broadband spectro-photometric SEDs, while implementing VO standards and protocols and taking advantage of existing astronomy software (Doe 2012, Laurino 2013).

Users may populate SEDs with data from file, built-in portals to data archives, and other VO applications. Iris is lenient on the data format, so while it natively supports VO-compliant files (properly annotated VOTABLE and FITS files), Iris can ingest ASCII, CSV, and other table-like formats with some user input. Iris also provides interactive data visualization and editing tools, and a SED fitting tool for fine-tuned modeling. Users may choose from a suite of provided astrophysical models, or load their own Python functions and template libraries. All front-end features of Iris completely hide the underlying technical VO standards and protocols from the user.

Iris was devoted to provide functionality in a specific scientific domain, namely the analysis of broad-band SEDs. This requirement clearly defines the semantic scope of the Iris extensible framework, and provides a clear abstraction layer to both users and developers, inside and outside of the development team.

In this paper we present Iris, its design, and how users and developers can plug their code in it. In section \ref{sec:overview} we briefly explore the landscape of applications and analysis tools in which Iris is inserted. An overview of the Iris general architecture (the Iris stack) is illustrated in section \ref{sec:stack}. We introduce the Iris features in section \ref{sec:builtin}, and explore how astronomers can plug their models or templates in as Python functions in section \ref{sec:usermodels}. We then move to the details of the Iris extensible framework design (section \ref{sec:architecture}) and to a somewhat detailed description of the more advanced Iris functionalities (section \ref{sec:components}). Finally, we provide more details about how to extend Iris via Plug-ins (section \ref{sec:plugins}).

1. www.usvao.org

# SED Analysis: an overview

\label{sec:overview}

Fitting spectral energy distributions allows astronomers to estimate fundamental properties like stellar mass, star formation rates, dust content and overall environments of astronomical objects (e.g. Sawicki et al. (1998), Shapley et al. (2001), Robitaille et al. (2007), and many others). With deeper wide-field surveys and increasing datasets over the years, astronomers have been able to utilize multi-wavelength SEDs more frequently for their research. As such, many robust SED analysis codes have been created to help astronomers model, fit, and derive physical quantities from SEDs (citation not found: 2011Ap&SS.331....1W) (citation not found: 2013ARA&A..51..393C). These widely-used codes implement a diverse set of methods, for instance: inversion (PAHFIT (Smith et al., 2007), STARLIGHT (Cid Fernandes 2004)), principal component analysis (Budavári et al., 2009), mathrm^2-minimization codes (Le Phare (Arnouts et al., 1999), hyperz (citation not found: 2000A&A...363..476B)), and Bayesian inference (GalMC (Acquaviva et al., 2011); VOSA (citation not found: 2008A&A...492..277B); BPZ (Benítez, 2000)).

Most distributed fitting packages are tailored for specific data sets or spectral ranges (e.g. PAHFIT, STARLIGHT), providing robust fitting methods and results. They require the data to be in a specific format with specific units in order for the tool to work properly. When fitting a broadband SED that spans over decades in the spectrum, the astronomer will gather data from different public archives and team members to add to their own dataset. More often than not, the datasets are presented in different file formats and units. The user must provide their own methods to extract the necessary data from each file, convert the units, and output a file in the single format supported by the tool.

While SED analysis tools have input formats that may be different from each other, they nevertheless require effectively the same information to run. It thus becomes a matter of providing an interoperable framework that makes building, viewing, and analyzing SEDs a straightforward process.

Following VO efforts to seamlessly combine data services and applications, Iris offers a standard means of building large broadband SEDs from different sources in various data formats, while providing robust fitting methods and interactive visualization capabilities. Users can input SED data from a local file or a URL, with high leniency on the data format. Users may also beam data from other VO-enabled applications or data archive services through SAMP (Simple Application Messaging Protocol; Taylor et al. (2011)). If the data format follows the IVOA Spectrum Data Model v1.03 (McDowell et al., 2012), or in other words a VO-compliant VOTable or FITS file, the data is read-in without any input by the user; otherwise, the user supplies the units and mapping to the spectral-flux coordinates in the file. How this method works is described in Section \ref{sec:components}.

Iris is meant to be an open box SED analysis tool. If Iris is missing a certain functionality, the user may develop a plugin for that functionality and add it to Iris. Thus, a user can employ Iris’ SED building capabilites while running custom analysis, which in theory could be one of the fitting packages discussed above. We explore this possibility in detail in Section \ref{sec:plugins}