fa
Feedback
MedData Lab

MedData Lab

رفتن به کانال در Telegram

О работе с данными в медицинских и биомедицинских исследованиях. Анализ, интерпретация, ограничения, аналитические решения. R • Python • научная практика Автор канала @phlenyxa Курс по анализу данных в R ↓ meddatalab.ru

نمایش بیشتر
کشور مشخص نشده استدسته بندی مشخص نشده است
383
مشترکین
+224 ساعت
+177 روز
+6330 روز
آرشیو پست ها
31 августа начинаем третий поток курса по анализу данных в R До старта осталось совсем немного. На курсе мы последовательно проходим весь путь анализа данных: исходная таблица → подготовка данных → описательная статистика → выбор метода → анализ → визуализация в ggplot2 → интерпретация результата. Для меня важно не просто показать отдельные команды R, а научить самостоятельно разбирать свои данные и понимать, что именно происходит на каждом этапе анализа. R — рабочий инструмент, который делает этот процесс воспроизводимым и управляемым. Начинаем с самых основ, поэтому опыт программирования не нужен. До старта стоимость участия остаётся 23 000 ₽. С 31 августа27 000 ₽. Присоединиться к потоку можно до второго занятия — 3 сентября. И, как и раньше, оплачивать сразу не нужно: сначала можно посмотреть первую лекцию, пройти практику и прочитать лонгрид, а уже потом решить, подходит ли вам формат. Подробнее о программе и участие — http://meddatalab.ru/

+3
p = 0,01. Новый протокол работает? Часть 2 — разбираем данные в R В первой части этого кейса Дамир Ильдарович Марапов у себя в канале разобрал методологическую сторону: что такое конфаундинг, почему в нерандомизированном исследовании простого сравнения групп может быть недостаточно и как подходить к выбору потенциальных конфаундеров. А здесь разберём тот же пример уже практически — в R. Напомню исходные данные: 120 пациентов после планового хирургического вмешательства, по 60 человек в каждой группе. Средняя длительность госпитализации: новый протокол — 5,5 дня стандартный — 6,8 дня 1. Исходное сравнение Начнём с обычного сравнения двух независимых групп:
t.test(hospital_days ~ protocol, data = dat)
Получаем разницу около 1,3 дня, p = 0,008 — при округлении p ≈ 0,01. То есть без учёта других факторов длительность госпитализации в группе нового протокола статистически значимо меньше. Но исследование нерандомизированное, поэтому важно оценить, насколько сопоставимы сами группы. 2. Возраст пациентов Средний возраст: новый протокол — 52,9 года стандартный — 62,4 года Почти 10 лет разницы. Посмотрим, как распределяется возраст внутри каждой группы. Для визуализации используем ggplot2 — пакет R, который позволяет собирать графики из отдельных слоёв. Здесь совместим boxplot с отдельными наблюдениями: так видны и распределение, и данные каждого пациента.
ggplot(dat, aes(protocol, age_years)) +
  geom_boxplot() +
  geom_jitter(width = 0.1, alpha = 0.5)
Различие в возрасте между группами хорошо видно и на графике. Теперь оценим, как связаны возраст и длительность госпитализации:
ggplot(dat, aes(age_years, hospital_days, colour = protocol)) +
  geom_point(alpha = 0.6) +
  geom_smooth(method = "lm")
Каждая точка — один пациент, линии показывают линейную тенденцию внутри групп. В обеих группах с увеличением возраста длительность госпитализации имеет тенденцию увеличиваться. С учётом методологической логики, разобранной в первой части, возраст имеет смысл включить в анализ как потенциальный конфаундер. 3. Учитываем возраст Для этого используем линейную регрессию. Она позволяет оценить связь протокола с длительностью госпитализации, одновременно учитывая возраст пациента. В R линейная модель задаётся функцией lm(). Слева указываем исход — длительность госпитализации, справа — протокол и возраст:
model <- lm(
  hospital_days ~ protocol + age_years,
  data = dat
)

summary(model)
confint(model)
summary() показывает коэффициенты модели и p-value, а confint() — 95% доверительные интервалы. До учёта возраста различие между протоколами составляло около 1,3 дня. После поправки на возраст оценка уменьшается до 0,82 дня. Для протокола p ≈ 0,14, а 95% доверительный интервал включает 0. То есть после учёта возраста различие между группами становится менее выраженным и статистически менее определённым. Это не означает, что мы доказали отсутствие эффекта. Но и сказать: «новый протокол сокращает госпитализацию на 0,8 дня» по этим данным нельзя. Корректнее сказать так: после поправки на возраст оценка различий между протоколами уменьшилась примерно до 0,8 дня, а 95% доверительный интервал включает 0 — поэтому по этим данным нельзя исключить отсутствие различий между протоколами. Именно для этого здесь и нужна модель: посмотреть, как меняется оценка после учёта важного исходного различия между группами. При этом технически весь анализ в R занимает совсем немного кода: t-test, два графика и линейная модель. Когда статистическая задача сформулирована, реализовать её в R часто можно всего несколькими строками. Для практикума мы подготовили учебный датасет и полный R-скрипт с комментариями, чтобы весь анализ можно было скачать и повторить самостоятельно.

Repost from medstatistic
Простой пример того, как конфаундеры мешают правильно оценить различия и как мы можем устранить эти помехи с помощью регресси
Простой пример того, как конфаундеры мешают правильно оценить различия и как мы можем устранить эти помехи с помощью регрессии и R Пост подготовлен совместно с медицинским кибернетиком Еленой Филипповой, автором канала MedData Lab. В клинических исследованиях есть понятие конфаундеров - вмешивающихся, или спутывающих, факторов. Это признаки, которые связаны как с изучаемым исходом, так и с воздействием, не являясь при этом промежуточным звеном влияния воздействия на исход. Часто к ним относятся возраст, тяжесть заболевания, наличие сопутствующих заболеваний и т.д. Если в наблюдательном исследовании мы сравниваем группы основного лечения и контроля, и при этом они имеют различия по каким-либо вмешивающимся факторам, это может существенно изменить результаты сравнения. В статистике есть разные способы устранять влияние конфаундеров, чтобы получить корректные результаты анализа. Один из них - рандомизация, то есть случайный отбор исследуемых в сравниваемые группы. Это позволяет снять проблему влияния как известных, так и неизвестных нам конфаундеров. А если рандомизация не проводилась? Например, мы проводим когортное исследование по данным пациентов, наблюдающихся в больнице. То или иное лечение им назначается не случайно, а исходя из показаний. Легко представить, что группы пациентов с разным лечением будут заодно различаться и по другим важным признакам, таким как коморбидность или тяжесть заболевания. И, конечно, это будет влиять на результаты сравнения. Для устранения или минимизации влияния конфаундеров в такой ситуации можно использовать: 🔹анализ подгрупп, 🔹многофакторную регрессию, 🔹псевдорандомизацию методом сопоставления оценок склонности (PSM). Все эти методы с примерами в программе SPSS мы будем подробно изучать во второй теме Курса по сложным методам, который стартует 14 сентября. А в этом посте вместе с медицинским кибернетиком Еленой Филипповой мы проведем статистический разбор подобной ситуации с применением языка R. Итак. В клинике ретроспективно проанализировали результаты планового хирургического вмешательства: 60 пациентов в первой группе получали новый протокол ранней активизации, 60 пациентов во второй группе - стандартное послеоперационное ведение При оценке длительности госпитализации пациентов: средние значения составили, соответственно, 5,5 и 6,8. Разность средних составила -1,29 дня с 95% ДИ: -2,25 до -0,34, p = 0,008. Другими словами, различия групп были статистически значимы. Все бы хорошо, но наше исследование наблюдательное, то есть отбор в группы был неслучайным. Поэтому мы дополнительно провели сравнение групп по потенциальным конфаундерам. И получили, что возраст исследуемых имел заметные различия: в первой группе он составил 52,9 года, а во второй был почти на 10 лет старше - 62,4 года. Очевидно, что меньшие сроки госпитализации в первой группе могли быть обусловлены не только новым протоколом, но и более молодым возрастом пациентов. Поэтому для корректного вывода о связи проводимого лечения с длительностью госпитализации нам нужно устранить влияние конфаундера - возраста. И для этого мы можем воспользоваться методом регрессии. Продолжение следует🔽

Что в этой работе удивило вас больше всего?
Anonymous voting

Эпигенетика памяти: когда воспоминание можно усилить или ослабить Эпигенетические изменения давно связывают с формированием памяти. Но наличие такой ассоциации ещё не доказывает, что именно эти изменения причинно участвуют в её регуляции. Именно это удалось проверить в работе, опубликованной в Nature Genetics в октябре 2025 года. Авторы использовали CRISPR–dCas9-систему для эпигенетического редактирования. В отличие от классического CRISPR/Cas9, здесь ДНК не разрезали и её последовательность не меняли: dCas9 служила адресной системой, которая доставляла активатор или репрессор к нужному участку ДНК. Мишенью стал промотор Arc — гена, связанного с обучением и синаптической пластичностью. Редактирование проводили в энграм-клетках зубчатой извилины гиппокампа — нейронах, активированных во время обучения. С помощью репрессора dCas9-KRAB-MeCP2 авторы снижали активность Arc. При последующем помещении животных в тот же контекст у них наблюдалось меньше freezing-поведения — стандартного поведенческого показателя памяти в этой модели. В противоположном эксперименте использовали активатор dCas9-VPR. Повышение активности Arc сопровождалось более выраженной поведенческой реакцией при последующем тестировании памяти. То есть последовательность ДНК оставалась прежней, а менялось эпигенетическое состояние конкретного локуса в определённой популяции нейронов. Что особенно интересно Во-первых, эффект удалось получить не только вскоре после обучения. В отдельном эксперименте эпигенетическое редактирование запускали через четыре дня после формирования памяти, когда она уже была консолидирована. И в этом случае активация Arc усиливала последующую поведенческую реакцию при тестировании памяти, а репрессия — ослабляла её. Во-вторых, эффект оказался обратимым. Авторы использовали anti-CRISPR-белок AcrIIA4, который блокирует связывание dCas9 с ДНК. После его активации эффект dCas9-VPR исчезал. В-третьих, вмешательство было преимущественно локус-специфичным. Для репрессора авторы обнаружили лишь небольшое число off-target-эффектов, а для активатора в проведённых анализах значимых транскрипционных off-target-эффектов не выявили. Эпигенетические механизмы памяти изучают давно, в том числе с помощью фармакологических и генетических вмешательств. Но такие подходы обычно затрагивают значительно более широкий набор генов и клеток. Здесь вмешательство было гораздо точнее: конкретный промотор, конкретная популяция энграм-клеток и контролируемый момент времени. После такого адресного воздействия менялась и поведенческая реакция животных. Поэтому работа даёт более прямые аргументы в пользу причинной роли локального эпигенетического состояния Arc в регуляции памяти. Авторы сами рассматривают её как proof-of-principle того, что сайт-специфическое эпигенетическое редактирование может причинно влиять на проявление памяти. Но ограничения здесь тоже важны. Исследование проведено на мышах-самцах, в одной области мозга — зубчатой извилине гиппокампа, для одного локуса — Arc, и в одной экспериментальной модели — контекстуального обучения, основанного на ассоциации со страхом. Поэтому переносить эти результаты напрямую на человека, конечно, нельзя. Методологически работа очень красивая: вместо вопроса «какие эпигенетические изменения сопровождают формирование памяти?» можно поставить более сильный экспериментальный вопрос: «изменится ли поведение, если адресно изменить эпигенетическое состояние конкретного локуса в энграм-клетках?» И здесь авторы получили экспериментальный ответ — да. Coda DM, Watt L, Glauser L et al. Cell-type- and locus-specific epigenetic editing of memory expression. Nature Genetics. 2025;57:2661–2668. DOI: 10.1038/s41588-025-02368-y.

Почему R..? В Excel меня долго устраивало почти всё. Можно отфильтровать нужные строки, посчитать показатели, собрать таблицу, быстро что-то поправить вручную. Но в какой-то момент появляется очень простой вопрос: а как именно была получена эта цифра? Какие строки мы исключили? Что сделали с пропусками? По какому принципу сформировали группы? Не возник ли на каком-то этапе анализа артефакт? Если было несколько фильтраций, промежуточных таблиц и правок, спустя время восстановить всю цепочку бывает уже непросто. Наверное, поэтому уже много лет для анализа данных я использую именно R. Анализ остаётся записанным в скрипте — шаг за шагом. Загрузили данные:
dat <- read.csv("data.csv")
Проверили:
str(dat)
summary(dat)
Проверили пропуски:
sum(is.na(dat))
Описали группы:
dat %>%
  group_by(group) %>%
  summarise(
    n = sum(!is.na(marker)),
    mean = mean(marker, na.rm = TRUE),
    sd = sd(marker, na.rm = TRUE)
  )
Построили график:
ggplot(dat, aes(group, marker)) +
  geom_boxplot() +
  geom_jitter(width = 0.1)
Сравнили группы:
t.test(marker ~ group, data = dat)
Через месяц можно открыть скрипт и увидеть, что именно было сделано. Через год — повторить анализ. Передать его коллеге. Запустить тот же код на обновлённых данных. Это и есть одна из основ воспроизводимого анализа. И для меня здесь важно ещё одно: код фиксирует не только расчёты, но и аналитические решения. Какую выборку мы анализируем? Что делаем с пропусками? Какие группы сравниваем? Какой метод используем? R не решает эти вопросы за исследователя и не делает анализ автоматически правильным. Но все эти решения становятся видимыми — их можно проверить, обсудить и при необходимости изменить. В итоге R для меня — это не столько «программирование», сколько способ записать логику анализа. И чтобы этот пост не остался только рассуждением, я подготовила небольшой файл: «С чего начать анализ новой таблицы в R: минимальный рабочий шаблон» Внутри — простой каркас: загрузка данных → первичная проверка → пропуски → описание групп → визуализация → статистический тест. Его можно скачать, открыть в RStudio и адаптировать под свою таблицу. А на курсе мы идём дальше по той же логике: от исходной таблицы и подготовки данных до статистического анализа, визуализации в ggplot2 и интерпретации результатов. Старт нового потока — 31 августа.

Почему R..? В Excel меня долго устраивало почти всё. Можно отфильтровать нужные строки, посчитать показатели, собрать таблицу, быстро что-то поправить вручную. Но в какой-то момент появляется очень простой вопрос: а как именно была получена эта цифра? Какие строки мы исключили? Что сделали с пропусками? По какому принципу сформировали группы? Не возник ли на каком-то этапе анализа артефакт? Если было несколько фильтраций, промежуточных таблиц и правок, спустя время восстановить всю цепочку бывает уже непросто. Наверное, поэтому уже много лет для анализа данных я использую именно R. Анализ остаётся записанным в скрипте — шаг за шагом. Загрузили данные:
dat <- read.csv("data.csv")
Проверили:
str(dat)
summary(dat)
Оставили нужные наблюдения:
dat <- filter(dat, group == "Treatment")
Построили график:
ggplot(dat, aes(group, marker)) +
  geom_boxplot()
Сравнили группы:
t.test(marker ~ group, data = dat)
Через месяц можно открыть скрипт и увидеть, что именно было сделано. Через год — повторить анализ. Передать его коллеге. Запустить тот же код на обновлённых данных. Это и есть одна из основ воспроизводимого анализа. И для меня здесь важно ещё одно: код фиксирует не только расчёты, но и аналитические решения. Какую выборку мы анализируем? Что делаем с пропусками? Какие группы сравниваем? Какой метод используем? R не решает эти вопросы за исследователя и не делает анализ автоматически правильным. Но все эти решения становятся видимыми — их можно проверить, обсудить и при необходимости изменить. В итоге R для меня — это не столько «программирование», сколько способ записать логику анализа. И чтобы этот пост не остался только рассуждением, я подготовила небольшой файл: «С чего начать анализ новой таблицы в R: минимальный рабочий шаблон» Внутри — простой каркас: загрузка данных → первичная проверка → пропуски → описание групп → визуализация → статистический тест. Его можно скачать, открыть в RStudio и адаптировать под свою таблицу. А на курсе мы идём дальше по той же логике: от исходной таблицы и подготовки данных до статистического анализа, визуализации в ggplot2 и интерпретации результатов. Старт нового потока — 31 августа.

Почему R...? В Excel можно сделать очень многое: отфильтровать строки, посчитать показатели, собрать таблицу, что-то поправить вручную. Но со временем появляется один неприятный вопрос: а как именно была получена эта цифра? Какие строки исключили? Что сделали с пропусками? Как сформировали группы? Не менялось ли что-то вручную по ходу анализа? Если было несколько фильтраций, промежуточных таблиц и правок, восстановить всю цепочку через месяц бывает уже непросто. В R всё остаётся в скрипте. Загрузили данные:
dat <- read.csv("data.csv")
Проверили:
str(dat)
summary(dat)
Оставили нужные наблюдения:
dat <- filter(dat, group == "Treatment")
Построили график:
ggplot(dat, aes(group, marker)) +
  geom_boxplot()
Сравнили группы:
t.test(marker ~ group, data = dat)
Через месяц можно открыть файл и точно увидеть, что было сделано. Повторить анализ, передать его коллеге или запустить тот же код на обновлённых данных. Это и есть воспроизводимость анализа. И для меня здесь важно ещё одно: код фиксирует не только расчёты, но и решения. Какую выборку мы анализируем? Что делаем с пропусками? Какие группы сравниваем? Какой метод используем? R не делает анализ правильным автоматически. Но он позволяет видеть и проверять всю его логику. Поэтому я давно воспринимаю R не столько как программирование, сколько как способ записать ход анализа. И к этому посту я подготовила небольшой файл: «С чего начать анализ новой таблицы в R: минимальный рабочий шаблон» Внутри — загрузка данных, первичная проверка, пропуски, описание групп, визуализация и статистический тест. Его можно скачать, открыть в RStudio и адаптировать под свою таблицу. [ссылка на шаблон + пример данных] А на курсе мы идём дальше по той же логике: от исходной таблицы до статистического анализа, визуализации в ggplot2 и интерпретации результатов. Старт нового потока — 31 августа.

Снимок говорит: «опухоль осталась». Патолог — «опухоли нет». Кому верить? У части пациентов с колоректальным раком есть молекулярная особенность — дефицит системы репарации неспаренных оснований (dMMR) или высокая микросателлитная нестабильность (MSI-H). Такие опухоли отличаются высокой иммуногенностью и особенно хорошо отвечают на иммунотерапию. Иногда настолько хорошо, что возникает закономерный вопрос: а нужна ли операция, если опухоль полностью исчезла после лечения? Но прежде чем отказаться от операции, нужно понять, исчезла ли она на самом деле. И здесь возникает проблема. В 2026 году был опубликован метаанализ 12 исследований, включивший 396 пациентов с dMMR/MSI-H колоректальным раком после неоадъювантной иммунотерапии. Авторы сравнили результаты радиологической оценки ответа с патоморфологической. Расхождение обнаружили у 59,6% пациентов. При раке ободочной кишки — у 64,2%, при раке прямой кишки — у 34,9%. Причём особенно интересно направление этого расхождения. 238 пациентов с патоморфологически подтверждённым полным ответом по данным визуализации были расценены как имеющие остаточную опухоль. Например, в исследовании NICHE-2 только 2,7% пациентов с патоморфологически подтверждённым полным ответом имели полный ответ и по данным визуализации. То есть снимок нередко говорил: «опухоль осталась», хотя при исследовании операционного материала жизнеспособных опухолевых клеток уже не обнаруживали. И здесь появляется интересный методологический вопрос: что делать, если доступный нам способ измерения не очень хорошо отражает то, что мы действительно хотим узнать? До операции мы не можем исследовать весь удалённый материал под микроскопом — иначе операция уже состоялась. Поэтому приходится оценивать ответ на лечение косвенно: по данным визуализации, эндоскопии, биомаркерам и их комбинациям. Но радиологический и патоморфологический ответ — не одно и то же. И результаты этого метаанализа хорошо показывают, насколько сильно они могут расходиться после иммунотерапии. При этом цифру 59,6% не стоит читать как «визуализация ошибается в 60% случаев». В метаанализ вошли разные исследования, разные локализации опухоли и подходы к оценке ответа. Поэтому практический вывод здесь не в том, что «снимкам нельзя верить». Скорее, одного метода может быть недостаточно, если на основании его результата принимается настолько серьёзное решение, как отказ от операции. Именно поэтому сейчас большое внимание уделяется сочетанию разных способов оценки ответа. И, пожалуй, это хороший пример более общего принципа исследований: важно не только получить результат, но и понимать, насколько хорошо выбранный способ измерения отражает то, что мы действительно хотим измерить. Xie Y, Liao L, Ding P, Jiang W. Discordance between radiological and pathological response to neoadjuvant immunotherapy in mismatch repair-deficient/microsatellite instability-high colorectal cancer: a meta-analysis. Front Immunol. 2026;17:1680500. DOI: 10.3389/fimmu.2026.1680500

31 августа стартует новый поток курса «R для медицинских исследований» ⚡️⚡️⚡️ Это уже третий поток — и за время первых двух я немного пересобрала курс с учётом вопросов, которые чаще всего возникали у участников. Курс рассчитан в первую очередь на врачей и исследователей, которые хотят не просто получить готовые результаты статистического анализа, а понимать, что именно они делают с данными и почему выбирают тот или иной метод. Будем идти от самых основ работы в R и подготовки данных до статистического анализа и визуализации — постепенно, с практикой и на примерах из медицинских исследований. Предварительный опыт работы в R не нужен. Старт — 31 августа. В ближайшие дни подробнее расскажу о программе и формате третьего потока.

Множественные сравнения: откуда берутся случайные «находки» Представьте, что мы одновременно проверяем 20 гипотез. Для каждой используем привычный уровень значимости 0.05. Даже если на самом деле никаких эффектов нет, вероятность получить хотя бы один ложноположительный результат составит: 1 − (1 − 0.05)²⁰ ≈ 0.64 То есть около 64%. Откуда столько? В одном тесте вероятность не получить ложноположительный результат — 0.95. Если провести 20 независимых тестов, вероятность, что ни один из них не даст ложноположительного результата: 0.95²⁰ ≈ 0.36 А значит, вероятность получить хотя бы один — около 64%. Именно здесь возникает проблема множественных сравнений. Теперь представим реальную задачу: например, мы анализируем RNA-seq и сравниваем экспрессию 20 000 генов между двумя группами. Для каждого гена проверяется отдельная статистическая гипотеза и получается своё p-value. Если просто использовать для всех генов порог p < 0.05, среди «значимых» результатов неизбежно появятся случайные находки. Поэтому при множественных сравнениях p-value необходимо корректировать. Один из вариантов — поправка Бонферрони. Логика очень простая: допустимый уровень ошибки делится на число проведённых тестов. Для 20 тестов: 0.05 / 20 = 0.0025 Теперь результат отдельного теста должен иметь p < 0.0025, чтобы считаться статистически значимым. Так мы контролируем FWER (family-wise error rate) — вероятность получить хотя бы один ложноположительный результат среди всего набора тестов. Это довольно строгий подход. И иногда — слишком строгий. Если одновременно тестируются 20 000 генов, порог Бонферрони составит: 0.05 / 20 000 = 2.5 × 10⁻⁶ При таком пороге вместе со случайными находками легко потерять и реальные эффекты. Поэтому в исследованиях, где одновременно проверяются тысячи гипотез, часто используют другой принцип — FDR (false discovery rate). Один из наиболее распространённых методов его контроля — поправка Бенджамини–Хохберга. Здесь мы задаём уже другой вопрос. Не: «Как сделать так, чтобы вероятность хотя бы одной ложной находки была не больше 5%?» А: «Как контролировать долю ложных находок среди результатов, которые мы назвали значимыми?» Это менее строгий подход, чем контроль FWER, зато он позволяет сохранить больше реальных сигналов. Поэтому FDR широко используют в поисковых исследованиях, в том числе при анализе омиксных данных. Именно поэтому в результатах RNA-seq нас обычно интересует не только исходный p-value, но и скорректированный p-value (padj). Кстати, padj и q-value часто используют почти как синонимы, но строго говоря, это не одно и то же. Какую поправку выбирать? Зависит от задачи. Если особенно важно минимизировать вероятность хотя бы одного ложноположительного вывода — нужен контроль FWER. Если одновременно проверяется множество гипотез и важно не потерять реальные находки — чаще выбирают контроль FDR. Поэтому вопрос при множественном тестировании не только в том, «какое получилось p-value?», но и в том, какую ошибку мы хотим контролировать. Benjamini Y, Hochberg Y. Controlling the false discovery rate: a practical and powerful approach to multiple testing. J R Stat Soc Series B. 1995;57(1):289–300

Сейчас я на летней школе по биоинформатике в МФТИ, и одна из тем программы — одноклеточное секвенирование и пространственная
Сейчас я на летней школе по биоинформатике в МФТИ, и одна из тем программы — одноклеточное секвенирование и пространственная транскриптомика. Хороший повод рассказать, почему эти технологии так сильно изменили наш взгляд на опухоль! Представьте фруктовый смузи. Мы можем определить, что в нём есть клубника, банан, киви и голубика. Можем примерно оценить, каких ингредиентов больше, а каких меньше. Но после того, как всё смешали, уже невозможно понять, сколько именно отдельных ягод и кусочков каждого фрукта положили в блендер. Примерно так работает обычная bulk RNA-seq. Мы берём фрагмент ткани, выделяем из него РНК и получаем общий профиль экспрессии генов. Это полезная информация, но она усреднена по всем клеткам образца. Мы видим общий сигнал, но не знаем, какие именно клетки внесли в него вклад. Следующим шагом стало одноклеточное секвенирование — single-cell RNA-seq. Если продолжить аналогию, теперь мы можем сказать: в смузи положили десять ягод клубники, половину банана, три кусочка киви и 15 ягод голубики. То есть мы уже видим состав по отдельным клеткам. В опухоли можно различить опухолевые клетки, иммунные клетки, фибробласты, эндотелиальные клетки и множество их состояний. Причём клетки, которые выглядят похоже под микроскопом, могут иметь совсем разные профили экспрессии генов. Но для такого анализа ткань приходится разделять на отдельные клетки. Поэтому мы узнаём, кто находился в образце, но теряем информацию о том, где именно находилась каждая клетка и кто был её соседом. И здесь появляется пространственная транскриптомика. Представьте, что до приготовления смузи фрукты лежали на тарелке в определённом порядке: клубника была в центре, голубика — по краям, а кусочки киви находились рядом с бананом. Пространственная транскриптомика позволяет сохранить эту исходную картину. Мы видим не только, какие клетки присутствуют в ткани, но и где они расположены относительно друг друга. Можно изучать отдельные участки опухоли, искать клеточные ниши и смотреть, какие типы клеток соседствуют между собой. При этом важно, что разрешение зависит от конкретной технологии: где-то мы получаем информацию на уровне отдельных клеток, а где-то — небольших участков ткани, включающих несколько клеток. Сейчас single-cell RNA-seq и пространственную транскриптомику всё чаще используют вместе. Одноклеточное секвенирование помогает подробно описать состав ткани. Пространственная транскриптомика возвращает этому составу координаты. В результате вопрос уже звучит не просто так: Какие гены экспрессируются в опухоли? А гораздо точнее: В каких клетках они экспрессируются, где находятся эти клетки и кто расположен рядом? Именно это позволяет рассматривать опухоль не как однородную массу, а как сложную систему из разных клеток, состояний и взаимодействий.

+3
Первый шаг в R Мне часто пишут примерно одно и то же:
«Хочу начать работать в R, но совершенно не понимаю, с чего начать.»
Поэтому я подготовила небольшой бесплатный стартовый набор, который поможет пройти путь от установки R до первого собственного графика. Внутри четыре файла: 📄 Установка R и RStudio — пошаговая инструкция со скриншотами. 📄 Практикум "Первый график в R" — за ~30 минут построим boxplot на учебных клинических данных. 📊 Учебный датасет — 60 пациентов, две группы лечения (данные смоделированы специально для обучения). 💻 Готовый R-скрипт — весь код практикума с комментариями. В каждом файле есть раздел «Если что-то пошло не так» с разбором самых частых ошибок. По моему опыту, именно они чаще всего мешают сделать первый шаг. Никаких предварительных знаний не требуется. Буду рада, если этот набор поможет кому-то наконец открыть R не «когда-нибудь потом», а сегодня! 📎 Материалы прикреплены к этому посту.

На следующей неделе ненадолго возвращаюсь в роль студента 😊 Еду в Долгопрудный на летнюю школу по биоинформатике Центра живых систем МФТИ. Отбор был конкурсным, так что приглашение получить было особенно приятно! Я выбрала трек по мультиомике: геномика, bulk транскриптомика, single-cell, пространственная транскриптомика, эпигеномика. Впереди неделя лекций и практики! Пожалуй, одна из вещей, которые мне больше всего нравятся в науке, — здесь невозможно однажды сказать себе: «Ну всё, теперь я всё знаю». Методы меняются быстро. Single-cell и пространственная транскриптомика ещё несколько лет назад выглядели экзотикой, а сегодня это обычный рабочий инструмент — и вместе с ними изменились подходы к анализу данных. Если хочешь не просто понимать современные исследования, но и самостоятельно анализировать собственные данные секвенирования, учиться приходится постоянно. Если организаторы не будут против, расскажу здесь о самом интересном!

Одни и те же данные — разные выводы Посмотрите на эти два графика. На левом кажется, что группы практически не отличаются. Ср
Одни и те же данные — разные выводы Посмотрите на эти два графика. На левом кажется, что группы практически не отличаются. Среднее снижение артериального давления в обеих группах одинаковое — 11,8 мм рт. ст. На первый взгляд можно сделать вывод:
«Лечение работает одинаково.»
Но теперь посмотрите на график справа. Это те же самые данные. И вывод уже совсем другой. В группе A большинство пациентов реагируют на лечение примерно одинаково. А вот в группе B картина совершенно иная: у большинства эффект минимальный, зато у небольшой части пациентов лечение работает очень хорошо. Среднее значение оказалось одинаковым. А вот распределение данных — совершенно разным. И именно распределение может подсказать исследователю новые вопросы: • Почему пациенты разделились на две группы? • Есть ли биомаркер, объясняющий такой разный ответ на лечение? • Не скрываем ли мы клинически важную информацию, показывая только среднее значение? Среднее — полезная статистика. Но оно не показывает: — насколько однородна группа; — насколько велик разброс данных; — есть ли несколько подгрупп пациентов; — есть ли выбросы. Поэтому визуализация — это не просто красивое оформление статьи. Это часть анализа данных. Иногда один график распределения способен рассказать о результатах исследования больше, чем таблица со средними значениями. Как вы чаще всего видите результаты в медицинских статьях — в виде столбчатых диаграмм или графиков распределения?

Анализ выживаемости: когда важно не только что, но и когда Представьте две группы пациентов. Через пять лет в обеих умерло по 30%. Можно ли сказать, что лечение одинаково эффективно? Не обязательно. В одной группе большинство смертей произошло в первый год, а в другой — только через четыре года. Количество событий одинаковое. Но время до события — разное. Именно поэтому в клинических исследованиях анализируют не только факт наступления события, но и когда оно произошло. Что считается событием? Это зависит от цели исследования. В онкологии чаще всего используют несколько конечных точек. • Overall survival (OS) — время до смерти от любой причины. • Progression-free survival (PFS) — время до прогрессирования заболевания или смерти. • Disease-free survival (DFS) — время после достижения ремиссии до рецидива или смерти. • Time to response (TTR) — время до первого зарегистрированного ответа на лечение. Выбор конечной точки принципиален. Одно и то же лечение может увеличить PFS, но никак не повлиять на OS. А значит — привести к совершенно разным клиническим выводам. Почему нельзя просто сравнить среднее время? Потому что к моменту окончания исследования событие произошло далеко не у всех пациентов. Кто-то продолжает наблюдаться. Кто-то выбыл из исследования. Кто-то жив без признаков прогрессирования. Такие наблюдения называют цензурированными. Мы знаем только одно: до определённого момента событие не произошло. Когда оно произойдёт позже — неизвестно. Если просто исключить таких пациентов из анализа, результат будет смещён. Для этого используют метод Каплана—Мейера Он позволяет оценить вероятность того, что событие ещё не наступило к каждому моменту времени. При этом учитываются как пациенты, у которых событие произошло, так и цензурированные наблюдения. Результат — знакомая многим ступенчатая кривая выживаемости. Каждая ступень вниз соответствует очередному зарегистрированному событию. А как сравнить две кривые? Чаще всего используют лог-ранговый тест (log-rank test). Он проверяет, различается ли вероятность наступления события между группами на протяжении всего периода наблюдения. Но здесь есть важный нюанс. Лог-ранговый тест предполагает, что отношение рисков между группами остаётся примерно постоянным во времени (предположение о пропорциональности рисков). Если кривые пересекаются, это предположение может нарушаться. В такой ситуации одного p-value уже недостаточно, и результаты следует интерпретировать с осторожностью. Почему почти всегда приводят медиану, а не среднее? Потому что распределение времени до события обычно сильно асимметрично. Поэтому используют медиану выживаемости — время, к которому событие произошло у половины пациентов. Иногда медиану вообще невозможно рассчитать. Например, если к окончанию исследования событие произошло менее чем у 50% участников. И это совершенно нормальная ситуация. Что смотреть в статье? Когда видите кривые Каплана—Мейера, не ограничивайтесь только p-value. Обратите внимание как минимум на четыре вещи: — Какая конечная точка выбрана? (OS, PFS, DFS и др.) — Пересекаются ли кривые?— Сколько пациентов остаётся под наблюдением в разные моменты времени? (таблица Number at risk) — Насколько велико различие между группами? Статистическая значимость ещё не означает клиническую значимость.

Какие темы вы хотели бы видеть здесь чаще?
Anonymous voting

Почему сердце почти никогда не болеет раком Это один из тех фактов, которые знают многие, но редко задумываются — почему. Первичные злокачественные опухоли сердца встречаются исключительно редко. Метастазы в сердце возникают чаще, особенно при распространённом раке, но клинически поражение сердца всё равно наблюдается значительно реже, чем можно было бы ожидать от органа с таким интенсивным кровоснабжением. В апреле 2026 года в Science вышла работа, которая предлагает одно из возможных объяснений. Исследователи показали, что постоянная механическая нагрузка, возникающая при сокращениях сердца, сама по себе подавляет рост опухолевых клеток. Когда раковые клетки попадали в активно сокращающийся миокард, их пролиферация резко ограничивалась. Но в пересаженном сердце, которое сохраняло кровоснабжение, однако было механически разгружено, опухолевые клетки начинали активно расти, постепенно замещая ткань. Ключевую роль в этом процессе играет Nesprin-2 — белок ядерной оболочки, который передаёт механические сигналы от цитоскелета к ядру клетки. Механическая нагрузка сопровождалась сохранением более компактной организации хроматина и поддержанием уровня репрессивной эпигенетической метки H3K9me3, что ограничивало доступность генов, связанных с пролиферацией. Иными словами, «физические силы» влияли на то, какие программы экспрессии могли использовать опухолевые клетки. Эти результаты подтвердились и при анализе человеческих метастазов в сердце с помощью пространственной транскриптомики, где исследователи обнаружили сходные эпигенетические изменения. Есть и интересный биологический парадокс. Вскоре после рождения кардиомиоциты почти полностью перестают делиться, поэтому взрослое сердце практически не способно к регенерации после серьёзных повреждений. Возможно, именно механизмы, ограничивающие способность клеток сердца к делению, одновременно делают этот орган крайне неблагоприятной средой для развития опухолей. Получается, сердце, вероятно, платит за устойчивость к раку своей низкой способностью к регенерации. Источник: Ciucci G. et al. Mechanical load inhibits cancer growth in mouse and human hearts. Science. 2026;392:eads9412. doi:10.1126/science.ads9412.

Ох Пришла Домой Мама говорит Даня читал Маша сама играла

ROC-кривая: почему одного значения AUC недостаточно Мы много говорили о том, как оценивать эффективность лечения. Но в медицине есть и другая важная задача — понять, насколько хорошо работает диагностический тест. Когда говорят о качестве теста, обычно вспоминают два показателя. Чувствительность — доля пациентов с заболеванием, которых тест правильно определил как больных. Чем выше чувствительность, тем меньше пропущенных случаев. Специфичность — доля здоровых людей, которых тест правильно определил как здоровых. Чем выше специфичность, тем меньше ложноположительных результатов. Кажется, что всё просто. Но есть нюанс, который часто остается за кадром. Чувствительность и специфичность — это не фиксированные свойства теста. Они зависят от того, какое пороговое значение выбрано для разделения результатов на «положительные» и «отрицательные». Если снизить порог, тест начнет выявлять больше больных — чувствительность увеличится. Но одновременно возрастет число ложноположительных результатов, а значит, снизится специфичность. Если повысить порог, ситуация станет обратной: специфичность возрастет, но часть пациентов с заболеванием будет пропущена. Это не недостаток конкретного теста, а фундаментальный компромисс любой диагностики. Именно этот компромисс показывает ROC-кривая. Она отображает, как меняются чувствительность и доля ложноположительных результатов (1 − специфичность) при последовательном изменении порога. Каждая точка на кривой соответствует своему пороговому значению. Чем ближе кривая расположена к верхнему левому углу, тем лучше тест: он одновременно обладает высокой чувствительностью и низкой частотой ложноположительных результатов. Диагональная линия соответствует тесту, который работает не лучше случайного угадывания. Для количественной оценки используют AUC (Area Under the Curve) — площадь под ROC-кривой. Ее значение изменяется от 0,5 (случайное угадывание) до 1,0 (идеальный тест). Чем выше AUC, тем лучше тест в целом различает больных и здоровых независимо от конкретного порога. Но здесь тоже есть важное ограничение. AUC не говорит, какой порог следует использовать на практике. А именно от выбора порога зависит, сколько пациентов будет пропущено и сколько здоровых людей получат ложноположительный результат. Поэтому оптимальный порог определяется клинической задачей. Если речь идет о скрининге, например раннем выявлении рака, обычно стремятся к высокой чувствительности: лучше направить часть здоровых людей на дополнительное обследование, чем пропустить заболевание. Если же тест используется для подтверждения диагноза, часто важнее высокая специфичность, чтобы избежать необоснованного лечения. Поэтому сравнивать диагностические тесты только по AUC недостаточно. Не менее важно понимать, при каком пороге они будут использоваться и какие последствия имеют ложноположительные и ложноотрицательные результаты.