Kodomo

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

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

Контрольная работа: зачётные задания

Контрольная проходит в классе. Если вы пропустили это занятие, обращайтесь к преподавателям, ведущим этот блок (udavdasha@gmail.com, aba@belozersky.msu.ru, bnagaev@gmail.com).

Каждому студенту выдано одно обязательное задание (индивидуальное). Также выдаётся одно дополнительное задание на всех (см. ниже).

Зачёт с минимальными баллами проставляется за выполненное обязательное задание, т.е. программу, выдающую требуемые результаты. Выполнение двух заданий (обязательное + дополнительное) поощряется дополнительными баллами.

Дополнительные баллы присуждаются за

Правила представления для проверки выполненных заданий

Всем заданиям присвоены мнемоники, указанные после названий. Решение кладите в файл ~/term1/block3/credits/ВашаФамилия_pr13_мнемоника.py где ~ - ваша домашняя папка, ВашаФамилия - ваша фамилия латинскими буквами с большой буквы, а мнемоника - мнемоника, указанная в задании. Пример: ~/term1/block3/credits/Pupkine_pr13_find-subseqs.py

Также можно пользоваться системой самопроверки, но помните, что она не запоминает результат, а только выводит его вам. Файлы в любом случае надо разместить в нужной папке под определенными именами (см. выше). Если не поняли условие или нашли ошибку в системе проверки (то есть, она ошибочно не принимает верное решение или ошибочно принимает неверное решение), пишите письмо на bnagaev@gmail.com

Система проверки принимает задания, в которых вы использовали собственные модули. Модуль должен лежать в той же папке, где и файл с решением (папка credits). В систему проверки такое задание сдаётся следующим образом: сначала загружается модуль (проигнорируйте выдачу системы по поводу модуля), потом загружается само решение.

Задания

find-subseqs

Есть набор последовательностей. Удалить из него те, которые входят в другие последовательности изначального набора (только на прямой цепи). “Входить” - значит дословно совпадать с частью более длинной последовательности. (Если какие-то последовательности полностью совпадают и не входят в более длинные последовательности, то их удалять не надо.)

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями.

Результат программа пишет в файл output.fasta.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
MPA

>seq2
MP

>seq3
PA

>seq4
AAA

Пример выхода (содержимое output.fasta):

>seq1
MPA

>seq4
AAA

count-hits

Найти, в скольких последовательностях встречается другая последовательность

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями.

Вторым аргументом передаётся искомая последовательность.

Программа печатает число последовательностей из FASTA-файла, содержащих искомую последовательность (только на прямой цепи).

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
MPA

>seq2
MP

>seq3
PA

Пусть пользователь ввёл вторым аргументом MP.

Пример выхода:

2

clean-seq

Убрать из входной последовательности все символы, кроме A, T, G, C, N

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью. Программа выдаёт результат в файле output.fasta. Имя и описание последовательности сохраняются.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
^ATTAG--N~~~NNN$

Пример выхода (содержимое output.fasta):

>seq1
ATTAGNNNN

calc-charge

Рассчитать заряд белка по его последовательности (Считать, что H, K, R несут заряд +1, а D и E несут заряд -1, остальные заряда не несут).

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью.

Результат (число) программа просто печатает.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq
MPALAVFILELTAVWDCIF

Пример выхода:

-2

complement

Построить комплементарную последовательность

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью. Программа выдаёт результат в файле output.fasta. Имя и описание последовательности сохраняются.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1 aaaafffff
AAACCC

Пример выхода (содержимое output.fasta):

>seq1 aaaafffff
GGGTTT

count-word

Найти, сколько раз определённое слово встречается в последовательности.

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью.

Вторым аргументом передаётся искомое слово.

Программа печатает число находок искомого слова в целевой последовательности (только на прямой цепи). Находки могут перекрываться.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
MPPAPPAPVLI

Пусть пользователь ввёл вторым аргументом PPAP.

Пример выхода:

2

Дополнительное задание

* find-most-frequent-word

Найти в последовательности ДНК самое частое слово определенной длины

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью. Вторым аргументом командной строки подаётся длина слова. (Слово в данном контексте - то же, что срез исходной последовательности.) Рассматриваются все слова, включая перекрывающиеся друг с другом.

Программа печатает на экран самое частое слово этой длины. Если таких слов несколько, то печатает их все в произвольном порядке, каждое на новой строке.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1 aaaafffff
ATGGAT

Вторым аргументом пользователь ввёл 2.

Пример выхода:

AT

Переписывание 10 декабря

delete-matching

Есть набор последовательностей и искомая строка. Удалить из набора последовательностей те, в которые входит эта искомая строка (поиск осуществляется только прямой цепи). "Входить" - значит дословно совпадать со всей последовательностью или с её частью. Порядок последовательностей и их описания - как в исходном файле.

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями. Вторым аргументом командной строки подаётся искомая строка.

Результат программа пишет в файл output.fasta.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
MPA

>seq2 xxx yyy
MP

>seq3 aaa bbb ccc
PA

>seq4
AAA

Пример искомой строки: MP

Пример выхода (содержимое output.fasta):

>seq3 aaa bbb ccc
PA

>seq4
AAA

per-seq-gc

Определить GC-состав последовательностей. Входные последовательности включают только следующие буквы: A, T, G, C. GC-составом называется суммарная доля G и C.

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями.

Результат программа печатает в виде таблицы: "идентификатор_входной_последовательности GC-состав". Каждая строка этой таблицы печатается на отдельной строке выхода (при помощи print). Порядок строк совпадает с порядком последовательностей во входном файле.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>seq1
ATTTG

>seq2
CGCGCGCG

>seq3
ATTATTATA

Пример выхода:

seq1 0.2
seq2 1
seq3 0

Переписывание 12 декабря

per-seq-matching

Определить, входит ли определённая последовательность в каждую из последовательностей FASTA-файла. "Входить" - значит совпадать с последовательностью или её частью.

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями. Вторым аргументом подаётся искомая строка.

Результат программа печатает в виде таблицы: "идентификатор_входной_последовательности yes-или-no". Если искомая последовательность входит в данную последовательность, то программа печатает "yes" для строки таблицы, соответствующей данной последовательности, иначе печатает "no". Каждая строка этой таблицы печатается на отдельной строке выхода (при помощи print). Порядок строк совпадает с порядком последовательностей во входном файле. Заголовок таблицы и другая дополнительная информация не печатается.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>XBMKFW1 ZICIFI ZHK
CTAATTGACTCACCAGC
CATTATCCCAGCCTGGT
CGAGCTGTTCTAAC
>ERIBRO2 AMJNVQ LPMBNKF DNLO
TGGGCATTGCAGTAATT
AACCGCTGGCTTCATCT
TCGAATATAGGTTGACG
CCCACC

Пример искомой последовательности (передаётся в программу вторым аргументом командной строки): CTCACCAGCCATT

Пример выхода:

XBMKFW1 yes
ERIBRO2 no

filter-long

Есть набор открытых рамок считывания. Отобрать среди них те, которым соответствует белок не короче определённой длины.

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями открытых рамок считывания. Вторым аргументом командной строки подаётся минимальная длина белка. Внимание: длина белка и длина последовательности открытой рамки (ДНК) - не одно и то же! Кроме того, стоп-кодон не входит в длину белка.

Результат программа пишет в файл output.fasta. Порядок последовательностей и их описания - как в исходном файле.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>WLAD1 MTCRZ VOHPD DGEJTG LOOJN HUUOCPF
ATGGAAACCGTTCATAACCGGATTCACTTAGAGCTTCGGGTCGGACAAT
GTACCCATCACCGGGGGTTCCTTCATCACGGGATAGCACAAATCCCTGT
GCTGTTGCGCGCTACAGTTTTGCGATCTGGCATTACCGGGCGCTATAAT
TGTAAGGTACCTACCAAAGGTTTTTCGCTAACGAATGTCTAG
>SRXL12 YPLOFT
ATGCTACCCGCGGTTAGCTATACCTGTGACCGAGTACGTGACCACAAC
GGGGCAGGAGTGGTTGGGCCGAAACGCCCGCCCACTAAGTGGAGGCGG
GAATAA

Пример минимальной длины белка: 38

Пример выхода (содержимое output.fasta):

>WLAD1 MTCRZ VOHPD DGEJTG LOOJN HUUOCPF
ATGGAAACCGTTCATAACCGGATTCACTTAGAGCTTCGGGTCGGACAAT
GTACCCATCACCGGGGGTTCCTTCATCACGGGATAGCACAAATCCCTGT
GCTGTTGCGCGCTACAGTTTTGCGATCTGGCATTACCGGGCGCTATAAT
TGTAAGGTACCTACCAAAGGTTTTTCGCTAACGAATGTCTAG

Переписывание 19 декабря

count-atgc

Рассчитать число раз, которое каждая из букв A, T, G, C встречается в последовательности.

Первым аргументом командной строки подаётся имя fasta-файла с единственной последовательностью.

Результат программа печатает в виде таблицы: "нуклеотид число". Каждая строка этой таблицы печатается на отдельной строке выхода (при помощи print). Порядок строк произвольный. Заголовок таблицы и другая дополнительная информация не печатается.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>test
AATGC

Пример выхода:

A 2
T 1
G 1
C 1

max-minus-min

Вывести разницу длин самой длинной и самой короткой последовательностями.

Первым аргументом командной строки подаётся имя fasta-файла с последовательностями.

Программа печатает результат при помощи функции print.

Пример входа (содержимое входного фаста-файла, имя которого указал пользователь):

>test1
AATTAT

>test2
AAT

Пример выхода (содержимое output.fasta):

3