Two parcels in the 4S1056 atlas (RH_Vis_33 and RH_Cont_Cing_1) appear to have no assigned vertices

Summary of what happened:

Dear experts,

I’m using the 4S1056 atlas distributed with XCP-D and noticed that two parcels seem to have no vertices assigned:

  • RH_Vis_33 (label key 533)

  • RH_Cont_Cing_1 (label key 903)

I first noticed this because the corresponding columns in the XCP-D timeseries TSV files are entirely NaN for every run, every subject, and every preprocessing pipeline that I tested.

To investigate further, I checked the atlas itself.

The labels are present in the atlas label table (e.g., via wb_command -file-information):

533   7Networks_RH_Vis_33
903   7Networks_RH_Cont_Cing_1

However, when I load the atlas in Python and count the number of vertices assigned to each label,

import nibabel as nib
import numpy as np

atlas = nib.load(
    "atlas-4S1056Parcels_space-fsLR_den-91k_dseg.dlabel.nii"
)

data = atlas.get_fdata().squeeze()

print(np.sum(data == 533))
print(np.sum(data == 903))

I obtain

0
0

In other words, the labels exist in the label table, but no vertices in the atlas appear to be assigned to either label. This seems consistent with XCP-D producing all-NaN timeseries for these two parcels across all subjects and pipelines that I tested.

Is this expected for the 4S1056 atlas? Are these parcels intentionally empty (for example because they disappeared during resampling to fsLR-91k), or does this indicate an issue with the atlas distributed with XCP-D?

Thank you for your help!
Nadza

Command used (and if a helper script was used, a link to the helper script or the command generated):

docker run --rm \
    -v "/ASDPrecision/":/project:ro \
    -v "/ASDPrecision/data/bids/derivatives/xcpd_multiverse/censor_24Pacompcor_sm0_bandpass":/out:rw \
    -v "/ASDPrecision/data/license.txt":/opt/freesurfer/license.txt \
    pennlinc/xcp_d:26.0.2 \
    /project/data/bids/derivatives/fmriprep /out participant \
    --participant-label sub-001 \
    --combine-runs n \
    --mode none \
    --datasets custom=/project/data/bids/derivatives/custom_confounds/24Pacompcor --nuisance-regressors /project/data/bids/derivatives/custom_confounds/24Pacompcor.yaml \
    --despike n --fd-thresh 0.3 \
    --lower-bpf 0.01 --upper-bpf 0.08 \
    --smoothing 0 \
    --abcc-qc n \
    --file-format cifti \
    --input-type fmriprep \
    --linc-qc y \
    --min-coverage 0.5 \
    --motion-filter-type none \
    --output-run-wise-correlation n \
    --output-type censored \
    --warp-surfaces-native2std n \
    --fs-license-file /opt/freesurfer/license.txt 

Version:

26.0.2

Environment (Docker, Singularity / Apptainer, custom installation):

Docker

Data formatted according to a validatable standard? Please provide the output of the validator:

BIDS

PASTE VALIDATOR OUTPUT HERE

Relevant log outputs (up to 20 lines):

PASTE LOG OUTPUT HERE

Screenshots / relevant information:


Actually this is a weird one. The Schaefer 1000 atlas doesn’t contain those two parcels at the resolutions we used for 4S, including fsLR-91k, so they are intentially empty.

Hi Taylor,

Thanks very much for confirming this is the case.