beat.core issueshttps://gitlab.idiap.ch/beat/beat.core/-/issues2018-11-03T15:23:12Zhttps://gitlab.idiap.ch/beat/beat.core/-/issues/15Pull experiment does not work properly for user 'tutorial'2018-11-03T15:23:12ZLaurent EL SHAFEYPull experiment does not work properly for user 'tutorial'When trying to pull experiments:
```sh
../bin/beat exp pull --user tutorial
```
we end up with:
```text
Pulling the experiment tutorial/eigenface/Test17
The toolchain isn't valid, due to the following errors:
Errors w...When trying to pull experiments:
```sh
../bin/beat exp pull --user tutorial
```
we end up with:
```text
Pulling the experiment tutorial/eigenface/Test17
The toolchain isn't valid, due to the following errors:
Errors with the algorithm 'tutorial/postperf': Failed to find the algorithm file
```Biometrics Center Kickoff Meeting and BEAT ReviewLaurent EL SHAFEYLaurent EL SHAFEYhttps://gitlab.idiap.ch/beat/beat.core/-/issues/9Versionning support2018-11-03T15:23:12ZAndré AnjosVersionning supportAutomatic versionning suport should be implemented through out the platform. I'm putting this bug here, but surely this affects most packages in the project. I detail our existing workplan and some key behavioral aspects.
- Each objec...Automatic versionning suport should be implemented through out the platform. I'm putting this bug here, but surely this affects most packages in the project. I detail our existing workplan and some key behavioral aspects.
- Each object in the system (databases, toolchains, dataformats, algorithms, attached documentation strings, environments) should be version-able. Every time the user uploads or changes that object, the version number of that object is bumped.
- Each time a new version is entered, the user should be able to attach a version comment, which is independent from the object documentation itself.
- For the platform, the combination of the object name and the version determines the uniqueness of such object.
- The sharing, usage and tagging status of each unique object (name/version) should be tracked independently. This outdates the usage of "/private" paths which seems to be a bit confusing for some users.
- While visualizing the object, the user by defaults accesses the latest version to which it has access to. This should be made consistent through the platform.
- There is always an option to see/use an earlier version of an object, but that requires the user to specify it explicitly. For example, in the command-line utilities, a "--version=xxx" could be passed. On the web interface, the version of a certain object is chosen automatically as the latest, but a field allows the user to browse for an earlier version.Biometrics Center Kickoff Meeting and BEAT Reviewhttps://gitlab.idiap.ch/beat/beat.core/-/issues/8Old scripts lingering at beat git2014-09-22T14:36:37ZAndré AnjosOld scripts lingering at beat gitI just realized that the following scripts are still available on `./bin`:
- generate_single_integers.py
- check_dataformat.py
- synchronize.py
- run_toolchain.py
- generate_integers_database.py
- check_toolchain.py
- display_da...I just realized that the following scripts are still available on `./bin`:
- generate_single_integers.py
- check_dataformat.py
- synchronize.py
- run_toolchain.py
- generate_integers_database.py
- check_toolchain.py
- display_data.py
If they are not useful anymore (i.e. have been integrated into the `beat` general command-line program), could you please remove them not to create any confusion?Biometrics Center Kickoff Meeting and BEAT ReviewAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/6Support for enumerations (migrated from github)2014-09-22T14:36:49ZAndré AnjosSupport for enumerations (migrated from github)I have not seen how to declare an enumeration. Is this possible at all? We do have use cases where we could benefit from this. E.g., client data migth belong to the "train", "devel" or "test" datasets. These could be implemented as enume...I have not seen how to declare an enumeration. Is this possible at all? We do have use cases where we could benefit from this. E.g., client data migth belong to the "train", "devel" or "test" datasets. These could be implemented as enumerations. Currently, in the UBM-GMM, I implement this field as an unchecked string.
Biometrics Center Kickoff Meeting and BEAT ReviewPhilip ABBETPhilip ABBEThttps://gitlab.idiap.ch/beat/beat.core/-/issues/22Analyzers with the same content but different versions share the same hash2017-08-06T11:17:04ZLaurent EL SHAFEYAnalyzers with the same content but different versions share the same hashIn our current design, analyzers with the same content but different versions share the same hash.
This is problematic, since the cache files for the analyzers include the 'algorithm_name/version' in their headers. Since they share th...In our current design, analyzers with the same content but different versions share the same hash.
This is problematic, since the cache files for the analyzers include the 'algorithm_name/version' in their headers. Since they share the same hash, loading a cache file for a requested 'algorithm_name/version1' may lead to loading a cache file with 'algorithm_name/version2' hardcoded in the header, which will fail, because of the 'dataformat validation'.
To avoid this problem, one possible solution is to change the way hash are generated for analyzer blocks.Second BEAT Reviewhttps://gitlab.idiap.ch/beat/beat.core/-/issues/20Reliability of data I/O2017-08-06T11:17:04ZAndré AnjosReliability of data I/OSimilarly to what we did for the indexes, we should also promote some check-summing capabilities for the data which is produced and consumed in our environments. I leave this open for discussion here.Similarly to what we did for the indexes, we should also promote some check-summing capabilities for the data which is produced and consumed in our environments. I leave this open for discussion here.Second BEAT ReviewLaurent EL SHAFEYLaurent EL SHAFEYhttps://gitlab.idiap.ch/beat/beat.core/-/issues/4Binary data format (migrated from github)2018-07-30T08:57:48ZAndré AnjosBinary data format (migrated from github)The current data format of choice uses the Python pickling system. This is highly subjective to the project module structure. I'm not sure it is a good idea to keep it hanging around for long.
Our group had a (very good) experience wi...The current data format of choice uses the Python pickling system. This is highly subjective to the project module structure. I'm not sure it is a good idea to keep it hanging around for long.
Our group had a (very good) experience with HDF5. This is a binary format that is quite flexible, fast to read, compact and universally compatible with all major software suites. I believe we should port the data format
system to use data instead of Python pickle.
To get started, I'd go for incorporating a dependence on the excellent python package `h5py`. It does already bring support for all Python/NumPy basic types and is extensible to different data types.
At this point, it would be also nice to introduce data versioning somewhere. Maybe on the "dataformat" descriptors (not sure).
> Note: Philip/François are not sure on HDF5. Before discarding it the possibility to use it, it would be interesting to
> understand why.
> Note: Another useful tool would be an automatic converter, that takes HDF5 files and transforms that into JSON
> descriptors of that format. One can convert HDF5 files to simple data descriptors and, from there, into BEAT's
> JSON format if necessary.
> Note: While debugging, it should be possible to inspect the cache. We currently have no tools to do so,
> but if we address this item with HDF5, then this should come for free.
Second BEAT ReviewLaurent EL SHAFEYLaurent EL SHAFEYhttps://gitlab.idiap.ch/beat/beat.core/-/issues/31Experiment setup() does not handle properly blocks with multiple outputs2017-08-06T11:17:03ZLaurent EL SHAFEYExperiment setup() does not handle properly blocks with multiple outputsFollowing the major revamping of this package, blocks with multiple outputs are not handled in the right way.
In particular, the current implementation of the setup() method for Experiment assumes that a block has a single output (e.g. ...Following the major revamping of this package, blocks with multiple outputs are not handled in the right way.
In particular, the current implementation of the setup() method for Experiment assumes that a block has a single output (e.g. see https://gitlab.idiap.ch/biometric/beat.core/blob/v0.8.1/beat/core/experiment.py#L858).
I am unsure whether there are other implications in the code or not.Tutorial for the FG2015 ConferenceLaurent EL SHAFEYLaurent EL SHAFEYhttps://gitlab.idiap.ch/beat/beat.core/-/issues/30beat db index improvements2017-08-06T11:17:03ZAndré Anjosbeat db index improvementsShould index all databases, if not specified which.
It should also support multiple databases to be indexed.Should index all databases, if not specified which.
It should also support multiple databases to be indexed.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/28No way to visualise (binary) cache data2017-08-06T11:17:03ZAndré AnjosNo way to visualise (binary) cache dataAfter our data re-structuring in this package, a useful feature was removed: the ability to write cache files as JSON text. Cache files are now written in binary format, which improves the calculation precision and translates to what hap...After our data re-structuring in this package, a useful feature was removed: the ability to write cache files as JSON text. Cache files are now written in binary format, which improves the calculation precision and translates to what happens inside the platform. It is also much faster.
A side effect was we lost the possibility to directly view cache files.
A command-line option/command at our `beat` swiss-army knife could allow us to recover this ability, by providing a "view" command that allows one to inspect the contents of binary cache files.
This bug will remain opened until this is fixed.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/27Downloading/Uploading of database declarations and views2017-08-06T11:17:03ZAndré AnjosDownloading/Uploading of database declarations and viewsOnce beat.web#86 is fixed, then we should implement the pull/push of database declarations via the command-line as well.Once beat.web#86 is fixed, then we should implement the pull/push of database declarations via the command-line as well.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/23beat * pull commands are extremely slow in certain cases2017-08-06T11:17:04ZAndré Anjosbeat * pull commands are extremely slow in certain casesI'm currently implementing some tests for the cmdline utilities. I'm noticing that pulling algorithms out of the platform gets extremely slow in some circumstances. Namely, when using the tool as user `tutorial`, but downloading stuff fr...I'm currently implementing some tests for the cmdline utilities. I'm noticing that pulling algorithms out of the platform gets extremely slow in some circumstances. Namely, when using the tool as user `tutorial`, but downloading stuff from user `tpereira`. What is special about this? Why is it so slow? To be checked.
The same behaviour **cannot** be observed downloading either `data formats` or `toolchains`. I wonder if there is a problem with the algorithm -> data format dependence.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/21Output method write() is not able to process beat.core.Data instances2017-08-06T11:17:04ZManuel GüntherOutput method write() is not able to process beat.core.Data instancesThe output method write() is currently not able to process beat.core.Data instances.
This means that when a complex data structure is read from the inputs and that this input has to be written in one of the outputs, the user currently...The output method write() is currently not able to process beat.core.Data instances.
This means that when a complex data structure is read from the inputs and that this input has to be written in one of the outputs, the user currently has to convert it into a JSON like python dictionary.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/19More robust JSON validation2017-08-06T11:17:04ZAndré AnjosMore robust JSON validationWe currently have in place a hand-crafted JSON validation strategy for the many JSON bits we manipulate inside the platform.
I propose we improve JSON validation by introducing [JSON schemas](http://json-schema.org/) for every piece o...We currently have in place a hand-crafted JSON validation strategy for the many JSON bits we manipulate inside the platform.
I propose we improve JSON validation by introducing [JSON schemas](http://json-schema.org/) for every piece of JSON we handle in the platform. There is a [Python package available on PyPI](https://pypi.python.org/pypi/jsonschema) that is compatible with draft-4 (the latest) of the specification.
Find [here](http://spacetelescope.github.io/understanding-json-schema/), a gentle introduction to JSON schemas.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/18beat experiment pull does not pull all dataformats and complains2017-08-06T11:17:04ZAndré Anjosbeat experiment pull does not pull all dataformats and complainsAfter changes with the version numbers, a simple `beat experiments pull` for a particular experiment does not pull all dataformats required by the experiment anymore. As a result, the experiment cannot be run immediately after.After changes with the version numbers, a simple `beat experiments pull` for a particular experiment does not pull all dataformats required by the experiment anymore. As a result, the experiment cannot be run immediately after.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/16beat experiment run does not use external environment2018-11-03T15:23:12ZAndré Anjosbeat experiment run does not use external environmentCurrently, the command to run experiments on the user machine does not rely on the same infrastructure used by the platform to run experiments.
It would be good these two things converged at a certain point.Currently, the command to run experiments on the user machine does not rely on the same infrastructure used by the platform to run experiments.
It would be good these two things converged at a certain point.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/13Input management2018-11-03T15:23:12ZAndré AnjosInput managementIt would be interesting to revisit input management on algorithms and analysis blocks and try to factor out code that is repeated everywhere into a simpler interface.
This bug shall be used to track advances on this field.It would be interesting to revisit input management on algorithms and analysis blocks and try to factor out code that is repeated everywhere into a simpler interface.
This bug shall be used to track advances on this field.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/12Object renaming2018-11-03T15:23:12ZAndré AnjosObject renamingIt should be possible to rename:
- [ ] algorithms
- [ ] dataformats
- [ ] toolchains
- [ ] experiments
The platform should handle renaming gracefully.It should be possible to rename:
- [ ] algorithms
- [ ] dataformats
- [ ] toolchains
- [ ] experiments
The platform should handle renaming gracefully.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/10Library support2018-11-03T15:23:12ZAndré AnjosLibrary supportA ticket for holding information on library support. Some aspects discussed over the last months:
- The easiest to start with would be: 1 library = 1 file, pretty much like algorithms.
- External (bigger packages) need to be installe...A ticket for holding information on library support. Some aspects discussed over the last months:
- The easiest to start with would be: 1 library = 1 file, pretty much like algorithms.
- External (bigger packages) need to be installed with the processing environment.
- Libraries should be version-nable such as algorithms.Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/7Improvements to the beat command-line tool (migrated from github)2015-03-25T07:37:09ZAndré AnjosImprovements to the beat command-line tool (migrated from github)- [x] Pull a configuration
- [x] Push a configuration
- [x] Edition/Pull/Push of descriptions associated to different objects
- [x] Color configuration
- [x] Check of a toolchain `beat toolchain check ...`
- [x] Algorithm changes de...- [x] Pull a configuration
- [x] Push a configuration
- [x] Edition/Pull/Push of descriptions associated to different objects
- [x] Color configuration
- [x] Check of a toolchain `beat toolchain check ...`
- [x] Algorithm changes detection when running an experiment
- [x] Check user existence in commands like: `beat algorithms pull --user ADHDAHGDGAHSGHDAGHSDGH`. Presently, this is silently ignored.
- [x] While running locally, it would be nice that this package printed out more information about data input and output. It is currently very summarized.
Tutorial for the FG2015 ConferenceAndré AnjosAndré Anjos