NN-LSH Clustering

Συσταδοποίηση μοριακών διαμορφώσεων

Δίνεται σύνολο μοριακών διαμορφώσεων εκ των οποίων κάθε διαμόρφωση αποτελείται από μία συγκεκριμένη ακολουθία Ν σημείων στον τριδιάστατο Ευκλείδειο χώρο.

Α. Υλοποίηση της συνάρτησης απόστασης c-RMSD, με την χρήση εξωτερικής της βιβλιοθήκης γραμμικής άλγεβρας LAPACKE και συσταδοποίηση των διαμορφώσεων σε k clusters, για δοσμένο k, με αλγόριθμο τύπου k-medoids και χρήση της c-RMSD.

Β. Συσταδοποίηση με την προσέγγιση k-medoids με χρήση της απόστασης Discrete Frechét. Πριν τον υπολογισμό της απόστασης οι διαμορφώσεις μετατοπίζονται και περιστρέφονται με κριτήριο την ελαχιστοποίηση της απόστασης c-RMSD.

Σε κάθε περίπτωση γίνεται εύρεση του βέλτιστου k μέσω του μέτρου silhouette.

Συσταδοποίηση οδικών τμημάτων

Έγινε λήψη των χαρτογραφικών δεδομένων της πλατφόρμας Open Street Map για την περιοχή της Αθήνας και κατάτμηση των οδών σε τμήματα. Οι οδοί κατατέμνονται στα σημεία που ακολουθούν διασταυρώσεις ή όταν αλλάζει η καμπυλότητά τους πάνω από ένα κατώφλι. Τα οδικά τμήματα αποθηκεύονται σε αρχείο segment.csv

Σύνδεσμοι για τον parser και τα αρχεία athens.csv και crossroads.csv (χρησιμοποιούνται και τα δύο για την παραγωγή του segment.csv) : https://www.dropbox.com/s/q60nrpjd77r9jpg/osmParser.zip?dl=0 https://www.dropbox.com/s/eqxb2pbs4p444cd/athens.zip?dl=0 https://www.dropbox.com/s/v9mbbnul2i8sdcs/crossroads.zip?dl=0

Συσταδοποίηση σε k συστάδες, για δοσμένο k, με αλγόριθμο k-medoids και χρήση των αποστάσεων Discrete Frechét και DTW. Πριν τον υπολογισμό της απόστασης οι πολυγωνικές καμπύλες μετατοπίζονται και περιστρέφονται με κριτήριο την ελαχιστοποίηση της απόστασης c-RMSD. Εύρεση του βέλτιστου k μέσω του μέτρου αξιολόγησης silhouette.

Περιγραφή αρχείων

proteins.cpp : main για τη συσταδοποίηση μοριακών διαμορφώσεων, εκτελεί και τα δύο υποερωτήματα στη σειρά

segmentation.cpp : χρησιμοποιείται για την παραγωγή του αρχείου segment.csv

roads.cpp : main για την συσταδοποίηση οδικών τμημάτων με χρήση cRMSD

roadsLSH.cpp : main για την LSH συσταδοποίηση οδικών τμημάτων

curve.cpp, curve.h : Κλάση για δημιουργία αντικειμένου που αντιπροσωπεύει μία καμπύλη.

curveList.cpp, curveList.h : Δομή λίστας στην οποία αποθηκεύονται τα curves.

limits.cpp, limits.h : χρησιμοποιούνται για να υπολογιστούν τα όρια μέσα στα οποία θα κινούνται τα σημεία του grid

grid.cpp, grid.h : Αναπαράσταση grid ως τετραδιάστατο πίνακα στον οποίο ανάλογα με τις διαστάσεις που δίνονται γεμίζουμε τα αντίστοιχα σημεία

gridCurve.cpp, gridCurve.h : αναπαράσταση των καμπυλών πλέγματος ως μία λίστα με αποφυγή διαδοχικών διπλοτύπων

bucketList.cpp, bucketList.h : λίστα από bucket nodes του hash table

distanceFunctions.cpp, distanceFunctions.h : συναρτήσεις ευκλείδειας απόστασης, Frechet, Warping και cRMSD

hashFunctions.cpp, hashFunctions.h : χρήση μόνο συνάρτησης κατακερματισμού LSH

hashTable.cpp, hashTable.h : δημιουργία hash table, εισαγωγή στοιχείου και αναζητήσεις

assignment.cpp, assignment.h : Περιέχει συναρτήσεις για ανάθεση αντικειμένων σε cluster σύμφωνα με τις μεθόδους Llloyd’s ή ANN Range Search. Για τη δεύτερη μέθοδο χρησιμοποιούνται οι κατάλληλες συναρτήσεις από την πρώτη εργασία για δημιουργία lsh πινάκων.

clusterInfo.cpp, clusterInfo.h : Αναπαράσταση cluster ως κλάση που περιέχει μία καμπύλη κέντρο και μια λίστα με τα αντικείμενα που ανήκουν σε αυτό.

evaluation.cpp, evaluation.h : Συνάρτηση Silhouette

initialization.cpp, initialization.h : Συναρτήσεις για αρχική επιλογή κέντρων των cluster με τυχαία επιλογή ή την μέθοδο k-means++

update.cpp, update.h : Συναρτήσεις για ενημέρωση κέντρων των cluster σύμφωνα με τις μεθόδους Mean Frechet ή PAM.