Создание приложения для решения практических задач по биологии средствами языка программирования Python

XX Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Создание приложения для решения практических задач по биологии средствами языка программирования Python

Минязев А.Э. 1
1МАОУ СОШ № 34
Минязева С.А. 1
1МАОУ СОШ № 34
Автор работы награжден дипломом победителя I степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Одной из задач курса информатики и ИКТ в школе является освоение приемов построения простых вычислительных алгоритмов и их реализация на языке программирования, познакомиться с азами работы систем программирования.

Методы и инструменты компьютерных наук играют решающую роль в развитии практически всех современных областей науки, в том числе и молекулярной, клеточной, структурной биологии и физико-химической биологии. Сегодня программирование позволяет понять, как устроена биоинженерная машина внутри наших клеток, какие функции выполняет каждый отдельно взятый ген, какие гены ответственны за наши болезни, как вирусы и бактерии влияют на нас на молекулярном уровне, как создать новое лекарство и множество других вопросов. В современной биологии накоплены огромные объемы экспериментальных данных, хранение, обработка и осмысление которых невозможно без моделирования биологических систем и процессов. Поэтому наука биология внедряет компьютерные технологии и использует специальные программы на разных этапах работы.

Языков программирования в современном мире довольно много. Однако, для аналитических и научных задач самым распространенным и востребованным является Python. Поэтому мы решили изучить разнообразие инструментов и возможности использования Python в биологии на примере решения конкретных задач.

Гипотеза: при помощи языка программирования Python можно создать приложение, предназначенное для выполнения практических задач на уроках биологии.

Исходя из гипотезы, мы поставили перед собой цель проектной работы: создать приложение с применением высокоуровневого языка программирования Python, которое может быть использовано на уроках биологии для решения практических задач.

Задачи:

  1. Изучить литературу и интернет - ресурсы по данной теме.

  2. Рассмотреть возможности использования Python в биологии на примере решения конкретных задач.

  3. Разработать пользовательский интерфейс и оболочку в Python.

  4. Наполнить оболочку материалами.

  5. Протестировать приложение и выполнить анализ.

  6. Сформулировать выводы об интеграции биологии и информатики.

Актуальность данной работы заключается в повышении эффективности учебы школьников с помощью информационно - коммуникационных технологий и применения созданного приложения для решения задач по биологии и при подготовке к основному государственному экзамену.

Практическая значимость: автоматизация процесса выполнения расчетных задач, построения графиков и структуры биологических систем, что устраняет неточности, сокращает время выполнения практических заданий.

Объект исследования: расчетные задачи по биологии, структуры биологических объектов и графики, систематизация биологических данных.

Предмет исследования: способы решения различных биологических задач средствами Python.

Новизна: задачи выбирает человек, а программа решает, выполняет всю работу. Это интересно для современных школьников. Кроме того, происходит интеграция двух наук: информатики и биологии, что способствует развитию интереса к данным наукам и развивает кругозор учащихся. За информационными технологиями и биохимией будущее человечества!

  1. Теоретическая часть

1.1. Python - высокоуровневый язык программирования

Язык программирования - формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы.

Python – широко распространенный язык программирования. Он может быть использован как разработчиками, так и не разработчиками. Применяется язык многими крупными компаниями, такими как Google или Facebook (соцсеть признана экстремистской и запрещенной на территории России, заблокирована РКН). Pinterest и Instagram (соцсеть признана экстремистской и запрещенной на территории России, заблокирована РКН) были написаны на Python. В ЦРУ использовали Python для создания своего хакерского инструментария, в Google - для поиска по веб-страницам, в Pixar — для производства фильмов, в Spotify - в рекомендательной системе. А ещё на Python кодят NASA и их подрядчики.

    1. История языка программирования Python

Язык программирования Python был задуман в конце 1980-х годов, а его реализация была начата в декабре 1989 года Гвидо ван Россумом. Ван Россум является основным автором Python. Он был назван в честь телешоу BBC "Летающий цирк Монти Пайтона".

Первый прототип состоял из простой виртуальной машины, парсера (программа для сбора и систематизации информации) и среды выполнения. В нём также присутствовал базовый синтаксис, операторы, словари, списки, строки и небольшое количество других типов данных.

20 февраля 1991 года Гвидо ван Россум создал дистрибутив и опубликовал код языка Python через сеть Usenet. Так появилась версия 0.9.0.

16 октября 2000 года был выпущен Python 2.0 со многими важными новыми функциями, включая сборщик мусора с определением цикла (в дополнение к подсчету ссылок) для управления памятью и поддержки Unicode. Однако наиболее важным изменением был сам процесс разработки, с переходом к более прозрачному и поддерживаемому сообществом процессу.

Python 3.0, основной, несовместимый с предыдущим выпуском, был выпущен 3 декабря 2008 года после длительного периода тестирования. Чтобы облегчить компаниям переход, Python-сообщество 12 лет выпускало обновления для старой версии. Теперь большая часть кода написана на третьей версии.

По состоянию на сентябрь 2022 года Python занимает первое место в рейтинге TIOBE популярности языков программирования с показателем 15,74%. «Языком года» по версии TIOBE Python объявлялся в 2007, 2010, 2018, 2020 и 2021 годах (I).

    1. Причины популярности Python и его недостатки

Python - язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Язык является полностью объектно-ориентированным в том плане, что всё является объектами. Необычной особенностью языка является выделение блоков кода пробельными отступами. Python очень популярен по многим причинам (II). Более глубокий взгляд делает его таким универсальным и простым в использовании для программистов.

Но в тоже время есть недостатки языка программирования Python: низкая производительность, требует высоких вычислительных мощностей серверов и компьютеров (это делает его не таким быстрым, как хотелось бы); динамическая типизация, Python может складывать два целых числа, склеивать строки, списки и так далее, и мы не можем понять, что именно происходит, пока не запустим программу.

    1. Возможности Python

Python обычно используется для разработки веб-сайтов и программного обеспечения, автоматизации задач, анализа данных и визуализации данных.

А). Анализ данных и машинное обучение

Python стал одним из основных элементов науки о данных, позволяя аналитикам данных и другим специалистам использовать этот язык для проведения сложных статистических вычислений, создания визуализации данных, построения алгоритмов машинного обучения, обработки и анализа данных. Python может создавать широкий спектр различных визуализаций данных, таких как линейные и гистограммы, круговые диаграммы, гистограммы и 3D-графики.

Б). Веб-разработка

Python часто используется для разработки внутренней части веб-сайта или приложения - тех частей, которые пользователь не видит. Роль Python в веб-разработке может включать отправку данных на серверы и с серверов, обработку данных и взаимодействие с базами данных, маршрутизацию URL-адресов и обеспечение безопасности. Python предлагает несколько фреймворков для веб-разработки. Наиболее часто используемые из них включают Django и Flask.

В). Автоматизация и написание сценариев

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

Г). Тестирование и прототипирование программного обеспечения

При разработке программного обеспечения Python может помочь в таких задачах, как контроль сборки, отслеживание ошибок и тестирование.

Д). Игровая индустрия

Зря многие люди недооценивают геймдейв, ведь именно благодаря нему появилось так много гаджетов, разработок и значительно улучшилась графика. Конечно, для крупных проектов Python вряд ли подойдет, его инструментарий в данной области несколько ограничен, но собрать небольшие приложения и инди-игрушки можно.

Е). Python предназначен не только для программистов и исследователей данных. Изучение Python может открыть новые возможности для тех, кто работает в менее загруженных данными профессиях, таких как журналисты, владельцы малого бизнеса или маркетологи социальных сетей.

Python позволяет непрограммисту упростить некоторые задачи в своей жизни: следить за ценами на фондовом рынке или криптовалютах, отправлять себе текстовое напоминалки, обновить список покупок, переименовать большие пакеты файлов, преобразовать текстовые файлы в электронные таблицы, распределить обязанности между членами семьи, заполнять онлайн-формы автоматически Data и Machine Learning.

Ж). Поскольку Python является языком общего назначения, он используется в самых разных областях и отраслях промышленности. Вот несколько названий должностей, в которых может использоваться Python: разработчик, специалист по обработке и анализу данных, этический хакер/тестер проникновения, инженер-программист, журналист данных, облачный архитектор, инженер по контролю качества.

II. Практическая часть

2.1. Генетические алгоритмы на Python

Обучаясь в школе, на уроках биологии, я узнал информацию о том, что наследственная информация закодирована в виде кодонов. Каждый кодон состоит из 3 нуклеотидов, а их всего четыре: А (адениловый), Т (тимидиловый), Ц (цитидиловый), Г (гуаниловый). Так в ДНК записана информация о структуре белков в виде последовательности нуклеотидов. Эту информацию переписывает иРНК (транскрипция) и доставляет к рибосоме, где она преобразуется в структуру белка. Переписывание происходит по принципу комплементарности: А - У, Ц – Г, что можно сделать с помощью Python.

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

Пример, фрагмент молекулы ДНК, на котором синтезируется участок иРНК, имеет следующую последовательность нуклеотидов АТА-ГЦТ-ГАА-ЦГГ-АЦТ. Нужно установить нуклеотидную последовательность участка иРНК.

Синтез иРНК с матрицы (ДНК) глазами программиста:

def chet4():

DNA = entry.get()

for x, y in ("а", "У"), ("ц", "Г"), ("т", "А"), ("г", "Ц"):

DNA = DNA.replace(x,y)

2.2. Закона Харди - Вайнберга

Закон Харди - Вайнберга описывает распределение генов в популяции. Ген имеет два варианта проявления признака. Например, это могут быть гены «низкорослости» и «высокорослости». Харди и Вайнберг показали, что при свободном скрещивании, отсутствии миграции и мутаций особей, относительная частота признака у организмов особей с каждым из этих аллелей будет оставаться постоянной из поколения в поколение.

Рассмотрим данный закон на простом примере. Возьмем два аллеля A и a. Тогда у особей могут встречаться четыре комбинации этих аллелей: AA, aa и Aa. Если обозначить через p и q частоту встречаемости индивидуумов с аллелями A и a соответственно, то согласно закону Харди -Вайнберга: p2 + 2pq + q2 = 100%, где p2 — частота встречаемости особей с аллелями AA, 2pq - с аллелями Aa, а q2 - частота встречаемости особей с аллелями aa. Эти частоты, при соблюдении сформулированных выше условий, будут оставаться постоянными из поколения в поколение, независимо от изменения количества особей и от того, насколько велики (или малы) p и q.

Используя данный закон, генетики могут количественно определять изменения в распределении генов в популяции, вызванные, например, мутациями или миграцией.

Пример задачи: известно, что один человек из 10 тыс. является альбиносом, при этом признак альбинизма у человека определяется одним рецессивным геном. Давайте вычислим, какова доля скрытых носителей этого признака в человеческой популяции.

Решение: если один человек из 10 тыс. является альбиносом, то это значит, что частота рецессивных гомозигот составляет 0,0001, т. е. q2 = 0,0001. Определяем частоту аллеля альбинизма q, частоту доминантного аллеля нормальной пигментации р и частоту гетерозиготного генотипа (2pq). Люди с таким генотипом как раз и будут скрытыми носителями альбинизма, фенотипически этот ген не будет проявляться.

Закон Харди - Вайнберга с помощью программирования:

q = sqrt(q2) = sqrt(0,0001) = 0,01 (или 1%)

p = 1 – q = 1 – 0,01 = 0,99 (или 99%)

2pq = 2 * 0,99 * 0,01 = 0,0198 = 0,02 (или 2%)

Благодаря открытию закона Харди - Вайнберга, процесс микроэволюции стал доступен непосредственному изучению: о его ходе можно судить по изменениям из поколения в поколение частот генов. Хотя данный закон действителен для идеальной популяции, которой нет и не может быть в природе, он имеет практическое значение, так как дает возможность рассчитать частоты генов, изменяющиеся под влиянием различных факторов.

2.3. Определение плотности популяции

Популяция (от лат. populatio - население) - совокупность организмов одного вида, длительное время обитающих на одной территории и частично или полностью изолированных от особей других таких же групп. В природе популяция вида играет отведенную ей роль и находится во взаимосвязи с популяциями других видов.  

Для понимания функционирования единой системы важно знать не только особенности видов, но и их популяционные характеристики -  демографические показатели (биомасса, плотность, численность, рождаемость, смертность и т. д.).

Плотность популяции - число особей в расчете на единицу объема или площади поверхности. Это важный экологический показатель пространственного размещения членов популяции, а также динамики численности животных, условий изменчивости и проявления естественного отбора.

Процессы изменений биологических показателей популяции называются динамикой популяций.

Изучение динамики численности играет большую роль в оптимальном использовании природных ресурсов, предсказании вспышек численности вредителей, разработке борьбы с ними. На основе этих исследований решаются вопросы о том, сколько раз в год и в каком количестве можно отстреливать дичь или вести улов рыбы, не нанести вред популяции. Целесообразно ли применение для борьбы с вредителями ядохимикатов и в какой сезон, в каком количестве. Можно составить графическое изображение динамики популяции и предсказать изменение численности на несколько лет вперед, что имеет большое значение для сохранения исчезающих видов.

Пример задачи: на площади 20 км² леса обитало 12 соболей, причём самки составляли 50 %. Ежегодно одна самка в среднем приносит 4-х детёнышей. Средняя смертность соболей (взрослых и детёнышей) на конец года составляет 13 %. Определите плотность популяции на конец года (число особей на 1 км²) с точностью до десятых долей числа (в промежуточных вычислениях округляй до целых). Дайте ответ в экз/км².

Шаги решения:

  1. Определяем величину рождаемости: 6 самок ∙ 4 детёныша = 24 детёнышей.

  2. Определяем общее число соболей на конец года: 24 детёнышей + 12 взрослых = 36 соболей.

  3. Определяем число погибших соболей на конец года, зная, что средняя смертность соболей на конец года составляет 13 %: 36 ∙ 13100 = 5 погибших. Определяем выжившее число особей соболей на этой территории на конец года: 36 – 5 = 31 выживших соболей.

  4. Определяем плотность популяции на конец года: 31 соболей : 20 км² = 1,6 особь/км².

Решение с помощью калькулятора:

def chet6():

lol = int(entrylast2.get()) / 100

lol2 = lol * int(entrylast1.get()) * int(entrylast3.get())

lol3 = lol2 + int(entrylast1.get())

lol4 = lol3 / 100

lol5 = lol4 * int(entrylast4.get())

lol6 = round(lol5)

lol7 = lol3 - lol6

lol8 = lol7 / int(entrylast.get())

lol9 = round(lol8, 1)

Заключение

Python – популярный язык программирования, обычно используется для разработки веб-сайтов и программного обеспечения, автоматизации задач, анализа данных и визуализации данных, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм.

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

Музыка, которую мы слушаем, видео, которые мы смотрим, информация, которую мы потребляем - за всем этим чаще всего стоит искусственный интеллект, который обучают в основном Python программисты.

Python — универсальный язык. Мы показали некоторые возможности применения данного языка программирования на уровне школьного предмета: генетические алгоритмы на Python, использование закона Харди - Вайнберга для решения биологических задач с помощью компьютерного программирования и вычисление плотности популяции.

Математическое и компьютерное моделирование даёт возможность быстро и без ошибок составить генетический код, вычислить частоту встречаемости аллелей и прогнозировать развитие популяции. Даёт возможность человеку вносить коррективы в изменение численности популяций, особенно это, актуально применительно к исчезающим видам.

Выполняя данную исследовательскую работу, мы узнали много нового о языке программирования Python, изучив интернет – ресурсы и литературу по данной теме, а также создали приложение для использования на уроках биологии для решения практических задач. В ходе выполнения данного проекта были подобраны практические задания по биологии, для решения которых использовали программирование на языке Python.

Выводы

Выдвинутая гипотеза подтвердилась, цель была достигнута. Эти знания помогут школьникам быстрее справится с практическими заданиями по биологии и вызовет у них интерес к данным наукам.

Данная проектная работа позволяет показать детям, как можно применять информационные технологии для решения проблем, связанных с живой природой. Это не только полезно для учащихся, но и делает более интересным уроки.

Также автоматизация процесса выполнения расчетных задач, построения графиков и структуры биологических систем устраняет неточности, сокращает время выполнения практических заданий.

Я выступил со своей проектной работой перед одноклассниками с целью ознакомить их с данной информацией и показать возможности интеграции биологии и информатики.

В дальнейшем мне хотелось бы продолжить изучение возможностей данного языка программирования для достижения успеха в данном виде деятельности. Я планирую связать жизнь с программированием и считаю, что Python - отличный выбор для новичка.

Источники информации:

  1. Васильев А. Н. Python на примерах.

  2. Санкт-Петербург: Наука и Техника, 2017.

  3. Эйял Вирсански «Генетические алгоритмы на Python», пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2020 (https://www.rulit.me/data/programs/resources/pdf/Virsanski).

  4. https://python-scripts.com/tkinter - создание графического интерфейса в Python.

Рейтинг TIOBE популярности языков программирования

Python занимает первое место на сентябрь 2022 года

«Языком года» по версии TIOBE Python объявлялся

в 2007, 2010, 2018, 2020 и 2021 годах

Причины популярности Python:

  • Он имеет простой синтаксис, имитирующий естественный язык, поэтому его легче читать и понимать.

  • Python можно использовать для многих различных задач, от веб-разработки до машинного обучения.

  • Он удобен для начинающих, что делает его популярным для программистов начального уровня.

  • Это открытый исходный код, что означает, что он может свободно использоваться и распространяться даже в коммерческих целях.

  • Python можно легко расширить для взаимодействия с другими программными системами или встроить в программы в качестве компонента. Он очень гибкий.

  • Стандартизированность: есть единый стандарт для написания кода.

  • Наличие большого количества пакетов для анализа больших данных, научных расчетов.

  • Помимо лаконичности, качества кода и низкого порога входа, в Python есть библиотеки практически для всего на свете - от разработки игр до астрономии и расчёта генетических алгоритмов (тот же DEAP). Участники комьюнити уже загрузили в сеть более 145 тысяч библиотек.

Задачи на определение плотности популяции

  1. Охотоведы установили, что весной на площади 20 км² леса обитало 12 соболей, причём самки составляли 50 %. Ежегодно одна самка в среднем приносит 4-х детёнышей. Средняя смертность соболей (взрослых и детёнышей) на конец года составляет 13 %. Определи плотность популяции соболей на конец года (число особей на 1 км²) с точностью до десятых долей числа (один знак после запятой, в промежуточных вычислениях округляй до целых).

Ответ: экз/км².

  1. Экологи установили, что весной на площади 20 км² леса обитало 6 куниц, причём самки составляли 50 %. Ежегодно одна самка в среднем приносит 3-х детёнышей. Средняя смертность куниц (взрослых и детёнышей) на конец года составляет 13 %. Определи плотность популяции куниц на конец года (число особей на 1 км²) с точностью до десятых долей числа (один знак после запятой, в промежуточных вычислениях округляй до целых).

Ответ: экз/км².

Задачи на составление генетического кода

  1. Известно, что все виды РНК синтезируются на ДНК-матрице. Фрагмент молекулы ДНК, на котором синтезируется участок иРНК, имеет следующую последовательность нуклеотидов АТА-ГЦТ-ГАА-ЦГГ-АЦТ. Установите нуклеотидную последовательность участка иРНК который синтезируется на данном фрагменте.

  2. Известно, что иРНК синтезируются на ДНК-матрице. Фрагмент молекулы ДНК, на котором синтезируется участок иРНК, имеет следующую последовательность нуклеотидов ТТГ-ГАА-ААА-ЦГГ-АЦТ. Установите нуклеотидную последовательность участка тРНК который синтезируется на данном фрагменте.

Динамика численности популяции

Коды

Просмотров работы: 242