Skip to content

saving_worker

A thread worker function running CAREamics prediction.

save_worker(careamist, training_signal, config_signal) #

Model saving worker.

Parameters:

Name Type Description Default
careamist CAREamist

CAREamist instance.

required
training_signal TrainingSignal

Training signal.

required
config_signal SavingSignal

Saving signal.

required

Yields:

Type Description
Generator[SavingUpdate, None, None]

Updates.

Raises:

Type Description
NotImplementedError

Export to BMZ not implemented yet.

Source code in src/careamics_napari/workers/saving_worker.py
@thread_worker
def save_worker(
    careamist: CAREamist,
    training_signal: TrainingSignal,
    config_signal: SavingSignal,
) -> Generator[SavingUpdate, None, None]:
    """Model saving worker.

    Parameters
    ----------
    careamist : CAREamist
        CAREamist instance.
    training_signal : TrainingSignal
        Training signal.
    config_signal : SavingSignal
        Saving signal.

    Yields
    ------
    Generator[SavingUpdate, None, None]
        Updates.

    Raises
    ------
    NotImplementedError
        Export to BMZ not implemented yet.
    """
    dims = "3D" if training_signal.is_3d else "2D"
    name = f"{training_signal.algorithm}_{dims}_{training_signal.experiment_name}"

    # save model
    try:
        if config_signal.export_type == ExportType.BMZ:

            raise NotImplementedError("Export to BMZ not implemented yet (but soon).")

        else:
            name = name + ".ckpt"
            # TODO: should we reexport the model every time?
            careamist.trainer.save_checkpoint(
                config_signal.path_model / name,
            )

    except Exception as e:
        traceback.print_exc()

        yield SavingUpdate(SavingUpdateType.EXCEPTION, e)

    yield SavingUpdate(SavingUpdateType.STATE, SavingState.DONE)