예제 #1
0
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])
예제 #2
0
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)