Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2013

Практикум 7. Задания

Результатом этого задания является два скрипта на языке Python, в которых реализован перечисленный в заданиях 1 и 2 функционал, и файл с последовательностями <Familiya>_pr7_proteins.fasta, где <Familiya>, как обычно, Ваша фамилия. Скрипты и fasta-файл должны быть положены в папку зачетных заданий до 23:59 дня накануне следующего занятия.

Внимание! Как и раньше, имя скрипта должны быть в том же формате, что и названия протоколов. Поскольку от Вас требуется два файла, в конце имени (до расширения!) после знака подчеркивания проставляйте номер (scrNN, где scr - сокращение от английского слова script, а NN - двухзначный порядковый номер скрипта). Например, Dibrova_pr7_scr01.py и Dibrova_pr7_scr02.py.

Не забывайте смотреть подсказки по python, в которые добавлены пояснения по тем разделам, которые введены на этом занятии. В презентации тоже есть много примеров. И не стесняйтесь спрашивать преподавателей, если что-то не получается!

Акция "Ошибайтесь и получайте бонусные баллы!" продолжается! Как? Посмотрите необязательное задание №4 уже сейчас! :) Также бонусные баллы начисляются за правильное название функций и переменных; за комментарии в теле скрипта и за комментирование функций.

Обязательные задания

Задание 1. Создайте скрипт, задающий класс, который описывает какой-нибудь объект в мире

Этот скрипт должен называться <Familiya>_pr7_scr01.py, где <Familiya> – Ваша фамилия в том же написании, что и раньше.

Цель: выберите любой предмет реального (или фантастического) мира и создайте класс, который будет описывать такие предметы (частично описывать, конечно) в скрипте. Требования:

После задания класса убедитесь, что он работает. Для этого:

  1. Создайте четыре экземпляра класса с разными атрибутами;
  2. Поместите эти экземпляры в список;
  3. Пройдите по списку и заставьте каждый экземпляр вызывать свои методы; проверьте, что получается.

Задание 2. Напишите скрипт, читающий файл в формате fasta с несколькими последовательностями и печатающий эти последовательности на экран

Этот скрипт должен называться <Familiya>_pr7_scr02.py, где <Familiya> – Ваша фамилия в том же написании, что и раньше.

Цель: создайте скрипт, умеющий читать fasta-файл и сохранять в память информацию о последовательностях нескольких белков, содержащихся в прочитанном файле.

2.1. Подготовка fasta-файла с несколькими последовательностями

Примечание: если в одном файле сохранены несколько последовательностей, каждая из которых имеет формат fasta, и не содержится никакой другой информации (кроме пустых строк) – то такой файл тоже считается файлом в формате fasta. Например:

>protein1 My good protein
MTSKLLVSTFGGTRYH
THGYF

>protein2 The best protein! [user1]
MHGTSDERFRYH
GTRY
FGTRG

>protein3 The very best protein!! [user2]
MAAAAFRTYING

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

  1. Создайте новый файл, назовите его <Familiya>_pr7_proteins.fasta, где <Familiya> - Ваша фамилия.

  2. Скопируйте в него последовательность Вашего белка в fasta-формате (то есть вместе со строкой ">name Description").

  3. Войдите на сервер kodomo через NetBox, так же, как входили на сервера NCBI (или как входите обычно из дома), указав:

    • File protocol: SCP,

    • Host name: kodomo.fbb.msu.ru,

    • Login type: Normal,

    • логин и пароль – Ваши обычные.

  4. Перейдите в родительскую директорию по отношению к Вашей домашней. Там Вы увидите список ников студентов.
  5. Зайдите в директории term1/block1/credits/ тех студентов, которые даны Вам в таблице, и cкопируйте последовательности их белков в fasta-формате в файл, созданный в пункте 1. Добавьте в конец описания каждой скопированной последовательности через пробел в квадратных скобках ник того студента, у которого она взята.

  6. Если нужного файла у кого-то из Ваших коллег нет, то выберите себе любого другого студента.

2.2. Написание скрипта

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

  1. Задавать новый класс Protein, описывающий один белок. В справочной информации по классам рассказывается с примерами о том, как задать класс, его атрибуты и методы. Этот класс должен содержать:

    • атрибуты, хранящие идентификатор (id_RefSeq), описание (description) и последовательность (sequence) белка;

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

    • метод, позволяющий напечатать на экран информацию о данном белке в формате fasta с заданным числом букв в строке последовательности.
  2. Открывать Ваш файл <Familiya>_pr7_proteins.fasta, где <Familiya> - Ваша фамилия (конкретное имя задайте в одной из переменных в теле скрипта), и обрабатывать его построчно. Про то, как это сделать, читайте в этом разделе справки по Python.

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

  4. Проходить по списку белков и вызывать их методы, печатающие информацию в fasta-формате на экран с любой выбранной Вами длиной строки последовательности.

Необязательные задания (на дополнительные баллы)

Задание 3*. Получение параметров скрипта из командной строки

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

Задание 4*. Коллекционер и победитель ошибок (продолжение)

Соберите коллекцию ошибок Вашего скрипта, с которыми Вы столкнулись в процессе работы. Предоставьте в папке credits второго блока протокол с обычным именем (например, Dibrova_pr7.doc), в котором будет приведена следующая информация об ошибках. Протокол оформите в удобном для Вас формате, но чтобы было понятно, что происходит. Про каждый случай укажите:

  1. Ошибка, выданная Python (чтобы получить текст ошибки в текстовый файл, а не просто на экран, воспользуйтесь подсказками к занятию 5).

  2. Место в скрипте, вызвавшее ошибку (та строчка или строчки, из-за которых все пошло наперекосяк).
  3. Объяснение, что именно неверно.
  4. Исправленная, работающая версия.

P.S. Ошибки в протоколах за практикумы 5, 6 и 7 не должны повторяться. Задание называется "Коллекционер и победитель ошибок", а не "Любитель гулять по граблям" :)