def test_ener (args) : if args.rand_seed is not None : np.random.seed(args.rand_seed % (2**32)) data = DataSets (args.system, args.set_prefix, shuffle_test = args.shuffle_test) test_data = data.get_test () numb_test = args.numb_test natoms = len(test_data["type"][0]) nframes = test_data["box"].shape[0] numb_test = min(nframes, numb_test) dp = DeepPot(args.model) coord = test_data["coord"][:numb_test].reshape([numb_test, -1]) box = test_data["box"][:numb_test] atype = test_data["type"][0] if dp.get_dim_fparam() > 0: fparam = test_data["fparam"][:numb_test] else : fparam = None if dp.get_dim_aparam() > 0: aparam = test_data["aparam"][:numb_test] else : aparam = None energy, force, virial, ae, av = dp.eval(coord, box, atype, fparam = fparam, aparam = aparam, atomic = True) energy = energy.reshape([numb_test,1]) force = force.reshape([numb_test,-1]) virial = virial.reshape([numb_test,9]) ae = ae.reshape([numb_test,-1]) av = av.reshape([numb_test,-1]) l2e = (l2err (energy - test_data["energy"][:numb_test].reshape([-1,1]))) l2f = (l2err (force - test_data["force"] [:numb_test])) l2v = (l2err (virial - test_data["virial"][:numb_test])) l2ea= l2e/natoms l2va= l2v/natoms # print ("# energies: %s" % energy) print ("# number of test data : %d " % numb_test) print ("Energy L2err : %e eV" % l2e) print ("Energy L2err/Natoms : %e eV" % l2ea) print ("Force L2err : %e eV/A" % l2f) print ("Virial L2err : %e eV" % l2v) print ("Virial L2err/Natoms : %e eV" % l2va) detail_file = args.detail_file if detail_file is not None : pe = np.concatenate((np.reshape(test_data["energy"][:numb_test], [-1,1]), np.reshape(energy, [-1,1])), axis = 1) np.savetxt(detail_file+".e.out", pe, header = 'data_e pred_e') pf = np.concatenate((np.reshape(test_data["force"] [:numb_test], [-1,3]), np.reshape(force, [-1,3])), axis = 1) np.savetxt(detail_file+".f.out", pf, header = 'data_fx data_fy data_fz pred_fx pred_fy pred_fz') pv = np.concatenate((np.reshape(test_data["virial"][:numb_test], [-1,9]), np.reshape(virial, [-1,9])), axis = 1) np.savetxt(detail_file+".v.out", pv, header = 'data_vxx data_vxy data_vxz data_vyx data_vyy data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz')
def test_ener(args): """ modify based on args file """ if args['rand_seed'] is not None: np.random.seed(args['rand_seed'] % (2**32)) data = DataSets(args['system'], args['set_prefix'], shuffle_test=args['shuffle_test']) test_data = data.get_test() numb_test = args['numb_test'] natoms = len(test_data["type"][0]) nframes = test_data["box"].shape[0] numb_test = min(nframes, numb_test) dp = DeepPot(args['model']) coord = test_data["coord"][:numb_test].reshape([numb_test, -1]) box = test_data["box"][:numb_test] atype = test_data["type"][0] if dp.get_dim_fparam() > 0: fparam = test_data["fparam"][:numb_test] else: fparam = None if dp.get_dim_aparam() > 0: aparam = test_data["aparam"][:numb_test] else: aparam = None detail_file = args['detail_file'] if detail_file is not None: atomic = True else: atomic = False ret = dp.eval(coord, box, atype, fparam=fparam, aparam=aparam, atomic=atomic) energy = ret[0] force = ret[1] virial = ret[2] energy = energy.reshape([numb_test, 1]) force = force.reshape([numb_test, -1]) virial = virial.reshape([numb_test, 9]) if atomic: ae = ret[3] av = ret[4] ae = ae.reshape([numb_test, -1]) av = av.reshape([numb_test, -1]) l2e = (l2err(energy - test_data["energy"][:numb_test].reshape([-1, 1]))) l2f = (l2err(force - test_data["force"][:numb_test])) l2v = (l2err(virial - test_data["virial"][:numb_test])) l2ea = l2e / natoms l2va = l2v / natoms # print ("# energies: %s" % energy) print("# number of test data : %d " % numb_test) print("Energy L2err : %e eV" % l2e) print("Energy L2err/Natoms : %e eV" % l2ea) print("Force L2err : %e eV/A" % l2f) print("Virial L2err : %e eV" % l2v) print("Virial L2err/Natoms : %e eV" % l2va) if detail_file is not None: pe = np.concatenate((np.reshape(test_data["energy"][:numb_test], [-1, 1]), np.reshape(energy, [-1, 1])), axis=1) np.savetxt(os.path.join(args['system'], detail_file + ".e.out"), pe, header='data_e pred_e') pf = np.concatenate((np.reshape(test_data["force"][:numb_test], [-1, 3]), np.reshape(force, [-1, 3])), axis=1) np.savetxt(os.path.join(args['system'], detail_file + ".f.out"), pf, header='data_fx data_fy data_fz pred_fx pred_fy pred_fz') pv = np.concatenate((np.reshape(test_data["virial"][:numb_test], [-1, 9]), np.reshape(virial, [-1, 9])), axis=1) np.savetxt( os.path.join(args['system'], detail_file + ".v.out"), pv, header= 'data_vxx data_vxy data_vxz data_vyx data_vyy data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz' ) return numb_test, fparam[0][0], natoms, l2e, l2ea, l2f, l2v