Frame-wise multi-echo distortion correction for superior functional MRI.
The 20 matches · 2 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
- [1] § Methods › Processing pipeline ↔ me_pipeline/params.py, lines 406–535 · score 0.93 · nuisance regression, FD threshold, Frame censoring, Bias field, N4, FSL
- [2] § Methods › Multi-echo distortion correction (MEDIC) › Temporal phase correction ↔ warpkit/unwrap.py, lines 495–579 · score 0.66 · ensure phase unwrapping, magnitude image, minimizes, correlation, temporal, frames
- [3] § Results › MEDIC dynamic distortion correction reduces the impact of head motion on functional connectivity estimates ↔ medic_analysis/scripts/paper_figures.py, lines 464–523 · score 0.63 · dorsolateral prefrontal cortex, seed map, low motion, DLPFC, exemplar, functional connectivity
- [4] § Methods › Processing pipeline ↔ tools/install_4dfp.sh, lines 89–139 · score 0.61 · step resampling, FSL, tools, MNI152, dfp, threshold
- [5] § Methods › Data acquisition › ABCD dataset ↔ me_pipeline/params.py, lines 406–535 · score 0.60 · frame censoring, nuisance, FSL, variables, filtered, motion
- [6] § Results › MEDIC distortion correction is superior on local and global anatomical alignment metrics ↔ medic_analysis/scripts/paper_figures.py, lines 1280–1402 · score 0.60 · T2w NMI, global metrics, T1w, correlation, alignment, TOPUP
- [7] § Results › MEDIC dynamic distortion correction improves functional connectivity in pediatric populations ↔ medic_analysis/scripts/paper_figures.py, lines 772–846 · score 0.59 · occipital cortex, Seed maps, functional connectivity, ABCD, distortion correction, dynamic
- [8] § Results › MEDIC frame-wise distortion correction produces superior anatomical alignment ↔ medic_analysis/scripts/paper_figures.py, lines 1094–1178 · score 0.58 · UMinn, WashU, MEDIC TOPUP, arrows, Penn, field maps
- [9] § Methods › Multi-echo distortion correction (MEDIC) ↔ warpkit/distortion.py, the whole file · a weak match · score 0.57 · undistorted space, phase images, reconstruction, field map, echo, MEDIC
- [10] § Methods › Multi-echo distortion correction (MEDIC) › Phase offset correction and unwrapping ↔ warpkit/distortion.py, the whole file · a weak match · score 0.55 · ROMEO algorithm, Phase unwrapping, echoes, MEDIC
- [11] § Results › MEDIC distortion correction is superior on local and global anatomical alignment metrics ↔ medic_analysis/scripts/paper_figures.py, lines 1280–1402 · score 0.55 · Segmentation metrics, alignment metric, AUC, spotlight, T2w, T1w
- [12] § Results › MEDIC distortion correction is superior on local and global anatomical alignment metrics ↔ medic_analysis/scripts/alignment_metrics.py, lines 128–210 · score 0.54 · normalized mutual information, alignment metric, gradient, spotlight, correlation, MEDIC
- [13] § Methods › Multi-echo distortion correction (MEDIC) › Phase offset correction and unwrapping ↔ warpkit/unwrap.py, lines 82–135 · score 0.54 · unwrapped phase, phase offset, MCPC, echoes
- [14] § Results › MEDIC dynamic distortion correction improves functional connectivity in pediatric populations ↔ medic_analysis/scripts/paper_figures.py, lines 772–846 · score 0.52 · occipital cortex, Seed maps, ABCD, dynamic, correlations, TOPUP
- [15] § Results › MEDIC distortion correction is superior on local and global anatomical alignment metrics ↔ medic_analysis/scripts/alignment_metrics.py, lines 128–210 · score 0.52 · normalized mutual information, NMI, metrics, gradient, correlation, alignment
- [16] § Methods › Multi-echo distortion correction (MEDIC) › Weighted field map computation ↔ warpkit/unwrap.py, lines 495–579 · score 0.52 · weighted linear regression, model, magnitude, voxels, echo, map
- [17] § Results › MEDIC dynamic distortion correction reduces the impact of head motion on functional connectivity estimates ↔ medic_analysis/scripts/paper_figures.py, lines 464–523 · score 0.52 · prefrontal cortex, low motion, DLPFC, Functional connectivity, distortion corrected, seeds
- [18] § Results › MEDIC captures magnetic field changes due to head motion ↔ medic_analysis/scripts/paper_figures.py, lines 1581–1706 · score 0.51 · motion parameters, head position, neutral, Rotation, field map, dynamic
- [19] § Results › MEDIC frame-wise distortion correction produces superior anatomical alignment ↔ medic_analysis/scripts/paper_figures.py, lines 1094–1178 · score 0.51 · UMinn, WashU, Penn, TOPUP, MEDIC
- [20] § Methods › Multi-echo distortion correction (MEDIC) › Displacement field inversion ↔ include/itk/itkModifiedInvertDisplacementFieldImageFilter.h, lines 44–179 · score 0.51 · Displacement field, ITK, inverted, inverse, space
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 1,752 lines · 61 KB · MIT · 9 matches
- """Main script for generating paper figures.
- See `paper_figures --help` for more information.
- """
- import argparse
- import json
- import os
- from pathlib import Path
- import matplotlib as mpl
- import matplotlib.patches as patches
- import matplotlib.pyplot as plt
- import nibabel as nib
- import numpy as np
- import pandas as pd
- import seaborn as sns
- from matplotlib.gridspec import GridSpec, GridSpecFromSubplotSpec
- from nilearn.plotting.cm import _cmap_d as nilearn_cmaps
- from PIL import Image
- from scipy.stats import ttest_rel
- from skimage.exposure import equalize_hist
- from medic_analysis.common.figures import data_plotter, hz_limits_to_mm, render_dynamic_figure
- from . import FIGURES_DIR, MM_TO_INCHES
- # Set global seaborn figure settings
- GLOBAL_SETTINGS = {
- "font": "Satoshi",
- "font_scale": 1,
- "palette": "pastel",
- "style": "white",
- "rc": {
- "figure.dpi": 150,
- "figure.titlesize": 7,
- "font.size": 7,
- "axes.titlesize": 6,
- "axes.titlepad": 0,
- "axes.labelsize": 6,
- "axes.labelpad": 0,
- "axes.linewidth": 0.5,
- "legend.title_fontsize": 6,
- "legend.fontsize": 6,
- "xtick.labelsize": 6,
- "xtick.major.pad": 1,
- "xtick.major.size": 1,
- "ytick.labelsize": 6,
- "ytick.major.pad": 1,
- "ytick.major.size": 1,
- "xtick.major.width": 0.5,
- "ytick.major.width": 0.5,
- "xtick.minor.width": 0.5,
- "ytick.minor.width": 0.5,
- },
- }
- sns.set_theme(**GLOBAL_SETTINGS)
- LOWER_FONT_SIZE = 5
- # Default paths for data
- DATA_DIR = Path(__file__).resolve().parent.parent.parent / "data"
- # Head position figure
- FIGURE1_DATA = "/home/usr/vana/GMT2/Andrew/HEADPOSITIONSUSTEST"
- # Concatenated head position figure
- FIGURE2_DATA = "/home/usr/vana/GMT2/Andrew/HEADPOSITIONCAT"
- # Group Template Analysis
- FIGURE3_DATA = str(DATA_DIR)
- # Alignment and Field map Comparison
- FIGURE4_DATA = str(DATA_DIR)
- # Spotlight Analysis figure
- FIGURE5_DATA = str(DATA_DIR)
- # Alignment metrics
- FIGURE6_DATA = str(DATA_DIR / "alignment_metrics.csv")
- # Field map metrics
- FIGURE7_DATA = str(DATA_DIR)
- # tSNR figure
- FIGURE10_DATA = str(DATA_DIR / "tsnr.csv")
- # dynamic field map videos
- FIGURE100_DATA = "/home/usr/vana/GMT2/Andrew/HEADPOSITIONSUSTEST/derivatives"
- AA_DATA_DIR = Path("/data/Daenerys/ASD_ADHD/NP1173/derivatives/me_pipeline2")
- WASHU_DATA_DIR = Path("/net/10.20.145.34/DOSENBACH02/GMT2/Andrew/SLICETEST/derivatives/me_pipeline")
- PENN_DATA_DIR = Path("/net/10.20.145.34/DOSENBACH02/GMT2/Andrew/UPenn/derivatives/me_pipeline")
- MINN_DATA_DIR = Path("/net/10.20.145.34/DOSENBACH02/GMT2/Andrew/UMinn/derivatives")
- MINN_DATA_DIR2 = Path("/data/nil-bluearc/GMT/Laumann/Pilot_ME_res/BIO10001/bids/derivatives/me_pipeline")
- def plot_box_plot(data, variable, label, ax):
- p = sns.color_palette("pastel")
- subdata = (
- data[[f"{variable}_medic", f"{variable}_topup"]]
- .rename(columns={f"{variable}_medic": "MEDIC", f"{variable}_topup": "TOPUP"})
- .melt(var_name=label)
- )
- sb = sns.boxplot(
- data=subdata,
- x="value",
- y=label,
- order=["MEDIC", "TOPUP"],
- ax=ax,
- fliersize=1,
- linewidth=0.5,
- palette=[p[1], p[0]],
- )
- sb.set_xlabel("")
- sb.set_ylabel(label)
- ax.tick_params(axis="x")
- ax.tick_params(axis="y")
- return sb
- def draw_seed(ax, x, y, radius=30, fc="black", ec="white", linewidth=1, zorder=3):
- dcoords = ax.transAxes.transform((x, y))
- ncoords = ax.transData.inverted().transform(dcoords)
- ax.add_patch(patches.Circle(ncoords, radius, fc=fc, ec=ec, linewidth=linewidth, zorder=zorder))
- def data_to_ax(ax, corrds):
- return ax.transAxes.inverted().transform(ax.transData.transform(corrds))
- def draw_arrow(ax, loc1, loc2, color="red", linewidth=1, head_width=2, head_length=4):
- dloc1 = ax.transAxes.transform(loc1)
- nloc1 = ax.transData.inverted().transform(dloc1)
- dloc2 = ax.transAxes.transform(loc2)
- nloc2 = ax.transData.inverted().transform(dloc2)
- ax.add_patch(
- patches.FancyArrowPatch(
- nloc1,
- nloc2,
- arrowstyle="-|>,head_width={},head_length={}".format(head_width, head_length),
- color=color,
- linewidth=linewidth,
- )
- )
- # figure 1
- def head_position_fieldmap(data):
- mpl.rcParams["axes.titlesize"] = 7
- # Get the data
- output_dir = Path(data) / "derivatives"
- raw_func_path = (
- Path("/home/usr/vana/GMT2/Andrew/HEADPOSITIONCAT")
- / "sub-MSCHD02"
- / "ses-01"
- / "func"
- / "sub-MSCHD02_ses-01_task-rest_run-01_echo-1_part-mag_bold.nii.gz"
- )
- # create a list of expected labels for each run
- labels = [
- "Neutral",
- "+Z Rotation",
- "-Z Rotation",
- "+X Rotation",
- "-X Rotation",
- "+Y Rotation",
- "-Y Rotation",
- "Neutral to +Z Rotation",
- "Neutral to -Z Rotation",
- "Neutral to +X Rotation",
- "Neutral to -X Rotation",
- "Neutral to +Y Rotation",
- "Neutral to -Y Rotation",
- "Neutral to -Z Translation",
- "-Z Translation",
- ]
- # indices for run
- static_head_position_run_idx = [0, 1, 2, 3, 4, 5, 6, 14]
- # load raw_func data
- raw_func = nib.load(raw_func_path)
- # Figure 1 - Head Rotation Data
- # load field map files
- medic_fieldmaps = Path(output_dir) / "fieldmaps" / "medic_aligned"
- # load topup field map in neutral position as reference
- topup_fieldmap = nib.load(Path(output_dir) / "fieldmaps" / "topup" / "run01" / "fout.nii.gz").get_fdata()
- # load static field map runs
- static_fieldmaps = []
- for idx in static_head_position_run_idx:
- run = idx + 1
- static_fieldmaps.append(nib.load(medic_fieldmaps / f"run{run:02d}" / "fmap.nii.gz").dataobj)
- # load mask
- mask = nib.load(Path(output_dir) / "references" / "me_epi_ref_bet_mask.nii.gz").get_fdata()
- # plot range
- vlims = (-50, 50)
- f_topup = plt.figure(figsize=(90 * MM_TO_INCHES, 30 * MM_TO_INCHES), layout="constrained")
- gsm = GridSpec(
- 1,
- 3,
- left=0.025,
- right=0.975,
- bottom=0.025,
- top=0.975,
- hspace=0.03,
- width_ratios=[72, 110, 110],
- )
- topup_fieldmap = topup_fieldmap
- fmin = topup_fieldmap.min()
- fmax = topup_fieldmap.max()
- axes_list = []
- for j in range(3):
- axes_list.append(f_topup.add_subplot(gsm[j]))
- data_plotter(
- [topup_fieldmap],
- vmin=fmin,
- vmax=fmax,
- colormaps="gray",
- figure=f_topup,
- axes_list=axes_list,
- )
- sbs = axes_list
- sbs[0].set_title(r"TOPUP field map for High motion data", pad=4, weight="normal", loc="left")
- f_topup.savefig(FIGURES_DIR / "topup_fmap.png", dpi=300)
- # plot static field maps
- f0 = plt.figure(figsize=(180 * MM_TO_INCHES, 130 * MM_TO_INCHES), layout="constrained")
- # grid spec for head motion images
- gsm = GridSpec(
- 3,
- 7,
- left=0.025,
- right=0.975,
- bottom=0.625,
- top=0.96,
- wspace=0.04,
- hspace=0.03,
- height_ratios=[110, 72, 72],
- )
- # plot movement data
- # get min max
- func_min = raw_func.dataobj[..., 0].min()
- func_max = raw_func.dataobj[..., 0].max()
- # create subplots from gridspec
- axes_list = []
- for i in range(7):
- for j in range(3):
- axes_list.append(f0.add_subplot(gsm[j, i]))
- # plot data
- data_plotter( # f0.suptitle("Motion-dependent field map differences (Position - Neutral Position)")
- [
- raw_func.dataobj[..., 50],
- raw_func.dataobj[..., 150],
- raw_func.dataobj[..., 250],
- raw_func.dataobj[..., 350],
- raw_func.dataobj[..., 450],
- raw_func.dataobj[..., 550],
- raw_func.dataobj[..., 650],
- ],
- vmin=func_min,
- vmax=func_max,
- colormaps="gray",
- figure=f0,
- axes_list=axes_list,
- )
- sbs = axes_list
- sbs[2].set_xlabel("50", labelpad=2)
- sbs[20].set_xlabel("650", labelpad=2)
- sbs[11].set_xlabel("Frame", labelpad=2)
- sbs[0].set_title(r"$\bf{a}$ Functional MRI timeseries: High motion", pad=4, weight="normal", loc="left")
- # draw arrow line
- f0.canvas.draw()
- start = sbs[2].xaxis.label.get_window_extent()
- middle = sbs[11].xaxis.label.get_window_extent()
- end = sbs[20].xaxis.label.get_window_extent()
- # transform to figure coordinates
- start = start.transformed(f0.transFigure.inverted())
- middle = middle.transformed(f0.transFigure.inverted())
- end = end.transformed(f0.transFigure.inverted())
- # get the midpoints
- start = np.average(start.get_points(), axis=0)
- middle = np.average(middle.get_points(), axis=0)
- end = np.average(end.get_points(), axis=0)
- arrow1 = patches.FancyArrowPatch(
- start + np.array([0.01, 0]),
- middle - np.array([0.02, 0]),
- arrowstyle="-",
- color="black",
- linewidth=0.5,
- )
- arrow2 = patches.FancyArrowPatch(
- middle + np.array([0.02, 0]),
- end - np.array([0.01, 0]),
- arrowstyle="-|>,head_width=2,head_length=4",
- color="black",
- linewidth=0.5,
- )
- f0.add_artist(arrow1)
- f0.add_artist(arrow2)
- # get bounding box of last image
- bbox = sbs[-1].get_window_extent()
- # transform to figure coordinates
- bbox = bbox.transformed(f0.transFigure.inverted())
- # create a grid spec for the figure
- bottom = 0.025
- top = 0.575
- left_edge_1 = 0.09
- right_edge_2 = bbox.x1
- pad = 0.02
- width = (right_edge_2 - left_edge_1 - pad) / 2
- right_edge_1 = left_edge_1 + width
- left_edge_2 = right_edge_1 + pad
- gs0 = GridSpec(1, 1, left=0.03, right=0.09, bottom=bottom, top=top)
- gs_bar = GridSpecFromSubplotSpec(1, 3, wspace=0, hspace=0, width_ratios=[2, 1, 6], subplot_spec=gs0[:, :])
- gs1 = GridSpec(
- 3,
- 3,
- left=left_edge_1,
- right=right_edge_1,
- bottom=bottom,
- top=top,
- hspace=0.025,
- wspace=0.025,
- width_ratios=[72, 110, 110],
- )
- gs2 = GridSpec(
- 3,
- 3,
- left=left_edge_2,
- right=right_edge_2,
- bottom=bottom,
- top=top,
- hspace=0.025,
- wspace=0.025,
- width_ratios=[72, 110, 110],
- )
- # create subplots
- cbar_ax = f0.add_subplot(gs_bar[1])
- axes_list = []
- for i in range(3):
- for j in range(3):
- axes_list.append(f0.add_subplot(gs1[i, j]))
- for j in range(3):
- axes_list.append(f0.add_subplot(gs2[i, j]))
- # plot the data
- data_plotter(
- [
- (static_fieldmaps[1][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- (static_fieldmaps[2][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- (static_fieldmaps[3][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- (static_fieldmaps[4][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- (static_fieldmaps[5][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- (static_fieldmaps[6][..., 0] - static_fieldmaps[0][..., 0]) * mask,
- ],
- colorbar=True,
- colorbar_alt_range=True,
- figure=f0,
- vmin=vlims[0],
- vmax=vlims[1],
- axes_list=axes_list,
- cbar_ax=cbar_ax,
- )
- sbs = axes_list
- sbs[0].set_title(r"$\bf{b}$ " + f"{labels[1]} (15.0 deg)", pad=4, weight="normal", loc="left")
- sbs[3].set_title(r"$\bf{c}$ " + f"{labels[2]} (9.8 deg)", pad=4, weight="normal", loc="left")
- sbs[6].set_title(r"$\bf{d}$ " + f"{labels[3]} (10.6 deg)", pad=4, weight="normal", loc="left")
- sbs[9].set_title(r"$\bf{e}$ " + f"{labels[4]} (13.7 deg)", pad=4, weight="normal", loc="left")
- sbs[12].set_title(r"$\bf{f}$ " + f"{labels[5]} (10.8 deg)", pad=4, weight="normal", loc="left")
- sbs[15].set_title(r"$\bf{g}$ " + f"{labels[6]} (8.6 deg)", pad=4, weight="normal", loc="left")
- f0.savefig(FIGURES_DIR / "fieldmap_differences.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure1.png").unlink(missing_ok=True)
- Path("figure1.png").symlink_to("fieldmap_differences.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 2
- def head_concatenation(data):
- # get dataset
- dataset = Path(data)
- # load medic and topup workbench screenshots
- medic_scan_path = dataset / "medic_scan.png"
- topup_scan_path = dataset / "topup_scan.png"
- truth_scan_path = dataset / "truth_scan.png"
- medic_dlpfc_path = dataset / "medic_dlpfc.png"
- topup_dlpfc_path = dataset / "topup_dlpfc.png"
- truth_dlpfc_path = dataset / "truth_dlpfc.png"
- medic_occipital_path = dataset / "medic_occipital.png"
- topup_occipital_path = dataset / "topup_occipital.png"
- truth_occipital_path = dataset / "truth_occipital.png"
- # load data
- clip1 = 50
- clip2 = 60
- clipy1 = 150
- clipy2 = 200
- medic_dlpfc = np.array(Image.open(medic_dlpfc_path))
- medic_dlpfc_left = medic_dlpfc[clipy1:-clipy2, clip1 : medic_dlpfc.shape[1] // 2 - clip2]
- medic_dlpfc_right = medic_dlpfc[clipy1:-clipy2, clip2 + medic_dlpfc.shape[1] // 2 : -clip1]
- medic_dlpfc = np.concatenate([medic_dlpfc_left, medic_dlpfc_right], axis=1)
- topup_dlpfc = np.array(Image.open(topup_dlpfc_path))
- topup_dlpfc_left = topup_dlpfc[clipy1:-clipy2, clip1 : topup_dlpfc.shape[1] // 2 - clip2]
- topup_dlpfc_right = topup_dlpfc[clipy1:-clipy2, clip2 + topup_dlpfc.shape[1] // 2 : -clip1]
- topup_dlpfc = np.concatenate([topup_dlpfc_left, topup_dlpfc_right], axis=1)
- truth_dlpfc = np.array(Image.open(truth_dlpfc_path))
- truth_dlpfc_left = truth_dlpfc[clipy1:-clipy2, clip1 : truth_dlpfc.shape[1] // 2 - clip2]
- truth_dlpfc_right = truth_dlpfc[clipy1:-clipy2, clip2 + truth_dlpfc.shape[1] // 2 : -clip1]
- truth_dlpfc = np.concatenate([truth_dlpfc_left, truth_dlpfc_right], axis=1)
- medic_occipital = np.array(Image.open(medic_occipital_path))
- medic_occipital_left = medic_occipital[clipy1:-clipy2, clip1 : medic_occipital.shape[1] // 2 - clip2]
- medic_occipital_right = medic_occipital[clipy1:-clipy2, clip2 + medic_occipital.shape[1] // 2 : -clip1]
- medic_occipital = np.concatenate([medic_occipital_left, medic_occipital_right], axis=1)
- topup_occipital = np.array(Image.open(topup_occipital_path))
- topup_occipital_left = topup_occipital[clipy1:-clipy2, clip1 : topup_occipital.shape[1] // 2 - clip2]
- topup_occipital_right = topup_occipital[clipy1:-clipy2, clip2 + topup_occipital.shape[1] // 2 : -clip1]
- topup_occipital = np.concatenate([topup_occipital_left, topup_occipital_right], axis=1)
- truth_occipital = np.array(Image.open(truth_occipital_path))
- truth_occipital_left = truth_occipital[clipy1:-clipy2, clip1 : truth_occipital.shape[1] // 2 - clip2]
- truth_occipital_right = truth_occipital[clipy1:-clipy2, clip2 + truth_occipital.shape[1] // 2 : -clip1]
- truth_occipital = np.concatenate([truth_occipital_left, truth_occipital_right], axis=1)
- medic_scan = np.array(Image.open(medic_scan_path))
- medic_scan_left = medic_scan[clipy1:-clipy2, clip1 : medic_scan.shape[1] // 2 - clip2]
- medic_scan_right = medic_scan[clipy1:-clipy2, clip2 + medic_scan.shape[1] // 2 : -clip1]
- medic_scan = np.concatenate([medic_scan_left, medic_scan_right], axis=1)
- topup_scan = np.array(Image.open(topup_scan_path))
- topup_scan_left = topup_scan[clipy1:-clipy2, clip1 : topup_scan.shape[1] // 2 - clip2]
- topup_scan_right = topup_scan[clipy1:-clipy2, clip2 + topup_scan.shape[1] // 2 : -clip1]
- topup_scan = np.concatenate([topup_scan_left, topup_scan_right], axis=1)
- truth_scan = np.array(Image.open(truth_scan_path))
- truth_scan_left = truth_scan[clipy1:-clipy2, clip1 : truth_scan.shape[1] // 2 - clip2]
- truth_scan_right = truth_scan[clipy1:-clipy2, clip2 + truth_scan.shape[1] // 2 : -clip1]
- truth_scan = np.concatenate([truth_scan_left, truth_scan_right], axis=1)
- # create a figure
- f = plt.figure(figsize=(180 * MM_TO_INCHES, 100 * MM_TO_INCHES), layout="constrained")
- # create gridspec
- gs = GridSpec(
- 3,
- 4,
- left=0.005,
- right=0.995,
- bottom=0.005,
- top=0.975,
- wspace=0.15,
- hspace=0.01,
- width_ratios=[9, 9, 1, 9],
- )
- gs_cbar = GridSpecFromSubplotSpec(
- 3,
- 3,
- wspace=0,
- hspace=0,
- width_ratios=[3, 2, 7],
- height_ratios=[1, 20, 1],
- subplot_spec=gs[:, 2],
- )
- # plot images
- mpl.rcParams["axes.edgecolor"] = "white"
- ax_medic_dlpfc = f.add_subplot(gs[0, 0])
- ax_medic_dlpfc.imshow(medic_dlpfc)
- draw_seed(ax_medic_dlpfc, x=0.13, y=0.62)
- ax_medic_dlpfc.set_xticks([])
- ax_medic_dlpfc.set_yticks([])
- ax_medic_dlpfc.set_title("MEDIC: Dynamic distortion correction", pad=6, loc="center")
- medic_title_pos = ax_medic_dlpfc.transAxes.inverted().transform(ax_medic_dlpfc.title.get_window_extent())
- ax_medic_dlpfc.text(
- 0.5,
- 1,
- "Exemplar participant",
- ha="center",
- va="center",
- fontsize=5,
- transform=ax_medic_dlpfc.transAxes,
- )
- ax_medic_dlpfc.set_xlabel("Correlation to standard: r = 0.41", labelpad=2)
- ax_topup_dlpfc = f.add_subplot(gs[0, 1])
- ax_topup_dlpfc.imshow(topup_dlpfc)
- draw_seed(ax_topup_dlpfc, x=0.13, y=0.62)
- ax_topup_dlpfc.set_xticks([])
- ax_topup_dlpfc.set_yticks([])
- ax_topup_dlpfc.set_title("TOPUP: Static distortion correction", pad=6, loc="center")
- topup_title_pos = ax_topup_dlpfc.transAxes.inverted().transform(ax_topup_dlpfc.title.get_window_extent())
- ax_topup_dlpfc.text(
- 0.5,
- 1,
- "Exemplar participant",
- ha="center",
- va="center",
- fontsize=5,
- transform=ax_topup_dlpfc.transAxes,
- )
- ax_topup_dlpfc.set_xlabel("Correlation to standard: r = 0.18", labelpad=2)
- ax_truth_dlpfc = f.add_subplot(gs[0, 3])
- ax_truth_dlpfc.imshow(truth_dlpfc)
- draw_seed(ax_truth_dlpfc, x=0.13, y=0.62)
- ax_truth_dlpfc.set_xticks([])
- ax_truth_dlpfc.set_yticks([])
- ax_truth_dlpfc.set_title("Standard: Low motion (TOPUP: static)", pad=6, loc="center")
- truth_title_pos = ax_truth_dlpfc.transAxes.inverted().transform(ax_truth_dlpfc.title.get_window_extent())
- ax_truth_dlpfc.text(
- 0.5,
- 1,
- "Exemplar participant",
- ha="center",
- va="center",
- fontsize=5,
- transform=ax_truth_dlpfc.transAxes,
- )
- ax_pos = ax_medic_dlpfc.get_position()
- f.text(
- ax_pos.x0,
- ax_pos.y1 + 0.06,
- r"$\bf{a}$ Functional connectivity (FC) seed maps: Dorsolateral prefrontal cortex (DLPFC)",
- ha="left",
- va="center",
- )
- ax_medic_occiptal = f.add_subplot(gs[1, 0])
- ax_medic_occiptal.imshow(medic_occipital)
- draw_seed(ax_medic_occiptal, x=0.44, y=0.32)
- ax_medic_occiptal.set_xticks([])
- ax_medic_occiptal.set_yticks([])
- ax_medic_occiptal.set_xlabel("Correlation to standard: r = 0.53", labelpad=2)
- f.text(
- medic_title_pos[0, 0],
- medic_title_pos[0, 1],
- "MEDIC",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_medic_occiptal.transAxes,
- )
- ax_topup_occipital = f.add_subplot(gs[1, 1])
- ax_topup_occipital.imshow(topup_occipital)
- draw_seed(ax_topup_occipital, x=0.44, y=0.32)
- ax_topup_occipital.set_xticks([])
- ax_topup_occipital.set_yticks([])
- ax_topup_occipital.set_xlabel("Correlation to standard: r = 0.38", labelpad=2)
- f.text(
- topup_title_pos[0, 0],
- topup_title_pos[0, 1],
- "TOPUP",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_topup_occipital.transAxes,
- )
- ax_truth_occipital = f.add_subplot(gs[1, 3])
- ax_truth_occipital.imshow(truth_occipital)
- draw_seed(ax_truth_occipital, x=0.44, y=0.32)
- ax_truth_occipital.set_xticks([])
- ax_truth_occipital.set_yticks([])
- f.text(
- truth_title_pos[0, 0],
- truth_title_pos[0, 1],
- "Standard",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_truth_occipital.transAxes,
- )
- ax_pos = ax_medic_occiptal.get_position()
- f.text(
- ax_pos.x0,
- ax_pos.y1 + 0.06,
- r"$\bf{b}$ Functional connectivity (FC) seed maps: Occipital cortex (extrastriate visual)",
- ha="left",
- va="center",
- )
- ax_medic_scan = f.add_subplot(gs[2, 0])
- ax_medic_scan.imshow(medic_scan)
- draw_seed(ax_medic_scan, x=0.20, y=0.37)
- ax_medic_scan.set_xticks([])
- ax_medic_scan.set_yticks([])
- ax_medic_scan.set_xlabel("Correlation to standard: r = 0.23", labelpad=2)
- f.text(
- medic_title_pos[0, 0],
- medic_title_pos[0, 1],
- "MEDIC",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_medic_scan.transAxes,
- )
- ax_topup_scan = f.add_subplot(gs[2, 1])
- ax_topup_scan.imshow(topup_scan)
- draw_seed(ax_topup_scan, x=0.20, y=0.37)
- ax_topup_scan.set_xticks([])
- ax_topup_scan.set_yticks([])
- ax_topup_scan.set_xlabel("Correlation to standard: r = 0.18", labelpad=2)
- f.text(
- topup_title_pos[0, 0],
- topup_title_pos[0, 1],
- "TOPUP",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_topup_scan.transAxes,
- )
- ax_truth_scan = f.add_subplot(gs[2, 3])
- ax_truth_scan.imshow(truth_scan)
- draw_seed(ax_truth_scan, x=0.20, y=0.37)
- ax_truth_scan.set_xticks([])
- ax_truth_scan.set_yticks([])
- f.text(
- truth_title_pos[0, 0],
- truth_title_pos[0, 1],
- "Standard",
- ha="left",
- va="bottom",
- fontsize=6,
- transform=ax_truth_scan.transAxes,
- )
- ax_pos = ax_medic_scan.get_position()
- f.text(
- ax_pos.x0,
- ax_pos.y1 + 0.06,
- r"$\bf{c}$ Functional connectivity (FC) seed maps: Somato-cognitive action network (SCAN)",
- ha="left",
- va="center",
- )
- mpl.rcParams["axes.edgecolor"] = "black"
- # create colorbar
- cbar_ax = f.add_subplot(gs_cbar[1, 1])
- pl = cbar_ax.imshow(
- np.array([[-0.6, 0.6], [0.6, -0.6]]),
- vmin=-0.6,
- vmax=0.6,
- aspect="auto",
- cmap=nilearn_cmaps["roy_big_bl"],
- )
- cbar = f.colorbar(
- mappable=pl,
- cax=cbar_ax,
- location="left",
- orientation="vertical",
- ticks=[-0.6, -0.3, 0, 0.3, 0.6],
- )
- cbar.ax.yaxis.set_ticks_position("right")
- cbar.ax.invert_yaxis()
- # create axis for colorbar
- cbar.ax.set_ylabel("Functional Connectivity z(r)", labelpad=2)
- # # for computing correlations
- # # load dconn data for medic and topup
- # low_dconn = nib.load(
- # Path("/net/10.20.145.34/DOSENBACH02/GMT2/Andrew/HEADPOSITIONCAT/Pilot_ME_res/cifti_correlation_concat")
- # / "MSCHD02_10run_concat_ME_MNI152_T1_2mm_Swgt_norm_bpss_resid_LR_surf_subcort_32k_fsLR_brainstem_smooth1.7_corr.dconn.nii" # noqa
- # )
- # medic_dconn = nib.load(
- # dataset
- # / "derivatives"
- # / "me_pipeline"
- # / "sub-MSCHD02"
- # / "ses-01wNEWPROC"
- # / "cifti_correlation"
- # / "sub-MSCHD02_b1_MNI152_T1_2mm_Swgt_norm_bpss_resid_LR_surf_subcort_32k_fsLR_brainstem_surfsmooth1.7_subcortsmooth1.7.dconn.nii" # noqa
- # )
- # topup_dconn = nib.load(
- # dataset
- # / "derivatives"
- # / "me_pipeline"
- # / "sub-MSCHD02"
- # / "ses-01wTOPUP"
- # / "cifti_correlation"
- # / "sub-MSCHD02_b1_MNI152_T1_2mm_Swgt_norm_bpss_resid_LR_surf_subcort_32k_fsLR_brainstem_surfsmooth1.7_subcortsmooth1.7.dconn.nii" # noqa
- # )
- # # get the lower triangle of the dconn data
- # print("Loading dconn data...")
- # low_dconn_data = low_dconn.dataobj[:59412, :59412][np.tril_indices(59412)]
- # medic_dconn_data = medic_dconn.dataobj[:59412, :59412][np.tril_indices(59412)]
- # topup_dconn_data = topup_dconn.dataobj[:59412, :59412][np.tril_indices(59412)]
- # # remove nans
- # low_dconn_data[np.isnan(low_dconn_data)] = 0
- # medic_dconn_data[np.isnan(medic_dconn_data)] = 0
- # topup_dconn_data[np.isnan(topup_dconn_data)] = 0
- # print("Done.")
- # # compute correlations
- # print("Computing correlations...")
- # medic_corr = pearsonr(low_dconn_data, medic_dconn_data)
- # print(medic_corr)
- # topup_corr = pearsonr(low_dconn_data, topup_dconn_data)
- # print(topup_corr)
- # print("Done.")
- f.savefig(FIGURES_DIR / "head_position_concat.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure2.png").unlink(missing_ok=True)
- Path("figure2.png").symlink_to("head_position_concat.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 3
- def group_template_comparison(data):
- aa_dir = Path(data)
- with open(aa_dir / "paircorr.json", "r") as f:
- data = json.load(f)
- # convert to dataframe
- df = pd.DataFrame(data)
- medic_similarities = df.MEDIC.to_numpy()
- topup_similarities = df.TOPUP.to_numpy()
- # get where medic is better and topup is better
- medic_better = medic_similarities > topup_similarities
- topup_better = medic_similarities < topup_similarities
- # get similarities where medic is better and topup is better
- medic_better_similarities_medic = medic_similarities[medic_better]
- topup_better_similarities_medic = topup_similarities[medic_better]
- medic_better_similarities_topup = medic_similarities[topup_better]
- topup_better_similarities_topup = topup_similarities[topup_better]
- # make figure
- f = plt.figure(figsize=(180 * MM_TO_INCHES, 128 * MM_TO_INCHES), layout="constrained")
- # create grid specs
- gs = GridSpec(
- 1,
- 5,
- left=0.005,
- right=0.995,
- bottom=0.505,
- top=0.995,
- wspace=0.075,
- hspace=0,
- width_ratios=[9, 1, 9, 1, 9],
- )
- gs_cbar = GridSpecFromSubplotSpec(
- 3,
- 3,
- wspace=0,
- hspace=0,
- width_ratios=[2, 1, 6],
- height_ratios=[2, 5, 2],
- subplot_spec=gs[3],
- )
- gs_bot = GridSpec(
- 1,
- 2,
- left=0.04,
- right=0.96,
- bottom=0.03,
- top=0.47,
- wspace=0.25,
- hspace=0.1,
- width_ratios=[1, 2],
- )
- gs_tstat = GridSpecFromSubplotSpec(1, 2, wspace=0.075, hspace=0, width_ratios=[9, 1], subplot_spec=gs_bot[1])
- gs_tstat_cbar = GridSpecFromSubplotSpec(
- 3,
- 3,
- wspace=0,
- hspace=0,
- width_ratios=[3, 1, 9],
- height_ratios=[1, 10, 1],
- subplot_spec=gs_tstat[1],
- )
- # plot surfaces
- clip_1 = 145
- clip_2 = 145
- medic_occipital_path = DATA_DIR / "medic_occipital_20008.png"
- medic_occipital = np.array(Image.open(medic_occipital_path))
- medic_occipital_left = medic_occipital[:, clip_1 : medic_occipital.shape[1] // 2 - clip_2]
- medic_occipital_right = medic_occipital[:, clip_2 + medic_occipital.shape[1] // 2 : -clip_1]
- medic_occipital = np.concatenate((medic_occipital_left, medic_occipital_right), axis=1)
- topup_occipital_path = DATA_DIR / "topup_occipital_20008.png"
- topup_occipital = np.array(Image.open(topup_occipital_path))
- topup_occipital_left = topup_occipital[:, clip_1 : topup_occipital.shape[1] // 2 - clip_2]
- topup_occipital_right = topup_occipital[:, clip_2 + topup_occipital.shape[1] // 2 : -clip_1]
- topup_occipital = np.concatenate((topup_occipital_left, topup_occipital_right), axis=1)
- group_template_abcd_path = DATA_DIR / "group_abcd_template_surface.png"
- group_template_abcd = np.array(Image.open(group_template_abcd_path))
- group_template_abcd_left = group_template_abcd[:, clip_1 : group_template_abcd.shape[1] // 2 - clip_2]
- group_template_abcd_right = group_template_abcd[:, clip_2 + group_template_abcd.shape[1] // 2 : -clip_1]
- group_template_abcd = np.concatenate((group_template_abcd_left, group_template_abcd_right), axis=1)
- mpl.rcParams["axes.edgecolor"] = "white"
- mpl.rcParams["font.size"] = 6
- axl_medic = f.add_subplot(gs[0])
- axl_topup = f.add_subplot(gs[2])
- axl_group = f.add_subplot(gs[4])
- axl_medic.imshow(medic_occipital)
- draw_seed(axl_medic, x=0.48, y=0.7)
- axl_medic.set_xticks([])
- axl_medic.set_yticks([])
- axl_medic.set_xlabel("Correlation to standard: r = 0.44", labelpad=6)
- axl_medic.set_title("MEDIC: Dynamic distortion correction", pad=6)
- axl_medic.text(0.5, 0.5, "Participant 1", ha="center", va="center", transform=axl_medic.transAxes)
- axl_topup.imshow(topup_occipital)
- draw_seed(axl_topup, x=0.48, y=0.7)
- axl_topup.set_xticks([])
- axl_topup.set_yticks([])
- axl_topup.set_xlabel("Correlation to standard: r = 0.04", labelpad=6)
- axl_topup.set_title("TOPUP: Static distortion correction", pad=6)
- axl_topup.text(0.5, 0.5, "Participant 1", ha="center", va="center", transform=axl_topup.transAxes)
- axl_group.imshow(group_template_abcd)
- draw_seed(axl_group, x=0.48, y=0.7)
- axl_group.set_xticks([])
- axl_group.set_yticks([])
- axl_group.set_title("Group-averaged standard (TOPUP: static)", pad=6)
- axl_group.text(0.5, 0.5, "ABCD (N = 3,928)", ha="center", va="center", transform=axl_group.transAxes)
- axl_pos = axl_medic.get_position()
- f.text(
- 0.01,
- axl_pos.y1 + 0.075,
- r"$\bf{a}$ Functional Connectivity (FC) seed maps: Occipital Cortex",
- ha="left",
- va="center",
- fontsize=7,
- )
- mpl.rcParams["axes.edgecolor"] = "black"
- mpl.rcParams["xtick.labelsize"] = 5
- mpl.rcParams["ytick.labelsize"] = 5
- cbar_ax = f.add_subplot(gs_cbar[1, 1])
- pl = cbar_ax.imshow(
- np.array([[-0.5, 0.5], [0.5, -0.5]]),
- vmin=-0.5,
- vmax=0.5,
- aspect="auto",
- cmap=nilearn_cmaps["roy_big_bl"],
- )
- cbar = f.colorbar(
- mappable=pl,
- cax=cbar_ax,
- location="left",
- orientation="vertical",
- ticks=[-0.5, -0.25, 0, 0.25, 0.5],
- )
- cbar.ax.yaxis.set_ticks_position("right")
- cbar.ax.invert_yaxis()
- # create axis for colorbar
- cbar.ax.set_ylabel("Functional Connectivity z(r)", labelpad=2)
- # plot group similarities
- settings = GLOBAL_SETTINGS.copy()
- settings["style"] = "darkgrid"
- sns.set_theme(**settings)
- mpl.rcParams["xtick.major.size"] = 0.5
- mpl.rcParams["xtick.major.pad"] = 2
- mpl.rcParams["ytick.major.size"] = 0.5
- mpl.rcParams["font.size"] = 6
- ax1 = f.add_subplot(gs_bot[0])
- clr_pal = sns.color_palette("pastel")
- sns.scatterplot(topup_better_similarities_topup, medic_better_similarities_topup, s=14, ax=ax1)
- sns.scatterplot(topup_better_similarities_medic, medic_better_similarities_medic, s=14, ax=ax1)
- sns.scatterplot([0.51], [0.33], s=14, linewidth=0.5, ax=ax1, color=clr_pal[0])
- sns.scatterplot([0.32], [0.52], s=14, linewidth=0.5, ax=ax1, color=clr_pal[1])
- ax1.text(0.515, 0.33, "Scan", ha="left", va="center", fontsize=5, transform=ax1.transData)
- ax1.text(0.325, 0.52, "Scan", ha="left", va="center", fontsize=5, transform=ax1.transData)
- ax1.axline((0, 0), slope=1, color="black", linestyle="--", linewidth=1)
- ax1.set_xlabel("Correlation (r)", labelpad=-6)
- ax1.set_ylabel("Correlation (r)", labelpad=-10)
- ax1.set_aspect("equal")
- vmax = 0.55
- vmin = 0.3
- ax1.set_xlim([vmin, vmax])
- ax1.set_ylim([vmin, vmax])
- ax1.set_xticks(np.arange(vmin, vmax, 0.05))
- ax1.set_yticks(np.arange(vmin, vmax, 0.05))
- ax1.set_xticklabels(
- [f"{x:.2f}" if np.isclose(x, vmin) or np.isclose(x, vmax) else "" for x in np.arange(vmin, vmax, 0.05)]
- )
- ax1.set_yticklabels([f"{x:.2f}" if np.isclose(x, vmax) else "" for x in np.arange(vmin, vmax, 0.05)])
- ax1.text(
- 0.075,
- 0.95,
- "MEDIC more similar to Group Average",
- ha="left",
- va="center",
- transform=ax1.transAxes,
- )
- ax1.text(
- 0.925,
- 0.05,
- "TOPUP more similar to Group Average",
- ha="right",
- va="center",
- transform=ax1.transAxes,
- )
- x = np.array([-0.1, 0.7])
- y = x
- y2 = np.ones(x.shape) * 0.6
- y3 = np.zeros(x.shape)
- colors = sns.color_palette("pastel")
- medic_color = colors[1]
- topup_color = colors[0]
- ax1.fill_between(x, y, y2, color=medic_color, alpha=0.2)
- ax1.fill_between(x, y3, y, color=topup_color, alpha=0.2)
- ax1_pos = ax1.get_position()
- f.text(
- 0.01,
- ax1_pos.y1 + 0.075,
- r"$\bf{b}$ Whole-brain FC similarity to group-averaged standard",
- ha="left",
- va="center",
- fontsize=7,
- )
- sns.set_theme(**GLOBAL_SETTINGS)
- # plot t-statistic surface
- tstat_surface_path = DATA_DIR / "group_tstat_surface.png"
- tstat_surface = np.array(Image.open(tstat_surface_path))
- tstat_surface_left = tstat_surface[:, clip_1 : tstat_surface.shape[1] // 2 - clip_2]
- tstat_surface_right = tstat_surface[:, clip_2 + tstat_surface.shape[1] // 2 : -clip_1]
- tstat_surface = np.concatenate((tstat_surface_left, tstat_surface_right), axis=1)
- mpl.rcParams["axes.edgecolor"] = "white"
- mpl.rcParams["xtick.labelsize"] = 5
- mpl.rcParams["ytick.labelsize"] = 5
- ax2 = f.add_subplot(gs_tstat[0])
- ax2.imshow(tstat_surface)
- ax2.set_xticks([])
- ax2.set_yticks([])
- ax2.text(0.5, 0.5, "N = 185 Scans", ha="center", va="center", transform=ax2.transAxes, fontsize=6)
- mpl.rcParams["axes.edgecolor"] = "black"
- cbar_ax = f.add_subplot(gs_tstat_cbar[1, 1])
- spectral_map = plt.cm.get_cmap("Spectral")
- spectral_rmap = spectral_map.reversed()
- pl = cbar_ax.imshow(np.array([[-6, 6], [6, -6]]), vmin=-6, vmax=6, aspect="auto", cmap=spectral_rmap)
- cbar = f.colorbar(
- mappable=pl,
- cax=cbar_ax,
- location="left",
- orientation="vertical",
- ticks=[-6, -3, 0, 3, 6],
- )
- cbar.ax.yaxis.set_ticks_position("right")
- cbar.ax.invert_yaxis()
- # create axis for colorbar
- cbar.ax.set_ylabel("t-statistic", labelpad=2)
- ax2_pos = ax2.get_position()
- f.text(
- ax2_pos.x0,
- ax1_pos.y1 + 0.075,
- r"$\bf{c}$ Whole-brain FC similarity to group-averaged standard",
- ha="left",
- va="center",
- )
- cbar.ax.text(
- 0.5,
- 1.075,
- "MEDIC > TOPUP",
- ha="center",
- va="center",
- transform=cbar.ax.transAxes,
- fontsize=6,
- )
- cbar.ax.text(
- 0.5,
- -0.075,
- "TOPUP > MEDIC",
- ha="center",
- va="center",
- transform=cbar.ax.transAxes,
- fontsize=6,
- )
- # # for computing correlations
- # # load dconn data for medic and topup
- # group_avg = nib.load("/data/nil-bluearc/GMT/Scott/ABCD/ABCD_4.5k_all.dconn.nii")
- # medic_dconn = nib.load(
- # AA_DATA_DIR
- # / "sub-20008"
- # / "ses-51692"
- # / "cifti_correlation"
- # / "sub-20008_b1_MNI152_T1_2mm_Swgt_norm_bpss_resid_LR_surf_subcort_32k_fsLR_brainstem_surfsmooth1.7_subcortsmooth1.7.dconn.nii" # noqa
- # )
- # topup_dconn = nib.load(
- # AA_DATA_DIR
- # / "sub-20008"
- # / "ses-51692wTOPUP"
- # / "cifti_correlation"
- # / "sub-20008_b1_MNI152_T1_2mm_Swgt_norm_bpss_resid_LR_surf_subcort_32k_fsLR_brainstem_surfsmooth1.7_subcortsmooth1.7.dconn.nii" # noqa
- # )
- # # get the lower triangle of the dconn data
- # print("Loading dconn data...")
- # group_avg_data = group_avg.dataobj[21891, :59412]
- # medic_dconn_data = medic_dconn.dataobj[21891, :59412]
- # topup_dconn_data = topup_dconn.dataobj[21891, :59412]
- # # remove nans
- # group_avg_data[np.isnan(group_avg_data)] = 0
- # medic_dconn_data[np.isnan(medic_dconn_data)] = 0
- # topup_dconn_data[np.isnan(topup_dconn_data)] = 0
- # print("Done.")
- # # compute correlations
- # print("Computing correlations...")
- # medic_corr = pearsonr(group_avg_data, medic_dconn_data)
- # print(medic_corr)
- # topup_corr = pearsonr(group_avg_data, topup_dconn_data)
- # print(topup_corr)
- # print("Done.")
- f.savefig(FIGURES_DIR / "group_template_compare.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure3.png").unlink(missing_ok=True)
- Path("figure3.png").symlink_to("group_template_compare.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 4
- def fmap_comparison(data_dir):
- mpl.rcParams["axes.titlesize"] = 7
- mpl.rcParams["axes.labelsize"] = 7
- # get data
- data_path = Path(data_dir)
- # load images
- minn_example_medic_path = data_path / "UMinn_medic.png"
- minn_example_medic = equalize_hist(np.array(Image.open(minn_example_medic_path)))
- minn_example_topup_path = data_path / "UMinn_topup.png"
- minn_example_topup = equalize_hist(np.array(Image.open(minn_example_topup_path)))
- minn_example_fmap_path = data_path / "UMinn_fmap.png"
- minn_example_fmap = np.array(Image.open(minn_example_fmap_path))
- penn_example_medic_path = data_path / "Penn_medic.png"
- penn_example_medic = equalize_hist(np.array(Image.open(penn_example_medic_path)))
- penn_example_topup_path = data_path / "Penn_topup.png"
- penn_example_topup = equalize_hist(np.array(Image.open(penn_example_topup_path)))
- penn_example_fmap_path = data_path / "Penn_fmap.png"
- penn_example_fmap = np.array(Image.open(penn_example_fmap_path))
- washu_example_medic_path = data_path / "WashU_medic.png"
- washu_example_medic = equalize_hist(np.array(Image.open(washu_example_medic_path)))
- washu_example_topup_path = data_path / "WashU_topup.png"
- washu_example_topup = equalize_hist(np.array(Image.open(washu_example_topup_path)))
- washu_example_fmap_path = data_path / "WashU_fmap.png"
- washu_example_fmap = np.array(Image.open(washu_example_fmap_path))
- f = plt.figure(figsize=(180 * MM_TO_INCHES, 140 * MM_TO_INCHES), layout="constrained")
- gs = GridSpec(
- 4,
- 3,
- left=0.03,
- right=0.97,
- bottom=0.025,
- top=0.96,
- wspace=0.15,
- hspace=0.125,
- height_ratios=[7, 1, 7, 7],
- )
- gs_cbar = GridSpecFromSubplotSpec(
- 3,
- 3,
- wspace=0,
- hspace=0,
- width_ratios=[1, 50, 1],
- height_ratios=[11, 5, 11],
- subplot_spec=gs[1, :],
- )
- ax_WashU_fmap = f.add_subplot(gs[0, 0])
- ax_WashU_medic = f.add_subplot(gs[2, 0])
- ax_WashU_topup = f.add_subplot(gs[3, 0])
- ax_UMinn_fmap = f.add_subplot(gs[0, 1])
- ax_UMinn_medic = f.add_subplot(gs[2, 1])
- ax_UMinn_topup = f.add_subplot(gs[3, 1])
- ax_Penn_fmap = f.add_subplot(gs[0, 2])
- ax_Penn_medic = f.add_subplot(gs[2, 2])
- ax_Penn_topup = f.add_subplot(gs[3, 2])
- cbar_ax = f.add_subplot(gs_cbar[1, 1])
- pl = cbar_ax.imshow(np.array([[-50, 50], [50, -50]]), vmin=-50, vmax=50, aspect="auto", cmap="icefire")
- cbar = f.colorbar(
- pl,
- cax=cbar_ax,
- location="top",
- orientation="horizontal",
- ticks=[-50, -25, 0, 25, 50],
- )
- # create axis for colorbar
- cbar.ax.set_xlabel("Field map Difference (Hz)", labelpad=2)
- alt_vmin, alt_vmax = hz_limits_to_mm(-50, 50)
- cax = cbar.ax.twiny()
- cbar.ax.xaxis.set_ticks_position("top")
- cax.xaxis.set_ticks_position("bottom")
- cax.set_xlim(alt_vmin, alt_vmax)
- cbar.ax.invert_xaxis()
- cax.invert_xaxis()
- cax.xaxis.set_label_position("bottom")
- cax.set_xlabel("Displacement difference (mm)", labelpad=1)
- # plot images
- ax_WashU_fmap.imshow(washu_example_fmap)
- ax_WashU_fmap.set_title(r"$\bf{a}$ WashU Data", pad=6, loc="left")
- ax_WashU_fmap.set_xticks([])
- ax_WashU_fmap.set_yticks([])
- ax_WashU_fmap.set_ylabel("Field Map Difference (MEDIC - TOPUP)", labelpad=4)
- ax_WashU_medic.imshow(washu_example_medic)
- ax_WashU_medic.set_xticks([])
- ax_WashU_medic.set_yticks([])
- ax_WashU_medic.set_ylabel("MEDIC", labelpad=4)
- draw_arrow(
- ax_WashU_medic,
- data_to_ax(ax_WashU_medic, (1683, 1858)),
- data_to_ax(ax_WashU_medic, (1457, 1691)),
- )
- draw_arrow(
- ax_WashU_medic,
- data_to_ax(ax_WashU_medic, (2045, 1620)),
- data_to_ax(ax_WashU_medic, (1829, 1474)),
- )
- ax_WashU_topup.imshow(washu_example_topup)
- ax_WashU_topup.set_xticks([])
- ax_WashU_topup.set_yticks([])
- ax_WashU_topup.set_ylabel("TOPUP", labelpad=4)
- draw_arrow(
- ax_WashU_topup,
- data_to_ax(ax_WashU_topup, (1683, 1858)),
- data_to_ax(ax_WashU_topup, (1457, 1691)),
- )
- draw_arrow(
- ax_WashU_topup,
- data_to_ax(ax_WashU_topup, (2045, 1620)),
- data_to_ax(ax_WashU_topup, (1829, 1474)),
- )
- ax_UMinn_fmap.imshow(minn_example_fmap)
- ax_UMinn_fmap.set_title(r"$\bf{b}$ UMinn Data", pad=6, loc="left")
- ax_UMinn_fmap.set_xticks([])
- ax_UMinn_fmap.set_yticks([])
- ax_UMinn_medic.imshow(minn_example_medic)
- draw_arrow(
- ax_UMinn_medic,
- data_to_ax(ax_UMinn_medic, (1129, 622)),
- data_to_ax(ax_UMinn_medic, (898, 473)),
- )
- ax_UMinn_medic.set_xticks([])
- ax_UMinn_medic.set_yticks([])
- ax_UMinn_topup.imshow(minn_example_topup)
- ax_UMinn_topup.set_xticks([])
- ax_UMinn_topup.set_yticks([])
- draw_arrow(
- ax_UMinn_topup,
- data_to_ax(ax_UMinn_topup, (1129, 622)),
- data_to_ax(ax_UMinn_topup, (898, 473)),
- )
- ax_Penn_fmap.imshow(penn_example_fmap)
- ax_Penn_fmap.set_title(r"$\bf{c}$ Penn Data", pad=6, loc="left")
- ax_Penn_fmap.set_xticks([])
- ax_Penn_fmap.set_yticks([])
- ax_Penn_medic.imshow(penn_example_medic)
- ax_Penn_medic.set_xticks([])
- ax_Penn_medic.set_yticks([])
- draw_arrow(ax_Penn_medic, data_to_ax(ax_Penn_medic, (817, 611)), data_to_ax(ax_Penn_medic, (940, 414)))
- draw_arrow(
- ax_Penn_medic,
- data_to_ax(ax_Penn_medic, (1202, 390)),
- data_to_ax(ax_Penn_medic, (1266, 164)),
- )
- ax_Penn_topup.imshow(penn_example_topup)
- ax_Penn_topup.set_xticks([])
- ax_Penn_topup.set_yticks([])
- draw_arrow(ax_Penn_topup, data_to_ax(ax_Penn_topup, (817, 611)), data_to_ax(ax_Penn_topup, (940, 414)))
- draw_arrow(
- ax_Penn_topup,
- data_to_ax(ax_Penn_topup, (1202, 390)),
- data_to_ax(ax_Penn_topup, (1266, 164)),
- )
- # save figure
- f.savefig(FIGURES_DIR / "fieldmap_comparison.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure4.png").unlink(missing_ok=True)
- Path("figure4.png").symlink_to("fieldmap_comparison.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 5
- def spotlight_comparison(data):
- mpl.rcParams["axes.titlesize"] = 7
- mpl.rcParams["axes.labelsize"] = 7
- # load t1 and t2 t stat maps
- t1_tstat = nib.load(Path(data) / "local_corr_t1_tstat.nii.gz").get_fdata().squeeze()
- t2_tstat = nib.load(Path(data) / "local_corr_t2_tstat.nii.gz").get_fdata().squeeze()
- t1_atlas_exemplar = (
- nib.load(AA_DATA_DIR / "sub-20008" / "T1" / "atlas" / "sub-20008_T1w_debias_avg_on_MNI152_T1_2mm.nii.gz")
- .get_fdata()
- .squeeze()
- )
- t2_atlas_exemplar = (
- nib.load(AA_DATA_DIR / "sub-20008" / "T1" / "atlas" / "sub-20008_T2w_debias_avg_on_MNI152_T1_2mm.nii.gz")
- .get_fdata()
- .squeeze()
- )
- # choose slices to iterate over
- slices = np.linspace(16, t1_tstat.shape[2] - 20, 9).astype(int)[::-1]
- # create figure
- f = plt.figure(figsize=(180 * MM_TO_INCHES, 100 * MM_TO_INCHES), layout="constrained")
- # create gridspec
- gs = GridSpec(3, 3, left=0, right=0.975, bottom=0.025, top=0.95, wspace=0.02, hspace=0.02)
- # create subfigures
- subfigs = f.subfigures(1, 3, width_ratios=[1, 5, 5], wspace=0.03)
- cgs = GridSpec(1, 1, left=0.52, right=0.57, bottom=0.073, top=0.89)
- cbar_ax = subfigs[0].add_subplot(cgs[:, :])
- # create axes for each subfigure
- axes_list1 = []
- for i in range(3):
- for j in range(3):
- axes_list1.append(subfigs[1].add_subplot(gs[i, j]))
- axes_list2 = []
- for i in range(3):
- for j in range(3):
- axes_list2.append(subfigs[2].add_subplot(gs[i, j]))
- # create new cmap
- new_cmap = sns.diverging_palette(210, 30, l=70, center="dark", as_cmap=True)
- # plot slices, iterate over list
- for i, s in enumerate(slices):
- ax1 = axes_list1[i]
- ax1.imshow(t1_atlas_exemplar[..., s].T, cmap="gray", origin="lower")
- a = ax1.imshow(t1_tstat[..., s].T, cmap=new_cmap, vmin=-10, vmax=10, origin="lower", alpha=0.75)
- ax1.set_xticks([])
- ax1.set_yticks([])
- if i == 0:
- source_plot = a
- ax2 = axes_list2[i]
- ax2.imshow(t2_atlas_exemplar[..., s].T, cmap="gray", origin="lower")
- ax2.imshow(t2_tstat[..., s].T, cmap=new_cmap, vmin=-10, vmax=10, origin="lower", alpha=0.75)
- ax2.set_xticks([])
- ax2.set_yticks([])
- axes_list1[0].set_title(r"$\bf{a}$ T1w alignment: Spotlight analysis", pad=4, loc="left")
- axes_list2[0].set_title(r"$\bf{b}$ T2w alignment: Spotlight analysis", pad=4, loc="left")
- # create axis for colorbar
- cbar = subfigs[0].colorbar(
- source_plot,
- cax=cbar_ax,
- location="left",
- orientation="vertical",
- )
- cbar.ax.yaxis.set_label_position("right")
- cbar.ax.set_ylabel("t-statistic", labelpad=4)
- cbar.ax.text(
- 0.5,
- 1.05,
- "MEDIC > TOPUP",
- ha="center",
- va="center",
- fontsize=6,
- transform=cbar.ax.transAxes,
- )
- cbar.ax.text(
- 0.5,
- -0.05,
- "TOPUP > MEDIC",
- ha="center",
- va="center",
- fontsize=6,
- transform=cbar.ax.transAxes,
- )
- f.savefig(FIGURES_DIR / "spotlight_comparison.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure5.png").unlink(missing_ok=True)
- Path("figure5.png").symlink_to("spotlight_comparison.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 6
- def alignment_metrics(data):
- # plot stats
- data = pd.read_csv(data)
- # create figures
- settings = GLOBAL_SETTINGS.copy()
- settings["style"] = "darkgrid"
- sns.set_theme(**settings)
- mpl.rcParams["axes.labelsize"] = 6
- mpl.rcParams["axes.labelpad"] = 2
- mpl.rcParams["xtick.labelsize"] = 5
- mpl.rcParams["xtick.major.pad"] = 2
- mpl.rcParams["ytick.labelsize"] = 5
- mpl.rcParams["ytick.major.pad"] = 2
- fig = plt.figure(figsize=(180 * MM_TO_INCHES, 90 * MM_TO_INCHES), layout="constrained")
- subfigs = fig.subfigures(1, 2, width_ratios=[2, 1], wspace=0.05)
- subfigs2 = subfigs[0].subfigures(2, 1, hspace=0.05, height_ratios=[1, 3])
- fig_local = subfigs2[0]
- fig_local.suptitle(r"$\bf{a}$ Local Metrics", fontsize=7, ha="left", x=0.02, weight="normal")
- axes_local = fig_local.subplots(1, 2)
- fig_global = subfigs2[1]
- fig_global.suptitle(r"$\bf{b}$ Global Metrics", fontsize=7, ha="left", x=0.02, weight="normal")
- axes_global = fig_global.subplots(3, 2)
- fig_roc = subfigs[1]
- fig_roc.suptitle(r"$\bf{c}$ Segmentation Metrics", fontsize=7, ha="left", x=0.02, weight="normal")
- axes_roc = fig_roc.subplots(4, 1)
- # create list of metrics
- metrics = [
- "local_corr_mean_t1",
- "local_corr_mean_t2",
- "corr_t1",
- "corr_t2",
- "grad_corr_t1",
- "grad_corr_t2",
- "nmi_t1",
- "nmi_t2",
- "roc_gw",
- "roc_ie",
- "roc_vw",
- "roc_cb_ie",
- ]
- # create list of titles
- titles = [
- "T1w R$^2$ Spotlight",
- "T2w R$^2$ Spotlight",
- "T1w R$^2$",
- "T2w R$^2$",
- "T1w Grad. Correlation",
- "T2w Grad. Correlation",
- "T1w NMI",
- "T2w NMI",
- "Gray/White Matter AUC",
- "Brain/Exterior AUC",
- "Ventricles/White Matter AUC",
- "Cerebellum/Exterior AUC",
- ]
- formatted_titles = [
- "T1w R$^2$\nSpotlight",
- "T2w R$^2$\nSpotlight",
- "T1w R$^2$",
- "T2w R$^2$",
- "T1w Grad.\nCorrelation",
- "T2w Grad.\nCorrelation",
- "T1w NMI",
- "T2w NMI",
- "Gray/White\nMatter AUC",
- "Brain/Exterior\nAUC",
- "Ventricles/White\nMatter AUC",
- "Cerebellum/Exterior\nAUC",
- ]
- # create list of axes for plotting
- axes_list = [
- axes_local[0],
- axes_local[1],
- axes_global[0][0],
- axes_global[0][1],
- axes_global[1][0],
- axes_global[1][1],
- axes_global[2][0],
- axes_global[2][1],
- axes_roc[0],
- axes_roc[1],
- axes_roc[2],
- axes_roc[3],
- ]
- # plot box plots
- for m, t, a in zip(metrics, formatted_titles, axes_list):
- plot_box_plot(data, m, t, a)
- # print ttest results
- table_str = "| Metric | MEDIC | TOPUP | t-statistic | p-value | df |\n"
- table_str += "| ------ | ----- | ----- | ----------- | ------- | -- |\n"
- for m, t in zip(metrics, titles):
- medic_data = data[f"{m}_medic"]
- topup_data = data[f"{m}_topup"]
- res = ttest_rel(medic_data, topup_data)
- # round stats
- medic_mean = np.round(medic_data.mean(), 3)
- medic_std = np.round(medic_data.std(), 3)
- topup_mean = np.round(topup_data.mean(), 3)
- topup_std = np.round(topup_data.std(), 3)
- p_value = np.round(res.pvalue, 3)
- p_value = p_value if p_value >= 0.001 else "<0.001"
- t_stat = np.round(res.statistic, 3)
- print(f"{t}:")
- print(f"MEDIC={medic_mean} ({medic_std}); " f"TOPUP={topup_mean} ({topup_std}); " f"p={p_value}; t={t_stat}\n")
- table_str += f"| {t} | {medic_mean} ({medic_std}) | {topup_mean} ({topup_std}) |"
- table_str += f" {t_stat} | {p_value} | {data.shape[0] - 1} |\n"
- print(table_str)
- # save figure
- fig.savefig(FIGURES_DIR / "alignment_metrics.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure6.png").unlink(missing_ok=True)
- Path("figure6.png").symlink_to("alignment_metrics.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 7
- def resp_analysis(data):
- settings = GLOBAL_SETTINGS.copy()
- settings["style"] = "darkgrid"
- sns.set_theme(**settings)
- mpl.rcParams["axes.labelsize"] = 6
- mpl.rcParams["axes.labelpad"] = 2
- mpl.rcParams["xtick.labelsize"] = 6
- mpl.rcParams["xtick.major.pad"] = 2
- mpl.rcParams["ytick.labelsize"] = 6
- mpl.rcParams["ytick.major.pad"] = 2
- mpl.rcParams["legend.fontsize"] = 6
- mpl.rcParams["legend.title_fontsize"] = 6
- # load data
- ps_csv = sorted(Path(data).glob("power_spectra_run_*.csv"))
- r_csv = sorted(Path(data).glob("resp_data_run_*.csv"))
- power_spectra = [pd.read_csv(f).set_index("Frequency (Hz)") for f in ps_csv]
- resp_data = [pd.read_csv(f).set_index("VOLUME") for f in r_csv]
- # create figure
- f = plt.figure(figsize=(180 * MM_TO_INCHES, 140 * MM_TO_INCHES), layout="constrained")
- n_rows = len(power_spectra)
- gs = [
- GridSpec(
- 2,
- 2,
- left=0.075,
- right=0.975,
- bottom=0.667 + 0.05,
- top=1.000 - 0.04,
- wspace=0.2,
- hspace=0.2,
- ),
- GridSpec(
- 2,
- 2,
- left=0.075,
- right=0.975,
- bottom=0.333 + 0.05,
- top=0.667 - 0.04,
- wspace=0.2,
- hspace=0.2,
- ),
- GridSpec(
- 2,
- 2,
- left=0.075,
- right=0.975,
- bottom=0.000 + 0.05,
- top=0.333 - 0.04,
- wspace=0.2,
- hspace=0.2,
- ),
- ]
- pastel = sns.color_palette("pastel")
- palette = [pastel[2], pastel[4]]
- ypos = [1.000 - 0.015, 0.667 - 0.015, 0.333 - 0.015]
- for r, l in zip(range(n_rows), ["a", "b", "c"]):
- ps = power_spectra[r]
- rd = resp_data[r]
- if r == 0:
- f.text(
- 0.05,
- ypos[r],
- r"$\bf{a}$ " + f"Spectral Power Density",
- ha="left",
- va="center",
- fontsize=7,
- )
- f.text(
- 0.55,
- ypos[r],
- r"$\bf{b}$ " + f"Respiratory Signal",
- ha="left",
- va="center",
- fontsize=7,
- )
- # plot power spectra
- ax1 = f.add_subplot(gs[r][0, 0])
- sns.lineplot(data=ps["resp_signal"], linewidth=0.6, color=pastel[3], ax=ax1)
- ax1.set_ylim(0, 60)
- ax1.set_xlabel("")
- ax1.set_ylabel("Respiratory Belt\nPower Density", labelpad=2)
- ax1.set_xticklabels([])
- ax1.tick_params(axis="x")
- ax1.tick_params(axis="y")
- ax1.set_title(f"Run {r + 1}")
- ax2 = f.add_subplot(gs[r][1, 0])
- sns.lineplot(
- data=ps[["fmap_signal", "fmap_signal_filtered"]],
- dashes=False,
- linewidth=0.6,
- palette=palette,
- ax=ax2,
- )
- ax2.set_ylim(0, 60)
- ax2.legend(["Unfiltered", "Filtered"], loc="upper center")
- ax2.set_ylabel("MEDIC Field Map\nPower Density", labelpad=2)
- ax2.set_xlabel("Frequency (Hz)", labelpad=2)
- ax2.tick_params(axis="x")
- ax2.tick_params(axis="y")
- # plot resp signals
- tr = 1.761
- rd.index = rd.index * tr
- corr = np.corrcoef(rd["resp_signal"], rd["fmap_signal"])[0, 1]
- ax3 = f.add_subplot(gs[r][0, 1])
- sns.lineplot(data=rd["resp_signal"], linewidth=0.6, color=pastel[3], ax=ax3)
- ax3.set_xlabel("")
- ax3.set_ylabel("Signal from\nRespiratory Belt", labelpad=2)
- ax3.set_xticklabels([])
- ax3.tick_params(axis="x")
- ax3.tick_params(axis="y")
- ax3.set_title(f"R = {np.round(corr, 3)}")
- ax3.set_ylim(-3, 3)
- ax4 = f.add_subplot(gs[r][1, 1])
- sns.lineplot(data=rd["fmap_signal"], linewidth=0.6, color=palette[1], ax=ax4)
- ax4.set_xlabel("Time (seconds)", labelpad=2)
- ax4.set_ylabel("Signal from\nMEDIC Field Map", labelpad=2)
- ax4.tick_params(axis="x")
- ax4.tick_params(axis="y")
- ax4.set_ylim(-3, 3)
- f.savefig(FIGURES_DIR / "resp_analysis.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure7.png").unlink(missing_ok=True)
- Path("figure7.png").symlink_to("resp_analysis.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 10
- def tsnr_comparision(data):
- # load tsnralignment_metrics
- tsnr_table = pd.read_csv(data)
- settings = GLOBAL_SETTINGS.copy()
- settings["style"] = "darkgrid"
- sns.set_theme(**settings)
- mpl.rcParams["axes.labelsize"] = 7
- mpl.rcParams["axes.labelpad"] = 2
- mpl.rcParams["xtick.labelsize"] = 7
- mpl.rcParams["xtick.major.pad"] = 2
- mpl.rcParams["ytick.labelsize"] = 7
- mpl.rcParams["ytick.major.pad"] = 2
- f = plt.figure(figsize=(90 * MM_TO_INCHES, 45 * MM_TO_INCHES), layout="constrained")
- ax = f.add_subplot(1, 1, 1)
- mpl.rcParams["xtick.labelsize"] = 6
- mpl.rcParams["ytick.labelsize"] = 6
- plot_box_plot(tsnr_table, "mean_tsnr_masked", "tSNR", ax)
- ax.set_xlim([0, 160])
- m = "mean_tsnr_masked"
- t = "tSNR"
- medic_data = tsnr_table[f"{m}_medic"]
- topup_data = tsnr_table[f"{m}_topup"]
- res = ttest_rel(medic_data, topup_data)
- # round stats
- medic_mean = np.round(medic_data.mean(), 3)
- medic_std = np.round(medic_data.std(), 3)
- topup_mean = np.round(topup_data.mean(), 3)
- topup_std = np.round(topup_data.std(), 3)
- p_value = np.round(res.pvalue, 3)
- p_value = p_value if p_value >= 0.001 else "<0.001"
- t_stat = np.round(res.statistic, 3)
- print(f"{t}:")
- print(f"MEDIC={medic_mean} ({medic_std}); " f"TOPUP={topup_mean} ({topup_std}); " f"p={p_value}; t={t_stat}\n")
- f.savefig(FIGURES_DIR / "tsnr.png", dpi=300)
- current_dir = os.getcwd()
- os.chdir(FIGURES_DIR)
- Path("figure10.png").unlink(missing_ok=True)
- Path("figure10.png").symlink_to("tsnr.png")
- os.chdir(current_dir)
- sns.set_theme(**GLOBAL_SETTINGS)
- # figure 100
- def head_position_videos(data):
- settings = GLOBAL_SETTINGS.copy()
- settings["rc"].update(
- {
- "axes.facecolor": "black",
- "figure.facecolor": "black",
- "axes.labelcolor": "white",
- "axes.titlecolor": "white",
- "text.color": "white",
- "xtick.color": "white",
- "ytick.color": "white",
- }
- )
- sns.set_theme(**settings)
- # load field map files
- medic_fieldmaps = Path(data) / "fieldmaps" / "medic_aligned"
- transient_head_position_run_idx = [7, 8, 9, 10, 11, 12, 13]
- # load transient field map runs
- transient_fieldmaps = []
- for idx in transient_head_position_run_idx:
- run = idx + 1
- transient_fieldmaps.append(nib.load(medic_fieldmaps / f"run{run:02d}" / "fmap.nii.gz"))
- labels = [
- "Neutral",
- "+Z Rotation",
- "-Z Rotation",
- "+X Rotation",
- "-X Rotation",
- "+Y Rotation",
- "-Y Rotation",
- "Neutral to +Z Rotation",
- "Neutral to -Z Rotation",
- "Neutral to +X Rotation",
- "Neutral to -X Rotation",
- "Neutral to +Y Rotation",
- "Neutral to -Y Rotation",
- "Neutral to -Z Translation",
- "-Z Translation",
- ]
- # get labels
- labels = [labels[i] for i in transient_head_position_run_idx]
- # replace space with underscores
- labels = [label.replace(" ", "_") for label in labels]
- # make transients output directory
- transients_out = Path(FIGURES_DIR) / "videos" / "transients"
- transients_out.mkdir(parents=True, exist_ok=True)
- # load motion parameters
- motion_params = []
- for idx in transient_head_position_run_idx:
- run = idx + 1
- motion_params.append(
- np.loadtxt(Path(data) / "framewise_align" / "func" / f"run{run:02d}" / f"run{run:02d}.par")
- )
- motion_params[-1][:, :3] = np.rad2deg(motion_params[-1][:, :3])
- # render transient field map videos
- def set_moco_label(motion_params):
- def set_figure_labels(fig, frame_num):
- # set label on figure
- fig.text(
- 0.5,
- 0.7,
- f"Frame {frame_num}"
- f"\nMotion Parameters:"
- f"\nrot-x: {motion_params[frame_num, 0]:.2f} deg"
- f"\nrot-y: {motion_params[frame_num, 1]:.2f} deg"
- f"\nrot-z: {motion_params[frame_num, 2]:.2f} deg"
- f"\ntx: {motion_params[frame_num, 3]:.2f} mm"
- f"\nty: {motion_params[frame_num, 4]:.2f} mm"
- f"\ntz: {motion_params[frame_num, 5]:.2f} mm",
- ha="center",
- )
- # return figure
- return fig
- # return function
- return set_figure_labels
- gs0 = GridSpec(1, 1, left=0.05, right=0.1, bottom=0.05, top=0.95)
- gs1 = GridSpec(
- 1,
- 3,
- left=0.125,
- right=0.95,
- bottom=0.05,
- top=0.95,
- hspace=0.025,
- wspace=0.025,
- width_ratios=[72, 110, 110],
- )
- def fig_callback():
- fig = plt.figure(figsize=(10, 6), layout="constrained")
- axes_list = [fig.add_subplot(gs1[0, i]) for i in range(3)]
- cbar_ax = fig.add_subplot(gs0[:, :])
- cbar_ax.axis("off")
- return fig, axes_list, cbar_ax
- for fmap, moco, label in zip(transient_fieldmaps, motion_params, labels):
- print(f"Processing {label}")
- render_dynamic_figure(
- str(transients_out / f"{label}.mp4"),
- [fmap],
- colorbar=True,
- colorbar_aspect=60,
- colorbar_pad=0,
- colorbar_labelpad=-5,
- colorbar_alt_range=True,
- colorbar_alt_labelpad=0,
- fraction=0.3,
- vmin=-100,
- vmax=150,
- colormaps="icefire",
- figure_fx=set_moco_label(moco),
- fig_callback=fig_callback,
- text_color="white",
- )
- sns.set_theme(**GLOBAL_SETTINGS)
- def main():
- parser = argparse.ArgumentParser(description="script for generating paper figures")
- parser.add_argument("--figures", nargs="+", type=int, help="figures to generate, if not supplied will plot all")
- parser.add_argument("--figure_1_data", default=FIGURE1_DATA, help="path to figure 1 data")
- parser.add_argument("--figure_2_data", default=FIGURE2_DATA, help="path to figure 2 data")
- parser.add_argument("--figure_3_data", default=FIGURE3_DATA, help="path to figure 3 data")
- parser.add_argument("--figure_4_data", default=FIGURE4_DATA, help="path to figure 4 data")
- parser.add_argument("--figure_5_data", default=FIGURE5_DATA, help="path to figure 5 data")
- parser.add_argument("--figure_6_data", default=FIGURE6_DATA, help="path to figure 6 data")
- parser.add_argument("--figure_7_data", default=FIGURE7_DATA, help="path to figure 7 data")
- parser.add_argument("--figure_10_data", default=FIGURE10_DATA, help="path to figure 10 data")
- parser.add_argument("--figure_100_data", default=FIGURE100_DATA, help="path to figure 100 data")
- # get arguments
- args = parser.parse_args()
- if args.figures is None or 1 in args.figures:
- head_position_fieldmap(args.figure_1_data)
- if args.figures is None or 2 in args.figures:
- head_concatenation(args.figure_2_data)
- if args.figures is None or 3 in args.figures:
- group_template_comparison(args.figure_3_data)
- if args.figures is None or 4 in args.figures:
- fmap_comparison(args.figure_4_data)
- if args.figures is None or 5 in args.figures:
- spotlight_comparison(args.figure_5_data)
- if args.figures is None or 6 in args.figures:
- alignment_metrics(args.figure_6_data)
- if args.figures is None or 7 in args.figures:
- resp_analysis(args.figure_7_data)
- if args.figures is None or 10 in args.figures:
- tsnr_comparision(args.figure_10_data)
- if args.figures is not None and 100 in args.figures:
- head_position_videos(args.figure_100_data)
- plt.show()
paper_figures.py at commit cc2ea27, under MIT · at the source
Overview
and 13 other authors
Aristeidis Sotiras6,10, Joshua S Shimony6, Benjamin P Kay2, Steven M Nelson5,11, Brenden Tervo-Clemmens5,12, Scott A Marek6, Luca Vizioli13, Essa Yacoub13, Theodore D Satterthwaite8, Evan M Gordon6, Damien A Fair4,5,11, M Dylan Tisdall14, Nico UF Dosenbach1,2,6,1515 affiliations
- Department of Biomedical Engineering, Washington University in St. Louis, St. Louis, MO, United States
- Department of Neurology, Washington University School of Medicine, St. Louis, MO, United States
- Department of Psychiatry, Washington University School of Medicine, St. Louis, MO, United States
- Institute of Child Development, University of Minnesota Medical School, Minneapolis, MN, United States
- Masonic Institute for the Developing Brain, University of Minnesota Medical School, Minneapolis, MN, United States
- Department of Radiology, Washington University School of Medicine, St. Louis, MO, United States
- Department of Neurosurgery, Washington University School of Medicine, St. Louis, MO, United States
- Lifespan Informatics and Neuroimaging Center (PennLINC), Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, United States
- Division of Computation and Data Science, Washington University School of Medicine, St. Louis, MO, United States
- Institute for Informatics, Data Science & Biostatistics, Washington University School of Medicine, St. Louis, MO, United States
- Department of Pediatrics, University of Minnesota Medical School, Minneapolis, MN, United States
- Department of Psychiatry & Behavioral Sciences, University of Minnesota Medical School, Minneapolis, MN, United States
- Center for Magnetic Resonance Research, University of Minnesota Medical School, Minneapolis, MN, United States
- Department of Radiology, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, United States
- Department of Pediatrics, Washington University School of Medicine, St. Louis, MO, United States
Abstract
Functional MRI (fMRI) data are severely distorted by magnetic field (B0) inhomogeneities, which currently must be corrected using separately acquired field map data. However, changes in the head position of a participant across fMRI frames cause changes in the B0 field, preventing accurate correction of geometric distortions. Movement during field map acquisitions corrupts field maps, preventing distortion correction altogether. In this study, we use multi-echo (ME) fMRI data to dynamically sample and correct for magnetic field image distortions caused by head motion. Our distortion correction pipeline, MEDIC (Multi-Echo DIstortion Correction), leverages magnetic field inhomogeneity information found in the difference between echoes and uses it to correct for distortion on a frame-by-frame basis. Here, we demonstrate that MEDIC’s frame-wise distortion correction decreases the impact of head motion on resting-state functional connectivity (RSFC) maps and improves alignment to anatomy when compared with the prior gold standard approach (i.e., FSL TOPUP). Enhanced frame-wise distortion correction with MEDIC, without the requirement for field map collection, furthers the benefit of cutting-edge multi-echo fMRI imaging over single-echo fMRI.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 20 matches between paragraphs and lines of code.
vanandrew/warpkit
4ae7699d23d5d7404a9cc4386de2bd5d3f0335e7, 6 August 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
55 files
- include/
itk/ , C/C++, 187 lines, 1 matchitkModifiedInvertDisplac ementFieldImageFilter.h - include/
romeo/ , C/C++, 225 linesalgorithm.h - include/
romeo/ , C/C++, 50 linespriority_queue.h - include/
romeo/ , C/C++, 231 linesromeo.h - include/
romeo/ , C/C++, 44 linesseed.h - include/
romeo/ , C/C++, 190 linesunwrap.h - include/
romeo/ , C/C++, 33 linesutility.h - include/
romeo/ , C/C++, 32 linesvolume_view.h - include/
romeo/ , C/C++, 73 linesvoxel_quality.h - include/
romeo/ , C/C++, 215 linesweights.h - include/
utilities.h , C/C++, 99 lines - include/
warps.h , C/C++, 561 lines - packaging/
pyinstaller/ , Python, 170 linesbuild_bundle.py - packaging/
pyinstaller/ , Python, 15 lineshooks/ hook-warpkit.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-apply-warp.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-compute-fieldmap.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-compute-jacobian.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-convert-fieldmap.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-convert-warp.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-medic.py - packaging/
pyinstaller/ , Python, 7 lineslaunchers/ wk-unwrap-phase.py - scripts/
check-gitmoji.sh , Shell, 12 lines - scripts/
regen-stub.sh , Shell, 24 lines - src/
warpkit.cpp , C++, 54 lines - tests/
conftest.py , Python, 74 lines - tests/
test_concurrency.py , Python, 86 lines - tests/
test_distortion.py , Python, 65 lines - tests/
test_model.py , Python, 55 lines - tests/
test_orientation.py , Python, 255 lines - tests/
test_romeo.py , Python, 201 lines - tests/
test_scripts.py , Python, 2,896 lines - tests/
test_unwrap.py , Python, 430 lines - tests/
test_utilities.py , Python, 614 lines - tests/
test_version.py , Python, 13 lines - warpkit/
__init__.py , Python, 8 lines - warpkit/
api.py , Python, 48 lines - warpkit/
concurrency.py , Python, 101 lines - warpkit/
distortion.py , Python, 122 lines, 2 matches - warpkit/
model.py , Python, 47 lines - warpkit/
scripts/ , Python, 2 lines__init__.py - warpkit/
scripts/ , Python, 51 lines_cli.py - warpkit/
scripts/ , Python, 162 lines_metadata.py - warpkit/
scripts/ , Python, 54 lines_outputs.py - warpkit/
scripts/ , Python, 134 lines_warp_io.py - warpkit/
scripts/ , Python, 320 linesapply_warp.py - warpkit/
scripts/ , Python, 190 linescompute_fieldmap.py - warpkit/
scripts/ , Python, 181 linescompute_jacobian.py - warpkit/
scripts/ , Python, 273 linesconvert_fieldmap.py - warpkit/
scripts/ , Python, 328 linesconvert_warp.py - warpkit/
scripts/ , Python, 174 linesmedic.py - warpkit/
scripts/ , Python, 166 linesunwrap_phase.py - warpkit/
unwrap.py , Python, 1,150 lines, 3 matches - warpkit/
utilities.py , Python, 1,029 lines - LICENSE, License, 26 lines
- README.md, Text, 207 lines
DosenbachGreene/processing_pipeline
8be76287c68caf556ed96ba42d116c02a9b77c66, 20 October 2023Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
36 files
- me_pipeline/
__init__.py , Python, 3 lines - me_pipeline/
bids.py , Python, 396 lines - me_pipeline/
grayplots/ , Python, 1 line__init__.py - me_pipeline/
grayplots/ , Python, 254 linesgrayplot_generator.py - me_pipeline/
grayplots/ , Python, 238 linesgrayplot_helpers.py - me_pipeline/
heuristics.py , Python, 342 lines - me_pipeline/
params.py , Python, 560 lines, 2 matches - me_pipeline/
scripts/ , Python, 72 lines__init__.py - me_pipeline/
scripts/ , Python, 55 linesbatch_convert_to_bids.py - me_pipeline/
scripts/ , Python, 22 linesbatch_wb_image_capture_v olreg.py - me_pipeline/
scripts/ , Shell, 441 linesbin/ FreeSurfer2CaretConvertA ndRegisterNonlinear_MSM. sh - me_pipeline/
scripts/ , Shell, 62 linesbin/ PostFreeSurferPipeline_f savg2fslr.sh - me_pipeline/
scripts/ , Python, 81 linesconvert_to_bids.py - me_pipeline/
scripts/ , Python, 118 linesdownload_dataset.py - me_pipeline/
scripts/ , Python, 64 linesgenerate_grayplots.py - me_pipeline/
scripts/ , Python, 434 linesone_step_resampling_fram ewise.py - me_pipeline/
scripts/ , Python, 474 linesrun_pipeline.py - me_pipeline/
scripts/ , Python, 49 linesrun_script.py - me_pipeline/
utils.py , Python, 167 lines - me_pipeline/
xnat_api.py , Python, 169 lines - setup.py, Python, 18 lines
- tests/
__init__.py , Python, 1 line - tests/
test_bids.py , Python, 87 lines - tools/
get_4dfp.sh , Shell, 25 lines - tools/
install_4dfp.sh , Shell, 139 lines, 1 match - tools/
install_freesurfer.sh , Shell, 19 lines - tools/
install_fsl.sh , Shell, 18 lines - tools/
install_mcr.sh , Shell, 78 lines - tools/
install_nordic.sh , Shell, 67 lines - tools/
install_workbench.sh , Shell, 16 lines - tools/
me_fmri/ , C, 1,663 linesMEfmri_4dfp.c - tools/
me_fmri/ , C, 665 lineshist.c - tools/
me_fmri/ , C/C++, 20 lineshist.h - tools/
setenv.sh , Shell, 67 lines - LICENSE, License, 21 lines
- README.md, Text, 465 lines
vanandrew/medic_analysis
cc2ea27a90085e50762a25820773851310da1e31, 21 January 2024Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
580 files
- matlab_scripts/
Cluster_correct_ttestpai , MATLAB, 101 linesred_cifti.m - matlab_scripts/
FisherTransform.m , MATLAB, 19 lines - matlab_scripts/
cifti_utilities/ , MATLAB, 184 linesBatch_wb_image_capture.m - matlab_scripts/
cifti_utilities/ , MATLAB, 94 linesMake_cifti_distmat.m - matlab_scripts/
cifti_utilities/ , MATLAB, 105 linesMake_rotations.m - matlab_scripts/
cifti_utilities/ , MATLAB, 79 linescifti_cluster.m - matlab_scripts/
cifti_utilities/ , MATLAB, 42 linescifti_data_into_common_s ubcort_space.m - matlab_scripts/
cifti_utilities/ , MATLAB, 105 linescifti_neighbors.m - matlab_scripts/
cifti_utilities/ , MATLAB, 227 linescifti_to_border.m - matlab_scripts/
cifti_utilities/ , MATLAB, 107 linescifti_to_flatmap.m - matlab_scripts/
cifti_utilities/ , MATLAB, 46 linesmake_cifti_label_powerco lors.m - matlab_scripts/
cifti_utilities/ , MATLAB, 88 linesmap_vol_to_cifti.m - matlab_scripts/
cifti_utilities/ , MATLAB, 221 linesrender_subcort_and_map_c iftidata.m - matlab_scripts/
cifti_utilities/ , MATLAB, 60 linesrotate_cifti.m - matlab_scripts/
cifti_utilities/ , MATLAB, 444 linesset_cifti_powercolors.m - matlab_scripts/
cifti_utilities/ , MATLAB, 122 linessubcort_network_borders. m - matlab_scripts/
cifti_utilities/ , MATLAB, 62 linesupsample_cifti_to_164.m - matlab_scripts/
cifti_utilities/ , MATLAB, 214 lineswb_surfer_wrapper.m - matlab_scripts/
cluster_correct.m , MATLAB, 14 lines - matlab_scripts/
explore_MEDIC.m , MATLAB, 207 lines - matlab_scripts/
paircorr_mod.m , MATLAB, 34 lines - matlab_scripts/
paircorr_mod_diag.m , MATLAB, 37 lines - matlab_scripts/
plotSpread/ , MATLAB, 152 linesplotSpread/ distinguishable_colors.m - matlab_scripts/
plotSpread/ , MATLAB, 25 linesplotSpread/ isEven.m - matlab_scripts/
plotSpread/ , MATLAB, 264 linesplotSpread/ myErrorbar.m - matlab_scripts/
plotSpread/ , MATLAB, 632 linesplotSpread/ plotSpread.m - matlab_scripts/
plotSpread/ , MATLAB, 140 linesplotSpread/ repeatEntries.m - matlab_scripts/
read_write_cifti_32ksurf , C, 42 linesace/ fileio/ @uint64/ abs.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ abs.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ fileio/ @uint64/ all.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ fileio/ @uint64/ any.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 7 linesace/ fileio/ @uint64/ compile_uint64.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 59 linesace/ fileio/ @uint64/ diff.m - matlab_scripts/
read_write_cifti_32ksurf , C, 59 linesace/ fileio/ @uint64/ max.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ max.m - matlab_scripts/
read_write_cifti_32ksurf , C, 59 linesace/ fileio/ @uint64/ min.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ min.m - matlab_scripts/
read_write_cifti_32ksurf , C, 89 linesace/ fileio/ @uint64/ minus.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ minus.m - matlab_scripts/
read_write_cifti_32ksurf , C, 89 linesace/ fileio/ @uint64/ plus.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ plus.m - matlab_scripts/
read_write_cifti_32ksurf , C, 107 linesace/ fileio/ @uint64/ rdivide.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ rdivide.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 9 linesace/ fileio/ @uint64/ test.m - matlab_scripts/
read_write_cifti_32ksurf , C, 79 linesace/ fileio/ @uint64/ times.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ @uint64/ times.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 674 linesace/ fileio/ ft_chantype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 208 linesace/ fileio/ ft_chanunit.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 47 linesace/ fileio/ ft_create_buffer.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 34 linesace/ fileio/ ft_destroy_buffer.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,395 linesace/ fileio/ ft_filetype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 118 linesace/ fileio/ ft_filter_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ fileio/ ft_flush_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ fileio/ ft_flush_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ fileio/ ft_flush_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 80 linesace/ fileio/ ft_poll_buffer.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 2,182 linesace/ fileio/ ft_read_atlas.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,013 linesace/ fileio/ ft_read_cifti.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 942 linesace/ fileio/ ft_read_cifti_mod.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,389 linesace/ fileio/ ft_read_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,897 linesace/ fileio/ ft_read_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 2,250 linesace/ fileio/ ft_read_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 953 linesace/ fileio/ ft_read_headshape.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 472 linesace/ fileio/ ft_read_mri.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 379 linesace/ fileio/ ft_read_sens.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 285 linesace/ fileio/ ft_read_spike.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 71 linesace/ fileio/ ft_read_vol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 849 linesace/ fileio/ ft_write_cifti.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 868 linesace/ fileio/ ft_write_cifti_mod.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 868 linesace/ fileio/ ft_write_cifti_mod_32ksu rface.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 873 linesace/ fileio/ ft_write_cifti_mod_old.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 664 linesace/ fileio/ ft_write_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 265 linesace/ fileio/ ft_write_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 237 linesace/ fileio/ ft_write_headshape.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 127 linesace/ fileio/ ft_write_mri.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 169 linesace/ fileio/ ft_write_spike.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 68 linesace/ fileio/ private/ ReadHeader.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 51 linesace/ fileio/ private/ add_mex_source.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ fileio/ private/ ama2vol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 45 linesace/ fileio/ private/ appendevent.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 389 linesace/ fileio/ private/ avw_hdr_read.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 694 linesace/ fileio/ private/ avw_img_read.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 33 linesace/ fileio/ private/ bigendian.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 87 linesace/ fileio/ private/ bounding_mesh.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 275 linesace/ fileio/ private/ bti2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 49 linesace/ fileio/ private/ buffer_wait_dat.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 334 linesace/ fileio/ private/ channelposition.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 35 linesace/ fileio/ private/ compile_mex_list.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 23 linesace/ fileio/ private/ cornerpoints.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 89 linesace/ fileio/ private/ cstructdecode.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 358 linesace/ fileio/ private/ ctf2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 177 linesace/ fileio/ private/ dataset2files.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 16 linesace/ fileio/ private/ db_close.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 75 linesace/ fileio/ private/ db_insert.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 22 linesace/ fileio/ private/ db_insert_blob.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 70 linesace/ fileio/ private/ db_open.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ fileio/ private/ db_select.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ fileio/ private/ db_select_blob.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 171 linesace/ fileio/ private/ decode_fif.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 97 linesace/ fileio/ private/ decode_nifti1.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ fileio/ private/ decode_res4.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 231 linesace/ fileio/ private/ dimlength.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 117 linesace/ fileio/ private/ elproj.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 173 linesace/ fileio/ private/ encode_nifti1.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 49 linesace/ fileio/ private/ fetch_url.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 72 linesace/ fileio/ private/ fif2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 109 linesace/ fileio/ private/ fiff_open_le.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ fileio/ private/ filetype_check_extension .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 99 linesace/ fileio/ private/ filetype_check_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 263 linesace/ fileio/ private/ filetype_check_uri.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 52 linesace/ fileio/ private/ find_outermost_boundary. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 220 linesace/ fileio/ private/ fixdimord.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ fileio/ private/ fixinside.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ fileio/ private/ fixname.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ fileio/ private/ fixpos.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 116 linesace/ fileio/ private/ fixsampleinfo.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 545 linesace/ fileio/ private/ ft_apply_montage.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,668 linesace/ fileio/ private/ ft_checkdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 261 linesace/ fileio/ private/ ft_convert_units.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 292 linesace/ fileio/ private/ ft_datatype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 173 linesace/ fileio/ private/ ft_datatype_comp.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 38 linesace/ fileio/ private/ ft_datatype_dip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 154 linesace/ fileio/ private/ ft_datatype_freq.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 172 linesace/ fileio/ private/ ft_datatype_headmodel.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 106 linesace/ fileio/ private/ ft_datatype_mvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 316 linesace/ fileio/ private/ ft_datatype_raw.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 455 linesace/ fileio/ private/ ft_datatype_sens.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 339 linesace/ fileio/ private/ ft_datatype_source.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 277 linesace/ fileio/ private/ ft_datatype_spike.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 120 linesace/ fileio/ private/ ft_datatype_timelock.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 102 linesace/ fileio/ private/ ft_datatype_vol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 59 linesace/ fileio/ private/ ft_estimate_units.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 202 linesace/ fileio/ private/ ft_fetch_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ fileio/ private/ ft_fetch_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ fileio/ private/ ft_findcfg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ fileio/ private/ ft_getopt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 556 linesace/ fileio/ private/ ft_hastoolbox.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 251 linesace/ fileio/ private/ ft_headcoordinates.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 244 linesace/ fileio/ private/ ft_platform_supports.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 326 linesace/ fileio/ private/ ft_progress.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 3,694 linesace/ fileio/ private/ ft_senslabel.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 457 linesace/ fileio/ private/ ft_senstype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 138 linesace/ fileio/ private/ ft_voltype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 258 linesace/ fileio/ private/ ft_warning.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 204 linesace/ fileio/ private/ ft_warp_apply.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 32 linesace/ fileio/ private/ getdatfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 603 linesace/ fileio/ private/ getdimord.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 603 linesace/ fileio/ private/ getdimord_mod.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 70 linesace/ fileio/ private/ getdimsiz.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 46 linesace/ fileio/ private/ getsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 104 linesace/ fileio/ private/ hasyokogawa.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 336 linesace/ fileio/ private/ in_fopen_manscan.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 124 linesace/ fileio/ private/ in_fread_manscan.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 84 linesace/ fileio/ private/ inflate_file.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 675 linesace/ fileio/ private/ inifile.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ fileio/ private/ issubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ fileio/ private/ istrue.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 52 linesace/ fileio/ private/ itab2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 56 linesace/ fileio/ private/ jaga16_packet.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ fileio/ private/ keyval.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 73 linesace/ fileio/ private/ labelcmb2indx.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 33 linesace/ fileio/ private/ littleendian.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 111 linesace/ fileio/ private/ loadama.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ fileio/ private/ loadvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ fileio/ private/ match_str.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 264 linesace/ fileio/ private/ mne2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ fileio/ private/ mxDeserialize.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ fileio/ private/ mxSerialize.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 123 linesace/ fileio/ private/ ndgrid.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 76 linesace/ fileio/ private/ netmeg2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 39 linesace/ fileio/ private/ neuralynx_crc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 80 linesace/ fileio/ private/ neuralynx_getheader.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 68 linesace/ fileio/ private/ neuralynx_timestamp.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 389 linesace/ fileio/ private/ np_read_splitted_fileinf o.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 104 linesace/ fileio/ private/ np_readdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 176 linesace/ fileio/ private/ np_readfileinfo.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 275 linesace/ fileio/ private/ np_readmarker.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 201 linesace/ fileio/ private/ openbdf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 115 linesace/ fileio/ private/ parameterselection.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 99 linesace/ fileio/ private/ plx_orig_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 33 linesace/ fileio/ private/ pos2dim.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 39 linesace/ fileio/ private/ pos2dim3d.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 34 linesace/ fileio/ private/ pos2transform.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 541 linesace/ fileio/ private/ read_4d_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 19 linesace/ fileio/ private/ read_ah5_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 27 linesace/ fileio/ private/ read_ah5_markers.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 66 linesace/ fileio/ private/ read_ahdf5_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 168 linesace/ fileio/ private/ read_asa.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ fileio/ private/ read_asa_bnd.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 123 linesace/ fileio/ private/ read_asa_dip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 60 linesace/ fileio/ private/ read_asa_elc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 200 linesace/ fileio/ private/ read_asa_mri.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 77 linesace/ fileio/ private/ read_asa_msr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 119 linesace/ fileio/ private/ read_asa_vol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 145 linesace/ fileio/ private/ read_besa_avr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 89 linesace/ fileio/ private/ read_besa_swf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ fileio/ private/ read_bham.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 164 linesace/ fileio/ private/ read_biff.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 291 linesace/ fileio/ private/ read_biosemi_bdf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 69 linesace/ fileio/ private/ read_biosig_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 124 linesace/ fileio/ private/ read_biosig_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 178 linesace/ fileio/ private/ read_brainvision_eeg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 67 linesace/ fileio/ private/ read_brainvision_pos.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 123 linesace/ fileio/ private/ read_brainvision_vhdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 86 linesace/ fileio/ private/ read_brainvision_vmrk.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 76 linesace/ fileio/ private/ read_bti_ascii.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 56 linesace/ fileio/ private/ read_bti_hs.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 183 linesace/ fileio/ private/ read_bti_m4d.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ fileio/ private/ read_bucn_nirsdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 57 linesace/ fileio/ private/ read_bucn_nirsevent.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ fileio/ private/ read_bucn_nirshdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 58 linesace/ fileio/ private/ read_buffer_offline_data .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 92 linesace/ fileio/ private/ read_buffer_offline_even ts.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 224 linesace/ fileio/ private/ read_buffer_offline_head er.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ fileio/ private/ read_bv_srf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 110 linesace/ fileio/ private/ read_caret_spec.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 296 linesace/ fileio/ private/ read_ced_son.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 188 linesace/ fileio/ private/ read_combined_ds.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 100 linesace/ fileio/ private/ read_ctf_ascii.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 74 linesace/ fileio/ private/ read_ctf_cls.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 790 linesace/ fileio/ private/ read_ctf_coef.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 84 linesace/ fileio/ private/ read_ctf_dat.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 190 linesace/ fileio/ private/ read_ctf_hc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ fileio/ private/ read_ctf_hdm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ fileio/ private/ read_ctf_hist.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 150 linesace/ fileio/ private/ read_ctf_meg4.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 197 linesace/ fileio/ private/ read_ctf_mri.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 287 linesace/ fileio/ private/ read_ctf_mri4.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 72 linesace/ fileio/ private/ read_ctf_pos.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 204 linesace/ fileio/ private/ read_ctf_res4.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ fileio/ private/ read_ctf_sens.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 41 linesace/ fileio/ private/ read_ctf_shape.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ fileio/ private/ read_ctf_shm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 105 linesace/ fileio/ private/ read_ctf_svl.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 80 linesace/ fileio/ private/ read_ctf_trigger.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 97 linesace/ fileio/ private/ read_curry.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ fileio/ private/ read_deymed_dat.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 77 linesace/ fileio/ private/ read_deymed_ini.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 475 linesace/ fileio/ private/ read_edf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 99 linesace/ fileio/ private/ read_eeglabdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 117 linesace/ fileio/ private/ read_eeglabevent.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ fileio/ private/ read_eeglabheader.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ fileio/ private/ read_egis_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ fileio/ private/ read_egis_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ fileio/ private/ read_elec.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 68 linesace/ fileio/ private/ read_erplabdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 60 linesace/ fileio/ private/ read_erplabevent.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 71 linesace/ fileio/ private/ read_erplabheader.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 112 linesace/ fileio/ private/ read_eyelink_asc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 59 linesace/ fileio/ private/ read_fcdc_trl.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 265 linesace/ fileio/ private/ read_itab_mhd.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 34 linesace/ fileio/ private/ read_lay.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 77 linesace/ fileio/ private/ read_mat.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 32 linesace/ fileio/ private/ read_mclust_t.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 159 linesace/ fileio/ private/ read_mff_bin.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 125 linesace/ fileio/ private/ read_micromed_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ fileio/ private/ read_micromed_trc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 181 linesace/ fileio/ private/ read_mpi_dap.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 99 linesace/ fileio/ private/ read_mpi_ds.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 209 linesace/ fileio/ private/ read_neuralynx_bin.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 163 linesace/ fileio/ private/ read_neuralynx_cds.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 280 linesace/ fileio/ private/ read_neuralynx_dma.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 228 linesace/ fileio/ private/ read_neuralynx_ds.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 245 linesace/ fileio/ private/ read_neuralynx_ncs.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 237 linesace/ fileio/ private/ read_neuralynx_nev.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 105 linesace/ fileio/ private/ read_neuralynx_nse.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 117 linesace/ fileio/ private/ read_neuralynx_nst.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 78 linesace/ fileio/ private/ read_neuralynx_nts.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 117 linesace/ fileio/ private/ read_neuralynx_ntt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 448 linesace/ fileio/ private/ read_neuralynx_sdma.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 52 linesace/ fileio/ private/ read_neuralynx_ttl.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ fileio/ private/ read_neuromag_eve.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 165 linesace/ fileio/ private/ read_neuromag_hc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 249 linesace/ fileio/ private/ read_neuroshare.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 137 linesace/ fileio/ private/ read_neurosim_evolution. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 100 linesace/ fileio/ private/ read_neurosim_signals.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 129 linesace/ fileio/ private/ read_neurosim_spikes.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 102 linesace/ fileio/ private/ read_nex_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 67 linesace/ fileio/ private/ read_nex_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 69 linesace/ fileio/ private/ read_nex_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ fileio/ private/ read_nexstim_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 158 linesace/ fileio/ private/ read_nexstim_nxe.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 110 linesace/ fileio/ private/ read_nifti2_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 184 linesace/ fileio/ private/ read_nimh_cortex.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 93 linesace/ fileio/ private/ read_nmc_archive_k_data. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 98 linesace/ fileio/ private/ read_nmc_archive_k_event .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 188 linesace/ fileio/ private/ read_nmc_archive_k_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 80 linesace/ fileio/ private/ read_ns_avg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ fileio/ private/ read_ns_eeg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 318 linesace/ fileio/ private/ read_ns_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 57 linesace/ fileio/ private/ read_off.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 139 linesace/ fileio/ private/ read_plexon_ddt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 174 linesace/ fileio/ private/ read_plexon_ds.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 178 linesace/ fileio/ private/ read_plexon_nex.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 403 linesace/ fileio/ private/ read_plexon_plx.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 211 linesace/ fileio/ private/ read_ply.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 101 linesace/ fileio/ private/ read_polhemus_fil.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 172 linesace/ fileio/ private/ read_sbin_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 172 linesace/ fileio/ private/ read_sbin_events.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 193 linesace/ fileio/ private/ read_sbin_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 98 linesace/ fileio/ private/ read_serial_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 101 linesace/ fileio/ private/ read_shm_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 109 linesace/ fileio/ private/ read_shm_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 95 linesace/ fileio/ private/ read_shm_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ fileio/ private/ read_spike6mat_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 57 linesace/ fileio/ private/ read_spike6mat_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 99 linesace/ fileio/ private/ read_spmeeg_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 78 linesace/ fileio/ private/ read_spmeeg_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 68 linesace/ fileio/ private/ read_spmeeg_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 136 linesace/ fileio/ private/ read_stl.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 46 linesace/ fileio/ private/ read_tdt_sev.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 4 linesace/ fileio/ private/ read_tdt_tbk.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 4 linesace/ fileio/ private/ read_tdt_tdx.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ fileio/ private/ read_tdt_tev.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 82 linesace/ fileio/ private/ read_tdt_tsq.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 235 linesace/ fileio/ private/ read_trigger.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 155 linesace/ fileio/ private/ read_videomeg_aud.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 126 linesace/ fileio/ private/ read_videomeg_vid.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 48 linesace/ fileio/ private/ read_vtk.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 98 linesace/ fileio/ private/ read_wdq_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 112 linesace/ fileio/ private/ read_wdq_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 295 linesace/ fileio/ private/ read_yokogawa_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 148 linesace/ fileio/ private/ read_yokogawa_data_new.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 186 linesace/ fileio/ private/ read_yokogawa_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 223 linesace/ fileio/ private/ read_yokogawa_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 232 linesace/ fileio/ private/ read_yokogawa_header_new .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 105 linesace/ fileio/ private/ read_zebris.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 96 linesace/ fileio/ private/ readbdf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 60 linesace/ fileio/ private/ readmarkerfile.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 46 linesace/ fileio/ private/ rmsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 254 linesace/ fileio/ private/ scalingfactor.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ fileio/ private/ setsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 125 linesace/ fileio/ private/ solid_angle.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ fileio/ private/ surf_to_tetgen.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 38 linesace/ fileio/ private/ time2offset.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ fileio/ private/ timestamp_neuralynx.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ fileio/ private/ timestamp_plexon.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 83 linesace/ fileio/ private/ tokenize.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ fileio/ private/ undobalancing.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 95 linesace/ fileio/ private/ volumewrite_spm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 139 linesace/ fileio/ private/ write_brainvision_eeg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ fileio/ private/ write_ctf_shm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 108 linesace/ fileio/ private/ write_edf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 150 linesace/ fileio/ private/ write_gdf.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 95 linesace/ fileio/ private/ write_neuralynx_ncs.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 67 linesace/ fileio/ private/ write_neuralynx_nts.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 82 linesace/ fileio/ private/ write_nifti2_hdr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 58 linesace/ fileio/ private/ write_off.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 215 linesace/ fileio/ private/ write_plexon_nex.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 120 linesace/ fileio/ private/ write_ply.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 109 linesace/ fileio/ private/ write_serial_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 60 linesace/ fileio/ private/ write_stl.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ fileio/ private/ write_vtk.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 221 linesace/ fileio/ private/ xml2struct.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 177 linesace/ fileio/ private/ yokogawa2grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 234 linesace/ fileio/ private/ yokogawa2grad_new.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 40 linesace/ fileio/ private/ yokogawa2vol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 39 linesace/ gifti/ @gifti/ Contents.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 25 linesace/ gifti/ @gifti/ display.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ gifti/ @gifti/ export.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 16 linesace/ gifti/ @gifti/ fieldnames.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 111 linesace/ gifti/ @gifti/ gifti.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 13 linesace/ gifti/ @gifti/ isfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ gifti/ @gifti/ plot.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ gifti/ @gifti/ private/ base64decode.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 157 linesace/ gifti/ @gifti/ private/ base64encode.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 19 linesace/ gifti/ @gifti/ private/ dunzip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 22 linesace/ gifti/ @gifti/ private/ dzip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 26 linesace/ gifti/ @gifti/ private/ getdict.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 111 linesace/ gifti/ @gifti/ private/ isintent.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 25 linesace/ gifti/ @gifti/ private/ read_freesurfer_file.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 196 linesace/ gifti/ @gifti/ private/ read_gifti_file.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 552 linesace/ gifti/ @gifti/ save.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 19 linesace/ gifti/ @gifti/ struct.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 83 linesace/ gifti/ @gifti/ subsasgn.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 60 linesace/ gifti/ @gifti/ subsref.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ gifti/ @xmltree/ Contents.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 94 linesace/ gifti/ @xmltree/ add.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 117 linesace/ gifti/ @xmltree/ attributes.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ gifti/ @xmltree/ branch.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 18 linesace/ gifti/ @xmltree/ char.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 31 linesace/ gifti/ @xmltree/ children.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 149 linesace/ gifti/ @xmltree/ convert.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 50 linesace/ gifti/ @xmltree/ copy.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ gifti/ @xmltree/ delete.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 22 linesace/ gifti/ @xmltree/ display.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 401 linesace/ gifti/ @xmltree/ editor.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 174 linesace/ gifti/ @xmltree/ find.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ gifti/ @xmltree/ flush.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ gifti/ @xmltree/ get.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 17 linesace/ gifti/ @xmltree/ getfilename.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 26 linesace/ gifti/ @xmltree/ isfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ gifti/ @xmltree/ length.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 22 linesace/ gifti/ @xmltree/ move.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 17 linesace/ gifti/ @xmltree/ parent.m - matlab_scripts/
read_write_cifti_32ksurf , C, 110 linesace/ gifti/ @xmltree/ private/ xml_findstr.c - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ gifti/ @xmltree/ private/ xml_findstr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 421 linesace/ gifti/ @xmltree/ private/ xml_parser.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ gifti/ @xmltree/ root.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 135 linesace/ gifti/ @xmltree/ save.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 27 linesace/ gifti/ @xmltree/ set.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 16 linesace/ gifti/ @xmltree/ setfilename.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 20 linesace/ gifti/ @xmltree/ view.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ gifti/ @xmltree/ xmltree.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 39 linesace/ utilities/ appendstruct.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 51 linesace/ utilities/ copyfields.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 34 linesace/ utilities/ ft_cfg2keyval.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 171 linesace/ utilities/ ft_channelcombination.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 492 linesace/ utilities/ ft_channelselection.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 752 linesace/ utilities/ ft_checkconfig.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,668 linesace/ utilities/ ft_checkdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 168 linesace/ utilities/ ft_checkopt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 221 linesace/ utilities/ ft_compile_mex.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 111 linesace/ utilities/ ft_convert_coordsys.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 11 linesace/ utilities/ ft_convert_grad.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 292 linesace/ utilities/ ft_datatype.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 173 linesace/ utilities/ ft_datatype_comp.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 38 linesace/ utilities/ ft_datatype_dip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 154 linesace/ utilities/ ft_datatype_freq.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 172 linesace/ utilities/ ft_datatype_headmodel.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 106 linesace/ utilities/ ft_datatype_mvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 184 linesace/ utilities/ ft_datatype_parcellation .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 316 linesace/ utilities/ ft_datatype_raw.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 259 linesace/ utilities/ ft_datatype_segmentation .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 455 linesace/ utilities/ ft_datatype_sens.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 339 linesace/ utilities/ ft_datatype_source.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 277 linesace/ utilities/ ft_datatype_spike.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 120 linesace/ utilities/ ft_datatype_timelock.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 186 linesace/ utilities/ ft_datatype_volume.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 257 linesace/ utilities/ ft_determine_coordsys.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 180 linesace/ utilities/ ft_documentationindex.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 133 linesace/ utilities/ ft_documentationreferenc e.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 202 linesace/ utilities/ ft_fetch_data.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 44 linesace/ utilities/ ft_fetch_event.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ utilities/ ft_fetch_header.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ utilities/ ft_findcfg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ utilities/ ft_getopt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 556 linesace/ utilities/ ft_hastoolbox.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 251 linesace/ utilities/ ft_headcoordinates.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ utilities/ ft_postamble.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 79 linesace/ utilities/ ft_preamble.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 326 linesace/ utilities/ ft_progress.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,285 linesace/ utilities/ ft_selectdata.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 1,357 linesace/ utilities/ ft_selectdata_new.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 672 linesace/ utilities/ ft_selectdata_old.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 44 linesace/ utilities/ ft_setopt.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 322 linesace/ utilities/ ft_source2full.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 62 linesace/ utilities/ ft_source2grid.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 167 linesace/ utilities/ ft_source2sparse.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 87 linesace/ utilities/ ft_struct2double.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 86 linesace/ utilities/ ft_struct2single.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 186 linesace/ utilities/ ft_trackusage.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 102 linesace/ utilities/ ft_transform_geometry.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 115 linesace/ utilities/ ft_version.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 258 linesace/ utilities/ ft_warning.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 204 linesace/ utilities/ ft_warp_apply.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ utilities/ ft_warp_error.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 210 linesace/ utilities/ ft_warp_optim.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 46 linesace/ utilities/ getsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 104 linesace/ utilities/ hasyokogawa.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ utilities/ issubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ utilities/ istrue.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 44 linesace/ utilities/ keepfields.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ utilities/ keyval.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ utilities/ keyval2cfg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 82 linesace/ utilities/ keyvalcheck.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 107 linesace/ utilities/ match_str.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 126 linesace/ utilities/ memtic.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 73 linesace/ utilities/ memtoc.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 185 linesace/ utilities/ nearest.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 194 linesace/ utilities/ printstruct.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 164 linesace/ utilities/ private/ align_ctf2spm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 142 linesace/ utilities/ private/ align_itab2spm.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 147 linesace/ utilities/ private/ avgoverdim.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 6 linesace/ utilities/ private/ avgoverlabel.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 159 linesace/ utilities/ private/ base64encode.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 334 linesace/ utilities/ private/ channelposition.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 50 linesace/ utilities/ private/ convert_segmentationstyl e.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 23 linesace/ utilities/ private/ cornerpoints.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 177 linesace/ utilities/ private/ dataset2files.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 69 linesace/ utilities/ private/ debugCleanup.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 48 linesace/ utilities/ private/ determine_segmentationst yle.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 231 linesace/ utilities/ private/ dimlength.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 220 linesace/ utilities/ private/ fixdimord.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ utilities/ private/ fixdipole.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ utilities/ private/ fixinside.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ utilities/ private/ fixname.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ utilities/ private/ fixpos.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 116 linesace/ utilities/ private/ fixsampleinfo.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 81 linesace/ utilities/ private/ fixsegmentation.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 421 linesace/ utilities/ private/ fixsource.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ utilities/ private/ fixvolume.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ utilities/ private/ ft_findcfg.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 244 linesace/ utilities/ private/ ft_platform_supports.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 41 linesace/ utilities/ private/ ft_postamble_debug.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 59 linesace/ utilities/ private/ ft_postamble_history.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ utilities/ private/ ft_postamble_previous.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 109 linesace/ utilities/ private/ ft_postamble_provenance. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 13 linesace/ utilities/ private/ ft_postamble_randomseed. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 52 linesace/ utilities/ private/ ft_postamble_savevar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 56 linesace/ utilities/ private/ ft_postamble_trackconfig .m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 89 linesace/ utilities/ private/ ft_preamble_debug.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 103 linesace/ utilities/ private/ ft_preamble_init.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 105 linesace/ utilities/ private/ ft_preamble_loadvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 125 linesace/ utilities/ private/ ft_preamble_provenance.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 40 linesace/ utilities/ private/ ft_preamble_randomseed.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ utilities/ private/ ft_preamble_trackconfig. m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ utilities/ private/ funargname.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ utilities/ private/ getaddress.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 32 linesace/ utilities/ private/ getdatfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 603 linesace/ utilities/ private/ getdimord.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 70 linesace/ utilities/ private/ getdimsiz.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 57 linesace/ utilities/ private/ gethostname.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 47 linesace/ utilities/ private/ getusername.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 65 linesace/ utilities/ private/ globalrescale.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 12 linesace/ utilities/ private/ hashvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 69 linesace/ utilities/ private/ icosahedron.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 28 linesace/ utilities/ private/ icosahedron42.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 145 linesace/ utilities/ private/ individual2sn.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 73 linesace/ utilities/ private/ labelcmb2indx.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 35 linesace/ utilities/ private/ leaveoneout.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 90 linesace/ utilities/ private/ lmoutr.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 61 linesace/ utilities/ private/ lmoutrn.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 43 linesace/ utilities/ private/ loadvar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 7 linesace/ utilities/ private/ memprofile.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 41 linesace/ utilities/ private/ mergeconfig.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ utilities/ private/ mxSerialize.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 42 linesace/ utilities/ private/ offset2time.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 115 linesace/ utilities/ private/ parameterselection.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 36 linesace/ utilities/ private/ pinvNx2.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 30 linesace/ utilities/ private/ plinprojn.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 33 linesace/ utilities/ private/ pos2dim.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 34 linesace/ utilities/ private/ pos2transform.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 112 linesace/ utilities/ private/ project_elec.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 72 linesace/ utilities/ private/ ptriproj.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 41 linesace/ utilities/ private/ ptriprojn.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 119 linesace/ utilities/ private/ randomseed.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 122 linesace/ utilities/ private/ refine.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ utilities/ private/ rigidbody.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 124 linesace/ utilities/ private/ rotate.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 24 linesace/ utilities/ private/ savevar.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 57 linesace/ utilities/ private/ scale.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 254 linesace/ utilities/ private/ scalingfactor.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 103 linesace/ utilities/ private/ selfromraw.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 167 linesace/ utilities/ private/ seloverdim.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 37 linesace/ utilities/ private/ selparam.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 47 linesace/ utilities/ private/ smartinput.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 64 linesace/ utilities/ private/ sn2individual.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 38 linesace/ utilities/ private/ time2offset.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 69 linesace/ utilities/ private/ traditional.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 55 linesace/ utilities/ private/ translate.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 53 linesace/ utilities/ private/ undobalancing.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 157 linesace/ utilities/ private/ unparcellate.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 52 linesace/ utilities/ private/ volumefillholes.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 85 linesace/ utilities/ private/ volumeflip.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 48 linesace/ utilities/ private/ volumepermute.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 20 linesace/ utilities/ private/ volumesmooth.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 44 linesace/ utilities/ private/ volumethreshold.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 44 linesace/ utilities/ removefields.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 46 linesace/ utilities/ rmsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 54 linesace/ utilities/ setsubfield.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 22 linesace/ utilities/ strel_bol.m - matlab_scripts/
read_write_cifti_32ksurf , MATLAB, 83 linesace/ utilities/ tokenize.m - matlab_scripts/
split_groups.py , Python, 48 lines - medic_analysis/
__init__.py , Python, 1 line - medic_analysis/
common/ , Python, 14 lines__init__.py - medic_analysis/
common/ , Python, 113 linesalign.py - medic_analysis/
common/ , Python, 18 linesbias_field.py - medic_analysis/
common/ , Python, 93 linesdistortion.py - medic_analysis/
common/ , Python, 358 linesfigures.py - medic_analysis/
scripts/ , Python, 38 lines__init__.py - medic_analysis/
scripts/ , Python, 438 lines, 2 matchesalignment_metrics.py - medic_analysis/
scripts/ , Python, 108 linescerebellum_surface.py - medic_analysis/
scripts/ , Python, 420 lineshead_position_processing .py - medic_analysis/
scripts/ , Python, 1,752 lines, 9 matchespaper_figures.py - medic_analysis/
scripts/ , Python, 508 linesresp_processing.py - medic_analysis/
scripts/ , Python, 135 linestSNR_processing.py - setup.py, Python, 18 lines
- LICENSE, License, 21 lines
- README.md, Text, 53 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 665 scripts, each with its path and the digest of its content;
- 20 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data and Code Availability
The implementation for MEDIC is found at https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 33 authors, 3 keywords, 1 funder, 62 references.
Cite
This paper
Van, A. N., Montez, D. F., Laumann, T. O., Cho, P. N., Suljic, V., Madison, T., Baden, N. J., Ramirez-Perez, N., Scheidter, K. M., Monk, J. S., Whiting, F. I., Adeyemo, B., Chauvin, R. J., Krimmel, S. R., Metoki, A., Rajesh, A., Roland, J. L., Salo, T., Wang, A., . . . Dosenbach, N. U. (2026). Frame-wise multi-echo distortion correction for superior functional MRI. Imaging neuroscience (Cambridge, Mass.), 4, IMAG.a.1262. https://
BibTeX
@article{van2026frame,
author = {Van, Andrew N and Montez, David F and Laumann, Timothy O and Cho, Philip N and Suljic, Vahdeta and Madison, Thomas and Baden, Noah J and Ramirez-Perez, Nadeshka and Scheidter, Kristen M and Monk, Julia S and Whiting, Forrest I and Adeyemo, Babatunde and Chauvin, Roselyne J and Krimmel, Samuel R and Metoki, Athanasia and Rajesh, Aishwarya and Roland, Jarod L and Salo, Taylor and Wang, Anxu and Weldon, Kimberly B and Sotiras, Aristeidis and Shimony, Joshua S and Kay, Benjamin P and Nelson, Steven M and Tervo-Clemmens, Brenden and Marek, Scott A and Vizioli, Luca and Yacoub, Essa and Satterthwaite, Theodore D and Gordon, Evan M and Fair, Damien A and Tisdall, M Dylan and Dosenbach, Nico UF},
title = {{Frame-wise multi-echo distortion correction for superior functional MRI}},
journal = {Imaging neuroscience (Cambridge, Mass.)},
year = {2026},
month = may,
volume = {4},
pages = {IMAG.a.1262},
publisher = {MIT Press},
issn = {2837-6056},
doi = {10.1162/
url = {https://
pmid = {42232073},
pmcid = {PMC13224312}
}
RIS
TY - JOUR
AU - Van, Andrew N
AU - Montez, David F
AU - Laumann, Timothy O
AU - Cho, Philip N
AU - Suljic, Vahdeta
AU - Madison, Thomas
AU - Baden, Noah J
AU - Ramirez-Perez, Nadeshka
AU - Scheidter, Kristen M
AU - Monk, Julia S
AU - Whiting, Forrest I
AU - Adeyemo, Babatunde
AU - Chauvin, Roselyne J
AU - Krimmel, Samuel R
AU - Metoki, Athanasia
AU - Rajesh, Aishwarya
AU - Roland, Jarod L
AU - Salo, Taylor
AU - Wang, Anxu
AU - Weldon, Kimberly B
AU - Sotiras, Aristeidis
AU - Shimony, Joshua S
AU - Kay, Benjamin P
AU - Nelson, Steven M
AU - Tervo-Clemmens, Brenden
AU - Marek, Scott A
AU - Vizioli, Luca
AU - Yacoub, Essa
AU - Satterthwaite, Theodore D
AU - Gordon, Evan M
AU - Fair, Damien A
AU - Tisdall, M Dylan
AU - Dosenbach, Nico UF
TI - Frame-wise multi-echo distortion correction for superior functional MRI
T2 - Imaging neuroscience (Cambridge, Mass.)
J2 - Imaging Neurosci (Camb)
PY - 2026
DA - 2026/
VL - 4
SP - IMAG.a.1262
SN - 2837-6056
PB - MIT Press
DO - 10.1162/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1162/
"type": "article-journal",
"title": "Frame-wise multi-echo distortion correction for superior functional MRI",
"container-title": "Imaging neuroscience (Cambridge, Mass.)",
"author": [
{
"family": "Van",
"given": "Andrew N"
},
{
"family": "Montez",
"given": "David F"
},
{
"family": "Laumann",
"given": "Timothy O"
},
{
"family": "Cho",
"given": "Philip N"
},
{
"family": "Suljic",
"given": "Vahdeta"
},
{
"family": "Madison",
"given": "Thomas"
},
{
"family": "Baden",
"given": "Noah J"
},
{
"family": "Ramirez-Perez",
"given": "Nadeshka"
},
{
"family": "Scheidter",
"given": "Kristen M"
},
{
"family": "Monk",
"given": "Julia S"
},
{
"family": "Whiting",
"given": "Forrest I"
},
{
"family": "Adeyemo",
"given": "Babatunde"
},
{
"family": "Chauvin",
"given": "Roselyne J"
},
{
"family": "Krimmel",
"given": "Samuel R"
},
{
"family": "Metoki",
"given": "Athanasia"
},
{
"family": "Rajesh",
"given": "Aishwarya"
},
{
"family": "Roland",
"given": "Jarod L"
},
{
"family": "Salo",
"given": "Taylor"
},
{
"family": "Wang",
"given": "Anxu"
},
{
"family": "Weldon",
"given": "Kimberly B"
},
{
"family": "Sotiras",
"given": "Aristeidis"
},
{
"family": "Shimony",
"given": "Joshua S"
},
{
"family": "Kay",
"given": "Benjamin P"
},
{
"family": "Nelson",
"given": "Steven M"
},
{
"family": "Tervo-Clemmens",
"given": "Brenden"
},
{
"family": "Marek",
"given": "Scott A"
},
{
"family": "Vizioli",
"given": "Luca"
},
{
"family": "Yacoub",
"given": "Essa"
},
{
"family": "Satterthwaite",
"given": "Theodore D"
},
{
"family": "Gordon",
"given": "Evan M"
},
{
"family": "Fair",
"given": "Damien A"
},
{
"family": "Tisdall",
"given": "M Dylan"
},
{
"family": "Dosenbach",
"given": "Nico UF"
}
],
"container-title-short":
"volume": "4",
"page": "IMAG.a.1262",
"DOI": "10.1162/
"PMID": "42232073",
"PMCID": "PMC13224312",
"ISSN": "2837-6056",
"publisher": "MIT Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
29
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1016/j.neuron.2026.04.011 [code]
- Precision fMRI reveals densely interdigitated network patches with conserved motifs in the lateral prefrontal cortex.Journal: NeuronIn common: Connectome Workbench, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 12 other tools, fMRI, 7 references
- [2] doi:10.1162/imag.a.1222 [code]
- Network-based near-scalp personalized brain stimulation targets.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Connectome Workbench, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 11 other tools, 6 references
- [3] doi:10.1002/hbm.70621 [code]
- Optimising 7T-fMRI for Imaging Regions of Magnetic Susceptibility.Journal: Human brain mappingIn common: HeuDiConv, Tools for NIfTI and ANALYZE image (MATLAB), FieldTrip, 4 other tools, fMRI, 10 references
- [4] doi:10.1038/s41467-026-73668-y [code]
- Convergent and divergent brain-cognition development in early adolescence.Journal: Nature communicationsIn common: Connectome Workbench, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 13 other tools, fMRI, 3 references
- [5] doi:10.1038/s41586-026-10631-3 [code]
- A prognostic human brain network for diffuse midline glioma.Journal: NatureIn common: pydicom, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 15 other tools, 1 reference
- [6] doi:10.1038/s41467-026-71151-2 [code]
- Common and distinct neural correlates of social interaction processing and theory of mind in narratives.Journal: Nature communicationsIn common: Connectome Workbench, GIfTI library for MATLAB, Optimization Toolbox, 15 other tools, 1 reference
- [7] doi:10.1162/imag.a.1198 [code]
- MEPrep: A robust pipeline for multi-echo fMRI denoising and preprocessing.Journal: Imaging neuroscience (Cambridge, Mass.)In common: PyBIDS, FreeSurfer, FSL, 8 other tools, fMRI, 8 references
- [8] doi:10.1111/ene.70678 [code]
- Who Falls After a Stroke? Evidence From a Prospective Stroke Cohort.Journal: European journal of neurologyIn common: pydicom, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 13 other tools, 2 references
- [9] doi:10.1162/netn.a.547 [code]
- An evaluation of the efficacy of single-echo and multi-echo fMRI denoising strategies.Journal: Network neuroscience (Cambridge, Mass.)In common: FreeSurfer, FSL, Nilearn, 6 other tools, fMRI, 10 references
- [10] doi:10.1016/j.celrep.2026.117404 [code]
- Action and rest tremor map to distinct networks within the primary motor cortex.Journal: Cell reportsIn common: pydicom, GIfTI library for MATLAB, Tools for NIfTI and ANALYZE image (MATLAB), 13 other tools, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 3 repositories of the authors' code, each at its verified commit and with its license, 665 scripts, and 20 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:3f0fc0b9bc043d20…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
