beat issueshttps://gitlab.idiap.ch/groups/beat/-/issues2020-09-28T13:36:52Zhttps://gitlab.idiap.ch/beat/beat.web/-/issues/565Admin: Environments are not clearly shown2020-09-28T13:36:52ZFlavio TARSETTIAdmin: Environments are not clearly shownFor Environments: The environment languages displayed for each environment is unclear:
We have like
```
Language:
Python
Python
Python
Python
That's very confusing.
```For Environments: The environment languages displayed for each environment is unclear:
We have like
```
Language:
Python
Python
Python
Python
That's very confusing.
```Code cleanuphttps://gitlab.idiap.ch/beat/beat.web/-/issues/564Crash in some admin pages2020-09-11T15:56:04ZSamuel GAISTCrash in some admin pagesWhen trying to go to an admin page that shows a beat asset, the site crashes because of a missing parameter.When trying to go to an admin page that shows a beat asset, the site crashes because of a missing parameter.Django 3 migrationSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/562Pre-commit cleanup2020-09-11T15:54:25ZSamuel GAISTPre-commit cleanupThe current code base is pretty old and contains code that requires some cleanup.
The cleanup includes:
- Unused import
- Ordering of imports
- Unused code
- Possible coding issue
This list is not exhaustive.
The cleanup shall be done...The current code base is pretty old and contains code that requires some cleanup.
The cleanup includes:
- Unused import
- Ordering of imports
- Unused code
- Possible coding issue
This list is not exhaustive.
The cleanup shall be done using pre-commit hooks that include:
- black
- isort
- bandit
- flake8
And possibly others if relevant tools are found in the process.Code cleanupSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/561Update dependencies to Django 32020-09-28T13:36:49ZSamuel GAISTUpdate dependencies to Django 3The version of Django currently used by the platform is outdated.
This issue tracks the update of the Django as well as its dependencies to a current and maintained version.The version of Django currently used by the platform is outdated.
This issue tracks the update of the Django as well as its dependencies to a current and maintained version.Django 3 migrationSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/560E-mail confirmations not containing the URL prefix and User links on the website2020-09-28T13:37:32ZFlavio TARSETTIE-mail confirmations not containing the URL prefix and User links on the websiteIssues with e-mail confirmations need to be checked as they don't contain the URL prefix and User links on the website.
On a local instance of beat.web this works, but it fails on the production platform. This seems to be a Django rel...Issues with e-mail confirmations need to be checked as they don't contain the URL prefix and User links on the website.
On a local instance of beat.web this works, but it fails on the production platform. This seems to be a Django related issue as a first guess.
A similar problem also seem to happen with "experiments".
Might be related to #558 and #561 Django 3 migrationFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/559Python 2 Code removal2020-09-28T13:36:53ZSamuel GAISTPython 2 Code removalCurrently beat/beat.web> code is still compatible with Python 2.
The infrastructure has been running Python 3 for several years and moving to Django 3 implies that Python 2 is now out of question.
This issue tracks the work of removing...Currently beat/beat.web> code is still compatible with Python 2.
The infrastructure has been running Python 3 for several years and moving to Django 3 implies that Python 2 is now out of question.
This issue tracks the work of removing all the compatibility code that has not been used for years and that will not be used anymore.Django 3 migrationSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/558Fix usage of URL_PREFIX2020-09-28T13:38:15ZSamuel GAISTFix usage of URL_PREFIXCurrently the URL_PREFIX settings variable is used like a fully qualified URL in many parts of the website which is wrong. As the name suggests, this prefix shall essentially "move" all the URLs of the site behind it.
If a fully qualifi...Currently the URL_PREFIX settings variable is used like a fully qualified URL in many parts of the website which is wrong. As the name suggests, this prefix shall essentially "move" all the URLs of the site behind it.
If a fully qualified address is needed it should be generated either using the request object associated with the method call or using Django's Sites framework.
This issue tracks the cleanup of the following:
- [x] Email generation
- [x] Template rendering
- [x] Other usagesDjango 3 migrationFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/557Experiment put may fail due to spur PUT calls2020-08-03T09:49:48ZSamuel GAISTExperiment put may fail due to spur PUT callsThis issue appears currently only with Safari.
When accessing an experiment it sometimes sends a PUT command that does not follow through but still runs through enough of the machinery to trigger an error.
The error comes from the fact...This issue appears currently only with Safari.
When accessing an experiment it sometimes sends a PUT command that does not follow through but still runs through enough of the machinery to trigger an error.
The error comes from the fact that the writing serializer class is set to None as the `put` handling is currently custom implemented unlike the other subclasses of RetrieveUpdateDestroyContributionView.Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/556Cannot access C++ environment information page2020-08-03T09:18:52ZSamuel GAISTCannot access C++ environment information pageCurrently when trying to access the C++ information page an error is generated because no valid pattern can be found that matches the environment name.Currently when trying to access the C++ information page an error is generated because no valid pattern can be found that matches the environment name.Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.core/-/issues/101Add tmpfs when running a container2020-07-29T09:18:53ZSamuel GAISTAdd tmpfs when running a containerDespite the tests run in the various aspects of the BEAT code base which showed that having the container start read-only was successful, actual run on the platform started to unsuccessfully fail with an error related to temporary file c...Despite the tests run in the various aspects of the BEAT code base which showed that having the container start read-only was successful, actual run on the platform started to unsuccessfully fail with an error related to temporary file creation coming from the entrypoint script loading the correct conda environment.
"Unsuccessfully failed" here means that the full experiment run was marked as good despite that error happening which in fact did not even allow for a proper start of the execution procedure.
The fix for this situation is to add a minimal writable tmpfs for /tmp in order to have the space necessary for that file to be created.
It might also be useful to have one for /run even if it does not look like it is being used currently (at least in the same way as /tmp seemed to not be used).Soft loopsSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/278Crash with TypeError: '<' not supported between instances of 'numpy.ndarray' ...2020-07-29T13:19:22ZAmir MOHAMMADICrash with TypeError: '<' not supported between instances of 'numpy.ndarray' and 'str'```
Traceback (most recent call last):
File "src/beat.editor/beat/editor/widgets/assetwidget.py", line 507, in loadAsset
self.__update_content(declaration)
File "src/beat.editor/beat/editor/widgets/assetwidget.py", line 227, in _...```
Traceback (most recent call last):
File "src/beat.editor/beat/editor/widgets/assetwidget.py", line 507, in loadAsset
self.__update_content(declaration)
File "src/beat.editor/beat/editor/widgets/assetwidget.py", line 227, in __update_content
editor.load_json(json_data)
File "src/beat.editor/beat/editor/widgets/editor.py", line 276, in load_json
self._load_json(json_object)
File "src/beat.editor/beat/editor/widgets/plotterparameterseditor.py", line 497, in _load_json
self.__load_json(json_object)
File "src/beat.editor/beat/editor/widgets/plotterparameterseditor.py", line 462, in __load_json
self.__load_parameter(json_object)
File "src/beat.editor/beat/editor/widgets/plotterparameterseditor.py", line 447, in __load_parameter
parameter_viewer = PlotterParameterViewer(name, data)
File "src/beat.editor/beat/editor/widgets/plotterparameterseditor.py", line 256, in __init__
self.parameter_widget = RestrictedParameterWidget(data)
File "src/beat.editor/beat/editor/widgets/plotterparameterseditor.py", line 185, in __init__
self.numerical_spinbox.setValue(self.default)
File "src/beat.editor/beat/editor/widgets/spinboxes.py", line 183, in setValue
if value > self.maximum():
TypeError: '<' not supported between instances of 'numpy.ndarray' and 'str'
```
Steps to reproduce:
```
$ beat plotterparam pull plot/isoroc/1
# open it with the editor
```https://gitlab.idiap.ch/beat/beat.editor/-/issues/277editor puts local config setting into global config2020-07-28T11:27:58ZAmir MOHAMMADIeditor puts local config setting into global configSteps to reproduce
```
$ beat config show
{
"user": "user"
}
$ cat ~/.beatrc
{
"user": "user"
}
$ beat config set --local user tst
$ beat config show
{
"user": "tst"
}
$ cat ~/.beatrc
{
"user": "user"
}
$ beat editor star...Steps to reproduce
```
$ beat config show
{
"user": "user"
}
$ cat ~/.beatrc
{
"user": "user"
}
$ beat config set --local user tst
$ beat config show
{
"user": "tst"
}
$ cat ~/.beatrc
{
"user": "user"
}
$ beat editor start
# do nothing, exit editor
$ cat ~/.beatrc
{
"user": "tst"
}
```https://gitlab.idiap.ch/beat/beat.web/-/issues/555Analyzer results are not shown for new experiments2020-08-03T08:33:36ZAmir MOHAMMADIAnalyzer results are not shown for new experimentsWhen a new experiment runs on the platform, its analyzer results are not shown.
For example, I tried running the tutorial atnt eigenfaces experiment:
https://www.idiap.ch/software/beat/platform/experiments/amohammadi/tutorial/eigenface/1...When a new experiment runs on the platform, its analyzer results are not shown.
For example, I tried running the tutorial atnt eigenfaces experiment:
https://www.idiap.ch/software/beat/platform/experiments/amohammadi/tutorial/eigenface/1/atnt-eigenfaces-69-comp/#results
and its results are not showing up.
This has to do with new experiments only I thinkSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/554cannot fork an experiment2020-07-21T14:40:56ZAmir MOHAMMADIcannot fork an experimentWhen I try to fork an experiment, https://www.idiap.ch/software/beat/platform/experiments/fork/amohammadi/tutorial/eigenface/1/atnt-eigenfaces-69-comp/ I get this error:
![image](/uploads/a703a2ab2133b08e6ffc2dc4384f635f/image.png)When I try to fork an experiment, https://www.idiap.ch/software/beat/platform/experiments/fork/amohammadi/tutorial/eigenface/1/atnt-eigenfaces-69-comp/ I get this error:
![image](/uploads/a703a2ab2133b08e6ffc2dc4384f635f/image.png)Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.cmdline/-/issues/73Cannot push a C++ algorithm2020-07-23T12:24:14ZAmir MOHAMMADICannot push a C++ algorithmLooks like when pushing a C++ algorithm, the code fails with:
```
lib/python3.7/site-packages/click/core.py(829)__call__()
828 """Alias for :meth:`main`."""
--> 829 return self.main(*args, **kwargs)
830
lib/...Looks like when pushing a C++ algorithm, the code fails with:
```
lib/python3.7/site-packages/click/core.py(829)__call__()
828 """Alias for :meth:`main`."""
--> 829 return self.main(*args, **kwargs)
830
lib/python3.7/site-packages/click/core.py(782)main()
781 with self.make_context(prog_name, args, **extra) as ctx:
--> 782 rv = self.invoke(ctx)
783 if not standalone_mode:
lib/python3.7/site-packages/click/core.py(1259)invoke()
1258 with sub_ctx:
-> 1259 return _process_result(sub_ctx.command.invoke(sub_ctx))
1260
lib/python3.7/site-packages/click/core.py(1259)invoke()
1258 with sub_ctx:
-> 1259 return _process_result(sub_ctx.command.invoke(sub_ctx))
1260
lib/python3.7/site-packages/beat/cmdline/click_helper.py(121)invoke()
119
120 ctx.meta["asset_info"] = self.asset_info
--> 121 return super().invoke(ctx)
lib/python3.7/site-packages/click/core.py(1066)invoke()
1065 if self.callback is not None:
-> 1066 return ctx.invoke(self.callback, **ctx.params)
1067
lib/python3.7/site-packages/click/core.py(610)invoke()
609 with ctx:
--> 610 return callback(*args, **kwargs)
611
lib/python3.7/site-packages/click/decorators.py(21)new_func()
20 def new_func(*args, **kwargs):
---> 21 return f(get_current_context(), *args, **kwargs)
22
lib/python3.7/site-packages/beat/cmdline/decorators.py(94)_decorator()
93 def _decorator(*args, **kwargs):
---> 94 value = view_func(*args, **kwargs)
95 if value not in [None, 0]:
lib/python3.7/site-packages/beat/cmdline/commands.py(321)push_impl()
320 dry_run=dry_run,
--> 321 indentation=0,
322 )
lib/python3.7/site-packages/beat/cmdline/common.py(1486)push()
1485 try:
-> 1486 webapi.post(url, data=message)
1487 except RuntimeError as e:
> lib/python3.7/site-packages/beat/cmdline/webapi.py(104)post()
103 url = self.__build_url(path)
--> 104 answer = requests.post(url, json=data, headers=self._make_headers())
105
lib/python3.7/site-packages/requests/api.py(119)post()
118
--> 119 return request('post', url, data=data, json=json, **kwargs)
120
lib/python3.7/site-packages/requests/api.py(61)request()
60 with sessions.Session() as session:
---> 61 return session.request(method=method, url=url, **kwargs)
62
lib/python3.7/site-packages/requests/sessions.py(516)request()
515 )
--> 516 prep = self.prepare_request(req)
517
lib/python3.7/site-packages/requests/sessions.py(459)prepare_request()
458 cookies=merged_cookies,
--> 459 hooks=merge_hooks(request.hooks, self.hooks),
460 )
lib/python3.7/site-packages/requests/models.py(317)prepare()
316 self.prepare_cookies(cookies)
--> 317 self.prepare_body(data, files, json)
318 self.prepare_auth(auth, url)
lib/python3.7/site-packages/requests/models.py(467)prepare_body()
466 content_type = 'application/json'
--> 467 body = complexjson.dumps(json)
468 if not isinstance(body, bytes):
lib/python3.7/site-packages/simplejson/__init__.py(395)dumps()
394 ):
--> 395 return _default_encoder.encode(obj)
396 if cls is None:
lib/python3.7/site-packages/simplejson/encoder.py(296)encode()
295 # equivalent to the PySequence_Fast that ''.join() would do.
--> 296 chunks = self.iterencode(o, _one_shot=True)
297 if not isinstance(chunks, (list, tuple)):
lib/python3.7/site-packages/simplejson/encoder.py(378)iterencode()
377 try:
--> 378 return _iterencode(o, 0)
379 finally:
```
I will not attach the binary the `.so` file (can be found in https://filesender.switch.ch/filesender/?vid=59e1dbc9-04e4-67c8-2bb1-00007d77b3bb but you don't need that)
Steps to reproduce:
* create an algorithm with this .json file [1.json](/uploads/d625814e021f43f4543060e5b3045b55/1.json)
* generate a random binary file for this alg and save it as `1.so` for example this: [1.so](/uploads/d7507a1afdff15ed1c07c1b6de9403d7/1.so)
* push it to the online platformSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/276Editor crashes with KeyError on block parameters2020-07-21T13:12:53ZAmir MOHAMMADIEditor crashes with KeyError on block parameters```
Traceback (most recent call last):
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/assetwidget.py", line 507, in loadAsset
self.__update_content(declaration)
File "miniconda/envs/iris/lib/python3.7/s...```
Traceback (most recent call last):
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/assetwidget.py", line 507, in loadAsset
self.__update_content(declaration)
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/assetwidget.py", line 234, in __update_content
self.__updateJsonWidget()
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/assetwidget.py", line 319, in __updateJsonWidget
self.json_widget.setText(self.current_editor.dump_as_string())
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/editor.py", line 299, in dump_as_string
self.dump_json(), sort_keys=True, indent=4, cls=utils.NumpyJSONEncoder
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/editor.py", line 292, in dump_json
json_data.update(self._dump_json())
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/experimenteditor.py", line 1435, in _dump_json
__filter_parameters(item, globals_)
File "miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/experimenteditor.py", line 1411, in __filter_parameters
block_parameters[parameter_name]
KeyError: 'useBestGuess'
```
To reproduce:
* use this prefix: https://filesender.switch.ch/filesender/?vid=59e1dbc9-04e4-67c8-2bb1-00007d77b3bb
* start beat editor
* open this experiment:
```
├── experiments
│ └── jmcgrat3
│ └── jmcgrat3
│ └── livdet-baseline
│ └── 1
│ └── livdet-baseline.json
```Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/275TypeError: %d format: a number is required, not NoneType2020-08-06T08:41:49ZAmir MOHAMMADITypeError: %d format: a number is required, not NoneTypeSteps to reproduce:
1. open a v1 alg in the editor: [livdet_baseline.tar.xz](/uploads/2e239002e1c600fe44c57b67005b5817/livdet_baseline.tar.xz)
2. answer yes to its migration to v2
3. save it:
```
Traceback (most recent call last):
File...Steps to reproduce:
1. open a v1 alg in the editor: [livdet_baseline.tar.xz](/uploads/2e239002e1c600fe44c57b67005b5817/livdet_baseline.tar.xz)
2. answer yes to its migration to v2
3. save it:
```
Traceback (most recent call last):
File "/home/amir/miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/widgets/assetwidget.py", line 520, in saveJson
is_valid, errors = self.current_asset.is_valid()
File "/home/amir/miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/backend/asset.py", line 269, in is_valid
_, error_list = self.type.validate(self.declaration_path)
File "/home/amir/miniconda/envs/iris/lib/python3.7/site-packages/beat/editor/backend/asset.py", line 112, in validate
return validate(self.name.lower(), data)
File "/home/amir/miniconda/envs/iris/lib/python3.7/site-packages/beat/core/schema/__init__.py", line 176, in validate
validator = load_schema(schema_name, version)
File "/home/amir/miniconda/envs/iris/lib/python3.7/site-packages/beat/core/schema/__init__.py", line 93, in load_schema
__name__, os.path.join(schema_name, "%d.json" % version)
TypeError: %d format: a number is required, not NoneType
```Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.editor/-/issues/2712 bugs: Issues with commit and/or python update in conda environment2020-06-23T15:03:47ZFlavio TARSETTI2 bugs: Issues with commit and/or python update in conda environmentSummary and Steps to reproduce
Important note: these bugs have taken place after the "current blackout" and Idiap networking services restore
When trying to push to beat.editor some commits I now get two errors :
```
[INFO] Installin...Summary and Steps to reproduce
Important note: these bugs have taken place after the "current blackout" and Idiap networking services restore
When trying to push to beat.editor some commits I now get two errors :
```
[INFO] Installing environment for https://github.com/ambv/black.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: Command: ('/home/neo/miniconda3/envs/beat_editor_v2/bin/python', '-mvirtualenv', '/home/neo/.cache/pre-commit/repos__f8_6t/py_env-python3.7', '-p', 'python3.7')
Return code: 3
Expected return code: 0
Output:
The path python3.7 (from --python=python3.7) does not exist
Errors: (none)
Check the log at /home/neo/.cache/pre-commit/pre-commit.log
(beateditor_v2) neo@matrix:~/softs/idiap/proAca.beat/beat_editor_v2/beat.editor$ cat /home/neo/.cache/pre-commit/pre-commit.log
An unexpected error has occurred: CalledProcessError: Command: ('/home/neo/miniconda3/envs/beat_editor_v2/bin/python', '-mvirtualenv', '/home/neo/.cache/pre-commit/repos__f8_6t/py_env-python3.7', '-p', 'python3.7')
Return code: 3
Expected return code: 0
Output:
The path python3.7 (from --python=python3.7) does not exist
Errors: (none)
Traceback (most recent call last):
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/error_handler.py", line 47, in error_handler
yield
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/main.py", line 261, in main
return run(runner, store, args)
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/commands/run.py", line 268, in run
repo.require_installed()
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/repository.py", line 195, in require_installed
_install_all(self._venvs(), self.repo_config['repo'], self.store)
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/repository.py", line 102, in _install_all
language.install_environment(prefix, version, deps)
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/languages/python.py", line 141, in install_environment
_make_venv(env_dir, python)
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/languages/python.py", line 153, in make_venv
cmd_output(*cmd, env=env, cwd='/')
File "/home/neo/miniconda3/envs/beat_editor_v2/lib/python3.6/site-packages/pre_commit/util.py", line 186, in cmd_output
returncode, cmd, retcode, output=(stdout, stderr),
pre_commit.util.CalledProcessError: Command: ('/home/neo/miniconda3/envs/beat_editor_v2/bin/python', '-mvirtualenv', '/home/neo/.cache/pre-commit/repos__f8_6t/py_env-python3.7', '-p', 'python3.7')
Return code: 3
Expected return code: 0
Output:
The path python3.7 (from --python=python3.7) does not exist
Errors: (none)
```
So I thought ok I maybe need to update python on my conda environment:
When I do a `conda install python=3.7` I then get:
```
CondaHTTPError: HTTP 503 SERVICE UNAVAILABLE for url <https://www.idiap.ch/software/beat/conda/label/beta/linux-64/repodata.json>
Elapsed: 00:03.326174
A remote server error occurred when trying to retrieve this URL.
A 500-type error (e.g. 500, 501, 502, 503, etc.) indicates the server failed to
fulfill a valid request. The problem may be spurious, and will resolve itself if you
try your request again. If the problem persists, consider notifying the maintainer
of the remote server.
```Samuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/beat.web/-/issues/552Refer to the dockerhub images2020-06-23T15:57:59ZAmir MOHAMMADIRefer to the dockerhub imagesFrom what I understand, we are using public docker images now.
Please also update the docs to reflect that. For example:
https://www.idiap.ch/software/beat/docs/beat/docs/master/beat/beat.web/doc/user/algorithms/guide.html#implementing-a...From what I understand, we are using public docker images now.
Please also update the docs to reflect that. For example:
https://www.idiap.ch/software/beat/docs/beat/docs/master/beat/beat.web/doc/user/algorithms/guide.html#implementing-an-algorithm-in-cSamuel GAISTSamuel GAISThttps://gitlab.idiap.ch/beat/docs/-/issues/16Refer to the dockerhub images2020-06-19T13:52:23ZAmir MOHAMMADIRefer to the dockerhub imagesFrom what I understand, we are using public docker images now.
Please also update the docs to reflect that. For example:
https://www.idiap.ch/software/beat/docs/beat/docs/master/beat/beat.web/doc/user/algorithms/guide.html#implementing-a...From what I understand, we are using public docker images now.
Please also update the docs to reflect that. For example:
https://www.idiap.ch/software/beat/docs/beat/docs/master/beat/beat.web/doc/user/algorithms/guide.html#implementing-an-algorithm-in-cSamuel GAISTSamuel GAIST