UML Diagrams¶
These diagrams are generated from the Python sources under goliat/ using Pyreverse (from Pylint). The generator script is scripts/generate_uml.py.
Class Diagram
Could not retrieve image data, got: Forbidden [403]
@startuml classes_GOLIAT
set namespaceSeparator none
class "Analyzer" as goliat.analysis.analyzer.Analyzer {
all_organ_results : list
all_results : list
base_dir
config : str
phantom_name : str
plotter
results_base_dir
strategy : str
tissue_group_definitions : dict
__init__(config: 'Config', phantom_name: str, strategy: 'BaseAnalysisStrategy')
_convert_units_and_cache(results_df: pd.DataFrame, organ_results_df: pd.DataFrame) -> pd.DataFrame
_export_reports(results_df: pd.DataFrame, all_organ_results_df: pd.DataFrame)
_generate_plots(results_df: pd.DataFrame, all_organ_results_df: pd.DataFrame)
_process_single_result(frequency_mhz: int, scenario_name: str, pos_name: str, orient_name: str)
run_analysis()
}
class "Antenna" as goliat.antenna.Antenna {
antenna_config
config : str
frequency_mhz : int
__init__(config: 'Config', frequency_mhz: int)
get_centered_antenna_path(centered_antennas_dir: str) -> str
get_config_for_frequency() -> dict
get_model_type() -> str
get_source_entity_name() -> str
}
class "BaseAnalysisStrategy" as goliat.analysis.base_strategy.BaseAnalysisStrategy {
base_dir
config : str
phantom_name : str
__init__(config: 'Config', phantom_name: str)
{abstract}apply_bug_fixes(result_entry: dict) -> dict
{abstract}calculate_summary_stats(results_df: pd.DataFrame) -> pd.DataFrame
{abstract}extract_data(pickle_data: dict, frequency_mhz: int, placement_name: str, scenario_name: str, sim_power: float, norm_factor: float) -> tuple[dict, list]
{abstract}generate_plots(analyzer: 'Analyzer', plotter: 'Plotter', results_df: pd.DataFrame, all_organ_results_df: pd.DataFrame)
{abstract}get_normalization_factor(frequency_mhz: int, simulated_power_w: float) -> float
{abstract}get_plots_dir() -> str
{abstract}get_results_base_dir() -> str
{abstract}load_and_process_results(analyzer: 'Analyzer')
}
class "BaseSetup" as goliat.setups.base_setup.BaseSetup {
config : str
emfdtd
model
progress_logger : str
s4l_v1
verbose_logger : str
__init__(config: 'Config', verbose_logger: 'Logger', progress_logger: 'Logger')
_add_point_sensors(simulation: 'emfdtd.Simulation', sim_bbox_entity_name: str)
_apply_simulation_time_and_termination(simulation: 'emfdtd.Simulation', sim_bbox_entity: 'model.Entity', frequency_mhz: int)
_finalize_setup(project_manager: 'ProjectManager', simulation: 'emfdtd.Simulation', all_simulation_parts: list, frequency_mhz: int)
_setup_solver_settings(simulation: 'emfdtd.Simulation')
{abstract}run_full_setup(project_manager: 'ProjectManager')
}
class "BaseStudy" as goliat.studies.base_study.BaseStudy {
base_dir
config
gui : Optional['QueueGUI']
line_profiler : NoneType
no_cache : bool
profiler
progress_logger : NoneType, RootLogger
project_manager
study_type : str
verbose_logger : NoneType, RootLogger
__init__(study_type: str, config_filename: Optional[str], gui: Optional['QueueGUI'], profiler, no_cache: bool)
_check_for_stop_signal()
_execute_run_phase(simulation)
_log_line_profiler_stats(task_name: str, lp: LineProfiler)
{abstract}_run_study()
_setup_line_profiler_if_needed(subtask_name: str, instance) -> tuple
_verify_and_update_metadata(stage: str)
end_stage_animation()
run()
start_stage_animation(task_name: str, end_value: int)
subtask(task_name: str, instance_to_profile)
}
class "BatchGUI" as goliat.osparc_batch.gui.BatchGUI {
button_layout
cancel_jobs_requested
force_stop_button
print_progress_requested
progress_button
stop_and_cancel_button
stop_run_requested
tray_button
tray_icon
__init__()
closeEvent(event)
force_stop_run()
hide_to_tray()
init_ui()
show_from_tray()
stop_and_cancel_jobs()
tray_icon_activated(reason)
}
class "BoundarySetup" as goliat.setups.boundary_setup.BoundarySetup {
simulation : str
__init__(config: 'Config', simulation: 'emfdtd.Simulation', verbose_logger: 'Logger', progress_logger: 'Logger')
setup_boundary_conditions()
}
class "Cleaner" as goliat.extraction.cleaner.Cleaner {
parent : str
__init__(parent: 'ResultsExtractor')
_delete_files(cleanup_types: list, file_patterns: dict) -> int
_delete_single_file(file_path: str) -> bool
cleanup_simulation_files()
}
class "ColorFormatter" as goliat.logging_manager.ColorFormatter {
format(record: logging.LogRecord) -> str
}
class "Config" as goliat.config.Config {
base_dir : str
config
config_path
material_mapping
material_mapping_path
profiling_config
profiling_config_path
__init__(base_dir: str, config_filename: str, no_cache: bool)
_cleanup_old_data_files(data_dir: str)
_load_config_with_inheritance(path: str) -> dict
_load_json(path: str) -> dict
_load_or_create_profiling_config() -> dict
_resolve_config_path(config_filename: str, base_path: str) -> str
build_simulation_config(phantom_name: str, frequency_mhz: int, scenario_name: Optional[str], position_name: Optional[str], orientation_name: Optional[str], direction_name: Optional[str], polarization_name: Optional[str]) -> dict
get_antenna_component_names(antenna_model_type: str) -> list
get_antenna_config() -> dict
get_auto_cleanup_previous_results() -> list
get_bandwidth() -> float
get_download_email() -> str
get_excitation_type() -> str
get_freespace_expansion() -> list
get_gridding_parameters() -> dict
get_line_profiling_config() -> dict
get_manual_isolve() -> bool
get_material_mapping(phantom_name: str) -> dict
get_only_write_input_file() -> bool
get_osparc_credentials() -> dict
get_phantom_definition(phantom_name: str) -> dict
get_placement_scenario(scenario_name: str) -> dict
get_profiling_config(study_type: str) -> dict
get_setting(path: str, default)
get_simulation_parameters() -> dict
get_solver_settings() -> dict
}
class "CustomFormatter" as goliat.logging_manager.CustomFormatter {
format(record: logging.LogRecord) -> str
}
class "DataManager" as goliat.gui.components.data_manager.DataManager {
data_dir : str
overall_progress_file : str
session_hash : str
time_remaining_file : str
verbose_logger : Logger
__init__(data_dir: str, verbose_logger: Logger) -> None
_cleanup_old_data_files() -> None
_initialize_files() -> None
write_overall_progress(progress_percent: float) -> None
write_time_remaining(hours_remaining: float) -> None
}
class "FarFieldAnalysisStrategy" as goliat.analysis.far_field_strategy.FarFieldAnalysisStrategy {
apply_bug_fixes(result_entry: dict) -> dict
calculate_summary_stats(results_df: pd.DataFrame) -> pd.DataFrame
extract_data(pickle_data: dict, frequency_mhz: int, placement_name: str, scenario_name: str, sim_power: float, norm_factor: float) -> tuple[dict, list]
generate_plots(analyzer: 'Analyzer', plotter: 'Plotter', results_df: pd.DataFrame, all_organ_results_df: pd.DataFrame)
get_normalization_factor(frequency_mhz: int, simulated_power_w: float) -> float
get_plots_dir() -> str
get_results_base_dir() -> str
load_and_process_results(analyzer: 'Analyzer')
}
class "FarFieldSetup" as goliat.setups.far_field_setup.FarFieldSetup {
direction_name : str
document
frequency_mhz : int
gui : NoneType
phantom_name : str
polarization_name : str
profiler : str
project_manager : str
simulation_type
__init__(config: 'Config', phantom_name: str, frequency_mhz: int, direction_name: str, polarization_name: str, project_manager: 'ProjectManager', verbose_logger: 'Logger', progress_logger: 'Logger', profiler: 'Profiler', gui)
_create_or_get_simulation_bbox() -> 'model.Entity'
_create_simulation_entity(bbox_entity: 'model.Entity') -> 'emfdtd.Simulation'
run_full_setup(project_manager: 'ProjectManager') -> 'emfdtd.Simulation'
}
class "FarFieldStudy" as goliat.studies.far_field_study.FarFieldStudy {
_run_single_simulation(phantom_name: str, freq: int, direction_name: str, polarization_name: str, do_setup: bool, do_run: bool, do_extract: bool)
_run_study()
_validate_auto_cleanup_config(do_setup: bool, do_run: bool, do_extract: bool, auto_cleanup: list)
}
class "GriddingSetup" as goliat.setups.gridding_setup.GriddingSetup {
_setup_main_grid()
_setup_subgrids(antenna_components: dict)
setup_gridding(antenna_components: dict | None)
}
class "LoggingMixin" as goliat.logging_manager.LoggingMixin {
gui : Optional['QueueGUI']
progress_logger : Logger
verbose_logger : Logger
_log(message: str, level: str, log_type: str)
}
class "MaterialSetup" as goliat.setups.material_setup.MaterialSetup {
_assign_antenna_materials(antenna_components: dict)
_assign_phantom_materials()
assign_materials(antenna_components: dict | None, phantom_only: bool)
}
class "NearFieldAnalysisStrategy" as goliat.analysis.near_field_strategy.NearFieldAnalysisStrategy {
calculate_summary_stats(results_df: pd.DataFrame) -> pd.DataFrame
extract_data(pickle_data: dict, frequency_mhz: int, placement_name: str, scenario_name: str, sim_power: float, norm_factor: float) -> tuple[dict, list]
generate_plots(analyzer: 'Analyzer', plotter: 'Plotter', results_df: pd.DataFrame, all_organ_results_df: pd.DataFrame)
get_normalization_factor(frequency_mhz: int, simulated_power_w: float) -> float
get_plots_dir() -> str
get_results_base_dir() -> str
load_and_process_results(analyzer: 'Analyzer')
}
class "NearFieldSetup" as goliat.setups.near_field_setup.NearFieldSetup {
XCoreModeling
antenna : str
base_placement_name : str
document
free_space : bool
frequency_mhz : int
gui : NoneType
orientation_name : str
phantom_name : str
placement_name : str
position_name : str
profiler : str
__init__(config: 'Config', phantom_name: str, frequency_mhz: int, scenario_name: str, position_name: str, orientation_name: str, antenna: 'Antenna', verbose_logger: 'Logger', progress_logger: 'Logger', profiler: 'Profiler', gui, free_space: bool)
_align_simulation_with_phone()
_create_simulation_bbox()
_find_touching_angle() -> float
_get_antenna_components() -> dict
_handle_phantom_rotation(placement_setup: 'PlacementSetup')
_setup_bounding_boxes()
_setup_simulation_entity() -> 'emfdtd.Simulation'
run_full_setup(project_manager: 'ProjectManager', lock) -> 'emfdtd.Simulation'
}
class "NearFieldStudy" as goliat.studies.near_field_study.NearFieldStudy {
_run_placement(phantom_name: str, freq: int, scenario_name: str, position_name: str, orientation_name: str, do_setup: bool, do_run: bool, do_extract: bool)
_run_study()
_validate_auto_cleanup_config(do_setup: bool, do_run: bool, do_extract: bool, auto_cleanup: list)
}
class "NumpyArrayEncoder" as goliat.extraction.json_encoder.NumpyArrayEncoder {
default(o: Any) -> Any
}
class "OverallProgressPlot" as goliat.gui.components.plots.OverallProgressPlot {
ax : Axes
canvas : FigureCanvasQTAgg
data : List[Tuple[datetime, float]]
figure : Figure
max_progress_seen : float
__init__() -> None
_refresh() -> None
_setup() -> None
add_data_point(timestamp: datetime, progress_percent: float) -> None
}
class "PhantomSetup" as goliat.setups.phantom_setup.PhantomSetup {
XCoreModeling
data
model
phantom_name : str
__init__(config: 'Config', phantom_name: str, verbose_logger: 'Logger', progress_logger: 'Logger')
_log(message: str, level: str, log_type: str)
ensure_phantom_is_loaded() -> bool
}
class "PieChartsManager" as goliat.gui.components.plots.PieChartsManager {
axes : List[_Axes]
canvas : FigureCanvasQTAgg
figure : Figure
__init__() -> None
_setup() -> None
update(profiler: 'Profiler') -> None
}
class "PlacementSetup" as goliat.setups.placement_setup.PlacementSetup {
orientation_rotations : list
_get_placement_details() -> tuple
_get_speaker_reference(ground_entities, upright_transform)
place_antenna()
}
class "Plotter" as goliat.analysis.plotter.Plotter {
plots_dir : str
__init__(plots_dir: str)
_plot_heatmap(fig, ax, data: pd.DataFrame, title: str, cbar: bool, cbar_ax)
plot_average_sar_bar(scenario_name: str, avg_results: pd.DataFrame, progress_info: pd.Series)
plot_far_field_distribution_boxplot(results_df: pd.DataFrame, metric: str)
plot_peak_sar_heatmap(organ_df: pd.DataFrame, group_df: pd.DataFrame, tissue_groups: dict, value_col: str, title: str)
plot_peak_sar_line(summary_stats: pd.DataFrame)
plot_pssar_line(scenario_name: str, avg_results: pd.DataFrame)
plot_sar_distribution_boxplots(scenario_name: str, scenario_results_df: pd.DataFrame)
plot_sar_heatmap(organ_df: pd.DataFrame, group_df: pd.DataFrame, tissue_groups: dict)
plot_whole_body_sar_bar(avg_results: pd.DataFrame)
}
class "PowerExtractor" as goliat.extraction.power_extractor.PowerExtractor {
config
document
frequency_mhz
gui
parent : str
placement_name
progress_logger
results_data : dict
simulation
study_type
verbose_logger
__init__(parent: 'ResultsExtractor', results_data: dict)
_extract_far_field_power()
_extract_near_field_power(simulation_extractor: 'analysis.Extractor')
extract_input_power(simulation_extractor: 'analysis.Extractor')
extract_power_balance(simulation_extractor: 'analysis.Extractor')
}
class "Profiler" as goliat.profiler.Profiler {
completed_phases : set
completed_simulations : int
completed_stages_in_phase : int
config_path : str
current_phase : NoneType, str
current_project : int
execution_control : dict
phase_start_time : NoneType
phase_weights : dict
profiling_config : dict
run_phase_total_duration : int
start_time
study_type : str
subtask_stack : list
subtask_times : defaultdict
total_projects : int
total_simulations : int
total_stages_in_phase : int
__init__(execution_control: dict, profiling_config: dict, study_type: str, config_path: str)
_calculate_phase_weights() -> dict
complete_run_phase()
end_stage()
get_phase_subtasks(phase_name: str) -> list
get_subtask_estimate(task_name: str) -> float
get_time_remaining(current_stage_progress: float) -> float
get_weighted_progress(phase_name: str, phase_progress_ratio: float) -> float
save_estimates()
set_current_project(project_index: int)
set_project_scope(total_projects: int)
set_total_simulations(total: int)
simulation_completed()
start_stage(phase_name: str, total_stages: int)
subtask(task_name: str)
update_and_save_estimates()
}
class "Profiler" as goliat.utils.Profiler {
completed_runs : int
config_path : str
current_run_start_time : NoneType
profiling_config
run_times : list
start_time
study_type : str
total_runs : int
__init__(config_path: str, study_type: str)
_load_config() -> dict
end_run()
get_average_run_time() -> float
get_elapsed() -> float
get_time_remaining() -> float
save_estimates()
start_run()
start_study(total_runs: int)
subtask(name: str)
}
class "ProgressAnimation" as goliat.gui.components.progress_animation.ProgressAnimation {
active : bool
debug : bool
duration : float
end_value : int
progress_bar
start_time : float
start_value : int
timer
__init__(progress_bar: 'QProgressBar', timer: 'QTimer', debug: bool) -> None
{abstract}_log(message: str) -> None
start(estimated_duration: float, end_step: int) -> None
stop() -> None
update() -> None
}
class "ProgressGUI" as goliat.gui.progress_gui.ProgressGUI {
DEBUG : bool
animation_timer
clock_timer
current_simulation_count : int
data_manager
graph_timer
init_window_title : str
process : Process
profiler : Optional['Profiler']
profiler_phase : Optional[str]
progress_animation
progress_logger : Logger
queue
queue_handler
queue_timer
start_time : float
status_manager
stop_event : Event
study_had_errors : bool
study_is_finished : bool
total_simulations : int
total_steps_for_stage : int
tray_manager
verbose_logger : Logger
__init__(queue: Queue, stop_event: Event, process: Process, init_window_title: str) -> None
closeEvent(event: Any) -> None
end_stage_animation() -> None
hide_to_tray() -> None
show_from_tray() -> None
start_stage_animation(estimated_duration: float, end_step: int) -> None
stop_study() -> None
study_finished(error: bool) -> None
update_animation() -> None
update_clock() -> None
update_graphs() -> None
update_overall_progress(current_step: int, total_steps: int) -> None
update_simulation_details(sim_count: int, total_sims: int, details: str) -> None
update_stage_progress(stage_name: str, current_step: int, total_steps: int, sub_stage: str) -> None
update_status(message: str, log_type: str) -> None
}
class "ProjectCorruptionError" as goliat.project_manager.ProjectCorruptionError {
}
class "ProjectManager" as goliat.project_manager.ProjectManager {
config : str
document
execution_control : dict
gui : Optional['QueueGUI']
no_cache : bool
progress_logger : str
project_path : NoneType, Optional[str]
verbose_logger : str
__init__(config: 'Config', verbose_logger: 'Logger', progress_logger: 'Logger', gui: Optional['QueueGUI'], no_cache: bool)
_generate_config_hash(config_dict: dict) -> str
_get_deliverables_status(project_dir: str, project_filename: str, setup_timestamp: float) -> dict
_is_valid_smash_file() -> bool
cleanup()
close()
create_new()
create_or_open_project(phantom_name: str, frequency_mhz: int, scenario_name: Optional[str], position_name: Optional[str], orientation_name: Optional[str]) -> dict
open()
reload_project()
save()
update_simulation_metadata(meta_path: str, run_done: Optional[bool], extract_done: Optional[bool])
verify_simulation_metadata(meta_path: str, surgical_config: dict, smash_path: Optional[str]) -> dict
write_simulation_metadata(meta_path: str, surgical_config: dict)
}
class "QueueGUI" as goliat.gui.queue_gui.QueueGUI {
profiler : str
progress_logger : Logger
queue
stop_event : Event
verbose_logger : Logger
__init__(queue: Queue, stop_event: Event, profiler: 'Profiler', progress_logger: Logger, verbose_logger: Logger) -> None
end_stage_animation() -> None
is_stopped() -> bool
log(message: str, level: str, log_type: str) -> None
{abstract}process_events() -> None
start_stage_animation(task_name: str, end_value: int) -> None
update_overall_progress(current_step: int, total_steps: int) -> None
update_profiler() -> None
update_simulation_details(sim_count: int, total_sims: int, details: str) -> None
update_stage_progress(stage_name: str, current_step: int, total_steps: int, sub_stage: str) -> None
}
class "QueueHandler" as goliat.gui.components.queue_handler.QueueHandler {
gui : str
__init__(gui_instance: 'ProgressGUI') -> None
process_queue() -> None
}
class "Reporter" as goliat.extraction.reporter.Reporter {
parent : str
__init__(parent: 'ResultsExtractor')
_build_html_content(df: pd.DataFrame, tissue_groups: dict, group_sar_stats: dict, results_data: dict) -> str
_get_results_dir() -> str
_save_html_report(results_dir: str, df: pd.DataFrame, tissue_groups: dict, group_sar_stats: dict, results_data: dict)
_save_pickle_report(results_dir: str, df: pd.DataFrame, tissue_groups: dict, group_sar_stats: dict, results_data: dict)
save_reports(df: pd.DataFrame, tissue_groups: dict, group_sar_stats: dict, results_data: dict)
}
class "ResultsExtractor" as goliat.results_extractor.ResultsExtractor {
analysis
config : str
document
free_space : bool
frequency_mhz : int
gui : str
orientation_name : str
phantom_name : str
placement_name : str
progress_logger : str
simulation : str
study : str
study_type : str
units
verbose_logger : str
__init__(config: 'Config', simulation: 's4l_v1.simulation.emfdtd.Simulation', phantom_name: str, frequency_mhz: int, scenario_name: str, position_name: str, orientation_name: str, study_type: str, verbose_logger: 'Logger', progress_logger: 'Logger', free_space: bool, gui: 'Optional[QueueGUI]', study: 'Optional[BaseStudy]')
_save_json_results(results_data: dict)
extract()
get_deliverable_filenames() -> dict
}
class "SarExtractor" as goliat.extraction.sar_extractor.SarExtractor {
analysis
config
document
gui
parent : str
phantom_name
placement_name
progress_logger
results_data : dict
simulation
units
verbose_logger
__init__(parent: 'ResultsExtractor', results_data: dict)
_calculate_group_sar(df: pd.DataFrame, tissue_groups: dict) -> dict
_define_tissue_groups(available_tissues: list) -> dict
extract_peak_sar_details(em_sensor_extractor: 'analysis.Extractor')
extract_sar_statistics(simulation_extractor: 'analysis.Extractor')
}
class "SensorExtractor" as goliat.extraction.sensor_extractor.SensorExtractor {
parent : str
progress_logger
results_data : dict
verbose_logger
__init__(parent: 'ResultsExtractor', results_data: dict)
_save_plot(fig, ax)
extract_point_sensor_data(simulation_extractor: 'analysis.Extractor')
}
class "SimulationRunner" as goliat.simulation_runner.SimulationRunner {
config : str
document
gui : str
profiler : str
progress_logger : str
project_path : str
simulation : str
verbose_logger : str
__init__(config: 'Config', project_path: str, simulation: 's4l_v1.simulation.emfdtd.Simulation', profiler: 'Profiler', verbose_logger: 'Logger', progress_logger: 'Logger', gui: 'Optional[QueueGUI]')
_get_server_id(server_name: str) -> Optional[str]
_run_isolve_manual(simulation: 's4l_v1.simulation.emfdtd.Simulation')
_run_osparc_direct(simulation: 's4l_v1.simulation.emfdtd.Simulation', server_name: str)
run()
}
class "SourceSetup" as goliat.setups.source_setup.SourceSetup {
antenna : str
free_space : bool
frequency_mhz : int
simulation : str
units
__init__(config: 'Config', simulation: 'emfdtd.Simulation', frequency_mhz: int, antenna: 'Antenna', verbose_logger: 'Logger', progress_logger: 'Logger', free_space: bool)
setup_source_and_sensors(antenna_components: dict)
}
class "StatusManager" as goliat.gui.components.status_manager.StatusManager {
color_map : dict[str, str]
error_count : int
warning_count : int
__init__() -> None
format_message(message: str, log_type: str) -> str
get_color(log_type: str) -> str
get_error_summary() -> str
record_log(log_type: str) -> None
}
class "StudyCancelledError" as goliat.utils.StudyCancelledError {
}
class "TimeRemainingPlot" as goliat.gui.components.plots.TimeRemainingPlot {
ax : Axes
canvas : FigureCanvasQTAgg
data : List[Tuple[datetime, float]]
figure : Figure
max_time_remaining_seen : float
__init__() -> None
_refresh() -> None
_setup() -> None
add_data_point(timestamp: datetime, hours_remaining: float) -> None
}
class "TimingsTable" as goliat.gui.components.timings_table.TimingsTable {
table
__init__(table_widget: QTableWidget) -> None
_setup_table() -> None
update(profiler: 'Profiler') -> None
}
class "TrayManager" as goliat.gui.components.tray_manager.TrayManager {
parent
tray_icon
__init__(parent_widget: QWidget, show_callback: Callable[[], None], close_callback: Callable[[], None]) -> None
_tray_icon_activated(reason: QSystemTrayIcon.ActivationReason, show_callback: Callable[[], None]) -> None
hide() -> None
is_visible() -> bool
show() -> None
}
class "UIBuilder" as goliat.gui.components.ui_builder.UIBuilder {
STYLESHEET : str
_build_buttons(gui_instance: 'ProgressGUI', main_layout: QVBoxLayout) -> None
_build_overall_progress_tab(gui_instance: 'ProgressGUI') -> None
_build_piecharts_tab(gui_instance: 'ProgressGUI') -> None
_build_progress_tab(gui_instance: 'ProgressGUI', status_manager: 'StatusManager') -> None
_build_time_remaining_tab(gui_instance: 'ProgressGUI') -> None
_build_timings_tab(gui_instance: 'ProgressGUI') -> None
build(gui_instance: 'ProgressGUI', status_manager: 'StatusManager') -> None
get_icon_path() -> str
}
class "Worker" as goliat.osparc_batch.worker.Worker {
client_cfg : NoneType
config : NoneType
config_path : str
download_and_process_results : Callable[..., Any]
download_executor : ThreadPoolExecutor
downloaded_jobs : set
file_retries : dict
file_to_job_id : dict
finished
get_osparc_client_config : Callable[..., Any]
get_progress_report : Callable[..., str]
input_files : list
job_statuses : dict
jobs_being_downloaded : set
logger : Logger
main_process_logic : Callable[..., Any]
progress
running_jobs : dict
status_update_requested
stop_requested : bool
timer
__init__(config_path: str, logger: logging.Logger, get_osparc_client_config_func: Callable[..., Any], download_and_process_results_func: Callable[..., Any], get_progress_report_func: Callable[..., str], main_process_logic_func: Callable[..., Any])
_check_jobs_status()
_download_job_in_thread(job, solver, file_path: Path)
_resubmit_job(file_path: Path)
_update_job_status(job_id: str, status: str)
cancel_jobs()
request_progress_report()
run()
stop()
}
goliat.analysis.far_field_strategy.FarFieldAnalysisStrategy --|> goliat.analysis.base_strategy.BaseAnalysisStrategy
goliat.analysis.near_field_strategy.NearFieldAnalysisStrategy --|> goliat.analysis.base_strategy.BaseAnalysisStrategy
goliat.extraction.power_extractor.PowerExtractor --|> goliat.logging_manager.LoggingMixin
goliat.extraction.sar_extractor.SarExtractor --|> goliat.logging_manager.LoggingMixin
goliat.gui.queue_gui.QueueGUI --|> goliat.logging_manager.LoggingMixin
goliat.project_manager.ProjectManager --|> goliat.logging_manager.LoggingMixin
goliat.results_extractor.ResultsExtractor --|> goliat.logging_manager.LoggingMixin
goliat.setups.base_setup.BaseSetup --|> goliat.logging_manager.LoggingMixin
goliat.setups.boundary_setup.BoundarySetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.far_field_setup.FarFieldSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.gridding_setup.GriddingSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.material_setup.MaterialSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.near_field_setup.NearFieldSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.phantom_setup.PhantomSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.placement_setup.PlacementSetup --|> goliat.setups.base_setup.BaseSetup
goliat.setups.source_setup.SourceSetup --|> goliat.setups.base_setup.BaseSetup
goliat.simulation_runner.SimulationRunner --|> goliat.logging_manager.LoggingMixin
goliat.studies.base_study.BaseStudy --|> goliat.logging_manager.LoggingMixin
goliat.studies.far_field_study.FarFieldStudy --|> goliat.studies.base_study.BaseStudy
goliat.studies.near_field_study.NearFieldStudy --|> goliat.studies.base_study.BaseStudy
goliat.analysis.plotter.Plotter --* goliat.analysis.analyzer.Analyzer : plotter
goliat.config.Config --* goliat.studies.base_study.BaseStudy : config
goliat.gui.components.data_manager.DataManager --* goliat.gui.progress_gui.ProgressGUI : data_manager
goliat.gui.components.progress_animation.ProgressAnimation --* goliat.gui.progress_gui.ProgressGUI : progress_animation
goliat.gui.components.queue_handler.QueueHandler --* goliat.gui.progress_gui.ProgressGUI : queue_handler
goliat.gui.components.status_manager.StatusManager --* goliat.gui.progress_gui.ProgressGUI : status_manager
goliat.gui.components.tray_manager.TrayManager --* goliat.gui.progress_gui.ProgressGUI : tray_manager
goliat.profiler.Profiler --* goliat.studies.base_study.BaseStudy : profiler
goliat.project_manager.ProjectManager --* goliat.studies.base_study.BaseStudy : project_manager
goliat.config.Config --o goliat.osparc_batch.worker.Worker : config
@enduml
Packages Diagram
Could not retrieve image data, got: Forbidden [403]
@startuml packages_GOLIAT
set namespaceSeparator none
package "goliat" as goliat {
}
package "goliat.analysis" as goliat.analysis {
}
package "goliat.analysis.analyzer" as goliat.analysis.analyzer {
}
package "goliat.analysis.base_strategy" as goliat.analysis.base_strategy {
}
package "goliat.analysis.far_field_strategy" as goliat.analysis.far_field_strategy {
}
package "goliat.analysis.near_field_strategy" as goliat.analysis.near_field_strategy {
}
package "goliat.analysis.plotter" as goliat.analysis.plotter {
}
package "goliat.antenna" as goliat.antenna {
}
package "goliat.colors" as goliat.colors {
}
package "goliat.config" as goliat.config {
}
package "goliat.data_extractor" as goliat.data_extractor {
}
package "goliat.extraction" as goliat.extraction {
}
package "goliat.extraction.cleaner" as goliat.extraction.cleaner {
}
package "goliat.extraction.json_encoder" as goliat.extraction.json_encoder {
}
package "goliat.extraction.power_extractor" as goliat.extraction.power_extractor {
}
package "goliat.extraction.reporter" as goliat.extraction.reporter {
}
package "goliat.extraction.sar_extractor" as goliat.extraction.sar_extractor {
}
package "goliat.extraction.sensor_extractor" as goliat.extraction.sensor_extractor {
}
package "goliat.gui" as goliat.gui {
}
package "goliat.gui.components" as goliat.gui.components {
}
package "goliat.gui.components.data_manager" as goliat.gui.components.data_manager {
}
package "goliat.gui.components.plots" as goliat.gui.components.plots {
}
package "goliat.gui.components.progress_animation" as goliat.gui.components.progress_animation {
}
package "goliat.gui.components.queue_handler" as goliat.gui.components.queue_handler {
}
package "goliat.gui.components.status_manager" as goliat.gui.components.status_manager {
}
package "goliat.gui.components.timings_table" as goliat.gui.components.timings_table {
}
package "goliat.gui.components.tray_manager" as goliat.gui.components.tray_manager {
}
package "goliat.gui.components.ui_builder" as goliat.gui.components.ui_builder {
}
package "goliat.gui.progress_gui" as goliat.gui.progress_gui {
}
package "goliat.gui.queue_gui" as goliat.gui.queue_gui {
}
package "goliat.gui_manager" as goliat.gui_manager {
}
package "goliat.logging_manager" as goliat.logging_manager {
}
package "goliat.osparc_batch" as goliat.osparc_batch {
}
package "goliat.osparc_batch.cleanup" as goliat.osparc_batch.cleanup {
}
package "goliat.osparc_batch.file_finder" as goliat.osparc_batch.file_finder {
}
package "goliat.osparc_batch.gui" as goliat.osparc_batch.gui {
}
package "goliat.osparc_batch.logging_utils" as goliat.osparc_batch.logging_utils {
}
package "goliat.osparc_batch.main_logic" as goliat.osparc_batch.main_logic {
}
package "goliat.osparc_batch.osparc_client" as goliat.osparc_batch.osparc_client {
}
package "goliat.osparc_batch.progress" as goliat.osparc_batch.progress {
}
package "goliat.osparc_batch.runner" as goliat.osparc_batch.runner {
}
package "goliat.osparc_batch.worker" as goliat.osparc_batch.worker {
}
package "goliat.profiler" as goliat.profiler {
}
package "goliat.project_manager" as goliat.project_manager {
}
package "goliat.results_extractor" as goliat.results_extractor {
}
package "goliat.setups" as goliat.setups {
}
package "goliat.setups.base_setup" as goliat.setups.base_setup {
}
package "goliat.setups.boundary_setup" as goliat.setups.boundary_setup {
}
package "goliat.setups.far_field_setup" as goliat.setups.far_field_setup {
}
package "goliat.setups.gridding_setup" as goliat.setups.gridding_setup {
}
package "goliat.setups.material_setup" as goliat.setups.material_setup {
}
package "goliat.setups.near_field_setup" as goliat.setups.near_field_setup {
}
package "goliat.setups.phantom_setup" as goliat.setups.phantom_setup {
}
package "goliat.setups.placement_setup" as goliat.setups.placement_setup {
}
package "goliat.setups.source_setup" as goliat.setups.source_setup {
}
package "goliat.simulation_runner" as goliat.simulation_runner {
}
package "goliat.studies" as goliat.studies {
}
package "goliat.studies.base_study" as goliat.studies.base_study {
}
package "goliat.studies.far_field_study" as goliat.studies.far_field_study {
}
package "goliat.studies.near_field_study" as goliat.studies.near_field_study {
}
package "goliat.utils" as goliat.utils {
}
goliat.analysis.analyzer --> goliat.analysis.plotter
goliat.analysis.far_field_strategy --> goliat.analysis.base_strategy
goliat.analysis.near_field_strategy --> goliat.analysis.base_strategy
goliat.extraction --> goliat.extraction.cleaner
goliat.extraction --> goliat.extraction.power_extractor
goliat.extraction --> goliat.extraction.reporter
goliat.extraction --> goliat.extraction.sar_extractor
goliat.extraction --> goliat.extraction.sensor_extractor
goliat.gui --> goliat.gui.components.data_manager
goliat.gui --> goliat.gui.components.plots
goliat.gui --> goliat.gui.components.progress_animation
goliat.gui --> goliat.gui.components.status_manager
goliat.gui.components.ui_builder --> goliat.gui.components.plots
goliat.gui.components.ui_builder --> goliat.gui.components.timings_table
goliat.gui.progress_gui --> goliat.gui.components.data_manager
goliat.gui.progress_gui --> goliat.gui.components.plots
goliat.gui.progress_gui --> goliat.gui.components.progress_animation
goliat.gui.progress_gui --> goliat.gui.components.queue_handler
goliat.gui.progress_gui --> goliat.gui.components.status_manager
goliat.gui.progress_gui --> goliat.gui.components.timings_table
goliat.gui.progress_gui --> goliat.gui.components.tray_manager
goliat.gui.progress_gui --> goliat.gui.components.ui_builder
goliat.gui.progress_gui --> goliat.logging_manager
goliat.gui.progress_gui --> goliat.utils
goliat.gui.queue_gui --> goliat.logging_manager
goliat.gui_manager --> goliat.gui.progress_gui
goliat.gui_manager --> goliat.gui.queue_gui
goliat.logging_manager --> goliat.colors
goliat.osparc_batch.cleanup --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.file_finder --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.main_logic --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.main_logic --> goliat.osparc_batch.osparc_client
goliat.osparc_batch.osparc_client --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.progress --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.runner --> goliat.config
goliat.osparc_batch.runner --> goliat.osparc_batch.cleanup
goliat.osparc_batch.runner --> goliat.osparc_batch.file_finder
goliat.osparc_batch.runner --> goliat.osparc_batch.gui
goliat.osparc_batch.runner --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.runner --> goliat.osparc_batch.main_logic
goliat.osparc_batch.runner --> goliat.osparc_batch.osparc_client
goliat.osparc_batch.runner --> goliat.osparc_batch.progress
goliat.osparc_batch.runner --> goliat.osparc_batch.worker
goliat.osparc_batch.worker --> goliat.osparc_batch.logging_utils
goliat.osparc_batch.worker --> goliat.osparc_batch.osparc_client
goliat.project_manager --> goliat.logging_manager
goliat.project_manager --> goliat.results_extractor
goliat.project_manager --> goliat.utils
goliat.results_extractor --> goliat.extraction.cleaner
goliat.results_extractor --> goliat.extraction.json_encoder
goliat.results_extractor --> goliat.extraction.power_extractor
goliat.results_extractor --> goliat.extraction.reporter
goliat.results_extractor --> goliat.extraction.sar_extractor
goliat.results_extractor --> goliat.extraction.sensor_extractor
goliat.results_extractor --> goliat.logging_manager
goliat.setups.base_setup --> goliat.logging_manager
goliat.setups.boundary_setup --> goliat.setups.base_setup
goliat.setups.far_field_setup --> goliat.setups.base_setup
goliat.setups.far_field_setup --> goliat.setups.boundary_setup
goliat.setups.far_field_setup --> goliat.setups.gridding_setup
goliat.setups.far_field_setup --> goliat.setups.material_setup
goliat.setups.far_field_setup --> goliat.setups.phantom_setup
goliat.setups.gridding_setup --> goliat.setups.base_setup
goliat.setups.material_setup --> goliat.setups.base_setup
goliat.setups.near_field_setup --> goliat.setups.base_setup
goliat.setups.near_field_setup --> goliat.setups.boundary_setup
goliat.setups.near_field_setup --> goliat.setups.gridding_setup
goliat.setups.near_field_setup --> goliat.setups.material_setup
goliat.setups.near_field_setup --> goliat.setups.phantom_setup
goliat.setups.near_field_setup --> goliat.setups.placement_setup
goliat.setups.near_field_setup --> goliat.setups.source_setup
goliat.setups.phantom_setup --> goliat.setups.base_setup
goliat.setups.placement_setup --> goliat.setups.base_setup
goliat.setups.source_setup --> goliat.setups.base_setup
goliat.simulation_runner --> goliat.logging_manager
goliat.simulation_runner --> goliat.utils
goliat.studies.base_study --> goliat.config
goliat.studies.base_study --> goliat.logging_manager
goliat.studies.base_study --> goliat.profiler
goliat.studies.base_study --> goliat.project_manager
goliat.studies.base_study --> goliat.simulation_runner
goliat.studies.base_study --> goliat.utils
goliat.studies.far_field_study --> goliat.studies.base_study
goliat.studies.near_field_study --> goliat.studies.base_study
goliat.analysis.analyzer ..> goliat.analysis.base_strategy
goliat.analysis.base_strategy ..> goliat.analysis.analyzer
goliat.analysis.base_strategy ..> goliat.analysis.plotter
goliat.analysis.far_field_strategy ..> goliat.analysis.analyzer
goliat.analysis.far_field_strategy ..> goliat.analysis.plotter
goliat.analysis.near_field_strategy ..> goliat.analysis.analyzer
goliat.analysis.near_field_strategy ..> goliat.analysis.plotter
goliat.antenna ..> goliat.config
goliat.gui.components.plots ..> goliat.profiler
goliat.gui.components.queue_handler ..> goliat.gui.progress_gui
goliat.gui.components.timings_table ..> goliat.profiler
goliat.gui.components.ui_builder ..> goliat.gui.components.status_manager
goliat.gui.components.ui_builder ..> goliat.gui.progress_gui
goliat.gui.progress_gui ..> goliat.profiler
goliat.gui.queue_gui ..> goliat.profiler
goliat.logging_manager ..> goliat.gui_manager
goliat.osparc_batch.file_finder ..> goliat.config
goliat.osparc_batch.main_logic ..> goliat.osparc_batch.worker
goliat.osparc_batch.osparc_client ..> goliat.config
goliat.project_manager ..> goliat.config
goliat.project_manager ..> goliat.gui_manager
goliat.results_extractor ..> goliat.config
goliat.results_extractor ..> goliat.gui_manager
goliat.results_extractor ..> goliat.studies.base_study
goliat.simulation_runner ..> goliat.config
goliat.simulation_runner ..> goliat.gui_manager
goliat.simulation_runner ..> goliat.profiler
goliat.utils ..> goliat.studies.base_study
@enduml
How to view - Right click the above image and open in a new tab. Zoom in and pan around. - Alternatively, use any PlantUML viewer (e.g., VS Code PlantUML extension, IntelliJ PlantUML plugin, or https://www.plantuml.com/plantuml).