-
Инструкция по сборке:
1.1. Установить Scala Build Tool (sbt):echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 sudo apt-get update sudo apt-get install sbt
1.2. Запустить команду
sbt assembly
в корне проекта. Результатом её работы является файл с расширением.jar
в директорииtarget/scala-2.12
-
Инструкция по запуску:
Для запуска проекта используется командаjava -jar <file> [options]
. Предполагается, что на компьютере установлен JDK версии не ниже 8. Дополнительные опции запуска:--seq1 <value> Путь к файлу первой последовательности --seq2 <value> Путь к файлу второй последовательности -s, --sequenceType <value> Тип последовательностей (n - нуклеотиды, p - протеины) -g, --gap <value> Штраф за пропуски -e, --extended_gap <value> Штраф за последовательные пропуски(defaults to gap) --group <value> Размер групп, на которые разделяются выровненные последовательности --help Напечатать вспомогательное сообщение
-
Пример работы алгоритма:
Строка 1: ATTAAAT
Строка 2: AAAT
Тип последовательностей: белки
Матрица: DNAFull
Штраф за пропуски: -5
Штраф за последовательные пропуски: -5
Целью алгоритма является нахождение выравнивания, при котором результат (score
), соответствующий разнице между строками, будет минимальным. Данный параметр рассчитывается исходя из того, что любое промежуточное выравнивание можно получить, добавляя последующую букву или пропуск в каждую строчку другого выравнивания за исключением случая добавления пропусков в каждую из строчек. Базовыми промежуточными выравниваниями считаются выравнивания, состоящие только из пропусков.
Поскольку получение нового выравнивания из предыдущих неоднозначно, выбор происходит на основе максимизации параметра score
. Добавление пропуска в том или ином направлении в предыдущее выравнивание добавляет к параметру штраф за пропуск, а изменение параметра при фиксации двух символов происходит на основе весовой матрицы.
Базовый шаг - заполнение базовых случаев (вставка пропусков):
A | A | A | T | ||
---|---|---|---|---|---|
0 | -5 | -10 | -15 | -20 | |
A | -5 | ||||
T | -10 | ||||
T | -15 | ||||
A | -20 | ||||
A | -25 | ||||
A | -30 | ||||
T | -35 |
Шаг 1 - заполнение промежуточных выравниваний для 1-ых букв:
A | A | A | T | ||
---|---|---|---|---|---|
0 | -5 | -10 | -15 | -20 | |
A | -5 | 5 | 0 | -5 | -10 |
T | -10 | 0 | |||
T | -15 | -5 | |||
A | -20 | -10 | |||
A | -25 | -15 | |||
A | -30 | -20 | |||
T | -35 | -25 |
Шаг 2 - заполнение промежуточных выравниваний для 2-ых букв:
A | A | A | T | ||
---|---|---|---|---|---|
0 | -5 | -10 | -15 | -20 | |
A | -5 | 5 | 0 | -5 | -10 |
T | -10 | 0 | 1 | -4 | 0 |
T | -15 | -5 | -4 | ||
A | -20 | -10 | 0 | ||
A | -25 | -15 | -5 | ||
A | -30 | -20 | -10 | ||
T | -35 | -25 | -15 |
Шаг 3 - заполнение промежуточных выравниваний для 3-их букв:
A | A | A | T | ||
---|---|---|---|---|---|
0 | -5 | -10 | -15 | -20 | |
A | -5 | 5 | 0 | -5 | -10 |
T | -10 | 0 | 1 | -4 | 0 |
T | -15 | -5 | -4 | -3 | 1 |
A | -20 | -10 | 0 | 1 | |
A | -25 | -15 | -5 | 5 | |
A | -30 | -20 | -10 | 0 | |
T | -35 | -25 | -15 | -5 |
Шаг 4 - заполнение промежуточных выравниваний для 4-ых букв:
A | A | A | T | ||
---|---|---|---|---|---|
0 | -5 | -10 | -15 | -20 | |
A | -5 | 5 | 0 | -5 | -10 |
T | -10 | 0 | 1 | -4 | 0 |
T | -15 | -5 | -4 | -3 | 1 |
A | -20 | -10 | 0 | 1 | -4 |
A | -25 | -15 | -5 | 5 | 0 |
A | -30 | -20 | -10 | 0 | 1 |
T | -35 | -25 | -15 | -5 | 5 |
Таким образом, в результате работы алгоритма параметр score
определён как 5. Для выведения соответствующего выравнивания достаточно запоминать индексы колонок и строк, из которых осуществляется переход, при получении каждого нового выравнивания:
s1: ATTAAAT
s2: A--AA-T