Skip to content

Run Modules

Run different layopt modules.

optimise

optimise(args=None)

Run optimisation.

Parameters:

Name Type Description Default
args Namespace | None

Command line arguments for modifying configuration.

None
Source code in src/layopt/run_modules.py
def optimise(args: argparse.Namespace | None = None) -> None:
    """
    Run optimisation.

    Parameters
    ----------
    args : argparse.Namespace | None
        Command line arguments for modifying configuration.
    """
    _set_logging(log_level=args.log_level)  # type: ignore[union-attr]
    logger.debug(f"\n{pformat(vars(args))}\n")
    _config = _parse_configuration(args)
    _set_logging(log_level=_config.log_level)
    # Ensure filter_levels is a list and includes 1.0
    filter_levels = (
        np.asarray([1.0])
        if len(_config.filter_levels) == 0
        else np.asarray(_config.filter_levels)
    )
    # ns-rse 2026-04-30 : if 1.0 isn't in filter_levels we add it so we always have unfiltered results
    if 1.0 not in filter_levels:
        # if 1.0 not in filter_levels:
        filter_levels = np.append(filter_levels, 1.0)
    _, _, results_df = layopt.trussopt(parameters=_config)  # type: ignore[misc]
    # Transpose and tidy data frame and write results and configuration to disk
    results_df = results_df.T.reset_index(drop=True)
    results_df = results_df.sort_values(["filter_level"])
    results_df.to_csv(Path(_config.output_dir) / _config.csv_filename, index=False)
    io.write_config(_config)
    logger.info(f"Results saved to {Path(_config.output_dir) / _config.csv_filename}")
    completion_message(_config=_config)

completion_message

completion_message(_config)

Print a completion message summarising images processed.

Parameters:

Name Type Description Default
_config dict[str, Any] | Parameters

Configuration dictionary.

required
Source code in src/layopt/run_modules.py
def completion_message(_config: dict[str, Any] | classes.Parameters) -> None:
    """
    Print a completion message summarising images processed.

    Parameters
    ----------
    _config : dict[str, Any] | classes.Parameters
        Configuration dictionary.
    """
    output_dir = (
        _config["output_dir"] if isinstance(_config, dict) else _config.output_dir
    )
    csv_filename = (
        _config["csv_filename"] if isinstance(_config, dict) else _config.csv_filename
    )
    logger.info(
        "\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
    )
    tprint("LayOpt", font="twisted")
    logger.info(
        f"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMPLETE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
        f"  LayOpt Version              : {LAYOPT_BASE_VERSION}\n"
        f"  LayOpt Commit               : {LAYOPT_COMMIT}\n"
        f"  All statistics              : {output_dir!s}/{csv_filename}\n"
        f"  Configuration               : {output_dir!s}/"
        f"config_{io.get_date_time(strftime='%Y-%m-%d-%H%M%S')}.yaml\n\n"
        # f"  Email                       : layopt@sheffield.ac.uk\n"
        f"  Documentation               : https://ICAIR-Sheffield.github.io/LayOpt/\n"
        f"  Source Code                 : https://github.com/ICAIR-Sheffield/LayOpt/\n"
        f"  Bug Reports/Feature Request : https://github.com/ICAIR-Sheffield/LayOpt/issues/new/choose\n"
        f"  Citation File Format        : https://github.com/ICAIR-Sheffield/LayOpt/blob/main/CITATION.cff\n\n"
        f"  If you encounter bugs/issues or have feature requests please report them at the above URL\n"
        f"  or email us.\n\n"
        f"  If you have found LayOpt useful please consider citing it. A Citation File Format is\n"
        f"  linked above and available from the Source Code page.\n"
        f"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
    )