Gardez ça court et simple#

Python possède des fonctionnalités incroyables qui nous permettent d’écrire du code du 21e siècle. Par exemple, nous pouvons rassembler des fonctions et des paramètres dans des listes et les appeler à partir d’une boucle. Bien que ce soit super cool d’un point de vue programmation, cela pourrait ne pas être facile à lire comme code. La recommandation est : Gardez ça court et simple (KISS).

import numpy as np
from skimage.io import imread, imshow
from napari_segment_blobs_and_things_with_membranes import threshold_otsu, gaussian_blur, label

Exercice#

À titre d’exemple, il y a deux sections de code ci-dessous. Sans exécuter le code - pensez-vous que les deux font la même chose ?

image = imread("../../data/blobs.tif")

# define a list of functions and a corresponding list of arguments
functions = [gaussian_blur, threshold_otsu, label]
argument_lists = [[.5], [], []]

# go through functions and argument lists pair-wise
for function, argument_list in zip(functions, argument_lists):
    # execute function with given arguments
    image = function(image, *argument_list)

result1 = image
imshow(result1)
image = imread("../../data/blobs.tif")

blurred = gaussian_blur(image, 5)
binary = threshold_otsu(blurred)
labels = label(binary)

result2 = labels

imshow(result2)

Si vous n’êtes pas sûr, vous pouvez également vérifier directement si les résultats sont égaux :

np.all(result1 == result2)