분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
삭제된 댓글입니다
openbabel 코랩에서 설치 너무 까다롭네요ㅠㅠ
혹시 설치방법 공유해주실 수 있으실까요?
으윽 바로 아래 게시글에 미니콘다로 설치하는 방법이 있었네요. 등잔밑이 어두워서 세시간 날렸습니다...
#코랩에서 sdf_load 하는데 5시간걸린데서 페러럴하게 짜봤습니다.
import pandas as pd
import numpy as np
from multiprocessing import Pool
num_cores = 4
#num_cores = multiprocessing.cpu_count()
def func(train_df):
mols = dict()
for n in tqdm(train_df.index):
mol = [i for i in pybel.readfile('sdf',sdf_load(n))]
if len(mol) > 0:
mols[n] = mol[0]
mols_df = pds.DataFrame().from_dict({n:v.calcdesc()for n,v in mols.items()}).transpose()
mols_df = mols_df.dropna(axis = 1)
mols_df.loc[:,'uid'] = [f'train_{n}' for n in mols.keys()]
df = pd.merge(train_df,mols_df,'outer',on='uid').dropna()
df['y'] = df['S1_energy(eV)'] - df['T1_energy(eV)']
return df
def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_cores)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df
train = parallelize_dataframe(train_df, func)
현재 위 코드를 돌릴 때에는 'rotors' 칼럼이 제외되어 20 칼럼이 나오네요. 혹시 이것이 잘못된 것은 아닌지요?
좋은 코드 공유 감사합니다:) !~!
만약 rotors의 결과 중 Nan이 포함되어있다면 아래 코드로 인해 제거됩니다.
mols_df = mols_df.dropna(axis = 1)
babel의 version 차이로 rotors가 계산에서 제외 될 수 있구요.
확인해보시면 좋을것같아요 :)
삭제된 댓글입니다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
삭제된 댓글입니다