Ho costruito un albero filogenetico per una famiglia proteica che può essere suddivisa in diversi gruppi, classificandoli ognuno per tipo di recettore o tipo di risposta. I nodi nell'albero sono etichettati come il tipo di recettore.Come comprimere i rami in un albero filogenetico dall'etichetta nei loro nodi o foglie?
Nell'albero filogenetico posso vedere che le proteine che appartengono allo stesso gruppo o tipo di recettore si sono raggruppate insieme negli stessi rami. Quindi vorrei raggruppare questi rami che hanno etichette in comune, raggruppandoli in base a un determinato elenco di parole chiave.
Il comando sarebbe qualcosa di simile a questo:
./collapse_tree_by_label -f phylogenetic_tree.newick -l list_of_labels_to_collapse.txt -o collapsed_tree.eps (o pdf)
mio list_of_labels_to_collapse.txt sarebbe come questo : A B C D
mio albero Newick sarebbe come questo: (A_1: 0.05, A_2: 0.03, A_3: 0.2, A_4: 0.1): 0,9, (((B_1: 0.05, q_2 : 0.02, B_3: 0.04): 0,6, (C_1: 0.6, C_2: 0.08): 0. 7): 0.5, (D_1: 0.3, D_2: 0.4, D_3: 0.5, D_4: 0.7, D_5: 0.4): 1.2)
L'immagine in uscita senza collassare è così:
L'uscita immagine collassamento dovrebbe essere come questa (collapsed_tree.eps): http://i.stack.imgur.com/TLXd0.png
la larghezza dei triangoli dovrebbe rappresentare la lunghezza dei rami, e l'alto dei triangoli deve rappresentare il numero di nodi nel ramo.
Ho giocato con il pacchetto "scimmia" in R. Sono stato in grado di tracciare un albero filogenetico, ma non riesco ancora a capire come crollare i rami con parole chiave nelle etichette:
require("ape")
Questo caricherà l'albero:
cat("((A_1:0.05,A_2:0.03,A_3:0.2,A_4:0.1):0.9,(((B_1:0.05,B_2:0.02,B_3:0.04):0.6,(C_1:0.6,C_2:0.08):0.7):0.5,(D_1:0.3,D_2:0.4,D_3:0.5,D_4:0.7,D_5:0.4):1.2):0.5);", file = "ex.tre", sep = "\n")
tree.test <- read.tree("ex.tre")
qui dovrebbe essere il codice a crollare
Ciò tracciare l'albero:
01.235.164,106 milaplot(tree.test)
Grazie mille! Questo ha funzionato! – RDlady
Solo un'altra domanda. Questo algoritmo funzionerebbe per il collasso di rami diversi in una sottostruttura (come la fusione di due triangoli in uno solo)? – RDlady
@RDlady Se vuoi dire che vuoi unire, per esempio, i gruppi B e C in un gruppo, puoi usare regex quando specifichi i gruppi: 'groups <- c (" A "," B | C "," D ") '. In alternativa, puoi rinominare le etichette tip in modo che corrispondano ai gruppi che vuoi –