Bioinformatics/└ Qiime2

[QIIME2] UNITE+INSD classifier만들기

김해김씨99대손 2024. 12. 1. 23:46

작성: 2024/12/01

 

1. UNITE + INSD란?

UNITE+INSD'는 UNITE 데이터베이스와 International Nucleotide Sequence Database Collaboration(INSDC)의 데이터를 통합한 데이터베이스이다. INSDC는 GenBank, EMBL, DDBJ와 같은 주요 시퀀스 데이터베이스를 포함하고 있다. 

 

 

2. QIIME의 classifier제작에 필요한 데이터 

QIIME2에 사용되는 분류기는 총 두 개의 파일을 각각 종합하여 사용한다. 그러나 unite +insd 서열을 아래와 같은 구조를 따르지 않는다. 먼저 qiime에 사용되는 형식 두 가지를 알아보자. 

 

 

1. fasta 서열

>서열이름 
AGGGCTCATCGCATGTCAGCAGTCAGTCAGTCAGTCAGTCAGT
>서열이름 
AGGGCTCATCGCATGTCAGCAGTCAGTCAGTCAGTCAGTCAGT

 

 

2. taxonomy 파일 

UNITE taxonomy

Feature ID Taxon 
서열이름 a;b;c;d;e;f
서열이름 a;b;c;d;e;f

 

 

 

 

 

3. 서열 다운로드

- 링크: https://unite.ut.ee/repository.php

 

UNITE - Resources

QIIME release (download) Three sets of QIIME files are released, corresponding to the SHs resulting from clustering at the 3% distance (97% similarity) and 1% distance (99% similarity) threshold levels. The third set of files is the result of a dynamic use

unite.ut.ee

 

 

위 링크에서 스크롤을 내리다 보면 Full "UNITE + INSD" dataset을 발견할 수 있다. 

본문과 같이 QIIME2 형식과 일부 다름으로 사용 시 편집이 필요하다. 

 

 

 

 

먼저 오른쪽 Notes에 해당하는 링크에 접속한 뒤, 개인정보를 입력하면 서열을 다운로드할 수 있다. 

cd /data/Reference/ITS/QIIME2/UNITE_INSC_240421/

# 압축 풀기
gzip -d UNITE_public_21.04.2024.fasta.gz

 

 

 

 

4. QIIME2용으로 수정 

UNITE+INSD는 fasta와 taxonomy 정보가 하나의 파일로 합쳐져 있다. 이때 우리는 서열의 이름을 추출하여, QIIME의 taxonomy형식으로 변환해 보자. 

# 1. header 추출
grep ">" UNITE_public_21.04.2024.fasta  > \
UNITE_public_taxonomy_21.04.2024.txt


# 2. QIIME 형식으로 바꾸기 
	# kpcofgs만 추출하기 
	# https://forum.qiime2.org/t/converting-a-usearch-unite-its-database-to-qiime-2-format/18915/5?u=soyeon_kim
cat UNITE_public_21.04.2024.fasta | grep '^>' | \
  sed 's/>//; s/|.*=/\t/; s/:/__/g; s/,/; /g; s/;$//' | \
  sed 's/\(.__\).__[^;]*/\1/g' > \
  UNITE_public_taxonomy_modi_21.04.2024.txt
  
  
 # 3. taxonomy를 feature ID와 Taxon으로 나누기 
 vi process_taxonomy.sh
 #!/bin/bash

# Input 파일 (raw taxonomy 파일)
input_file="UNITE_public_taxonomy_modi_21.04.2024.txt"

# Output 파일
output_file="UNITE_public_taxonomy_modi2_21.04.2024.txt"

# 헤더 추가 및 데이터 처리
{
  echo -e "Feature ID\tTaxon" # 헤더 추가
  awk -F'\|' '{taxon=$2; sub("\\|.*", "", taxon); print $0 "\t" taxon}' "$input_file"
} > "$output_file"

echo "파일이 성공적으로 생성되었습니다: $output_file

# :q 


chmod +x process_taxonomy.sh
./process_taxonomy.sh

 

 

 

5. Train QIIME classifier 

# qiime artifect로 import하기

# taxonomy
qiime tools import --type 'FeatureData[Taxonomy]'   \
--input-path UNITE_public_taxonomy_modi2_21.04.2024.txt  \
--output-path UNITE_public_taxonomy_modi2_21.04.2024.qza
 
# fasta
qiime tools import --type 'FeatureData[Sequence]' \
  --input-path UNITE_public_21.04.2024.fasta \
  --output-path UNITE_public_21.04.2024.qza
  
  
# train classifier 
	# 기본 세팅으로 돌리니까 서버에서 12시간 정도 소요되었습니다!
qiime feature-classifier fit-classifier-naive-bayes  \
--i-reference-reads UNITE_public_21.04.2024.qza  \
--i-reference-taxonomy UNITE_public_taxonomy_modi2_21.04.2024.qza \
--o-classifier UNITE_public_21.04.2024_classifier.qza

 

 

위 코드를 그대로 사용하면 무리 없이 분류기를 생성할 수 있다. 

만약 코드에 오류가 있다면 댓글로 작성 바랍니다~!

 

 

 

▶ Github

https://github.com/KitHubb/UNITE-INSD-QIIME2-classifier

 

GitHub - KitHubb/UNITE-INSD-QIIME2-classifier: QIIME2 amplicon 2024.2 version UNTE+INSC 10 version classifier production

QIIME2 amplicon 2024.2 version UNTE+INSC 10 version classifier production - KitHubb/UNITE-INSD-QIIME2-classifier

github.com

 

 

반응형