Source code for dplus.FileReaders

import json
import math
import numpy as np
from collections import OrderedDict


def _handle_infinity_for_json(obj):
    if isinstance(obj, float):
        if obj==math.inf:
            return("inf")
        if obj==-math.inf:
            return("-inf")
    elif isinstance(obj, dict):
        return dict((k, _handle_infinity_for_json(v)) for k, v in obj.items())
    elif isinstance(obj, list):
        return [_handle_infinity_for_json(x) for x in obj]
    elif isinstance(obj, tuple):
        return map(_handle_infinity_for_json, obj)
    return obj

class NumpyHandlingEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(NumpyHandlingEncoder, self).default(obj)

[docs]class SignalFileReader: ''' SignalFileReader class can be initialized with a path to a signal file (eg a .out or .dat file) \ and will read that file into its `x_vec`, `y_vec`, and `graph` properties. ''' def __init__(self, filename): self.signal_filename=filename self._read() def _read(self): self.graph = OrderedDict() self.x_vec = [] self.y_vec = [] with open(self.signal_filename) as signal_file: for line in signal_file: if '#' in line: # a header line continue values = line.split() if len(values) > 1: # two float values try: x = float(values[0]) y = float(values[1]) self.x_vec.append(x) self.y_vec.append(y) self.graph[float(x)] = float(y) except ValueError: # in the c++ code, if they werne't floats, it just continued continue