Skip to content

Commit 8e73103

Browse files
authored
Merge pull request #159 from karllark/add_wfc3
Add WFC3 grism mocking for models
2 parents 40dc3d0 + dcdb477 commit 8e73103

File tree

5 files changed

+113
-368
lines changed

5 files changed

+113
-368
lines changed

measure_extinction/merge_obsspec.py

Lines changed: 17 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,28 @@
33
import astropy.units as u
44

55
__all__ = [
6+
"merge_gen_obsspec",
67
"merge_iue_obsspec",
78
"merge_stis_obsspec",
89
"merge_spex_obsspec",
9-
"merge_nircam_ss_obsspec",
10-
"merge_irs_obsspec",
11-
"merge_miri_lrs_obsspec",
12-
"merge_miri_ifu_obsspec",
1310
]
1411

1512
fluxunit = u.erg / (u.s * u.cm * u.cm * u.angstrom)
1613

1714

15+
# define the basic info for each type of spectra
16+
# info for each entry is (resolution, wavelength_range)
17+
obsspecinfo = {
18+
"wfc3_g102": (210, [0.8, 1.15] * u.micron),
19+
"wfc3_g141": (130, [1.075, 1.70] * u.micron),
20+
"niriss_soss": (700, [0.85, 2.75] * u.micron),
21+
"nircam_ss": (1600, [2.35, 5.55] * u.micron),
22+
"irs": (150, [5.0, 40.0] * u.micron),
23+
"miri_lrs": (160, [5.0, 13.0] * u.micron),
24+
"miri_ifu": (3000, [4.8, 29.0] * u.micron),
25+
}
26+
27+
1828
def _wavegrid(resolution, wave_range):
1929
"""
2030
Define a wavelength grid at a specified resolution given
@@ -307,142 +317,8 @@ def merge_iue_obsspec(obstables, output_resolution=1000):
307317
wave_range = [1000.0, 3400.0] * u.angstrom
308318

309319
otable = merge_gen_obsspec(
310-
obstables, wave_range, output_resolution=output_resolution,
320+
obstables,
321+
wave_range,
322+
output_resolution=output_resolution,
311323
)
312324
return otable
313-
314-
315-
def merge_irs_obsspec(obstables, output_resolution=150):
316-
"""
317-
Merge one or more Spitzer IRS 1D spectra into a single spectrum
318-
on a uniform wavelength scale
319-
320-
Parameters
321-
----------
322-
obstables : list of astropy Table objects
323-
list of tables containing the observed IRS spectra
324-
usually the result of reading tables
325-
326-
output_resolution : float
327-
output resolution of spectra
328-
input spectrum assumed to be at the observed resolution
329-
330-
Returns
331-
-------
332-
output_table : astropy Table object
333-
merged spectrum
334-
"""
335-
wave_range = [5.0, 40.0] * u.micron
336-
otable = merge_gen_obsspec(
337-
obstables, wave_range, output_resolution=output_resolution,
338-
)
339-
return otable
340-
341-
342-
def merge_niriss_soss_obsspec(obstables, output_resolution=700):
343-
"""
344-
Merge one or more NIRCam slitless 1D spectra into a single spectrum
345-
on a uniform wavelength scale
346-
347-
Parameters
348-
----------
349-
obstables : list of astropy Table objects
350-
list of tables containing the observed IRS spectra
351-
usually the result of reading tables
352-
353-
output_resolution : float
354-
output resolution of spectra
355-
input spectrum assumed to be at the observed resolution
356-
357-
Returns
358-
-------
359-
output_table : astropy Table object
360-
merged spectrum
361-
"""
362-
wave_range = [0.85, 2.75] * u.micron
363-
otable = merge_gen_obsspec(
364-
obstables, wave_range, output_resolution=output_resolution
365-
)
366-
return otable
367-
368-
369-
def merge_nircam_ss_obsspec(obstables, output_resolution=1600):
370-
"""
371-
Merge one or more NIRCam slitless 1D spectra into a single spectrum
372-
on a uniform wavelength scale
373-
374-
Parameters
375-
----------
376-
obstables : list of astropy Table objects
377-
list of tables containing the observed IRS spectra
378-
usually the result of reading tables
379-
380-
output_resolution : float
381-
output resolution of spectra
382-
input spectrum assumed to be at the observed resolution
383-
384-
Returns
385-
-------
386-
output_table : astropy Table object
387-
merged spectrum
388-
"""
389-
wave_range = [2.35, 5.55] * u.micron
390-
otable = merge_gen_obsspec(
391-
obstables, wave_range, output_resolution=output_resolution
392-
)
393-
return otable
394-
395-
396-
def merge_miri_lrs_obsspec(obstables, output_resolution=160):
397-
"""
398-
Merge one or more MIRI LRS spectra into a single spectrum
399-
on a uniform wavelength scale
400-
401-
Parameters
402-
----------
403-
obstables : list of astropy Table objects
404-
list of tables containing the observed IRS spectra
405-
usually the result of reading tables
406-
407-
output_resolution : float
408-
output resolution of spectra
409-
input spectrum assumed to be at the observed resolution
410-
411-
Returns
412-
-------
413-
output_table : astropy Table object
414-
merged spectrum
415-
"""
416-
wave_range = [5.0, 13.0] * u.micron
417-
otable = merge_gen_obsspec(
418-
obstables, wave_range, output_resolution=output_resolution,
419-
)
420-
return otable
421-
422-
423-
def merge_miri_ifu_obsspec(obstables, output_resolution=3000):
424-
"""
425-
Merge one or more MIRI IFU 1D spectra into a single spectrum
426-
on a uniform wavelength scale
427-
428-
Parameters
429-
----------
430-
obstables : list of astropy Table objects
431-
list of tables containing the observed IRS spectra
432-
usually the result of reading tables
433-
434-
output_resolution : float
435-
output resolution of spectra
436-
input spectrum assumed to be at the observed resolution
437-
438-
Returns
439-
-------
440-
output_table : astropy Table object
441-
merged spectrum
442-
"""
443-
wave_range = [4.8, 29.0] * u.micron
444-
otable = merge_gen_obsspec(
445-
obstables, wave_range, output_resolution=output_resolution,
446-
)
447-
448-
return otable

measure_extinction/tests/test_merge_obsspec.py

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@
66
fluxunit,
77
_wavegrid,
88
merge_iue_obsspec,
9-
merge_irs_obsspec,
10-
merge_niriss_soss_obsspec,
11-
merge_nircam_ss_obsspec,
12-
merge_miri_lrs_obsspec,
13-
merge_miri_ifu_obsspec,
9+
merge_gen_obsspec,
1410
)
1511

1612
# still need to add merging of STIS spectroscopy
1713
# more complicated due to UV/optical options
1814

1915

20-
def _check_genmerge(wave_range, resolution, mergefunc):
16+
def _check_genmerge(wave_range, resolution, mergefunc, iue=False):
2117

2218
wave1_info = _wavegrid(resolution, wave_range.value)
2319
wave1 = wave1_info[0] * wave_range.unit
@@ -37,7 +33,10 @@ def _check_genmerge(wave_range, resolution, mergefunc):
3733
itable2["NPTS"] = np.full(nwaves, 1)
3834

3935
# merge into standard format
40-
otable = mergefunc([itable1, itable2])
36+
if iue:
37+
otable = mergefunc([itable1, itable2])
38+
else:
39+
otable = mergefunc([itable1, itable2], wave_range, resolution)
4140

4241
# check standard format
4342
for ckey in ["WAVELENGTH", "FLUX", "SIGMA", "NPTS"]:
@@ -50,34 +49,11 @@ def _check_genmerge(wave_range, resolution, mergefunc):
5049
def test_iue():
5150
wave_range = [1000.0, 3400.0] * u.angstrom
5251
resolution = 1000.0
53-
_check_genmerge(wave_range, resolution, merge_iue_obsspec)
52+
_check_genmerge(wave_range, resolution, merge_iue_obsspec, iue=True)
5453

5554

55+
# only need to test one of the "generic" merges as all the rest work the same
5656
def test_irs():
5757
wave_range = [5.0, 40.0] * u.micron
5858
resolution = 150.0
59-
_check_genmerge(wave_range, resolution, merge_irs_obsspec)
60-
61-
62-
def test_niriss_soss():
63-
wave_range = [0.85, 2.75] * u.micron
64-
resolution = 700.0
65-
_check_genmerge(wave_range, resolution, merge_niriss_soss_obsspec)
66-
67-
68-
def test_nircam_ss():
69-
wave_range = [2.35, 5.55] * u.micron
70-
resolution = 1600.0
71-
_check_genmerge(wave_range, resolution, merge_nircam_ss_obsspec)
72-
73-
74-
def test_miri_lrs():
75-
wave_range = [4.0, 15.0] * u.micron
76-
resolution = 160.0
77-
_check_genmerge(wave_range, resolution, merge_miri_lrs_obsspec)
78-
79-
80-
def test_miri_mrs():
81-
wave_range = [4.5, 32.0] * u.micron
82-
resolution = 4000.0
83-
_check_genmerge(wave_range, resolution, merge_miri_ifu_obsspec)
59+
_check_genmerge(wave_range, resolution, merge_gen_obsspec)

0 commit comments

Comments
 (0)