vcf-validator, 使用C++11实现的变体调用格式( VCF ) 文件的验证套件

分享于 

10分钟阅读

GitHub

  繁體 雙語
Validator for VCF implemented using C++11
  • 源代码名称:vcf-validator
  • 源代码网址:http://www.github.com/EBIvariation/vcf-validator
  • vcf-validator源代码文档
  • vcf-validator源代码下载
  • Git URL:
    git://www.github.com/EBIvariation/vcf-validator.git
    Git Clone代码到本地:
    git clone http://www.github.com/EBIvariation/vcf-validator
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/EBIvariation/vcf-validator
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    vcf验证器 Build Status

    使用C++11实现的变体调用格式( VCF )的验证器。

    它包括vcftools套件的所有检查,还有一些涉及VCF输入的词汇。句法和语义分析的更多内容。 如果发现任何不一致性,则将它们按以下类别之一分类:

    • 错误:VCF规范违反
    • 警告:( 用逗号代替冒号来分割 id ) 或者建议发生异常事件的指示不遵循( 缺少元数据)

    请阅读维基以获得有关已经实现的检查的详细信息。

    下载

    我们建议使用最新版本的release validator,以使用vcf验证程序最稳定的体验。 除了发行说明,你还可以找到可以执行的vcf_validatorvcf_debugulator,这将允许你验证和修复VCF文件。

    运行

    验证器

    VCF验证器只需要一个非压缩输入VCF文件运行,尽管管道可以用于压缩文件( 请参见下面)。 它按以下方式接受输入:

    • 文件路径为参数:vcf_validator -i/path/to/file.vcf
    • 标准输入: vcf_validator </path/to/file.vcf
    • 管道的标准输入: zcat/path/to/file.vcf.gz | vcf_validator

    验证级别可以使用 -l/--level 配置。 这里参数是可选的,可以接受 3个值:

    • 错误:只显示语法错误
    • 警告:显示语法和语义,同时显示错误和警告( 默认)
    • 停止:在发现第一个语法错误后停止

    可以使用 -r/--report 选项编写不同类型的验证报告。 可以在同一执行中指定多个,使用逗号分隔每个类型( 没有空格,比如: -r summary,database,text )。

    • 摘要:将可以读的摘要报告写入文件。 这包括每种类型的错误和出现的次数以及第一行显示错误的第一行( 默认值)。
    • 文本:向文件写入一个可以读的报表,它的中包含一个有错误的每个rtc行的描述行。
    • 数据库:将结构化报表写入数据库文件。 使用的数据库引擎是 SQLite3,因此可以手动检查结果,但它们是供其他应用程序使用的。

    每个报告都写入自己的文件中,并以输入文件命名,后面是时间戳。 默认输出目录与使用 -i 提供的文件或者当前目录相同,如果使用标准输入,则可以更改 -o/--outdir

    Debugulator

    有一些简单的错误可以自动修正。 最常见的错误是存在重复的变量。 所需参数是原始的of,以及由vcf_validator的先前运行的报表与选项 -r database 一起生成的报表。

    将被写入标准输出,你可以重定向到一个文件,或者使用 -o/--output 选项并指定所需的文件名。

    关于debugulator正在做什么的日志将被写入错误输出。 日志可能被重定向到日志文件 2>debugulator_log.txt 或者完全丢弃的2>/dev/null

    示例

    简单示例:vcf_validator -i/path/to/file.vcf

    完整示例: vcf_validator -i/path/to/file.vcf -l stop -r database,stdout -o/path/to/output/folder/

    Debugulator示例:

    
    vcf_validator -i/path/to/file.vcf -r database -o/path/to/write/report/
    
    
    vcf_debugulator -i/path/to/file.vcf -e/path/to/write/report/vcf.errors.timestamp.db -o/path/to/fixed.vcf 2>debugulator_log.txt
    
    
    
    

    static 构建( 基于 docker )

    构建vcf验证器最简单的方法是使用源代码提供的Docker 映像。 这将创建可以在任何Linux机器中运行的可执行文件。

    • 安装和配置 Docker 按照的教程进行操作。
    • 创建 Docker 映像:
    • 克隆这个Git仓库: git clone https://github.com/EBIvariation/vcf-validator.git
    • 移动到下载代码的文件夹: cd vcf-validator
    • 生成映像: docker build -t ebivariation/vcf-validator docker/ 如果你计划将这里图像推送到 Docker-Hub,请将 ebivariation 替换为你的用户帐户。
    • 生成运行的可执行文件 docker run -v ${PWD}:/tmp ebivariation/vcf-validator 如果需要,请将 ebivariation 替换为你的用户 NAME。

    将在 build/bin 子文件夹中创建以下可执行文件:

    • vcf_validator: 验证工具
    • vcf_debugulator: 自动修复工具
    • test_validator 和导数:测试上面列出的工具的正确行为

    动态构建

    注意:如果你只想使用应用程序,请忽略这一节。

    最终用户生成在开发过程中非常有效,可以生成一个 static 二进制文件。 如果你想生成动态链接的二进制文件,请按照以下说明操作。

    依赖项

    升压

    依赖关系是Boost库内核及其子模块: boost。program_options。boost。Boost.regex, Boost.log 和 Boost.system。 如果你使用的是 Ubuntu,那么需要的软件包名将是 libboost-devlibboost-filesystem-devlibboost-program-options-devlibboost-regex-devlibboost-log-dev

    你将需要下载ODB编译器,ODB公共运行时库和SQLite数据库运行时库,这是一个。

    ODB需要安装 SQLite3。 如果你使用的是 Ubuntu,那么需要的软件包名将是 libsqlite3-0libsqlite3-dev

    为了安装 with,最简单的方法是下载 .deb 或者 .rpm 软件包,以便自动安装 dpkg。 ODB运行时和SQLite数据库运行时库都可以手动运行 ./configure && make && sudo make install 这将在 /usr/local/lib 中安装库。

    如果你没有 root 权限,请运行 ./configure --prefix=/path/to/odb/libraries/folder 要指定要安装的文件夹,请执行以下操作: make && make install ,没有 sudo

    编译

    已经在以下编译器上对生成进行了测试:

    • Clang 3.5至 3.7
    • GCC 4.8至 5.0

    为了创建构建脚本,请使用你的首选生成器运行 cmake。 例如, cmake -G"Unix Makefiles" 将创建生成文件,并且要生成二进制文件,你需要运行 make。 如果在构建过程中没有找到ODB库,请运行 sudo updatedb && sudo ldconfig

    对于需要 static 链接的用户,必须向 cmake 命令提供选项 -DBUILD_STATIC=1。 此外,如果在非默认位置安装了 ODB,则该选项 -DODB_PATH=/path/to/odb/libraries/folder 必须同时提供给 cmake 命令。

    无论如何,将在 bin 子文件夹中创建以下二进制文件:

    • vcf_validator: 验证工具
    • vcf_debugulator: 自动修复工具
    • test_validator 和导数:测试上面列出的工具的正确行为

    测试

    单元测试可以使用二进制 bin/test_validator 运行,如果生成器支持它,则可以使用 make test 之类的命令。 第一个选项可能在测试失败时提供更详细的输出。

    英镑注释:需要输入文件的测试只有在使用 make test 执行或者从项目 根目录 ( 不是 bin 子文件夹) 运行二进制文件时才会运行。

    从描述符生成代码

    从描述符生成的代码在GitHub存储库中应该总是 up-to-date。 如果需要更改源描述符,请使用以下命令从 .ragel 文件生成Ragel计算机C 代码:

    
    ragel -G2 src/vcf/vcf_v41.ragel -o inc/vcf/validator_detail_v41.hpp
    
    
    ragel -G2 src/vcf/vcf_v42.ragel -o inc/vcf/validator_detail_v42.hpp
    
    
    ragel -G2 src/vcf/vcf_v43.ragel -o inc/vcf/validator_detail_v43.hpp
    
    
    
    

    来自类定义的完整odb代码使用:

    
    odb --include-prefix vcf --std c++11 -d sqlite --generate-query --generate-schema --hxx-suffix. hpp --ixx-suffix. ipp --cxx-suffix. cpp --output-dir inc/vcf/inc/vcf/error.hpp
    
    
    mv inc/vcf/error-odb.cpp src/vcf/error-odb.cpp
    
    
    
    

    文件  IMP  for  files  form  CAL  
    相关文章