Skip to content

Commit

Permalink
[ENH] Compress recon derivatives (#787)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattcieslak authored Jul 18, 2024
1 parent 6a00f6c commit 83dd70f
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 18 deletions.
16 changes: 16 additions & 0 deletions qsiprep/interfaces/recon_scalars.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ class _ReconScalarsDataSinkInputSpec(BaseInterfaceInputSpec):
base_directory = File()
resampled_files = InputMultiObject(File(exists=True))
recon_scalars = InputMultiObject(traits.Any())
compress = traits.Bool(True, usedefault=True)


class ReconScalarsDataSink(SimpleInterface):
Expand All @@ -114,6 +115,14 @@ class ReconScalarsDataSink(SimpleInterface):

def _run_interface(self, runtime):

force_compress = False
force_decompress = False
if isdefined(self.inputs.compress):
if self.inputs.compress:
force_compress = True
else:
force_decompress = True

for recon_scalar in self.inputs.recon_scalars:
output_filename = get_recon_output_name(
base_dir=self.inputs.base_directory,
Expand All @@ -123,6 +132,13 @@ def _run_interface(self, runtime):
output_bids_entities=recon_scalar["bids"],
use_ext=True,
)

if force_decompress and output_filename.endswith(".gz"):
output_filename = output_filename.rstrip(".gz")

if force_compress and not output_filename.endswith(".gz"):
output_filename += ".gz"

output_dir = op.dirname(output_filename)
os.makedirs(output_dir, exist_ok=True)
_copy_any(recon_scalar["path"], output_filename)
Expand Down
4 changes: 2 additions & 2 deletions qsiprep/tests/data/autotrack_outputs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ qsirecon
qsirecon-DSIStudio
qsirecon-DSIStudio/sub-ABCD
qsirecon-DSIStudio/sub-ABCD/dwi
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusL_streamlines.tck
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusR_streamlines.tck
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusL_streamlines.tck.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusR_streamlines.tck.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundlestats.csv
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_dwimap.fib.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_mapping.map.gz
Expand Down
4 changes: 2 additions & 2 deletions qsiprep/tests/data/scalar_mapper_outputs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-MNI152NLin2009cAsym_
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-MNI152NLin2009cAsym_desc-preproc_model-tensor_mfp-tyy_dwimap.nii.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-MNI152NLin2009cAsym_desc-preproc_model-tensor_mfp-tyz_dwimap.nii.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-MNI152NLin2009cAsym_desc-preproc_model-tensor_mfp-tzz_dwimap.nii.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusL_streamlines.tck
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusR_streamlines.tck
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusL_streamlines.tck.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundle-Association_ArcuateFasciculusR_streamlines.tck.gz
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundles-DSIStudio_scalarstats.tsv
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundles-DSIStudio_tdistats.tsv
qsirecon-DSIStudio/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_bundlestats.csv
Expand Down
26 changes: 13 additions & 13 deletions qsiprep/tests/data/tortoise_recon_outputs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ qsirecon
qsirecon-TORTOISE
qsirecon-TORTOISE/sub-ABCD
qsirecon-TORTOISE/sub-ABCD/dwi
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NG_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NGpar_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NGperp_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-PA_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-PAth_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTAP_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTOP_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTPP_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-ad_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-fa_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-li_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-rd_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mfp-AM_dwimap.nii
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NG_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NGpar_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-NGperp_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-PA_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-PAth_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTAP_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTOP_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-mapmri_mdp-RTPP_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-ad_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-fa_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-li_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mdp-rd_dwimap.nii.gz
qsirecon-TORTOISE/sub-ABCD/dwi/sub-ABCD_acq-10per000_space-T1w_desc-preproc_model-tensor_mfp-AM_dwimap.nii.gz
qsirecon/sub-ABCD
4 changes: 3 additions & 1 deletion qsiprep/workflows/recon/dsi_studio.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,9 @@ def init_dsi_studio_autotrack_wf(

# Save tck files of the bundles into the outputs
ds_tckfiles = pe.MapNode(
ReconDerivativesDataSink(suffix="streamlines", qsirecon_suffix=qsirecon_suffix),
ReconDerivativesDataSink(
suffix="streamlines", qsirecon_suffix=qsirecon_suffix, compress=True
),
iterfield=["in_file", "bundle"],
name="ds_tckfiles",
)
Expand Down

0 comments on commit 83dd70f

Please sign in to comment.