| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- import os
- import sys
- import time
- import pandas as pd
- import json
- import numpy as np
- import math
- import subprocess
- import paramiko
- sys.path.append(os.path.expanduser('~/sources/'))
- import mailimage
- import mailkpi
-
-
-
- WDIR_DEFAULT = os.path.expanduser('~/data/')
- SDIR_DEFAULT = os.path.abspath('/hdd/')
- RECFRAME_DEFAULT = 1800
- JSON_PATH = '~/sources/configuration.json'
- SOURCE_DIR = '~/sources/'
- STORAGE_DIR = '/hdd/'
- WIDTH_NORMAL = float(4) / 1920
- HEIGHT_NORMAL = float(2.25) / 1080
-
-
- #dataFrame = cam1.csv, conf_cam = conf['cam1'] or conf['cam2']
- def sync_coord_main(dataFrame, conf_cam):
- df = dataFrame
- cam = conf_cam
- df.drop_duplicates(['frame'])
- radian = np.pi/180 * cam['angle']
- sin_a = np.sin(radian)
- cos_a = np.cos(radian)
-
- df['x'] = df['x'] * WIDTH_NORMAL
- df['y'] = df['y'] * HEIGHT_NORMAL
-
- g_cam_x = math.sqrt((cam['d_headCoord']**2) - (cam['d_center']**2))
- g_cam_y = cam['d_center'] * cos_a
- g_cam_z = cam['d_center'] * sin_a
-
- g_df = pd.DataFrame(data={'x': [], 'y': [], 'z': [], 'frame': []})
- g_df['x'] = df['x'] + g_cam_x
- g_df['frame'] = df['frame']
-
- for index, row in df.iterrows():
- A = [[sin_a,-(cos_a)],[cos_a, sin_a]]
- B = [row['y']-g_cam_y*sin_a-g_cam_z*cos_a, row['z']-g_cam_y*cos_a+g_cam_z*sin_a]
- C = np.linalg.solve(A,B)
- g_df['y'][index] = C[0]
- g_df['z'][index] = C[1]
-
- g_result = pd.DataFrame(data={'x': g_df['y'], 'y': g_df['x'], 'z': g_df['z'], 'frame': g_df['frame']})
-
- return(g_result)
-
-
-
-
-
-
-
-
-
-
-
- def sync_coord_sub(dataFrame, conf_cam):
- df = dataFrame
- cam = conf_cam
-
- df.drop_duplicates(['frame'])
- radian = np.pi/180 * cam['angle']
- sin_a = np.sin(radian)
- cos_a = np.cos(radian)
-
- df['x'] = df['x'] * WIDTH_NORMAL
- df['y'] = df['y'] * HEIGHT_NORMAL
-
- g_cam_x = math.sqrt((cam['d_headCoord']**2) - (cam['d_center']**2))
- g_cam_y = cam['d_center'] * cos_a
- g_cam_z = cam['d_center'] * sin_a
-
- g_df = pd.DataFrame(data={'x': [], 'y': [], 'z': [], 'frame': []})
- g_df['x'] = df['x'] + g_cam_x
-
- for index, row in df.iterrows():
- A = [[sin_a,cos_a],[cos_a,-(sin_a)]]
- B = [g_cam_y*sin_a + g_cam_z*cos_a - row['y'],-(g_cam_y*cos_a)-g_cam_z*sin_a-row['z']]
- C = np.linalg.solve(A,B)
- g_df['y'][index] = C[0]
- g_df['z'][index] = C[1]
-
- g_result = pd.DataFrame(data={'x': g_df['y'], 'y': g_df['x'], 'z': g_df['z'], 'frame': g_df['frame']})
-
-
- return(g_result)
-
-
-
-
- def loop_sync():
- with open (os.path.abspath(os.path.expanduser(JSON_PATH)), "r") as json_file:
- conf = json.load(json_file)
- hdd_list = []
- hdd_list = os.listdir(os.path.abspath(STORAGE_DIR))
- hdd_list.remove('lost+found')
- tmp_e = hdd_list[0]
- hdd_list[0] = hdd_list[1]
- hdd_list[1] = tmp_e
-
-
- for surgeon in hdd_list:
- surgeondatalist = os.listdir(os.path.abspath(STORAGE_DIR+surgeon))
- surgeondatalist = sorted(surgeondatalist)
- if 'kpi.csv' in surgeondatalist:
- transport = paramiko.Transport(('mc365.asuscomm.com', 63122))
- transport.connect(username='mc365', password='tkadbrdhMC1!')
- sftp = paramiko.SFTPClient.from_transport(transport)
- for surgeondata in surgeondatalist:
- try:
- sftp.put(os.path.abspath(STORAGE_DIR+surgeon+'/'+surgeondata), '/data/'+surgeon + '/' + surgeondata)
- except:
- pass
- sftp.close()
- transport.close()
- subprocess.Popen(['rm', '-rf', os.path.abspath(STORAGE_DIR+surgeon+'/')])
-
- else:
- if 'cam1.csv' in surgeondatalist:
- df_1 = pd.read_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam1.csv'))
- if conf['mainCam'] == conf['cam1']['SN']:
- g_cam1=sync_coord_main(df_1, conf['cam1'])
- g_cam1['cam'] = 1
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord.csv'),index=False)
- mailimage.draw_plot_cam_1(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord.png'))
- mailimage.draw_xy(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_xy.png'))
- mailimage.draw_yz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_yz.png'))
- mailimage.draw_xz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_xz.png'))
- if 'cam2.csv' not in surgeondatalist:
- g_cam1 = g_cam1.drop_duplicates(['frame'], keep='first')
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.csv'),index=False)
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_summary.csv'),index=False)
- mailimage.draw_plot_total(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.png'))
- mailimage.draw_xy(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xy.png'))
- mailimage.draw_yz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_yz.png'))
- mailimage.draw_xz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xz.png'))
- else:
- g_cam1=sync_coord_sub(df_1, conf['cam1'])
- g_cam1['cam'] = 1
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord.csv'),index=False)
- mailimage.draw_plot_cam_1(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord.png'))
- mailimage.draw_xy(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_xy.png'))
- mailimage.draw_yz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_yz.png'))
- mailimage.draw_xz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/cam1_coord_xz.png'))
- if 'cam2.csv' not in surgeondatalist:
- g_cam1 = g_cam1.drop_duplicates(['frame'], keep='first')
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.csv'),index=False)
- g_cam1.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_summary.csv'),index=False)
- mailimage.draw_plot_total(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.png'))
- mailimage.draw_xy(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xy.png'))
- mailimage.draw_yz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_yz.png'))
- mailimage.draw_xz(g_cam1, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xz.png'))
-
- if 'cam2.csv' in surgeondatalist:
- df_2 = pd.read_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam2.csv'))
-
- if conf['mainCam'] == conf['cam2']['SN']:
- g_cam2 = sync_coord_main(df_2, conf['cam2'])
- g_cam2['cam'] = 2
-
-
- g_cam2.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord.csv'),index=False)
- mailimage.draw_plot_cam_2(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord.png'))
- mailimage.draw_xy(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_xy.png'))
- mailimage.draw_yz(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_yz.png'))
- mailimage.draw_xz(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_xz.png'))
- g_coor = pd.concat([g_cam1,g_cam2])
- g_coor = g_coor.drop_duplicates(['frame'], keep='first')
- g_coor = g_coor.sort_values('frame')
- g_coor.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.csv'),index=False)
- g_coor.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_summary.csv'),index=False)
- mailimage.draw_plot_total(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.png'))
- mailimage.draw_xy(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xy.png'))
- mailimage.draw_yz(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_yz.png'))
- mailimage.draw_xz(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xz.png'))
- else:
- g_cam2 = sync_coord_sub(df_2, conf['cam2'])
- g_cam2['cam'] = 2
-
- g_cam2.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord.csv'),index=False)
- mailimage.draw_plot_cam_2(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord.png'))
- mailimage.draw_xy(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_xy.png'))
- mailimage.draw_yz(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_yz.png'))
- mailimage.draw_xz(g_cam2, os.path.abspath(STORAGE_DIR+surgeon+'/cam2_coord_xz.png'))
- g_coor = pd.concat([g_cam1,g_cam2])
- g_coor = g_coor.drop_duplicates(['frame'], keep='first')
- g_coor = g_coor.sort_values('frame')
- g_coor.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.csv'),index=False)
- g_coor.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_summary.csv'),index=False)
- mailimage.draw_plot_total(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.png'))
- mailimage.draw_xy(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xy.png'))
- mailimage.draw_yz(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_yz.png'))
- mailimage.draw_xz(g_coor, os.path.abspath(STORAGE_DIR+surgeon+'/coordinate_xz.png'))
- #difference of difference
- df_kpi = mailkpi.dist(os.path.abspath(STORAGE_DIR+surgeon+'/coordinate.csv'))
- mailkpi.put_kpi_to_db(df_kpi)
- df_kpi = pd.DataFrame([df_kpi])
- diff = pd.read_csv(os.path.abspath(STORAGE_DIR+surgeon+'/diff.csv'))
- mailimage.draw_diff_diff(diff,os.path.abspath(STORAGE_DIR+surgeon+'/diff.png'))
- df_kpi.to_csv(os.path.abspath(STORAGE_DIR+surgeon+'/kpi.csv'), index=False)
-
-
- #subprocess ftp
-
-
-
- def main():
- while True:
- loop_sync()
- time.sleep(15)
-
-
-
-
-
-
- if __name__ == "__main__":
- main()
-
|