Running NAB with scalar encoder only


Hi there,

I’m trying to run NAB on my dataset, and the only thing I want to encode is the “value” field (encoding both the timestamp and the value doesn’t make sense for this dataset).

I can’t figure out how to use the RDSE only. As I can see in _setupEncoderParams() in, NAB always encodes both timestamp and value. If I simply put "c0_timeOfDay" : null in best_single_metric_anomaly_params_cpp.json used in getScalarMetricWithTimeOfDayAnomalyParams(), I get an error

Traceback (most recent call last):
File “”, line 210, in
File “”, line 69, in main
File “/home/oiegorov/python/projects/NAB-master/nab/”, line 134, in detect
self.pool.map_async(detectDataSet, args).get(99999999)
File “/usr/lib/python2.7/multiprocessing/”, line 567, in get
raise self._value
TypeError: ‘NoneType’ object does not support item assignment

Could you please help me with that? I’m so excited about using HTM in my work!



When you get the model params back from getScalarMetricWithTimeOfDayAnomalyParams, you can change them before creating a model. Look into the params specifically in modelParams.sensorParams.encoders. That is where you want to remove the time stuff.


Well, that was easy :slight_smile: Thank you!

For those who would like to do the same thing, clear all but the “value” entry in the “encoders” dictionary after the line



encoder_param = modelParams["modelParams"]["sensorParams"]["encoders"]["value"]
modelParams["modelParams"]["sensorParams"]["encoders"]["value"] = encoder_param