84 lines
2.7 KiB
Python
84 lines
2.7 KiB
Python
|
|
import os
|
|
from models.LIFACnoise import LifacNoiseModel
|
|
import numpy as np
|
|
|
|
|
|
def get_best_fit(folder_path):
|
|
min_err = np.inf
|
|
min_item = ""
|
|
for item in os.listdir(folder_path):
|
|
err = float(item.split("_")[-1])
|
|
if err < min_err:
|
|
min_err = err
|
|
min_item = item
|
|
|
|
return ModelFit(os.path.join(folder_path, min_item))
|
|
|
|
|
|
class ModelFit:
|
|
|
|
def __init__(self, folder_path):
|
|
self.path = folder_path
|
|
self.parameter_file_name = "parameters_info.txt"
|
|
self.value_file = "value_comparision.tsv"
|
|
self.fi_comp_img = "fi_curve_comparision.png"
|
|
self.isi_hist_img = "isi-histogram.png"
|
|
self.isi_hist_comp_img = "isi-histogram_comparision.png"
|
|
|
|
def get_final_parameters(self):
|
|
par_file_path = os.path.join(self.path, self.parameter_file_name)
|
|
with open(par_file_path, 'r') as par_file:
|
|
for line in par_file:
|
|
line = line.strip().split('\t')
|
|
|
|
if line[0] == "final_parameters:":
|
|
return dict(line[1])
|
|
|
|
print("Final parameters not found! - ", self.path)
|
|
return {}
|
|
|
|
def get_start_parameters(self):
|
|
par_file_path = os.path.join(self.path, self.parameter_file_name)
|
|
with open(par_file_path, 'r') as par_file:
|
|
for line in par_file:
|
|
line = line.strip().split('\t')
|
|
|
|
if line[0] == "start_parameters:":
|
|
return dict(line[1])
|
|
print("Start parameters not found! - ", self.path)
|
|
return {}
|
|
|
|
def get_behaviour_values(self):
|
|
values_file_path = os.path.join(self.path, self.value_file)
|
|
cell_values = {}
|
|
model_values = {}
|
|
with open(values_file_path, 'r') as val_file:
|
|
line = val_file.readline() # ignore headers
|
|
for line in val_file:
|
|
line = line.strip().split('\t')
|
|
cell_values[line[0]] = float(line[1])
|
|
model_values[line[0]] = float(line[2])
|
|
|
|
return cell_values, model_values
|
|
|
|
def get_fi_curve_comparision_image(self):
|
|
path = os.path.join(self.path, self.fi_comp_img)
|
|
if os.path.exists(path):
|
|
return path
|
|
else:
|
|
raise FileNotFoundError("Fi-curve comparision image is missing. - " + self.path)
|
|
|
|
def get_isi_histogram_image(self):
|
|
path = os.path.join(self.path, self.isi_hist_img)
|
|
if os.path.exists(path):
|
|
return path
|
|
else:
|
|
raise FileNotFoundError("Isi-histogram image is missing. - " + self.path)
|
|
|
|
def get_error_value(self):
|
|
return self.path.split("_")[-1]
|
|
|
|
def get_model(self):
|
|
return LifacNoiseModel(self.get_final_parameters())
|