While following the README to figure out the usage, I noticed a few places that don't quite match my understanding. I may well be misreading something, so please correct me if I've got this wrong. As a note, this observation is based solely on speculation after reading the code, configuration files, and data/files.json, and has not been verified by actually executing the code.
As background, my understanding is that the model type is fixed in each script rather than chosen via the config (e.g., train_decoder_fastl2lir.py → FastL2LiR(), train_decoder_sklearn_ridge.py → Ridge(alpha=alpha)). With that in mind, here are the points I wanted to check.
1. The scikit-learn Ridge section seems to pass the PyFastL2LiR config
The prose appears to reference the sklearn config:
- README.md:53 —
train_decoder_sklearn_ridge.py
- README.md:56 — Example config:
config/deeprecon_sklearn_ridge_alpha100_vgg19_allunits.yaml
But the command examples (README.md:60 / :63 / :66) all seem to pass config/deeprecon_pyfastl2lir_alpha100_vgg19_allunits.yaml instead.
As I understand it, the output paths are named from the config via ${decoder.name} / ${decoded_feature.name}, so running it as written would write the Ridge results into the PyFastL2LiR-named directories. Also, if I run the PyFastL2LiR section first (as the README order suggests), the skip logic based on computation_status in info.yaml would seem to cause the sklearn training to be skipped entirely. Is this intentional, or were these commands meant to pass the sklearn config?
2. The sklearn config seems to point at different fMRI data than the README download step
The data setup in the README (README.md:26) suggests fmri_deeprecon_fmriprep_vc, which (as I read data/files.json) downloads sub-XX_ImageNetTraining_fmriprep_volume_native_vc.h5 (with the _vc suffix).
- The PyFastL2LiR config's
fmri.name is ..._native_vc (with _vc), which seems to match the downloaded data.
- The sklearn config's
fmri.name is ..._native (without _vc), which seems to refer to a different target (fmri_deeprecon_fmriprep) that the README steps don't download.
So even if the commands in (1) were changed to pass the sklearn config, it looks like the fMRI files wouldn't be found when the data is prepared per the documented steps. I might be overlooking something here too — could you let me know which dataset the sklearn config is intended to use?
3. The Cross-validation section description
At README.md:71:
Training: cv_train_decoder_fastl2lir.py (example for scikit-learn Ridge regression)
the parenthetical seems inconsistent with the actual cv_train_decoder_fastl2lir.py, which uses FastL2LiR(). I'm guessing it's a leftover from copying the README.md:53 description (apologies if I'm wrong). The rest of the CV section (the scripts existing, the config's cv: block, the command mapping) looked fine to me.
Summary
These are all based on my own understanding, so please point out anything I've misread. If a README fix seems reasonable, I'd be happy to open a PR.
While following the README to figure out the usage, I noticed a few places that don't quite match my understanding. I may well be misreading something, so please correct me if I've got this wrong. As a note, this observation is based solely on speculation after reading the code, configuration files, and
data/files.json, and has not been verified by actually executing the code.As background, my understanding is that the model type is fixed in each script rather than chosen via the config (e.g.,
train_decoder_fastl2lir.py→FastL2LiR(),train_decoder_sklearn_ridge.py→Ridge(alpha=alpha)). With that in mind, here are the points I wanted to check.1. The scikit-learn Ridge section seems to pass the PyFastL2LiR config
The prose appears to reference the sklearn config:
train_decoder_sklearn_ridge.pyconfig/deeprecon_sklearn_ridge_alpha100_vgg19_allunits.yamlBut the command examples (README.md:60 / :63 / :66) all seem to pass
config/deeprecon_pyfastl2lir_alpha100_vgg19_allunits.yamlinstead.As I understand it, the output paths are named from the config via
${decoder.name}/${decoded_feature.name}, so running it as written would write the Ridge results into the PyFastL2LiR-named directories. Also, if I run the PyFastL2LiR section first (as the README order suggests), the skip logic based oncomputation_statusininfo.yamlwould seem to cause the sklearn training to be skipped entirely. Is this intentional, or were these commands meant to pass the sklearn config?2. The sklearn config seems to point at different fMRI data than the README download step
The data setup in the README (README.md:26) suggests
fmri_deeprecon_fmriprep_vc, which (as I readdata/files.json) downloadssub-XX_ImageNetTraining_fmriprep_volume_native_vc.h5(with the_vcsuffix).fmri.nameis..._native_vc(with_vc), which seems to match the downloaded data.fmri.nameis..._native(without_vc), which seems to refer to a different target (fmri_deeprecon_fmriprep) that the README steps don't download.So even if the commands in (1) were changed to pass the sklearn config, it looks like the fMRI files wouldn't be found when the data is prepared per the documented steps. I might be overlooking something here too — could you let me know which dataset the sklearn config is intended to use?
3. The Cross-validation section description
At README.md:71:
the parenthetical seems inconsistent with the actual
cv_train_decoder_fastl2lir.py, which usesFastL2LiR(). I'm guessing it's a leftover from copying the README.md:53 description (apologies if I'm wrong). The rest of the CV section (the scripts existing, the config'scv:block, the command mapping) looked fine to me.Summary
These are all based on my own understanding, so please point out anything I've misread. If a README fix seems reasonable, I'd be happy to open a PR.