Kodomo

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

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

Практикум 10. Работа с файлами и сетевыми ресурсами

0. Первая строка файла. Не оценивается, но рекомендуется сделать до выполнения задания 1.

По адресу https://files.rcsb.org/download/1CRM.pdb находится запись банка PDB, описывающая пространственную структуру одного из человеческих белков – карбоновой ангидразы I. Напишите программу, печатающую первую строку этой записи.

Эта строка должна выглядеть так:

HEADER    LYASE (OXO-ACID)                        04-MAR-94   1CRM              

Указания. Ознакомьтесь с модулем urllib2 (либо в интерактивном режиме с помощью dir и help, либо на официальном сайте Python). Найдите в этом модуле функцию, открывающую сетевой ресурс (аналогично тому, как open открывает файл). Напишите требуемую программу, имея в виду, что объект, возвращаемый функцией urllib2.urlopen() имеет те же основные методы, что и файл, открытый встроенной функцией open со вторым аргументом "r".

После этого переходите к следующему упражнению.

1. Таблица координат CA-атомов из записи банка PDB. Мнемоника: pdb2

Предисловие.

PDB — это аббревиатура названия "Protein Data Bank", общедоступного банка пространственных структур биологических макромолекул, прежде всего белков.

Каждая запись банка PDB имеет свой идентификатор, например: 1CRM, 1XYZ, 1BL0, 9MHT. Как видно из приведённых примеров, идентификатор состоит из четырёх символов, первый из которых — ненулевая цифра, а остальные три — либо цифра, либо заглавная латинская буква. (Больше идентификаторов можно увидеть, зайдя на сайт http://www.rcsb.org/pdb/ и введя в окошко поиска какое-нибудь название белка, например, "albumin").

Все записи лежат в сети как файлы в специальном pdb-формате по адресам, аналогичным приведённому выше для 1CRM.

Файл формата PDB содержит, помимо прочей, информацию о координатах центров атомов (в некоторой фиксированной системе координат; координаты выражены в ангстремах, то есть десятых долях нанометра). Эта информация содержится в строках, начинающихся с символов "ATOM " (на пятой и шестой позициях – пробелы; см. упражнение 6 практикума 8).

Каждая такая строка, помимо прочей информации, содержит следующие данные:

Задание.

Напишите программу, которая принимает в качестве единственного аргумента командной строки идентификатор записи банка PDB и создаёт файл, содержащий таблицу с информацией только о так называемых "Cα-атомах". В pdb-файле эти атомы имеют в позициях 13–16 подстроку " CA " (в начале и в конце — по пробелу).

Тем самым ваша программа должна игнорировать все строки файла, кроме тех, которые имеют в позициях 1–6 подстроку "ATOM  ", а в позициях 13–16 — подстроку " CA ".

Имя выходного файла должно получаться из идентификатора PDB прибавлением расширения ".tab".

Выходной файл должен иметь строку заголовков вида:

Residue Chain   Number  X       Y       Z

и в остальных строках — соответствующие данные, то есть трёхбуквенное обозначение остатка, идентификатор цепи, номер в цепи, координаты Cα-атома. Все данные, в том числе заголовки, должны быть разделены табулятором.

Обязательно: программа должна вызывать описанную в отдельном модуле функцию, которая получает на вход строку и, если это строка типа "ATOM", возвращать соответствующую строку выходной таблицы, а в противном случае – пустую строку. Не возбраняются и другие функции, например, функция, возвращающая тип атома.

Напоминание: чтобы получить подстроку строки s из позиций 7–10, в питоне надо написать s[6:10] (а не [7:10] и не [6:9])

2. Разбор таблицы: число цепей. Мнемоника table1

На входе (единственный аргумент командной строки): какой-нибудь выходной файл предыдущей программы.

На выходе (печать на экран, что по-научному называется "в стандартный поток вывода", он же stdout): число остатков и число разных цепей, описанных в таблице. Оформление вывода должно быть понятным, то есть, например:

456
1

не годится, а

456 residues
1 chain

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

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

3. Разбор таблицы: геометрический центр структуры. Мнемоника centre

На входе (единственный аргумент командной строки): какой-нибудь выходной файл программы pdb2.

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

(*) Вывод геометрических центров каждой цепи, мнемоника centres

Дополнительно

4*. Гистограмма расстояний CA-атомов до геометрического центра. Мнемоника histogram

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

Указания. Гистограмма – это таблица из трёх столбцов: начало кармана, конец кармана, число объектов, попавших в карман. Столбцы таблицы должны (как всегда) иметь заголовки, элементы строк пусть разделяются табуляторами. Чтобы выбрать карманы гистограммы, найдите максимальное расстояние и разделите весь диапазон расстояний на 10 равных частей.

(**) Дополнительный бонус, если программа будет выдавать таблицу из четырёх столбцов: в добавление к гистограмме столбец с плотностями CA-атомов в разных диапазонах расстояний от центра. Под плотностью понимаем среднее число атомов в единице объёма, то есть число атомов в некоторой области пространства, делённое на объём этой области.

5*. Среднее арифметическое расстояний и среднее квадратичное отклонение расстояний между последовательными CA-атомами. Мнемоника neighb-res

Последовательными остатками считаем те, которые: а) принадлежат одной цепи; б) имеют соседние номера.

Замечание. Некоторые PDB-файлы могут обладать особенностями, затрудняющими непосредственное выполнение этого и следующего заданий. Самый простой способ обойти трудность: не брать в работу таблицу, в которой в одной цепи описаны несколько CA-атомов с одинаковыми номерами. Такое нередко встречается и может означать разное (файл с многими моделями или наличие "Alternate location" или использование при нумерации "Code for insertion of residues"; желающие разобраться см. http://www.wwpdb.org/documentation/file-format-content/format33/sect9.html )

6*. Гистограмма углов между последовательными звеньями цепи. Мнемоника angles

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