Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fieldmaps for multiple techniques #2790

Closed
xuyangwen opened this issue Jun 6, 2022 · 5 comments
Closed

Fieldmaps for multiple techniques #2790

xuyangwen opened this issue Jun 6, 2022 · 5 comments

Comments

@xuyangwen
Copy link

xuyangwen commented Jun 6, 2022

We are now using fMRIPrep 21.02 to preprocess data. We collected both the field maps for phase-difference B0 estimation and the images for PEPOLAR techniques. The current documents do not show how the fMRIPrep v21.02 deals with the field maps for different correction methods. Will it do both, or try it based on priorities?

Another thing we found is that the fMRIPrep v21.02 follows the "IntendedFor" information in the field maps for phase-difference B0 estimation. However, it ignores the "IntendedFor" information in the field maps for PEPOLAR techniques and combines all the field maps together. If this is true, the documents should also add this information.

Do you have any suggestions for the new documents?
The new documents should add information about how fMRIPrep deals with the field maps from multiple techniques and whether different techniques have different attitudes towards the "IntendedFor" information.

@effigies
Copy link
Member

Hi, apologies for the slow response. There is a priority list, but it's no longer documented. We have some open issues, which have been allowed to go stale:

#2560
#2332

Looking at https://github.com/nipreps/sdcflows/blob/master/sdcflows/utils/wrangler.py, here is the priority list:

  1. Use of B0FieldSource
  2. Direct fieldmaps (*_fieldmap.nii) specified with IntendedFor
  3. Phase-difference fieldmaps (*_phasediff.nii) specified with IntendedFor
  4. Two-phase fieldmaps (*_phase{1,2}.nii) specified with IntendedFor
  5. PEPOLAR fieldmaps (2x *_epi.nii) specified with IntendedFor
  6. Reverse-phase-encoding fieldmaps (*_epi.nii where the alternative direction is _bold.nii) specified with IntendedFor

However, it ignores the "IntendedFor" information in the field maps for PEPOLAR techniques and combines all the field maps together. If this is true, the documents should also add this information.

Could you give a more concrete description of what your dataset and metadata look like? This seems surprising, so it might be a bug.

Do you have any suggestions for the new documents?
The new documents should add information about how fMRIPrep deals with the field maps from multiple techniques and whether different techniques have different attitudes towards the "IntendedFor" information.

Agreed.

@xuyangwen
Copy link
Author

Thanks for the response! We now know the priority list.

However, it ignores the "IntendedFor" information in the field maps for PEPOLAR techniques and combines all the field maps together. If this is true, the documents should also add this information.

Could you give a more concrete description of what your dataset and metadata look like? This seems surprising, so it might be a bug.

We had eight runs. For every two runs, we have one pair of PEPOLAR field maps (dir-ap and dir-pa) intended for these two runs. So, we have four pairs PEPOLAR field maps in total. The fmriprep 21.02 should implement four SDC estimations. However, it just did once. Please tell me if anything is not clear.

We also found some image artifacts when using fmriprep 21.02 to implement SDC correction. But we did not find it using SPM or FSL. Maybe we should report it in another issue?

@effigies
Copy link
Member

We had eight runs. For every two runs, we have one pair of PEPOLAR field maps (dir-ap and dir-pa) intended for these two runs. So, we have four pairs PEPOLAR field maps in total. The fmriprep 21.02 should implement four SDC estimations. However, it just did once. Please tell me if anything is not clear.

Sorry, I meant could you share a listing of your file tree, and the contents of the JSON files for your fieldmaps and BOLD files?

@xuyangwen
Copy link
Author

OK. This is our file tree with only the PEPOLAR field maps:

DatasetRootFolder
├── sub-***
│   ├── anat
│   │   ├── sub-***_T1w.json
│   │   └── sub-***_T1w.nii.gz
│   ├── fmap
│   │   ├── sub-***_dir-ap_run-01_epi.json
│   │   ├── sub-***_dir-ap_run-01_epi.nii.gz
│   │   ├── sub-***_dir-ap_run-02_epi.json
│   │   ├── sub-***_dir-ap_run-02_epi.nii.gz
│   │   ├── sub-***_dir-ap_run-03_epi.json
│   │   ├── sub-***_dir-ap_run-03_epi.nii.gz
│   │   ├── sub-***_dir-ap_run-04_epi.json
│   │   ├── sub-***_dir-ap_run-04_epi.nii.gz
│   │   ├── sub-***_dir-pa_run-01_epi.json
│   │   ├── sub-***_dir-pa_run-01_epi.nii.gz
│   │   ├── sub-***_dir-pa_run-02_epi.json
│   │   ├── sub-***_dir-pa_run-02_epi.nii.gz
│   │   ├── sub-***_dir-pa_run-03_epi.json
│   │   ├── sub-***_dir-pa_run-03_epi.nii.gz
│   │   ├── sub-***_dir-pa_run-04_epi.json
│   │   └── sub-***_dir-pa_run-04_epi.nii.gz
│   └── func
│       ├── sub-***_task-alloego_run-01_bold.json
│       ├── sub-***_task-alloego_run-01_bold.nii.gz
│       ├── sub-***_task-alloego_run-02_bold.json
│       ├── sub-***_task-alloego_run-02_bold.nii.gz
│       ├── sub-***_task-alloego_run-03_bold.json
│       ├── sub-***_task-alloego_run-03_bold.nii.gz
│       ├── sub-***_task-alloego_run-04_bold.json
│       ├── sub-***_task-alloego_run-04_bold.nii.gz
│       ├── sub-***_task-alloego_run-05_bold.json
│       ├── sub-***_task-alloego_run-05_bold.nii.gz
│       ├── sub-***_task-alloego_run-06_bold.json
│       ├── sub-***_task-alloego_run-06_bold.nii.gz
│       ├── sub-***_task-oddball_run-01_bold.json
│       ├── sub-***_task-oddball_run-01_bold.nii.gz
│       ├── sub-***_task-oddball_run-02_bold.json
│       └── sub-***_task-oddball_run-02_bold.nii.gz
├── dataset_description.json
└── README

Here is the JSON file of one of the dir-ap images. I anonymized the participant's and institutions' information. You can find the "IntendedFor" at the end.

{"Modality":"MR","MagneticFieldStrength":3,"ImagingFrequency":123.255,"Manufacturer":"Siemens","ManufacturersModelName":"Prisma","InstitutionName":"Degli Studi Di ***","InstitutionalDepartmentName":"Department","InstitutionAddress":"Italia","DeviceSerialNumber":"656","StationName":"AWP166073","BodyPartExamined":"BRAIN","PatientPosition":"HFS","ProcedureStepDescription”:”SpaceTime","SoftwareVersions":"syngo MR E11","MRAcquisitionType":"2D","SeriesDescription":"ep2d_se_distcorr_AP_3mm-iso","ProtocolName":"ep2d_se_distcorr_AP_3mm-iso","ScanningSequence":"EP","SequenceVariant":"SK\\SP","ScanOptions":"PFP\\SAT1\\FS","SequenceName":"*epse2d1_66","ImageType":["ORIGINAL","PRIMARY","M","ND","NORM"],"SeriesNumber":8,"AcquisitionTime":"13:27:51.472500","AcquisitionNumber":1,"SliceThickness":3,"SpacingBetweenSlices":3,"SAR":0.439307,"EchoTime":0.028,"RepetitionTime":1.32,"SpoilingState":true,"FlipAngle":90,"PartialFourier":0.875,"BaseResolution":66,"ShimSetting":[1505,-7384,-7822,264,126,12,199,54],"TxRefAmp":253.186,"PhaseResolution":1,"ReceiveCoilName":"HeadNeck_64","ReceiveCoilActiveElements":"HC1-7;NC1","PulseSequenceDetails":"%SiemensSeq%\\ep2d_se","RefLinesPE":24,"CoilCombinationMethod":"Sum of Squares","ConsistencyInfo":"N4_VE11C_LATEST_20160120","MatrixCoilMode":"GRAPPA","PercentPhaseFOV":100,"PercentSampling":100,"EchoTrainLength":29,"PhaseEncodingSteps":58,"AcquisitionMatrixPE":66,"ReconMatrixPE":66,"BandwidthPerPixelPhaseEncode":40.95,"ParallelReductionFactorInPlane":2,"EffectiveEchoSpacing":0.00037,"DerivedVendorReportedEchoSpacing":0.000740001,"TotalReadoutTime":0.02405,"PixelBandwidth":1515,"DwellTime":5E-6,"PhaseEncodingDirection":"j-","SliceTiming":[0,5.28125,10.5625,0.0625,5.34375,10.625,0.125,5.40625,10.6875,0.1875,5.46875,10.75,0.25,5.53125,10.8125,0.29688,5.57812,10.875,0.35938,5.64062,10.9375,0.42188,5.70312,11,0.48438,5.76562,11.0625,0.54688,5.82812,11.125,0.60938,5.89062,11.1875,0.65625,5.9375,11.25,0.71875,6,11.3125,0.78125,6.0625,11.375,0.84375,6.125,11.4375,0.90625,6.1875,11.5156,0.96875,6.25,11.5781,1.03125,6.29688,11.6406,1.07812,6.35938,11.7031,1.14062,6.42188,11.7656,1.20312,6.48438,11.8281,1.26562,6.54688],"ImageOrientationPatientDICOM":[0.999813,-0.0119716,-0.0152097,0.0172772,0.906236,0.422419],"ImageOrientationText":"Tra>Cor(25.0)>Sag(-0.5)","InPlanePhaseEncodingDirectionDICOM":"COL","ConversionSoftware":"dcm2niix","ConversionSoftwareVersion":"v1.0.20211006","IntendedFor":["func/sub-***_task-oddball_run-01_bold.nii.gz","func/sub-***_task-oddball_run-02_bold.nii.gz"]}

Please tell us if you need other information or which format information will help you.

@effigies
Copy link
Member

I believe this was corrected in late 22.x releases. We no longer merge extra PEPolar runs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants