Skip to content

Commit

Permalink
[FIX] do not apply run found for one task to all tasks (#228)
Browse files Browse the repository at this point in the history
* fix not finding tasks when another task has a run entity

* do not apply to space

* update test

* pin antspyx

* update requirements.txt

* update requirements.txt
  • Loading branch information
Remi-Gau authored Aug 10, 2024
1 parent 0a42633 commit f04cb24
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 12 deletions.
11 changes: 6 additions & 5 deletions bidsmreye/bids_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
)
from bidsmreye.logging import bidsmreye_log
from bidsmreye.methods import methods
from bidsmreye.utils import copy_license, create_dir_if_absent
from bidsmreye.utils import copy_license, create_dir_if_absent, return_regex

log = bidsmreye_log("bidsmreye")

Expand Down Expand Up @@ -60,9 +60,10 @@ def check_layout(cfg: Config, layout: BIDSLayout, for_file: str = "bold") -> Non
if generated_by["Name"].lower() == "bidsmreye":
this_filter = get_bids_filter_config()["mask"]

this_filter["task"] = cfg.task
this_filter["task"] = return_regex(cfg.task)
this_filter["space"] = cfg.space
this_filter["run"] = cfg.run
if cfg.run:
this_filter["run"] = cfg.run

log.debug(f"Looking for files with filter\n{this_filter}")

Expand All @@ -78,8 +79,8 @@ def check_layout(cfg: Config, layout: BIDSLayout, for_file: str = "bold") -> Non
raise RuntimeError(
f"Input dataset {layout.root} does not have "
f"any data to process for filter\n{this_filter}.\n"
f"This dataset contains subjects: {subjects}."
f"This dataset contains tasks: {tasks}."
f"This dataset contains subjects: {subjects}.\n"
f"This dataset contains tasks: {tasks}.\n"
"Is your dataset a BIDS derivative dataset?\n"
"Check the FAQ for more information: "
"https://bidsmreye.readthedocs.io/en/latest/FAQ.html"
Expand Down
3 changes: 3 additions & 0 deletions bidsmreye/bidsmreye.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,17 @@ def dispatch(analysis_level: str, action: str, cfg: Config) -> None:

prepare_data(cfg)
generalize(cfg)

elif action == "prepare":
from bidsmreye.prepare_data import prepare_data

prepare_data(cfg)

elif action == "generalize":
from bidsmreye.generalize import generalize

generalize(cfg)

elif action == "qc":
from bidsmreye.quality_control import quality_control_input

Expand Down
19 changes: 14 additions & 5 deletions bidsmreye/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ def __attrs_post_init__(self) -> None:

self.check_argument(attribute="subjects", layout_in=layout_in)
self.check_argument(attribute="task", layout_in=layout_in)
self.check_argument(attribute="run", layout_in=layout_in)
self.check_argument(attribute="space", layout_in=layout_in)
self.check_argument(attribute="run", layout_in=layout_in)

def check_argument(self, attribute: str, layout_in: BIDSLayout) -> Config:
"""Check an attribute value compared to the input dataset content.
Expand All @@ -125,9 +125,15 @@ def check_argument(self, attribute: str, layout_in: BIDSLayout) -> Config:
if attribute == "subjects":
value = layout_in.get_subjects()
elif attribute == "task":
value = layout_in.get_tasks()
value = layout_in.get_tasks(subject=self.subjects)
elif attribute in {"space", "run"}:
value = layout_in.get(return_type="id", target=attribute, datatype="func")
value = layout_in.get(
return_type="id",
target=attribute,
datatype="func",
subject=self.subjects,
task=self.task,
)

self.listify(attribute)

Expand All @@ -148,9 +154,12 @@ def check_argument(self, attribute: str, layout_in: BIDSLayout) -> Config:
)
value = list(set(getattr(self, attribute)) & set(value))

setattr(self, attribute, value)

# run and space can be empty if their entity are not used
# we will figure out the values for run
# in subject / task wise manner later on
if attribute not in ["run"]:
setattr(self, attribute, value)

if attribute not in ["run", "space"] and not getattr(self, attribute):
raise RuntimeError(f"No {attribute} found in {self.input_dir}")

Expand Down
2 changes: 2 additions & 0 deletions docs/source/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

* [FIX] do not apply run found for one task to all tasks by @Remi-Gau in https://github.com/cpp-lln-lab/bidsMReye/pull/228

### Security


Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ dependencies = [
"kaleido",
"pooch>=1.6.0",
"pybids",
"antspyx<0.5",
"tqdm",
"tomli; python_version < '3.11'",
"keras<3.0.0",
Expand Down
6 changes: 5 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ absl-py==2.1.0
# tensorboard
# tensorflow
antspyx==0.4.2
# via deepmreye
# via
# bidsmreye (pyproject.toml)
# deepmreye
anyio==4.4.0
# via
# httpx
Expand Down Expand Up @@ -430,6 +432,8 @@ rfc3986-validator==0.1.1
# jsonschema
# jupyter-events
rich==13.7.1
# via rich-argparse
rich-argparse==1.5.2
# via bidsmreye (pyproject.toml)
rpds-py==0.19.1
# via
Expand Down
1 change: 0 additions & 1 deletion tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ def test_set_this_filter_bold(pybids_test_dataset, output_dir):
"datatype": "func",
"desc": "preproc",
"extension": "nii.*",
"run": "1|2",
"subject": "001",
"suffix": "^bold$",
}
Expand Down

0 comments on commit f04cb24

Please sign in to comment.