Source code for pytherm.activity.db.pitzer.parametersIO

import numpy as np


[docs] class ParametersPitzer(dict): def __init__(self, parameters_name): self["parameters_name"] = parameters_name
[docs] def set_ca(self, param: list, key="ca"): if key not in self: self[key] = {} for c, a, *ca in param: if c not in self[key]: self[key][c] = {} self[key][c][a] = ca
[docs] def set_cc(self, param: list, key="cc"): if key not in self: self[key] = {} for c1, c2, *cc in param: if c1 not in self[key]: self[key][c1] = {} self[key][c1][c2] = cc[0]
[docs] def set_aa(self, param: list, key="aa"): if key not in self: self[key] = {} for a1, a2, *aa in param: if a1 not in self[key]: self[key][a1] = {} self[key][a1][a2] = aa[0]
[docs] def set_cca(self, param: list, key="cca"): if key not in self: self[key] = {} for c1, c2, a, *cca in param: if c1 not in self[key]: self[key][c1] = {} if c2 not in self[key][c1]: self[key][c1][c2] = {} self[key][c1][c2][a] = cca[0]
[docs] def set_caa(self, param: list, key="caa"): if key not in self: self[key] = {} for c, a1, a2, *caa in param: if c not in self[key]: self[key][c] = {} if a1 not in self[key][c]: self[key][c][a1] = {} self[key][c][a1][a2] = caa[0]
[docs] def set_nc(self, param: list, key="nc"): if key not in self: self[key] = {} for n, c, *nc in param: if n not in self[key]: self[key][n] = {} self[key][n][c] = nc[0]
[docs] def set_na(self, param: list, key="na"): if key not in self: self[key] = {} for n, a, *na in param: if n not in self[key]: self[key][n] = {} self[key][n][a] = na[0]
[docs] def set_nca(self, param: list, key="nca"): if key not in self: self[key] = {} for n, c, a, *nca in param: if n not in self[key]: self[key][n] = {} if c not in self[key][n]: self[key][n][c] = {} self[key][n][c][a] = nca[0]
[docs] def set_nn(self, param: list, key="nn"): if key not in self: self[key] = {} for n1, n2, *nn in param: if n1 not in self[key]: self[key][n1] = {} self[key][n1][n2] = nn[0]
[docs] def set_nnn(self, param: list, key="nnn"): if key not in self: self[key] = {} for n1, n2, n3, *nnn in param: if n1 not in self[key]: self[key][n1] = {} if n2 not in self[key][n1]: self[key][n1][n2] = {} self[key][n1][n2][n3] = nnn[0]
[docs] def is_exist(self, key, *args): if len(args) == 1: if args[0] in self[key]: return True else: False if len(args) == 3: if args[0] in self[key]: if args[1] in self[key][args[0]]: if args[2] in self[key][args[0]][args[1]]: return True else: return False else: return False else: return False if len(args) == 2: if args[0] in self[key]: if args[1] in self[key][args[0]]: return True else: return False else: return False if len(args) == 3: if args[0] in self[key]: if args[1] in self[key][args[0]]: if args[2] in self[key][args[0]][args[1]]: return True else: return False else: return False else: return False
[docs] class ParametersPitzerNew(dict): k = { 'B0': 2, 'B1': 2, 'B2': 2, 'C0': 2, 'THETA': 2, 'LAMDA': 2, 'ZETA': 3, 'PSI': 3, } raw_parameters = {} poly_form = None
[docs] def load_from_dat(self, dat_path, f): self.poly_form = f df = open(dat_path) bufer = [] for line in df: b = line while '\t' in b: b = b.replace('\t', ' ') while ' ' in b: b = b.replace(' ', ' ') if b[0] == ' ': b = b[1:] if b[0] == '#': continue if '#' in b: i = b.index('#') b = b[:i] if b[-1:] == '\n': b = b[:-1] if b[-1] == ' ': b = b[:-1] bufer.append(b) df.close() for line in bufer: if line[0] == '-': key = line[1:] continue self.__unbox_values(line.split(' '), key) for key in self.raw_parameters: if key not in ['B0', 'B1', 'B2', 'C0']: n_subs = self.k[key] if n_subs == 2: if key not in self: self[key] = {} self[key] = {s: {} for s in self.raw_parameters[key]} elif n_subs == 3: if key not in self: self[key] = {} for s1 in self.raw_parameters[key]: if s1 not in self[key]: self[key][s1] = {} for s2 in self.raw_parameters[key][s1]: if s2 not in self[key][s1]: self[key][s1][s2] = {} self['CA'] = {i: {} for i in self.raw_parameters['B0']} for s1 in self.raw_parameters['B0']: for s2 in self.raw_parameters['B0'][s1]: self['CA'][s1][s2] = np.zeros((4), dtype=np.float64)
def __unbox_values(self, line, key): n_subs = self.k[key] values = line[n_subs:] if n_subs == 2: s1, s2 = line[:n_subs] if key not in self.raw_parameters: self.raw_parameters[key] = {} if s1 not in self.raw_parameters[key]: self.raw_parameters[key][s1] = {} self.raw_parameters[key][s1][s2] = np.array(list(map(float, values))) elif n_subs == 3: s1, s2, s3 = line[:n_subs] if key not in self.raw_parameters: self.raw_parameters[key] = {} if s1 not in self.raw_parameters[key]: self.raw_parameters[key][s1] = {} if s2 not in self.raw_parameters[key][s1]: self.raw_parameters[key][s1][s2] = {} self.raw_parameters[key][s1][s2][s3] = np.array(list(map(float, values)))
[docs] def set_poly(self, f): self.poly_form = f
[docs] def update_params(self, T): coefs = self.poly_form(T) for key in self.raw_parameters: if key not in ['B0', 'B1', 'B2', 'C0']: n_subs = self.k[key] if n_subs == 2: for s1 in self.raw_parameters[key]: for s2 in self.raw_parameters[key][s1]: params = self.raw_parameters[key][s1][s2] poly = coefs[:len(params)] self[key][s1][s2] = params @ poly elif n_subs == 3: for s1 in self.raw_parameters[key]: for s2 in self.raw_parameters[key][s1]: for s3 in self.raw_parameters[key][s1][s2]: params = self.raw_parameters[key][s1][s2][s3] poly = coefs[:len(params)] self[key][s1][s2][s3] = params @ poly p = ['B0', 'B1', 'B2', 'C0'] for s1 in self.raw_parameters['B0']: for s2 in self.raw_parameters['B0'][s1]: for i in range(4): key = p[i] if s1 in self.raw_parameters[key]: if s2 in self.raw_parameters[key][s1]: params = self.raw_parameters[key][s1][s2] poly = coefs[:len(params)] self['CA'][s1][s2][i] = params @ poly
[docs] def is_exist(self, key, *args): if len(args) == 1: if args[0] in self[key]: return True else: False if len(args) == 3: if args[0] in self[key]: if args[1] in self[key][args[0]]: if args[2] in self[key][args[0]][args[1]]: return True else: return False else: return False else: return False if len(args) == 2: if args[0] in self[key]: if args[1] in self[key][args[0]]: return True else: return False else: return False if len(args) == 3: if args[0] in self[key]: if args[1] in self[key][args[0]]: if args[2] in self[key][args[0]][args[1]]: return True else: return False else: return False else: return False