Kodomo

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

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

Индивидуальные зачётные задания

Каждому студенту выдано два задания на дом. На итоговой контрольной необходимо будет решить похожее задание в течение занятия.

Правила представления заданий такие же, как в предыдущих заданиях.

Если Вы не знаете, какие задания Вам достались, пишите письмо на bnagaev@gmail.com.

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

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

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

Полезна также обратная функция, принимающая список объектов "Последовательность" и открытый на запись выходной файл (или его имя) и записывающая эти объекты в файл.

Определения и вспомогательные материалы

Однобуквенное обозначение групп нуклеотидов

( Cornish-Bowden, 1984 )

  +---------------------------------------------------+
  |Номер|Одно-   |  Группа       |    Интерпретация   |
  |     |букв.код|  нуклеотидов  |                    |
  |-----+--------+---------------+--------------------|
  |  1  |   A    |       A       |       аденин       |
  |  2  |   T    |       T       |       тимидин      |
  |  3  |   G    |       G       |       гуанин       |
  |  4  |   C    |       C       |       цитозин      |
  |  5  |   R    |    G или A    |  пурины (большие)  |
  |  6  |   Y    |    T или C    | пиримидины (малые) |
  |  7  |   M    |    A или C    | амино (полож.заряд)|
  |  8  |   K    |    G или T    |кето  (отриц.заряд) |
  |  9  |   W    |    A или T    |слабые взаимодейств.|
  | 10  |   S    |    G или C    |сильные взаимодейст.|
  | 11  |   B    | T или G или C |                    |
  | 12  |   V    | A или G или C |                    |
  | 13  |   H    | A или T или C |                    |
  | 14  |   D    | A или T или G |                    |
  | 15  |   N    |     любой     |                    |
  +---------------------------------------------------+

Массы аминокислот (словарь)

   1 {
   2 'G': 57.02147,  'A': 71.03712,  'S': 87.03203,  'P': 97.05277,
   3 'V': 99.06842,  'T': 101.04768, 'C': 103.00919, 'I': 113.08407,
   4 'L': 113.08407, 'N': 114.04293, 'D': 115.02695, 'Q': 128.05858,
   5 'K': 128.09497, 'E': 129.04260, 'M': 131.04049, 'H': 137.05891,
   6 'F': 147.06842, 'R': 156.10112, 'Y': 163.06333, 'W': 186.07932,
   7 }

Словарь из аминокислот в список кодонов

   1 {
   2 "A": ["GCT","GCA","GCG","GCC"],
   3 "C": ["TGT","TGC"],
   4 "E": ["GAA","GAG"],
   5 "D": ["GAC","GAT"],
   6 "G": ["GGG","GGC","GGA","GGT"],
   7 "F": ["TTC","TTT"],
   8 "I": ["ATT","ATC","ATA"],
   9 "H": ["CAT","CAC"],
  10 "K": ["AAG","AAA"],
  11 "M": ["ATG"],
  12 "L": ["TTA","TTG","CTG","CTC","CTA","CTT"],
  13 "N": ["AAC","AAT"],
  14 "Q": ["CAA","CAG"],
  15 "P": ["CCG","CCC","CCA","CCT"],
  16 "S": ["TCT","AGC","AGT","TCC","TCG","TCA"],
  17 "R": ["AGG","AGA","CGG","CGC","CGA","CGT"],
  18 "T": ["ACG","ACA","ACC","ACT"],
  19 "W": ["TGG"],
  20 "V": ["GTG","GTA","GTT","GTC"],
  21 "Y": ["TAT","TAC"],
  22 "STOP": ["TAG","TGA","TAA"]
  23 }

Словарь из кодонов в аминокислоты

   1 {
   2 "AAA" : "K", "AAC" : "N", "AAG" : "K", "AAT" : "N",
   3 "ACA" : "T", "ACC" : "T", "ACG" : "T", "ACT" : "T",
   4 "AGA" : "R", "AGC" : "S", "AGG" : "R", "AGT" : "S",
   5 "ATA" : "I", "ATC" : "I", "ATG" : "M", "ATT" : "I",
   6 "CAA" : "Q", "CAC" : "H", "CAG" : "Q", "CAT" : "H",
   7 "CCA" : "P", "CCC" : "P", "CCG" : "P", "CCT" : "P",
   8 "CGA" : "R", "CGC" : "R", "CGG" : "R", "CGT" : "R",
   9 "CTA" : "L", "CTC" : "L", "CTG" : "L", "CTT" : "L",
  10 "GAA" : "E", "GAC" : "D", "GAG" : "E", "GAT" : "D",
  11 "GCA" : "A", "GCC" : "A", "GCG" : "A", "GCT" : "A",
  12 "GGA" : "G", "GGC" : "G", "GGG" : "G", "GGT" : "G",
  13 "GTA" : "V", "GTC" : "V", "GTG" : "V", "GTT" : "V",
  14 "TAA" : "*", "TAC" : "Y", "TAG" : "*", "TAT" : "Y",
  15 "TCA" : "S", "TCC" : "S", "TCG" : "S", "TCT" : "S",
  16 "TGA" : "*", "TGC" : "C", "TGG" : "W", "TGT" : "C",
  17 "TTA" : "L", "TTC" : "F", "TTG" : "L", "TTT" : "F",
  18 }

Задания

find-orfs-in-frame

Найти все ORF на прямой цепи с определенным сдвигом.

Программа получает через аргумент командной строки имя fasta-файла, в котором находится единственная последовательность. Вторым аргументом получает сдвиг (0, 1 или 2). Третим аргументом получает минимальную допустимую длину ORF в основаниях.

Результат записывается в файл output.fasta. Если у открытой рамки есть несколько альтернативных стартов, выбрать только самый длинный вариант. Имена последовательностей в выходном файле получаются дописыванием "_i" к идентификатору исходной последовательности, где i - порядковый номер ORF в последовательности, начиная с 1. Порядок последовательностей в выходном файле должен совпадать с порядком их встречи в исходной последовательности (и с порядком нумерации названий). Описания последовательностей в выходном файле оставить пустыми.

find-fixed-palindromes

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

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

Программа ищет все палиндромы в последовательности ДНК. Если палиндром встречается несколько раз, считать надо все экземпляры.

Найденные палиндромы записываются в файл output.fasta в порядке их встречи во входной последовательности. Имена последовательностей в выходном файле такие: pal_i, где i - номер встреченного палиндрома, начиная с 1. Описания последовательностей в выходном файле оставить пустыми.

Если палиндромов не нашлось, файл output.fasta должен быть пустым.

filter-palindromes

На вход подаются короткие последовательности, отобрать среди них палиндромы

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

Оставить только последовательности-палиндромы.

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

Если палиндромов не нашлось, файл output.fasta должен быть пустым.

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

>test1 description 1
TTTGCACA

>test2 description 2
TTTAAA

>test3 description 3
TAAT

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

>test2 description 2
TTTAAA

count-stop-codones

На вход подаются открытые рамки, надо рассчитать, сколько раз встретились различные стоп-кодоны

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

Программа получает для каждого стоп-кодона число ORF-ов, которые завершаются этим стоп-кодоном. Печатает числа строго в следующем порядке: TGA, TAA, TAG. Если какой-то стоп-кодон не встретился, для него печатает 0.

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

TGA 5
TAA 10
TAG 0

filter-orfs

На вход подаются различные последовательности. Надо отобрать среди них только те, которые являются открытыми рамками.

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

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

Если открытых рамок не нашлось, файл output.fasta должен быть пустым.

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

>orf_8_100 xxx
ATGATCCCGGATACTGGTTTTCTACTAGCTGATATGATCCCGGACAGACGTAAGTTCCAA
AGGGAAAACGTGTTCCTGAGGCATAACGTATGA
>orf_41_100 yyy
ATGATCCCGGACAGACGTAAGTTCCAAAGGGAAAACGTGTTCCTGAGGCATAACGTATGA
>orf_91_32 zzz
ATGCCTCAGGAACACGTTTTCCCTTTGGAACTTACGTCTGTCCGGGATCATATCAGCTAG

Пусть пользователь выбрал минимальную длину ORF равной 66 нуклеотидам.

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

>orf_8_100 xxx
ATGATCCCGGATACTGGTTTTCTACTAGCTGATATGATCCCGGACAGACGTAAGTTCCAA
AGGGAAAACGTGTTCCTGAGGCATAACGTATGA

dna-consensus

На вход набор последовательностей ДНК одинаковой длины. Выдать последовательность-консенсус согласно правилам.

Правила выведения обозначения группы нуклеотидов см. выше.

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

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

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

>seq1
ATGCCTCAG
>seq2
TAGCCTCAG
>seq3
AGGCCTCAG

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

>consensus
WHGCCTCAG

protein-consensus

На вход набор последовательностей белка одинаковой длины. Вывести консенсус (см. выше, что это).

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

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

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

>seq1
MPQEHAFPLE
>seq2
MPQEHVFPVE
>seq3
MPQEHVFPVE

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

>consensus
MPQEHVFPVE

reorigin

Дана последовательность короткой кольцевой ДНК. Создать аналогичную кольцевую последовательность, начинающуюся с данного места.

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

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

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

>seq1 x y q e r t
ATGCCTCAG

Пусть пользователь задал значение сдвига 3

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

>seq1 x y q e r t
CCTCAGATG

translation-cmp

Даны две открытые рамки. Определить, кодируют ли они один и тот же белок

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

Если эти ORF-ы кодируют один и тот же белок, программа печатает "YES", иначе печатает "NO".

find-matrix

Дан набор последовательностей и последовательность белка (стоп кодон обозначен *). Найти среди последовательностей открытую рамку, которая кодирует данный белок.

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

Программа печатает имя того ORF-а, который транслируется в данный белок (такой ORF будет один).

translate-orf

Дана открытая рамка. Транслировать с неё белки с учётом возможных множественных старт-кодонов в рамке считывания

Первым аргументом командной строки подаётся имя fasta-файла с одним ORF, в котором возможны альтернативные старт-кодоны. Стоп-кодон обозначать *.

Программа выдаёт последовательности белков в файл output.fasta Имена последовательностейтакие: prot_i, где i - номер начиная с 1. Описания последовательностей в выходном файле отсутствуют.

untranslate

Дана последовательность белка. Сгенерировать случайную последовательность открытой рамки, которая бы транслировалась в этот белок.

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

find-substrings

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

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

Если подходящих последовательностей не нашлось, файл output.fasta должен быть пустым.

find-repeats

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

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

Программа находит повторы данной длины и выводит их в output.fasta. Повторяющихся последовательностей в выходном файле быть не должно. Порядок последовательностей - согласно первой встрече повтора. Имена присвоить такие: rep_i, где i - номер, начиная с 1. Описания последовательностей должны быть пустыми. Вхождения повторов могут пересекаться.

Если подходящих последовательностей не нашлось, файл output.fasta должен быть пустым.

filter-non-polar

Есть набор белков. Отобрать те, в которых преобладают неполярные аминокислоты (C, V, I, L, M, F, Y, W, A), то есть их половина или больше.

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

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

Если подходящих последовательностей не нашлось, файл output.fasta должен быть пустым.

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

>seq1 xxx
MPALAVFILELTAVWDCIF
>seq2 yyy
MKHLGKDGKG

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

>seq1 xxx
MPALAVFILELTAVWDCIF

calc-mass

Рассчитать массу белка по его последовательности (выдаётся словарь масс аминокислот, см. выше)

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

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

Не забудьте, что масса белка - это не просто сумма масс аминокислот. Надо ещё вычесть массу воды, высвобожденной при образовании пептидной связи. Число пептидных связей равно числу аминокислот минус 1.

word-frequency

На вход открытая рамка и одна из аминокислот. Рассчитать частоты кодонов (количество раз, которое эта аминокислота была закодирована данным кодоном).

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

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

Пусть пользователь решил изучить частоты изолейцина (I):

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

ATT 30
ATC 41
ATA 0

Словарь из аминокислоты в список кодонов см. выше.