SourceParametersEstimation/json_writer.py

50 lines
1.9 KiB
Python
Raw Permalink Normal View History

2024-10-09 11:24:44 +02:00
import json
class JsonWriter:
def __init__(self, solutions, filename, logger):
self.solutions = solutions
self.filename = filename
self.data = self.prepare_file(solutions)
self.logger = logger
def save(self):
with open(self.filename, 'w') as f:
json.dump(self.data, f)
def prepare_file(self, solutions):
# Initialize an empty dictionary to hold the data
stations_dict = {}
# Iterate over the solutions list
for solution in solutions:
station_name = solution[0]
parameters = {"mo": solution[1].mo, "fo": solution[1].fo, "q": solution[1].q, "source_size": solution[1].source_size, "stress_drop": solution[1].stress_drop}
freq = solution[2]
amp_th_sp_q = solution[3]
amp_spectrum = solution[4]
# Round the parameters to two decimal places
parameters = {key: round(value, 2) for key, value in parameters.items()}
# Check if the station already exists in the dictionary
if station_name not in stations_dict:
stations_dict[station_name] = {
"parameters": list(),
"frequency": list(),
"fitted_amplitude_spectrum": list(),
"amplitude_spectrum": list()
}
try:
# Append the data to the respective lists
stations_dict[station_name]["parameters"]=parameters
if freq is not None and amp_spectrum is not None and amp_th_sp_q is not None:
stations_dict[station_name]["frequency"].extend(freq)
stations_dict[station_name]["fitted_amplitude_spectrum"].extend(amp_th_sp_q)
stations_dict[station_name]["amplitude_spectrum"].extend(amp_spectrum)
except AttributeError as ae:
self.logger.error(ae)
return stations_dict