From 432f69abfd4260e87535690e84d651caf6ee3953 Mon Sep 17 00:00:00 2001 From: ljchang Date: Wed, 1 May 2024 14:48:18 -0400 Subject: [PATCH 1/5] updated new nilearn nv download --- nltools/datasets.py | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/nltools/datasets.py b/nltools/datasets.py index aff2f4c3..d65ca755 100644 --- a/nltools/datasets.py +++ b/nltools/datasets.py @@ -22,7 +22,13 @@ import os import pandas as pd from nltools.data import Brain_Data -from nilearn.datasets.utils import _get_dataset_dir, _fetch_file +import pkg_resources + +if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + from nilearn.datasets import fetch_neurovault_ids + from nilearn.datasets.utils import get_data_dirs +else: + from nilearn.datasets.utils import _get_dataset_dir, _fetch_file from pynv import Client # Optional dependencies @@ -128,10 +134,18 @@ def fetch_pain(data_dir=None, resume=True, verbose=1): collection = 504 dataset_name = "chang2015_pain" - data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) - metadata, files = download_collection( - collection=collection, data_dir=data_dir, resume=resume, verbose=verbose - ) + + if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + nv_data = fetch_neurovault_ids( + collection_ids=[collection], data_dir=data_dir, verbose=verbose + ) + files = nv_data["images"] + metadata = pd.DataFrame(nv_data["images_meta"]) + else: + data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) + metadata, files = download_collection( + collection=collection, data_dir=data_dir, resume=resume, verbose=verbose + ) return Brain_Data(data=files, X=metadata) @@ -148,8 +162,16 @@ def fetch_emotion_ratings(data_dir=None, resume=True, verbose=1): collection = 1964 dataset_name = "chang2015_emotion_ratings" - data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) - metadata, files = download_collection( - collection=collection, data_dir=data_dir, resume=resume, verbose=verbose - ) + + if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + nv_data = fetch_neurovault_ids( + collection_ids=[collection], data_dir=data_dir, verbose=verbose + ) + files = nv_data["images"] + metadata = pd.DataFrame(nv_data["images_meta"]) + else: + data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) + metadata, files = download_collection( + collection=collection, data_dir=data_dir, resume=resume, verbose=verbose + ) return Brain_Data(data=files, X=metadata) From 85067c8fb13d063b477e05f6ae94322243fe4b57 Mon Sep 17 00:00:00 2001 From: ljchang Date: Thu, 2 May 2024 11:40:01 -0400 Subject: [PATCH 2/5] added deprecation warning --- nltools/datasets.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nltools/datasets.py b/nltools/datasets.py index d65ca755..1659dd45 100644 --- a/nltools/datasets.py +++ b/nltools/datasets.py @@ -21,6 +21,7 @@ import os import pandas as pd +import warnings from nltools.data import Brain_Data import pkg_resources @@ -65,7 +66,9 @@ def get_collection_image_metadata(collection=None, data_dir=None, limit=10): Returns: pd.DataFrame: Dataframe with full image metadata from collection """ - + warnings.warn( + "This function is deprecated and will be removed in a future version. Please use fetch_neurovault_ids instead." + ) if os.path.isfile(os.path.join(data_dir, "metadata.csv")): dat = pd.read_csv(os.path.join(data_dir, "metadata.csv")) else: @@ -102,6 +105,9 @@ def download_collection( Returns: (pd.DataFrame, list): (DataFrame of image metadata, list of files from downloaded collection) """ + warnings.warn( + "This function is deprecated and will be removed in a future version. Please use fetch_neurovault_ids instead." + ) if data_dir is None: data_dir = _get_dataset_dir(str(collection), data_dir=data_dir, verbose=verbose) From 41219c5bb5adf5448b515a7bffb19eccbf9f35d7 Mon Sep 17 00:00:00 2001 From: Sam <119359217+srken32@users.noreply.github.com> Date: Thu, 1 Aug 2024 13:16:35 -0400 Subject: [PATCH 3/5] Pairwise distance metric keyword for stats.isc (#442) * added similarity metric keyword to stats.isc (defaults to correlation) * add description for sim_metric * Update stats.py --- nltools/stats.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nltools/stats.py b/nltools/stats.py index 7e93afbb..fec0415c 100644 --- a/nltools/stats.py +++ b/nltools/stats.py @@ -1943,6 +1943,7 @@ def isc( tail=2, n_jobs=-1, random_state=None, + sim_metric="correlation", ): """Compute pairwise intersubject correlation from observations by subjects array. @@ -1981,6 +1982,7 @@ def isc( tail: (int) either 1 for one-tail or 2 for two-tailed test (default: 2) n_jobs: (int) The number of CPUs to use to do the computation. -1 means all CPUs. return_null: (bool) Return the permutation distribution along with the p-value; default False + sim_metric: (str) pairwise distance metric. See sklearn's pairwise_distances for valid inputs (default: correlation) Returns: stats: (dict) dictionary of permutation results ['correlation','p'] @@ -2000,7 +2002,7 @@ def isc( stats = {"isc": _compute_isc(data, metric=metric)} similarity = Adjacency( - 1 - pairwise_distances(data.T, metric="correlation"), matrix_type="similarity" + 1 - pairwise_distances(data.T, metric=sim_metric), matrix_type="similarity" ) if method == "bootstrap": From fb504d926278dce497600c9dc088008b1cb03a63 Mon Sep 17 00:00:00 2001 From: ljchang Date: Wed, 1 May 2024 14:48:18 -0400 Subject: [PATCH 4/5] updated new nilearn nv download --- nltools/datasets.py | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/nltools/datasets.py b/nltools/datasets.py index aff2f4c3..d65ca755 100644 --- a/nltools/datasets.py +++ b/nltools/datasets.py @@ -22,7 +22,13 @@ import os import pandas as pd from nltools.data import Brain_Data -from nilearn.datasets.utils import _get_dataset_dir, _fetch_file +import pkg_resources + +if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + from nilearn.datasets import fetch_neurovault_ids + from nilearn.datasets.utils import get_data_dirs +else: + from nilearn.datasets.utils import _get_dataset_dir, _fetch_file from pynv import Client # Optional dependencies @@ -128,10 +134,18 @@ def fetch_pain(data_dir=None, resume=True, verbose=1): collection = 504 dataset_name = "chang2015_pain" - data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) - metadata, files = download_collection( - collection=collection, data_dir=data_dir, resume=resume, verbose=verbose - ) + + if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + nv_data = fetch_neurovault_ids( + collection_ids=[collection], data_dir=data_dir, verbose=verbose + ) + files = nv_data["images"] + metadata = pd.DataFrame(nv_data["images_meta"]) + else: + data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) + metadata, files = download_collection( + collection=collection, data_dir=data_dir, resume=resume, verbose=verbose + ) return Brain_Data(data=files, X=metadata) @@ -148,8 +162,16 @@ def fetch_emotion_ratings(data_dir=None, resume=True, verbose=1): collection = 1964 dataset_name = "chang2015_emotion_ratings" - data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) - metadata, files = download_collection( - collection=collection, data_dir=data_dir, resume=resume, verbose=verbose - ) + + if pkg_resources.get_distribution("nilearn").version >= "0.10.4": + nv_data = fetch_neurovault_ids( + collection_ids=[collection], data_dir=data_dir, verbose=verbose + ) + files = nv_data["images"] + metadata = pd.DataFrame(nv_data["images_meta"]) + else: + data_dir = _get_dataset_dir(dataset_name, data_dir=data_dir, verbose=verbose) + metadata, files = download_collection( + collection=collection, data_dir=data_dir, resume=resume, verbose=verbose + ) return Brain_Data(data=files, X=metadata) From 2e24674d6f2ecf0a09eb9f6855efaa5a2339ef2c Mon Sep 17 00:00:00 2001 From: ljchang Date: Thu, 2 May 2024 11:40:01 -0400 Subject: [PATCH 5/5] added deprecation warning --- nltools/datasets.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nltools/datasets.py b/nltools/datasets.py index d65ca755..1659dd45 100644 --- a/nltools/datasets.py +++ b/nltools/datasets.py @@ -21,6 +21,7 @@ import os import pandas as pd +import warnings from nltools.data import Brain_Data import pkg_resources @@ -65,7 +66,9 @@ def get_collection_image_metadata(collection=None, data_dir=None, limit=10): Returns: pd.DataFrame: Dataframe with full image metadata from collection """ - + warnings.warn( + "This function is deprecated and will be removed in a future version. Please use fetch_neurovault_ids instead." + ) if os.path.isfile(os.path.join(data_dir, "metadata.csv")): dat = pd.read_csv(os.path.join(data_dir, "metadata.csv")) else: @@ -102,6 +105,9 @@ def download_collection( Returns: (pd.DataFrame, list): (DataFrame of image metadata, list of files from downloaded collection) """ + warnings.warn( + "This function is deprecated and will be removed in a future version. Please use fetch_neurovault_ids instead." + ) if data_dir is None: data_dir = _get_dataset_dir(str(collection), data_dir=data_dir, verbose=verbose)