Beispiel #1
0
    def write(self, data: base.LoggingData):
        """Writes a `data` into a row of comma-separated values."""
        # Only log if `time_delta` seconds have passed since last logging event.
        now = time.time()

        # TODO(b/192227744): Remove this in favour of filters.TimeFilter.
        elapsed = now - self._last_log_time
        if elapsed < self._time_delta:
            logging.debug(
                'Not due to log for another %.2f seconds, dropping data.',
                self._time_delta - elapsed)
            return
        self._last_log_time = now

        # Append row to CSV.
        data = base.to_numpy(data)
        # Use fields from initial `data` to create the header. If extra fields are
        # present in subsequent `data`, we ignore them.
        if not self._writer:
            fields = sorted(data.keys())
            self._writer = csv.DictWriter(self._file,
                                          fieldnames=fields,
                                          extrasaction='ignore')
            # Write header only if the file is empty.
            if not self._file.tell():
                self._writer.writeheader()
        self._writer.writerow(data)

        # Flush every `flush_every` writes.
        if self._writes % self._flush_every == 0:
            self.flush()
        self._writes += 1
Beispiel #2
0
    def write(self, data: base.LoggingData):
        """Writes a `data` into a row of comma-separated values."""

        # Only log if `time_delta` seconds have passed since last logging event.
        now = time.time()
        if now - self._last_log_time < self._time_delta:
            return
        self._last_log_time = now

        # Append row to CSV.
        data = base.to_numpy(data)
        if not self._writer:
            keys = sorted(data.keys())
            self._writer = csv.DictWriter(self._file, fieldnames=keys)
            self._writer.writeheader()
        self._writer.writerow(data)
Beispiel #3
0
    def write(self, data: base.LoggingData):
        """Writes a `data` into a row of comma-separated values."""

        # Only log if `time_delta` seconds have passed since last logging event.
        now = time.time()
        if now - self._time < self._time_delta:
            return
        self._time = now

        # Append row to CSV.
        with self._open(self._file_path, mode='a') as f:
            data = base.to_numpy(data)
            keys = sorted(data.keys())
            writer = csv.DictWriter(f, fieldnames=keys)
            if not self._header_exists:
                # Only write the column headers once.
                writer.writeheader()
                self._header_exists = True
            writer.writerow(data)
Beispiel #4
0
    def write(self, data: base.LoggingData):
        """Writes a `data` into a row of comma-separated values."""
        # Only log if `time_delta` seconds have passed since last logging event.
        now = time.time()
        if now - self._last_log_time < self._time_delta:
            return
        self._last_log_time = now

        # Append row to CSV.
        data = base.to_numpy(data)
        # Use fields from initial `data` to create the header. If extra fields are
        # present in subsequent `data`, we ignore them.
        if not self._writer:
            fields = sorted(data.keys())
            self._writer = csv.DictWriter(self._file,
                                          fieldnames=fields,
                                          extrasaction='ignore')
            self._writer.writeheader()
        self._writer.writerow(data)
Beispiel #5
0
def _format_value(value: Any) -> str:
    """Internal function for formatting values."""
    value = base.to_numpy(value)
    if isinstance(value, (float, np.number)):
        return f'{value:0.3f}'
    return f'{value}'
Beispiel #6
0
 def test_device_array_serialisation(self):
     data = {'x': jnp.zeros(shape=(32, ))}
     output = base.to_numpy(data)
     expected = {'x': np.zeros(shape=(32, ))}
     np.testing.assert_array_equal(output['x'], expected['x'])