Skip to content

Adding GeospatialCoordinateEncoder Builder configuration#324

Merged
cogmission merged 4 commits intonumenta:masterfrom
antidata:master
Oct 14, 2015
Merged

Adding GeospatialCoordinateEncoder Builder configuration#324
cogmission merged 4 commits intonumenta:masterfrom
antidata:master

Conversation

@antidata
Copy link
Copy Markdown
Contributor

Fixes #323

@cogmission
Copy link
Copy Markdown
Collaborator

@antidata Nice job. Thank you for your hard work! Can you write a test in HTMSensorTest to show that this works?

@antidata
Copy link
Copy Markdown
Contributor Author

@cogmission There is another issue (not sure if related to this, but we need to fix it), see exception:

scala> publisher.onNext("7/2/10 0:00,21.2,40.6457;-73.7962")
java.lang.ClassCastException: [D cannot be cast to org.numenta.nupic.util.Tuple
at org.numenta.nupic.encoders.GeospatialCoordinateEncoder.encodeIntoArray(GeospatialCoordinateEncoder.java:27)
at org.numenta.nupic.encoders.MultiEncoder.encodeIntoArray(MultiEncoder.java:100)
at org.numenta.nupic.encoders.Encoder.encode(Encoder.java:622)
at org.numenta.nupic.network.sensor.HTMSensor.input(HTMSensor.java:390)
at org.numenta.nupic.network.sensor.HTMSensor.lambda$getOutputStream$4(HTMSensor.java:323)
at org.numenta.nupic.network.sensor.HTMSensor$$Lambda$28/767275708.apply(Unknown Source)

@cogmission
Copy link
Copy Markdown
Collaborator

Ok I'll take a look tomorrow.

@antidata
Copy link
Copy Markdown
Contributor Author

Ok, some more code for you if you wanna reproduce (I'm using the scala console)

public static Map<String, Map<String, Object>> getNetworkDemoFieldEncodingMap() {
        Map fieldEncodings = setupMap((Map)null, 0, 0, 0.0D, 0.0D, 0.0D, 0.0D, (Boolean)null, (Boolean)null, (Boolean)null, "timestamp", "datetime", "DateEncoder");
        fieldEncodings = setupMap(fieldEncodings, 50, 21, 0.0D, 100.0D, 0.0D, 0.1D, (Boolean)null, Boolean.TRUE, (Boolean)null, "consumption", "float", "ScalarEncoder");
        fieldEncodings = setupMap(fieldEncodings, 999, 25, 0.0D, 100.0D, 0.0D, 0.1D, (Boolean)null, Boolean.TRUE, (Boolean)null, "location", "geo", "GeospatialCoordinateEncoder");
        ((Map)fieldEncodings.get("timestamp")).put(Parameters.KEY.DATEFIELD_TOFD.getFieldName(), new Tuple(new Object[]{Integer.valueOf(21), Double.valueOf(9.5D)}));
        ((Map)fieldEncodings.get("timestamp")).put(Parameters.KEY.DATEFIELD_PATTERN.getFieldName(), "MM/dd/YY HH:mm");
        ((Map)fieldEncodings.get("location")).put("timestep", "60");
        ((Map)fieldEncodings.get("location")).put("scale", "30");
        return fieldEncodings;
    }
val modelParameters = NetworkParameters.getModelParameters

val publisher = Publisher.builder
  .addHeader("timestamp,consumption,location")
  .addHeader("datetime,float,geo")
  .addHeader("T,,").build

val parms: SensorParams = SensorParams.create(Keys.obs.get(), "", publisher)

val sensor: Sensor[ObservableSensor[String]] = Sensor.create(HtmModelFactory.sensorFactory, parms)

val net = Network.create("Network API Demo", modelParameters)
      .add(Network.createRegion("Region 1")
      .add(Network.createLayer("Layer 2/3", modelParameters)
      .alterParameter(KEY.AUTO_CLASSIFY, true)
      .add(Anomaly.create)
      .add(new TemporalMemory)
      .add(new SpatialPooler)
      .add(sensor)))


net.observe().subscribe(new Subscriber[Inference]() {
            def onNext(i: Inference) {
        println(s"{i}")
            }
            override def onError(throwable: Throwable): Unit = {
              println(throwable.getMessage)
            }
            override def onCompleted(): Unit = {}
          })

@cogmission
Copy link
Copy Markdown
Collaborator

@antidata I need to push my changes to your repo - can you give me temporary permissions?

@antidata
Copy link
Copy Markdown
Contributor Author

@cogmission Added

@cogmission
Copy link
Copy Markdown
Collaborator

👍 Thank you @antidata

cogmission added a commit that referenced this pull request Oct 14, 2015
Adding GeospatialCoordinateEncoder Builder configuration
@cogmission cogmission merged commit 189eba0 into numenta:master Oct 14, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants