Skip to content

Commit

Permalink
change API
Browse files Browse the repository at this point in the history
  • Loading branch information
AliceJoubert committed Jun 3, 2024
1 parent fd88ee4 commit aad62bf
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 17 deletions.
9 changes: 2 additions & 7 deletions clinica/iotools/converters/adni_to_bids/adni_to_bids.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,20 +208,15 @@ def convert_images(
import clinica.iotools.converters.adni_to_bids.adni_modalities.adni_pib_pet as adni_pib
import clinica.iotools.converters.adni_to_bids.adni_modalities.adni_t1 as adni_t1
import clinica.iotools.converters.adni_to_bids.adni_modalities.adni_tau_pet as adni_tau
from clinica.iotools.converters.adni_to_bids.adni_utils import (
check_subjects_list,
define_subjects_list,
)
from clinica.iotools.converters.adni_to_bids.adni_utils import get_subjects_list
from clinica.utils.stream import cprint

modalities = modalities or self.get_modalities_supported()

if subjs_list_path:
subjs_list_path = Path(subjs_list_path)

subjs_list = check_subjects_list(
define_subjects_list(Path(source_dir), subjs_list_path), clinical_dir
)
subjs_list = get_subjects_list(Path(source_dir), subjs_list_path, clinical_dir)

# Create the output folder if is not already existing
os.makedirs(dest_dir, exist_ok=True)
Expand Down
18 changes: 14 additions & 4 deletions clinica/iotools/converters/adni_to_bids/adni_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def from_string(cls, study_name: str):
)


def define_subjects_list(
def _define_subjects_list(
source_dir: Path,
subjs_list_path: Optional[Path] = None,
) -> List[str]:
Expand All @@ -47,16 +47,16 @@ def define_subjects_list(
return list(filter(rgx.fullmatch, [folder.name for folder in source_dir.iterdir()]))


def check_subjects_list(
def _check_subjects_list(
subjs_list: List[str],
clinical_dir: str,
clinical_dir: Path,
) -> List[str]:
from copy import copy

from clinica.utils.stream import cprint

subjs_list_copy = copy(subjs_list)
adni_merge = load_clinical_csv(clinical_dir, "ADNIMERGE")
adni_merge = load_clinical_csv(str(clinical_dir), "ADNIMERGE")
# Check that there are no errors in subjs_list given by the user
for subj in subjs_list_copy:
adnimerge_subj = adni_merge[adni_merge.PTID == subj]
Expand All @@ -75,6 +75,16 @@ def check_subjects_list(
return subjs_list


def get_subjects_list(
source_dir: Path,
clinical_dir: Path,
subjs_list_path: Optional[Path] = None,
) -> List[str]:
return _check_subjects_list(
_define_subjects_list(source_dir, subjs_list_path), clinical_dir
)


def visits_to_timepoints(
subject,
mri_list_subj,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,27 @@
],
)
def test_define_subjects_list_directory(tmp_path, input, expected):
from clinica.iotools.converters.adni_to_bids.adni_utils import define_subjects_list
from clinica.iotools.converters.adni_to_bids.adni_utils import _define_subjects_list

source_dir = tmp_path / "source_dir"
source_dir.mkdir()

for subject in input:
(source_dir / subject).touch()

assert set(define_subjects_list(source_dir)) == expected
assert set(_define_subjects_list(source_dir)) == expected


def test_define_subjects_list_txt(tmp_path):
from clinica.iotools.converters.adni_to_bids.adni_utils import define_subjects_list
from clinica.iotools.converters.adni_to_bids.adni_utils import _define_subjects_list

source_dir = tmp_path / "source_dir"
subjs_list_path = tmp_path / "subjects_list.txt"
input = {"001_S_0001", "001_S_00022", "001S0003"}
with open(subjs_list_path, "w") as f:
f.write("\n".join(input))

assert set(define_subjects_list(source_dir, subjs_list_path)) == input
assert set(_define_subjects_list(source_dir, subjs_list_path)) == input


@pytest.mark.parametrize(
Expand All @@ -47,7 +47,7 @@ def test_define_subjects_list_txt(tmp_path):
],
)
def test_check_subjects_list(tmp_path, write_all, input, expected):
from clinica.iotools.converters.adni_to_bids.adni_utils import check_subjects_list
from clinica.iotools.converters.adni_to_bids.adni_utils import _check_subjects_list

clinical_dir = tmp_path / "clinical_dir"
clinical_dir.mkdir()
Expand All @@ -58,7 +58,7 @@ def test_check_subjects_list(tmp_path, write_all, input, expected):
adni_df = pd.DataFrame(columns=["PTID"], data=input)
adni_df.to_csv(clinical_dir / "ADNIMERGE.csv")

assert set(check_subjects_list(input, str(clinical_dir))) == expected
assert set(_check_subjects_list(input, clinical_dir)) == expected


@pytest.mark.parametrize(
Expand Down

0 comments on commit aad62bf

Please sign in to comment.