/* ---------------------------------------------------------------------
* Numenta Platform for Intelligent Computing (NuPIC)
* Copyright (C) 2014, Numenta, Inc. Unless you have an agreement
* with Numenta, Inc., for a separate license for this software code, the
* following terms and conditions apply:
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses.
*
* http://numenta.org/licenses/
* ---------------------------------------------------------------------
*/
package org.numenta.nupic.examples.qt;
import static org.junit.Assert.*;
import java.util.Arrays;
import gnu.trove.list.array.TIntArrayList;
import org.junit.Test;
import org.numenta.nupic.Parameters;
import org.numenta.nupic.Parameters.KEY;
import org.numenta.nupic.algorithms.CLAClassifier;
import org.numenta.nupic.encoders.ScalarEncoder;
import org.numenta.nupic.examples.qt.QuickTest.Layer;
import org.numenta.nupic.algorithms.SpatialPooler;
import org.numenta.nupic.algorithms.TemporalMemory;
/**
* Mostly added so that coveralls won't bitch and whine. The code
* this tests is just some quick and dirty example code, but anyway...
*
* @author David Ray
*/
public class QuickTestTest {
@Test
public void testGetParameters() {
Parameters params = QuickTest.getParameters();
assertTrue(((int[])params.get(KEY.INPUT_DIMENSIONS))[0] == 8);
assertTrue(((int[])params.get(KEY.COLUMN_DIMENSIONS))[0] == 20);
assertTrue(((int)params.get(KEY.CELLS_PER_COLUMN)) == 6);
assertEquals(((double)params.get(KEY.PERMANENCE_INCREMENT)),
((double)params.get(KEY.PERMANENCE_DECREMENT)), 0.0);
}
@Test
public void testRunThroughLayer() {
Layer<Double> layer = null;
try {
Parameters params = QuickTest.getParameters();
//Layer components
ScalarEncoder.Builder dayBuilder =
ScalarEncoder.builder()
.n(8)
.w(3)
.radius(1.0)
.minVal(1.0)
.maxVal(8)
.periodic(true)
.forced(true)
.resolution(1);
ScalarEncoder encoder = dayBuilder.build();
SpatialPooler sp = new SpatialPooler();
TemporalMemory tm = new TemporalMemory();
CLAClassifier classifier = new CLAClassifier(new TIntArrayList(new int[] { 1 }), 0.1, 0.3, 0);
layer = QuickTest.getLayer(params, encoder, sp, tm, classifier);
for(double i = 1, x = 0;x < 10000;i = (i == 7 ? 1 : i + 1), x++) {// USE "X" here to control run length
if (i == 1) tm.reset(layer.getMemory());
QuickTest.runThroughLayer(layer, i, (int)i, (int)x);
}
}catch(Exception e) {
e.printStackTrace();
fail();
}
System.out.println("actual = " + Arrays.toString(layer.getActual()) + ", predicted = " + Arrays.toString(layer.getPredicted()));
//assertArrayEquals(layer.getActual(), layer.getPredicted());
}
}