aegis_sim.recording.resourcerecorder
1from .recorder import Recorder 2from aegis_sim.submodels.resources.resources import resources 3 4 5class ResourcesRecorder(Recorder): 6 def __init__(self, odir): 7 self.odir = odir 8 self._buffers = {} 9 10 def _buffered_write(self, value, filename): 11 if filename not in self._buffers: 12 self._buffers[filename] = [] 13 self._buffers[filename].append(str(value)) 14 if len(self._buffers[filename]) >= 100: 15 self._flush(filename) 16 17 def _flush(self, filename): 18 if filename in self._buffers and self._buffers[filename]: 19 path = self.odir / filename 20 with open(path, "a") as file_: 21 file_.write("\n".join(self._buffers[filename]) + "\n") 22 self._buffers[filename] = [] 23 24 def flush_all(self): 25 for filename in list(self._buffers.keys()): 26 self._flush(filename) 27 28 def write_before_scavenging(self): 29 """ 30 # OUTPUT SPECIFICATION 31 path: /resources_before_scavenging.csv 32 filetype: csv 33 description: Amount of available resources before scavenging. 34 category: demography 35 time granularity: every step 36 frequency parameter: N/A 37 structure: A vector of numbers. 38 header: None 39 """ 40 self._buffered_write(resources.capacity, "resources_before_scavenging.csv") 41 42 def write_after_scavenging(self): 43 """ 44 # OUTPUT SPECIFICATION 45 path: /resources_after_scavenging.csv 46 filetype: csv 47 description: Amount of available resources after scavenging. 48 category: demography 49 time granularity: every step 50 frequency parameter: N/A 51 structure: A vector of numbers. 52 header: None 53 """ 54 self._buffered_write(resources.capacity, "resources_after_scavenging.csv")
6class ResourcesRecorder(Recorder): 7 def __init__(self, odir): 8 self.odir = odir 9 self._buffers = {} 10 11 def _buffered_write(self, value, filename): 12 if filename not in self._buffers: 13 self._buffers[filename] = [] 14 self._buffers[filename].append(str(value)) 15 if len(self._buffers[filename]) >= 100: 16 self._flush(filename) 17 18 def _flush(self, filename): 19 if filename in self._buffers and self._buffers[filename]: 20 path = self.odir / filename 21 with open(path, "a") as file_: 22 file_.write("\n".join(self._buffers[filename]) + "\n") 23 self._buffers[filename] = [] 24 25 def flush_all(self): 26 for filename in list(self._buffers.keys()): 27 self._flush(filename) 28 29 def write_before_scavenging(self): 30 """ 31 # OUTPUT SPECIFICATION 32 path: /resources_before_scavenging.csv 33 filetype: csv 34 description: Amount of available resources before scavenging. 35 category: demography 36 time granularity: every step 37 frequency parameter: N/A 38 structure: A vector of numbers. 39 header: None 40 """ 41 self._buffered_write(resources.capacity, "resources_before_scavenging.csv") 42 43 def write_after_scavenging(self): 44 """ 45 # OUTPUT SPECIFICATION 46 path: /resources_after_scavenging.csv 47 filetype: csv 48 description: Amount of available resources after scavenging. 49 category: demography 50 time granularity: every step 51 frequency parameter: N/A 52 structure: A vector of numbers. 53 header: None 54 """ 55 self._buffered_write(resources.capacity, "resources_after_scavenging.csv")
def
write_before_scavenging(self):
29 def write_before_scavenging(self): 30 """ 31 # OUTPUT SPECIFICATION 32 path: /resources_before_scavenging.csv 33 filetype: csv 34 description: Amount of available resources before scavenging. 35 category: demography 36 time granularity: every step 37 frequency parameter: N/A 38 structure: A vector of numbers. 39 header: None 40 """ 41 self._buffered_write(resources.capacity, "resources_before_scavenging.csv")
OUTPUT SPECIFICATION
path: /resources_before_scavenging.csv filetype: csv description: Amount of available resources before scavenging. category: demography time granularity: every step frequency parameter: N/A structure: A vector of numbers. header: None
def
write_after_scavenging(self):
43 def write_after_scavenging(self): 44 """ 45 # OUTPUT SPECIFICATION 46 path: /resources_after_scavenging.csv 47 filetype: csv 48 description: Amount of available resources after scavenging. 49 category: demography 50 time granularity: every step 51 frequency parameter: N/A 52 structure: A vector of numbers. 53 header: None 54 """ 55 self._buffered_write(resources.capacity, "resources_after_scavenging.csv")
OUTPUT SPECIFICATION
path: /resources_after_scavenging.csv filetype: csv description: Amount of available resources after scavenging. category: demography time granularity: every step frequency parameter: N/A structure: A vector of numbers. header: None