在发布前检查你的fasta数据库是否正常。
db-check的Python项目详细描述
正常检查快速数据库
fasta数据库很容易损坏,我们需要一个简单的工具 重复检查数据库中没有未预料到的条目。
此工具将检查:
- 具有相同ID的重复条目
- 具有不同ID但具有重叠序列的条目(即,100%重叠,或一个序列完全包含在另一个序列中)
- 或者,它将尝试解析fasta头上有意义的类别或标签(例如st等位基因数),并确保完全或部分重叠的序列具有不同的标签。
工具输出:
- 发送任何潜在问题的
stderr
日志。 - 直接到
stdout
的降价报告。然后,您可以将其添加到github中,或将其作为github问题发布,或通过pandoc
将其转换为您喜欢的任何支持格式(例如,您的论文的pdf格式)。 - 可选地,由
CD-HIT
生成的输出文件
完全和/或部分重叠序列是什么意思?
在引擎盖下,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配方
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配方