from glob import glob
import os
import numpy as np
from tools import calculate_exph
from traceback import extract_tb
from datetime import datetime

logfile = f"progress_rt_{datetime.now().strftime('%Y%m%d')}.txt"
def log_message(msg):
    with open(logfile, 'a') as fid:
        fid.write(f"{datetime.now().strftime('%H:%M:%S')} {msg}\n")

def cal_exph():
    ropair = glob('./t01_RO/*.npz')
    for qq, rofile in enumerate(ropair):
        if not os.path.isfile(rofile.replace('t01_RO','t03_pair')):
            log_message(f'-- No-REF skip for {qq}: {os.path.basename(rofile)}')
            continue
        try:
            with np.load(rofile.replace('t01_RO','t03_pair'), allow_pickle=True) as fid:
                reffiles = fid['reffile']
            calculate_exph(rofile, reffiles)
        except Exception as e:
            log_message(f'-- Error detected for {qq}: {os.path.basename(rofile)}')
            log_message(f'---  {type(e).__name__} >> {str(e)}')
            for tb in extract_tb(e.__traceback__):
                log_message(f"---  line {tb.lineno} of {tb.filename}")
