Пример #1
0
 def test_get_active_lumi_runs_by_range(self):
     runregistry = TrackerRunRegistryClient()
     run_min = 321123
     run_max = 321126
     response = runregistry.get_active_lumi_runs_by_range(run_min, run_max)
     assert run_min == response[0]["run_number"] and run_max == response[
         len(response) - 1]["run_number"]
Пример #2
0
 def test_get_runs_by_list(self):
     runregistry = TrackerRunRegistryClient()
     run_number = 321123
     response = runregistry.get_runs_by_list(None)
     assert [] == response
     response = runregistry.get_runs_by_list([run_number])
     assert response[0]["run_number"] == run_number
Пример #3
0
 def fill_numbers(self):
     """
     :return: sorted list of fill numbers (without duplicates)
     """
     if not self.run_numbers():
         return []
     client = TrackerRunRegistryClient()
     return client.get_unique_fill_numbers_by_run_number(self.run_numbers())
Пример #4
0
 def test_get_run_numbers_by_fill_number(self):
     runregistry = TrackerRunRegistryClient()
     response = runregistry.get_run_numbers_by_fill_number([7048, 7049])
     assert [{
         'fill_number':
         7048,
         'run_number':
         [321171, 321174, 321175, 321177, 321178, 321179, 321181]
     }, {
         'fill_number': 7049,
         'run_number': [321182, 321185, 321189]
     }] == response
Пример #5
0
    def compare_with_run_registry(self):
        run_numbers = self.run_numbers()
        run_registry = TrackerRunRegistryClient()
        keys = [
            "runreconstruction__run__run_number",
            "runreconstruction__run__run_type",
            "runreconstruction__reconstruction",
            "pixel",
            "strip",
            "tracking",
        ]

        run_info_tuple_set = set(self.values_list(*keys))

        # the resthub api cannot handle more than 1000 elements in the SQL query
        if len(run_numbers) <= 500:
            run_registry_entries = run_registry.get_runs_by_list(run_numbers)
        else:  # split the list if it is too big
            list_of_run_number_lists = chunks(run_numbers, 500)
            run_registry_entries = []
            for run_number_list in list_of_run_number_lists:
                new_entries = run_registry.get_runs_by_list(run_number_list)
                run_registry_entries.extend(new_entries)

        convert_run_registry_to_trackercertification(run_registry_entries)
        run_registry_tuple_set = {
            tuple(d[key] for key in keys) for d in run_registry_entries
        }

        deviating_run_info_tuple_list = sorted(
            run_info_tuple_set - run_registry_tuple_set
        )
        corresponding_run_registry_runs = []
        for run in deviating_run_info_tuple_list:
            elements = list(
                filter(
                    lambda x: x[0] == run[0] and x[2] == run[2], run_registry_tuple_set
                )
            )
            if not elements:
                elements = [("", "", "", "", "", "", False, False, False)]
            corresponding_run_registry_runs.extend(elements)

        deviating_run_info_dict = [
            dict(zip(keys, run)) for run in deviating_run_info_tuple_list
        ]
        corresponding_run_registry_dict = [
            dict(zip(keys, run)) for run in corresponding_run_registry_runs
        ]

        return deviating_run_info_dict, corresponding_run_registry_dict
Пример #6
0
    def annotate_fill_number(self):
        """
        Adds the lhc fill number from the Run Registry

        :return: QuerySet with added LHC fill number
        """
        run_registry = TrackerRunRegistryClient()
        fills = run_registry.get_fill_number_by_run_number(self.run_numbers())
        for run in self:
            fills_list=list(
                filter(lambda x: x["run_number"] == run.run_number, fills)
            )
            if(fills_list):
                run.fill_number = fills_list[0]["fill_number"]
Пример #7
0
 def group_run_numbers_by_fill_number(self):
     run_registry = TrackerRunRegistryClient()
     return run_registry.get_grouped_fill_numbers_by_run_number(self.run_numbers())
Пример #8
0
 def test_get_dataset_runs_with_active_lumis(self):
     runregistry = TrackerRunRegistryClient()
     where_clause = build_list_where_clause(["321123"], "r.run_number")
     response = runregistry._get_dataset_runs_with_active_lumis(
         where_clause)
     assert response