def test_set_sampler_command_line(self): args_list = self.default_args_list args_list.append("--sampler") args_list.append("emcee") self.inputs = DataAnalysisInput(*parse_args(args_list, self.parser), test=True) self.assertEqual(self.inputs.sampler, "emcee")
def test_sampler_kwargs_flat(self): kwargs_expected = dict(walks=1000) lines = ["sampler-kwargs: {walks:1000}"] self.write_tempory_ini_file(lines) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(convert_string_to_dict(args.sampler_kwargs), kwargs_expected)
def main(): """ Data analysis main logic """ args, unknown_args = parse_args(sys.argv[1:], create_analysis_parser()) log_version_information() analysis = DataAnalysisInput(args, unknown_args) analysis.run_sampler() sys.exit(0)
def test_sampler_kwargs_empty(self): kwargs_expected = dict() kwargs_str = "{}" lines = [f"sampler-kwargs: {kwargs_str}"] self.write_tempory_ini_file(lines) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(convert_string_to_dict(args.sampler_kwargs), kwargs_expected)
def test_prior_dict_multiline(self): kwargs_str = "{a: Uniform(name='a', minimum=0, maximum=1), b: 1}" lines = [ "prior-dict: {a: Uniform(name='a', minimum=0, maximum=1)", "b: 1}" ] self.write_tempory_ini_file(lines) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(args.prior_dict, kwargs_str)
def test_generation_seed_increases_with_injection_index(self): """Assert that generation seed increments for each job. ie JOB 0 -- seed X JOB 1 -- seed X + 1 ... JOB N -- seed X + N This is so that the gaussian data for each job will be different. """ idx = 0 generation_seed = 0 args_list = [ "--ini", "tests/test_data_generation.ini", f"--generation-seed={generation_seed}", f"--idx={idx}", "--gaussian-noise", "--trigger-time", "2", "--outdir", self.outdir, "--label", "TEST", ] self.inputs = DataGenerationInput(*parse_args(args_list, self.parser)) self.assertEqual(self.inputs.generation_seed, idx + generation_seed) idx = 2 generation_seed = 0 args_list = [ "--ini", "tests/test_data_generation.ini", f"--generation-seed={generation_seed}", f"--idx={idx}", "--gaussian-noise", "--trigger-time", "1126259462", "--outdir", self.outdir, "--label", "TEST", ] self.inputs = DataGenerationInput(*parse_args(args_list, self.parser)) self.assertEqual(self.inputs.generation_seed, idx + generation_seed)
def main(): """ Data generation main logic """ args, unknown_args = parse_args(sys.argv[1:], create_generation_parser()) log_version_information() data = DataGenerationInput(args, unknown_args) if args.likelihood_type == "ROQGravitationalWaveTransient": data.save_roq_weights() data.save_data_dump() logger.info("Completed data generation")
def test_sampler_kwargs_flat_long_multiline(self): kwargs_expected = dict(walks=1000, nact=5, test=1, blah="a") lines = [ "sampler-kwargs: {walks:1000", "nact=5, test:1", " blah=a}" ] self.write_tempory_ini_file(lines) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(convert_string_to_dict(args.sampler_kwargs), kwargs_expected)
def test_inject_signal_into_gaussian_noise(self): args_list = [ "tests/test_injection_in_gaussian_noise.ini", "--outdir", self.outdir, ] data_input = DataGenerationInput(*parse_args(args_list, self.parser)) injection_param = data_input.injection_parameters self.assertTrue(injection_param["geocent_time"] == 0)
def test_data_quality_ignore_flag(self, mock_logs, is_data_good, get_data_method): timeseries, _ = load_test_strain_data() is_data_good.return_value = False get_data_method.return_value = timeseries args_list = [ "tests/test_basic_ini.ini", "--detectors", "[H1, L1]", "--channel-dict", "{'H1': 'GDS-CALIB_STRAIN', 'L1': 'GDS-CALIB_STRAIN'}", "--duration", " 1", "--prior_file", "tests/example_prior.prior", "--waveform-approximant", "IMRPhenomPv2", "--idx", "0", "--trigger_time", "1126259462.4", "--label", "QUALITY_TEST", ] # make sure that when the flag is present, no error args, unknown = parse_args(args_list, create_generation_parser()) args.trigger_time = 1126259462.4 input = DataGenerationInput(args, unknown) self.assertFalse(input._is_gwpy_data_good()) self.assertTrue(input.ignore_gwpy_data_quality_check) # make sure that when the flag is not present, error present args, unknown = parse_args(args_list, create_generation_parser()) args.trigger_time = 1126259462.4 args.ignore_gwpy_data_quality_check = False with self.assertRaises(BilbyPipeError): DataGenerationInput(args, unknown) self.assertFalse(input._is_gwpy_data_good()) self.assertFalse(input.ignore_gwpy_data_quality_check)
def setUp(self): self.outdir = "test_outdir" self.default_args_list = [ "--ini", "tests/test_data_analysis.ini", "--outdir", self.outdir, ] self.parser = create_analysis_parser() self.inputs = DataAnalysisInput(*parse_args(self.default_args_list, self.parser), test=True)
def test_detectors_single(self): args_list = [ "tests/test_dag_ini_file.ini", "--detectors", "H1", "--detectors", "L1", ] parser = create_analysis_parser() args, unknown_args = parse_args(args_list, parser) self.assertNotEqual(args.detectors, ["'H1'", "'L1'"], args.detectors) self.assertEqual(args.detectors, ["H1", "L1"], args.detectors)
def test_injections_no_file(self): args_list = [ "--ini", "tests/test_data_generation.ini", "--outdir", self.outdir, "--injection-file", "not_a_file", "--data-label", "TEST", ] with self.assertRaises(FileNotFoundError): self.inputs = DataGenerationInput( *parse_args(args_list, self.parser))
def setUp(self): self.outdir = "test_outdir" self.default_args_list = [ "--ini", "tests/test_data_generation.ini", "--outdir", self.outdir, "--data-label", "TEST", ] self.parser = create_generation_parser() self.inputs = DataGenerationInput(*parse_args(self.default_args_list, self.parser), create_data=False) self.gps_file = "tests/gps_file.txt"
def test_generation_seed_is_random_if_none_provided(self): """Assert that the generation seed is some random value if not provided.""" idx = 0 generation_seed = None args_list = [ "--ini", "tests/test_data_generation.ini", f"--generation-seed={generation_seed}", f"--idx={idx}", "--gaussian-noise", "--trigger-time", "1126259462", "--outdir", self.outdir, "--label", "TEST", ] self.inputs = DataGenerationInput(*parse_args(args_list, self.parser)) self.assertTrue(1 <= self.inputs.generation_seed <= 1e6)
def setUp(self): self.outdir = "test_outdir" self.data_dir = "tests/DATA/" self.default_args_list = [ "--ini", "tests/test_data_generation.ini", "--outdir", self.outdir, "--data-label", "TEST", ] self.parser = create_generation_parser() self.inputs = DataGenerationInput(*parse_args(self.default_args_list, self.parser), create_data=False) self.det = "H1" self.channel = "H1:DCS-CALIB_STRAIN_C02" self.start_time = 1126259356.0 self.end_time = 1126259357.0
def test_inject_signal_into_time_domain_data( self, inject_signal_into_timeseries_method, get_data_method): timeseries, metadata = load_test_strain_data() get_data_method.return_value = timeseries inject_signal_into_timeseries_method.return_value = (timeseries, metadata) args_list = ["tests/test_injection.ini", "--outdir", self.outdir] inputs = DataGenerationInput(*parse_args(args_list, self.parser)) self.assertTrue(inputs.injection_parameters["geocent_time"] == 0) self.assertEqual(inject_signal_into_timeseries_method.call_count, 2) self.assertTrue(get_data_method.called) t0 = 1126259463.4 t1 = t0 + 1 t0_psd = t0 - 32 t1_psd = t0 get_data_method.assert_any_call("H1", "GWOSC", t0, t1) # SIGNAL get_data_method.assert_any_call("H1", "GWOSC", t0_psd, t1_psd) # PSD get_data_method.assert_any_call("L1", "GWOSC", t0, t1) # SIGNAL get_data_method.assert_any_call("L1", "GWOSC", t0_psd, t1_psd) # PSD
def test_script_inputs_detectors_from_command_line(self): args_list = self.default_args_list + [ "--detectors", "H1", "--detectors", "L1" ] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"]) args_list = self.default_args_list + ["--detectors", "H1 L1"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"]) args_list = self.default_args_list + ["--detectors", "L1 H1"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"]) args_list = self.default_args_list + ["--detectors", "[L1, H1]"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) args_list = self.default_args_list + ["--detectors", "[L1 H1]"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"]) args_list = self.default_args_list + ["--detectors", '["L1", "H1"]'] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"]) args_list = self.default_args_list + ["--detectors", "['L1', 'H1']"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.detectors, ["H1", "L1"])
def test_set_reference_frequency(self): args_list = self.default_args_list + ["--reference-frequency", "10"] inputs = DataGenerationInput(*parse_args(args_list, self.parser), create_data=False) self.assertEqual(inputs.reference_frequency, 10)
def test_simple(self): self.write_tempory_ini_file([]) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(args.accounting, "test")
def test_set_sampling_seed(self): args_list = self.default_args_list + ["--sampling-seed", "1"] inputs = DataAnalysisInput(*parse_args(args_list, self.parser), test=True) self.assertEqual(inputs.sampling_seed, 1)
def test_detectors_double(self): args_list = ["tests/test_bilbyargparser.ini"] parser = create_analysis_parser() args, unknown_args = parse_args(args_list, parser) self.assertNotEqual(args.detectors, ["'H1'", "'L1'"], args.detectors) self.assertEqual(args.detectors, ["H1", "L1"], args.detectors)
def test_unset_sampling_kwargs(self): args, unknown_args = parse_args(self.default_args_list, self.parser) args.sampler_kwargs = None inputs = DataAnalysisInput(args, unknown_args, test=True) self.assertEqual(inputs.sampler_kwargs, dict())
def test_set_sampler_ini(self): self.inputs = DataAnalysisInput(*parse_args(self.default_args_list, self.parser), test=True) self.assertEqual(self.inputs.sampler, "nestle")
def test_prior_dict(self): kwargs_str = '{a=Uniform(name="a", minimum=0, maximum=1)}' lines = [f"prior-dict: {kwargs_str}"] self.write_tempory_ini_file(lines) args, unknown_args = parse_args([self.test_ini_filename], self.parser) self.assertEqual(args.prior_dict, kwargs_str)
def test_set_sampler_command_line_multiple_fail(self): args_list = self.default_args_list self.inputs = DataAnalysisInput(*parse_args(args_list, self.parser), test=True) with self.assertRaises(BilbyPipeError): self.inputs.sampler = ["dynesty", "nestle"]