示例#1
0
    def _generate_bin_mapping(self, bin_table: dict) -> dict:
        binning_tuple = {}
        for bin_info in bin_table:
            binning_tuple.setdefault(bin_info[BinTableFieldName.HBin()],
                                     []).append(
                                         bin_info[BinTableFieldName.SBinNum()])

        return binning_tuple
    def get_binning_tuple(bin_table: list) -> dict:
        binning_tuple = {}
        for bin_info in bin_table:
            binning_tuple.setdefault(bin_info[BinTableFieldName.HBin()],
                                     []).append(
                                         bin_info[BinTableFieldName.SBinNum()])

        return binning_tuple
示例#3
0
    def do_bin_mapping(standard_binning: list, external_bin_mapping: dict):
        for bin_info in standard_binning['bin-table']:
            mapped = False
            for hbin, sbins in external_bin_mapping.items():
                if bin_info[BinTableFieldName.SBinNum()] in sbins:
                    bin_info[BinTableFieldName.HBin()] = hbin
                    mapped = True

            assert mapped, f'sbin "{bin_info[BinTableFieldName.SBinNum()]}" could not be mapped'
 def generate_bin(self, sb_group: str, sb_desc: str) -> dict:
     bin = {
         BinTableFieldName.SBinNum(): str(self._alarm_bin_number),
         BinTableFieldName.SBinGroup(): sb_group,
         BinTableFieldName.SBinDescription(): sb_desc,
         BinTableFieldName.HBin(): '0'
     }
     self._alarm_bin_number += 1
     return bin
示例#5
0
    def generate_site_infos(site_infos: dict) -> dict:
        ret_dict = {}
        for site_info in site_infos:
            ret_dict[site_info[BinTableFieldName.SBinNum()]] =\
                BinInfo(site_info[BinTableFieldName.SBinName()],
                        int(site_info[BinTableFieldName.SBinNum()]),
                        int(site_info[BinTableFieldName.HBin()]),
                        0,
                        'F')

        return ret_dict
示例#6
0
 def add_bin(self,
             sb_name: str,
             sb_num: str,
             sb_group: str,
             sb_desc: str,
             h_bin: str = '0'):
     self._binning_table[sb_name] = {
         BinTableFieldName.SBinNum(): sb_num,
         BinTableFieldName.SBinGroup(): sb_group,
         BinTableFieldName.SBinDescription(): sb_desc,
         BinTableFieldName.HBin(): h_bin
     }
    def get_bin_settings(bin_table: list) -> dict:
        settings = {}

        for bin_info in bin_table:
            settings.setdefault(bin_info[BinTableFieldName.SBinGroup()], {
                'hbins': [],
                'sbins': []
            })['hbins'].append(bin_info[BinTableFieldName.HBin()])
            settings.setdefault(bin_info[BinTableFieldName.SBinGroup()], {
                'hbins': [],
                'sbins': []
            })['sbins'].append(bin_info[BinTableFieldName.SBinNum()])

        return settings
示例#8
0
    def set_sites_information(self, site_infos: dict):
        self.bin_names = [
            site_info[BinTableFieldName.SBinName()] for site_info in site_infos
        ]

        for site_id in self.sites_id:
            self.sites_info[site_id] = SiteInformation(site_id, site_infos)
示例#9
0
    def _generate_bin_table(self) -> dict:
        self._binning_table.update(self._alarm_binning_table)
        # TODO: is there a better way to integrade good bin 1 ?
        self.add_bin("Good_1", '1', 'Good1', '', h_bin='1')
        for sb_name in self._binning_table.keys():
            self._binning_table[sb_name][
                BinTableFieldName.SBinName()] = sb_name

        return self._binning_table.items()
示例#10
0
    def generate_bin_identrifiers(self, identifier_offset: int = 1):
        sb_num = 11
        sb_name = f'Bin_{sb_num}'

        if not self._binning_table:
            return sb_name, str(sb_num)

        sb_num = max([
            int(bin[BinTableFieldName.SBinNum()])
            for _, bin in self._binning_table.items()
        ]) + identifier_offset
        sb_name = f'Bin_{sb_num}'

        if self._binning_table.get(sb_name):
            return self.generate_bin_identrifiers(identifier_offset + 1)

        return sb_name, str(sb_num)
示例#11
0
    def load_bin_table(self, file_name: str):
        data = self.read_binning_file(file_name)
        self._binning_table.clear()

        for bin_info in data:
            if int(bin_info[BinTableFieldName.SBinNum()]) in range(ALARM_BIN_MIN, ALARM_BIN_MAX + 1) or \
               int(bin_info[BinTableFieldName.SBinNum()]) == GOOD_GRADE_BIN:
                continue

            self.add_bin(bin_info[BinTableFieldName.SBinName()],
                         bin_info[BinTableFieldName.SBinNum()],
                         bin_info[BinTableFieldName.SBinGroup()],
                         bin_info[BinTableFieldName.SBinDescription()])
示例#12
0
 def update(self):
     self.binning_table.clear()
     self.binning_table.setRowCount(self._bin_container.get_bin_table_size())
     for row, (sb_name, value) in enumerate(self._bin_container.get_bin_table().items()):
         self.add_bin(row, sb_name, str(value[BinTableFieldName.SBinNum()]),
                      value[BinTableFieldName.SBinGroup()], value[BinTableFieldName.SBinDescription()])
示例#13
0
 def get_alarm_bin_num(self, sb_name: str) -> str:
     return self._alarm_binning_table[sb_name][BinTableFieldName.SBinNum()]
示例#14
0
 def update_bin_info(self, sb_name: str, sb_num: str, sb_group: str,
                     sb_desc: str):
     self._binning_table[sb_name][BinTableFieldName.SBinNum()] = sb_num
     self._binning_table[sb_name][BinTableFieldName.SBinGroup()] = sb_group
     self._binning_table[sb_name][
         BinTableFieldName.SBinDescription()] = sb_desc
示例#15
0
    def does_bin_num_exist(self, bin_num: str) -> bool:
        for _, value in self._binning_table.items():
            if value[BinTableFieldName.SBinNum()] == bin_num:
                return True

        return False