def save_drops(drops: Iterable[PendantAnalysisJob], options: IFTAnalysisSaverOptions) -> None: drops = list(drops) full_dir = options.save_root_dir assert full_dir.is_dir() or not full_dir.exists() full_dir.mkdir(parents=True, exist_ok=True) clear_directory_contents(full_dir) padding = len(str(len(drops))) dir_name = options.bn_save_dir_name.get() for i, drop in enumerate(drops): drop_dir_name = dir_name + '{n:0>{padding}}'.format( n=(i + 1), padding=padding) # i+1 for 1-based indexing. _save_individual(drop, drop_dir_name, options) with (full_dir / 'timeline.csv').open('w', newline='') as out_file: _save_timeline_data(drops, out_file) if len(drops) <= 1: return figure_opts = options.ift_figure_opts if figure_opts.bn_should_save.get(): fig_size = figure_opts.size dpi = figure_opts.bn_dpi.get() with (full_dir / 'ift_plot.png').open('wb') as out_file: _save_ift_figure(drops=drops, out_file=out_file, fig_size=fig_size, dpi=dpi) figure_opts = options.volume_figure_opts if figure_opts.bn_should_save.get(): fig_size = figure_opts.size dpi = figure_opts.bn_dpi.get() with (full_dir / 'volume_plot.png').open('wb') as out_file: _save_volume_figure(drops=drops, out_file=out_file, fig_size=fig_size, dpi=dpi) figure_opts = options.surface_area_figure_opts if figure_opts.bn_should_save.get(): fig_size = figure_opts.size dpi = figure_opts.bn_dpi.get() with (full_dir / 'surface_area_plot.png').open('wb') as out_file: _save_surface_area_figure(drops=drops, out_file=out_file, fig_size=fig_size, dpi=dpi)
def save(self, jobs: Sequence[ConanAnalysisJob], params: Optional[ConanSaveParams] = None) -> None: params = params or self._default_params_factory.create() root_dir = params.root_dir assert root_dir.is_dir() or not root_dir.exists() root_dir.mkdir(parents=True, exist_ok=True) clear_directory_contents(root_dir) padding = len(str(len(jobs))) for i, drop in enumerate(jobs): job_dir = root_dir/(root_dir.name + f"{i+1:0>{padding}}") _save_individual(drop, job_dir) with (root_dir/'timeline.csv').open('w', newline='') as out_file: _save_timeline(jobs, out_file) if len(jobs) <= 1: return figure_opts = params.ca_plot_options if figure_opts.bn_should_save.get(): fig_size = figure_opts.size dpi = figure_opts.bn_dpi.get() with (root_dir/'left_angle_plot.png').open('wb') as out_file: _save_left_angle_plot( jobs, out_file=out_file, fig_size=fig_size, dpi=dpi, ) with (root_dir/'right_angle_plot.png').open('wb') as out_file: _save_right_angle_plot( jobs, out_file=out_file, fig_size=fig_size, dpi=dpi, )