def do_etendue_via_imager(conj_type, imager, etendue_inputs, etendue_grid, n_0=1, n_k=1): imager_inputs = {} li = dict2d.num_items_by_type(etendue_inputs, fld_ape_set, obj_img_set) if li['field'] == 1: row = dict2d.row(etendue_inputs, 'field') obj_img_key = 'object' if len(row['object']) else 'image' do_field_via_imager(conj_type, imager, etendue_inputs, obj_img_key, etendue_grid, n_0=n_0, n_k=n_k) if li['aperture'] == 1: row = dict2d.row(etendue_inputs, 'aperture') obj_img_key = 'object' if len(row['object']) else 'image' do_aperture_via_imager(conj_type, imager, etendue_inputs, obj_img_key, etendue_grid) if li['field'] == 2 or li['aperture'] == 2: fld_ape_key = 'field' if li['field'] == 2 else 'aperture' # solve for imager imager_inputs = do_etendue_to_imager(fld_ape_key, etendue_inputs, etendue_grid, n_0=n_0, n_k=n_k) return imager_inputs
def partition_defined(self): """ which partition defines the imager or None """ num_imager_inputs = len(self.imager_inputs) li = dict2d.num_items_by_type(self.etendue_inputs, fld_ape_set, obj_img_set) num_field_inputs = li['field'] num_aperture_inputs = li['aperture'] partitions = {'imager': num_imager_inputs, 'field': num_field_inputs, 'aperture': num_aperture_inputs} self.partitions = partitions max_partition = max(partitions, key=partitions.get) max_num_inputs = partitions[max_partition] return max_partition if max_num_inputs == 2 else None, max_num_inputs