HTM Studio on Linux?


#1

Has anyone found a way to run HTM Studio on Linux ? I tried with CrossOver Linux but the applications complains that the Windows environment is too old although I managed to successfully install .NET 4.5 that HTM Studio needs. Anyway to relax this restriction ?

And by the way the same thing happens when running on Windows 7. I know it’s quite old but it is still being used in a lot in professional environments.


#2

HTM Studio has been built on Windows and OS X. Linux was not considered at the time because the target user is a “business” user w/ little to no experience programming. The application itself is meant to be an exploratory tool to determine whether or not the HTM approach to anomaly detection is suited to a specific class of problems.

Key technologies involved are Python, Node.js, Chromium, and of course, NuPIC – all of which can be built and run on linux. If you were to port HTM Studio to Linux, I would start with the adapting OS X build scripts rather than Windows and build from source. That would actually probably be easier than trying to get the windows binaries to run on Linux.


#3

@laurent, just one quick note in addition to what @Austin_Marshall said:

You may try downloading the source code, and run a local development version. It should come up on Linux rather easily.

HTM Studio source:

thanks


#5

@brev, thank you for the tip ! Actually I did not realize all this was based on electron so it should actually be working on Linux too . I have started modifying the build script accordingly.

One question @rhyolight : how should I approach building the portable python directory on Linux. Shall I follow the same philosophy as the build script provided for Windows or is there some place where I can download a precompiled version as for MacOSX ?

Last question : any better channel to talk about HTM Studio development ?


#6

Hi @laurent - As @Austin_Marshall mentioned, it’s better to adapt the OSX script (numenta-apps/unicorn/scripts/OSX/build-python.sh) rather than the windows one. The idea is that you need to build nupic.core against a portable python distribution and then install nupic and nupic.bindings. At the end of the process, the portable python distribution (with nupic installed) is packaged and treated as a NPM module. Electron spawns python child processes to create an HTM model (model_runner_2.py) and optimize its params (param_finder.py).


#7

I just created a category here on the forums for Numenta-apps support. See #nupic:numenta-apps. This topic has been moved into that category. Please continue to ask questions about any project in https://github.com/numenta/numenta-apps here on #nupic:numenta-apps.


#8

@marion thank you for your reply. I should of course start from the OSX script. Don’t know why I focused on the Windows one :-/ I’ll keep you posted.


#9

@marion, @rhyolight
Making progress in building the Linux version of HTM Studio. Current status :

  • Since I’m on Ubuntu 16.04 with gcc 5.4 I faced in nupic.core the problem that was fixed on Aug 5 in pull request #1031 which consist of using the gcc linkers (gcc-ar and gcc-ranlib) instead of the regular ar and ranlib. But because the structure of the make files has significantly changed since nupic.core 0.4.0 that you are using in HTM Studio 1.0.0 I couldn’t find a way to easily backport the fix in the old makefiles. So for now I ended up using nupic.core 0.4.5.dev0 (the master branch) but so far it doesn’t seem to be a problem. Or is it ?
  • Second when running “npm run dev” to test the thing I get an error (see below for details) with node complaining that it cannot load the leveldown binding. There is a leveldown.node file in the $NUPIC_CORE/node_modules but for some reason it is nowhere to be found in $NUPIC_CORE/app/node_modules. Then I saw in packages.json that you are using sort of a custom version of leveldown (“numenta/leveldown#v1.4.4-custom”). Could this be the cause of the trouble ?

Thank you fro your help


Full error message

App threw an error when running { [Error: Could not locate the bindings file. Tried:
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/default/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/compiled/5.10.0/linux/x64/leveldown.node]
  tries: 
   [ '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Debug/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Release/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Debug/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Debug/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Release/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Release/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/default/leveldown.node',
     '/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/compiled/5.10.0/linux/x64/leveldown.node' ] }
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Could not locate the bindings file. Tried:
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Debug/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/out/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/Release/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/build/default/leveldown.node
 → /misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/compiled/5.10.0/linux/x64/leveldown.node
    at bindings (/misc/applications/numenta-apps/unicorn/app/node_modules/bindings/bindings.js:88:9)
    at Object.<anonymous> (/misc/applications/numenta-apps/unicorn/app/node_modules/leveldown/leveldown.js:4:46)
    at Module._compile (module.js:413:34)
    at Module._extensions..js (module.js:422:10)
    at Object.require.extensions.(anonymous function) [as .js] (/misc/applications/numenta-apps/unicorn/app/node_modules/babel-register/lib/node.js:134:7)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (DatabaseService.js:24:1)


#10

I manage to make it work with the regular leveldown version 1.4.6. ‘npm run dev’ runs the application fine. I also manage to package it in the form deb package and install it.

The problem I have is that when I launch HTM Studio binary I keep having this error ‘Uncaught Error: Invalid Google Analytics Tracking ID’ although I setup the GA_TRACKING_ID environment variable in the shell. Any idea what’s happening here ?


#11

@marion @rhyolight

I managed to make HTM Studio 1.0.0 on both Ubuntu 14.04 and 16.04. npm run dev works fine on both platform. deb packages install fine.

The only problem I have is that after installing the deb packages and launching the HTM Studio app I get the error msg ‘Uncaught Error: Invalid Google Analytics Tracking ID’. Exporting the GA_TRACKING_ID variable doesn’t change anything… Any clue ?

I saw that the app get access to the variable through process.env. Is there some configuration file somewhere to enable access to certain environment variables ?


#12

@laurent Good news! Try to export NODE_ENV=development, this should fix your GA problem. If you want to release a production version, then you need to follow the instructions here to set the GA tacking ID properly. I talked with @cbaranski and we can share our GA tracking ID with you privately, if you decide you’d like to release a production version for Linux. Email us in that case.

Many thanks for helping with the Linux version!


#13

@marion I tried the NODE_ENV variable as well to no avail… There is something fishy here…

I’ll send a private mail with the download links for the 2 debian packages so that you can try them in your own VM

One side question though : when one download HTM Studio from your Web site there doesn’t seem to be any instruction to setup the GA_TRACKING_ID environment variable. So there must be another way to embed this tracking id in the application. A config file ? (btw I saw that in some branches the app/browser/entry.js file actually gets the ga tracking id from a config file not from the shell environment)


#15

Hi Mike,

You can download unofficial HTM Studio deb packages for Ubuntu 14.04 and 16.04 here :

https://www.dropbox.com/sh/fgnrxadt07jg9pp/AAAQVY-vIYazhLYFx03Osczra?dl=0

Enjoy and feedback welcome.

Laurent


#16

Thanks, I actually found them a few minutes after I posted about it. I installed them, but evidently they don’t work on Debian 8.7 (Jessie). Or maybe it’s just my the config of my box. HTM Studio installs just fine, but when I run it I get an error about the version GLIBCXX, the correct version reportedly being “GLIBCXX_3.4.21”.

I was able to install GLIBCXX_3.4.20, but I couldn’t find packages for Debian Jessie. After much googling and reading, it seems GLIBCXX is included in the package libstdc++6. I ran apt-get upgrade libstdc++6, but the latest version on Debian Jessie seems to be 3.4.20. I could have been misreading something, I was doing all of this at 3:30 am this morning. :slight_smile:

Please correct me if I’m in error.


#17

I should also add I’m running an AMD processor. Reason I mention this is, I also downloaded and installed a vagrant box containing Mac OS X Yosemite, but it seems it won’t run on an AMD processor. I guess I can always reload my Macmini with Mac OS X, but that’ll take quite a bit of work seeing how I’m using it as a production web-server among other things.

If all else fails, maybe I can borrow my son’s Intel based system for a few hours.


#18

Have you checked in your settings that 64 bits is activited ? Both deb packages are compiled for 64 bits processors.

Laurent


#19

I didn’t. But as luck would have it, I borked my Debian install by erroneously executing ‘apt-get install -f -y some_package’ and it necessitated a clean install. I went ahead and installed 64bit Ubuntu 16.10. I haven’t yet installed HTM Studio on my fresh new Ubuntu system, but I trust it’ll work.

So all’s well that ends well I guess!


#21

HTM studio works well on my UBUNTU 16.10 PC. Cool


#22

Good to know if works fine on Ubuntu 16.10 as well.

Laurent