intheyear9595 (intheyear9595) wrote,
intheyear9595
intheyear9595

Category:

Язык Python и биоинформатика

Я решил изучать питон на практических задачах с переходом от простых, к алгоритмически более сложным. В этом мне помогает проект "Rosalind" - игровая среда для обучения биоинформатике на практических примерах (сходная с известным проектом "Euler"). Платформа разработана питерцами, сам проект и задания на английском. Задачи, которые приходится решать в "игровом" проекте максимально приближены к тем задачам, которые действительно составляют биоинформатику - это в основном обработка ДНК и РНК последовательностей, анализ, поиск и исправление ошибок секвенирования, классификация и т.п. Полный список доступных задач есть здесь. Рекомендую нажимать малозаметную серую надпись "click to expand" - там дана теория к задаче (и обстоятельно и популярно), сама же задача дается в формализованном виде, приближенном к обычному заданию по программированию.



Пользуясь случаем, рекомендую книгу "Эгоистичный ген" Ричарда Докинза. Говорят, это не самая интересная его книга, но это первая из его книг, за которую я ухватился, и не жалею об этом, посвящена она генетике, эволюции, дарвинизму (Докинз - последовательный неодарвинист), кин отбору, и в первую очередь эволюционному геноцентризму (естественный отбор на уровне генов, а не на уровне индивида или групп). После чтения первых 5-ти глав становится понятна и очевидна вся теория в тестовых заданиях "Розалинды", хотя первому изданию книги уже более 30 лет, и общая теория генетики в этой книге дана лишь в контексте теории "эгоистичного гена". Забавно, что теперь эта теория считается ортодоксальной, даже консервативной (тогда считалась - экстремальной).

Задачи в проекте "Rosalind" решаются легко. Я выбрал для себя нескоростной стиль решения, нацеливаясь на читаемость и поддерживаемость кода (т.к. я только обучаюсь языку и хочу сразу приобрести хорошие привычки). При желании можно увидеть на том же сайте примеры кода, написанные, на пример, на Ruby и представляющие из себя написанную в скоростном стиле мешанину лямбда-функций, решающие те же задачи, но за меньшее время, чем при вдумчивом кодинге на Python.

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

Задачи в "Rosalind" зависимы, решив одну задачу можно решить 2-3 связанные (неполное дерево по ссылке), чтобы добраться до некоторых задач приходится решать все те, которые содержат в себе приобретение нужных навыков и элементы теории по генетике.

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

решить:  7, 14, 11 (доступны мне сейчас)
затем:    15, 24
затем:    22, 26
затем:    27
наконец: 28 (искомое)

Порядок решения:  7, 14, 11, 15, 24, 22, 26, 27, 28.

Итого, чтобы решить приглянувшуюся задачу 28 мне нужно решить сначала 8-ть зависимых, тоже не самых простых. Неудивительно, что решивших 0, путь в общем графе один из самых длинных и зависимых. Возможно, дальше займусь прохождением этой ветки, но пока я рад тому, с какой скоростью мне удалось перейти от полного нубства к использованию классов и исключений на этом удобном, мощном и простом языке. Практические задачи по интересной теме - хорошее подспорье, и для меня лично проект Rosalind в плане интересности выгодно отличается от проекта Euler, который больше ориентирован на абстрактную Computer Science. Euler тоже нужно будет обязательно попробовать, но можно это сделать и после.

Tags: python, биология, наука, программирование, эволюция
Subscribe

Recent Posts from This Journal

  • Cubase - MixDown метронома (создаем клик)

    Решил оформить более связно свое видение решения проблемы, сформулированной в этой ветке. Пока найдено решение лишь чуть изящнее аудиокабеля и…

  • Cubase Live

    На самом деле пост нужно было бы озаглавить "как Steinberg попытался добавить в свой DAW немного Ableton Live, но не особенно-то и…

  • Cubase - внешние эффекты отдельным треком

    Или лучше сказать - фриз внешних эффектов в отдельный трек для создания мультитрека с одним внешним эффект-процессором на все треки, но с разными…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments