bob.bio.base issueshttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues2023-08-22T08:07:17Zhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/194Loading scores for the measure commands fails on non-float scores2023-08-22T08:07:17ZYannick DAYERLoading scores for the measure commands fails on non-float scores[src/bob/bio/base/score/load.py#L663](https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/master/src/bob/bio/base/score/load.py#L663) and [src/bob/bio/base/score/load.py#L650](https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/master/src/bob/bi...[src/bob/bio/base/score/load.py#L663](https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/master/src/bob/bio/base/score/load.py#L663) and [src/bob/bio/base/score/load.py#L650](https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/master/src/bob/bio/base/score/load.py#L650) cast a CSV score column to float, but it could contain other things (nothing or `None`) that cannot be converted to float. This needs to be handled correctly.
Possible solution:
- Convert all non-float values to `float("nan")`, this should be handled correctly by the measure commands.https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/192vuln hist command missing far_value option2023-05-01T15:11:06ZAlain KOMATYvuln hist command missing far_value optionExecuting the command:
```
bob vuln hist -c far --far-value 0.001 scores-dev.csv --output 11_hist.pdf --figsize "6,5"
```
Outputs the following error:
```
Error: No such option: --far-value Did you mean --iapmr-line?
```Executing the command:
```
bob vuln hist -c far --far-value 0.001 scores-dev.csv --output 11_hist.pdf --figsize "6,5"
```
Outputs the following error:
```
Error: No such option: --far-value Did you mean --iapmr-line?
```https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/190SampleSet missing attributes 'key'2023-04-04T17:55:49ZChristophe ECABERTSampleSet missing attributes 'key'With the updated version of the `CSVDatabase` the `references` and `probes` are now `SampleSet` objects. Special care is taken to make sure the required attributes are defined for samples within them.
However there is no check for `Sam...With the updated version of the `CSVDatabase` the `references` and `probes` are now `SampleSet` objects. Special care is taken to make sure the required attributes are defined for samples within them.
However there is no check for `SampleSet` attributes, which is not directly an issue. But later down the pipeline, when using checkpointed experiment, the `BioAlgCheckpointWrapper` rely on the `key` attribute to run (i.e. `_enroll_sample_set(...)`).Yannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/189Vulnerability analysis compares `template_id` instead of `subject_id`2023-02-13T16:35:57ZYannick DAYERVulnerability analysis compares `template_id` instead of `subject_id`To know if a score is genuine or an impostor, the fields to compare are `probe_subject_id` and `bio_ref_subject_id`.
The `vuln` commands currently use `probe_template_id` and `bio_ref_template_id`.To know if a score is genuine or an impostor, the fields to compare are `probe_subject_id` and `bio_ref_subject_id`.
The `vuln` commands currently use `probe_template_id` and `bio_ref_template_id`.Yannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/182Unable to run the pipeline after the last update of bob.bio.base2022-05-03T16:26:00ZYu LinghuUnable to run the pipeline after the last update of bob.bio.baseThe latest version of bob.bio.base does not support to run any `simple` or `score-norm` pipeline. Below is the example error message:
```
▶ ./bin/bob bio pipeline simple rfw-idiap arcface-insightface -vvv -o idiap_arcface
Warning: entr...The latest version of bob.bio.base does not support to run any `simple` or `score-norm` pipeline. Below is the example error message:
```
▶ ./bin/bob bio pipeline simple rfw-idiap arcface-insightface -vvv -o idiap_arcface
Warning: entry point could not be loaded. Contact its author for help.
Traceback (most recent call last):
File "/local/scratch/linghu/miniconda3/envs/bob.paper.frice2/lib/python3.8/site-packages/click_plugins/core.py", line 37, in decorator
group.add_command(entry_point.load())
File "/local/scratch/linghu/miniconda3/envs/bob.paper.frice2/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2450, in load
return self.resolve()
File "/local/scratch/linghu/miniconda3/envs/bob.paper.frice2/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2456, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/__init__.py", line 1, in <module>
from . import ( # noqa: F401
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/algorithm/__init__.py", line 1, in <module>
from .Algorithm import Algorithm
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/algorithm/Algorithm.py", line 10, in <module>
from .. import utils
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/utils/__init__.py", line 12, in <module>
from .io import * # noqa: F401,F403
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/utils/io.py", line 13, in <module>
from bob.bio.base import database
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/database/__init__.py", line 1, in <module>
from . import filelist # noqa: F401
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/database/filelist/__init__.py", line 2, in <module>
from .query import FileListBioDatabase
File "/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/database/filelist/query.py", line 10, in <module>
from .. import BioFile, ZTBioDatabase
ImportError: cannot import name 'BioFile' from partially initialized module 'bob.bio.base.database' (most likely due to a circular import) (/local/scratch/linghu/bob.bio.face/src/bob.bio.base/bob/bio/base/database/__init__.py)
```https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/151verify.py --create-configuration-file crashes for local file2021-05-19T17:10:10ZManuel Günthersiebenkopf@googlemail.comverify.py --create-configuration-file crashes for local fileWhen running
```
verify.py --create-configuration-file config.py
```
this crashes with the error:
```
File "miniconda/envs/bob/bin/verify.py", line 11, in <module>
sys.exit(main())
File "miniconda/envs/bob/lib/python3.7/site-p...When running
```
verify.py --create-configuration-file config.py
```
this crashes with the error:
```
File "miniconda/envs/bob/bin/verify.py", line 11, in <module>
sys.exit(main())
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/bio/base/script/verify.py", line 432, in main
args = parse_arguments(command_line_parameters)
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/bio/base/script/verify.py", line 34, in parse_arguments
skips = ['preprocessing', 'extractor-training', 'extraction', 'projector-training', 'projection', 'enroller-training', 'enrollment', 'score-computation', 'concatenation', 'calibration'])
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/bio/base/tools/command_line.py", line 425, in initialize
args = parse_config_file(parsers, args, args_dictionary, keywords, skips)
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/bio/base/tools/command_line.py", line 284, in parse_config_file
create_configuration_file(parsers, args)
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/bio/base/tools/command_line.py", line 578, in create_configuration_file
bob.io.base.create_directories_safe(os.path.dirname(args.create_configuration_file))
File "miniconda/envs/bob/lib/python3.7/site-packages/numpy/lib/utils.py", line 100, in newfunc
return func(*args, **kwds)
File "miniconda/envs/bob/lib/python3.7/site-packages/bob/io/base/__init__.py", line 104, in create_directories_safe
os.makedirs(directory, exist_ok=True)
File "miniconda/envs/bob/lib/python3.7/os.py", line 223, in makedirs
mkdir(name, mode)
FileNotFoundError: [Errno 2] No such file or directory: ''
```
The issue is that `bob.io.base.create_directories_safe(os.path.dirname(args.create_configuration_file))` is called without checking whether `os.path.dirname(args.create_configuration_file)` isn't empty.
There are two solutions to this issue:
1. We add this check here.
2. We correct this in `bob.io.base.create_directories_safe` and just skip empty strings.
Which option would you prefer?https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/134`check_existence` flag incorrectly handled in filelistdatabase query2020-06-03T08:58:06ZManuel Günthersiebenkopf@googlemail.com`check_existence` flag incorrectly handled in filelistdatabase queryIn https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/3efccd3b637ee73ec68ed0ac5fde2667a943bd6e/bob/bio/base/database/filelist/query.py#L833, the `check_existence` flag is said to be ignored when multiple original extensions are specified, w...In https://gitlab.idiap.ch/bob/bob.bio.base/-/blob/3efccd3b637ee73ec68ed0ac5fde2667a943bd6e/bob/bio/base/database/filelist/query.py#L833, the `check_existence` flag is said to be ignored when multiple original extensions are specified, while it is actually not ignored.
Also, when only a single extension is specified, the `check_existence` flag is tested incorrectly.Manuel Günthersiebenkopf@googlemail.comManuel Günthersiebenkopf@googlemail.comhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/132`numpy.testing.decorators.setastest` is no longer available in the latest `nu...2020-03-10T16:10:40ZManuel Günthersiebenkopf@googlemail.com`numpy.testing.decorators.setastest` is no longer available in the latest `numpy 1.18`Updating to `numpy` version 1.18 breaks this package as the import https://gitlab.idiap.ch/bob/bob.bio.base/blob/33b527af1418dff1812e2613d91f55b6e8ee61c8/bob/bio/base/database/database.py#L8 fails.
Workarounds:
1. Use `numpy` version 1....Updating to `numpy` version 1.18 breaks this package as the import https://gitlab.idiap.ch/bob/bob.bio.base/blob/33b527af1418dff1812e2613d91f55b6e8ee61c8/bob/bio/base/database/database.py#L8 fails.
Workarounds:
1. Use `numpy` version 1.17
2. Remove this import and its later use.
I have currently no solution how to replace the functionality of `numpy.testing.decorators.setastest`, though.Amir MOHAMMADIAmir MOHAMMADIhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/82Training breaks if filelist database has only 'norm' group2020-04-23T14:53:31ZPavel KORSHUNOVTraining breaks if filelist database has only 'norm' groupIf a filelist database has only training date inside 'norm' folder (of a given protocol) but does has neither 'dev' or 'eval', the `verify.py` script when used for training only, e.g., by running train_gmm.py, train_isv.py, or other deri...If a filelist database has only training date inside 'norm' folder (of a given protocol) but does has neither 'dev' or 'eval', the `verify.py` script when used for training only, e.g., by running train_gmm.py, train_isv.py, or other derivatives, will break in `uses_dense_probe_file()` function here:
https://gitlab.idiap.ch/bob/bob.bio.base/blob/master/bob/bio/base/database/filelist/query.py#L298
uses_dense_probe_file() assumes that there must be either 'dev' or 'eval' sets. But it may not be the case if we just want to train a UBM on the whole database (so we put all data inside 'norm').https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/79`Algorithm.read_probe` should not exist2017-08-07T13:07:35ZManuel Günthersiebenkopf@googlemail.com`Algorithm.read_probe` should not existThis is something that I had in mind when designing the `Algorithm`, but which I postponed far too long by now, and it regularly bites me:
In the `Algorithm`, the `read_probe` function should not exist. Instead, the according functions ...This is something that I had in mind when designing the `Algorithm`, but which I postponed far too long by now, and it regularly bites me:
In the `Algorithm`, the `read_probe` function should not exist. Instead, the according functions of the `Extractor.read_feature` or `Algorithm.read_feature` should be called instead. For model enrollment, this is already done: https://gitlab.idiap.ch/bob/bob.bio.base/blob/master/bob/bio/base/tools/algorithm.py#L247
For probes, I was too lazy to implement this correctly, and added an `Algorithm.read_probe` function instead. In most cases, this works as expected. But when data structures are more complex, then the algorithm needs to know, how to read the features. For example, in `bob.bio.face.algoritm.GaborJet`, the `read_probe` function: https://gitlab.idiap.ch/bob/bob.bio.face/blob/master/bob/bio/face/algorithm/GaborJet.py#L204
is an exact copy of the `bob.bio.face.extractor.GridGraph.read_feature` function: https://gitlab.idiap.ch/bob/bob.bio.face/blob/master/bob/bio/face/extractor/GridGraph.py#L221
The reason, why I was too lazy to implement it correctly is that during scoring, the probes are read in the innermost function: https://gitlab.idiap.ch/bob/bob.bio.base/blob/master/bob/bio/base/tools/scoring.py#L16 and I didn't want to pass the `reader` through all the function calls. Stupid me. Since now so many more packages have been written, which use the bad implementation, fixing this is a major issue:
* [x] Fix the scoring script to use the correct `reader`
* [x] Remove the `read_probe` from the `Algorithm` base class and all derived classes in all packages
* [x] Fix the `verify.py` script and all derived scripts to pass the `extractor` to the scoring function
* [ ] Check all the test cases and assure that `Algorithm.read_probe` is replaced with the according call to `Extractor.read_feature` or `Algorithm.read_feature`Manuel Günthersiebenkopf@googlemail.comManuel Günthersiebenkopf@googlemail.comhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/59strange behaviour when retrieving objects from bob.bio.base filelist database...2017-08-07T13:07:35ZGuillaume HEUSCHstrange behaviour when retrieving objects from bob.bio.base filelist database queryHi Guys,
In the objects method of query.py (bob.bio.database.filelist), I encountered something really strange when performing nosetests. As far as I can tell, there is a problem when the method is called two times with the same group...Hi Guys,
In the objects method of query.py (bob.bio.database.filelist), I encountered something really strange when performing nosetests. As far as I can tell, there is a problem when the method is called two times with the same groups and purposes arguments, but with a different protocol:
```python
assert len(db.objects(protocol='public_MC_NIR', groups='dev', purposes='probe')) == 500
assert len(db.objects(protocol='public_UD_NIR', groups='dev', purposes='probe')) == 1000
```
Running this, I get a value of 500 for both tests ... which corresponds to the value expected in the first test. And if I just change the order of the lines, I get a value of 1000 for both tests.
So, my guess is that something is not re-initialized properly (but I was not able to find it yet) ...Manuel Günthersiebenkopf@googlemail.comManuel Günthersiebenkopf@googlemail.comhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/56It is not possible to use PLDA in the current execution chain2017-08-07T13:07:35ZTiago de Freitas PereiraIt is not possible to use PLDA in the current execution chainIf I use PLDA on top of simple features (let's say LBP histograms) I got the following exception.
```
input_dimension = training_features[0].shape[1]
AttributeError: 'list' object has no attribute 'shape'
```
The execution chain provi...If I use PLDA on top of simple features (let's say LBP histograms) I got the following exception.
```
input_dimension = training_features[0].shape[1]
AttributeError: 'list' object has no attribute 'shape'
```
The execution chain provides to `bob.bio.base.algorithm.PLDA.train_enroller` the data organized by client (which is correct) in the following format:
```
[ [numpy.array],[numpy.array],[numpy.array]], # client1
[ [numpy.array],[numpy.array],[numpy.array] ], # client2
....
[ [numpy.array],[numpy.array],[numpy.array] ], # client n
```
The train_enroller **MUST** stack the features per client (like LDA does in https://gitlab.idiap.ch/bob/bob.bio.base/blob/master/bob/bio/base/algorithm/LDA.py#L151), but this is not being done.
I will implement something similar to the procedures implemented in the LDA.Tiago de Freitas PereiraTiago de Freitas Pereirahttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/53Some command line default options are not working2018-06-03T12:14:15ZTiago de Freitas PereiraSome command line default options are not workingThe `verify_gmm` and the 'train_gmm' scripts are not working anymore and the issue it is here in `bob.bio.base`
Basically the default option set for the `--algorithm`option is ignored and an exception is raised here (https://gitlab.idia...The `verify_gmm` and the 'train_gmm' scripts are not working anymore and the issue it is here in `bob.bio.base`
Basically the default option set for the `--algorithm`option is ignored and an exception is raised here (https://gitlab.idiap.ch/bob/bob.bio.base/blob/master/bob/bio/base/tools/command_line.py#L158).https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/52file-list database is not tested anymore2018-06-03T12:14:15ZManuel Günthersiebenkopf@googlemail.comfile-list database is not tested anymoreThere has been a test case in `bob/bio/base/test/dummy/filelist.py` that has been removed during the restructuring. This test case was not only testing the interface to the filelist database (which is now `bob.db.bio_filelist`), which is...There has been a test case in `bob/bio/base/test/dummy/filelist.py` that has been removed during the restructuring. This test case was not only testing the interface to the filelist database (which is now `bob.db.bio_filelist`), which is non-trivial, but it also served as an example, how to create a filelist database.
With the new database interface, do you think that there is an easy way to use your own (e.g. file list based) database with the `bob.bio` interface? Shall we re-add a generic `BioFileList` interface that would make it easy to simply add a user-database based on `bob.db.bio_filelist`?
At the end, there are still files left (inside https://gitlab.idiap.ch/bob/bob.bio.base/tree/master/bob/bio/base/test/data/atnt) that were used only in the old file-list database interface, which should either be revived, or removed.Pavel KORSHUNOVPavel KORSHUNOVhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/51--execute-only command line option does not work2018-06-03T12:14:15ZManuel Günthersiebenkopf@googlemail.com--execute-only command line option does not workThere is a small bug in the implementation of the `--execute-only` flag that disallows it to work.There is a small bug in the implementation of the `--execute-only` flag that disallows it to work.Manuel Günthersiebenkopf@googlemail.comManuel Günthersiebenkopf@googlemail.comhttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/22Tests are failing on Ubuntu 12.042018-06-03T12:14:17ZAndré AnjosTests are failing on Ubuntu 12.04*Created by: tiagofrepereira2012*
Unit tests are failing on Ubuntu 12.04 (https://gitlab.idiap.ch/biometric/bob.nightlies/builds/2968)
Basically the function `numpy.full` does not exists in numpy 1.6 (the default for the ubuntu 12.04)....*Created by: tiagofrepereira2012*
Unit tests are failing on Ubuntu 12.04 (https://gitlab.idiap.ch/biometric/bob.nightlies/builds/2968)
Basically the function `numpy.full` does not exists in numpy 1.6 (the default for the ubuntu 12.04). The function is available since numpy 1.8.
For example, I would suggest to replace the code
```
numpy.full((1,len(probes)), numpy.nan, numpy.float64)
```
to
```
numpy.ones((1,len(probes)), numpy.float64) * numpy.nan
```
https://gitlab.idiap.ch/bob/bob.bio.base/-/issues/16Distance.py using an undeclared variable2018-06-03T12:14:17ZAndré AnjosDistance.py using an undeclared variable*Created by: tiagofrepereira2012*
The commit e26e2727abbbf6fa1875215ace2b9e3e2edd85d3 is buggy.
It is using an undeclared variable.
Fix is on the way*Created by: tiagofrepereira2012*
The commit e26e2727abbbf6fa1875215ace2b9e3e2edd85d3 is buggy.
It is using an undeclared variable.
Fix is on the way