Kodomo

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

Учебная страница курса биоинформатики,
год поступления 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 лежит структура белка бета-порфираназы.

Ваша задача — написать программу, принимающую из командной строки:

и сохраняющую структуру в выходной файл.

Если структуры с поданным кодом не существует (urlopen выдал ошибку), то вывести в консоль "Code does not exist".

4. Конвейер из средних . Мнемоника: multi-average. Баллы: 2.

Программа принимает на вход список файлов (не менее одного), каждый из которых имеет формат, описанный в задании предыдущего практикума average.

Часть файлов может содержать не только числа, часть файлов может не существовать.

Программа должна:

Для каждого файла на новой строке, в том порядке, в котором они были поданы скрипту в командной строке, вывести в терминал:

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".

Указания.

  1. Информация об атомах лигандов в PDB-файле содержится в строках, начинающихся с HETATM. Каждой молекуле лиганда сопоставлен идентификатор цепи, к которой он приписан, и номер в этой цепи. Необходимо самостоятельно определить, где расположена информация о названии лиганда, цепи и номере молекулы. Информацию о формате строки HETATM можно прочесть здесь. Примеры записей PDB с несколькими лигандами: 2DN1 (лиганд HEM), 5M2T (лиганды URI, EDO, CL, MG, NA), 5NH5 (лиганды SO4, GOL, FE2, CA, MG).

  2. Каждая координата геометрического центра набора точек получается как среднее арифметическое соответствующих координат всех точек набора.