[Занимательные задачки, Python, Алгоритмы, Математика] В аквариуме: вычислительная генетика на Python и Mathcad (часть 1)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Пусть в аквариуме живут рыбки двух цветов. Начнем с визуализации. Зададим число рыбок n=100 и договоримся что каждая из них имеет случайный цвет color №0 или №1, а также находится в случайной точке (x,y). Т.е. x, y, и color — это три вектора длины n, а третью (z-) координату мы не рассматриваем.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
n = 100
x, y = np.random.rand(n), np.random.rand(n)
color = np.random.randint(0, 2, n)
plt.scatter(x, y, c=color)
Модель аквариумаТе же три вектора в Mathcad Express можно сгенерировать так:
Генерация псевдослучайных векторов в Mathcad ExpressДля векторов x,y используем генератор случайных чисел с равномерным распределением на отрезке (0, 1), а для вектора color — биномиального распределения, моделирующего, в том числе, однократное подбрасывание монеты. В данном конкретном розыгрыше в Mathcad получилось 47 рыбок №1 и 100-47=53 рыбок нулевого цвета. Теперь перейдем к главному вопросу: почему разные рыбки обладают цветом номер 0 или 1? Все дело здесь в генетической информации, заключенной в биологическом материале, из которого состоит тело рыбки. Грубо говоря, живые существа, даже одного вида, различаются по химическому составу, причем в "длинных" молекулах биологических полимеров, из которых состоит все живое, зашифрована определенная информация, единицу которой обычно называют геном. Совокупность генов каждого живого существа, называемая генотипом, определяет его внешний вид. В частности, генотип каждой рыбки определяет ее цвет. В простейшем случае, модель которого мы и будем дальше программировать, цвет рыбки (0 или 1) определяет один конкретный ген ("ген цвета"). Аналогичная ситуация (один ген определяет цвет) имела место в классических опытах Грегора Менделя, основоположника современной генетики, с растениями гороха, а в других случаях (например, для окраса собак-такс) на цвет отдельной особи влияет сочетание нескольких генов.Как именно гены кодируют цвет? Прежде всего, ген цвета рыбки может существовать в двух вариантах, которые называются аллелями(я буду избегать этого и некоторых других важных для биолога терминов, чтобы сосредоточиться на информатике). В генетике их принято обозначать прописной и строчной буквами (например, А и а). Я буду чаще пользоваться цифрой А=0, а=1.Каждое растение гороха в опытах Менделя и каждая рыбка из нашего аквариума несет в себе информацию о двух аллелях, т.е. описывается одной из трех возможных комбинаций:
- АА или 00
- Аа (то же самое, что аА) или 01
- аа или 11
Если рыбка несет ген цвета АА или Аа, то она серая, а если аа — желтая. Т.е. тип гена А полностью блокирует тип а, поэтому вариант А (0) называют доминатным, а а (1) — рецессивным.Давайте реализуем расчет цвета рыбки по ее генетическому коду, который для i-й рыбки будем описывать вектором из двух компонентов, а генетический состав всей популяции — соответственно, матрицей, которую назовем Аа. Пусть у нас есть три рыбки, каждая из которых с равной вероятностью несет генетический код 00, 10, 01 или 11. В первых трех случаях цвет рыбки будет серым, а в четвертом — желтым.
n = 3
Aa = np.zeros((n,2))
color = np.zeros(n)
for i in range(n):
Aa[i,0] = np.random.randint(0, 2, 1)
Aa[i,1] = np.random.randint(0, 2, 1)
color[i] = Aa[i,0] * Aa[i,1]
print (Aa)
print (color)
Результат работы программы вы видите на картинке:
Моделирование цвета рыбок через ее генотип Очевидно, при такой модели, если рыбок будет много, то цветных будет около 25%. Аналогичные вычисления в Mathcad для популяции из n=1000 рыбок приведены на следующем рисунке.
Моделирование цвета рыбок через ее генотип (Mathcad)Все эти расчеты я виду в режиме стримов на своем YouTube канале , т.е. фактически, данная статья — это краткий дайджест первых двух роликов по вычислительной генетике. А в следующих сериях я планирую организовать пересчет генотипа рыбок от поколения к поколению, причем, видимо, мне придется перейти к ООП и описывать рыбок при помощи классов в Python, а Mathcad использовать, как средство вспомогательных расчетов. В качестве опорного материала я использую Википедию и вот этот курс на Степике.
===========
Источник:
habr.com
===========
Похожие новости:
- [Разработка веб-сайтов, Python, JavaScript, Программирование] Как создавать предметы генеративного искусства с помощью L-систем на языке Python (перевод)
- [Высокая производительность, Java, Анализ и проектирование систем, Алгоритмы] Развеиваем мифы об управлении памятью в JVM (перевод)
- [Алгоритмы, Научно-популярное, Биотехнологии] «Швейцарский нож» науки: как методы Computer Science используются в других дисциплинах
- [Python, Алгоритмы, Big Data, Машинное обучение, Искусственный интеллект] DataScience Digest — 28.05.21
- [Open source, Python, Визуализация данных] Clustergram: визуализация кластерного анализа на Python (перевод)
- [Python, MongoDB, API, Apache] Продолжаем знакомство с APIM Gravitee
- [Разработка веб-сайтов, Программирование, Алгоритмы, Микросервисы] Микросервисы — не способ масштабироваться
- [Децентрализованные сети, Информационная безопасность, Криптография, Математика, Распределённые системы] Честное онлайн-голосование: миф или реальность?
- [Python, Алгоритмы, Big Data, Финансы в IT] Инструменты для алготрейдинга на Python. Расчет дневного изменения цены
- [Занимательные задачки, Математика, Научно-популярное, Научная фантастика] Стивен Вольфрам: Будут ли у инопланетян такие же «числа»? (перевод)
Теги для поиска: #_zanimatelnye_zadachki (Занимательные задачки), #_python, #_algoritmy (Алгоритмы), #_matematika (Математика), #_genetika (генетика), #_mathcad_express, #_mathcad, #_python, #_zanimatelnye_zadachki (
Занимательные задачки
), #_python, #_algoritmy (
Алгоритмы
), #_matematika (
Математика
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:14
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Пусть в аквариуме живут рыбки двух цветов. Начнем с визуализации. Зададим число рыбок n=100 и договоримся что каждая из них имеет случайный цвет color №0 или №1, а также находится в случайной точке (x,y). Т.е. x, y, и color — это три вектора длины n, а третью (z-) координату мы не рассматриваем. %matplotlib inline
import numpy as np import matplotlib.pyplot as plt n = 100 x, y = np.random.rand(n), np.random.rand(n) color = np.random.randint(0, 2, n) plt.scatter(x, y, c=color) Модель аквариумаТе же три вектора в Mathcad Express можно сгенерировать так: Генерация псевдослучайных векторов в Mathcad ExpressДля векторов x,y используем генератор случайных чисел с равномерным распределением на отрезке (0, 1), а для вектора color — биномиального распределения, моделирующего, в том числе, однократное подбрасывание монеты. В данном конкретном розыгрыше в Mathcad получилось 47 рыбок №1 и 100-47=53 рыбок нулевого цвета. Теперь перейдем к главному вопросу: почему разные рыбки обладают цветом номер 0 или 1? Все дело здесь в генетической информации, заключенной в биологическом материале, из которого состоит тело рыбки. Грубо говоря, живые существа, даже одного вида, различаются по химическому составу, причем в "длинных" молекулах биологических полимеров, из которых состоит все живое, зашифрована определенная информация, единицу которой обычно называют геном. Совокупность генов каждого живого существа, называемая генотипом, определяет его внешний вид. В частности, генотип каждой рыбки определяет ее цвет. В простейшем случае, модель которого мы и будем дальше программировать, цвет рыбки (0 или 1) определяет один конкретный ген ("ген цвета"). Аналогичная ситуация (один ген определяет цвет) имела место в классических опытах Грегора Менделя, основоположника современной генетики, с растениями гороха, а в других случаях (например, для окраса собак-такс) на цвет отдельной особи влияет сочетание нескольких генов.Как именно гены кодируют цвет? Прежде всего, ген цвета рыбки может существовать в двух вариантах, которые называются аллелями(я буду избегать этого и некоторых других важных для биолога терминов, чтобы сосредоточиться на информатике). В генетике их принято обозначать прописной и строчной буквами (например, А и а). Я буду чаще пользоваться цифрой А=0, а=1.Каждое растение гороха в опытах Менделя и каждая рыбка из нашего аквариума несет в себе информацию о двух аллелях, т.е. описывается одной из трех возможных комбинаций:
n = 3
Aa = np.zeros((n,2)) color = np.zeros(n) for i in range(n): Aa[i,0] = np.random.randint(0, 2, 1) Aa[i,1] = np.random.randint(0, 2, 1) color[i] = Aa[i,0] * Aa[i,1] print (Aa) print (color) Моделирование цвета рыбок через ее генотип Очевидно, при такой модели, если рыбок будет много, то цветных будет около 25%. Аналогичные вычисления в Mathcad для популяции из n=1000 рыбок приведены на следующем рисунке. Моделирование цвета рыбок через ее генотип (Mathcad)Все эти расчеты я виду в режиме стримов на своем YouTube канале , т.е. фактически, данная статья — это краткий дайджест первых двух роликов по вычислительной генетике. А в следующих сериях я планирую организовать пересчет генотипа рыбок от поколения к поколению, причем, видимо, мне придется перейти к ООП и описывать рыбок при помощи классов в Python, а Mathcad использовать, как средство вспомогательных расчетов. В качестве опорного материала я использую Википедию и вот этот курс на Степике. =========== Источник: habr.com =========== Похожие новости:
Занимательные задачки ), #_python, #_algoritmy ( Алгоритмы ), #_matematika ( Математика ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:14
Часовой пояс: UTC + 5