コード例 #1
0
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)
コード例 #2
0
    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,
                )