Моя программа - выравнивание последовательности ДНК.Он сравнивает две последовательности ДНК путем поиска серии символов, которые находятся в одинаковом порядке во всех последовательностях.
Я преодолел блокпост и был бы очень признателен за помощь.Мне нужно заполнить свою матрицу выравнивания, чтобы она выглядела примерно так:
Это всего лишь пример, две строки ДНК могут быть любымиразмер, который я извлекаю из отдельного файла, но у меня есть все это.Мне просто нужна помощь, чтобы поместить это в матрицу.
Сначала я думал о создании массива двумерных символов, но затем переключился на массив двумерных строк, поскольку мои последовательности ДНК хранятся в двух строках.
РУКОВОДЯЩИЕ ПРИНЦИПЫ ПО ЗАПОЛНЕНИЮ MTX:
Все слоты в верхнем ряду должны быть установлены на штрафы за пробелы, умноженные на их индекс, т.е. 0 * пробел, 1 * пробел, 2 * пробел…
Все слоты в левом столбце должны быть установлены на штрафы за пробелы, умноженные на их индекс, т.е. 0 * пробел, 1 * пробел, 2 * пробел…
Начиная с верхнего левого угла, самый пустойслот и работа слева направо, сверху вниз, каждый слот должен быть заполнен в соответствии со следующими ограничениями: Если буква для каждой строки ДНК, соответствующей положению слота, одинакова, то значение слота должно быть по диагонали вверх и влевозначение слота плюс оценка совпадения
Если буква для каждой последовательности, соответствующей положению слота, не совпадает, то значение слота должно быть не более: o Значение восходящего слота плюс штраф за пробел oЗначение левого слота плюс штраф за пробел o Значение диагонали вверх и левого слота плюс штраф за несоответствие
Вот код, который у меня есть:
int match = 1;
int mismmatch = 7;
int gap = -1;
string seq1 = "GAATTCAGTA"; //DNA sequence 1: GAATTCAGTA
string seq2 = "GGATCGA"; //DNA sequence 2: GGATCGA
int DNA1Size = seq1.length();
int DNA2Size = seq2.length();
string mtx[DNA2Size][DNA1Size];
matrix[0][0] = " ";
matrix[0][1] = "-";
matrix[1][0] = "-";
for(int i = 2; i < DNA2Size; i++)
{
mtx[i] = seq2.at(i); //Hoping this would initialize the first row with sequence 2
}
for(int z = 2; z < DNA1Size; z++)
{
mtx[z] = seq1.at(z); ////Hoping this would initialize the first column with sequence 1
}
Итак,Я знаю, что это неправильно, но это то, что я получил до сих пор.Это я пытаюсь инициализировать первую строку и столбец обозначенными буквами и пробелами / тире.Кроме того, остальная часть матрицы должна быть инициализирована с использованием разрыва, соответствия и несоответствия, но, поскольку я даже не получил эту часть, я еще не начал с этого.Если бы кто-нибудь мог помочь, я бы любил тебя вечно!