Source code for jupyter_analysis_tools.ssfz_compare
# -*- coding: utf-8 -*-
# ssfz2json.py
import argparse
import difflib
import json
import sys
from pathlib import Path
from jupyter_analysis_tools.readdata import readSSFZ
[docs]
def main():
parser = argparse.ArgumentParser(
description="""
Reads and parses the embedded metadata of two .SSFZ files created by Anton Paar
SAXSquant software, converts them to JSON format and performs a diff-like comparison
which is output on <stdout>.
"""
)
parser.add_argument(
"fromfile",
type=lambda p: Path(p).absolute(),
help="Path of the first .SSFZ file to compare.",
)
parser.add_argument(
"tofile",
type=lambda p: Path(p).absolute(),
help="Path of the second .SSFZ file to compare to.",
)
json_args = dict(sort_keys=True, indent=2)
args = parser.parse_args()
# print(args)
if not args.fromfile.is_file():
print(f"Provided file '{args.fromfile}' not found!")
return 1
if not args.tofile.is_file():
print(f"Provided file '{args.tofile}' not found!")
return 1
olddata = readSSFZ(args.fromfile)
newdata = readSSFZ(args.tofile)
diff = difflib.unified_diff(
json.dumps(olddata, **json_args).splitlines(keepends=True),
json.dumps(newdata, **json_args).splitlines(keepends=True),
fromfile=str(args.fromfile),
tofile=str(args.tofile),
)
for line in diff:
print(line, end="")
return 0
if __name__ == "__main__":
sys.exit(main())