코딩의 가장 좋은 점은 반복 작업을 자동화 하는 것이다.
또한 돌려놓고 다른 일을 함으로서 효율적으로 일을 할 수 있다는 장점도 있다.
마이크로바이옴 분석을 위해 현재 일부 분석 스크립트를 자동화 하였다. 종류는 아래와 같다.
- Bera diversity에서 index별로 PCoA를 만드는 함수
- DA 분석을 위해 Volcano plot을 자동으로 반환하는 함수
- Taxonomy plot에서 Top n개를 뽑으면 Phylum별로 색을 자동으로 배분해 주어서 그려주는 함수(Rcolorbrewer사용)
간단해 보이지만 생각보다 함수를 만드는 것에는 여러 제약 조건이 있었다.
각 함수마다 원하는 변수의 종류가 ""가 붙었는지 안붙었는지에 따라 결과도 다르고(dplyr::arrange ↔ dplyr::arrange_ ), 각 패키지마다 동일한 이름의 함수가 충돌하면 오류가 발생하기 때문에 이러한 점도 :: (dplyr::group_by ↔ plyr ::group_by)을 통해 지정해 주어야 한다.
또한 함수라는게 여러 조건의 환경에서도 작동해야 함으로 if문을 통해 조건을 상세화 하는 것이 가장 어려웠다.
또한 출력 결과물을 분석 데이터로 놓을지 아니면 plot으로 놓을지도 고민이고,
각 시각화 plot에서 조건에 맞게 글자를 강조하거나, 색을 달리해서 표현하는 것을 조건으로 만드는 것도 생각보다 어려웠던것 같다.
현재 시각화를 일부 자동화 하는 패캐지(Beta diversity, Volcano plot)는 만들었지만 전체적인 자동화 파일은 아직 완성하지 못하였음
그래서 최종적으로는 각 분석 단계를 자동화 하기 위해서는 아래와 같은 4가지 목표를 설정했다.
1. Dada2 script
- 개요 : Raw data를 Phyloseq으로 바꾸어 주는 스크립트 파일
- Input : FASTQ, Metadata
- output : Phyloseq(otu, tax, data, tree)
- 세부 :
- FilterAndTrim()단계 : 여러 옵션을 이용한 다양한 결과 반환
- Refernce를 bacteria의 경우 SILVA와 RDP두 종류 다 사용
- phylogeny Tree 파일까지 만들기
2. Phyloseq을 이용한 기본 분석
- 개요 : Alpha, Beta diversity와 Taxonomy composition까지 가능한 기본 스크립트
- Input: Phyloseq
- output : Table, Plot
- 세부 :
- Alpha : 각 지수 마다(shannon, simpson, Inversmpson..) sample_data의 colum에 따른 분석과 통계분석(wilcox, kruskal..) 결과 추가
- Beta : 각 지수 마다(bray-curtis, jaccard, Unifrac..) sample_data의 colum에 따른 분석과 통계 분석(ANOVA, PERMANOVA, ANOSIM) 결과 추가
- Taxonomy : 각 Phylum에 맞는 색 분주, Top n개만 표시하거나 n% abundance를 가진 애들만 표시하여 sample_data의 colum에 따른 시각화 결과 보여주기
3. Differential abundance 분석
- 개요 : 각 분석 방법 마다 시각화 자료와, 각 분석의 공통적인 biomarker를 찾아내는 스크립트
- Input: Phyloseq
- output : Table, Plot
- 세부 :
- 시각화 : Volcano plot과 bar plot을 통한 시각화
- 각 분석 방법에 따른 결과 table로 output배출
4. Functional Prediction 분석
- 개요 : 기능 예측 프로그램
- Input: Phyloseq
- output : Table, Plot
- 세부
- 결과 데이터 : 테이블로 저장
- 시각화 plot : 각 function에 대한 결과가 sample_data의 colum에 따라 시각화
위 단계마다 R파일을 만들고, R project환경에서 분석 위치 내에 결과 파일이 존재하도록 설정하며,
리눅스 환경에서 아래와 같은 명령어로 실행하여 백그라운드 작업 실행 하는 것이 목표이다.
Rscript R_analysis_script.r
더 나아가서 각 단계에 따른 R 패키지 생산과, 파일만 제출하면 분석을 자동화 할 수 있는 프로그램 혹은 웹서비스 개발이 목표이다.
졸업하기 전에 만들 수 있을까...? 사실 걱정이 앞선다