Skip to content

onujx/ChemBAI

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChemBAI 📊

Data version: ToxCast_v.4.1


사용된 분자지문 🧬

  • MACCS
  • Morgan
  • RDKit
  • Pattern
  • Layered

사용된 알고리즘 🤖

  • Decision Tree (dt.py)
  • Logistic Regression (logistic.py)
  • Gradient Boost Tree (gbt.py)
  • XGBoost (xgb.py)
  • Random Forest (rf.py)

입력데이터 📥

입력데이터.xlsx의 데이터프레임 1행의 열 구성은 반드시 아래와 같아야 합니다.

1행 : DTXSID | SMILES | assay_name1 | assay_name2 | ...
    

assay_name1 (두번째 행)의 데이터를 이용하고자 하는 경우, assay_num = 1을 입력합니다. 코드상에서 assay_num+1을 사용하므로 데이터프레임의 형식이 위와 동일해야 두번째 행(assay_num+1=2)을 불러올 수 있습니다.

분자지문 📈

모델 훈련 시마다 분자지문으로 변환하는 과정을 중복 실행하지 않기 위해, 최초 한 번 변환 후 저장한 파일을 불러와 사용합니다. 훈련하고자 하는 SMILES에 대해 smiles2fing.py를 통해 fingerprints를 생성합니다.

데이터 전처리 🔍

ToxCast_v.4.1_v.2 데이터는 KNIME을 통한 염 제거, 무기물질 제거, 그리고 Hitcall의 개수가 5개 미만인 데이터를 제거한 결과물입니다.

run 디렉토리 내 scikit-learn 기반 머신러닝 코드에서는 아래와 같이 데이터를 처리합니다.

  1. SMILES로부터 분자지문(mol 형식)으로 변환되지 않는 화학물질의 인덱스는 dropidx.csv 파일에 저장합니다. (예시 코드에서 사용하는 변수: drop_idx)
  2. Hitcall 데이터에서 결측값이 있는 인덱스는 na_idx 변수로 받아 해당 행을 제거합니다.

예시 코드 (dt.py, 70~77라인) 📝

x = pd.read_csv(file_path_fp)
df_drop_idx = pd.read_csv(f'{fp_path}/{fingerprint_type}_dropidx.csv')
drop_idx = df_drop_idx[f'{fingerprint_type}'].tolist()
df = pd.read_excel(file_path)
y = df.iloc[:, assay_num+1].drop(drop_idx).reset_index(drop=True)
na_idx = y[y.isnull()].index
y = y.drop(index=na_idx).reset_index(drop=True)
x = x.drop(index=na_idx).reset_index(drop=True)
  

참고 사항 ⚙️

모델 코드 내 사용된 assay_num 변수는 ToxCast 내 다양한 assay 데이터를 반복문으로 처리하기 위해 설정되었습니다.


파일 및 코드 수정 안내 🛠

*데이터에 따라 수정하여 사용하는 파이썬 파일과 수정하는 부분*

1. 훈련시

  • smiles2fing.py
    • input_excel_path = "./data/example_data_DBPs/for_train/example_DBPs_ER.xlsx"
    • output_dir = "./data/example_data_DBPs/for_train/fingerprints"
  • ToxCast_model_training.sh
    • models=('dt') (예시: 'xgb', 'gbt', 'rf', 'logistic' 등으로 모델 정의)
    • fingerprints=('MACCS') (예시: 'Morgan', 'RDKit', 'Layered', 'Pattern' 등으로 지문 정의)
    • file_path = "./data/example_data_DBPs/for_train/example_DBPs_ER.xlsx" (데이터 경로)
    • fp_path = "./data/example_data_DBPs/for_train/fingerprint_outputs" (fingerprints 경로)
    • data_name = "example_DBPs_ER"

2. 예측시

  • smiles2fing.py
    • input_excel_path = "./data/example_data_DBPs/for_train/example_DBPs_ER.xlsx"
    • output_dir = "./data/example_data_DBPs/for_train/fingerprints"
  • Predict_data.py
    • input_excel_path = "./prediction/example_prediction_DBPs/example_assay_list_ER.xlsx" (수정 필요)
    • model_path_base = "./results/example_DBPs_ER/2025-03-25/model_save_path"
    • input_fp_path_base = "./data/example_data_DBPs/for_predict/fingerprints"
    • SMILES_path = "./data/example_data_DBPs/for_predict/example_DBPs_for_pred.xlsx"

About

ToxCast_v.4.1

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.5%
  • Shell 4.5%