Open yanapanikratova opened 2 days ago
Dear Yana,
Thank you very much for your detailed description and taking the time to read the PhysIO documentation.
relative_start_acquisition
seems reasonable (maybe double-check the sign)All the best, Lars
Dear Lars,
Thank you very much for wonderful PhysIO!
I'm trying this toolbox for the first time and have carefully read the documentation. Processing of my data seems to go well, however, the estimated heart rate looks suspicious (it is in the range of 30-40 bpm). At the same time, the heart rate estimated online during scanning (displayed via Philips system) was normal. Could you please clarify why this might happen?
I'm working with PPU Wi-Fi data (Philips 3T Ingenia, a sampling rate of 496 Hz). TR = 2 s, 34 slices, 225 volumes, and 0 dummies.
A Philips logfile: ScanPsaLog20241014143359.log
Parameters from the SPM batch: matlabbatch{1}.spm.tools.physio.save_dir = {'G:\example\physio_out'}; matlabbatch{1}.spm.tools.physio.log_files.vendor = 'Philips'; matlabbatch{1}.spm.tools.physio.log_files.cardiac = {'G:\example\scanphyslog\ScanPsaLog20241014143359.log'}; matlabbatch{1}.spm.tools.physio.log_files.respiration = {'G:\example\scanphyslog\ScanPsaLog20241014143359.log'}; matlabbatch{1}.spm.tools.physio.log_files.scan_timing = {''}; matlabbatch{1}.spm.tools.physio.log_files.sampling_interval = 0.00201612903225806; matlabbatch{1}.spm.tools.physio.log_files.relative_start_acquisition = 0; matlabbatch{1}.spm.tools.physio.log_files.align_scan = 'last'; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nslices = 34; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.NslicesPerBeat = []; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.TR = 2; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Ndummies = 0; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nscans = 225; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.onset_slice = 17; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.time_slice_to_slice = []; matlabbatch{1}.spm.tools.physio.scan_timing.sqpar.Nprep = []; matlabbatch{1}.spm.tools.physio.scan_timing.sync.nominal = struct([]); matlabbatch{1}.spm.tools.physio.preproc.cardiac.modality = 'PPU_Wifi'; matlabbatch{1}.spm.tools.physio.preproc.cardiac.filter.no = struct([]); matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.min = 0.4; matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.file = 'initial_cpulse_kRpeakfile.mat'; matlabbatch{1}.spm.tools.physio.preproc.cardiac.initial_cpulse_select.auto_matched.max_heart_rate_bpm = 90; matlabbatch{1}.spm.tools.physio.preproc.cardiac.posthoc_cpulse_select.off = struct([]); matlabbatch{1}.spm.tools.physio.preproc.respiratory.filter.passband = [0.01 2]; matlabbatch{1}.spm.tools.physio.preproc.respiratory.despike = false; matlabbatch{1}.spm.tools.physio.model.output_multiple_regressors = 'multiple_regressors.txt'; matlabbatch{1}.spm.tools.physio.model.output_physio = 'physio.mat'; matlabbatch{1}.spm.tools.physio.model.orthogonalise = 'none'; matlabbatch{1}.spm.tools.physio.model.censor_unreliable_recording_intervals = false; matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.c = 3; matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.r = 4; matlabbatch{1}.spm.tools.physio.model.retroicor.yes.order.cr = 1; matlabbatch{1}.spm.tools.physio.model.rvt.yes.method = 'hilbert'; matlabbatch{1}.spm.tools.physio.model.rvt.yes.delays = 0; matlabbatch{1}.spm.tools.physio.model.hrv.yes.delays = 0; matlabbatch{1}.spm.tools.physio.model.noise_rois.no = struct([]); matlabbatch{1}.spm.tools.physio.model.movement.no = struct([]); matlabbatch{1}.spm.tools.physio.model.other.no = struct([]); matlabbatch{1}.spm.tools.physio.verbose.level = 2; matlabbatch{1}.spm.tools.physio.verbose.fig_output_file = 'figure_output.jpg'; matlabbatch{1}.spm.tools.physio.verbose.use_tabs = false;
PhysIO output figures:
P.S. I have noticed that the x-axis in nearly all figures above includes 1000 s, but I don't understand why (2s TR x 225 volumes = 450 s). Is it normal?
Also, I have found a thread https://github.com/translationalneuromodeling/tapas/issues/207 where Marni has ScanPsa (not SCANPHYSLOG) files and no gradient data -- the same as in my case. Is my case therefore a problem of synchronization?
Additionally, I have tried to adjust log_files.relative_start_acquisition = 26 (this is the difference between time stamps in ScanPsaLog and DICOM) but this did not change anything.
I would be very grateful for your help and apologize if there are some obvious mistakes.
Yana