网页设计与网站建设课设网站如何在google提交收录
目录
创建metadata
把数据导入qiime2
去除引物序列
双端合并 (dada2不需要)
质控 (dada2不需要)
使用deblur获得特征序列
使用dada2生成代表序列与特征表
物种鉴定
可视化物种鉴定结果
构建进化树(ITS一般不构建进化树)
生成多样性分析所需数据
α多样性分析
beta多样性分析
绘制稀释曲线
差异物种分析
如何把.qza格式文件导出?比如把特征表导出
演示单端数据导入qiime2
 基于qiime2的16s测序数据分析分析 
  本文演示的是目前最长用的双端测序数据 
   激活qiime环境 
 alias activate_qiime='conda activate qiime2-amplicon-2024.2' 
 我已经把上面这句代码放在了.bashrc里面,因此激活qiime2环境只需要运行activate_qiime即可 
  按照下图策略分析 
 
  演示Illumina公司的16S rRNA基因区的V3到V4区 
  数据导入,需要首先准备好一个manifest.tsv文件,这个文件有三列,分别是 sample-id forward-absolute-filepath reverse-absolute-filepath,如图所示 
 
  生成manifest.tsv可以使用下面的代码,这个代码是my_script文件夹里面的create_manifest.sh 
 #!/bin/bash 
 # 设置目录路径 
 dir="/data3/sunjs/chenlina/69contorl47PDAC" 
 # 输出表头 echo -e "sample-id\tforward-absolute-filepath\treverse-absolute-filepath" 
 # 遍历_R1和_R2文件 
 for r1 in ${dir}/*_R1.fastq.gz; do # 检查R1文件是否存在 
 if [[ -f $r1 ]]; then 
 # 获取样本ID(去掉_R1.fastq.gz) 
 sample_id=$(basename "$r1" _R1.fastq.gz) 
 # 构建R2文件路径 r2="${dir}/${sample_id}_R2.fastq.gz" 
 # 检查R2文件是否存在 if [[ -f $r2 ]]; then 
 # 输出结果 echo -e "${sample_id}\t${r1}\t${r2}" fi fi done 
  这个脚本会在终端直接显示生成的内容,我们一般会把这些内容重定向到另一个文件去,所以通常运行代码 
 bash create_manifest.sh>manifest.tsv 
 这样就会在当前工作目录下生成一个manifest.tsv文件 
 创建metadata
 还需要创建一个metadata,比如有这些列 
 
  不过我创建的meta.tsv如图所示,只有样本名和分组两列 
 
 把数据导入qiime2
export TMPDIR=/data3/sunjs/ cd ~/test/qiime2/ 
 input_path=~/test/qiime2/manifest.tsv 
 qiime tools import \ 
 --type 'SampleData[PairedEndSequencesWithQuality]' \ 
 --input-path "${input_path}" \ 
 --output-path "PDAC.qza" \ 
 --input-format PairedEndFastqManifestPhred33V2 
 去除引物序列
 v3到v4区域的引物序列是固定的,就是这两个参数指定的序列 
 cd /data3/sunjs/chenlina/69contorl_47PDAC_res 
 qiime cutadapt trim-paired \ 
 --i-demultiplexed-sequences 69contorl_47PDAC.qza \ 
 --p-cores 10 \ 
 --p-no-indels \ 
 --p-front-f ACTCCTACGGGAGGCAGCAG \ 
 --p-front-r GGACTACHVGGGTWTCTAAT \ 
 --o-trimmed-sequences primer-trimmed-demux.qza 
 双端的数据不需要拆分barcode,直接往下进行即可 
 双端合并 (dada2不需要)
如果接下来打算 使用deblur或OTU聚类方法,现在就合并序列。如果计划使用 dada2对序列进行去噪,则不要合并——dada2会在对每个序列进行去噪之后自动执行序列合并。 
 qiime vsearch merge-pairs \ 
 --i-demultiplexed-seqs primer-trimmed-demux.qza \ 
 --o-unmerged-sequences unmerged_demux-joined.qza \ 
 --p-threads 16 \ 
 --o-merged-sequences demux-joined.qza 
 质控 (dada2不需要)
cd /data3/sunjs/chenlina/test qiime quality-filter q-score \ 
 --p-min-quality 20 \ --i-demux demux-joined.qza \ 
 --o-filtered-sequences demux-joined-filtered.qza \ 
 --o-filter-stats demux-joined-filter-stats.qza 
 使用deblur获得特征序列
qiime deblur denoise-16S \ 
 --i-demultiplexed-seqs demux-joined-filtered.qza \ 
 --p-trim-length 400 \ --p-sample-stats \ 
 --p-jobs-to-start 2 \ --p-min-reads 1 \ 
 --o-representative-sequences repset-seqs.qza \ 
 --o-table feature-table.qza \ 
 --o-stats deblur-stats.qza 
  或者使用data2得到特征表和代表序列,可以直接替换掉质控+使用 deblur获得特征序列两步,但是不管用deblur还是dada2都要完成导入数据,去引物 
  使用dada2之前需要先获得 --p-trim四个参数,把下面这段代码生成的数据拖到qiime2的可视化网站里面可以看到两张图 
 qiime demux summarize \ 
 --i-data primer-trimmed-demux.qza \ 
 --o-visualization demux-summary.qzv 
 
 使用dada2生成代表序列与特征表
#p-trim-left-f正向序列左边 
 #p-trim-left-r 反向去列左边 
 #p-trunc-len-f正向序列x轴的值 
 #p-trunc-len-r反向序列x轴的值 
 # --p-retain-all-samples True保留所有样本 
 qiime dada2 denoise-paired \ 
 --i-demultiplexed-seqs primer-trimmed-demux.qza \ 
 --p-n-threads 20 \ 
 --p-trim-left-f 0 --p-trim-left-r 0 \ 
 --p-trunc-len-f 270 --p-trunc-len-r 187 \ 
 --p-retain-all-samples True \ 
 -o-table dada2-table.qza \ 
 --o-representative-sequences dada2-rep-seqs.qza \ 
 --o-denoising-stats denoising-stats.qza 
 其中 
 #p-trim-left-f正向序列左边 
 #p-trim-left-r 反向去列左边 
 #p-trunc-len-f正向序列x轴的值 
 #p-trunc-len-r反向序列x轴的值 
 这四个参数的取值要通过看上面那两张图来得到 
 一般来讲会去掉质量中位数小于20的位点。 
  上面两种方法选一个就行,推荐dada2 
 物种鉴定
 生成代表序列之后可以进行物种鉴定了 
 export TMPDIR=/data3/sunjs/ 
 input_path=/data3/sunjs/chenlina/qiime2/PDAC 
 output_path=/data3/sunjs/chenlina/qiime2/PDAC 
 db_path=~/Metagenome/database/silva-138-99-nb-classifier.qza 
 cd "${input_path}" 
 #全长引物注释,使用的数据库日期是2024.2 
 #要求输入代表序列,也就是dada2结果生成的那个 
 #--p-n-jobs如果设置为 -1,那么程序会尝试使用所有可用的 CPU 核心来执行任务 
 #--p-n-jobs指定的是进程而非线程,和threads不是一回事 
 qiime feature-classifier classify-sklearn \ 
 --i-classifier "${db_path}" \ 
 --i-reads dada2-rep-seqs.qza \ 
 --p-n-jobs 20 \ 
 --o-classification "${output_path}/taxonomy.qza" #过滤污染 叶绿体 线粒体 qiime taxa filter-table \ --i-table dada2-table.qza \ 
 --i-taxonomy taxonomy.qza \ 
 --p-exclude mitochondria,chloroplast \ 
 --p-include p__ \ 
 --o-filtered-table "${output_path}/feature-table-filt-contam.qza" 
 #过滤稀有ASV qiime feature-table filter-features \ 
 --i-table feature-table-filt-contam.qza \ 
 --p-min-frequency 50 \ --p-min-samples 1 \ 
 --o-filtered-table "${output_path}/feature-table-final.qza" 
 #过滤掉ASV对应的序列 qiime feature-table filter-seqs \ 
 --i-data dada2-rep-seqs.qza \ 
 --i-table feature-table-final.qza \ 
 --o-filtered-data "${output_path}/repset-seqs-final.qza" 
  这里需要提前下载好对应的数据库,下载的数据库理论上来讲是越新越好,但是需要和你用的qiime2软件版本一致,比如qiime2是2024.2的,那数据库也要下载2024.2的,下载数据库可以从这个网址下载 QIIME 2 Resources ,运行这段代码之后就得到了物种鉴定表也就是 taxonomy.qza,同时上面的代码还进行了一些过滤,然后我们可以使用下面的代码来对物种鉴定的结果进行可视化 
  可视化物种鉴定结果
qiime metadata tabulate \ 
 --m-input-file taxonomy.qza \ 
 --o-visualization taxonomy.qzv 
 #绘制柱状图 
 qiime taxa barplot \ 
 --i-table feature-table-final.qza \ 
 --i-taxonomy taxonomy.qza \ 
 --m-metadata-file meta.tsv \ 
 --o-visualization taxa-bar-plots.qzv 
 其中taxonomy.qzv文件拖到网站里面长这样子 
 
 taxa-bar-plots.qzv长这样子,网站允许把柱状图的数据导出成csv格式,推荐导出之后用R来绘制 
 
 构建进化树(ITS一般不构建进化树)
#构建进化树,ITS一般不构建进化树 
 export TMPDIR=/data3/sunjs/ input_path=/data3/sunjs/chenlina/qiime2/PDAC output_path=/data3/sunjs/chenlina/qiime2/PDAC 
 cd "${input_path}" 
 qiime phylogeny align-to-tree-mafft-fasttree \ 
 --i-sequences repset-seqs-final.qza \ 
 --o-alignment aligned-repset-seqs.qza \ 
 --p-n-threads 40 \ 
 --o-masked-alignment masked-aligned-repset-seqs.qza \ 
 --o-tree ${output_path}/unrooted-tree.qza \ 
 --o-rooted-tree "${output_path}/rooted-tree.qza" 
  下面这段代码用于生成代表序列和特征表的qzv格式文件,在网址 view.qiime2.org可以可视化,需要先导出然后拖进去 
 cd /data3/sunjs/chenlina/84contorl_50PDAC_res 
 # 特征表和特征序列汇总 
 qiime feature-table summarize \ 
 --i-table feature-table-final.qza \ 
 --m-sample-metadata-file meta.tsv \ 
 --o-visualization table.qzv qiime feature-table tabulate-seqs \ 
 --i-data repset-seqs-final.qza \ 
 --o-visualization rep-seqs.qzv 
 把table.qzv拖到网站里面是这样的 
 
 点击detail这个,拖到最下边,出现这样的界面 
 
 后续将选择53这个数量进行抽平,当然51也可以 
 生成多样性分析所需数据
#53是把上一步生成的table.qzv文件拖到qimme2网站查看来确定的 
 qiime diversity core-metrics-phylogenetic \ 
 --i-phylogeny rooted-tree.qza \ 
 --i-table feature-table-final.qza \ 
 --p-sampling-depth 53 \ 
 --m-metadata-file meta.tsv \ 
 --output-dir ./diversity 
 生成一个名为diversity的目录,里面有一堆文件,其中有四个是qzv格式的,这四个qzv格式的可以直接拖到网站进行可视化,都是beta多样性的比如PCA图,PCoA图这种的 
 
 比如下面这样子 
 
 α多样性分析
cd /data3/sunjs/chenlina/84contorl_50PDAC_res/ 
 #α多样性分析 
 qiime diversity alpha-group-significance \ 
 --i-alpha-diversity diversity/faith_pd_vector.qza \ 
 --m-metadata-file meta.tsv \ 
 --o-visualization faith-group-significance.qzv 
 输入是上一步生成的faith_pd_vector.qza,生成文件如图所示 
 
 beta多样性分析
#beta多样性分析 
 cd /data3/sunjs/chenlina/67contorl_50PDAC_res 
 qiime diversity beta-group-significance \ 
 --i-distance-matrix diversity/unweighted_unifrac_distance_matrix.qza \ 
 --m-metadata-file meta.tsv \ 
 --m-metadata-column group \ 
 --p-pairwise \ 
 --o-visualization unweighted-unifrac-group-significance.qzv 
 生成了一个文件,拖到网页里面是这样的,代表了其中某个分组与其他分组有没有差别,使用的方法是置换多因素方差分析 
 
 画图,实际上前面已经有过这个图了 
 #qiime diversity core-metrics-phylogenetic这一步已经生成的结果 
 cd /data3/sunjs/chenlina/69contorl_47PDAC_res 
 qiime emperor plot \ 
 --i-pcoa diversity/unweighted_unifrac_pcoa_results.qza \ 
 --m-metadata-file meta.tsv \ --p-custom-axes days-since-experiment-start \ 
 --o-visualization unweighted-unifrac-emperor-group.qzv 
 这里--i输入的是前面 
 qiime diversity core-metrics-phylogenetic 
 这一步已经生成的结果,最后得到的结果也是跟前面 
 qiime diversity core-metrics-phylogenetic运行得到的那个结果是一样的,尚不清楚这个有啥用处。 
 绘制稀释曲线
#稀释曲线 
 cd /data3/sunjs/chenlina/69contorl_47PDAC_res 
 qiime diversity alpha-rarefaction \ 
 --i-table feature-table-final.qza \ 
 --i-phylogeny rooted-tree.qza \ 
 --p-max-depth 9000 \ 
 --m-metadata-file meta.tsv \ 
 --o-visualization alpha-rarefaction.qzv 
 我这里选择了取样是9000条,结果如图所示 
 
 可以看到后面基本平了,说明测序饱和了,如果发现后面还在往上升,说明测序没饱和,很多东西测不到,这种数据发出去会被拒稿,因为说不定再多测点就结果不一样了。 
 差异物种分析
 有时候可能会先过滤部分数据,比如我先按照频率和特征数过滤 掉一些低质量数据 
 #过滤部分特征表的数据 
 cd /data3/sunjs/chenlina/69contorl_47PDAC_res 
 #--p-min-frequency:样本必须具有的最小总频率,才能被保留 
 #--p-min-features:样本必须具有的最小特征数,才能被保留 
 qiime feature-table filter-samples \ 
 --i-table feature-table-final.qza \ 
 --m-metadata-file meta.tsv \ 
 --p-min-features 10 \ 
 --p-min-frequency 1500 \ 
 --o-filtered-table filter-table.qza 
  可以查看qiime feature-table filter-samples的帮助文档来查看其他过滤参数,比如我可以使用参数--p-where只保留meta.tsv中的某一个分组。 
 接下来使用 ANCOM-BC方法来进行差异物种分析 
 #差异分析 cd /data3/sunjs/chenlina/69contorl_47PDAC_res 
 #--p-formula描述了微生物的绝对丰度是如何依赖于元数据中的变量的 
 #使用ANCOM-BC方法来进行差异物种分析 
 qiime composition ancombc \ 
 --i-table filter-table.qza \ 
 --m-metadata-file meta.tsv \ 
 --p-formula group \ 
 --o-differentials ancombc-group.qza 
 #生成差异丰富度分析结果的条形图可视化 
 qiime composition da-barplot \ 
 --i-data ancombc-group.qza \ 
 --p-significance-threshold 0.001 \ 
 --o-visualization da-barplot-group.qzv 
  如何把.qza格式文件导出?比如把特征表导出
cd /data3/sunjs/chenlina/84contorl_50PDAC_res 
 qiime tools export \ 
 --input-path feature-table-final.qza \ 
 --output-path exported-feature-table biom convert \ 
 -i exported-feature-table/feature-table.biom \ 
 -o feature-table.tsv \ 
 --to-tsv 
 这就把特征表导出成了tsv这种表格形式的文件 
   演示单端数据导入qiime2
 先使用fastp对下载的数据进行质控 
 input_path=/data3/sunjs/chenlina/contorl_data output_path=/data3/sunjs/chenlina/contorl_clean_data 
 cd "$input_path" #SRR15884889.fastq for file in *.fastq; do 
 sample_id=$(echo "$file" | cut -d'.' -f1) 
 echo "sample_id是$sample_id 
 输入文件是$file" 
 echo "输出文件为${sample_id}.fastp.json和${sample_id}.fastp.html" 
 fastp -i "${file}" -o "${output_path}/${file}" \ - 
 -qualified_quality_phred 20 \ 
 --length_required 50 \ 
 --cut_front \ 
 --cut_tail \ 
 --trim_poly_g \ 
 --html "${output_path}/${sample_id}.html" \ 
 --json "${output_path}/${sample_id}.json" done 
  然后运行代码自动构建一个manifest.tsv文件 
 cd /data3/sunjs/chenlina/contorl_data 
 echo -e "sample-id\tabsolute-filepath" > contorl_manifest.tsv for file in *.fastq; do 
 echo -e "${file%.fastq}\t$(pwd)/$file" >> contorl_manifest.tsv done 
  解释下上面这段代码 
 上面的命令是用来生成一个清单文件(manifest file),这个文件将每个样本的ID和对应的绝对文件路径关联起来。这个文件随后可以被用来将单端FASTQ文件导入到QIIME 2中。 
  数据来源于文章 Dysbiosis of human gut microbiome in young onset colorectal cancer,他的数据中扩增子测序文件里面是单端测序文件,所以构建的manifest长这样子 
 
  然后把健康人的feces数据导入qiime2,由于是单端的所以 
 --type 参数是'SampleData[SequencesWithQuality]' 
 export TMPDIR=/data3/sunjs/ 
 input_path=/data3/sunjs/chenlina/contorl_data/contorl_manifest.tsv 
 qiime tools import \ 
 --type 'SampleData[SequencesWithQuality]' \ 
 --input-path "${input_path}" \ 
 --output-path contorl_demux-single-end.qza \ 
 --input-format SingleEndFastqManifestPhred33V2 
    
