Éviter les nombres magiques#
Lors de la lecture du code, nous trouvons parfois des nombres dans le code dont la fonction n’est pas évidente. Cependant, lorsque nous les modifions, soudainement notre programme ne fonctionne plus. Nous appelons ces nombres nombres magiques. Par exemple, savez-vous ce que font les 3 et 7 dans le code ci-dessous ?
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
Une section de configuration au début#
Pour éviter les nombres magiques et rendre le code plus lisible, il est recommandé d’avoir une section de code de configuration au début de chaque script / notebook. Vous pouvez également y utiliser des commentaires pour expliquer ce que signifient les variables. Au fait, donner de bons noms à ces variables est essentiel.
# 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
Un conseil supplémentaire : Python permet de spécifier des arguments nommés lors de l’appel de fonctions. En les utilisant, le code devient plus facile à lire et à comprendre :
blurred = gaussian(image, sigma=approximate_nuclei_radius)