def obj_func(xdict): global posdntr_opt global velodtr_opt param = xdict['param'] funcs = {} coef0 = np.array([]) coef1 = np.array([]) coef2 = np.array([]) coef3 = np.array([]) coef4 = np.array([]) coef5 = np.array([]) coef6 = np.array([]) coef7 = np.array([]) coef8 = np.array([]) k = 0 for i in range(9): for j in range(10): exec('coef'+str(i)+'= np.append(coef'+str(i)+',param['+str(k)+'])') k += 1 posdn = posdntr_opt[0,:] poslt = posdntr_opt[1,:] vel = _velcalcqme.sheet(xttr,ystr,posdn,poslt,coef0,coef1,coef2,coef3,coef4,coef5,coef6,coef7,coef8) error = np.sum((vel-velodtr_opt)**2) ##Print # print error funcs['obj'] = error fail = False return funcs, fail
def sheet(pos,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param11,param12,param13,param14,param15,param16,param17,param18,param19,param20,param21,param22,param23,param24,param25,param26,param27,param28,param29,param30,param31,param32,param33,param34,param35,param36,param37,param38,param39,param40,param41,param42,param43,param44,param45,param46,param47,param48,param49,param50,param51,param52,param53,param54,param55,param56,param57,param58,param59,param60,param61,param62,param63,param64,param65,param66,param67,param68,param69,param70,param71,param72,param73,param74,param75,param76,param77,param78,param79,param80,param81,param82,param83,param84,param85,param86,param87,param88,param89,param90): global xttr global ystr global spr1_ord global pow1_ord global pow2_ord global pow3_ord global spr2_ord global skw_ord global scl1_ord global scl2_ord global scl3_ord coef0 = np.array([]) coef1 = np.array([]) coef2 = np.array([]) coef3 = np.array([]) coef4 = np.array([]) coef5 = np.array([]) coef6 = np.array([]) coef7 = np.array([]) coef8 = np.array([]) k = 1 for i in range(9): for j in range(10): exec('coef'+str(i)+'= np.append(coef'+str(i)+',param'+str(k)+')') k += 1 posdn = pos[0,:] poslt = pos[1,:] # p00,p10,p01,p20,p11,p02,p30,p21,p12,p03 if spr1_ord == 2: coef0[9] = 0. if pow1_ord == 1: coef1[3] = 0. coef1[6] = 0. coef1[7] = 0. coef1[8] = 0. coef1[9] = 0. elif pow1_ord == 2: coef1[6] = 0. coef1[7] = 0. coef1[8] = 0. coef1[9] = 0. if pow2_ord == 1: coef2[6] = 0. coef2[7] = 0. coef2[8] = 0. coef2[9] = 0. elif pow2_ord == 2: coef2[5] = 0. coef2[6] = 0. coef2[7] = 0. coef2[8] = 0. coef2[9] = 0. if pow3_ord == 1: coef3[9] = 0. if spr2_ord == 1: coef4[3] = 0. coef4[6] = 0. coef4[7] = 0. coef4[8] = 0. coef4[9] = 0. elif spr2_ord == 2: coef4[9] = 0. if skw_ord == 1: coef5[6] = 0. elif skw_ord == 2: coef5[9] = 0. if scl1_ord == 1: coef6[9] = 0. if scl2_ord == 1: coef7[9] = 0. if scl3_ord == 2: coef8[6] = 0. coef8[7] = 0. coef8[8] = 0. coef8[9] = 0. # p00,p10,p01,p20,p11,p02,p30,p21,p12,p03 vel = _velcalcqme.sheet(xttr,ystr,posdn,poslt,coef0,coef1,coef2,coef3,coef4,coef5,coef6,coef7,coef8) # print vel ## Using Python instead of Fortran # vel = np.zeros_like(posdn) # for i in range(np.size(pos[0,:])): # spr1 = overlay(xttr[i],ystr[i],coef0) # pow1 = overlay(xttr[i],ystr[i],coef1) # pow2 = overlay(xttr[i],ystr[i],coef2) # pow3 = overlay(xttr[i],ystr[i],coef3) # spr2 = overlay(xttr[i],ystr[i],coef4) # skw = overlay(xttr[i],ystr[i],coef5) # scl1 = overlay(xttr[i],ystr[i],coef6) # scl2 = overlay(xttr[i],ystr[i],coef7) # scl3 = overlay(xttr[i],ystr[i],coef8) # # # vel[i] = veldist(posdn[i],poslt[i],spr1,pow1,pow2,pow3,spr2,skw,scl1,scl2,scl3) # print i,'of (',np.size(posdn),')' # print vel return vel
coef3 = np.array([]) coef4 = np.array([]) coef5 = np.array([]) coef6 = np.array([]) coef7 = np.array([]) coef8 = np.array([]) k = 0 for i in range(9): for j in range(10): exec('coef'+str(i)+'= np.append(coef'+str(i)+',res[k])') k += 1 if cv_on == 0: velc = _velcalcqme.sheet(xttr,ystr,posdntr[0,:],posdntr[1,:],coef0,coef1,coef2,coef3,coef4,coef5,coef6,coef7,coef8) velf = _velcalcqme.sheet(xtts,ysts,posdnts[0,:],posdnts[1,:],coef0,coef1,coef2,coef3,coef4,coef5,coef6,coef7,coef8) error_curve = np.sum((velc-velodtr)**2) error_cv = np.sum((velf-velodts)**2) print '\nCross Validation Error:',error_cv print 'Curve Fit Error:',error_curve print '\ncoef0 = np.array(',coef0.tolist(),')' print 'coef1 = np.array(',coef1.tolist(),')' print 'coef2 = np.array(',coef2.tolist(),')' print 'coef3 = np.array(',coef3.tolist(),')' print 'coef4 = np.array(',coef4.tolist(),')' print 'coef5 = np.array(',coef5.tolist(),')' print 'coef6 = np.array(',coef6.tolist(),')'