예제 #1
0
 def test_noise_var(self):
     """ Validate estimation of noise variances at high SNR"""
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['noise_var'], fdata, nb_its=100,
                                  check_fv='raise')
예제 #2
0
 def test_brls(self):
     """ Validate estimation of BRLs at high SNR"""
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['bold_response_levels'], fdata, nb_its=100,
                                  check_fv='raise')
예제 #3
0
 def test_prf(self):
     """ Validate estimation of PRF """
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['prf'], fdata, nb_its=100,
                                  check_fv='raise')
예제 #4
0
 def test_prf(self):
     """ Validate estimation of PRF """
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['prf'], fdata, simu, nItMax=20,
                                    estimateG=True)
예제 #5
0
 def test_prls(self):
     """ Validate estimation of PRLs at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['perf_response_levels'], fdata, simu,
                                    nItMax=100, estimateC=True)
예제 #6
0
 def test_brf_physio_reg(self):
     """ Validate estimation of BRF at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['brf'], fdata, nb_its=100,
                                  check_fv='raise')
예제 #7
0
 def test_brf_physio_reg(self):
     """ Validate estimation of BRF at high SNR"""
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['brf'], fdata, nb_its=100,
                                  check_fv='raise')
     print 'pyhrf_view_qt3 %s/*brf*nii' %self.tmp_dir
예제 #8
0
 def test_perf_baseline(self):
     """ Validate estimation of drift at high SNR"""
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['perf_baseline'], fdata, nb_its=100,
                                  check_fv='raise')
     print 'pyhrf_view_qt3 %s/*perf*nii' %self.tmp_dir
예제 #9
0
 def test_prls(self):
     """ Validate estimation of PRLs at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['perf_response_levels'], fdata, simu,
                                    nItMax=100, estimateC=True)
예제 #10
0
 def test_prf(self):
     """ Validate estimation of PRF """
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['prf'], fdata, simu, nItMax=20,
                                    estimateG=True)
예제 #11
0
 def test_prf_var(self):
     """ Validate estimation of PRF """
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['prf_var'], fdata, nb_its=20,
                                  check_fv='raise')
예제 #12
0
 def test_perf_baseline(self):
     """ Validate estimation of drift at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['perf_baseline'], fdata, nb_its=100,
                                  check_fv='raise')
예제 #13
0
 def test_sigmaG(self):
     """ Validate estimation of drift at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['sigma_G'], fdata, simu,
                                    nItMax=100, estimateSigmaG=True)
     print 'pyhrf_view %s/*mixt_params*perf*nii' % self.tmp_dir
예제 #14
0
 def test_brf_physio_nonreg(self):
     """ Validate estimation of BRF at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['brf'], fdata, nb_its=100,
                                  check_fv='raise',
                                  rf_prior_type='physio_stochastic_not_regularized')
예제 #15
0
 def test_noise_var(self):
     """ Validate estimation of noise variances at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['noise_var'], fdata, simu, nItMax=100,
                                    estimateNoise=True)
     print 'pyhrf_view %s/*noise*nii' % self.tmp_dir
예제 #16
0
 def test_sigmaG(self):
     """ Validate estimation of drift at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['sigma_G'], fdata, simu,
                                    nItMax=100, estimateSigmaG=True)
     print 'pyhrf_view %s/*mixt_params*perf*nii' % self.tmp_dir
예제 #17
0
 def test_noise_var(self):
     """ Validate estimation of noise variances at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_parameters(['noise_var'], fdata, simu, nItMax=100,
                                    estimateNoise=True)
     print 'pyhrf_view %s/*noise*nii' % self.tmp_dir
예제 #18
0
 def test_prf_physio_nonreg(self):
     """ Validate estimation of BRF at high SNR"""
     pyhrf.verbose.set_verbosity(2)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     print simu['prf'].shape
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['prf'], fdata, nb_its=100,
                                  check_fv='raise',
                                  rf_prior_type='physio_stochastic_not_regularized')
     print 'pyhrf_view_qt3 %s/*prf*nii' %self.tmp_dir
예제 #19
0
    def test_mu(self):
        """ Validate estimation of mu """
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)

        from pyhrf.sandbox.physio import simulate_asl_physio_rfs
        simu = simulate_asl_physio_rfs(self.tmp_dir)
        fdata = FmriData.from_simulation_dict(simu)
        self._test_specific_samplers(['truebrf'], fdata, nb_its=20,
                                     mu_prior_type='regularized',
                                     check_fv='raise')
예제 #20
0
 def test_prf_physio_det(self):
     """ Validate estimation of BRF at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     print simu['prf'].shape
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['prf'], fdata, nb_its=100,
                                  check_fv='raise',
                                  rf_prior_type='physio_deterministic')
예제 #21
0
    def test_mu(self):
        """ Validate estimation of mu """
        pyhrf.verbose.set_verbosity(2)

        from pyhrf.sandbox.physio import simulate_asl_physio_rfs
        simu = simulate_asl_physio_rfs(self.tmp_dir)
        fdata = FmriData.from_simulation_dict(simu)
        self._test_specific_samplers(['truebrf'], fdata, nb_its=20,
                                     mu_prior_type='regularized',
                                     check_fv='raise')
        print 'pyhrf_view_qt3 %s/jde_mcmc_truebrf_pm.nii' %self.tmp_dir
예제 #22
0
    def test_all(self):
        """ Validate estimation of full ASL model at high SNR"""
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)
        from pyhrf.jde.asl import simulate_asl
        simu = simulate_asl(self.tmp_dir, spatial_size='normal')
        fdata = FmriData.from_simulation_dict(simu)
        np.random.seed(25430)
        v = ['bold_response_levels', 'perf_response_levels', 'drift', 'drift_var',
             'brf', 'brf_var', 'prf', 'labels', 'bold_mixt_params',
             'perf_mixt_params', 'perf_baseline', 'perf_baseline_var']

        self._test_specific_samplers(v, fdata, nb_its=500, check_fv='print')
예제 #23
0
 def test_perf_baseline_var(self):
     """ Validate estimation of drift at high SNR"""
     # pyhrf.verbose.set_verbosity(2)
     pyhrf.logger.setLevel(logging.INFO)
     from pyhrf.jde.asl import simulate_asl
     simu = simulate_asl(self.tmp_dir, spatial_size='normal')
     perf_baseline = simu['perf_baseline']
     perf_baseline_mean = simu['perf_baseline_mean']
     print 'perf_baseline_mean = ', perf_baseline_mean
     print 'perf_baseline_mean emp = ', np.mean(perf_baseline)
     perf_baseline_var = simu['perf_baseline_var']
     print 'perf_baseline_var = ', perf_baseline_var
     print 'perf_baseline_var emp = ', np.var(perf_baseline)
     fdata = FmriData.from_simulation_dict(simu)
     self._test_specific_samplers(['perf_baseline_var'], fdata, nb_its=15,
                                  check_fv='raise')
예제 #24
0
    def test_perfusion(self):
        """ Validate estimation of perfusion component at high SNR"""
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)
        from pyhrf.jde.asl import simulate_asl
        simu = simulate_asl(self.tmp_dir, spatial_size='normal')
        fdata = FmriData.from_simulation_dict(simu)
        np.random.seed(25430)
        v = ['perf_response_levels', 'prf']

        mem.cache(self._test_specific_parameters)(v, fdata, simu,
                                                  nItMax=100,
                                                  estimateG=True,
                                                  estimateC=True,
                                                  estimateSigmaG=True)
        print 'pyhrf_view %s/*nii' % self.tmp_dir
예제 #25
0
    def test_perfusion(self):
        """ Validate estimation of perfusion component at high SNR"""
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)
        from pyhrf.jde.asl import simulate_asl
        simu = simulate_asl(self.tmp_dir, spatial_size='normal')
        fdata = FmriData.from_simulation_dict(simu)
        np.random.seed(25430)
        v = ['perf_response_levels', 'prf']

        mem.cache(self._test_specific_parameters)(v, fdata, simu,
                                                  nItMax=100,
                                                  estimateG=True,
                                                  estimateC=True,
                                                  estimateSigmaG=True)
        print 'pyhrf_view %s/*nii' % self.tmp_dir
예제 #26
0
    def test_all(self):
        """ Validate estimation of full ASL model at high SNR"""
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)
        from pyhrf.jde.asl import simulate_asl
        simu = simulate_asl(self.tmp_dir, spatial_size='normal')
        fdata = FmriData.from_simulation_dict(simu)
        np.random.seed(25430)
        v = ['bold_response_levels', 'perf_response_levels',
             'brf', 'brf_var', 'prf', 'labels', 'bold_mixt_params',
             'perf_mixt_params', 'drift_perf_baseline']

        self._test_specific_parameters(v, fdata, simu,
                                       estimateSigmaH=False, nItMax=100,
                                       nItMin=10, estimateBeta=True,
                                       estimateSigmaG=True, PLOT=False,
                                       constrained=True, fast=False,
                                       estimateH=True, estimateG=True,
                                       estimateA=True, estimateC=True,
                                       estimateZ=True, estimateLA=True,
                                       estimateMP=True)
        print 'pyhrf_view %s/*nii' % self.tmp_dir
예제 #27
0
    def test_all(self):
        """ Validate estimation of full ASL model at high SNR"""
        # pyhrf.verbose.set_verbosity(2)
        pyhrf.logger.setLevel(logging.INFO)
        from pyhrf.jde.asl import simulate_asl
        simu = simulate_asl(self.tmp_dir, spatial_size='normal')
        fdata = FmriData.from_simulation_dict(simu)
        np.random.seed(25430)
        v = ['bold_response_levels', 'perf_response_levels',
             'brf', 'brf_var', 'prf', 'labels', 'bold_mixt_params',
             'perf_mixt_params', 'drift_perf_baseline']

        self._test_specific_parameters(v, fdata, simu,
                                       estimateSigmaH=False, nItMax=100,
                                       nItMin=10, estimateBeta=True,
                                       estimateSigmaG=True, PLOT=False,
                                       constrained=True, fast=False,
                                       estimateH=True, estimateG=True,
                                       estimateA=True, estimateC=True,
                                       estimateZ=True, estimateLA=True,
                                       estimateMP=True)
        print 'pyhrf_view %s/*nii' % self.tmp_dir
예제 #28
0
def simulate_subjects(output_dir, snr_scenario='high_snr',
                      spatial_size='tiny', hrf_group=None, nb_subjects=15,
                      vhrf=0.1, vhrf_group=0.1):
    '''
    Simulate daata for multiple subjects (5 subjects by default)
    '''
    drift_coeff_var = 1.
    drift_amplitude = 10.


    lmap1, lmap2, lmap3 = 'random_small', 'random_small', 'random_small'

    if snr_scenario == 'low_snr': #low snr
        vars_noise = np.zeros(nb_subjects) + 1.5
        conditions = [
            Condition(name='audio', m_act=3., v_act=.3, v_inact=.3,
                        label_map=lmap1),
            Condition(name='video', m_act=2.5, v_act=.3, v_inact=.3,
                        label_map=lmap2),
            Condition(name='damier', m_act=2, v_act=.3, v_inact=.3,
                        label_map=lmap3),
            ]
    else: #high snr

        vars_noise = np.zeros(nb_subjects) + .2
        conditions = [
            Condition(name='audio', m_act=13., v_act=.2, v_inact=.1,
                        label_map=lmap1),
            #Condition(name='video', m_act=11.5, v_act=.2, v_inact=.1,
                        #label_map=lmap2),
            #Condition(name='damier', m_act=10, v_act=.2, v_inact=.1,
                        #label_map=lmap3),
            ]
    vars_hrfs = np.zeros(nb_subjects) + vhrf


    # Common variable across subjects:
    labels_vol = sim.create_labels_vol(conditions)
    labels     = sim.flatten_labels_vol(labels_vol)

    # use smooth multivariate gaussian prior:
    if hrf_group is None:# simulate according to gaussian prior
        var_hrf_group = 0.1
        hrf_group = sim.create_gsmooth_hrf(dt=0.6, hrf_var=var_hrf_group,
                                           normalize_hrf=False)
        n = (hrf_group**2).sum()**.5
        hrf_group /= n
        var_hrf_group /= n**2

    simu_subjects = []
    simus = []

    for isubj in xrange(nb_subjects):
        if output_dir is not None:
            out_dir = op.join(output_dir, 'subject_%d' %isubj)
            if not op.exists(out_dir): os.makedirs(out_dir)
        else:
            out_dir = None
        s = simulate_single_subject(out_dir, conditions, vars_hrfs[isubj],
                                    labels, labels_vol, vars_noise[isubj],
                                    drift_coeff_var,
                                    drift_amplitude, hrf_group, dt=0.6, dsf=4,
                                    var_hrf_group=vhrf_group)
        if 0:
            print 'simu subj %d:' %isubj
            print 'vhs:', s['var_subject_hrf']
            print 'hg:', s['hrf_group']
            print 'vhg:', s['var_hrf_group']

        simus.append(s)
        simu_subjects.append(FmriData.from_simulation_dict(s))
    simu_subjects = FmriGroupData(simu_subjects)


    return simu_subjects
예제 #29
0
def simulate_subjects(output_dir,
                      snr_scenario='high_snr',
                      spatial_size='tiny',
                      hrf_group=None,
                      nb_subjects=15,
                      vhrf=0.1,
                      vhrf_group=0.1):
    '''
    Simulate daata for multiple subjects (5 subjects by default)
    '''
    drift_coeff_var = 1.
    drift_amplitude = 10.

    lmap1, lmap2, lmap3 = 'random_small', 'random_small', 'random_small'

    if snr_scenario == 'low_snr':  # low snr
        vars_noise = np.zeros(nb_subjects) + 1.5
        conditions = [
            Condition(name='audio',
                      m_act=3.,
                      v_act=.3,
                      v_inact=.3,
                      label_map=lmap1),
            Condition(name='video',
                      m_act=2.5,
                      v_act=.3,
                      v_inact=.3,
                      label_map=lmap2),
            Condition(name='damier',
                      m_act=2,
                      v_act=.3,
                      v_inact=.3,
                      label_map=lmap3),
        ]
    else:  # high snr

        vars_noise = np.zeros(nb_subjects) + .2
        conditions = [
            Condition(name='audio',
                      m_act=13.,
                      v_act=.2,
                      v_inact=.1,
                      label_map=lmap1),
            # Condition(name='video', m_act=11.5, v_act=.2, v_inact=.1,
            # label_map=lmap2),
            # Condition(name='damier', m_act=10, v_act=.2, v_inact=.1,
            # label_map=lmap3),
        ]
    vars_hrfs = np.zeros(nb_subjects) + vhrf

    # Common variable across subjects:
    labels_vol = sim.create_labels_vol(conditions)
    labels = sim.flatten_labels_vol(labels_vol)

    # use smooth multivariate gaussian prior:
    if hrf_group is None:  # simulate according to gaussian prior
        var_hrf_group = 0.1
        hrf_group = sim.create_gsmooth_hrf(dt=0.6,
                                           hrf_var=var_hrf_group,
                                           normalize_hrf=False)
        n = (hrf_group**2).sum()**.5
        hrf_group /= n
        var_hrf_group /= n**2

    simu_subjects = []
    simus = []

    for isubj in xrange(nb_subjects):
        if output_dir is not None:
            out_dir = op.join(output_dir, 'subject_%d' % isubj)
            if not op.exists(out_dir):
                os.makedirs(out_dir)
        else:
            out_dir = None
        s = simulate_single_subject(out_dir,
                                    conditions,
                                    vars_hrfs[isubj],
                                    labels,
                                    labels_vol,
                                    vars_noise[isubj],
                                    drift_coeff_var,
                                    drift_amplitude,
                                    hrf_group,
                                    dt=0.6,
                                    dsf=4,
                                    var_hrf_group=vhrf_group)
        if 0:
            print 'simu subj %d:' % isubj
            print 'vhs:', s['var_subject_hrf']
            print 'hg:', s['hrf_group']
            print 'vhg:', s['var_hrf_group']

        simus.append(s)
        simu_subjects.append(FmriData.from_simulation_dict(s))
    simu_subjects = FmriGroupData(simu_subjects)

    return simu_subjects