beat issues
https://gitlab.idiap.ch/groups/beat/-/issues
2020-10-16T15:25:30Z
https://gitlab.idiap.ch/beat/beat.editor/-/issues/258
Documentation still points to the v1 editor components
2020-10-16T15:25:30Z
Amir MOHAMMADI
Documentation still points to the v1 editor components
Looking at the docs, it looks like the documentation was not updated for v2 release.
Given that users are installing v2 now, the docs need to be updated.
* [ ] Docs in this package
* [ ] Docs in `beat/docs`
Looking at the docs, it looks like the documentation was not updated for v2 release.
Given that users are installing v2 now, the docs need to be updated.
* [ ] Docs in this package
* [ ] Docs in `beat/docs`
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.editor/-/issues/257
Editor crashes when I try to change the inputs
2020-06-02T08:10:17Z
Amir MOHAMMADI
Editor crashes when I try to change the inputs
I have this json file (an experiment):
```json
{
"analyzers": {
"analyzer": {
"algorithm": "test/iris_analyzer/1",
"inputs": {
"scores": "scores",
"species": "species"
...
I have this json file (an experiment):
```json
{
"analyzers": {
"analyzer": {
"algorithm": "test/iris_analyzer/1",
"inputs": {
"scores": "scores",
"species": "species"
},
"parameters": {}
}
},
"blocks": {
"testing_alg": {
"algorithm": "test/means_testing/1",
"inputs": {
"means": "measurements",
"measurements": "lda_machine"
},
"outputs": {
"scores": "scores"
},
"parameters": {}
},
"training_alg": {
"algorithm": "test/means_training/1",
"inputs": {
"measurements": "measurements",
"species": "species"
},
"outputs": {
"means": "lda_machine"
},
"parameters": {}
}
},
"datasets": {
"testing_data": {
"database": "iris/1",
"protocol": "Main",
"set": "training"
},
"training_data": {
"database": "iris/1",
"protocol": "Main",
"set": "testing"
}
},
"description": "Amir's means LDA experiment",
"globals": {
"environment": {
"name": "Scientific Python 2.7",
"version": "0.0.4"
},
"queue": "Default"
}
}
```
When I try to edit it using the editor, it crashes with:
```
Traceback (most recent call last):
File "/home/amir/miniconda/envs/beat/lib/python3.7/site-packages/beat/editor/widgets/experimenteditor.py", line 627, in __remapIO
status, mapping = IOMapperDialog.getIOMapping(self.prefix_path, self.dump())
File "/home/amir/miniconda/envs/beat/lib/python3.7/site-packages/beat/editor/widgets/experimenteditor.py", line 323, in getIOMapping
return True, dialog.ioMapping()
File "/home/amir/miniconda/envs/beat/lib/python3.7/site-packages/beat/editor/widgets/experimenteditor.py", line 301, in ioMapping
label = self.inputs_layout.itemAt(i, QFormLayout.LabelRole).widget()
AttributeError: 'NoneType' object has no attribute 'widget'
[1] + 120487 abort (core dumped) beat editor start
```
I am trying to swap the inputs in this part:
```json
"testing_alg": {
"algorithm": "test/means_testing/1",
"inputs": {
"means": "measurements",
"measurements": "lda_machine"
},
```
Swap means and measurements.
but when I click on save, it crashes.
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.web/-/issues/550
Notify supervisor of supervisee yearly revalidation - Quick link to revoke su...
2020-05-18T13:06:16Z
Flavio TARSETTI
Notify supervisor of supervisee yearly revalidation - Quick link to revoke supervision
When a supervisee revalidates his account during a yearly revalidation process, the supervisor should be notifed in order to quickly check if the revalidation claim is based on proper supervision information.
The supervisor can drop the...
When a supervisee revalidates his account during a yearly revalidation process, the supervisor should be notifed in order to quickly check if the revalidation claim is based on proper supervision information.
The supervisor can drop the email notification if all is correct or should be able to quickly revoke this supervision claim if needed through a temporary link given in the email.
Related to #542
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.backend.python/-/issues/32
Multiprocessing support for data sources
2020-06-08T14:00:57Z
André Anjos
Multiprocessing support for data sources
As discussed in today's debugging session with @samuel.gaist and @amohammadi, using a `DataLoader` object in a multiprocessing context is hard:
1. Typically, the underlying `DataSource`'s `fileobj`'s are opened by the time the process i...
As discussed in today's debugging session with @samuel.gaist and @amohammadi, using a `DataLoader` object in a multiprocessing context is hard:
1. Typically, the underlying `DataSource`'s `fileobj`'s are opened by the time the process is forked
2. Deep copying the object (which goes through pickling and unpickling it) does not properly reset underlying `fileobj` pointers, which makes multiple processes access the same underlying OS-level file handler, causing unwanted behaviour.
To sort this out, we discussed 2 possible additions to this package:
1. `DataLoader` should have a `reset()` method that resets all underlying `DataSource` opened files, so that they can be correctly copied across multiple processes (e.g. in the event of a `fork()`). It should be relatively easy to do a `reset()` operation across all inputs of a user algorithm, to ensure all data sources are properly reset before an eventual user-guided `fork()`.
2. The underlying `DataSource` should have its pickle/unpickle behaviour patched (via overwriting the `__setstate__` slot of `DataSource`, see reference below), so that unpickling a data source (e.g. indirectly via a data loader deep copy), will call `self.reset()` after its state is unpickled. This would allow a `DataLoader` object to be sent over current mechanisms for inter-process communication (e.g. MPI or `multiprocessing.Queue`), transparently.
References:
* Python fileobj handling: https://stackoverflow.com/questions/1834556/does-a-file-object-automatically-close-when-its-reference-count-hits-zero
* Pickle user guide (see in particular `__getstate__` and `__setstate__` on how to overwrite the pickle/unpickle actions): https://docs.python.org/3/library/pickle.html#object.__getstate__
* On sharing (opened) file pointers in a POSIX system after a `fork()` is issued: https://stackoverflow.com/questions/33899548/file-pointers-after-returning-from-a-forked-child-process
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.web/-/issues/549
Expand required for supervision lists
2020-05-06T07:32:29Z
Flavio TARSETTI
Expand required for supervision lists
The supervision lists should be expanded over multiple columns to improve its visibility
The supervision lists should be expanded over multiple columns to improve its visibility
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/docs/-/issues/14
Update installation instructions to match Bob's
2020-05-28T14:05:31Z
Amir MOHAMMADI
Update installation instructions to match Bob's
I just went through installation instructions. It's best to install `beat.editor` when the environment is created.
I just went through installation instructions. It's best to install `beat.editor` when the environment is created.
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.web/-/issues/548
API for compatibility information about an algorithm
2020-04-07T20:26:11Z
Samuel GAIST
API for compatibility information about an algorithm
The detail page of an algorithm shows the information about which environments where used successfully to run that algorithm. The API currently does not offer that and it will be needed to create Docker container suitable for the AI4EU p...
The detail page of an algorithm shows the information about which environments where used successfully to run that algorithm. The API currently does not offer that and it will be needed to create Docker container suitable for the AI4EU project.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.web/-/issues/547
Improve new version push handling
2020-04-16T13:15:24Z
Samuel GAIST
Improve new version push handling
Currently if a new version of an asset is pushed without history information, there will be an error because the backend will try to create an asset from scratch. This will trigger an error because of an already existing asset.
As a sid...
Currently if a new version of an asset is pushed without history information, there will be an error because the backend will try to create an asset from scratch. This will trigger an error because of an already existing asset.
As a side effect, if no asset of a previous version exists, the backbend will create a new one based on the name but with the wrong number.
Samuel GAIST
Samuel GAIST
https://gitlab.idiap.ch/beat/beat.web/-/issues/546
Improve experiment finished email
2020-04-01T09:50:27Z
Samuel GAIST
Improve experiment finished email
Currently, the emails sent to platform users for notification about a run success or failure contains a direct link that will end in a 404 error if the user is not logged in.
It would be nice if the link would allow to start the login p...
Currently, the emails sent to platform users for notification about a run success or failure contains a direct link that will end in a 404 error if the user is not logged in.
It would be nice if the link would allow to start the login process since it is sent to the author of the experiment.
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.editor/-/issues/256
Toolchain tests for BlockType class
2020-03-26T12:44:59Z
Flavio TARSETTI
Toolchain tests for BlockType class
Summary
Tests for possible block type objects are missing for the toolchain editor
Summary
Tests for possible block type objects are missing for the toolchain editor
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.backend.python/-/issues/31
Support bytes python type
2020-05-27T16:23:17Z
Samuel GAIST
Support bytes python type
Currently there's no way to send bytes directly from one algorithm to another.
The current "workaround" is to build the bytes output then use base64 encoding, use a string based type to write the data to the output and on the other end ...
Currently there's no way to send bytes directly from one algorithm to another.
The current "workaround" is to build the bytes output then use base64 encoding, use a string based type to write the data to the output and on the other end load it back from string.
Example of working code:
Output:
```python
obj = dict(field1=data.value*2, field2=data.value)
dumped = pickle.dumps(obj) # binary
encoded = base64.b64encode(dumped) # base64 bytes
string = encoded.decode("ascii") # "stringified"
outputs["out_data"].write({"value": string})
```
**WARNING** Do **not** call str(encoded), it won't be a "real string":
```python
example = b"whatever"
example_str = str(example)
example_str
# output is "b'whatever'"
```
Input:
```python
in_data = inputs["in_data"].data # string data
decoded = base64.b64decode(in_data.value) # decode to bytes
obj = pickle.loads(decoded) # obj is a dict and can be read
```
This issue tracks the implementation of the support for the python bytes type.
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.web/-/issues/545
Migration issue with the documentation
2020-03-16T16:29:31Z
Flavio TARSETTI
Migration issue with the documentation
By moving from beat-eu.org to idiap.ch the link should be updated to target the documentation in the supervisor sign-up form.
By moving from beat-eu.org to idiap.ch the link should be updated to target the documentation in the supervisor sign-up form.
Flavio TARSETTI
Flavio TARSETTI
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.web/-/issues/544
Improve sign-up form
2020-03-16T16:29:31Z
André Anjos
Improve sign-up form
Currently, the sign-up form for supervisors does not indicate that one must use their "institutional" e-mail address. I propose we modify it slightly to indicate this as well as include an URL to the reasoning behind this.
For example:...
Currently, the sign-up form for supervisors does not indicate that one must use their "institutional" e-mail address. I propose we modify it slightly to indicate this as well as include an URL to the reasoning behind this.
For example:
* Instead of saying "you hold a position in a research laboratory", we should say "you hold a permanent position in a research laboratory".
* Instead of saying "E-mail" we should say "Institutional E-mail".
* We should add a link to: https://www.idiap.ch/software/beat/docs/beat/docs/stable/beat.web/doc/user/faq.html#what-is-a-supervisor
* In that link, we should specify that e-mail should be institutional.
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.editor/-/issues/255
Ensure field max length is respected
2020-03-25T11:42:34Z
Samuel GAIST
Ensure field max length is respected
The short description field has a maximal length on the platform that must checked here.
There editors should implement these constraints.
If possible these constraints should also be encoded in the corresponding schemas and the variou...
The short description field has a maximal length on the platform that must checked here.
There editors should implement these constraints.
If possible these constraints should also be encoded in the corresponding schemas and the various editors use that information to enforce them.
See beat/beat.core#95
Flavio TARSETTI
Flavio TARSETTI
https://gitlab.idiap.ch/beat/beat.core/-/issues/95
Schema: missing constraints
2020-03-10T16:08:31Z
Samuel GAIST
Schema: missing constraints
On the platform, fields like the short descriptions have for example size constraints.
These should be reflected here to avoid issues when creating a new object.
On the platform, fields like the short descriptions have for example size constraints.
These should be reflected here to avoid issues when creating a new object.
https://gitlab.idiap.ch/beat/beat.editor/-/issues/254
PyPI classifier designation update for GPL v3 licenses
2020-03-03T13:45:06Z
Flavio TARSETTI
PyPI classifier designation update for GPL v3 licenses
Summary
PyPI has changed its classifier designation for GPL v3 licences
What is the current bug behavior?
The current bug is shown in this release pipeline:
https://gitlab.idiap.ch/beat/beat.editor/pipelines/37844
and specifically i...
Summary
PyPI has changed its classifier designation for GPL v3 licences
What is the current bug behavior?
The current bug is shown in this release pipeline:
https://gitlab.idiap.ch/beat/beat.editor/pipelines/37844
and specifically in the following job
https://gitlab.idiap.ch/beat/beat.editor/-/jobs/191064
where an error is thrown:
```
requests.exceptions.HTTPError: 400 Client Error: Invalid value for classifiers.
Error: 'License :: OSI Approved :: GNU General Public License v3' is not a valid choice
for this field for url: https://upload.pypi.org/legacy/ 515
```
What is the expected correct behavior?
It shouldn't fail on this deployment part on PyPI
Relevant logs and/or screenshots
- https://gitlab.idiap.ch/beat/beat.editor/pipelines/37844
- https://gitlab.idiap.ch/beat/beat.editor/-/jobs/191064
Possible fixes
This faulty line in `setup.py`:
**"License :: OSI Approved :: GNU General Public License v3"**
should become:
**"License :: OSI Approved :: GNU General Public License v3 (GPLv3)"**
Flavio TARSETTI
Flavio TARSETTI