Учебная страница курса биоинформатики,
год поступления 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 лежит структура белка бета-порфираназы.
Ваша задача — написать программу, принимающую из командной строки:
- 1-й аргумент: PDB-код;
- 2-й аргумент: имя выходного файла с полученной структурой в директории credits.
Если структуры с поданным кодом не существует (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'}