Консольное приложение на C++ с использованием MPI и OpenMP для поиска мотивов в последовательностях ДНК.
- Компилятор C++ с поддержкой C++11
- MPI (OpenMPI или MPICH)
- OpenMP
- Make
makeИли вручную:
mpic++ -std=c++11 -O3 -fopenmp -o motif_finder main.cppmpirun -np <количество_процессов> ./motif_finder <chipseq_file> <motif_file> [num_threads]# 1 процесс, 4 потока
mpirun -np 1 ./motif_finder FoxA2_5000.fst FoxA2_major_30.mot 4
# 2 процесса, по 2 потока на процесс
mpirun -np 2 ./motif_finder FoxA2_5000.fst FoxA2_major_30.mot 2
# 4 процесса, по 4 потока на процесс
mpirun -np 4 ./motif_finder FoxA2_5000.fst FoxA2_major_30.mot 4Файл в формате FASTA:
>sequence_1
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>sequence_2
CGATCGATCGATCGATCGATCGATCGATCGATCGATCGAT
...
Файл в формате FASTA с мотивами длиной 8 позиций:
>motif_1
ATGCATGC
>motif_2
RYKMSWBD
...
Поддерживаются IUPAC символы: A, T, G, C, R, Y, S, W, K, M, B, D, H, V, N
Программа выводит:
- Количество загруженных последовательностей и мотивов
- Количество последовательностей с совпадениями
- Частоту совпадений (в процентах)
- Время выполнения
Скрипт test.sh автоматически запускает все тесты и генерирует графики:
./test.shСкрипт:
- Компилирует программу
- Запускает 8 тестов с разными конфигурациями (процессы × потоки)
- Сохраняет результаты в
test_results.txtиtimings.csv - Автоматически генерирует графики и таблицу результатов
После выполнения test.sh создаются:
- test_results.txt - полный вывод всех тестов
- timings.csv - таблица с результатами в формате CSV
- test_results.png - графики результатов (4 графика)
- test_results_3d.png - 3D визуализация результатов
Если у вас уже есть файл timings.csv, можно сгенерировать графики отдельно:
python3 plot_results.py timings.csvpip3 install matplotlibИли используйте файл requirements.txt:
pip3 install -r requirements.txtmake clean
rm -f test_results*.txt test_results*.png timings.csv