Error processing infant data with QSIRecon

Summary of what happened:

I’m trying to process infant data with QSIRecon using my own custom workflow. Originally I was using hbcd_scalar_maps but ran into errors with DKI because my subject only had two b values (0 and 1000). I created my own workflow that does everything in hbcd_scalar_maps except DKI, but I ran into another error with tractography. Specifically: “no tractography atlas in dHCP_neonate template at {root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk/sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gze”

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

/opt/conda/envs/qsiprep/bin/qsirecon {root_dir}/QSI/preproc/qsiprep_output {root_dir}/QSI/recon/qsirecon_output participant --participant-label Subject1 --fs-license-file /opt/freesurfer/license.txt --recon-spec {root_dir}/QSI/recon/hie_scalar_maps.yaml --infant --nthreads 8 --omp-nthreads 8 --notrack -w {root_dir}/QSI/recon/qsirecon_work -v -v

Version:

1.2.0

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

Apptainer

Relevant log outputs (up to 20 lines):

--Traceback (most recent call last):
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node actual_trk.
Cmdline:
	dsi_studio_chen --action=atk --export_trk=1 --source={root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk/sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gz --thread_count=8 --output={root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk --template=0 --tolerance=22,26,30 --track_id=Association,Projection,Commissure,Cerebellum --track_voxel_ratio=2.00 --trk_format=trk.gz --yield_rate=0.0000010000
Stdout:
	e[1;34mDSI Studio version: Chen"陳" Jan 14 2026e[0m
	│ DSI Studio version: Chen"陳"
	│ action=atk
	│ source={root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-PBI006_hbcd_postproc_beta/Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk/sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gz
	│ loop={root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk/sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gz
	├─e[1;34mrun atke[0m
	│ │ tolerance=22,26,30
	│ │ track_voxel_ratio=2.00
	│ │ yield_rate=0.0000010000
	│ │ export_stat=1
	│ │ export_trk=1
	│ │ overwrite=0
	│ │ export_template_trk=0
	│ │ check_ending=1
	│ │ thread_count=8
	│ │ trk_format=trk.gz
	│ │ stat_format=stat.txt
	│ │ track_id=Association,Projection,Commissure,Cerebellum
	│ │ output={root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk
	│ ├─e[1;34mautomatic fiber trackinge[0m
	│ │ │ processing sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi
	│ │ │ template 0:"ICBM152_adult.QA.nii"
	│ │ │ template 1:"C57BL6_mouse.QA.nii"
	│ │ │ template 2:"dHCP_neonate.QA.nii"
	│ │ │ template 3:"INDI_rhesus.QA.nii"
	│ │ │ template 4:"Pitt_marmoset.QA.nii"
	│ │ │ template 5:"WHS_SD_rat.QA.nii"
	│ │ │ template=0
	│ │ ├─e[1;34mtracking pathwayse[0m
	│ │ │ │ Association_ArcuateFasciculusL
	│ │ │ ├─e[1;34mopen FIB file sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gze[0m
	│ │ │ │ │ loading fiber and image data
	│ │ │ │ ├─e[1;34mloading image volumese[0m
	│ │ │ │ │ └─7 ms
	│ │ │ │ │ initiating data
	│ │ │ │ │ FIB file loaded
	│ │ │ │ └─586 ms
	│ │ │ ├─e[1;34mloading tractography atlase[0m
	│ │ │ │ └─0 ms
	│ │ │ └─604 ms
	│ │ └─625 ms
	│ │ e[1;31mERROR:no tractography atlas in dHCP_neonate template at {root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk/sub-Subject1_ses-1_acq-PA_run-001_space-ACPC_desc-preproc_dwi.src.gz.odf.gqi.1.25.fib.gze[0m
	│ └─642 ms
	└─645 ms
Stderr:
Traceback:
	Traceback (most recent call last):
	  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 404, in run
	    outputs = self.aggregate_outputs(runtime)
	  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 433, in aggregate_outputs
	    predicted_outputs = self._list_outputs()  # Predictions from _list_outputs
	  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsirecon/interfaces/dsi_studio.py", line 845, in _list_outputs
	    raise Exception("No map files found in " + str(cwd.absolute()))
	Exception: No map files found in {root_dir}/QSI/recon/qsirecon_work/qsirecon_1_2_wf/sub-Subject1_hbcd_postproc_beta/sub_Subject1_ses_1_acq_PA_run_001_space_ACPC_desc_preproc_recon_wf/autotrackgqi/actual_trk
>

Screenshots / relevant information:


Hi @scchung,

May you please share your recon spec?

Best,

Steven

@Steven

anatomical: []
name: hbcd_postproc_beta
description: |
    hbcd_postproc_beta is the pipeline used by the HEALthy Brain and Child Development Study
    to process diffusion MRI data [@cieslak2025diffusion].
space: T1w
nodes:

-   action: estimate
    input: qsirecon
    name: tortoise_dtmapmri
    parameters:
        big_delta: null
        estimate_mapmri:
            map_order: 4
        estimate_tensor:
            bval_cutoff: 1200
            write_cs: true
        estimate_tensor_separately: true
        small_delta: null
    qsirecon_suffix: TORTOISE_model-MAPMRI
    software: TORTOISE

-   action: estimate
    input: qsirecon
    name: tortoise_fullshell_tensor
    parameters:
        big_delta: null
        estimate_tensor:
            bval_cutoff: 4000
            write_cs: true
        estimate_tensor_separately: true
        small_delta: null
    qsirecon_suffix: TORTOISE_model-tensor
    software: TORTOISE

-   action: reconstruction
    input: qsirecon
    name: dsistudio_gqi
    parameters:
        method: gqi
    qsirecon_suffix: DSIStudio
    software: DSI Studio

-   action: autotrack
    input: dsistudio_gqi
    name: autotrackgqi
    parameters:
        dsi_studio_version: chen
        tolerance: 22,26,30
        track_id: Association,Projection,Commissure,Cerebellum
        track_voxel_ratio: 2.0
        yield_rate: 1.0e-06
    qsirecon_suffix: DSIStudio
    software: DSI Studio

-   action: export
    input: dsistudio_gqi
    name: gqi_scalars
    qsirecon_suffix: DSIStudio
    software: DSI Studio

-   action: bundle_map
    input: autotrackgqi
    name: bundle_means
    scalars_from:
    - gqi_scalars
    - tortoise_fullshell_tensor
    - tortoise_dtmapmri
    software: qsirecon

-   action: template_map
    input: qsirecon
    name: template_map
    parameters:
        interpolation: NearestNeighbor
    scalars_from:
    - gqi_scalars
    - tortoise_fullshell_tensor
    - tortoise_dtmapmri
    software: qsirecon

This is super strange: the log says we picked adult (which we do) but then it’s looking for streamlines in dHCP neonate. Was autotrack working in hbcd_scalar_maps? It’s also very strange that the version is reported as Chen"陳" Jan 14 2026e, which is way after we ran it successfully on hbcd

@mattcieslak No, I got the same errors with autotrack even when I ran the original hbcd_scalar_maps

Hi @scchung,

While we figure this out, you should be able to get outputs rolling back to QSIRecon 1.0.1 (the same version used for HBCD).

Best,

Steven

1 Like

Is there any update on this? I just ran this on my data and got the same error

Hi @pollaro and @scchung ,

For now, no update. With all of the dependencies needed to update things like DIPY, the old version of DSI Studio became unable to compile in the newer versions of QSIRecon. That being said, if you want to run tractography in QSIRecon 1.0.1 and then use newer QSIRecon versions to avail yourself of the more recent microstructural measures (such as the DKI-Micro model), you can do that by making a custom recon spec. The only downside is that you won’t be able to get the automatic metric-to-bundle mapping for the nice tabular data. That can be done after the fact though with custom code. Or if you do not care about some of the more recent microstructural models, you can just do everything in 1.0.1 like we did with HBCD.

We are working on a unified BIDS derivatives mapper that allows for bundle-metric mapping of any metric map. Once that is incorporated into QSIRecon, we anticipate no longer needing to do bundle-metric mapping after the fact if you do this two-version approach; although the DSI Studio compile issue may persist for a bit longer.

In the meantime, you can try this custom code to do bundle mapping outside of QSIRecon if you do the two-version approach (adapted from the official QSIRecon workflows): https://drive.google.com/file/d/1E6WtApd9KXzmXBrl-cQi_uM9TqsfcPhr/view?usp=sharing

Best,

Steven

@Steven Thanks for the update.
This should work for now. We’re not looking for the deepest and most in-depth analysis as of now. Just some proof of concept and learning as we test out some plans. I’ll let you know if anything else happens

Hi @scchung and @pollaro ,

We’ve actually now implemented a fix for this problem (in particular, the “Chen” version of DSI Studio compiling): Fix DSI Studio Chen build for hbcd_scalar_maps by mattcieslak · Pull Request #394 · PennLINC/qsirecon · GitHub! Soon you will see a new unstable version of the Docker container (pennlinc/qsirecon - Docker Image). When you see it, please pull it and test it out!

Thanks for your patience,

Steven

1 Like