Skip to content

Commit 7806d08

Browse files
committed
Update readkuruczdata.py
1 parent 99db639 commit 7806d08

File tree

1 file changed

+27
-66
lines changed

1 file changed

+27
-66
lines changed

artisatomic/readkuruczdata.py

Lines changed: 27 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)