Skip to content
Snippets Groups Projects
Commit 3a192f07 authored by Jakhes's avatar Jakhes
Browse files

Adding fastmks tests

parent 049c620f
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,21 @@ float *convertToArray(mat matrix) ...@@ -33,6 +33,21 @@ float *convertToArray(mat matrix)
return convertToArray(vector); return convertToArray(vector);
} }
float *convertToArray(arma::Mat< unsigned long > matrix)
{
int vectorSize = matrix.size();
// using malloc so the memory is still valid outside of the function
float *arr = (float *)malloc (sizeof(float) * vectorSize);
// save the data in a normal array so it can be send to prolog
for(int i = 0; i < vectorSize; i++)
{
arr[i] = (double)matrix[i];
}
return arr;
}
float *convertToArray(vector<size_t> vec) float *convertToArray(vector<size_t> vec)
{ {
colvec newVec = conv_to<colvec>::from(vec); colvec newVec = conv_to<colvec>::from(vec);
...@@ -62,7 +77,6 @@ float *convertToArray(vector<vec> matrix) ...@@ -62,7 +77,6 @@ float *convertToArray(vector<vec> matrix)
vec c = arma::join_cols(a, b); vec c = arma::join_cols(a, b);
newVec = c; newVec = c;
} }
cout << newVec << endl;
return convertToArray(newVec); return convertToArray(newVec);
} }
......
...@@ -13,6 +13,8 @@ float *convertToArray(rowvec vec); ...@@ -13,6 +13,8 @@ float *convertToArray(rowvec vec);
float *convertToArray(mat matrix); float *convertToArray(mat matrix);
float *convertToArray(arma::Mat< size_t > matrix);
float *convertToArray(vector<size_t> vec); float *convertToArray(vector<size_t> vec);
float *convertToArray(vector<double> vec); float *convertToArray(vector<double> vec);
......
...@@ -18,8 +18,9 @@ using namespace mlpack::kernel; ...@@ -18,8 +18,9 @@ using namespace mlpack::kernel;
// Global Variable of the FastMKSModel object so it can be accessed from all functions // Global Variable of the FastMKSModel object so it can be accessed from all functions
FastMKSModel fastMKSModel; FastMKSModel fastMKSModel;
bool isModelTrained = false;
// TODO:
// input: util::Timers & timers, // input: util::Timers & timers,
// arma::mat && referenceData, // arma::mat && referenceData,
// TKernelType & kernel, // TKernelType & kernel,
...@@ -32,9 +33,16 @@ FastMKSModel fastMKSModel; ...@@ -32,9 +33,16 @@ FastMKSModel fastMKSModel;
// const double base // const double base
// output: // output:
// description: // description:
void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer referenceMatRowNum, char const *kernel, double degree, double offset, double bandwidth, double scale, SP_integer singleMode, SP_integer naive, double base) // Initializes the model on the given reference set.
//
void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer referenceMatRowNum,
char const *kernel,
double degree, double offset, double bandwidth, double scale,
SP_integer singleMode,
SP_integer naive,
double base)
{ {
// convert the Prolog arrays to arma::mat // convert the Prolog array to arma::mat
mat reference = convertArrayToMat(referenceMatArr, referenceMatSize, referenceMatRowNum); mat reference = convertArrayToMat(referenceMatArr, referenceMatSize, referenceMatRowNum);
if (strcmp(kernel, "linear") == 0) if (strcmp(kernel, "linear") == 0)
...@@ -42,46 +50,59 @@ void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer r ...@@ -42,46 +50,59 @@ void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer r
fastMKSModel = FastMKSModel(0); fastMKSModel = FastMKSModel(0);
LinearKernel lk; LinearKernel lk;
fastMKSModel.BuildModel(move(reference), lk, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), lk, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "polynomial") == 0) else if (strcmp(kernel, "polynomial") == 0)
{ {
PolynomialKernel pk(degree, offset); PolynomialKernel pk(degree, offset);
fastMKSModel.KernelType() = FastMKSModel::POLYNOMIAL_KERNEL; fastMKSModel.KernelType() = FastMKSModel::POLYNOMIAL_KERNEL;
fastMKSModel.BuildModel(move(reference), pk, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), pk, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "cosine") == 0) else if (strcmp(kernel, "cosine") == 0)
{ {
CosineDistance cd; CosineDistance cd;
fastMKSModel.KernelType() = FastMKSModel::COSINE_DISTANCE; fastMKSModel.KernelType() = FastMKSModel::COSINE_DISTANCE;
fastMKSModel.BuildModel(move(reference), cd, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), cd, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "gaussian") == 0) else if (strcmp(kernel, "gaussian") == 0)
{ {
GaussianKernel gk(bandwidth); GaussianKernel gk(bandwidth);
fastMKSModel.KernelType() = FastMKSModel::GAUSSIAN_KERNEL; fastMKSModel.KernelType() = FastMKSModel::GAUSSIAN_KERNEL;
fastMKSModel.BuildModel(move(reference), gk, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), gk, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "epanechnikov") == 0) else if (strcmp(kernel, "epanechnikov") == 0)
{ {
EpanechnikovKernel ek(bandwidth); EpanechnikovKernel ek(bandwidth);
fastMKSModel.KernelType() = FastMKSModel::EPANECHNIKOV_KERNEL; fastMKSModel.KernelType() = FastMKSModel::EPANECHNIKOV_KERNEL;
fastMKSModel.BuildModel(move(reference), ek, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), ek, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "triangular") == 0) else if (strcmp(kernel, "triangular") == 0)
{ {
TriangularKernel tk(bandwidth); TriangularKernel tk(bandwidth);
fastMKSModel.KernelType() = FastMKSModel::TRIANGULAR_KERNEL; fastMKSModel.KernelType() = FastMKSModel::TRIANGULAR_KERNEL;
fastMKSModel.BuildModel(move(reference), tk, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), tk, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else if (strcmp(kernel, "hyptan") == 0) else if (strcmp(kernel, "hyptan") == 0)
{ {
HyperbolicTangentKernel htk(scale, offset); HyperbolicTangentKernel htk(scale, offset);
fastMKSModel.KernelType() = FastMKSModel::HYPTAN_KERNEL; fastMKSModel.KernelType() = FastMKSModel::HYPTAN_KERNEL;
fastMKSModel.BuildModel(move(reference), htk, (singleMode == 1), (naive == 1), base); fastMKSModel.BuildModel(move(reference), htk, (singleMode == 1), (naive == 1), base);
isModelTrained = true;
} }
else
{
raisePrologDomainExeption(kernel, 2, "The given kernel is unkown!", "initModel");
} }
// TODO: }
// input: util::Timers & timers, // input: util::Timers & timers,
// const arma::mat & querySet, // const arma::mat & querySet,
// const size_t k, // const size_t k,
...@@ -90,62 +111,77 @@ void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer r ...@@ -90,62 +111,77 @@ void initModel(float *referenceMatArr, SP_integer referenceMatSize, SP_integer r
// const double base // const double base
// output: // output:
// description: // description:
void searchWithQuery(float *querySetMatArr, SP_integer querySetMatSize, SP_integer querySetMatRowNum, SP_integer k, float **indicesMatArr, SP_integer *indicesMatColNum, SP_integer *indicesMatRowNum, float **kernelsMatArr, SP_integer *kernelsMatColNum, SP_integer *kernelsMatRowNum, double base) // Search with a different query set.
//
void searchWithQuery(float *querySetMatArr, SP_integer querySetMatSize, SP_integer querySetMatRowNum,
SP_integer k,
float **indicesMatArr, SP_integer *indicesMatColNum, SP_integer *indicesMatRowNum,
float **kernelsMatArr, SP_integer *kernelsMatColNum, SP_integer *kernelsMatRowNum,
double base)
{
if (!isModelTrained)
{ {
// convert the Prolog arrays to arma::mat raisePrologSystemExeption("The Model hasnt been trained yet!");
return;
}
// convert the Prolog array to arma::mat
mat querySet = convertArrayToMat(querySetMatArr, querySetMatSize, querySetMatRowNum); mat querySet = convertArrayToMat(querySetMatArr, querySetMatSize, querySetMatRowNum);
// create the ReturnMat // create the ReturnMats
arma::Mat< size_t > indicesReturnMat; arma::Mat< size_t > indicesReturnMat;
// create the ReturnMat
mat kernelsReturnMat; mat kernelsReturnMat;
fastMKSModel.Search(querySet, k, indicesReturnMat, kernelsReturnMat, base);
// return the Matrix dimensions try
*indicesMatColNum = indicesReturnMat.n_cols; {
*indicesMatRowNum = indicesReturnMat.n_rows; fastMKSModel.Search(querySet, k, indicesReturnMat, kernelsReturnMat, base);
}
// return the Matrix as one long Array catch(const std::exception& e)
*indicesMatArr = convertToArray(indicesReturnMat); {
raisePrologSystemExeption(e.what());
}
// return the Matrix dimensions
*kernelsMatColNum = kernelsReturnMat.n_cols;
*kernelsMatRowNum = kernelsReturnMat.n_rows;
// return the Matrix as one long Array // return the Matrices
*kernelsMatArr = convertToArray(kernelsReturnMat); returnMatrixInformation(indicesReturnMat, indicesMatArr, indicesMatColNum, indicesMatRowNum);
returnMatrixInformation(kernelsReturnMat, kernelsMatArr, kernelsMatColNum, kernelsMatRowNum);
} }
// TODO:
// input: util::Timers & timers, // input: util::Timers & timers,
// const size_t k, // const size_t k,
// arma::Mat< size_t > & indices <-, // arma::Mat< size_t > & indices <-,
// arma::mat & kernels <- // arma::mat & kernels <-
// output: // output:
// description: // description:
void searchNoQuery(SP_integer k, float **indicesMatArr, SP_integer *indicesMatColNum, SP_integer *indicesMatRowNum, float **kernelsMatArr, SP_integer *kernelsMatColNum, SP_integer *kernelsMatRowNum) // Search with the reference set as the query set.
//
void searchNoQuery(SP_integer k,
float **indicesMatArr, SP_integer *indicesMatColNum, SP_integer *indicesMatRowNum,
float **kernelsMatArr, SP_integer *kernelsMatColNum, SP_integer *kernelsMatRowNum)
{ {
// create the ReturnMat if (!isModelTrained)
{
raisePrologSystemExeption("The Model hasnt been trained yet!");
return;
}
// create the ReturnMats
arma::Mat< size_t > indicesReturnMat; arma::Mat< size_t > indicesReturnMat;
arma::mat kernelsReturnMat;
// create the ReturnMat
mat kernelsReturnMat;
fastMKSModel.Search(k, indicesReturnMat, kernelsReturnMat); try
{
// return the Matrix dimensions fastMKSModel.Search((size_t)k, indicesReturnMat, kernelsReturnMat);
*indicesMatColNum = indicesReturnMat.n_cols; }
*indicesMatRowNum = indicesReturnMat.n_rows; catch(const std::exception& e)
{
// return the Matrix as one long Array raisePrologSystemExeption(e.what());
*indicesMatArr = convertToArray(indicesReturnMat); return;
}
// return the Matrix dimensions
*kernelsMatColNum = kernelsReturnMat.n_cols;
*kernelsMatRowNum = kernelsReturnMat.n_rows;
// return the Matrix as one long Array returnMatrixInformation(indicesReturnMat, indicesMatArr, indicesMatColNum, indicesMatRowNum);
*kernelsMatArr = convertToArray(kernelsReturnMat); returnMatrixInformation(kernelsReturnMat, kernelsMatArr, kernelsMatColNum, kernelsMatRowNum);
} }
:- module(fastmks, [ initModel/11, :- module(fastmks, [ initModel/10,
searchWithQuery/11, searchWithQuery/8,
searchNoQuery/7]). searchNoQuery/5]).
%% requirements of library(struct) %% requirements of library(struct)
:- load_files(library(str_decl), :- load_files(library(str_decl),
...@@ -19,6 +19,11 @@ ...@@ -19,6 +19,11 @@
%% definitions for the connected function %% definitions for the connected function
foreign(initModel, c, initModelI( +pointer(float_array), +integer, +integer,
+string,
+float32, +float32, +float32, +float32,
+integer, +integer,
+float32)).
%% --Input-- %% --Input--
%% mat referenceData, %% mat referenceData,
%% string kernel "linear", "polynomial", "cosine", "gaussian", "epanechnikov", "triangular", "hyptan" %% string kernel "linear", "polynomial", "cosine", "gaussian", "epanechnikov", "triangular", "hyptan"
...@@ -35,13 +40,19 @@ ...@@ -35,13 +40,19 @@
%% --Description-- %% --Description--
%% Initializes the model on the given reference set. %% Initializes the model on the given reference set.
%% %%
foreign(initModel, c, initModel(+pointer(float_array), +integer, +integer, initModel(DataList, DataRows, Kernel, Degree, Offset, Bandwidth, Scale, SingleMode, Naive, Base) :-
+string, Base > 1.0,
+float32, +float32, +float32, +float32, Bandwidth > 0.0,
+integer, +integer, convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrows, X)),
+float32)). initModelI(X, Xsize, Xrows, Kernel, Degree, Offset, Bandwidth, Scale, SingleMode, Naive, Base).
foreign(searchWithQuery, c, searchWithQueryI( +pointer(float_array), +integer, +integer,
+integer,
-pointer(float_array), -integer, -integer,
-pointer(float_array), -integer, -integer,
+float32)).
%% --Input-- %% --Input--
%% mat querySet, %% mat querySet,
%% int k, %% int k,
...@@ -54,13 +65,19 @@ foreign(initModel, c, initModel(+pointer(float_array), +integer, +integer, ...@@ -54,13 +65,19 @@ foreign(initModel, c, initModel(+pointer(float_array), +integer, +integer,
%% --Description-- %% --Description--
%% Search with a different query set. %% Search with a different query set.
%% %%
foreign(searchWithQuery, c, searchWithQuery( +pointer(float_array), +integer, +integer, searchWithQuery(DataList, DataRows, K, IndicesList, YCols, KernelsList, ZCols, Base) :-
+integer, K > 0,
-pointer(float_array), -integer, -integer, Base > 1.0,
-pointer(float_array), -integer, -integer, convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrows, X)),
+float32)). searchWithQueryI(X, Xsize, Xrows, K, Y, YCols, YRows, Z, ZCols, ZRows, Base),
convert_float_array_to_2d_list(Y, YCols, YRows, IndicesList),
convert_float_array_to_2d_list(Z, ZCols, ZRows, KernelsList).
foreign(searchNoQuery, c, searchNoQueryI( +integer,
-pointer(float_array), -integer, -integer,
-pointer(float_array), -integer, -integer)).
%% --Input-- %% --Input--
%% int k %% int k
%% %%
...@@ -71,9 +88,11 @@ foreign(searchWithQuery, c, searchWithQuery( +pointer(float_array), +integer, ...@@ -71,9 +88,11 @@ foreign(searchWithQuery, c, searchWithQuery( +pointer(float_array), +integer,
%% --Description-- %% --Description--
%% Search with the reference set as the query set. %% Search with the reference set as the query set.
%% %%
foreign(searchNoQuery, c, searchNoQuery(+integer, searchNoQuery(K, IndicesList, YCols, KernelsList, ZCols) :-
-pointer(float_array), -integer, -integer, K > 0,
-pointer(float_array), -integer, -integer)). searchNoQueryI(K, Y, YCols, YRows, Z, ZCols, ZRows),
convert_float_array_to_2d_list(Y, YCols, YRows, IndicesList),
convert_float_array_to_2d_list(Z, ZCols, ZRows, KernelsList).
%% Defines the functions that get connected from main.cpp %% Defines the functions that get connected from main.cpp
...@@ -81,4 +100,5 @@ foreign_resource(fastmks, [ initModel, ...@@ -81,4 +100,5 @@ foreign_resource(fastmks, [ initModel,
searchWithQuery, searchWithQuery,
searchNoQuery]). searchNoQuery]).
:- load_foreign_resource(fastmks). :- load_foreign_resource(fastmks).
:- module(fastmks_tests, [run_fastmks_tests/0]).
:- use_module(library(plunit)). :- use_module(library(plunit)).
:- use_module(fastmks). :- use_module(fastmks).
:- use_module('../../helper_files/helper.pl'). :- use_module('../../helper_files/helper.pl').
reset_Model :- reset_Model :-
initModel(1,0,50,0.0001). open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, linear, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.2).
:- begin_tests(lists).
%% alpha tests %%
test(alpha_std_init) :- %% TESTING predicate initModel/10
reset_Model, %%
alpha(0). :- begin_tests(initModel).
test(alpha_wrong_input, fail) :-
reset_Model, %% Failure Tests
alpha(1).
test(alpha_after_train, A =:= 9223372036854775808) :- test(searchWithQuery_Fastmks_Search_Before_Init, [error(_,system_error('The Model hasnt been trained yet!'))]) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,5, Data),
searchWithQuery(Data, 4, 2, _, _, _, _, 1.1).
test(searchNoQuery_Fastmks_Search_Before_Init, [error(_,system_error('The Model hasnt been trained yet!'))]) :-
searchNoQuery(2, _, _, _, _).
test(initModel_Fatsmks_WrongKernel_Input, [error(domain_error('The given kernel is unkown!' , wrongKernel), _)]) :-
initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, wrongKernel, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.2).
test(initModel_Fatsmks_Bad_Base_Input, fail) :-
initModel([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, linear, 0.0, 0.0, 1.0, 0.0, 0, 0, -0.1).
%% Successful Tests
test(iniModel_Fastmks_Linear) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, linear, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.5).
test(iniModel_Fastmks_Polynomial) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, polynomial, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.5).
test(iniModel_Fastmks_Cosine) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, cosine, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.5).
test(iniModel_Fastmks_Gaussian) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, gaussian, 0.5, 0.5, 0.5, 0.5, 0, 0, 1.5).
test(iniModel_Fastmks_Epanechnikov) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, epanechnikov, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.5).
test(iniModel_Fastmks_Triangular) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, triangular, 0.0, 0.0, 1.0, 0.0, 0, 0, 1.5).
test(iniModel_Fastmks_Hyptan) :-
open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
take_csv_row(File, skipFirstRow,10, Data),
initModel(Data, 4, hyptan, 0.0, 0.0, 1.0, 1.0, 0, 0, 1.5).
:- end_tests(initModel).
%%
%% TESTING predicate searchWithQuery/8
%%
:- begin_tests(searchWithQuery).
%% Failure Tests
test(searchWithQuery_Fastmks_Negative_K, fail) :-
reset_Model, reset_Model,
convert_list_to_float_array([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5],3, array(Xsize, Xrownum, X)), open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), take_csv_row(File, skipFirstRow,5, Data),
train(X,Xsize, Xrownum,Y, Ysize), searchWithQuery(Data, 4, -2, _, _, _, _, 1.1).
alpha(A).
%% train tests test(searchWithQuery_Fastmks_Negative_Base, fail) :-
test(correct_train) :-
reset_Model, reset_Model,
convert_list_to_float_array([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5],3, array(Xsize, Xrownum, X)), open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), take_csv_row(File, skipFirstRow,5, Data),
train(X,Xsize, Xrownum,Y, Ysize). searchWithQuery(Data, 4, 2, _, _, _, _, -1.1).
test(false_train, fail) :-
%% Successful Tests
test(searchWithQuery_Fastmks_New_Query) :-
reset_Model, reset_Model,
convert_list_to_float_array([],3, array(Xsize, Xrownum, X)), searchWithQuery([3, 2, 0, 5, 1, 4, 0, 0, 4, 3, 3, 5, 0, 5, 5, 2, 5, 5, 0, 2], 4, 2, IndicesList, _, KernelsList, _, 1.1),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), print('Indices:\n'),
train(X,Xsize, Xrownum,Y, Ysize). print(IndicesList),
test(false_train2, fail) :- print('Kernels:\n'),
print(KernelsList).
test(searchWithQuery_Fastmks_Training_Data_Query) :-
reset_Model, reset_Model,
convert_list_to_float_array([],0, array(Xsize, Xrownum, X)), open('/home/afkjakhes/eclipse-workspace/prolog-mlpack-libary/src/data_csv/iris2.csv', read, File),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), take_csv_row(File, skipFirstRow,5, Data),
train(X,Xsize, Xrownum,Y, Ysize). searchWithQuery(Data, 4, 2, IndicesList, _, KernelsList, _, 1.1),
test(false_train3, fail) :- print('Indices:\n'),
print(IndicesList),
print('Kernels:\n'),
print(KernelsList).
:- end_tests(searchWithQuery).
%%
%% TESTING predicate searchNoQuery/5
%%
:- begin_tests(searchNoQuery).
%% Failure Tests
test(searchNoQuery_Fastmks_Negative_K, fail) :-
reset_Model, reset_Model,
convert_list_to_float_array([1,2],0, array(Xsize, Xrownum, X)), searchNoQuery(-2, _, _, _, _).
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)),
train(X,Xsize, Xrownum,Y, Ysize).
test(false_train3, fail) :- %% Successful Tests
test(testDescription) :-
reset_Model, reset_Model,
convert_list_to_float_array([1,2,44,3],3, array(Xsize, Xrownum, X)), searchNoQuery(2, IndicesList, _, KernelsList, _),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), print('Indices:\n'),
train(X,Xsize, Xrownum,Y, Ysize). print(IndicesList),
test(false_train4) :- print('Kernels:\n'),
print(KernelsList).
test(testDescription) :-
reset_Model, reset_Model,
convert_list_to_float_array([1,2,44,3],2, array(Xsize, Xrownum, X)), searchNoQuery(5, IndicesList, _, KernelsList, _),
convert_list_to_float_array([0.2,0.2,0.2,0.2], array(Ysize, Y)), print('Indices:\n'),
train(X,Xsize, Xrownum,Y, Ysize). print(IndicesList),
:- end_tests(lists). print('Kernels:\n'),
\ No newline at end of file print(KernelsList).
:- end_tests(searchNoQuery).
run_fastmks_tests :-
run_tests.
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
:- use_module('src/methods/decision_tree/decision_tree_test.pl'). :- use_module('src/methods/decision_tree/decision_tree_test.pl').
:- use_module('src/methods/emst/emst_test.pl').
:- use_module('src/methods/fastmks/fastmks_test.pl').
:- use_module('src/methods/sparse_coding/sparse_coding_test.pl'). :- use_module('src/methods/sparse_coding/sparse_coding_test.pl').
:- use_module('src/helper_files/helper_tests.pl'). :- use_module('src/helper_files/helper_tests.pl').
...@@ -14,5 +18,7 @@ run :- ...@@ -14,5 +18,7 @@ run :-
run_adaboost_tests, run_adaboost_tests,
run_dbscan_tests, run_dbscan_tests,
run_decision_tree_tests, run_decision_tree_tests,
run_emst_tests,
run_fastmks_tests,
run_sparse_coding_tests, run_sparse_coding_tests,
run_helper_tests. run_helper_tests.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment