from cassandra.cluster import Cluster from cassandra.query import dict_factory import pubchempy as pup import os import time # cluster = Cluster(['127.0.0.1']) # session = cluster.connect() # session.row_factory = dict_factory element = [] files =os.listdir("/Users/musashimaru/Desktop/table2/edit/am1_outfile") element_z = [f for f in files if os.path.isfile(os.path.join("/Users/musashimaru/Desktop/table2/edit/am1_outfile", f))] # 分子名取ってくんのに使った txt_path = "/Users/musashimaru/Desktop/table2/edit/index.txt" for j in element_z: a=j.replace(".log","") element.append(a) failed_element = ["Water","Vaseline","IWC","OMEGA"] flag = False for i in element: try: ary_f = [] ary_r = [] ary_i = [] ary_m = [] ary_t = "" path = "/Users/musashimaru/Desktop/table2/edit/am1_outfile/"+ i + ".log" # path_j = "/Users/musashimaru/Desktop/table2/edit/main_out/" + i + ".csv" req = ["MolecularFormula","inchi"] # index.txtからtimeUUIDみて分子名取ってきてる # あとファイル名のtimeUUIDを取ってる with open(txt_path, "r") as m: for line in m: if i in line: name = line.replace("element name : ", "").replace("timeuuid : " + i, "") print(name) ary_t = i # pubchemかなんかから分子名でデータ取ってる out = pup.get_properties(req,name,'name') print(out[0]) # 取ってきたデータからinchi_noの抜き出し ary_i.append(out[0].get("InChI")) time.sleep(1) # logファイルからfreqとir_intenの抜き出し with open(path,"r") as d: for i, line in enumerate(d): if 'Frequencies' in line: data = line.replace("Frequencies --","") datas = data.split() for l in datas: ary_f.append(l) elif 'IR Inten' in line: data = line.replace("IR Inten --","") datas = data.split() for m in datas: ary_r.append(m) # logファイルからガウシャンの計算手法の抜き出し with open(path,"r") as f: for line in f: if "#P" in line: ary_m.append(line) # 以下cassandraに投げたいテーブルのデータ # print(ary_t) # print(ary_f) # print(ary_i[0]) # print(ary_r) # print(ary_m[0]) # session.execute("use odordb;") # session.execute("insert into odordb.calqfreq(timeuuid, freq, inchi_no, ir_inten, method) values (%s, %s, %s, %s, %s);", (ary_t, ary_f, ary_i[0], ary_r, ary_m[0])) # cluster.shutdown() # 実数の配列に # 変更 except: failed_element.append(i) flag = True if flag == True: cnt = 0 with open("/Users/musashimaru/Desktop/table2/edit/output/failedelement.txt","w") as c: for i in failed_element: elt = failed_element[cnt] c.write(str(elt)) c.write("\n") cnt = cnt +1