Source code for edibles.utils.atomic_line_tool

import numpy as np
from edibles import PYTHONDIR


[docs]class AtomicLines: def __init__(self): self.filename = PYTHONDIR + "/edibles/data/atomic_lines.txt" with open(self.filename) as f: first_line = f.readline() names = first_line.split("|") indices = [] for i in range(len(names)): indices.append(len(names[i])) for i in range(1, len(indices)): indices[i] += indices[i - 1] + 1 self.wavelength = [] self.species = [] self.TT = [] self.Term = [] self.J_ik = [] self.f_ik = [] self.TPF = [] self.LVL_EN_CM_1 = [] self.REF = [] self.new_line = [] data = [ self.wavelength, self.species, self.TT, self.Term, self.J_ik, self.f_ik, self.TPF, self.LVL_EN_CM_1, self.REF, self.new_line, ] for line in f: start = 0 for i in range(len(indices)): stop = indices[i] data[i].append(line[start:stop].strip()) start = indices[i] data.insert(0, names) self.data = np.asarray(data)
[docs] def findIndex(self, ion, wave): indices = [] species = self.species for index in range(len(species)): if species[index] == ion: indices.append(index) diff = [] wavelength = self.wavelength for i in indices: wave_table = float(wavelength[i]) diff.append(np.abs(wave_table - wave)) min_val_index = np.argmin(diff) index = indices[min_val_index] return index
[docs] def get_f_known(self, ion, wave): index = self.findIndex(ion, wave) f_known = float(self.f_ik[index]) return f_known
[docs] def get_lvl_en_cm_1(self, ion, wave): index = self.findIndex(ion, wave) lvl_en_cm_1 = self.LVL_EN_CM_1[index] return lvl_en_cm_1
[docs] def getLabWavelength(self, ion, wave): index = self.findIndex(ion, wave) lab_wavelength = float(self.wavelength[index]) return lab_wavelength
[docs] def getAllLabWavelength(self, ion): # returns list of all wavelengths of the ion return [ float(self.data[1][i]) for i in range(len(self.data[1])) if self.data[2][i] == ion ]
if __name__ == "__main__": obj = AtomicLines() ion = "Na I" wave = 5000 print(obj.get_f_known(ion, wave)) print(obj.get_lvl_en_cm_1(ion, wave)) print(obj.getLabWavelength(ion, wave)) print(obj.getAllLabWavelength(ion))