@@ -50,6 +50,20 @@ struct Spectra2DBasic{T1<:Real,T2<:Real,T3<:Real,
5050 metadata:: MetadataT # Dict{Symbol,Any}
5151end
5252
53+ """ Basic struct for Spectra2D (or region of specturm)
54+ Instruments can specialize their own if additional data is avaliable. """
55+ struct Spectra2DExtended{T1<: Real ,T2<: Real ,T3<: Real ,
56+ AA1<: AbstractArray{T1,2} ,AA2<: AbstractArray{T2,2} ,AA3<: AbstractArray{T3,2} ,
57+ InstT<: AbstractInstrument
58+ } <: AbstractSpectra2D
59+ λ:: AA1
60+ λ_obs:: AA1
61+ flux:: AA2
62+ var:: AA3
63+ inst:: InstT
64+ metadata:: MetadataT # Dict{Symbol,Any}
65+ end
66+
5367
5468function Spectra1DBasic (λ:: A1 , flux:: A2 , var:: A3 , inst:: InstT ;
5569 metadata:: Dict{Symbol,Any} = Dict {Symbol,Any} () ) where {
@@ -73,3 +87,13 @@ function Spectra2DBasic(λ::A1, flux::A2, var::A3, inst::InstT;
7387 @assert 1 <= min_pixel_in_order (inst) <= max_pixel_in_order (inst)
7488 Spectra2DBasic {eltype(λ),eltype(flux),eltype(var),typeof(λ),typeof(flux),typeof(var),typeof(inst)} (λ,flux,var,inst,metadata)
7589end
90+
91+ function Spectra2DExtended (λ:: A1 , λ_obs:: A1 , flux:: A2 , var:: A3 , inst:: InstT ;
92+ metadata:: MetadataT = MetadataT () ) where {
93+ T1<: Real , T2<: Real , T3<: Real , A1<: AbstractArray{T1,2} , A2<: AbstractArray{T2,2} , A3<: AbstractArray{T3,2} ,
94+ InstT<: AbstractInstrument }
95+ @assert size (λ) == size (λ_obs) == size (flux) == size (var)
96+ @assert 1 <= size (λ,1 ) <= max_pixel_in_order (inst)- min_pixel_in_order (inst)+ 1
97+ @assert 1 <= size (λ,2 ) <= max_order (inst)- min_order (inst)+ 1
98+ Spectra2DExtended {eltype(λ),eltype(flux),eltype(var),typeof(λ),typeof(flux),typeof(var),typeof(inst)} (λ,λ_obs,flux,var,inst,metadata)
99+ end
0 commit comments