def test_add_conditional_manually(): """Enforce the conditioning on additional variables.""" settings = { 'cmi_estimator': 'JidtKraskovCMI', 'max_lag': 5, 'n_perm_max_stat': 21, 'n_perm_min_stat': 21, 'n_perm_mi': 21 } data = Data() data.generate_mute_data(10, 3) ais = ActiveInformationStorage() # Add a conditional with a lag bigger than the max_lag requested above settings['add_conditionals'] = (8, 0) with pytest.raises(IndexError): ais.analyse_single_process(settings=settings, data=data, process=0) # Add valid conditionals and test if they were added settings['add_conditionals'] = [(0, 1), (1, 3)] ais._initialise(settings, data, 0) # Get list of conditionals after intialisation and convert absolute samples # back to lags for comparison. cond_list = ais._idx_to_lag(ais.selected_vars_full) assert settings['add_conditionals'][0] in cond_list, ( 'First enforced conditional is missing from results.') assert settings['add_conditionals'][1] in cond_list, ( 'Second enforced conditional is missing from results.')
def test_add_conditional_manually(): """Enforce the conditioning on additional variables.""" settings = {'cmi_estimator': 'JidtKraskovCMI', 'max_lag': 5, 'n_perm_max_stat': 21, 'n_perm_min_stat': 21, 'n_perm_mi': 21} data = Data() data.generate_mute_data(10, 3) ais = ActiveInformationStorage() # Add a conditional with a lag bigger than the max_lag requested above settings['add_conditionals'] = (8, 0) with pytest.raises(IndexError): ais.analyse_single_process(settings=settings, data=data, process=0) # Add valid conditionals and test if they were added settings['add_conditionals'] = [(0, 1), (1, 3)] ais._initialise(settings, data, 0) # Get list of conditionals after intialisation and convert absolute samples # back to lags for comparison. cond_list = ais._idx_to_lag(ais.selected_vars_full) assert settings['add_conditionals'][0] in cond_list, ( 'First enforced conditional is missing from results.') assert settings['add_conditionals'][1] in cond_list, ( 'Second enforced conditional is missing from results.')
def test_ais_fdr(): settings = {'n_perm_max_seq': 1000, 'n_perm_mi': 1000} process_0 = { 'selected_vars': [(0, 1), (0, 2), (0, 3)], 'ais_pval': 0.0001, 'ais_sign': True} process_1 = { 'selected_vars': [(1, 0), (1, 1), (1, 2)], 'ais_pval': 0.031, 'ais_sign': True} process_2 = { 'selected_vars': [], 'ais_pval': 0.41, 'ais_sign': False} res_1 = ResultsSingleProcessAnalysis( n_nodes=3, n_realisations=1000, normalised=True) res_1._add_single_result(process=0, settings=settings, results=process_0) res_1._add_single_result(process=1, settings=settings, results=process_1) res_2 = ResultsSingleProcessAnalysis( n_nodes=3, n_realisations=1000, normalised=True) res_2._add_single_result(process=2, settings=settings, results=process_2) settings = { 'cmi_estimator': 'JidtKraskovCMI', 'alpha_fdr': 0.05, 'max_lag': 3} data = Data() data.generate_mute_data(n_samples=100, n_replications=3) analysis_setup = ActiveInformationStorage() analysis_setup._initialise(settings=settings, data=data, process=1) res_pruned = stats.ais_fdr(settings, res_1, res_2) assert (not res_pruned._single_process[2].selected_vars_sources), ( 'Process 2 has not been pruned from results.') alpha_fdr = res_pruned.settings.alpha_fdr for k in res_pruned.processes_analysed: if not res_pruned._single_process[k]['ais_sign']: assert (res_pruned._single_process[k]['ais_pval'] > alpha_fdr), ( 'P-value of non-sign. AIS is not 1.') assert (not res_pruned._single_process[k]['selected_vars']), ( 'List of significant past variables is not empty') else: assert (res_pruned._single_process[k]['ais_pval'] < 1), ( 'P-value of sign. AIS is not smaller 1.') assert (res_pruned._single_process[k]['selected_vars']), ( 'List of significant past variables is empty') # Test function call for single result res_pruned = stats.ais_fdr(settings, res_1) print('successful call on single result dict.') # Test None result for insufficient no. permutations, no FDR-corrected # results (the results class throws an error if no FDR-corrected results # exist). res_1.settings['n_perm_mi'] = 2 res_2.settings['n_perm_mi'] = 2 res_pruned = stats.ais_fdr(settings, res_1, res_2) with pytest.raises(RuntimeError): res_pruned.get_significant_processes(fdr=True)