Kodomo

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

Учебная страница курса биоинформатики,
год поступления 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-файла, и которая формирует файл со следующими свойствами:

первая строка должна совпадать с первой строкой входного файла с добавлением в начале слов "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-файле генов, для которых длина белка попала в соответствующий диапазон.

Подсказки.

>>> s = "a\tb c\t 100\ta8"
>>> print s
a       b c      100    a8
>>> s.split("\t")
['a', 'b c', ' 100', 'a8']
>>>

>>> 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  " (на пятой и шестой позициях – пробелы).

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

Образцы 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α-атомов в разных диапазонах расстояний от центра (под плотностью понимаем среднее число атомов в единице объёма, то есть число атомов в некоторой области пространства, делённое на объём этой области).