6 Struttura del software per l’esecuzione dei TEST
6.1 Sezione gistManager
Tale sezione contiene le classi necessarie a gestire il software GistManager e per gestire i file e cartelle su disco in con semplicità.
6.1.1 Classe FileHandler
E’ una classe di utilità contenente metodi per la scrittura e l’analisi di file e dati su disco. I suoi metodi principali sono:
82 staticstring getDateTimeString(): Restituisce una stringa nel formato
anno-mese-giorno_Ora:Min:Sec .
staticstring getWorkingDirPath():Restituisce percorso working directory. staticbool createDirectory(string dir_root_path, string dir_name): Crea la cartella dir_name dentro la cartella di percorso assoluto dir_root_path. Se l'operazione non va a buon fine restituisce false.
staticbool deleteDirectory(string dir_root_path, string dir_name): Cancella la cartella dir_name dentro la cartella dir_root_path. Se l'operazione non va a buon fine restituisce false.
staticbool fileExist(string file_path): Verifica l'esistenza del file di percorso assoluto file_path
staticbool dir_Exist(string dir_path): Verifica l'esistenza del file di percorso assoluto file_path
staticvoid printDirectoryContent(string dir_path): Scrive su stdout il contenuto della directory dir_path
staticvoid printDirectoryPermissions(string dir_path): Scrive su stdout i permessi della directory dir_path
staticbool writeStringOnFile(string dir_path, string file_name, string& content): Crea il file di nome file_name all'interno della cartella di percorso assoluto dir_path e scrive al suo interno la stringa content. Restituisce true se l'operazione va a buon fine, false altrimenti. staticbool appendStringOnFile(string dir_path, string file_name, string& content):
Aggiunge al termine del file di nome file_name all'interno della cartella di percorso assoluto dir_path e scrive al suo interno la stringa content. Restituisce true se l'operazione va a buon fine.
staticvector<string>* getFileRows(string file_path): Analizza riga per riga il contenuto di un file di testo di percorso file_path e restiuisce un vettore contenente le righe del file sotto forma di oggetti string.
6.1.2 Classe GistManager
La classe funziona da interfaccia per interagire col software Gist SVM.
void createLabelsFile(vector<longlong>* labels, vector<int>* classes, string fileName,
string comment): Crea nella cartella workingDir un file di nome fileName.
Nell'intestazione scrive la stringa comment, preceduta da '#'. Nella seconda riga scrive la stringa "angle \t --\n". Le righe successive sono nel formato etichetta , classe
d'appartenenza: "labels[i] \t classes[i] \n"
void createSelfKernelFile(vector<longlong>* labels, vector<double>* values, string
fileName):
Crea nella cartella workingDir un file di nome fileName. Esso è nel formato necessario a Gist per gli auto-valori di kernel. Nella prima riga inserisce il commento #vuoto. Nella seconda riga scrive la stringa "angle \t --\n". Le righe successive sono nel formato etichetta , valore: "labels[i] \t classes[i] \n"
83 void createKernelMatrixFile(vector<longlong>* rowsLabels, vector<longlong>*
columnsLabels,int** matrix, string fileName, string comment): Crea nella cartella
workingDir un file di nome fileName. Esso è nel formato di input di GIST per le kernel matrix. La prima riga contiene la stringa comment, preceduta dal carattere '#'. La seconda riga contiene come primo valore "angle \t", seguito dai valori columnsLabels separati da tab (\t).
Le righe successive sono nel formato:
rowsLabels[i] \t matrix[i][0] \t matrix[i][1] \t ... \t matrix[i][columnsLabels->size()-1] void createKernelMatrixFile(vector<longlong>* rowsLabels, vector<longlong>* columnsLabels,double** matrix, string fileName, string comment): Crea nella cartella workingDir un file di nome fileName. Esso è nel formato di input di GIST per le kernel matrix. La prima riga contiene la stringa comment, preceduta dal carattere '#'. La seconda riga contiene come primo valore "angle \t", seguito dai valori columnsLabels separati da tab (\t). Le righe successive sono nel formato:
rowsLabels[i] \t matrix[i][0] \t matrix[i][1] \t ... \t matrix[i][columnsLabels->size()-1] void appendToKernelMatrixFile(vector<longlong>* rowsLabels,double** matrix, int columns, string fileName): Aggiunge al file di nome fileName nella working directory le righe nel formato:
rowsLabels[i] \t matrix[i][0] \t matrix[i][1] \t ... \t matrix[i][columnsLabels->size()-1] void exec_gistTrainSvm(string outputFileName, string kernelMatrix_fileName, string
class_fileName, bool normalize): Esegue il programma gist-train-svm, passando in ingresso come parametri:
matrix
constant 0
nonormalize: se normalize è impostato a false
train kernelMatrix_fileName
class class_fileName
Scrive nel file outputFileName l'output del programma.
void exec_gistClassify(string outputFileName, string weights_fileName, string
kernelMatrix_fileName): Esegue il programma gist-classify, passando in ingresso come parametri:
learned: kernelMatrix_fileName
test: weights_fileName
scrive nel file outputFileName l'output del programma.
void exec_gistClassifyNormalized(string outputFileName, string weights_fileName, string
kernelMatrix_fileName, string selfTrain_fileName, string selfTest_fileName):
Esegue il programma gist-classify, passando in ingresso come parametri
selftrain: selfTrain_fileName
selftest : selfTest_fileName
learned: kernelMatrix_fileName
test: weights_fileName
Scrive nel file outputFileName l'output del programma.
void exec_gistScoreSvm(string outputFileName, string testLabels_fileName, string
testPredict_fileName, string weights_fileName): Esegue lo script gist-score-svm, passando in ingresso come parametri:
test testLabels_fileName testPredict_fileName weights_fileName Scrive nel file outputFileName l'output dello script.
bool setGistBinDir(string gistBinPath): Imposta la cartella file binari di Gist SVM. Restituisce falso se la directory impostata è errata.
84 ScoreSvmInfo* scoreSvm_outputAnalyzer(vector<string>* file_rows): Analizza l'output del file scoreSvm. Le righe file_rows sono le righe del file dato in output dallo script gist-score-svm. Restituisce in output un oggetto di tipo ScoreSvmInfo che contiene le
informazioni del file in formato gestibile dal software in maniera agevole. bool setWorkingDir(string dir_path): Imposta la directory di lavoro per la classe. Restituisce true se la directory è stata impostata correttamente
6.1.3 classe ScoreSvmInfo
Contiene la descrizione dell’output dello script gist-score-svm. E’ costituito da metodi getter/setter per i valori significativi in output dallo script.
int getNegSupVectNum() const; void setNegSupVectNum(int negSupVectNum):
imposta/restituisce il numero di vettori di supporto negativi
int getNegTrainSetDim() const; void setNegTrainSetDim(int negTrainSetDim):
imposta/restituisce la dimensione dell'insieme di train negativo.
int getPosSupVectNum() const; void setPosSupVectNum(int posSupVectNum): imposta/ restituisce la dimensione del numero di vettori di supporto positivi.
int getPosTrainSetDim() const; void setPosTrainSetDim(int posTrainSetDim): imposta/ restituisce la dimensione dell'insieme di trianing positivo.
int getTestFn() const; void setTestFn(int testFn): imposta/restituisce il numero di esempi di test falsi negativi.
int getTestFp() const; void setTestFp(int testFp): imposta/restituisce il numero di esempi di test falsi positivi.
int getTestTn() const; void setTestTn(int testTn): imposta/restituisce il numero di esempi di test veri negativi.
int getTestTp() const; void setTestTp(int testTp): imposta/restituisce il numero di esempi di test veri positivi.
float getTestRoc() const; void setTestRoc(float testRoc): imposta/restituisce il valore ROC per il test
int getTrainFn() const; void setTrainFn(int trainFn): imposta/restituisce il numero di esempi di train falsi negativi.
int getTrainFp() const; void setTrainFp(int trainFp): imposta/restituisce il numero di esempi di train falsi positivi.
int getTrainTn() const; void setTrainTn(int trainTn): imposta/restituisce il numero di esempi di train true negativi.
int getTrainTp() const; void setTrainTp(int trainTp): imposta/restituisce il numero di esempi di train true positive.
float getTrainRoc() const: void setTrainRoc(float trainRoc): imposta/restituisce il valore ROC per il training
85