import os import numpy as np import subprocess # def ratio(losses, thresholds=[1,2,3,4,5,6,7,8,9,10]): def ratio(losses, thresholds=[5,10]): return [ '{:.3f}'.format(np.mean(losses < threshold)) for threshold in thresholds ] if __name__ == '__main__': scene = 'Indoor' dir_base = 'result_errors/Indoor/' save_pt = 'resultfinal_errors/Indoor/' subprocess.check_output(['mkdir', '-p', save_pt]) with open(save_pt +'ratio_methods_'+scene+'.txt','w') as f: f.write('5deg 10deg'+'\n') pair_list = os.listdir(dir_base) enhancer = os.listdir(dir_base+'/pair9/') for method in enhancer: pose_error_list = sorted(os.listdir(dir_base+'/pair9/'+method)) for pose_error in pose_error_list: error_array = np.expand_dims(np.zeros((6, 8)),axis=2) for pair in pair_list: try: error = np.expand_dims(np.load(dir_base+'/'+pair+'/'+method+'/'+pose_error),axis=2) except: print('error in', dir_base+'/'+pair+'/'+method+'/'+pose_error) continue error_array = np.concatenate((error_array,error),axis=2) ratio_result = ratio(error_array[:,:,1::].flatten()) f.write(method + '_' + pose_error[11:-4] +' '+' '.join([str(i) for i in ratio_result])+"\n") scene = 'Outdoor' dir_base = 'result_errors/Outdoor/' save_pt = 'resultfinal_errors/Outdoor/' subprocess.check_output(['mkdir', '-p', save_pt]) with open(save_pt +'ratio_methods_'+scene+'.txt','w') as f: f.write('5deg 10deg'+'\n') pair_list = os.listdir(dir_base) enhancer = os.listdir(dir_base+'/pair9/') for method in enhancer: pose_error_list = sorted(os.listdir(dir_base+'/pair9/'+method)) for pose_error in pose_error_list: error_array = np.expand_dims(np.zeros((6, 8)),axis=2) for pair in pair_list: error = np.expand_dims(np.load(dir_base+'/'+pair+'/'+method+'/'+pose_error),axis=2) error_array = np.concatenate((error_array,error),axis=2) ratio_result = ratio(error_array[:,:,1::].flatten()) f.write(method + '_' + pose_error[11:-4] +' '+' '.join([str(i) for i in ratio_result])+"\n")