@@ -14,7 +14,7 @@ def __init__(self, mask, instrument=None):
14
14
self .mask_name = mask
15
15
self .instrument = instrument
16
16
17
- mask_file = f'{ instrument } _{ mask } .fits'
17
+ mask_file = self . _mask_file = f'{ instrument } _{ mask } .fits'
18
18
19
19
if not os .path .exists (mask_file ):
20
20
try :
@@ -28,11 +28,25 @@ def __init__(self, mask, instrument=None):
28
28
self ._wavelength = self .wavelength .copy ()
29
29
self ._contrast = self .contrast .copy ()
30
30
31
+ @classmethod
32
+ def from_arrays (cls , wavelength , contrast , name = None , instrument = None ):
33
+ self = cls .__new__ (cls )
34
+ self .wavelength = wavelength
35
+ self .contrast = contrast
36
+ self ._wavelength = self .wavelength .copy ()
37
+ self ._contrast = self .contrast .copy ()
38
+ self .mask_name = name or 'unnamed'
39
+ self .instrument = None
40
+ return self
41
+
42
+
31
43
@property
32
44
def nlines (self ):
33
45
return self .wavelength .size
34
46
35
47
def __repr__ (self ):
48
+ if self .instrument is None :
49
+ return f'Mask({ self .mask_name } , { self .nlines } lines)'
36
50
return f'Mask({ self .mask_name } , { self .instrument } , { self .nlines } lines)'
37
51
38
52
def __getitem__ (self , key ):
@@ -75,16 +89,21 @@ def reset(self):
75
89
self .wavelength = self ._wavelength
76
90
self .contrast = self ._contrast
77
91
78
- def plot (self , ax = None , rv = 0 , down = False , factor = 1 , show_original = True , ** kwargs ):
92
+ def plot (self , ax = None , rv = 0 , down = False , factor = 1 , show_original = True , norm = False ,
93
+ ** kwargs ):
79
94
if ax is None :
80
95
fig , ax = plt .subplots (figsize = (8 , 4 ), constrained_layout = True )
81
96
else :
82
97
fig = ax .figure
83
98
84
99
if down :
85
100
a , b = - self .contrast * factor , 0
101
+ if norm :
102
+ a /= self .contrast .max ()
86
103
else :
87
104
a , b = 0 , self .contrast * factor
105
+ if norm :
106
+ b /= self .contrast .max ()
88
107
89
108
w = doppler_shift_wave (self .wavelength , rv )
90
109
ax .vlines (w , a , b , alpha = 0.8 , ** kwargs ,
@@ -98,3 +117,4 @@ def plot(self, ax=None, rv=0, down=False, factor=1, show_original=True, **kwargs
98
117
99
118
ax .legend ()
100
119
ax .set (xlabel = r'wavelength [$\AA$]' , ylabel = 'contrast' )
120
+ return fig , ax
0 commit comments