Вопрос по обработке цифрового сигнала
Здравствуйте.
Расскажу о задаче над которой работаю.
Есть подход представления биомолекул в виде последовательности качественно отличающихся друг от друга состояний. Например для молекулы ДНК, в состав которой входит 4 разных вида оснований (A C G T) любую последовательность можно представить в виде набора букв ACCGTTGGGTTCGCGCGC... Для молекулы ДНК характерны длины 50-100*10^6 букв.
То есть 1D массив, где каждой букве соответствует индекс от 1 до..
Для молекулы ДНК, кроме ее "буквенного состава" известны различные биологические и физические параметры.
Например какие-то участки отвечают за одно а какие-то за другое. Одни обладают постоянством состава в эволюции ( то есть очень похожи у ящериц, рыб, человека мыши), какие-то наоборот. Кроме того есть физические параметры, например структура связей между "буквам", для исследования которой можно преобразовать 4х буквенный код ( A C G T) В более или менее вырожденные коды. Например для типов оснований ( CG - сильные AT - слабые) код будет двухбуквенным ( 1 - сильные, 0 - слабые), а для каких-то исследований - 4 буквы превращаются в 6 и более разных букв. Кроме того есть задача маскировки ( исключения из области наблюдения) определенных фрагментов последовательности. То есть когда часть последовательности я приравниваю к non significant.
В общем задача, в первом приближении, сводится к сопоставлению массивов(одинаковой размерности) вида
Массив ДНК : ACGTTTTGCGCGC...
Массив данных о ДНК ( например данные о консервации в эволюции): 0 0 0 0 0 0 0 25 27 28 28 27 25
Массив перекодированной ДНК ( сильные\слабые) 0 1 1 0 0 0 0 1 1 1 1 1 1
и так далее.
Нужно научиться видеть закономерности ( периодичность, фрактальность, иные закономерности ) внутри массивов ДНК и перекодированной ДНК ( статистически достоверно, с возможностью понять с чем та или иная закономерность связана)
Нужно сопоставлять массивы ДНК ( и в перекодированном виде тоже) и массивы данных о ДНК, для изучения корреляций, статистической значимости итд.
Приведу пример(смотрите P.S).
Мне интересно, существует ли внутренняя периодичность у последовательности ДНК ( оригинальной, то есть A C G T, и в различных перекодировках) внутренняя периодичность с шагом 80 букв.
То есть если взять участок в 800 букв, то будет ли там автокорреляции на длине 80, насколько она отличается от других автокорреляций ( с шагом 10 например), и как мне ее увидеть (различить) не на тестовой ( искусственной последовательности) а на достаточно большом массиве данных ( сотни тысяч - миллионы букв).
Нужно научиться сравнивать автокорреляцию шага 80, с автокорреляцией других шагов ( например 65) и видеть, что для таких последовательностей автокорреляция на 80 статистически значимо выше чем 65, а для других - нет.
Моя мысль состоит в том, что бы перевести ДНК в универсальный цифровой вид ( заменить буквы числами) и исследовать ее как сигнал ( спектр, фурье, фильтры и пр). Практическим навыкам нужно учиться.
Буду очень признателен за интерес к теме, вопросы советы, и подсказки.
С уважением Иван Викторович
P.S.
Существует дискретная последовательность (5 возможных различных состояний)
На сейчас я представляю различные состояния исходной последовательности в численном виде ( например 1 состояние - 50, 2 состояние - 100, 3 состояние - 150, 4 состояние - 200 5 состояние - 0)
Есть тестовая последовательность длинной 80 букв повторенная 10 раз
_80_.....х10_80.
В функци autocorr вижу так ( четкий пик на 80, взят лаг 320)
Хочется увидеть результат в виде единого пика на 80.
Подскажите пожалуйста, как это сделать ?
Спасибо
Ответы
Приведите Ваш код, пожалуйста.
Уважаемые Nameless.
Для желающих попробовать себя на реальных данных я подготовил папку с набором данных
В ней лежит описание файлов и возникших методических вопросов.
Буду рад интересным решениям на базе Матлаб. Спасибо за интерес к теме.
Ниже я коротко опишу задачу ( подробнее в документе по ссылке):
В подпапке test seq находятся 2 тестовые последовательности, плюс различные варианты их представлений.
1 тестовая последовательность 1 : 10 раз последовательно повторенные 80 букв геномного алфавита ( ACGT).
Последовательность представлена в 3 вариантах
Pri_10_80.fa - 80 букв расположены в 10 строках (одна под другой) - должна читаться линейно (то есть после 80 символа первой строки идет 1 символ второй строки и так далее).
hd41_10_80_BTYPE.fa - эта же последовательность, представленная в вырожденном виде
Буквам AG соответствует r а буквам CT - y
\Number\pri_10_80_num.fa - та же последовательность, переведенная в численный вид, в которой A = 50 C = 100 G = 150 T = 200
Задача увидеть четкий период в 80 букв
--------------
2 тестовая последовательность 2: состоящая из двух противоположных друг другу участков ( rrrrrrrrrryryrryyyrr и yyyyyyyyyyryryyrrryy) повторенных 20 раз ( общая длинна 800 = ((20+20)*20)
Последовательность представлена в 2 вариантах
Hd41_test20.fa - в виде r и y букв
\Number\hd41_test20_num.fa - численный вид ( r = 50 y = 150)
Задача - увидеть четкую корреляцию на 40 и антикорреляцию на 20
---------------
В подпапке real data находятся вариации реальных данных (размер 500000 букв), на которых можно проверять методы и гипотезы.
Я попробую, как выйду из отпуска.