Учебная страница курса биоинформатики,
год поступления 2018
Завершающая контрольная по блоку «Python»: cw1 - 1я попытка.
Успехов! Пусть первая попытка получить зачет по контрольной окажется успешной и, следовательно, последней.
Выполненное задание - программа
– должна лежать в директории ~/term1/block3/credits
Она должна называться так cw1_<номер задания>.py Например, cw1_1.2.py или cw1_2.py
Файлы, нужные для выполнения некоторых программ или для тестирования других
Эти файлы лежат на диске P. Точные адреса директорий c этими файлами на kodomo такие:
- /P/y18/term1/block3/cw1/
- /P/y18/term1/block3/pdb/
- /P/y18/term1/block3/fasta/
- /P/y18/term1/block3/gbk/
Нужные файлы из нее можете скопировать к себе в директорию credits (или писать полный путь к ним и имя файла после последнего /. Например,
/P/y18/term1/block3/cw1/codons.txt – имя файла, который можно открыть на чтение в программе и прочитать.
Что достаточно сделать для зачета
Для получения зачета достаточно выполнить одну любую задачу сложности 2 или выше.
Задания
В заданиях ниже при описании вида ответа используется такое обозначение
" Ответ равен .......... "
Здесь ............. – место для ответа.
0.1 Уровень сложности 1 или 2 при выполнении программой добавочного задания.
Входных параметров нет. Однако известно имя файла в указанной выше директории /cw1 на диске P: файл называется codons.txt. В нем таблица с колонками: кодон; однобуквенное обозначение аминокислотного остатка; трехбуквенное обозначение аминокислотного остатка. В строке с названиями колонок первый символ – “#”; эту строку следует игнорировать.
Программа должна создать в своей директории credits файл aas-codons-count.txt c таблицей; в таблице две колонки:
#one_letter_aa_code \t codons_count
Поля должны быть разделены символом табулятора ‘\t’. Codons_count – число кодонов, кодирующих данную аминокислоту.
Строки выходного файла должны быть упорядочены по алфавиту однобуквенных кодов аминокислотных остатков.
aa – стандартная аббревиатура для amino acid.
И для зачета КР уровень сложности поднимаем до 2.: программа, не завершаясь запрашивает: "Enter aa sequence including stop in one-letter codes" . Программа вычисляет число разных последовательностей ДНК, кодирующих введенный белок и сообщает пользователю
0.2 Уровень сложности 1 или 2 при выполнении программой добавочного задания.
Программа совпадает с программой из 0.1 (см.), кроме выходного файла. А именно,в выходном файле первая колонка таблицы содержит three_letter_aa_code, разделитель полей и вторая колонка. Строки выходного файла должны быть упорядочены по алфавиту трехбуквенных кодов аминокислотных остатков.
И для зачета КР уровень сложности поднимаем до 2.: программа, не завершаясь запрашивает: "Enter aa sequence including stop in three-letter codes, separated with space" . Программа вычисляет число разных последовательностей ДНК, кодирующих введенный белок и сообщает пользователю
1.1 Уровень сложности 2
Программа получает один аргумент командной строки – натуральное число n более 10.
Программа возвращает в выходной поток сообщение:
«Сумма простых чисел <= n равна .......... »
Здесь и далее на месте ............. - ответ.
Проверяться будет, например, для n = 1000
1.2 Уровень сложности 2
Программа получает один аргумент командной строки – натуральное число n более 10.
Программа возвращает в выходной поток сообщение:
«Сумма квадратов простых чисел <= n равна ........... »
Проверяться будет, например, для n = 100
3.1 Уровень сложности 2
Программа получает один аргумент командной строки – имя файла в фаста формате, содержащего несколько нуклеотидных последовательностей. Не забудьте, что длинные последовательности записываются в несколько строк.
Программа возвращает новый файл с именем seq-lengths.txt такого формата.
#Sequence_name \t sequence_length seq1 \t 125 seq2 \t 1503 и так далее
Совет. Используйте файл test.fasta для отладки программы. Для окончательной проверки используйте файл mosses-mito.fasta. Выходной файл для этого фаста файла и оставьте в директории credits.
3.2 Уровень сложности 3
Программа получает один аргумент командной строки – имя файла в фаста формате, содержащего несколько нуклеотидных последовательностей
Программа возвращает новый файл с именем seq-nucl-count.txt такого формата:
#Sequence_name \t number_of_A \t number_of_T \t number_of_G \t number_of_C seq1 \t 12 \t 14 \t 25 \t 23 seq2 \t 25 \t 20 \t 25 \t 24 и так далее
Совет. Используйте файл test.fasta для отладки программы. Для окончательной проверки используйте файл mosses-mito.fasta. Выходной файл для этого фаста файла и оставьте в директории credits.
5. Уровень сложности 3
Программа получает два аргумента командной строки – код файла в PDB-формате в структуре и десятичное число.
Программа подсчитывает число количество атомов, в которых X-координата меньше второго аргумента и выдает сообщение вида:
"В pdb файле ......... имеется .......... атомов с координатой X меньше .......... "
Pdb код берете из первого аргумента командной строки, порог координаты X – из второго аргумента с точностью до одного знака после запятой, число атомов подсчитываете.
Координаты атомов указаны в тех строках, которые в первых шести колонках содержат либо слово "ATOM ", либо слово "HETATM". Координата X атома указана в колонках 31-38
См. подсказки к практикуму 10, в которых описано как прочитать pdb файл из pdb, зная pdb код.
6-1bfp Уровень сложности 3
Программа работает с файлом /P/y18/term1/block3/pdb/1bfp.pdb. Можно этот файл скачать в свою директорию credits. Вместо этого файла можно взять любой другой из указанной директории. И назвать программу соответственно.
Программа получает два аргумента командной строки – серийный номер атома – натуральное число; порог расстояния – десятичное число. Серийный номер атома содержится в строке ATOM или HETATM в позициях 7-11.
Пример обращения: python3.6 cw1_5.2-1bfp.py 137 5.0
У всех атомов серийный номер уникален, он идет последовательно от 1 до последнего атома. См. Примеры в директории /P/y18/term1/block3/pdb.
Программа выдает в выходной поток количество атомов в структуре, находящихся на расстоянии менее указанного во втором аргументе командной строки, от указанного атома. Координата x атома указана в позициях 31-38, y в позициях 39-46, z в позициях 47-54. Все координаты измеряются в ангстремах, пространство евклидово. Напоминаю, что расстояние между точками (x1,y1,z1) и (x2,y2,z2) вычисляется в евклидовом пространстве по формуле
sqrt( (x1 - x2)2 + (y1 - y2)2 + (z1 - z2)2 )
Программа должны выдать сообщение вроде такого " ......... angstrom neighborhood of the atom no. ............ of pdb file 1bfp.pdb contains ........... atoms"
6-xxxx Уровень сложности 3
Еще 8 вариантов того же задания для других 8 pdb файлов из директории /P/y18/term1/block3/pdb.
7.1 Уровень сложности 2
Программа получает один аргумент командной строки – имя файла в формате .gbk – одного из файлов из директории /P/y18/term1/block3/gbk.
Программа выдает количество белков, закодированных на обратной (complement) цепи.
Белок находится по слову CDS в колонках 6-8, до него пять пробелов и после него 13 пробелов. В этой же строке есть слово complement – если белок закодирован на комплементарной цепи, а не на прямой.
7.2 Уровень сложности 3
Программа получает один аргумент командной строки – имя файла в формате .gbk, одного из файлов из директории /P/y18/term1/block3/pdb.
Программа возвращает новый файл с именем proteins.txt содержащий информацию о всех белках, закодированных в ДНК или РНК из файла. Формат выходного файла:
#DNA_number \t protein_number \t protein_name 1 \t 1 \t nucleoprotein N 1 \t 2 \t phosphoprotein M1 и т.д.
В первой колонке – номер последовательности ДНК. Если в файле одна ДНК, то 1 во всех строчках
Во второй колонке – серийный номер белка, закодированного в последовательности; для второй ДНК опять начнется с 1.
В третьей колонке – название белка из поля /product. Формат поля такой:
/product="phosphoprotein M1"
До символа / – 21 пробел. Название белка взято в кавычки.
8 Уровень трудности 3
Программа получает три аргумента командной строки – имя файла в формате .fasta из директории /P/y18/term1/block3/fasta/mosses-mito-split, номер нуклеотида в последовательности, нечетное натуральное число – размер "окна". Все файлы в этой директории содержат одну нуклеотидную последовательность. Последовательность занимает больше одной строчки.
Программа возвращает фрагмент последовательности, соответствующий размеру окна с центром в заданном нуклеотиде. При ошибке входных данных – номер нуклеотида больше, чем длина последовательности, "окно" выходит за границы последовательности, выдается соответствующее сообщение (например, "Error: nucleotide number is more than sequence length"; “Error: window goes beyond sequences boundaries”).