Научная статья на тему 'Использование электронного задачника по строковым алгоритмам биоинформатики'

Использование электронного задачника по строковым алгоритмам биоинформатики Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
214
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭЛЕКТРОННЫЙ ЗАДАЧНИК / СТРОКОВЫЕ АЛГОРИТМЫ ПОИСКА И НЕТОЧНОГО СОПОСТАВЛЕНИЯ / EXACT AND APPROXIMATE STRING MATCHING ALGORITHMS / БИОИНФОРМАТИКА / BIOINFORMATICS / EDUCATIONAL SOFTWARE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Абрамян Михаил Эдуардович

Статья посвящена особенностям использования электронного задачника Programming Taskbook for Bioinformatics при изучении алгоритмов неточного сравнения строк. В качестве примера рассматривается серия заданий, связанная с алгоритмом глобального выравнивания. Приводится подробное описание процесса выполнения одного из заданий с использованием электронного задачника и дается обзор других заданий, входящих в эту серию.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

We discuss essential features of the Programming Taskbook for Bioinformatics related to the study of approximate string matching algorithms. For that purpose we give a review of one group of educational tasks devoted to the global string alignment. We also provide step-by-step solution to a typical training task and briefly outline some other tasks in the group.

Текст научной работы на тему «Использование электронного задачника по строковым алгоритмам биоинформатики»

кпмпыатрр 13 унеБнам

ПрОЦЕССЕ

□ □□□□

Абрамян Михаил Эдуардович УДК 004.42+37.09

ИСПОЛЬЗОВАНИЕ ЭЛЕКТРОННОГО ЗАДАЧНИКА ПО СТРОКОВЫМ АЛГОРИТМАМ БИОИНФОРМАТИКИ1

Аннотация

Статья посвящена особенностям использования электронного задачника Programming Taskbook for Bioinformatics при изучении алгоритмов неточного сравнения строк. В качестве примера рассматривается серия заданий, связанная с алгоритмом глобального выравнивания. Приводится подробное описание процесса выполнения одного из заданий с использованием электронного задачника и дается обзор других заданий, входящих в эту серию.

Ключевые слова: электронный задачник, строковые алгоритмы поиска и неточного сопоставления, биоинформатика.

1. ВВЕДЕНИЕ

Настоящая статья, как и ранее опубликованная работа [1], посвящена электронному задачнику по строковым алгоритмам биоинформатики Programming Taskbook for Bio (PT for Bio). В [1] были рассмотрены особенности применения электронных задачников при изучении сложных алгоритмов, кратко описан универсальный задачник Programming Taskbook, на базе которого разработан задачник по биоинформатике, дана общая характеристика и описан состав задачника PT for Bio, а также приведен пример выполнения простого задания из группы Match, связанной с алгоритмами поиска подстрок. Объем работы не позволил дать развернутое описание особенностей задачника и более подробно рассмотреть группу Align, посвященную алгоритмам неточного сопоставления строк. В то же время, именно алгоритмы неточного сопоставления

© Абрамян М.Э., 2012

строк активно применяются в биоинформатике [2] и не так широко известны, как алгоритмы поиска, поэтому применение электронного задачника для их изучения представляет особый интерес. Предлагаемая статья призвана восполнить этот пробел. В ней содержится подробное описание основных этапов выполнения типового задания из группы Align, а также дается обзор серии, в которую входит рассмотренное задание. Чтобы продемонстрировать универсальный характер задачника, в качестве языка программирования в настоящей работе выбран язык C+ + (в то время как в примере из [1] использовался язык Python).

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

1 Работа выполнена в рамках ФЦП «Научные и научно-педагогические кадры инновационной России» (госконтракт № 14.740.11.0006).

2. ВЫБОР УЧЕБНОГО ЗАДАНИЯ И СОЗДАНИЕ ПРОЕКТА-ЗАГОТОВКИ

В большинстве алгоритмов неточного сравнения строк, описанных в группе Align, можно выделить два этапа: этап восходящей рекурсии, в ходе которого строится вспомогательная матрица, и этап обратного прохода по построенной матрице. После выполнения этапа восходящей рекурсии можно определить числовую характеристику, являющуюся мерой близости сравниваемых строк. Это либо варианты редакционного расстояния (задания Align5, Align12, Alignl 8), либо варианты сходства, связанного с глобальным выравниванием (Align31, Align38, Align43, Align48) или выравниванием отдельных частей анализируемых строк (Align53, Align59). В алгоритмах нахождения наибольшей общей подстроки или наибольшей общей подпоследовательности двух строк после построения вспомогательной матрицы можно определить длину общей подстроки (Align63) или, соответственно, общей подпоследовательности (Align67).

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

Align31. Даны строки S1 и S2. Кроме того, дано число m (< 10) - размер алфавита, состоящего из первых строчных латинских букв, и матрица оценок (структура матрицы описана в Align29). Для эффективного вычисления сходства строк V(|S1|, |S2|) по формулам из Align30 можно использовать метод восходящей рекурсии, основанный на последовательном вычислении

Щ РТ4 Load За грузка учебного зада кип [VCHET4J }Н В;В [|

Задание: ||

Каталог: |C:\PT4Work | ГЛ | Выход |

Группы заданий: Begin, Integer, Boolean, If, Case, For, While, Series, Proc, Minmax, Array, Matrix, String, File, Text, Param, Recur, Dynamic, Tree, ExamBegin, ExamTaskC, Align, MPIBegin, M PI Debug, Match, VCPROJ. Введите имя группы задании.

Рис. 1. Окно программного модуля PT4Load

элементов вспомогательной матрицы V размера (|Sj| + 1) х (|S2| + 1) (действия при заполнении матрицы V аналогичны действиям при заполнении матрицы D, описанным в Align5). Элемент, расположенный в последней строчке и последнем столбце матрицы V, определяет значение сходства данных строк. Используя метод восходящей рекурсии, найти матрицу V и вывести элементы ее двух последних строчек:

./=0,...,|S2l, Vj ./=0,...,|S2l, где n = |S1|.

В формулировке задания Align31 содержится ряд ссылок на предыдущие задания, в которых вводятся новые понятия, даются формулы или описываются действия, используемые при реализации требуемого алгоритма. Наличие большого числа подобных ссылок характерно для многих заданий группы Align. Это позволяет избежать дублирования определений и формул и тем самым уменьшает размеры формулировок заданий. Кроме того, ссылки дают возможность легко установить связи между рассматриваемыми «родственными» алгоритмами. Заметим, что в формулировках заданий мы, следуя переводу книги [2], называем строчками матричные (то есть табличные) строки (англ. row), оставляя термин «строка» (string) для текстовыгх строк.

Первым шагом при выполнении задания с применением электронного задачника PT for Bio является создание программы-заготовки для выбранного задания. Для этого студент должен перейти в свой рабочий каталог, связанный с задачником, и вызвать программный модуль PT4Load с помощью содержащегося в каталоге ярлыка Load. На экране появится окно модуля, в котором будут перечислены все доступные группы заданий (см. рис. 1).

В списке присутствуют группы, входящие в универсальный задачник Programming Taskbook и связанные с различными разделами базового курса программирования (тему, которой посвящена та или иная группа, легко определить по имени группы; например, группы Array и Matrix содержат задания на обработку одномерных и двумер-

ных массивов, группы File и Text - на обработку двоичных и текстовых файлов, группы ExamBegin и ExamTaskC связаны с заданиями ЕГЭ по информатике). Список групп увеличивается при установке дополнений -специализированных задачников. Например, после установки задачника по параллельному программированию PT for MPI [3] в списке появятся группы MPIBegin и MPIDebug, а после установки задачника по биоинформатике - группы Match и Align.

Модуль PT4Load позволяет выбрать не только задание, но и программную среду, в которой это задание будет выполняться. Имя текущей программной среды и номер ее версии указывается в заголовке окна модуля. Приведенный рисунок соответствует настройке, при которой текущей средой является среда Microsoft Visual Studio .NET 2010 для языка C++. Для выбора другой среды достаточно вызвать контекстное меню модуля PT4Load и выбрать нужную среду из появившегося списка. Следует отметить, что в любых средах языка C++, поддерживаемых задачником, действия при выполнении заданий будут практически одинаковыми.

После ввода допустимого имени задания (в нашем случае «Align31») кнопка «Загрузка» станет доступной; при ее нажатии будет создан проект-заготовка для указанного задания, автоматически запустится выбранная среда программирования и в нее загрузится созданный проект.

Программный модуль PT4Load можно использовать не только для создания, но и для загрузки уже существующего проекта, связанного с требуемым заданием.

Проект-заготовка на языке C++ состоит из нескольких файлов, однако в редактор среды будет загружен один файл с именем Align31 .cpp, поскольку именно в этом файле надо запрограммировать решение задачи. В листинге 1 приводится начальная часть файла Align31.cpp (завершающая часть содержит описание стартовой функции WinMain, которую при выполнении задания изменять не требуется). Файл содержит директивы подключения необходимых заголовочных файлов (в частности, файла pt4.h с объявлениями вспомогательных фун-

кций задачника) и описание функции Solve, с вызова которой начинается процесс выполнения задания (вызов функции Solve производится в try-блоке функции WinMain, что позволяет задачнику перехватывать и обрабатывать ошибки времени выполнения). Первым оператором функции Solve является оператор вызова функции Task, инициализирующей задание Align31.

3. ОКНО ЗАДАЧНИКА

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

Кроме двух исходных строк S1 и S2 и числа m, определяющего количество начальных букв латинского алфавита, которые могут входить в исходные строки, в задании приводятся элементы матрицы оценок s, определяющие относительный «вес» пар символов при их выравнивании. Определение матрицы оценок приводится в задании Align29. Это квадратная матрица порядка m + 1; ее строчки и столбцы связываются с различными символами алфавита, используемого в исходных строках, а также с символом пробела (с этим символом связывается последняя строчка и последний столбец матрицы оценок). Во всех заданиях предполагается, что матрица оценок является симметричной, поэтому в наборе исходных данных приводится только верхняя треугольная часть этой матрицы. Для большей наглядности строчки и столбцы матрицы оценок снабжаются заголовками, содержащими те сим-

Листинг 1

#include <windows.h> #pragma hdrstop #include "pt4.h"

void Solve() {

Task("Align31");

}

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

Запуск программы с заданием считается ознакомительным, поскольку в программе не выполняются действия по вводу-выводу данных.

Приведенное на рис. 2 стандартное окно задачника ориентировано, прежде всего, на задания, для которых формулировки и наборы данных занимают не более пяти экранных строк. Таково большинство заданий, входящих в базовый вариант задачника. Однако задания, связанные с реализацией сложных алгоритмов, подобные рассматриваемому заданию А^пЗ 1, включают существенно более развернутые формулировки (которые, кроме того, нередко снабжаются примечаниями) и большие наборы данных. При выполнении таких заданий удобнее использовать альтернативный вариант окна, размеры которого определяются размерами формулировки задания и наборов данных. Для переключения в альтернативный режим достаточно нажать кнопку быстрого доступа «Режим», расположенную в правом верхнем углу окна. Вид альтернативного окна для задания А%п31 приведен на рис. 3.

При выходе из программы задачник запоминает выбранный режим окна и при последующем запуске автоматически восста-навливаетего.

4. ДОПОЛНИТЕЛЬНЫЕ РЕЖИМЫ ЗАПУСКА ПРОГРАММЫ С УЧЕБНЫМ ЗАДАНИЕМ

Ознакомление с деталями алгоритма, которому посвящено задание, часто требует обращения к другим заданиям, упомянутым в формулировке. Для этого можно, например, временно изменить имя задания, указанное в качестве параметра процедуры Task, и повторно запустить программу. В результате в окне задачника будет выведена информация, связанная с новым заданием. Однако удобнее запустить программу с заданием в демонстрационном режиме. Для этого достаточно добавить к имени задания в функции Task символ «?» (например, «Align31?»). При демонстрационном запуске проверка правильности решения не производится, однако появляется возможность просматривать все задания, входящие в указанную группу, используя дополнительные кнопки окна задачника (см. рис. 4). Кроме того, для каждого задания можно просматривать различные варианты исходных данных и соответствующие им результаты.

Другим удобным способом ознакомиться со всеми заданиями группы является генерация html-страницы с формулировками всех заданий. Для этого достаточно в качестве параметра функции Task указать имя группы, дополненное символом «#» (в нашем случае «Align#»). После генерации html-страницы автоматически запускается

"У Programming Taskbook - Электронный задачник по программированию [С++]

ГЛОБАЛЬНОЕ ВЫРАВНИВАНИЕ СТРОК Задание: Al¡gn31 *

Результаты (F2] U вет (F3] Режим (F4]

Выполняет: Иванов Петр

Даны строки Si ж Sz■ Кроме того, дано число га (<10) — размер алфавита, состоящего из первых строчных латинских букв, и матрица оценок (структура матрицы описана в Align29). Для эффективного вычисления сходства строк V( Si , S2 ) по формулам из Align30 можно использовать метод восходящей рекурсии, основанный на последовательном вычислении элементов

3i = "ácabcábebábeábecáe" В 2 = "dbcdbcddebdedbecde" 1 5 10 15 Верхняя треугольная часть сиыметрич ной ма трицы оценок:

m = о

«а» «Ь» «с» «й» «е» «f» « >;

«а» 1 -4 -2 -3 -1 -1 -4

«Ъ» 7 -2 -2 -6 -9 -8

0

1

6 7 о 9 10 11 12 13 14 15 16 17 1Е Vr.-i,: , j = 0, . . . , S2 :

2 0

-72 -66 -51 -45 -39 -24 -20 -16 -13 -1 10 14

Vix, j , j " О, . . . , S2 : -77 -71 -56 -5С -44 -29 -25 -21 -15 -6 5 9 21 19 21 33 34

Пример верного решения ^Полученные результаты /

4 3

[С|[|+ТаЫ

Ознакомительный запуск:

не выполнена ни одна из операций ввода-вывода.

Выкод (Esc)

Рис. 2. Ознакомительный запуск задания Align31 (стандартный режим окна)

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

Пользуясь отмеченными возможностями, студент должен ознакомиться со структурой матрицы оценок, описанной в задании А%п29, а из формулировки задания А%п30 получить рекуррентные формулы для элементов матрицы V (задание А%п30 приведено на рис. 4).

Идея метода восходящей рекурсии описывается в задании А%п5 (в применении к матрице редакционных расстоянии). Она состоит в последовательном вычислении элементов матрицы по строчкам после предварительного нахождения базовых элемен-

тов матрицы, расположенных в ее нулевой строчке и столбце. При этом на этапе вычисления элемента матрицы, расположенного в г-й строчке и у-м столбце, уже известныI все три элемента, входящие в формулу для V., а именно элементы, расположенные выше, левее и одновременно выше и левее элемен-

5. ОСОБЕННОСТИ ВВОДА-ВЫВОДА

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

При выполнении заданий с применением электронного задачника программа студента получает исходные данные непосредственно от задачника. Это, во-первых, позволяет существенно ускорить процесс отладки, так как не требует ввода данных с клави-

Kj] Programming Taskboak -

й задачник по программированию [С++]

ГЛОБАЛЬНОЕ ВЫРАВНИВАНИЕ СТРОК Задание: Align31 *

Результаты (F2] ЦветрЗ] Режим (F4]

Выполняет: Иванов Петр

Ознакомительный запуск:

не выполнена ни одна из операций ввода-вывода.

Выход (Esc)

Даны строки 51 и • Кроме того, дано число ш (<10} — размер алфавита, состоящего из первых строчных латинских букв, и матрица оценок (структура матрицы описана в АИдп29) . Для эффективного вычисления сходства строк V(|Зх|,15гI> по формулам из А11дп30 можно использовать метод восходящей рекурсии, основанный на последовательном вычислении элементов вспомогательной матрицы V размера ( 1 Эх|+1}х(|Б2!+1) (действия при заполнении матрицы V аналогичны действиям при заполнении матрицы Б, описанным в АИдп5) . Элемент, расположенный в последней строчке и последнем столбце матрицы V, определяет значение сходства данных строк. Используя метод восходящей рекурсии, найти матрицу V и вывести элементы ее двух

последних строчек: Vn-i,jr j=0.

|S2||

j=0.

I Sa I jr где n=|Si | .

Исходные данные

51 — "dcabcdbebdbedbecde"

52 — "dbcdbcddebdedbecde"

|1 |5 1|0 1|5 Верхняя треугольная часть симметричной матрицы оценок:

m — о

«а» «Ь» «с» <<d>> «е» «f»

«а» «Ь» «с» <<d>>

1 -4 7

-2 -2

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

0

-3 -1 -1 -4

-2 - б -9 -В

-2 -5 -2 -1

2 -2 -2 -2

1 -7 -5

3 -2

0

Пример верного решения

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Vn-1,jr j = 0,...,|S2I: -72 -66 -51 -45 -39 -24 -20 -16 -13 -1 10 14 20 24 26 38 39 43 38

Vn,jr j = 0, . . ., |S2 I : -77 -71 -56 -50 -44 -29 -25 -21 -18 -6 5 9 21 19 21 33 34 38 50

Рис. 3. Ознакомительный запуск задания Align31 (альтернативный режим окна)

атуры или их предварительного занесения в файл, и, во-вторых, повышает надежность отладки, поскольку задачник при каждом тестовом запуске генерирует новый набор исходных данных. Исходные данные генерируются с применением датчика случайных чисел и с учетом особенностей выполняемого задания; в частности, если в алгоритме решения требуется предусмотреть обработку каких-либо особых случаев, то можно гарантировать, что при некоторых тестовых испытаниях программе будут предложены наборы, соответствующие этим особым случаям.

Для получения данных, подготовленных задачником, программа студента должна использовать специальные средства ввода,

аналогичные стандартным средствам соответствующего языка программирования. Например, для языков Pascal и Visual Basic предусмотрен набор процедур, каждая из которых предназначена для ввода одного элемента данных определенного типа. В варианте задачника для языка C++ предусмотрен специальный поток pt, объявленный в заголовочном файле pt4.h.

Вывод результатов должен выполняться таким образом, чтобы они были доступны задачнику для проверки. С этой целью используются специальные средства вывода. Для языка C++ вывод может осуществляться с помощью того же потока pt (который, таким образом, является потоком ввода-вывода). Результаты, полученные программой,

I^J Programming Taskbook - Электронный задачник по программированию [С++]

ГЛОБАЛЬНОЕ ВЫРАВНИВАНИЕ СТРОК Задание: АНдпЗО*

Цвет (F3) Режим (F4)

Демо-запуск: Иванов Петр

Новые данные (Space)

Предвдущее задание (BS)

Следующее задание (Enter]

Выход (Esc)

Ц

Оптимальным оценочным выравниванием строк Si и S2 (или просто оптимальным выравниванием} называется любое выравнивание, имеющее максимальную полную оценку (определение оценки приведено в Align29). При этом сама максимальная полная оценка называется сходством строк Si и S2 . Даны строки Si, S2 и числа ki, кг (0<ki<I Si|, 0<k2:í|S2l) . Кроме того, дано число т {<10} — размер алфавита, состоящего из первых строчных латинских

букв, и матрица оценок (структура матрицы описана в Align29). Через V(i,j) обозначается сходство строк Si[l..i] и S2[l..j]. Справедливы следующие соотношения (символ подчеркивания «_» обозначает пробел):

• для любого i V(i,0)=Sk=i.....is(Si[k],_);

• для любого j V(0,j)=Ek=i,. . ., js (_, S2 [k]) ;

■ если i>0 и j>0, то V(i,j}=max{V(i-1,j)+s(Si[i],_), V(i,j-1}+s(_,S2[j3), V {i-1,j-1)+s (Si[i],S2[j])}. Найти V(ki,k2}, используя рекурсивную функцию, выполняющую вычисления по приведенным формулам (так называемая нисходящая рекурсия). Вывести значение V(ki,k2) и количество рекурсивных вызовов функции, которое потребовалось для его вычисления. Примечание. Редакционное расстояние для двух строк (см. ñlign3) служит мерой различия этих строк (более «близкие» строки имеют меньшее редакционное

расстояние}. В противоположность этой характеристике, значение сходства строк будет тем больше, чем более «близкими» будут строки. В ряде алгоритмов (в частности, при локальном выравнивании строк) оказывается более удобным использовать меру сходства, чем меру различия. Приведенный алгоритм, как и алгоритм нахождения редакционного расстояния (см. Align4), является алгоритмом динамического программирования.

Исходные данные

31 = г,ейееасеЬЗйЬ^ЬаЗасЗеаЬс1Ьс1ее" = пеееасеЬ^с1ЬЬЬаЬесс1еаЬс1Ьее" |1 |5 1|0 1|5 2|0 2|5 Верхняя треугольная часть симметричной матрицы оценок:

ti = «а»

«ь»

« с» <лd^ «е»

5

«а» 5

к2 = 8 «с» -1 -1 4 -2

m = 5 <d> «е» -2 -3 -7 -5 -3 -3 9 -5 5

-3 -9 -5 -2 0

Пример верного решения

V(ki,k2) = -4 Количество рекурсивных вызовов:

Рис. 4. Демонстрационный запуск программы для группы Align

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

Контроль за организацией ввода и вывода достаточно просто автоматизировать, поэтому задачник в состоянии самостоятельно выявлять различные ошибки ввода-вывода. На начальном этапе выполнения задания студенты часто допускают подобные ошибки, которые, разумеется, будут приводить к неправильной работе всей программы. Автоматический контроль за ошибками ввода-вывода существенно упрощает поиск таких ошибок и обеспечивает их быстрое исправление. Задачник в состоянии диагностировать три основных типа ошибок ввода-вывода: это ошибки, связанные с вводом-выводом недостаточного количества данных, с попыткой ввода-вывода лишних данных и с попыткой ввода-вывода данных неверного типа.

В качестве иллюстрации описанных выше особенностей задачника рассмотрим вариант функции Solve, в котором вводится часть исходных данных, а именно исходные строки si и s2 и размер m матрицы оценок (листинг 2).

Листинг 2

void Solve() {

Task("Align31"); string si, s2; int m;

pt >> si >> s2 >> m;

}

Запуск данного варианта программы уже не будет считаться ознакомительным, поскольку программа выполняет действия по вводу данных. Однако вводятся не все исходные данные, поэтому задачник выведет соответствующее сообщение об ошибке (см. рис. 5). Для того чтобы еще более упростить для студента поиск и исправление подобных ошибок, в окне задачника дополнительно отображается панель индикаторов ввода-вывода, на которой в текстовом и графическом виде выводится информация о количестве введенных и выведенных элементов данных. Кроме того, на этой панели располагается индикатор прогресса выполнения задания, который будет заполняться при проведении успешных тестовых испытаний. Рисунок демонстрирует еще одну возмож-

Programming Taskbook - Электронный задачник по программированию [С++]

ГЛОБАЛЬНОЕ ВЫРАВНИВАНИЕ СТРОК Результаты (F2] ЦветИ Режим (F4) 1

Задание: Align31 * Выполняет: Иванов Петр J

Введены не все требуемые исходные данные. Количество прочитанных данных: 3 (из 58). Выход (Esc)

Введено данных: 3 из 58 И| Выведено данных: 0 из 36 Пройдено тестов 0 из 5

ы

Исходные данные

Si — "cghehebcgaafbced"

S2 = "cfhedebcgbagfbced" n = 9

I 1 |5 110 1|5 : 1::: <■. с >: : 6. » < Г ; ; «f » ' g «h* « 1: > «

Верхняя треугольная часть «а» С -3 -1 -1 -5 -8 -2 -e -2 -3

симметричной матрицы оценок: «Ь» 6 -7 -9 -e -6 -2 -4 -3 -В

«с» 7 -B -i -3 -2 -4 -1 -1

«с.» 6 -3 -3 -4 -6 -В -в

« е » 2 - 5 -7 -1 -в -6

« f » 6 -4 -2 -в -7

<<q>> 1 -6 -3 -2

с h >: 9 -9 -6

«1» 5 -5

С

Пример верного решения

0 1 2 3 4 5 6 7 В S 1С 11 12 13 14 15 16 17

Vn-l, j, j = 0, . . . , S2 :

-бб -58 -45 -39 -31 -27 -19 - ■13 -5 - 1 1С 11 9 1С 24 32 4 С 32

Рис. 5. Окно задачника с сообщением об ошибке ввода

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

6. ТЕСТИРОВАНИЕ ПРАВИЛЬНОГО РЕШЕНИЯ

Мы не будем приводить полный вариант программы с правильным решением задачи Align31, поскольку любой такой вариант имеет достаточно большой размер, и, кроме того, анализ подобного решения не выявит дополнительных особенностей, связанных с использованием электронного задачника. Примеры решений нескольких типовых задач из групп Match и Align (в том числе задачи Align31), причем с использованием различных языков программирования, приводятся в разделе «PT for Bio» сайта электронного задачника [4]. Отметим лишь, что разработанный вариант решения считается правильным только в случае, если он успешно пройдет серию тестовых испытаний, на каждом из которых задачник предложит для обработки новый вариант исходных данных. При неудачном тестовом испытании отсчет

успешных тестов начинается заново. На рис. 6 приводится вид окна задачника после четвертого тестового испытания.

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

7. ПРИМЕР СЕРИИ УЧЕБНЫХ ЗАДАНИЙ

В [1] была отмечена важная возможность, доступная при изучении сложных алгоритмов с помощью электронного задачника: подобное изучение можно организовать в виде выполнения серии заданий, каждое из которых посвящено новым понятиям, используемым в алгоритме, или реализации какого-либо этапа алгоритма.

В качестве примера подобной серии можно привести серию, включающую рассмотренное ранее задание А^п31. Эта серия посвящена алгоритму нахождения сходства строк и построения оптимального оценочного выравнивания и включает 9 зада-

Programming Taskbook - Электронный задачник по программированию [С++] ШЕ

ГЛОБАЛЬНОЕ ВЫРАВНИВАНИЕ СТРОК Результаты (F2] Цвет (F3) Режим (F4) I

Задание: Align31 * Выполняет: Иванов Петр

Верное решение. Тест номер А (из 5). Выкаа (Esc)

I Введено данных: 48 из 48 Выведено данных: 32 из 32 Пройдено тестов: 4 из 5

Ii-1- _ ■

II N

Исходные данные

Si - "bhcedehcedgcgh"

S2 = "bhcgdfedcedgbgh" ra = 8

| 1 | 5 1 | 0 1 | 5 «as «b» «c» «d» «e» «f» с h у> <; s

Верхняя треугольная часть «ах> 0 -1 -9 -8 -4 -1 -2 - 2

симметричной матрицы оценок: «b» S -9 -2 - 8 -4 -1 -2 - 3

«с» 2 -2 -5 -5 -4 -2 - 9

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4 -5 -4 -7 -1 - 8

«еу> 8 -й -1 -1 - 7

«f» 4 -5 -3 - 3

«g» 7 -4 - 3

«h» 2 - 1

« » 0

Полученные результаты

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Vn-l, j, j = 0,... ,|S2|:

-75 -64 -57 -46 -36 -28 - 24 -13 -1 10 12 18 28 30 3 8 37

Vn,j , j = 0, . . ., |S2 | :

-76 -65 -58 -47 -37 -29 - 25 -14 -2 9 11 17 27 29 37 40

_ _ _ _

Рис. 6. Окно задачника с сообщением об успешном тестовом испытании

ний: А%п29-А%п37. При обсуждении задания А^п31 уже упоминались вводные задания этой серии А%п29 и А^п30: в первом из них вводится в рассмотрение матрица оценок и дается определение полной оценки выравнивания (в задании требуется вычислить оценку выравнивания для данных двух строк, причем сам задачник предоставляет некоторое выравнивание для этих строк, а также матрицу оценок); во втором задании вводится понятие оптимального оценочного выравнивания и приводятся рекуррентные формулы для его вычисления на основе построения вспомогательной матрицы V (в задании требуется реализовать вычисление некоторого элемента матрицы V, используя простой, но неэффективный алгоритм нисходящей рекурсии; вид окна задачника для этого задания приведен на рис. 4).

Продолжает серию набор заданий, посвященный реализации алгоритма восходящей рекурсии. Кроме А%п31 в этот набор входит задание А^п32, в котором требуется модифицировать алгоритм восходящей рекурсии таким образом, чтобы он позволял найти не только значение сходства строк, но и количество различных вариантов оптимального выравнивания.

Следующие три задания серии посвящены второму этапу алгоритма: обратному проходу по матрице, полученной методом восходящей рекурсии. Обратный проход используется для нахождения какого-либо варианта (или всех вариантов) оптимального редакционного предписания (А^п7-9, АН^14-15, АН^20-21), глобального выравнивания (А^п33-35, А%п39-40, А%п44-45, А%п49-50), приближенного вхождения одной строки в другую (АН^55-56), локального выравнивания (А%п60-61), наибольшей общей подстроки (А^п64-65), наибольшей общей подпоследовательности (А%п68).

Приведем формулировку задания А%п33, в которой описывается алгоритм обратного прохода.

А^пЗЗ. Даны строки и Б2, число т (< 10) - размер алфавита, состоящего из первых строчных латинских букв, и матрица

оценок (структура матрицы описана в АН^29). Кроме того, дана матрица V, полученная методом восходящей рекурсии (см. А%п31). Известно, что имеется единственный вариант оптимального выравнивания для 51 и Б2. Требуется найти это выравнивание (А 1, А2), выполняя обратным проход по матрице V, начиная с ее правого нижнего элемента и заканчивая левым верхним элементом; при этом для каждого элемента V■ ■ при I > 0 и ] > 0 перемещение выполняется в тот из элементов У^^ У^, У{-1 , на котором достигается максимум в формуле для V(i,j) (см. А%п30); для элементов V) j перемещение всегда выполняется влево, а для элементов V- 0 - вверх. Перемещение влево соответствует вставке пробела в строку А1 и текущего элемента в строку А 2, перемещение вверх - вставке пробела в строку А2 и текущего элемента 51 в строку А1, перемещение по диагонали влево и вверх соответствует вставке в А1 и А2 текущих элементов и соответственно (символы в строках и перебираются с конца, строки А1 и А 2 заполняются от конца к началу). Вывести найденные строки А1 и А2.

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

Два следующих задания, посвященных обратному проходу, являются более сложными. В А^п34 уже не предполагается, что оптимальное выравнивание является един-

ственным, и определяется порядок действий в случае, если при обратном проходе на каком-либо шаге возможны перемещения более чем в один из соседних элементов. Требуется найти тот вариант оптимального выравнивания, который соответствует описанному порядку действий. Наконец, в А^п35 ставится наиболее общая задача: найти все варианты оптимального выравнивания и вывести их в определенном порядке.

Завершают серию итоговыге задания, в которых требуется реализовать алгоритм оптимального выравнивания в полном объеме; при этом в А%п36 требуется найти один из вариантов выравнивания, а в А%п37 - все варианты.

Поскольку серия состоит из групп однотипных заданий - ознакомительных (Align29-Align30), связанных с этапом восходящей рекурсии (Align31-Align32), связанных с этапом обратного прохода (Align33-Align35) и итоговых (Align36-Align37), - преподаватель может подготовить варианты индивидуальных заданий, в каждый из которых будет входить по одному заданию из каждой группы. В состав комплекса Teacher Pack - дополнения к электронному задачнику, предназначенного для преподавателя [5], - входит конструктор вариантов, позволяющий автоматически генерировать подобные варианты индивидуальных заданий.

Литература

1. АбрамянМ. Э. Реализация электронного задачника по строковым алгоритмам биоинформатики // Компьютерные инструменты в образовании, 2012. № 2. С. 43-52.

2. Гасфилд Д. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология. СПб.: БХВ-Петербург, 2003.

3. АбрамянМ. Э. Электронный задачник по параллельному программированию на основе технологии MPI // Компьютерные инструменты в образовании, 2011. № 6. С. 47-54.

4. Электронный задачник Programming Taskbook / http://ptaskbook.com/ (дата обращения: 30.06.2012).

5. АбрамянМ. Э. Использование специализированного программного обеспечения для преподавателя при организации и проведении лабораторных занятий по программированию // Информатика и образование, 2011. № 5. С. 78-80.

Abstract

We discuss essential features of the Programming Taskbook for Bioinformatics related to the study of approximate string matching algorithms. For that purpose we give a review of one group of educational tasks devoted to the global string alignment. We also provide step-by-step solution to a typical training task and briefly outline some other tasks in the group.

Keywords: educational software, exact and approximate string matching algorithms, bioinformatics.

© Наши авторы, 2012. Our authors, 2012.

Абрамян Михаил Эдуардович, кандидат физико-математических наук, доцент кафедры алгебры и дискретной математики Южного федерального университета, таЪг@таИ1. sfedu. г и

i Надоели баннеры? Вы всегда можете отключить рекламу.