A number of software packages have been developed to aid in carrying out SDSS surveys and processing the data. Here we briefly describe the purpose and scope of some of these core software packages. The Pipeline packages are excluded from coverage here and can be located on the Pipelines page. Many packages have their own detailed documentation as well. Additionally, some of the packages have external product dependencies, where the products are either hosted as GitHub repositories or the SDSS SVN repositories. See the Resources page for more details.
Python Packages
Most SDSS software is now written in Python and deployed on PyPi, therefore most SDSS Python products can be installed with pip
pip install [package_name]
Coordio
coordio is a library package that provides coordinate transformation for the APO and LCO telescopes and the FPS optical system. Among others it allows for the conversion between on-sky ICRS coordinates (our default targeting product) and the “positioner” coordinates, defined as the angles for the positioner alpha and beta arms. The complete set of coordinate transformations is described in Sayres et al. (2022).
coordio
also provides the transformation between the guide, focus, and acquisition cameras and the field viewing camera and the telescope focal plane, as well as additional utilities to validate targets.
Data Model
The SDSS-V datamodel package provides a python interface for designing, generating, updating and editing SDSS data models, which describe the structure of FITS, H5 and PAR files, that comprise the SDSS data products on the SAS.
datamodel
depends on the sdss-tree for the abstract path definitions for each data release, and works seemlessly with sdss-access which enables efficient downloads and command-line access to local file paths by functional keyword replacement. datamodel
stores the header information, column descriptions and units in machine readable formats including json, markdown, and yaml file formats for use by other tools. For easy reference, the HTML version of the data models are provided by the datamodel web site.
fps_calibrations
fps_calibrations is a data repository that track calibrations files related to the operations of the FPS. These include the measured positions and arm lengths of each robotic positioner and optical fiber, guide camera metrology files, field viewing camera models, etc. These files are kept under version control and tagged periodically. Metadata files such as confSummary
or guider images refer to the fps_calibrations
tag used for coordinate transformations and modelling.
Kaiju
Kaiju is a python-wrapped C++ package that computes collision-free paths for all 500 robots when moving between configurations. Kaiju
generates paths in a matter of seconds allowing for on-the-fly use during nightly operations. The software is described fully in Sayres et al. (2021).
Kronos
kronos
is a webapp and a set of related command line tools that runs at both APO and LCO. The kronos
webapp is primarily used for creating a queue of designs for the night (using roboscheduler
), then monitoring progression through the queue. A single page provides views of the observing queue, tables of recent exposures with signal-to-noise estimates, and estimates of signal-to-noise for ongoing exposures. Various command line tools are called regularly by timer jobs to assess design completion (based on mountain pipeline signal-to-noise estimates), check when multi-design epochs can be finished early, and other “book keeping” related tasks that require constant and careful monitoring.
Mugatu
The mugatu
package provides a way to read, write, and validate FPS designs.
Observesim
observesim is designed to simulate a full SDSS V survey. The simulation takes as input a robostrategy survey “allocation” (an exact allocation of expected LST resources to a set of specific field-exposures, i.e. designs). The simulation steps through time, using an agreed upon schedule to account for survey start, end, and interruptions like APO summer shutdown, and for each “time step” the software uses roboscheduler to determine what design to observe next. The “time steps” are based on assumptions of efficiency (a fixed exposure time plus estimated overhead for slewing the telescope, moving robots, etc); these are the only critical assumptions made by the simulation product. Many other assumptions and hyperparameters are included in the roboscheduler product (Donor et al. (in prep)), so the primary function of simulations is to test different assumptions and prioritization strategies in the scheduler.
Roboscheduler
The roboscheduler
package is used in simulations and both observatories to schedule designs. It takes into account the observing history and the robostrategy survey plan to schedule optimal designs at a given time.
Robostrategy
Robostrategy
is a python package designed to efficiently pack targets into FPS designs. Time domain spectroscopy is a significant focus of SDSS V, as such each target has cadence requirements that must be respected, in addition to constraints on observing conditions such as maximum sky brightness. Robostrategy uses linear programming to determine which targets can be observed together and packs them into designs. A more complete explanation is given in Blanton et al. (in prep).
SDSS Access
sdss-access
provides a convenient Python interface for downloading SDSS data.
SDSS DB
SDSS relies on a number of databases, mostly postgresql databases. sdssdb
is a python package that provides connection profiles compatible with our observatories and high performance computing facilities, as well as ORM model classes for interacting with critical databases from Python code.
SDSS Python Template
SDSS encourages all new code be written in Python. sdss-python-template provides a starting point for new Python packages with a skeleton for industry standard functions such as documentation with sphinx, a testing framework, and initial configuration files for poetry or setuptools.
SDSS Tools
sdsstools provides several common tools for logging, configuration handling, version parsing, packaging, etc. Its main purpose is to consolidate some of the utilities originally found in the python_template, allowing them to become dependencies that can be updated.
SDSS Tree
The tree product organizes the numerous paths for SDSS data on the SAS. Versions of sdss-tree
are available for each data release and provide paths to data directories in that release as environment variables.
Semaphore
The semaphore
package provides a way to interpret the new SDSS-V targeting flags.
target_selection
The target_selection package contains the code used to cross-match the various parent catalogues used for targeting. It also includes the algorithmic definitions for each targeting carton as well as the code to execute the queries that create them and load the results into targetdb
.
Valis
Valis provides the SDSS API for delivering and accessing remote information and is the backend used by the new Zora web app. Its use is described on the Zora and_Valis data access page.
Zora
Zora provides the new web app front-end for SDSS-V hosted at https://dr19.sdss.org/zora and is the new SDSS-V replacement for the SDSS-V data for the DR18 and is a complement to the legacy Science Archive Webapp. Its use is described on the Zora and_Valis data access page.
IDL
Any of the IDL software packages currently on GitHub can be obtained by cloning the repo:
git clone https://github.com/sdss/[product].git
IDLutils
The idlutils
package consolidates critical IDL dependencies used in a variety of SDSS products.
Don’t Blame Us
No warranty is expressed or implied or anything regarding this software.