コード例 #1
0
def save_results(fldr_name, f_name, data_array, save_plots=False):
    """
    Saves figure. Basename should be the model name without voxel or angle info appended.
    """
    data_io.save_array(fldr_name, f_name, data_array)
    if save_plots:
        render_results.save_heatmap(fldr_name, f_name, data_array, label="% collisions with walls")
コード例 #2
0
def save_results(fldr_name, f_name, data_array, save_plots=False):
    """
    Saves figure. Basename should be the model name without voxel or angle info appended.
    """
    data_io.save_array(fldr_name, f_name, data_array)
    if save_plots:
        render_results.save_heatmap(fldr_name,
                                    f_name,
                                    data_array,
                                    label="% collisions with walls")
コード例 #3
0
def save_results(data_array, result_folder, save_basename, plot=False, plot_options=None):
    """
    Save (and plot) results as appropriate
    """
    plot_options = plot_options or {}

    data_io.save_array(result_folder,
                       save_basename,
                       data_array)
    if plot:
        render_results.save_heatmap(result_folder,
                                    save_basename,
                                    data_array,
                                    **plot_options)
コード例 #4
0
def main(settings):
    """
    Determine the best pose of the manikin for each position and orientation.
    """
    basename = "{}_{}"

    # Get one matrix per pose, representing the best possible fit of that pose at a given point
    # in the vehicle
    walkability_by_pose_name = {manikin_name: load_fit_of_pose_in_vehicle(
        basename.format(settings["run_id"], manikin_name),
        settings)
        for manikin_name in settings["manikin_poses"]}
    # TODO: number of best pose may be superfluous. Can probably disable saving this info.
    best_pose_number_by_point = score_from_list(walkability_by_pose_name,
                                                settings["manikin_poses"],
                                                settings,
                                                score_key='num',
                                                orientation="overall")
    best_score_by_point = score_from_list(walkability_by_pose_name,
                                          settings["manikin_poses"],
                                          settings,
                                          score_key='score',
                                          orientation="overall")

    best_pose_for_orientation = {}
    best_score_for_orientation = {}
    for ang in settings["manikin_orientations"]:
        best_pose_for_orientation[str(ang)] = score_from_list(walkability_by_pose_name,
                                                              settings["manikin_poses"],
                                                              settings,
                                                              score_key='num',
                                                              orientation=ang)
        best_score_for_orientation[str(ang)] = score_from_list(walkability_by_pose_name,
                                                               settings["manikin_poses"],
                                                               settings,
                                                               score_key='score',
                                                               orientation=ang)

    # Save results
    result_folder = "results/{}/{}".format(settings["run_id"], settings["voxel_size"])

    saved_file_basename = "{}_vox{}_best_scores".format(
        settings["run_id"], settings["voxel_size"])

    save_results(best_score_by_point,
                 result_folder,
                 saved_file_basename,
                 plot=settings["show_2d"],
                 plot_options={"label": "Walkability scores",
                               "tick_labels": sorted([v['score'] for k, v
                                                      in settings["manikin_poses"].items()])})

    saved_file_basename = "{}_vox{}_best_poses".format(
        settings["run_id"], settings["voxel_size"])
    save_results(best_pose_number_by_point,
                 result_folder,
                 saved_file_basename,
                 plot=settings["show_2d"],
                 plot_options={"label": "Best pose at point",
                               "tick_labels": sorted([v['num'] for k, v in
                                                      settings["manikin_poses"].items()])})

    # Also save the best scores per orientation
    data_io.save_multi_array(result_folder,
                             "{}_vox{}_best_poses_by_orientation".format(settings["run_id"],
                                                                         settings["voxel_size"]),
                             best_pose_for_orientation)
    data_io.save_multi_array(result_folder,
                             "{}_vox{}_best_scores_by_orientation".format(settings["run_id"],
                                                                          settings["voxel_size"]),
                             best_score_for_orientation)

    if settings["show_2d"]:
        # After saving score data to one big npz file, make the individual plots to match
        for ang in settings["manikin_orientations"]:
            saved_file_basename = "{}_vox{}_best_scores_ang{}".format(settings["run_id"],
                                                                      settings["voxel_size"], ang)
            render_results.save_heatmap(result_folder,
                                        saved_file_basename,
                                        best_score_for_orientation[str(ang)],
                                        label="Best score for orientation {}".format(ang),
                                        tick_labels=sorted([v['score']
                                                for k, v in settings["manikin_poses"].items()]))