使用AnimalTFDB3.0对动物基因组的转录因子进行注释

1. 动物转录因子数据AnimalTFDB3.0简介

动物转录因子数据库AnimalTFDB3.0对97个动物基因组的转录因子(Transcription Factor)和转录辅助因子(Transcription cofactor)进行了归纳整理。基于DNA结合结构域,将动物转录因子分成了73个基因家族,将转录辅助因子分成了83个基因家族。此外,动物转录因子分为六大类(Basic Domain Group、Zinc-Coordinating Group、Beta-Scaffold Factors、Helix-turn-helix、Other Alpha-Helix Group和Unclassified Structure),动物转录辅助因子也分为六大类(Co-activator/repressors、Chromatin Remodeling Factors、General Cofactors、Histone-modifying Enzymes、Cell Cycle和Other Cofactors)。

动物转录因子数据库AnimalTFDB3.0提供了网页工具进行转录因子分析。该网页工具一次仅支持上传不超过1000条蛋白序列。该网页工具采用HMM算法进行计算,分析速度比较快。数据库作者对大部分转录因子家族采用了PFam数据库的HMM模型,并自己构建了一些转录因子家族的HMM模型。但作者没有提供HMM数据库的下载,仅提供了97个动物转录因子和转录辅助因子蛋白序列的FASTA格式文件下载。

使用AnimalTFDB3.0数据库的网页工具仅能进行转录因子分析,且由于仅能支持不超过1000条序列进行分析而比较麻烦,不利于动物全基因组的转录因子分析。以下讲解下载AnimalTFDB3.0数据库FASTA文件,并自行编写程序进行转录因子和转录辅助因子注释。

2. 下载AnimalTFDB3.0数据库蛋白序列

首先,进入AnimalTFDB3.0数据库下载页面,采用复制粘贴方式获取97个物种的物种名,保存到文件species.txt中。

Ailuropoda melanoleuca;Anas platyrhynchos;Anolis carolinensis;Aotus nancymaae;Astyanax mexicanus;Bos taurus;Caenorhabditis elegans;Callithrix jacchus;Canis familiaris;Capra hircus;Carlito syrichta;Cavia aperea;Cavia porcellus;Cebus capucinus;Cercocebus atys;Chinchilla lanigera;Chlorocebus sabaeus;Choloepus hoffmanni;Ciona intestinalis;Ciona savignyi;Colobus angolensis palliatus;Cricetulus griseus chok1gshd;Cricetulus griseus crigri;Danio rerio;Dasypus novemcinctus;Dipodomys ordii;Drosophila melanogaster;Echinops telfairi;Equus caballus;Erinaceus europaeus;Felis catus;Ficedula albicollis;Fukomys damarensis;Gadus morhua;Gallus gallus;Gasterosteus aculeatus;Gorilla gorilla;Heterocephalus glaber female;Heterocephalus glaber male;Homo sapiens;Ictidomys tridecemlineatus;Jaculus jaculus;Latimeria chalumnae;Lepisosteus oculatus;Loxodonta africana;Macaca fascicularis;Macaca mulatta;Macaca nemestrina;Mandrillus leucophaeus;Meleagris gallopavo;Mesocricetus auratus;Microcebus murinus;Microtus ochrogaster;Monodelphis domestica;Mus caroli;Mus musculus;Mus pahari;Mus spretus;Mustela putorius furo;Myotis lucifugus;Nannospalax galili;Nomascus leucogenys;Notamacropus eugenii;Ochotona princeps;Octodon degus;Oreochromis niloticus;Ornithorhynchus anatinus;Oryctolagus cuniculus;Oryzias latipes;Otolemur garnettii;Ovis aries;Pan paniscus;Pan troglodytes;Papio anubis;Pelodiscus sinensis;Peromyscus maniculatus bairdii;Petromyzon marinus;Poecilia formosa;Pongo abelii;Procavia capensis;Propithecus coquereli;Pteropus vampyrus;Rattus norvegicus;Rhinopithecus bieti;Rhinopithecus roxellana;Saimiri boliviensis boliviensis;Sarcophilus harrisii;Sorex araneus;Sus scrofa;Taeniopygia guttata;Takifugu rubripes;Tetraodon nigroviridis;Tupaia belangeri;Tursiops truncatus;Vicugna pacos;Xenopus tropicalis;Xiphophorus maculatus

然后,根据物种名,编写下载数据库文件的脚本(每个物种下载4个数据文件)并批量下载数据。

$ mkdir /opt/biosoft/AnimalTFDB3.0
$ cd /opt/biosoft/AnimalTFDB3.0

生成文件species.list,包含97个物种名,每行一个物种名。根据http://bioinfo.life.hust.edu.cn/AnimalTFDB/#!/download网>页中的信息,使用vim编辑和perl单行命令抓取全部的物种名信息。
$ perl -p -i -e 's/;/\n/g;' species.txt

$ mkdir data_of_97_species
$ cd data_of_97_species
$ perl -e 'while (<>) { chomp; s/\s+/_/g; print "wget http://bioinfo.life.hust.edu.cn/static/AnimalTFDB3/download/$_\_TF_protein.fa\nwget http://bioinfo.life.hust.edu.cn/static/AnimalTFDB3/download/$_\_Cof_protein.fa\nwget http://bioinfo.life.hust.edu.cn/static/AnimalTFDB3/download/$_\_TF\nwget http://bioinfo.life.hust.edu.cn/static/AnimalTFDB3/download/$_\_TF_cofactors\n"; }' ../species.list > download.list
$ ParaFly -c download.list -CPU 2

Caenorhabditis_elegans的FASTA文件有问题,存在序列名一致的多条序列,推荐进行修改。
$ perl -p -i -e 's/>(\S+)\t(\S+)/>$2\t$1/' data_of_97_species/Caenorhabditis_elegans_*_protein.fa
$ cd ..

分别合并转录因子数据库和转录辅助因子数据库的FASTA文件。

得到转录因子序列数据库,FASTA文件头部仅包含序列名和基因家族信息。
$ cat data_of_97_species/*TF_protein.fa > AnimalTFDB3.0_TF_protein.fasta
$ perl -p -i -e 's/^(>\S+)\t.*?\t.*?\t/$1\t/' AnimalTFDB3.0_TF_protein.fasta


得到转录辅助因子数据库,FASTA文件头部仅包含序列名和基因家族信息。
$ cat data_of_97_species/*_Cof_protein.fa > AnimalTFDB3.0_Cof_protein.fasta
由于Cof_protein.fa文件中不包含转录辅助因子基因家族信息,需要编写程序读取TF_cofactors文件信息并将基因家族信息写入FASTA文件
$ perl -e 'while (<>) { @_ = split /\t/; $gf{$_[2]} = $_[3]; } open IN, "AnimalTFDB3.0_Cof_protein.fasta"; while (<IN>) { if (m/^>(\S+)\t(\S+)/) { if (exists $gf{$1}) {print ">$1\t$gf{$1}\n";} elsif (exists $gf{$2}) {print ">$2\t$gf{$2}\n";} else {print STDERR "No type: $_\n";} } else { print; } }' data_of_97_species/*_TF_cofactors > aa; mv aa AnimalTFDB3.0_Cof_protein.fasta

3. 使用DIAMOND将数据库所有蛋白和数据库自身进行比对,计算每个基因家族的BLAST阈值

使用ALL_VS_ALL的方式分别对转录因子数据库和转录辅助因子数据库进行DIAMOND比对(evalue 1e-5、identity 30%且coverage 30%)。根据DIAMOND比对结果,得到每个转录因子家族中每个基因的比对信息(evalue、hitNum),编写程序进而计算每个基因家族的BLAST阈值。

$ diamond --in AnimalTFDB3.0_TF_protein.fasta --db AnimalTFDB3.0_TF_protein
$ diamond blastp --db AnimalTFDB3.0_TF_protein --query AnimalTFDB3.0_TF_protein.fasta --out TF.tab --outfmt 6 --sensitive --max-target-seqs 50000 --evalue 1e-5 --id 30 --subject-cover 30 --block-size 20.0 --tmpdir /dev/shm --index-chunks 1

编写程序geneFamily_BLAST_threshold_of_sensitivity.pl,输入DIAMOND结果文件和数据库FASTA文件,得到各个sensitivity级别上每个基因家族的evalue和hitNum阈值。

4. 将全基因组蛋白序列和数据库进行比对,再根据阈值文件进行准确注释。

使用FALCON对三代测序数据进行基因组组装

1. FALCON软件简介

FALCON是PacBio公司开发的一款用于三代基因组De novo组装软件。相比于HGAP4软件,FALCON软件的基因组组装原理基本一致。但FALCON使用命令行运行,更适合于大基因组的组装,且能分析双倍体序列,并在基因组组装结果中给出包含变异位点信息的等位基因序列(alternative contigs / a-contigs)和主要的基因组序列(primary contig / p-contig)。每一条a-contig都有其对应的p-contig序列。因此,FALCON软件适合双倍体物种的基因组组装,能给出单倍的基因序列。其基因组组装结果中的p-contigs序列总长度要小于其它基因组组装软件(例如Canu和HGAP)的基因组序列。

FALCON-Unzip则是真正的单倍型组装软件,它能在FALCON或HGAP4软件的基因组组装结果基础上,利用较长的PacBio reads进行单倍型分析,对p-contigs序列向单倍型进行转换,同时输出单倍型序列(haplotig)区块。

2. FALCON软件下载与安装

FALCON软件在2018年在算法上有了较大的更改,将FALCON在内的多个软件整合到了pb-assembly软件(https://github.com/PacificBiosciences/pb-assembly)中。同时提供快捷的bioconda安装方法:

$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sh Miniconda3-latest-Linux-x86_64.sh
    进入交互式界面:首先,输入yes,按Enter键,表示同意软件的license;然后,输入conda程序安装路径/opt/biosoft/miniconda3_for_pb-assembly,按enter键; 再设置是否添加Minicoda3到PATH变量,直接按Enter键,表示选择no,以免和系统自带的软件冲突。若需要切换到miniconda3环境,输入命令export PATH=/opt/biosoft/miniconda3_for_pb-assembly/bin:$PATH即可。
$ export PATH=/opt/biosoft/miniconda3_for_pb-assembly/bin:$PATH
$ conda config --add channels defaults
$ conda config --add channels bioconda
$ conda config --add channels conda-forge
    配置bioconda channel(https://bioconda.github.io/index.html)
$ conda install pb-assembly
    安装pb-assembly软件
$ source activate /opt/biosoft/miniconda3_for_pb-assembly
    激活FALCON软件的运行环境

3. FALCON软件的使用

FALCON软件运行示例:

首先,载入FALCON软件的运行环境。

然后,准备三种输入文件:测序数据FASTA格式文件、包含测序数据文件路径的FOFN列表文件、程序运行的参数配置文件。下载基因组大小为4.6Mb的E. coli基因组PacBio测序数据。
$ curl -L https://downloads.pacbcloud.com/public/data/git-sym/ecoli.m140913_050931_42139\
_c100713652400000001823152404301535_s1_p0.subreads.tar | tar xvf -
$ ls */ecoli.?.fasta > input.fofn
$ wget https://pb-falcon.readthedocs.io/en/latest/_downloads/fc_run_ecoli_local.cfg
当使用最新版的FALCON进行组装时,需要对此配置文件进行一些修改。

最后,对E. coli基因组进行组装
$ fc_run.py fc_run_ecoli_local.cfg

生成的最终主要结果文件为 2-asm-falcon/p_ctg.fa 。

运行FALCON最关键的步骤是准备配置文件fc_run.cfg。一个配置文件示例及其参数讲解如下:

[General]
输入参数:
input_fofn = input.fofn
设置数据输入文件为input.fofn,该文本文件中每行是一个PacBio测序数据的FASTA文件路径。可以使用相对路径。
input_type = raw
设置输入数据类型为原始测序数据(raw),或者为修正后的数据(preads)。

对数据进行分块:
pa_DBsplit_option = -x500 –s200
设置预组装(pre-assembly)过程中对raw reads数据进行分块的参数。这些参数会传递给Dbsplit命令来执行数据分块。
-s<int>    default: 200
表示每份数据含有50Mb的数据量,该参数默认值为200。默认参数情况下,使用daligner进行比对需要消耗约16G内存。推荐设置该参数的值为预测的基因组大小。此外,软件作者推荐对小于10Mb的基因组设置该参数值为50,对于大基因组设置该参数值为200。
-x<int>
忽略长度小于指定阈值的reads。
ovlp_DBsplit_option=-x500 –s200
设置OLC组装过程中对preads数据进行分块的参数。

对重复序列进行屏蔽:
pa_HPCTANmask_option = -k18 -h480 -w8 -e.80
设置在预组装过程对串联重复进行屏蔽的参数。其参数会传递给HPC.TANmask命令。该命令是正常daligner命令的一个变种,适合对串联重复序列进行比对。
pa_HPCREPmask_option = -k18 -h480 -w8 -e.80
设置在预组装过程对散在重复进行屏蔽的参数。其参数会传递给HPC.REPmask命令。该分析步骤会迭代3次。HPC.TANmask命令进行数据分析时有两个关键参数-g和-c,用于设置分析的数据块数量和覆盖度阈值。pa_REPmask_code设置3次迭代过程中这两个参数的值。这两个参数值的设置与数据分块方法和测序数据量有关。
pa_REPmask_code = 1,666;4,266;8,53
设置三次HPC.REPmask命令中的-g和-c参数的值。以上参数值则表示不对散在重复进行屏蔽。该参数的设置可以参考网址https://dazzlerblog.wordpress.com/2016/04/01/detecting-and-soft-masking-repeats/。在该文章中,作者给出了一个示例:对30Gb的基因组测序30x并将数据分割成3600个大小为250Mb的数据块,使用参数值“1,20;10,15;100,10”。每个数据块的测序深度为0.008x,对1个数据块的数据进行比对后,对reads中覆盖度超过20x的位点进行屏蔽,即对高度重复(20 / 0.008 = 2500x)的基因组序列位点进行屏蔽;然后第二次迭代中,对10个数据块的数据进行比对,对reads中覆盖度超过15x的位点进行屏蔽,即对中度重复(15 / 0.08 = 187.5x)的基因组序列位点进行屏蔽;最后第三次迭代中,对100个数据块的数据进行比对,对reads中覆盖度超过10x的位点进行屏蔽,即对低度重复(10 / 0.8 = 12.5x)的基因组序列位点进行屏蔽。示例中基因组大小是30Gb,超级大,一般含有大量重复序列,使用上述参数对数据中的重复位点进行屏蔽。
对于常规的基因组组装,设置pa_REPmask_code参数后,在三次迭代过程中,推荐逐步对重复次数为1000x、100x和10x的序列位点进行屏蔽。例如:对300Mb大小的基因组测序100x,将数据分割成150个大小为200Mb的数据块,可以考虑设置pa_REPmask_code值为“1,666;4,266;8,53”。
ovlp_HPCTANmask_option = -k20 -h480 -w8 -e.80
设置在OLC组装过程对串联重复进行屏蔽的参数。其参数会传递给HPC.TANmask命令。

预组装(pre-assembly)参数:
length_cutoff = -1
设置对种子序列的长度筛选阈值。若该参数值设置为-1,则程序自动计算种子序列的长度筛选阈值,根据如下两个参数挑选最长的reads序列作为种子序列,直到其数据量达到基因组指定覆盖度为止。
genome_size = 4652500
seed_coverage = 30
设置基因组大小和种子序列覆盖度。推荐设置seed_coverage参数的值为20~40x。当然是用更多的种子序列有利于基因组的组装效果,但是会消耗更多运行时间。
pa_daligner_option = -k14 -w6 -h35 -e.70 -l1000
在新版本FALCON中该参数额外再分出了pa_HPCdaligner_option参数,专门用于对数据块的分配。pa_daligner_option参数专门用于调用daligner软件对raw reads进行比对,进行overlap分析。其常用参数:
-k<int>    default: 14
设置k-mer大小。推荐设置为14~18。设置较低的值,能提高sensitivity,得到更多的reads重叠结果,但增加磁盘、内存、计算和时间消耗,适合数据质量较差的情况;设置较高的值,能提高specificity,系统资源消耗更少,运行速度更快,仅适合数据质量较高的情况。
-w<int>    default: 6
daligner命令对两个reads进行比对,得到一个斜对角线的比对带。该带的宽度设置为2的w次方。
-h<int>    default: 35
在斜对角线带的比对区域上,需要至少有指定数目的碱基能被k-mers覆盖。-k、-w和-h是daligner命令进行比对的主要参数。默认设置下,寻找两两reads之间重叠,先将reads分割成长度为14bp的k-mers序列;对其中一条序列宽度为64bp的区域进行分析,要求至少有35个碱基位点能和被另外一条序列的k-mers覆盖,则找到重叠。
-k、-w和-h的默认参数适合于PacBio测序的raw reads。对于修正后的read,推荐使用参数“daligner -k20 -h60 -e.95”。
-e<float>    default: 0.70
设置identity阈值。推荐设置为0.70~0.80。设置为较高的值有利于单倍型序列的组装。
-l<int>    default: 1000
忽略长度小于低于设定值的reads。
-T<int>    default: 4
设置每个daligner使用的CPU线程数。
-M<int>
尝试仅使用指定大小GB的内存。程序通过忽略覆盖度过高的k-mers来降低内存使用。一般情况下,对
pa_HPCdaligner_option = -v -B4 -M16
程序调用HPC.daligner进行分析,相比于daligner命令,其增加的常用参数:
-v
将-v参数传递给LAsort和LAmerge命令。
-B<int>    default: 4
设置每个daligner任务对指定数目的数据块进行分析。在最新版本的FALCON中,该参数不能再设置到pa_daligner_option参数中,否则程序运行出错。
falcon_sense_option = --output-multi --min-idt 0.70 --min-cov 4 --max-n-read 200
FALCON使用fc_consensus命令根据daligner进行Overlapping分析的结果进行一致性分析,从而对种子序列进行校正。常用参数:
--output-multi
输出每个种子序列多个修正后的区域。
--min-cov    default: 6
设置当种子序列上某位点覆盖度低于指定阈值时,则在该位点对序列打断或截短。
--min-cov-aln    default: 10
设置当种子序列的平均覆盖度低于指定阈值时,过滤掉该序列。
--min-n-read    default: 10
--max-n-read    default: 500
对覆盖度在--min_n_read和--max_n_read两个参数设定范围内的位点进行一致性分析,从而对种子序列进行校正。
--min-idt    default: 0.7
设置比对结果中reads重叠部分的最小identity阈值。
--n-core    default: 24
设置运行的线程数,默认值是24。
falcon_sense_greedy = False
falcon_sense_skip_contained = False

OLC算法进行组装的参数:
length_cutoff_pr = 12000
对预组装结果中长度超过此阈值的reads使用OLC算法进行下一步组装。
ovlp_HPCdaligner_option = -v -B4 -M16
ovlp_daligner_option = -k20 -w6 -h60 -e.96 -l1000
调用daligner对校正后的preads进行overlapping分析时,参数相对要设置更加严格。
-k<int>    default: 14
对preads进行比对,推荐该参数的值为18~24。
-e<float>    default: 0.70
对preads进行比对,推荐该参数的值为0.93~0.96。
overlap_filtering_setting = --max-diff 100 --max-cov 100 --min-cov 2 --bestn 10
过滤overlaps。若reads首尾两端的覆盖度比平均覆盖度大很多,则表明reads首尾是重复序列;若reads首尾两端的覆盖度比平均覆盖度相差较小很多,则表明reads首尾出现错误的可能性很大。需要过滤掉这种reads的overlaps结果。
--bestn    default: 10
设置报告reads此数目的最优overlaps。
--min-cov和—max-cov
所允许的reads首尾的覆盖度范围。
--max-diff
设置所允许的首尾覆盖度值的最大差异。
fc_ovlp_to_graph_option = --min_len 4000 --min_idt 0.96

任务投递与计算资源消耗参数:
[job.defaults]
job_type = local
设置任务提交方式。local表示使用本地主机运行FALCON,运行相对稳定。也可以设置为集群任务提交方式,可以设置的值有:sge、lsf、pbs、torque和slurm。该参数设置不同的值,后面的submit也要设置对应的信息。
pwatcher_type=blocking
submit = bash -C ${CMD} >| ${STDOUT_FILE} 2>| ${STDERR_FILE}
MB=32768
NPROC=6
njobs=32
FALCON软件流程对数据进行了切割,再进行并行化运算,加快程序运行速度。MB设置任务实用的内存数;NPROC设置单个任务的CPU线程数;njobs设置并行任务数。后续分别对每个流程中的计算资源进行分配。da表示预组装过程中运行的daligner命令;la表示预组装过程中运行的Lasort和LAmerge命令;cns表示预组装过程中运行的fc_consensus命令;pda表示运行OLC组装过程中运行的的daligner命令;pla表示OLC组装过程中运行的Lasort和LAmerge命令;asm表示最终组装过程。
[job.step.da]
NPROC=4
MB=32768
njobs=240
[job.step.la]
NPROC=4
MB=32768
njobs=240
[job.step.cns]
NPROC=8
MB=65536
njobs=240
[job.step.pda]
NPROC=4
MB=32768
njobs=240
[job.step.pla]
NPROC=4
MB=32768
njobs=240
[job.step.asm]
NPROC=24
MB=196608
njobs=1

FALCON的结果文件:

0-rawreads/
该目录存放对raw subreads进行overlpping分析与校正的结果;
0-rawreads/cns-runs/cns_*/*/*.fasta存放校正后的序列信息。

1-preads_ovl/
该目录存放对校正后reads进行overlapping的结果;

2-asm-falcon/
该目录是最终结果目录,主要的结果文件是p_ctg.fa和a_ctg.fa。