Подтвердить ДНК в C / C ++ - PullRequest
       9

Подтвердить ДНК в C / C ++

6 голосов
/ 03 апреля 2011

Я перебираю последовательности ДНК, вытаскивая куски по 5-15 оснований за раз в объекты C ++ std :: string.Иногда моя строка будет содержать базу, отличную от ATCG, и я хочу предпринять действия, когда это произойдет.Например, я мог бы видеть:

CTACGGTACGRCTA

Поскольку существует «R», я хочу распознать этот случай.Я знаком с регулярными выражениями, но люди, кажется, рекомендуют несколько разных библиотек.Я видел Boost, TR1 и другие.Кто-нибудь может предложить другой способ поймать мои дела или сказать, какую библиотеку мне следует использовать и почему?

Спасибо

Ответы [ 5 ]

19 голосов
/ 03 апреля 2011

Регулярное выражение излишне для этого.Вы можете использовать std::string::find_first_not_of().

8 голосов
/ 03 апреля 2011

Использование C strspn() приходит на ум.

if (strspn(dnasequence, "ATCG") < strlen(dnasequence)) {
    /* bad character found */
}
5 голосов
/ 03 апреля 2011

Конечно, вы можете использовать регулярные выражения.Но почему бы не сделать это простым?

bool is_valid_base(char base) {
    switch (std::toupper(base)) {
        case 'A': case 'C': case 'G': case 'T': return true;
        default: return false;
    }
}

bool is_valid_dna(std::string sequence) {
    for (std::string::const_iterator i = sequence.begin(), end = sequence.end();
            i != end; ++i)
        if (not is_valid_base(*i))
            return false;
    return true;
}
1 голос
/ 03 апреля 2011

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

[^CGAT]

Или вот регулярное выражение для проверки всей последовательности:

^[CGAT]+$

Довольно просто.

Редактировать: Удален ненужный материал.

0 голосов
/ 14 августа 2017

R представляет потенциальную пару ДНК («буква»)?Если это так, упорядочение пар оснований является критическим для правильного отображения или точной интерпретации всей последовательности в целом.

В кодоне.Определите, в каком месте находится R?РАА, АРА, ААР, зная, что это очень важно.Затем обработайте их, определив их атрибуты.

Если это просто мусор или оставленные данные из хранилища данных.Перебрать и удалить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...