在发布前检查你的fasta数据库是否正常。

db-check的Python项目详细描述


正常检查快速数据库

fasta数据库很容易损坏,我们需要一个简单的工具 重复检查数据库中没有未预料到的条目。

此工具将检查:

  1. 具有相同ID的重复条目
  2. 具有不同ID但具有重叠序列的条目(即,100%重叠,或一个序列完全包含在另一个序列中)
  3. 或者,它将尝试解析fasta头上有意义的类别或标签(例如st等位基因数),并确保完全或部分重叠的序列具有不同的标签。

工具输出:

  1. 发送任何潜在问题的stderr日志。
  2. 直接到stdout的降价报告。然后,您可以将其添加到github中,或将其作为github问题发布,或通过pandoc将其转换为您喜欢的任何支持格式(例如,您的论文的pdf格式)。
  3. 可选地,由CD-HIT
  4. 生成的输出文件

完全和/或部分重叠序列是什么意思?

在引擎盖下,db-check正在运行CD-HIT(特别是cd-hit-est)。在这里,db-check运行cd-hit-est来标识具有100%标识和100%覆盖率(即,具有所有相同的基并且完全相同的长度,因此是相同的)的任何序列,或者一个序列与另一个序列完全相同,但它更短(即,一个序列完全包含在另一个序列中)。第一种情况是我们称之为completely overlapping,第二种情况是我们称之为partially overlapping

显然,这两种情况都不理想。completely overlapping的情况意味着您的数据库有多余的序列,应该删除。如果您有两个相同的序列,但它们被标识为不同的类别,则可能会特别有问题。

对于partially overlapping序列的情况,不太清楚它是否是一个问题。我们已经看到新的mlst等位基因作为已经建立的等位基因的精确子集被添加到一个方案中的情况。在这种情况下,结果发现新的等位基因是由于装配中的断裂引起的,因此根本不是新的等位基因。然而,在某些情况下,部分重叠的序列可能是真实的(例如,表示真实的删除或插入),您确实希望将其保留在数据库中。如果是这种情况,则必须对爆炸过滤步骤应用其他逻辑,以确保获得正确的变体。

不管你的情况如何,希望这个工具能帮助你快速评估你的fasta数据库,并在发布之前意识到任何内部问题。或者,如果你是一个fasta db的用户,并且你得到了有趣的结果,希望这个工具可以帮助你解决这个db的问题,并将他们可能遇到的任何问题传递给开发人员。

依赖关系

  • CD-HIT
  • Python >=3.6

可选,pandoc

安装

条件

conda -c bioconda cd-hit
pip3 install db-check

啤酒

brew install cd-hit
pip3 install db-check

note:我发现macosx mojave机器上的brew install失败,因为瓶装版本是用不同的头集编译的。我通过强制它从源代码安装来修复它,比如这样:

brew uninstall cd-hit
brew install -s cd-hit

运行

db-check <db.fasta> > report.md

运行示例

db-check --example

从序列id

解析类别

使用--delimiter--field

在某些情况下,您的类别使用特定的分隔符(例如,|~~)在序列id中编码,并且一旦id沿着此分隔符拆分,感兴趣的字段可能是第二个(--field 1-1),因为它是0索引的,或者可能是最后一个(--field -1)。

例如,假设您的id使用以下模式编码:>seq1~~catA。在这种情况下,您可以执行以下操作:

db-check --delimiter "~~" --field -1 /path/to/db

使用--regex

在某些情况下,您的类别可能以一种更复杂的方式编码,并且带有捕获组的regex表达式可能会工作。美国东部时间。因此,上述情况可以用以下等式进行分析:

db-check --regex ".*~~(.*)" /path/to/db

使用callback函数

implementation挂起

命令行选项
Usage: db-check [OPTIONS] FASTA

  Check a FASTA DB for potential issues.

Options:
  -d, --delimiter TEXT   When parsing a category from seqid, split on this
                         delimiter (use -1 for last element, -2 for second to
                         last, etc.).
  -f, --field INTEGER    When parsing a category from seqid using a delimiter,
                         keep this field number (0-index).
  -r, --regex TEXT       When parsing a category from seqid extract using this
                         regex.
  -a, --author TEXT      Who is running the check. (default: $USER)
  -n, --db_name TEXT     Name of the Database. (default: filename)
  -t, --threads INTEGER  How many threads to give CD-HIT (default: 1)
  -p, --prefix TEXT      Prefix of output files from CD-HIT (default: cdhit)
  -k, --keep_files       Whether to keep CD-HIT output files (default: False)
  --example              Run an example set
  --version              Show the version and exit.
  -h, --help             Show this message and exit.

使用pandoc将输出转换为其他格式的示例

转换为HTML

db-check --example | pandoc --from markdown --to html5 > report.html

转换为pdf

db-check --example | pandoc --from markdown --to latex -o report.pdf

转换为纯文本

db-check --example | pandoc --from markdown --to plain > report.txt

待办事项

  • 添加康达配方
  • 添加酿造配方
  • 添加travisci配方

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

推荐PyPI第三方库


热门话题
java如何在表被注释到配置之前获取表的元数据?   java滚动条不会出现在JList上   java JOGL监视器GPU内存   java为什么要使用RecyclerView onDraw延迟   java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件)   java自定义线程池执行器   java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]?   java如何使用Bukkit API触发事件?   java在blazemeter jmeter RTE插件中使用ctrl+w输入   C#/Visual Studio的java JDT等价物   java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费?   java游戏2。x:包含模板列表的绑定模型   带压缩的java日志旋转   运行时。exec用java运行程序读取它正在做什么