Exemple #1
0
        /**
         * Creates a {@link Network} containing 2 {@link Region}s with multiple
         * {@link PALayer}s in each.
         *
         * @return a multi-region Network
         */
        internal Network.Network CreateMultiRegionNetwork()
        {
            Parameters p = NetworkDemoHarness.GetParameters();

            p = p.Union(NetworkDemoHarness.GetNetworkDemoTestEncoderParams());

            return(Network.Network.Create("Network API Demo", p)
                   .Add(Network.Network.CreateRegion("Region 1")
                        .Add(Network.Network.CreateLayer("Layer 2/3", p)
                             .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                             .Add(Anomaly.Create())
                             .Add(new TemporalMemory()))
                        .Add(Network.Network.CreateLayer("Layer 4", p)
                             .Add(new PASpatialPooler()))
                        .Connect("Layer 2/3", "Layer 4"))
                   .Add(Network.Network.CreateRegion("Region 2")
                        .Add(Network.Network.CreateLayer("Layer 2/3", p)
                             .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                             .Add(Anomaly.Create())
                             .Add(new TemporalMemory())
                             .Add(new PASpatialPooler()))
                        .Add(Network.Network.CreateLayer("Layer 4", p)
                             .Add(Sensor <FileInfo> .Create(FileSensor.Create, SensorParams.Create(
                                                                SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-15m.csv")))))
                        .Connect("Layer 2/3", "Layer 4"))
                   .Connect("Region 1", "Region 2"));
        }
Exemple #2
0
        private Net.Network.Network GetLoadedDayOfWeekNetwork()
        {
            Parameters p = NetworkTestHarness.GetParameters().Copy();

            p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.RANDOM, new XorshiftRandom(42));

            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new object[] { "name",
                                                                                                               PublisherSupplier.GetBuilder()
                                                                                                               .AddHeader("dayOfWeek")
                                                                                                               .AddHeader("number")
                                                                                                               .AddHeader("B").Build() }));

            Net.Network.Network network = Net.Network.Network.Create("test network", p)
                                          .Add(Net.Network.Network.CreateRegion("r1")
                                               .Add(Net.Network.Network.CreateLayer("1", p)
                                                    .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                                                    .Add(Anomaly.Create())
                                                    .Add(new TemporalMemory())
                                                    .Add(new SpatialPooler())
                                                    .Add(sensor)));

            return(network);
        }
Exemple #3
0
        /**
         * Creates a basic {@link Network} with 1 {@link Region} and 1 {@link PALayer}. However
         * this basic network contains all algorithmic components.
         *
         * @return  a basic Network
         */
        internal Network.Network CreateBasicNetwork()
        {
            Parameters p = NetworkDemoHarness.GetParameters();

            p = p.Union(NetworkDemoHarness.GetNetworkDemoTestEncoderParams());

            // This is how easy it is to create a full running Network!
            var sineData = SineGenerator.GenerateSineWave(100, 100 * 20, 10, 1)
                           .Select(s => s.ToString(NumberFormatInfo.InvariantInfo));

            string[] header = new[]
            {
                "sinedata",
                "float",
                ""
            };

            object[]     n     = { "sine", header.Union(sineData).ToObservable() };
            SensorParams parms = SensorParams.Create(SensorParams.Keys.Obs, n);
            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(ObservableSensor <string[]> .Create, parms);

            return(Network.Network.Create("Network API Demo", p)
                   .Add(Network.Network.CreateRegion("Region 1")
                        .Add(Network.Network.CreateLayer("Layer 2/3", p)
                             .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                             .Add(Anomaly.Create())
                             .Add(new TemporalMemory())
                             .Add(new Algorithms.SpatialPooler())
                             .Add(sensor))));
        }
Exemple #4
0
        /**
         * Creates a basic {@link Network} with 1 {@link Region} and 1 {@link PALayer}. However
         * this basic network contains all algorithmic components.
         *
         * @return  a basic Network
         */
        internal Network.Network CreateBasicNetwork()
        {
            Parameters p = NetworkDemoHarness.GetParameters();

            p = p.Union(NetworkDemoHarness.GetNetworkDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.MIN_THRESHOLD, 22);        // 22 18
            p.SetParameterByKey(Parameters.KEY.ACTIVATION_THRESHOLD, 16); // 18
            p.SetParameterByKey(Parameters.KEY.STIMULUS_THRESHOLD, 0.0);  // 0.0
            p.SetParameterByKey(Parameters.KEY.CELLS_PER_COLUMN, 1);      // 1

            Region r = Network.Network.CreateRegion("Region 1");
            PALayer <IInference> l = new PALayer <IInference>("Layer 2/3", null, p);

            l.SetPADepolarize(0.0); // 0.25
            l.SetVerbosity(0);
            PASpatialPooler sp     = new PASpatialPooler();
            string          infile = "rec-center-15m.csv";

            // This is how easy it is to create a full running Network!

            return(Network.Network.Create("Network API Demo", p)
                   .Add(r.Add(l.AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                              .Add(Anomaly.Create())
                              .Add(new TemporalMemory())
                              .Add(sp)
                              .Add(Sensor <FileInfo> .Create(FileSensor.Create,
                                                             SensorParams.Create(SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), infile)))))));
        }
Exemple #5
0
        public void TestObservableFromFile()
        {
            object[]     n     = { "some name", makeFileObservable() };
            SensorParams parms = SensorParams.Create(SensorParams.Keys.Obs, n);
            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(ObservableSensor <string[]> .Create, parms);

            var  inputStream = sensor.GetInputStream();
            long count       = inputStream.Count();

            Assert.AreEqual(4391, count);
        }
Exemple #6
0
        public void TestOpenObservableWithExplicitEntry()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("timestamp,consumption")
                               .AddHeader("datetime,float")
                               .AddHeader("B")
                               .Build();

            object[]     n     = { "some name", manual };
            SensorParams parms = SensorParams.Create(SensorParams.Keys.Obs, n);
            Sensor <ObservableSensor <string[]> > sensor =
                Sensor <ObservableSensor <string[]> > .Create(ObservableSensor <string[]> .Create, parms);

            // Test input is "sequenced" and is processed by underlying HTMSensor
            string[] expected =
            {
                "[0, 7/2/10 0:00, 21.2]",
                "[1, 7/2/10 1:00, 34.0]",
                "[2, 7/2/10 2:00, 40.4]",
                "[3, 7/2/10 3:00, 123.4]"
            };

            int i = 0;
            var t = new Task(() =>
            {
                sensor.GetInputStream().ForEach(l =>
                {
                    Console.WriteLine(Arrays.ToString((string[])l));
                    Assert.AreEqual(expected[i++], Arrays.ToString((string[])l));
                });
            });

            string[] entries =
            {
                "7/2/10 0:00,21.2",
                "7/2/10 1:00,34.0",
                "7/2/10 2:00,40.4",
                "7/2/10 3:00,123.4",
            };
            manual.OnNext(entries[0]);
            manual.OnNext(entries[1]);
            manual.OnNext(entries[2]);
            manual.OnNext(entries[3]);

            t.Start();
            try
            {
                t.Wait();
            }
            catch (Exception e)
            {
                Assert.Fail(e.ToString());
            }
        }
Exemple #7
0
        public void TestProcessCategories()
        {
            object[] n = { "some name", ResourceLocator.Path(typeof(Resources), "rec-center-hourly-4period-cat.csv") };

            Sensor <FileInfo> sensor2 = Sensor <FileInfo> .Create(
                FileSensor.Create,
                SensorParams.Create(SensorParams.Keys.Path, n));

            Header header = new Header(sensor2.GetMetaInfo());

            Assert.AreEqual("[T, B, C]", Arrays.ToString(header.GetFlags().ToArray()));
        }
Exemple #8
0
        public void TestCategoryEncoderCreation()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(
                FileSensor.Create, SensorParams.Create(
                    SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-hourly-4period-cat.Csv")));


            // Cast the ValueList to the more complex type (Header)
            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;
            Header meta = (Header)htmSensor.GetMetaInfo();

            Assert.IsTrue(meta.GetFieldTypes().TrueForAll(
                              l => l.Equals(FieldMetaType.DateTime) || l.Equals(FieldMetaType.Float) || l.Equals(FieldMetaType.List)));
            Assert.IsTrue(meta.GetFieldNames().TrueForAll(
                              l => l.Equals("timestamp") || l.Equals("consumption") || l.Equals("type")));
            Assert.IsTrue(meta.GetFlags().TrueForAll(
                              l => l.Equals(SensorFlags.T) || l.Equals(SensorFlags.B) || l.Equals(SensorFlags.C)));

            // Set the parameters on the sensor.
            // This enables it to auto-configure itself; a step which will
            // be done at the Region level.
            Encoder <object> multiEncoder = htmSensor.GetEncoder();

            Assert.IsNotNull(multiEncoder);
            Assert.IsTrue(multiEncoder is MultiEncoder);

            // Set the Local parameters on the Sensor
            htmSensor.InitEncoder(GetCategoryEncoderParams());
            List <EncoderTuple> encoders = multiEncoder.GetEncoders(multiEncoder);

            Assert.AreEqual(3, encoders.Count);

            DateEncoder        dateEnc = (DateEncoder)encoders[1].GetEncoder();
            SDRCategoryEncoder catEnc  = (SDRCategoryEncoder)encoders[2].GetEncoder();

            Assert.AreEqual("[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]", Arrays.ToString(catEnc.Encode("ES")));

            // Now test the encoding of an input row
            Map <string, object> d = new Map <string, object>();

            d.Add("timestamp", dateEnc.Parse("7/12/10 13:10"));
            d.Add("consumption", 35.3);
            d.Add("type", "ES");
            int[] output   = multiEncoder.Encode(d);
            int[] expected = { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0 };

            Debug.WriteLine(Arrays.ToString(expected));
            Debug.WriteLine(Arrays.ToString(output));
            Assert.IsTrue(Arrays.AreEqual(expected, output));
        }
Exemple #9
0
        public void TestInputIntegerArray()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(FileSensor.Create,
                                                                 SensorParams.Create(SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "1_100.Csv")));

            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;

            htmSensor.InitEncoder(GetArrayTestParams());

            // Ensure that the HTMSensor's output stream can be retrieved more than once.
            FanOutStream <int[]> outputStream = (FanOutStream <int[]>)htmSensor.GetOutputStream();

            Assert.AreEqual(884, ((int[])outputStream.First()).Length);
        }
Exemple #10
0
        public void TestAlgorithmRepetitionDetection()
        {
            Parameters p = NetworkTestHarness.GetParameters();

            p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42));

            // -- No overlap
            Net.Network.Network n = Net.Network.Network.Create("test network", p)
                                    .Add(Net.Network.Network.CreateRegion("r1")
                                         .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p)
                                              .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                                              .Add(new TemporalMemory()))
                                         .Add(Net.Network.Network.CreateLayer <IInference>("4", p)
                                              .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create(
                                                                                   SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv"))))
                                              .Add(new SpatialPooler()))
                                         .Connect("2/3", "4"));

            Region r = n.Lookup("r1");

            Assert.IsTrue(r.layersDistinct);
            LayerMask flags = r.flagAccumulator;

            flags ^= LayerMask.SpatialPooler;
            flags ^= LayerMask.TemporalMemory;
            flags ^= LayerMask.ClaClassifier;
            Assert.AreEqual(LayerMask.None, flags);
            Assert.AreEqual(r.Lookup("2/3").GetMask(), (LayerMask.TemporalMemory | LayerMask.ClaClassifier));
            Assert.AreEqual(r.Lookup("4").GetMask(), LayerMask.SpatialPooler);

            // -- Test overlap detection
            n = Net.Network.Network.Create("test network", p)
                .Add(Net.Network.Network.CreateRegion("r1")
                     .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p)
                          .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                          .Add(new TemporalMemory()))
                     .Add(Net.Network.Network.CreateLayer <IInference>("4", p)
                          .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create(
                                                               SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv"))))
                          .Add(new TemporalMemory())
                          .Add(new SpatialPooler()))
                     .Connect("2/3", "4"));

            r = n.Lookup("r1");
            Assert.IsFalse(r.layersDistinct);
            Assert.AreEqual(r.Lookup("2/3").GetMask(), (LayerMask.TemporalMemory | LayerMask.ClaClassifier));
            Assert.AreEqual(r.Lookup("4").GetMask(), (LayerMask.SpatialPooler | LayerMask.TemporalMemory));
        }
Exemple #11
0
        public void TestSensorTerminalOperationDetection()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(
                FileSensor.Create,
                SensorParams.Create(
                    SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-hourly-small.Csv")));

            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;

            // We haven't done anything with the stream yet, so it should not be terminal
            Assert.IsFalse(htmSensor.IsTerminal());
            ((BatchedCsvStream <string[]>)htmSensor.GetInputStream()).ForEach(l => Console.WriteLine(Arrays.ToString((string[])l)));
            // Should now be terminal after operating on the stream
            Assert.IsTrue(htmSensor.IsTerminal());
        }
Exemple #12
0
        public void testMetaFormation_NO_HEADER_FLAGS()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(
                FileSensor.Create,
                SensorParams.Create(SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-hourly-small-noheaderflags.Csv")));

            // Cast the ValueList to the more complex type (Header)
            Header meta = (Header)sensor.GetMetaInfo();

            Assert.IsTrue(meta.GetFieldTypes().TrueForAll(
                              l => l.Equals(FieldMetaType.DateTime) || l.Equals(FieldMetaType.Float)));
            Assert.IsTrue(meta.GetFieldNames().TrueForAll(
                              l => l.Equals("timestamp") || l.Equals("consumption")));
            Assert.IsTrue(meta.GetFlags().TrueForAll(
                              l => l.Equals(SensorFlags.B)));
        }
Exemple #13
0
        /**
         * Creates a basic {@link Network} with 1 {@link Region} and 1 {@link PALayer}. However
         * this basic network contains all algorithmic components.
         *
         * @return  a basic Network
         */
        internal Network.Network CreateBasicNetworkCla()
        {
            Parameters p = NetworkDemoHarness.GetParameters();

            p = p.Union(NetworkDemoHarness.GetNetworkDemoTestEncoderParams());

            // This is how easy it is to create a full running Network!

            return(Network.Network.Create("Network API Demo", p)
                   .Add(Network.Network.CreateRegion("Region 1")
                        .Add(Network.Network.CreateLayer("Layer 2/3", p)
                             .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                             .Add(Anomaly.Create())
                             .Add(new TemporalMemory())
                             .Add(new Algorithms.SpatialPooler())
                             .Add(Sensor <FileInfo> .Create(FileSensor.Create,
                                                            SensorParams.Create(SensorParams.Keys.Path, "", "rec-center-hourly.csv"))))));
        }
Exemple #14
0
        public void TestSensorMultipleStreamCreation()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(
                FileSensor.Create,
                SensorParams.Create(
                    SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-hourly-small.Csv")));

            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;

            htmSensor.InitEncoder(GetTestEncoderParams());

            // Ensure that the HTMSensor's output stream can be retrieved more than once.
            IStream <int[]> outputStream  = htmSensor.GetOutputStream();
            IStream <int[]> outputStream2 = htmSensor.GetOutputStream();
            IStream <int[]> outputStream3 = htmSensor.GetOutputStream();

            // Check to make sure above multiple retrieval doesn't flag the underlying stream as operated upon
            Assert.IsFalse(htmSensor.IsTerminal());
            Assert.AreEqual(17, outputStream.Count());

            //After the above we cannot request a new stream, so this will fail
            //however, the above streams that were already requested should be unaffected.
            Assert.IsTrue(htmSensor.IsTerminal(), "Terminal sensor stream expected");
            try
            {
                //@SuppressWarnings("unused")
                IStream <int[]> outputStream4 = (Stream <int[]>)htmSensor.GetOutputStream();
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual("Stream is already \"terminal\" (operated upon or empty)", e.Message);
            }

            //These Streams were created before operating on a stream
            Assert.AreEqual(17, outputStream2.Count());
            Assert.AreEqual(17, outputStream3.Count());

            // Verify that different streams are retrieved.
            Assert.IsFalse(outputStream.GetHashCode() == outputStream2.GetHashCode());
            Assert.IsFalse(outputStream2.GetHashCode() == outputStream3.GetHashCode());
        }
Exemple #15
0
        public void TestHTMSensor_HotGym()
        {
            Object[]             n      = { "some name", ResourceLocator.Path("rec-center-hourly-small.csv") };
            HTMSensor <FileInfo> sensor = (HTMSensor <FileInfo>) Sensor <FileInfo> .Create(
                FileSensor.Create, SensorParams.Create(SensorParams.Keys.Path, n));

            sensor.InitEncoder(GetTestEncoderParams());

            SerialConfig    config = new SerialConfig("testHTMSensor_HotGym");
            IPersistenceAPI api    = Persistence.Get(config);

            byte[] bytes = api.Write(sensor);
            Assert.IsNotNull(bytes);
            Assert.IsTrue(bytes.Length > 0);
            HTMSensor <FileInfo> serializedSensor = api.Read <HTMSensor <FileInfo> >(bytes);

            bool b = serializedSensor.IsDeepEqual(sensor);

            DeepCompare(serializedSensor, sensor);
            Assert.IsTrue(b);
        }
Exemple #16
0
        public void TestSerializeObservableSensor()
        {
            PublisherSupplier supplier = PublisherSupplier.GetBuilder()
                                         .AddHeader("dayOfWeek")
                                         .AddHeader("darr")
                                         .AddHeader("B").Build();

            ObservableSensor <string[]> oSensor = new ObservableSensor <string[]>(
                SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", supplier }));

            SerialConfig    config = new SerialConfig("testSerializeObservableSensor", SerialConfig.SERIAL_TEST_DIR);
            IPersistenceAPI api    = Persistence.Get(config);

            byte[] bytes = api.Write(oSensor);
            ObservableSensor <string[]> serializedOSensor = api.Read <ObservableSensor <string[]> >(bytes);

            bool b = serializedOSensor.IsDeepEqual(oSensor);

            DeepCompare(serializedOSensor, oSensor);
            Assert.IsTrue(b);
        }
Exemple #17
0
        public void TestInputIntegerArray()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("sdr_in")
                               .AddHeader("sarr")
                               .AddHeader("B")
                               .Build();

            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual }));

            int i = 0;
            var t = new Task(() =>
            {
                BatchedCsvStream <string[]> iStream = (BatchedCsvStream <string[]>)sensor.GetInputStream();
                Stream <string[]> oStream           = (Stream <string[]>)iStream._contentStream;
                Assert.AreEqual(2, ((string[])oStream.First()).Length);
            });

            //(t = new Thread() {
            //        int i = 0;
            //        public void run()
            //    {
            //        assertEquals(2, ((String[])sensor.getInputStream().findFirst().get()).length);
            //    }
            //}).start();

            int[][] ia = getArrayFromFile(ResourceLocator.Path(typeof(Resources), "1_100.csv"));
            manual.OnNext(Arrays.ToString(ia[0]).Trim());
            t.Start();
            try
            {
                t.Wait();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Assert.Fail();
            }
        }
Exemple #18
0
        public void TestHTMSensor_DaysOfWeek()
        {
            Object[]             n      = { "some name", ResourceLocator.Path("days-of-week.csv") };
            HTMSensor <FileInfo> sensor = (HTMSensor <FileInfo>) Sensor <FileInfo> .Create(
                FileSensor.Create, SensorParams.Create(SensorParams.Keys.Path, n));

            Parameters p = GetParameters();

            p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams());
            sensor.InitEncoder(p);

            SerialConfig    config = new SerialConfig("testHTMSensor_DaysOfWeek", SerialConfig.SERIAL_TEST_DIR);
            IPersistenceAPI api    = Persistence.Get(config);

            byte[] bytes = api.Write(sensor);
            HTMSensor <FileInfo> serializedSensor = api.Read <HTMSensor <FileInfo> >(bytes);

            bool b = serializedSensor.IsDeepEqual(sensor);

            DeepCompare(serializedSensor, sensor);
            Assert.IsTrue(b);
        }
Exemple #19
0
        public void TestFileSensorCreation()
        {
            object[]          n      = { "some name", ResourceLocator.Path(typeof(Resources), "rec-center-hourly.csv") };
            SensorParams      parms  = SensorParams.Create(SensorParams.Keys.Path, n);
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(FileSensor.Create, parms);

            Assert.IsNotNull(sensor);
            Assert.IsNotNull(sensor.GetSensorParams());
            SensorParams sp = sensor.GetSensorParams();

            Assert.AreEqual("some name", sp.Get("FILE"));
            Assert.AreEqual(null, sp.Get("NAME"));
            Assert.AreEqual(ResourceLocator.Path(typeof(Resources), "rec-center-hourly.csv"), sp.Get("PATH"));

            Sensor <FileInfo> sensor2 = Sensor <FileInfo> .Create(FileSensor.Create, SensorParams.Create(SensorParams.Keys.Path, n));

            Assert.IsNotNull(sensor2);
            Assert.IsNotNull(sensor2.GetSensorParams());
            sp = sensor2.GetSensorParams();
            Assert.AreEqual("some name", sp.Get("FILE"));
            Assert.AreEqual(null, sp.Get("NAME"));
            Assert.AreEqual(ResourceLocator.Path(typeof(Resources), "rec-center-hourly.csv"), sp.Get("PATH"));
        }
Exemple #20
0
        public void TestDateEncoderNotInitialized()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("foo")
                               .AddHeader("datetime")
                               .AddHeader("T")
                               .Build();
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(ObservableSensor <string[]> .Create, SensorParams.Create(
                                                                     SensorParams.Keys.Obs, "", manual));

            Map <string, Map <string, object> > fieldEncodings = SetupMap(null,
                                                                          25,
                                                                          3,
                                                                          0, 0, 0, 0.1, null, null, null,
                                                                          "consumption", "float", "RandomDistributedScalarEncoder");
            Parameters @params = Parameters.GetEncoderDefaultParameters();

            @params.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, fieldEncodings);
            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;

            htmSensor.InitEncoder(@params);
        }
Exemple #21
0
        private Net.Network.Network GetLoadedHotGymHierarchy()
        {
            Parameters p = NetworkTestHarness.GetParameters();

            p = p.Union(NetworkTestHarness.GetNetworkDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42));

            Net.Network.Network network = Net.Network.Network.Create("test network", p)
                                          .Add(Net.Network.Network.CreateRegion("r1")
                                               .Add(Net.Network.Network.CreateLayer("2", p)
                                                    .Add(Anomaly.Create())
                                                    .Add(new TemporalMemory()))
                                               .Add(Net.Network.Network.CreateLayer("3", p)
                                                    .Add(new SpatialPooler()))
                                               .Connect("2", "3"))
                                          .Add(Net.Network.Network.CreateRegion("r2")
                                               .Add(Net.Network.Network.CreateLayer("1", p)
                                                    .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                                                    .Add(new TemporalMemory())
                                                    .Add(new SpatialPooler())
                                                    .Add(FileSensor.Create(Net.Network.Sensor.FileSensor.Create, SensorParams.Create(
                                                                               SensorParams.Keys.Path, "", ResourceLocator.Path("rec-center-hourly.csv"))))))
                                          .Connect("r1", "r2");

            return(network);
        }
Exemple #22
0
        public void TestSerializeLayer()
        {
            Parameters p = NetworkTestHarness.GetParameters().Copy();

            p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42));
            Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap(
                null,                     // map
                8,                        // n
                0,                        // w
                0,                        // min
                0,                        // max
                0,                        // radius
                0,                        // resolution
                null,                     // periodic
                null,                     // clip
                true,                     // forced
                "dayOfWeek",              // fieldName
                "darr",                   // fieldType (dense array as opposed to sparse array or "sarr")
                "SDRPassThroughEncoder"); // encoderType

            p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings);

            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name",
                                                                                                               PublisherSupplier.GetBuilder()
                                                                                                               .AddHeader("dayOfWeek")
                                                                                                               .AddHeader("darr")
                                                                                                               .AddHeader("B").Build() }));

            ILayer layer = Net.Network.Network.CreateLayer("1", p)
                           .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                           .Add(new SpatialPooler())
                           .Add(sensor);

            //        Observer obs = new Observer<IInference>() {
            //        @Override public void onCompleted() { }
            //    @Override public void onError(Throwable e) { e.printStackTrace(); }
            //    @Override
            //        public void onNext(Inference spatialPoolerOutput)
            //    {
            //        System.out.println("in onNext()");
            //    }
            //};

            var obs = Observer.Create <IInference>(
                spatialPoolerOutput => { Console.WriteLine("in onNext()"); },
                e => Console.WriteLine(e),
                () => { });

            layer.Subscribe(obs);
            layer.Close();

            SerialConfig    config = new SerialConfig("testSerializeLayer", SerialConfig.SERIAL_TEST_DIR);
            IPersistenceAPI api    = Persistence.Get(config);

            api.Write(layer);

            //Serialize above Connections for comparison with same run but unserialized below...
            ILayer serializedLayer = api.Read <ILayer>();

            Assert.AreEqual(serializedLayer, layer);
            DeepCompare(layer, serializedLayer);

            // Now change one attribute and see that they are not equal
            serializedLayer.ResetRecordNum();
            Assert.AreNotEqual(serializedLayer, layer);
        }
Exemple #23
0
        private Net.Network.Network CreateAndRunTestTemporalMemoryNetwork()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("dayOfWeek")
                               .AddHeader("darr")
                               .AddHeader("B").Build();

            Sensor <ObservableSensor <String[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual }));

            Parameters p = GetParameters();

            Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap(
                null,                     // map
                20,                       // n
                0,                        // w
                0,                        // min
                0,                        // max
                0,                        // radius
                0,                        // resolution
                null,                     // periodic
                null,                     // clip
                true,                     // forced
                "dayOfWeek",              // fieldName
                "darr",                   // fieldType (dense array as opposed to sparse array or "sarr")
                "SDRPassThroughEncoder"); // encoderType

            p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings);

            Net.Network.Network network = Net.Network.Network.Create("test network", p)
                                          .Add(Net.Network.Network.CreateRegion("r1")
                                               .Add(Net.Network.Network.CreateLayer("1", p)
                                                    .Add(new TemporalMemory())
                                                    .Add(sensor)));

            network.Start();

            network.Observe().Subscribe(i => { }, e => Console.WriteLine(e));
            //            new Subscriber<Inference>() {
            //        @Override public void onCompleted() { }
            //    @Override public void onError(Throwable e) { e.printStackTrace(); }
            //    @Override public void onNext(Inference i) { }
            //});

            int[]   input1 = new int[] { 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 };
            int[]   input2 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
            int[]   input3 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
            int[]   input4 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 };
            int[]   input5 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 };
            int[]   input6 = new int[] { 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 };
            int[]   input7 = new int[] { 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 };
            int[][] inputs = { input1, input2, input3, input4, input5, input6, input7 };

            // Run until TemporalMemory is "warmed up".
            int timeUntilStable = 602;

            for (int j = 0; j < timeUntilStable; j++)
            {
                for (int i = 0; i < inputs.Length; i++)
                {
                    manual.OnNext(Arrays.ToString(inputs[i]));
                }
            }

            manual.OnComplete();

            ILayer l = network.Lookup("r1").Lookup("1");

            try
            {
                l.GetLayerThread().Wait();

                Console.WriteLine(Arrays.ToString(SDR.AsCellIndices(l.GetConnections().GetActiveCells())));
            }
            catch (Exception e)
            {
                Assert.AreEqual(typeof(ThreadInterruptedException), e.GetType());
            }

            return(network);
        }
Exemple #24
0
        private Net.Network.Network CreateAndRunTestSpatialPoolerNetwork(int start, int runTo)
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("dayOfWeek")
                               .AddHeader("darr")
                               .AddHeader("B")
                               .Build();

            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <String[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual }));

            Parameters p = NetworkTestHarness.GetParameters().Copy();

            p.SetParameterByKey(Parameters.KEY.RANDOM, new XorshiftRandom(42));

            Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap(
                null,                     // map
                8,                        // n
                0,                        // w
                0,                        // min
                0,                        // max
                0,                        // radius
                0,                        // resolution
                null,                     // periodic
                null,                     // clip
                true,                     // forced
                "dayOfWeek",              // fieldName
                "darr",                   // fieldType (dense array as opposed to sparse array or "sarr")
                "SDRPassThroughEncoder"); // encoderType

            p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings);

            Net.Network.Network network = Net.Network.Network.Create("test network", p)
                                          .Add(Net.Network.Network.CreateRegion("r1")
                                               .Add(Net.Network.Network.CreateLayer("1", p)
                                                    .Add(new SpatialPooler())
                                                    .Add(sensor)));

            network.Start();

            int[][] inputs = new int[7][];
            inputs[0] = new int[] { 1, 1, 0, 0, 0, 0, 0, 1 };
            inputs[1] = new int[] { 1, 1, 1, 0, 0, 0, 0, 0 };
            inputs[2] = new int[] { 0, 1, 1, 1, 0, 0, 0, 0 };
            inputs[3] = new int[] { 0, 0, 1, 1, 1, 0, 0, 0 };
            inputs[4] = new int[] { 0, 0, 0, 1, 1, 1, 0, 0 };
            inputs[5] = new int[] { 0, 0, 0, 0, 1, 1, 1, 0 };
            inputs[6] = new int[] { 0, 0, 0, 0, 0, 1, 1, 1 };

            int[]   expected0 = new int[] { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
            int[]   expected1 = new int[] { 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1 };
            int[]   expected2 = new int[] { 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 };
            int[]   expected3 = new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 };
            int[]   expected4 = new int[] { 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 };
            int[]   expected5 = new int[] { 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 };
            int[]   expected6 = new int[] { 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1 };
            int[][] expecteds = new int[][] { expected0, expected1, expected2, expected3, expected4, expected5, expected6 };

            //TestObserver<Inference> tester;
            int test = 0;

            network.Observe().Subscribe(
                spatialPoolerOutput =>
            {
                Console.WriteLine(test + " E: " + Arrays.ToString(expecteds[test]) + "  --  "
                                  + "A: " + Arrays.ToString(spatialPoolerOutput.GetSdr()));
                Assert.IsTrue(Arrays.AreEqual(expecteds[test], spatialPoolerOutput.GetSdr()));
                test++;
            },
                e =>
            {
                Console.WriteLine(e);
            },
                () =>
            {
            });


            // Now push some fake data through so that "onNext" is called above
            for (int i = start; i <= runTo; i++)
            {
                manual.OnNext(Arrays.ToString(inputs[i]));
            }

            manual.OnComplete();

            try
            {
                network.Lookup("r1").Lookup("1").GetLayerThread().Wait();
            }
            catch (Exception e) { Console.WriteLine(e); }


            //checkObserver(tester);

            return(network);
        }
Exemple #25
0
        public void TestThreadedPublisher()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("dayOfWeek")
                               .AddHeader("darr")
                               .AddHeader("B").Build();

            Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create(
                ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual }));

            Parameters p = GetParameters();

            Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap(
                null,                     // map
                20,                       // n
                0,                        // w
                0,                        // min
                0,                        // max
                0,                        // radius
                0,                        // resolution
                null,                     // periodic
                null,                     // clip
                true,                     // forced
                "dayOfWeek",              // fieldName
                "darr",                   // fieldType (dense array as opposed to sparse array or "sarr")
                "SDRPassThroughEncoder"); // encoderType

            p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings);

            Net.Network.Network network = Net.Network.Network.Create("test network", p)
                                          .Add(Net.Network.Network.CreateRegion("r1")
                                               .Add(Net.Network.Network.CreateLayer <IInference>("1", p)
                                                    .Add(new TemporalMemory())
                                                    .Add(sensor)));

            network.Start();

            network.Observe().Subscribe(Observer.Create <IInference>(
                                            output =>
            {
            },
                                            Console.WriteLine,
                                            () => { }
                                            ));

            int[]   input1 = new int[] { 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 };
            int[]   input2 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
            int[]   input3 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
            int[]   input4 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 };
            int[]   input5 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 };
            int[]   input6 = new int[] { 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 };
            int[]   input7 = new int[] { 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 };
            int[][] inputs = { input1, input2, input3, input4, input5, input6, input7 };

            // Now push some warm up data through so that "onNext" is called above
            int timeUntilStable = 602;

            for (int j = 0; j < timeUntilStable; j++)
            {
                for (int i = 0; i < inputs.Length; i++)
                {
                    manual.OnNext(Arrays.ToString(inputs[i]));
                }
            }

            manual.OnComplete();

            ILayer l = network.Lookup("r1").Lookup("1");

            try
            {
                l.GetLayerThread().Wait();
                ComputeCycle cc = l.GetInference().GetComputeCycle();
                TEST_AGGREGATION[TM_NAPI] = SDR.AsCellIndices(cc.activeCells);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
                Assert.IsInstanceOfType(e, typeof(ThreadAbortException));
            }
        }
Exemple #26
0
        public void TestBoolEncoderNotInitialized()
        {
            Publisher manual = Publisher.GetBuilder()
                               .AddHeader("foo")
                               .AddHeader("bool")
                               .AddHeader("")
                               .Build();
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(ObservableSensor <string[]> .Create, SensorParams.Create(
                                                                     SensorParams.Keys.Obs, "", manual));

            Map <string, Map <string, object> > fieldEncodings = SetupMap(null,
                                                                          0, // n
                                                                          0, // w
                                                                          0, 0, 0, 0, null, null, null,
                                                                          "timestamp", "datetime", "DateEncoder");
            Parameters @params = Parameters.GetEncoderDefaultParameters();

            @params.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, fieldEncodings);
            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;

            htmSensor.InitEncoder(@params);
        }
Exemple #27
0
        public void Test2LayerAssemblyWithSensor()
        {
            Parameters p = NetworkTestHarness.GetParameters();

            p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42));

            Net.Network.Network n = Net.Network.Network.Create("test network", p)
                                    .Add(Net.Network.Network.CreateRegion("r1")
                                         .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p)
                                              .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)
                                              .Add(new TemporalMemory()))
                                         .Add(Net.Network.Network.CreateLayer <IInference>("4", p)
                                              .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create(
                                                                                   SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv"))))
                                              .Add(new SpatialPooler()))
                                         .Connect("2/3", "4"));

            int[][] inputs = new int[7][];
            inputs[0] = new[] { 1, 1, 0, 0, 0, 0, 0, 1 };
            inputs[1] = new[] { 1, 1, 1, 0, 0, 0, 0, 0 };
            inputs[2] = new[] { 0, 1, 1, 1, 0, 0, 0, 0 };
            inputs[3] = new[] { 0, 0, 1, 1, 1, 0, 0, 0 };
            inputs[4] = new[] { 0, 0, 0, 1, 1, 1, 0, 0 };
            inputs[5] = new[] { 0, 0, 0, 0, 1, 1, 1, 0 };
            inputs[6] = new[] { 0, 0, 0, 0, 0, 1, 1, 1 };

            Region r1 = n.Lookup("r1");

            // Observe the top layer
            r1.Lookup("4").Observe().Subscribe(
                // next
                i =>
            {
                Console.WriteLine("onNext() called (4)");
                Assert.IsTrue(Arrays.AreEqual(inputs[idx0++], i.GetEncoding()));
            },
                //error
                e => { Console.WriteLine(e); },
                //completed
                () => { Console.WriteLine("onCompleted() called (4)"); }
                );
            //r1.Lookup("4").Observe().Subscribe(new Subscriber<Inference>()
            //{
            //    public void onCompleted() { }
            //    public void onError(Throwable e) { e.printStackTrace(); }
            //    public void onNext(Inference i)
            //    {
            //        Assert.IsTrue(Arrays.equals(inputs[idx0++], i.GetEncoding()));
            //    }
            //});

            // Observe the bottom layer
            r1.Lookup("2/3").Observe().Subscribe(
                // next
                i =>
            {
                Console.WriteLine("onNext() called (2/3)");
                Assert.IsTrue(Arrays.AreEqual(inputs[idx1++], i.GetEncoding()));
            },
                //error
                e => { Console.WriteLine(e); },
                //completed
                () => { Console.WriteLine("onCompleted() called (2/3)"); }
                );
            //r1.Lookup("2/3").Observe().Subscribe(new Subscriber<Inference>() {
            //    public void onCompleted() { }
            //    public void onError(Throwable e) { e.printStackTrace(); }
            //    public void onNext(Inference i)
            //    {
            //        Assert.IsTrue(Arrays.equals(inputs[idx1++], i.GetEncoding()));
            //    }
            //});

            // Observe the Region output
            r1.Observe().Subscribe(
                // next
                i =>
            {
                Console.WriteLine("onNext() called (out)");
                Assert.IsTrue(Arrays.AreEqual(inputs[idx2++], i.GetEncoding()));
            },
                //error
                e => { Console.WriteLine(e); },
                //completed
                () => { Console.WriteLine("onCompleted() called (out)"); }
                );
            //r1.Observe().Subscribe(new Subscriber<Inference>() {
            //     public void onCompleted() { }
            //    public void onError(Throwable e) { e.printStackTrace(); }
            //    public void onNext(Inference i)
            //    {
            //        Assert.IsTrue(Arrays.equals(inputs[idx2++], i.GetEncoding()));
            //    }
            //});

            r1.Start();

            try
            {
                r1.Lookup("4").GetLayerThread().Wait();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }


            Assert.AreEqual(7, idx0);
            Assert.AreEqual(7, idx1);
            Assert.AreEqual(7, idx2);
        }
Exemple #28
0
        public void TestHalt()
        {
            Parameters p = NetworkTestHarness.GetParameters();

            p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams());
            p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42));

            p.SetParameterByKey(Parameters.KEY.ANOMALY_KEY_MODE, Anomaly.Mode.PURE);

            Net.Network.Network n = Net.Network.Network.Create("test network", p)
                                    .Add(Net.Network.Network.CreateRegion("r1")
                                         .Add(Net.Network.Network.CreateLayer <IInference>("1", p)
                                              .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true))
                                         .Add(Net.Network.Network.CreateLayer <IInference>("2", p)
                                              .Add(Anomaly.Create(p)))
                                         .Add(Net.Network.Network.CreateLayer <IInference>("3", p)
                                              .Add(new TemporalMemory()))
                                         .Add(Net.Network.Network.CreateLayer <IInference>("4", p)
                                              .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create(
                                                                                   SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.csv"))))
                                              .Add(new SpatialPooler()))
                                         .Connect("1", "2")
                                         .Connect("2", "3")
                                         .Connect("3", "4"));

            Region r1 = n.Lookup("r1");

            int seq = 0;

            r1.Observe().Subscribe(
                // next
                i =>
            {
                if (seq == 2)
                {
                    isHalted = true;
                }
                seq++;
            },
                //error
                e => { Console.WriteLine(e); },
                //completed
                () => { Console.WriteLine("onCompleted() called"); }
                );

            //r1.Observe().Subscribe(new Subscriber<Inference>() {
            //    int seq = 0;
            //    public void onCompleted()
            //    {
            //        //                System.Out.println("onCompleted() called");
            //    }
            //    public void onError(Throwable e) { e.printStackTrace(); }
            //    public void onNext(Inference i)
            //    {
            //        if (seq == 2)
            //        {
            //            isHalted = true;
            //        }
            //        seq++;
            //        //                System.Out.println("output: " + i.GetSDR());
            //    }
            //});

            new Thread(() =>
            {
                while (!isHalted)
                {
                    try { Thread.Sleep(1); } catch (Exception e) { Console.WriteLine(e); }
                }
                r1.Halt();
            }).Start();

            //        (new Thread()
            //        {
            //        public void run()
            //    {
            //        while (!isHalted)
            //        {
            //            try { Thread.Sleep(1); } catch (Exception e) { e.printStackTrace(); }
            //        }
            //        r1.Halt();
            //    }
            //}).Start();

            r1.Start();

            try
            {
                r1.Lookup("4").GetLayerThread().Wait();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Exemple #29
0
        public void TestInternalEncoderCreation()
        {
            Sensor <FileInfo> sensor = Sensor <FileInfo> .Create(
                FileSensor.Create,
                SensorParams.Create(
                    SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "rec-center-hourly.Csv")));


            // Cast the ValueList to the more complex type (Header)
            HTMSensor <FileInfo> htmSensor = (HTMSensor <FileInfo>)sensor;
            Header meta = (Header)htmSensor.GetMetaInfo();

            Assert.IsTrue(meta.GetFieldTypes().TrueForAll(
                              l => l.Equals(FieldMetaType.DateTime) || l.Equals(FieldMetaType.Float)));
            Assert.IsTrue(meta.GetFieldNames().TrueForAll(
                              l => l.Equals("timestamp") || l.Equals("consumption")));
            Assert.IsTrue(meta.GetFlags().TrueForAll(
                              l => l.Equals(SensorFlags.T) || l.Equals(SensorFlags.B)));

            // Set the parameters on the sensor.
            // This enables it to auto-configure itself; a step which will
            // be done at the Region level.
            Encoder <object> multiEncoder = htmSensor.GetEncoder();

            Assert.IsNotNull(multiEncoder);
            Assert.IsTrue(multiEncoder is MultiEncoder);

            // Set the Local parameters on the Sensor
            htmSensor.InitEncoder(GetTestEncoderParams());
            List <EncoderTuple> encoders = multiEncoder.GetEncoders(multiEncoder);

            Assert.AreEqual(2, encoders.Count);

            // Test date specific encoder configuration
            //
            // All encoders in the MultiEncoder are accessed in a particular
            // order (the alphabetical order their corresponding fields are in),
            // so alphabetically "consumption" proceeds "timestamp"
            // so we need to ensure that the proper order is preserved (i.E. exists at index 1)
            DateEncoder dateEnc = (DateEncoder)encoders[1].GetEncoder();

            try
            {
                dateEnc.ParseEncode("7/12/10 13:10");
                dateEnc.ParseEncode("7/12/2010 13:10");
                // Should fail here due to conflict with configured format
                dateEnc.ParseEncode("--13:10 7-12-10");
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e, typeof(FormatException));
                //Assert.AreEqual("Invalid format: \"13:10 7/12/10\" is malformed at \":10 7/12/10\"", e.Message);
            }

            RandomDistributedScalarEncoder rdse = (RandomDistributedScalarEncoder)encoders[0].GetEncoder();

            int[] encoding = rdse.Encode(35.3);
            Console.WriteLine(Arrays.ToString(encoding));

            // Now test the encoding of an input row
            Map <string, object> d = new Map <string, object>();

            d.Add("timestamp", dateEnc.Parse("7/12/10 13:10"));
            d.Add("consumption", 35.3);
            int[] output   = multiEncoder.Encode(d);
            int[] expected = { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            Console.WriteLine(Arrays.ToString(expected));
            Console.WriteLine(Arrays.ToString(output));
            Assert.IsTrue(Arrays.AreEqual(expected, output));
        }