基于qiime2的扩增子数据分析
-
一,导入数据
我们当前交付的illumina的数据都是双端且拆分过的 枚举值默认选择双端类型
暴露参数:
input-path:数据文件夹
type:类别 枚举型 默认值SampleData[PairedEndSequencesWithQuality]
input-format:格式 枚举型 默认值 CasavaOneEightSingleLanePerSampleDirFmt参考:
https://igor.sbgenomics.com/public/apps/admin/sbg-public-data/qiime2-16s-rrna-metagenomic-profiling

qiime tools import \ --type 'SampleData[PairedEndSequencesWithQuality]' \ --input-path casava-18-paired-end-demultiplexed \ --input-format CasavaOneEightSingleLanePerSampleDirFmt \ --output-path demux-paired-end.qza2.拆分(当前先不支持)
导入数据时 虽然大部分情况都已经拆分 如果没有拆分的数据 我们需要在文件上传的过程中增加一个拆分功能 让用户上传文件 并且附上 一个表格 表格里面包括样本编号和barcode列表 和qiime2类似qiime demux emp-single \ --i-seqs emp-single-end-sequences.qza \ --m-barcodes-file sample-metadata.tsv \ --m-barcodes-column barcode-sequence \ --o-per-sample-sequences demux.qza \ --o-error-correction-details demux-details.qza拆分的软件对于illumina的数据 可以使用bcl2fastq 需要原始数据和samplesheet
https://support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl2fastq/bcl2fastq2-v2-20-software-guide-15051736-03.pdf -
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-020-03591-6
DADA2 Deblur CD-HIT-OTU-Miseq的对比:
Deblur 只能支持单端 必须进行R1、R2的合并
DADA2 内部本身就会合并https://github.com/ydkondratenko/cdsnake
http://weizhong-lab.ucsd.edu/cd-hit-otu/https://www.biorxiv.org/content/10.1101/153783v1.full
CD-HIT-OTU-MiSeq, an Improved Approach for Clustering and Analyzing Paired End MiSeq 16S rRNA Sequences

-
NIHMS782534-supplement-1.pdf

为了排除测序误差 OTU采用聚类的方式(97%相似度) 但是也会把真正的突变给排除掉
DADA2 R package implements the full amplicon workflow: filtering, dereplication, chimera identification, and merging paired-end reads.
DADA2 本身是个流程 做了很多事情 其中有一个就是把R1、R2做了合并。 -
-
python -m pdb /home/jynlix/miniconda3/envs/qiime2-2022.2/bin/qiime diversity alpha-group-significance --i-alpha-diversity ace.qza --m-metadata-file metadata2.tsv --o-visualization alpha.ace.qzv --verbose
qiime2代码调试
1.要使用全路径
2.要加上--verbose 否则pdb的打印也会被重定向
3.然后可以使用“文件名:行号”打断点
b /home/jynlix/miniconda3/envs/qiime2-2022.2/lib/python3.8/site-packages/q2_diversity/_alpha/_visualizer.py:35 -
https://hackmd.io/@MAE-MBL/HylpoaOF5 qiime2的一个帖子 讲的比较好
-
https://www.youtube.com/watch?v=g5BdGP4V5YA
关于rarefy的解释 -
-
-
https://www.biorxiv.org/content/10.1101/2021.09.15.460495v2.full.pdf
Tourmaline: a containerized workflow for rapid and
iterable amplicon sequence analysis using QIIME 2
and Snakemake
使用snakemake对qiime2做了自动化 -
-
对于__的问题:
qiime的图上会有__;__这种注释

经过查询:

数据里面是
k__Bacteria; p__Proteobacteria; c__Betaproteobacteria; o__Burkholderiales 这种级别不够的注释
对于级别不够的情况 qiime view 会用__补齐但是注意,s__ p__这种情况数据也是有的 如果需要过滤 可以用
qiime taxa filter-table --p-exclude "s__"过滤 -
https://www.drive5.com/usearch/manual/qiime_classic.html
OTU 表中的数字代表reads数 -
DADA2的限制

DADA2对于单体序列 无法识别 -
https://github.com/benjjneb/dada2/issues/1095
dereplication (derepFastq) required?
dada2在处理的时候 可以去重 只是为了降低内存消耗?在最后统计丰度的时候 会把重复再计算回来? -
dyn.load("./src/dada2.so")
Error in dyn.load("./src/dada2.so") :
unable to load shared object '/home/jynlix/Downloads/src/dada2/dada2/./src/dada2.so':
/home/jynlix/Downloads/src/dada2/dada2/./src/dada2.so: undefined symbol: _ZTIN3tbb4taskE使用gdb 调试dada2时报错 dada2依赖 Rcpp 做多线程 Rcpp 依赖 tbb 需要提前把这个包加载
dyn.load("/home/jynlix/R/x86_64-pc-linux-gnu-library/4.1/RcppParallel/lib/libtbb.so.2", local = FALSE)
-
https://btep.ccr.cancer.gov/docs/qiime2/index.html
Microbiome Analysis with QIIME2 教程 -
dada2的执行过程:
filterAndTrim 过滤,截取
derepFastq (可选步骤 dada内部会判断 如果没有经过去重 会自己调用这个函数)
learnErrors 这个函数也会调用dada 以 self-consist mode 模式运行
dada 核心步骤 但是 self-consist mode = FALSE -
https://forum.qiime2.org/t/difference-between-sub-sampling-and-rarefing/18219
sub-sampling and rarefing的对比:


sub-sampling可以从sample或者feature的角度 对数据进行过滤 得到的是整个数据的子集。
rarefy是对所有feature的结果进行归一化。 -
假如data2的代码保存在 /root/data2
cd /root
R CMD build dada2
会生成dada2.so



