mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 21:39:08 +09:00
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
|
|
|
|
import curses
|
|
import time
|
|
import glob
|
|
import os
|
|
import numpy as np
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
def update_max_len(max_len_list, val_list):
|
|
for it, val in enumerate(val_list):
|
|
if max_len_list[it]< len(val):
|
|
max_len_list[it] = len(val)
|
|
|
|
return max_len_list
|
|
|
|
|
|
def main(sc):
|
|
sc.nodelay(1)
|
|
header = 'Reconstruction monitor - cSAXS beamline'
|
|
|
|
curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
|
|
offset_left = 1
|
|
offset_min = 5
|
|
file_path = os.path.dirname(os.path.realpath(__file__))
|
|
while True:
|
|
sc.clear()
|
|
stdscr = curses.initscr()
|
|
ln = curses.LINES
|
|
sc.addstr(0,curses.COLS//2-len(header)//2, header, curses.color_pair(2))
|
|
#sc.addstr(1, 1, time.strftime("%H:%M:%S"))
|
|
|
|
|
|
fn_list = glob.glob(file_path + '/.tmp_procID/proc_*.dat')
|
|
|
|
data = []
|
|
max_len_data = np.zeros([4])
|
|
title_lst = ['Node', 'Scan number', 'Elapsed time', 'Caller']
|
|
max_len_data = update_max_len(max_len_data, title_lst)
|
|
|
|
fn_list.sort(key=lambda x: os.stat(os.path.join('./', x)).st_mtime)
|
|
for ii,fn in enumerate(fn_list):
|
|
with open(fn, 'r') as f:
|
|
for line in f:
|
|
tmp_data = line.split()
|
|
|
|
time_diff = datetime.strptime(time.strftime("%H:%M:%S"), '%H:%M:%S') - datetime.strptime(tmp_data[3], '%H:%M:%S')
|
|
tmp_lst = [tmp_data[0], tmp_data[1], str(time_diff), tmp_data[4]]
|
|
data.append(tmp_lst)
|
|
max_len_data = update_max_len(max_len_data, tmp_lst)
|
|
|
|
|
|
|
|
sum_offset = np.zeros([5])
|
|
sum_offset[0] = offset_left
|
|
|
|
|
|
for ii,val in enumerate(title_lst):
|
|
sc.addstr(3, int(sum_offset[ii] + max_len_data[ii]//2-len(val)//2), val)
|
|
sum_offset[ii+1] = offset_min + sum_offset[ii] + max_len_data[ii]
|
|
|
|
for ii,lst in enumerate(data):
|
|
for jj, lst_val in enumerate(lst):
|
|
sc.addstr(ii+4,int(sum_offset[jj] + max_len_data[jj]//2-len(lst_val)//2), lst_val)
|
|
|
|
|
|
|
|
sc.refresh()
|
|
|
|
key = sc.getch()
|
|
if key == ord('q'):
|
|
break
|
|
elif key < 0:
|
|
time.sleep(1)
|
|
|
|
if __name__=='__main__': curses.wrapper(main)
|
|
|