# tmlib.workflow.align package¶

## Module contents¶

Workflow step for registration and alignment of microscopy images.

When images are acquired at the different time points they may exhibit a displacement relative to each other. To overlay these image for visualization or analysis, they need to be registered and aligned between acquisitions. To this end, the align step computes translational shifts of each image acquired at the same site relative to one reference image (by default the one of the first acquisition time point). The computed shift values are stored and can later be applied for alignment. Note that translations are computed only per site and no attempt is made to find a globally optimal alignment. This is done for performance reasons and to simplify parallelization.

## tmlib.workflow.align.api module¶

class tmlib.workflow.align.api.ImageRegistrator(experiment_id)

Class for registeration and alignment of images between multiplexing cycles.

Parameters: experiment_id: int ID of the processed experiment
collect_job_output(obj, *args, **kwargs)

Not implemented.

create_run_batches(args)

Creates job descriptions for parallel computing.

Parameters: args: tmlib.workflow.align.args.AlignBatchArguments step-specific arguments generator job descriptions ValueError when args.ref_wavelength does not exist across all cycles
delete_previous_job_output()

Deletes the output of a previous submission.

has_collect_phase = False
run_job(batch, assume_clean_state=False)

Calculates the number of pixels each image is shifted relative its reference image. The calculated values can later be used to align images between cycles.

Parameters: batch: dict description of the run job assume_clean_state: bool, optional assume that output of previous runs has already been cleaned up

## tmlib.workflow.align.args module¶

class tmlib.workflow.align.args.AlignBatchArguments(**kwargs)
Parameters: **kwargs: dict, optional keyword arguments to overwrite
batch_size

int: number of acquisition sites that should be processed per job

illumcorr

bool: wether images should be corrected for illumination artifacts

ref_cycle

int: zero-based index of the cycle whose sites should be used as reference

ref_wavelength

str: name of the wavelength whose images should be used as reference

class tmlib.workflow.align.args.AlignSubmissionArguments(**kwargs)
Parameters: **kwargs: dict, optional keyword arguments to overwrite

## tmlib.workflow.align.cli module¶

class tmlib.workflow.align.cli.Align(api_instance, verbosity)

Registration of images acquired in different multiplexing cycles relative to a reference cycle. The calculated shifts can then subsequently be used to align images.

Parameters: api_instance: tmlib.workflow.align.api.ImageRegistrator instance of API class to which processing is delegated verbosity: int logging verbosity

### align¶

Registration of images acquired in different multiplexing cycles relative to a reference cycle. The calculated shifts can then subsequently be used to align images.



experiment_id

ID of the experiment that should be processed

-h, --help

show this help message and exit

--verbosity, -v

increase logging verbosity

#### align experiment_id cleanup¶

cleans up the output of a previous submission, i.e. removes files and database entries created by previously submitted jobs



-h, --help

show this help message and exit

#### align experiment_id collect¶

collects the output of run jobs, i.e. performs a post-processing operation that either cannot be parallelized or needs to be performed afterwards



-h, --help

show this help message and exit

#### align experiment_id info¶

prints the description of a given batch job to the console



-h, --help

show this help message and exit

--job, -j

ID of the job for which information should be displayed

--phase {collect,run}, -p {collect,run}

phase of the workflow step to which the job belongs

#### align experiment_id init¶

creates batches for parallel processing and thereby defines how the computational task should be distrubuted over the cluster (also cleans up the output of previous submissions)



-h, --help

show this help message and exit

--batch-size <batch_size>, -b <batch_size>

number of acquisition sites that should be processed per job (default: 100)

--illumcorr, -i

wether images should be corrected for illumination artifacts

--ref-cycle <ref_cycle>, -c <ref_cycle>

zero-based index of the cycle whose sites should be used as reference

--ref-wavelength <ref_wavelength>, -w <ref_wavelength>

name of the wavelength whose images should be used as reference

#### align experiment_id log¶

prints the log output of a given batch job to the console



-h, --help

show this help message and exit

--job, -j

ID of the job for which log output should be shown

--phase {collect,init,run}, -p {collect,init,run}

phase of the workflow step to which the job belongs

#### align experiment_id resubmit¶

resubmits previously created jobs for “run” and “collect” phases to the cluster and monitors their status upon processing



-h, --help

show this help message and exit

--depth <index>, -d <index>

number of child tasks that should be monitored (default: 1)

--interval <seconds>, -i <seconds>

seconds to wait between monitoring iterations (default: 10)

#### align experiment_id run¶

runs an invidiual batch job on the local machine



-h, --help

show this help message and exit

--assume-clean-state

assume that previous outputs have been cleaned up

--job <job_id>, -j <job_id>

ID of the job that should be run

#### align experiment_id submit¶

creates batch jobs for the “run” and “collect” phases, submits them to the cluster and monitors their status upon processing (requires a prior “init”)



-h, --help

show this help message and exit

--depth <index>, -d <index>

number of child tasks that should be monitored (default: 1)

--interval <seconds>, -i <seconds>

seconds to wait between monitoring iterations (default: 10)

--cores <number>

number of cores that should be allocated to each “run” job (may be increased in case memory requirements of a job exceed resources of a single core) (default: 1)

--duration <hh:mm:ss>

walltime that should be allocated to a each “run” job in the format “HH:MM:SS” (may need to be adapted depending on the choice of batch size) (default: 06:00:00)

--memory <mb>

amount of memory in megabytes that should be allocated to each “run” job (default: 2147)

## tmlib.workflow.align.registration module¶

tmlib.workflow.align.registration.calculate_overlap(y_shifts, x_shifts)

Calculates the overlap of images acquired at the same site across different acquisition cycles.

Parameters: y_shifts: List[int] shifts along the y-axis x_shifts: List[int] shifts along the x-axis List[int] number of overhanging pixels at the top, bottom, right and left side
tmlib.workflow.align.registration.calculate_shift(target_image, reference_image)

Calculates the displacement between two images acquired at the same site in different cycles based on fast Fourier transform.

Parameters: target_image: numpy.ndarray image that should be registered reference_image: numpy.ndarray image that should be used as a reference Tuple[int] shift in y and x direction