Kodomo

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

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

Контрольная работа

Вариант 1

  1. Дан файл, описывающий ненаправленный граф в виде списка ребер (пар вершин, соединенных ребром) в формате dot. Написать программу, которая читает этот файл и выдает количество вершин и ребер в графе, а также минимальную, максимальную и среднюю степень вершины. Степень вершины – количество ребер, исходящих из данной вершины. Программа должна содержать самодокументацию для каждой функции. Программа должна выдавать короткие и внятные сообщения в случае проблем с чтением файла или с нарушением формата файла.

  2. Визуализировать граф, прочитанный из файла в формате dot. Вершины изобразить в виде кружочков, находящихся в произвольных координатах. Рядом с каждой вершиной написать ее имя. (Текст на полотно canvas можно положить командой canvas.create_text(x,y, text="Some letters")). Программа должна быть разделена как миниум на два модуля (например, работа с файлом и визуализация). Программа должна содержать самодокументацию для каждой функции и выдавать короткие сообщения об ошибках.

  3. Визуализировать граф, прочитанный из файла, как описано в предыдущем задании. Но теперь вершины можно перетаскивать мышкой из одного места в другое. Все ребра, соединяющие передвигаемую вершину, тоже должны перерисовываться. При выполнении этого задания необходимо разумно и содержательно использовать классы. Программа должна содержать осмысленный набор тестов – как минимум, функция разбора файла должна быть снабжена тестами (для этого её рекомендуется написать так, чтобы она принимала на вход список строк). Программа должна содержать самодокументацию, выдавать короткие сообщения об ошибках, и быть разделена на несколько модулей.

Описание формата dot:

Пример корректного файла в формате dot:

graph {
A -- B;
B -- C;
C -- A;
A -- D;
}

Ещё пример:

graph   {

                A--B    ;       
                C--D    ;       

                A--D    ;       
                A--C    ;       

        } 

Пример некорректного файла:

graph{
A B -- C;
A -- C
A -- C -- D;
  1. строка 1 – нет пробела между graph и {

  2. строка 2 – пробел в имени вершины

  3. строка 3 – нет ; в конце строки

  4. строка 4 – вообще никуда не годится :)

  5. конец файла – нет закрывающей фигурной скобки

Скачиваемые версии примеров графов

Вариант 2

  1. Дан файл в формате GenBank. Распечатать информацию о каждом гене в виде таблицы: старт, стоп, направление ('+' или '-'), имя. Программа должна выдавать короткие и внятные сообщения в случае проблем с чтением файла или с нарушением формата файла1. Программа должна содержать самодокументацию для каждой функции.

  2. Написать программу, изображающую расположение генов в геномной последовательности в заданном интервале. На вход программе подается имя файла в формате GenBank и координаты отображаемого участка. Последовательность генома изображается в виде горизонтальной линии. а гены – в виде стрелочек под ней (направление слрелки соответствует направлению гена). Рядом с каждым геном отображается его имя. (Текст на полотно canvas можно положить командой canvas.create_text(x,y, text="Some letters")). Пример см. на сайте GenBank (http://www.ncbi.nlm.nih.gov/gene/58). При этом можно считать, что гены не пересекаются, и рисовать их на одном уровне. Программа должна быть разделена как миниум на два модуля (например, работа с файлом и визуализация). Программа должна содержать самодокументацию для каждого файла и выдавать короткие сообщения об ошибках.

  3. Написать программу, изображающую расположение генов в геномной последовательности в заданном интервале (см. предыдущее задание). Но теперь, если области отрисовки генов (включая стрелки и имена) пересекаются, они отображаются на разных уровнях (как в GenBank). Добавить 4 кнопки, позволяющие сдвигать область просмотра вправо и влево, а также приближать (то есть сужать область просмотра) и удалять (то есть расширять область просмотра). При выполнении этого задания необходимо разумно и содержательно использовать классы. Программа должна содержать осмысленный набор тестов – как минимум, функция разбора файла должна быть снабжена тестами (для этого её рекомендуется написать так, чтобы она принимала на вход список строк). Программа должна содержать самодокументацию, выдавать короткие сообщения об ошибках, и быть разделена на несколько модулей.

Примеры файлов в формате GenBank

  1. Мы не даём строгой спецификации формата и не требуем соблюдения всего формата GenBank. Однако, в тех частях синтаксиса, которые вы используете, вы должны учитывать возможность ошибок, например, диапазоны кодирующих фрагментов должны быть заданы именно числами -- если это не так, то такой кодирующий фрагмент не игнорируется, а сообщается как ошибка; если вы используете данные из первой строки, вы должны проверять её наличие и соответствие вашим представлениям о том, как она устроена и т.п. (1)