Учебная страница курса биоинформатики,
год поступления 2015
Практикум 11. Работа с текстовыми файлами
Решение каждой задачи кладите в отдельную папку ~/term1/block3/credits/Lastname_pr11_mnemonics. При этом основная программа должна быть в файле ~/term1/block3/credits/Lastname_pr11_mnemonics/Lastname_pr11_mnemonics.py , а файл(ы) с функциями, если они есть, могут называться произвольно (но без использования пробелов, кириллицы, заглавных букв!).
1. Список последовательностей. Мнемоника: sequences
Программа читает последовательности из fasta-файла, имя которого задано в командной строке, и выводит список идентификаторов (они же имена) последовательностей в произвольном порядке.
Пример входного файла:
>I916 peptide chain release factor 2 ATGCGCGCGGAAATCGAGACGCTGGTTGACGAAATCCAGCAGGCCATAAGCCTGCTGAGG AGGCATTAA >A0925 hypothetical protein ATGACCAAACGTGATACGACTATACTAGGGCCTGTCTGCATTCAAGGATTCCCTTTTGCA TGA
Пример выхода:
I916 A0925
2. Длины последовательностей. Мнемоника: sequence-len
Программа читает последовательности из fasta-файла и печатает таблицу "идентификатор - длина последовательности" через табулятор в порядке следования идентификаторов в fasta-файле.
Пример входного файла:
>I916 peptide chain release factor 2 ATGCGCGCGGAAATCGAGACGCTGGTTGACGAAATCCAGCAGGCCATAAGCCTGCTGAGG AGGCATTAA >A0925 hypothetical protein ATGACCAAACGTGATACGACTATACTAGGGCCTGTCTGCATTCAAGGATTCCCTTTTGCA TGA
Пример выхода:
I916 69 A0925 63
(между именем и длиной — табулятор).
3. Разбор таблицы генов и создание гистограммы длин белков. Мнемоника: ptt
На сайте NCBI в папках с геномами бактерий лежат, помимо файлов в формате GenBank и Fasta, ещё и файлы с расширениями ptt и rnt. В них находятся таблицы белок-кодирующих генов (ptt) и генов некодирующих РНК (rnt). Ваша первая задача — ознакомиться с информацией, содержащейся в таблице белок-кодирующих генов и с форматом, в котором эта информация представлена.
После этого следует написать программу, которой на вход (в командной строке) подаётся имя ptt-файла, и которая формирует файл со следующими свойствами:
его название совпадает с названием входного файла, но с заменой ".ptt" на ".hst". Например, если входной файл назывался "NC_003062.ptt", то выходной должен называться "NC_003062.hst"
- он содержит следующие строки:
первая строка должна совпадать с первой строкой входного файла с добавлением в начале слов "Histogram of protein lengths in ", например если в ptt файле первая строка содержала текст: "Agrobacterium fabrum str. C58 chromosome circular, complete sequence - 1..2841580", то в выходном hst-файле первая строка будет: "Histogram of protein lengths in Agrobacterium fabrum str. C58 chromosome circular, complete sequence - 1..2841580".
Вторая строка должна содержать заголовки столбцов: "Range" и "Count", разделённые табулятором.
Последующие строки должны содержать по два "поля", разделённые табулятором. Первое поле – это диапазон длин (так называемый "карман" гистограммы): в третьей строке это "1..100", в четвёртой — "101..200", ..., в 12-й — "901..1000", наконец в 13-й — ">1000" и в 14-й — "Total". Второе поле — число описанных в ptt-файле генов, для которых длина белка попала в соответствующий диапазон.
Подсказки.
для разделения строки следует использовать метод split() с аргументом "\t":
>>> s = "a\tb c\t 100\ta8" >>> print s a b c 100 a8 >>> s.split("\t") ['a', 'b c', ' 100', 'a8'] >>>
- Гистограмму удобно хранить в списке из 10 элементов. Для получения чисел можно создать также списки границ карманов и написать цикл по карманам, а можно воспользоваться операцией деления нацело:
>>> 7/3 2 >>> 15/4 3 >>>
и использовать только один if (проверяющий, что длина не выходит за пределы 1000), а для других писать что-то вроде:
a[i] = a[i] + 1
где i — номер диапазона, получаемый делением длины нацело на 100. Обратите внимание, что для получения правильного номера диапазона нацело надо делить не саму длину, а ... (подумайте!)
3a.(*) Добавьте результаты работы программы для всех хромосом своей бактерии к её описанию на сайте. Прокомментируйте (в частности: какие длины белков наиболее типичны для данной бактерии?)
4. Разбор PDB-файла и создание таблицы координат CA-атомов. Мнемоника: pdb
PDB — это аббревиатура названия "Protein Data Bank", общедоступного банка пространственных структур биологических макромолекул, прежде всего белков.
Файл формата PDB содержит, помимо прочей, информацию о координатах центров атомов. Эта информация содержится в строках, начинающихся с символов "ATOM " (на пятой и шестой позициях – пробелы).
Каждая такая строка, помимо прочей информации, содержит следующие данные:
- обозначение ("имя") атома в позициях с 13 по 16;
- трёхбуквенное обозначение аминокислотного остатка в позициях с 18 по 20;
- идентификатор цепи белка в позиции 22;
- номер остатка в цепи в позициях с 24 по 26;
координаты центра атома в позициях 31–38 (x-координата), 39–46 (y-координата) и 47–54 (z-координата).
Образцы PDB-файлов выложены на диск P (в директорию y15/term1/PDB). Больше файлов можно скачать с сайта PDB, если разобраться в его устройстве.
Ваша задача – написать программу, которая читает PDB-файл и выдаёт таблицу с информацией только о так называемых "Cα-атомах". В pdb-файле эти атомы имеют в позициях 13–16 подстроку " CA " (в начале и в конце — по пробелу).
Тем самым ваша программа должна игнорировать все строки исходного файла, кроме тех, которые имеют в позициях 1–6 подстроку "ATOM ", а в позициях 13–16 — подстроку " CA ".
Входом программы служит файл в формате pdb, чьё имя задаётся в командной строке.
Выходной файл должен иметь то же имя, что входной, но дополненное расширением ".tab". Он должен иметь строку заголовков вида:
Residue Chain Number X Y Z
и в остальных строках — соответствующие данные, то есть трёхбуквенное обозначение остатка, идентификатор цепи, номер в цепи, координаты Cα-атома. Все данные, в том числе заголовки, должны быть разделены табулятором.
Напоминание: чтобы получить подстроку строки s из позиций 7–10, в питоне надо написать s[6:10] (а не [7:10] и не [6:9])
Дополнительное задание
5.(*) Геометрический центр структуры и гистограмма расстояний до центра. Мнемоника center
Напишите программу, которая по pdb-файлу вычисляет геометрический центр его Cα-атомов и строит гистограмму расстояний этих атомов от центра. В протоколе опишите алгоритм и приведите гистограммы для нескольких структур.
Указание: чтобы выбрать карманы гистограммы, найдите максимальное расстояние и разделите весь диапазон расстояний на 10 равных частей.
(**) Добавьте к гистограмме столбец с плотностями Cα-атомов в разных диапазонах расстояний от центра (под плотностью понимаем среднее число атомов в единице объёма, то есть число атомов в некоторой области пространства, делённое на объём этой области).