• Non ci sono risultati.

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

Documenti correlati