Уже заканчивается второй поток курса «Машинное обучение в биологии и биомедицине», а мы готовим для вас насыщенное лето:
Ну что, поехали! 🚀
#openbio_ml #openbio_education #биотех #машинноеобучение
Please open Telegram to view this post
VIEW IN TELEGRAM
Python для биомеда: словари и циклы — ключ к анализу данных
Продолжаем нашу рубрику «азы программирования» с разбором словарей и циклов — core skill инструментов для работы с биомедицинской информацией.
📌 Словари: биоинформатика в виде пар «ключ–значение»
Словарь — это структура данных, где каждому ключу соответствует значение. Это особенно удобно, когда данные не упорядочены, но имеют ярко выраженные идентификаторы.
Словарь с экспрессией генов:
Здесь ключи — названия генов, а значения — их уровень экспрессии (например, log2(TPM+1)).
Когда это полезно?
➖ Быстрый доступ к данным по уникальному идентификатору — например, по имени гена.
➖ Работа с JSON-структурами (часто встречаются в аннотациях генов, результатах API).
➖ Представление биомедицинских таблиц, где строки становятся словарями (например, записи пациента или профили экспрессии).
📌 Циклы: автоматизация анализа
Циклы позволяют выполнять повторяющиеся действия. Это основа для парсинга данных, агрегации результатов, фильтрации по условиям и т.д.
Выводим список интересующих генов:
Можно не просто выводить, а сравнивать с контрольными значениями, фильтровать и обрабатывать:
📌 Комбинируем словари и циклы: практические примеры
🔸 Пример 1: Анализ мутаций по пациентам
🔸 Пример 2: Сравнение экспрессии в норме и опухоли
🔸 Пример 3: Агрегация статистики по опухолевым типам
🔻 Почему владение словарями и циклами критично?
➕ Конструкции
➕ Циклы и словари встречаются в более чем 90% Jupyter-ноутбуков, связанных с анализом биомедицинских данных (источники: Kaggle, OpenML, BioPython).
➕ Любая современная библиотека (Pandas, PyTorch, BioPython, Scikit-learn) использует их под капотом или требует при работе с API.
✔️ Посмотреть, как используются словари и циклы в реальных проектах, можно тут и тут.
Попробуйте и вы!
#openbio_python #openbio_ml #openbio_education
Продолжаем нашу рубрику «азы программирования» с разбором словарей и циклов — core skill инструментов для работы с биомедицинской информацией.
Словарь — это структура данных, где каждому ключу соответствует значение. Это особенно удобно, когда данные не упорядочены, но имеют ярко выраженные идентификаторы.
Словарь с экспрессией генов:
gene_expression = {
'TP53': 3.4,
'BRCA1': 1.8,
'EGFR': 2.7
}
Здесь ключи — названия генов, а значения — их уровень экспрессии (например, log2(TPM+1)).
Когда это полезно?
Циклы позволяют выполнять повторяющиеся действия. Это основа для парсинга данных, агрегации результатов, фильтрации по условиям и т.д.
Выводим список интересующих генов:
genes = ['TP53', 'BRCA1', 'EGFR']
for gene in genes:
print(f"Ген: {gene}")
Можно не просто выводить, а сравнивать с контрольными значениями, фильтровать и обрабатывать:
threshold = 2.0
for gene, expr in gene_expression.items():
if expr > threshold:
print(f"{gene} сверхэкспрессирован: {expr}")
mutations = {
'patient_001': ['TP53', 'EGFR'],
'patient_002': ['BRCA1'],
'patient_003': []
}
for patient_id, mutated_genes in mutations.items():
print(f"{patient_id}: найдено {len(mutated_genes)} мутаций")
normal_expr = {'TP53': 1.2, 'BRCA1': 2.1, 'EGFR': 1.9}
tumor_expr = {'TP53': 3.4, 'BRCA1': 1.8, 'EGFR': 2.7}
for gene in normal_expr:
change = tumor_expr[gene] - normal_expr[gene]
print(f"{gene}: изменение экспрессии = {change:+.2f}")
tumor_samples = {
'glioblastoma': ['TP53', 'IDH1', 'EGFR'],
'breast_cancer': ['BRCA1', 'BRCA2', 'TP53'],
'lung_cancer': ['EGFR', 'KRAS']
}
gene_counts = {}
for cancer_type, genes in tumor_samples.items():
for gene in genes:
gene_counts[gene] = gene_counts.get(gene, 0) + 1
print("Гены, встречающиеся чаще всего:")
for gene, count in gene_counts.items():
if count > 1:
print(f"{gene}: {count} типов опухолей")
for, dict, items, range, enumerate
входят в топ-10 самых часто используемых в Python-коде.Попробуйте и вы!
#openbio_python #openbio_ml #openbio_education
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня в центре внимания — цикл While! 🔁
Это один из самых простых и мощных инструментов для автоматизации повторяющихся задач. Он позволяет выполнять блок кода многократно, пока выполняется определённое условие.
📌 Если вы уже освоили базовую работу с библиотеками NumPy и pandas, научились читать и обрабатывать датасеты, группировать, и визуализировать векторные операции — самое время перейти к управлению потоком выполнения кода. Цикл
Например:
Здесь
📌 Структура цикла while в Python:
➖ Условие — логическое выражение, которое проверяется перед каждой итерацией.
➖ Двоеточие (:) сообщает Python, что далее — блок команд.
➖ Тело цикла — команды с отступом, которые выполняются, пока условие истинно.
❕
📌 Сравнение с оператором
Цикл
➖
➖
Оба могут использовать логические операторы
Этот цикл будет продолжаться, пока уровень свёртки меньше 8 и белок остаётся токсичным. Когда
📌 Бесконечные циклы
Цикл
Чтобы остановить такой цикл, используют
Этот код будет спрашивать показатель качества, пока пользователь не введёт корректное значение выше
❕ Всегда следите за условиями цикла и используйте
Цикл
↗️ Освоив базовые принципы, вы сможете перейти к более сложным паттернам: вложенным циклам, контролю итераций через
🔭
#openbio_python #openbio_ml #openbio_education
Это один из самых простых и мощных инструментов для автоматизации повторяющихся задач. Он позволяет выполнять блок кода многократно, пока выполняется определённое условие.
while
— фундаментальная конструкция, которая пригодится в любом проекте.Например:
ридов_прочитано = 0 # Количество прочитанных фрагментов ДНК
цель_ридов = 1000 # Требуемое количество
while ридов_прочитано < цель_ридов:
print(f"Прочитано {ридов_прочитано} ридов. Ещё собираем...")
ридов_прочитано += 100 # Имитация чтения 100 ридов за шаг
Здесь
while
проверяет условие ридов прочитано < цель_ридов
. Пока оно истинно, выполняется print(count)
и увеличивается значение переменной ридов прочитано
. Когда ридов прочитано
достигнет 1000
или больше — цикл завершится.while условие:
Тело цикла
While
— это цикл с предусловием: сначала проверяется условие, и только если оно истинно — выполняется тело цикла.if
и логические операцииЦикл
while
напоминает условный оператор if
, но с повторением:if
выполняет код один раз, если условие истинно.while
выполняет код многократно, пока условие остаётся истинным.Оба могут использовать логические операторы
and, or, not
:белок_свернут = 0 # Уровень правильной свёртки белка (0-10)
токсичность = True # Моделируем, что белок токсичен на старте
while белок_свернут < 8 and токсичность:
print(f"Свёртка: {белок_свернут}. Белок пока токсичен.")
белок_свернут += 1 # Улучшаем свёртку
if белок_свернут >= 5:
токсичность = False # Допустим, после 5 уровня свёртки токсичность исчезает
Этот цикл будет продолжаться, пока уровень свёртки меньше 8 и белок остаётся токсичным. Когда
белок_свернут
станет 5, токсичность переключится в False
и цикл завершится, даже если свёртка не достигла 8.Цикл
while
может стать бесконечным, если условие всегда истинно:while True:
print("Ищем идеальную последовательность...")
# Здесь могла бы быть сложная функция анализа
Чтобы остановить такой цикл, используют
break
:консенсус_найден = False # Флаг нахождения консенсуса
while True:
показатель_качества = float(input("Введите показатель качества сборки (0.0-1.0): "))
if показатель_качества > 0.95:
print("Отлично! Сборка соответствует стандарту:", показатель_качества)
break # Выходим из цикла, т.к. цель достигнута
else:
print("Качество сборки недостаточно. Попробуйте ещё раз.")
Этот код будет спрашивать показатель качества, пока пользователь не введёт корректное значение выше
0.95
.break
осознанно, бесконечные циклы могут «повесить» программу.Цикл
while
— универсальный инструмент, которым пользуется почти каждый биоинформатик, особенно при парсинге данных, автоматизации рутинных задач и построении пайплайнов. Он позволяет создавать гибкие конструкции и управлять выполнением кода с максимальной точностью.continue
и else
, созданию симуляций и генераторов.While
обязательно пригодится в ваших проектах — от простых до исследовательских. Главное — начать, практиковать и не бояться экспериментов.#openbio_python #openbio_ml #openbio_education
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Всегда ли шум имеет гауссовское распределение?
Центральная предельная теорема говорит, что если вы суммируете много одинаково распределенных (причем по любому закону) величин, то получаете нормальное распределение. Например, в физической реальности на объект действует много случайных сил (скажем, от броуновского движения молекул и частиц). Их равнодействующая — это как раз такая сумма, поэтому распределена нормально.
Но это не всегда так. В биомедицине встречаются распределения с тяжелыми хвостами, например, распределения Леви или Парето, характерные для редких событий (экстремальных значений).
Почему важно правильно учитывать экстремальные значения?
Часто это ключевые сигналы в медицине: высокий уровень онкомаркеров → опухоль, повышенный тропонин → инфаркт, аномальные электрокардиограммы → тяжелые нарушения ритма.
Если предположить нормальность ошибок, такие показатели могут восприниматься как выбросы или ошибки измерений, а важные случаи — пропущены.
В биологических системах шум поступает из разных источников: молекулярные флуктуации, технические ошибки измерений, внешние воздействия окружающей среды и многое другое. Каждый источник имеет свою природу и характер распределения ошибок. Например, молекулярный шум часто моделируют как дискретный процесс с определенной вероятностью возникновения события (например, биномиальное или Пуассона), а технический шум — как гауссовский из-за случайных флуктуаций в электронике.
Что делать на практике?
🔷 Постройте гистограмму ошибок или остатков. Посмотрите на форму: симметрична? Есть ли тяжелые хвосты? Выбросы?
🔷 Проверьте через статистические тесты на нормальность - Шапиро-Уилка, Колмогорова-Смирнова, Андерсона-Дарлинга
🔷 Проверьте наличие тяжелых хвостов — экстремальных значений, которые реже встречаются, чем по нормальному закону. Для этого помогут графики квантиль-квантиль (Q-Q plot).
🔷 При подозрении на тяжелые хвосты — попробуйте модели с распределениями Леви, Парето, Стьюдента; для выбора оптимальной модели рассмотрите критерии выбора (AIC/BIC).
Предположение о нормальности — лишь приближение, а не догма. Ключ к точной интерпретации данных — понимание природы шума.
Сталкивались ли вы с "тяжелыми хвостами" в ваших биологических данных? Как решали эту проблему? Делитесь своим опытом в комментариях!
В следующий раз поговорим о том, как сделать надежные выводы и избежать переобучения, если данных мало.
#openbio_education
📌 Машинное обучение в биологии и биомедицине | OpenBio.Edu — подписывайтесь!
Центральная предельная теорема говорит, что если вы суммируете много одинаково распределенных (причем по любому закону) величин, то получаете нормальное распределение. Например, в физической реальности на объект действует много случайных сил (скажем, от броуновского движения молекул и частиц). Их равнодействующая — это как раз такая сумма, поэтому распределена нормально.
Но это не всегда так. В биомедицине встречаются распределения с тяжелыми хвостами, например, распределения Леви или Парето, характерные для редких событий (экстремальных значений).
Почему важно правильно учитывать экстремальные значения?
Часто это ключевые сигналы в медицине: высокий уровень онкомаркеров → опухоль, повышенный тропонин → инфаркт, аномальные электрокардиограммы → тяжелые нарушения ритма.
Если предположить нормальность ошибок, такие показатели могут восприниматься как выбросы или ошибки измерений, а важные случаи — пропущены.
В биологических системах шум поступает из разных источников: молекулярные флуктуации, технические ошибки измерений, внешние воздействия окружающей среды и многое другое. Каждый источник имеет свою природу и характер распределения ошибок. Например, молекулярный шум часто моделируют как дискретный процесс с определенной вероятностью возникновения события (например, биномиальное или Пуассона), а технический шум — как гауссовский из-за случайных флуктуаций в электронике.
Что делать на практике?
Предположение о нормальности — лишь приближение, а не догма. Ключ к точной интерпретации данных — понимание природы шума.
Сталкивались ли вы с "тяжелыми хвостами" в ваших биологических данных? Как решали эту проблему? Делитесь своим опытом в комментариях!
В следующий раз поговорим о том, как сделать надежные выводы и избежать переобучения, если данных мало.
#openbio_education
Please open Telegram to view this post
VIEW IN TELEGRAM
Новосибирск. Атомное и молекулярное моделирование: современные подходы и алгоритмы, Молекулярно-динамическое моделирование и его приложения, Технологии суперкомпьютерного и атомистического ML
Петрозаводск. Теоретическая часть обучения пройдет в формате лекций и семинаров? А для решения кейсов – реальных задач от партнеров – будет сформировано несколько продуктовых команд под руководством опытных наставников
Дедлайн 27 июня.
Университет ИТМО, Санкт-Петербург приглашает на воркшоп, который заканчивается решением реального кейса в формате хакатона.
Сколково, Институт науки и технологий. В программе секции по компьютерным наукам в биологии и смежным дисциплинам. Дедлайн подачи тезисов уже прошел, но можно посетить конференцию в качестве слушателя.
В Екатеринбурге, на базе Института экологии растений и животных Уральского отделения РАН пройдет конференция? в которой затронут темы эволюционные процессы с точки зрения современной генетики. Эволюционная и историческая экология; Перспективы применения новых методов генетики, геномики и селекции в решении проблем продовольственной безопасности;
Дедлайн 1 июля.
Конференция пройдет в 2 этапа: первый в сентябре, в Севастополе на базе Института перспективных исследований Севастопольского государственного университета; второй - в Москве на базе Физического факультета Московского государственного университета им. М.В. Ломоносова, в программе: Общая биофизика, Молекулярная биофизика и биоинформатика, Медицинская биофизика и биофизическая химия, Биофизическая экология.
Дедлайн 20 июля
Место проведения Наукоград Кольцово. OpenBio — крупнейший форум молодых ученых по биотеху и смежным отраслям. В программе: секции по генетике, биоинформатике, вирусологии, фундаментальной медицине и фарме.
Дедлайн 1 августа.
Онлайн-симпозиум для специалистов по компьютерному поиску и разработке лекарств, анализу биологических путей, моделированию молекул, ML и AI для фармацевтики и медицины.
Дедлайн подачи тезисов — до 31 августа, зарегистрироваться в качестве слушателя или представителя онлайн- постера можно до 25 сентября
Сколково, Институт науки и технологий.
В программе: доклады из области генетики, молекулярной биологии, метагеномики и биохимии микроорганизмов, включая трансляционную микробиологию и геномное редактирование.
Дедлайн подачи тезисов до 30 июня
Дедлайн регистрации на конференцию до 15 сентября
Институт биологии развития им. Н.К. Кольцова РАН, г. Москва проводит конференцию по сравнительной физиологии сигнальных систем, эволюции механизмов сигнализации, генетическим и эпигенетическим механизмам физиологических процессов и поведения, молекулярно-клеточным механизмам функционирования сенсорных и двигательных систем.
Дедлайн подачи тезисов 31 августа
Поделись с друзьями и посещайте мероприятия вместе!
#openbio_events #биотех #openbio_education #конференции
Please open Telegram to view this post
VIEW IN TELEGRAM
Машинное обучение в биологии и биомедицине | OpenBio.Edu
Мы решили, что эфир будет проходить прямо здесь в телеграм -канале.
Вопросы можно задавать в комментариях под этим постом.
📌 Зарегистрируйтесь, если планируете смотреть встречу в записи.
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM