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")
class ResourcesRecorder(aegis_sim.recording.recorder.Recorder):
 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")
ResourcesRecorder(odir)
7    def __init__(self, odir):
8        self.odir = odir
9        self._buffers = {}
odir
def flush_all(self):
25    def flush_all(self):
26        for filename in list(self._buffers.keys()):
27            self._flush(filename)
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