У меня есть дерево Newick, которое построено путем сравнения сходства (эвклидовое расстояние) весовых матриц положения (PWM или PSSM) предполагаемые ДНК-регуляторные мотивы, которые представляют последовательности ДНК длиной 4-9 п.о.
Интерактивная версия дерева находится на iTol (здесь), с которым вы можете свободно играть - просто нажмите "дерево обновлений", после настройки ваших параметров:
Моя конкретная цель: свернуть мотивы (подсказки/конечные узлы/листья) вместе, если их средние расстояния до ближайшего родительского клада составляют < X (пакет ETE2 Python). Это биологически интересно, так как некоторые из генно-регуляторных ДНК-мотивов могут быть гомологичными (паралоги или ортологи) друг с другом. Это свертывание может быть выполнено с помощью графического интерфейса iTol, связанного выше, например. если вы выберете X = 0.001, то некоторые мотивы превратятся в треугольники (семейства мотивов).
Мой вопрос:. Может ли кто-нибудь предложить алгоритм, который либо выводит, либо поможет визуализировать, какое значение X подходит для "максимизации биологической или статистической значимости" свернутых мотивов? В идеале было бы некоторое очевидное изменение шага в каком-либо свойстве дерева при построении графика относительно X, что подсказывает алгоритму разумный X. Существуют ли для этого какие-либо известные алгоритмы/скрипты/пакеты? Возможно, код будет отображать некоторую статистику относительно значения X? Я пробовал строить график X по сравнению со средним размером кластера (matplotlib), но я не вижу очевидного "повышения шага", чтобы сообщить мне, какое значение X использовать:
Мой код и данные: Ссылка на мой Python script есть [здесь] [8], я сильно прокомментировал его, и он будет генерировать данные дерева и график выше для вас (используйте аргументы d_from, d_to и d_step для изучения отрезков расстояния, X). Вам нужно будет установить ete2, просто выполнив эти две команды bash, если у вас есть простая установка и Python:
apt-get install python-setuptools python-numpy python-qt4 python-scipy python-mysqldb python-lxml
easy_install -U ete2