使用pfam结构域将dna或蛋白质分类到分类结构域
domain-classifier的Python项目详细描述
域分类器-使用pfam域将序列分类到其分类域
安装
pip安装域分类器
如何使用
输入通常是一个dna fasta序列,它将被翻译成蛋白质,并搜索pfam结构域。这些结构域将用于将每个序列分为四个结构域之一:细菌、真核生物、古细菌和病毒。其主要思想是让用户在不知道参考基因组的地方容易发现污染。由于蛋白质结构域在上述分类结构域之间具有高度的区别(绑架宿主基因的病毒除外),因此这种区别是相当容易的。
首先,您必须从pfam ftp服务器下载数据:
module load diamond
build_domains_DB.py -d <database_dir>
如果没有安装diamond或者不希望使用diamond进行域预测(这很好),可以添加--nodiamond
。
现在使用一个fasta文件并运行分类器,您需要为中间步骤定义两个文件:一个用于翻译的蛋白质序列,另一个用于hmmsearch结果。输出将写入标准输出:
# You'll need hmmer and EMBOSS loaded
module load hmmer emboss
predict_domain.py -d <database_dir> -i input.fna -t input.faa -b input.hmm > output_table.txt
这个脚本做了一些有趣的事情,比如连接所有的蛋白质序列,并且为每个序列只选择100个蛋白质。当然,这些都是为了节省运行时间,你可以使用--limit [int]
标记来改变蛋白质的数量,我发现这与我测试的序列无关。
其他选项是--diamond
,它将使用diamond而不是hmmsearch来查找域,除非您拥有众所周知的序列,否则不建议使用。--threads
使用另一个线程数(默认值为20)、--getorf
和--hmmsearch
定义压印getorf和hmmer hmmsearch的其他路径。
--pseudocounts
允许您向naive bayes分类器初始计数(在域中找到的基因组数)引入更多伪计数,以在结果中引入一些不确定性,默认值为1(只是为了避免日志为零)。
输出
输出表将包含最大A-后部(MAP),这是最有可能的域和四个域中的每一个的对数概率,非归一化。您可以使用一些过滤的最小数量的域或最大域和次优之间的差异。
过滤Kraken2数据库
第一步是运行下载的kraken2数据库的每个library.fna文件。下一步是将脚本filter_kraken_db.py
与输入的fna文件和表一起使用,以获取与其分类域匹配的记录。运行:
filter_kraken_db.py --dbfile <taxonomy.sqlite> --taxonomy <kraken_db/taxonomy> <input.fna> <output_table.txt>
脚本将在由{{CD9>}给出的文件中生成一个SqLITE3数据库,如果文件不存在,如果省略,它将被写在内存中。^ {CD10}}标志是KRAKE2数据库DIR下的分类目录,如果存在{{CD9}},则可以省略。必须满足某些条件才能筛选序列:
- 至少找到记录的
--mindomains
(默认5) <> LI>记录的TIDID与预测域不符
- 映射域和第二个最佳映射域的区别是
--midiff
(默认情况下为1)
如果没有预测或预测不符合条件,则记录将写入输出(输出到标准输出)
?2019杰克逊实验室