Medir la distancia a células en otra imagen de etiquetas#
En algunos proyectos de imagen de células, núcleos y otros orgánulos con múltiples marcadores, estamos interesados en medir distancias entre células con diferentes patrones de expresión. Dado un tejido donde no todas las células expresan un cierto marcador, es posible que queramos medir la distancia de cada célula a la siguiente célula que expresa ese marcador. Por lo tanto, queremos medir y visualizar esa distancia en un mapa.
import numpy as np
import pyclesperanto_prototype as cle
import pandas as pd
cle.get_device()
<gfx90c on Platform: AMD Accelerated Parallel Processing (2 refs)>
Nuestro punto de partida es una imagen de etiquetas y otra imagen de etiquetas, donde algunas de las etiquetas en la primera imagen son seleccionadas. La primera imagen de etiquetas representa todas las células. La segunda imagen de etiquetas representa las células que expresan el marcador.
label_image = cle.artificial_tissue_2d()
cle.imshow(label_image, labels=True)
random_vector = np.random.random((1, int(label_image.max() + 1)))
sparse_labels = cle.exclude_labels_with_values_out_of_range(random_vector, label_image, minimum_value_range=0, maximum_value_range=0.3)
cle.imshow(sparse_labels, labels=True)
Ahora contamos para cada etiqueta en label_image, cuántas etiquetas están próximas a ella en la imagen sparse_labels. Para medir la distancia, usamos la distancia al centroide.
distance_map = cle.average_distance_to_n_nearest_other_labels_map(label_image, sparse_labels, n=1)
cle.imshow(distance_map)
También podemos leer estos valores.
statistics = cle.statistics_of_labelled_pixels(distance_map, label_image)
table = pd.DataFrame(statistics)
# La tabla anterior contiene demasiada información.
# Por lo tanto, renombramos una columna y eliminamos la mayoría de las otras
table = table.rename(columns={"mean_intensity": "centroid_distance"})
table[['label', 'centroid_distance']]
| label | centroid_distance | |
|---|---|---|
| 0 | 1 | 13.957838 |
| 1 | 2 | 0.000000 |
| 2 | 3 | 15.516336 |
| 3 | 4 | 17.409723 |
| 4 | 5 | 16.673353 |
| ... | ... | ... |
| 170 | 171 | 20.870539 |
| 171 | 172 | 0.000000 |
| 172 | 173 | 24.419371 |
| 173 | 174 | 0.000000 |
| 174 | 175 | 32.159912 |
175 rows × 2 columns