[mlpack-svn] r15664 - in mlpack/conf/jenkins-conf/benchmark: methods/mlpy methods/scikit methods/shogun util

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Aug 26 07:10:11 EDT 2013


Author: marcus
Date: Mon Aug 26 07:10:09 2013
New Revision: 15664

Log:
Use the new timeout function for the shogun methods and catch memory exception.

Modified:
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py
   mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py
   mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py
   mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py
   mlpack/conf/jenkins-conf/benchmark/util/timer.py

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/allknn.py	Mon Aug 26 07:10:09 2013
@@ -63,29 +63,33 @@
       labels = referenceData[:, (referenceData.shape[1] - 1)]
       referenceData = referenceData[:,:-1]
 
-      with totalTimer:
-        # Get all the parameters.
-        k = re.search("-k (\d+)", options)
-        if not k:
-          Log.Fatal("Required option: Number of furthest neighbors to find.")
-          q.put(-1)
-          return -1
-        else:
-          k = int(k.group(1))
-          if (k < 1 or k > referenceData.shape[0]):
-            Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
-              + "less ")
+      try:
+        with totalTimer:
+          # Get all the parameters.
+          k = re.search("-k (\d+)", options)
+          if not k:
+            Log.Fatal("Required option: Number of furthest neighbors to find.")
             q.put(-1)
             return -1
-
-        # Perform All K-Nearest-Neighbors.
-        model = mlpy.KNN(k)
-        model.learn(referenceData, labels)
-
-        if len(self.dataset) == 2:
-          out = model.pred(queryData)
-        else:
-          out = model.pred(referenceData)
+          else:
+            k = int(k.group(1))
+            if (k < 1 or k > referenceData.shape[0]):
+              Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
+                + "less ")
+              q.put(-1)
+              return -1
+
+          # Perform All K-Nearest-Neighbors.
+          model = mlpy.KNN(k)
+          model.learn(referenceData, labels)
+
+          if len(self.dataset) == 2:
+            out = model.pred(queryData)
+          else:
+            out = model.pred(referenceData)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kernel_pca.py	Mon Aug 26 07:10:09 2013
@@ -53,47 +53,51 @@
       Log.Info("Loading dataset", self.verbose)
       data = np.genfromtxt(self.dataset, delimiter=',')
 
-      with totalTimer:
-        # Get the new dimensionality, if it is necessary.
-        dimension = re.search('-d (\d+)', options)
-        if not dimension:
-          d = data.shape[0]
-        else:
-          d = int(dimension.group(1))      
-          if (d > data.shape[1]):
-            Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
-              + "than existing dimensionality (" + str(data.shape[1]) + ")!")
-            q.put(-1)
-            return -1    
-
-        # Get the kernel type and make sure it is valid.
-        kernel = re.search("-k ([^\s]+)", options)
-        if not kernel:
-            Log.Fatal("Choose kernel type, valid choices are 'polynomial', " + 
-                  "'gaussian', 'linear' and 'hyptan'.")
+      try:
+        with totalTimer:
+          # Get the new dimensionality, if it is necessary.
+          dimension = re.search('-d (\d+)', options)
+          if not dimension:
+            d = data.shape[0]
+          else:
+            d = int(dimension.group(1))      
+            if (d > data.shape[1]):
+              Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
+                + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+              q.put(-1)
+              return -1    
+
+          # Get the kernel type and make sure it is valid.
+          kernel = re.search("-k ([^\s]+)", options)
+          if not kernel:
+              Log.Fatal("Choose kernel type, valid choices are 'polynomial', " + 
+                    "'gaussian', 'linear' and 'hyptan'.")
+              q.put(-1)
+              return -1
+          elif kernel.group(1) == "polynomial":
+            degree = re.search('-D (\d+)', options)
+            degree = 1 if not degree else int(degree.group(1))
+
+            kernel = mlpy.kernel_polynomial(data, data, d=degree)
+          elif kernel.group(1) == "gaussian":
+            kernel = mlpy.kernel_gaussian(data, data, sigma=2) 
+          elif kernel.group(1) == "linear":
+            kernel = mlpy.kernel_linear(data, data)
+          elif kernel.group(1) == "hyptan":
+            kernel = mlpy.kernel_sigmoid(data, data)
+          else:
+            Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
+                    "choices are 'polynomial', 'gaussian', 'linear' and 'hyptan'.")
             q.put(-1)
             return -1
-        elif kernel.group(1) == "polynomial":
-          degree = re.search('-D (\d+)', options)
-          degree = 1 if not degree else int(degree.group(1))
-
-          kernel = mlpy.kernel_polynomial(data, data, d=degree)
-        elif kernel.group(1) == "gaussian":
-          kernel = mlpy.kernel_gaussian(data, data, sigma=2) 
-        elif kernel.group(1) == "linear":
-          kernel = mlpy.kernel_linear(data, data)
-        elif kernel.group(1) == "hyptan":
-          kernel = mlpy.kernel_sigmoid(data, data)
-        else:
-          Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
-                  "choices are 'polynomial', 'gaussian', 'linear' and 'hyptan'.")
-          q.put(-1)
-          return -1
-
-        # Perform Kernel Principal Components Analysis.
-        model = mlpy.KPCA()
-        model.learn(kernel)
-        out = model.transform(kernel, k=d)
+
+          # Perform Kernel Principal Components Analysis.
+          model = mlpy.KPCA()
+          model.learn(kernel)
+          out = model.transform(kernel, k=d)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/kmeans.py	Mon Aug 26 07:10:09 2013
@@ -68,12 +68,16 @@
         q.put(-1)
         return -1
 
-      with totalTimer:
-        # Create the KMeans object and perform K-Means clustering.
-        if seed:
-          kmeans = mlpy.kmeans(data, int(clusters.group(1)), seed=int(seed.group(1)))
-        else:
-          kmeans = mlpy.kmeans(data, int(clusters.group(1)))
+      try:
+        with totalTimer:
+          # Create the KMeans object and perform K-Means clustering.
+          if seed:
+            kmeans = mlpy.kmeans(data, int(clusters.group(1)), seed=int(seed.group(1)))
+          else:
+            kmeans = mlpy.kmeans(data, int(clusters.group(1)))
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/lars.py	Mon Aug 26 07:10:09 2013
@@ -54,11 +54,15 @@
       inputData = np.genfromtxt(self.dataset[0], delimiter=',')
       responsesData = np.genfromtxt(self.dataset[1], delimiter=',')
 
-      with totalTimer:
-        # Perform LARS.
-        model = mlpy.LARS()
-        model.learn(inputData, responsesData)
-        out = model.beta()
+      try:
+        with totalTimer:
+          # Perform LARS.
+          model = mlpy.LARS()
+          model.learn(inputData, responsesData)
+          out = model.beta()
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/linear_regression.py	Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
         y = X[:, (X.shape[1] - 1)]
         X = X[:,:-1]
 
-      with totalTimer:
-        # Perform linear regression.
-        model = mlpy.OLS()
-        model.learn(X, y)
-        b =  model.beta()
+      try:
+        with totalTimer:
+          # Perform linear regression.
+          model = mlpy.OLS()
+          model.learn(X, y)
+          b =  model.beta()
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/mlpy/pca.py	Mon Aug 26 07:10:09 2013
@@ -53,7 +53,8 @@
       Log.Info("Loading dataset", self.verbose)
       data = np.genfromtxt(self.dataset, delimiter=',')
 
-      with totalTimer:
+      try:
+        with totalTimer:
         # Find out what dimension we want.
         match = re.search('-d (\d+)', options)
 
@@ -74,6 +75,9 @@
         prep = mlpy.PCA(whiten = s)
         prep.learn(data)
         out = prep.transform(data, k)      
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/allknn.py	Mon Aug 26 07:10:09 2013
@@ -85,15 +85,19 @@
           return -1
         else:
           l = int(leafSize.group(1))
-
-        # Perform All K-Nearest-Neighbors.
-        model = NearestNeighbors(n_neighbors=k, algorithm='kd_tree', leaf_size=l)
-        model.fit(referenceData)
-
-        if len(self.dataset) == 2:
-          out = model.kneighbors(queryData, k, return_distance=True)
-        else:
-          out = model.kneighbors(referenceData, k, return_distance=True)
+  
+        try:
+          # Perform All K-Nearest-Neighbors.
+          model = NearestNeighbors(n_neighbors=k, algorithm='kd_tree', leaf_size=l)
+          model.fit(referenceData)
+
+          if len(self.dataset) == 2:
+            out = model.kneighbors(queryData, k, return_distance=True)
+          else:
+            out = model.kneighbors(referenceData, k, return_distance=True)
+        except Exception as e:
+          q.put(-1)
+          return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/gmm.py	Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
       n = 250 if not n else int(n.group(1))
       s = 0 if not s else int(s.group(1))
 
-      # Create the Gaussian Mixture Model.
-      model = mixture.GMM(n_components=g, covariance_type='full', random_state=s, 
-          n_iter=n)
-      with totalTimer:
-        model.fit(dataPoints) 
+      try:
+        # Create the Gaussian Mixture Model.
+        model = mixture.GMM(n_components=g, covariance_type='full', random_state=s, 
+            n_iter=n)
+        with totalTimer:
+          model.fit(dataPoints)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/ica.py	Mon Aug 26 07:10:09 2013
@@ -55,11 +55,15 @@
       s = re.search('-s (\d+)', options)
       s = 0 if not s else int(s.group(1))
 
-      # Perform ICA.
-      with totalTimer:
-        model = FastICA(random_state=s)
-        ic = model.fit(data).transform(data)
-        mixing = model.get_mixing_matrix()
+      try:
+        # Perform ICA.
+        with totalTimer:
+          model = FastICA(random_state=s)
+          ic = model.fit(data).transform(data)
+          mixing = model.get_mixing_matrix()
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/kernel_pca.py	Mon Aug 26 07:10:09 2013
@@ -68,31 +68,35 @@
 
         # Get the kernel type and make sure it is valid.
         kernel = re.search("-k ([^\s]+)", options)
-        if not kernel:
-          Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan' " + 
-                "and 'polynomial'.")
+        try:        
+          if not kernel:
+            Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan' " + 
+                  "and 'polynomial'.")
+            q.put(-1)
+            return -1
+          elif kernel.group(1) == "linear":
+            model = KernelPCA(n_components=d, kernel="linear")
+          elif kernel.group(1) == "hyptan":
+            model = KernelPCA(n_components=d, kernel="sigmoid")
+          elif kernel.group(1) == "polynomial":
+            degree = re.search('-D (\d+)', options)
+            degree = 1 if not degree else int(degree.group(1))
+
+            model = KernelPCA(n_components=d, kernel="poly", degree=degree)
+          else:
+            Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
+                "choices are 'linear', 'hyptan' and 'polynomial'.")
+            q.put(-1)
+            return -1
+            
+          out = model.fit_transform(data)
+        except Exception as e:
           q.put(-1)
           return -1
-        elif kernel.group(1) == "linear":
-          model = KernelPCA(n_components=d, kernel="linear")
-        elif kernel.group(1) == "hyptan":
-          model = KernelPCA(n_components=d, kernel="sigmoid")
-        elif kernel.group(1) == "polynomial":
-          degree = re.search('-D (\d+)', options)
-          degree = 1 if not degree else int(degree.group(1))
-
-          model = KernelPCA(n_components=d, kernel="poly", degree=degree)
-        else:
-          Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid " +
-              "choices are 'linear', 'hyptan' and 'polynomial'.")
-          q.put(-1)
-          return -1
-          
-        out = model.fit_transform(data)
 
       time = totalTimer.ElapsedTime()
       q.put(time)
-      return -1
+      return time
 
     return timeout(RunKPCAScikit, self.timeout)
 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/kmeans.py	Mon Aug 26 07:10:09 2013
@@ -77,20 +77,24 @@
 
       m = 1000 if not maxIterations else int(maxIterations.group(1))
 
-      # Create the KMeans object and perform K-Means clustering.
-      with totalTimer:
-        if len(self.dataset) == 2:
-          kmeans = KMeans(k=centroids.shape[1], init=centroids, n_init=1, 
-              max_iter=m)
-        elif seed:
-          kmeans = KMeans(n_clusters=int(clusters.group(1)), init='random', 
-              n_init=1, max_iter=m, random_state=int(seed.group(1)))
-        else:
-          kmeans = KMeans(n_clusters=int(clusters.group(1)), n_init=1, max_iter=m)      
-
-        kmeans.fit(data)
-        labels = kmeans.labels_
-        centers = kmeans.cluster_centers_
+      try:
+        # Create the KMeans object and perform K-Means clustering.
+        with totalTimer:
+          if len(self.dataset) == 2:
+            kmeans = KMeans(k=centroids.shape[1], init=centroids, n_init=1, 
+                max_iter=m)
+          elif seed:
+            kmeans = KMeans(n_clusters=int(clusters.group(1)), init='random', 
+                n_init=1, max_iter=m, random_state=int(seed.group(1)))
+          else:
+            kmeans = KMeans(n_clusters=int(clusters.group(1)), n_init=1, max_iter=m)      
+
+          kmeans.fit(data)
+          labels = kmeans.labels_
+          centers = kmeans.cluster_centers_
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/lars.py	Mon Aug 26 07:10:09 2013
@@ -54,15 +54,19 @@
       inputData = np.genfromtxt(self.dataset[0], delimiter=',')
       responsesData = np.genfromtxt(self.dataset[1], delimiter=',')
 
-      with totalTimer:
-        # Get all the parameters.
-        lambda1 = re.search("-l (\d+)", options)
-        lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
-
-        # Perform LARS.
-        model = LassoLars(alpha=lambda1)
-        model.fit(inputData, responsesData)
-        out = model.coef_
+      try:
+        with totalTimer:
+          # Get all the parameters.
+          lambda1 = re.search("-l (\d+)", options)
+          lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
+
+          # Perform LARS.
+          model = LassoLars(alpha=lambda1)
+          model.fit(inputData, responsesData)
+          out = model.coef_
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/linear_regression.py	Mon Aug 26 07:10:09 2013
@@ -61,11 +61,15 @@
         y = X[:, (X.shape[1] - 1)]
         X = X[:,:-1]
 
-      with totalTimer:
-        # Perform linear regression.
-        model = SLinearRegression()
-        model.fit(X, y, n_jobs=-1)
-        b = model.coef_
+      try:
+        with totalTimer:
+          # Perform linear regression.
+          model = SLinearRegression()
+          model.fit(X, y, n_jobs=-1)
+          b = model.coef_
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/nbc.py	Mon Aug 26 07:10:09 2013
@@ -58,12 +58,16 @@
       labels = trainData[:, (trainData.shape[1] - 1)]
       trainData = trainData[:,:-1]
 
-      with totalTimer:      
-        # Create and train the classifier.
-        nbc = MultinomialNB()
-        nbc.fit(trainData, labels)
-        # Run Naive Bayes Classifier on the test dataset.
-        nbc.predict(testData)
+      try:
+        with totalTimer:      
+          # Create and train the classifier.
+          nbc = MultinomialNB()
+          nbc.fit(trainData, labels)
+          # Run Naive Bayes Classifier on the test dataset.
+          nbc.predict(testData)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/nmf.py	Mon Aug 26 07:10:09 2013
@@ -53,32 +53,36 @@
       Log.Info("Loading dataset", self.verbose)
       data = np.genfromtxt(self.dataset, delimiter=',')
 
-      with totalTimer:      
-        # Gather parameters.
-        seed = re.search("-s (\d+)", options)
-        maxIterations = re.search("-m (\d+)", options)
-        minResidue = re.search("-e ([^\s]+)", options)
-        updateRule = re.search("-u ([^\s]+)", options)
-
-        m = 10000 if not maxIterations else int(maxIterations.group(1))
-        e = 1e-05 if not maxIterations else int(minResidue.group(1))
-
-        if updateRule:
-          u = updateRule.group(1)
-          if u != 'alspgrad':
-            Log.Fatal("Invalid update rules ('" + u + "'); must be 'alspgrad'.")
-            q.put(-1)
-            return -1
-
-        # Perform NMF with the specified update rules.
-        if seed:
-          s = int(seed.group(1))
-          model = ScikitNMF(n_components=2, init='random', max_iter = m, tol = e, random_state = s)
-        else:
-          model = ScikitNMF(n_components=2, init='nndsvdar', max_iter = m, tol = e)
-
-        W = model.fit_transform(data)
-        H = model.components_
+      try:
+        with totalTimer:      
+          # Gather parameters.
+          seed = re.search("-s (\d+)", options)
+          maxIterations = re.search("-m (\d+)", options)
+          minResidue = re.search("-e ([^\s]+)", options)
+          updateRule = re.search("-u ([^\s]+)", options)
+
+          m = 10000 if not maxIterations else int(maxIterations.group(1))
+          e = 1e-05 if not maxIterations else int(minResidue.group(1))
+
+          if updateRule:
+            u = updateRule.group(1)
+            if u != 'alspgrad':
+              Log.Fatal("Invalid update rules ('" + u + "'); must be 'alspgrad'.")
+              q.put(-1)
+              return -1
+
+          # Perform NMF with the specified update rules.
+          if seed:
+            s = int(seed.group(1))
+            model = ScikitNMF(n_components=2, init='random', max_iter = m, tol = e, random_state = s)
+          else:
+            model = ScikitNMF(n_components=2, init='nndsvdar', max_iter = m, tol = e)
+
+          W = model.fit_transform(data)
+          H = model.components_
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/pca.py	Mon Aug 26 07:10:09 2013
@@ -53,27 +53,31 @@
       Log.Info("Loading dataset", self.verbose)
       data = np.genfromtxt(self.dataset, delimiter=',')
 
-      with totalTimer:
-        # Find out what dimension we want.
-        match = re.search('-d (\d+)', options)
-
-        if not match:
-          k = data.shape[1]
-        else:
-          k = int(match.group(1))      
-          if (k > data.shape[1]):
-            Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater "
-                + "than existing dimensionality (" + str(data.shape[1]) + ")!")
-            q.put(-1)
-            return -1
-
-        # Get the options for running PCA.
-        s = True if options.find("-s") > -1 else False
-
-        # Perform PCA.
-        pca = decomposition.PCA(n_components = k, whiten = s)
-        pca.fit(data)
-        score = pca.transform(data)
+      try:
+        with totalTimer:
+          # Find out what dimension we want.
+          match = re.search('-d (\d+)', options)
+
+          if not match:
+            k = data.shape[1]
+          else:
+            k = int(match.group(1))      
+            if (k > data.shape[1]):
+              Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater "
+                  + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+              q.put(-1)
+              return -1
+
+          # Get the options for running PCA.
+          s = True if options.find("-s") > -1 else False
+
+          # Perform PCA.
+          pca = decomposition.PCA(n_components = k, whiten = s)
+          pca.fit(data)
+          score = pca.transform(data)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/scikit/sparse_coding.py	Mon Aug 26 07:10:09 2013
@@ -57,11 +57,15 @@
       l = re.search("-l (\d+)", options)
       l = 0 if not l else int(l.group(1))
 
-      with totalTimer:
-        # Perform Sparse Coding.
-        model = SparseCoder(dictionary=dictionary, transform_algorithm='lars',
-            transform_alpha=l)
-        code = model.transform(inputData)
+      try:
+        with totalTimer:
+          # Perform Sparse Coding.
+          model = SparseCoder(dictionary=dictionary, transform_algorithm='lars',
+              transform_alpha=l)
+          code = model.transform(inputData)
+      except Exception as e:
+        q.put(-1)
+        return -1
 
       time = totalTimer.ElapsedTime()
       q.put(time)

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/allknn.py	Mon Aug 26 07:10:09 2013
@@ -48,9 +48,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def AllKnnShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunAllKnnShogun():
+    def RunAllKnnShogun(q):
       totalTimer = Timer()
 
       # Load input dataset.
@@ -68,38 +66,42 @@
       labels = MulticlassLabels(referenceData[:, (referenceData.shape[1] - 1)])
       referenceData = referenceData[:,:-1]
 
-      with totalTimer:
-        # Get all the parameters.
-        k = re.search("-k (\d+)", options)
-        if not k:
-          Log.Fatal("Required option: Number of furthest neighbors to find.")
-          return -1
-        else:
-          k = int(k.group(1))
-          if (k < 1 or k > referenceData.shape[0]):
-            Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
-              + "less ")
+      try:
+        with totalTimer:
+          # Get all the parameters.
+          k = re.search("-k (\d+)", options)
+          if not k:
+            Log.Fatal("Required option: Number of furthest neighbors to find.")
+            q.put(-1)
             return -1
+          else:
+            k = int(k.group(1))
+            if (k < 1 or k > referenceData.shape[0]):
+              Log.Fatal("Invalid k: " + k.group(1) + "; must be greater than 0 and "
+                + "less ")
+              q.put(-1)
+              return -1
+
+          referenceFeat = RealFeatures(referenceData.T)
+          distance = EuclideanDistance(referenceFeat, referenceFeat)
+
+          # Perform All K-Nearest-Neighbors.
+          model = SKNN(k, distance, labels)
+          model.train()      
+
+          if len(self.dataset) == 2:
+            out = model.apply(queryFeat).get_labels()
+          else:
+            out = model.apply(referenceFeat).get_labels()
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
 
-        referenceFeat = RealFeatures(referenceData.T)
-        distance = EuclideanDistance(referenceFeat, referenceFeat)
-
-        # Perform All K-Nearest-Neighbors.
-        model = SKNN(k, distance, labels)
-        model.train()      
-
-        if len(self.dataset) == 2:
-          out = model.apply(queryFeat).get_labels()
-        else:
-          out = model.apply(referenceFeat).get_labels()
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunAllKnnShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+    return timeout(RunAllKnnShogun, self.timeout)
 
   '''
   Perform All K-Nearest-Neighbors. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/gmm.py	Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def GMMShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunGMMShogun():
+    def RunGMMShogun(q):
       totalTimer = Timer()
 
       # Load input dataset.
@@ -64,19 +62,21 @@
       g = 1 if not g else int(g.group(1))
       n = 250 if not n else int(n.group(1))
 
-      # Create the Gaussian Mixture Model.
-      model = Clustering.GMM(g)
-      model.set_features(dataFeat)
-      with totalTimer:
-        model.train_em(1e-9, n, 1e-9)
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunGMMShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+      try:
+        # Create the Gaussian Mixture Model.
+        model = Clustering.GMM(g)
+        model.set_features(dataFeat)
+        with totalTimer:
+          model.train_em(1e-9, n, 1e-9)
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunGMMShogun, self.timeout)
 
   '''
   Perform Gaussian Mixture Model. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/kernel_pca.py	Mon Aug 26 07:10:09 2013
@@ -48,9 +48,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def KPCAShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunKPCAShogun():
+    def RunKPCAShogun(q):
       totalTimer = Timer()
 
       # Load input dataset.
@@ -58,53 +56,58 @@
       data = np.genfromtxt(self.dataset, delimiter=',')
       dataFeat = RealFeatures(data.T)
 
-      with totalTimer:
-        # Get the new dimensionality, if it is necessary.
-        dimension = re.search('-d (\d+)', options)
-        if not dimension:
-          d = data.shape[1]
-        else:
-          d = int(dimension.group(1))      
-          if (d > data.shape[1]):
-            Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
-              + "than existing dimensionality (" + str(data.shape[1]) + ")!")
-            return -1    
-
-        # Get the kernel type and make sure it is valid.
-        kernel = re.search("-k ([^\s]+)", options)
-        if not kernel:
-            Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan'" + 
-                  ", 'polynomial' and 'gaussian'.")
+      try:
+        with totalTimer:
+          # Get the new dimensionality, if it is necessary.
+          dimension = re.search('-d (\d+)', options)
+          if not dimension:
+            d = data.shape[1]
+          else:
+            d = int(dimension.group(1))      
+            if (d > data.shape[1]):
+              Log.Fatal("New dimensionality (" + str(d) + ") cannot be greater "
+                + "than existing dimensionality (" + str(data.shape[1]) + ")!")
+              q.put(-1)
+              return -1    
+
+          # Get the kernel type and make sure it is valid.
+          kernel = re.search("-k ([^\s]+)", options)
+          if not kernel:
+              Log.Fatal("Choose kernel type, valid choices are 'linear', 'hyptan'" + 
+                    ", 'polynomial' and 'gaussian'.")
+              q.put(-1)
+              return -1
+          elif kernel.group(1) == "polynomial":
+            degree = re.search('-D (\d+)', options)
+            degree = 1 if not degree else int(degree.group(1))
+            
+            kernel = PolyKernel(dataFeat, dataFeat, degree, True)
+          elif kernel.group(1) == "gaussian":
+            kernel = GaussianKernel(dataFeat, dataFeat, 2.0)
+          elif kernel.group(1) == "linear":
+            kernel = LinearKernel(dataFeat, dataFeat)
+          elif kernel.group(1) == "hyptan":
+            kernel = SigmoidKernel(dataFeat, dataFeat, 2, 1.0, 1.0)
+          else:
+            Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid choices"
+                    + " are 'linear', 'hyptan', 'polynomial' and 'gaussian'.")
+            q.put(-1)
             return -1
-        elif kernel.group(1) == "polynomial":
-          degree = re.search('-D (\d+)', options)
-          degree = 1 if not degree else int(degree.group(1))
-          
-          kernel = PolyKernel(dataFeat, dataFeat, degree, True)
-        elif kernel.group(1) == "gaussian":
-          kernel = GaussianKernel(dataFeat, dataFeat, 2.0)
-        elif kernel.group(1) == "linear":
-          kernel = LinearKernel(dataFeat, dataFeat)
-        elif kernel.group(1) == "hyptan":
-          kernel = SigmoidKernel(dataFeat, dataFeat, 2, 1.0, 1.0)
-        else:
-          Log.Fatal("Invalid kernel type (" + kernel.group(1) + "); valid choices"
-                  + " are 'linear', 'hyptan', 'polynomial' and 'gaussian'.")
-          return -1
-
-        # Perform Kernel Principal Components Analysis.
-        model = KernelPCA(kernel)
-        model.set_target_dim(d)
-        model.init(dataFeat)
-        model.apply_to_feature_matrix(dataFeat)
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunKPCAShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2    
+
+          # Perform Kernel Principal Components Analysis.
+          model = KernelPCA(kernel)
+          model.set_target_dim(d)
+          model.init(dataFeat)
+          model.apply_to_feature_matrix(dataFeat)
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunKPCAShogun, self.timeout)   
 
   '''
   Perform Kernel Principal Components Analysis. If the method has been 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/kmeans.py	Mon Aug 26 07:10:09 2013
@@ -98,9 +98,7 @@
         return time      
 
     else:
-
-      @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-      def RunKMeansShogun():
+      def RunKMeansShogun(q):
         import numpy as np
         from shogun.Distance import EuclideanDistance
         from shogun.Features import RealFeatures
@@ -117,22 +115,24 @@
         dataFeat = RealFeatures(data.T)
         distance = EuclideanDistance(dataFeat, dataFeat)
 
-        # Create the K-Means object and perform K-Means clustering.
-        with totalTimer:
-          model = Clustering.KMeans(int(clusters.group(1)), distance)
-          model.set_max_iter(maxIterations)
-          model.train()
-
-          labels = model.apply().get_labels()
-          centers = model.get_cluster_centers()
-
-        return totalTimer.ElapsedTime()
-
-      try:
-        return RunKMeansShogun()
-      except TimeoutError as e:
-        Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-        return -2
+        try:
+          # Create the K-Means object and perform K-Means clustering.
+          with totalTimer:
+            model = Clustering.KMeans(int(clusters.group(1)), distance)
+            model.set_max_iter(maxIterations)
+            model.train()
+
+            labels = model.apply().get_labels()
+            centers = model.get_cluster_centers()
+        except Exception as e:
+          q.put(-1)
+          return -1
+
+        time = totalTimer.ElapsedTime()
+        q.put(time)
+        return time
+
+      return timeout(RunKMeansShogun, self.timeout)
 
   '''
   Perform K-Means Clustering. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/lars.py	Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def LARSShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunLARSShogun():
+    def RunLARSShogun(q):
       totalTimer = Timer()
 
       # Load input dataset.
@@ -63,21 +61,23 @@
       lambda1 = re.search("-l (\d+)", options)
       lambda1 = 0.0 if not lambda1 else int(lambda1.group(1))
 
-      with totalTimer:
-        # Perform LARS.
-        model = LeastAngleRegression(False)
-        model.set_max_l1_norm(lambda1)
-        model.set_labels(responsesFeat)
-        model.train(inputFeat)
-        model.get_w(model.get_path_size() - 1)
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunLARSShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+      try:
+        with totalTimer:
+          # Perform LARS.
+          model = LeastAngleRegression(False)
+          model.set_max_l1_norm(lambda1)
+          model.set_labels(responsesFeat)
+          model.train(inputFeat)
+          model.get_w(model.get_path_size() - 1)
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunLARSShogun, self.timeout)
 
   '''
   Perform Least Angle Regression. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/linear_regression.py	Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def LinearRegressionShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunLinearRegressionShogun():
+    def RunLinearRegressionShogun(q):
       totalTimer = Timer()
 
       # Load input dataset.
@@ -64,19 +62,21 @@
         y = X[:, (X.shape[1] - 1)]
         X = X[:,:-1]
 
-      with totalTimer:
-        # Perform linear regression.
-        model = LeastSquaresRegression(RealFeatures(X.T), RegressionLabels(y))
-        model.train()
-        b = model.get_w()
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunLinearRegressionShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+      try:
+        with totalTimer:
+          # Perform linear regression.
+          model = LeastSquaresRegression(RealFeatures(X.T), RegressionLabels(y))
+          model.train()
+          b = model.get_w()
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunLinearRegressionShogun, self.timeout)
 
   '''
   Perform Linear Regression. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/nbc.py	Mon Aug 26 07:10:09 2013
@@ -47,9 +47,7 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def NBCShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunNBCShogun():
+    def RunNBCShogun(q):
       totalTimer = Timer()
       
       Log.Info("Loading dataset", self.verbose)
@@ -60,24 +58,26 @@
       # Labels are the last row of the training set.
       labels = MulticlassLabels(trainData[:, (trainData.shape[1] - 1)])
 
-      with totalTimer:
-        # Transform into features.
-        trainFeat = RealFeatures(trainData[:,:-1].T)
-        testFeat = RealFeatures(testData.T)
-
-        # Create and train the classifier.
-        nbc = GaussianNaiveBayes(trainFeat, labels)
-        nbc.train()
-        # Run Naive Bayes Classifier on the test dataset.
-        nbc.apply(testFeat).get_labels()
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunNBCShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+      try:
+        with totalTimer:
+          # Transform into features.
+          trainFeat = RealFeatures(trainData[:,:-1].T)
+          testFeat = RealFeatures(testData.T)
+
+          # Create and train the classifier.
+          nbc = GaussianNaiveBayes(trainFeat, labels)
+          nbc.train()
+          # Run Naive Bayes Classifier on the test dataset.
+          nbc.apply(testFeat).get_labels()
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunNBCShogun, self.timeout)
 
   '''
   Perform Naive Bayes Classifier. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/methods/shogun/pca.py	Mon Aug 26 07:10:09 2013
@@ -51,44 +51,45 @@
   @return - Elapsed time in seconds or -1 if the method was not successful.
   '''
   def PCAShogun(self, options):
-
-    @timeout(self.timeout, os.strerror(errno.ETIMEDOUT))
-    def RunPCAShogun():
+    def RunPCAShogun(q):
       totalTimer = Timer()
       
       # Load input dataset.
       Log.Info("Loading dataset", self.verbose)
       feat = RealFeatures(self.data.T)
 
-      with totalTimer:
-        # Find out what dimension we want.
-        match = re.search('-d (\d+)', options)
-
-        if not match:
-          k = self.data.shape[1]
-        else:
-          k = int(match.group(1))      
-          if (k > self.data.shape[1]):
-            Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater than"
-                + "existing dimensionality (" + str(self.data.shape[1]) + ")!")
-            return -1
-
-        # Get the options for running PCA.
-        s = True if options.find("-s") > -1 else False
-
-        # Perform PCA.
-        prep = ShogunPCA(s)
-        prep.set_target_dim(k)
-        prep.init(feat)
-        prep.apply_to_feature_matrix(feat)
-
-      return totalTimer.ElapsedTime()
-
-    try:
-      return RunPCAShogun()
-    except TimeoutError as e:
-      Log.Warn("Script timed out after " + str(self.timeout) + " seconds")
-      return -2
+      try:
+        with totalTimer:
+          # Find out what dimension we want.
+          match = re.search('-d (\d+)', options)
+
+          if not match:
+            k = self.data.shape[1]
+          else:
+            k = int(match.group(1))      
+            if (k > self.data.shape[1]):
+              Log.Fatal("New dimensionality (" + str(k) + ") cannot be greater than"
+                  + "existing dimensionality (" + str(self.data.shape[1]) + ")!")
+              q.put(-1)
+              return -1
+
+          # Get the options for running PCA.
+          s = True if options.find("-s") > -1 else False
+
+          # Perform PCA.
+          prep = ShogunPCA(s)
+          prep.set_target_dim(k)
+          prep.init(feat)
+          prep.apply_to_feature_matrix(feat)
+      except Exception as e:
+        q.put(-1)
+        return -1
+
+      time = totalTimer.ElapsedTime()
+      q.put(time)
+      return time
+
+    return timeout(RunPCAShogun, self.timeout)
 
   '''
   Perform Principal Components Analysis. If the method has been successfully 

Modified: mlpack/conf/jenkins-conf/benchmark/util/timer.py
==============================================================================
--- mlpack/conf/jenkins-conf/benchmark/util/timer.py	(original)
+++ mlpack/conf/jenkins-conf/benchmark/util/timer.py	Mon Aug 26 07:10:09 2013
@@ -65,4 +65,8 @@
     Log.Warn("Script timed out after " + str(timeout) + " seconds")
     return -2
   else:
-    return q.get()
+    try:
+      r = q.get()
+    except Exception as e:
+      r = -1
+    return r



More information about the mlpack-svn mailing list