根据 DNA 条形码了解狼的饮食
查看中间结果或评估每一步的最佳参数总是一个好主意。一些命令就是为此目的而设计的,例如,您可以使用:obicount
计算文件中序列记录的数量obihead
和 obitail
查看文件的第一个或最后一个序列记录obistat
获取每个序列记录头中属性(键=值组合)的一些基本统计数据(计数、平均值、标准差)(参见fasta 格式描述 中的扩展 OBITools fasta 格式)
任何Unix命令(例如less、awk、sort、wc
)来检查你的文件
###鉴定样本中测出的序列属于都哪些物种。
1.准备数据
mkdir 00.data
cd 00.data
cd ..
1.测序数据文件fastq
wolf_F.fastq
wolf_R.fastq
2.描述所有测序样本所用的引物和标签的文件
wolf_diet_ngsfilter.txt 标签对应于在每个引物的 5’ 端添加的短而特异的序列,用于区分不同的样本
3.包含 fasta 格式的参考数据库的文件
db_v05_r117.fasta该参考数据库是使用ecoPCR 从 EMBL 117 版中提取的
4.以ecoPCR格式格式化的 NCBI 分类法(有关详细信息,请参阅 obiconvert实用程序)
embl_r117.ndx
embl_r117.rdx
embl_r117.tdx
2.使用illumina双端测序数据进行微组装
mkdir 01.illuminapairedend
cd 01.illuminapairedend
illuminapairedend –score-min=40 -r ../00.data/wolf_R.fastq ../00.data/wolf_F.fastq > illuminapairedend.fq
#删除未对齐的序列记录
obigrep -p ‘mode!=”joined”‘ illuminapairedend.fq >illuminapairedend_ali.fq
#获取第一个序列记录
obihead –without-progress-bar -n 1 illuminapairedend_ali.fq
cd ..
3.将每个序列记录分配给相应样本
mkdir 02.ngsfilter
cd 02.ngsfilter
ngsfilter -t ../00.data/wolf_diet_ngsfilter.txt -u unidentified.fq ../01.illuminapairedend/illuminapairedend_ali.fq > ali_assigned.fq
obihead –without-progress-bar -n 1 illuminapairedend_ali.fq
cd ..
4.除重复序列
mkdir 03.obiuniq
cd 03.obiuniq
obiuniq -m sample ../02.ngsfilter/ali_assigned.fq > assigned_uniq.fa
obihead –without-progress-bar -n 1 assigned_uniq.fa
去重复以后会给assigned_uniq.fa中加两个属性条目:
1.merged_sample={‘29a_F260619’: 1}:该序列在名为 29a_F260619 的单个样本中发现过一次
2.count=1:此序列的总计数为 1
#为了仅保留这两个key=count、merged_sample属性,我们可以使用obiannotate
命令
obiannotate -k count -k merged_sample assigned_uniq.fa > assigned_uniq_annotate.fa
#obiannotate -k count -k merged_sample assigned_uniq.fa > $$ ; mv $$ assigned_uniq_annotate.fa 将标准输出结果重定向输入到$$中,再将$$重命名为assigned_uniq_annotate.fa
obihead –without-progress-bar -n 5 assigned_uniq_annotate.fa #查看文件中前五条序列内容
cd ..
5.Denoise the sequence dataset
mkdir 04.obigrep
cd 04.obigrep
#获取统计信息
#在这种情况下,我们使用obistat来获取“count”属性的计数统计信息(count 属性已由obiuniq命令添加)。通过在Unix命令sort和 中管道传输结果head,我们仅保留“count”属性的 20 个最低值的计数统计信息。
obistat -c count ../03.obiuniq/assigned_uniq.fa | sort -nk1 | head -20
#过滤-仅保留计数大于或等于 10 且长度小于 80 bp 的序列
obigrep -l 80 -p ‘count>=10’ ../03.obiuniq/assigned_uniq_annotate.fa > uniq_annotate_c10_l80.fa
cd ..
mkdir 05.obiclean
cd 05.obiclean
#清除PCR/测序错误-使用obiclean
程序,我们保留头部序列(-H选项),即没有变体且计数大于其自身计数的 5% 的序列(选项-r 0.05)
obiclean -s merged_sample -r 0.05 -H uniq_annotate_c10_l80.fa > uniq_annotate_c10_l80_clean.fa
cd ..
6.序列的分类和分配
mkdir 06.assign_seq_taxon
cd 06.assign_seq_taxon
cp 00.data/embl_r117.* ./
cp 00.data/db_v05_r117.fasta ./
#分类分配
ecotag -d embl_r117 -R db_v05_r117.fasta ../05.obiclean/uniq_annotate_c10_l80_clean.fa > annotate_c10_l80_clean.tag.fa
#去除掉一些不需要的属性标签“scientific_name_by_db、obiclean_samplecount、obiclean_count、obiclean_singletoncount、obiclean_cluster、obiclean_internalcount、obiclean_head、taxid_by_db、obiclean_headcount、id_status、rank_by_db、order_name、order”
obiannotate –delete-tag=scientific_name_by_db –delete-tag=obiclean_samplecount
–delete-tag=obiclean_count –delete-tag=obiclean_singletoncount
–delete-tag=obiclean_cluster –delete-tag=obiclean_internalcount
–delete-tag=obiclean_head –delete-tag=taxid_by_db –delete-tag=obiclean_headcount
–delete-tag=id_status –delete-tag=rank_by_db –delete-tag=order_name
–delete-tag=order annotate_c10_l80_clean_tag.fa >
c10_l80_clean_tag_annotate.fa
#排序-按照计数的降序排列
obisort -k count -r c10_l80_clean_tag_annotate.fa > c10_l80_clean_tag_annotate_sort.fa
#生成以制表符分割的excel表
obitab -o c10_l80_clean_tag_annotate_sort.fa > result.tab
cd ..
附:
构建数据库-序列的分类学分配需要一个参考数据库,该数据库汇集了样本中所有可能被识别的物种。然后根据样本序列和参考序列之间的序列比较进行分配。
构建参考数据库的一种方法是使用ecoPCR 程序模拟 PCR,并从 EMBL 中提取所有可通过两个PCR引物(TTAGATACCCCACTATGC和TAGAACAGGCTCCTCTAG )在计算机中扩增的序列。
构建此参考数据库的完整步骤列表如下:
下载全套 EMBL 序列(可从以下网址获取: ftp: //ftp.ebi.ac.uk/pub/databases/embl/release/)
下载 NCBI 分类法(可从以下网址获取: ftp: //ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz)
将它们格式化为 ecoPCR 格式(请参阅obiconvert了解如何生成 ecoPCR 兼容文件)
使用 ecoPCR 模拟扩增,并根据推测的扩增条形码及其记录的分类信息建立参考数据库
mkdir datasets
cd datasets
1.下载序列
mkdir EMBL
cd EMBL
wget -nH –cut-dirs=6 -A ‘STD_*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
wget -nH –cut-dirs=6 -A ‘STD_FUN*.dat.gz,STD_INV*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
wget -nH –cut-dirs=6 -A ‘STD_INV*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
mkdir MAN_MUS_PHG
cd MAN_MUS_PHG
wget -nH –cut-dirs=6 -A ‘STD_MAN*.dat.gz,STD_MUS*.dat.gz,STD_PHG*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
mkdir PLN
cd PLN
wget -nH –cut-dirs=6 -A ‘STD_PLN*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
mkdir PRO_ROD_SYN_UNC
cd PRO_ROD_SYN_UNC
wget -nH –cut-dirs=6 -A ‘STD_PRO*.dat.gz,STD_ROD*.dat.gz,STD_SYN*.dat.gz,STD_UNC*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
mkdir VRL
cd VRL
wget -nH –cut-dirs=6 -A ‘STD_VRL*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
mkdir VRT_XXX
cd VRT
wget -nH –cut-dirs=6 -A ‘STD_VRT*.dat.gz,STD_XXX*.dat.gz’ -R ‘STD_HUM*.dat.gz’,’STD_ENV*.dat.gz’ -m -np ftp://ftp.ebi.ac.uk/pub/databases/ena/sequence/snapshot_latest/std/
cd ..
参考网站:https://git.metabarcoding.org/obitools/obitools3/-/wikis/Wolf-tutorial-with-the-OBITools3
https://ena-browser-docs.readthedocs.io/en/latest/help_and_guides/moving_from_release.html
2.下载分类法
mkdir TAXO
cd TAXO
wget ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
tar -zxvf taxdump.tar.gz
cd ..
3.格式化数据
obiconvert –embl -t ./TAXO –ecopcrdb-output=embl_last ./EMBL/*.dat
4.使用 ecoPCR 进行体外 in silico PCR(模拟 PCR 实验)
ecoPCR -d ./embl_last -e 3 -l 50 -L 150 TTAGATACCCCACTATGC TAGAACAGGCTCCTCTAG > db.ecopcr
5.清理数据库
#1.过滤序列,以便它们在物种、属和科级别具有良好的分类描述(下面的obigrep命令)。
#2.删除冗余序列(下面的obiuniq命令)。
#3.确保去重复序列在家族级别有一个分类编号(下面的obigrep命令)。
#4.确保每个序列都有唯一的标识(下面的obiannotate命令)
obigrep -d embl_last –require-rank=species –require-rank=genus –require-rank=family db.ecopcr > db_clean.fasta
obiuniq -d embl_last db_clean.fasta > db_clean_uniq.fasta > obigrep -d embl_last –require-rank=family db_clean_uniq.fasta > db_clean_uniq_clean.fasta
obiannotate –uniq-id db_clean_uniq_clean.fasta > db.fasta
##EMBL-ENA 使用指南
这些是 ENA(European Nucleotide Archive) 数据库中 tax division 的缩写,代表不同类别的生物源序列数据。下面是每个缩写的解释:
1. ENV: Environmental samples(环境样本)
• 包含从环境样本中提取的序列数据,常用于宏基因组和环境DNA(eDNA)研究。
2. FUN: Fungi(真菌)
• 与真菌相关的基因组和序列数据。
3. HUM: Human(人类)
• 人类基因组及其相关的序列数据。
4. INV: Invertebrates(无脊椎动物)
• 无脊椎动物的基因组和序列数据,如昆虫、软体动物等。
5. MAN: Mammals(哺乳动物)
• 除人类以外的哺乳动物序列数据。
6. MUS: Mus musculus(小鼠)
• 小鼠(Mus musculus)的基因组和序列数据,常用于生物医学研究。
7. PHG: Phage(噬菌体)
• 噬菌体的基因组和序列数据。
8. PLN: Plants(植物)
• 植物相关的序列数据。
9. PRO: Prokaryotes(原核生物)
• 原核生物,包括细菌和古细菌的序列数据。
10. ROD: Rodents(啮齿动物)
• 与啮齿类动物相关的序列数据,除小鼠外的啮齿类如大鼠等。
11. SYN: Synthetic(合成)
• 人工合成的序列数据。
12. UNC: Unclassified(未分类)
• 未分类或暂时无法归类的序列数据。
13. VRL: Viral(病毒)
• 病毒的基因组和序列数据。
14. VRT: Vertebrates(脊椎动物)
• 除人类和其他特定哺乳动物外的脊椎动物序列数据,如鱼类、两栖类、爬行动物等。
15. XXX: Unspecified organisms(未指明生物体)
• 没有明确分类的序列数据,可能是新发现或暂时无法确定的物种。
这些分类领域帮助用户根据特定的生物类群来检索和过滤序列数据,使得数据管理和分析更加高效。
在 ENA(European Nucleotide Archive) 数据库中,STD 和 CON 是用于描述不同类型序列数据的缩写,它们的含义如下:
1. STD (Standard):
• 代表标准序列。STD 类型的数据通常是经过处理和注释的已组装的序列,例如基因组、表达序列标签(EST)、基因捕获序列等。STD 数据是完整的、标准的基因组或核酸序列,适合用于进一步的分析和研究。
2. CON (Contig):
• 代表重叠群(contigs),即未完全组装或正在组装中的基因组数据。CON 类型的数据通常指的是多个短序列片段经过部分组装而形成的序列块,这些块可能还没有连接成完整的基因组。CON 数据通常来源于高通量测序,特别是基因组组装的中间步骤,常用于参考基因组构建。
简而言之:
• STD 是已经完全注释和组装好的标准序列。
• CON 是部分组装的重叠群或片段,尚未完成完整的组装。
使用OBItools3
##建库慎用,亲测不行。
1.安装OBItools3
详情参考:https://git.metabarcoding.org/obitools/obitools3/-/wikis/Installing-the-OBITools3
需要的环境:python(3.11)、cmake(建议最新)、cython(建议最新)、python3-dev(建议最新)
mamba create -n OBItools python=3.11
mamba activet OBItools
pip3 install –upgrade pip setuptools wheel Cython #后续如果报错建议直接使用mamba安装
mamba install cmake
pip3 install OBITools3
obi test
#python=3.12会报错提示,找不到find_module
这在3.13中已经被移除了
#python=3.11实测可用
#降级之前最好先把OBItools3卸载
1 | Traceback (most recent call last): |