使用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杰克逊实验室

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java gradle无法解析配置的任何依赖项:类路径   来自远程服务的java错误字符串解析   java如何在Tomcat之外运行TomcatSpring/Struts 2Quartz任务?   将Java字节转换为Perl   Java选项:返回值或执行某些操作并继续循环   java如何从对象中获取变量?   postgresql自动部署web服务java和glassfish服务器4.1.1?   使用泛型的java Resteasy重写方法   在另一个用户登录后显示上一个用户的java数据   JSP(Java):编码字节数组并在JavaScript中使用,与C中相同#   Java:如何知道jar在Linux中的位置   java模拟已标记为可访问的私有方法的返回值   java无法理解滚动窗格   java Spring Boot Starter Web依赖项提供缺少工件的错误   java从SQL表创建json文件,然后能够查询该文件   java线程时钟对象   Java实践编程问题   多线程Java GUI未更改   GL30库中不存在intellij idea GLGEnVertexArray()。(JAVA LWJGL)   二进制文件在java中编辑二进制文件