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