def combine_spectra(a, b): '''combine two spectra''' if a is None or b is None: return a or b if isinstance(a, specutils.SpectrumList) or isinstance(b, specutils.SpectrumList): a = a if isinstance(a, specutils.SpectrumList) else specutils.SpectrumList([a]) b = b if isinstance(b, specutils.SpectrumList) else specutils.SpectrumList([b]) return specutils.SpectrumList(a + b) if (len(a.spectral_axis) == len(b.spectral_axis) and np.allclose(a.spectral_axis, b.spectral_axis, atol=0, rtol=1e-10) and a.flux.unit.is_equivalent(b.flux.unit)): flux_a = np.atleast_2d(a.flux.value) flux_b = np.atleast_2d(b.flux.to_value(a.flux.unit)) if flux_a.shape[1:] == flux_b.shape[1:]: return specutils.Spectrum1D(spectral_axis=a.spectral_axis, flux=np.concatenate([flux_a, flux_b])*a.flux.unit) return specutils.SpectrumList([a, b])
def file_loader(*filenames): '''load a file''' spectra = [] for filename in filenames: spectra.append(specutils.Spectrum1D.read(filename)) return spectra[0] if len(spectra) == 1 else specutils.SpectrumList(spectra)