Magische Zahlen vermeiden#

Beim Lesen von Code stoßen wir manchmal auf Zahlen, bei denen nicht sofort klar ist, was sie bewirken. Wenn wir sie jedoch ändern, funktioniert unser Programm plötzlich nicht mehr. Wir nennen diese Zahlen magische Zahlen. Wissen Sie zum Beispiel, was die 3 und 7 im folgenden Code bewirken?

from skimage.io import imread
from skimage.filters import gaussian, threshold_otsu
from skimage.measure import label
image = imread("../../data/BBBC007_batch/17P1_POS0013_D_1UL.tif")

# noise removal
blurred = gaussian(image, 3)

# instance segmentation
binary = blurred > threshold_otsu(blurred)
labels = label(binary)

# quantitative measurement
labels.max()
37
image = imread("../../data/BBBC007_batch/17P1_POS0013_D_1UL.tif")

# noise removal
blurred = gaussian(image, 7)

# instance segmentation
binary = blurred > threshold_otsu(blurred)
labels = label(binary)

# quantitative measurement
labels.max()
19

Ein Konfigurationsabschnitt am Anfang#

Um magische Zahlen zu vermeiden und den Code besser lesbar zu machen, wird empfohlen, am Anfang jedes Skripts / Notebooks einen Konfigurationsabschnitt einzufügen. Dort können Sie auch Kommentare verwenden, um zu erklären, was die Variablen bedeuten. Übrigens ist es entscheidend, diesen Variablen gute Namen zu geben.

# enter the image filename to be processed here
file_to_process = "../../data/BBBC007_batch/17P1_POS0013_D_1UL.tif"

# enter the expected radius of nuclei here, in pixel units
approximate_nuclei_radius = 3
image = imread(file_to_process)

# noise removal
blurred = gaussian(image, approximate_nuclei_radius)

# instance segmentation
binary = blurred > threshold_otsu(blurred)
labels = label(binary)

# quantitative measurement
labels.max()
37

Noch ein Tipp: Python ermöglicht die Angabe von Schlüsselwortargumenten beim Aufrufen von Funktionen. Bei ihrer Verwendung wird der Code leichter zu lesen und zu verstehen:

blurred = gaussian(image, sigma=approximate_nuclei_radius)