66
77from .....config import SUFFIXES , Config
88from .....logger import LOGGER
9- from ....utilities import as_iterable , headers
9+ from ....utilities import as_iterable , get_metadata , headers
1010from ...group import GroupCollection
1111from ...module import Module
1212from .matrix import Matrix
@@ -60,16 +60,22 @@ class Multi(Module):
6060 DESCRIPTION = "Extracting (multi)"
6161
6262 def __init__ (self , extorders , logdamp , mskorders = None , algorithm = 'golden' ,
63- ** kwargs ):
63+ root = None , ** kwargs ):
6464 Module .__init__ (self , self .extract , ** kwargs , multiprocess = False )
6565
66+ # file root name
67+ if not isinstance (root , str ):
68+ meta = get_metadata ()
69+ self .root = meta ['Name' ]
70+ else :
71+ self .root = root
72+
6673 self .extorders = as_iterable (extorders )
6774 self .mskorders = as_iterable (mskorders )
68-
6975 self .optimizer = optimizer (algorithm , logdamp )
7076 self .matrix = Matrix (self .extorders , ** kwargs )
7177
72- def extract (self , data , sources , groups = None , root = None ):
78+ def extract (self , data , sources , groups = None ):
7379 """
7480 Method to do the mult-ended spectral extraction
7581
@@ -85,10 +91,6 @@ def extract(self, data, sources, groups=None, root=None):
8591 The collection of groups. If set as None, then no grouping
8692 will be performed. Default is None
8793
88- root : str, optional
89- The root name of the output products. If None, then
90- 'slitlessutils' is used. Default is None
91-
9294 Notes
9395 -----
9496 This is likely not to be directly called.
@@ -116,9 +118,9 @@ def extract(self, data, sources, groups=None, root=None):
116118 hdul1 .append (phdu )
117119 hdul3 .append (phdu )
118120
119- # file root name
120- if not isinstance ( root , str ):
121- root = __package__
121+ # get the package meta data
122+ meta = get_metadata ()
123+ package = meta . get ( 'Name' , '' )
122124
123125 # put loops over groups here
124126 if groups :
@@ -128,16 +130,16 @@ def extract(self, data, sources, groups=None, root=None):
128130 groups = GroupCollection ()
129131
130132 # open a PDF to write Grouping images
131- pdffile = f'{ root } _{ SUFFIXES ["L-curve" ]} .pdf'
133+ pdffile = f'{ self . root } _{ SUFFIXES ["L-curve" ]} .pdf'
132134 LOGGER .info (f'Writing grouped L-curve figure: { pdffile } ' )
133135 with PdfPages (pdffile ) as pdf :
134136 # add some info to the PDF
135137 d = pdf .infodict ()
136138 d ['Title' ] = 'L-Curve Results'
137139 d ['Author' ] = getpass .getuser ()
138- d ['Subject' ] = f'L-Curve results for grouped data from { __package__ } '
139- d ['Keywords' ] = f'{ __package__ } WFSS L-curve groups'
140- d ['Producer' ] = __package__
140+ d ['Subject' ] = f'L-Curve results for grouped data from { package } '
141+ d ['Keywords' ] = f'{ package } WFSS L-curve groups'
142+ d ['Producer' ] = package
141143
142144 for grpid , srcdict in enumerate (groups (sources )):
143145
@@ -241,13 +243,13 @@ def extract(self, data, sources, groups=None, root=None):
241243#
242244#
243245#
244- # self.matrix.lcurve.plot(f'{root}_{SUFFIXES["L-curve"]}.pdf')
246+ # self.matrix.lcurve.plot(f'{self. root}_{SUFFIXES["L-curve"]}.pdf')
245247
246248 # write out the files
247249 if len (hdul1 ) > 1 :
248250 hdul1 [0 ].header ['FILETYPE' ] = '1d spectra'
249251
250- x1dfile = f'{ root } _{ SUFFIXES ["1d spectra" ]} .fits'
252+ x1dfile = f'{ self . root } _{ SUFFIXES ["1d spectra" ]} .fits'
251253 LOGGER .info (f'Writing 1d extractions: { x1dfile } ' )
252254 hdul1 .writeto (x1dfile , overwrite = True )
253255 else :
@@ -256,12 +258,12 @@ def extract(self, data, sources, groups=None, root=None):
256258 if len (hdul3 ) > 1 :
257259 hdul3 [0 ].header ['FILETYPE' ] = '3d spectra'
258260
259- x3dfile = f'{ root } _{ SUFFIXES ["3d spectra" ]} .fits'
261+ x3dfile = f'{ self . root } _{ SUFFIXES ["3d spectra" ]} .fits'
260262 LOGGER .info (f'Writing 3d extractions: { x3dfile } ' )
261263 hdul1 .writeto (x3dfile , overwrite = True )
262264 else :
263265 LOGGER .warning ('No 3d spectra written' )
264266
265- lcvfile = f'{ root } _{ SUFFIXES ["L-curve" ]} .fits'
267+ lcvfile = f'{ self . root } _{ SUFFIXES ["L-curve" ]} .fits'
266268 LOGGER .info (f'Writing L-curve tabular data { lcvfile } ' )
267269 hdulL .writeto (lcvfile , overwrite = True )
0 commit comments