App-AFNI-SiemensPhysio
view release on metacpan or search on metacpan
lib/App/AFNI/SiemensPhysio.pm view on Meta::CPAN
#!/usr/bin/env perl
package App::AFNI::SiemensPhysio;
use strict;
use warnings;
use Carp;
use List::MoreUtils qw/minmax uniq/;
use File::Basename;
use feature 'say';
=pod
=head1 NAME
App::AFNI:SiemensPhysio - Physio from Siemens into format suitable for AFNI's RetroTS retroicor routine
=head1 SYNOPSIS
Get slice based respiration volume per time (RVT) regressors from physio collected on Siemens scanner
my $p = SiemensPhysio->new({VERB=>1});
# read MR data (get times, TR, nslices)
# looks at all files in this directory with "dicom_hinfo"
$p->readMRdir('MRRaw/10824_20111108/rest_384x384.21/');
# read pulse
$p->readPhysio('10824/20111108/wpc4951_10824_20111108_110811.puls');
# write card: $protocol_$sessionTime.puls.dat
$p->writeMRPhys;
# read card
$p->readPhysio('10824/20111108/wpc4951_10824_20111108_110811.resp');
# write resp: $protocol_$sessionTime.resp.dat
$p->writeMRPhys;
#
$p->retroTS('matlab')
# we could get the raw data
# in this case, card was resp was loaded last
# thats what will be returned)
my @pval = $p->getMRPhys();
=head1 DESCRIPTION
=head2 Pipeline
=over
=item read Siemens physio files
=item read timing from MR DICOM files
=item snip physio files relative to MR
=item prepare/run AFNI's RetroTS
=back
=head2 prior art
=over
=item https://cfn.upenn.edu/aguirre/public/exvolt/
=item https://cfn.upenn.edu/aguirre/wiki/public:pulse-oximetry_during_fmri_scanning
=back
=cut
=head2 new
initialize object
=head3 OPTIONS
( run in 1.437 second using v1.01-cache-2.11-cpan-800906f7e73 )