Bioinformatics/Metagenomics

[QIIME 2] 마이크로바이옴 분석에서 사용되는 파일 종류 (Import, Export)

2021. 10. 2. 21:09

Amplicon data를 분석할 때 주로 사용되는 Data type의 종류 및 import/export를 정리하였다.

위의 Data types가 amplicon data 분석에서 생성되는데, taxonomic analysis 및 diversity analysis에서 사용될 수 있다.

이 파일들을 하나씩 어떤 형식으로 되어 있으며, 어떻게 export/import할 수 있는지 알아보았다.

 

1. FeatureTable[Frequency]

# Denoising
$ qiime deblur denoise-16S --p-sample-stats --i-demultiplexed-seqs demux.qza --o-representative-sequences repSeqs.qza --o-table table.qza --o-stats deblurStats.qza 
Saved FeatureTable[Frequency] to: table.qza
Saved FeatureData[Sequence] to: repSeqs.qza
Saved DeblurStats to: deblurStats.qza

  Denoising을 진행하면 FeatureTable[Frequency]과 FeatureData[Sequence]가 함께 결과로 나온다. FeatureTable[Frequency]는 각각의 샘플들이 feature를 몇개씩 가지고 있는지에 대한 table이며, FeatureData[Sequence]는 각각의 feature의 실제 sequence가 어떤지를 나타내는 파일이다.

  FeatureTable[Frequency]를 export하면 다음과 같다.

# Export
$ qiime tools export --input-path table.qza --output-path ./export
Exported table.qza as BIOMV210DirFmt to directory ./export

$ ls export/
feature-table.biom

$ biom convert -i export/feature-table.biom -o export/feature-table.tsv --to-tsv

$ ls export/
feature-table.biom	feature-table.tsv

feature-table.tsv

  feature-table.tsv는 다시 QIIME Artifact로 import할 수 있다.

# Import
$ biom convert -i feature-table.tsv -o feature-table-2.biom --to-hdf5
$ qiime tools import --input-path feature-table-2.biom --type 'FeatureTable[Frequency]' --input-format BIOMV210Format --output-path table2.qza
Imported feature-table-2.biom as BIOMV210Format to table2.qza

  table2.qza의 경우 table1.qza가 갖고 있던 history (데이터가 어떤 방식으로 생성됐는지)가 모두 사라지게 되지만 데이터는 동일하다.

  한편, biom convert를 hdf5 형식으로 진행하였다. BIOM format이란 Biological Observation Matrix의 약자로, OTU table 등을 나타낼 때 사용할 수 있다. BIOM은 크게 JSON 포멧과 HDF5 포멧 중 하나를 내부적으로 가질 수 있는데, 전자가 version 1이고 후자가 version 2이다. 위에서는 BIOMV210Format으로 import를 진행하기 위해 hdf5 형식으로 biom convert를 하였다.

 

Artifact API

  QIIME 2는 QIIME 2 command-line interface (q2cli) 뿐만 아니라 Artifact API도 제공한다. 이는 QIIME 2를 위한 Python 3 application programming interface (API)이다. Artifact API로 export/import를 진행하는 코드는 다음과 같다.

# Export
>>> from qiime2 import Artifact
>>> import pandas as pd

>>> featureTable = Artifact.load('./table.qza')
>>> featureTable = featureTable.view(pd.DataFrame)
>>> featureTable.head()

# Import
>>> imported_artifact = Artifact.import_data("FeatureTable[Frequency]", featureTable)
>>> imported_artifact.save('table3.qza')

 

2. FeatureData[Sequence]

  Denoising 이후 FeatureTable[Frequency]와 함께 FeatureData[Sequence]가 결과로 나온다. 이를 export하면 다음과 같다.

# Export
$ qiime tools export --input-path repSeqs.qza --output-path ./export
Exported repSeqs.qza as DNASequencesDirectoryFormat to directory ./export

$ ls export/
dna-sequences.fasta

dna-sequences.fasta

  dna-sequences.fasta는 다시 QIIME Artifact로 import할 수 있다.

# Import
$ qiime tools import --input-path dna-sequences.fasta --type 'FeatureData[Sequence]' --output-path repSeqs2.qza
Imported dna-sequences.fasta as DNASequencesDirectoryFormat to repSeqs2.qza

 

Artifact API

# Export
>>> from qiime2 import Artifact
>>> import pandas as pd

>>> repSeqs = Artifact.load('./repSeqs.qza')
>>> repSeqs = repSeqs.view(pd.Series)
>>> repSeqs.head()

# Import
>>> imported_artifact = Artifact.import_data("FeatureData[Sequence]", repSeqs)
>>> imported_artifact.save('repSeqs3.qza')

 

3. FeatureData[Taxonomy]

# Taxonomic assignment
$ qiime feature-classifier classify-consensus-blast --i-query repSeqs.qza --i-reference-reads refSeqs.qza --i-reference-taxonomy refTaxonomy.qza --o-classification taxonomy.qza
Saved FeatureData[Taxonomy] to: taxonomy.qza

  Taxonomic assignment을 진행하면 FeatureData[Taxonomy]가 결과로 나온다. FeatureData[Taxonomy]는 각각의 sequence가 (얼마의 consensus로) 어떤 taxonomy를 갖는지에 대한 정보를 나타낸다.

  FeatureData[Taxonomy]를 export하면 다음과 같다.

# Export
$ qiime tools export --input-path taxonomy.qza --output-path ./export
Exported taxonomy.qza as TSVTaxonomyDirectoryFormat to directory ./export

$ ls export/
taxonomy.tsv

taxonomy.tsv

  taxonomy.tsv는 다시 QIIME Artifact로 import할 수 있다.

# Import
$ qiime tools import --input-path taxonomy.tsv --type 'FeatureData[Taxonomy]' --output-path taxonomy2.qza
Imported taxonomy.tsv as TSVTaxonomyDirectoryFormat to taxonomy2.qza

 

Artifact API

# Export
>>> from qiime2 import Artifact
>>> import pandas as pd

>>> taxonomy = Artifact.load('./taxonomy.qza')
>>> taxonomy = taxonomy.view(pd.DataFrame)
>>> taxonomy.head()

# Import
>>> imported_artifact = Artifact.import_data("FeatureData[Taxonomy]", taxonomy)
>>> imported_artifact.save('taxonomy3.qza')

 

4. FeatureData[AlignedSequence]

$ qiime phylogeny align-to-tree-mafft-fasttree --i-sequences repSeqs.qza --o-alignment aligned-rep-seqs.qza --o-masked-alignment masked-aligned-rep-seqs.qza --o-tree unrooted-tree.qza --o-rooted-tree rooted-tree.qza
Saved FeatureData[AlignedSequence] to: aligned-rep-seqs.qza
Saved FeatureData[AlignedSequence] to: masked-aligned-rep-seqs.qza
Saved Phylogeny[Unrooted] to: unrooted-tree.qza
Saved Phylogeny[Rooted] to: rooted-tree.qza

  Phylogenetic tree를 그리는 과정에서 FeatureData[AlignedSequence] 및 Phylogeny[Rooted]가 함께 나온다. 이는 각각 aligned sequence와 tree 정보를 나타낸다.

  FeatureData[AlignedSequence]를 export하면 다음과 같다.

# Export
$ qiime tools export --input-path aligned-rep-seqs.qza --output-path ./export
Exported aligned-rep-seqs.qza as AlignedDNASequencesDirectoryFormat to directory ./export

$ ls export/
aligned-dna-sequences.fasta

aligned-dna-sequences.fasta

  aligned-dna-sequences.fasta는 다시 QIIME Artifact로 import할 수 있다.

# Import
$ qiime tools import --input-path aligned-dna-sequences.fasta --type 'FeatureData[AlignedSequence]' --output-path aligned-rep-seqs2.qza
Imported aligned-dna-sequences.fasta as AlignedDNASequencesDirectoryFormat to aligned-rep-seqs2.qza

 

Artifact API

# Export
>>> from qiime2 import Artifact
>>> import pandas as pd

>>> alignedSequence = Artifact.load('./aligned-rep-seqs.qza')
>>> alignedSequence = alignedSequence.view(pd.Series)
>>> alignedSequence.head()

# Import
>>> imported_artifact = Artifact.import_data("FeatureData[AlignedSequence]", alignedSequence)
>>> imported_artifact.save('aligned-rep-seqs3.qza')

 

5. Phylogeny[Rooted]

  Phylogeny[Rooted]를 export하면 다음과 같다.

# Export
$ qiime tools export --input-path rooted-tree.qza --output-path ./export
Exported rooted-tree.qza as NewickDirectoryFormat to directory ./export

$ ls export/
tree.nwk

tree.nwk

  tree.nwk는 다시 QIIME Artifact로 import할 수 있다.

# Import
$ qiime tools import --input-path tree.nwk --type 'Phylogeny[Rooted]' --output-path rooted-tree2.qza
Imported tree.nwk as NewickDirectoryFormat to rooted-tree2.qza

 

Artifact API

# Export
>>> from qiime2 import Artifact
>>> import skbio

>>> tree = Artifact.load('./rooted-tree.qza')
>>> tree = tree.view(skbio.TreeNode)

# Import
>>> imported_artifact = Artifact.import_data("Phylogeny[Rooted]", tree)
>>> imported_artifact.save('rooted-tree3.qza')

 

6. metadata.tsv

  마지막으로 분석을 위해 각 샘플들의 정보를 담고 있는 metadata.tsv가 필요한 경우도 있다. 이 파일은 자신이 가지고 있는 정보를 바탕으로 작성해야 하는데, 그 형식은 QIIME 2 tutorial에 존재하는 metadata.tsv 파일의 형식을 참고할 수 있다.

https://data.qiime2.org/2021.8/tutorials/moving-pictures/sample_metadata.tsv

 

Reference

  1. docs.qiime2.org/2021.2/tutorials/importing/
  2. docs.qiime2.org/2021.2/tutorials/exporting/

 

728x90
반응형