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)