Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διπλωματική εργασία Κλιμακούμενη πλατφόρμα κατασκευής και επέκτασης φυλογενετικών προφίλ με χρήση Πλέγματος Υπολογιστών Εκπόνηση: Στεργιάδης Εμμανουήλ Επιβλέποντες: Καθηγητής Περικλής Α. Μήτκας Δρ. Φώτης Ε. Ψωμόπουλος Ιούλιος 2016 i
ii
ARISTOTLE UNIVERSITY OF THESSALONIKI Abstract Faculty of Engineering School of Electrical & Computer Engineering Diploma in Engineering Title: A scalable Grid Computing framework for extensible phylogenetic profile construction Stergiadis Emmanouil July 2016 The ever increasing volume of acquired data that have to been processed and managed by today s bioinformatics frameworks has without doubt established the domain as a Big Data discipline. Sequence alignment, as well as phylogenetic profile construction for an arbitrarily big volume of sequences are an inextricable part of various types of analyses in the wider domain of comparative genomics. At the same time however, these processes are inherently extremely complex, causing their execution to be the main computational bottleneck in any analysis includes them. As a result, scalability of a given application, in other words its ability to adapt to an ever increasing volume of input data within reasonable time limits, has been established as a key requirement. This need implies huge requirements in computational and storage resources, a requirement that traditional compute systems cannot meet. For this reason, adapting our algorithms and tools to modern parallel and distributed computer systems is an absolute necessity. The main goal of the present diploma thesis, is the development of a framework able to execute the aforementioned processes in a reasonable time by using the Grid infrastructure. It is equally important that the program is user friendly, in order to facilitate its usage by as many researchers as possible. The program we developed manages to process an arbitrarily big volume of data within reasonable time limitations by exploiting the massive computational power offered by the Grids distributed infrastructure. Its design achieves a fully automated workflow in order to abstract the technical details of the infrastructure out of the user s perspective. As a result, our framework can be utilized without any learning curve by users with minimal system administrator background, thus facilitating its massive adoption by the scientific community in the foreseeable future. At the same time, care has been taken in order to locate all demanding processes on the Grids Compute Nodes, thus detaching the computations from the user s terminal. iii
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Περίληψη Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Δίπλωμα Μηχανικού Τίτλος: Κλιμακούμενη πλατφόρμα κατασκευής και επέκτασης φυλογενετικών προφίλ με χρήση Πλέγματος Υπολογιστών Στεργιάδης Εμμανουήλ Ιούλιος 2016 Η ολοένα επιταχυνόμενη αύξηση του όγκου των δεδομένων που καλούνται να διαχειριστούν και να ερμηνεύσουν οι σύγχρονες εφαρμογές Βιοπληροφορικής καταστούν τον τομέα αναμφίβολα ένα πεδίο Μεγάλων Δεδομένων (Big Data). Η ευθυγράμμιση ακολουθιών καθώς και η κατασκευή φυλογενετικών προφίλ για μεγάλα σύνολα ακολουθιών αποτελούν αναπόσπαστο τμήμα σε αναλύσεις διαφόρων τύπων στον ευρύτερο τομέα της συγκριτικής γενετικής και της Βιοπληροφορικής γενικότερα. Ταυτόχρονα όμως, οι διεργασίες αυτές είναι από τη φύση τους εξαιρετικά απαιτητικές σε υπολογιστικούς πόρους με αποτέλεσμα η εκτέλεση τους να καθυστερεί σημαντικά οποιαδήποτε διαδικασία ανάλυσης η οποία τις εμπεριέχει. Κατά συνέπεια η επεκτασιμότητα μιας εφαρμογής, η ικανότητά της δηλαδή να ανταποκρίνεται σε τεράστιο όγκο δεδομένων εισόδου και σε εύλογο χρονικό διάστημα, καθίσταται πλέον ένα από τα βασικότερα κριτήρια για τη χρηστικότητά της. Η αναγκαιότητα αυτή υπονοεί τεράστιες απαιτήσεις σε υπολογιστικούς και αποθηκευτικούς πόρους, απαιτήσεις που κανένα παραδοσιακό υπολογιστικό σύστημα δε μπορεί να καλύψει. Για το λόγο αυτό είναι αναγκαία η προσαρμογή των εργαλείων του τομέα σε παράλληλα και διανεμημένα υπολογιστικά συστήματα. Στόχος της παρούσας διπλωματικής εργασίας είναι η ανάπτυξη ενός προγράμματος ικανού να εκτελέσει τις προαναφερθείσες εξαιρετικά απαιτητικές διαδικασίες σε εύλογο χρονικό διάστημα χρησιμοποιώντας την υποδομή του πλέγματος (Grid). Εξίσου σημαντική απαίτηση είναι ακόμα η φιλικότητα προς το χρήστη, ώστε να διευκολυνθεί η χρήση του από κατά το δυνατόν περισσότερα μέλη της ερευνητικής κοινότητας. Το πρόγραμμα που αναπτύχθηκε τελικά πετυχαίνει την επεξεργασία τεράστιου όγκου δεδομένων σε εύλογο χρονικό διάστημα χρησιμοποιώντας την τεράστια υπολογιστική ισχύ που προσφέρει η διανεμημένη υποδομή του πλέγματος. Η σχεδίαση επιτυγχάνει την πλήρη αυτοματοποίηση της διαδικασίας, αποκρύπτοντας έτσι από τον τελικό χρήστη την τεχνική πολυπλοκότητα που συνεπάγεται η χρήση μιας τέτοιας υποδομής. Ως αποτέλεσμα το πρόγραμμα μπορεί να χρησιμοποιηθεί χωρίς καμία προσπάθεια εκμάθησης από ερευνητές με ελάχιστες γνώσεις διαχείρισης υπολογιστικών συστημάτων, πράγμα που μπορεί να συντελέσει στη μαζική υιοθέτησή του. Παράλληλα μεριμνούμε ώστε η εκτέλεση όλων των απαιτητικών διαδικασιών να λαμβάνει χώρα σε υπολογιστικούς πόρους του πλέγματος, απομπλέκοντας έτσι το τερματικό του χρήστη πλήρως από την υφιστάμενη διαδικασία. iv
Ευχαριστήριες Θα ήθελα να ευχαριστήσω θερμά τον καθηγητή Περικλή Α. Μήτκα που μου εμπιστεύθηκε την εκπόνηση της παρούσας εργασίας, καθώς και για την πολύτροπη υποστήριξη του καθ' όλη τη διάρκεια των φοιτητικών μου χρόνων. Ευχαριστώ ακόμη τον μεταδιδακτορικό ερευνητή Φώτη Ε. Ψωμόπουλο για την καθοριστικής σημασίας καθοδήγηση και ενθάρρυνση που μου παρείχε, όχι μόνο όσον αφορά στην εργασία αλλά και σε γενικότερα θέματα της ακαδημαϊκής μου ζωής. Ευχαριστώ ακόμα τον υποψήφιο διδάκτορα Αθανάσιο Κιντσάκη για την πολύτιμη ανταλλαγή απόψεων, κυρίως σχετικά με το τεχνικό τμήμα της εργασίας. Τέλος, ένα μεγάλο ευχαριστώ οφείλω στους γονείς μου που μου στήριξαν καθ' όλη τη διάρκεια των φοιτητικών μου χρόνων. v
Περιεχόμενα 1 Εισαγωγή... 1 1.1 Βιοπληροφορική... 1 1.2 Περιγραφή του προβλήματος... 2 1.3 Στόχος της διπλωματικής... 2 1.4 Μεθοδολογία... 2 1.5 Διάρθρωση της διπλωματικής... 3 2 Θεωρητικό υπόβαθρο... 4 2.1 Blast... 4 2.1.1 Περιγραφή Αλγορίθμου... 4 2.1.2 Είσοδος - Έξοδος... 6 2.2 Φυλογενετικά προφίλ... 8 2.3 Υπολογιστικό Πλέγμα Grid... 11 2.4 Hellas Grid... 13 2.4.1 Υποβολή εργασιών... 13 3 Περιγραφή Προγράμματος... 15 3.1 Παράμετροι της ανάλυσης... 15 3.2 Είσοδος του προγράμματος... 15 3.3 Αναλυτική περιγραφή του προγράμματος... 16 3.3.1 Βασική ροή στο τερματικό του χρήστη... 17 3.3.1.1 Προετοιμασία... 18 3.3.1.2 Υποβολή... 19 3.3.1.3 Παρακολούθηση εργασιών... 20 3.3.1.4 Συλλογή αποτελεσμάτων... 20 3.3.2 Βασική ροή στον υπολογιστικό κόμβο... 20 3.3.2.1 Προετοιμασία... 21 3.3.2.2 Εκτέλεση... 22 3.3.3 Επέκταση υπαρχόντων προφίλ... 25 3.4 Πολυπλοκότητα... 27 3.4.1 Πολυπλοκότητα BLAST... 27 3.4.2 Πολυπλοκότητα κατασκευής φυλογενετικών προφίλ... 28 3.4.2.1 Απλά προφίλ... 28 3.4.2.2 BBH προφίλ... 29 vi
4 Πειράματα... 34 4.1 Περιγραφή σετ δεδομένων... 34 4.2 Περιγραφή πειραμάτων... 36 4.3 Συνολική εκτέλεση... 36 4.4 Επέκταση υπαρχόντων προφίλ... 41 4.5 Ανομοιογένεια υπολογιστικών πόρων... 44 4.6 Network Bandwidth... 47 4.7 Color Maps... 49 5 Συμπεράσματα και μελλοντικές επεκτάσεις... 52 5.1 Συμπεράσματα... 52 5.2 Μελλοντικές Επεκτάσεις... 52 6 Αναφορές... 54 7 Παράρτημα Α - Οδηγίες χρήσης του προγράμματος... 55 7.1 Πρόσβαση στο HellasGrid... 55 7.2 Εγκατάσταση... 56 7.3 Εκτέλεση... 57 7.4 Παρακολούθηση... 59 7.5 Επεξεργασία εξόδου... 59 7.5.1 Collapse οργανισμών... 60 7.5.2 Φιλτράρισμα φυλογενετικών προφίλ... 61 vii
Λίστα σχημάτων Σχήμα 2-1: Κατάτμηση ακολουθίας σε λέξεις μήκους 3 χαρακτήρων... 5 Σχήμα 2-2: Παράδειγμα υπολογισμού γειτονικών λέξεων... 6 Σχήμα 2-3: Παράδειγμα μιας ακολουθίας σε αρχείο τύπου FASTA... 7 Σχήμα 2-4: Εκτεταμένο προφίλ, σκούρο χρώμα αντιστοιχεί σε περισσότερες ομολογίες... 9 Σχήμα 2-5: Διαφοροποίηση μιας γενικής ομολογίας από μία αμφίδρομη... 10 Σχήμα 2.6: Αρχιτεκτονική πρωτοκόλλων του πλέγματος... 12 Σχήμα 3-1: Ροή προγράμματος στο τερματικό διεπαφής... 18 Σχήμα 3-2: Ροή προγράμματος στους υπολογιστικούς κόμβους του Grid... 21 Σχήμα 3-3: Διαχωρισμός της συνολικής εξόδου σε ζεύγη αρχείων... 31 Σχήμα 4-1: Διάγραμμα χρόνου για 10 γονιδιώματα... 37 Σχήμα 4-2: Διάγραμμα χρόνου για 30 γονιδιώματα... 38 Σχήμα 4-3: Διάγραμμα χρόνου για 60 γονιδιώματα... 40 Σχήμα 4-4: Επέκταση ανάλυσης 30 οργανισμών σε 60... 42 Σχήμα 4-5: Ανάλυση επέκταση 10 οργανισμών σε 30... 43 Σχήμα 4-6: Ανομοιογένεια στο μέγεθος του προβλήματος... 45 Σχήμα 4-7: Ανομοιογένεια στη διεκπεραιωτική ικανότητα των υπολογιστικών πόρων... 46 Σχήμα 4-8: Ανάγκες σε bandwidth ως συνάρτηση του μεγέθους του προβλήματος... 48 Σχήμα 4-9: Χρωματικός πίνακας για 10 γονιδιώματα.... 49 Σχήμα 4-10: Χρωματικός πίνακας για 30 γονιδιώματα... 50 Σχήμα 4-11: Χρωματικός πίνακας για 60 γονιδιώματα... 51 Σχήμα 7-1: Αντιγραφή διεύθυνσης απομακρυσμένου repository... 56 Σχήμα 7-2: Απόσπασμα αρχείου FASTA... 57 Σχήμα 7-3: Απόσπασμα αρχείου gene map... 57 Σχήμα 7-4: Υπόδειγμα καθορισμού των παραμέτρων της ανάλυσης... 58 Σχήμα 7-5: Δείγμα ελέγχου της πορείας της ανάλυσης... 59 Σχήμα 7-6: Σύνοψη των φυλογενετικών προφίλ σε επίπεδου οργανισμών... 60 Σχήμα 7-7: Αρχική έξοδος, αποτελούμενη από 26749 προφίλ... 61 Σχήμα 7-8: Φιλτραρισμένη έξοδος, αποτελούμενη από 4126 προφίλ... 61 viii
Λίστα πινάκων Πίνακας 2-1: Παράδειγμα δυαδικών προφίλ... 8 Πίνακας 2-2: Υποθετικές ακολουθίες ενός σετ δεδομένων εισόδου. Ο δείκτης υποδηλώνει το γονιδίωμα της ακολουθίας.... 10 Πίνακας 2-3: Δείγμα εξόδου BLAST για 2 ακολουθίες... 10 Πίνακας 2-4: Εκτεταμένα φυλογεννετικά προφίλ για 2 ακολουθίες... 10 Πίνακας 2-5: Δυαδικά φυλογενετικά προφίλ... 10 Πίνακας 2-6: ζεύγη BBH που προκύπτουν από την έξοδο του BLAST... 11 Πίνακας 3-1: Δείγμα εξόδου του αλγορίθμου BLAST... 23 Πίνακας 3-2: Εύρεση αμφίδρομων ομολογιών... 25 Πίνακας 3-3: Επέκταση φυλογενετικού προφίλ ακολουθίας... 26 Πίνακας 3-4: Μετασχηματισμός δομής δεδομένων για ταχύτερη πρόσβαση... 30 Πίνακας 4-1: Παρουσίαση σετ δεδομένων... 36 Πίνακας 4-2: Κατανομή εργασιών σε υπολογιστικούς κόμβους... 45 Πίνακας 4-3: Κατανομή υπολογιστικών πόρων στους κόμβους του πλέγματος... 47 Λίστα Αλγορίθμων Αλγόριθμος 3-1: κατασκευή φυλογενετικών προφίλ... 22 Αλγόριθμος 3-2: Εύρεση βέλτιστων ομολογιών... 24 Αλγόριθμος 3-3: Συνδυασμός βέλτιστων ομολογιών... 33 ix
1 Εισαγωγή 1.1 Βιοπληροφορική Βιοπληροφορική είναι ο επιστημονικός χώρος όπου η σύμπραξη της Βιολογίας με την Πληροφορική, την Στατιστική και τα Μαθηματικά εξερευνά νέους τρόπους για την προσέγγιση των βιολογικών προβλημάτων, καθώς και την αντίληψη βασικών αρχών της Βιολογίας. Πρόκειται για γνωστικό χώρο με συγκεκριμένο όσο και ευρύ πεδίο εφαρμογών και αλληλεπίδρασης με τη σύγχρονη δομική, μοριακή, πληθυσμιακή και περιβαλλοντική βιολογία. Ο κλάδος της Βιοπληροφορικής σήμερα θεωρείται, παγκόσμια, ένας από τους πλέον αναπτυσσόμενους, ενώ έχει ήδη επιδείξει σημαντικά επιτεύγματα και έχει συγκεντρώσει ιδιαίτερα σημαντικές επενδύσεις. Ουσιαστικά, κατέχει κεντρική θέση στις σύγχρονες εξελίξεις των Επιστημών της Ζωής, με πιο χαρακτηριστικό παράδειγμα τα προγράμματα "Αποκωδικοποίησης" των Γονιδιωμάτων, περιλαμβανομένου και αυτού του Ανθρώπου. Σε αντίθεση με την υπολογιστική Βιολογία που συμπεριλαμβάνει οποιαδήποτε χρήση υπολογιστικών πόρων για τη λύση προβλημάτων της βιολογίας, η Βιοπληροφορική στοχεύει περισσότερο στη διαχείριση και ερμηνεία δεδομένων που προέρχονται από το χώρο της βιολογίας. Είναι σημαντικό να σημειωθεί ότι τα δεδομένα αναφέρονται κατά κύριο λόγο σε μοριακούς μηχανισμούς του κυττάρου έχοντας ως αποτέλεσμα, σε συνδυασμό με τις σύγχρονες μεθόδους αλληλούχισης μεγάλης κλίμακας (Next Generation Sequencing), αποτελούν χαρακτηριστικό παράδειγμα μεγάλων δεδομένων (Big Data). Μια από τις βασικές κατευθύνσεις της Βιοπληροφορικής είναι η συγκριτική γονιδιωματική, δηλαδή ο συστηματικός τρόπος καταγραφής και αναγνώρισης των διαφορετικών γνωρισμάτων οργανισμών με βάση τη γενετική τους πληροφορία. Κύριο εργαλείο προς αυτήν την κατεύθυνση είναι η σύγκριση βιολογικών δεδομένων μεταξύ διαφορετικών οργανισμών ή και πρωτεϊνών του ίδιου οργανισμού. Έτσι μέσα από το χάος των παραγόμενων βιολογικών δεδομένων καθίσταται δυνατό να ανιχνευθούν λανθάνουσες ομοιότητες καθοριστικής σημασίας για την κατανόηση του έμβιου κόσμου από την ερευνητική κοινότητα. Εκεί εστιάζει άλλωστε και η παρούσα εργασία. Την τελευταία δεκαετία καθίσταται όλο και φτηνότερη η μαζική παραγωγή αξιόπιστων βιολογικών δεδομένων, τα οποία μάλιστα είναι δημοσίως προσβάσιμα στο διαδίκτυο. Αποτελεί λοιπόν πρόκληση για τη Βιοπληροφορική, όπως και για άλλους σύγχρονους επιστημονικούς τομείς, η διαχείριση και ερμηνεία ενός τεράστιου όγκου δεδομένων. Για να ανταποκριθεί ο τομέας της Βιοπληροφορικής σε αυτή την αναγκαιότητα, κατευθύνθηκε τα τελευταία χρόνια στη χρήση υπολογιστικών πόρων μεγάλης κλίμακας καθώς η διεξαγωγή αναλύσεων απαιτεί απαγορευτικά μεγάλο χρόνο για να ολοκληρωθεί σε ένα παραδοσιακό υπολογιστικό σύστημα. Προς την κατεύθυνση αυτή προσανατολίζεται σε μεγάλο βαθμό και η παρούσα εργασία. [1] [2] 1
1.2 Περιγραφή του προβλήματος Βασικό βήμα στη διεξαγωγή πολλών διαφορετικών βιολογικών αναλύσεων αποτελεί η σύγκριση ακολουθιών για την εύρεση ομοιοτήτων που υποδεικνύουν κάποια εξελικτική ή λειτουργική σχέση. Οι ακολουθίες μπορεί να είναι είτε πρωτεϊνικές, οπότε αποτελούνται από 20 διαφορετικά αμινοξέα, είτε DNA/RNA, οπότε αποτελούνται από τα 4 νουκλεοτίδια. Το γεγονός ότι η σύγκριση αυτή απαιτείται ως ενδιάμεσο βήμα σε τεράστιο πλήθος ετερογενών αναλύσεων, καθιστά τη βελτιστοποίηση της εξαιρετικά κρίσιμη. Δυστυχώς η απαιτούμενη ευθυγράμμιση είναι συχνά απαγορευτικά χρονοβόρα όταν εκτελείται σε μεμονωμένα υπολογιστικά συστήματα, οσοδήποτε ισχυρά και αν είναι αυτά. Για το λόγο αυτό γίνεται προσπάθεια να αξιοποιηθούν κατανεμημένα συστήματα υπολογιστών, των οποίων οι συνολικοί πόροι είναι αρκετοί για να ανταποκριθούν σε τεράστιο όγκο δεδομένων εισόδου. Ένα τέτοιο υπολογιστικό περιβάλλον είναι το πλέγμα υπολογιστών ή Grid. 1.3 Στόχος της διπλωματικής Στόχο της παρούσας εργασίας αποτελεί η ανάπτυξη ενός προγράμματος για τη διεξαγωγή συνήθων βιολογικών αναλύσεων που προαναφέρθηκαν σε περιβάλλον πλέγματος υπολογιστών (Grid). Μέσω του προγράμματος ο χρήστης θα μπορεί να υποβάλλει εργασίες σύγκρισης ακολουθιών και κατασκευής των φυλογενετικών προφίλ στο Grid, να παρακολουθεί την κατάσταση της εργασίας του ανά πάσα στιγμή και να ανακτά τα αποτελέσματα αυτής όταν ολοκληρωθεί. Είναι προφανές ότι βασικό ζητούμενο είναι η επεκτασιμότητα, η δυνατότητα δηλαδή του χρήστη να διεξάγει αναλύσεις σε οσοδήποτε μεγάλο όγκο δεδομένων. Εξίσου σημαντικό είναι να προκύψει αισθητή επιτάχυνση χάρη στην χρήση υπολογιστικών πόρων από πολλά υπολογιστικά συστήματα. Τέλος θα πρέπει τα τελικά και ενδιάμεσα αποτελέσματα να επιστρέφονται σε μορφή που να είναι αφενός εύκολα αναγνώσιμη από το χρήστη, αφετέρου να προσφέρεται ως είσοδος σε διεργασίες περαιτέρω ανάλυσης, ώστε το πρόγραμμα να μπορεί να λειτουργήσει ως ενδιάμεσο βήμα σε οποιοδήποτε τύπο ανάλυσης. 1.4 Μεθοδολογία Η είσοδος του προγράμματος είναι ουσιαστικά ένα σύνολο αρχείων FASTA, τα οποία περιέχουν τις ακολουθίες αμινοξέων για όλους τους οργανισμούς που επιθυμεί να εξετάσει ο χρήστης. Το πρόγραμμα κατανέμει με βέλτιστο τρόπο το συνολικό φορτίο σε υπολογιστικούς κόμβους του πλέγματος και παρακολουθεί τις διεργασίες καθ όλη τη διάρκεια εκτέλεσης τους. Η εκτέλεση των εργασιών αποτελείται από δύο διακριτά μέρη, την ανάλυση BLAST που είναι κοινή για όλες τις δυνατές αναλύσεις, και την κατασκευή των φυλογενετικών προφίλ που μπορεί να γίνει με διάφορες μεθόδους τις οποίες καθορίζει ο χρήστης. Τα δύο αυτά τμήματα εκτελούνται εν σειρά σε κάθε μηχάνημα του πλέγματος, δηλαδή η έξοδος 2
του BLAST τροφοδοτείται στον αλγόριθμο κατασκευής των προφίλ αμέσως μόλις γίνει διαθέσιμη. Με τον τρόπο αυτό πετυχαίνουμε την ελαχιστοποίηση των καθυστερήσεων μεταφοράς δεδομένων εισόδου και εξόδου από και προς τους υπολογιστικούς κόμβους καθώς και επιπλέον καθυστερήσεις που απαιτούνται για τη δρομολόγηση των εργασιών. Τέλος η συνολική έξοδος συλλέγεται στο τερματικό διεπαφής του χρήστη και οργανώνεται σε ένα σύστημα ιεραρχίας φακέλων που διευκολύνει την μετέπειτα επεξεργασία και εποπτεία των αποτελεσμάτων. Επιπρόσθετα, ο τρόπος και η μορφή αποθήκευσης την αποτελεσμάτων επιτρέπει την περαιτέρω επεξεργασία τους ώστε να καταστεί δυνατή η οπτικοποίηση τους από το χρήστη. Για παράδειγμα το μέγεθος των αναλύσεων στις οποίες στοχεύουμε συχνά παράγουν τεράστια αρχεία εξόδου τα οποία μπορούν να φιλτραριστούν κατάλληλα για να γίνουν κατανοητά από κάποιον ερευνητή. 1.5 Διάρθρωση της διπλωματικής Στο κεφάλαιο 2 παρουσιάζεται το θεωρητικό υπόβαθρο της διπλωματικής εργασίας, οι αλγόριθμοι που χρησιμοποιεί καθώς και η υποδομή στην οποία αναπτύχθηκε. Στο κεφάλαιο 3 παρουσιάζεται γενικά και αναλυτικά το πρόγραμμα που αναπτύχθηκε, περιγράφεται η είσοδος, η ροή και η έξοδος του προγράμματος, ενώ αναλύεται διεξοδικά και η πολυπλοκότητα του. Στο κεφάλαιο 4 παρουσιάζονται τα πειράματα που πραγματοποιήθηκαν, τα συμπεράσματα που εξάγονται από αυτά, καθώς και πιθανές μελλοντικές επεκτάσεις του προγράμματος. Ακολουθεί το κεφάλαιο 5 με την βιβλιογραφία που χρησιμοποιήθηκε και ένα παράρτημα με σαφείς οδηγίες για την εγκατάσταση και χρήση του προγράμματος. 3
2 Θεωρητικό υπόβαθρο Βασικό πρόβλημα της Βιοπληροφορικής είναι ο καθορισμός της λειτουργίας όσο το δυνατόν περισσότερων πρωτεϊνών. Τούτο επιτυγχάνεται μέσω της σύγκρισης των άγνωστων πρωτεϊνών με άλλες, των οποίων η λειτουργία είναι ήδη εξακριβωμένη. Σύμφωνα με τη διεθνή βιβλιογραφία, πρωτεΐνες που σχετίζονται εξελικτικά ή λειτουργικά εμφανίζουν μεταξύ τους ομοιότητες είτε ως προς τη σύσταση, είτε ως προς τη συμμετοχή τους σε κοινά μεταβολικά μονοπάτια ή διεργασίες. Ο πλέον προφανής τρόπος για να ανιχνεύσουμε την ομοιότητα μεταξύ δύο ακολουθιών είναι να συγκρίνουμε την αμινοξεϊκή ακολουθία τους. Ωστόσο έχει αποδειχθεί ότι υπάρχουν πρωτεΐνες με κοινή ή πολύ κοντινή λειτουργία που εμφανίζουν σημαντικές διαφορές στη σύσταση τους, απαιτούνται λοιπόν πρόσθετες τεχνικές ανίχνευσης της ομοιότητας μεταξύ των πρωτεϊνών. Στην παρούσα διπλωματική θα χρησιμοποιήσουμε δύο από τις δημοφιλέστερες μεθόδους, αυτήν της απευθείας σύγκρισης των αμινοξεικών ακολουθιών, και αυτή της σύγκρισης των φυλογενετικών προφίλ. Παρακάτω παρουσιάζονται συνοπτικά οι τεχνικές που υλοποιούν τις παραπάνω συγκρίσεις. 2.1 Blast 2.1.1 Περιγραφή Αλγορίθμου O BLAST (Basic Local Alignment Search Tool) είναι ένας από τους πλέον ευρέως χρησιμοποιούμενους αλγορίθμους για την αναζήτηση ομοιότητας μεταξύ πρωτεϊνών. Παρά το ότι άλλοι αλγόριθμοι προϋπήρχαν (όπως ο FastA και ο Smith-Waterman), η ανίχνευση ομοιοτήτων ήταν εξαιρετικά χρονοβόρα διότι οι αλγόριθμοι αυτοί απαιτούν την πλήρη ευθυγράμμιση των ακολουθιών. O BLAST αντίθετα δεν εγγυάται τη βέλτιστη ευθυγράμμιση, αφού αναζητά μόνο τα πλέον σημαντικά patterns στις ακολουθίες. Δίνει έτσι έμφαση στη μείωση του υπολογιστικού χρόνου θυσιάζοντας σε ένα βαθμό την ακρίβεια. Αυτός ο συμβιβασμός είναι που τον καθιστά απαραίτητο στις σύγχρονες αναλύσεις, όπου ο τεράστιος όγκος των βάσεων βιολογικών δεδομένων καθιστά την πλήρη ευθυγράμμιση απαγορευτικά χρονοβόρα. 4
Σχήμα 2-1: Κατάτμηση ακολουθίας σε λέξεις μήκους 3 χαρακτήρων Η βασική διαφορά του BLAST από τους προκατόχους του, στην οποία οφείλει και την επιτάχυνση του, είναι η μείωση του πλήθους αναζητήσεων σε ένα υποσύνολο των συνολικών. Αρχικά βρίσκονται όλες οι υποακολουθίες συγκεκριμένου μεγέθους που εμφανίζονται στην υπό εξέταση ακολουθία, όπως φαίνεται στο σχήμα 1.1. Αυτές αναφέρονται ως λέξεις (words) και το μέγεθος τους είναι καταρχήν ίσο με 3 για ακολουθίες αμινοξέων, ή 11 για ακολουθίες νουκλεοτιδίων. Ωστόσο ο χρήστης μπορεί να επιλέξει οποιοδήποτε μέγεθος λέξης. Ο χρήστης επιλέγει επίσης 3 σκορ (threshold - T, cutoff score - S, lower threshold score X). [3] Παλαιότερες εκδόσεις του BLAST έψαχναν μόνο σημεία της βάσης που να συμπίπτουν ακριβώς με μία από τις λέξεις που βρέθηκαν στην ακολουθία προς εξέταση. Ωστόσο η νεότερες εκδόσεις (από BLAST-2 και μετά) σχηματίζουν μια λίστα όλων των λέξεων που είναι αρκετά όμοιες με τουλάχιστον μία λέξη της προς εξέταση ακολουθίας, πετυχαίνουν δηλαδή σκορ ομοιότητας μεγαλύτερο του S. Η ομοιότητα υπολογίζεται με βάση ένα πίνακα που δείχνει την επιμέρους συνεισφορά κάθε ζεύγους συμβόλων στο τελικό σκορ ομοιότητας. Στην περίπτωση νουκλεοτιδίων για παράδειγμα, ο πίνακας αυτός είναι πολύ απλός: σε περίπτωση που βρεθεί το ίδιο σύμβολο το σκορ αυξάνεται κατά 3 ενώ σε περίπτωση που τα σύμβολα διαφέρουν το σκορ μειώνεται κατά 1. Ο πίνακας είναι πιο περίπλοκος για τις ακολουθίες αμινοξέων, συγκεκριμένα η ταύτιση δύο συμβόλων δε δίνει το ίδιο σκορ ενώ διαφορετικά σύμβολα μπορεί να δώσουν μικρό θετικό σκορ και όχι πάντα αρνητικό. Οι λέξεις αυτές, που αποτελούν προφανώς υπερσύνολο των αρχικών, λέγονται γειτονικές λέξεις (neighborhood words). Στη συνέχεια κάθε ακολουθία της βάσης ευθυγραμμίζεται με καθεμία από τις neighborhood words και σε περίπτωση που η ευθυγράμμιση είναι σημαντική, ξεκινάει η ολική ευθυγράμμιση της υπό εξέταση ακολουθίας, δηλαδή οι δύο ακολουθίες επεκτείνονται και προς τις δύο κατευθύνσεις, ένα γράμμα σε κάθε επανάληψη, και το σκορ ομοιότητας των δύο συμβόλων προστίθεται (ή αφαιρείται από) το αρχικό. Η ευθυγράμμιση σταματά όταν το σκορ ξεκινήσει να μειώνεται, συγκεκριμένα όταν δύο σύμβολα δώσουν για πρώτη φορά σκορ μικρότερο από Χ. Τη στιγμή εκείνη τα δύο τμήματα της ακολουθίας σχηματίζουν ένα HSP (high scoring pair) αφού το σκορ τους έχει τη μέγιστη τιμή του. Αν και 5
μόνο αν η συνολική αυτή ευθυγράμμιση έχει τελικά σκορ μεγαλύτερο από Τ, ο αλγόριθμος συμπεριλαμβάνει το ζευγάρι στη λίστα των πιθανών ομολόγων. Το γεγονός ότι ο BLAST επιχειρεί ευθυγράμμιση μόνο των γειτονικών λέξεων οδηγεί στη σημαντική μείωση του χρόνου εκτέλεσης. Μάλιστα όσο μεγαλύτερο κατώφλι S θέσει ο χρήστης τόσο μεγαλύτερη επιτάχυνση καταφέρνει, θυσιάζοντας βέβαια πιθανών σε ακρίβεια. [4] [5] Σχήμα 2-2: Παράδειγμα υπολογισμού γειτονικών λέξεων 2.1.2 Είσοδος - Έξοδος Ο αλγόριθμος δέχεται σαν είσοδο αρχεία τύπου FASTA. Τα αρχεία αυτά έχουν μεν ένα ορισμένο format, αλλά μπορούν να έχουν διάφορες επεκτάσεις (με πλέον συνηθισμένες τις.faa και.fasta). Ουσιαστικά το πρότυπο ορίζει μια γραμμή-κεφαλίδα για κάθε πρωτεΐνη (title/header line) που συνήθως περιλαμβάνει το όνομα και μια σύντομη περιγραφή της καθώς και την ακολουθία της στην αμέσως επόμενη γραμμή. Οι γραμμές header ξεκινούν υποχρεωτικά με το σύμβολο >. 6
Σχήμα 2-3: Παράδειγμα μιας ακολουθίας σε αρχείο τύπου FASTA Η έξοδος μπορεί να ληφθεί σε διάφορες μορφές μέσω της επιλογής outfmt του εργαλείου BLAST. Συγκεκριμένα η επιλογή αυτή μπορεί να πάρει 12 διαφορετικές τιμές, καθεμία από τις οποίες οδηγεί σε διαφορετικό format των αρχείων εξόδου. Τα format μπορεί να διαφέρουν είτε ως προς τον τύπο του παραγόμενου αρχείου, π.χ xml αντί html, είτε ως προς το επίπεδο λεπτομέρειας που περιέχουν (π.χ full alignment, score only, tab-delimited και άλλα). Οι πλέον συνήθεις μορφές είναι οι html, xml ή τα απλά txt αρχεία. Στα πλαίσια της εργασίας επιλέγουμε την πλέον απλή μορφή, tab delimited txt που αντιστοιχεί στην επιλογή outfmt 6, αφού αυτή προσφέρεται για περαιτέρω επεξεργασία σε περιβάλλον UNIX ενώ ταυτόχρονα είναι εύκολα ερμηνεύσιμη από τον άνθρωπο αναγνώστη. [6] Η έξοδος του αλγορίθμου όπως βλέπουμε περιέχει πολλά πεδία, μεγαλύτερο ενδιαφέρον όμως παρουσιάζουν εκτός από τις συγκρινόμενες πρωτεΐνες, οι δείκτες δύο δείκτες ομοιότητας: 1. Το σκορ identity μας δείχνει τι ποσοστό συμβόλων (πρωτεϊνών ή αμινοξέων) ήταν ίδια, στις αντίστοιχες θέσεις μετά την ευθυγράμμιση. Δίνεται ως ποσοστό και είναι προφανώς μέγεθος ανάλογο της ομοιότητας. Ωστόσο όσο το μέγεθος των συγκρινόμενων ακολουθιών μεγαλώνει, είναι πιθανό να πάρουμε παραπλανητικά μεγάλο identity σκορ ακόμα και αν οι πρωτεΐνες δε συσχετίζονται σε σημαντικό βαθμό. Για το λόγο αυτό χρησιμοποιούμε και τον παρακάτω δείκτη 2. Ο δείκτης e-value δείχνει το πλήθος των αναμενόμενων πετυχημένων αναζητήσεων που θα παίρναμε τυχαία στις συγκρινόμενες ακολουθίες. Άρα όσο μικρότερος είναι ο δείκτης, τόσο μεγαλύτερη η στατιστική σημασία έχει η ευθυγράμμιση. Η ανεξαρτησία του από τα χαρακτηριστικά των ακολουθιών το καθιστά ιδανικό δείκτη για ορισμό κατωφλίου. 7
2.2 Φυλογενετικά προφίλ Δυστυχώς οι πληροφορίες που επιστρέφει κατά την έξοδό του ο αλγόριθμος BLAST δεν επαρκούν αυτοτελώς για να αναδειχθεί η κοντινή συσχέτιση μεταξύ δυο πρωτεϊνών. Όπως αναφέρθηκε, μπορεί κάποιο σκορ να είναι παραπλανητικά μεγάλο, ή ακόμα δύο πρωτεΐνες με κοντινή λειτουργία να διαφέρουν πολύ στη σύσταση. Για το λόγο αυτό χρησιμοποιούνται και άλλες τεχνικές για την ανίχνευση εξελικτικών σχέσεων μεταξύ πρωτεϊνών, η βασικότερη εκ των οποίων είναι η κατασκευή των φυλογενετικών προφίλ. Η τεχνική αυτή βασίζεται στην παρατήρηση ότι η κοινή παρουσία ή απουσία κάποιων ακολουθιών σε ένα επαρκώς μεγάλο σύνολο ειδών ή οργανισμών μπορεί να υποδηλώνει μια σημαντική βιολογική σύνδεση μεταξύ τους, όπως το να εμπλέκονται στο ίδιο βιολογικό μονοπάτι. Η τεχνική αυτή ανήκει στις post-homology τεχνικές, σε αυτές δηλαδή που προαπαιτούν την εύρεση ομολογιών μεταξύ όλων των ακολουθιών με κάποιο εργαλείο όπως είναι στη περίπτωση μας ο BLAST. Για παράδειγμα, δύο πρωτεΐνες που εμφανίζονται σε όλα τα μέλη μιας οικογένειας βακτηρίων αλλά σε κανέναν άλλο οργανισμό είναι εξαιρετικά πιθανό να σχετίζονται με μια μοναδική λειτουργία των βακτηρίων αυτών ακόμα και αν η σύσταση τους διαφέρει σημαντικά. [7] Από τεχνικής πλευράς, τα φυλογενετικά προφίλ είναι διανύσματα που χαρακτηρίζουν μια ακολουθία. Συγκεκριμένα, υποδεικνύουν τις ομολογίες της ακολουθίας με κάθε γονιδίωμα της βάσης δεδομένων που χρησιμοποιούμε. Κάθε στοιχείο στο διάνυσμα αυτό αντιστοιχεί στην παρουσία (συμβολίζεται με τον αριθμό 1) ή απουσία (συμβολίζεται με τον αριθμό 0) τουλάχιστον μίας ομολογίας της υπό εξέτασης πρωτεΐνης στο αντίστοιχο γονιδίωμα. Εκτός των απλών αυτών προφίλ που θα αναφέρονται στο εξής ως δυαδικά, μπορούμε να κατασκευάσουμε και μια εκτεταμένη έκδοση τους αντικαθιστώντας την ένδειξη παρουσίας/απουσίας με το πλήθος των ομολογιών μεταξύ της ακολουθίας και του γονιδιώματος. [8] [9] Παρακάτω φαίνονται παραδείγματα τόσο για δυαδικά όσο και για εκτεταμένα προφίλ. Πίνακας 2-1: Παράδειγμα δυαδικών προφίλ 8
Σχήμα 2-4: Εκτεταμένο προφίλ, σκούρο χρώμα αντιστοιχεί σε περισσότερες ομολογίες Μια ακόμα ισχυρότερη εξελικτική συσχέτιση μεταξύ δύο ακολουθιών μπορεί να αναδειχθεί με τη χρήση των βέλτιστων αμφίδρομων ομολογιών (Best Bidirectional Hits - BBH). Εξ ορισμού, το βέλτιστο ομόλογο μιας ακολουθίας seq A του γονιδιώματος Α προς ένα γονιδίωμα Β, είναι η ακολουθία seq B του γονιδιώματος Β που πετυχαίνει το μεγαλύτερο σκορ, δηλαδή μια βαθμός ομολογίας με το μεγαλύτερο identity I, ή με το μικρότερο e-value από όλες τις υπόλοιπες ομόλογες ακολουθίες προς τον οργανισμό αυτό. Αυτή η σχέση ομολογίας είναι και αμφίδρομη, εάν η seq A αποτελεί επίσης βέλτιστο ομόλογο της seq B. Ένα BBH αναπαριστά μια πολύ ισχυρή ομοιότητα μεταξύ 2 ακολουθιών και θεωρείται ένδειξη ότι τα γονίδια είναι πιθανών ορθόλογα, προέρχονται δηλαδή από κάποιο κοινό πρόγονο γονίδιο. [10] Χρησιμοποιώντας ως παράδειγμα τις ακολουθίες του πίνακα 0, ο πίνακας 1 δείχνει ένα δείγμα της εξόδου του BLAST ενώ οι πίνακες 2,3 και 4 δείχνουν τους 3 διαφορετικούς τύπους φυλογενετικών προφίλ που μπορούμε να κατασκευάσουμε από αυτήν (εκτεταμένα, δυαδικά ή αμφίδρομα). Τέλος το Σχήμα 2-5 επιχειρεί να αναδείξει γραφικά τη διαφορά μεταξύ μιας γενικής, και μιας αμφίδρομης σχέσης ομολογίας. 9
Σχήμα 2-5: Διαφοροποίηση μιας γενικής ομολογίας από μία αμφίδρομη Genome-1 Genome-2 Genome-3 sequence 1 1 sequence 2 1 sequence 3 1 sequence 2 2 Πίνακας 2-2: Υποθετικές ακολουθίες ενός σετ δεδομένων εισόδου. Ο δείκτης υποδηλώνει το γονιδίωμα της ακολουθίας. Εξεταζόμενη ακολουθία Ακολουθία βάσης Identity Score sequence 1 1 sequence 2 1 89.9 sequence 1 1 sequence 2 2 73.2 sequence 1 1 sequence 3 1 61.1 sequence 2 1 sequence 1 1 92.8 sequence 2 1 sequence 3 1 88.1 Πίνακας 2-3: Δείγμα εξόδου BLAST για 2 ακολουθίες Query Sequence Genome-1 Genome-2 Genome-3 sequence 1 1 X 2 1 sequence 2 1 1 X 1 Πίνακας 1-4: Εκτεταμένα φυλογεννετικά προφίλ για 2 ακολουθίες Query Sequence Genome-1 Genome-2 Genome-3 sequence 1 1 X 1 1 sequence 2 1 1 X 1 Πίνακας 2-5: Δυαδικά φυλογενετικά προφίλ 10
Genome-1 Genome-2 sequence 1 1 sequence 2 1 Πίνακας 2-6: ζεύγη BBH που προκύπτουν από την έξοδο του BLAST 2.3 Υπολογιστικό Πλέγμα Grid To πλέγμα υπολογιστών, ή αλλιώς Grid, είναι μια υπολογιστική δομή που στοχεύει στο συντονισμό πολλών μεμονωμένων υπολογιστικών πόρων μεταξύ των μελών ενός οργανισμού (Virtual Organization - VO) για τη επίλυση ενός προβλήματος τόσο μεγάλης κλίμακας που θα ήταν αδύνατο ή ασύμφορο να λυθεί σε ένα συμβατικό υπολογιστικό σύστημα. Ο διαμοιρασμός των πόρων είναι ελεγχόμενος. Οι πάροχοι και οι καταναλωτές των πόρων καθορίζουν επακριβώς το τι μοιράζονται, το τι χρειάζονται και υπό ποιες συνθήκες θα ακολουθείται ο διαμοιρασμός. Ένα σύνολο ατόμων ή/και οργανισμών που ακολουθούν αυτούς τους κανόνες διαμοιρασμού σχηματίζουν τα virtual organizations. Η βασική διαφορά του Grid έναντι άλλων διανεμημένων υπολογιστικών δομών όπως το Cloud, είναι η απουσία άμεσου ελέγχου, ο χρήστης δηλαδή δεν έχει άμεση πρόσβαση στους πόρους του συστήματος. Αντιθέτως, μεταξύ του τελικού χρήστη και των υπολογιστικών πόρων που αυτός χρησιμοποιεί εισάγεται ένας διαμεσολαβητής (middleware), ο οποίος δρομολογεί τα προγράμματα των χρηστών στους διαθέσιμους πόρους. Οι πόροι αυτοί μπορεί να είναι είτε υπολογιστικοί (CPUs), είτε αποθηκευτικοί (σκληροί δίσκοι) αλλά και πόροι λογισμικού (εφαρμογές και πλατφόρμες). Το Grid είναι βασισμένο σε μια αρχιτεκτονική με συγκεκριμένη ιεραρχία, όπου πρωτόκολλα κατώτερων επιπέδων προσφέρουν υπηρεσίας στα ανώτερα επίπεδα. Προφανώς στο ανώτερο επίπεδο βρίσκεται η εφαρμογή του τελικού χρήστη. Σχηματικά η αρχιτεκτονική αυτή παρουσιάζεται στο παρακάτω σχήμα. 11
Σχήμα 2.6: Αρχιτεκτονική πρωτοκόλλων του πλέγματος Στο κατώτατο επίπεδο έχουμε το Fabric Layer. Αυτό περιλαμβάνει ουσιαστικά τους πόρους του συστήματος που όπως είπαμε μπορεί να είναι επεξεργαστές, σκληροί δίσκοι καθώς και το δίκτυο που τα συνδέει. Το Resource Layer αποτελείται από πρωτόκολλα που ορίζουν την ελεγχόμενη πρόσβαση καθώς και παρακολούθηση σε μεμονωμένους πόρους του Fabric Layer. Συγκεκριμένα έχουμε πρωτόκολλα που παρέχουν πληροφορίες για την κατάσταση του επιμέρους πόρου στον οποίο αναφέρονται, π.χ. ο ελεύθερος χώρος σε ένα στοιχείο αποθήκευσης καθώς και πρωτόκολλα διαχείρισης του πόρου από τα ανώτερα layers. Το Connectivity Layer αναφέρεται σε πρωτόκολλα σύνδεσης των επιμέρους πόρων μέσω του Internet ώστε να είναι δυνατή η ασφαλής μεταφορά δεδομένων μεταξύ τους. Περιλαμβάνει ακόμα πρωτόκολλα πιστοποίησης της ταυτότητας τόσο επιμέρους χρηστών όσο και οργανισμών (V.O) καθώς και το δικαίωμα πρόσβασης των τελευταίων στο Fabric Layer. Πρακτικά πολλά από αυτά τα πρότυπα είναι απλές επεκτάσεις προτύπων του Internet, π.χ. TCP/IP και UPD/IP για μεταφορά αρχείων μεταξύ πόρων. To Collective Layer αποτελείται από πρωτόκολλα που ορίζουν τη διαχείριση του συνόλου των πόρων και όχι ενός μεμονωμένου, αναφέρονται δηλαδή στην καθολική κατάσταση του συστήματος. Εδώ υπάρχουν για παράδειγμα υπηρεσίες που βρίσκουν διαθέσιμους πόρους που ικανοποιούν τις απαιτήσεις του χρήστη, ή κάνουν εκ των προτέρων κράτηση για πόρους που η εφαρμογή του χρήστη θα απαιτήσει αργότερα. 12
Το Application Layer δεν είναι παρά η εφαρμογή του τελικού χρήστη, ο οποίος ανήκει προφανώς σε ένα V.O, χρησιμοποιεί δε τις προσφερόμενες υπηρεσίες όλων των κατώτερων επιπέδων για να χρησιμοποιήσει τους απαιτούμενους πόρους ελεγχόμενα. [11] [12] 2.4 Hellas Grid Με τον όρο HellasGrid εννοούμε την υποδομή HPC που δημιουργήθηκε στην Ελλάδα για την υποστήριξη επιστημονικών ερευνών μεγάλης κλίμακας, χάρη στη συμμετοχή 426 υπολογιστικών κόμβων που συνολικά προσφέρουν στο σύστημα πάνω από 8,500 πυρήνες CPU. Το σύστημα είναι ενταγμένο στην ευρωπαϊκή δομή του EGI και θεωρείται η μεγαλύτερη υποδομή Grid Computing στην Νοτιοανατολική Ευρώπη. Πρόσβαση στο HellasGrid αποκτά κανείς με την εγγραφή του σε ένα V.O. Υπάρχουν πολλοί οργανισμοί στους οποίους μπορεί κανείς να γραφτεί οι οποίοι συχνά συνδέονται με κάποια συγκεκριμένη κατεύθυνση ερευνών, π.χ. ο biomed VO για εφαρμογές βιοιατρικής. Οι χρήστες νοτιοανατολικής Ευρώπης μπορούν εύκολα να γίνουν μέλη του SEE VO (Southern Eastern European Virtual Organization) αφού αυτός είναι ένας οργανισμός γενικής χρήσης. 2.4.1 Υποβολή εργασιών Για να υποβάλλει κανείς εργασία ή job πρέπει να εκδώσει ένα πιστοποιητικό και να το εγκαταστήσει στο user interface του. Έπειτα μπορεί να δημιουργήσει proxy certificate με κατάλληλες εντολές που βρίσκει στη σελίδα του HellasGrid. Το τελευταίο μπορεί να το ανανεώνει ανά πάσα στιγμή χειροκίνητα ή και αυτόματα. Αφού λοιπόν ο χρήστης ενεργοποιήσει το proxy certificate μπορεί πλέον να υποβάλλει jobs σε κάποιο υπολογιστικό πόρο που στο εξής θα αναφέρεται ως Computer Element CE. Η υποβολή γίνεται μέσω μιας γλώσσας συγκεκριμένου πεδίου εφαρμογής που λέγεται JDL (Job Description Language). Με τη γλώσσα αυτή ο χρήστης μπορεί να ορίσει μεταξύ άλλων το εκτελέσιμο αρχείο του, τα δεδομένα εισόδου και εξόδου, καθώς και τυχών ειδικές απαιτήσεις του (π.χ. την επιθυμία του να εκτελεστεί η εργασία του σε κάποιο συγκεκριμένο CE). Παρακάτω βλέπουμε ένα απλό παράδειγμα τέτοιο JDL αρχείου που εκτελεί το πρόγραμμα runnable.sh με είσοδο το αρχείο inputdata.xml. Αφού συντάξει ο χρήστης το αρχείο JDL μπορεί να το υποβάλλει προς εκτέλεση. Ανά πάσα στιγμή μπορεί να ελέγξει την κατάσταση της εργασίας του, που μπορεί να είναι μία από τις παρακάτω: Ready: το job είναι έτοιμο να υποβληθεί σε κάποιο CE Waiting: το job περιμένει να υποβληθεί σε κάποιο CE Submitted: το job έχει υποβληθεί σε κάποιο CE Scheduled: το job έχει δρομολογηθεί σε κάποιο CE και περιμένει την σειρά του για να εκτελεστεί 13
Running: το job εκτελείται σε κάποιο CE Done (Success): το job έχει τερματίσει με κατάσταση εξόδου μηδέν (επιτυχώς) Done (Exit Code!=0): το job έχει τερματίσει με κατάσταση εξόδου διάφορη του μηδενός (ανεπιτυχώς) Canceled: ο χρήστης αποφάσισε να ακυρώσει την εργασία του προτού αυτή εκτελεστεί. Cleared: τα αποτελέσματα του job έχουν ανακτηθεί από τον χρήστη Aborted: Η εργασία ακυρώθηκε διότι υπήρξε κάποιο πρόβλημα (πχ ξεπέρασε το μέγιστο επιτρεπόμενο χρόνο εκτέλεσης) Μετά το πέρας της εκτέλεσης ενός job, ο χρήστης μπορεί να ανακτήσει τα δεδομένα που παρήγαγε το πρόγραμμα με την εκτέλεση του, δηλαδή πιθανά παραγόμενα αρχεία ή, απλά, το standard output του προγράμματός. Να σημειωθεί ότι το Grid παρέχει στους χρήστες του όχι μόνο υπολογιστικούς, αλλά και αποθηκευτικούς πόρους (Storage Element SE). Στην περίπτωση μάλιστα που τα δεδομένα εισόδου για κάποια εργασία απαιτούν ιδιαίτερα μεγάλο όγκο, ο χρήστης τα αποθηκεύει αρχικά σε κάποιο SE από όπου ο υπολογιστικός πόρος μπορεί έπειτα να τα ανακτήσει (δε στέλνονται δηλαδή απευθείας μέσω του InputSandbox). Στην περίπτωση που πρέπει να εκτελεστούν πολλές εργασίες, παρέχονται τα παρακάτω εργαλεία: job collection, όπου υποβάλλονται ταυτόχρονα διαφορετικές εργασίες μέσω ενός κοινού JDL αρχείου parametric job, όπου υποβάλλονται ταυτόχρονα, μέσω ενός JDL αρχείου, διαφορετικές εκδοχές της ίδιας εργασίας (ίδιος κώδικας), και κάθε εκδοχή δέχεται διαφορετική παράμετρο εισόδου dag jobs, όπου υποβάλλονται μέσω ενός κοινού JDL αρχείου απλά jobs που πρέπει να εκτελεστούν με συγκεκριμένη σειρά, αν π. χ. η έξοδος κάπου job αποτελεί είσοδο για το επόμενο Ωστόσο κανένα από τα παραπάνω δεν επιτρέπει τον πλήρη έλεγχο της υποβολής (πότε ακριβώς θα υποβληθούν οι εργασίες, με τι σειρά κλπ.). Επειδή όπως θα δούμε παρακάτω η ακριβής ρύθμιση τέτοιων παραμέτρων μπορεί να αποφέρει σημαντική επιτάχυνση της διαδικασίας, επιλέξαμε στην παρούσα εργασία να διαχειριστούμε χειροκίνητα την υποβολή, ρυθμίζοντας την δυναμικά με βάση τις ειδικές απαιτήσεις κάθε εργασίας. 14
3 Περιγραφή Προγράμματος Αρχικά θα επιχειρήσουμε μια μακροσκοπική παρουσίαση των βημάτων του προγράμματος, έπειτα τα επιμέρους τμήματα θα αναλυθούν διεξοδικά σε ξεχωριστές ενότητες δίνοντας περισσότερη έμφαση σε λεπτομέρειες της υλοποίησης. Η υψηλού επιπέδου περιγραφή της ροής δεδομένων έχει ως εξής : 1) Αρχικά ο χρήστης καθορίζει τα δεδομένα εισόδου, καθώς και διάφορες παραμέτρους της ανάλυσης. 2) Στη συνέχεια το συνολικό υπολογιστικό φορτίο διανέμεται με βέλτιστο τρόπο στους υπολογιστικούς κόμβους του πλέγματος. 3) Έπειτα ξεκινά το κυρίως υπολογιστικό κομμάτι σε κάθε κόμβο, ανιχνεύονται δηλαδή οι ομολογίες κάνοντας χρήση του εργαλείου BLAST και έπειτα οι ομολογίες αυτές χρησιμοποιούνται για την κατασκευή των φυλογενετικών προφίλ. 4) Τέλος όλα τα δεδομένα εξόδου επιστρέφονται στο τερματικό του χρήστη. 3.1 Παράμετροι της ανάλυσης Ο χρήστης πρέπει να καθορίσει όλες τις επιθυμητές παραμέτρους της συνολικής εκτέλεσης, μέσω ενός αρχείου παραμετροποίησης (properties file). Οι απαραίτητες παράμετροι εισόδου είναι οι εξής: Ένας φάκελος που θα περιέχει όλα τα αρχεία των υπό εξέταση οργανισμών (query files) σε μορφή FASTA. Στο εξής ο φάκελος αυτός θα αναφέρεται ως query directory. Ένα αρχείο που επίσης ακολουθεί το FASTA format και αποτελεί την βάση της αναζήτησης. Στην περίπτωση που θέλουμε να κάνουμε αναζήτηση όλων με όλους (all-vs-all) το αρχείο αυτό δεν είναι παρά η συνένωση όλων των αρχείων του query directory. Ένα αρχείο με δύο στήλες όπου κάθε γραμμή ορίζει το σύντομο διακριτικό για έναν αρχείο-οργανισμό του query directory. Τα παραπάνω είναι τα απαραίτητα ορίσματα, ωστόσο ο χρήστης μπορεί να εισάγει πολλές επιπλέον επιλογές ώστε να καθορίσει τα ακριβή βήματα της ανάλυσης που επιθυμεί. Περισσότερες λεπτομέρειες για αυτές θα δούμε στη συνέχεια. 3.2 Είσοδος του προγράμματος Στην ενότητα αυτή θα δούμε με περισσότερη λεπτομέρεια τα αρχεία και τις λοιπές παραμέτρους εισόδου που καλείται να καθορίσει ο χρήστης. Όσον αφορά στο αρχείο βάσης καθώς και στα αρχεία προς εξέταση που βρίσκονται στο query directory, πρέπει απλά να ακολουθούν το πρότυπο FASTA. Η επέκταση μπορεί να είναι οποιαδήποτε επιτρεπόμενη, συνήθως όμως είναι.fasta ή.faa. H μορφή αυτών των αρχείων έχει περιγραφεί στο Κεφάλαιο 2 με λεπτομέρεια. Είναι σημαντικό να σημειωθεί ότι κάθε αρχείο του query directory περιέχει υποχρεωτικά τις ακολουθίες ενός οργανισμού. 15
Δεν μπορούμε δηλαδή να σπάσουμε έναν οργανισμό σε περισσότερα του ενός αρχεία, ούτε και να ενώσουμε πολλούς οργανισμούς σε ένα αρχείο. Από την άλλη το αρχείο βάση είναι μόνο ένα και περιέχει όλους τις ακολουθίες, όλων των οργανισμών. Όπως έχει αναφερθεί ήδη, το αρχείο gene map αποτελείται από δύο στήλες. Κάθε γραμμή αποτελεί τη συσχέτιση του ονόματος ενός αρχείο του query directory με ένα μοναδικό και σύντομο διακριτικό της μορφής XXXX-XXX όπου τα πρώτα 4 γράμματα ορίζουν το βασικό οργανισμό ενώ τα υπόλοιπα 3 το συγκεκριμένο είδος του (χωρίς αυτή η προτυποποίηση να είναι δεσμευτική για την ορθή λειτουργία του προγράμματος). Αυτό συμβαίνει ώστε να προσθέσουμε το διαχωριστικό στην γραμμή-τίτλο κάθε πρωτεΐνης καθιστώντας έτσι τα αρχεία του BLAST πιο εύκολα αναγνώσιμα. Αν π.χ. ο οργανισμός μας λέγεται Nanoarchaeum equitans (strain Kin4-M) θα μπορούσε το διακριτικό του να είναι NEQU-K4M. Άρα η αντίστοιχη γραμμή στο αρχείο gene map θα είναι η εξής: NanoarchaeumEquitansStrainKin4M.fasta NEQU-K4M Τέλος ο χρήστης καθορίζει: τον τύπο των φυλογενετικών προφίλ, δηλαδή αν θα είναι εκτεταμένα ή δυαδικά καθώς και αν θα είναι απλά ή BBH. Μπορεί ακόμα ο χρήστης να επιθυμεί μόνο την έξοδο του BLAST και άρα δε χρειάζεται να κατασκευαστούν τα προφίλ. Αν το πεδίο μείνει κενό κατασκευάζονται απλά, εκτεταμένα προφίλ. Αν η εργασία είναι ανεξάρτητη, ή επέκταση μιας προηγούμενης (λεπτομέρειες σχετικά με αυτό το θέμα δίνονται στην ενότητα 3.3.3). Αν το πεδίο μείνει κενό διεξάγουμε ανεξάρτητη ανάλυση. Τον οργανισμό (V.O.) στον οποίο ανήκει. Αν το πεδίο μείνει κενό χρησιμοποιούμε τον SEE V.O. 3.3 Αναλυτική περιγραφή του προγράμματος Η ροή που ακολουθείται αφού ο χρήστης ορίσει τις παραμέτρους εισόδου, μπορεί μακροσκοπικά να χωριστεί στα παρακάτω διακριτά τμήματα: Αρχικά έχουμε την προετοιμασία της ανάλυσης όπου οι παράμετροι που καθόρισε ο χρήστης μεταφράζονται σε οδηγίες των αντίστοιχων αρχείων JDL. Έπειτα οι εργασίες υποβάλλονται με τρόπο που βελτιστοποιεί την απόδοση του συστήματος. Στη συνέχεια έχουμε την εκτέλεση των διεργασιών στους υπολογιστικούς κόμβους, και την παράλληλη εποπτεία αυτών από διεργασίες παρασκηνίου στο τερματικό διεπαφής του χρήστη. 16
Τέλος τα αποτελέσματα συλλέγονται και παρουσιάζονται με όσο το δυνατόν πιο εύληπτο τρόπο. Η αναλυτική περιγραφή που ακολουθεί επιχειρεί ένα διαχωρισμό των παραπάνω διεργασιών με τρόπο που να καθιστά σαφή την αρχιτεκτονική του συστήματος. Συγκεκριμένα εξηγούμε αρχικά το κομμάτι της ροής εργασιών από την οπτική γωνία του χρήστη, ο οποίος βλέπει μόνο τις διεργασίες που τρέχουν στο τερματικό διεπαφής του. Έπειτα περιγράφουμε την κυρίως λειτουργία του προγράμματος που προφανώς λαμβάνει χώρα στα CE του πλέγματος. 3.3.1 Βασική ροή στο τερματικό του χρήστη Εδώ θα αναλυθούν τα βήματα των εκτελέσιμων αρχείων που θα τρέξουν στο περιβάλλον του χρήστη, αφορούν δηλαδή στη διαδικασία υποβολής και παρακολούθησης των εργασιών και όχι στον τρόπο εκτέλεσης τους. Προφανώς δόθηκε προτεραιότητα ώστε η υπολογιστική πολυπλοκότητα των διεργασιών αυτών να είναι αμελητέα, ώστε υπολογιστικός φόρτος να υφίσταται μόνο στους πόρους του πλέγματος (CEs) και όχι στο περιβάλλον του χρήστη (είτε πρόκειται για ιδιωτικό του τερματικό είτε για κόμβο στο UI του HellasGrid). Η όλη διαδικασία παρουσιάζεται και γραφικά στο σχήμα 3-1. 17
Σχήμα 3-1: Ροή προγράμματος στο τερματικό διεπαφής 3.3.1.1 Προετοιμασία Το πρώτο βήμα του προγράμματος είναι η δημιουργία ενός φακέλου (session folder) που θα περιέχει όλα τα απαιτούμενα για τη συγκεκριμένη ανάλυση. Με τον τρόπο αυτό αποδεσμεύουμε την τρέχουσα σύνοδο από το περιβάλλον εργασίας του χρήστη, επιτρέποντας του έτσι να τρέξει πολλές εργασίες τελείως ανεξάρτητα καθώς και να τροποποιεί αρχεία εισόδου και κώδικα ανενόχλητα κατά τη διάρκεια της συνόδου του. 18
Συγκεκριμένα στο φάκελο της συνόδου αντιγράφονται όλα τα εκτελέσιμα αρχεία που θα χρειαστούν καθώς και όλα τα αρχεία εισόδου. Στον ίδιο φάκελο θα αποθηκευτούν προφανώς και τα αρχεία εξόδου της συνόδου καθώς και η τελική αναφορά. Στη συνέχεια δημιουργείται το σύνολο των απαραίτητων JDL αρχείων, καθένα εκ των οποίων περιγράφει μία εργασία (Job). Προφανώς παράγονται τόσα JDL όσα και τα αρχεία στο query directory αφού όπως είπαμε υποβάλουμε μια εργασία για κάθε οργανισμό. Επειδή η απευθείας υποβολή αρχείων εισόδου θέτει ένα περιορισμό ως προς το μέγεθος των αρχείων, αποθηκεύουμε εκ των προτέρων το αρχείο βάση της ανάλυσης σε κάποιο διαθέσιμο αποθηκευτικό στοιχείο του Grid (SE), αφού αναμένουμε το αρχείο αυτό να είναι μεγάλο και προφανώς κοινό για όλες τις εργασίες. Από την άλλη, το αρχείο με τις ακολουθίες του εκάστοτε οργανισμού που είναι μοναδικό για κάθε εργασία (και προφανώς πολύ μικρότερο) μπορεί να μεταφερθεί απευθείας στον υπολογιστικό κόμβο (CE) μέσω του πεδίου InputSandBox των JDL. 3.3.1.2 Υποβολή Στο σημείο αυτό τα αρχεία JDL που δημιουργήθηκαν προηγουμένως υποβάλλονται στο υπολογιστικό πλέγμα, ενώ για καθεμία από αυτές ξεκινά και μια διεργασία παρακολούθησης στο παρασκήνιο. Παρά το ότι οι εργασίες θα μπορούσαν κάλλιστα να υποβληθούν ταυτόχρονα, επιλέγουμε να εισάγουμε μια καθυστέρηση μιας ώρας μεταξύ δύο διαδοχικών υποβολών διότι όπως προαναφέραμε με την τροποποίηση αυτή πετυχαίνουμε να ελαχιστοποιήσουμε το πλήθος των παγωμένων εργασιών. Ταυτόχρονα ορίζουμε τη σειρά υποβολής ώστε η καθυστέρηση αυτή να μην έχει κανένα απολύτως αντίκτυπο στο συνολικό χρόνο περάτωσης όπως τον αντιλαμβάνεται ο χρήστης. Αυτό το επιτυγχάνουμε εκμεταλλευόμενοι την αναπόφευκτη ανομοιομορφία που χαρακτηρίζει το μέγεθος των οργανισμών εισόδου. Αποτέλεσμα της ανομοιομορφίας αυτής είναι η σημαντική διακύμανση του χρόνου εκτέλεσης των διεργασιών στο πλέγμα - για παράδειγμα είναι σύνηθες σε αναλύσεις μεγάλης κλίμακας η πλέον χρονοβόρα εργασία να απαιτεί χρόνο πολλαπλάσιο του μέσου όρου. Συνεπώς από την οπτική γωνία του χρήστη, ο συνολικός χρόνος περάτωσης θα ταυτίζεται πάντα με το χρόνο της πλέον χρονοβόρας διεργασίας ή οποία εμπειρικά αντιστοιχεί πάντα στον οργανισμό με τις περισσότερες και μακρύτερες ακολουθίες. Ως αποτέλεσμα, αρκεί να ορίσουμε μια σειρά υποβολής αντίστροφη ως προς το μέγεθος του οργανισμού, καθώς όπως είπαμε το τελευταίο αποτελεί αξιόπιστη εκτίμηση του χρόνου εκτέλεσης. Με τον τρόπο αυτό ο οργανισμός που θα τερματίσει τελευταίος και άρα θα ορίσει το συνολικό χρόνο της ανάλυσης σχεδόν πάντα έχει υποβληθεί πρώτος, έχει δηλαδή μηδενική καθυστέρηση. Συνεπώς η καθυστέρηση που εισάγουμε μεταξύ διαδοχικών υποβολών μειώνει δραστικά το πλήθος των παγωμένων διαδικασιών δίχως να επιβαρύνει ούτε στο ελάχιστο το χρόνο περάτωσης των ενεργών. Να σημειωθεί ότι ο ισχυρισμός αυτός αποδείχθηκε και πειραματικά σε όλα μας τα πειράματα με επαρκώς μεγάλο πλήθος εργασιών όπου ο απαιτούμενος χρόνος περάτωσης ορίστηκε πάντα από την εργασία με το μέγιστο χρόνο εκτέλεσης, η οποία προφανώς υποβλήθηκε πρώτη και άρα με μηδενική καθυστέρηση. Αυτό θα γίνει περισσότερο εμφανές στο κεφάλαιο 4. 19
3.3.1.3 Παρακολούθηση εργασιών Η φάση αυτή λαμβάνει χώρα ταυτόχρονα με την εκτέλεση των διεργασιών στους υπολογιστικούς κόμβους του πλέγματος. Ωστόσο ενώ η εκτέλεση των εργασιών συμβαίνει προφανώς στους υπολογιστικούς πόρους του πλέγματος, η παρακολούθηση τρέχει στο παρασκήνιο του τερματικού διεπαφής του χρήστη. Αναφέρουμε ακόμα ότι οι διεργασίες αυτές αγνοούν τα σήματα τερματισμού που προκαλεί η έξοδος του χρήστη από το τερματικό διεπαφής του, συνεπώς ο χρήστης είναι ελεύθερος να αποσυνδεθεί ανά πάσα στιγμή μετά την εκκίνηση της διαδικασίας. Όπως προαναφέρθηκε, εκκινούμε μια τέτοια διεργασία για κάθε εργασία της ανάλυσης. Η λειτουργία της είναι να ελέγχει την κατάσταση της υπό εκτέλεση εργασίας στο πλέγμα, ανά τακτά χρονικά διαστήματα. Σε περίπτωση που ανιχνευθεί κάποια προβληματική κατάσταση, η εργασία υποβάλλεται εκ νέου, ενώ το συμβάν καταγράφεται στα logs ώστε να ενημερωθεί αργότερα ο χρήστης. Ως προβληματική κατάσταση θεωρούμε είτε μια αποτυχία της υποδομής του Grid που έχει ως αποτέλεσμα την ακύρωση της εργασίας μας (status = aborted), είτε την παρατεταμένη παραμονή της εργασίας μας σε φάση δρομολόγησης (status = scheduled). Συγκεκριμένα τα πειράματα μας δείχνουν ότι μεγάλο ποσοστό των εργασιών που παρέμειναν σε αυτή τη φάση για περισσότερο από δύο ώρες, κατέληξαν να παγώσουν στη φάση αυτή και να ακυρωθούν δύο ημέρες μετά. Επειδή η καθυστέρηση αυτή θα είχε δυνητικά καταστροφικές συνέπειες για την απόδοση του συστήματος μας, επιλέγουμε να επανυποβάλλουμε την εργασία μας σε περίπτωση που το διάστημα δρομολόγησης ξεπεράσει τις 2 ώρες, απόφαση που οδηγεί σε σημαντική μείωση του μέσου χρόνου αναμονής. 3.3.1.4 Συλλογ ήαποτελεσμ άτ ων Στο στάδιο αυτό τα αποτελέσματα όλων των υπολογιστικών κόμβων επιστρέφονται στο τερματικό διεπαφής. Πρώτού παρουσιαστούν στο χρήστη διαμορφώνονται σε μια πιο κατανοητή ιεραρχία φακέλων, ενώ σε περίπτωση που τα επιθυμητά προφίλ ήταν αμφίδρομα, γίνεται και η συγχώνευση των βέλτιστων ομολογιών όπως θα εξηγηθεί στην αμέσως επόμενη ενότητα. Τέλος, στη φάση αυτή μπορούν να γίνει και μετέπειτα επεξεργασία (post processing) των αποτελεσμάτων ώστε να διευκολυνθεί η εποπτεία τους από το χρήστη. Συγκεκριμένα, παρέχουμε στο χρήστη Java βιβλιοθήκες ικανές να φιλτράρουν τα φυλογενετικά προφίλ διατηρώντας μόνο όσα περιέχουν στοιχεία εντός επιθυμητών ορίων, και άλλες που μειώνουν τα προφίλ σε επίπεδο οργανισμού και όχι ακολουθίας. 3.3.2 Βασική ροή στον υπολογιστικό κόμβο Εδώ θα αναλυθεί η βασική ροή εκτέλεσης που λαμβάνει χώρα για κάθε εργασία σε έναν υπολογιστικό κόμβο του πλέγματος. Είναι σημαντικό ότι η διαδικασίες που περιγράφονται τρέχουν παράλληλα σε όλα τα μηχανήματα που απασχολεί η ανάλυση μας, τα οποία είναι ίσα τω πλήθος με τα προς εξέταση γονιδιώματα. Η περιγραφή της διαδικασίας παρουσιάζεται και γραφικά στο σχήμα 3-2. 20
Σχήμα 3-2: Ροή προγράμματος στους υπολογιστικούς κόμβους του Grid 3.3.2.1 Προετοιμασία Αρχικά ο κόμβος αντλεί την τελευταία ενημερωμένη έκδοση του BLAST από το repository του NCBI. Τούτο είναι δυνατό χάρη στην τμηματική φύση της σχεδίασης και μας εγγυάται ότι το πρόγραμμα θα παραμένει πάντα updated Κατεβάζει επίσης το αρχείο βάση της ανάλυσης από το αποθηκευτικό στοιχείο του Grid, όπου το είχαμε αποθηκεύσει κατά την εκκίνηση της ανάλυσης. Όλα τα υπόλοιπα απαραίτητα αρχεία παρέχονται από το inputsandbox όπου ο κόμβος έχει άμεση πρόσβαση, άρα για τα αρχεία αυτά δεν απαιτείται καμία επιπλέον ενέργεια. 21
3.3.2.2 Εκτέλεση Ανεξάρτητα από τον τύπο της ανάλυσης, εκτελείται αρχικά ο αλγόριθμος BLAST μεταξύ του γονιδιώματος προς ανάλυση που διαθέτει ο κόμβος (και διαφέρει από κόμβο σε κόμβο) και της βάσης που όπως είπαμε είναι κοινή για όλους τους κόμβους. Έπειτα με βάση την έξοδο που παρήγαγε ο BLAST πρέπει να κατασκευαστούν τα φυλογενετικά προφίλ. Τούτο είναι πολύ απλό σε περίπτωση που ζητούμε απλά προφίλ, το μόνο που χρειάζεται είναι να σαρωθεί η λίστα με τις ομόλογες ακολουθίες, και για καθεμιά να αυξηθεί κατά ένα το στοιχείο του διανύσματος που αντιστοιχεί στον οργανισμό της ομολογίας. O αλγόριθμος κατασκευής των προφίλ παρουσιάζεται εδώ σε ψευδογλώσσα: Αλγόριθμος 1 Είσοδος: αρχείο BLAST Έξοδος: αρχείο phylo. Για κάθε query_sequence i: Profile = [0, 0,. 0] //μέγεθος ίσο με το πλήθος οργανισμών Για κάθε database_sequence που ανήκει στον οργανισμό j: Αν επεκταμένο προφίλ: increment profile[j] Αλλιώς δυαδικό προφίλ: Profile[j] = 1 Τέλος_αν Print query_sequence: profile Τέλος_για Τέλος_για Αλγόριθμος 3-1: κατασκευή φυλογενετικών προφίλ Όπως φαίνεται και από τον αλγόριθμο, η κατασκευή των φυλογενετικών προφίλ απαιτεί από την έξοδο του BLAST μονάχα τις συγκρινόμενες ακολουθίες, καθώς και το δείκτη e- value που ποσοτικοποιεί τη μεταξύ τους ομοιότητα. Ωστόσο τα ενδιάμεσα αποτελέσματα του BLAST μπορεί να ενδιαφέρουν το χρήστη, συνεπώς αποθηκεύονται αυτούσια, με την επέκταση.blast. Ένα παράδειγμα τέτοιου αρχείου που δείχνει την ομοιότητα μεταξύ μιας ακολουθίας του οργανισμού με διακριτικό MICR-P71 και του οργανισμού CMIN-P66 φαίνεται παρακάτω. Τα υπόλοιπα πεδία αποκρύπτονται για λόγους σαφήνειας του πίνακα, ενώ τα διακριτικά των οργανισμών είναι μαυρισμένα. 22
Query Sequence Database Sequence E-value MICR-P71-CB-000005 CMIN-P66-CB-000022 1.62e-106 MICR-P71-CB-000005 CMIN-P66-CB-003355 2.04e-27 MICR-P71-CB-000005 CMIN-P66-CB-003412 1.13e-22 Πίνακας 3-1: Δείγμα εξόδου του αλγορίθμου BLAST Με αναφορά στον παραπάνω πίνακα είναι προφανές ότι το διάνυσμα της ακολουθίας MICR-P71-CB-000005 θα περιέχει τον αριθμό 3 ως στοιχείο που αντιστοιχεί στον οργανισμό CMIN-P66. Το δυαδικό της προφίλ από την άλλη θα περιέχει απλά μια μονάδα (παρουσία τουλάχιστον μίας ομόλογης ακολουθίας με τον εν λόγω οργανισμό). Τα πράγματα είναι πιο πολύπλοκα στην περίπτωση που ζητούνται από το χρήστη αμφίδρομα (BBH) προφίλ. Η δυσκολία έγκειται στο γεγονός ότι κάθε κόμβος διαθέτει τις ομόλογες ακολουθίες ενός μόνο γονιδιώματος, άρα μπορεί μεν να βρει τις βέλτιστες ομολογίες των δικών του ακολουθιών, δεν έχει όμως κανένα τρόπο να γνωρίζει αν αυτές είναι αμφίδρομες, καθώς οι ομολογίες των υπόλοιπων οργανισμών υπολογίζονται σε διαφορετικό κόμβο. Το μέγεθος των προβλημάτων στα οποία στοχεύουμε καθιστά αδύνατη την ανταλλαγή δεδομένων μεταξύ των κόμβων, αρκεί να σκεφτεί κανείς ότι για μια ανάλυση που περιλαμβάνει 100 γονιδιώματα κάθε κόμβος θα έπρεπε να λάβει την έξοδο όλων των υπόλοιπων κόμβων, άρα θα απαιτούσαμε bandwidth ανάλογο του τετραγώνου των ακολουθιών. Αντί αυτού επιλέξαμε μια κεντρική λύση, όπου ως master δρα το τερματικό διεπαφής του χρήστη. Συγκεκριμένα, κάθε υπολογιστικός κόμβος βρίσκει τις βέλτιστες ομολογίες του δικού του γονιδιώματος χωρίς να ενδιαφέρεται για το κατά πόσο αυτές είναι αμφίδρομες. Μετά το πέρας της εκτέλεσης όλων των εργασιών, το τερματικό διεπαφής συλλέγει όλα τα αποτελέσματα και ελέγχει κατά πόσο κάθε ομολογία είναι αμφίδρομη. Αν δεν είναι, τότε απλά την διαγράφει, διαφορετικά προχωράει στην επόμενη. Ο αλγόριθμος αυτός παρατίθεται παρακάτω σε ψευδογλώσσα: 23
Αλγόριθμος 2 Είσοδος: αρχείο BLAST Έξοδος: αρχείο ΒΗ Για κάθε query_sequence i: Best_hits = [,,, ] //μέγεθος ίσο με το πλήθος οργανισμών Best_e_value = [Inf, Inf,, Inf] //μέγεθος ίσο με το πλήθος οργανισμών Για κάθε ομολογία j: Org = findorg(j.database_sequence) Αν best_e_value[org] > j.e_value: Best_e_value[org] = j.e_value Best_hits[org] = j.database_sequence Τέλος_αν Τέλος_για Για κάθε οργανισμό org: Print query_sequence: Best_hits[org] Τέλος_για Τέλος_για Αλγόριθμος 3-2: Εύρεση βέλτιστων ομολογιών Η διαδικασία αυτή μπορεί να γίνει πιο κατανοητή με τον παρακάτω πίνακα, που δείχνει μια περίπτωση βέλτιστης ομολογίας που όντως είναι αμφίδρομή, και μία περίπτωση που δεν είναι. 24
Εξεταζόμενη ακολουθία Ακολουθία βάσης Ε-Value Βέλτιστη ομολογία MICR-P71-CB-000005 CMIN-P66-CB-000022 1.62e-106 Ναι MICR-P71-CB-000005 CMIN-P66-CB-003355 2.04e-27 Όχι MICR-P71-CB-000005 CMIN-P66-CB-003412 1.13e-22 Όχι CMIN-P66-CB-000022 MICR-P71-CB-000005 1.09e-94 Ναι CMIN-P66-CB-000022 MICR-P71-CB-000101 1.22e-40 Όχι CMIN-P66-CB-003355 MICR-P71-CB-000005 1.44e-100 Ναι CMIN-P66-CB-003355 MICR-P71-CB-000211 2.45e-81 Όχι Πίνακας 3-2: Εύρεση αμφίδρομων ομολογιών Στο παραπάνω πίνακα βλέπουμε αποσπάσματα από την έξοδο του BLAST για τρεις διαφορετικές ακολουθίες. Συγκεκριμένα βλέπουμε ότι η πρώτη βέλτιστη ομολογία είναι και αμφίδρομη όπως προκύπτει από τις δύο πρώτες εξεταζόμενες ακολουθίες, καθεμία από αυτές έχει ως βέλτιστη ομολογία την άλλη. Αντίθετα η βέλτιστη ομολογία που ανιχνεύσαμε για την 3η ακολουθία, δεν είναι αμφίδρομη, συνεπώς η αντίστοιχη γραμμή αγνοείται κατά την κατασκευή των BBH φυλογενετικών προφίλ. Tο γεγονός ότι στην περίπτωση των BBH το τερματικό διεπαφής του χρήστη συμμετάσχει στη διαδικασία κατασκευής των προφίλ, φαίνεται εκ πρώτης όψεως να αντιβαίνει στην επιθυμία μας να απομπλέξουμε το περιβάλλον του χρήστη από κάθε υπολογισμό, ωστόσο η προαναφερθείσα διεργασία απαιτεί ελάχιστο χρόνο, ακόμα και σε πολύ μεγάλης κλίμακας αναλύσεις (55 δευτερόλεπτα για μία all vs all ανάλυση 90 γονιδιωμάτων), συνεπώς η επιβάρυνση του χρήστη κρίνεται αμελητέα. 3.3.3 Επέκταση υπαρχόντων προφίλ Εκτός από το βασικό σενάριο χρήσης που περιγράψαμε, στο οποίο ο ερευνητής διεξάγει μια ανεξάρτητη ανάλυση από την αρχή ως το τέλος, αναπτύξαμε μία επιπλέον λειτουργικότητα που στοχεύει στο εξής, σύνηθες στην ερευνητική κοινότητα σενάριο: Έστω ότι κάποιος βιολόγος ενδιαφέρεται για τις ομοιότητες μεταξύ ενός σετ οργανισμών, οι οποίοι μπορεί π.χ. να ανήκουν σε μια οικογένεια. Χρησιμοποιεί λοιπόν το πρόγραμμα μας για να τρέξει μια all vs all ανάλυση στο υπολογιστικό πλέγμα και μερικές ώρες ή ημέρες μετά παίρνει τα επιθυμητά αποτελέσματα. Στη συνέχεια ωστόσο σκέφτεται ότι η ανάλυση του θα μπορούσε να συμπεριλάβει και άλλους οργανισμούς, π.χ. μια άλλη οικογένεια οργανισμών με συγγενικές ιδιότητες προς την 1η. Θα ήταν προφανώς σπατάλη χρόνου και υπολογιστικής ισχύος να ξανατρέξει μια all vs all ανάλυση με το νέο συνολικό σετ οργανισμών, δεδομένου ότι ένα μεγάλο μέρος των αποτελεσμάτων είναι ήδη διαθέσιμο. Εκτός από την πιθανότητα ο χρήστης να αποφασίσει εκ των υστέρων την προσθήκη οργανισμών σε προηγούμενη του ανάλυση, υπάρχει άλλο ένα σενάριο χρήσης που απαιτεί την εν λόγω λειτουργικότητα. Έστω ότι ο ερευνητής επιθυμεί μια σύνθετη ανάλυση επί ενός τεράστιου σετ δεδομένων, ενδιαφέρεται π.χ. για έρευνες γενετικής σε επίπεδο πανγονιδιώματος. Ένα πρώτο βήμα της ανάλυσης του απαιτεί την κατασκευή 25
φυλογενετικών προφίλ για ένα τεράστιο πλήθος οργανισμών, πράγμα το οποίο σημαίνει ότι θα χρειαστεί να περιμένει πολύ καιρό (ενδεχομένως βδομάδες) για να πάρει τα αποτελέσματα. Κατά το διάστημα αυτό του είναι δε αδύνατο να προχωρήσει στην εργασία του, αφού όπως είπαμε τα φυλογενετικά προφίλ είναι απαραίτητα για τα επόμενα βήματα της ανάλυσης του. Για να ξεπεράσει το πρόβλημα αυτό, θα μπορούσε να σπάσει το αρχικό σετ οργανισμών του σε τμήματα. Θα τρέξει λοιπόν ανεξάρτητα μόνο το αρχικό, για την έξοδο του οποίου θα χρειαστεί να περιμένει μόλις μερικές ώρες ή ημέρες, και στη συνέχεια θα επεκτείνει σταδιακά την ανάλυση του. Με τον τρόπο αυτό θα μπορεί παράλληλα με την εκτέλεση του προγράμματος μας, να δουλεύει με ένα υποσύνολο των οργανισμών του στα επόμενα στάδια της ανάλυσης του. Το πρόγραμμα μας, δίνει στο χρήστη τη δυνατότητα να αποφύγει την επανάληψη υπολογισμών που έχουν ήδη ολοκληρωθεί. Η επέκταση των προφίλ απαιτεί υπολογισμούς που χωρίζονται σε 2 τμήματα: 1. Τα υπάρχοντα φυλογενετικά προφίλ των αρχικών οργανισμών πρέπει να επεκταθούν με ένα επιπλέον στοιχείο για κάθε νέο οργανισμό. 2. Τα φυλογενετικά προφίλ των νέων οργανισμών πρέπει να υπολογιστούν από την αρχή (δεν έχουμε καμία πληροφορία έτοιμη για τους νέους οργανισμούς). Από την πλευρά του χρήστη η λειτουργία αυτή, είναι εξαιρετικά απλή, το μόνο που απαιτείται είναι να θέσει την παράμετρο expand σε TRUE, καθώς και να αντιγράφει τα αποτελέσματα της προηγούμενης ανάλυσης στο φάκελο της νέας συνόδου. Έπειτα το πρόγραμμα ακολουθεί δύο φορές την προαναφερθείσα διαδικασία, μία για να υποβάλλει τους νέους οργανισμούς προς εξέταση ως προς τη συνολική βάση δεδομένων (ένωση της νέας και της παλιάς) και μία για να υποβάλλει μόνο τους παλιούς οργανισμούς ως προς τη νέα βάση. Τέλος τα προφίλ των νέων οργανισμών συλλέγονται χωρίς καμιά επεξεργασία, ενώ τα προφίλ των παλαιών γονιδιωμάτων απλά ενώνονται. Για παράδειγμα έστω μια ανάλυση που τρέχει αρχικά για τέσσερεις οργανισμούς, και έπειτα προστίθενται άλλοι δύο. Ο παρακάτω πίνακας δείχνει τη δημιουργία των προφίλ για μια ακολουθία που ανήκει σε έναν παλαιό οργανισμό και άρα έχει ήδη ένα προφίλ το οποίο επεκτείνεται (γραμμή 1) και μια ακολουθία ενός νέου οργανισμού της οποίας το προφίλ δημιουργείται εξ ολοκλήρου στη 2 η φάση. Τύπος ακολουθίας Αρχικό προφίλ Νέο προφίλ Τελικό προφίλ Προϋπάρχουσα [1 0 0 1] [0 1] [1 0 0 1 0 1] Νέα [-] [1 1 0 1 0 0] [1 1 0 1 0 0] Πίνακας 3-3: Επέκταση φυλογενετικού προφίλ ακολουθίας 26
3.4 Πολυπλοκότητα Η ανάλυση της πολυπλοκότητας του προγράμματος στοχεύει στην πρόβλεψη της συμπεριφοράς του όταν το μέγεθος των προς εξέταση δεδομένων αυξάνει. Ωστόσο το αυξανόμενο μέγεθος δεν είναι το ίδιο σε όλα τα σενάρια χρήσης του προγράμματος, για το λόγο αυτό έχει νόημα να εξετάσουμε χωριστά τις επιμέρους περιπτώσεις. Συγκεκριμένα, είναι συνήθης περίπτωση να διατηρούμε μια σταθερή βάση και να ενδιαφερόμαστε για την απόκριση του προγράμματος όσο προσθέτουμε οργανισμούς προς εξέταση, ή όσο αυξάνουν σε μέγεθος τα γονιδιώματα των υπό εξέταση οργανισμών. Από την άλλη θα μπορούσαμε να ενδιαφερόμαστε για μια συγκεκριμένη οικογένεια οργανισμών, την οποία όμως να εξετάζουμε ως προς μια ολοένα αυξανόμενη βάση. Στην περίπτωση αυτή η βασική μετρική του μεγέθους της εισόδου θα είναι τα γονιδιώματα της βάσης, ή το μέσο μέγεθος αυτών. Τέλος θα μπορούσαμε να ενδιαφερόμαστε για αναλύσεις all vs all, όπου τα δύο προαναφερθέντα μεγέθη αυξάνονται ταυτόχρονα και με τον ίδιο ρυθμό. 3.4.1 Πολυπλοκότητα BLAST Μια αρχική εκτίμηση θα ήταν ότι ο BLAST έχει πολυπλοκότητα Ο(Ν*Μ) αφού πρέπει να συγκρίνει κάθε ακολουθία του query file με κάθε ακολουθία της βάσης. Ωστόσο τούτη είναι μια μάλλον συντηρητική εκτίμηση καθώς, όπως αναφέρθηκε ήδη, ο αλγόριθμος εξετάζει ένα μόνο υποσύνολο τον συνολικών ζευγών. Συγκεκριμένα εξετάζονται μόνο οι ακολουθίες των οποίων οι γειτονικές λέξεις w σημείωσαν σημαντική ομοιότητα με ακολουθίες της βάσης. Ακόμα και αυτές όμως δεν εξετάζονται απαραίτητα μέχρι τέλους, καθώς η εξέταση σταματάει όταν το σκορ πέσει κάτω από το κατώφλι Χ. Από την άλλη πρέπει να αθροίσουμε την πολυπλοκότητα της διαδικασίας παραγωγής των γειτονικών λέξεων μεγέθους w, που στο πρόγραμμα μας είναι πάντα ίσο με την προκαθορισμένη τιμή 3. Για μια ακολουθία αμινοξέων μεγέθους L q συμβόλων υπάρχουν L q -w+1 = L q 2 τέτοιες λέξεις ενώ οι διαφορετικές τιμές κάθε λέξης είναι 26 3 μιας και αποτελούνται από τα 26 διαφορετικά σύμβολα (22 αμινοξέα καθώς και 4 ειδικοί κωδικοί). Συνεπώς η διαδικασία εύρεσης των γειτονικών λέξεων συνεισφέρει χρόνο Ο((L q -2)*26 3 ) = O(L q ) για κάθε ακολουθία, ή Ο(L q *N) για Ν ακολουθίες προς εξέταση. Έπειτα γίνεται ευθυγράμμισή μόνο για τις γειτονικές λέξεις πλήθους W που αναμένουμε να είναι αισθητά μικρότερο από 26 3. Επίσης ολική ευθυγράμμιση θα εκκινήσει μόνο στα σημεία της ακολουθίας βάσης που πετυχαίνουν ομοιότητα με κάποια γειτονική λέξη, αλλά και πάλι θα υποθέσουμε ότι τέτοια ομοιότητα βρίσκεται σε κάθε σημείο της ακολουθίας βάσης και άρα έχουμε L D - 2 ολικές ευθυγραμμίσεις. Αυτές συνεχίζονται μέχρι το σκορ να πέσει κάτω από X σε σχέση με την προηγούμενη τιμή του, θα θεωρήσουμε όμως ότι απαιτεί σταθερό πλήθος κύκλων, έστω c. Άρα για τις ολικές ευθυγραμμίσεις με κάθε ακολουθία βάσης έχουμε Ο(N*W*(L D - 2)), άρα για το σύνολο της βάσης θα έχουμε Ο(N*W*L D *M) < O(N*26 3 *L D *M). Τελικά η πολυπλοκότητα του αλγορίθμου είναι το άθροισμα των 2 διαδικασιών, δηλαδή Ο(L q *N + N*W*L D *M). Είναι σημαντικό ότι ο όρος Ν*Μ που υποδεικνύει τετραγωνικό χρόνο 27
εκτέλεσης παραμένει στην έκφραση της πολυπλοκότητας όπως συμβαίνει και με παλιότερους αλγορίθμους που έχουν πρακτικά εγκαταλειφθεί, όπως ο FASTA. Αυτό ήταν όμως αναμενόμενο καθώς είναι αναγκαίο ο κάθε αλγόριθμος ευθυγράμμισης να πρέπει έστω μερικώς να εξετάσει όλα τα ζεύγη ακολουθιών. Ο τετραγωνικός χρόνος αποτελεί δηλαδή το κάτω όριο για το πρόβλημα μας. Παρά την αδυναμία του να κατεβάσει τη θεωρητική πολυπλοκότητα, ο αλγόριθμος BLAST πετυχαίνει πρακτικά μείωση του υπολογιστικού χρόνου εκμεταλλευόμενος τα πραγματικά χαρακτηριστικά του προβλήματος που είναι πλέον γνωστά μετά από πολυετή μελέτη της συμπεριφοράς των γονιδίων, πρόκειται δηλαδή στην ουσία για μια ευριστική (heuristic) λύση. Στο πρόγραμμα μας, έχουμε διαιρέσει το σύνολο των προς εξέταση οργανισμών έτσι ώστε κάθε κόμβος να εξετάζει μόνο ένα γονιδίωμα. Συνεπώς πετυχαίνουμε μείωση του χρόνου και των δύο επιμέρους διαδικασιών, αφού το πλήθος των ακολουθιών προς εξέταση διαιρείται ουσιαστικά με το πλήθος υπολογιστικών κόμβων. Έχουμε δηλαδή πολυπλοκότητα Ο(L q *(N/P) + (N/P)*W*L D *M). Μια διαφορετική προσέγγιση θα μπορούσε να είναι η διαίρεση του αρχείου βάσης, η οποία θα μείωνε όπως βλέπουμε μόνο τον 2 ο όρο κατά P, ενώ θα δημιουργούσε επιπλέον προβλήματα στη δυνατότητα αναπαραγωγής των αποτελεσμάτων μας μιας και πολλές μετρικές του αλγορίθμου εξαρτώνται από το μέγεθος της βάσης. Αυτός είναι και ο λόγος που αποφασίσαμε να διαιρούμε μόνο τους προς εξέταση οργανισμούς. 3.4.2 Πολυπλοκότητα κατασκευής φυλογενετικών προφίλ Για την ανάλυση χειρότερης περίπτωσης θα κάνουμε την (αρκετά απαισιόδοξη) υπόθεση ότι ο αλγόριθμος BLAST βρήκε ομολογία σε κάθε ζεύγος ακολουθιών, άρα παρήγαγε Ν*Μ ομολογίες. Το κάτω όριο χρόνου για τους αλγορίθμους κατασκευής προφίλ είναι προφανώς Ο(Ν*Μ) αφού σίγουρα θα πρέπει να εξεταστεί η κάθε ομολογία. Οι αλγόριθμοι που αναπτύξαμε πετυχαίνουν αυτό το κάτω όριο τόσο για την κατασκευή απλών, όσο και BBH προφίλ όπως θα δούμε παρακάτω. 3.4.2.1 Απλά προφίλ Στην περίπτωση πρέπει απλά να σαρωθούν όλες οι ομολογίες που παρήγαγε ο BLAST. Για καθεμία από αυτές ανιχνεύεται ο οργανισμός βάσης και αυξάνεται κατά ένα το αντίστοιχο στοιχείο του διανύσματος, διαδικασία για την οποία απαιτούνται σταθεροί κύκλοι, έστω c 1. Έχουμε λοιπόν πολυπλοκότητα Ο(Ν*Μ). Δεδομένου ότι το σύνολο των ακολουθιών προς εξέταση έχει διαιρεθεί στους υπολογιστικούς κόμβους ανά οργανισμό, στη θέση του Ν πρέπει να μπουν οι ακολουθίες του ενός οργανισμού, συγκεκριμένα οι ακολουθίες του μεγαλύτερου οργανισμού αφού ο δικός του χρόνος θα ορίσει και το συνολικό. Ο μεγαλύτερος οργανισμός θα έχει Ν max ακολουθίες, αριθμός που αναμένουμε να ανήκει στην τάξη μεγέθους Ν/P. Έχουμε δηλαδή τελικά πολυπλοκότητα Ο((Ν/P)*M). 28
3.4.2.2 BBH προφίλ Και σε αυτήν την περίπτωση οι ομολογίες που παρήγαγε ο BLAST σαρώνονται μία μόνο φορά. Βέβαια εδώ αναφερόμαστε αποκλειστικά σε αναλύσεις τύπου all vs all αφού μόνο γι αυτές αποκτούν νόημα τα αμφίδρομα προφίλ. Η μόνη διαφορά είναι ότι μας ενδιαφέρουν μόνο όσες ομολογίες είναι βέλτιστες, οι υπόλοιπες αγνοούνται. Απαιτείται σταθερός χρόνος υπολογισμού για κάθε ακολουθία έστω c 2, άρα σε κάθε υπολογιστικό κόμβο έχουμε πολυπλοκότητα Ο((N/P)*M) κάνοντας την ίδια παραδοχή για το μέγεθος του μεγαλύτερου οργανισμού με παραπάνω. Τέλος ο υπολογιστικός κόμβος χωρίζει τις βέλτιστες ομολογίες ανά οργανισμό, κάθε αρχείο περιέχει λοιπόν όλες τις ομολογίες των προς εξέταση ακολουθιών με έναν οργανισμό της βάσης, διαδικασία που έχει πολυπλοκότητα επίσης Ο((N/P)*M) αφού απαιτείται η σάρωση κάθε γραμμής για να ανιχνευθεί ο οργανισμός με τον οποίο βρέθηκε η ομολογία και η αντιγραφή του στο αντίστοιχο αρχείο. Απαιτείται ακόμα χρόνος για τη δημιουργία Κ - 1 αρχείων, ενός αρχείου δηλαδή για κάθε οργανισμό ως προς τον οποίο εξετάζεται το παρών γονιδίωμα (προφανώς δε μας ενδιαφέρουν ομολογίες με τον εαυτό του, εξ ου και ο όρος -1). Ωστόσο στον παραπάνω χρόνο πρέπει να προσθέσουμε και τη διαδικασία συνδυασμού των βέλτιστων ακολουθιών για την εύρεση των αμφίδρομων που λαμβάνει χώρα στο τερματικό διεπαφής του χρήστη κατά το τέλος της διαδικασίας. Για την ανάλυση του αλγορίθμου αυτού είναι σημαντική η εξής παρατήρηση: Αν ένας οργανισμός αποτελείται από Ν ακολουθίες, τότε περιμένουμε οι βέλτιστες ομολογίες του να είναι Ν όπου: ΝΝ ΝΝ (ΚΚ 1) Ο λόγος είναι ότι χειριζόμαστε τις βέλτιστες ομολογίες κάθε ακολουθίας με όλους τους οργανισμούς πλην αυτού στον οποίο ανήκει. Στην χειρότερη περίπτωση, που όμως είναι και αναμενόμενη, κάθε ακολουθία θα βρει τουλάχιστον μία ομολογία με κάθε οργανισμό. Συνεπώς ο αλγόριθμος συνδυασμού των βέλτιστων ομολογιών δέχεται είσοδο τάξης μεγέθους μεγαλύτερης από τα αποτελέσματα του BLAST, π.χ. στο πείραμα με τους 90 οργανισμούς που θα παρουσιαστεί παραπάνω έχουμε σχεδόν 2 τάξεις μεγέθους αύξηση. Ο αλγόριθμος αυτός σχεδιάστηκε με ιδιαίτερη επιμέλεια ως προς την απόδοση γιατί μια απλοϊκή προσέγγιση θα απαιτούσε τετραγωνικό χρόνο για κάθε ζεύγος οργανισμών. Πιο συγκεκριμένα η brute-force λύση απαιτεί την σάρωση κάθε αρχείου, ενώ για κάθε ομολογία αυτού με κάποιον οργανισμό k 1 σαρώνεται όλο το αντίστοιχο αρχείο μέχρι να βρεθεί η αντίστροφη ομολογία (αν υπάρχει). Για οργανισμούς που αποτελούντα από Ν ακολουθίες, έχουμε λοιπόν Ν 2 ελέγχους ισότητας αλφαριθμητικών. Η διαδικασία πρέπει να επαναληφθεί για τα μισά εκ των Κ 2 αρχείων, άρα συνολικά θα είχαμε πολυπλοκότητα: ΟΟ(ΝΝ, ΚΚ) = ΝΝ 2 ΚΚ2 ΚΚ 2 Το μέγεθος της εισόδου που όπως εξηγήθηκε παραπάνω αναμένεται να είναι μεγάλο καθιστά την τετραγωνική πολυπλοκότητα απαγορευτική. 29
Για να αποφύγουμε το πρόβλημα, αριθμούμε τις ακολουθίες όλων των αρχείων με έναν αύξοντα αριθμό σταθερού μήκους, τον οποίο προσθέτουμε στη γραμμή κεφαλίδα στα αρχεία FASTA. Τούτο δεν επηρεάζει καθόλου τη διαδικασία αφού ο αλγόριθμος BLAST έτσι κι αλλιώς αγνοεί τη γραμμή αυτή. Με τον τρόπο αυτό καθίσταται δυνατό να αποθηκεύσουμε τις βέλτιστες ομολογίες μας (που είναι μία για κάθε ακολουθία) σε πίνακα, όπου ο δείκτης της καθεμίας είναι απλά ο αύξων αριθμός της. Έχουμε λοιπόν χρόνο αναζήτησης Ο(1). Πιο συγκεκριμένα οι δύο αυτοί πίνακες κρατάνε μόνο τον αριθμό της κάθε ακολουθίας για εξοικονόμηση χρόνου (δε μας ενδιαφέρει το όνομα της ακολουθίας σε αυτή τη φάση). Για παράδειγμα παρακάτω φαίνεται ένα απόσπασμα ενός αρχείου και η αναπαράσταση του στον πίνακα. Στήλη-1 Στήλη-2 Genome A 1 Genone B 21 Genome A 2 Genome B 14 Genome A 4 Genome B 19 Δείκτης θέσης 0-1 1 21 2 14 3-1 4 10 Τιμή κελιού Πίνακας 3-4: Μετασχηματισμός δομής δεδομένων για ταχύτερη πρόσβαση Τούτο απλοποιεί εξαιρετικά τον έλεγχο για το κατά πόσο μια ομολογία είναι αμφίδρομη, αρκεί να ελέγξουμε ένα μόνο στοιχείο του συμπληρωματικού πίνακα, αυτό που έχει για δείκτη την τιμή του πρώτου. Ουσιαστικά κάθε βέλτιστη ομολογία της πρωτεΐνης i του οργανισμού Α με μια πρωτεΐνη του οργανισμού Β είναι αμφίδρομη αν και μόνο αν: BB AA[ii] = ii Ωστόσο υφίσταται τώρα ένα πρόβλημα χώρου. Ο παραπάνω έλεγχος είναι μεν γρήγορος, αλλά απαιτεί οι δύο πίνακες να βρίσκονται στη μνήμη RAM. Όπως αναφέραμε παραπάνω αναμένουμε οι βέλτιστες ομολογίες να είναι πολλές, και όταν η ανάλυση περιέχει πολλούς οργανισμούς δεν είναι καθόλου βέβαια ότι όλες οι βέλτιστες ομολογίες μπορούν ταυτόχρονα να αποθηκευτούν στη μνήμη ακόμα και αν κάθε ακολουθία είναι απλά ένας ακέραιος αριθμός. Συγκεκριμένα για Κ οργανισμούς, που περιέχουν κατά μέσο όρο Ν ακολουθίες αναμένουμε (Κ-1)*Ν ομολογίες ανά οργανισμό. Συνεπώς για όλους τους Κ οργανισμούς και δεδομένου ότι κάθε ομολογία απαιτεί χώρο ενός ακεραίου που στη Java αναπαρίσταται με 4 bytes απαιτείται συνολικά χώρος: SS(NN, KK) = NN (KK 1) KK 4 bbbbbbbbbb Μια μεγάλη all vs all ανάλυση θα μπορούσε να περιλαμβάνει 100 οργανισμούς, ενώ το μέσο μήκος ακολουθίας για μια οικογένεια φυτών μπορεί να έχει μέγεθος από 5000 ακολουθίες ως και τάξη μεγέθους 100,000 ακολουθιών. Με αντικατάσταση μεγεθών αυτής 30
της τάξης στην παραπάνω εξίσωση προκύπτουν απαιτήσεις μνήμης που δύσκολα ικανοποιούνται από πολλά σύγχρονα μηχανήματα. Ωστόσο δεν είναι απαραίτητο όλες οι ακολουθίες να βρίσκονται ταυτόχρονα στη μνήμη. Θυμίζουμε ότι οι υπολογιστικοί κόμβοι επιστρέφουν τις ομολογίες χωρισμένες σε αρχεία με βάση τον υποκείμενο οργανισμό. Καθένα από τα αρχεία αυτά αναπαρίσταται από ένα στοιχείο στον πίνακα που ακολουθεί. Σχήμα 3-3: Διαχωρισμός της συνολικής εξόδου σε ζεύγη αρχείων Για την εύρεση των αμφίδρομων ομολογιών μεταξύ 2 γονιδιωμάτων Α και Β μας ενδιαφέρουν μόνο τα στοιχεία του πίνακα Τ[Α][Β] και Τ[Β][Α], δηλαδή 2 στοιχεία του παραπάνω πίνακα με το ίδιο χρώμα. Τα 2 αυτά αρχεία θα μπορούν σε όλα τα ρεαλιστικά σενάρια να χωρέσουν στη μνήμη RAM. Συνεπώς το πρόγραμμα φορτώνει κάθε φορά ένα τέτοιο ζεύγος αρχείων σε 2 πίνακες της μνήμης RAM, όπου ο αύξων αριθμός κάθε ακολουθίας είναι ταυτόχρονα η θέση της ομολογίας στον πίνακα, πράγμα που σημαίνει ότι πετυχαίνουμε σταθερό χρόνο αναζήτησης, Ο(1). Οι ακολουθίες για τις οποίες δε βρέθηκε ομολογία παίρνουν μια προκαθορισμένη ειδική τιμή. Έπειτα σαρώνεται μόνο ένας από τους 2 πίνακες, δεν έχει σημασία ποιος, άρα επιλέγουμε τον μικρότερο. Για κάθε ομολογία δε 31
χρειάζεται να σαρωθεί ο άλλος πίνακας, ελέγχουμε απλά το στοιχείο με το δείκτη της ομολογίας. Αν οι 2 συμπίπτουν τότε η βέλτιστη αμφίδρομη ομολογία γράφεται στην έξοδο, διαφορετικά προχωρούμε στην επόμενη γραμμή. Άρα για κάθε ζεύγος αρχείων έχουμε πολυπλοκότητα N, και δεδομένου ότι για Κ οργανισμούς υπάρχουν (Κ 2 Κ ) / 2 τέτοια ζεύγη η συνολική πολυπλοκότητα είναι: ΟΟ(ΝΝ, ΚΚ) = ΝΝ ΚΚ2 ΚΚ 2 Ο αλγόριθμος αυτός παρουσιάζεται στη συνέχεια σε ψευδογλώσσα. 32
Αλγόριθμος συνδυασμού βέλτιστων ομολογιών Αρχή Για κάθε οργανισμό Α στο σύνολο οργανισμών Για κάθε οργανισμό Β στο σύνολο οργανισμών Αν Α = Β Συνέχισε Αλλιώς Αν Τ[Α][Β] μεγαλύτερο του Τ[Β][Α] Φόρτωσε το αρχείο Τ[Β][Α] στον πίνακα Τ1 και βάλε -1 στα άδεια κελιά Φόρτωσε το αρχείο Τ[Α][Β] στον πίνακα Τ2 και βάλε -1 στα άδεια κελιά Αλλιώς Φόρτωσε το αρχείο Τ[Α][Β] στον πίνακα Τ1 και βάλε -1 στα άδεια κελιά Φόρτωσε το αρχείο Τ[Β][Α] στον πίνακα Τ2 και βάλε -1 στα άδεια κελιά Τέλος_αν Για κάθε αριθμό i από 0 ως μέγεθος του Τ1 Αν i > 0 και Τ2[Τ1[i]] = i Print A-i ---- Β-Τ1[i] Τέλος_αν Τέλος_για Τέλος_αν Τέλος_για Τέλος_για Αλγόριθμος 3-3: Συνδυασμός βέλτιστων ομολογιών 33
4 Πειράματα 4.1 Περιγραφή σετ δεδομένων Αρχικά παρουσιάζεται το συνολικό σετ δεδομένων που χρησιμοποιήθηκε στα πειράματα μας. Αποτελείται από 60 διαφορετικούς οργανισμούς με φωτοσυνθετικές ικανότητες, αλλά που όμως ανήκουν σε 2 διαφορετικά βασίλεια, στα Cyanobacteria (που ανήκουν στο Βασίλειο των Βακτηρίων) και στα Viridiplantae (που ανήκουν στο Βασίλειο των Ευκαρυωτικών). Τα δεδομένα που χρησιμοποιήσαμε ανακτήθηκαν από τις βάσεις βιολογικών δεδομένων Uniprot, Plaza και PicoPlaza. Αυτές οι οικογένειες οργανισμών επιλέχθηκαν διότι έχουν ήδη μελετηθεί εκτενώς και ως εκ τούτου τα γονιδιώματα τους είναι εύκολα προσβάσιμα στις προαναφερθείσες ανοιχτές βάσεις δεδομένων. Tα cyanobacteria είναι προκαρυωτικοί οργανισμοί, και συγκεκριμένα βακτήρια που λαμβάνουν ενέργεια από το περιβάλλον τους μέσω της φωτοσύνθεσης. Αποκτούν ολοένα μεγαλύτερη σημασία μιας και πρόσφατες έρευνες υποδεικνύουν την πιθανή χρήση τους στην παραγωγή ανανεώσιμης ενέργειας, μετατρέποντας την ηλιακή ακτινοβολία σε ηλεκτρική ενέργεια [11]. Στις μέρες μας γίνεται ακόμα προσπάθεια για την εμπορική χρήση καυσίμων που βασίζονται στα cyanobacteria όπως το πετρέλαιο diesel, βενζίνη καθώς και καύσιμο αεροσκαφών [13]. Οι οργανισμοί της οικογένειας virdiplantae από την άλλη, είναι η οικογένεια όλων των φυτών, πρόκειται δηλαδή για ευκαρυωτικούς οργανισμούς. Σε σύγκριση με τα cyanobacteria εμφανίζουν σαφώς μεγαλύτερη γενετική πολυπλοκότητα, πράγμα που μεταφράζεται σε περισσότερες και μακρύτερες ακολουθίες κατά μέσο όρο. Στον παρακάτω πίνακα παρουσιάζονται και οι 60 οργανισμοί του συνόλου δεδομένων ελέγχου καθώς και το διακριτικό σταθερού μήκους που χρησιμοποιεί για ευκολία ο αλγόριθμος μας. Πλήρης ονομασία Διακριτικό Οικογένεια ακολουθίες Acaryochloris marina AMAR-MBI Cyanobacteria 8172 Anabaena cylindrica ACYL-ATC Cyanobacteria 5797 Anabaena sp. 90 ANAB-S90 Cyanobacteria 4476 Anabaena variabilis AVAR-ATC Cyanobacteria 5634 Arthrospira platensis APLA-NIE Cyanobacteria 6009 Calothrix sp. PCC 7507 CALO-P75 Cyanobacteria 5924 Chamaesiphon minutus PCC 6605 CMIN-P66 Cyanobacteria 5815 Chroococcidiopsis thermalis PCC 7203 CTHE-P72 Cyanobacteria 5740 Crinalium epipsammum PCC 9333 CEPI-P93 Cyanobacteria 4697 Cyanobacterium aponinum CAPO-P10 Cyanobacteria 3415 Cyanobacterium stanieri CSTA-A29 Cyanobacteria 2831 Cyanobium gracile CGRA-A27 Cyanobacteria 3261 Cyanothece sp. CYAN-P78 Cyanobacteria 6559 Cylindrospermum stagnale PCC 7417 CSTA-P74 Cyanobacteria 6200 34
Dactylococcopsis salina PCC 8305 DSAL-P83 Cyanobacteria 3305 Geitlerinema sp. PCC 7407 GEIT-P74 Cyanobacteria 3813 Gloeobacter kilaueensis JS1 GKIL-JS1 Cyanobacteria 4462 Gloeobacter violaceus GVIO-P74 Cyanobacteria 4406 Gloeocapsa sp. PCC 7428 GLEO-P74 Cyanobacteria 5003 Halothece sp. HALO-P74 Cyanobacteria 3701 Leptolyngbya sp. PCC 7376 LEPT-P73 Cyanobacteria 4153 Microcoleus sp. PCC 7113 MICR-P71 Cyanobacteria 6397 Microcystis aeruginosa MAER-NIE Cyanobacteria 5981 Nodularia spumigena CCY9414 NSPU-CCY Cyanobacteria 5211 Nostoc azollae NAZO-S07 Cyanobacteria 3646 Nostoc punctiforme NPUN-ATC Cyanobacteria 6573 Nostoc sp. NOST-P72 Cyanobacteria 6070 Oscillatoria acuminata PCC 6304 OACU-PCC Cyanobacteria 5755 Oscillatoria nigro-viridis PCC 7112 ONIG-PCC Cyanobacteria 6276 Oscillatoriales cyanobacterium JSC-12 OCYA-JSC Cyanobacteria 4673 Pleurocapsa sp. PCC 7327 PLEU-PCC Cyanobacteria 4255 Rivularia sp. PCC 7116 RIVU-PCC Cyanobacteria 6617 Stanieria cyanosphaera SCYA-ATC Cyanobacteria 4751 Synechococcus elongatus SELO-PCC Cyanobacteria 2657 Synechococcus sp. SYNE-A67 Cyanobacteria 3541 Thermosynechococcus elongatus TELO-BP1 Cyanobacteria 2451 Trichodesmium erythraeum TERY-IMS Cyanobacteria 4342 Amborella trichopoda ATRI-XXX Viridiplantae 27371 Beta vulgaris BVUL-XXX Viridiplantae 24446 Capsella rubella CRUB-XXX Viridiplantae 26521 Carica papaya CPAP-XXX Viridiplantae 26954 Citrullus lanatus CLAN-XXX Viridiplantae 23438 Citrus sinensis CSIN-XXX Viridiplantae 25466 Cucumis melo CMEL-XXX Viridiplantae 26746 Lotus japonicus LJAP-XXX Viridiplantae 15030 Ostreococcus lucimarinus OLUC-XXX Viridiplantae 7769 Solanum tuberosum STUB-XXX Viridiplantae 53100 Thellungiella parvula TPAR-XXX Viridiplantae 25562 Brachypodium distachyon BDIS-XXX Viridiplantae 29942 Sorghum bicolor SBIC-XXX Viridiplantae 33117 Bathycoccus prasinos BPRA-XXX Viridiplantae 7884 Chlorella sp NC64A CHLO-NC6 Viridiplantae 9791 Coccomyxa sp. C169 COCC-C16 Viridiplantae 9994 Micromonas pusilla strain CCMP 1545 MPUS-CCM Viridiplantae 10550 Oryza sativa OSAT-XXX Viridiplantae 41363 Volvox carteri VCAR-XXX Viridiplantae 15544 Thalassiosira pseudonana TPSE-XXX Viridiplantae 10894 Fragilariopsis cylindrus FCYL-XXX Viridiplantae 17942 35
Phaeodactylum tricornutum PTRI-XXX Viridiplantae 10135 Hordeum vulgare var. distichum HVUL-DIS Viridiplantae 52296 Triticum urartu TURA-XXX Viridiplantae 33258 Πίνακας 4-1: Παρουσίαση σετ δεδομένων 4.2 Περιγραφή πειραμάτων Πριν παρουσιαστούν τα αποτελέσματα των πειραμάτων, είναι σημαντικό να αναφέρουμε τα χαρακτηριστικά που επιθυμούμε να μελετήσουμε. Για το λόγο αυτό χωρίζουμε την ανάλυση στα παρακάτω τμήματα: 1. Μελέτη συμπεριφοράς για συνολική εκτέλεση 2. Μελέτη συμπεριφοράς για επέκταση υπαρχόντων προφίλ 3. Μελέτη της ανομοιογένειας των πόρων και των δεδομένων εισόδου 4. Μελέτη συμπεριφοράς των μεταφερόμενων δεδομένων Οι αναλύσεις που επιχειρούνται στα πειράματα είναι πάντα του ίδιου τύπου ώστε να διευκολύνεται η μεταξύ τους σύγκριση, και συγκεκριμένα all vs all. Επιλέξαμε αυτόν τον τύπο ανάλυσης διότι είναι προφανώς ο πλέον υπολογιστικά απαιτητικός και μας ενδιαφέρει να δείξουμε τη συμπεριφορά του προγράμματος μας όταν καλείται να λύσει προβλήματα μεγάλης κλίμακας. Για τον ίδιο λόγο επιλέξαμε να κατασκευάσουμε παντού προφίλ τύπου BBH, ωστόσο όπως αναφέρθηκε σε προηγούμενη ενότητα ο χρόνος κατασκευής των προφίλ είναι αμελητέος σε σχέση με την εκτέλεση του αλγορίθμου BLAST, συνεπώς ο τύπος των προφίλ δεν επηρεάζει πρακτικά τα αποτελέσματα. 4.3 Συνολική εκτέλεση Στην ενότητα αυτή μελετούμε το χρόνο περάτωσης των αναλύσεων για σετ δεδομένων μεταβαλλόμενου μεγέθους. Συγκεκριμένα μας ενδιαφέρει ο χρόνος που απαιτείται για τη διεξαγωγή all vs all ανάλυσης σε 10, 30 και 60 οργανισμούς. Για το λόγο αυτό παραθέτουμε ένα διάγραμμα για κάθε περίπτωση. Ο συνολικός χρόνος στα διαγράμματα χωρίζεται σε τρία τμήματα: Καθυστέρηση υποβολής που εισάγεται αυτόματα μεταξύ διαδοχικών υποβολών με στόχο τη μείωση τις πιθανότητας παγωμένων εργασιών. Χρόνος δρομολόγησης που αντιστοιχεί στο διάστημα μεταξύ της υποβολής και της εκκίνησης της εκτέλεσης. Ο χρόνος αυτός είναι αδύνατο να προβλεφθεί αφού εξαρτάται από την συνολική κατάσταση του συστήματος (στιγμιαίος φόρτος εργασίας) και από άλλους τυχαίους παράγοντες, μπορεί ωστόσο να παίξει σημαντικό ρόλο στο τελικό αποτέλεσμα όπως θα φανεί παρακάτω. Χρόνος εκτέλεσης που αποτελεί άθροισμα της ανάλυσης BLAST και της κατασκευής των φυλογενετικών προφίλ οποιουδήποτε τύπου. Ωστόσο ο χρόνος της BLAST ανάλυσης υπερισχύει σαφώς σε αναλύσεις κάθε κλίμακας 36
με ποσοστό μεγαλύτερο του 99% γι αυτό και ο χρόνος εκτέλεσης παρουσιάζεται ενιαίος. Σχήμα 4-1: Διάγραμμα χρόνου για 10 γονιδιώματα Όπως βλέπουμε ο συνολικός χρόνος που ταυτίζεται με τον απαιτούμενο χρόνο της πλέον χρονοβόρας εργασίας δεν επηρεάστηκε καθόλου από την εισαγωγή καθυστερήσεων. Επίσης η υπόθεση μας σχετικά με τον χρόνο εκτέλεσης επιβεβαιώνεται απόλυτα, καθώς ο χρόνος εκτέλεσης βαίνει φθίνων ως προς τη σειρά υποβολής. Να σημειωθεί ακόμα ότι ο χρόνος δρομολόγησης (scheduling time στο διάγραμμα) είναι αμελητέος, που σημαίνει ότι το πλέγμα δρομολογεί αμέσως τις εργασίες ενός χρήστη όταν αυτός ζητά λίγες εργασίες. Όπως θα δούμε παρακάτω η συμπεριφορά αυτή επιδεινώνεται όταν το πλήθος αυξανόμενων εργασιών αυξάνει. Μπορούμε να υπολογίσουμε την επιτάχυνση έναντι σειριακής εκτέλεσης ως εξής: στην υπόθεση ότι ο χρήστης είχε στη διάθεση του μόνο ένα μηχάνημα, τότε όλες οι εργασίες θα εκτελούνταν διαδοχικά, χωρίς καμία καθυστέρηση. Συνεπώς ο σειριακός χρόνος θα ισούται με το άθροισμα των χρόνων εκτέλεσης. Αντίθετα κάνοντας χρήση του προγράμματος μας, ο χρήστης αντιλαμβάνεται ως χρόνο περάτωσης το συνολικό χρόνο της πλέον χρονοβόρας διεργασίας. Στην περίπτωση μας τούτο ισούται με το άθροισμα της καθυστέρησης, του χρόνου δρομολόγησης και του χρόνου εκτέλεσης για την εργασία 1. Δηλαδή ισχύει: 37
10 ssssssssssssssssssss = rrrrrrrrrrrrrr(ii) ii=1 dddddddddddddddddddddddddddddd = dddddddddd(1) + ssssheeeeeeeeeeeeee(1) + rrrrrrrrrrrrrr(1) ssssssssssssss = ssssssssssssssssssss dddddddddddddddddddddddddddddd Από όπου με αντικατάσταση προκύπτει ότι για την παρούσα περίπτωση η επιτάχυνση είναι: ssssssssssssss = 44. 22 Σχήμα 4-2: Διάγραμμα χρόνου για 30 γονιδιώματα Στην περίπτωση των 30 οργανισμών οι εκτιμήσεις μας επιβεβαιώνονται ως ένα βαθμό. Συγκεκριμένα παρατηρούμε ότι η 2 η εργασία χρειάστηκε σαφώς περισσότερο χρόνο εκτέλεσης από την πρώτη. Αυτό συμβαίνει καθώς η εκτίμηση μας σχετικά με τον απαιτούμενο χρόνο εκτέλεσης έχει να κάνει μόνο με το μέγεθος του οργανισμού, δηλαδή το πλήθος και το μέσο μήκος των ακολουθιών του. Ωστόσο, όπως δείξαμε στο προηγούμενο κεφάλαιο, η πολυπλοκότητα του αλγορίθμου BLAST εξαρτάται από πολλούς 38
ακόμα παράγοντες αν και σε μικρότερο βαθμό. Τέλος, ακόμα και αν η πρόβλεψη μας ήταν απόλυτα σωστή, πρέπει να ληφθεί υπόψιν η ανομοιογένεια των υπολογιστικών πόρων του πλέγματος. Συνεπώς δύο εργασίες με περίπου ίσες απαιτήσεις σε υπολογιστική ισχύ θα εμφανίσουν διαφορά στον τελικό χρόνο εκτέλεσης ανάλογα με τις δυνατότητες του μηχανήματος στο οποίο εκτελούνται. Ωστόσο αυτό δεν είναι αρκετό για να αμφισβητηθεί η στρατηγική υποβολής που χρησιμοποιούμε διότι το σφάλμα μας είναι πολύ μικρό, δηλαδή με ασφάλεια μπορούμε να υποθέσουμε ότι αν η πλέον χρονοβόρα εργασία δεν υποβληθεί πρώτη (όπως είδαμε στο προηγούμενο πείραμα) τότε σίγουρα θα είναι από τις πρώτες. Στο παρών πείραμα είναι 2 η, συνεπώς επιβαρύνθηκε μόλις με 1 ώρα καθυστέρησης. Από την άλλη το παρών πείραμα υποδεικνύει ένα ακόμα, σημαντικότερο πρόβλημα όσον αφορά στη βελτιστοποίηση των υποβολών μας, και αυτό είναι η τελείως απρόβλεπτη φύση του χρόνου δρομολόγησης. Είδαμε ότι η εισαγωγή της καθυστέρησης μεταξύ των υποβολών μείωσε αισθητά το πλήθος των παγωμένων εργασιών άρα και το μέσο χρόνο δρομολόγησης. Ωστόσο όπως φαίνεται στο σχήμα η εργασία υπ αριθμόν 20 χρειάστηκε να επανυποβληθεί 7 φορές μέχρι να τρέξει. Ως αποτέλεσμα η εργασία αυτή ορίζει τον χρόνο περάτωσης της ανάλυσης ως η πλέον χρονοβόρα, παρά το ότι ο πραγματικός χρόνος εκτέλεσης της ήταν μικρός. Με ανάλυση παρόμοια με το προηγούμενο παράδειγμα βλέπουμε ότι το άθροισμα των χρόνων εκτέλεσης είναι 304 ώρες, άρα αυτό το χρόνο αναμένουμε από πιθανή σειριακή εκτέλεση. Βλέπουμε δηλαδή ότι ήδη η ανάλυση επί 30 εργασιών γίνεται απαγορευτική για παραδοσιακά υπολογιστικά συστήματα. Από την άλλη ο χρόνος της πλέον χρονοβόρας εργασίας, που στην περίπτωση μας είναι η 20 η, είναι 35.7 ώρες. Συνεπώς επιτυγχάνουμε: ssssssssssssss = 88. 55 Ας δούμε πως αυτοί οι τυχαίοι παράγοντες επηρεάζουν την απόδοση του συστήματος. Έστω λοιπόν ότι: 1. η πρόβλεψη μας σχετικά με το χρόνο εκτέλεσης ήταν απόλυτα ακριβής, με αποτέλεσμα η πλέον χρονοβόρα εργασία να υποβαλλόταν πρώτη και άρα με μηδενική καθυστέρηση. 2. To πλέγμα δεν εμφανίζει καμία αστάθεια ως προς τη δρομολόγηση και άρα ποτέ καμία εργασία δε χρειάζεται να υποβληθεί εκ νέου. Στην περίπτωση αυτή η πλέον χρονοβόρα εργασία θα ήταν η 2 η, με μηδενικό χρόνο καθυστέρησης, θα θέλαμε λοιπόν 31.8 ώρες συνολικά αντί των 35.7. Συνεπώς στο υποθετικό αυτό σενάριο θα είχαμε επιτάχυνση ίση με 9.5x που δεν απέχει πολύ από την πραγματική. Βλέπουμε λοιπόν ότι το σύστημα μας είναι ανεκτικό σε σφάλματα, πετυχαίνει δηλαδή σχεδόν τη βέλτιστη επιτάχυνση παρά την αρνητική επίδραση τυχαίων εξωτερικών παραγόντων. 39
Σχήμα 4-3: Διάγραμμα χρόνου για 60 γονιδιώματα Και σε αυτό το πείραμα είναι προφανές ότι ο χρόνος εκτέλεσης, που σηματοδοτείται με κίτρινο χρώμα, δεν είναι αυστηρά φθίνων ως προς τον αύξων αριθμό της εργασίας, συνεπώς για άλλη μια φορά η πρόβλεψη μας σχετικά με τους χρόνους εκτέλεσης δεν ανταποκρίθηκε πλήρως στην πραγματική κατάσταση. Παρόλα αυτά βλέπουμε ότι όντως η πρώτη εργασία έχει τον μέγιστο χρόνο εκτέλεσης, άρα η εκτίμηση μας έφερε το ίδιο αποτέλεσμα που θα πετυχαίναμε με a priori γνώση του πραγματικού χρόνου. Από την άλλη η αστάθεια στο χρόνο δρομολόγησης επηρέασε για άλλη μια φορά αρνητικά το τελικό αποτέλεσμα αφού η εργασία 12 δεν είναι σε καμία περίπτωση αυτή με το μέγιστο χρόνο εκτέλεσης, ορίζει ωστόσο το χρόνο περάτωσης όπως τον αντιλαμβάνεται ο χρήστης αφού τερματίζει τελευταία. Σε αντιστοιχία με τα προηγούμενα πειράματα υπολογίζουμε το σειριακό χρόνο ως το άθροισμα των χρόνων εκτέλεσης, αυτός είναι ίσος με 1114 ώρες ή 46 ημέρες. Καταλαβαίνει κανείς στο σημείο αυτό ότι η χρήση διανεμημένων υπολογιστικών συστημάτων αποτελεί αναγκαιότητα για τέτοιες αναλύσεις. Ο συνολικός χρόνος της εργασίας 12 είναι 86 ώρες. Συνεπώς πετυχαίνουμε επιτάχυνση: ssssssssssssss = 1111 Όμοια με το παραπάνω παράδειγμα μπορούμε να υπολογίσουμε την ιδεατή επιτάχυνση, αυτήν που θα πετυχαίναμε δηλαδή αν τελευταία τερμάτιζε η 1 η εργασία με συνολικό χρόνο 76 ώρες. Θα είχαμε λοιπόν επιτάχυνση 14.5x. Βλέπουμε ξανά ότι η αστάθεια του 40
πλέγματος δεν επηρεάζει σημαντικά την ποιότητα της λύσης μας, ακόμα και για ανάλυση πολύ μεγάλου μεγέθους. 4.4 Επέκταση υπαρχόντων προφίλ Στο σημείο αυτό θα εξετάσουμε την απόδοση της επέκτασης προηγούμενων αναλύσεων με καινούργια γονιδιώματα. Στο πρώτο πείραμα εξετάζεται η περίπτωση διπλασιασμού του data set. Συγκεκριμένα στο σενάριο αυτό, ο ερευνητής ξεκινά με all vs all ανάλυση επί 30 οργανισμών. Μετά το πέρας της διεργασίας, αποφασίζει να συμπεριλάβει άλλους 30 οργανισμούς στην έρευνα του. Για να διευκολύνουμε τη σύγκριση των αποτελεσμάτων μας οι 60 συνολικά οργανισμοί συμπίπτουν με τους 60 που εξετάστηκαν συνολικά σε προηγούμενο πείραμα. Υπενθυμίζουμε ότι η επέκταση χωρίζεται σε δύο διακριτά τμήματα: 1. Εξ ολοκλήρου ανάλυση επί ολόκληρης της βάσης των 30 νέων οργανισμών για τους οποίους δε διαθέτουμε καμία πληροφορία. 2. Επέκταση των προφίλ των προηγούμενων 30 οργανισμών με βάση τις ομολογίες τους προς τη νέα βάση δεδομένων. Είναι προφανές ότι από τα δύο αυτά βήματα, μόνο το 2 ο αναμένουμε να εμφανίσει επιτάχυνση σε σχέση με την ανεξάρτητη ανάλυση, αφού οι 3 ο αρχικοί οργανισμοί πρέπει να ελεγχθούν μόνο ως προς τη μισή βάση. Οι υπόλοιποι 30 όμως αναλύονται εξ ολοκλήρου, όπως δηλαδή συνέβη και στην ανεξάρτητη ανάλυση. Για το λόγο αυτό είναι λογικό να υποθέσουμε ότι στη γενική περίπτωση το 1 ο βήμα θα είναι πιο χρονοβόρο από το 2 ο, άρα επιμένοντας στη στρατηγική υποβολής που αναπτύξαμε παραπάνω επιλέγουμε να υποβάλλουμε πρώτα τους νέους οργανισμούς κι έπειτα τους παλιούς. Προφανώς το 2 ο σύνολο μπορεί να περιέχει μεγαλύτερους οργανισμούς από το 1 ο, ωστόσο το γεγονός ότι θα ελεγχθούν ως προς τη μισή βάση αναμένουμε να τους καταστήσει γρηγορότερους. 41
Σχήμα 4-4: Επέκταση ανάλυσης 30 οργανισμών σε 60 Η στρατηγική υποβολής είναι εμφανής στο παραπάνω σχήμα. Βλέπουμε δηλαδή ότι ο χρόνος εκτέλεσης βαίνει φθίνων στο εσωτερικό των 2 υποσυνόλων (1 ως 30 και 31 ως 60). Σε σχέση με την συνολική all vs all ανάλυση των 60 οργανισμών πετύχαμε 2 βελτιώσεις: 1. Ο χρόνος περάτωσης από την οπτική πλευρά του χρήστη μειώθηκε κατά 10 ώρες περίπου 2. Ο συνολικός χρόνος εκτέλεσης για το σύνολο των 60 εργασιών μειώθηκε κατά 540 ώρες που αντιστοιχεί σε ποσοστό σχεδόν 50%. Αυτό σημαίνει ότι η χρήση υπολογιστικών πόρων του πλέγματος μειώθηκε κατά προσέγγιση στο μισό. Από το σχήμα είναι επίσης προφανές ότι υπάρχουν περιθώρια περαιτέρω βελτίωσης, αν εφαρμοστεί μια αποτελεσματικότερη στρατηγική πρόβλεψης του χρόνου εκτέλεσης σε μελλοντικές επεκτάσεις της πλατφόρμας. Συγκεκριμένα σε μια βέλτιστη στρατηγική θα λαμβανόταν υπόψιν όχι μόνο το μέγεθος των οργανισμών προς εξέταση, αλλά και το μέγεθος της βάσης ως προς το οποίο τρέχουν. Η εκτίμηση αυτή όμως δεν είναι απλή καθώς η εξάρτηση του αλγορίθμου BLAST είναι αρκετά πολύπλοκή όπως αποδείξαμε στο κεφάλαιο 4. Για να πετύχουμε αξιόπιστες προβλέψεις απαιτούνται πολλά πειράματα και προσεκτική ρύθμιση των παραμέτρων, μπορεί όμως να επιτευχθεί επιπλέον μείωση του συνολικού χρόνου περάτωσης. Για παράδειγμα στο παρών πείραμα μια αντιμετάθεση των εργασιών 30 ως 39 με τις εργασίες 20 ως 29 θα απέφερε επιπλέον μείωση του χρόνου περάτωσης κατά 20%. 42
Στη συνέχεια παρουσιάζουμε την επέκταση 10 γονιδιωμάτων σε 30. Στην περίπτωση αυτή αναμένουμε μικρότερο κέρδος σε σχέση με την προηγούμενη περίπτωση αφού τώρα διαθέτουμε ένα πολύ μικρό τμήμα της τελικής εξόδου από τους προηγούμενους υπολογισμούς. Οι 30 τελικοί οργανισμοί συμπίπτουν με αυτούς που παρουσιάστηκαν προηγουμένως στην ανεξάρτητή ανάλυση για να διευκολύνουμε τη σύγκριση των αποτελεσμάτων. Σχήμα 4-5: Ανάλυση επέκταση 10 οργανισμών σε 30 Είναι προφανές ότι ο τελικός χρόνος περάτωσης που ορίζεται από τον απαιτούμενο χρόνο της πλέον χρονοβόρας διεργασίας παρέμεινε ουσιαστικά αμετάβλητος. Το πείραμα αυτό υποδεικνύει ότι η δυνατότητα της επέκταση προφίλ στοχεύει σε περιπτώσεις όπου ο ερευνητής έχει ήδη τρέξει την ανάλυση στο μεγαλύτερο μέρος των οργανισμών για τους οποίους ενδιαφέρεται. Σαν εμπειρικό κανόνα, μπορούμε να πούμε ότι η λειτουργία αυτή έχει νόημα σε περίπτωση που ο ερευνητής αυξάνει το σετ γονιδιωμάτων κατά λιγότερο από 50%, όπως στο πρώτο πείραμα της ενότητας. Ουσιαστικές επιταχύνσεις όμως μπορεί να αναμένει κανείς σε περίπτωση που τουλάχιστον το 75% των γονιδιωμάτων έχει ήδη αναλυθεί. Ωστόσο ακόμα και αν δεν προσφέρει σημαντική επιτάχυνση, η λειτουργία αυτή μπορεί να αποδειχθεί απαραίτητη σε περίπτωση που το μέγεθος της ανάλυσης ξεπεράσει τα χρονικά όρια του πλέγματος, αν για παράδειγμα κανείς υποβάλλει εργασίες με απαιτούμενο χρόνο εκτέλεσης μεγαλύτερο των 7 ημερών. Στην περίπτωση αυτή ο διαμερισμός του σετ γονιδιωμάτων σε υποσύνολα και η επαναληπτική επέκταση επιτρέπει στον ερευνητή να 43
τρέξει αναλύσεις σε ένα αυθαίρετα μεγάλο σύνολο οργανισμών, ακόμα και σε επίπεδο πανγονιδιώματος. 4.5 Ανομοιογένεια υπολογιστικών πόρων Όπως είδαμε και στα παραπάνω πειράματα, η επιτάχυνση που επιτυγχάνουμε στο πρόγραμμα μας περιορίζεται αρκετά από την υφιστάμενη ανομοιομορφία στον χρόνο περάτωσης των επιμέρους εργασιών, διότι ο συνολικός χρόνος από την οπτική πλευρά του χρήστη ισούται με αυτόν της πλέον χρονοβόρας εργασίας. Η υψηλή διακύμανση στον χρόνο αυτό έχει ως αποτέλεσμα η απόδοση να απέχει αρκετά από αυτή της βέλτιστης θεωρητικής παραλληλοποίησης, όπου η επιτάχυνση θα ήταν ανάλογη των ενεργών υπολογιστικών κόμβων. Η εν λόγω ανομοιομορφία οφείλεται σε δύο παράγοντες: 1. Την ετερογένεια στο μέγεθος των υπό εξέταση γονιδιωμάτων που είναι εγγενής ιδιότητα του προβλήματος που θέλουμε να λύσουμε 2. Την ετερογένεια της υπολογιστικής ισχύος του πλέγματος, που είναι εγγενής ιδιότητα του συστήματος που χρησιμοποιούμε Το γεγονός ότι αμφότεροι οι δύο παράγοντες αποτελούν χαρακτηριστικά γνωρίσματα του προβλήματος και της υπολογιστικής μας πλατφόρμας αντίστοιχα, καθιστά την κατάσταση αυτή κατ αρχήν αναπόδραστη. Ωστόσο η μέτρηση της ανομοιογένειας μπορεί να μας οδηγήσει σε χρήσιμα συμπεράσματα που μπορούν να ληφθούν υπόψιν στην σχεδίαση της αρχιτεκτονικής του προγράμματος μας. Στα παρακάτω θηκογράμματα φαίνεται η διακύμανση στο χρόνο εκτέλεσης. Αντί να παρουσιαστεί ενιαίο, κατασκευάζουμε επιμέρους θηκογράμματα για κάθε υπολογιστικό κόμβο που συμμετείχε στην ανάλυση μας. Συνεπώς η εποπτεία ενός συγκεκριμένου θηκογράμματος μας δείχνει τη διακύμανση στο μέγεθος των οργανισμών, αφού όλες οι εργασίες που δρομολογήθηκαν στο ίδιο μηχάνημα εκτελούνται με την ίδια υπολογιστική ισχύ. Η μεταβλητότητα όμως στους μέσους όρους των επιμέρους θηκογραμμάτων, αποτελεί μέτρο της ετερογένειας των πόρων σε υπολογιστική ισχύ, ειδικά όταν το δείγμα είναι αρκετές εργασίες. Για παράδειγμα αν δύο πόροι εκτέλεσαν από 5 εργασίες και οι μέσοι χρόνοι εκτέλεσης διαφέρουν σημαντικά, συμπεραίνουμε ότι η διαφορά οφείλεται πιθανότατα στα μηχανήματα και όχι στις εργασίες. Για να γίνει περισσότερο κατανοητός ο διαχωρισμός αυτός παρουσιάζονται 2 περιπτώσεις. Στην πρώτη βλέπουμε το θηκόγραμμα για τους 60 οργανισμούς. Ωστόσο χρησιμοποιώντας το ειδικό πεδίο της JDL: requirements, απαιτήσαμε όλες οι εργασίες μας να εκτελεσθούν σε μηχανήματα του ίδιου υπολογιστικού κόμβου, που διαθέτουν κατά συνέπεια περίπου ίση υπολογιστική ισχύ. Ο κόμβος αυτός φέρει την κωδική ονομασία: afroditi.hellasgrid.gr. Συνεπώς αναμένουμε μεγάλη διακύμανση εντός κάθε θηκογράμματος που αντιστοιχεί στην εγγενή ανομοιογένεια των εργασιών, μιας και σε ένα σύνολο 60 γονιδιωμάτων είναι λογικό να υπάρχουν μεγάλες διαφορές στο μέγεθος. Ωστόσο 44
δεν αναμένουμε μεγάλες διαφορές στο μέσο όρο μεταξύ δύο θηκογραμμάτων αφού τα μηχανήματα είναι περίπου ίδια σε κάθε κόμβο. Σχήμα 4-6: Ανομοιογένεια στο μέγεθος του προβλήματος Για να ερμηνεύσουμε καλύτερα τον παραπάνω πίνακα είναι χρήσιμο να δούμε πως οι 60 συνολικά εργασίες κατανέμονται στους 22 αυτούς υπολογιστικούς κόμβους. Θα μπορούσε κανείς να υποθέσει μια περίπου ομοιόμορφη κατανομή, όπου σε κάθε κόμβο θα αντιστοιχούσαν 2 ή 3 εργασίες. Ο πίνακας 4-2 που ακολουθεί αποδεικνύει ότι δεν ισχύει κάτι τέτοιο, πολλοί κόμβοι εκτέλεσαν μόλις μία διεργασία, ενώ άλλοι - όπως οι κόμβοι 17,18 και 19 - πολύ περισσότερες. Αυτό συμβαίνει διότι όπως προαναφέραμε το πλέγμα χρησιμοποιείται ταυτόχρονα από πολλούς χρήστες, συνεπώς ο συνολικός φόρτος σε κάθε κόμβο, με βάση τον οποίο γίνεται η δρομολόγηση, δεν εξαρτάται μόνο από την παρούσα ανάλυση αλλά και από τις εργασίες άλλων χρηστών που έτυχε να υποβληθούν κατά το ίδιο χρονικό διάστημα. Πλήθος εργασιών Υπολογιστικοί κόμβοι 1 4, 5, 12, 13, 14, 15, 16, 22 2 1, 2, 6, 8, 9, 10, 11 3 20 5 7 6 21 7 17, 18 9 19 Πίνακας 4-2: Κατανομή εργασιών σε υπολογιστικούς κόμβους 45
Είναι φανερό ότι όλοι σχεδόν οι κόμβοι έχουν πολύ μεγάλη διακύμανση, στην περίπτωση μάλιστα των κόμβων 18 και 19 η απόκλιση των χρονοβόρων εργασιών από το μέσο όρο είναι τόσο μεγάλη ώστε να θεωρούνται εξωκείμενες τιμές (outliers). Από την άλλη αν επικεντρωθούμε στους κόμβους που έτρεξαν περισσότερες από 5 εργασίες και άρα δεν επηρεάζονται πολύ από στατιστικό θόρυβο, βλέπουμε ότι τα θηκογράμματα κινούνται στα ίδια επίπεδα, δεν μπορεί δηλαδή κανείς να αποφανθεί με σιγουριά για το ποιοι κόμβοι είναι αποδοτικότεροι από άλλους. Στο 2 ο παράδειγμα βλέπουμε τα θηκογράμματα για την περίπτωση των 10 οργανισμών. Εδώ το dataset είναι πολύ μικρότερο, συνεπώς αναμένουμε μικρότερη απόκλιση ως προς το μέγεθος των οργανισμών. Ωστόσο σε αυτό το πείραμα δε θέσαμε κανένα περιορισμό στο δρομολογητή, τον αφήσαμε ελεύθερο να στείλει τις εργασίες σε οποιοδήποτε κόμβο του πλέγματος. Βλέπουμε λοιπόν ότι συμμετείχαν συνολικά 7 μηχανήματα, τα 3 πρώτα ανήκουν στον κόμβο grid.auth.gr του ΑΠΘ και τα επόμενα 4 στο κόμβο afroditi.hellasgrid.gr. Σχήμα 4-7: Ανομοιογένεια στη διεκπεραιωτική ικανότητα των υπολογιστικών πόρων 46
Compute Elements - CE Κόμβοι πλέγματος Πλήθος εργασιών 1 grid.auth.gr 2 2 grid.auth.gr 1 3 grid.auth.gr 2 4 afroditi.hellasgrid.gr 1 5 afroditi.hellasgrid.gr 1 6 afroditi.hellasgrid.gr 1 7 afroditi.hellasgrid.gr 2 Πίνακας 4-3: Κατανομή υπολογιστικών πόρων στους κόμβους του πλέγματος Με απλή εποπτεία του σχήματος είναι προφανής η ανομοιογένεια στην ισχύ των 2 κόμβων, αφού όσες εργασίες έτρεξαν στο υπολογιστικό σύστημα του ΑΠΘ (grid.auth.gr) χρειάστηκαν περίπου 2 ώρες ενώ όλες οι υπόλοιπες χρειάστηκαν περισσότερο από 10. 4.6 Network Bandwidth Η ανταλλαγή δεδομένων μεταξύ του τερματικού διεπαφής και των υπολογιστικών κόμβων γίνεται προφανώς μέσω του Internet, με τα πρωτόκολλα επικοινωνίας που ορίζει η αρχιτεκτονική του πλέγματος. Κρίνουμε σκόπιμο να μελετήσουμε τις απαιτήσεις του συστήματος μας και ως προς αυτήν την παράμετρο. Η μεταφορά δεδομένων υφίσταται αμφίδρομα, αφ ενός η βάση ως προς την οποία γίνεται η ανάλυση πρέπει να «ανέβει» σε κάθε υπολογιστικό κόμβο, αφ ετέρου τα αποτελέσματα της ανάλυσης κάθε κόμβου πρέπει να επιστραφούν στο χρήστη. Για να ελαχιστοποιήσουμε τις απαιτήσεις κατά το uploading επιλέξαμε να κάνουμε χρήση των αποθηκευτικών πόρων (SE) του πλέγματος όπως προαναφέραμε. Συνεπώς το τερματικό διεπαφής ανεβάζει τη βάση μία μόνο φορά σε έναν τέτοιο πόρο, έπειτα κάθε υπολογιστικός κόμβος κατεβάζει το δικό του αντίγραφο της βάσης. Με τον τρόπο αυτό πετυχαίνουμε μείωση των απαιτήσεων σε upload bandwidth κατά παράγοντα Ν ίσο με το πλήθος των γονιδιωμάτων της ανάλυσης. Ως αποτέλεσμα στη συνολική χρήση του δικτύου επικρατεί η επιστροφή των δεδομένων εξόδου στο τερματικό του χρήστη όπως αποδεικνύει το παρακάτω διάγραμμα. Από το ίδιο διάγραμμα είναι ακόμα προφανές ότι η χωρική πολυπλοκότητα είναι Ο(Ν) για αμφότερους τους 2 όρους, όπως ήταν άλλωστε αναμενόμενο: 47
Σχήμα 4-8: Ανάγκες σε bandwidth ως συνάρτηση του μεγέθους του προβλήματος Να σημειωθεί ότι ο χρόνος που απαιτείται για την επιστροφή των αποτελεσμάτων στο χρήστη είναι αμελητέος παρά το γεγονός ότι το συνολικό μέγεθος της εξόδου μπορεί να είναι αρκετά Gigabyte. Τούτο συμβαίνει διότι η μεταφορά των δεδομένων γίνεται ασύγχρονα, κάθε φορά δηλαδή που κάποιος υπολογιστικός κόμβος τελειώνει την εργασία του, επιστρέφει επιτόπου και τα αποτελέσματα. Δεδομένου ότι υπάρχει τουλάχιστον ένας ακόμη κόμβος που δεν έχει τερματίσει, ο χρόνος για το downloading δεν έχει καμία επίδραση στον τελικό χρόνο περάτωσης όπως τον αντιλαμβάνεται ο χρήστης. Συνεπώς η μόνη χρονική επιβάρυνση που αναμένεται να παρατηρηθεί, είναι το downloading της εξόδου της τελευταίας εργασίας, η οποία είναι προφανώς μικρότερη κατά παράγοντα Ν σε σχέση με τα νούμερα που βλέπουμε στο διάγραμμα. 48
4.7 Color Maps Παρακάτω θα παρουσιαστούν τα αποτελέσματα των 3 all vs all αναλύσεων. Η οπτικοποίηση αυτή προκύπτει άμεσα από τη έξοδο του προγράμματος χωρίς καμία σχεδόν ανάγκη για επεξεργασία, πράγμα που αποτελούσε άλλωστε εξ αρχής βασική σχεδιαστική απαίτηση. Κάθε κελί στα παρακάτω σχήματα αντιστοιχεί στο πλήθος των BBH ζευγών που ανιχνεύθηκαν μεταξύ των δύο αντίστοιχων γονιδιωμάτων. Επίσης ο πίνακας έχει ομαδοποιηθεί ώστε να καταδείξει ομάδες γονιδιωμάτων με εξελικτικά σημαντικές σχέσεις, όπως φαίνεται από τα τμήματα με εντονότερο χρωματισμό. Προφανώς δε μας ενδιαφέρουν σχέσεις μεταξύ ακολουθιών του ίδιου οργανισμού, γι αυτό και αγνοούμε τα στοιχεία της κύριας διαγώνιου που επισημαίνονται με μαύρο χρώμα. Σχήμα 4-9: Χρωματικός πίνακας για 10 γονιδιώματα. 49
Σχήμα 4-10: Χρωματικός πίνακας για 30 γονιδιώματα 50
Σχήμα 4-11: Χρωματικός πίνακας για 60 γονιδιώματα 51
5 Συμπεράσματα και μελλοντικές επεκτάσεις 5.1 Συμπεράσματα Τα αποτελέσματα των πειραμάτων αποδεικνύουν ότι το πρόγραμμα μας είναι σε θέση να διαχειριστεί έναν τεράστιο όγκο δεδομένων σε εύλογο χρονικό διάστημα σε αντίθεση με παραδοσιακά υπολογιστικά συστήματα. Ακόμα σημαντικότερο είναι όμως το γεγονός ότι η κλιμάκωση των αναλύσεων επιτυγχάνεται αυτοματοποιημένα, χωρίς δηλαδή καμία επέμβαση από το χρήστη. Ουσιαστικά η εφαρμογή δημιουργεί ένα επιπλέον abstraction layer που καταφέρνει να αποκρύψει της λεπτομέρειες υλοποίησης της υποκείμενης υπολογιστικής υποδομής. Με τον τρόπο αυτό ο τελικός χρήστης εκτελεί πάντα την ίδια, εξαιρετικά απλή διαδικασία, ανεξάρτητα από το μέγεθος της ανάλυσης. Αυτή η πλήρως αυτοματοποιημένη σχεδίαση εγγυάται την απαλλαγή του ερευνητή από την ανάγκη ρύθμισης τεχνικών παραμέτρων, του επιτρέπει συνεπώς να αφοσιωθεί ολοκληρωτικά στο κατ εξοχήν πρόβλημα που καλείται να λύσει. Τούτο όχι μόνο επιταχύνει αισθητά τη διαδικασία των αναλύσεων διευκολύνοντας το έργο των ερευνητών, αλλά μπορεί δυνητικά να επιτρέψει σε ολοένα περισσότερους ενδιαφερόμενους να διεξαγάγουν αναλύσεις μεγάλης κλίμακας, οι οποίοι πιθανών να απωθούνταν από την τεχνική πολυπλοκότητα των έως τώρα διαθέσιμων εργαλείων. Ιδιαίτερα χρήσιμη είναι ακόμα η αντοχή του προγράμματος στις αναπόφευκτες αποτυχίες του υλικού. Κάθε υπολογιστικό σύστημα μεγάλης κλίμακας αντιμετωπίζει το πρόβλημα αυτό, αφού οι αναμενόμενες αποτυχίες υλικού η λογισμικού αυξάνονται γραμμικά με το πλήθος των κόμβων που συμμετέχουν στην υποδομή. Το πλέγμα δεν αποτελεί προφανώς εξαίρεση, οι αποτυχίες του μπορούν δε να χωριστούν στις εξής κατηγορίες: Αποτυχία υλικού κατά το χρόνο εκτέλεσης μιας εργασίας Αποτυχία του δρομολογητή να υποβάλει μια εργασία προς εκτέλεση εντός εύλογου χρονικού διαστήματος Το πλέγμα είναι σε θέση να αντιμετωπίσει σφάλματα της πρώτης κατηγορίας, αφού εργασίες που για κάποιο λόγο απέτυχαν να εκτελεστούν σε κάποιο υπολογιστικό κόμβο υποβάλλονται αυτόματα σε κάποιον άλλο. Τα σφάλματα της 2 ης κατηγορίας αντιμετωπίζονται με την ευριστική λύση της περιοδικής επανυποβολής που αναλύσαμε παραπάνω. Ως αποτέλεσμα το πρόγραμμα είναι ανθεκτικό σε κάθε είδους σφάλμα, υλικού ή λογισμικού. 5.2 Μελλοντικές Επεκτάσεις Ο μόνος υφιστάμενος περιορισμός ως προς το μέγεθος των εφικτών αναλύσεων οφείλεται στα όρια του πλέγματος ως προς το χρόνο εκτέλεσης των εργασιών αλλά και ως προς το πλήθος των υποβαλλόμενων διεργασιών. Συγκεκριμένα, καμία διεργασία δεν επιτρέπεται να εκτελείται στο πλέγμα συνεχόμενα για περισσότερο από 7 ημέρες ή 168 ώρες, ενώ οι συνήθεις χρήστες επιτρέπεται να υποβάλουν ταυτόχρονα το πολύ 100 διεργασίες. 52
Σε περίπτωση που απαιτηθεί μελλοντικά ανάλυση ακόμα μεγαλύτερης κλίμακας θα πρέπει η λογική του προγράμματος να τροποποιηθεί ώστε να διαμοιράζεται και το αρχείο βάσης εκτός από το σύνολο των υπό εξέταση οργανισμών. Ωστόσο αυτό θα καταργήσει ορισμένα χαρακτηριστικά της σχεδίασης που επιταχύνουν αισθητά την ανάλυση, συνεπώς ενδεχόμενες αλλαγές προς αυτήν την κατεύθυνση πρέπει να πραγματοποιηθούν προσεκτικά. Αναφέρουμε ακόμα ότι δε διαφαίνεται τουλάχιστον στο άμεσο μέλλον τέτοια ανάγκη αφού η πλέον χρονοβόρα εργασία στα πειράματα που παρουσιάσαμε απαίτησε μόλις 35 ώρες, απέχει δηλαδή αρκετά από το όριο παρόλο που αποτελούσε μέρος μιας ανάλυσης μεγάλης κλίμακας (60 γονιδιώματα all vs all). Ωστόσο η ολοένα επιταχυνόμενη συλλογή βιολογικών δεδομένων είναι πιθανό να επιτάσσει ακόμα ισχυρότερα υπολογιστικά εργαλεία στο μέλλον. 53
6 Αναφορές [1] Hogeweg P, The Roots of Bioinformatics in Theoretical Biology, PLoS Comput Biol 7(3): e1002021. doi: 10.1371/journal.pcbi.1002021, (2011) [2] T.K. Attwood, A. Gisel, N-E. Eriksson and E. Bongcam-Rudloff Concepts, Historical Milestones and the Central Place of Bioinformatics in Modern Biology: A European Perspective, InTech, doi: 10.5772/23535, (2011) [3] SF. Altschul, W. Gish, W. Miller, EW. Myers, D. Lipman, Basic Local Alignment search tool, J. Mol. Biol. 215:403-410. (1990) [4] T. Tatusova, T. Madden, Blast 2 sequences, a new tool for comparing protein and nucleotide sequences, Microbiol Lett 177(1):187-8 (1999) [5] Dr. R. Casey, BLAST sequences aid in Genomics and Proteomics, Business Intelligence Network (2005) [6] BLAST Portal provided by NCBI. Gives the capability of running limited BLAST queries. http://blast.ncbi.nlm.nih.gov/blast.cgi (last accessed June 16th 2016)http://blast.ncbi.nlm.nih.gov/Blast.cgi (last accessed June 16th 2016) [7] M. Pellegrini, Using phylogenetic profiles to predict functional relationships, Methods Mol Biol 10.1007/978-1-61779-361-5_9 (2012) [8] E. Marcotte, I. Xenarios, AM. van Der Bliek, D. Eisenberg, Localizing proteins in the cell from their phylogenetic profiles, Proc Natl Acad Sci USA 97(22):12115-20 (2000) [9] Narra, Kishore, and Li Liao. "Use of extended phylogenetic profiles with E-values and support vector machines for protein family classification." International Journal of Computer and Information Science 6.1: 58-63 (2005) [10] Yuri I. Wolf, Eugene V. Koonin, A Tight Link between Orthologs and Bidirectional Best Hits in Bacterial and Archaeal Genomes, Genome Bio Evol 10.1093/gbe/evs100 (2012) [11] I. Foster, What is the grid? A three point checklist., GRIDtoday Vol. 1, No. 6 (2002) [12] Anderson, D.P.: Boinc, A system for public-resource computing and storage. In: Grid Computing, Proceedings. Fifth IEEE/ACM International Workshop on. pp. 4 10. IEEE (2004) [13] N. Quintana, F. Kooy, M. D. Van de Rhee, G. P. Voshol, R. Verpoorte, Renewable energy from Cyanobacteria: energy production optimization by metabolic pathway engineering, Appl Microbiol Biotechnol 91:471 490 DOI 10.1007/s00253-011-3394-0 (2011) [14] Industry using Cyanobacteria for massive production of fuel: http://algenol.com (last accessed 17 th July 2016) 54
7 Παράρτημα Α - Οδηγίες χρήσης του προγράμματος Στο σημείο αυτό παρατίθενται αναλυτικές οδηγίες χρήσης του προγράμματος με στόχο να καταστεί όσο το δυνατόν ευκολότερη η χρήση του από χρήστες χωρίς τεχνικές γνώσεις. Στα πλαίσια του κεφαλαίου αυτού υποθέτουμε ότι ο χρήστης διαθέτει πρόσβαση σε ένα τερματικό Linux, ή έστω σε ένα εργαλείο που του δίνει τις αντίστοιχες δυνατότητες μέσα σε άλλα λειτουργικά συστήματα, όπως π.χ. το πρόγραμμα PuTTY για περιβάλλον Windows. 7.1 Πρόσβαση στο HellasGrid Η πρόσβαση στους πόρους του πλέγματος είναι ελεγχόμενη, γ αυτό απαιτείται η δημιουργία ενός λογαριασμού και στη συνέχεια η σύνδεση του με ένα φυσικό πρόσωπο. Σαφείς οδηγίες για τη διαδικασία μπορεί να βρει κανείς σε αυτό το σύνδεσμο: HellasGridAccess. Να σημειωθεί ότι σε περίπτωση δημιουργίας νέου λογαριασμού θα απαιτηθεί η φυσική παρουσία του χρήστη για την ταυτοποίηση του. Η σύνδεση στο UI γίνεται με το εργαλείο ssh, συγκεκριμένα με την εντολή ssh username@domain, για παράδειγμα: ssh steremma@ui.afroditi.hellasgrid.gr Ο πιστοποιημένος χρήστης είναι πλέον σε θέση να εκδώσει ένα proxy certificate το οποίο του δίνει πρόσβαση στους πόρους του πλέγματος. Αυτό μπορεί να γίνει είτε μέσω command line, ωστόσο η υποδομή παρέχει και ένα γραφικό περιβάλλον το οποίο συνίσταται για χρήστες με περιορισμένη εμπειρία σε εφαρμογές γραμμής εντολών. Η είσοδος στο γραφικό περιβάλλον γίνεται με την εντολή proxy-tools στο UI. Σε περίπτωση που ο χρήστης επιθυμεί να τρέξει αναλύσεις για εκτεταμένο χρονικό διάστημα, μπορεί να εκδώσει ένα myproxy certificate επιλέγοντας ταυτόχρονα την επιλογή auto-renew certificate μέσω του ίδιου εργαλείου. Με τον τρόπο αυτό το πιστοποιητικό του θα ανανεώνεται αυτόματα μέχρι και 28 ημέρες μετά. 55
7.2 Εγκατάσταση Ο κώδικας του προγράμματος μπορεί να βρεθεί στην παρακάτω διεύθυνση: git repository. Στο πάνω δεξί μέρος της σελίδας βρίσκεται η επιλογή clone. Το μόνο που χρειάζεται να κάνει ο χρήστης, είναι να αντιγράψει τη URL διεύθυνση πατώντας Copy to clipboard ώστε να μπορέσει στη συνέχεια να αποκτήσει ένα τοπικό αντίγραφο του repository. Αυτό φαίνεται στην παρακάτω εικόνα. Σχήμα 7-1: Αντιγραφή διεύθυνσης απομακρυσμένου repository Στη συνέχεια ο χρήστης δημιουργεί ένα τοπικό αντίγραφο στο UI του με την εντολή: git clone <URL>, όπου URL είναι απλά η διεύθυνση που αντέγραψε στο προηγούμενο βήμα. Πλέον ολόκληρη η ιεραρχία φακέλων και αρχείων του προγράμματος υπάρχει στο τερματικό του χρήστη. 56
7.3 Εκτέλεση Για να εκκινήσει ο χρήστης το πρόγραμμα, αρκεί να το τροφοδοτήσει με την επιθυμητή είσοδο. Όπως προαναφέραμε, η απαιτούμενη είσοδος είναι: 1. Ένα αρχείο FASTA που περιέχει όλες τις ακολουθίες των γονιδιωμάτων που αποτελούν τη βάση. Η επέκταση είναι επίσης οποιαδήποτε επιτρεπτή. Υπενθυμίζουμε τη μορφή ενός FASTA αρχείου στο σχήμα 7-2 που παρουσιάζει τις 2 πρώτες ακολουθίες του οργανισμού Calothrix. Σχήμα 7-2: Απόσπασμα αρχείου FASTA 2. Ένας φάκελος γεμάτος με FASTA αρχεία, ένα για κάθε οργανισμό προς εξέταση. Η επέκταση των αρχείων είναι οποιαδήποτε επιτρεπτή. 3. Ένα αρχείο κειμένου με 2 στήλες, που συσχετίζει κάθε οργανισμό προς εξέταση με ένα κωδικό σταθερού μήκους για ευκολότερη αναζήτηση. Για παράδειγμα οι γραμμές που αντιστοιχούν σε δύο από τους οργανισμούς των αναλύσεων μας φαίνονται στο σχήμα 7-3. Σχήμα 7-3: Απόσπασμα αρχείου gene map 57
Τέλος ο χρήστης συμπληρώνει το αρχείο Input.txt με τις επιθυμητές ρυθμίσεις της ανάλυσης του. Οι ακριβείς παράμετροι που καλείται να συμπληρώσει ο χρήστης έχουν περιγραφεί στο κεφάλαιο 3. Ένα παράδειγμα ενός συμπληρωμένου αρχείου φαίνεται στο σχήμα 7-2. Σχήμα 7-4: Υπόδειγμα καθορισμού των παραμέτρων της ανάλυσης Τέλος ο χρήστης εκκινεί το πρόγραμμα καλώντας το masterscript, με την εντολή:./masterscript.sh Input.txt UniqueIdentifier όπου το δεύτερο όρισμα είναι μια οποιαδήποτε μοναδική λέξη με την οποία ο χρήστης επιθυμεί να διακρίνει τη συγκεκριμένη ανάλυση. Αν για παράδειγμα ο χρήστης επιθυμεί μια all vs all ανάλυση μεταξύ όλων των βακτηρίων του γένους Cyanobacteria, θα μπορούσε να συμπληρώσει το Input.txt κατάλληλα κι έπειτα να τρέξει:./masterscript.sh Input.txt CyanoAll_VS_All Το πρόγραμμα δημιουργεί αυτόματα ένα φάκελο με το όνομα που επέλεξε ο χρήστης και τοποθετεί όλα τα αρχεία που σχετίζονται με την ανάλυση στο φάκελο αυτό. Ως αποτέλεσμα ο 58
χρήστης είναι στη συνέχεια ελεύθερος να τροποποιήσει οποιοδήποτε αρχείο ή να εκκινήσει παράλληλα άλλες αναλύσεις. 7.4 Παρακολούθηση Ο χειρισμός της διαδικασίας με στόχο την αντιμετώπιση σφαλμάτων γίνεται όπως προείπαμε τελείως αυτοματοποιημένα. Ωστόσο για χρονοβόρες αναλύσεις ο χρήστης μπορεί να θέλει να μάθει την πορεία της ανάλυσης του. Για το λόγο αυτό παρέχουμε το script CurrentState.sh το οποίο δέχεται ως όρισμα το φάκελο της ανάλυσης και επιστρέφει την κατάσταση όλων των εργασιών. Στο προηγούμενο παράδειγμα μετά από μερικές ώρες θα μπορούσαμε να τρέξουμε:./currentstate.sh CyanoAll_VS_All Η μορφή της εξόδου φαίνεται στο σχήμα 7-3. Σχήμα 7-5: Δείγμα ελέγχου της πορείας της ανάλυσης 7.5 Επεξεργασία εξόδου Το πρόγραμμα παρέχει scripts και για την περαιτέρω επεξεργασία των αποτελεσμάτων με στόχο να διευκολύνει χρήστες που επιθυμούν να οπτικοποιήσουν τα αποτελέσματα. Το σύνολο των αρχείων αυτών βρίσκονται στο φάκελο javatools/postproccessing. Η επιλογή να γραφούν σε μια αντικειμενοστραφή γλώσσα όπως η Java έγινε με γνώμονα την επεκτασιμότητα. Επειδή είναι αδύνατο να προβλεφθούν εκ των προτέρων οι ανάγκες επεξεργασίας όλων των χρηστών, προσφέρουμε μια εύκολα επεκτάσιμη βιβλιοθήκη που παρέχει μεν μόνο βασικές διεργασίες (όπως φιλτράρισμα της εξόδου ή συνδυασμό των αποτελεσμάτων), προσφέρεται δε για εύκολη επέκταση από τους χρήστες με βασικές γνώσεις Java. Θα παραθέσουμε από ένα παράδειγμα για τα δύο βασικά use case που περιγράψαμε με αναφορά σε μία all vs all ανάλυση 10 γονιδιωμάτων. 59
7.5.1 Collapse οργανισμών Το σχήμα 7-6 παρουσιάζει τη μείωση του όγκου της πληροφορίας όταν επιθυμούμε να δούμε τα απλά φυλογενετικά προφίλ σε επίπεδο οργανισμών και όχι μεμονωμένων ακολουθιών. Συγκεκριμένα, αντί να έχουμε ένα διάνυσμα για κάθε ακολουθία, υπολογίζουμε ένα μόνο διάνυσμα ανά οργανισμό όπου κάθε στοιχείο αποτελεί το άθροισμα των αντίστοιχων στοιχείων όλων των ακολουθιών. Για να καταστεί η μορφή των προφίλ ανεξάρτητη από το μέγεθος του οργανισμού, προσθέτουμε και ένα βήμα κανονικοποίησης του αποτελέσματος ως προς το πλήθος των ακολουθιών του οργανισμού. Συνεπώς η συνολική έξοδος, μεγέθους 10 αρχείων, καθένα από τα οποία περιέχει περί τις 25,000 γραμμές, συνοψίζεται σε μόλις 10. Σχήμα 7-6: Σύνοψη των φυλογενετικών προφίλ σε επίπεδου οργανισμών 60
7.5.2 Φιλτράρισμα φυλογενετικών προφίλ Είναι πιθανό από μία ανάλυση να προκύψει ένα τεράστιο πλήθος φυλογενετικών προφίλ, όπως στην προαναφερθείσα ανάλυση που η τάξη μεγέθους των προφίλ είναι ~ 250,000. Ωστόσο μπορεί ο ερευνητής να ενδιαφέρεται μόνο για ένα υποσύνολο αυτών, για τα οποία ισχύει μια συγκεκριμένη ιδιότητα. Η βιβλιοθήκη που παρέχουμε προσφέρει τη δυνατότητα αυτή με πολύ εύκολο τρόπο. Ενδεικτικά παραθέτουμε το φιλτράρισμα της εξόδου, σε περίπτωση που επιθυμούμε μόνο τα προφίλ που περιέχουν περισσότερες από 100 ομολογίες, αγνοώντας τις ομολογίες ενός οργανισμού με τον εαυτό του. Τα σχήματα 7-7 και 7-8 δείχνουν τμήματα της αρχικής και της φιλτραρισμένης εξόδου αντίστοιχα. Βλέπουμε ότι η πληροφορία έχει μειωθεί κατά παράγοντα 6.5, αριθμός που μπορεί να διαμορφωθεί με κατάλληλο έλεγχο του κατωφλίου ελάχιστων ομολογιών. Σχήμα 7-7: Αρχική έξοδος, αποτελούμενη από 26749 προφίλ Σχήμα 7-8: Φιλτραρισμένη έξοδος, αποτελούμενη από 4126 προφίλ 61