Руководство по использованию инструмента Spateo (сегментация РНК)

Руководство по использованию инструмента Spateo (2)

Руководство по использованию инструмента Spateo (1)
Недавно я обнаружил, что Spateo — это волшебный инструмент, который может выполнять сегментацию клеток. В нем также есть много интересных алгоритмов.

Сегментация РНК

В этом уроке мы предположим, что у нас есть только изображения РНК без какого-либо окрашивания, и попытаемся использовать сигнал РНК для идентификации отдельных клеток.

Это достигается посредством следующих шагов.

Определите ядра, используя гены ядерной локализации (в нашем примере мы будем использовать гены Malat1 и Neat1).

Идентификация дополнительных ядер с помощью несплайсированной РНК.

[Необязательно] Распространите ядерную маркировку на цитоплазму.

import spateo as st
import matplotlib.pyplot as plt

st.config.n_threads = 8
%config InlineBackend.print_figure_kwargs = {
    
    'facecolor' : "w"}
%config InlineBackend.figure_format = 'retina'

Загрузить данные

Мы будем использовать набор данных коронального среза мыши, усеченный Chen et al., 2021.

!wget "https://drive.google.com/uc?export=download&id=18sM-5LmxOgt-3kq4ljtq_EdWHjihvPUx" -nc -O SS200000135TL_D1_all_bin1.txt.gz

Загрузите загруженные изображения количества UMI и ядерных пятен в объект AnnData. В целях сегментации ячеек мы будем использовать агрегированную матрицу подсчета, где obs и var AnnData соответствуют пространственным координатам X и Y, а каждый элемент матрицы содержит общее количество координат UMI, захваченных для каждого X и Y. координировать.

adata = st.io.read_bgi_agg(
    'SS200000135TL_D1_all_bin1.txt.gz',
    gene_agg={
    
    'nuclear': ['Malat1', 'Neat1']}  # Add a layer for nuclear-localized genes
)
adata
fig, axes = plt.subplots(ncols=3, figsize=(9, 3), tight_layout=True)
st.pl.imshow(adata, 'nuclear', ax=axes[0], vmax=2, save_show_or_return='return')
st.pl.imshow(adata, 'unspliced', ax=axes[1], vmax=5, save_show_or_return='return')
st.pl.imshow(adata, 'X', ax=axes[2], vmax=10)

Вставьте сюда описание изображения

Идентификация ядер клеток с использованием генов ядерной локализации

Как мы заметили выше, существуют области с высокой и низкой плотностью РНК. Для этого необходимо разделить изображение на несколько областей плотности, а затем сегментировать каждую область отдельно. В противном случае алгоритм может быть неправильно откалиброван и оказаться слишком чувствительным в регионах, богатых РНК, и слишком строгим в регионах с разреженным РНК.

Мы рекомендуем сначала начать свободно (то есть разделить пиксель на множество областей плотности РНК), а затем объединить области вручную.

st.cs.segment_densities(adata, 'nuclear', 50, k=3, dk=3, distance_threshold=3, background=False)
st.pl.contours(adata, 'nuclear_bins', scale=0.15)
st.pl.imshow(adata, 'nuclear_bins', labels=True)

Вставьте сюда описание изображения

Расколоть

st.cs.score_and_mask_pixels(
    adata, 'nuclear', k=5, method='VI+BP',
    vi_kwargs=dict(downsample=0.1, seed=0, zero_inflated=True)
)

st.pl.imshow(adata, 'nuclear_mask')

Вставьте сюда описание изображения

Этикетка

st.cs.find_peaks_from_mask(adata, 'nuclear', 7)
st.cs.watershed(
    adata, 'nuclear_distances', 1,
    mask_layer='nuclear_mask',
    markers_layer='nuclear_markers',
    out_layer='nuclear_labels'
)

st.pl.imshow(adata, 'nuclear_labels', labels=True)

Вставьте сюда описание изображения

Выявление дополнительных ядер с несплайсированной РНК

st.cs.segment_densities(adata, 'unspliced', 50, k=3, dk=3, distance_threshold=3, background=False)
st.pl.contours(adata, 'unspliced_bins', scale=0.15)
st.pl.imshow(adata, 'unspliced_bins', labels=True)

Вставьте сюда описание изображения

Расколоть

Затем ядра были идентифицированы с использованием несплайсированной РНК, как мы делали ранее для подсчета ядерных генов. Обратите внимание, что эта функция автоматически обнаруживает ячейки плотности РНК и соответствующим образом корректирует алгоритм. Также обратите внимание, что мы предоставляем параметр «определенный_слой» st.pp.segmentation.score_and_mask_pixels и параметр «seed_layer» st.pp.segmentation.label_connected_comComponents для указания ядерных меток, полученных из ядерно локализованных генов. Внутри эти метки используются для дальнейшей идентификации настоящих ядер.

st.cs.score_and_mask_pixels(
    adata, 'unspliced', k=5, method='VI+BP',
    vi_kwargs=dict(downsample=0.1, seed=0),
    certain_layer='nuclear_labels'
)

st.pl.imshow(adata, 'unspliced_mask')

Вставьте сюда описание изображения

Этикетка

В отличие от предыдущего случая, когда мы использовали ядерные локализованные гены, здесь мы знаем некоторые исходные метки, которые хотим сохранить (и в некоторых случаях увеличить масштаб, чтобы заполнить приведенную выше маску). Более того, использование несплайсированных меток, по-видимому, приводит к перенасыщению некоторых участков с высокой плотностью РНК, что затрудняет различение границ клеток в этих участках. Поэтому вместо использования подхода водораздела, который пытается «заполнить» всю маску, мы используем st.cs.label_connected_comComponents, чтобы ограничить максимальную область, которой может быть назначена каждая метка.

Обратите внимание, что предоставляемый нами параметрseed_label — это метка, которую мы получили ранее с использованием ядерно локализованных генов.

st.cs.label_connected_components(adata, 'unspliced', seed_layer='nuclear_labels')

st.pl.imshow(adata, 'unspliced_labels', labels=True)

Вставьте сюда описание изображения

Для получения дополнительных знаний в области биоинформатики приглашаем вас на обмен v: Coffeeiix (также доступно обучение по анализу транскриптома отдельных клеток)

Je suppose que tu aimes

Origine blog.csdn.net/coffeeii/article/details/130550041
conseillé
Classement