Kodomo

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

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

Чтение файлов через интернет. Упорядочение списка. Множество. форматирование строки

Зачётный минимум — шесть баллов. Файлы называйте pr10_mnemonics.py и кладите в директорию credits.

См. советы и подсказки.

1. Скачайте из PDB запись со структурой белка

Мнемоника: fetch-pdb

Баллы: 2

PDB — это аббревиатура названия "Protein Data Bank", общедоступного банка пространственных структур биологических макромолекул, прежде всего белков. Запись банка называется pdb файлом. Формат файла называется .pdb. Она содержит координаты в 3D всех атомов белка или других макромолекул. pdb файл визуализируется в 3D, например, программой Jmol (будет во втором семестре).

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

По адресу http://files.rcsb.org/download/<код>.pdb лежит pdb файл с соответствующим кодом.

К примеру, по адресу http://files.rcsb.org/download/4ATE.pdb лежит структура белка бета-порфираназы.

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

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

2. parse-pdb

Мнемоника: parse-pdb

Баллы: 2-4-6 баллов.

Напишите программу, которая принимает в качестве аргументов:

1) идентификатор записи банка PDB (PDB-код)

На 4 и 6 баллов программа должна принимать еще эти аргументы:

2) X-координату точки

3) Y-координату точки

4) Z-координату точки

5) порог на расстояние

На 6 баллов кроме этого программа принимает:

6) максимальное число атомов, которые надо выделить

На 2 балла программа выделяет из файла только так называемые "Cα-атомы" (строка CA)

На 4 балла программа выделяет из файла только Cα-атомы, которые находятся на расстоянии не больше заданного от точки с заданными координатами

На 6 баллов программа выделяет из файла не более заданного максимального количества Cα-атомов (в первую очередь выводятся наиболее близкие к данной точке Cα-атомы), которые находятся на расстоянии не больше заданного от точки с заданными координатами.

Выходной файл ca_atoms.txt должен представлять собой таблицу, чьи колонки имеют следующие заголовки:

Residue Chain Number X Y Z

то есть первая строка выходного файла должна быть такой, как здесь указано (свободные места между заголовками колонок — табуляторы \t), а все остальные строки должны содержать: сначала имя остатка, затем идентификатор цепи белка, номер остатка, затем три числа — координаты центра Cα-атома, с тремя знаками после десятичной точки. Все шесть полей строки должны быть разделены табуляторами.

Необходимая информация:

в строке PDB-файла, начинающейся с "ATOM", имя остатка занимает позиции 18–20, номер остатка — позиции 23–26, идентификатор цепи — позицию 22, координаты X, Y, Z — позиции, соответственно, 31–38, 39–46 и 47–54. Не забывайте о разнице между позицией символа в строке и индексом того же символа!

3. Посчитать число молекул воды в записи PDB

Мнемоника: hoh

Баллы: 3

Один аргумент командной строки - имя pdb файла, сохраненного в директории credits

Результат: сообщение такого вида (пример):

pdb-code: 6hje, resolution: 2.00 ANGSTROMS, number of HOH molecules: 389

Pdb-code - последнее слово в первой строке Молекула воды содержит один атом - кислород, т.к. водороды слишком маленькие, чтобы их координаты можно было определить используя основной метод расшифровки - рентгеноструктурный анализ. Примеры строк для опознания см в подсказках.

4. список разных лигандов в PDB файле

Мнемоника: ligands

Баллы: 5

Один аргумент командной строки - имя PDB файла в директории credits ИЛИ pdb-код. если аргумент имеет вид <имя.pdb>, то считается, что это файл на локальном компьютере, если аргумент имеет формат pdb кода (четыре символа, первый символ - цифра) то файл скачивается из банка PDB. Если работает правильно только один из этих двух вариантов, то тоже зачет, но на 1 балл меньше.

Программа должна найти множество всех названий лигандов в PDB файле и вывести его с помощью print(). множества - типа set([]) - позволяет избежать повторения имен лигандов.

См. в подсказках как опознать строки с лигандами и где в них короткие названия лигандов.

5. Найдите общие подслова указанной длины в двух нуклеотидных последовательностях

Мнемоника: common-words

Баллы: 4

У программы предусмотрены два аргумента командной строки. Первый - имя файла, содержащего две последовательности ДНК в формате fasta; второй - длина подслова.

Результат - множество подслов заданной длины, встречающихся в обеих последовательностях (на любом месте). Его следует напечатать с помощью print(<множество>)

Игрушечный пример файла:

>seq1
AGATCCCCCTT
>seq2
AAGATCCCCCTTTGG

Длина подслова 4. Множество подслов в seq1 равно

subwords1 = set(['AGAT','GATC','ATCC',TCCC,'CCCC','CCCT','CCTT'])  

Множество подслов в seq2 равно

subwords2 = set(['AAGA','AGAT','GATC',ATCC',TCCC,'CCCC','CCCT','CCTT','CTTT','TTTG','TTGG'])  

Ответ:

{'AGAT','GATC','ATCC','TCCC','CCCC', 'CCCT', 'CCTT'}