Skip to content

This project implements substring search and sequence alignment algorithms for molecular sequences analysis. It includes the Rabin-Karp algorithm for substring search and the Needleman-Wunsch algorithm for sequence alignment. Developed in C++17, the code follows Google Style and includes a Makefile for building and testing the program.

License

Notifications You must be signed in to change notification settings

Astrodynamic/DNA_Analazer-Algorithms-for-working-with-text-in-CPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

init

Part 1. Реализация алгоритма Рабина-Карпа

Программа принимает на вход два файла. Они содержат последовательности a и b длины n и m соответственно, m <= n. Выходом программы является список позиций строки a, на которых b входит в a.

Пример входа:
Файл HIV-1_AF033819.3.txt и файл со следующим содержимым:

AAGCCTCAATAAAGCTT 

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

65 9150 9182 

Part 2. Реализация алгоритма Нидлмана — Вунша

Программа для выравнивания двух последовательностей над алфавитом {A, C, G, T}.
Входом программы является файл с тремя строчками. Первая строка содержит три числа - стоимость совпадения, несовпадения и гэпа. Две следующие строки -- последовательности для выравнивания. Выходом программы является одно число -- значение скора для наиболее оптимального выравнивания.

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

1 -1 -2 GGGCGACACTCCACCATAGA GGCGACACCCACCATACAT 

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

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

10 GGGCGACACTCCACCATAGA- || |||||| |||||||| | GG-CGACAC-CCACCATACAT 

Part 3. Соответствие регулярным выражениям

Программа для проверки соответствия последовательности над алфавитом {A, C, G, T} регулярному выражению.
Входом программы является файл с двумя строчками. Первая строка содержит последовательность, для которой будет проверяться соответствие. Вторая строка содержит паттерн, содержащий символы из алфавита и следующие символы:

  • . -- соответствует любому отдельному символу из алфавита;
  • ? -- соответствует любому отдельному символу из алфавита или отсутствию символа;
  • + -- соответствует нулю или более повторений предыдущего элемента;
  • * -- соответствует любой последовательности символов из алфавита или отсутствию символов.

Выходом программы является Истина/Ложь - соответствует ли заданная последовательность паттерну.

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

GGCGACACCCACCATACAT G?G*AC+A*A. 

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

True 

Part 4. K-подобные строки

Строки s1 и s2 k-подобны (для некоторого неотрицательного целого числа k), если возможно поменять местами две буквы в s1 ровно k раз так, чтобы результирующая строка была равна s2.

Программа для проверки k-подобия двух последовательностей над алфавитом {A, C, G, T}.
Входом программы является файл с двумя строчками. Выходом программы является наименьшее k, для которого s1 и s2 k-подобны. Если строки не являются анаграммами, вывести сообщение об ошибке.

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

GGCGACACC AGCCGCGAC 

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

3 

Part 5. Минимальная оконная подстрока

Программп для минимальной оконной подстроки для последовательности над алфавитом {A, C, G, T}.
Входом программы является файл с двумя строчками s и t. Оконной подстрокой строки s называется подстрока, содержащая все символы, входящие в строку t (включая дубликаты). Выходом программы является оконная подстрока минимальной длины. Если оконной подстроки нет, вернуть пустую строку.

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

GGCGACACCCACCATACAT TGT 

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

GACACCCACCATACAT 

About

This project implements substring search and sequence alignment algorithms for molecular sequences analysis. It includes the Rabin-Karp algorithm for substring search and the Needleman-Wunsch algorithm for sequence alignment. Developed in C++17, the code follows Google Style and includes a Makefile for building and testing the program.

Topics

Resources

License

Stars

Watchers

Forks