"""Resume only statistics and figures after all sampling is complete.""" import fcntl import json import subprocess import sys import traceback from common import ROOT, VARIANTS, conditions, local_only, progress, write_json, sha if __name__ == '__main__': local_only() lock=(ROOT/'campaign.lock').open('a') fcntl.flock(lock,fcntl.LOCK_EX|fcntl.LOCK_NB) try: assert all((ROOT/'samples'/v/f'{c}.npz').exists() for v in VARIANTS for c in conditions()) progress('status.json',state='analyzing',resumed_analysis=True) write_json(ROOT/'analysis_source_manifest.json',{p.name:sha(p) for p in ROOT.glob('*.py')}) subprocess.run([sys.executable,str(ROOT/'analyze.py')],check=True) subprocess.run([sys.executable,str(ROOT/'illustrate.py')],check=True) validation=json.loads((ROOT/'validation.json').read_text()) validation.update(png_figures=len(list((ROOT/'figs').glob('*.png'))), pdf_figures=len(list((ROOT/'figs').glob('*.pdf'))),report_sha256=sha(ROOT/'report.md')) write_json(ROOT/'validation.json',validation) progress('status.json',state='complete',conditions=20,models=3,samples=30720,report=str(ROOT/'report.md')) except BaseException as e: progress('status.json',state='failed',error=repr(e));traceback.print_exc();sys.exit(1)