ВВЕДЕНИЕ: Я биоинформатик. В своем анализе, который я выполняю по всем генам человека (около 20 000), я ищу конкретный мотив короткой последовательности, чтобы проверить, сколько раз этот мотив встречается в каждом гене.
Гены «записаны» в линейной последовательности из четырех букв (A, T, G, C). Например: CGTAGGGGGTTTAC ... Это четырехбуквенный алфавит генетического кода, похожий на секретный язык каждой клетки, именно так ДНК на самом деле хранит информацию.
Я подозреваю, что частые повторения определенной короткой мотивной последовательности (AGTGGAC) в некоторых генах имеют решающее значение в специфическом биохимическом процессе в клетке. Поскольку сам мотив очень короткий, с помощью вычислительных инструментов трудно различить истинные функциональные примеры в генах и те, которые выглядят случайно. Чтобы избежать этой проблемы, я получаю последовательности всех генов и объединяю их в одну строку и перемешиваю. Длина каждого из исходных генов была сохранена. Затем для каждой из исходных длин последовательностей была построена случайная последовательность путем многократного выбора A или T или G или C случайным образом из сцепленной последовательности и переноса ее в случайную последовательность. Таким образом, результирующий набор рандомизированных последовательностей имеет такое же распределение длины, как и общий состав A, T, G, C. Затем я ищу мотив в этих рандомизированных последовательностях. Я выполнил эту процедуру 1000 раз и усреднил результаты.
15000 генов, которые не содержат данный мотив
5000 генов, которые содержат 1 мотив
3000 генов, которые содержат 2 мотива
1000 генов, которые содержат 3 мотива
...
1 ген, содержащий 6 мотивов
Таким образом, даже после 1000-кратной рандомизации истинного генетического кода нет никаких генов, которые бы имели более 6 мотивов. Но в истинном генетическом коде есть несколько генов, которые содержат более 20 экземпляров мотива, что говорит о том, что эти повторы могут быть функциональными, и вряд ли их можно найти в таком изобилии по чистой случайности.
ПРОБЛЕМА:
Я хотел бы знать вероятность нахождения гена с, скажем, 20 появлений мотива в моем распределении. Поэтому я хочу знать вероятность случайного нахождения такого гена. Я хотел бы реализовать это в Python, но я не знаю, как.
Могу ли я сделать такой анализ в Python?
Любая помощь будет оценена.