bioinfo

QIIME2 feature classifier : 2 (naive bayes classifier)

" " 2023. 10. 29. 10:58

 

1. motivation

 

 

greengenes2 database (16s rRNA gene database)

이전 글에서 말했듯이 DADA2 를 수행하고 나면, representative sequence 정보를 얻을 수 있습니다. 그 다음에 해야 할 일은, 해당 rep seqs 이 어떤 미생물에 해당하는지 확인해야 하는 작업입니다. 기본적

hiimgood.tistory.com

 

지난번 포스팅에서 16s rRNA gene 데이터베이스에 대해 알아봤습니다. 해당 포스팅에서 말씀드렸던 대로, greengenes2 가 SILVA 등 흩어져있는 데이터베이스를 통합하였기 때문에 더 좋은 성능과 정확도를 보여줄 것이라고 생각하여 greengenes2 를 사용하여 분석합니다. (사실, genus level까지밖에 확인하지 못하기 때문에 어떤 데이터베이스를 사용하여도 결과에 큰 차이가 있지는 않았습니다.)

 

 

이제 어떤 데이터베이스를 사용할 지 결정하였으니, qiime2 를 통하여 어떻게 rep seqs 에 미생물의 이름을 할당해 줄 수 있는지 알아보겠습니다. 결국은 이런 분석의 목적은 샘플링한 대상에 어떤 미생물이 존재하는지, 혹은 많은지 적은 지 확인하기 위한 것이니까요.

 

 

우리는 해쉬된 rep seqs 이 어떤 것인지 확인하기 어렵기에, 해당 데이터는 16s rRNA V4 region 이라는 marker-gene sequence  만을 가지고 있기 때문에 해당 region 이 어떤 미생물인지 확인하기 위해 sklearn 의 naive bayes classifier 를 사용합니다. 단순히 비슷하게 생겼다 또는 alignment 되는 부분이 많다고 해서 그 미생물에 해당되거나 비슷한 종이라고 말하기는 어렵습니다. 최대한 성능과 정확도를 올리기 위해 통계적인 유의성이라는 기준을 가지고 접근해야 합니다. 

 

 


Qiime2 에서 우리가 사용할 데이터베이스를 학습시키기 위해 q2-feature-classifier plugin 을 사용합니다. 그에 대한 논문이고 해당 논문을 메인으로 어떻게 작동하는지 간단하게 알아보겠습니다. 다만, 논문에서는 머신러닝 모델을 어떻게 학습시켰는지, 정확, 정밀도를 올리기 위하여 어떤 기법들을 사용했는지 (cross validation 등) 에 대해서 주로 서술하고 있어서 자세하게 읽어볼 필요까지는 없다고 생각합니다.

 

 

Optimizing taxonomic classification of marker-gene amplicon sequences with QIIME 2’s q2-feature-classifier plugin - Microbiome

Background Taxonomic classification of marker-gene sequences is an important step in microbiome analysis. Results We present q2-feature-classifier ( https://github.com/qiime2/q2-feature-classifier ), a QIIME 2 plugin containing several novel machine-learni

microbiomejournal.biomedcentral.com

 

 

2. NB classifier 

 

개인적으로 머신러닝 알고리즘에 관심이 있어서 공부를 조금 했었는데, 오늘 알아볼 NB classifier 는 다른 머신러닝 알고리즘들에 비해 직관적이지 않다고 느꼈던 기억이 있습니다. 아래 영상을 보시면 기본적인 아이디어는 확인하실 수 있습니다. statquest 영상보다 더 잘 설명할 자신이 없어서 따로 설명을 하진 않겠지만 영상을 보시면 확실하게 이해하실 수 있을 것입니다.

 

영상에서 예시로 든 정상 메일과 스팸 메일을 메일 속 단어가 나타날 확률을 계산하여 분류한다는 아이디어를

우리가 하고자 하는 것으로 바꿔보면,

 

정상 메일과 스팸 메일 -> 미생물의 종류

메일 속 단어 -> 염기서열

 

이라고 할 수 있습니다.

 

특정한 염기 서열이 나타날 확률을 데이터베이스 기반으로 학습시킨 모델에 대해서, 알고 싶은 V4 region sequence 를 넣어주면, 분류기가 작동하여 어떤 미생물인지 알려주게 되는 것입니다.

 

 

각 분류기들을 사용해서 NB classifier 의 성능을 확인하였습니다. (F-measure 는 precision, recall 결합한 지표로 높을수록 좋습니다.) 

 

 

+ 여기서 NB-Bespoke 라는 것은 NB classifer 에 class 에 대한 가중치를 추가한 것이라고 합니다. 예를 들어, fecal sample 이라고 한다면 Bacteroides, Blautia 등이 많이 잡히겠죠. 이런 것들에 대한 가정을 준 모델입니다. 다만, 제가 qiime2 에서 분류기를 사용할 때 fecal sample 이라고 알려준 기억은 없는 것 같아서 지금 사용하고 있는 것은 기본 NB classifier 인 것 같습니다.

 

 

또, "학습시킨 데이터가 아닌 새로운 데이터에 대한 분류는 어떻게 수행할 것인가?" 에 대해서도 논문에서 확인할 수 있습니다. 이 분류기가 새로운 데이터에 대해 처리하는 방식은 다음과 같습니다.

 

# 만약 새로운 species 데이터를 넣었을 때 다음의 방식이 가장 이상적입니다.

 

1) 문 (phylum) 수준에서부터 분류를 수행

2) 새로운 species 데이터를 넣었기 때문에 genus 수준까지는 분류가 가능

3) species 를 할당할 분류군을 찾지 못하였기 때문에 genus 수준에서 멈춤

 

다만, 여기서 발생할 수 있는 오류가 Overclassification 입니다. 말 그대로, species 수준에서 새로운 종이므로 genus 분류에서 멈춰야 하는데 genus 수준을 넘어서 일치하지 않는 기존 species level 에 분류하는 것입니다. 이런 것들을 방지하기

위해서 모델의 파라미터들을 최적화시키는 것이 중요하다고 합니다.

 

(BLAST 의 overclassification 확률이 높은 것을 볼 수 있습니다)

 

 

 

어려운 부분이 너무 많습니다. 제가 이해한 게 맞는지도 잘 모르겠네요ㅜ 그래도 논문을 완벽하게 이해하면 가장 좋겠지만 기본적인 작동 원리만 알고 있어도 나중에 큰 도움이 될 거라고 생각합니다.

 

혹은 아래의 QIIME2 홈페이지의 설명을 읽어보셔도 괜찮습니다. 개인적으로는 논문으로 공부하고 아래 홈페이지에서 설명을 읽으니 훨씬 간단하게 느껴졌습니다.

 

 

Overview of QIIME 2 Plugin Workflows — QIIME 2 2023.9.1 documentation

Overview of QIIME 2 Plugin Workflows Note Abandon all hope, ye who enter, if you have not read the glossary. 👺 Note This is a guide for novice QIIME 2 users, and particularly for those who are new to microbiome research. For experienced users who are al

docs.qiime2.org

 

 

3. codes for q2-feature-classifier 

간단하게 코드만 확인하고 마무리하겠습니다. 이전 포스팅에서 greengenes 2 database 를 다운로드하였으니 그 파일을 사용하여 모델을 학습시켜 주겠습니다. (이 단계는 시간이 오래 걸릴뿐더러, 용량을 많이 먹는 것으로 알고 있습니다. 개인컴퓨터로는 수행하지 않는 것이 좋아용)

 

qiime feature-classifier classify-sklearn \
  --i-classifier 2022.10.backbone.v4.nb.qza \
  --i-reads rep-seqs.qza \
  --o-classification taxonomy.qza

 

위 코드를 수행함으로써 결과파일로 얻는 taxonomy.qza 파일이 우리가 지금까지 공부한

1. naive bayes classifier 를 만들어서 greengenes2 의 데이터를 학습시켜주고

2. 우리가 분류해야 하는 representative sequence 파일을 넣어서 분류를 완료한 것이라고 보시면 됩니다.

 

 

 

뭔가 뿌듯하지 않나요? 다음 포스팅에서 뵙겠습니다.

 

 

 

# reference

 

1) Bokulich, Nicholas A., et al. "Optimizing taxonomic classification of marker-gene amplicon sequences with QIIME 2’s q2-feature-classifier plugin." Microbiome 6.1 (2018): 1-17.

 

2) https://docs.qiime2.org/2023.9/tutorials/overview/#taxonomy-classification-and-taxonomic-analyses