[DeepSide: A Deep Learning Framework for Drug Side Effect Prediction] 실행해보기(시도중)
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개의 부작용 쌍이 남는다.)