def main(): # Input if len(sys.argv) != 3: check_correct_insert() if str(sys.argv[1]) != 'DFTB+' and str(sys.argv[1]) != 'GAMESS': check_correct_insert() if str(sys.argv[2]) != 'coll' and str(sys.argv[2]) != 'ms': check_correct_insert() program = str(sys.argv[1]) # GAMESS/DFTB+ mod = str(sys.argv[2]) # coll/ms # Get parameters if program == 'GAMESS': parameters_list = np.loadtxt("start_input_gamess", dtype=tuple, usecols=[1]) mod = 'coll' elif program == 'DFTB+': parameters_list = np.loadtxt("start_input_dftbplus", dtype=tuple, usecols=[1]) else: parameters_list = 0 print("error") name_target = str(parameters_list[0]) # Name file target name_bullett = str(parameters_list[1]) # Name file bullet d = float(parameters_list[2]) # Distance [Angstrom] limit = float(parameters_list[3]) # B_max [Angstrom] delta_b = float(parameters_list[4]) # Delta_b[Angstrom] numero_angoli = int( parameters_list[5]) # Angle's number (for target rotation) temperature_t = float( parameters_list[6]) # Roto-vib temperature for target temperature_p = float(parameters_list[7]) # " " " for bullet energy_coll = float( parameters_list[8]) # Collisional energy (in CM frame) [Kcal/mol] dt = float(parameters_list[9] ) # Timestep for dynamic, in fs for dftbplus and s in gamess step_to_add = int(parameters_list[10]) path_program = str(parameters_list[11]) if program == "DFTB+": # Parameters for dynamic (external programs) path = str(parameters_list[12]) charge = int(parameters_list[13]) temp_conv = float(parameters_list[14]) spin_spaiati = int(parameters_list[15]) icharge = 0 r_oruhf = 0 mult = 0 scr_dir = 0 else: dt = float(dt) r_oruhf = str(parameters_list[12]) mult = int(parameters_list[13]) icharge = int(parameters_list[14]) scr_dir = str(parameters_list[15]) path = 0 charge = 0 temp_conv = 0 spin_spaiati = 0 # Variables # Label atoms atoms_b = np.loadtxt(name_bullett, dtype=np.str, skiprows=2, usecols=[0]) atoms_t = np.loadtxt(name_target, dtype=np.str, skiprows=2, usecols=[0]) atoms_tot = [] if atoms_b.size > 1: for i in range(atoms_b.size): atoms_tot.append(atoms_b[i]) else: atoms_tot.append(str(atoms_b)) for i in range(atoms_t.size): atoms_tot.append(atoms_t[i]) atoms_tot = np.array(atoms_tot) # Initial coordinate coord_target = (empty_matrix(atoms_t.size, 3)) coord_bull = (empty_matrix(atoms_b.size, 3)) count = 1 for i in range(0, int(3)): coord_target[i] = np.loadtxt( name_target, dtype=float, skiprows=2, usecols=[ count ]) # Matrix_coord = [[x1, x2..xn], [y1,y2..yn], [z1,z2..zn]] coord_bull[i] = np.loadtxt(name_bullett, dtype=float, skiprows=2, usecols=[count]) count += 1 # VELOCITIES velocities_m_s, total_time_coll = get_velocities(d, program, atoms_b, atoms_t, temperature_p, temperature_t, energy_coll) if program == 'GAMESS': # dt = second step = int(total_time_coll / dt) + step_to_add elif program == 'DFTB+': # dt = fs > total_time_coll*1e15 step = int(total_time_coll / (dt * 1e-15)) + step_to_add # GEOMETRY # Shift in CM system for each molecule if atoms_b.size > 1: coord_bull_cm = shift_cm(coord_bull, atoms_b) else: coord_bull_cm = [[0], [0], [0]] coord_target_cm = shift_cm(coord_target, atoms_t) # Rotation in inertia axis (valid only if atoms.size > 1) if atoms_b.size > 1: matrix_inertia_b = inertia_matrix(coord_bull_cm, atoms_b) coord_rotate_b = rotation_single_geom_in_inertia_axis( matrix_inertia_b, coord_bull_cm, atoms_b.size) else: coord_rotate_b = [[0], [0], [0]] matrix_inertia_t = inertia_matrix(coord_target_cm, atoms_t) coord_rotate_t = rotation_single_geom_in_inertia_axis( matrix_inertia_t, coord_target_cm, atoms_t.size) b = [] if mod == 'ms': r_temp = -limit while r_temp < limit + delta_b: b.append(r_temp) r_temp += delta_b traj_tot = geometries_output(icharge, step, 0, atoms_tot, b, d, coord_rotate_t, coord_rotate_b, [0, 0, 0], program, r_oruhf, dt, mult, velocities_m_s) elif mod == 'coll': r_temp = 0 while r_temp <= limit: if round(r_temp, 3) != round( 0, 3 ): # For the head-on collision, the cross section is null. So it is negectable b.append(r_temp) r_temp += delta_b theta_tot_angles = angles(numero_angoli) theta_tot_angles_degrees = empty_matrix(3, numero_angoli) for i in range(0, numero_angoli): for j in range(0, 3): theta_tot_angles_degrees[i][j] = math.degrees( theta_tot_angles[i][j]) count_angle = 0 counting_traj = 0 while count_angle < numero_angoli: coord_fin_targ = rotation(coord_rotate_t, theta_tot_angles[count_angle]) counting_traj = geometries_output( icharge, step, counting_traj, atoms_tot, b, d, coord_fin_targ, coord_rotate_b, theta_tot_angles_degrees[count_angle], program, r_oruhf, dt, mult, velocities_m_s) count_angle += 1 traj_tot = len(b) * numero_angoli # Input dftb+ if program == 'DFTB+': input_dftb(dt, path, atoms_tot, step, temp_conv, spin_spaiati, charge) with open("VELOC.DAT", "w") as f: for i in range(len(atoms_tot)): f.write("{} {} {}\n".format(velocities_m_s[0][i], velocities_m_s[1][i], velocities_m_s[2][i])) system.main(mod, numero_angoli, program, scr_dir, coord_target[0].size, coord_bull[0].size, traj_tot, path_program)
def function(): img = "sources30px/set1/b.png" answer = system.main(img, net)
print "B recognized " + str(sum(ba) / float(len(ba)) * 100) print "C recognized " + str(sum(ca) / float(len(ca)) * 100) print "F recognized " + str(sum(fa) / float(len(fa)) * 100) print "H recognized " + str(sum(ha) / float(len(ha)) * 100) print "J recognized " + str(sum(ja) / float(len(ja)) * 100) print "L recognized " + str(sum(la) / float(len(la)) * 100) print "P recognized " + str(sum(pa) / float(len(pa)) * 100) print "Q recognized " + str(sum(qa) / float(len(qa)) * 100) print "V recognized " + str(sum(va) / float(len(va)) * 100) print "X recognized " + str(sum(xa) / float(len(xa)) * 100) print "Y recognized " + str(sum(ya) / float(len(ya)) * 100) print "Z recognized " + str(sum(za) / float(len(za)) * 100) if __name__ == "__main__": net = sys.argv[1] for (dir, _, files) in os.walk(sys.argv[2]): for f in files: if f.endswith(".png"): path = os.path.join(dir, f) filepath = path expected = os.path.basename(path) answer = system.main(filepath, net) verify(expected, answer) stats()
print "J recognized " + str(sum(ja)/float(len(ja))*100) print "L recognized " + str(sum(la)/float(len(la))*100) print "P recognized " + str(sum(pa)/float(len(pa))*100) print "Q recognized " + str(sum(qa)/float(len(qa))*100) print "V recognized " + str(sum(va)/float(len(va))*100) print "X recognized " + str(sum(xa)/float(len(xa))*100) print "Y recognized " + str(sum(ya)/float(len(ya))*100) print "Z recognized " + str(sum(za)/float(len(za))*100) if __name__=="__main__": net = sys.argv[1] for (dir, _, files) in os.walk(sys.argv[2]): for f in files: if f.endswith(".png"): path = os.path.join(dir,f) filepath = path expected = os.path.basename(path) answer = system.main(filepath, net) verify(expected, answer) stats()
# --------------------------------------------------------------------------- # run the program try: import system.main system.main.main(g_py_path, log_folder) except: logging.exception("") # print some closing lines ts = t t = time.time() utc = time.gmtime(t) total_time = t - ts log.info("") log.info("------------------------------------------------------------------------------") log.info("utc : " + time.asctime( utc )) log.info("local time : " + time.asctime( time.localtime(t) )) log.info("total time : %i days %i hours %i minutes %i seconds", total_time // (60*60*24), total_time // (60*60) % 24, total_time // 60 % 60, total_time % 60) if __name__ == "__main__": main()