def extract_dft_E(filename):
    data = chunks_optim(filename)
    all_E = []
    for i in data:
        a = parser_lists(i, " SCF Done:", " KE= ")
        b = [k.split() for k in a if "SCF Done" in k]
        c = map(float, [j[4] for j in b])
        all_E.append(c)
    return all_E
def extract_LUMO_E(filename):
    data = chunks_optim(filename)
    homos = []
    lumos = []
    for datai in data:
        a = parser_lists(datai, "The electronic state is", "Condensed to atoms")
        virt1 = [i for i in a if "virt" in i]
        occ1 = [i.split() for i in a if "occ" in i]
        h**o = float(occ1[-1][-1])
        lumo = list(floats([words for segments in virt1 for words in segments.split()]))[0]
        lumos.append(lumo)
        homos.append(h**o)
        # lumo = list(floats([words for segments in virt1 for words in segments.split)])
    return zip(homos, lumos)
def extract_dft_distance(filename, atom1, atom2):
    data = chunks_optim(filename)
    all_dist = []
    for i in data:
        a = parser_lists(i, "Input orientation:", "Distance matrix")[5:-1]
        b = [i.split()[3:] for i in a]
        c = np.array([map(float, i) for i in b])
        dist = norm(c[atom2 - 1] - c[atom1 - 1])
        all_dist.append(dist)
    all_F1, all_F2 = [], []
    for j in data:
        ad = parser_lists(j, "(Enter /home/apps/Chem/g09/l716.exe)", "Cartesian Forces")[7:-1]
        bd = [i.split()[2:] for i in ad]
        cd = np.array([map(float, i) for i in bd])
        to_nN = 82.387
        F1 = norm(cd[atom1 - 1]) * to_nN
        F2 = norm(cd[atom2 - 1]) * to_nN
        all_F1.append(F1)
        all_F2.append(F2)
    return (all_dist, all_F1, all_F2)