Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
|
|
- Χθόνια Βασιλόπουλος
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διπλωματική εργασία Παράλληλη υλοποίηση του αλγορίθμου MCL με χρήση πόρων του Cloud (εφαρμογή σε μεγάλης κλίμακας ομαδοποίηση πρωτεϊνών) Εκπόνηση: Άγγελος Καλτσίκης Επιβλέποντες: Καθηγητής Περικλής Α. Μήτκας Δρ. Φώτης Ε. Ψωμόπουλος Φεβρουάριος 2017
2 ii
3 ARISTOTLE UNIVERSITY OF THESSALONIKI Abstract Faculty of Engineering School of Electrical & Computer Engineering Diploma in Engineering Title: Parallel implementation of MCL using Cloud resources Angelos Kaltsikis February 2017 Data clustering is one of the advancing research fields of data mining due to the variety of problems that currently exist. The increasing need for clustering in several applications has inevitably driven the creation of many different algorithms, each designed to perform more efficiently in solving certain types of problems. Specifically, in Bioinformatics some useful knowledge can be derived from entity clustering. In many Bioinformatics problems, the data entities involved can be portrayed effectively by graphs, as a collection of nodes and edges. One of the best known algorithms for such problems is the Markov Cluster Algorithm (MCL). Some variants of the algorithm (Regularized MCL, Multi-Level Regularized-MCL) have been designed to confront the weaknesses of MCL and its further improvement. Bioinformatics forms one principal field of science that deals with data sets so large or complex that independent computing systems are inadequate to deal with (Big Data). As a consequence, there is a concrete need for algorithms that are designed to handle such datasets, unlike the ones aforesaid. The graphs used in Bioinformatics, even if they are high dimensional, the number of edges they contain is much smaller than a dense graph with the same dimensions and as a result they are considered sparse. Apache Spark framework was chosen because of it s ability to exploit resources from multiple computing systems within Cloud providers. The intention was the development of a distributed program which is able to handle arbitrary big input graphs, actualize the MCL algorithm and cluster the data in groups that share similar characteristics. Although Spark is a framework capable of massive dataset handling, in some of its functions it does nοt include the aggregable actions and functions necessary to take advantage of iii
4 the sparsity of graphs. Hence, some methods have been implemented to enable the exploitation of sparse adjacency matrices in distributed matrix multiplication, which is one of the steps of MCL. The main program requirement was the execution within a reasonable period of time.. An equally important requirement was the output of reliable results, which should be comparable with the results of the original implementation of MCL. Additionally, in order to facilitate the use by as many researchers as possible, the program needed to be as user-friendly as possible. The program enables the user to choose between the execution of MCL and R-MCL algorithms with different input variables, offering a variety of execution versions. In order to evaluate the program during the development phase, the initial experiments were conducted using a small scale real dataset. The expected results of clustered data were known in advance and were used to verify the program s output and theoretical design. Consequently, experiments have been conducted using various sized datasets, from either synthetic or real data, so that performance of the program could be assessed. Performance in both instances was similar, though there have been disparities due to the different nature of the data. Nevertheless, with the appropriate usage of the computing cluster s available resources, combined with the optimal setting of the program s input parameters, the objective has been accomplished. Keywords Markov Cluster Algortihm (MCL), Regularized Markov Algorithm (R-MCL), Big Data, Apache Spark, Distributed Sparse Matrix Multiplication iv
5 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Περίληψη Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Δίπλωμα Μηχανικού Τίτλος: Παράλληλη υλοποίηση του αλγορίθμου MCL με χρήση πόρων του Cloud Άγγελος Καλτσίκης Φεβρουάριος 2017 Η ομαδοποίηση δεδομένων αποτελεί ένα από τα αναπτυσσόμενα πεδία έρευνας στον τομέα της εξόρυξης δεδομένων λόγω της εφαρμογής της σε πληθώρα προβλημάτων. Η εκτεταμένη ανάγκη για ομαδοποίηση σε διάφορες εφαρμογές οδήγησε αναπόφευκτα στη δημιουργία πολλών αλγορίθμων, ο καθένας από τους οποίους έχει σχεδιασθεί με σκοπό να αποδίδει καλύτερα σε συγκεκριμένο τύπο προβλημάτων. Συγκεκριμένα στη Βιοπληροφορική μέσω της ομαδοποίησης οντοτήτων μπορεί να εξαχθούν συμπεράσματα και χρήσιμες γνώσεις. Σε αρκετά προβλήματα Βιοπληροφορικής, οι οντότητες των δεδομένων που εμπλέκονται μπορούν να αναπαρασταθούν αποδοτικά και αποτελεσματικά μέσω γράφων, ως μια συλλογή από κόμβους και ακμές. Ένας από τους πιο γνωστούς αλγορίθμους που χρησιμοποιείται σε τέτοια προβλήματα είναι ο Markov Cluster Algorithm (MCL). Έχουν σχεδιασθεί κάποιες παραλλαγές του αλγορίθμου αυτού (Regularized MCL, Multi-Level Regularized-MCL), με σκοπό την αντιμετώπιση των αδυναμιών του MCL και την περαιτέρω βελτίωσή του. Επιπλέον, η Βιοπληροφορική αποτελεί πλέον μια κατεξοχήν επιστήμη που ασχολείται με σύνολα δεδομένων απαγορευτικά μεγάλα για μεμονωμένα υπολογιστικά συστήματα (Big Data) και επομένως υπάρχει σαφής ανάγκη για αλγορίθμους που έχουν σχεδιασθεί για αυτά, κάτι που δεν ισχύει στους προαναφερόμενους. Οι γράφοι που χρησιμοποιούνται στη Βιοπληροφορική ενώ έχουν μεγάλες διαστάσεις, περιέχουν αριθμό στοιχείων πολύ μικρότερο από ότι ένας πλήρης γράφος με τις διαστάσεις αυτές, και επομένως θεωρούνται αραιοί. Στην παρούσα διπλωματική εργασία επιλέχθηκε η χρήση του οικοσυστήματος του Apache Spark που επιτρέπει την εκμετάλλευση υπολογιστικών πόρων πολλαπλών υπολογιστικών συστημάτων, τα οποία είναι διαθέσιμα επί πληρωμή σε παρόχους Cloud. Στόχος ήταν η ανάπτυξη ενός διανεμημένου προγράμματος που να είναι ικανό να δεχθεί οσοδήποτε μεγάλο γράφο εισόδου, να υλοποιεί τον v
6 αλγόριθμο MCL και να ομαδοποιεί τα στοιχεία του σε ομάδες που μοιράζονται κοινά χαρακτηριστικά. Αν και το Spark είναι κατάλληλο framework για τη διαχείριση μεγάλου όγκου δεδομένων, δεν περιέχει σε ορισμένες λειτουργίες του τις κατάλληλες συναρτήσεις για την εκμετάλλευση του αραιού χαρακτήρα των γράφων. Επομένως, υλοποιήθηκαν οι μέθοδοι που επιτρέπουν την αξιοποίηση των αραιών πινάκων γειτνίασης των γράφων στο διανεμημένο πολλαπλασιασμό πινάκων, που είναι ένα από τα βήματα του MCL. Η κύρια απαίτηση του προγράμματος ήταν η εκτέλεσή του σε εύλογο χρονικό διάστημα, εκμεταλλευόμενο μια πληθώρα συμβατών τερματικών. Εξίσου σημαντική ήταν η εξαγωγή αξιόπιστων αποτελεσμάτων, τα οποία έπρεπε να είναι συγκρίσιμα με τα αποτελέσματα της αρχικής υλοποίησης του MCL. Σημειώνεται πως η φιλικότητα προς το χρήστη ήταν επίσης αναγκαία, ώστε να διευκολυνθεί η χρήση του από όσο το δυνατόν περισσότερα μέλη της ερευνητικής κοινότητας. Το πρόγραμμα παρέχει στο χρήστη τη δυνατότητα επιλογής ανάμεσα στην εκτέλεση των αλγορίθμων MCL και R-MCL με διάφορα ορίσματα εισόδου, προσφέροντας ποικίλες εκδοχές εκτέλεσης. Για την αξιολόγηση του προγράμματος κατά τη διάρκεια της ανάπτυξης, τα αρχικά πειράματα πραγματοποιήθηκαν με πραγματικά δεδομένα μικρής κλίμακας. Τα αποτελέσματα της ομαδοποίησης τους ήταν γνωστά και χρησιμοποιήθηκαν για την επαλήθευση της θεωρητικής σχεδίασης. Στη συνέχεια, εκτελέστηκαν πειράματα με τεχνητά και πραγματικά δεδομένα διαφόρων μεγεθών, έτσι ώστε να αξιολογηθεί η απόδοση του προγράμματος. Και στις δυο περιπτώσεις η απόδοση ήταν παρόμοια, ωστόσο υπήρχαν ανομοιότητες λόγω της διαφορετικής φύσης των δεδομένων. Σε κάθε περίπτωση όμως, με τη σωστή χρήση των διαθέσιμων πόρων του υπολογιστικού cluster και συνδυαστικά με τη βέλτιστη ρύθμιση των παραμέτρων εισόδου του προγράμματος επιτεύχθηκε ο στόχος της διπλωματικής εργασίας. Λέξεις Κλειδιά Markov Cluster Algortihm (MCL), Regularized Markov Algorithm (R-MCL), Big Data, Apache Spark, Διανεμημένος Πολλαπλασιασμός Αραιών Πινάκων vi
7 Ευχαριστίες Θα ήθελα αρχικά να ευχαριστήσω θερμά τον Καθηγητή Περικλή Α. Μήτκα που μου εμπιστεύθηκε την εκπόνηση της διπλωματικής εργασίας, καθώς και για την επιστημονική εποπτεία και καθοδήγηση καθ όλη τη διάρκεια των φοιτητικών μου χρόνων. Ευχαριστώ τον μεταδιδακτορικό ερευνητή Φώτη Ε. Ψωμόπουλο, για την άρτια και άμεση καθοδήγηση, ενθάρρυνση και έμπνευση που μου παρείχε, όχι μόνο όσον αφορά στην εργασία αλλά και σε γενικότερα θέματα της ακαδημαϊκής μου ζωής. Ευχαριστώ επίσης τον υποψήφιο διδάκτορα Αθανάσιο Κιντσάκη, για την πολύτιμη βοήθεια του σε πολλά προβλήματα που προέκυψαν κατά τη διάρκεια της εργασίας αλλά και για την παροχή σημαντικών δεδομένων, καθώς και για την ανταλλαγή απόψεων όσον αφορά το παρόν θέμα. Ακόμα, θα ήθελα να ευχαριστήσω τον Ohad Raviv για την πολύτιμη συνεισφορά του σχετικά με την επίλυση του προβλήματος πολλαπλασιασμού αραιών πινάκων στο οικοσύστημα του Apache Spark και τον Joan André για το project του που ήταν ένα σημαντικός οδηγός για την ανάπτυξη αυτής της διπλωματικής εργασίας. Αξιοσημείωτη ήταν η συμβολή και των Καθηγητών Ανδρέα Συμεωνίδη και Αναστάσιου Ντελόπουλου σε διάφορα θέματα που προέκυψαν κατά την διάρκεια εκπόνησης της εργασίας. Τέλος, οφείλω ένα μεγάλο ευχαριστώ στην οικογένεια, τους φίλους μου και την κοπέλα μου, που με στήριξαν και με βοήθησαν καθ όλη τη διάρκεια της εκπόνησης της διπλωματικής εργασίας αλλά και των σπουδών μου. vii
8 Περιεχόμενα 1 Εισαγωγή Βιοπληροφορική και Θεωρία Γράφων Συνοπτική Περιγραφή του προβλήματος Στόχος της διπλωματικής Μεθοδολογία Διάρθρωση της διπλωματικής Περιγραφή του προβλήματος Θεωρητικό υπόβαθρο Αλγόριθμος BLAST Ομαδοποίηση πρωτεϊνών Clustering πρωτεϊνών μέσω του Markov Cluster Algorithm (MCL) Cloud Computing και Grid Computing Σύντομη Εισαγωγή Πλεονεκτήματα της Διανεμημένης Πληροφορικής (Distributed Computing) Cloud Computing (Υπολογιστική Νέφους/Σύννεφου) Grid Computing (Υπολογιστική Πλέγματος) Cloud Computing vs. Grid Computing Distributed Computing Frameworks Εισαγωγή MPI/OpenMP Apache Hadoop Stack Apache Spark CUDA Επιλογή Κατάλληλου Framework Παραλλαγές MCL από τη Βιβλιογραφία Σύντομη περιγραφή MCL R-MCL (Regularized-MCL algorithm) Multi-Level Regularized MCL Κριτήρια αξιολόγησης του clustering Σύγκριση αλγορίθμων R-MCL vs. MCL MLR-MCL vs. R-MCL vs. MCL viii
9 3.5.3 Επιλογή αλγορίθμων Περιγραφή Μεθοδολογίας Γενική περιγραφή του προγράμματος Αναλυτική περιγραφή του προγράμματος Η είσοδος του προγράμματος Τα βήματα του προγράμματος Έξοδος του προγράμματος - Εγγραφή αποτελεσμάτων στον κύριο κόμβο Βελτιστοποιήσεις Υλοποίηση του R-MCL Χρησιμοποιώντας το Apache Spark στο μέγιστο Η διεπαφή του χρήστη με το πρόγραμμα Πολυπλοκότητα Πολυπλοκότητα αλγορίθμου MCL Πολυπλοκότητα της υλοποίησης μας για τον αλγόριθμο MCL Πολυπλοκότητα της υλοποίησης μας για τον αλγόριθμο R-MCL Αποτελέσματα Εισαγωγή Περιγραφή των Hardware Configurations Επαλήθευση αποτελεσμάτων clustering της υλοποίησης σε SCALA Ομάδα πειραμάτων Α: Επαλήθευση της μεθοδολογίας (τεχνητά πειράματα) Περιγραφή των τεχνητών Dataset Πείραμα Α Πείραμα Α Πείραμα Α Ομάδα πειραμάτων Β: Εφαρμογή σε πραγματικά δεδομένα Περιγραφή των πραγματικών dataset Πείραμα Β Πείραμα Β Πείραμα Β Πείραμα Β Πείραμα Β Πείραμα Β Πείραμα Β ix
10 5.3.9 Πείραμα Β Πείραμα Β Πείραμα Β Συμπεράσματα και μελλοντικές επεκτάσεις Συμπεράσματα Μελλοντικές επεκτάσεις Βιβλιογραφία Παράρτημα Α Οδηγίες εγκατάστασης και χρήσης του προγράμματος Οδηγίες εγκατάστασης Εγκατάσταση της Java και ρύθμιση του JAVA_HOME: Εγκατάσταση του Apache Spark: Εγκατάσταση του Zeppelin Notebook (Προαιρετική): Οδηγίες Εγκατάστασης του προγράμματος Προτεινόμενη Βιβλιογραφία για το Apache Spark Παράρτημα B Αναλυτική περιγραφή των Πραγματικών Dataset st Dataset nd Dataset rd Dataset Παράρτημα Γ Καταγραφή της πίεσης στους κόμβους του Spark cluster Παράρτημα Δ Η έμπνευση πίσω από τη δημιουργία του λογότυπου x
11 Λίστα σχημάτων Σχήμα Τεχνική ευθυγράμμισης δυο ακολουθιών (41)... 7 Σχήμα Ευθυγράμμιση αλληλουχιών μέσω του αλγορίθμου BLAST (41)... 8 Σχήμα Έξοδος του αλγορίθμου BLAST (10)... 9 Σχήμα MCL στην πράξη (33) Σχήμα Αναλυτικό παράδειγμα ομαδοποιήσης μέσω MCL κομμάτι 1 (18) Σχήμα Αναλυτικό παράδειγμα ομαδοποιήσης μέσω MCL κομμάτι 2 (18) Σχήμα Σύστημα που συνδυάζει MPI/OpenMP Σχήμα Οικοσύστημα του Apache Hadoop Σχήμα Οικοσύστημα του Apache Spark Σχήμα Τρόπος λειτουργίας της υποδομής του Apache Spark Σχήμα Τρόποι διαχείρισης του Cluster (Cluster Managers) Σχήμα Σύγκριση αριθμού πυρήνων CPU με GPU Σχήμα Διάγραμμα Ροής Markov Cluster Algorithm Σχήμα Διάγραμμα ροής R-MCL Σχήμα Διάγραμμα λειτουργίας του MLR-MCL Σχήμα Απόδειξη για επιλογή κόμβου-παιδιού για ανάθεση ροής Σχήμα Διάγραμμα ροής προγράμματος MCL Σχήμα Μορφή δεδομένων εξόδου BLAST Σχήμα Μορφή αρχείου εισόδου στην περίπτωση χρήσης της στήλης Identity Σχήμα Μορφή αρχείου εισόδου στην περίπτωση χρήσης της στήλης e-value Σχήμα Διάγραμμα ροής τροποποιημένου MCL για βελτίωση της απόδοσης Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το Matrix-100, , στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη) Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το Matrix-100, , στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη) Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το Matrix-1,000, , στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη) Σχήμα Σύγκριση συνολικού χρόνου εκτέλεσης του MCL για το 3 ο Dataset, στα διαφορετικά Hardware Configurations Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το 3 ο Dataset, στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη).. 82 Σχήμα Σύγκριση συνολικού χρόνου εκτέλεσης του MCL για το 2 ο Dataset, στα διαφορετικά Hardware Configurations Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το 2 ο Dataset, στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη).. 85 Σχήμα Σύγκριση συνολικού χρόνου εκτέλεσης του MCL για το 1 ο Dataset, στα διαφορετικά Hardware Configurations Σχήμα Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL για το 1 ο Dataset, στα διαφορετικά Hardware Configurations (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη).. 87 xi
12 Σχήμα Σύγκριση χρόνου εκτέλεσης για τις επαναλήψεις 0 με 27 του MCL για το 2 ο Dataset, για διαφορετικό αριθμό partition (λογαριθμική κλίμακα με βάση το 10 η χαμηλότερη τιμή είναι καλύτερη) Σχήμα Τιμές ενοικίασης υπολογιστικών πόρων στη DigitalOcean Σχήμα 10-1 User Interface του Apache Spark Σχήμα 10-2 Γραφήματα χρήσης του Master κόμβου στο UI της DigitalOcean Σχήμα 10-3 Γραφήματα χρήσης του Slave 01 κόμβου στο UI της DigitalOcean Σχήμα 10-4 Γραφήματα χρήσης του Slave 02 κόμβου στο UI της DigitalOcean Σχήμα 10-5 Γραφήματα χρήσης του Slave 03 κόμβου στο UI της DigitalOcean Σχήμα 10-6 Γραφήματα χρήσης του Slave 04 κόμβου στο UI της DigitalOcean Σχήμα 10-7 Γραφήματα χρήσης του Slave 05 κόμβου στο UI της DigitalOcean Σχήμα 10-8 Γραφήματα χρήσης του Slave 06 κόμβου στο UI της DigitalOcean Σχήμα 10-9 Γραφήματα χρήσης του Slave 07 κόμβου στο UI της DigitalOcean Σχήμα Γραφήματα χρήσης του Slave 08 κόμβου στο UI της DigitalOcean Σχήμα Γραφήματα χρήσης του Slave 09 κόμβου στο UI της DigitalOcean xii
13 Λίστα πινάκων Πίνακας 2-1 Σύγκριση δυνατών των Distributed Computing Frameworks Πίνακας 3-1 Πραγματικά Dataset που χρησιμοποιήθηκαν για σύγκριση MCL, R-MCL και MLR-MCL Πίνακας 3-2 Σύγκριση R-MCL με MCL Πίνακας 3-3 Αποτελέσματα σύγκρισης των MCL, R-MCL και MLR-MCL Πίνακας 3-4 Σύγκριση στοιχείων MCL, R-MCL και MLR-MCL Πίνακας 4-1 Ορίσματα Εισόδου της υλοποίησης MCL σε SCALA Πίνακας Συνοπτικά στοιχεία των dataset που χρησιμοποιήθηκαν για την επαλήθευση της σωστής λειτουργίας του αλγορίθμου Πίνακας Αποτελέσματα εξαντλητικής σύγκρισης αποτελεσμάτων του αυθεντικού MCL με τον SCALA MCL για διάφορα Dataset Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στον πίνακα Matrix- 100, Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στον πίνακα Matrix- 100, Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στον πίνακα Matrix- 1,000, Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στο 3 ο Dataset Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στο 2 ο Dataset Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στο 1 ο Dataset Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στο 2 ο Dataset για διαφορετικό αριθμό Partition Πίνακας Χρόνος εκτέλεσης (second) κάθε επανάληψης του MCL σε SCALA στο 3 ο Dataset για διαφορετικό αριθμό Partition Πίνακας Αριθμός ομάδων που προκύπτουν με διαφορετικές τιμές αρχικού pruning για κάθε Dataset Πίνακας Χρόνος εκτέλεσης (second) για ολοκλήρωση της εκτέλεσης του προγράμματος για διαφορετικές τιμές αρχικού pruning για το 2 ο και 3 ο Dataset Πίνακας Σύγκριση χρόνου εκτέλεσης για τις επαναλήψεις 4 με 27, για διαφορετικές τιμές blocksize και για τις δυο συναρτήσεις ελέγχου σύγκλισης, για το 2 ο και 3 ο Dataset Πίνακας Σύγκριση χρόνου εκτέλεσης των πρώτων επαναλήψεων (0 με 3) και του συνολικού χρόνου εκτέλεσης για όλες τις επαναλήψεις (0 με 27), για διαφορετικές τιμές blocksize για τη δεύτερη συνάρτηση ελέγχου σύγκλισης για το 2 ο και 3 ο Dataset Πίνακας Σύγκριση χρόνου εκτέλεσης για τις δυο εκδόσεις του R-MCL για το 2 ο και 3 ο Dataset.. 96 Πίνακας Αριθμός ομάδων που προκύπτει για το 1 ο, 2 ο,3 ο Dataset στον R-MCL, MCL (SCALA), MCL Πίνακας Συνολικός χρόνος εκτέλεσης (seconds) για το 2 ο και 3 ο Dataset στον R-MCL και στον MCL (SCALA) Πίνακας Χρόνος εκτέλεσης (seconds) του MCL (SCALA) για κάθε Dataset σε κάθε Hardware Configuration Πίνακας Κόστος ενοικίασης για κάθε Hardware Configuration Πίνακας Συνολικό Κόστος Ανά Πείραμα για κάθε Hardware Configuration Πίνακας 9-1 Αναλυτική περιγραφή στοιχείων του 1 ου Dataset xiii
14 Πίνακας 9-2 Αναλυτική περιγραφή στοιχείων του 2 ου Dataset Πίνακας 9-3 Αναλυτική περιγραφή στοιχείων του 3 ου Dataset Λίστα αλγορίθμων Αλγόριθμος 1 Markov Cluster Algorithm (16) Αλγόριθμος 2 Regularized MCL (16) Αλγόριθμος 3 Multi-level Regularized MCL (16) Αλγόριθμος 4 Προβολή της Ροής (ProjectFlow) (16) Αλγόριθμος 5 Εκκαθάριση διπλότυπων εγγραφών μέσω SPARK API σε SCALA Αλγόριθμος 6 Εκκαθάριση διπλότυπων εγγραφών μέσω Pandas API σε Python Αλγόριθμος 7 Ψευδοκώδικας πολλαπλασιασμού πινάκων τύπου CoordinateMatrix (30) Αλγόριθμος 8 Πολλαπλασιασμός πινάκων τύπου CoordinateMatrix έκδοση 1 (30) Αλγόριθμος 9 Πολλαπλασιασμός πινάκων τύπου CoordinateMatrix έκδοση 2 (31) Λίστα εξισώσεων Εξίσωση 1 Κανονικοποιημένη αποκοπή ενός Cluster C Εξίσωση 2 Κανονικοποιημένη αποκοπή μιας ομαδοποίησης Εξίσωση 3 Βήμα Expand του MCL Εξίσωση 4 Βήμα Inflation του MCL Εξίσωση 5 Βήμα ελέγχου σύγκλισης του MCL Εξίσωση 6 Αραιότητα του Πίνακα (Sparsity) Εξίσωση 7 Ποσοστό επιτυχίας σχεδιασμού των ομάδων του αυθεντικού MCL με τις ομάδες που μένουν μετά την ενέργεια Εξίσωση 8 Συνολικό ποσοστό στοιχείων που βρίσκονται στις σωστές ομάδες σε όλο το Dataset xiv
15 1 Εισαγωγή 1.1 Βιοπληροφορική και Θεωρία Γράφων Με την εξέλιξη της επιστήμης της Βιολογίας και την εξέλιξη της επιστήμης της Πληροφορικής γεννήθηκε η επιστήμη της Βιοπληροφορικής. Αρχικά η Βιοπληροφορική ασχολήθηκε με την μετατροπή και αποθήκευση γενετικής πληροφορίας (DNA, RNA, πρωτεΐνες ) σε ψηφιακή πληροφορία(binary) και στην συνέχεια, με την βοήθεια της επιστήμης των υπολογιστών, των μαθηματικών και άλλων επιστήμων, με την ανάλυση και να διερμηνεία των βιολογικών δεδομένων (1) (2). Για παράδειγμα χρησιμοποιείται για αναλύσεις βιολογικών ακολουθιών χρησιμοποιώντας σαν εργαλεία μαθηματικές και στατιστικές τεχνικές και μεθόδους. Επίσης βρίσκεται πίσω από πολλά ιατρικά μηχανήματα όπως για παράδειγμα τον μαγνητικό τομογράφο και την ρομποτική χειρουργική. Η Θεωρία Γράφων είναι ένα γνωστικό πεδίο των Διακριτών μαθηματικών και ορίζεται ως η μελέτη των γράφων και των σχέσεων τους. Με την χρήση της μπορούν να μοντελοποιηθούν πολλές φυσικές και τεχνολογικές δομές όπως τα δίκτυα υπολογιστών ή ακόμα και οι σχέσεις των χρηστών σε ένα κοινωνικό δίκτυο. Ένας γράφος είναι ένα σύνολο από κόμβους (κορυφές) που ενώνονται μεταξύ τους με ακμές και ορίζεται από τον τρόπο που συνδέονται οι κόμβοι του (3). Ο γράφος αποκαλείται μηκατευθυνόμενος(undirected) αν οι ακμές του δεν προσανατολίζονται, ενώ ο γράφος αποκαλείται κατεθυνόμενος αν οι ακμές προσανατολίζονται από διατεταγμένα ζεύγη κόμβων. Μια ακόμα πληροφορία που ορίζει τον γράφο είναι το βάρος των ακμών του και σε περίπτωση που δίνεται ονομάζεται σταθμισμένος. Επίσης ένας γράφος μπορεί να θεωρηθεί πλήρης σε περίπτωση που κάθε ζεύγος κόμβων περιέχει ακμές, ενώ αντίστροφα μπορεί να θεωρηθεί αραιός αν περιέχει λίγες ακμές. Οι γράφοι μπορούν να χρησιμοποιηθούν και στην Βιοπληροφορική για την αναπαράσταση πολλών διαφορετικών δεδομένων, όπως γράφους αλληλεπιδράσεων μεταξύ πρωτεϊνών και γράφους που απεικονίζουν πρωτεϊνικές αλληλουχίες στον χώρο, και να βοηθήσουν την επίτευξη της σύγκρισης πρωτεϊνικών ακολουθιών, την ανίχνευση των πρωτεϊνικών οικογενειών τους και τον καθορισμό των λειτουργιών τους. Μερικά από τα εργαλεία αυτά παρουσιάζονται και επεκτείνονται στην παρούσα διπλωματική εργασία (3) (4). 1
16 1.2 Συνοπτική Περιγραφή του προβλήματος Η σύγκριση ακολουθιών, που είναι γνωστή και ως ομοιότητα ακολουθιών, χρησιμοποιείται συχνά στην Βιοπληροφορική. Οι ακολουθίες αυτές μπορεί να είναι είτε νουκλεοτιδικές (RNA/DNA) είτε πρωτεϊνικές (αμινοξέα). Με τις συγκρίσεις προκύπτουν οι πρωτεϊνικές οικογένειες και λειτουργίες. Λόγω του μεγάλου μήκους τέτοιων ακολουθιών σε συγκρίσεις μεγάλου όγκου δεδομένων ο χρόνος απόκρισης είναι πάρα πολύ μεγάλος. Για την αντιμετώπιση αυτού του προβλήματος που αποτελούσε τροχοπέδη για την ανάπτυξη του συγκεκριμένου κλάδου της Βιοπληροφορικής έγιναν πολλές προσπάθειες και δόθηκαν πολλές λύσεις. Μια από τις επικρατέστερες ήταν η σύγκριση ακολουθιών σε παράλληλα σύστημα που σε συνδυασμό με την ταυτόχρονη δημιουργία αρχιτεκτονικών που υποστήριζαν την ύπαρξη πολλών πυρήνων σε ένα σύστημα μείωσαν δραματικά τον χρόνο εκτέλεσης αλλά και αυξήσαν κατά πολύ τον όγκο των ακολουθιών που δίνονταν σαν είσοδο στους αλγορίθμους σύγκρισης. Η παρούσα λύση δεν κατάφερε να λύσει το πρόβλημα εντελώς και σε συνδυασμό με την ραγδαία αύξηση των δεδομένων κατά την πάροδο του χρόνου, απέδειξε ότι ένα μεμονωμένο υπολογιστικό σύστημα δεν μπορούσε να ανταποκριθεί σε εύλογο χρονικό διάστημα. Για να αντιμετωπιστεί και αυτό πρόβλημα κρίθηκε απαραίτητη η χρήση πολλών υπολογιστών σε κατανεμημένα περιβάλλοντα ο αριθμός των οποίων μπορεί να επεκταθεί δυναμικά ανάλογα με τους υπολογιστικούς πόρους (resources) που χρειάζεται η κάθε διεργασία. Πλέον υπάρχουν διάφορες αρχιτεκτονικές συστημάτων που επιτρέπουν την χρήση υπολογιστών κατά αυτόν τον τρόπο μερικές από τις οποίες είναι το περιβάλλον Πλέγματος Υπολογιστών (Grid Computing), το περιβάλλον σύννεφου Υπολογιστών (Cloud Computing). 1.3 Στόχος της διπλωματικής Στόχος της παρούσας διπλωματικής είναι η ανάπτυξη ενός προγράμματος το οποίο θα εφαρμόζει τον αλγόριθμο Markov Cluster Algorithm (MCL) και θα εκτελείται σε κατανεμημένο περιβάλλον που επιτρέπει την πολύ εύκολη προσαρμογή των υπολογιστικών πόρων. Θα παρέχει επίσης στον χρήστη τη δυνατότητα, μέσω μιας φιλικής διεπαφής, να ομαδοποιεί τις πρωτεϊνικές ακολουθίες, που έχουν συγκριθεί μέσω του αλγορίθμου BLAST, ακόμα και σε μεγάλο όγκο δεδομένων. Το πρόγραμμα καλείται να παρέχει τη δυνατότητα επιλογής των διαδικασιών που θα εκτελεστούν και να τις εκτελεί αυτοματοποιημένα. Ταυτόχρονα καλείται να μειώσει αισθητά τον απαιτούμενο χρόνο εκτέλεσης τους, καθώς και να έχει την ικανότητα να δεχθεί οσοδήποτε μεγάλο σύνολο δεδομένων. Τέλος πρέπει να παράγει τα αποτελέσματα σε μορφή τέτοια την οποία μπορεί να κατανοήσει ο χρήστης και να εξάγει συμπεράσματα για το κάθε στοιχείο. Συνοψίζοντας η τελική εφαρμογή θα πρέπει να παρέχει τη δυνατότητα εκτέλεσης ενός προγράμματος που θα υλοποιεί τον αλγόριθμο MCL σε πρωτεϊνικές ακολουθίες σε περιβάλλον Cloud και την εξαγωγή αποτελεσμάτων, εύκολα και γρηγορά. 2
17 1.4 Μεθοδολογία Προς επίτευξη του ανωτέρου στόχου η μεθοδολογία που αναπτύχθηκε, δέχεται ως είσοδο συγκεκριμένες παραμέτρους: 1. Ένα αρχείο κειμένου που είναι η έξοδος σύγκρισης πρωτεϊνικών ακολουθιών του προγράμματος BLAST στο οποίο αναγράφονται ανά σειρά οι διαδρομές των γράφων προς εξέταση. Το αρχείο αυτό είναι της μορφής abc δηλαδή περιέχει 3 στήλες, οι πρώτες δυο δηλώνουν τα αναγνωριστικά ID των κόμβων του γράφου και η τρίτη δηλώνει το βάρος της ακμής μεταξύ των κόμβων. Στην περίπτωση που δεν υπάρχει τρίτη στήλη σε κάποια σειρά τότε το βάρος της ακμής αυτής είναι Δίνουμε ένα κατώφλι που το ονομάζουμε epsilon το οποίο παίρνει πραγματικές τιμές στο διάστημα [0, 1). Το κατώφλι αυτό χρησιμοποιείται για την αποκοπή ακμών που έχουν βάρος μικρότερο από την τιμή του. 3. Ορίζει τον Integer αριθμό expandrate και τον Double αριθμό inflationrate. Ο πρώτος δηλώνει τη δύναμη στην οποία θα υψωθεί ο πίνακας, και ο δεύτερος τη δύναμη στην οποία θα υψωθούν τα στοιχεία του πίνακα κατά την εκτέλεση του αλγορίθμου. 4. Επίσης ο χρήστης πρέπει να δηλώσει τον αριθμό των μέγιστων επιτρεπτών επαναλήψεων που θα επιτρέψει στο πρόγραμμα να τρέξει μέσω της μεταβλητής maxiterations που παίρνει τιμές Integer και το αν θέλει να γίνουν re-map και re-index οι κομβόι μέσω της boolean reindexnodes. Η εφαρμογή αποφασίζει τον αριθμό των εργασιών που θα υποβληθούν στο υπολογιστικό cluster (βλ. κεφάλαιο 2.6.4) και εκτελεί την ομαδοποίηση των πρωτεϊνών είτε μέσω του αλγορίθμου MCL (βλ. κεφάλαιο 2.4) είτε μέσω του αλγορίθμου R-MCL (βλ. κεφάλαιο 3.2) κατανεμημένα, καθώς το σύνολο των δεδομένων κατανέμεται στις εργασίες. Το πρόγραμμα παρακολουθεί την εξέλιξη των εργασιών και υποβάλει εκ νέου όσες εργασίες απέτυχαν, φροντίζοντας ώστε να μην υπάρχει απώλεια δεδομένων. Τα αποτελέσματα κατά την εκτέλεση των εργασιών αποθηκεύονται στους πόρους του υπολογιστικού cluster και στο τέλος το πρόγραμμα συλλεγεί τα αποτελέσματα και τα αποθηκεύει στο τερματικό του χρήστη. Για ευκολία σύγκρισης των αποτελεσμάτων με την αυθεντική υλοποίηση του MCL δημιουργήθηκε script για την ταξινόμηση των αποτελεσμάτων με παρόμοιο τρόπο. 3
18 1.5 Διάρθρωση της διπλωματικής Το υπόλοιπο αυτής της διπλωματικής εργασίας οργανώνεται ως εξής: Στο κεφάλαιο 2 παρουσιάζονται το θεωρητικό υπόβαθρο της διπλωματικής εργασίας, οι αλγόριθμοι που χρησιμοποιήθηκαν καθώς και η υποδομή στην οποία αναπτύχθηκε. Στο κεφάλαιο 3 παρουσιάζεται βιβλιογραφία σχετική με άλλους τρόπους αντιμετώπισης του προβλήματος μέχρι τώρα. Στο κεφάλαιο 4 παρουσιάζεται γενικά και αναλυτικά το πρόγραμμα που αναπτύχθηκε, περιγράφεται η είσοδος, η ροή και η έξοδος του προγράμματος, καθώς και η πολυπλοκότητα του. Στο κεφάλαιο 5 παρουσιάζονται τα πειράματα που πραγματοποιήθηκαν. Στο κεφάλαιο 6 παρουσιάζονται τα συμπεράσματα της διπλωματικής εργασίας και οι μελλοντικές επεκτάσεις του προγράμματος. Τέλος ακολουθούν, η βιβλιογραφία που χρησιμοποιήθηκε, το παράρτημα Α όπου δίνονται σαφείς οδηγίες για την εγκατάσταση και χρήση του προγράμματος, το παράρτημα Β που περιγράφει αναλυτικά τα σετ δεδομένων που χρησιμοποιήθηκαν στα πειράματα, το παράρτημα Γ με μετρήσεις της πίεσης του υπολογιστικού cluster και το παράρτημα Δ με την ιδέα πίσω από τη δημιουργία του λογοτύπου της διπλωματικής εργασίας. 4
19 2 Περιγραφή του προβλήματος Ένα από τα συχνότερα προβλήματα που αντιμετωπίζει η Βιοπληροφορική, είναι ο καθορισμός της λειτουργίας άγνωστων πρωτεϊνών. Αυτό το επιτυγχάνεται μέσω της συσχέτισης τους με πρωτεΐνες των οποίων η λειτουργία είναι σαφώς ορισμένη. Πρωτεΐνες που είναι λειτουργικά ή εξελικτικά εξαρτημένες, συνήθως συμμετέχουν σε κοινό μεταβολικό μονοπάτι, βιολογική διεργασία ή φυσιολογική λειτουργία, και συχνά παρουσιάζουν ομόλογα στο ίδιο υποσύνολο οργανισμών. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορεί να επιτευχθεί ο συσχετισμός μεταξύ πρωτεϊνών. Στην παρούσα διπλωματική θα συναντήσουμε: τον σχηματισμό οικογενειών πρωτεϊνών (clustering) βασισμένο στην ομοιότητα των αμινοξεϊκών ακολουθιών των πρωτεϊνών Στην συνέχεια θα εξετάσουμε με περισσότερη λεπτομέρεια τα εργαλεία που χρησιμοποιούνται για την ανάπτυξη αυτών των μεθόδων. 2.1 Θεωρητικό υπόβαθρο Για την καλύτερη κατανόηση του προβλήματος ο αναγνώστης πρέπει να εξοικειωθεί με βασικές έννοιες της θεωρίας των γράφων. Τα τελευταία χρόνια, η χρήση των γράφων έχει αποκτήσει δημοτικότητα στην αναγνώριση προτύπων (pattern recognition) και την μηχανική εκμάθηση (machine learning). Το κύριο πλεονέκτημα των γράφων είναι ότι προσφέρουν ένα ισχυρό μέσο για να εκπροσωπήσουμε δομημένα δεδομένα. Η θεωρία γράφων χρησιμοποιείται για την αντιμετώπιση του προβλήματος αναγνώρισης γραφικών συμβόλων, αναγνώριση χαρακτήρων, βιομετρικής πιστοποίησης προσώπου, δακτυλικών αποτυπωμάτων, συσχέτισης κοινωνικών δικτύων, την εξόρυξη δεδομένων, στην παρουσίαση βιολογικών δεδομένων κ.α.. Η διαδικασία αποτίμησης της δομικής ομοιότητας των γράφων αναφέρεται κοινώς ως ταίριασμα γράφων (graph matching) και έχει προταθεί μια μεγάλη ποικιλία μεθόδων για την αντιμετώπιση ειδικών εφαρμογών όπως αυτά που αναφέρθηκαν παραπάνω. Γενικά το ταίριασμα γράφων μπορεί να χωριστεί σε δύο δομές: τη δομή όπου δύο γράφοι ταιριάζουν με απόλυτη ταύτιση, και τη δομή στην οποία δύο γράφοι ταιριάζουν εισάγοντας μια ανοχή σφάλματος (error tolerance). Αν και η πρώτη φαινομενικά φαίνεται πιο σωστή, στην πραγματικότητα λαμβάνει χώρα μόνο σε ένα περιορισμένο σύνολο προβλημάτων του πραγματικού κόσμου. Αντίθετα, η δεύτερη δομή της ανοχής, είναι σε θέση να αντιμετωπίσει προβλήματα με ισχυρή εσωτερική παραμόρφωση της εκάστοτε δομής, πράγμα συχνό στον πραγματικό κόσμο. Μια άλλη προσέγγιση για την ταύτιση δύο γράφων, είναι η απόσταση διόρθωσης (edit distance) η οποία θεωρεί πως δύο γράφοι μπορούν να ταυτιστούν αν πρώτα γίνει ένας αριθμός διορθώσεων (εισαγωγή/διαγραφή/τροποποίηση κόμβων ή ακμών). Η εφαρμογή του ταιριάσματος ανοχής με την χρήση απόσταση διόρθωσης απαιτεί την κατάλληλη προσέγγιση του κόστους των διορθώσεων. Όσων αφορά την αναπαράσταση ενός γράφου υπάρχουν τρία βασικά χαρακτηριστικά. Πρώτον, αν έχουν επιπλέον πληροφορίες (ετικέτες) οι κόμβοι και οι ακμές, δεύτερον αν οι συνδέσεις των κόμβων μέσω ακμών είναι κατευθυνόμενες (έχουν συγκεκριμένη φορά) ή αν είναι μη κατευθυνόμενες (αμφίδρομες) και τρίτον αν ορίζεται το βάρος των ακμών του που τότε ονομάζεται σταθμισμένος. Επίσης ένας γράφος 5
20 μπορεί να θεωρηθεί πλήρης σε περίπτωση που κάθε ζεύγος κόμβων περιέχει ακμές, ενώ αντίστροφα μπορεί να θεωρηθεί αραιός αν περιέχει λίγες ακμές. Στην παρούσα διπλωματική η αναπαράσταση κάθε γράφου θα είναι μη-κατευθυνόμενοι γράφοι με ετικέτες στους κόμβους και τις ακμές. Ορισμός 1. Γράφος: Λαμβάνοντας ένα αλφάβητο ετικετών (Labels) κόμβων L V και ένα αλφάβητο ετικετών ακμών L E, ορίζουμε έναν κατευθυνόμενο γράφο με την πλειάδα τεσσάρων συμβόλων g = (V, E, μ, v) όπου: V ορίζει ένα πεπερασμένο σύνολο κόμβων (Vertex) Ε ορίζει ένα πεπερασμένο σύνολο ακμών (Edge) μ: V L V ορίζει μια συνάρτηση ετικετών κόμβων v: E L E ορίζει μια συνάρτηση ετικετών κόμβων Το σύνολο V μπορεί να θεωρηθεί ως ένα σύνολο αναγνωριστικών (ID) του κάθε κόμβου και συχνά επιλέγεται, ώστε να είναι ίσο με V = {1,..., V }. Ενώ το σύνολο V καθορίζει τους κόμβους, το σύνολο των ακμών E αντιπροσωπεύει τη δομή του γραφήματος. Δηλαδή, ένας κόμβος u V είναι συνδεδεμένος σε έναν κόμβο w V με μια ακμή e = (u, w) αν (u, w) E. Αν e 1 = (u, w) και e 2 = (w, u) / e 1, e 2 E, στους κατευθυνόμενους γράφους ισχύει ότι e 1 e 2, ενώ στους μη κατευθυνόμενους e 1 = e 2.Οι συναρτήσεις ετικετών και κόμβων, μπορούν να χρησιμοποιηθούν για να ενσωματώσουν πληροφορίες σχετικά με τους κόμβους και τις ακμές εκχωρώντας χαρακτηριστικά από τα αλφάβητα L V και L Ε στους κόμβους και τις ακμές αντίστοιχα. Συνήθως, δεν υπάρχουν περιορισμοί που επιβάλλονται στα αλφάβητα ετικετών. Σε πρακτικές εφαρμογές, ωστόσο, τα αλφάβητα L συχνά ορίζονται ως διανυσματικοί χώροι σταθερής διάστασης, L = R k, ή διακριτά σύνολα συμβόλων, L = {s 1,..., s k}. Στην περίπτωση των γράφων χωρίς χαρακτηριστικά, τα αλφάβητα ετικετών κόμβων και ακμών ορίζονται ως L V = L E = { }, έτσι ώστε κάθε κόμβος και κάθε ακμή παίρνουν την κενή (null) ετικέτα. Το άδειο γράφημα ορίζεται από g ε = (,, μ ε, ν ε). Σε ορισμένες εφαρμογές είναι σημαντικό να ανιχνεύσουμε αν ένας μικρότερος γράφος υπάρχει σε έναν μεγαλύτερο γράφο. Αυτό οδηγεί διαισθητικά στον επόμενο ορισμό της υπογράφου. Ορισμός 2. Υπογράφος: Έστω δύο γράφοι g 1 = (V 1, E 1, μ 1, ν 1) και g 2 = (V 2, E 2, μ 2, ν 2). Ο γράφος g 1 είναι υπογράφος του g 2 και συμβολίζεται ως g 1 g 2, αν: V 1 V 2 Ε 1 = E 2 (V 1 V 2) μ 1(u) = μ 2(u) για όλα τα u V 1 ν 1(u, v) = ν 2(u, v) για όλα τα (u, v) E 1 Αντιστρόφως, ο γράφος g 2 ονομάζεται υπεργράφος του g 1 αν ο τελευταίος είναι υπογράφος του πρώτου (5). 6
21 2.2 Αλγόριθμος BLAST Η σύγκριση των αλληλουχιών πρωτεϊνών που ανακαλύφθηκαν πρόσφατα, με βάσεις που περιλαμβάνουν αλληλουχίες πρωτεϊνών που είναι ήδη γνωστές (sequence similarity), είναι το πρώτο βήμα για την σύναψη σχέσεων, λειτουργικών και εξελικτικών, στις νέες πρωτεΐνες. Κάτι τέτοιο είναι φυσικά υπολογιστικά πολύπλοκο και χρονοβόρο και για αυτό το λόγο έχουν σχεδιαστεί κατάλληλα εργαλεία (6). Το πλέον διαδεδομένο και ευρέως χρησιμοποιούμενο εργαλείο είναι το BLAST - Basic Local Alignment Search Tool. Το BLAST ευθυγραμμίζει και συγκρίνει (alignment and comparison) μια ή περισσότερες αλληλουχίες προς εξέταση με μια βάση αλληλουχιών. Πριν τον BLAST, οι αλγόριθμοι ευθυγράμμισης χρησιμοποιούσαν τεχνικές δυναμικού προγραμματισμού με αποτέλεσμα να είναι ακριβοί υπολογιστικά και χρονικά, όπως οι αλγόριθμοι των Needleman-Wunsch και Smith-Waterman (7). Περιληπτικά, ο τρόπος που λειτουργούν οι τεχνικές ευθυγράμμισης είναι ότι συγκρίνουν τα κληρονομικά υπόλοιπα (γράμματα της ακολουθίας ή residues) των ευθυγραμμισμένων αλληλουχιών μεταξύ τους, και ανάλογα με το αν βρεθεί αντιστοιχία, αναντιστοιχία ή έλλειψη γράμματος (gap) σε μια από τις δύο αλληλουχίες, προσθέτουν ή αφαιρούν βαθμούς στο συνολικό σκορ τις σύγκρισης. Αν το σκορ τις σύγκρισης είναι αξιόλογο, τότε θεωρούν ότι έχει βρεθεί αντιστοιχία (hit) ανάμεσα στις δύο αλληλουχίες (Σχήμα 2.2-1). Σχήμα Τεχνική ευθυγράμμισης δυο ακολουθιών (41) Ο αλγόριθμος BLAST αυξάνει την ταχύτητα ευθυγράμμισης μειώνοντας τον αριθμό των αναζητήσεων και τον χώρο αναζήτησης. Αντί να συγκρίνει ολόκληρες τις αλληλουχίες μεταξύ τους χρησιμοποιεί μικρές λέξεις (words) υπο-αλληλουχιών. Ο χρήστης έχει τη δυνατότητα να ορίσει το μέγεθος των λέξεων αυτών (w), και τρία σκορ (threshold - T, cutoff score - S, lower threshold score X) (8). Ο αλγόριθμος φτιάχνει μια λίστα όλων των πιθανών λέξεων (words) μεγέθους w, τα οποία έχουν ένα σκορ ομοιότητας μεγαλύτερο από Τ με τις λέξεις μεγέθους w της υπό εξέτασης ακολουθίας (query sequence). Αυτές οι λέξεις ονομάζονται neighborhood words. Στην συνέχεια ευθυγραμμίζει κάθε 7
22 αλληλουχία της βάσης με κάθε neighborhood word. Αν η ευθυγράμμιση ενός neighborhood word με μια περιοχή μιας αλληλουχίας βάσης θεωρηθεί σημαντική, τότε δίνει έναυσμα στο να ξεκινήσει τοπική ευθυγράμμιση ανάμεσα στην αλληλουχία υπό εξέταση και την αλληλουχία της βάσης. Η ευθυγράμμιση επεκτείνεται ώστε να περιλαμβάνει ολόκληρη την αλληλουχία υπό εξέταση. Αν η δεύτερη ευθυγράμμιση πετύχει σκορ μεγαλύτερο από S, τότε η σύγκριση θεωρείται επιτυχής και ο αλγόριθμος θεωρεί ότι είναι πιθανό να υπάρχει ομολογία ανάμεσα στις δύο αλληλουχίες. Αν το σκορ πέσει κάτω από την τιμή Χ, τότε η συγκεκριμένη αναζήτηση σταματάει (9)(Σχήμα 2.2-2). Σχήμα Ευθυγράμμιση αλληλουχιών μέσω του αλγορίθμου BLAST (41) Δεδομένου ότι απαιτεί την ευθυγράμμιση μεταξύ ενός αριθμού λέξεων που υπερβαίνουν ένα κατώφλι T για να επεκτείνει την ευθυγράμμιση, ο αλγόριθμος BLAST έχει ως αποτέλεσμα να χρειάζονται λιγότερες συγκρίσεις, μειώνοντας έτσι τον χρόνο αναζήτησης. Οι παράμετροι w, T, S, X καθορίζουν την ταχύτητα και την ευαισθησία της αναζήτησης. Ο αλγόριθμος BLAST δέχεται ως είσοδο αρχεία FASTA, και έχει τη δυνατότητα να παρέχει την έξοδο του σε διάφορες μορφές (HTML, txt, κτλ). Η μορφή εξόδου που χρησιμοποιείται στην παρούσα διπλωματική εργασία παρουσιάζεται στο σχήμα (10). 8
23 Σχήμα Έξοδος του αλγορίθμου BLAST (10) Όπως βλέπουμε παρέχονται διάφορες πληροφορίες για την κάθε ευθυγράμμιση. Θα εστιάσουμε την προσοχή μας σε δύο δείκτες, το identity και το e-value. Ο δείκτης identity μας πληροφορεί για το κατά πόσο δύο αλληλουχίες έχουν τα ίδια γράμματα στο ίδιο σημείο, και δίνεται συνήθως ως ποσοστό. Όσο μεγαλύτερος είναι ο δείκτης, τόσο περισσότερο μοιάζουν οι δύο αλληλουχίες που συγκρίνονται Ωστόσο, χρήση του identity θέλει προσοχή καθώς για αλληλουχίες με μέγεθος μεγαλύτερο από 100 γράμματα περίπου, είναι πιθανό δύο ασυσχέτιστες βιολογικά αλληλουχίες να έχουν καλό δείκτη identity. Ο δείκτης e-value είναι ένα μέτρο της στατιστικής σημασίας της κάθε ευθυγράμμισης. Δείχνει τον αριθμό των επιτυχημένων αναζητήσεων (hits) που θα περίμενε να δει κανείς τυχαία σε μια συγκεκριμένη βάση αλληλουχιών. Όσο μικρότερο είναι το e-value τόσο πιο σημαντική θεωρείται η ευθυγράμμιση. Δεδομένου ότι είναι στατιστικό μέτρο χρησιμοποιείται κυρίως ως κατώφλι στις αναζητήσεις. Ο αλγόριθμος BLAST και η είσοδος του έχουν τέτοια μορφή που τον καθιστούν εξαιρετικά παραλληλοποιήσιμο αλγόριθμο (embarrassingly parallel). Ως εκ τούτου έχουν αναπτυχθεί παραλλαγές του BLAST ώστε να εκτελείται παράλληλα μέσω MPI, CUDA κ.α. (10). 9
24 2.3 Ομαδοποίηση πρωτεϊνών Για την εξαγωγή κάποιων σημαντικών συμπερασμάτων, οι πρωτεΐνες που έχουν άγνωστη λειτουργία ομαδοποιούνται με πρωτεΐνες των οποίων οι ιδιότητες και οι λειτουργίες είναι γνωστές. Σε προβλήματα όπως οι αλληλεπιδράσεις πρωτεϊνών σε γονίδια, όπου εκατοντάδες ή χιλιάδες πρωτεΐνες είναι συνδεμένες η μια με την άλλη, τα δεδομένα συνήθως αναπαρίστανται ως μεγάλα δίκτυα ή γράφοι. Εφόσον οι πρωτεΐνες τείνουν να συμπεριφέρονται ως ομάδες ένας σημαντικός στόχος είναι η αξιόπιστη εύρεση των ομάδων που ανήκουν οι πρωτεΐνες ενός γράφου. Η γενική διαδικασία ενός αλγορίθμου για την επίλυση αυτού το προβλήματος είναι ο έλεγχος για περιοχές όπου οι πρωτεΐνες είναι πυκνά συνδεδεμένες μεταξύ τους. Έχουν αναπτυχθεί πληθώρα αλγορίθμων που δίνει απάντηση σε αυτό το πρόβλημα, πολλοί από τους οποίους έχουν σχεδιαστεί έτσι ώστε να αποδίδουν τα μέγιστα σε συγκεκριμένο τύπο δεδομένων. Για την ομαδοποίηση πρωτεϊνών συγκεκριμένα ένας από τους πιο διαδεδομένους αλγορίθμους είναι ο Makrov Cluster Algorithm (MCL) ο οποίος έχει αποδειχθεί αρκετά πιο επιτυχημένος και καλύτερος σε σχέση με αρκετούς άλλους αλγορίθμους που είχαν σχεδιασθεί ειδικά για την ομαδοποίηση γράφων πρωτεϊνών (11). Επίσης υπάρχει ένας καινοτόμος αλγόριθμος, ο Affinity Propagation (AP), που έχει αρκετές προοπτικές και έχει αποδειχθεί αρκετά ταχύτερος σε μια ποικιλία προβλημάτων. Έπειτα από εκτενή ερευνά, πολλές δοκιμές και πειράματα που διεξήχθησαν σε μια πληθώρα δεδομένων που περιείχαν 408 αλληλουχίες πρωτεϊνών βγήκε το συμπέρασμα πως ο MCL είναι αρκετά πιο ανθεκτικός στον θόρυβο και συμπεριφέρεται πιο στιβαρά σε σχέση με τον AP αλγόριθμο (12). Το πλεονέκτημα του MCL είναι δραματικό σε μη-σταθμισμένους γράφους μιας και ο AP αντιμετώπιζε σημαντικά προβλήματα στην σύγκλιση στην πλειοψηφία των προβλημάτων για μη-σταθμισμένους γράφους της ερευνάς ενώ επίσης ο MCL ομαδοποιούσε τις πρωτεΐνες σε πιο λογικές οικογένειες αν και ο αριθμός των οικογενειών αυτών μειωνόταν όσο ο θόρυβος στον γράφο αυξανόταν. Για τους παραπάνω λογούς επιλέχθηκε η χρήση και η εφαρμογή του MCL για την ομαδοποίηση των πρωτεϊνών που ήταν το αρχικό πρόβλημα το οποίο προσπαθεί να λύσει η παρούσα διπλωματική εργασία (12). 10
25 2.4 Clustering πρωτεϊνών μέσω του Markov Cluster Algorithm (MCL) Δύο διαδεδομένες μέθοδοι για να συσχετιστούν μεταξύ τους πρωτεΐνες, είναι να ομαδοποιηθούν με βάση: Τα αποτελέσματα της σύγκρισης των πρωτεϊνικών τους ακολουθιών (identity ή e-value). Τα φυλογενετικά προφίλ τους. Στην συνέχεια παρουσιάζεται ένας αλγόριθμος για ομαδοποίηση (clustering) των αποτελεσμάτων της σύγκρισης των πρωτεϊνικών ακολουθιών βάση της στήλης identity αλλά εύκολα μπορεί να επεκταθεί και στις άλλες δυο μεθόδους συσχέτισης μεταξύ πρωτεϊνών. Ο αλγόριθμος MCL είναι ένας γρήγορος και αρκετά scalable αλγόριθμος ομαδοποίησης γράφων ο οποίος βασίζεται στην λειτουργία της προσομοίωσης της στοχαστικής ροής (simulation of stochastic flow) σε γράφους. Δημιουργήθηκε από τον Stijn van Dongen στο Centre for Mathematics and Computer Science (γνωστό και ως CWI) στην Ολλανδία (13). Ο MCL είναι σχεδιασμένος έτσι ώστε προσπελαύνει απλούς ή σταθμισμένους γράφους μέσω τυχαίων περιπάτων ή προσπελάσεων και να βρίσκει στο γράφο φυσικές συστάδες (ομάδες) που περιλαμβάνουν πολλές ακμές αναμεσά στους κόμβους τους. Αυτό συμβαίνει διότι οι τυχαίες προσπελάσεις οδηγούν συχνά σε κόμβους της ίδιας ομάδας ενώ όχι τόσο συχνά σε κόμβους άλλης ομάδας. Ο αλγόριθμος χρησιμοποιεί μορφή στοχαστικών πινάκων κατά στήλη ή αλλιώς πινάκων Markov που καταλαβαίνουν την μαθηματική έννοια των τυχαίων περιπάτων μέσα σε ένα γράφο (14). Ορισμός 3. Column Stochastic Matrix Ένας Στοχαστικός Πίνακας κατά Στήλη ( Column Stochastic Matrix CSM ) είναι ένας μη-αρνητικός πίνακας όπου η κάθε στήλη του έχει άθροισμα που ισούται με 1. Η βασική αρχή του αλγορίθμου είναι οι τυχαίοι περίπατοι μέσα στους κόμβους του γράφου, μια αρχή που χρησιμοποιείται και από άλλους αλγορίθμους ομαδοποίησης και τείνει να είναι λιγότερο ευαίσθητη σε αλλαγές στους κόμβους, σε σχέση με την απλή εύρεση κλικών στους γράφους. Για τον υπολογισμό αυτών των τυχαίων περιπάτων χρησιμοποιούνται οι αλυσίδες Markov (Markov Chains). Ο αλγόριθμος MCL δέχεται σαν είσοδο τον πίνακα γειτνίασης του γράφου (adjacency matrix) και στην συνέχεια τον προ-επεξεργάζεται έτσι ώστε να τον κάνει κατάλληλο για την είσοδο του στο κύριο κομμάτι του αλγορίθμου. Όταν ο πίνακας μετά από κάποιες πράξεις γίνει κατάλληλος, τότε μπαίνει σαν είσοδο στο κύριο κομμάτι του αλγορίθμου, το οποίο είναι επαναληπτικό, και χρησιμοποιείται, είτε μέχρι ο αλγόριθμος να κρίνει ότι συγκλίνει, είτε μέχρι να συμπληρωθεί ο μέγιστος επιτρεπτός αριθμός επαναλήψεων, που έχει οριστεί από τον χρήστη. Κατά την πάροδο του χρόνου, ο αλγόριθμος επηρεάζει τον πίνακα γειτνίασης, βασιζόμενος στην βασική αρχή του κεντρικού καπιταλισμού Ο πλούσιος γίνεται πλουσιότερος, και ο φτωχός γίνεται φτωχότερος. Αποτέλεσμα είναι, οι πιο ισχυροί γείτονες να γίνονται ισχυρότεροι και οι όχι τόσο ισχυροί γείτονες να υποβιβάζονται όλο και περισσότερο κατά την πάροδο των επαναλήψεων. Αυτό είναι μια επιθυμητή ιδιότητα του αλγορίθμου, αν αναλογιστεί κάνεις, 11
26 πως ο αλγόριθμος πρέπει να βγάλει ως αποτέλεσμα διακριτές ομάδες πρωτεϊνών κατά την σύγκλιση του (14) (15). Έπειτα από την σύντομη περιγραφή των ιδιοτήτων του αλγορίθμου ακολουθεί η γενική ροή και οι λειτουργίες που χρησιμοποιεί ο αλγόριθμος MCL καθώς και η επιρροή της κάθε μεταβλητής στο τελικό αποτέλεσμα της ομαδοποίησης. 1. Είσοδος του μη-κατευθυνόμενου γράφου, της παραμέτρου e για τον πολλαπλασιασμό των πινάκων (expand) και της παραμέτρου για την ύψωση σε δύναμη κάθε στοιχείου του πίνακα (inflation) r. 2. Δημιουργία του πίνακα συσχέτισης για το γράφο. 3. Προσθήκη self-loops σε κάθε κόμβο (προαιρετικό). 4. Κανονικοποίηση του πίνακα κατά στήλη ώστε να γίνει στοχαστικός κατά στήλη. 5. Διαγραφή των τιμών που βρίσκονται κάτω από ένα threshold που έχει ορίσει ο χρήστης και Κανονικοποίηση του καινούργιου πίνακα ξανά (προαιρετικό). Κύριο και επαναληπτικό κομμάτι του αλγορίθμου: 6. Πολλαπλασιασμός του πίνακα συσχέτισης που έχει προκύψει στα παραπάνω βήματα με τον εαυτό του e-1 φορές. Η συγκεκριμένη λειτουργία είναι ουσιαστικά η ύψωση του πίνακα στη δύναμη e (Expand). 7. Ο πίνακας που προκύπτει μετρά τον πολλαπλασιασμό πινάκων είναι στοχαστικός και το κάθε στοιχείο του πίνακα υψώνεται στη δύναμη r (Inflate). 8. Κανονικοποίηση του πίνακα κατά στήλη και έλεγχος για σύγκλιση του αλγορίθμου σε σταθερή κατάσταση. Σε περίπτωση που δεν έχουμε φτάσει σε σταθερή κατάσταση επανάληψη των 5 και 6 (Έλεγχος Σύγκλισης). 9. Εφόσον έχουμε φτάσει σε σύγκλιση του αλγορίθμου σταματάει το επαναληπτικό κομμάτι του αλγορίθμου και διερμηνεύουμε τον τελευταίο πίνακα βρίσκοντας τις ομάδες των πρωτεϊνών. Αν και η σύγκλιση του αλγορίθμου, δεν έχει αποδειχθεί στην εργασία του δημιουργού του αλγορίθμου, έχει αποδειχθεί από διαφορά πειράματα, πως συνήθως επιτυγχάνεται και μάλιστα σε όχι πολύ μεγάλο αριθμό επαναλήψεων (10<x<100). Για την ακρίβεια σχεδόν πάντα υπάρχει σύγκλιση του αλγορίθμου με αποτέλεσμα ένα διπλά ταυτόσημο πίνακα. Επίσης έχει δειχθεί πως σε περίπτωση που ο πίνακας συσχέτισης τείνει να γίνει διπλά ταυτόσημος, τότε αυτός συγκλίνει τετραγωνικά (17). Ορισμός 4. Ταυτόσημος Πίνακας: Βρίσκεται σε σταθερή κατάσταση και κάθε τιμή σε μια στήλη έχει την ιδιά τιμή (ομογενής). 12
27 Για τη διερμηνεία του πίνακα γειτνίασης και την εύρεση των ομάδων υπάρχουν δύο ορισμοί. Τις κορυφές που λειτουργούν σαν μαγνήτες (attractors) και τις κορυφές που μαγνητίζονται από τις κορυφές μαγνήτες. Στη σταθερή κατάσταση κάθε κορυφή μαγνήτης έχει τουλάχιστον μια θετική τιμή στην συγκεκριμένη γραμμή του πίνακα. Η κορυφή αυτή μαγνητίζει τις κορυφές που έχουν θετικές τιμές στην ίδια γραμμή του πίνακα που βρίσκεται και αυτή. Η κορυφή μαγνήτης μαζί με τις κορυφές που έχει μαγνητίσει αποτελούν μια ομάδα. Υπάρχει μια μικρή πιθανότητα να υπάρχουν παραπάνω από μια ομάδες που να περιέχουν τον ίδιο κόμβο και αυτό συμβαίνει μόνο σε ειδικές περίπτωσης που ο γράφος είναι συμμετρικός. Για την ακρίβεια, για να συμβεί αυτό πρέπει η κορυφή να μαγνητίζεται με το ίδιο βάρος σε παραπάνω από μια ομάδα και οι ομάδες που υπάρχει η ίδια κορυφή να είναι ισομορφικές (13). H αλλαγή της τιμής r, που είναι η μεταβλητή σχετική με το inflation, επηρεάζει τη διακριτότητα των ομάδων, που προκύπτουν από τον αλγόριθμο και πολλές φορές η αλλαγή της μεταβλητής αυτής δίνει τα επιθυμητά αποτελέσματα. Η τιμή, η οποία είναι σαν προεπιλογή στην υλοποίηση του κ. Stijn van Dongen, είναι το 2.0. Στο σχήμα βλέπουμε τον MCL στην πράξη. Σχήμα MCL στην πράξη (33) 13
28 Και για ακόμα καλύτερη κατανόηση της λειτουργίας και της χρήσης του αλγορίθμου βλέπουμε το Σχήμα και που μας δείχνει την λειτουργία του ακόμη πιο αναλυτικά. Σχήμα Αναλυτικό παράδειγμα ομαδοποιήσης μέσω MCL κομμάτι 1 (18) 14
29 Σχήμα Αναλυτικό παράδειγμα ομαδοποιήσης μέσω MCL κομμάτι 2 (18) 15
30 2.5 Cloud Computing και Grid Computing Σύντομη Εισαγωγή Το Cloud computing και το Grid computing είναι δύο σχετικά νέες ιδέες στον τομέα των υπολογιστών συχνά συγχέονται, στην πραγματικότητα όμως δεν είναι ίδια. Και τα δυο είναι δίκτυα τα οποία αποχωρίζουν τα διάφορα υπολογίστηκα καθήκοντα. Αν και είναι σχετικά φιλικά και απλά προς τον χρήστη και τα δυο, δεν είναι καθόλου απλά αλλά ίσα ίσα αρκετά σύνθετα για τη δημιουργία τους και για την συντήρηση τους. Η ιδέα είναι να κάνουν το σύστημα εύκολο για τον τελικό χρήστη, αξιοποιώντας όμως τα πλεονεκτήματα μιας πιο συνθέτης δομής. Αν και υπάρχουν διαφορές στις βασικές αρχές του Grid και Cloud computing, αυτό δεν σημαίνει, πως η ύπαρξη του ενός αποκλείει το άλλο. Για παράδειγμα, είναι πιθανό να υπάρχει ένα cloud, σε ένα υπολογιστικό grid, όπως είναι πιθανό, να έχει ένα υπολογιστικό grid μέσα σε ένα cloud (19) Πλεονεκτήματα της Διανεμημένης Πληροφορικής (Distributed Computing) Το distributed computing υφίσταται, όταν τα στοιχεία του δικτύου είναι κατανεμημένα σε μια μεγάλη γεωγραφική περιοχή. Και οι δυο αρχιτεκτονικές υπολογιστικών δικτύων, που αναφέραμε, είναι λαμπρά παράδειγμα τέτοιων διανεμημένων αρχιτεκτονικών, αλλά δεν είναι οι μοναδικές. Το βασικό πλεονέκτημα ενός τέτοιου περιβάλλοντος είναι, ότι σου δίνει τη δυνατότητα, να χρησιμοποιήσεις κάποιους συγκεκριμένους πόρους μέσω μόνο μιας συγκεκριμένης διεπαφής. Στο Cloud, για παράδειγμα, συνήθως υπάρχουν πολλοί server που εκτελούν άριστα ένα συγκεκριμένο έργο και ο χρήστης μπορεί να τους χρησιμοποιήσει, για την εκτέλεση ενός πιο συνθέτου έργου, που αποτελείται από πολλές πιο απλές εργασίες. Το κάθε υπολογιστικό στοιχείο, που βρίσκεται στο διανεμημένο σύστημα, έχει τα δικά του απαραίτητα στοιχεία, όπως τον κατάλληλο χώρο, το φυσικό σύστημα ασφαλείας καθώς και την τακτική συντήρηση. Όπως είναι προφανές εφόσον τα υπολογιστικά συστήματα είναι μοιρασμένα σε διαφορά μέρη και τα κόστη μοιράζονται ανάλογα (19) Cloud Computing (Υπολογιστική Νέφους/Σύννεφου) Το Cloud Computing είναι μια επέκταση της ιδέας του αντικειμενοστραφούς προγραμματισμού, σχετικά με την αφαίρεση στοιχείων, από κάτι σύνθετο έως ότου γίνει τελείως απλό και βασικό το σύστημα αυτό. Συγκεκριμένα, η αφαίρεση συμβαίνει σε όλα τα σύνθετα λειτουργικά στοιχεία, κρύβοντας τα πίσω από μια διεπαφή, που δέχεται κάποια είσοδο και βγάζει κάποια έξοδο, χωρίς να δίνει περαιτέρω πληροφορίες στον χρήστη, για το τι συμβαίνει πίσω από αυτή τη διεπαφή. Όπως σε ένα αυτοκίνητο, τον οδηγό όταν στριβεί τους τροχούς δεν τον ενδιαφέρουν οι λεπτομέρειες σχετικά με το πώς το αντιλαμβάνεται ο εγκέφαλος του αυτοκινήτου, έτσι και στο Cloud ο χρήστης δεν ενδιαφέρεται, για το αν τα δεδομένα του βρίσκονται χωρισμένα σε κομμάτια σε διαφορετικούς server, για τις συνδέσεις μεταξύ των κόμβων του δικτύου του Cloud, αρκεί να μπορεί να έχει πρόσβαση στα δεδομένα του την στιγμή που θα τα χρειάζεται. Το Cloud Computing βασίζεται αρκετά πάνω στην ιδιότητα των Unix λειτουργικών συστημάτων, να χρησιμοποιούν πολλαπλά υπολογιστικά συστήματα, τα οποία είναι καταλληλά το καθένα για μια συγκεκριμένη εργασία, αποκεντρώνοντας το πρόβλημα, από έναν κεντρικό υπολογιστή σε πολλούς μικρότερους, βελτιώνοντας την απόδοση δραματικά (19). 16
31 2.5.4 Grid Computing (Υπολογιστική Πλέγματος) To Grid Computing εκμεταλλεύεται την υπολογιστική ισχύ, που δεν χρησιμοποιείται από διάφορες υπολογιστικές μονάδες, έτσι ώστε να εκτελέσει μία συγκεκριμένη εργασία. Η εργασία που του ανατίθεται, ελέγχεται από έναν κεντρικό υπολογιστή και συνήθως χωρίζεται σε πολλές μικρότερες εργασίες, οι οποίες εκτελούνται ταυτόχρονα σε διαφορετικά μηχανήματα. Αυτές οι εργασίες δεν είναι απαραίτητα αμοιβαίως αποκλειόμενες, αν και αυτό είναι το ιδανικό σενάριο. Καθώς οι εργασίες ολοκληρώνονται στους διαφορετικούς κόμβους, τα αποτελέσματα στέλνονται πίσω στον κεντρικό υπολογιστή, ο οποίος τα ανασυνθέτει και βγάζει μια ολική έξοδο (19). Το πλεονέκτημα του Grid computing είναι ότι εκμεταλλεύεται αποτελεσματικά την αχρησιμοποίητη υπολογιστή ισχύ, μεγιστοποιώντας τους διαθέσιμους πόρους, με αποτέλεσμα ο χρόνος ολοκλήρωσης μιας εργασίας να μειώνεται σημαντικά. Για την σωστή εκτέλεση μιας εργασίας στο Grid πρέπει ο κώδικας να παραλληλοποιηθεί. Επίσης ιδανικό θα ήταν ο κώδικας να ξαναγραφεί, με βάση τη λογική της δημιουργίας αμοιβαίως αποκλειομένων υποεργασιών. Αυτό δεν σημαίνει ότι δεν μπορούν να είναι ανεξάρτητες, ωστόσο όταν υπάρχουν μηνύματα που μεταδίδονται μεταξύ τους υπάρχει αύξηση του χρόνου εκτέλεσης. Μια βασική προϋπόθεση κατά τη δημιουργία εργασιών για το Grid είναι, ότι είτε ο κώδικας εκτελείται σειριακά, είτε ως παράλληλες εργασίες, το αποτέλεσμα θα πρέπει να είναι ίδιο σε κάθε περίπτωση (19). 17
32 2.5.5 Cloud Computing vs. Grid Computing Οι διαφορές μεταξύ των δυο αρχιτεκτονικών είναι δύσκολες να περιγράφουν, μιας και δεν είναι συνεχώς αμοιβαίως αποκλειόμενες. Για την ακρίβεια και οι δύο αρχιτεκτονικές χρησιμοποιούνται για την εξοικονόμηση υπολογιστικής ισχύος και τη μεγιστοποίηση της χρήσης των διαθέσιμων πόρων. Επιπρόσθετα και οι δυο αρχιτεκτονικές χρησιμοποιούν την ιδέα της αφαίρεσης εκτενώς και έχουν διακριτά στοιχεία, τα οποία αλληλοεπιδρούν μεταξύ τους. Ωστόσο, η διαφορά μεταξύ τους βρίσκεται στον τρόπο που εκτελείται μια εργασία στο καθένα (19). Στο Grid μια εργασία χωρίζεται σε πολλά μικρά κομμάτια και εκτελείται σε διαφορετικά μηχανήματα. Αυτό ενώ είναι ένα βασικό χαρακτηριστικό του Grid, δεν είναι τόσο βασικό στο Cloud. To Cloud πρέπει να επιτρέπει στον χρήστη να έχει πρόσβαση σε διαφορές υπηρεσίες, χωρίς να εξερευνήσει την αρχιτεκτονική του συστήματος. Αν και το Grid προσφέρει μια αντίστοιχη δυνατότητα για την υπολογιστική ισχύ, το Cloud δεν περιορίζεται μόνο σε αυτό και μπορεί να προσφέρει μια πληθώρα υπηρεσιών από web hosting έως την επεξεργασία λέξεων. Για την ακρίβεια, το Cloud μπορεί να ενώσει πολλές υπηρεσίες στο χρήστη του, δίνοντας του ένα ομογενές και βελτιστοποιημένο αποτέλεσμα (19). Αν και πολλές από τις αρχιτεκτονικές υπολογιστικών τεχνικών συγχέονται μεταξύ τους, διότι μοιράζονται κάποια κοινά χαρακτηριστικά, είναι διαφορετικές και δεν αποκλείει η ύπαρξη της μιας την ύπαρξη της άλλης. Τέλος, στην παρούσα διπλωματική εργασία επιλέχθηκε, η χρήση Cloud υπηρεσιών από διάφορους παρόχους για την εύκολη, φθηνή και δυναμική επιλογή πόρων ανάλογα με το πρόβλημα. 18
33 2.6 Distributed Computing Frameworks Εισαγωγή Η ανάλυση των στοιχείων σε Big Data είναι ένας ενεργός τομέας έρευνας που επικεντρώνεται στη συλλογή, στον έλεγχο και στην επεξεργασία πολλών αρχείων δεδομένων, τα οποία βασίζονται σε πολλαπλά μοντέλα και σε πολλαπλές πήγες, έτσι ώστε να ανακαλύψουν συσχετίσεις, μοτίβα και να εξάγουν πληροφορίες από τα δεδομένα αυτά. Πρόσφατες τάσεις δείχνουν πως ο εκθετικός βαθμός αύξησης των δεδομένων, θα συνεχίσει και στο μέλλον. Σε συνδυασμό με τη δυνατότητα που δίνουν τα συστήματα διανεμημένων υπολογιστικών συστημάτων, να αντιμετωπιστούν πολύ μεγαλύτεροι όγκοι δεδομένων σε λογικό χρόνο, κρίνεται η επιλογή τέτοιου συστήματος απαραίτητη. Χρησιμοποιώντας τα, μπορούν αντιμετωπιστούν αποτελεσματικά, προβλήματα που μπορεί να προκύψουν σχετικά με την αποθήκευση των δεδομένων, την επεξεργασία πραγματικού χρόνου, την εξόρυξη πληροφοριών και τη δημιουργία μοντέλων αφαίρεσης (20). Μιας και επιλέξαμε την χρήση της υπολογιστικής υποδομής του Cloud έτσι ώστε να εκμεταλλευτούμε στα μέγιστα την υπάρχουσα υποδομή είχαμε την επιλογή είτε να δημιουργήσουμε κάποιο δικό μας custom-made λογισμικό που να καλύπτει τις ανάγκες μας είτε να αναζητήσουμε τα ήδη υπάρχοντα Frameworks που έχουν δημιουργηθεί για τέτοιου είδους προβλήματα. Αν και η επιλογή της δημιουργίας ενός framework αποκλειστικά για μια συγκεκριμένη εργασία δίνει σχεδόν πάντα καλύτερη απόδοση σε σχέση με κάποιο πιο γενικό framework ωστόσο αποτελεί μια επιλογή απαγορευτική από άποψη κόστους και χρόνου. Συνήθως για την υλοποίηση κάποιου τέτοιο εξειδικευμένου λογισμικού υπάρχει μεγάλη χρηματοδότηση και ανάθεση σε μια ομάδα εμπείρων προγραμματιστών κάτι το οποίο ξεφεύγει από το όρια αυτής της διπλωματικής εργασίας. Για του λογούς αυτούς επιλέξαμε να μην ξανά-εφεύρουμε τον τροχό και να καταφύγουμε στις ήδη προτεινόμενες μεθόδους για την αντιμετώπιση παρομοίων προβλημάτων. Υπάρχουν τεχνολογίες που είναι ήδη διαθέσιμες και εκμεταλλεύονται διαφορετικά επίπεδα παραλληλοποίησης (για παράδειγμα πολυπύρηνων συστημάτων, συστημάτων με κάρτες γραφικών, ομάδας υπολογιστών). Η κάθε τεχνολογία επικεντρώνεται στη βελτίωση της απόδοσης συγκεκριμένου τομέα, με αντάλλαγμα την υποβάθμιση σε κάποιον άλλον τομέα, προσαρμόζοντας το βέλτιστο σύστημα σε κάθε εφαρμογή. Για παράδειγμα τη βελτίωση της ταχύτητας με κόστος τη χαμηλή ανάκτηση δεδομένων σε περίπτωση σφάλματος και αντίστροφα (20). Ακολουθεί μια σύντομη περιγραφή κάποιων από τις διαθέσιμες τεχνολογίες για την αντιμετώπιση προβλημάτων Big Data, η τελική επιλογή για την υλοποίηση της παρούσας διπλωματικής, καθώς και οι λόγοι που μας οδήγησαν σε αυτή. 19
34 2.6.2 MPI/OpenMP Το MPI (Message Passing Interface) είναι ένα πρωτόκολλο, το οποίο είναι ανεξάρτητο γλώσσας, σχεδιασμένο για παράλληλο προγραμματισμό, όπου υποστηρίζει την σημείο-με-σημείο επικοινωνία αλλά και τις συλλογικές επικοινωνίες. Ο κύριος στόχος του MPI είναι η υψηλή απόδοση, η επεκτασιμότητα και η φορητότητα. Το MPI είναι αυτή τη στιγμή το κύριο μοντέλο το οποίο χρησιμοποιείται σε υπολογιστικά συστήματα υψηλής απόδοσης και είναι το de facto για την επικοινωνία ανάμεσα σε παράλληλα προγράμματα, τα οποία τρέχουν σε συστήματα διανεμημένης μνήμης. Ωστόσο, η βασική του έκδοση δεν υποστηρίζει την ανεκτικότητα σε σφάλματα (fault-tolerance), εφόσον κυρίως επιλύει προβλήματα HPC (High performance computing). Ένα ακόμα μειονέκτημα του MPI είναι ότι δεν είναι κατάλληλο για μικρού μεγέθους παραλληλοποίηση, όπως για παράδειγμα να εκμεταλλευτεί την παραλληλοποίηση πολυπύρηνων συστημάτων για κοινή μνήμη παράλληλης επεξεργασίας (20). Το OpenMP είναι ένα API (Application Programming Interface), το οποίο υποστηρίζει προγραμματισμό για παράλληλη επεξεργασία της κοινά διαμοιρασμένης μνήμης σε πολλές πλατφόρμες και μάλιστα για την πλειονότητα των αρχιτεκτονικών επεξεργαστών και των λειτουργικών συστημάτων. Το OpenMP έχει αρχίσει να γίνεται η Standard επιλογή για εφαρμογές που μοιράζουν την μνήμη τους σε παράλληλα προγράμματα, λόγω της υψηλής απόδοσης. Δυστυχώς δεν είναι κατάλληλο για εφαρμογές για συστήματα διανεμημένης μνήμης (20). Ενώ η διεπαφή του OpenMP είναι φιλική προς τον χρήστη και του επιτρέπει εύκολα να παραλληλοποιήσει συνθέτους αλγορίθμους, το MPI χρειάζεται αρκετά βαριά αναμόρφωση των αλγορίθμων έτσι ώστε να επιτύχει τις κατάλληλες βελτιώσεις της απόδοσης. Και για τις δύο αυτές τεχνολογίες γράφονται προγράμματα σε C, C++ και Fortran και υπάρχει επίσης η δυνατότητα της δημιουργίας μια υβριδικής εφαρμογής, η οποία να βασίζεται στο μοντέλο του παράλληλου προγραμματισμού. Η εφαρμογή αυτή μπορεί να τρέξει σε μια ομάδα υπολογιστών χρησιμοποιώντας το OpenMP για την παραλληλοποίηση μέσα σε ένα πολυπύρηνο κόμβο και το MPI για την παραλληλοποίηση μεταξύ των κόμβων αυτών καθ αυτών. Υπάρχουν επίσης προσπάθειες για να τρέξει το OpenMP σε λογισμικό συστημάτων που έχουν κοινή διανεμημένη μνήμη, για την μετάφραση του OpenMP σε MPI και για την επέκταση του OpenMP για συστήματα τα οποία δεν διαμοιράζουν την μνήμη τους (20). Σχήμα Σύστημα που συνδυάζει MPI/OpenMP 20
35 2.6.3 Apache Hadoop Stack Το Hadoop είναι ένα framework ανοιχτού κώδικα, το οποίο χρησιμοποιείται για τη διανεμημένη αποθήκευση και επεξεργασία πολύ μεγάλων σετ δεδομένων. Όλες οι ενότητες του έχουν σχεδιασθεί με βασική αρχή πως τα σφάλματα στο επίπεδο του υλικού είναι συχνό φαινόμενο και πρέπει να αντιμετωπίζεται αποτελεσματικά από το framework. Ο πυρήνας του Hadoop αποτελείται από ένα διανεμημένο σύστημα αποθήκευσης δεδομένων, το οποίο είναι γνωστό ως HDFS (Hadoop Distributed File System) και ένα υπολογιστικό σύστημα το οποίο καλείται MapReduce. Το Hadoop χωρίζει τα αρχεία σε μεγάλα κομμάτια και τα διαμοιράζει αναμεσά στους κόμβους του cluster. Μεταφέρει κώδικα στους κόμβους έτσι ώστε να επεξεργαστεί τα δεδομένα παράλληλα εκμεταλλευόμενο την τοπικότητα των δεδομένων σε κάθε κόμβο. Καθώς ο κάθε κόμβος επεξεργάζεται τα δεδομένα τα οποία έχει πρόσβαση, επιτυγχάνεται η πιο γρήγορη και πιο αποδοτική επεξεργασία από μια πιο κοινή αρχιτεκτονική υπερυπολογιστών, η οποία βασίζεται σε παράλληλο σύστημα αποθήκευσης, όπου τα δεδομένα και οι υπολογισμοί μεταφέρονται μέσω δικτυών υψηλής ταχύτητας (21) (22). Το βασικό framework του Hadoop αποτελείται από τις ακόλουθες ενότητες (modules): Hadoop Common που περιέχει τις βιβλιοθήκες και τα εργαλεία που χρησιμοποιεί το Hadoop στις διαφορές λειτουργίες του. Hadoop Distributed File System (HDFS) ένα σύστημα αποθήκευσης αρχείων, το οποίο διαμοιράζει τα αρχεία σε διαφορετικά μηχανήματα, παρέχοντας πολύ μεγάλο συνολικό εύρος ζώνης ανάμεσα στο cluster. Hadoop YARN ένα σύστημα διαχείρισης, το οποίο είναι υπεύθυνο για τον έλεγχο των υπολογιστικών πόρων μέσα στο cluster, του σχεδιασμού ανάθεσης των εφαρμογών των χρηστών και των ρυθμίσεων διάφορων παραμέτρων για την βέλτιστη απόδοση του cluster. Hadoop MapReduce - μία εφαρμογή του μοντέλου προγραμματισμού MapReduce, σχεδιασμένη για μεγάλη κλίμακα επεξεργασία δεδομένων. Σχήμα Οικοσύστημα του Apache Hadoop 21
36 2.6.4 Apache Spark Το Spark είναι ένα framework ανοιχτού κώδικα τελευταίας τεχνολογίας για την υλοποίηση υψηλής απόδοσης παράλληλων υπολογισμών, το οποίο έχει σχεδιασθεί να ανταποκρίνεται αποδοτικά σε επαναληπτικές διαδικασίες, οι οποίες εκτελούν εργασίες αναδρομικά στα ίδια δεδομένα, όπως για παράδειγμα κάποιοι αλγόριθμοι supervised machine learning. Βασίζεται στην ιδέα «να κρατάς τα δεδομένα που χρειάζεσαι στη μνήμη» και όχι στο δίσκο όπως συμβαίνει σε κάποιες υλοποιήσεις όπως το Apache Mahout όπου ξαναφορτώνει τα δεδομένα δημιουργώντας σημαντικές καθυστερήσεις. Διάφορες έρευνες έχουν δείξει ότι το Spark είναι έως και δυο τάξεις μεγέθους πιο γρήγορο από τις συμβατικές Map Reduce εργασίες (23). Οι κύριες δομές δεδομένων του πυρήνα του Spark είναι τα RDDs (Resilient Distributed Datasets) και οι ιδιότητες τους είναι: Διαμοιρασμένες (distributed) Αμετάβλητες (immutable) Ανθεκτικές σε σφάλματα (fault-tolerant) Αυτή η δομή δεδομένων μνήμης είναι μία ομάδα στοιχείων, στα οποία μπορούν να εφαρμοστούν διάφορες διεργασίες, με αποτέλεσμα είτε να παράγουν αλλά RDDs (transformations) είτε να επιστρέφουν τιμές (actions). Οι δομές αυτές μπορούν να βρίσκονται είτε στη μνήμη, είτε στο δίσκο, είτε σε συνδυασμό αυτών. Το οικοσύστημα του Spark ακολουθεί μια Lazy Evaluation (LE) στρατηγική και εκτελεί τους υπολογισμούς μόνο κατά την εκτέλεση κάποιου action έτσι ώστε να επιτύχει την κατανάλωση της ελάχιστης υπολογιστικής ισχύος και να αποφύγει την χρήση μνήμης χωρίς σημαντικό λόγο. Τα RDDs δεν φορτώνονται στην μνήμη (cached) από μονά τους και για αυτό σε περίπτωση επαναληπτικής χρησιμοποίησης των δεδομένων χρειάζεται τη χρήση των μεθόδων που εξακολουθεί (persist) να κρατά τα δεδομένα ώστε να αποφευχθούν επαναληπτικοί υπολογισμοί των δεδομένων (24). Το Spark δίνει μία πληθώρα επιλογών για τη ρύθμιση της ομάδας (cluster) των υπολογιστών, στο οποίο τρέχει, για την ακρίβεια από ένα απλό σύστημα διαχείρισης των εργασιών, το οποίο βρίσκεται ενσωματωμένο στο Spark (Standalone Scheduler), μέχρι συστήματα διαχείρισης πιο σύνθετα όπως το Apache Mesos και το Hadoop Yarn. Το σύστημα διαχείρισης που υπάρχει ήδη εγκατεστημένο στο Spark είναι το πιο εύκολο για την χρήση του από κάποιον αρχάριο. Ωστόσο η σωστή ρύθμιση εξαρτάται από την εκάστοτε εφαρμογή και χρειάζεται πολλά πειράματα και δοκιμές ώστε να γίνει βέλτιστη η ρύθμιση του. Μερικές φορές οι ρυθμίσεις και οι δυνατότητες αυτού του συστήματος διαχείρισης είναι περιορισμένες με αποτέλεσμα οι χρήστες να απευθύνονται στις άλλες δύο επιλογές και κυρίως στην επιλογή του συστήματος διαχείρισης Hadoop Yarn καθώς δίνει το πλεονέκτημα της ύπαρξης ενός διανεμημένου συστήματος αποθήκευσης δεδομένων το HDFS αλλά και των άλλων λειτουργιών που αναφέρθηκαν στην προηγουμένη ενότητα (23) (24). 22
37 Το Spark αποτελείται από τις εξής υποενότητες(sub-modules): Spark Core Περιλαμβάνει όλες τις διεργασίες οι οποίες είναι απαραίτητες για τις λειτουργίες του Spark. Spark SQL Είναι ένα εξάρτημα, το οποίο υποστηρίζει τα Dataframes, μια ημιδομημένη μορφή δεδομένων, αλλά και την SQL γλώσσα. Spark Streaming Χρησιμοποίει τη δυνατότητα του πυρήνα να μεταφέρει σε πραγματικό χρόνο δεδομένα και να εκτελεί διαφορές μετατροπές σε αυτά. MLlib( Machine Learning) Ένα διανεμημένο framework, το οποίο είναι αρκετά πιο γρήγορο από άλλες υλοποιήσεις και βοηθάει την υλοποίηση αλγορίθμων machine learning σε μεγάλης κλίμακας προβλήματα. GraphX Ένα διανεμημένο framework επεξεργασίας γράφων το οποίο βασίζεται στη βασική δομή δεδομένων RDD. Το σύστημα του Spark μπορεί να χρησιμοποιηθεί από προγράμματα γραμμένα σε Scala, Java, Python και R. Στο σχήμα παρουσιάζεται οικοσυστήματος του Spark. Σχήμα Οικοσύστημα του Apache Spark 23
38 Στο Σχήμα παρουσιάζεται πώς λειτουργεί η υποδομή του Apache Spark. Σχήμα Τρόπος λειτουργίας της υποδομής του Apache Spark Στο Σχήμα περιγράφονται οι διαθέσιμοι τρόποι για διαχείριση του cluster (Cluster Managers). Σχήμα Τρόποι διαχείρισης του Cluster (Cluster Managers) 24
39 2.6.5 CUDA H CUDA είναι μία πλατφόρμα παράλληλου υπολογισμού και ένα Application Programming Interface (API) το οποίο δημιουργήθηκε από την NVidia. Επιτρέπει τους προγραμματιστές και τους μηχανικούς λογισμικού να χρησιμοποιούν κάρτες γραφικών (GPU) που έχουν πυρήνες CUDA, για γενικής χρήσης υπολογισμούς. Η πλατφόρμα CUDA είναι ένα επίπεδο λογισμικού που δίνει πρόσβαση στο εικονικό σετ εντολών της κάρτας γραφικών και σε στοιχεία που επιτρέπουν τον παράλληλο υπολογισμό. Η πλατφόρμα αυτή επιτρέπει τον προγραμματισμό στις γλώσσες C, C++ και Fortran. Αυτή η πρόσβαση διευκολύνει τους ειδικούς του παράλληλου προγραμματισμού να χρησιμοποιούν πόρους από κάρτες γραφικών σε αντίθεση με προηγούμενες τεχνολογίες όπως το Direct3D και το OpenGL (25). Οι κάρτες γραφικών σε αντίθεση με τους τυπικούς επεξεργαστές φέρουν χιλιάδες επεξεργαστές κάτι το οποίο σε ορισμένες περιπτώσεις οδηγεί στη μείωση του χρόνου εκτέλεσης κάποιων εργασιών. Σχήμα Σύγκριση αριθμού πυρήνων CPU με GPU Ωστόσο υπάρχουν κάποια όρια λόγω του σχεδιασμού τους. Ίσως ο πιο βασικός περιορισμός είναι το μικρό μέγεθος μνήμης που μπορεί να χρησιμοποιήσει η GPU (αποκλειστική μνήμη GPU) επειδή δεν μπορεί να εκμεταλλευτεί το σκληρό δίσκο. Επιπλέον η GPU είναι λιγότερο αποδοτική από ότι το CPU σε προγράμματα που έχουν σχεδιασθεί βάση του συνεχόμενου σειριακού προγραμματισμού. Επίσης η ανάπτυξη αλγορίθμων σχεδιασμένων για κάρτες γραφικών είναι αρκετά δύσκολη και πολύπλοκη και πολλές φορές απαιτεί εξειδικευμένες γνώσεις. Τέλος υπάρχουν κάποιοι αλγόριθμοι που δεν μπορούν να παραλληλοποιηθούν λόγω διαφορών των δεδομένων που προκύπτουν στον αλγόριθμο (26). Πρόσφατα γίνονται προσπάθειες υλοποίησης παράλληλων συστημάτων, το καθένα από τα οποία, να περιλαμβάνει πολλές κάρτες γραφικών, τα οποία θα εκμεταλλεύονται και τους πολλούς επεξεργαστές, κρατώντας τα πλεονεκτήματα των δυο κόσμων, πετυχαίνοντας ακόμα μεγαλύτερες ταχύτητες και στα σειριακά αλλά και στα παράλληλα κομμάτια των αλγορίθμων (27). 25
40 2.6.6 Επιλογή Κατάλληλου Framework Κάθε framework, έχει τα πλεονεκτήματα και τα μειονεκτήματα του. Πολλές φορές ο συνδυασμός δύο ή περισσοτέρων μπορεί να οδηγήσει σε καλύτερη απόδοση, αλλά συχνά ο συνδυασμός αυτός απαιτεί ακόμα περισσότερη παραμετροποίηση, κάτι το οποίο είναι αρκετά χρονοβόρο. Στα πλαίσια της διπλωματικής εργασίας, κρίθηκε βέλτιστη η επιλογή ενός μεμονωμένου framework, εφόσον κύριος στόχος της είναι η έναρξη της προσπάθειας της αντιμετώπισης του προβλήματος του συνεχώς αυξανομένου όγκου δεδομένων, η γαλούχηση στη δημιουργία προγραμμάτων τα οποία αντιμετωπίζουν μεγάλο όγκο δεδομένων, η εκμάθηση των εργαλείων που χρησιμοποιούνται από διάφορες εταιρίες για την επίλυση παρομοίων προβλημάτων και όχι απαραίτητα η εύρεση της βέλτιστης υλοποίησης. Συγκρίνοντας τα αποτελέσματα ερευνών που ήδη έχουν πραγματοποιηθεί γύρω από το θέμα, σε συνδυασμό με τον αρκετά μεγάλο όγκο των δεδομένων που κληθήκαμε να αντιμετωπίσουμε αλλά και την έλλειψη του συγκεκριμένου hardware, απορρίψαμε την επιλογή για χρήση της CUDA. Επίσης κρίθηκε πως ήταν καλυτέρα να αποφευχθεί και το οικοσύστημα του Hadoop, αν και έχει αποδειχθεί ότι μπορεί να ανταπεξέλθει σε προβλήματα αρκετά μεγάλης κλίμακας. Η απόρριψη αυτή έγινε διότι μπορούμε να εκμεταλλευτούμε πλήρως τα σύγχρονα συστήματα, τα οποία έχουν μνήμες αρκετά μεγάλες σε μέγεθος αλλά και ταχύτερες κατά τάξεις μεγέθους ακόμα και από τους ταχύτατους SSDs (20). Απορρίπτοντας αυτές τις επιλογές τέθηκε το ερώτημα ποιο framework θα ήταν καλύτερο να χρησιμοποιηθεί. Ένα σύστημα που θα συνδύαζε το MPI και το OpenMP ή ένα σύστημα που θα μπορούσε να τρέχει το Spark; Αν και είναι ευρέως γνωστό πως το MPI/OpenMP είναι τουλάχιστον μία τάξη μεγέθους πιο γρήγορο από το Spark, σε σχέση με την υπολογιστική ταχύτητα, και προσφέρει πιο σταθερή απόδοση, το Spark έχει αρκετά καλύτερο έλεγχο της υποδομής των δεδομένων και μπορεί να αντιμετωπίσει προβλήματα, όπως σφάλματα κόμβων ή αντιγραφής των δεδομένων (20). Το Spark σε συνδυασμό με το Hadoop Yarn προσφέρει: Ένα distributed file system το οποίο έχει αυτόματο έλεγχο σφαλμάτων των δεδομένων και αντιγραφής δεδομένων. Επιτρέπει την είσοδο νέων υπολογιστικών κόμβων κατά την εκτέλεση. Παρέχει ένα σετ εργαλείων για ανάλυση και διαχείριση δεδομένων τα οποία είναι εύκολα στη χρήση, στην εκτέλεση και στον έλεγχο. Τέλος το Apache Spark είναι ένα από τα πιο διάσημα frameworks για την επεξεργασία Big Data που χρησιμοποιείται κατά κόρον από τις μεγαλύτερες εταιρίες, επιβεβαιώνοντας πως είναι ένα εργαλείο, το οποίο μπορεί να αντιμετωπίσει προβλήματα Petascale κλίμακας. 26
41 Πίνακας 2-1 Σύγκριση δυνατών των Distributed Computing Frameworks Δυνατότητες MPI/OpenMP Apache Hadoop Apache Spark CUDA Ανάγκη για ειδικό Hardware Υποστήριξη Big Data Αξιοποίηση Μεγέθους Σύγχρονων Σκληρών Δίσκων Αξιοποίηση Ταχύτητας Σύγχρονων Μνημών RAM Διανεμημένο Σύστημα Αποθήκευσης Αρχείων (YARN) Απόδοση (το 1 είναι το πιο γρήγορο σύστημα) Έλεγχός Υποδομής σε Διανεμημένα Συστήματα Αντιμετώπιση σφαλμάτων (σε κόμβους ή αντιγραφή δεδομένων) APACHE SPARK IT IS! 27
42 3 Παραλλαγές MCL από τη Βιβλιογραφία Αν και όπως προαναφέρθηκε στο δεύτερο κεφάλαιο επιλέχθηκε η χρήση και η υλοποίηση του αλγορίθμου MCL, έπειτα από έρευνα στην ήδη υπάρχουσα βιβλιογραφία, βρέθηκε ακόμα πως υπάρχουν κάποιες παραλλαγές του αλγορίθμου αυτού που έχουν σχεδιαστεί από ερευνητές έτσι ώστε να βελτιώσουν την απόδοση του αλγορίθμου σε συγκεκριμένους τομείς τους οποίους υστερεί. Όμως σε γενικές γραμμές η βασική μεθοδολογία του αλγορίθμου της ομαδοποίησης είναι η ίδια σε όλες τις παραλλαγές. Θα ακολουθήσει μια συνοπτική περιγραφή των παραλλαγών αυτών καθώς και των πλεονεκτημάτων τους έναντι στον αυθεντικό αλγόριθμο. 3.1 Σύντομη περιγραφή MCL Ο αλγόριθμος είναι απλός, κομψός και χρησιμοποιείται ήδη αρκετά στη Βιοπληροφορική λόγω της ανθεκτικότητας έναντι στο θόρυβο και της αποτελεσματικότητας του. Ωστόσο είναι σχετικά αργός αλλά και παράγει ως αποτέλεσμα πάρα πολλές ομάδες πρωτεϊνών. Ο αλγόριθμος περιγράφτηκε αναλυτικότερα στο Κεφάλαιο 2.4. Ακολουθεί ο ψευδό-κώδικας του MCL, για την ευκολότερη σύγκριση του με τις παραλλαγές του. Αλγόριθμος 1 Markov Cluster Algorithm (16) Ακολουθεί το διάγραμμα ροής του MCL στο σχήμα για την καλύτερη κατανόηση του. 28
43 Σχήμα Διάγραμμα Ροής Markov Cluster Algorithm 29
44 3.2 R-MCL (Regularized-MCL algorithm) Η παραλλαγή αυτή, καλείται να αντιμετωπίσει το μειονέκτημα του αλγορίθμου MCL να παράγει πολλές ομάδες πρωτεϊνών ως αποτέλεσμα. Αυτό συμβαίνει λόγω του φαινομένου της υπερπροσαρμογής (overfitting), το οποίο υπάρχει γιατί ο αλγόριθμος δεν τιμωρεί την απόκλιση των ροών μεταξύ των γειτόνων. Η λύση που προτείνεται για να «θεραπευτεί» το συγκεκριμένο πρόβλημα, είναι να τιμωρεί τις αποκλίσεις στις ροές μεταξύ των γειτόνων και να μειώνει την τιμωρία σε κάθε κόμβο (28). Στην πράξη, η λύση που εισάγεται είναι η χρήση ενός τελεστή κανονικοποίησης μέσα στον αλγόριθμο, κάτι που συμβάλει στο να κρατήσει ο πίνακας γειτνίασης κάποιες ιδιότητες του αρχικού πίνακα καθώς και να διατηρήσει τη δομή του αρχικού πίνακα, ιδιότητα η οποία στον απλό MCL χάνεται με τον χρόνο. Στην παραλλαγή του αλγορίθμου αυτή, αντί να συμβαίνει πολλαπλασιασμός του στοχαστικού πίνακα της επανάληψης με τον εαυτό του, συμβαίνει πολλαπλασιασμός του στοχαστικού πίνακα της επανάληψης με τον αρχικό στοχαστικό πίνακα. Ο αρχικός στοχαστικός πίνακας προκύπτει έπειτα από την αρχική κανονικοποίηση και πριν το επαναληπτικό κομμάτι του αλγορίθμου (16). Αλγόριθμος 2 Regularized MCL (16) 30
45 Ακολουθεί το διαγραμμα ροης του R-MCL στο Σχήμα Σχήμα Διάγραμμα ροής R-MCL 31
46 3.3 Multi-Level Regularized MCL Η βασική ιδέα πίσω από την οποία βασίζεται η δημιουργία αλγορίθμων βασισμένων σε framework πολλών επίπεδων(multi-level) είναι ότι οι τιμές της ροής οι οποίες προκύπτουν από προσομοίωση σε γράφους που είναι πιο τραχείς (coarser graphs), μπορεί να χρησιμοποιηθούν αποτελεσματικά, για να προετοιμάσουν τις ροές για προσομοίωση σε μεγαλύτερους γράφους. Ένα ακόμα βασικό πλεονέκτημα είναι ότι ο αλγόριθμος είναι αρκετά πιο ταχύς, καθώς οι πρώτες επαναλήψεις οι οποίες είναι και οι πιο χρονοβόρες, εκτελούνται για τους μικρότερους γράφους πρώτα. Το πρώτο βήμα αυτής της έκδοσης του αλγορίθμου είναι ότι ο αρχικός γράφος χωρίζεται (coarsened) σε μια σειρά μικρότερων γράφων, οι οποίοι έχουν μέγεθος ευκολά διαχειρίσιμο. Αρχικά δημιουργεί μια ταύτιση. Ταύτιση είναι ένα set ακμών οι οποίες προσπίπτουν στην ίδια κορυφή. Στη συνέχεια οι δύο κορυφές που είναι προσπίπτουσες σε κάθε ακμή στην ταύτιση, δημιουργούν έναν υπερ-κόμβο που οι ακμές του είναι η ένωση των ακμών των συστατικών τους κόμβων. Για να υπάρχει παρακολούθηση της διαδικασίας του coarsening των γράφων, χρησιμοποιούνται δύο πίνακες σε κάθε coarse γράφο, ο NodeMap1 και ο NodeMap2. Ο πρώτος χαρτογραφεί έναν κόμβο, στον coarse γράφο, στον πρώτο συστατικό του κόμβο και ο δεύτερος χαρτογραφεί έναν κόμβο στο δεύτερο συστατικό του κόμβο (28). Σχήμα Διάγραμμα λειτουργίας του MLR-MCL 32
47 Το δεύτερο βήμα είναι μια απλοποιημένη μορφή του αλγορίθμου R-MCL μαζί με κάποια διόρθωση. Ξεκινώντας από το πιο τραχύ (coarsest) γράφο, τρέχει για έναν αριθμό λίγων επαναλήψεων(συνήθως γύρω στις τέσσερις με πέντε). Οι τιμές της ροής στο τέλος αυτού του βήματος, προβάλλονται στο αλλαγμένο γράφο, όπως φαίνεται στον αλγόριθμο 4 και ο R-MCL τρέχει για μερικές επαναλήψεις στον αλλαγμένο (refined) γράφο, το οποίο συμβαίνει μέχρι να φτάσουμε στον αρχικό γράφο (16). Αλγόριθμος 3 Multi-level Regularized MCL (16) 33
48 Αλγόριθμος 4 Προβολή της Ροής (ProjectFlow) (16) Το υπόλοιπο κομμάτι του MLR-MCL είναι ο αλγόριθμος για την προβολή της ροής από έναν coarse γράφο σε έναν refined γράφο. Η προβολή της ροής είναι αυτή που ασχολείται με τη χρήση των τιμών της ροής ενός coarse γράφου, έτσι ώστε να παρέχει μια καλή αρχικοποίηση των τιμών της ροής στον refined γράφο. Εφόσον υπάρχουν δύο κομβόι στον refined γράφο που αντικατοπτρίζουν κάθε κόμβο στον coarse γράφο, η ροή που βρίσκεται μεταξύ δυο κόμβων στον coarse πρέπει να χρησιμοποιηθεί για να εξαχθούν οι τιμές της ροής ανάμεσα σε τέσσερα ζευγάρια από κόμβους στον refined γράφο. Αν θεωρήσουμε πως το nc είναι το μέγεθος του coarse γράφου, τότε nc2 εγγραφές του πίνακα ροής του coarse γράφου μπορούν να εξάγουν 4* nc2 εγγραφές στον refined γράφο. Για να επιλυθεί αυτό το πρόβλημα, η αφελής στρατηγική είναι να θέσουμε την ροή μεταξύ δύο κόμβων στον refined γράφο ως τη ροή μεταξύ των αντίστοιχων γονέων του στον coarse γράφο. Ωστόσο αυτό διπλασιάζει τον αριθμό των κόμβων για τους οποίους ο κάθε κόμβος του refined γράφου ρέει προς. Η νέα στρατηγική είναι η επιλογή ενός κόμβου-παιδιού για τον κάθε γονέα κόμβο και η παρουσίαση όλης της ροής από τον γονέα κόμβο στο επιλεγμένο κόμβο-παιδί. Ωστόσο αυτό δημιουργεί το ερώτημα: ποιος κόμβος-παιδί να επιλεγεί ώστε να του ανατεθεί όλη η ροή; Αποδεικνύεται ότι δεν παίζει ρολό ποιος κόμβος-παιδί θα επιλεγεί, αρκεί ο κάθε γονέας να κάνει μια συνεπή και σταθερή επιλογή (16). Ακολουθεί η απόδειξη των παραπάνω στο Σχήμα
49 Σχήμα Απόδειξη για επιλογή κόμβου-παιδιού για ανάθεση ροής Το τρίτο βήμα είναι η εκτέλεση του R-MCL στον αρχικό γράφο. Με της τιμές ροής να είναι αρχικοποιημένες από την προηγουμένη φάση, εκτελείται ο R-MCL στον τελικό γράφο μέχρι τη σύγκλιση. Ο πίνακας ροής στο τέλος, έχει μετατραπεί στις ομάδες πρωτεϊνών με το συνήθη τρόπο, με όλους τους κόμβους που έλκονται στον ίδιο μαγνήτη κόμβο να βρίσκονται στην ιδιά ομάδα. 3.4 Κριτήρια αξιολόγησης του clustering Υπάρχουν διάφορα κριτήρια τα οποία αξιολογούν το clustering των δεδομένων. Στη συγκεκριμένη έρευνα, χρησιμοποιήθηκαν τα παρακάτω κριτήρια, για την αξιολόγηση των ομάδων που δημιουργούν οι τρείς παραλλαγές του αλγορίθμου. Η κανονικοποιημένη αποκοπή ενός Cluster C στο γράφο G ορίζεται ως: Εξίσωση 1 Κανονικοποιημένη αποκοπή ενός Cluster C 35
50 Η κανονικοποιημένη αποκοπή μιας ομαδοποίησης {C1, C2,..., Ck} είναι το άθροισμα των κανονικοποιημένων αποκοπών των αυτονόμων ομάδων: Εξίσωση 2 Κανονικοποιημένη αποκοπή μιας ομαδοποίησης Η μέση κανονικοποιημένη αποκοπή μιας ομαδοποίησης είναι ο μέσος ορός των κανονικοποιημένων αποκοπών του καθενός από τις ομάδες και παίρνει τιμές μεταξύ 0 και 1 (28). 3.5 Σύγκριση αλγορίθμων Τα πειράματα σύγκρισης βασίστηκαν στη χρήση των δεδομένων που περιγράφονται στον Πίνακα 3-1. Πίνακας 3-1 Πραγματικά Dataset που χρησιμοποιήθηκαν για σύγκριση MCL, R-MCL και MLR-MCL 36
51 3.5.1 R-MCL vs. MCL Στον Πίνακα 3-2 παρουσιάζεται η σύγκριση του R-MCL με τον MCL. Πίνακας 3-2 Σύγκριση R-MCL με MCL Σύμφωνα με τα αποτελέσματα από τα πειράματα σε διαφορά datasets προκύπτει πως ο R-MCL όντως μειώνει τον αριθμό των ομάδων. Παρατηρείται επίσης, πως ο R-MCL έχει σαφώς ταχύτερο χρόνο εκτέλεσης αλλά και καλυτέρα score στις μετρικές που χρησιμοποιήθηκαν για την αξιολόγηση της ομαδοποίησης των δεδομένων MLR-MCL vs. R-MCL vs. MCL Στον Πίνακα 3-4 παρουσιάζεται η σύγκριση του MLR-MCL με τον R-MCL και τον MCL. Πίνακας 3-3 Αποτελέσματα σύγκρισης των MCL, R-MCL και MLR-MCL Σύμφωνα με τα παραπάνω αποτελέσματα προκύπτει πως ο MLR-MCL είναι γενικά πιο κάλος από τον R- MCL και τον MCL σε άποψη ποιότητας και αποδίδει περίπου δύο-τρείς τάξεις μεγέθους αποδοτικότερα σε σχέση με τον MCL Επιλογή αλγορίθμων Βασιζόμενοι στην παραπάνω έρευνα (16) παρατηρήθηκε ότι έχουν ήδη δημιουργηθεί παραλλαγές του αλγορίθμου MCL έτσι ώστε να βελτιώνουν τα αδύναμα του σημεία. Η λογική επιλογή θα ήταν η υλοποίηση του MLR-MCL, ο οποίος είναι αρκετά καλύτερος σχεδόν σε όλες τις περιπτώσεις. Ωστόσο ο συγγραφέας επέλεξε να μην προχωρήσει στην υλοποίηση αυτού, διότι το framework το οποίο βασίστηκε για τη δημιουργία της διπλωματικής (Apache Spark), αν και υποστηρίζει γράφους εγγενώς (natively), η βιβλιοθήκη που το κάνει βρίσκεται ακόμα σε beta έκδοση, με πολλές από τις λειτουργίες της να είναι πειραματικές ακόμα και να μην προτείνονται για χρήση σε ένα σύστημα το οποίο είναι production-ready. Επίσης η εισαγωγή των συναρτήσεων και των λειτουργιών, που θα ήταν απαραίτητες για τη δημιουργία μιας υλοποίησης βασισμένης στην πολύ-επίπεδη προσέγγιση, λόγω του ότι δεν θα ήταν βέλτιστες, ίσως δημιουργούσε ακόμα περισσότερο overhead, με αποτέλεσμα να χαθεί το βασικό πλεονέκτημα της ταχύτητας. Παρόλο αυτά αν και απορρίφθηκε προσωρινά η υλοποίηση του MLR-MCL, δεν συνέβη το ίδιο 37
52 για την υλοποίηση του Regularized MCL. Επιλέχθηκε η υλοποίηση του R-MCL με εντελώς διαφορετικό τρόπο σε σχέση με την υλοποίηση μας του MCL. Στο επόμενο κεφάλαιο θα περιγράφουν αναλυτικά οι δύο υλοποιήσεις της παρούσας εργασίας. Πίνακας 3-4 Σύγκριση στοιχείων MCL, R-MCL και MLR-MCL MCL R-MCL MLR-MCL Απόδοση (το 1 είναι o πιο γρήγορος αλγόριθμος) Ποιότητα Ομαδοποίησης (το 1 είναι το καλύτερο) Πολύ-επίπεδη προσέγγιση Εύκολη υλοποίηση στο Apache Spark 38
53 4 Περιγραφή Μεθοδολογίας Στο κεφάλαιο αυτό παρουσιάζεται αναλυτικά η μεθοδολογία που έχει αναπτυχθεί. Αρχικά δίνεται η γενική περιγραφή του προγράμματος, ενώ στη συνέχεια αναπτύσσονται διεξοδικά τα επιμέρους βήματα, που το απαρτίζουν καθώς και το διάγραμμα ροής. Στο διάγραμμα ροής με γκρι εμφανίζονται η αρχή και το τέλος του προγράμματος, με πράσινο τα αρχεία εισόδου και εξόδου, με κόκκινο οι ενέργειες του προγράμματος. Στόχος του προγράμματος είναι η εκτέλεση αλγορίθμου ομαδοποίησης (MCL) σε μεγάλα σύνολα δεδομένων εύκολα και γρήγορα, καθώς και η παροχή αποτελεσμάτων σε μορφή που να είναι περαιτέρω επεξεργάσιμη. Για να επιτευχθεί αυτό χρησιμοποιήθηκε το framework Apache Spark, το οποίο μας δίνει όλα τα πλεονεκτήματα που αναφέραμε στο κεφάλαιο Γενική περιγραφή του προγράμματος Στο πρόγραμμα, προκειμένου να εκτελεστεί μια ομαδοποίηση πρωτεϊνών, πρέπει πρώτα να συλλεχθούν οι πληροφορίες που ο χρήστης θεωρεί σημαντικές από την έξοδο του προγράμματος BLAST. Αυτές οι πληροφορίες είναι ένας δείκτης ομοιότητας (identity ή e-value) ανάμεσα σε δύο ακολουθίες αλλά και ποιες ακολουθίες είναι αυτές (protein identifiers). Το αρχείο που θα αποτελέσει την έξοδο του BLAST και την είσοδο του προγράμματος, όμως πρέπει να μετατραπεί στην κατάλληλη μορφή, αφαιρώντας όλες τις πληροφορίες που δεν χρειάζονται και κρατώντας μόνο τις απαραίτητες. Περαιτέρω ο χρήστης έχει τη δυνατότητα εκτέλεσης ενός από τους δυο αλγορίθμους στο οικοσύστημα του Apache Spark MCL Regularized MCL (R-MCL) ώστε να δημιουργηθούν clusters πρωτεϊνών ανάλογα με τα αποτελέσματα της σύγκρισης των ακολουθιών τους (identity ή e-value). Ο R-MCL δεν ενσωματώθηκε σαν δυνατότητα επιλογής στο ήδη υπάρχουν πρόγραμμα σε SCALA για τον MCL αλλά εκτελείται ξεχωριστά, επειδή χρήζει διαφορετικής αντιμετώπισης, δίνοντας τη δυνατότητα της εκμετάλλευσης κάποιων πλεονεκτημάτων της γλώσσας Python και των πολύ ισχυρών βιβλιοθηκών της για πολλαπλασιασμό αραιών πινάκων. 39
54 4.2 Αναλυτική περιγραφή του προγράμματος Ακολουθεί αναλυτική περιγραφή του προγράμματος, της εισόδου και της εξόδου του, και περιγράφεται η αντιμετώπιση του προβλήματος που περιγράφτηκε Η είσοδος του προγράμματος Η είσοδος του προγράμματος είναι η έξοδος του αρχείου BLAST. Γενικά οι αλγόριθμοι της οικογένειας MCL δέχονται σαν είσοδο έναν μη κατευθυνόμενο γράφο. Είναι συχνό φαινόμενο, ο χρήστης να παρέχει βάση, η οποία αποτελείται από πρωτεΐνες πολλών οργανισμών. Επομένως είναι απαραίτητο να παρέχει και ένα αρχείο κειμένου με μία στήλη, όπου σε κάθε γραμμή αναγράφεται και το αναγνωριστικό (id) του κάθε οργανισμού που συμμετέχει στην βάση. Αυτό το id περιέχεται και στο αναγνωριστικό της κάθε πρωτεΐνης του οργανισμού αυτού. Για παράδειγμα, αν το id ενός οργανισμού είναι ΑΑΝΟ_ΧΧΧ_VD_PP_01, τότε το id μιας πρωτεΐνης μπορεί να είναι AANO_XXX_VD_PP_01_ Το πρόγραμμα δέχεται ως είσοδο: Το γράφο εισόδου του αλγόριθμου MCL, ο οποίος πρέπει να είναι σε σωστή μορφή για την υποστηριζόμενη δομή δεδομένων που παρέχει το Apache Spark μέσω του module του GraphX. Ένα κατώφλι που ονομάζεται epsilon το οποίο παίρνει πραγματικές τιμές στο διάστημα [0, 1). Το κατώφλι αυτό χρησιμοποιείται στον αλγόριθμο MCL και πιο συγκεκριμένα αποκόπτει τις τιμές που είναι μικρότερες από αυτό. Αυτή η διαδικασία ονομάζεται pruning και είναι ένα από τα στάδια του αλγορίθμου που συμβάλει έτσι ώστε ο πίνακας να παραμένει αραιός. Επίσης ένα άλλο κατώφλι, το οποίο ονομάζεται pruneearly και παίρνει πραγματικές τιμές στο διάστημα [0, 1) και δηλώνει, αν θα υποστεί pruning ο πίνακας γειτνίασης, ο οποίος αρχικά είχε γίνει στοχαστικός, πριν από το κυρίως μέρος του αλγορίθμου MCL. Τα δύο κατώφλια μπορούν να πάρουν την τιμή 0 κάτι το οποίο σημαίνει πως δεν θα ενεργοποιηθεί η λειτουργία του pruning. Το μέγιστο αριθμό επαναλήψεων, για τον οποίο το πρόγραμμα επιτρέπεται να εκτελείται, μέσω της μεταβλητής maxiterations. Την επιλογή του χρήστη για την ενεργοποίηση ή απενεργοποίηση του re-map και re-index των κόμβων του γράφου, έτσι ώστε να επιτευχθεί μέγιστη αποτελεσματικότητα, μέσω της μεταβλητής reindexnodes. Την παράμετρο expansionrate που ορίζει τη δύναμη που θα υψωθεί ο πίνακας στο βήμα του expansion, τις επιθυμητές διαστάσεις των υποπινάκων (blocksize) για το διαχωρισμό του πίνακα γειτνίασης, ώστε να επιτευχθεί ο πολλαπλασιασμός αραιών πινάκων. Την παράμετρο inflationrate που ορίζει τη δύναμη που θα εφαρμοστεί στο βήμα του inflation. Την παράμετρο selfloopweight που ορίζει το μέγιστο βάρος πολλαπλασιασμού, που θα χρησιμοποιηθεί κατά την προ επεξεργασία του αρχικού πίνακα γειτνίασης και κατά την είσοδο των Self-Loops. 40
55 Την παράμετρο repartitionmatrix που ορίζει την επιλογή του χρήστη για την αλλαγή του αριθμού των partition που έχει χωριστεί ο πίνακας μετά την προεπεξεργασία του προγράμματος (περισσότερες πληροφορίες στο ). Αυτή δέχεται τιμές Some(επιθυμητός αριθμός partition) ή σε περίπτωση που δεν επιθυμεί ο χρήστης την ενεργοποίηση της λειτουργίας αυτής, δέχεται την τιμή None. Οι προαιρετικές επιλογές που έχει ο χρήστης είναι: Η ρύθμιση του debugmode, μιας παραμέτρου που είτε ενεργοποιεί είτε απενεργοποιεί τον υπολογισμό και την εμφάνιση του αριθμού των μη μηδενικών στοιχείων του πίνακα. Χρησιμοποιείται σε κάθε επανάληψη, πριν και μετά τα βήματα που εφαρμόζονται σε αυτή. Η ενεργοποίηση ή απενεργοποίηση του συστήματος check pointing μέσω του checkpointenable στο framework του Spark, ανάλογα με τις ανάγκες κάθε προβλήματος αλλά και ανάλογα με το αν το Spark τρέχει σε standalone mode ή σε Yarn Mode, καθώς η επιλογή αυτή είναι διαθέσιμη μόνο στη δεύτερη περίπτωση. Η δυνατότητα επιλογής ανάμεσα σε δύο συναρτήσεις που ελέγχουν, αν ο αλγόριθμος συγκλίνει σε κάθε επανάληψη. Αυτή επιτρέπει την επιλογή της πιο γρήγορης συνάρτησης για τον εκάστοτε τύπο προβλήματος μέσω της παραμέτρου seconddifference. Η παράμετρος localcalculations που μας δίνει τη δυνατότητα της επιλογής αναμεσά σε δυο τρόπους εφαρμογής των συναρτήσεων pruning-inflate-normalization. Συγκεκριμένα στην περίπτωση που η μεταβλητή είναι false, οι συναρτήσεις αυτές εφαρμόζονται διανεμημένα. Τα δεδομένα προσπελαύνονται παραπάνω από μια φορά, έτσι ώστε να εφαρμοστούν όλες αυτές οι συναρτήσεις. Στην περίπτωση που η επιλογή αυτή είναι true τότε οι συναρτήσεις αυτές εφαρμόζονται σε κάθε κόμβο εκμεταλλευόμενες την τοπικότητα των δεδομένων. Αν και φαινομενικά η δεύτερη επιλογή είναι καλύτερη, χρησιμοποιείται η πρώτη επιλογή localcalculations=true καθώς πρώτον περιέχει ένα πιο έξυπνο τρόπο για την αποκοπή των στοιχείων στην συνάρτηση Pruning κάτι το οποίο δεν είναι δυνατό να εφαρμόσουμε στον άλλον τρόπο και δεύτερον διότι η τρόπος επεξεργασίας που εκμεταλλεύεται την τονικότητα των δεδομένων είναι σε πειραματικό στάδιο με αποτέλεσμα πολλές φορές να δίνει πολύ χειρότερη απόδοση αλλά και αποτελέσματα σε σχέση με το διανεμημένο τρόπο. 41
56 Ακολουθεί ένας συνοπτικός πίνακας (Πίνακας 4-1) ο οποίος περιέχει τις πληροφορίες για κάθε μεταβλητή όρισμα της συνάρτησης run της κλάσης MCL. Πίνακας 4-1 Ορίσματα Εισόδου της υλοποίησης MCL σε SCALA Όνομα Μεταβλητής graph Τύπος Μεταβλητής Graph[VD, Double] Προεπιλεγμένες Τιμές - pruneearly Double epsilon Double 0.01 maxiterations Integer 10 reindexnodes Boolean true expansionrate Integer 2 inflationrate Double 2.0 repartitionmatrix Option[Integer]= [Some(Integer), None] Some(100) blocksize Integer 1024 selfloopweight Double 0.1 debugmode Boolean true checkpointenable Boolean false seconddifference Boolean true localcalculations Boolean false 42
57 4.2.2 Τα βήματα του προγράμματος Παρουσιάζεται η βασική ροή του προγράμματος που υλοποιήθηκε (Σχήμα 4.2-1). Σχήμα Διάγραμμα ροής προγράμματος MCL 43
58 Προεπεξεργασία του αρχείου εισόδου Σχήμα Μορφή δεδομένων εξόδου BLAST Από αυτό το αρχείο εξόδου του BLAST, έχει ενδιαφέρον είτε η 3 η στήλη είτε η 11 η, οι οποίες είναι το identity και το e-value αντίστοιχα. Επιλέγεται μια από αυτές τις στήλες, ανάλογα με τη πληροφορία που επιθυμεί ο χρήστης να ομαδοποιήσει τις πρωτεΐνες. Στην περίπτωση που επιλεγεί ο δείκτης e-value για την ομοιότητα ανάμεσα στις αλληλουχίες, χρειάζεται κάποια προεπεξεργασία των τιμών, πριν εφαρμοστεί ο MCL. Ισχύει πως όσο μικρότερο είναι το e-value, τόσο πιο σημαντική θεωρείται η ευθυγράμμιση. Όμως για τον MCL όσο μεγαλύτερη είναι η τιμή της αντιστοιχίας, δηλαδή το βάρος της ακμής ανάμεσα σε δύο κόμβους, τόσο πιθανότερο είναι να καταλήξουν αυτοί οι κόμβοι στην ίδια συστάδα. Επομένως, πρέπει να αναστρέψουμε την τιμή των e-value. Αυτό γίνεται εφαρμόζοντας τον αρνητικό λογάριθμο του 10 σε κάθε e-value: log 10 (e value) (1) Στα e-value που έχουν τιμή μηδέν αντιστοιχίζεται μια πολύ μεγάλη τιμή (συγκριτικά άπειρη). Το συγκεκριμένο βήμα πρέπει να γίνει πριν από την αρχή του βασικού κομματιού του προγράμματος. Χρησιμοποιούνται εργαλεία του bash terminal, του λειτουργικού συστήματος Linux, καθώς και το Apache Spark για την τελική επεξεργασία του αρχείου, πριν χρησιμοποιηθεί σαν όρισμα στον αλγόριθμο MCL. Μετά την επιλογή του δείκτη (identity/e-value) που θα ομαδοποιηθούν τα δεδομένα, έπεται η αποκοπή των άλλων τιμών από την έξοδο του προγράμματος BLAST με την εντολή: cut -f 1,2,3 output.blastp > output.abc Στην περίπτωση επιλογής του δείκτη identity. cut -f 1,2,11 output.blastp > output.abc Στην περίπτωση επιλογής του δείκτη e-value. 44
59 Το αρχείο που προκύπτει μετά την εκτέλεση του κώδικα αυτού είναι της μορφής για την πρώτη περίπτωση: Σχήμα Μορφή αρχείου εισόδου στην περίπτωση χρήσης της στήλης Identity Και για τη δεύτερη περίπτωση της μορφής: Σχήμα Μορφή αρχείου εισόδου στην περίπτωση χρήσης της στήλης e-value Παρατηρήθηκε πως υπάρχουν ακόμα αρκετά δεδομένα τα οποία δεν χρειάζονται για την εκτέλεση του αλγορίθμου. Πριν εισαχθεί το αρχείο ως είσοδο, πρέπει να αφαιρεθούν και τα υπόλοιπα άχρηστα δεδομένα. Επίσης πρέπει τα δεδομένα να είναι σε μορφή, την οποία μπορεί να αναγνωρίσει και να εκμεταλλευτεί το τελικό πρόγραμμα. Για την αφαίρεση των δεδομένων αυτών, χρησιμοποιήθηκε το ίδιο το Apache Spark και η γλώσσα SCALA. Μια παρατήρηση που έγινε είναι ότι πολλές φορές τα αρχεία εξόδου του BLAST, περιείχαν μερικές εγγραφές που μπορεί να είχαν το ίδιο ζευγάρι κλειδιών αλλά είχαν διαφορετικές τιμές βάρους. Για να λυθεί το πρόβλημα αυτό, επιλέχθηκε η χρήση μόνο των μεγαλύτερων τιμών για το identity, στις διπλότυπες εγγραφές και η διαγραφή όλων των άλλων. O Κώδικας σε SCALA στο framework του Apache Spark που εκτελείται για την πρώτη περίπτωση είναι ο εξής. Αλγόριθμος 5 Εκκαθάριση διπλότυπων εγγραφών μέσω SPARK API σε SCALA import org.apache.spark.rdd.rdd import org.apache.spark.{sparkconf, SparkContext} import scala.io.source import scala.reflect.classtag import scala.reflect.io.path import scala.util.try sc.setloglevel("info") val lines = sc.textfile("/path/to/input/file") val lines5=lines.map(s => s.split("\\$ \\s")).map(s => (s(0)+"-"+s(1),s(3)+"- "+s(4),"%.5f".format(s(6).todouble/100))) lines5.first() val data= lines5.todf("key1","key2","value") data.take(1) data.count() val newdata=data.sort($"value".desc).dropduplicates(array("key1","key2")) newdata.count() val lines6= newdata.map(s => s(0)+" "+s(1)+" "+ s(2)) lines6.take(20) lines6.coalesce(1).saveastextfile("/path/to/output/folder") 45
60 Επίσης ακολουθεί ο κώδικας σε γλώσσα Python που χρησιμοποιεί τα Pandas Dataframes, ο οποίος σβήνει τις εγγραφές που έχουν τα ίδια κλειδιά και κρατάει μόνο την εγγραφή με τη μεγαλύτερη τιμή για κάθε ζευγάρι κλειδιών. Αλγόριθμος 6 Εκκαθάριση διπλότυπων εγγραφών μέσω Pandas API σε Python import pandas as pd filenamer='/path/to/input/file' filenamew='/path/to/output/file' #Read data file and return sparse matrix in coordinate format data = pd.read_csv(filenamer, sep=' ',names=['key1','key2','values'], header=none, dtype={'key1': str, 'key2': str, 'values':float}) print type(data) #Outputs The Rows that kept out of Duplicate print data[data.duplicated(['key1', 'key2'], keep=false)].groupby(('key1', 'key2')).max() #Write The Results Out data.to_csv(filenamew, header=none, index=none, sep=' ', mode='w') Εφόσον το πρόγραμμα έχει προεπεξεργαστεί τα δεδομένα, έτσι ώστε να είναι στην κατάλληλη μορφή για να εισαχθούν στο πρόγραμμα, υπάρχουν δυο δυνατότητες για να χρησιμοποιηθεί το αρχείο που έχει προκύψει. 1. Η φόρτωση του αρχείου στο διανεμημένο σύστημα αποθήκευσης δεδομένων HDFS. 2. Η συμπίεση του αρχείου και ο χειροκίνητος διαμοιρασμός του στους κόμβους του δικτύου των υπολογιστών που θα το χρειαστούν, και έπειτα η αποσυμπίεση του σε κάθε κόμβο ξεχωριστά. Κάθε μέθοδος έχει τα δικά της πλεονεκτήματα, όμως γενικά συστήνεται η χρήση του διανεμημένου συστήματος δεδομένων. Στην περίπτωση της χρήσης HDFS ενεργοποιείται η δυνατότητα αποθήκευσης διάφορων checkpoint σε κάθε επανάληψη έτσι ώστε να είναι πιο γρήγορη η ανάκτηση των δεδομένων σε περίπτωση σφάλματος κατά την εκτέλεση του προγράμματος, λειτουργία που μπορεί να αποδειχθεί απαραίτητη για την σωστή και ομαλή λειτουργία του. Ωστόσο χρησιμοποιήθηκε η δεύτερη μέθοδος, λόγω της εύκολης δημιουργίας της ομάδας υπολογιστών (Apache Spark standalone Cluster) που δεν υποστηρίζει το HDFS. Επίσης ένας ακόμα λόγος που επιλέχθηκε η δεύτερη μέθοδος είναι η υλοποίηση του αλγόριθμου R-MCL, στον οποίο ο αρχικός πίνακας χρησιμοποιείται όπως είναι, χωρίς να χρειάζεται αλλαγές. Παρόλα αυτά είναι δυνατή και η χρήση της πρώτης μεθόδου για την υπάρχουσα υλοποίηση δίχως προβλήματα, απλά αλλάζοντας το path για το αρχείο εισόδου σε ένα HDFS σύστημα. 46
61 Mapping στα μοναδικά στοιχεία & Self-Loops Εφόσον έχει διορθωθεί το πρόβλημα με τις πολλαπλές δηλώσεις του βάρους μιας ακμής ανάμεσα σε δυο κόμβους και έχει το πώς θα διαμοιραστεί το αρχείο στους υπολογιστές-εργάτες (worker nodes) του cluster, έπεται το επόμενο βήμα που είναι η δημιουργία της δομής του γράφου ανάλογα με τις πληροφορίες του αρχείου. Στο σημείο αυτό πρέπει να φορτωθεί το αρχείο εισόδου που έχει προκύψει από την προηγουμένη προεπεξεργασία στο οικοσύστημα του Apache Spark και επίσης να επιλεχθεί ταυτόχρονα ο αριθμός των Partitions που θα χωριστεί το αρχείο κατά την είσοδο του. Τα partitions αυτά διαμοιράζονται αυτόματα κατά την ανάγνωση τους στους υπολογιστές-εργάτες. Στη συνέχεια πρέπει να φορτωθούν τα δεδομένα στη δομή δεδομένων που παρέχει το Spark σχετικά με τους γράφους. Δυστυχώς το GraphX module του Apache Spark δεν υποστηρίζει τη δυνατότητα τα ID των κόμβων να είναι String αλλά μόνο μεταβλητές τύπου Long. Για να αντιμετωπιστεί αυτό το πρόβλημα υπήρξαν οι εξής επιλογές: 1. Να χρησιμοποιηθεί η βιβλιοθήκη GraphFrames 1, ώστε να επεκταθούν οι δυνατότητες του Apache Spark και της υπάρχουσας βιβλιοθήκης του GraphX. 2. Να μετατραπεί το String Id του σε ένα αντίστοιχο Long Id μέσω τεχνικών Hashing. 3. Να δημιουργηθεί ένας χάρτη (map), που θα συνδέει κάθε String ID με ένα νέο μοναδικό αναγνωριστικό τύπου Long. Επιλέχθηκε να μην χρησιμοποιηθεί η βιβλιοθήκη GraphFrames, διότι βρίσκεται υπό διαρκή ανάπτυξη, σε στάδιο που δεν θεωρείται ακόμα ασφαλές για τη χρήση σε περιβάλλοντα παραγωγής (production environment), έτσι ώστε να αποφευχθούν πιθανά σφάλματα που θα προκύπταν από τη χρήση της. Στη συνέχεια έγιναν διάφορες προσπάθειες για την υλοποίηση της δεύτερης επιλογής. Αρχικά χρησιμοποιήθηκε η συνάρτηση string.hashcode, η ενσωμάτωση της οποίας ήταν πάρα πολύ εύκολη. Παρόλο αυτά, σύμφωνα με την βιβλιογραφία, ο συγκεκριμένος τρόπος πρέπει να αποφεύγεται, καθώς υπάρχει πολύ μεγάλη πιθανότητα «σύγκρουσης» (δυο string οδηγούν στο ίδιο long-id) σε έναν αριθμό δεδομένων πολύ μικρότερο από αυτόν που πρέπει να διαχειριστούμε. Αξιοσημείωτο είναι πως η πιθανότητα σύγκρουσης αυξάνεται με μεγάλο ρυθμό όσο αυξάνει ο αριθμός των δεδομένων. Για τον λόγο αυτό στη συνέχεια επιλέχθηκε η χρήση της συνάρτησης string.##.tolong η οποία θεωρητικά έχει πιο τυχαία κατανομή, άρα και μικρότερη πιθανότητα «σύγκρουσης». Δυστυχώς ούτε αυτή η συνάρτηση παρείχε ικανοποιητικά αποτελέσματα και για αυτό επιλέχθηκε η δοκιμή των συναρτήσεων MurmurHash και MurmurHash3. Αυτές θεωρούνται από τις καλύτερες συναρτήσεις για Hashing, λόγω του πολύ μικρού μέχρι και μηδενικού αριθμού συγκρούσεων που δημιουργούν. Ωστόσο ο έλεγχος τους σε ένα dataset που περιέχει αρκετά στοιχεία, οδηγούσε και πάλι σε συγκρούσεις. Έπειτα από τις προηγούμενες αποτυχημένες δοκιμές επιλέχθηκε η δημιουργία ενός χάρτη όπου κάθε μοναδικό αναγνωριστικό πρωτεΐνης λαμβάνει και ένα μοναδικό αναγνωριστικό τύπου Long, έτσι ώστε να αποφευχθούν οι πιθανές συγκρούσεις. Η δημιουργία του χάρτη μπορεί να καταναλώνει κάποιο χρόνο
62 αρχικά, ο οποίος εξαρτάται από το μέγεθος της εισόδου, αλλά συμβάλει στην ομαλή λειτουργία του προγράμματος και επομένως επιλέχθηκε η χρήση αυτού. Εφόσον έχει φορτωθεί ο γράφος εισόδου στη δομή που χρησιμοποιεί το πρόγραμμα, μπορεί να κληθεί ο αλγόριθμος MCL αλλάζοντας τις τιμές για όλες τις παραμέτρους, που επιθυμεί ο χρήστης να μην χρησιμοποιηθεί η default τιμή. Στην αρχή εκτέλεσης του προγράμματος μας δηλώνεται αν θα ενεργοποιηθεί το re-index στους αριθμούς των κόμβων ώστε να βελτιστοποιηθεί ακόμα περισσότερο η εκτέλεση του αλγορίθμου. Αν ενεργοποιηθεί η επιλογή αυτή δημιουργείται ένας πίνακας lookup που χρησιμοποιείται για να συσχετιστούν τα προηγούμενα id με τα καινούργια id που έχουν αποδοθεί στις πρωτεΐνες. Έπειτα το πρόγραμμα δημιουργεί έναν νέο γράφο στον οποίον έχουν ανατεθεί τα καινούργια id, που έχουν αλλαχθεί και βρίσκονται στο lookuptable. Στη συνέχεια το πρόγραμμα μετατρέπει τη δομή του γράφου στη διανεμημένη δομή αποθήκευσης IndexedRowMatrix που υποστηρίζεται εγγενώς από το API του Spark. Κατά τη διαδικασία της μετατροπής το πρόγραμμα επεξεργάζεται τον πίνακα γειτνίασης του γράφου και προσθέτει τους βρόχους (self-loops) της κύριας διαγώνιου (προαιρετικά) με τιμές που είναι ανάλογες της παραμέτρου selfloopweight, που έχει οριστεί κατά την κλήση του αλγορίθμου MCL(βλέπε κεφάλαιο). Κατά την εκτέλεση της συγκεκριμένης μετατροπής το πρόγραμμα επεξεργάζεται τον αριθμό των τμημάτων (partitions), βάση του αριθμού που έχει ορίσει ο χρήστης για το διαμοιρασμό των δεδομένών (repartitionmatrix) στους υπολογιστές του δικτύου Αρχική Κανονικοποίηση και Αρχικό Pruning Έπειτα από τη συνολική προεπεξεργασία των δεδομένων το πρόγραμμα πρέπει να κάνει τον πίνακα συσχέτισης στοχαστικό, έτσι ώστε να είναι κατάλληλος για τον αλγόριθμο MCL. Για να γίνει ο πίνακας κατάλληλος πρέπει να γίνει στοχαστικός κατά στήλη, δηλαδή να κανονικοποιηθεί ανά στήλη. Επίσης το πρόγραμμα παρέχει τη δυνατότητα ενός πιο σκληρού συστήματος pruning, που αν ενεργοποιηθεί αφαιρεί τις χαμηλές τιμές κάτω από το threshold pruneearly στο στοχαστικό πίνακα. Η συγκεκριμένη επιλογή προτείνεται να βρίσκεται στην τιμή 0, ώστε να είναι απενεργοποιημένη, εκτός από την περίπτωση που εισαχθεί ένας πολύ μεγάλος γράφος στο πρόγραμμα για να επιταχυνθεί ο αλγόριθμος. Όταν η συγκεκριμένη επιλογή ισούται με το 0, το πρόγραμμα δεν εκτελεί αρχικό pruning, με αποτέλεσμα να δημιουργεί το στοχαστικό πίνακα με κανονικοποίηση των τιμών του ανά στήλη. Σε περίπτωση ωστόσο που δοθεί μια τιμή ανάμεσα στο (0,1) τότε αρχικά κανονικοποιεί τον πίνακα, ψάχνει για τιμές μικρότερες από την τιμή που του δόθηκε, τις αφαιρεί και στη συνέχεια τις κανονικοποιεί κατά στήλη. Το αποτέλεσμα είναι ένας στοχαστικός πίνακας και πάλι. Αν η τιμή της μεταβλητής είναι διάφορη του μηδενός, προφανώς η εκτέλεση του βήματος αυτού χρειάζεται χρόνο μεγαλύτερο από ότι στην επιλογή που εκτελεί μόνο την κανονικοποίηση, ειδικά στην περίπτωση ενός αρκετά μεγάλου γράφου. Η ενεργοποίηση της συγκεκριμένης επιλογής αλλάζει τον αρχικό γράφο, κάτι το οποίο μπορεί να δημιουργήσει διαφορές στο τελικό αποτέλεσμα. Ωστόσο μερικές 48
63 φορές η συγκεκριμένη επιλογή είναι αρκετά χρήσιμη, επιταχύνοντας την εκτέλεση του προγράμματος με μηδαμινές αλλαγές στο τελικό αποτέλεσμα. Στο σημείο αυτό το πρόγραμμα φτάνει στο κύριο και επαναληπτικό κομμάτι του, το οποίο θα εκτελείται μέχρι να συμβεί ένα από τα δυο παρακάτω γεγονότα: 1. Να συμπληρωθεί ο μέγιστος επιτρεπτός αριθμός επαναλήψεων που έχει ορισθεί από το χρήστη. 2. Να επιτευχθεί η σύγκλιση στον αλγόριθμο. Το κομμάτι αυτό περιλαμβάνει μια πληθώρα ενεργειών και ελέγχων από το πρόγραμμα και για αυτό κρίνεται σκόπιμη η σύντομη ανάλυση αυτών Expansion Για την εκτέλεση της συγκεκριμένης εργασίας υψώνεται ο στοχαστικός πίνακας στη δύναμη την οποία έχει ορίσει ο χρήστης. Για να το επιτευχθεί αυτό αρκεί να χρησιμοποιηθεί η μέθοδος του κλασικού πολλαπλασιασμού πινάκων, που ορίζεται ως εξής: Εξίσωση 3 Βήμα Expand του MCL Το συγκεκριμένο βήμα αποτελεί το πιο απαιτητικό κομμάτι του αλγορίθμου από άποψη υπολογιστικών πόρων και χρόνου εκτέλεσης, καθώς έχει την υψηλότερη πολυπλοκότητα από όλα τα κομμάτια του προγράμματος. Ο αλγόριθμος έχει σχεδιασθεί κυρίως για να χρησιμοποιείται με datasets, τα οποία περιέχουν αραιούς γράφους. Γνωρίζοντας πως υπάρχουν αλγόριθμοι και μέθοδοι οι οποίοι έχουν σχεδιασθεί ειδικά για την βελτίωση της απόδοσης και της διαχείρισης του πολλαπλασιασμού πινάκων, σε συνδυασμό με τον κύριο λόγο τον οποίο επιλέχθηκε η υλοποίηση του MCL στο περιβάλλον του Spark (βλέπε κεφάλαιο 2.6.6) και λογού του μεγάλου όγκου δεδομένων τον οποίο κληθήκαμε να διαχειριστούμε, κρίνεται απαραίτητη η δημιουργία μιας υλοποίησης που να εκμεταλλεύεται τα πλεονεκτήματα των αραιών πινάκων. Υπάρχουν πολλές βιβλιοθήκες οι οποίες εκμεταλλεύονται κάποιες ιδιότητες των αραιών πινάκων, αλλά δυστυχώς για το framework που επιλέχθηκε, αν και υπάρχει η δυνατότητα αποθήκευσης αραιών πινάκων σε διανεμημένες δομές δεδομένων, δεν έχει σχεδιασθεί κάποιος native αλγόριθμος, ο οποίος να επιτρέπει τον υπολογισμό του πολλαπλασιασμού αραιών πινάκων και να εκμεταλλεύεται τα πλεονεκτήματα τους. Για την ακρίβεια, σε διανεμημένες μορφές δεδομένων δίνεται η δυνατότητα πολλαπλασιασμού πινάκων στη μορφή δεδομένων BlockMatrix. Για να εκτελεσθεί αυτός ο πολλαπλασιασμός, και ο αριστερός πίνακας και ο δεξιός πίνακας στην περίπτωση που είναι αραιοί, μετατρέπονται σε πυκνούς πίνακες πριν την εκτέλεση του πολλαπλασιασμού, ώστε να χρησιμοποιήσουν τις βιβλιοθήκες optimization BLAS. 49
64 Δυστυχώς αυτή η μετατροπή δεν επιτρέπει την είσοδο πινάκων, οι οποίοι είναι μεγάλοι σε διαστάσεις, ακόμα και αν είναι αραιοί, καθώς η διατήρηση ενός μεγάλου πίνακα σε δομές δεδομένων σχεδιασμένες για πυκνούς πίνακες χρειάζεται απαγορευτικά μεγάλους υπολογιστικούς πόρους. Αυτό ακυρώνει όλα τα πλεονεκτήματα τα οποία θέλουμε να εκμεταλλευτούμε από το framework του Spark, κάνοντας την υλοποίηση αυτή να είναι χειρότερη επιλογή από μια υλοποίηση που τρέχει παράλληλα σε ένα μόνο υπολογιστικό σύστημα. Παρόλο αυτά τα πλεονεκτήματα που προσφέρει το Spark είναι αρκετά σημαντικά και χρήσιμα. Έτσι επιλέχθηκε η έρευνα των επιλογών που υπάρχουν, για να επιτευχθεί ο σκοπός, αφού τα native εργαλεία δεν κάλυπταν τις ανάγκες. Για να βρεθεί αν υπάρχει κάποια ήδη υπάρχουσα βιβλιοθήκη που να καλύπτει τις ανάγκες τέθηκαν μερικές προϋποθέσεις, τις οποίες θα έπρεπε απαραίτητα να τηρούν. Κατανοητή βιβλιογραφία ή τουλάχιστον πολλαπλές αναφορές για την χρήση τους. Αποθήκευση σε δομή δεδομένων κατάλληλη για αραιούς πίνακες. Πολλαπλασιασμός πινάκων, ο οποίος να εκμεταλλεύεται τις ιδιότητες των αραιών πινάκων. Ο πολλαπλασιασμός πινάκων να δίνει ως αποτέλεσμα πίνακα αποθηκευμένο σε δομή δεδομένων κατάλληλη για αραιούς πίνακες. Εφόσον η παρούσα υλοποίηση γράφτηκε σε γλώσσα SCALA, πρέπει η βιβλιοθήκη που θα επιλεχθεί να υποστηρίζεται από την γλώσσα SCALA ή την γλώσσα JAVA. Αν και υπάρχει μια πληθώρα βιβλιοθηκών, οι οποίες τηρούν μια ή παραπάνω από τις απαραίτητες προϋποθέσεις, οι δυο τελευταίες προϋποθέσεις οδήγησαν στην απόρριψη πολλών από τις υπάρχουσες βιβλιοθήκες. Για την ακρίβεια δεν βρέθηκε κάποια βιβλιοθήκη που να κάλυπτε όλες τις προϋποθέσεις. Οι ήδη υπάρχουσες δομές δεδομένων του Spark τηρούν τις δύο πρώτες προϋποθέσεις, με αποτέλεσμα τη σκέψη μήπως μια υλοποίηση - επέκταση στις υπάρχουσες βιβλιοθήκες θα μπορούσε να βοηθήσει να αντιμετωπιστεί το πρόβλημα. Έπειτα από έρευνα στο οικοσύστημα του Spark για το ποιες δομές δεδομένων υποστηρίζουν την αποθήκευση αραιών πινάκων, προτείνονται για τη χρήση αυτή αλλά και είναι διανεμημένες, προέκυψαν οι εξής επιλογές: BlockMatrix Μια δομή δεδομένων που χωρίζει το συνολικό πίνακα σε κομμάτια διαστάσεων που επιλεγεί ο χρήστης. IndexedRowMatrix Μια δομή δεδομένων που αποθηκεύει τον πίνακα σε μία μορφή που βασίζεται στις μορφές αποθήκευσης αραιών πινάκων CSR/CSC (Compressed Sparse Row / Compressed Sparse Column). CoordinateMatrix Μια δομή της μορφής COO, η οποία αποτελείται από τρείς στήλες, οι δύο πρώτες αποτελούνται από τα id των κορυφών και η τρίτη από το βάρος της ακμής, που ενώνει αυτές τις κορυφές. 50
65 Καμία από τις παραπάνω δομές δεν υποστηρίζει πολλαπλασιασμό αραιών πινάκων και γενικότερα μόνο η δομή BlockMatrix υποστηρίζει κάποιες πράξεις μεταξύ διανεμημένων πινάκων (29). Πρώτη προσπάθεια: Σύμφωνα με το website του Apache Spark η τελευταία μορφή δεδομένων (CoordinateMatrix) προτείνεται όταν υπάρχουν πίνακες των οποίων οι διαστάσεις είναι τεράστιες και είναι αρκετά αραιοί. Επίσης εφόσον τα δεδομένα εισόδου βρίσκονται σε αυτή τη μορφή επιλέχθηκε να υλοποιηθεί η πράξη του πολλαπλασιασμού σε τέτοιο τύπο πίνακα καθώς δεν θα γινόταν μετατροπές από την μια δομή στην άλλη. Έπειτα από έρευνα σε βιβλιογραφία σχετική με αλγορίθμους κατάλληλους για τον πολλαπλασιασμό πινάκων σε διανεμημένα συστήματα, βρέθηκε πως έχει ήδη σχεδιαστεί ένας αλγόριθμος για τον πολλαπλασιασμό πινάκων μορφής CoordinateMatrix, ο οποίος προτείνεται από τον κύριο Reza Zadeh, έναν επιστήμονα ενεργό στην κοινότητα του Spark (30). Αλγόριθμος 7 Ψευδοκώδικας πολλαπλασιασμού πινάκων τύπου CoordinateMatrix (30) Η συνάρτηση που δημιουργήσαμε για τον πολλαπλασιασμό στην γλώσσα SCALA είναι: Αλγόριθμος 8 Πολλαπλασιασμός πινάκων τύπου CoordinateMatrix έκδοση 1 (30) def coordinatematrixmultiply1(α: CoordinateMatrix, Β: CoordinateMatrix): CoordinateMatrix = { val C = A.map(e => (e.j, e)).join(b.map(e => (e.i, e))).map(p => ((p._2._1.i, p._2._2.j), p._2._1.value * p._2._2.value)) C } Επίσης ακολουθεί μια ακόμα συνάρτηση που βρέθηκε και θα μπορούσε να χρησιμοποιηθεί για τον πολλαπλασιασμό αραιών πινάκων σε μορφή CoordinateMatrix. 51
66 Αλγόριθμος 9 Πολλαπλασιασμός πινάκων τύπου CoordinateMatrix έκδοση 2 (31) def coordinatematrixmultiply2(leftmatrix: CoordinateMatrix, rightmatrix: CoordinateMatrix): CoordinateMatrix = { val M_ = leftmatrix.entries.map({ case MatrixEntry(i, j, v) => (j, (i, v)) }) val N_ = rightmatrix.entries.map({ case MatrixEntry(j, k, w) => (j, (k, w)) }) val productentries = M_.join(N_).map({ case (_, ((i, v), (k, w))) => ((i, k), (v * w)) }).reducebykey(_ + _).map({ case ((i, k), sum) => MatrixEntry(i, k, sum) }) } new CoordinateMatrix(productEntries) Αν και ήταν εύκολη η εισαγωγή και η χρήση των δυο συναρτήσεων αυτών, η συγκεκριμένη πρόταση απορρίφθηκε σύντομα καθώς δεν μας έδινε τη δυνατότητα να εκμεταλλευτούμε την τοπικότητα των δεδομένων στους κόμβους του δικτύου. Αυτό θα δημιουργούσε έναν τεράστιο όγκο μεταφορών από τον έναν κόμβο στον άλλον κατά τη διάρκεια του πολλαπλασιασμού. Επίσης η συγκεκριμένη δομή δεδομένων αν και είναι αρκετά οικονομική για τη δημιουργία ενός αραιού πίνακα αλλά και για την μεταβολή των στοιχείων αυτού, δεν είναι η πλέον κατάλληλη για την εκτέλεση αριθμητικών πράξεων μεταξύ πινάκων (32). Παρόλο αυτά επιλέχθηκε η διατήρηση των συναρτήσεων αυτών για πιθανή σύγκριση με άλλες συναρτήσεις, ώστε να διαπιστωθεί αν είναι όντως καλύτερες ή χειρότερες. 52
67 Δεύτερη προσπάθεια: Για να επιλεχθεί η πιο κατάλληλη από τις δυο δομές που έμειναν, ελέγχθηκε ποια από αυτές συμφέρει περισσότερο στο βήμα του πολλαπλασιασμού πινάκων αλλά και στα άλλα βήματα, ώστε να αποφευχθούν αχρείαστες μετατροπές από τον ένα τύπο στον άλλο. Ακολουθεί η σύγκριση των δομών δεδομένων: IndexedRowMatrix Πλεονεκτήματα: Κάθε γραμμή είναι αποθηκευμένη σε αραιή μορφή, η κανονικοποίηση είναι εύκολη καθώς στην υπάρχουσα υλοποίηση γίνεται κατά γραμμή ενώ στην αρχική υλοποίηση κατά στήλη. Μειονεκτήματα: Δεν υπάρχει δυνατότητα πολλαπλασιασμού μεταξύ δυο IndexedRowMatrix. BlockMatrix Πλεονεκτήματα: Πλήρως επεκτάσιμη μορφή (scalable). Τα Blocks αποτελούνται από μέγεθος το οποίο επιδέχεται αλλαγές (1024 x 1024 στην τυπική του τιμή), χρησιμοποιώντας αραιούς πίνακες βασιζομένους σε Compressed Sparse Column τεχνική. Μειονεκτήματα: Δύσκολο να υλοποιηθεί η κανονικοποίηση. Η βιβλιογραφία γύρω από το συγκεκριμένο θέμα, καθώς και η ανάγκη για τη βέλτιστη εκμετάλλευση της τοπικότητας των δεδομένων και της υπολογιστικής ισχύος κάθε κόμβου, οδηγούν στην αναζήτηση μιας λύσης, η οποία εκμεταλλεύεται το διανεμημένο χαρακτήρα του προγράμματος στο μέγιστο. Αυτή η προϋπόθεση ικανοποιείται σε μεγαλύτερο βαθμό με τη δομή δεδομένων BlockMatrix. Η συγκεκριμένη δομή είχε το πλεονέκτημα της υποστήριξης διανεμημένων αριθμητικών πράξεων, ωστόσο μόνο για κανονικούς - πυκνούς πίνακες. Επομένως αρκεί να υλοποιηθεί μια συνάρτηση που να υποστηρίζει τον πολλαπλασιασμό πινάκων σε αραιή μορφή και την αποθήκευση του αποτελέσματος σε αραιή μορφή. Το Spark δίνει έναν εύκολο και γρήγορο τρόπο για την μετατροπή των πινάκων από την μια μορφή στην άλλη κάνοντας ακόμα πιο δελεαστική την υλοποίηση αυτή (33). Έπειτα από αρκετή έρευνα, ενώ δεν υπήρχε κάποια υλοποίηση που να ικανοποιεί τις ανάγκες σε αυτή τη δομή δεδομένων, βρέθηκε ότι ένα παρόμοιο πρόβλημα ανατέθηκε στους μηχανικούς του PayPal Israel και δημιουργήσαν κάποιες συναρτήσεις οι οποίες έλυναν το πρόβλημα μερικώς, αν και είναι βασισμένες σε μια απλοϊκή υλοποίηση του πολλαπλασιασμού αραιών πινάκων. Ύστερα από συνεργασία με τους μηχανικούς αυτούς, τροποποιήθηκαν οι συναρτήσεις αυτές ώστε να προσανατολίζονται στις δίκες μας ανάγκες και προϋποθέσεις και δημιουργήθηκε μια υλοποίηση βασισμένη στην ήδη δοκιμασμένη λύση που προτάθηκε. 53
68 Inflation και Normalization To συγκεκριμένο βήμα ορίζεται ως η ύψωση σε δύναμη κάθε στοιχείου του πίνακα και έπειτα γίνεται η κανονικοποίηση του πίνακα κατά στήλη για τη δημιουργία του στοχαστικού πίνακα. Εξίσωση 4 Βήμα Inflation του MCL Αυτό το βήμα δεν είναι τόσο απαιτητικό υπολογιστικά και η υλοποίηση μιας συνάρτησης ήταν αρκετά εύκολη στο framework του Spark με την χρήση μερικών map reduce εντολών Pruning Στο βήμα αυτό αν έχει δοθεί η εντολή για αποκοπή τιμών μικρότερων από ένα threshold, διαγράφονται οι τιμές αυτές και ξανάκανονικοποιείται ο πίνακας έτσι να είναι σε στοχαστική μορφή. Ούτε αυτό το βήμα είναι αρκετά απαιτητικό υπολογιστικά και μπορεί να υλοποιηθεί με μερικές γραμμές εντολών mapreduce Έλεγχος Σύγκλισης Ύστερα από κάθε επανάληψη, το πρόγραμμα ελέγχει τον πίνακα συσχέτισης, αν έχει φτάσει σε σταθερή κατάσταση (steady state) μέσω της επόμενης εξίσωσης: Εξίσωση 5 Βήμα ελέγχου σύγκλισης του MCL Η σύγκριση αυτή, αν και είναι θεωρητικά μια απλή εργασία, μπορεί να είναι χρονοβόρα για σύγκριση δυο μεγάλων πινάκων, οι οποίοι δεν είναι αρκετά αραιοί. Παρόλο αυτά είναι μια βασική λειτουργία του αλγορίθμου και δεν μπορεί να αφαιρεθεί Εντοπισμός ομάδας που ανήκει το κάθε στοιχείο και σωστή αναπαράσταση τους Σε αυτό το βήμα φτάνει το πρόγραμμα είτε όταν συμπληρωθεί ο μέγιστος αριθμός επαναλήψεων που έχει ορίσει ο χρήστης είτε όταν ο αλγόριθμος έχει συγκλίνει. Και στις δυο περιπτώσεις ο αλγόριθμος δημιουργεί έναν τελικό πίνακα δεδομένων, που περιλαμβάνει το id της πρωτεΐνης και την ομάδα που ανήκει αυτή. Στη συνέχεια με τη χρήση μιας απλής ομαδοποίησης των δεδομένων επιστρέφονται οι ομάδες των πρωτεϊνών ταξινομημένες φθίνουσα, βάση του αριθμού των πρωτεϊνών που περιέχει η κάθε ομάδα. 54
69 4.2.3 Έξοδος του προγράμματος - Εγγραφή αποτελεσμάτων στον κύριο κόμβο Το πρόγραμμα συλλέγει στον κύριο κόμβο τα αποτελέσματα, που βρίσκονται διανεμημένα στους κόμβους της υπολογιστικής ομάδας. Τα γραφεί σε ένα αρχείο που περιέχει τα αποτελέσματα της ομαδοποίησης σε μορφή κατανοητή από το χρήστη Βελτιστοποιήσεις Μια βελτίωση που ήδη υπάρχει στον αλγόριθμο MCL, είναι η δημιουργία ακμής για τον εαυτό του κάθε κόμβου, ιδιότητα που χρησιμοποιείται έτσι ώστε να ικανοποιηθεί η απεριοδική προϋπόθεση του γράφου της αλυσίδας Markov. Επιπλέον αυτό χρησιμοποιείται για τη μείωση του προβλήματος όπου ο MCL δεν συγκλίνει, πρόβλημα που προκύπτει εξαιτίας της άπειρης μεταβολής μεταξύ διαφορετικών σταδίων(εξαρτάται από την περίοδο). Το βάρος, το οποίο χρησιμοποιείται, είναι το μέγιστο βάρος ανάμεσα σε κάθε κορυφή, η οποία σχετίζεται με τον συγκεκριμένο κόμβο. Το βάρος αυτό μπορεί να μειωθεί, μειώνοντας τη μεταβλητή selfloopweight, έτσι ώστε ο γράφος να παραμείνει πιο κοντά στον πραγματικό. Οι περισσότεροι μεγάλοι γράφοι είναι αραιοί από τη φύση τους. Για παράδειγμα, σε έναν κοινωνικό γράφο οι άνθρωποι δεν σχετίζονται με τον κάθε χρήστη πάρα μόνο με μερικούς συγγενείς, φίλους ή συνεργάτες (φυσικά εξαρτάται από τον τύπο του κοινωνικού δικτύου). Στα βήματα του inflation και του expansion, οι αδύναμες ακμές τείνουν ως προς το μηδέν (καθώς ο στόχος είναι να εντοπιστούν δυνατές συνδέσεις για να διακριθούν οι ομάδες), χωρίς να φτάνουν σε αυτό. Για να διατηρηθεί ο γράφος αραιός μπορεί να χρησιμοποιηθεί μια από τις παρακάτω στρατηγικές: Διαγράφονται οι μικρές τιμές κάτω από την τιμή κατώφλι. Αυτή η τεχνική ωστόσο μπορεί να είναι επικίνδυνη καθώς ένα μεγάλο ποσοστό των βαρών ανήκει στα μικρά βάρη. Αυτή είναι η τεχνική που αναφέρθηκε μέχρι τώρα ως Pruning. Διατηρούνται οι k μεγαλύτερες τιμές ενός κόμβου. Αυτό μπορεί να αποδειχθεί πολύ ακριβό υπολογιστικά για ένα μεγάλο k και για ένα μεγάλο αριθμό μη-μηδενικών εγγραφών. Ο συνδυασμός των δυο παραπάνω στρατηγικών, δηλαδή η διαγραφή τιμών που είναι μικρότερες από ένα κατώφλι, μέχρι ένα συγκεκριμένο επιτρεπτό ποσοστό. Για να βελτιωθεί η ταχύτητα ελέγχου της σύγκλισης του αλγορίθμου, ο δημιουργούς του, προτείνει έναν πιο αποδοτικό τρόπο που ωστόσο δεν έχει υλοποιηθεί ακόμα (33). 55
70 4.3 Υλοποίηση του R-MCL Σύμφωνα με την ανάλυση, αποδείχθηκε πως ο Regularized MCL έχει κάποια βασικά πλεονεκτήματα έναντι του κανονικού MCL. Επιλέχθηκε λοιπόν να υλοποιηθεί ο R-MCL για την εκμετάλλευση της ιδιότητας του να χρησιμοποιεί τον αρχικό πίνακα συσχέτισης στο βήμα του expand, επομένως και την τοπικότητα των δεδομένων. Ένα επιπλέον πλεονέκτημα του είναι η δυνατότητα της υλοποίησης του αλγόριθμου σε γλώσσα python και επομένως η εκμετάλλευση των βιβλιοθηκών του NumPy και SciPy, οι οποίες μπορούν να δώσουν τεράστιο boost στη ταχύτητα εκτέλεσης του προγράμματος. Άξια αναφοράς είναι επίσης η βιβλιοθήκη Pandas και η συνάρτηση read_csv, που χρησιμοποιήθηκε για να διαβαστούν τα δεδομένα από τα αρχεία και για την αποθήκευση αυτών σε μια δομή δεδομένων Dataframe, έτσι ώστε να γίνει η προεπεξεργασία πριν την είσοδο τους στον πραγματικό αλγόριθμο. Η χρήση της συνάρτησης read_csv βελτίωσε σε πολύ μεγάλο βαθμό την απόδοση του προγράμματος στο κομμάτι της ανάγνωσης, σε σχέση με τη συνάρτηση loadtxt της NumPy που χρησιμοποιήθηκε στις αρχικές υλοποιήσεις. Όπως και στην υλοποίηση του MCL σε SCALA δημιουργήθηκε ένας χάρτης, ο οποίος αντιστοιχίζει το όνομα κάθε πρωτεΐνης με έναν μοναδικό αριθμό τύπου Integer, έτσι ώστε να δημιουργηθεί ένας πίνακας για δομές δεδομένων που δεν υποστηρίζουν ID τύπου String. Στη συνέχεια εισάγονται τα δεδομένα σε μια συνάρτηση για τη δημιουργία μιας δομής τύπου COO, δηλαδή το αντίστοιχο με τον τύπο CoordinateMatrix που περιγράφτηκε παραπάνω. Έπειτα από την κατάλληλη προεπεξεργασία (εισαγωγή Self-Loops, κανονικοποίηση του πίνακα κατά στήλη) ο πίνακας μετατρέπεται σε μορφή CSR αραιού πίνακα, βασιζόμενος στη δομή δεδομένων που παρέχει η βιβλιοθήκη SciPy. Στη συγκεκριμένη υλοποίηση χρησιμοποιήθηκαν μερικές από τις βελτιστοποιήσεις, που αναφέρθηκαν για τον MCL αλγόριθμο, έτσι ώστε να βελτιωθεί ακόμα περισσότερο η απόδοση του προγράμματος. Όπως και στη δεύτερη υλοποίηση του αλγορίθμου MCL, οι συναρτήσεις του PRUNING και του NORMALIZATION συμβαίνουν τοπικά στα δεδομένα, με αποτέλεσμα να υπάρχουν τα πλεονεκτήματα και μειονεκτήματα που ίσχυαν και παραπάνω. Για να αξιοποιηθούν οι βιβλιοθήκες που αναφέρθηκαν στο έπακρο, επιλέχθηκε σε αυτή την υλοποίηση, τα δεδομένα έπειτα από την προεπεξεργασία και πριν το επαναληπτικό κομμάτι του αλγορίθμου να χωρίζονται από τον κεντρικό κόμβο σε κομμάτια, της μορφής αριθμός_γραμμών_που_επέλεξε_ο_χρήστης x συνολικός_αριθμός_στηλών. Αυτά διαμοιράζονται ανά κομμάτια στους υπολογιστικούς κόμβους όπου και παραμένουν μετά από κάθε επεξεργασία στο επαναληπτικό κομμάτι, χωρίς να ξαναεπιστρέφουν στον κεντρικό κόμβο και στην συνέχεια να ξαναμοιράζονται στους άλλους. Μια βασική προϋπόθεση έτσι ώστε να είναι πραγματοποιήσιμη η υλοποίηση αυτή, είναι ο διαμοιρασμός ολόκληρου του πίνακα γειτνίασης σε κάθε κόμβο, πράγμα που σημαίνει πως ο κάθε κόμβος πρέπει να έχει μέγεθος δίσκου (και μνήμης) μεγαλύτερο από το μέγεθος του αρχικού πίνακα γειτνίασης. Αυτή η αλλαγή της λειτουργίας δίνει ένα ακόμα σημαντικό πλεονέκτημα έναντι της προηγουμένης υλοποίησης (MCL-SCALA), εφόσον ο πολλαπλασιασμός ενός μικρού κομματιού του πίνακα με έναν μεγάλο πίνακα είναι εφικτός, με πολύ λιγότερο κόστος ακόμα και σε μεμονωμένα υπολογιστικά συστήματα. Στη διπλωματική εργασία αυτή θα θεωρηθεί πως αυτό συμβαίνει πάντα, διότι τα μεγέθη των δίσκων είναι στην πραγματικότητα μερικές τάξεις μεγέθους μεγαλύτερα από τα μεγέθη των μνημών RAM στα υπολογιστικά συστήματα. Επίσης στη συγκεκριμένη υλοποίηση είναι δύσκολο να επιτευχθεί ο έλεγχος της σύγκλισης του αλγορίθμου, λόγω του ότι ο πίνακας που προκύπτει μετά από κάθε επανάληψη, δεν επιστρέφει στον κεντρικό κόμβο αλλά παραμένει στους κόμβους. Έτσι επιλέχθηκε να δημιουργηθούν δύο υλοποιήσεις, 56
71 μία η οποία τρέχει για όσες επαναλήψεις ορίσει ο χρήστης, χωρίς να ελέγχει για σύγκλιση και μία που τρέχει είτε μέχρι να συγκλίνει ο αλγόριθμος είτε μέχρι να συμπληρωθεί ο μέγιστος επιτρεπτός αριθμός επαναλήψεων. Ο έλεγχος για τη σύγκλιση στη δεύτερη έκδοση γίνεται τοπικά από κομμάτι σε κομμάτι και ο αλγόριθμος εκτελείται μέχρι να συγκλίνουν όλα τα κομμάτια. Επειδή κάθε κόμβος περιέχει αλλά δεδομένα, ο αλγόριθμος μπορεί να συγκλίνει σε διαφορετικό αριθμό επαναλήψεων για κάθε κομμάτι. Για την αντιμετώπιση ενός τέτοιου προβλήματος, που είναι πολύ πιθανό να εμφανιστεί, εκτελείται ο αλγόριθμος σε όλα τα κομμάτια που υπάρχουν στους κόμβους, μέχρι και τη στιγμή που όλα τα κομμάτια θα έχουν συγκλίνει ή θα έχει συμπληρωθεί ο μέγιστος αριθμός επαναλήψεων. Τέλος, μία ακόμη βιβλιοθήκη που χρησιμοποιήθηκε και βελτίωσε πολύ την απόδοση του προγράμματος είναι η NetworkX και συγκεκριμένα η συνάρτηση της connected_components. Η συνάρτηση αυτή αντικατέστησε συναρτήσεις που είχαμε δημιουργήσει με σκοπό την εύρεση και τη διερμηνεία των αποτελεσμάτων του αλγορίθμου. Αν και οι συναρτήσεις σχεδιάσθηκαν με γνώμονα την εφαρμογή τους σε αραιούς πίνακες, η απόδοση τους ήταν κατά τάξεις μεγέθους χειρότερη από τη συνάρτηση connected_components, συμπεριλαμβανομένου του χρόνο που απαιτείται για να τροποποιηθούν και να παραχθούν τα δεδομένα σε μορφή κατανοητή για τη βιβλιοθήκη. 57
72 4.4 Χρησιμοποιώντας το Apache Spark στο μέγιστο Η χρήση ενός framework, όπως το Apache Spark, παρέχει τη δυνατότητα της εκμετάλλευσης hardware, το οποίο βρίσκεται διαμοιρασμένο σε διάφορους κόμβους του δικτύου. Αυτό επιτρέπει την εύκολη αναβάθμιση ή υποβάθμιση των υπολογιστικών πόρων ανάλογα με το εκάστοτε πρόβλημα. Επίσης δίνει τη δυνατότητα να εκτελεστεί ο αλγόριθμος για σετ δεδομένων, τα οποία είναι απαγορευτικά για την ήδη υπάρχουσα υλοποίηση, που περιορίζεται σε ένα μόνο υπολογιστικό σύστημα (34). Παρόλο αυτά όπως είναι λογικό, η ήδη υπάρχουσα υλοποίηση του κ. Stijn Van Dongen είναι σαφώς ταχύτερη σε σετ δεδομένων, τα οποία μπορούν να αντιμετωπιστούν από ένα μεμονωμένο υπολογιστικό σύστημα. Αυτό συμβαίνει, επειδή αυτή είναι γραμμένη σε C/C++, γεγονός που δίνει ταχύτητα μεγαλύτερη κατά αρκετές τάξεις μεγέθους σε σχέση με την υλοποίηση που δημιουργήσαμε. Η υλοποίησή μας πέρα από αυτό αντιμετωπίζει αρκετές καθυστερήσεις στα περισσότερα βήματα, λόγω της φύσης της υποδομής που επιλέξαμε. Για το λόγο αυτό, έτσι ώστε να βελτιωθεί περαιτέρω η υλοποίηση μας, επιλέχθηκε η εισαγωγή διάφορων βελτιώσεων, οι οποίες έχουν σχεδιασθεί για τη δική μας υλοποίηση, επιπλέον από αυτές που πρότεινε ο δημιουργός του αλγορίθμου για τη γενική υλοποίηση του. Ακολουθεί μια σύντομη περιγραφή των βελτιώσεων και των προτάσεων μας. ΕΛΕΓΧΟΣ ΣΥΓΚΛΙΣΗΣ Ο έλεγχος της σύγκλισης του αλγορίθμου, μερικές φορές απαιτεί μεγάλη υπολογιστική ισχύ, κάτι το οποίο μπορεί να δημιουργήσει μεγάλες καθυστερήσεις στην εκτέλεση του προγράμματος. Το πρόβλημα αυτό συμβαίνει κυρίως, όταν ο πίνακας δεν είναι αρκετά αραιός, διότι ο αριθμός των μη μηδενικών στοιχείων είναι μεγάλος. Άρα και ο αριθμός των συγκρίσεων μεταξύ των στοιχείων των πινάκων της προηγουμένης και της παρούσας επανάληψης είναι μεγάλος. Οι πίνακες, κατά τις πρώτες επαναλήψεις που εκτελείται ο αλγόριθμος, γίνονται αρκετά πυκνότεροι από ότι ήταν ο αρχικός πίνακας και κατά τη διάρκεια εκτέλεσης του αλγορίθμου γίνονται όλο και πιο αραιοί. Γνωρίζοντας αυτό σε συνδυασμό με το ότι σε πολλές μελέτες έχει αποδειχθεί, πως στις πρώτες τέσσερις επαναλήψεις ο όγκος των δεδομένων είναι αρκετά μεγάλος και είναι σχεδόν απίθανο να συγκλίνει ο αλγόριθμος, επιλέχθηκε να μην ελέγχεται, αν ο πίνακας συσχέτισης έχει φτάσει σε μια σταθερή κατάσταση, δηλαδή αν ο αλγόριθμος συγκλίνει. Επομένως ο έλεγχος, για το αν ο αλγόριθμος έχει συγκλίνει, πρέπει να πραγματοποιείται από την πέμπτη επανάληψη και μετά. ΑΛΛΑΓΗ BLOCKSIZE ΚΑΙ ΑΛΛΑΓΗ PARTITIONSIZE Όπως αναφέρθηκε και στην προηγουμένη βελτίωση, επειδή στις πρώτες επαναλήψεις ο πίνακας είναι αρκετά πιο πυκνός από τον αρχικό, επιλέχθηκε ένα σχετικά μικρό μέγεθος διαστάσεων για τα blocks που χωρίζεται ο πίνακα συσχέτισης αλλά και ένας μεγάλος αριθμός partition, έτσι ώστε το κάθε partition να μην περιλαμβάνει πολύ μεγάλο όγκο δεδομένων. Παρόλο αυτά η επιλογή τιμών, οι οποίες έχουν πολύ μικρό μέγεθος block αλλά και πολύ μεγάλο αριθμό partition, δημιουργεί μεγάλες καθυστερήσεις στο πρόγραμμα και πολλές φορές μπορεί να το οδηγήσει σε έναν αέναο βρόχο. Η εύρεση της τιμής, που αποδίδει βέλτιστη απόδοση και ταυτόχρονα 58
73 διασφαλίζει την ομαλή εκτέλεση του προγράμματος, απαιτεί εκτενή έρευνα και πολλά πειράματα, τα οποία αποδίδουν διαφορετικές τιμές παραμέτρων σε κάθε dataset. Κατά την πάροδο των επαναλήψεων, ο πίνακας γίνεται πιο αραιός από τον αρχικό πίνακα, με αποτέλεσμα μετά από κάποιες επαναλήψεις, οι αρχικές τιμές που έχουν τεθεί για τον αριθμό των partition αλλά και για το μέγεθος των blocks του πίνακα, να δημιουργούν επιπλέον καθυστερήσεις. Για τους παραπάνω λογούς τροποποιούνται οι τιμές αυτές, έτσι ώστε να προσδίδουν ακόμα μεγαλύτερη επιτάχυνση στην εκτέλεση του προγράμματος. ΑΛΛΑΓΗ ΣΕΙΡΑΣ ΠΡΑΞΕΩΝ Τα βήματα, που ακολουθεί ο αλγόριθμος που ο κ. Stijn περιγράφει ως MCL, είναι τα εξής: EXPAND INFLATΙΟΝ NORMALIZATION PRUNING NORMALIZATION Σε μεγάλα σετ δεδομένων οι διάφορες εντολές για μετατροπές, που πρέπει να εκτελεστούν, μπορούν να αποδειχθούν αρκετά απαιτητικές από άποψη χρόνου και ισχύος. Για το λόγο αυτό, αναζητήθηκαν σημεία του αλγορίθμου, που επιδέχονταν βελτίωση, με σκοπό τη βελτίωση της συνολικής απόδοσης του. Έπειτα από έρευνα στην υπάρχουσα βιβλιογραφία, βρέθηκε πως θα μπορούσε να αποφευχθεί ένα από τα προηγούμενα βήματα. Για την ακρίβεια το βασικό βήμα του πολλαπλασιασμού πινάκων (EXPAND) παραμένει σαν πρώτο βήμα. Στη συνέχεια εκτελείται το βήμα του PRUNING στον πίνακα, που προκύπτει ως αποτέλεσμα του βήματος EXPAND. Αυτό είναι δυνατόν να συμβεί, διότι ο πίνακας, ο οποίος μπαίνει στη συνάρτηση του EXPAND, είναι στοχαστικός καθ ορισμό αλλά και ο πίνακας, που προκύπτει από την ύψωση σε δύναμη ενός στοχαστικού πίνακα, είναι και αυτός στοχαστικός (35). Αυτό δίνει τη δυνατότητα της εισαγωγής του πίνακα στη συνάρτηση του PRUNING, πριν το INFLATION, το οποίο θα χαλούσε τη στοχαστικότατα του πίνακα. Στην περίπτωση που το inflationrate είναι δύο, τότε το threshold για να έχουμε το ίδιο αποτέλεσμα με πριν, πρέπει να είναι threshold. Αντίστοιχα ανάλογα με την τιμή που έχει τεθεί το inflationrate θα πρέπει να οριστεί η ρίζα του threshold, με βάση αυτόν τον αριθμό. Στην συνέχεια πραγματοποιείται το βήμα του INFLATION, στο αποτέλεσμα της συνάρτησης PRUNING, καθώς αυτό το βήμα δεν απαιτεί ο πίνακας να είναι στοχαστικός. Το αποτέλεσμα του INFLATION εισάγεται στη συνάρτηση κανονικοποίησης, η οποία δίνει ξανά ένα στοχαστικό πίνακα. Έπειτα από ένα μεγάλο αριθμό πειραμάτων επιβεβαιώνεται, πως η αλλαγή αυτή των πράξεων δε δημιουργεί κάποια διαφορά στα αποτελέσματα και απαλείφει ένα βήμα κανονικοποίησης. Επίσης, επειδή τα δεδομένα, που εισάγονται στη συνάρτηση του INFLATION και κατ επέκταση στη συνάρτηση του NORMALIZATION, είναι αρκετά λιγότερα, καθώς βρίσκονται μετά το βήμα του PRUNING, επιταχύνεται ακόμα περισσότερο η εκτέλεση της κάθε επανάληψης, άρα και όλου του προγράμματος (36). Αποτέλεσμα είναι η απλοποίηση της προτεινομένης ροής του προγράμματος στην παρακάτω δομή: EXPAND PRUNING INFLATION NORMALIZATION 59
74 Το διάγραμμα ροής του σχήματος περιγράφει τον τροποποιημένο αλγόριθμο που έχει σχεδιασθεί με γνώμονα τις παραπάνω βελτιώσεις. Σχήμα Διάγραμμα ροής τροποποιημένου MCL για βελτίωση της απόδοσης 60
Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων
Κεφάλαιο 5 ο : Αλγόριθµοι Σύγκρισης Ακολουθιών Βιολογικών εδοµένων Σε αυτό το κεφάλαιο παρουσιάζουµε 2 βασικούς αλγορίθµους σύγκρισης ακολουθιών Βιολογικών εδοµένων τους BLAST & FASTA. Οι δυο αλγόριθµοι
Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον
Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον Δανάη Κούτρα Eργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Εθνικό Μετσόβιο Πολυτεχνείο Θέματα Σκοπός της διπλωματικής
ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ
ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 123/04 ΕΠΙΒΛΕΠΩΝ: ΣΑΜΑΡΑΣ ΝΙΚΟΛΑΟΣ ΘΕΣΣΑΛΟΝΙΚΗ, ΙΟΥΝΙΟΣ 2007 Περιεχόμενα
LALING/PLALING :
1. Άρθρα- δημοσιεύσεις Scopus DBLP Pubmed Google Scholar 2. Αναζήτηση νουκλεοτιδίου- πρωτεΐνης Entrez : http://www.ncbi.nlm.nih.gov/nuccore/ Uniprot (πρωτεΐνης): http://www.uniprot.org/ Blast : http://blast.ncbi.nlm.nih.gov/blast.cgi
Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α
ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι
ΑΣΚΗΣΗ 3η Στοίχιση ακολουθιών βιολογικών µακροµορίων
ΑΣΚΗΣΗ 3η Στοίχιση ακολουθιών βιολογικών µακροµορίων ΕΙΣΑΓΩΓΗ Ένας από τους πρωταρχικούς στόχους της σύγκρισης των ακολουθιών δύο µακροµορίων είναι η εκτίµηση της οµοιότητάς τους και η εξαγωγή συµπερασµάτων
Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα
Σχολή Επικοινωνίας και Μέσων Ενημέρωσης Πτυχιακή εργασία Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Εύρος Χριστοδούλου Λεμεσός, Μάιος 2018 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΚΟΙΝΩΝΙΑΣ
ΑΣΚΗΣΗ 4η Αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών
ΑΣΚΗΣΗ 4η Αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών ΕΙΣΑΓΩΓΗ Η αναζήτηση οµοιοτήτων σε βάσεις δεδοµένων ακολουθιών (database similarity searching) αποτελεί µια από τις συχνότερα χρησιµοποιούµενες
Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ
Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Διπλωματική Εργασία Μεταπτυχιακού Προγράμματος στην Εφαρμοσμένη Πληροφορική Κατεύθυνση: Συστήματα Υπολογιστών
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Διπλωματική εργασία Μεθοδολογία σύγκρισης
Πτυχιακή Εργασία ηµιουργία Εκπαιδευτικού Παιχνιδιού σε Tablets Καλλιγάς ηµήτρης Παναγιώτης Α.Μ.: 1195 Επιβλέπων καθηγητής: ρ. Συρµακέσης Σπύρος ΑΝΤΙΡΡΙΟ 2015 Ευχαριστίες Σ αυτό το σηµείο θα ήθελα να
Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος
Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης
ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams
ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams Αλέκα Σεληνιωτάκη Ηράκλειο, 26/06/12 aseliniotaki@csd.uoc.gr ΑΜ: 703 1. Περίληψη Συνεισφοράς
Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R
Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R, Επίκουρος Καθηγητής, Τομέας Μαθηματικών, Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών, Εθνικό Μετσόβιο Πολυτεχνείο. Περιεχόμενα Εισαγωγή στο
HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems
HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems Ημερομηνία Παράδοσης: 0/1/017 την ώρα του μαθήματος ή με email: mkarabin@csd.uoc.gr Γενικές Οδηγίες α) Επιτρέπεται η αναζήτηση στο Internet και στην βιβλιοθήκη
ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ
ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Στόχος Θεματικής Ενότητας Οι μαθητές να περιγράφουν τους βασικούς τομείς της Επιστήμης των Υπολογιστών και να μπορούν
ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.
ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή
Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή
Εργαστήριο 10 Γράφηµα (Graph) Εισαγωγή Στην πληροφορική γράφηµα ονοµάζεται µια δοµή δεδοµένων, που αποτελείται από ένα σύνολο κορυφών ( vertices) (ή κόµβων ( nodes» και ένα σύνολο ακµών ( edges). Ενας
Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής
Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική
ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΡΓΑΣΙΩΝ & ΑΝΑΘΕΣΗΣ ΑΝΘΡΩΠΙΝΩΝ ΠΟΡΩΝ ΣΕ ΠΟΛΛΑΠΛΑ ΕΡΓΑ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΠΟΛΛΑΠΛΕΣ ΟΜΑΔΕΣ
Σχολή Μηχανικής και Τεχνολογίας Πτυχιακή εργασία ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΡΓΑΣΙΩΝ & ΑΝΑΘΕΣΗΣ ΑΝΘΡΩΠΙΝΩΝ ΠΟΡΩΝ ΣΕ ΠΟΛΛΑΠΛΑ ΕΡΓΑ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΠΟΛΛΑΠΛΕΣ ΟΜΑΔΕΣ Ηλίας Κωνσταντίνου Λεμεσός,
ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο
Αναγνώριση Προτύπων Ι
Αναγνώριση Προτύπων Ι Ενότητα 1: Μέθοδοι Αναγνώρισης Προτύπων Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Κύρια σημεία. Η έννοια του μοντέλου. Έρευνα στην εφαρμοσμένη Στατιστική. ΈρευναστηΜαθηματικήΣτατιστική. Αντικείμενο της Μαθηματικής Στατιστικής
Κύρια σημεία Ερευνητική Μεθοδολογία και Μαθηματική Στατιστική Απόστολος Μπουρνέτας Τμήμα Μαθηματικών ΕΚΠΑ Αναζήτηση ερευνητικού θέματος Εισαγωγή στην έρευνα Ολοκλήρωση ερευνητικής εργασίας Ο ρόλος των
Πρόβλημα. Σύνολο γνωστών αλληλουχιών
BLAST Πρόβλημα Άγνωστη αλληλουχία Σύνολο γνωστών αλληλουχιών Η χρήση ενός υπολογιστή κι ενός αλγόριθμου είναι απαραίτητη για την ανακάλυψη της σχέσης μιας αλληλουχίας με τις γνωστές υπάρχουσες Τί είναι
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή.
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων
Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΕΠΙΛΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΔΟΣΗΣ ΣΕ ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ ΜΕ ΣΥΣΚΕΥΕΣ ΔΙΑΚΡΙΤΩΝ ΤΙΜΩΝ ΙΣΧΥΟΣ ΜΕ ΤΗ ΧΡΗΣΗ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ "ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗΝ ΙΑΤΡΙΚΗ ΚΑΙ ΤΗ ΒΙΟΛΟΓΙΑ" ΔΙΠΛΩΜΑΤΙΚΗ
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΑΝΑΠΤΥΞΗ ΕΙΚΟΝΙΚΗΣ ΠΛΑΤΦΟΡΜΑΣ ΠΡΟΣΟΜΟΙΩΣΗΣ ΤΗΣ ΠΑΡΑΜΟΡΦΩΣΗΣ ΑΝΘΡΩΠΙΝΟΥ ΗΠΑΤΟΣ ΜΕ ΤΗ ΧΡΗΣΗ ΑΠΤΙΚΟΥ ΜΕΣΟΥ Δηµήτρης Δούνας
Αλγόριθμοι Γραφημάτων
Αλγόριθμοι Γραφημάτων. Γραφήματα. Αναπαράσταση Γραφημάτων 3. Διερεύνηση σε Πρώτα σε Πλάτος (BFS) Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Γράφημα Ορισμός: Ένα γράφημα G είναι το διατεταγμένο ζεύγος
Βιοπληροφορική Ι. Παντελής Μπάγκος. Παν/µιο Στερεάς Ελλάδας
Βιοπληροφορική Ι Παντελής Μπάγκος Παν/µιο Στερεάς Ελλάδας Λαµία 2006 1 Βιοπληροφορική Ι Εισαγωγή: Ορισµός της Βιοπληροφορικής, Υποδιαιρέσεις της Βιοπληροφορικής, Τα είδη των δεδοµένων στη Βιοπληροφορική.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10β: Αλγόριθμοι Γραφημάτων-Γραφήματα- Αναπαράσταση Γραφημάτων- Διερεύνηση Πρώτα σε Πλάτος (BFS) Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ Επιβλέπων Καθηγητής: Δρ. Νίκος Μίτλεττον Η ΣΧΕΣΗ ΤΟΥ ΜΗΤΡΙΚΟΥ ΘΗΛΑΣΜΟΥ ΜΕ ΤΗΝ ΕΜΦΑΝΙΣΗ ΣΑΚΧΑΡΩΔΗ ΔΙΑΒΗΤΗ ΤΥΠΟΥ 2 ΣΤΗΝ ΠΑΙΔΙΚΗ ΗΛΙΚΙΑ Ονοματεπώνυμο: Ιωσηφίνα
ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 24: Ειδικές Περιπτώσεις του Προβλήματος Ροής Ελαχίστου Κόστους Σαμαράς Νικόλαος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Θεωρία Γραφημάτων 6η Διάλεξη
Θεωρία Γραφημάτων 6η Διάλεξη Α. Συμβώνης Εθνικο Μετσοβειο Πολυτεχνειο Σχολη Εφαρμοσμενων Μαθηματικων και Φυσικων Επιστημων Τομεασ Μαθηματικων Φεβρουάριος 2016 Α. Συμβώνης (ΕΜΠ) Θεωρία Γραφημάτων 6η Διάλεξη
Θέματα Προγραμματισμού Η/Υ
Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική
Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού
Τo πρόγραμμα «Διάγραμμα Ροής» και η διδακτική του αξιοποίηση στην Διδασκαλία του προγραμματισμού Α. Βρακόπουλος 1, Θ.Καρτσιώτης 2 1 Καθηγητής Πληροφορικής Δευτεροβάθμιας Εκπαίδευσης Vraa8@sch.gr 2 Σχολικός
ΦΥΣΙΚΗ ΑΝΘΡΩΠΟΛΟΓΙΑ. Πρωτεύοντα ΙΙΙ Χρήση µοριακών δεδοµένων
ΦΥΣΙΚΗ ΑΝΘΡΩΠΟΛΟΓΙΑ Πρωτεύοντα ΙΙΙ Χρήση µοριακών δεδοµένων Φυλογένεση Η φυλογένεσης αφορά την ανεύρεση των συνδετικών εκείνων κρίκων που συνδέουν τα διάφορα είδη µεταξύ τους εξελικτικά, σε µονοφυλετικές
Κατα ζέυγη στοίχιση και στατιστική σημαντικότητα αυτής
ΒΙΟΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Κατα ζέυγη στοίχιση και στατιστική σημαντικότητα αυτής Παντελής Μπάγκος 1 Διάλεξη 2 Αναζήτηση ομοιότητας και κατά ζεύγη στοίχιση ακολουθιών 2 Κατά ζεύγη στοίχιση ακολουθιών Από τα πιο
ΒΕΛΤΙΣΤΕΣ ΙΑ ΡΟΜΕΣ ΣΕ ΙΚΤΥΑ ΜΕΤΑΒΛΗΤΟΥ ΚΟΣΤΟΥΣ
ΒΕΛΤΙΣΤΕΣ ΙΑ ΡΟΜΕΣ ΣΕ ΙΚΤΥΑ ΜΕΤΑΒΛΗΤΟΥ ΚΟΣΤΟΥΣ Μωυσιάδης Πολυχρόνης, Ανδρεάδης Ιωάννης Τμήμα Μαθηματικών Α.Π.Θ. ΠΕΡΙΛΗΨΗ Στην εργασία αυτή παρουσιάζεται μία μελέτη για την ελάχιστη διαδρομή σε δίκτυα μεταβλητού
Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Βιοπληροφορική
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Βιοπληροφορική Ενότητα 12: Αναζήτηση ομοιοτήτων έναντι βάσεων δεδομένων με τη χρήση ευρετικών αλγορίθμων Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr
Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές
Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές
ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος
ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται
Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης.
Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης. Ένα από τα γνωστότερα παραδείγματα των ΕΑ είναι ο Γενετικός
Βιοπληροφορική. Μαργαρίτα Θεοδωροπούλου. Πανεπιστήμιο Θεσσαλίας, Λαμία 2016
Βιοπληροφορική Μαργαρίτα Θεοδωροπούλου Πανεπιστήμιο Θεσσαλίας, Λαμία 2016 Βιοπληροφορική Εισαγωγή στη Μοριακή Βιολογία, Γενωμική και Βιοπληροφορική. Βάσεις Βιολογικών Δεδομένων. Ακολουθίες Πρωτεϊνών και
Πληροφορική 2. Αλγόριθμοι
Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται
Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.
Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Μη γραμμικός προγραμματισμός: βελτιστοποίηση χωρίς περιορισμούς Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών ΤμήμαΠληροφορικής Διάλεξη 7-8 η /2017 Τι παρουσιάστηκε
substructure similarity search using features in graph databases
substructure similarity search using features in graph databases Aleksandros Gkogkas Distributed Management of Data Laboratory intro Θα ενασχοληθούμε με το πρόβλημα των ερωτήσεων σε βάσεις γραφημάτων.
Αποθήκες Δεδομένων και Εξόρυξη Δεδομένων:
Αποθήκες Δεδομένων και Εξόρυξη Δεδομένων: Oμαδοποίηση: Μέρος B http://delab.csd.auth.gr/~gounaris/courses/dwdm/ gounaris/courses/dwdm/ Ευχαριστίες Οι διαφάνειες του μαθήματος σε γενικές γραμμές ακολουθούν
Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών
Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών
iii ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος
iii ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος xi 1 Αντικείμενα των Πιθανοτήτων και της Στατιστικής 1 1.1 Πιθανοτικά Πρότυπα και Αντικείμενο των Πιθανοτήτων, 1 1.2 Αντικείμενο της Στατιστικής, 3 1.3 Ο Ρόλος των Πιθανοτήτων
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση
Προβλήματα, αλγόριθμοι, ψευδοκώδικας
Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι
Μεταπτυχιακή διατριβή
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Μεταπτυχιακή διατριβή ΣΥΣΧΕΤΙΣΜΟΙ ΠΡΑΓΜΑΤΙΚΗΣ ΠΑΡΑΓΩΓΗΣ ΥΦΙΣΤΑΜΕΝΩΝ ΦΩΤΟΒΟΛΤΑΪΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΝΑΛΟΓΑ ΜΕ ΤΗ ΤΟΠΟΘΕΣΙΑ
ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ ΠΡΟΣΩΠΙΚΟΥ: ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΙΔΙΩΤΙΚΟΥ ΝΟΣΟΚΟΜΕΙΟΥ ΠΑΡΑΓΙΟΥΔΑΚΗ ΜΑΓΔΑΛΗΝΗ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ ΠΡΟΣΩΠΙΚΟΥ: ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΙΔΙΩΤΙΚΟΥ ΝΟΣΟΚΟΜΕΙΟΥ ΠΑΡΑΓΙΟΥΔΑΚΗ ΜΑΓΔΑΛΗΝΗ Διπλωματική
ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών
44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.
ΑΝΑΓΝΩΡΙΣΗ ΚΟΙΝΟΤΗΤΩΝ ΚΑΙ ΣΥΣΤΑΣΗ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΤΗΝ ΧΡΗΣΗ ΣΥΝΘΕΤΙΚΩΝ ΣΥΝΤΕΤΑΓΜΕΝΩΝ
ΑΝΑΓΝΩΡΙΣΗ ΚΟΙΝΟΤΗΤΩΝ ΚΑΙ ΣΥΣΤΑΣΗ ΠΛΗΡΟΦΟΡΙΑΣ ΜΕ ΤΗΝ ΧΡΗΣΗ ΣΥΝΘΕΤΙΚΩΝ ΣΥΝΤΕΤΑΓΜΕΝΩΝ Παπαδάκης Χαράλαμπος 1, Παναγιωτάκης Κώστας 2, Παρασκευή Φραγκοπούλου 1 1 Τμήμα Μηχ/κών Πληροφορικής, ΤΕΙ Κρήτης 2 Τμήμα
ΟΜΑΔΑ Λ. Αναστασίου Κωνσταντίνος Δεληγιάννη Ισαβέλλα Ζωγοπούλου Άννα Κουκάκης Γιώργος Σταθάκη Αρετιάννα
ΟΜΑΔΑ Λ Αναστασίου Κωνσταντίνος Δεληγιάννη Ισαβέλλα Ζωγοπούλου Άννα Κουκάκης Γιώργος Σταθάκη Αρετιάννα ΒΙΟΠΛΗΡΟΦΟΡΙΚΗ Τι είναι η βιοπληροφορική; Αποκαλείται ο επιστημονικός κλάδος ο οποίος προέκυψε από
Εισαγωγή στη Σχεδίαση Λογισμικού
Εισαγωγή στη Σχεδίαση Λογισμικού περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού σχεδίαση Η σχεδίαση του
On line αλγόριθμοι δρομολόγησης για στοχαστικά δίκτυα σε πραγματικό χρόνο
On line αλγόριθμοι δρομολόγησης για στοχαστικά δίκτυα σε πραγματικό χρόνο Υπ. Διδάκτωρ : Ευαγγελία Χρυσοχόου Επιβλέπων Καθηγητής: Αθανάσιος Ζηλιασκόπουλος Τμήμα Μηχανολόγων Μηχανικών Περιεχόμενα Εισαγωγή
Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου
Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim Αικατερίνη Κούκιου Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,
ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ
Tel.: +30 2310998051, Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Φυσικής 541 24 Θεσσαλονίκη Καθηγητής Γεώργιος Θεοδώρου Ιστοσελίδα: http://users.auth.gr/theodoru ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ
Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα
Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 2: Περιβάλλον Βάσεων Δεδομένων Μοντέλα Δεδομένων 2.1
K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων
K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού
ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση
ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης
Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά
Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν
5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ
5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος
Κτίρια nζεβ και προσομοίωση με την χρήση του energy+
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ Πτυχιακή εργασία Κτίρια nζεβ και προσομοίωση με την χρήση του energy+ Μυροφόρα Ιωάννου Λεμεσός, Μάιος 2017 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ. Πτυχιακή Εργασία. Κόπωση και ποιότητα ζωής ασθενών με καρκίνο.
ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ Πτυχιακή Εργασία Κόπωση και ποιότητα ζωής ασθενών με καρκίνο Μαργαρίτα Μάου Λευκωσία 2012 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ ΤΜΗΜΑ
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη
Minimum Spanning Tree: Prim's Algorithm
Minimum Spanning Tree: Prim's Algorithm 1. Initialize a tree with a single vertex, chosen arbitrarily from the graph. 2. Grow the tree by one edge: of the edges that connect the tree to vertices not yet
ΑΠΟΓΡΑΦΙΚΟ ΔΕΛΤΙΟ ΜΕΤΑΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΤΙΤΛΟΣ
ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΑΝΑΓΝΩΣΤΗΡΙΟ Πανεπιστημιούπολη, Κτήρια Πληροφορικής & Τηλεπικοινωνιών 15784 ΑΘΗΝΑ Τηλ.: 210 727 5190, email: library@di.uoa.gr,
Διδάσκοντες: Δ. Φωτάκης, Δ. Σούλιου Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Σχέσεις Διδάσκοντες: Δ. Φωτάκης, Δ. Σούλιου Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διμελής Σχέση Διατεταγμένο ζεύγος (α, β):
Σχέσεις, Ιδιότητες, Κλειστότητες
Σχέσεις, Ιδιότητες, Κλειστότητες Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Σχέσεις 1 / 26 Εισαγωγή & Ορισµοί ιµελής Σχέση R από
Στο στάδιο ανάλυσης των αποτελεσµάτων: ανάλυση ευαισθησίας της λύσης, προσδιορισµός της σύγκρουσης των κριτηρίων.
ΠΕΡΙΛΗΨΗ Η τεχνική αυτή έκθεση περιλαµβάνει αναλυτική περιγραφή των εναλλακτικών µεθόδων πολυκριτηριακής ανάλυσης που εξετάσθηκαν µε στόχο να επιλεγεί η µέθοδος εκείνη η οποία είναι η πιο κατάλληλη για
Προγραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Βιοπληροφορική. Blast/PSI-Blast 3o εργαστήριο
Βιοπληροφορική Blast/PSI-Blast 3o εργαστήριο Αναζήτηση οµόλογων ακολουθιών σε βάσεις δεδοµένων (i) Οµόλογες ακολουθίες πιθανόν να έχουν παρόµοιες λειτουργίες. Ακολουθία επερώτησης (query sequence) Υποκείµενες
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΑΜΕΣΕΣ ΞΕΝΕΣ ΕΠΕΝΔΥΣΕΙΣ ΣΕ ΕΥΡΩΠΑΙΚΕΣ ΧΩΡΕΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΑΙ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΣΤΡΑΤΗΓΙΚΗ ΑΜΕΣΕΣ ΞΕΝΕΣ ΕΠΕΝΔΥΣΕΙΣ ΣΕ ΕΥΡΩΠΑΙΚΕΣ ΧΩΡΕΣ Αθανάσιος Νταραβάνογλου Διπλωματική
Βιοπληροφορική. Ενότητα 8: Αναζήτηση Ομοιοτήτων σε Βάσεις Δεδομένων Ακολουθιών, 2 ΔΩ. Τμήμα: Βιοτεχνολογίας Όνομα καθηγητή: Τ.
Βιοπληροφορική Ενότητα 8: Αναζήτηση Ομοιοτήτων σε Βάσεις Δεδομένων Ακολουθιών, 2 ΔΩ Τμήμα: Βιοτεχνολογίας Όνομα καθηγητή: Τ. Θηραίου Μαθησιακοί Στόχοι Κατανόηση της αναγκαιότητας των ευριστικών αλγορίθμων
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΠΑΡΟΥΣΙΑΣΗ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ ΔΟΥΒΛΕΤΗΣ ΧΑΡΑΛΑΜΠΟΣ ΕΠΙΒΛΕΠΟΝΤΕΣ ΚΑΘΗΓΗΤΕΣ Μαργαρίτης Κωνσταντίνος Βακάλη
Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο
Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
ΕΙΔΗ ΕΡΕΥΝΑΣ I: ΠΕΙΡΑΜΑΤΙΚΗ ΕΡΕΥΝΑ & ΠΕΙΡΑΜΑΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ
ΤΕΧΝΙΚΕΣ ΕΡΕΥΝΑΣ (# 252) Ε ΕΞΑΜΗΝΟ 9 η ΕΙΣΗΓΗΣΗ ΣΗΜΕΙΩΣΕΙΣ ΕΙΔΗ ΕΡΕΥΝΑΣ I: ΠΕΙΡΑΜΑΤΙΚΗ ΕΡΕΥΝΑ & ΠΕΙΡΑΜΑΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ ΛΙΓΗ ΘΕΩΡΙΑ Στην προηγούμενη διάλεξη μάθαμε ότι υπάρχουν διάφορες μορφές έρευνας
κεφάλαιο Βασικές Έννοιες Επιστήμη των Υπολογιστών
κεφάλαιο 1 Βασικές Έννοιες Επιστήμη 9 1Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ Στόχοι Στόχος του κεφαλαίου είναι οι μαθητές: να γνωρίσουν βασικές έννοιες και τομείς της Επιστήμης. Λέξεις κλειδιά Επιστήμη
Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη
Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης
ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία
ΕΠΙΣΤΗΜΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΜΟΙ: Μια ενδιαφέρουσα σταδιοδρομία N. Μισυρλής (e-mail: nmis@di.uoa.gr) Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Parallel Scientific Computing Laboratory (PSCL)
ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ Συνδυασμένη χρήση μοντέλων προσομοίωσης βελτιστοποίησης. Η μέθοδος του μητρώου μοναδιαίας απόκρισης Νικόλαος
Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι
Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση
Ανάπτυξη του Τεχνικού Κειμένου Η Αρχική Σύνταξη
Ανάπτυξη του Τεχνικού Κειμένου Η Αρχική Σύνταξη Ενότητες και υποενότητες Εισαγωγή - Δομικές μηχανές - Τύποι, ταξινομήσεις και χρήσεις Γενική θεωρία δομικών μηχανών Χαρακτηριστικά υλικών Αντιστάσεις κίνησης
Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης
Δομές Δεδομένων και Αλγόριθμοι Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Στόχοι Μαθήματος Η σχεδίαση και ανάλυση αλγορίθμων και δομών δεδομένων αποτελεί σημαντικό τμήμα της πληροφορικής.
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,
Εισαγωγή στα Τεχνητά Νευρωνικά Δίκτυα. "Τεχνητά Νευρωνικά Δίκτυα" (Διαφάνειες), Α. Λύκας, Παν. Ιωαννίνων
Εισαγωγή στα Τεχνητά Νευρωνικά Δίκτυα Τεχνητή Νοημοσύνη (Artificial Intelligence) Ανάπτυξη μεθόδων και τεχνολογιών για την επίλυση προβλημάτων στα οποία ο άνθρωπος υπερέχει (?) του υπολογιστή Συλλογισμοί
Σχέσεις. Διμελής Σχέση. ΣτοΊδιοΣύνολο. Αναπαράσταση
Διμελής Σχέση Σχέσεις Διδάσκοντες: Φ. Αφράτη, Δ. Επιμέλεια διαφανειών: Δ. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διατεταγμένο ζεύγος (α, β): Δύο αντικείμενα
ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1)
ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1) 1 Προέλευση και ιστορία της Επιχειρησιακής Έρευνας Αλλαγές στις επιχειρήσεις Τέλος του 19ου αιώνα: βιομηχανική
ΑΝΑΖΗΤΗΣΗ ΟΜΟΙΟΤΗΤΩΝ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΑΚΟΛΟΥΘΙΩΝ
ΑΝΑΖΗΤΗΣΗ ΟΜΟΙΟΤΗΤΩΝ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΑΚΟΛΟΥΘΙΩΝ Σελίδα 1 Αναζήτηση ομοιοτήτων Δεδομένα Ακολουθία επερώτησης (query sequence) Ακολουθίες στη Βάση Δεδομένων (subject sequences) Αναζήτηση Μέθοδοι δυναμικού
Συστήματα Αναμονής (Queuing Systems)
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ - ΕΜΠ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Επικοινωνιών, Ηλεκτρονικής & Συστημάτων Πληροφορικής Εργαστήριο Διαχείρισης & Βέλτιστου Σχεδιασμού Δικτύων Τηλεματικής
Κατανεμημένα Συστήματα Ι
Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax
ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ
ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΘΕΣΣΑΛΟΝΙΚΗ, 2016 ΕΙΣΑΓΩΓΗ Μια διαδικτυακή υπηρεσία μπορεί να περιγραφεί απλά σαν μια οποιαδήποτε
Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).
Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται