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')
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')
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')
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)
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)
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')
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
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
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')
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')
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
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')
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
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
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')
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')
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
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')
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')
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
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
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
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