[mlpack-svn] r15669 - in mlpack/branches/mlpack-bindings/src/mlpack/bindings: . methods_bindings methods_bindings/cf methods_bindings/det methods_bindings/emst methods_bindings/fastmks methods_bindings/gmm methods_bindings/hmm methods_bindings/kernel_pca methods_bindings/kmeans methods_bindings/lars methods_bindings/linear_regression methods_bindings/local_coordinate_coding methods_bindings/lsh methods_bindings/mvu methods_bindings/naive_bayes methods_bindings/nca methods_bindings/neighbor_search methods_bindings/nmf methods_bindings/pca methods_bindings/radical methods_bindings/range_search methods_bindings/rann methods_bindings/sparse_coding octave python/allknn r

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Aug 26 19:12:29 EDT 2013


Author: pyrotekniq
Date: Mon Aug 26 19:12:29 2013
New Revision: 15669

Log:
python binding



Added:
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/cf/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/cf/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/det/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/det/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/emst/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/emst/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/fastmks/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/fastmks/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/gmm/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/gmm/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/hmm/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/hmm/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kernel_pca/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kernel_pca/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kmeans/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kmeans/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lars/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lars/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/linear_regression/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/linear_regression/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/local_coordinate_coding/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/local_coordinate_coding/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lsh/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lsh/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/mvu/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/mvu/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/naive_bayes/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/naive_bayes/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nca/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nca/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python (OLD WORKING).i
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python.i
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nmf/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nmf/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/pca/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/pca/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/radical/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/radical/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/range_search/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/range_search/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/rann/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/rann/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/sparse_coding/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/sparse_coding/CMakeLists.txt
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/octave/
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/r/
Removed:
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/python/allknn/
Modified:
   mlpack/branches/mlpack-bindings/src/mlpack/bindings/CMakeLists.txt

Modified: mlpack/branches/mlpack-bindings/src/mlpack/bindings/CMakeLists.txt
==============================================================================
--- mlpack/branches/mlpack-bindings/src/mlpack/bindings/CMakeLists.txt	(original)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -7,15 +7,8 @@
 endif(MATLAB_BINDINGS)
 
 
-#SWIG
-if(SWIGPYTHON)
-  add_subdirectory(python)
-endif(SWIGPYTHON)
+#Methods to bind with SWIG
 
-if(SWIGR)
-  add_subdirectory(r)
-endif(SWIGR)
-
-if(SWIGOCTAVE)
-  add_subdirectory(octave)
-endif(SWIGOCTAVE)
+if(SWIGPYTHON OR SWIGR OR SWIGOCTAVE)
+ add_subdirectory(methods_bindings)
+endif()

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1,30 @@
+#Recurse into subdirectories of each method
+
+set(BINDINGDIRS
+#  cf
+  det
+  emst
+  fastmks
+  gmm
+  hmm
+  kernel_pca
+  kmeans
+  lars
+  linear_regression
+  local_coordinate_coding
+  lsh
+  mvu
+  naive_bayes
+  nca
+  neighbor_search
+  nmf
+  pca
+  radical
+  range_search
+  rann
+  sparse_coding
+)
+
+foreach(dir ${BINDINGDIRS})
+    add_subdirectory(${dir})
+endforeach()

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/cf/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/cf/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/det/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/det/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/emst/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/emst/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/fastmks/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/fastmks/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/gmm/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/gmm/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/hmm/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/hmm/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kernel_pca/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kernel_pca/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kmeans/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/kmeans/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lars/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lars/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/linear_regression/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/linear_regression/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/local_coordinate_coding/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/local_coordinate_coding/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lsh/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/lsh/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/mvu/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/mvu/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/naive_bayes/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/naive_bayes/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nca/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nca/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1,145 @@
+# SWIG binding for allknn
+
+#Python
+
+if(SWIGPYTHON)
+  find_package(SWIG REQUIRED)
+  include(${SWIG_USE_FILE})
+
+  find_package(PythonLibs)
+  
+  include_directories(${PYTHON_INCLUDE_PATH})
+
+  find_package(Boost COMPONENTS 
+    python
+  )
+
+  include_directories(${Boost_INCLUDE_DIRS})
+
+
+  include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+  set(CMAKE_SWIG_FLAGS "-c++")
+
+  set(CMAKE_SWIG_OUTDIR ${CMAKE_BINARY_DIR}/bindings) 
+
+  set_source_files_properties(allknn_python.i PROPERTIES 
+    CPLUSPLUS ON
+  )
+  
+  set_source_files_properties(allknn_python.i PROPERTIES 
+    SWIG_FLAGS "-includeall"
+  )
+
+  SWIG_ADD_MODULE(allknnmodule 
+    python 
+    allknn_python.i 
+    ${CMAKE_SOURCE_DIR}/src/mlpack/methods/neighbor_search/allknn_main.cpp
+  )
+
+  set_target_properties(_allknnmodule PROPERTIES
+    LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bindings)
+
+  SWIG_LINK_LIBRARIES(allknnmodule
+    mlpack
+    ${PYTHON_LIBRARIES}
+  )
+
+endif(SWIGPYTHON)
+
+
+
+
+
+
+
+#R Language
+
+if(SWIGR)
+  find_package(SWIG REQUIRED)
+ 
+#http://www.cmake.org/pipermail/cmake/2010-June/037468.html
+# This code sets the following variables
+# R_EXEC      - path to R executable
+# R_LIBS_USER - path to directory of user's R packages (defined only if R is found) 
+#
+# It also defines the following help functions if R is found:
+# FIND_R_PACKAGE(package)            - sets R_<PACKAGE> to ON if package is installed 
+# INSTALL_R_PACKAGE(package)         - installs package in ${R_LIBS_USER}
+# FIND_OR_INSTALL_R_PACKAGE(package) - finds package and installs it, if not found
+
+find_program(R_EXEC R)
+
+if(R_EXEC)
+	# R_LIBS_USER is always defined within R, even if it is not explicitly set by the user
+	execute_process(COMMAND "${R_EXEC}" "--slave" "-e" 
+		"print(Sys.getenv(\"R_LIBS_USER\"))"
+		OUTPUT_VARIABLE _rlibsuser
+		OUTPUT_STRIP_TRAILING_WHITESPACE)
+	string(REGEX REPLACE "[ ]*(R_LIBS_USER)[ ]*\n\"(.*)\"" "\\2"
+		R_LIBS_USER ${_rlibsuser})
+	
+	function(find_r_package package)
+		string(TOUPPER ${package} package_upper)
+		if(NOT R_${package_upper})
+			if(ARGC GREATER 1 AND ARGV1 STREQUAL "REQUIRED")
+				set(${package}_FIND_REQUIRED TRUE)
+			endif()
+			execute_process(COMMAND "${R_EXEC}" "--slave" "-e" 
+				"library('${package}')"
+				RESULT_VARIABLE _${package}_status 
+				ERROR_QUIET OUTPUT_QUIET)
+			if(NOT _${package}_status)
+				set(R_${package_upper} TRUE CACHE BOOL 
+					"Whether the R package ${package} is installed")
+			endif(NOT _${package}_status)
+		endif(NOT R_${package_upper})
+		find_package_handle_standard_args(R_${package} DEFAULT_MSG R_${package_upper})
+	endfunction(find_r_package)
+	
+	function(install_r_package package)
+		message(STATUS "Installing R package ${package}...")
+		execute_process(COMMAND "${R_EXEC}" "--slave" "-e"
+			"install.packages('${package}','${R_LIBS_USER}','http://cran.r-project.org')"
+			ERROR_QUIET OUTPUT_QUIET)
+		message(STATUS "R package ${package} has been installed in ${R_LIBS_USER}")
+	endfunction(install_r_package)
+	
+	function(find_or_install_r_package package)
+		find_r_package(${package})
+		string(TOUPPER ${package} package_upper)
+		if(NOT R_${package_upper})
+			install_r_package(${package})
+		endif()
+	endfunction(find_or_install_r_package)
+endif(R_EXEC)
+
+  find_r_package(base REQUIRED)
+  
+  include(${SWIG_USE_FILE})
+
+  include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+  set(CMAKE_SWIG_FLAGS "-c++")
+  
+  set(CMAKE_SWIG_OUTDIR ${CMAKE_BINARY_DIR}/bindings)
+
+  set_source_files_properties(allknn_r.i PROPERTIES
+    SWIG_FLAGS "-includeall"
+  )
+
+  SWIG_ADD_MODULE(allknnmodule
+    r
+    allknn_r.i
+    ${CMAKE_SOURCE_DIR}/src/mlpack/methods/neighbor_search/allknn_main.cpp
+  )
+
+  set_target_properties(_allknnmodule PROPERTIES
+    LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bindings)
+
+  SWIG_LINK_LIBRARIES(allknnmodule
+    mlpack
+    R
+  )
+
+endif(SWIGR)

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python (OLD WORKING).i
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python (OLD WORKING).i	Mon Aug 26 19:12:29 2013
@@ -0,0 +1,231 @@
+/**
+ * @file allknn_main.i
+ * @author Nicholas Johnston
+ *
+ * SWIG interface file for allknn function.
+ *
+ * ~ Python ~
+ *
+ */
+
+
+
+%module allknn
+
+
+
+/*******************************
+
+////////////////////////////////
+
+definitions and includes section
+
+////////////////////////////////
+
+*******************************/
+
+//Header %{  %} block
+%{
+ 
+  #define SWIG_FILE_WITH_INIT 
+
+%}
+
+#include "../numpy.i"
+
+
+
+/************************
+
+/////////////////////////
+
+%init section
+
+////////////////////////
+
+***********************/
+
+%init%{
+
+import_array();
+
+%}
+
+
+
+/*********************
+
+//////////////////////
+
+%{... } section
+
+//////////////////////
+
+*********************/
+
+
+
+%{
+
+//Include mlpack core; this should allow us to use Armadillo types
+#include <mlpack/core.hpp>
+
+//Include allKnn in wrapper code
+extern void allKnn(arma::mat &referenceData, arma::mat &queryData, arma::mat &distances, arma::Mat<size_t> &neighbors, int lsInt, size_t k, bool naive, bool singleMode, bool randomBasis, bool coverTree);
+
+%}
+
+
+
+
+
+/**********************
+
+///////////////////////
+
+Typemap section
+
+///////////////////////
+
+**********************/
+
+%define PYARMA_TYPEMAPS(type)
+
+  /************************************
+    typemap(in)
+  ************************************/
+   
+  %typemap(in) arma::Mat< type > *INPUT
+  {
+
+    // - NumPy to Armadillo
+    
+    
+    arma::Mat< type > *x = new arma::Mat< type >( (type*)(((PyArrayObject *)$input)->data), 2, 2, false, true );
+    //Note: make above line more easy to read!  Split it apart!
+    //We need "strict=true" or memory will be deallocated when we go out of scope
+
+    //x.memptr() = $input.data;  //member of numpy struct
+    //$1 is an arma::Mat< SWIGTYPE > object,
+    //so we point it at the input object,
+    //which should be column major
+    //But is it contiguous???
+
+    $1 = x; //Set the input argument
+    //to the memory address of an "arma::Mat< SWIGTYPE >"
+    //object that contains the marshalled input data
+
+  }
+
+  %typemap(freearg) arma::Mat< type > *INPUT
+  {
+
+    delete $1;
+
+  }
+
+
+  /************************************
+    typemap(argout)
+  ************************************/
+
+  %typemap(in) arma::Mat< type > *OUTPUT //(PyObject *arr = NULL)
+  {
+
+    /*
+       - NumPy to Armadillo
+    */
+    
+    //REPLACE PY MEMORY ALLOCATION WITH ALLOCATION OF MEMORY HERE?
+
+    /*long dim[2];
+    dim[0]=2;
+    dim[1]=2;
+    int numDim = 2;*/
+    
+    //arr = PyArray_SimpleNew(numDim, dim, NPY_DOUBLE);
+    PyArrayObject *a = (PyArrayObject *) $input;
+
+    arma::Mat< type > x( (type*)(((PyArrayObject *)a)->data), 2, 2, false, true );
+
+    //Note: make above line more easy to read!  Split it apart!
+    //We need "strict=true" or memory will be deallocated when we go out of scope
+
+    //x.memptr() = $input.data;  //member of numpy struct
+    //$1 is an arma::Mat< SWIGTYPE > object,
+    //so we point it at the input object,
+    //which should be column major
+    //But is it contiguous???
+
+    $1 = &x; //Set the input argument
+    //to the memory address of an "arma::Mat< SWIGTYPE >"
+    //object that contains the marshalled input data
+
+  }
+
+
+  %typemap(argout) arma::Mat< type > *OUTPUT
+  {
+/*
+    
+    // - Armadillo is converted to NumPy matrix array object
+
+    // We use the "memptr()" member function provided in
+    // Armadillo to gain direct access to the memory block
+    // containing the array elements.
+    
+
+    void *data; //This pointer will be set to the result of the "memptr()" member function
+    int numDim = 2; //Set the number of dimensions to 2 (As we are passing matrices)
+    //npy_intp *dim; //Array of values describing the size of each dimension
+    //int typenum = NPY_DOUBLE; //The type of the elements (e.g. double / NPY_DOUBLE )
+
+    long int dim[2];
+
+    data = $1->memptr(); //Set the data pointer to the memory block containing array elements
+
+    dim[0] = $1->n_cols; //Get size of dimension 0
+    dim[1] = $1->n_rows; //Get size of dimension 1
+    
+    //$result = PyArray_SimpleNew(numDim, dim, typenum, data);*/    
+
+//$result = SWIG_Python_AppendOutput($result, arr$argnum);
+$result = $input;
+  }
+
+%enddef
+
+/* Expand macros for C types that are supported by NumPy */
+PYARMA_TYPEMAPS(double)
+PYARMA_TYPEMAPS(size_t)
+
+
+/******************************
+
+///////////////////////////////
+
+%apply section
+
+///////////////////////////////
+
+******************************/
+
+%apply(arma::Mat< double > *INPUT) { (arma::mat &referenceData) };
+%apply(arma::Mat< double > *INPUT) { (arma::mat &queryData) };
+
+%apply(arma::Mat< double > *OUTPUT) { (arma::mat &distances) };
+%apply(arma::Mat< size_t > *OUTPUT) { (arma::Mat< size_t > &neighbors) };
+
+
+/******************************
+
+///////////////////////////////
+
+parse functions with arguments
+
+///////////////////////////////
+
+******************************/
+
+//Parse allKnn so that a wrapper can be generated for it
+extern void allKnn(arma::mat &referenceData, arma::mat &queryData, arma::mat &distances, arma::Mat<size_t> &neighbors, int lsInt, size_t k, bool naive, bool singleMode, bool randomBasis, bool coverTree);

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python.i
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/neighbor_search/allknn_python.i	Mon Aug 26 19:12:29 2013
@@ -0,0 +1,71 @@
+/**
+ * @file allknn_python.i
+ * @author Nicholas Johnston
+ *
+ * SWIG interface file for allknn function.
+ *
+ * ~ Python ~
+ *
+ */
+
+
+
+%module allknn
+
+
+
+
+/*********************
+
+//////////////////////
+
+%{... %} section
+
+//////////////////////
+
+*********************/
+
+#include "../../python/pythonarma.i"
+
+%{
+
+//Include allKnn in wrapper code
+extern void allknn(arma::mat &referenceData, arma::mat &queryData, int lsInt, size_t k, bool naive, bool singleMode, bool randomBasis, bool coverTree, arma::mat *distPtr,  
+                   arma::Mat<size_t> *neighPtr);
+
+%}
+
+
+
+
+
+/******************************
+
+///////////////////////////////
+
+%apply section
+
+///////////////////////////////
+
+******************************/
+
+%apply arma::Mat< double > *INPUT { arma::mat &referenceData, arma::mat &queryData };
+
+
+%apply arma::Mat< double > *OUTPUT { arma::mat *distPtr };
+%apply arma::Mat< size_t > *OUTPUT { arma::Mat< size_t > *neighPtr };
+
+
+/******************************
+
+///////////////////////////////
+
+parse functions with arguments
+
+///////////////////////////////
+
+******************************/
+
+//Parse allKnn so that a wrapper can be generated for it
+extern void allknn(arma::mat &referenceData, arma::mat &queryData, int lsInt, size_t k, bool naive, bool singleMode, bool randomBasis, bool coverTree, arma::mat *distPtr,
+                   arma::Mat<size_t> *neighPtr);

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nmf/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/nmf/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/pca/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/pca/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/radical/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/radical/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/range_search/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/range_search/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/rann/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/rann/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now

Added: mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/sparse_coding/CMakeLists.txt
==============================================================================
--- (empty file)
+++ mlpack/branches/mlpack-bindings/src/mlpack/bindings/methods_bindings/sparse_coding/CMakeLists.txt	Mon Aug 26 19:12:29 2013
@@ -0,0 +1 @@
+#Empty for now



More information about the mlpack-svn mailing list