이 프로젝트는 내가 들어오기 전에 교수님이 맡으셨던 프로젝트이다. 교수님이 바쁘신 나머지, 내가 추가 분석을 담당하게 되었다.
분석은 내가 대학원들 들어오고 나서부터 오늘까지 약 1년간 지속되었다.
사실 기초 분석은 모두 끝낸 상태라, 처음 공부하면서 이미 완성된 결과를 다시 한번 확인하고, 그 후에 새로운 분석들을 추가해서 살을 붙였다. 정말 지겹고 속이 울렁거릴 정도로 수정했던 것 같다. 분석도 분석이지만, 이미지 퀄리티부터, 색, 샘플 정렬, taxa정렬, 글씨체 등등 여러 세세한 부분이 더 많은 비율을 차지했던 것 같다.
기억을 더듬어 보자면 아래와 같다.
1. 샘플의 메타데이터를 관찰한다. ✨이 단계가 매우 중요하다. 사실 이 전에 실험 계획이 더더욱 중요하다.
- 메타데이터에 오류가 없는지 꼼꼼히 확인한다
- 성별, 나이, 코호트, 기간, 심각도, 패턴, 배양결과 등을 기록하여 통계적으로 관찰한다
- 어떤 기준으로 나누어야 통계적인 유의성을 띄는지 다각도로 관찰
- e.g.) 예를 들어 기준을 1년 이상, 이하로 잡을 것인지, 아니면 2년으로 잡을 것인지
- 전제적인 샘플 수를 표로 정리한다.
2. 시퀀싱 데이터 처리 결과를 관찰한다.
- otu, taxonomy 파일만 전달받았기 때문에 시퀀싱과 전처리 결과는 알지 못했다. 그러므로 dada2 track결과를 참고하여 정리하였다.
- 대부분 이 단계에서 QC를 어떻게 잡는지, 전처리에 따라 read수가 많이 차이 나기 때문에 많은 시간을 소모한다. ✨모든 데이터 분석은 전처리 EDA가 매우 중요
- e.g.) QC15, QC20, QC25, QC30에서 Dada2 filterandtrim옵션 maxEE = c(2,2), c(2,3), c(2,4), c(2,5) 값의 결과를 비교하려면, 총 16번의 전처리 필요
- 이후 어떤 리드로 필터링할 때 대부분의 샘플이 살아남는지 관찰 (e.g.) 1000, 2000, 3000, 10000 등..)
3. 기초 분석을 수행하였다.
- feature(ASV)의 개수, taxonomy의 구성 등을 확인한다. e.g.) taxonomy에서 예전 학명을 가진 feature이름을 수정하였다.
- 여기서 기초 분석이란, alpha, beta-diversity/ taxonomy composition을 말한다. 이때 각 분석은 ASV, Species, Genus, Phylum레벨로 각각 수행한다.
- alpha, beta는 각 시각화에 대한 순서(factor)를 설정하고, 비모수 통계를 이용한 p-value값을 나타냈다.
- 많은 index와 많은 통계 분석을 통해 예비 분석 결과 만들어 낸다. alpha는 shannon, simpson, inverse simpson 등을 사용하고 beta는 bray-curtis, jaccard, Unifrac 등으로 PERMANOVA, ANOVA, ANOSIM 등의 통계 분석을 사용 -> 여러 분석 결과가 일치하는지 관찰) ✨각 distance의 이해와 통계 분석에 대한 이해가 어려웠다
- 통계 분석에 사용되는 샘플 수는 충분한지, 각 그룹에 따른 샘플 수가 균형적인지 확인한다.
- taxonomy composition은 여러 taxa level에 따라 시각화한다 ✨✨R에서 기본적인 데이터 핸들링과 시각화 함수 제작에 힘을 쏟았다.
- 여러 phylum를 기준으로 정렬 후 시각화, 각 phylum에 대해 다른 level의 taxa 색의 범주를 통일하였다. (e.g.) Fimicutes면 파란색 계열로 표시)
- 1% 이상만 관찰, Top 30, Top10 만 관찰 등등 다양하게 시각화한다.
- 특정 taxa가 각 그룹에서 abundance의 차이가 있는지 관찰/ 연속 변수와 상관관계를 이루는지 관찰한다.
=> 결과를 보고 왜 차이가 나는지, 혹은 왜 차이가 나지 않는지를 알아본다.
=> 반복적인 시각화가 지겨워서 자동화 함수를 제작하였다. 결과를 제작하는 시간이 훨씬 단축되었다.
=> 위 기초 결과를 해석하고, 오류가 있는지 점검한다. 추가 분석을 위해 범주화, decontam, blast 등을 수행을 결정한다.
- 해부학적으로는 구분되지만, 마이크로바이옴 연구에서는 기존 연구결과 동일하다고 판별되는 그룹을 하나의 범주로 묶어서 재 관찰한다. (연구윤리에 위반되지 않게 기존 문헌 결과와 환자의 메타데이터를 통해 타당한 경우에만 수정한다)
- Beta, taxonomy를 관찰하고 오염균이 많다고 판별되었다면, 오염제거 프로그램(decontam)을 수행한다.
- decontam에서도 여러 오염 제거 방법을 통한 결과를 비교한다.
- BLAST는 Top1, Top5로 결과를 뽑고 각 taxa관찰 ✨어떤 feature를 blast값으로 대체할 것인지 많은 고민이 필요했다. 16S rRNA로만 구분되지 않는 박테리아가 생각보다 많다.
- 중복된 샘플 중 어떤 샘플을 제거할지 전체 데이터를 살피고 결정한다. (Beta, Taxa를 주로 관찰)
-이유 없이 결과가 잘 나오지 않은 샘플을 제거하는 것은 연구 윤리에 어긋난다. 제거에 대한 합당한 이유가 있어야 한다. 예를 들어 "환자의 데이터를 보고 기존에 정상대조군으로 모았지만, 혈액 검사 결과 정상대조군이 아니라서 제거한다"와 같은 합당한 이유가 있어야 함. 절대 이 점을 간과해서는 안된다.
4. 고급 분석을 수행하였다.
- 차등적인 발현을 보기 위한 differential abundance analysis(DAA) 수행한다.
- 실제 분석에는 Volcano plot, ALDEx2, Corncob, DESeq2, edgeE, LefSe, ANCOMBC, ANCOM-2, MaAsLin2, metagenomeSeq , limma voom, Wilconxon rank sum, Random forest, Support vector machine, Logistic regression 등을 사용하였다. ✨✨각 방법의 작동 원리와 실행 방법이 난관이었다. 여러 분석을 수행하면서, methology보다는 실험 계획 및 기초 분석이 더 중요하다는 것을 깨달았다.
- PICRUSt2를 수행하여 각 그룹에 차등적인 기능을 예측을 해본다 ✨✨PICRUSt2는 그냥 설치부터 난관이다.
- 이 값도 여러 DAA방법으로 테스트한 후, error bar와 heatmap 등으로 시각화하여 관찰(heatmap 보다는 error bar가 나타내고자 하는 결과를 명확하게 나타내 줌)
- 의미 있는 kegg pathway 문헌 검색 및 공부하였다.
5. 각 단계별 결과를 정리하고, 논리 순서에 맞게 ppt에 정리한다.
- 매주 랩미팅에 맞춰 보고하기 위한 ppt를 작성한다.
- 기존에는 alpha, beta, taxonomy, blast, picrust, daa순서로 정리하다가, 나중에는 main figure, supplement figure순으로 정리하고, 마지막에는 논리적 순서에 따라 구성을 바꾸었다. ✨논리적으로 배치한 다는 것은 본인이 그 연구에 대한 목적, 방법 및 결과를 알고 있어야 가능하다. 즉, 질릴 때까지 봐야 알 수 있다.
- 슬라이드의 개수도 처음에는 30 -> 60 -> 100 이상 -> 200까지 늘어났다가, 의미 있는 슬라이드만 남기고 정리하여 150개로 줄어들었다.
프로젝트로 인해 깨달은 점/얻은 점
- 모든 연구는 (당연한 말이지만) 쉽지 않다.
- 분석 보다, 실험 계획이 제일 중요하다.
- 효율성을 위해 과감히 시간을 투자하자. 이후 다른 연구에도 써먹을 수 있는 코드를 정리하자. (엔터만 치는 사람이 아니라 창의성을 발휘해라.)
- 교수님은 아무나 하는게 아니다. 실험 계획부터, IRB 승인, 샘플 수집, 분석, 결과까지 전 반을 지휘하는 것은 간단하지 않다.
- 연구 윤리를 중시하자. 내가 듣고 보았던 여러 실험실에서 연구의 결과를 정해두고, 그 결과가 나올 때까지 실험을 반복한다고 들었다. 그러나 결과가 유의미하지 않다면, 그 자체로도 의미가 있다.
- 방법론에 집착하지 말자. 물론 확신을 위해서 여러 방법을 시도하는 것도 의미는 있지만, 그 자체에 집착하지 말자.
- 그러나 역시 새로운 동향을 파악해야 한다. 진짜 개발, 분석 분야는 끊임 없이 새로운 기술, 패키지들이 개발된다. 이를 숙지하고 써먹도록 하자.
매주 크게 변하지 않은 것 같지만 알게 모르게 프로젝트는 끝나갔다. 미팅날에 앞서서, 보고 할 내용이 부족해서 미팅 전날에는 더욱 늦게 집에 가곤 했다. 그때는 이 지겨운 반복이 언제 끝날지 알지 못했다. 그러나 결국 끝이 났다.
물론 논문 작업까지 끝난 것은 아니다. 나는 전체 프로젝트 중 기초분석의 뒷단계만 맡았을 뿐이다. 그러나 하나의 논문이 적히기 전까지 무수한 반복 작업과 수정, 시각화가 필요하다는 것을 깨달았다. wet랩에 비해서, dry 랩이 결과가 비교적 결과를 손쉽게 만들어 낸다는 것에 대해 동의할 수 없다. 둘 다 만만치 않은 반복 작업이다.
물론 동시에 여러 프로젝트를 하는 중이라 온전하게 집중하지 못해서 1년이라는 시간이 걸린 것 같다. 지금 다시 한다면 여러 자동화 함수를 사용해서 2개월 안에 지금까지의 결과를 낼 수 있을 것이다. 나는 사람이 지수적으로 성장한다는 말에 공감한다. 초기의 성장은 더디지만, 기초를 잘 쌓는다면 성장의 속도를 빨라질 수 있다.
이 외의 졸업논문 데이터의 분석도 막바지에 달했다. 논문이 나오지 않은 연구는 큰 의미가 없다. 이제 분석보다는 논문 작업에 집중을 해보자.