Sunteți pe pagina 1din 4

Biostatistic i Bioinformatic.

Lab 7: Analiz filogenetic. Construirea arborilor filogenetici


______________________________________________________________________________

Analiza filogenetic permite identificarea relaiilor de evoluie ntre diferite specii (reprezentate
prin secvene ADN sau de aminoacizi). Rezultatul analizei este o diagram ierarhic (similar
dendrogramelor utilizate n gruparea bazat pe algoritmi ierarhici) numita arbore filogenetic.
Ramurile n arbore exprim descendena sau ascendena n procesul de evoluie. De regul
speciile analizate sunt asociate cu noduri frunz ale arborelui iar nodurile interne corespund unor
specii ipotetice care ar reprezenta strmoi comuni.

Principalele etape ale analizei filogenetice sunt:


Alegerea secvenelor pe baza crora se face analiza (biologii folosesc secvene prezente
la toate speciile de exemplu ARN ribosomal sau gene mitocondriale).
Stabilirea similaritilor (sau a distanelor) dintre secvene prin aliniere (simpl sau
multipl).
Construirea propriu-zis a arborelui filogenetic. Exist mai multe categorii de metode:
o Metode bazate pe distane necesit determinarea similaritii/distanei ntre
oricare dou secvene
o Metode bazate pe principiul maximizrii simplitii (maximum parsimony)
o Metode bazate pe principiul verosimilitii maxime

1. Construirea unui arbore filogenetic folosind metode bazate pe distane

Metodele bazate pe distane presupun c pentru fiecare pereche de secvene se poate calcula
distana dintre ele. Distana este calculat pe baza numrului de nepotriviri ntre secvene sau
pe baza numrului estimate de mutaii

1.1. Algoritmul UPGMA (Unweighted Pair Group Method using arithmetic Averages)

UPGMA se bazeaz pe aceeai ide ca i algoritmii aglomerativi de clustering. Secvenele


(speciile) vor corespunde nodurilor frunz. Fiecare nod are asociat un nivel (nlime) i
fiecare muchie are asociata o etichet (eticheta muchiei care uneste nodul i cu nodul j este
diferena dintre nlimile corespunztoare celor dou noduri.

Date de intrare: set de secvente (x1, x2,)


Ieire: arbore cu rdcin n care toate nodurile frunz se afl pe acelai nivel (similar unei
dendrograme)

Structura algoritm:

Iniializare:
Construiete lista iniial cu noduri (fiecare nod corespunde unei secvene xi care
definete clusterul propriu Ci) . Acestea sunt nodurile frunz ale arborelului. Pentru
fiecare nod se asigneaz nlimea: h(Ci )=0 i se reine numrul de secvene care fac
part din clusterul corespunztor nodului (la iniializare acesta este 1)
Construiete matricea de distane (aceasta poate fi reprezentat ca o list pentru
fiecare element din list se specific perechea de noduri corespunztoare i valoarea
distanei)
Prelucrare repetitiv:
Determin cele mai apropiate dou noduri (corespunztoare clusterilor Ci i Cj ) e
perechea de noduri pentru care distana este minim)
Grupeaz nodurile i i j i construiete nodul k ce corespunztor reuniunii dintre
clusterele corespunztoare nodurilor i i j (Ck = Ci Cj ). Nodul k va avea nlimea
h(Ck)= dij /2; eticheteaz muchia (Ck,Ci) cu h(Ck)-h(Ci) i muchia (Ck,Cj) cu h(Ck)-
h(Cj)
Actualizeaz lista cu noduri prin marcarea nodurilor Ci i Cj ca inactive i adaugarea
lui Ck ca nou nod active
Calculeaz distana de la Ck la nodurile active i actualizeaz matricea (lista) cu
distane

Condiie de terminare:
Cnd se ajunge la un singur nod activ (corespunde clusterului ce conine toate
secvenele)

2.1. Algoritmul Neighbor-Joining

Are ca scop tot construirea unui arbore ntr-o manier similar algoritmilor aglomerativi de
grupare, ns se urmrete minimizarea sumei lungimilor tuturor muchiilor ce unesc nodurile.
Din acest motiv la alegerea nodurilor care se unesc se determin perechea (i,j) pentru care
distana dintre ele este minim, iar distana medie fa de celelalte noduri este maxim. Prin
urmare se alege perechea (i,j) care minimizeaz o valoare ajustat a distanei:

Q(i,j)=d(i,j)-r(i)-r(j) unde r(i)= media distanelor de la nodul i la celelalte noduri din arbore

Dup ce s-a ales perechea (i,j) se adaug nodul k (printe pentru nodurile i i j) i se calculeaz:
Distana de la nodul k la celelalte noduri din arbore: d(k,l)=d(i,l)+d(j,l)-d(i,j)
Etichetele muchiilor care unesc nodul k de nodurile i i j:e(k,i)=(d(i,j)+r(i)-r(j))/2
respectiv e(k,l)=(d(i,j)+r(j)-r(i))/2

2. Construirea arborilor filogenetici n Matlab


Etape:
a. construirea matricii de distane (funcia seqpdist)
b. construirea arborelui (funcia seqlinkage)

Funcia seqpdist se apeleaz prin

matrice_distante=seqpdist(seqs,'Method',tip_distanta,'Alphabet',tip_secventa)

Cele mai simple distane ntre secvene folosite:


procentul de nepotriviri (p)
scorul de aliniere
msura Jukes-Cantor (pt. ADN: d=-3log(1-4p/3)/4, pt. aminoacizi: -19/20
log(1-p * 20/19)) varianta implicit
Functia seqlinkage se apeleaza prin arbore=seqlinkage(matrice_distante, metoda,secvente)

Metodele cele mai simple sunt:


single
complete
average (similar cu metoda UPGMA )

Dac se dorete utilizarea unei metode de tip Neighbour-Joining se poate folosi funcia
seqneighjoin care se apeleaz prin seqneighjoin(matrice_distante, metoda, nume_secvente)

Metodele care se pot folosi: equivar, firstorder, average (corespunde variantei standard de
algoritm Neighbour-Joining).

Obs. Metoda seqneighjoin permite modificarea rdcinii arborelului prin specificarea opiunii
Reroot.

Exerciiu 1. Se incarca ADN mitocondrial (ADN transmis doar prin intermediul mamei i prin
urmare afectat doar de mutaie i nu i de ncruciri) pentru cteva specii de hominizi:

data = {'German_Neanderthal' 'AF011222';


'Russian_Neanderthal' 'AF254446';
'European_Human' 'X90314' ;
'Mountain_Gorilla_Rwanda' 'AF089820';
'Chimp_Troglodytes' 'AF176766';
};

for ind = 1:5


seqs(ind).Header = data{ind,1};
seqs(ind).Sequence = getgenbank(data{ind,2},'SequenceOnly', true);
end

Obs. In locul variantei de ncrcare a secvenelor bazate pe funcia getgenbank se poate folosi
varianta bazata pe preluarea separat a fiecrei secvene (prin export n fiier Fasta din Genbank).

Se calculaz matricea de distane folosind seqpdist (distana Jukes-Cantor) i se construiete un


obiect de tip phytree folosind metoda UPGMA:

distances = seqpdist(seqs,'Method','Jukes-Cantor','Alphabet','DNA');
tree = seqlinkage(distances,'UPGMA',seqs)

Se vizualizeaz arborele filogenetic:

h = plot(tree,'orient','bottom');
ylabel('Distanta evolutiva')
set(h.terminalNodeLabels,'Rotation',-45)

2. Explorarea i modificarea unui arbore filogenetic.


a) Determinarea listei cu denumirile nodurilor frunz ale unui arbore

names = get(tree,'LeafNames')

b) Determinarea speciei care este cea mai apropiat n arbore de o specie dat. De exemplu
pentru determinarea celei mai apropiate specii de omul din Europa se foloseste funcia select:

[h_all,h_leaves] = select(tree,'reference',3,'criteria','distance','threshold',0.6);

Apelul de mai sus permite identificarea tuturor nodurilor (h_all) dar i selectarea nodurilor frunz
(h_leaves) aflat la o distan (n arbore) mai mic de 0.6. Numele speciilor selectate pot fi
obinute cu

subtree_names = names(h_leaves)

c) Extragerea unui subarbore prin eliminarea nodurilor frunz nedorite. De exemplu pentru
eliminarea nodurilor aflate la o distan mai mic de 0.6 de specia european se poate specifica:

leaves_to_prune = ~h_leaves;
pruned_tree = prune(tree,leaves_to_prune)
h = plot(pruned_tree,'orient','bottom');
ylabel('Distanta de evolutie')
set(h.terminalNodeLabels,'Rotation',-30)

Obs. Pentru explorarea, editarea si formatarea unui arbore filogenetic se poate folosi aplicatia
phytreetool care se apeleaza pentru un arbore filogenetic creat cu seqlinkage sau modificat prin
prune

S-ar putea să vă placă și