Учебная страница курса биоинформатики,
год поступления 2017
Практикум 10. Функции и модули. Исключения. Работа с сетью
Зачётный минимум — шесть баллов. Файлы называйте pr10_mnemonics.py и кладите в директорию credits. Срок: 24 ноября.
См. советы и подсказки.
1. Факториал. Мнемоника: factorial. Баллы: 1.
Напишите рекурсивную версию функции, вычисляющей факториал. Учтите, что факториал от числа меньшего либо равного 0 равен 1.
Программа принимает n из командной строки и выводит n! на новой строке.
2. Вещественное число? Мнемоника: is-float. Баллы: 1.
Напишите программу, принимающую строку из командной строки и возвращающую 'Is float', если она может быть стандартным образом интерпретирована как вещественное число и "Is not float", если не может (целые числа тоже относятся к вещественным).
3. Скачай pdb. Мнемоника: fetch-pdb. Баллы: 2.
PDB — это аббревиатура названия "Protein Data Bank", общедоступного банка пространственных структур биологических макромолекул, прежде всего белков.
Каждая запись банка PDB имеет свой идентификатор (PDB-код), например: 1CRM, 1XYZ, 1BL0, 9MHT. Как видно из приведённых примеров, PDB-код состоит из четырёх символов, первый из которых — ненулевая цифра, а остальные три — либо цифра, либо заглавная латинская буква. (Больше кодов можно увидеть, зайдя на сайт http://www.rcsb.org/pdb/ и введя в окошко поиска какое-нибудь название белка, например, "albumin").
По адресу https://files.rcsb.org/download/<код>.pdb лежит структура с соответствующим кодом.
К примеру, по адресу https://files.rcsb.org/download/4ATE.pdb лежит структура белка бета-порфираназы.
Ваша задача — написать программу, принимающую из командной строки:
- 1-й аргумент: PDB-код;
- 2-й аргумент: имя выходного файла, куда надо сохранить полученную структуру.
и сохраняющую структуру в выходной файл.
Если структуры с поданным кодом не существует (urlopen выдал ошибку), то вывести в консоль "Code does not exist".
4. Конвейер из средних . Мнемоника: multi-average. Баллы: 2.
Программа принимает на вход список файлов (не менее одного), каждый из которых имеет формат, описанный в задании предыдущего практикума average.
Часть файлов может содержать не только числа, часть файлов может не существовать.
Программа должна:
Для каждого файла на новой строке, в том порядке, в котором они были поданы скрипту в командной строке, вывести в терминал:
- среднее, если файл содержит только числа;
"File <имя> has wrong format", если файл содержит не только числа;
"Error reading file <имя>", если произошла ошибка чтения файла (к примеру, его не существует).
5. Разбор строки атома в формате pdb. Мнемоника: parse-pdb. Баллы: 3.
Напишите программу, которая принимает в качестве первого аргумента командной строки идентификатор записи банка PDB (PDB-код) и создаёт файл (имя передается вторым аргументом), содержащий таблицу с информацией только о так называемых "Cα-атомах". В PDB-файле эти атомы описаны в строках, начинающихся со слова ATOM и имеющих в позициях 13–16 подстроку " CA " (в начале и в конце — по пробелу).
Если структуры с поданным кодом не существует (urlopen выдал ошибку), то вывести в консоль "Code does not exist".
Выходной файл должен представлять собой таблицу, чьи колонки имеют следующие заголовки:
Residue Chain Number X Y Z
то есть первая строка выходного файла должна быть такой, как здесь указано (свободные места между заголовками колонок — табуляторы \t), а все остальные строки должны содержать: сначала имя остатка, затем идентификатор цепи белка, номер остатка, затем три числа — координаты центра Cα-атома, с тремя знаками после десятичной точки. Все шесть полей строки должны быть разделены табуляторами.
Необходимая информация: в строке PDB-файла, начинающейся с "ATOM", имя остатка занимает позиции 18–20, номер остатка — позиции 23–26, идентификатор цепи — позицию 22, координаты X, Y, Z — позиции, соответственно, 31–38, 39–46 и 47–54. Не забывайте о разнице между позицией символа в строке и индексом того же символа!
6. Центр лиганда . Мнемоника: get-center. Баллы: 3 (плюс три балла в рейтинг, если правильно работающая программа будет выложена в папку credits к 17 ноября).
Напишите программу, которая принимает на вход PDB-код и название лиганда в структуре и выводит на консоль идентификаторы (цепь и номер в цепи) всех молекул лиганда с данным названием, а также геометрические центры каждой из этих молекул. Если структуры с поданным кодом не существует (urlopen выдал ошибку), то вывести в консоль "Code does not exist".
Указания.
Информация об атомах лигандов в PDB-файле содержится в строках, начинающихся с HETATM. Каждой молекуле лиганда сопоставлен идентификатор цепи, к которой он приписан, и номер в этой цепи. Необходимо самостоятельно определить, где расположена информация о названии лиганда, цепи и номере молекулы. Информацию о формате строки HETATM можно прочесть здесь. Примеры записей PDB с несколькими лигандами: 2DN1 (лиганд HEM), 5M2T (лиганды URI, EDO, CL, MG, NA), 5NH5 (лиганды SO4, GOL, FE2, CA, MG).
- Каждая координата геометрического центра набора точек получается как среднее арифметическое соответствующих координат всех точек набора.