Source code for histopath_bim_des.process.p60_labelling

"""Labelling processes."""

from typing import TYPE_CHECKING

from ..specimens import Priority, Specimen
from .core import (BatchingProcess, DeliveryProcess, RunnerDurations,
                       register_process)

if TYPE_CHECKING:
    from ..model import Model


[docs] def register_processes(env: "Model") -> None: """Register processes to the simulation environment.""" # Labelling is done in the "main lab", i.e. microtomy register_process(env, Specimen, labelling) env.processes['batcher.labelling_to_scanning'] = BatchingProcess[Specimen]( 'batcher.labelling_to_scanning', batch_size=env.batch_sizes.deliver_labelling_to_scanning, out_process='labelling_to_scanning', env=env ) env.processes['labelling_to_scanning'] = DeliveryProcess( 'labelling_to_scanning', runner=env.resources.microtomy_staff, durations=RunnerDurations( env.runner_times.extra_loading, env.runner_times.labelling_scanning, env.runner_times.extra_unloading, env.runner_times.labelling_scanning # FUTURE: different outbound and return times? ), out_process='scanning_start', env=env )
[docs] def labelling(self: Specimen) -> None: """Label all slides of a specimen.""" self.env.wips.in_labelling.value += 1 self.timestamp('labelling_start') self.request((self.env.resources.microtomy_staff, 1, self. prio)) for block in self.blocks: for _ in block.slides: self.hold(self.env.task_durations.labelling) self.release() self.env.wips.in_labelling.value -= 1 self.timestamp('labelling_end') if self.prio == Priority.URGENT: self.enter_sorted(self.env.processes['labelling_to_scanning'].in_queue, Priority.URGENT) else: self.enter(self.env.processes['batcher.labelling_to_scanning'].in_queue)