CASTER¶
CASTER (Coalescence-aware Alignment-based Species Tree EstimatoR) is a tool within ASTER package, specifically designed for phylogenomic analysis at the whole-genome level. Its primary purpose is the accurate estimation of evolutionary species trees from massive datasets, achieving exceptional computational speed and efficiency. By utilizing advanced statistical methods, it can process data from thousands of genetic loci, making it one of the most modern and reliable solutions for studying evolutionary relationships in complex biological systems
CASTER 1.24¶
Γενικές Πληροφορίες¶
Πριν προχωρήσουμε στην υποβολή των εργασιών στη συστοιχία, είναι χρήσιμο να δούμε τα αρχεία παραδειγμάτων που συνοδεύουν την εγκατάσταση του λογισμικού. Αυτά τα αρχεία καλύπτουν διάφορα σενάρια εκτέλεσης του CASTER και βοηθούν στην κατανόηση της δομής των δεδομένων εισόδου.
Για να προβάλουμε τη λίστα των αρχείων, μπορούμε να εκτελέσουμε την παρακάτω εντολή ως εξής:
ls /mnt/apps/custom/CASTER/v1.24/example
Μέσα στον κατάλογο βρίσκουμε directories με διάφορα αρχεία δεδομένων. Οι βασικές επιλογές είναι οι εξής:
-
αρχεία τύπου FASTA (.fas): Αποτελούν την προεπιλεγμένη μορφή δεδομένων εισόδου για το CASTER και περιέχουν multiple sequence alignments.
-
αρχεία τύπου PHYLIP (.phylip): Αποτελούν μια εναλλακτική μορφή αρχείων στοίχισης. Για να χρησιμοποιηθούν, πρέπει να δηλωθούν ρητά κατά την εκτέλεση με την παράμετρο
-f phylip. -
αρχεία κειμένου (.txt): Αποτελούν απλά αρχεία κειμένου και περιέχουν τα ονόματα ή τα μονοπάτια πολλών αρχείων FASTA. Συνήθως χρησιμοποιούνται για την ταυτόχρονη ανάλυση πολλαπλών αρχείων εισάγοντας την παράμετρο
-f list. -
αρχεία χαρτογράφησης (.map): Αποτελούν απαραίτητη προϋπόθεση όταν το dataset μας περιέχει πολλαπλά individuals ή αντίγραφα γονιδίων ίδιου είδους. Τα συγκεκριμένα, καταδεικνύουν στο λογισμικό ποιο δείγμα αντιστοιχεί σε ποιο είδος και περνιούνται στην εντολή με την παράμετρο
-a. -
αρχεία τύπου Newick (.nw): Αποτελούν έτοιμα, φυλογενετικά δέντρα. Μπορούν να χρησιμοποιηθούν είτε ως constraint trees για την τοποθέτηση νέων taxa με την παράμετρο
-c, είτε ως hint trees για τη διευκόλυνση της αναζήτησης του βέλτιστου δέντρου με την παράμετρο-g.
Στα επόμενα βήματα θα εστιάσουμε σε δύο απλά σενάρια ανάλυσης και εξαγωγής φυλογενετικών δέντρων βασισμένα σε αρχεία τύπου FASTA. Η ανάλυση θα πραγματοποιηθεί χρησιμοποιώντας το εκτελέσιμο πρόγραμμα caster-site.
Παράδειγμα ανάλυσης μεμονωμένου αρχείου γονιδίων¶
Στο $HOME μας στο login node, δημιουργούμε ένα νέο working directory. Αφού μεταβούμε σε αυτό, αντιγράφουμε εκεί το αρχείο εισόδου που χρειαζόμαστε από αυτά που μας παρέχει το λογισμικό (έστω το αρχείο genetrees.tre_1.fas). Η εκτέλεση αυτών των βημάτων παρουσιάζεται στις επόμενες γραμμές εντολών:
Προετοιμασία working directory
mkdir caster_analysis
cd caster_analysis
cp /mnt/apps/custom/CASTER/v1.24/example/genetrees.tre_1.fas .
Σε περίπτωση που θέλουμε να χρησιμοποιήσουμε διαφορετικά αρχεία εισόδου, μπορούμε είτε να επεξεργαστούμε το αρχείο .fas με κάποιον text editor, είτε απλώς να μεταφέρουμε τα δικά μας αρχεία στην υποδομή.
Δημιουργούμε ή μεταφέρουμε στο working directory το script για την υποβολή της εργασίας, (έστω caster-cpu-case.sh) το οποίο θα εκτελεστεί στους κόμβους batch. O κώδικάς αυτού, παρουσιάζεται αναλυτικά παρακάτω:
SLURM submission script
#!/bin/bash
#SBATCH --job-name=caster-job
#SBATCH --partition=batch
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=9
#SBATCH --time=01:00:00
#SBATCH --output=caster.out
CASTER_ROOT=/mnt/apps/custom/CASTER/v1.24
$CASTER_ROOT/bin/caster-site -t $SLURM_CPUS_PER_TASK -o my_output_tree.nw genetrees.tre_1.fas
Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:
sbatch caster-cpu-case.sh
Παρακολουθούμε με squeue την εξέλιξη της εργασίας και εφόσον έχει εκκινήσει μπορούμε να παρακολουθούμε την πρόοδο της. Μόλις η εργασία ολοκληρωθεί επιτυχώς, ελέγχουμε το αρχείο καταγραφής (log file) που ορίσαμε στο script μας, δηλαδή το αρχείο με όνομα caster.out.
tail -f caster.out
Terminal output
Coalescence-aware Alignment-based Species Tree EstimatoR (Site)
Version: v1.24.2.6
Processing genetrees.tre_1.fas ...
Processing genetrees.tre_1.fas ...
#Base: 12766
#Species: 26
#Rounds: 4
#Samples: 4
#Threads: 9
#NNI moves:22/67
(((((((((((((((((19,12),21),20),2),17),8),18),7),(13,1)),16),(6,10)),(22,25)),(11,4)),5),3),(0,(24,(14,(15,9))))),23);
#NNI moves:28/67
(((((((((((((((15,9),14),0),5),3),11),((23,10),6)),(16,8)),13),(((17,2),24),18)),(((1,12),4),7)),21),(20,19)),25),22);
#NNI moves:30/67
(((((((((((((((12,24),19),20),21),2),17),18),(4,1)),7),13),((8,16),3)),(6,(10,23))),(25,22)),(5,(0,(14,(15,9))))),11);
Initial score: 2369.35
Initial tree: (((14,(15,9)),(5,((((((((((((((12,24),19),20),21),2),17),18),(4,1)),7),13),((8,16),3)),(6,(10,23))),(25,22)),11))),0);
*** Subsample Process ***
#NNI moves:26/67
((((((((((((17,(2,(20,(19,21)))),18),(((((7,12),3),13),1),4)),(((24,8),16),0)),(6,10)),11),23),5),14),(25,22)),9),15);
#NNI moves:22/67
((((((((((((((21,19),20),2),17),18),7),(8,16)),((((22,23),25),6),10)),(1,(12,13))),11),((((9,15),14),5),24)),4),3),0);
... ... ... ...
#NNI moves:12/67
((((((((((((((((0,(15,(9,24))),14),5),22),23),3),(11,25)),4),(((10,12),6),(8,16))),13),1),7),18),17),((21,19),20)),2);
#NNI moves:12/67
(((((((((((22,23),25),6),10),(((15,9),14),(0,18))),((3,5),11)),(16,8)),17),(((((12,24),13),1),4),7)),((21,19),20)),2);
Current score: 2498.72
Current tree: ((3,(((((((((21,19),20),2),((((12,13),7),1),4)),(17,18)),(8,16)),((((23,22),25),6),10)),11),(24,(((9,15),14),5)))),0);
Final Tree: ((3,(((((((((21,19),20),2),((((12,13),7),1),4)),(17,18)),(8,16)),((((23,22),25),6),10)),11),(24,(((9,15),14),5)))),0);
Normalized score: 624.68
Παράδειγμα ανάλυσης πολλαπλών αρχείων γονιδίων¶
Σε πολλές φυλογενωμικές μελέτες, δεν έχουμε ένα τεράστιο, ενιαίο αρχείο, αλλά δεκάδες ή εκατοντάδες ξεχωριστά FASTA αρχεία. Το CASTER μπορεί να τα αναλύσει όλα ταυτόχρονα για να εξάγει το τελικό δέντρο των ειδών.
Για να δώσουμε όλα τα αρχεία στο CASTER, πρέπει να δημιουργήσουμε ένα αρχείο κειμένου που να περιέχει τα ακριβή paths τους. Στο ίδιο working directory, μεταφέρουμε όλα τα αρχεία του φακέλου fasta_alignments με την εξής εντολή:
ls /mnt/apps/custom/CASTER/v1.24/example/caster/fasta_alignments/*.fa > my_genes_list.txt
Δημιουργούμε ή μεταφέρουμε στο working directory το script για την υποβολή της εργασίας, (έστω caster-multicase.sh) το οποίο θα εκτελεστεί στους κόμβους batch. O κώδικάς αυτού, παρουσιάζεται αναλυτικά παρακάτω:
SLURM submission script
#!/bin/bash
#SBATCH --job-name=caster-multicase
#SBATCH --partition=batch
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=9
#SBATCH --time=01:00:00
#SBATCH --output=caster-multicase.out
CASTER_ROOT=/mnt/apps/custom/CASTER/v1.24
$CASTER_ROOT/bin/caster-site -t $SLURM_CPUS_PER_TASK -f list -o primates-tree.nw my_genes_list.txt
Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:
sbatch caster-multicase.sh
Παρακολουθούμε με squeue την εξέλιξη της εργασίας και εφόσον έχει εκκινήσει μπορούμε να παρακολουθούμε την πρόοδο της. Μόλις η εργασία ολοκληρωθεί επιτυχώς, μπορούμε να ελέγξουμε το αρχείο καταγραφής (log file) που ορίσαμε στο script μας, δηλαδή το αρχείο με όνομα caster-multicase.out.
tail -f caster-multicase.out
Terminal output
$ cat caster-multicase.out
#Base: 68
#Species: 4
#Rounds: 4
#Samples: 4
#Threads: 8
#NNI moves:0/28
(((Gorilla,Orangutan),Human),Chimpanzee);
#NNI moves:0/28
(((Gorilla,Orangutan),Human),Chimpanzee);
#NNI moves:0/28
(((Chimpanzee,Human),Gorilla),Orangutan);
#NNI moves:0/28
(((Human,Chimpanzee),Orangutan),Gorilla);
Initial score: 0.915259
Initial tree: ((Chimpanzee,(Orangutan,Gorilla)),Human);
*** Subsample Process ***
#NNI moves:0/28
(((Human,Chimpanzee),Orangutan),Gorilla);
#NNI moves:0/28
(((Gorilla,Orangutan),Chimpanzee),Human);
#NNI moves:0/28
(((Gorilla,Orangutan),Chimpanzee),Human);
#NNI moves:0/28
(((Chimpanzee,Human),Gorilla),Orangutan);
Current score: 0.915259
Current tree: ((Chimpanzee,(Gorilla,Orangutan)),Human);
Final Tree: ((Chimpanzee,(Gorilla,Orangutan)),Human);
Normalized score: 0.228815
Σύμφωνα με την παραπάνω έξοδο, το λογισμικό διαβάζει διαδοχικά όλα τα επιμέρους αρχεία γονιδίων και εντοπίζει με επιτυχία τα 4 διαφορετικά είδη του dataset. Το τελικό συναινετικό δέντρο που παράγεται είναι άμεσα διαθέσιμο στο αρχείο primates-tree.nw, βάσει των παραμέτρων που δώσαμε στο script υποβολής.
Terminal output
$ cat primates-tree.nw
((Chimpanzee,(Gorilla,Orangutan)98.8:0.970588),Human);