RapidLib issueshttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues2020-07-13T15:24:27Zhttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/121Build a library2020-07-13T15:24:27ZMichael ZbyszyńskiBuild a libraryThe includes for RapidLib are a bit of a pain. Use CMake to build a dynamic library.The includes for RapidLib are a bit of a pain. Use CMake to build a dynamic library.https://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/120Android fails with json_cpp2018-01-15T11:08:08ZMichael ZbyszyńskiAndroid fails with json_cppWhen @jfrin001 was making an Android project, he found that Android Studio/NDK didn't understand locale, which json_cpp is using in getDecimalPoint().
It looks like a newer version of json_cpp uses locale, too. So, maybe we need to com...When @jfrin001 was making an Android project, he found that Android Studio/NDK didn't understand locale, which json_cpp is using in getDecimalPoint().
It looks like a newer version of json_cpp uses locale, too. So, maybe we need to comment JSON out for Android use.https://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/119Zero crossings for rapidStream?2017-12-08T17:14:35ZMichael ZbyszyńskiZero crossings for rapidStream?The number of zero crossings in a buffer might be an interesting thing to add?The number of zero crossings in a buffer might be an interesting thing to add?https://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/117Multiple hidden layers not working with one input2017-12-04T14:49:10ZMichael ZbyszyńskiMultiple hidden layers not working with one input@jfrin001 reported a reproducible case where single input neural networks with multiple hidden layers don't give very good results.@jfrin001 reported a reproducible case where single input neural networks with multiple hidden layers don't give very good results.Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/116Add Decision trees2018-01-22T09:44:12ZMichael ZbyszyńskiAdd Decision treesThis would be step one for Random Forest.This would be step one for Random Forest.Future APIhttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/115Implement exceptions for malformed data2017-11-22T11:29:11ZMichael ZbyszyńskiImplement exceptions for malformed dataBoth train() and run() methods could have malformed data as input, if the feature vector sizes aren't consistent.
Train() returns false, and run() returns [0]. These methods should throw legible exceptions that could be caught.
Also, ...Both train() and run() methods could have malformed data as input, if the feature vector sizes aren't consistent.
Train() returns false, and run() returns [0]. These methods should throw legible exceptions that could be caught.
Also, unit tests should make sure this works.Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/114Try web assembly2017-11-14T14:18:51ZMichael ZbyszyńskiTry web assemblyWeb assembly is smaller and potentially faster than asm.js.
It's possible that em++ will compile to wasm with the ```-s WASM=1``` flag? It's worth a try. We should do some real benchmarking some time.Web assembly is smaller and potentially faster than asm.js.
It's possible that em++ will compile to wasm with the ```-s WASM=1``` flag? It's worth a try. We should do some real benchmarking some time.https://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/113Explore nbind2017-11-04T13:04:30ZMichael ZbyszyńskiExplore nbindThis nbind project:
https://github.com/charto/nbind#readme
Seems to combine native Node libraries with Emscripten-transpiled browser libraries. It might be just the thing for RapidLib. We should experiment with it if we ever have time.This nbind project:
https://github.com/charto/nbind#readme
Seems to combine native Node libraries with Emscripten-transpiled browser libraries. It might be just the thing for RapidLib. We should experiment with it if we ever have time.Future APIhttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/112seriesClassifcation crash in Node2017-11-15T16:32:39ZMichael ZbyszyńskiseriesClassifcation crash in NodeThis code crashes in NodeJS:
```javascript
var rapidMix = require('rapidlib');
var testDTW = new rapidMix.SeriesClassification();
testSet2 = [];
for (let i = 0; i < 5; ++i) {
testSet2.push([0.1, 0.1, 0.1]);
}
let series2 = {input: ...This code crashes in NodeJS:
```javascript
var rapidMix = require('rapidlib');
var testDTW = new rapidMix.SeriesClassification();
testSet2 = [];
for (let i = 0; i < 5; ++i) {
testSet2.push([0.1, 0.1, 0.1]);
}
let series2 = {input: testSet2, label: "yyy"};
let series1 = {input: testSet2, label: "zzz"};
let sset = [series1, series2];
console.log(testDTW.train(sset));
console.log(testDTW.run(testSet2));
```
It doesn't crash in the browser here:
https://live.codecircle.com/d/oma4nGEEk8SXvZ6hg
It doesn't crash in C++.
It doesn't crash if the feature vector has 2 or 4 members. It also doesn't crash for many power of two, or similar, set lengths.
It calls ```_abort``` from the emscripten ``_free()`` method.Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/111NN: combine inputNeurons[] and hiddenNeurons[]2017-09-25T11:20:15ZMichael ZbyszyńskiNN: combine inputNeurons[] and hiddenNeurons[]These two things could be combined into one array, which might make a neater implementation. I don't think it would be noticeably more efficient, though.These two things could be combined into one array, which might make a neater implementation. I don't think it would be noticeably more efficient, though.Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/108API methods for training data quantification2018-01-19T14:25:20ZFrancisco BernardoAPI methods for training data quantificationThe quantity of data should be made visible on the high level interfaces — quantity of data can have multiple aspects to it — (e.g., #recorded Rounds, #examples per round, #total memory consumption). In one instance, one participant no...The quantity of data should be made visible on the high level interfaces — quantity of data can have multiple aspects to it — (e.g., #recorded Rounds, #examples per round, #total memory consumption). In one instance, one participant noticed the memory of the browser was reaching 3GB, and found this unusual, and also observed the consequences in training time.
Recommendation: Participants would benefit from API methods (namely in the training data class) that provide metrics about quantity or volume of data. This should help developers in design by making them explicit through the visual interface metaphors they develop. It should also be explained in the documentation the consequences of dealing with large data sets (e.g., training time, impact on the classification results outcomes, etc.)https://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/107Classification/regression model training - Progress and termination feedback2018-01-19T14:11:33ZFrancisco BernardoClassification/regression model training - Progress and termination feedbackUsers have found the training process cumbersome mainly concerning visibility of system status. This is a major usability problem that has been observed across different user interventions.
In many occurrences in which the users recor...Users have found the training process cumbersome mainly concerning visibility of system status. This is a major usability problem that has been observed across different user interventions.
In many occurrences in which the users recorded a medium-to-large amount of data, they could not understand whether the training process was crashing or just taking to long. In some cases it led them to terminated the browser window.
Recommendation: Implement asynchronous event notification in the training method (e.g., client code should subscribe to an event with a handler that reports progress and/or termination)Future APIhttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/106Thread hogging behaviour when training a classification/regression model2018-01-19T14:11:31ZFrancisco BernardoThread hogging behaviour when training a classification/regression modelThe "thread hogging" behaviour of the JS client API is problematic as it blocks the whole interface. This is a problem with a severity level between Major Usability problem and Usability catastrophe (Nielsen), observed with high frequenc...The "thread hogging" behaviour of the JS client API is problematic as it blocks the whole interface. This is a problem with a severity level between Major Usability problem and Usability catastrophe (Nielsen), observed with high frequency between different actions and users.
For instance, one participant, decided to move away from using the JS client library to trying to use a server side implementation (which also was problematic on its own). It would be beneficial to explore a Web-worker implementation to surpass this problem.
Recommendation:
Pursue a design pattern in which there are two learning modules (i.e., two classification modules, or two regression modules) one on the regular JS client code, another on the web-worker code. The web worker code receives training data from regular code, trains the model, and exports the JSON model to the regular JS code model, that loads it and runs test data with it.Future APIFrancisco BernardoFrancisco Bernardohttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/104Template ml data2017-09-25T12:47:39ZMichael ZbyszyńskiTemplate ml dataCurrently, everything works on doubles. It would be nice to template this so that floats were possible. JUCE/Audio folks would appreciate.Currently, everything works on doubles. It would be nice to template this so that floats were possible. JUCE/Audio folks would appreciate.Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/101DTW windowed classification2017-12-08T10:24:37ZMichael ZbyszyńskiDTW windowed classificationDTW should be able to do continuous classification based on a window of recent samples. The window size is reliant on the sizes of the training examples. This issue is blocked by #100DTW should be able to do continuous classification based on a window of recent samples. The window size is reliant on the sizes of the training examples. This issue is blocked by #100Future APIMichael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/98"Shape identification using Dynamic Time Warping" is broken2017-09-01T09:10:30ZFrancisco Bernardo"Shape identification using Dynamic Time Warping" is brokenI haven't updated myself on the last changes on RapidLib.DTW but there is this bug about an offset in the example.
https://live.codecircle.com/d/87dKNLQorohuER84X
I suspect this is about the change in the library.I haven't updated myself on the last changes on RapidLib.DTW but there is this bug about an offset in the example.
https://live.codecircle.com/d/87dKNLQorohuER84X
I suspect this is about the change in the library.Michael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/97Using RapidLib in a React/Webpack application2017-10-08T08:16:06ZFrancisco BernardoUsing RapidLib in a React/Webpack applicationI've been trying to use RapidLib in a React/Webpack application and haven't been able to do it.
I tried to use both versions of RapidLib. The one in code circle, supposedly client side JS library,
https://www.doc.gold.ac.uk/eavi/rapid...I've been trying to use RapidLib in a React/Webpack application and haven't been able to do it.
I tried to use both versions of RapidLib. The one in code circle, supposedly client side JS library,
https://www.doc.gold.ac.uk/eavi/rapidmix/RapidLib.js
and the "node" one (which I just learned that it isn't a node module, but unsure of what it really is)
http://doc.gold.ac.uk/eavi/rapidmixapi.com/examples/RapidLib.js.zip
So far I've had errors while trying to figure out what had a constructor and what is a function (given that this doesn't seem to be documented anywhere) referring that there is no constructor for RapidLib, Regression/Classification is not a function, or there is no constructor
`Failed to compile.
./src/rapidLib/RapidLib.js
Line 2: 'RapidLib' is not defined no-undef
Line 26: 'path' is not defined no-undef
Line 41: 'read' is not defined no-undef
Line 63: Unexpected use of 'print' no-restricted-globals
Line 64: 'printErr' is not defined no-undef
Line 66: 'read' is not defined no-undef
Line 74: 'readbuffer' is not defined no-undef
Line 76: 'read' is not defined no-undef
Line 81: 'scriptArgs' is not defined no-undef
Line 105: 'dump' is not defined no-undef
Line 109: 'importScripts' is not defined no-undef
Line 367: 'EmterpreterAsync' is not defined no-undef
Line 373: 'EmterpreterAsync' is not defined no-undef
Line 2536: 'readline' is not defined no-undef
Line 3460: 'FileReaderSync' is not defined no-undef
Line 4598: 'path' is not defined no-undef
Line 4609: 'node' is not defined no-undef
Line 5426: 'SOCKFS' is not defined no-undef
Line 5433: '__read_sockaddr' is not defined no-undef
Line 5435: 'DNS' is not defined no-undef
Line 5670: 'FUNCTION_TABLE' is not defined no-undef
Line 6396: 'SDL' is not defined no-undef
Line 6396: 'SDL' is not defined no-undef
Line 6396: 'SDL' is not defined no-undef
Line 6484: 'MozBlobBuilder' is not defined no-undef
Line 6484: 'WebKitBlobBuilder' is not defined no-undef
Line 6647: 'GL' is not defined no-undef
Line 6649: 'GL' is not defined no-undef
Line 6659: 'GL' is not defined no-undef
Line 6846: 'SDL' is not defined no-undef
Line 6847: 'SDL' is not defined no-undef
Line 6937: 'SDL' is not defined no-undef
Line 6939: 'SDL' is not defined no-undef
Line 6945: 'SDL' is not defined no-undef
Line 6947: 'SDL' is not defined no-undef
Line 6968: Unexpected use of 'screen' no-restricted-globals
Line 6969: Unexpected use of 'screen' no-restricted-globals
Line 6969: Unexpected use of 'screen' no-restricted-globals
Line 29674: 'quit' is not defined no-undef
`Francisco BernardoFrancisco Bernardohttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/96ES6 wrapper JS code2017-08-30T13:18:45ZJoseph LarraldeES6 wrapper JS codeIt would be nice to be able to write the wrapping code in es6 and transpile it with babel before passing it to emscriptenIt would be nice to be able to write the wrapping code in es6 and transpile it with babel before passing it to emscriptenJoseph LarraldeJoseph Larraldehttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/95Incorporate Babel into builds2017-09-23T16:29:01ZMichael ZbyszyńskiIncorporate Babel into buildsI'd like to use babel to transpile ES6 rapidMix.js into something emscripten likes.I'd like to use babel to transpile ES6 rapidMix.js into something emscripten likes.Michael ZbyszyńskiMichael Zbyszyńskihttps://gitlab.doc.gold.ac.uk/rapid-mix/RapidLib/-/issues/94Implement FastDTW2017-09-18T13:49:24ZMichael ZbyszyńskiImplement FastDTWThe current DTW in RapidLib is slow. Port FastDTW from Java.The current DTW in RapidLib is slow. Port FastDTW from Java.Michael ZbyszyńskiMichael Zbyszyński