Why does the spatial pooler for the NAB HTM detector use wraparound when the input is not circular?

The parameters for the NAB HTM detector are specified here. Notice that wrapAround is not specified, which means it defaults to True (src/nupic/alogrithms/spatial_pooler.py#L251 – sorry I’m new so I can only post 2 links!).

If I’m understanding this correctly, the purpose of wrapAround is to tell the spatial pooler that the last bit and the first bit of the input SDR are neighbors (i.e. that the input encoding is circular). Given that the input SDR is an RDSE-encoded scalar value concatenated with a circularly encoded time of day, it doesn’t seem right to me to tell the spatial pooler that the first and last bit are neighbors – they’re encoding completely independent concepts!

Is it just a coincidence that the best-performing model had a spatial pooler with wrapAround set to True? Is it a mistake? Am I misunderstanding this?

1 Like

That could be a bug, your description sounds accurate. Did you happen to run the results with wrapAround set to False to see what happened?