ВВЕДЕНИЕ: Я биоинформатик. В своем анализе, который я выполняю на всех генах человека (около 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?
Любая помощь будет оценена по достоинству.