Пример #1
0
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)
Пример #2
0
def function():
    img = "sources30px/set1/b.png"
    answer = system.main(img, net)
Пример #3
0
    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()
Пример #4
0
def function():
	img = "sources30px/set1/b.png"
	answer = system.main(img, net)
Пример #5
0
	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()



	
Пример #6
0
    # ---------------------------------------------------------------------------

    # 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()