Στην άσκηση αυτή θα κατασκευάσουμε ένα φυλογενετικό δέντρο για τα τρία υποείδη του γένους Homo κατά το Πλειστόκαινο και τους δύο κοντινότερους συγγενείς του σύγχρονου ανθρώπου, τον χιμπατζή και τον μπονόμπο. Θα χρησιμοποιήσουμε τις αλληλουχίες των 5 ειδών για το γνωστό barcode των θηλαστικών, το cytochrome C oxidase I (COI) καθώς επίσης και του αγριόχοιρου, σαν outgroup. Οι 6 αυτές αλληλουχίες κατέβηκαν σε μορφή FASTA και αποθηκεύτηκαν στον φάκελο εργασίας (working directory) της άσκησης. Στη συνέχεια, όλες οι αλληλουχίες ενώθηκαν στο αρχείο all.fasta. Η ένωση αυτή μπορεί να γίνει με έναν επεξεργαστή κειμένου ή απλά με την εντολή cat στο τερματικό.
Ορίζουμε το working directory με την εντολή setwd(). Στη συνέχεια φορτώνουμε τις εξής βιβλιοθήκες:
# R
library(ape)
library(msa)
library(seqinr)
Δημιουργούμε το αντικείμενο dna με το σύνολο των 6 αλληλουχιών.
# R
dna<-readDNAStringSet("all.fasta")
dna
## DNAStringSet object of length 6:
## width seq names
## [1] 1542 ATGTTCACCGACCGCTGACTATT...AACCCGTGTACATAAAATCTAGA Pan_paniscus
## [2] 1542 ATGTTCACCGACCGCTGACTATT...AACCCGTATACATAAAATCTAGA Pan_troglodytes
## [3] 1542 ATGTTCGCCGACCGTTGACTATT...AACCCGTATACATAAAATCTAGA Homo_denisovan
## [4] 1542 ATGTTCGCCGACCGTTGACTATT...AGCCCGTATACATAAAATCTAGA Homo_neanderthale...
## [5] 1542 ATGTTCGCCGACCGTTGACTATT...AACCCGTATACATAAAATCTAGA Homo_sapiens
## [6] 1545 ATGTTCGTAAATCGTTGACTATA...CAACATATATCAACCTAAAATAA Sus_scrofa
Η στοίχιση γίνεται με την εντολή msa.
# R
myFirstAlignment <- msa(dna)
## use default substitution matrix
myFirstAlignment
## CLUSTAL 2.1
##
## Call:
## msa(dna)
##
## MsaDNAMultipleAlignment with 6 rows and 1545 columns
## aln names
## [1] ATGTTCACCGACCGCTGACTATTCTC...ACCCGTGTACATAAAATCTAGA--- Pan_paniscus
## [2] ATGTTCACCGACCGCTGACTATTCTC...ACCCGTATACATAAAATCTAGA--- Pan_troglodytes
## [3] ATGTTCGCCGACCGTTGACTATTCTC...GCCCGTATACATAAAATCTAGA--- Homo_neanderthale...
## [4] ATGTTCGCCGACCGTTGACTATTCTC...ACCCGTATACATAAAATCTAGA--- Homo_sapiens
## [5] ATGTTCGCCGACCGTTGACTATTCTC...ACCCGTATACATAAAATCTAGA--- Homo_denisovan
## [6] ATGTTCGTAAATCGTTGACTATACTC...ACCAACATATATCAACCTAAAATAA Sus_scrofa
## Con ATGTTCGCCGACCGTTGACTATTCTC...ACCCGTATACATAAAATCTAGA--- Consensus
Για την πλήρη εμφανιση των στοιχημένων αλληλουχιών, γράφουμε print(myFirstAlignment, showConsensus=FALSE, show=“complete”).
Πρώτα μετατρέπουμε το αντικείμενο myFirstAlignment σε αντικείμενο της κλάσης alignment. Ύστερα υπολογίζουμε τις αποστάσεις μεταξύ των αλληλουχιών, ανά δύο.
# R
align <- msaConvert(myFirstAlignment, type="seqinr::alignment")
d <- dist.alignment(align, "identity")
d
## Pan_paniscus Pan_troglodytes Homo_neanderthalensis
## Pan_troglodytes 0.1972575
## Homo_neanderthalensis 0.3023900 0.2947883
## Homo_sapiens 0.3045270 0.2947883 0.1018633
## Homo_denisovan 0.3098052 0.3002377 0.1549026
## Sus_scrofa 0.4647078 0.4605022 0.4569680
## Homo_sapiens Homo_denisovan
## Pan_troglodytes
## Homo_neanderthalensis
## Homo_sapiens
## Homo_denisovan 0.1462900
## Sus_scrofa 0.4597975 0.4590918
Υπολογίζουμε ένα NJ δέντρο (χωρίς ρίζα) στο αντικείμενο tree
# R
tree <- nj(d)
tree
##
## Phylogenetic tree with 6 tips and 4 internal nodes.
##
## Tip labels:
## Pan_paniscus, Pan_troglodytes, Homo_neanderthalensis, Homo_sapiens, Homo_denisovan, Sus_scrofa
##
## Unrooted; includes branch lengths.
Σώζουμε την μορφή Newick του δέντρου στο αρχείο tree1.txt και δημιουργούμε το αντικείμενο x με αυτήν τη μορφή
# R
write.tree(tree, "tree1.txt")
x<-write.tree(tree)
x
## [1] "(Homo_sapiens:0.04926578218,Homo_neanderthalensis:0.05259753256,(((Pan_paniscus:0.1025179171,Pan_troglodytes:0.09473954373):0.05390891957,Sus_scrofa:0.3100673223):0.0738041817,Homo_denisovan:0.07694992724):0.02271473377);"
Κατασκευάζουμε ένα απλό φυλογενετικό δέντρο. Βλέπουμε ότι δεν είναι σωστό γιατί δεν έχει ρίζα και βάζει το outgroup (Sus scrofa) στην ίδια ομάδα με τα πρωτεύοντα και τον Denisovan.
# R
plot(tree, main="Phylogenetic Tree of Hominids")
Με την εντολή root “ριζώνουμε” το δέντρο με το outgroup. Το νέο φυλογενετικό δέντρο είναι σωστό.
# R
rtree<-root(tree, "Sus_scrofa")
plot(rtree)