Kodomo

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

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

Завершающая контрольная по блоку «Python»: cw1 - 1я попытка.

Успехов! Пусть первая попытка получить зачет по контрольной окажется успешной и, следовательно, последней.


Выполненное задание - программа

– должна лежать в директории ~/term1/block3/credits

Она должна называться так cw1_<номер задания>.py Например, cw1_1.2.py или cw1_2.py


Файлы, нужные для выполнения некоторых программ или для тестирования других

Эти файлы лежат на диске P. Точные адреса директорий c этими файлами на kodomo такие:

Нужные файлы из нее можете скопировать к себе в директорию 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”).