204.4. Filter bandpasses#
204.4. Filter bandpasses¶
For the Rubin Science Platform at data.lsst.cloud.
Data Release: Data Preview 1
Container Size: large
LSST Science Pipelines version: r29.2.0
Last verified to run: 2025-09-07
Repository: github.com/lsst/tutorial-notebooks
Learning objective: How to access the filter bandpass data.
LSST data products: standard_passband
Packages: lsst.daf.butler
Credit: Originally developed by the Rubin Community Science team. Please consider acknowledging them if this notebook is used for the preparation of journal articles, software releases, or other notebooks.
Get Support: Everyone is encouraged to ask questions or raise issues in the Support Category of the Rubin Community Forum. Rubin staff will respond to all questions posted there.
1. Introduction¶
The filter bandpasses, throughput vs. wavelength, tabulate the full-system transmission of the six LSSTComCam filters. The throughput is the percentage of incidental flux at the top of the atmosphere that is recorded by the detectors. These bandpasses were used as reference for calibrating the DP1 photometry.
Related tutorials: See the 100-level on how to use the Butler.
1.1. Import packages¶
Import the Rubin data Butler
.
from lsst.daf.butler import Butler
import numpy as np
import matplotlib.pyplot as plt
1.2. Define parameters and functions¶
Instantiate the Butler.
butler = Butler("dp1", collections="LSSTComCam/DP1")
assert butler is not None
Define colors and linestyles to represent the six LSST filters, $ugrizy$, as per the recommendations for colorblind-friendly plots in RTN-045.
filter_names = ['u', 'g', 'r', 'i', 'z', 'y']
filter_colors = {'u': '#1600ea', 'g': '#31de1f',
'r': '#b52626', 'i': '#370201',
'z': '#ba52ff', 'y': '#61a2b3'}
filter_linestyles = {'u': '--', 'g': (0, (3, 1, 1, 1)),
'r': '-.', 'i': '-',
'z': (0, (3, 1, 1, 1, 1, 1)), 'y': ':'}
2. Data access¶
The filter bandpasses are only accessible via the Butler.
Show the Butler dimensions for standard_passband
.
print(butler.get_dataset_type('standard_passband'))
print('Required dimensions: ', butler.get_dataset_type('standard_passband').dimensions.required)
DatasetType('standard_passband', {band, instrument}, ArrowAstropy) Required dimensions: {band, instrument}
2.1. Retrieve one bandpass¶
Retrieve the $r$-band bandpass as an ArrowAstropy
table.
bp_table = butler.get("standard_passband", instrument="LSSTComCam", band="r")
Show the table.
bp_table
wavelength | throughput |
---|---|
nm | % |
float64 | float64 |
300.0 | 0.0 |
300.5 | 0.0 |
301.0 | 0.0 |
301.5 | 0.0 |
302.0 | 0.0 |
302.5 | 0.0 |
303.0 | 0.0 |
303.5 | 0.0 |
304.0 | 0.0 |
... | ... |
1096.0 | 0.0 |
1096.5 | 0.0 |
1097.0 | 0.0 |
1097.5 | 0.0 |
1098.0 | 0.0 |
1098.5 | 0.0 |
1099.0 | 0.0 |
1099.5 | 0.0 |
1100.0 | 0.0 |
3. Plot the ugrizy bandpasses¶
Plot the bandpass (throughput vs. wavelength) for each filter.
fig = plt.figure(figsize=(6, 4))
for filt in filter_names:
bp_table = butler.get("standard_passband", instrument="LSSTComCam", band=filt)
plt.plot(bp_table['wavelength'], bp_table['throughput'],
ls=filter_linestyles[filt], color=filter_colors[filt],
label=filt)
plt.ylim([0.0, 65])
plt.xlabel('Wavelength (nm)')
plt.ylabel('Throughput (%)')
plt.legend(loc='upper left', ncol=2)
plt.show()
Figure 1: Throughputs as a function of wavelength for the six LSSTComCam filters, $ugrizy$.