Paper

[DeepSide: A Deep Learning Framework for Drug Side Effect Prediction] 실행해보기(시도중)

한거루 2022. 8. 12. 18:44

1. 환경 세팅하기

 

UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 10010). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. 

-> GPU를 사용하므로, cuda 환경을 맞춰줘야한다. 참고 : https://bioinfo-bme.tistory.com/36

 

python deep learning 환경 설정

1. 현재 서버의 gpu 버전 확인 nvidia-smi -> CUDA Version: 10.1 임을 확인 -> tensorflow-2.1.0 (python 버전 맞춰줘야함) -> python 2.7, 3.5-3.7 -> torch 1.9 (CUDA 버전 맞춰줘야함) https://koreapy.tistor..

bioinfo-bme.tistory.com

2. 필요한 파이썬 라이브러리 설치하기

numpy, torch, pandas, sklearn

 

ERROR: No matching distribution found for cv2

-> pip install opencv-python

-> pip install opencv-pythonCollecting 

 

4. 현재 내 환경에 맞게 코드 수정하기

 

>> distutils.errors.DistutilsFileError: cannot copy tree '../src': not a directory

src 파일 내에 있는 trainer.py 를 복사하여 src 디렉토리와 같은 위치에 저장해 실행하고 있다.

따라서 위치가 달라진 것.

File "trainer.py", line 447, ../src -> ./src 로 수정

 

>>FileNotFoundError: [Errno 2] No such file or directory: '/home/dayeon20/project/DeepSide/src/data_manager/../../data/level5_dataset.pkl'

 

데이터를 로드하는데에 있어서 다음과 같은 경로를 수행한다. 우선 mlp 모델에 대해서 실행하는 것으로 보인다.

src/data_manger 디렉토리의 -> data_mlp.py -> load_pickle -> utils.py 

이때 깃허브에서는 data를 제공하지 않기 때문에, 우리가 데이터를 다운받은 디렉토리 위치로 수정해야한다.

혹은 코드 형식에 맞는 위치에 데이터링크를 달면 된다.

나는 후자의 방식으로 했다.

 

trainer.py 를 실행한 위치에서

mkdir data

cd data

ln -s /path/GSE92742_Broad_LINCS_Level5_COMPZ.MODZ_n473647x12328.gctx level5_dataset.pkl

 

 

 

 

 

 

3. 데이터 준비하기

데이터는 크게 두가지가 필요하다 : (1) LINCS L1000 의 GEX Profiles 데이터와 META 데이터 (2) 화합의 화학구조

SIDER 로부터 데이터를 얻어 필터링한 결과 791개의 약물이 남게되는데, 이 약물에 대한 GEX 프로파일을 얻어온다.

두 데이터는 벡터화하여 모델의 인풋으로 사용하는데, 논문에서는 5개의 모델을 사용하여 성능을 비교하고 있다. : (1)MLP (2)ResMLP (3) MMNN.Concat and MMNN.Sum (4)MTNN (5)SMILESConv

 

3.1. LINCS L1000 -> GEX Profiles

-> 20,413개의 소분자 화합물로 처리된 76개의 세포 라인의 GEX 프로파일

-> There are 473,647 signature experiments that differ by the dosage, timing, and cell line (Level 5 data).

-> 1phase, 승인된 약물

-> 2phase, 승인된 약물 + 실험단계에 있는 약물

+) 추가로 공부 : GCTX 파일(https://academic.oup.com/bioinformatics/article/35/8/1427/5094509)

 

저자들은 유전자 온톨로지(GO) 변환 유전자 발현 프로파일과 화학 구조(CS)의 조합인 특징 세트로 최상의 결과를 얻었다고 보고한다. 이 피처 세트(GO + CS)가 있는 약제 세트에는 791개의 화합물이 포함되어 있다. 우리는 모델을 만들기 위해 791개의 약을 사용합다. LINCS L1000 데이터 세트에는 총 18,832개의 실험이 있다.

 

LINCS 프로젝트의 18,832개 실험 각각에 대한 메타 정보도 기능으로 사용된다. META 정보는 (i) 실험이 수행되는 세포주, (ii) 실험의 시기 및 (iii) 용량(drogage) 정보를 포함한다.

메타 데이터는 원핫 인코딩 벡터로 표현된다. 대응하는 피처 벡터의 길이는 93이다.

연결된 GEX 및 META 피쳐 벡터의 총 길이는 1071입니다.

모든 모델에서 META 데이터가 사용될 때마다, it is concatenated with the 978 landmark GEX features.

 

3.2. SIDER -> 10개 미만의 약물로 관찰되는 부작용에대해 제외 -> 1052개의 부작용 -> 4단계 계층적 분류(using ADReCS)

3.3. PubChem 에서 각 drug에 대한 SMILLES 문자열을 얻는다 -> OpenBabel Chemistry Toolbox 로 인코딩하여 각 약물에 대한 166비트 MACCS 화학적 지문 행렬(길이 166의 이진 벡터)을 생성하여 사용한다. -> RDKit???

SMILESConv 데이터에 대하여(?)

-> 100자 미만 400자 이상의 SMILLES 표현 약물을 걸러냄(791개 약품 중 615개가 이 필터링 단계를 통과). 

-> 이러한 약물의 경우 10개 미만의 약물로 부작용을 제거하기 위한 추가 필터링을 적용(615개의 약물과 1042개의 부작용 쌍이 남는다.)