Учебная страница курса биоинформатики,
год поступления 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