@@ -71,30 +71,11 @@ def __init__(self, ions: list[tuple[int, int]], fname: str) -> None:
7171 self .fname = fname
7272
7373 self .ions = ions
74-
75- self ._gfall_raw = None
76- self ._gfall = None
77- self ._levels = None
78- self ._lines = None
7974 self .unique_level_identifier = ["energy" , "j" ]
8075
81- @property
82- def gfall (self ):
83- if self ._gfall is None :
84- self ._gfall = self .parse_gfall ()
85- return self ._gfall
86-
87- @property
88- def levels (self ):
89- if self ._levels is None :
90- self ._levels = self .extract_levels ()
91- return self ._levels
92-
93- @property
94- def lines (self ):
95- if self ._lines is None :
96- self ._lines = self .extract_lines ()
97- return self ._lines
76+ self .gfall = self .parse_gfall ()
77+ self .levels = self .extract_levels ()
78+ self .lines = self .extract_lines ()
9879
9980 def read_gfall_raw (self ):
10081 print (f"Parsing GFALL from: { self .fname } " )
@@ -192,36 +173,15 @@ def parse_gfall(self):
192173
193174 return gfall
194175
195- def extract_levels (self , gfall = None , selected_columns = None ):
196- """
197- Extract levels from `gfall`. We first generate a concatenated DataFrame
198- of all lower and upper levels. Then we drop the duplicate levels
199-
200- Parameters
201- ----------
202- gfall: pandas.DataFrame
203- selected_columns: list
204- list of which columns to select (optional - default=None which selects
205- a default set of columns)
206-
207- Returns
208- -------
209- pandas.DataFrame
210- a level DataFrame
211- """
212-
213- if gfall is None :
214- gfall = self .gfall
215-
216- if selected_columns is None :
217- selected_columns = [
218- "atomic_number" ,
219- "ion_charge" ,
220- "energy" ,
221- "j" ,
222- "label" ,
223- "theoretical" ,
224- ]
176+ def extract_levels (self ):
177+ selected_columns = [
178+ "atomic_number" ,
179+ "ion_charge" ,
180+ "energy" ,
181+ "j" ,
182+ "label" ,
183+ "theoretical" ,
184+ ]
225185
226186 column_renames = {
227187 "energy_{0}" : "energy" ,
@@ -230,9 +190,13 @@ def extract_levels(self, gfall=None, selected_columns=None):
230190 "energy_{0}_predicted" : "theoretical" ,
231191 }
232192
233- e_lower_levels = gfall .rename (columns = {key .format ("lower" ): value for key , value in column_renames .items ()})
193+ e_lower_levels = self .gfall .rename (
194+ columns = {key .format ("lower" ): value for key , value in column_renames .items ()}
195+ )
234196
235- e_upper_levels = gfall .rename (columns = {key .format ("upper" ): value for key , value in column_renames .items ()})
197+ e_upper_levels = self .gfall .rename (
198+ columns = {key .format ("upper" ): value for key , value in column_renames .items ()}
199+ )
236200
237201 levels = pd .concat ([e_lower_levels [selected_columns ], e_upper_levels [selected_columns ]])
238202 unique_level_id = ["atomic_number" , "ion_charge" , * self .unique_level_identifier ]
@@ -263,7 +227,7 @@ def extract_levels(self, gfall=None, selected_columns=None):
263227
264228 return levels
265229
266- def extract_lines (self , gfall = None , levels = None , selected_columns = None ):
230+ def extract_lines (self ):
267231 """
268232 Extract lines from `gfall`
269233
@@ -279,17 +243,14 @@ def extract_lines(self, gfall=None, levels=None, selected_columns=None):
279243 pandas.DataFrame
280244 a level DataFrame
281245 """
282- if gfall is None :
283- gfall = self .gfall
246+ gfall = self .gfall
284247
285- if levels is None :
286- levels = self .levels
248+ levels = self .levels
287249
288- if selected_columns is None :
289- selected_columns = ["atomic_number" , "ion_charge" ]
290- selected_columns += [item + "_lower" for item in self .unique_level_identifier ]
291- selected_columns += [item + "_upper" for item in self .unique_level_identifier ]
292- selected_columns += ["wavelength_nm" , "loggf" ]
250+ selected_columns = ["atomic_number" , "ion_charge" ]
251+ selected_columns += [item + "_lower" for item in self .unique_level_identifier ]
252+ selected_columns += [item + "_upper" for item in self .unique_level_identifier ]
253+ selected_columns += ["wavelength_nm" , "loggf" ]
293254
294255 print (f"Extracting line data: { ', ' .join (selected_columns )} ." )
295256 unique_level_id = ["atomic_number" , "ion_charge" , * self .unique_level_identifier ]
@@ -408,13 +369,13 @@ def read_levels_and_transitions(atomic_number: int, ion_stage: int, flog) -> tup
408369 fname = str (path_gfall ),
409370 )
410371
411- dflevels = gfall_reader .extract_levels () .loc [atomic_number , ion_charge ]
372+ dflevels = gfall_reader .levels .loc [atomic_number , ion_charge ]
412373
413374 energy_levels = read_levels_data (dflevels )
414375
415376 artisatomic .log_and_print (flog , f"Read { len (energy_levels [1 :]):d} levels" )
416377
417- dflines = gfall_reader .extract_lines () .loc [atomic_number , ion_charge ]
378+ dflines = gfall_reader .lines .loc [atomic_number , ion_charge ]
418379
419380 # wavelengths are in nanometers, so multiply by 10 to get Angstroms
420381 dflines = dflines .assign (
0 commit comments