Evitar números mágicos#

Al leer código, a veces encontramos números en el código donde no es obvio lo que hacen. Sin embargo, cuando los cambiamos, de repente nuestro programa deja de funcionar. Llamamos a estos números números mágicos. Por ejemplo, ¿sabes qué hacen el 3 y el 7 en el código siguiente?

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

Una sección de configuración al principio#

Para evitar números mágicos y hacer que el código sea más legible, se recomienda tener una sección de código de configuración al principio de cada script / notebook. Allí también puedes usar comentarios para explicar qué significan las variables. Por cierto, dar a esas variables buenos nombres es clave.

# ingresa aquí el nombre del archivo de imagen a procesar
file_to_process = "../../data/BBBC007_batch/17P1_POS0013_D_1UL.tif"

# ingresa aquí el radio esperado de los núcleos, en unidades de píxeles
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 consejo más: Python permite especificar argumentos de palabra clave al llamar a funciones. Al usarlos, el código se vuelve más fácil de leer y entender:

blurred = gaussian(image, sigma=approximate_nuclei_radius)