diff options
Diffstat (limited to 'src/file.py')
-rw-r--r-- | src/file.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/file.py b/src/file.py new file mode 100644 index 0000000..4285207 --- /dev/null +++ b/src/file.py @@ -0,0 +1,44 @@ +import re, sys, traceback, json +import phys + +file_format_version = 1 + +def save_system(path, system): + ser = dict() + ser["version"] = file_format_version + + ser["ignore"] = system.ignore + ser["elements"] = [] + for pol in system.elements: + el = { + "type": pol.type, + "angle": pol.angle, + "delta": pol.delta, + "ref": pol.ref + } + + ser["elements"].append(el) + + with open(path, "w") as fd: + fd.write(json.dumps(ser)) + +def open_system(path): + system = phys.System() + + with open(path, "r") as fd: + ser = json.loads(fd.read()) + + if ser["version"] != file_format_version: + raise ValueError("Bad file version: expected %d, found %d" \ + % (file_format_version, ser["version"])) + + system.ignore = ser["ignore"] + + for el in ser["elements"]: + pol = phys.Polarizer(str(el["type"])) + pol.angle = float(el["angle"]) + pol.delta = float(el["delta"]) + pol.ref = el["ref"] + system.elements.append(pol) + + return system
\ No newline at end of file |