bob issueshttps://gitlab.idiap.ch/groups/bob/-/issues2020-07-22T14:24:52Zhttps://gitlab.idiap.ch/bob/bob.pipelines/-/issues/12Relative paths in filelist database causes issues in temp directory2020-07-22T14:24:52ZManuel Günthersiebenkopf@googlemail.comRelative paths in filelist database causes issues in temp directoryAs reported here: https://groups.google.com/forum/#!topic/bob-devel/ESl9AWyJmbA, when using a relative path including `..` in the file lists, there seem to be an issue in the temporary files. Indeed, `biofile.make_path` (see: https://git...As reported here: https://groups.google.com/forum/#!topic/bob-devel/ESl9AWyJmbA, when using a relative path including `..` in the file lists, there seem to be an issue in the temporary files. Indeed, `biofile.make_path` (see: https://gitlab.idiap.ch/bob/bob.db.base/blob/master/bob/db/base/file.py#L65) simply merges paths, which might end up in wrong paths when the `self.path` includes `..`.
I am not quite sure how to tackle this issue.https://gitlab.idiap.ch/bob/bob.pipelines/-/issues/11Mixin classes for sklearn estimators should not have an __init__ method2020-04-29T08:05:41ZAmir MOHAMMADIMixin classes for sklearn estimators should not have an __init__ methodI was thinking that we can get away with this but apparently we cannot. Because of the way that BaseEstimator handles params, providing an extra `__init__` method in mixins will break the estimator.
Here is an example:
```python
In [2]:...I was thinking that we can get away with this but apparently we cannot. Because of the way that BaseEstimator handles params, providing an extra `__init__` method in mixins will break the estimator.
Here is an example:
```python
In [2]: from sklearn.svm import SVC
...: from bob.pipelines.mixins import CheckpointMixin, SampleMixin
...: class CheckpointSampleSVC(CheckpointMixin, SampleMixin, SVC):
...: pass
...:
In [8]: original_estimator = SVC()
In [9]: original_estimator
Out[9]:
SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
In [10]: original_estimator.set_params(C=2)
Out[10]:
SVC(C=2, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
In [11]: checkpointing_sample_estimator = CheckpointSampleSVC()
In [12]: checkpointing_sample_estimator
Out[12]:
CheckpointSampleSVC(extension='.h5', features_dir=None,
load_func=<function load at 0x7f1ce85e5290>,
model_path=None,
save_func=<function save at 0x7f1ce85e53b0>)
In [13]: checkpointing_sample_estimator.set_params(C=2)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-13-bbed69696a06> in <module>
----> 1 checkpointing_sample_estimator.set_params(C=2)
conda/envs/dask/lib/python3.7/site-packages/sklearn/base.py in set_params(self, **params)
234 'Check the list of available parameters '
235 'with `estimator.get_params().keys()`.' %
--> 236 (key, self))
237
238 if delim:
ValueError: Invalid parameter C for estimator CheckpointSampleSVC(extension='.h5', features_dir=None,
load_func=<function load at 0x7f1ce85e5290>,
model_path=None,
save_func=<function save at 0x7f1ce85e53b0>). Check the list of available parameters with `estimator.get_params().keys()`.
```
`set_params` is important because it is used in classes like https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCVAmir MOHAMMADIAmir MOHAMMADIhttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/8Implementation of score normalization sets2020-12-22T08:27:43ZTiago de Freitas PereiraImplementation of score normalization setsHi @ydayer,
Following what we've discussed this morning.
This issue considers only the efforts that need to be done on the database side.
I think we need two methods in the `Database` class.
1. **zprobes**. This method needs to retu...Hi @ydayer,
Following what we've discussed this morning.
This issue considers only the efforts that need to be done on the database side.
I think we need two methods in the `Database` class.
1. **zprobes**. This method needs to return the same structure as returned by the method **probes**. A simple list of `SampleSet`. However, the samples need to be taken from the world set (we don't have data to split even more this set). Another thing, we need to have a kwarg called `percentage`, that will define the percentage of SampleSet this function will return (default to 1.).
2. **treferences**. This method needs to return the same structure as returned by the methods **references**. Again, a simple list of SampleSets, with all the samples from one identity inside.
Make sure that in the SampleSet you add all the metadata that are identity independent (gender, ethnicity,....).
Is this ok?
Thanks, and ping me if any issueYannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.pipelines/-/issues/10Conflicts ad eternum2020-04-17T12:31:42ZTiago de Freitas PereiraConflicts ad eternumHi guys,
I'm facing some problems with our CI and I need some light.
It's been a while that I'm having some enigmatic conflicts, check here one example.
https://gitlab.idiap.ch/bob/bob.pipelines/-/jobs/195496/raw
`bdt build` doesn't...Hi guys,
I'm facing some problems with our CI and I need some light.
It's been a while that I'm having some enigmatic conflicts, check here one example.
https://gitlab.idiap.ch/bob/bob.pipelines/-/jobs/195496/raw
`bdt build` doesn't work at all on the CI and on my computers.
I'm wondering if it's something with Numpy, because of this message at the logs:
```sh
Attempting to finalize metadata for bob.pipelines
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
Adding .* to spec 'numpy 1.16.6' to ensure satisfiability. Please consider putting {{ var_name }}.* or some relational operator (>/</>=/<=) on this spec in meta.yaml, or if req is also a build req, using {{ pin_compatible() }} jinja2 function instead. See https://conda.io/docs/user-guide/tasks/build-packages/variants.html#pinning-at-the-variant-level
WARNING conda_build.utils:ensure_valid_spec(1749): Adding .* to spec 'numpy 1.16.6' to ensure satisfiability. Please consider putting {{ var_name }}.* or some relational operator (>/</>=/<=) on this spec in meta.yaml, or if req is also a build req, using {{ pin_compatible() }} jinja2 function instead. See https://conda.io/docs/user-guide/tasks/build-packages/variants.html#pinning-at-the-variant-level
INFO:bob.devtools.scripts.build@2020-04-17 09:24:21,641: Building bob.pipelines-0.0.1b0-py37 (build: 12) for linux-64
INFO:bob.devtools.bootstrap@2020-04-17 09:24:21,641: environ["BOB_BUILD_NUMBER"] = 12
/scratch/builds/bob/bob.pipelines/miniconda/lib/python3.7/site-packages/conda_build/environ.py:427: UserWarning: The environment variable 'DOCSERVER' is being passed through with value 'http://www.idiap.ch'. If you are splitting build and test phases with --no-test, please ensure that this value is also set similarly at test time.
UserWarning
/scratch/builds/bob/bob.pipelines/miniconda/lib/python3.7/site-packages/conda_build/environ.py:427: UserWarning: The environment variable 'NOSE_EVAL_ATTR' is being passed through with value ''. If you are splitting build and test phases with --no-test, please ensure that this value is also set similarly at test time.
UserWarning
BUILD START: ['bob.pipelines-0.0.1b0-py37h9f5372d_12.conda']
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
```
However, if I try to install the `bob.pipelines` setup, everything works fine.
```sh
conda install bob-devel==2020.03.30 dask dask-jobqueue bob.extension bob.io.base -c https://www.idiap.ch/software/bob/conda/label/beta/ --dry-run
```
Can I have some light?
Thanks
ping @andre.anjos @amohammadihttps://gitlab.idiap.ch/bob/bob.db.morph/-/issues/1Is it operational?2020-05-22T16:51:53ZTiago de Freitas PereiraIs it operational?Hey @ydayer,
Is this database operational?
ThanksHey @ydayer,
Is this database operational?
Thankshttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/7Follow-up from "Added missing annotations in a new csv file"2020-04-17T07:30:46ZTiago de Freitas PereiraFollow-up from "Added missing annotations in a new csv file"If you can remove those too....
Thanks
The following discussion from !5 should be addressed:
- [ ] @tiago.pereira started a [discussion](https://gitlab.idiap.ch/bob/bob.db.meds/merge_requests/5#note_51143):
> Hey @ydayer,
> ...If you can remove those too....
Thanks
The following discussion from !5 should be addressed:
- [ ] @tiago.pereira started a [discussion](https://gitlab.idiap.ch/bob/bob.db.meds/merge_requests/5#note_51143):
> Hey @ydayer,
> Do you mind to remove this line.
>
> If you want extra verbosity, do `nosetest -svvv`
>
> thanksYannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/6Follow-up from "Added missing annotations in a new csv file"2020-04-17T07:30:47ZTiago de Freitas PereiraFollow-up from "Added missing annotations in a new csv file"Hey man,
If you can remove the commentaries, would be great
thanks
The following discussion from !5 should be addressed:
- [ ] @tiago.pereira started a [discussion](https://gitlab.idiap.ch/bob/bob.db.meds/merge_requests/5#note_51144)...Hey man,
If you can remove the commentaries, would be great
thanks
The following discussion from !5 should be addressed:
- [ ] @tiago.pereira started a [discussion](https://gitlab.idiap.ch/bob/bob.db.meds/merge_requests/5#note_51144):
> Remove those too.
> git is good in remembering things :-P
>
> ThanksYannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/5Annotations nan2020-04-16T16:24:48ZTiago de Freitas PereiraAnnotations nanHey @ydayer,
There are several annotations that are `NaN`
Check a snippet that shows some samples that are Nan in the world set
```python
>>> from bob.db.meds.database import Database
>>> db = Database(protocol="verification_fold1", o...Hey @ydayer,
There are several annotations that are `NaN`
Check a snippet that shows some samples that are Nan in the world set
```python
>>> from bob.db.meds.database import Database
>>> db = Database(protocol="verification_fold1", original_directory="")
>>> samples = [[i, x.key,x.annotations] for i,x in enumerate(db.background_model_samples())]
>>> print(samples[119])
[119, './data/ab/S200-01-t10_01.jpg', {'leye': (nan, nan), 'reye': (nan, nan)}]
>>> # Prining all samples that has Nan annotations
>>> print([[s[0],s[1]] for s in samples if numpy.isnan(s[2]['leye'][0])])
[[82, './data/ab/S131-01-t10_01.jpg'], [112, './data/ab/S180-01-t10_01.jpg'], [119, './data/ab/S200-01-t10_01.jpg'], [139, './data/ac/S237-01-t10_01.jpg'], [144, './data/ac/S245-01-t10_01.jpg'], [170, './data/ac/S290-01-t10_01.jpg'], [207, './data/ad/S362-01-t10_01.jpg']]
```
Do you have some time to look into that?
This invalidates all the experiments we've done so far :-(
Thankshttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/4Add Metadata into the samples2020-04-09T17:03:15ZTiago de Freitas PereiraAdd Metadata into the samplesHey @ydayer
Is it possible to add all the possible metadata in the samples?
For instance, here
https://gitlab.idiap.ch/bob/bob.db.meds/blob/master/bob/db/meds/database.py#L351
You could have amended the metadata from here direct in t...Hey @ydayer
Is it possible to add all the possible metadata in the samples?
For instance, here
https://gitlab.idiap.ch/bob/bob.db.meds/blob/master/bob/db/meds/database.py#L351
You could have amended the metadata from here direct in the samples: https://gitlab.idiap.ch/bob/bob.db.meds/blob/master/bob/db/meds/subject_metadata.csv
Like this:
```python
sets[subject].insert(
index=-1, # Insert at last position
item=DelayedSample(
load=functools.partial(
bob.io.image.load,
os.path.join(self.directory, path),
),
key=path,
subject=subject,
annotations=self._annotations(filename),
gender=GENDER,
ethnicity=ETHNICITY,
height=HEIGHT,
weight=WEIGHT,
pode=POSE,
```
This can be useful in the future.
For instance, we could craft a script that given a score file and a database,
we could do all the analysis we want without having to parse the score file.....
Can you add these metadata in the database if you have the time?
ThanksYannick DAYERYannick DAYERhttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/3Annotations2020-04-09T06:42:26ZTiago de Freitas PereiraAnnotationsHi @ydayer,
Why the annotations are shipped like this (https://gitlab.idiap.ch/bob/bob.db.meds/blob/master/bob/db/meds/database.py#L349):
```python
sets[subject].insert(
index=-1, # Insert at last position
...Hi @ydayer,
Why the annotations are shipped like this (https://gitlab.idiap.ch/bob/bob.db.meds/blob/master/bob/db/meds/database.py#L349):
```python
sets[subject].insert(
index=-1, # Insert at last position
item=DelayedSample(
load=functools.partial(
bob.io.image.load,
os.path.join(self.directory, path),
),
key=path,
subject=subject,
eyes=self.eyes_position(filename),
)
)
```
This could be done like this and avoid you to create the `Annotator` in the config file
```python
sets[subject].insert(
index=-1, # Insert at last position
item=DelayedSample(
load=functools.partial(
bob.io.image.load,
os.path.join(self.directory, path),
),
key=path,
subject=subject,
annotations={'reye':(r_y, r_x), 'leye':(l_y, l_x)}
)
)
```
Cheershttps://gitlab.idiap.ch/bob/bob.pipelines/-/issues/9SampleSet.insert not accepting DelayedSample objects as item2020-04-06T06:25:29ZYannick DAYERSampleSet.insert not accepting DelayedSample objects as itemIn [`bob/pipelines/sample.py`](https://gitlab.idiap.ch/bob/bob.pipelines/blob/master/bob/pipelines/sample.py#L78), in the `SampleSet` class, the `insert(self, index, item)` does not accept `DelayedSample` objects.
(Because of the test: ...In [`bob/pipelines/sample.py`](https://gitlab.idiap.ch/bob/bob.pipelines/blob/master/bob/pipelines/sample.py#L78), in the `SampleSet` class, the `insert(self, index, item)` does not accept `DelayedSample` objects.
(Because of the test: `if not isinstance(item, Sample):`.)
To solve:
- either make `DelayedSample` and `Sample` inherit from a `SampleBase` class,
- change the tests in `SampleSet.insert` to accept the base class an thus all Sample-like classes;
or:
- change the tests in `SampleSet.insert` to accept both `Sample` and `DelayedSample`.
(Could be the same with `__setitem__`.)Tiago de Freitas PereiraTiago de Freitas Pereirahttps://gitlab.idiap.ch/bob/bob.ip.tensorflow_extractor/-/issues/10Nightlies failing because of this package2020-04-03T12:20:20ZTiago de Freitas PereiraNightlies failing because of this packageLinux py36/py37
https://gitlab.idiap.ch/bob/bob.nightlies/-/jobs/194059/raw
https://gitlab.idiap.ch/bob/bob.nightlies/-/jobs/194059
Master branch
https://gitlab.idiap.ch/bob/bob.ip.tensorflow_extractor/pipelines/38691
Some weird conflic...Linux py36/py37
https://gitlab.idiap.ch/bob/bob.nightlies/-/jobs/194059/raw
https://gitlab.idiap.ch/bob/bob.nightlies/-/jobs/194059
Master branch
https://gitlab.idiap.ch/bob/bob.ip.tensorflow_extractor/pipelines/38691
Some weird conflicts that are very tricky to figure it out.
Installing all the dependencies in my miniconda (beta channel first) .... works
```
conda install python==3.7 setuptools bob.io.base bob.io.image bob.db.mnist bob.ip.color six numpy tensorflow==1.15 --dry-run
```https://gitlab.idiap.ch/bob/bob.devtools/-/issues/52Can't find this package on the beta channel2020-04-02T16:10:53ZTiago de Freitas PereiraCan't find this package on the beta channelHi guys,
This might be a stupid question, but I can't find this package on our beta channel via conda search.
```sh
$ conda search bob.devtools -c http://www.idiap.ch/software/bob/conda/label/beta
Loading channels: done
# Name ...Hi guys,
This might be a stupid question, but I can't find this package on our beta channel via conda search.
```sh
$ conda search bob.devtools -c http://www.idiap.ch/software/bob/conda/label/beta
Loading channels: done
# Name Version Build Channel
bob.devtools 0.1.2 py36h6b6bea4_0 software/bob/conda
bob.devtools 0.1.3 py36h6b6bea4_0 software/bob/conda
bob.devtools 0.1.4 py36h6b6bea4_0 software/bob/conda
bob.devtools 0.1.4 py37h6b6bea4_0 software/bob/conda
bob.devtools 0.1.5 py36h6b6bea4_0 software/bob/conda
bob.devtools 0.1.5 py37h6b6bea4_0 software/bob/conda
bob.devtools 0.1.6 py36h6b6bea4_0 software/bob/conda
bob.devtools 0.1.6 py37h6b6bea4_0 software/bob/conda
bob.devtools 1.0.0 py36ha12d1ad_0 software/bob/conda
bob.devtools 1.0.0 py37ha12d1ad_0 software/bob/conda
bob.devtools 1.0.1 py36h88c16f1_0 software/bob/conda
bob.devtools 1.0.1 py37h88c16f1_0 software/bob/conda
bob.devtools 1.0.2 py36h88c16f1_0 software/bob/conda
bob.devtools 1.0.2 py37h88c16f1_0 software/bob/conda
bob.devtools 1.0.3 py36h88c16f1_0 software/bob/conda
bob.devtools 1.0.3 py37h88c16f1_0 software/bob/conda
bob.devtools 1.0.4 py36h88c16f1_0 software/bob/conda
bob.devtools 1.0.4 py37h88c16f1_0 software/bob/conda
bob.devtools 1.0.5 py36h88c16f1_0 software/bob/conda
bob.devtools 1.0.5 py37h88c16f1_0 software/bob/conda
bob.devtools 2.0.0 py36h661208a_0 software/bob/conda
bob.devtools 2.0.0 py37h661208a_0 software/bob/conda
bob.devtools 2.0.1 py36h661208a_0 software/bob/conda
bob.devtools 2.0.1 py37h661208a_0 software/bob/conda
```
I even added on my `~/.condarc` just to test.
Didn't work
thanks for any insighthttps://gitlab.idiap.ch/bob/bob.pad.base/-/issues/33ERROR: Failure: TypeError (Can't instantiate abstract class TestDatabase with...2020-04-02T15:33:52ZAndré AnjosERROR: Failure: TypeError (Can't instantiate abstract class TestDatabase with abstract methods annotations)```
======================================================================
ERROR: Failure: TypeError (Can't instantiate abstract class TestDatabase with abstract methods annotations)
-----------------------------------------------------...```
======================================================================
ERROR: Failure: TypeError (Can't instantiate abstract class TestDatabase with abstract methods annotations)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/scratch/builds/bob/bob.nightlies/miniconda/conda-bld/bob.pad.base_1585423863782/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/nose/failure.py", line 39, in runTest
raise self.exc_val.with_traceback(self.tb)
File "/scratch/builds/bob/bob.nightlies/miniconda/conda-bld/bob.pad.base_1585423863782/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/nose/loader.py", line 522, in makeTest
return self._makeTest(obj, parent)
File "/scratch/builds/bob/bob.nightlies/miniconda/conda-bld/bob.pad.base_1585423863782/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/nose/loader.py", line 581, in _makeTest
return MethodTestCase(obj)
File "/scratch/builds/bob/bob.nightlies/miniconda/conda-bld/bob.pad.base_1585423863782/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pl/lib/python3.6/site-packages/nose/case.py", line 345, in __init__
self.inst = self.cls()
TypeError: Can't instantiate abstract class TestDatabase with abstract methods annotations
```Amir MOHAMMADIAmir MOHAMMADIhttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/2Create protocols2020-04-07T12:14:19ZTiago de Freitas PereiraCreate protocolsHey @ydayer,
As discussed previously, we need some verification protocols for this dataset.
Looking at the meds README (/i***p/r******e/database/MEDS/), there are two things that we can analyse in this dataset, the ethnicity aspect (ca...Hey @ydayer,
As discussed previously, we need some verification protocols for this dataset.
Looking at the meds README (/i***p/r******e/database/MEDS/), there are two things that we can analyse in this dataset, the ethnicity aspect (caucasian/black) and age.
Unfortunatelly, we don't have enough data for gender.
Would be nice to have 3 fold verification protocol containing **only men** AND **only black/caucasian** such that:
- [x] the `world` has all the samples that has only one image per identiy
- [x] the `dev` set has 50% of the images with more than one image per identiy
- [x] the `eval` set has 50% of the images with more than one image per identiy
- [x] for each fold you randomize the identities in the dev/eval set
Is it possible to carry this on?
Thanks
Cheershttps://gitlab.idiap.ch/bob/bob.ip.stereo/-/issues/1Pipelines are failing2020-07-21T07:55:13ZAnjith GEORGEanjith.george@idiap.chPipelines are failingVincent POLLETVincent POLLEThttps://gitlab.idiap.ch/bob/bob.db.meds/-/issues/1Access rights2020-03-27T10:30:14ZYannick DAYERAccess rightsHello,
Could you make me a maintainer of the project, so I can push to the master branch?
Thanks ;)Hello,
Could you make me a maintainer of the project, so I can push to the master branch?
Thanks ;)Tiago de Freitas PereiraTiago de Freitas Pereirahttps://gitlab.idiap.ch/bob/bob.bio.base/-/issues/133remove collect_results.py script2020-07-29T12:02:51ZAmir MOHAMMADIremove collect_results.py scriptSee https://groups.google.com/d/msgid/bob-devel/dc74b86e-5bd0-442b-88fb-654105541487%40googlegroups.com?utm_medium=email&utm_source=footerSee https://groups.google.com/d/msgid/bob-devel/dc74b86e-5bd0-442b-88fb-654105541487%40googlegroups.com?utm_medium=email&utm_source=footerAmir MOHAMMADIAmir MOHAMMADIhttps://gitlab.idiap.ch/bob/bob.pipelines/-/issues/8Follow-up from "WIP: Make scikit operations daskable"2020-05-05T07:39:23ZTiago de Freitas PereiraFollow-up from "WIP: Make scikit operations daskable"The following discussion from !5 should be addressed:
- [ ] @amohammadi started a [discussion](https://gitlab.idiap.ch/bob/bob.pipelines/merge_requests/5#note_50104): (+3 comments)
> All these dynamic object creation is going to m...The following discussion from !5 should be addressed:
- [ ] @amohammadi started a [discussion](https://gitlab.idiap.ch/bob/bob.pipelines/merge_requests/5#note_50104): (+3 comments)
> All these dynamic object creation is going to make debugging a hell, wouldn't it? Could you print a traceback here when something fails in sklearn estimator?https://gitlab.idiap.ch/bob/bob.pipelines/-/issues/7Follow-up from "WIP: Make scikit operations daskable"2020-05-05T07:39:10ZTiago de Freitas PereiraFollow-up from "WIP: Make scikit operations daskable"The following discussion from !5 should be addressed:
- [ ] @amohammadi started a [discussion](https://gitlab.idiap.ch/bob/bob.pipelines/merge_requests/5#note_50099): (+2 comments)
> `features_dir` was optional, please revert this.The following discussion from !5 should be addressed:
- [ ] @amohammadi started a [discussion](https://gitlab.idiap.ch/bob/bob.pipelines/merge_requests/5#note_50099): (+2 comments)
> `features_dir` was optional, please revert this.Tiago de Freitas PereiraTiago de Freitas Pereira