beat.cmdline issues
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues
2020-11-16T14:34:22Z
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/79
Remove database sharing explicit option
2020-11-16T14:34:22Z
Samuel GAIST
Remove database sharing explicit option
Following the discussion on beat/beat.web!410, the database raw data sharing implementation was change and its definition moved to the database declaration.
beat/beat.core!132 implements that.
Therefore remove the explicit database sha...
Following the discussion on beat/beat.web!410, the database raw data sharing implementation was change and its definition moved to the database declaration.
beat/beat.core!132 implements that.
Therefore remove the explicit database sharing option here as it is not used anymore.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/76
Implement support for database sharing
2020-11-12T15:02:19Z
Samuel GAIST
Implement support for database sharing
See beat/beat.core#103
See beat/beat.core#103
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/78
Database index generated files belongs to docker daemon user
2020-11-10T16:47:14Z
Samuel GAIST
Database index generated files belongs to docker daemon user
Which makes them belonging to root currently which is wrong.
It should be the user which currently runs the indexing or a specific UID.
Which makes them belonging to root currently which is wrong.
It should be the user which currently runs the indexing or a specific UID.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/77
CXX algorithm cannot be correctly downloaded
2020-11-10T16:42:45Z
Samuel GAIST
CXX algorithm cannot be correctly downloaded
The way the URL is built is wrong, it hardcodes the current use as the author which is not necessarily true.
The way the URL is built is wrong, it hardcodes the current use as the author which is not necessarily true.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/75
docker experiment runs not tested properly.
2020-08-10T15:27:01Z
Amir MOHAMMADI
docker experiment runs not tested properly.
There are several issues when you run the experiments with the docker executor:
* [x] `db.examples` docker image is not publicly available
* [ ] indexing of databases (`view.index` method) runs outside docker (different `root_folder` ...
There are several issues when you run the experiments with the docker executor:
* [x] `db.examples` docker image is not publicly available
* [ ] indexing of databases (`view.index` method) runs outside docker (different `root_folder` compared to inside docker containers) and this leads to broken paths when `.get` of views is called inside docker.
* [ ] logging leads to stat errors:
```
% beat experiment run --docker jmcgrat3/jmcgrat3/livdet-baseline/1/livdet-baseline
Index for database livdet-iris-2020/1 not found, building it
Registered 'LivDet2020 (1.0.0)' -> 'livdet2020:latest'
Untagged image, skipping
Registered 'Python (2.1.0)' -> 'beatenv/beat.env.python:2.1.0r7'
Registered 'Python (1.0.0)' -> 'beatenv/beat.env.python:latest'
Registered 'OpenCV (1.0.0)' -> 'opencv:latest'
Registered 'C++ (2.0.0)' -> 'beatenv/beat.env.cxx:2.0.0r3'
Running `jmcgrat3/BSIF-Feature-Extraction/1' for block `s17b12'
Start the execution of 'jmcgrat3/BSIF-Feature-Extraction/1'
Traceback (most recent call last):
File "/Users/josephmcgrath/miniconda3/envs/beat/bin/beat", line 11, in <module>
sys.exit(main())
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/beat/cmdline/decorators.py", line 94, in _decorator
value = view_func(*args, **kwargs)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/beat/cmdline/experiments.py", line 782, in run
return run_experiment(config, name, force, docker, local, environment, quiet)
File "/Users/josephmcgrath/miniconda3/envs/beat/lib/python3.7/site-packages/beat/cmdline/experiments.py", line 312, in run_experiment
simplify_time(data_stats["time"]["read"]),
KeyError: 'time'
```
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/72
Local support for splittable
2020-08-06T14:39:48Z
Samuel GAIST
Local support for splittable
Currently there's no possibility to validate a splittable algorithm locally.
There's nothing in the experiment execution part and in the algorithm execution the number of slots is locked to one and not even used.
The splitting part is ...
Currently there's no possibility to validate a splittable algorithm locally.
There's nothing in the experiment execution part and in the algorithm execution the number of slots is locked to one and not even used.
The splitting part is currently done at the beat/beat.web> level and then the scheduler takes the generated tasks and sends them to the appropriate worker machines.
That part shall be ported to beat/beat.cmdline> so that the behaviour can be mimicked locally through maybe multiprocessing.
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/70
Cannot specify plotterparmeters when calling `beat exp plot`
2020-07-28T14:57:58Z
Amir MOHAMMADI
Cannot specify plotterparmeters when calling `beat exp plot`
I was thinking that we can fix this by providing the plotterparams using click optiona and also loading from rc.
I was thinking that we can fix this by providing the plotterparams using click optiona and also loading from rc.
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/73
Cannot push a C++ algorithm
2020-07-23T12:24:14Z
Amir MOHAMMADI
Cannot push a C++ algorithm
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/...
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 platform
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/74
Pushin an existing experiment leads to a 'description' KeyError
2020-07-22T13:23:47Z
Amir MOHAMMADI
Pushin an existing experiment leads to a 'description' KeyError
```
pushing experiments/amohammadi/amohammadi/livdet/1/livdet [ModificationStatus.DOC_CHANGED]
Traceback (most recent call last):
File "bin/beat", line 11, in <module>
sys.exit(main())
File "lib/python3.7/site-packages/click/core...
```
pushing experiments/amohammadi/amohammadi/livdet/1/livdet [ModificationStatus.DOC_CHANGED]
Traceback (most recent call last):
File "bin/beat", line 11, in <module>
sys.exit(main())
File "lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "lib/python3.7/site-packages/beat/cmdline/click_helper.py", line 121, in invoke
return super().invoke(ctx)
File "lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "lib/python3.7/site-packages/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "lib/python3.7/site-packages/beat/cmdline/decorators.py", line 94, in _decorator
value = view_func(*args, **kwargs)
File "lib/python3.7/site-packages/beat/cmdline/commands.py", line 321, in push_impl
indentation=0,
File "lib/python3.7/site-packages/beat/cmdline/common.py", line 1497, in push
data = {"description": message["description"]}
KeyError: 'description'
```
I am not sure what is the desired behavior here because the experiment already exists and is run.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/29
Provide a plugin-based command line mechanism
2020-07-21T14:02:10Z
Amir MOHAMMADI
Provide a plugin-based command line mechanism
While the `beat` commandline is nice, @andre.anjos pointed out that a plugin-based commandline would be more useful.
I could not find an issue for this, so I'm creating this but feel free to close it if it is not relevant.
This was care...
While the `beat` commandline is nice, @andre.anjos pointed out that a plugin-based commandline would be more useful.
I could not find an issue for this, so I'm creating this but feel free to close it if it is not relevant.
This was carefully designed and implemented in bob:
* https://gitlab.idiap.ch/bob/bob.extension/issues/44
* https://gitlab.idiap.ch/bob/bob.extension/merge_requests/64
* https://www.idiap.ch/software/bob/docs/bob/docs/master/bob.extension/doc/framework.html#unified-command-line-mechanism
A similar approach could be taken here as well.
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/71
Make the experiment plotting less rigid
2020-06-04T13:35:57Z
Samuel GAIST
Make the experiment plotting less rigid
With the old code and the part kept after the refactoring, the output format for the plotting the result of an experiment is locked to `image/png` if nothing is provided in the default plotter parameters.
This does not allow for people ...
With the old code and the part kept after the refactoring, the output format for the plotting the result of an experiment is locked to `image/png` if nothing is provided in the default plotter parameters.
This does not allow for people to work on custom plotter that might output something else or use a different output type if nothing is provided as default parameter.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/69
Cannot create a new database
2020-06-02T14:14:34Z
Amir MOHAMMADI
Cannot create a new database
Running `beat databases create myiris/1` will result in:
```
Traceback (most recent call last):
File "/home/amir/miniconda/envs/beat-tutorial/bin/beat", line 11, in <module>
sys.exit(main())
File "/home/amir/miniconda/envs/beat-t...
Running `beat databases create myiris/1` will result in:
```
Traceback (most recent call last):
File "/home/amir/miniconda/envs/beat-tutorial/bin/beat", line 11, in <module>
sys.exit(main())
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/cmdline/click_helper.py", line 121, in invoke
return super().invoke(ctx)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/cmdline/decorators.py", line 92, in _decorator
value = view_func(*args, **kwargs)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/cmdline/commands.py", line 162, in create_impl
return common.create(config.path, asset_info.asset_type, names)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/cmdline/common.py", line 1009, in create
obj = TYPE_VALIDATOR[asset_type](prefix, data=None) # the default object
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/core/database.py", line 131, in __init__
super(Database, self).__init__(prefix, data, dataformat_cache)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/backend/python/database.py", line 264, in __init__
self._load(name, dataformat_cache)
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/core/database.py", line 167, in _load
self.prefix
File "/home/amir/miniconda/envs/beat-tutorial/lib/python3.7/site-packages/beat/core/database.py", line 69, in get_first_procotol_template
raise RuntimeError("Invalid prefix content, no protocol template available")
RuntimeError: Invalid prefix content, no protocol template available
```
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/38
Offline plotting support is shaky
2020-05-26T15:19:19Z
Jaden DIEFENBAUGH
Offline plotting support is shaky
If the plotter object and the default plotterparameters exist in the local prefix, failing to fetch info from the BEAT web platform should not stop plotting.
The issue came up when using the tutorial VM. Some people didn't have an inter...
If the plotter object and the default plotterparameters exist in the local prefix, failing to fetch info from the BEAT web platform should not stop plotting.
The issue came up when using the tutorial VM. Some people didn't have an internet connection and couldn't plot because `beat.cmdline` was trying to fetch stuff from beat.web even though the plotter objects and default parameters existed.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/68
beat exp fork command is cumbersome to use
2020-05-15T12:56:46Z
Amir MOHAMMADI
beat exp fork command is cumbersome to use
When you fork an experiment in the command line, you have to something like:
```sh
$ beat exp fork test/test/iris/1/iris amir/test/iris/1/means
```
but you can only change the username and name of the experiment when you fork.
When usin...
When you fork an experiment in the command line, you have to something like:
```sh
$ beat exp fork test/test/iris/1/iris amir/test/iris/1/means
```
but you can only change the username and name of the experiment when you fork.
When using beat.editor 2.0.0, when I fork an experiment, it only asks for the exp name.
Beat.editor somehow decided to put the forked experiment under user `amir` but I don't know
yet how it decided on that.
Shouldn't this command be also similar?
Something like:
```sh
$ beat exp fork test/test/iris/1/iris means
$ beat exp fork --user amir test/test/iris/1/iris means
```
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/67
Version information missing on push
2020-04-14T14:43:26Z
Samuel GAIST
Version information missing on push
When creating a new version of an algorithm or a fork, the version information is not pushed with the data.
It is currently not used by beat/beat.web> but this is about to change because the current way new version creation is handled i...
When creating a new version of an algorithm or a fork, the version information is not pushed with the data.
It is currently not used by beat/beat.web> but this is about to change because the current way new version creation is handled is suboptimal. If for some reasons a new version is created manually rather than through "beat <asset_type> version`, the missing history version will trigger the creation of a new "version 1" asset or at least an attempt to do that.
See beat/beat.web#547
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/66
Experiment monitor command is broken
2020-03-18T12:07:14Z
Samuel GAIST
Experiment monitor command is broken
The experiment monitor command does not work anymore following the cleanup of the webapi module.
The get is still handled old style.
The experiment monitor command does not work anymore following the cleanup of the webapi module.
The get is still handled old style.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/65
Improve dependency check tests
2020-03-16T17:16:29Z
Flavio TARSETTI
Improve dependency check tests
Tests are missing.
Related to https://gitlab.idiap.ch/beat/beat.cmdline/merge_requests/86
Tests are missing.
Related to https://gitlab.idiap.ch/beat/beat.cmdline/merge_requests/86
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/64
Do not make the environment listing failed if platform is unavailable
2020-01-29T13:16:11Z
Samuel GAIST
Do not make the environment listing failed if platform is unavailable
As implemented, the environment listing should not fail for local docker environment but it is currently not the case for listing the remote environment.
Both should behave the same. Therefore, if any error happens when contacting the p...
As implemented, the environment listing should not fail for local docker environment but it is currently not the case for listing the remote environment.
Both should behave the same. Therefore, if any error happens when contacting the platform, it should be logged and the command continue showing an empty set of environment coming from there.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/63
LICENSE file location in conda recipe is wrong
2019-11-14T15:59:01Z
André Anjos
LICENSE file location in conda recipe is wrong
It should read `LICENSE` instead of `../LICENSE`.
The same should be propagated to all relevant packages.
See: bob/bob.devtools#44
It should read `LICENSE` instead of `../LICENSE`.
The same should be propagated to all relevant packages.
See: bob/bob.devtools#44
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.cmdline/-/issues/50
Pushing experiments to the platform is very tricky without informative warnin...
2019-10-23T18:29:10Z
Zohreh MOSTAANI
Pushing experiments to the platform is very tricky without informative warnings or errors!
The assumption is that you can pull an experiment from the platform, edit the necessary blocks (which means debugging the blocks without going through the pain of making new versions or forks for each block) and then push back to the pla...
The assumption is that you can pull an experiment from the platform, edit the necessary blocks (which means debugging the blocks without going through the pain of making new versions or forks for each block) and then push back to the platform.
The issue is that in each experiment the user can use toolchains, or algorithms, etc that are public from other users and when they are pulled they are organized in folders with similar usernames in the user's local prefix folder.
With current setup if users want to edit some algorithm they **should** first copy them to their own name space.
If you do not make new algorithms under your own name space two scenarios may happen:
- You just edited the file from original user (not a good idea). `beat push` command in this situation does not push anything since it already exists on the platform.
- you made new version form the same algorithm which goes under the category of the original user. `beat push` command will create a new algorithm with the same name under your username with version number one without any warnings and it shows on the command line that the algorithm under the original username has been created.
The problem is since there is no error or warnings in such situations and nothing mentioned in the documentation it is tricky to find out where the problem comes from. It might be very confusing for the normal user to interact with beat.