Algorithmus zu entscheiden, cut-off für den Zusammenbruch dieses Baumes?

Ich habe einen Newick- Baum, der durch Vergleich von Ähnlichkeit (euklidischer Abstand) von Positionsgewichtsmatrizen (PWMs oder PSSMs) von putativen DNA-regulatorischen Motiven, die 4-9 bp lange DNA-Sequenzen sind, gebaut wird.

Eine interaktive Version des Baumes ist oben auf iTol ( hier ), die du frei spielen kannst – drücke einfach den "Updatebaum" nach dem Setzen deiner Parameter:

Bildbeschreibung hier eingeben

Mein spezifisches Ziel: Zusammenfassen der Motive (Spitzen / Terminalknoten / Blätter) zusammen, wenn ihre durchschnittlichen Entfernungen zum nächstgelegenen Elternteil <X ( ETE2 Pythonpaket ) sind. Dies ist biologisch interessant, da einige der genregulatorischen DNA-Motive homolog (Paralogen oder Orthologe) miteinander sein können. Das Zusammenbrechen kann über die oben verknüpfte iTol GUI erfolgen, zB wenn man X = 0,001 wählt, dann werden einige Motive in Dreiecke (Motivfamilien) zusammengebrochen.

Meine Frage: Kann jemand einen Algorithmus vorschlagen, der entweder ausgeben oder helfen würde, zu visualisieren, welcher Wert von X für die "Maximierung der biologischen oder statistischen Relevanz" der zusammengebrochenen Motive geeignet ist? Idealerweise würde es irgendeine offensichtliche Schrittänderung in irgendeiner Eigenschaft des Baumes geben, wenn er gegen X aufgetragen wird, was auf den Algorithmus ein vernünftiges X hindeutet. Gibt es irgendwelche bekannten Algorithmen / Skripte / Pakete dafür? Vielleicht wird der Code einige statistische gegen den Wert von X? Ich habe versucht, X vs. gemeine Clustergröße ( matplotlib ) zu plotten, aber ich sehe keinen offensichtlichen " Schrittanstieg ", um mich zu informieren, welchen Wert von X zu verwenden ist:

Bildbeschreibung hier eingeben

Mein Code und meine Daten: Ein Link zu meinem Python-Skript ist [hier] [8], ich habe es schwer kommentiert und es wird die Baumdaten generieren und die Pläne für dich verteilen (mit den Argumenten d_from, d_to und d_step, um den Distanzschnitt zu erkunden -offs, X). Sie müssen ete2 installieren, indem Sie einfach diese beiden bash-Befehle ausführen, wenn Sie einfach installieren und Python:

apt-get install python-setuptools python-numpy python-qt4 python-scipy python-mysqldb python-lxml easy_install -U ete2 

2 Solutions collect form web for “Algorithmus zu entscheiden, cut-off für den Zusammenbruch dieses Baumes?”

Ich denke, ich müsste mehr wissen, bevor ich konkrete Vorschläge geben kann. Aber vielleicht hilft das. Ich gehe davon aus, dass jeder Terminalknoten eine Sequenz ist und jeder interne Knoten ein PSSM ist.

Die Berechnung für X ist anwendungsspezifisch. Zum Beispiel ist das X, das du bekommst, wenn du ultraparalogs zusammenbrechen willst, ist nicht dasselbe wie das X, das du bekommst, wenn du alle Homologen zusammenbrechen willst.

Da Gene kontinuierlich durch Duplikation und Speziation erstellt werden, gibt es keinen einzigen Wert für X, der Sequenzen durch evolutionäre Beziehung unterscheidet. Deshalb erwarte ich nicht, dass du einen befriedigenden Proxy finden wirst, um evolutionäre Beziehungen zwischen Sequenzen zu bestimmen, indem du nur auf Clusterstatistiken schaust.

Eine strengere Methode würde einen Genbaum aus dem Gen jedes regulatorischen Motivs aufbauen und ihn mit einem Baumbaum versöhnen. Es gibt Software da draußen und zusätzliche Heuristiken zu Orthologie / Inparalog Identifikation.

Wenn du das machst, werden die internen Knoten deines Baumes mit dem abgeleiteten evolutionären Ereignis (zB Duplikation, Speziation) verziert. Dann kannst du den Baum klettern, der Knoten für Clades kollabiert, die du nicht interessierst.

Sie könnten versuchen, etwas ähnliches wie Baum Versöhnung wie @Jeff erwähnt verwenden. Aber Standard Baum Versöhnung wird tatsächlich fehlschlagen

Versöhnung beinhaltet zunächst Hinzufügen von Zweigen, die "Verluste" von evolutionären Zeichen während des Zielbaums darstellen. Dann geben sie die Knoten an, bei denen "Duplikationen" von evolutionären Zeichen aufgetreten sind. Die gewichtete Summe von Verlusten und Duplikationen bietet eine Kostenfunktion zur Optimierung.

Aber in deinem Fall ist das Problem, das du lösen möchtest, "diesen Superbaum in angemessene, orthologe Unterbäume zu brechen". Dies bedeutet, dass Sie nicht wirklich wollen, um Verluste so viel wie Sie Duplikationen. Sie wollen einen Weg, um den Baum so zu punkten, dass es zeigt, wie viele orthologe Unterbäume in Ihren Superbaum verschmolzen sind. So können Sie diesen Scoring-Ansatz ausprobieren:

  1. Nehmen Sie einen Superbaum, zählen Sie die Anzahl der doppelten Arten, S1.
  2. Klappen Sie alle Endblätter, die Paralogen sind, und zählen Sie die neue Anzahl von Duplikaten, S2.
  3. Der Unterschied zwischen S1 und S2 zeigt, wie viele Subbäume du im Superbaum hast.
  4. Zur Korrektur jeglicher Vorurteile, die durch verschieden große Superbäume verursacht werden, teilen sich die Anzahl der einzigartigen Spezies, die im Superbaum N dargestellt sind.

Wenn wir diese Punktzahl den "Subbaumfaktor" nennen, dann entspricht er:

S1 – S2 / N

Schlussfolgerungen:

  • Wenn S1 – S2 = S1 dann bedeutet es, dass Ihr Superbaum etwa einen wahren Unterbaum darin hat, dass alle Arten von mehreren Arten nur auf die jüngsten Paralogs zurückzuführen sind.

  • Wenn S1 – S2 = 0 ist, dann bedeutet das, dass dein Superbaum etwa S1 echte Unterbäume darin hat.

Python ist die beste Programmiersprache der Welt.