Source code for GenerateMeasurements.GenerateMeasurements

 1"""Measurement generation for the evolution pipeline.
 2
 3Creates :class:`~BitstreamEvolutionProtocols.Measurement` objects for each
 4circuit in a population, linking them back to the individuals whose
 5fitness they determine.
 6"""
 7
 8from BitstreamEvolutionProtocols import CircuitFactory, DataRequest, Individual, Measurement, Population
[docs] 9class SimpleGenerateMeasurements: 10 ''' 11 A simple implementater of GenerateMeasurements protocol 12 Stores a single FPGA and the data request that will be performed 13 ''' 14 def __init__(self, fpga: str, data_req: DataRequest, num_samples: int): 15 self.__fpga = fpga 16 self.__data_req = data_req 17 self.__num_samples = num_samples 18 19 def generate(self, factory: CircuitFactory, populations: list[Population]) -> dict[Measurement, list[tuple[Population, Individual]]]: 20 circuit_dict = factory(populations) 21 result: dict[Measurement, list[tuple[Population, Individual]]] = {} 22 for circuit in circuit_dict: 23 other = circuit_dict[circuit] 24 m = Measurement(self.__fpga, self.__data_req, circuit, self.__num_samples) 25 result[m] = other 26 return result
27