#生物信息学 #蛋白质组学 #遗传 #命令行工具 #vcf文件

bin+lib ppgg

一个库和一个相关的可执行文件,该库提供了构建工具的功能,这些工具可以解析和操作VCF和FASTA文件,而相关的可执行文件是一个命令行工具,用于从参考FASTA文件和VCF文件生成蛋白质序列

1个不稳定版本

0.1.4 2021年8月11日

#168 in 生物学

MIT/Apache

380KB
6K SLoC

IKMB_LOGO

PPGG:使用图形处理卡(GPU)进行个性化蛋白质组生成

项目目标

通过使用图形处理单元(GPU)加速从变异调用格式(VCF)文件和参考蛋白质组生成个性化蛋白质组。

执行逻辑和需求

输入需求

  1. 包含转录ID作为序列标识符和每个转录的蛋白质序列的参考fasta文件,例如,
>TRANS_ID
TRANS_SEQ_LINE1
TRANS_SEQ_LINE2 
>TRANS_ID
TRANS_SEQ_LINE1
.
.
.

即解析器期望“>”和“\n”之间的每个字符都是转录名称。另外,请确保文件中使用的ID与VCF文件中的ID相同。否则,程序将无法正常工作。

  1. 包含研究中观察到的变异的VCF文件。VCF文件应由BCF/csq生成,因为PPGG已针对解码其位掩码和解析其后果字段进行了优化。文件还应为相变和flat-VCF格式,而不是BCF格式。

注意

  1. 唯一的例外是当使用Python包装器时,它会直接与BCF tabix索引文件一起工作。

  2. 您可以使用以下命令将BCF文件解码为VCF

bcftools view PATH_TO_BCF -O v -o PATH_TO_VCF

硬件需求

GPU版本

PPGG的GPU版本期望系统在开发过程中可访问Nvidia-GPU,我们在开发过程中使用了Tesla V100 SXM2 32GB。

CPU版本

期望具有足够大的RAM以在内存中保留整个文件的现代多核CPU,在开发过程中使用了具有512 GB RAM的双核英特尔Xeon CPU。

软件需求

代码的GPU版本可以在具有可用的NVCC编译器和Nvidia GPU的Linux系统上编译。

代码的CPU版本可以在具有Cargo的Linux和Mac OS系统上编译。

执行逻辑

PPGG的执行逻辑可以分为以下主要步骤

  1. 读取并解析文件,文件作为UTF-8编码的字符串读取,提取患者姓名并过滤记录,只包含支持蛋白质编码效果的记录进入下一步。当前突变支持的变异列表可在文件list_supported_alterations.tsv中找到。

  2. 一旦VCF记录被过滤,位掩码将被解码并与后果突变组合,生成一个映射表,将每位患者与其在两个患者的单倍型中观察到的突变集合相关联。

  3. 对于每位患者,突变按转录本ID分组,即所有发生在特定转录本上的突变将被合并在一起。

  4. 对于每个突变集合,突变将被转换为指令,在此阶段将检查突变是否存在逻辑错误,例如突变吞噬,其中一种突变是另一种突变的子集,或者多重注释,其中同一位置的注释包含多个突变。此外,语义等价,即两个突变在遗传水平上不同但在蛋白质水平上等效,导致蛋白质水平的变异定义更小、更一致。如果遇到任何逻辑错误,将打印警告消息到标准输出描述符,并过滤掉转录本。最后,解释指令并生成序列转录本的简单表示,内部表示为任务向量。

  5. 将每个转录本编码为任务后,将所有转录本端到端连接,生成一个描述单倍型中所有序列生成的任务向量。

  6. 接下来,使用后端引擎执行任务并生成序列,例如,该引擎可以是CPU线程的集合或GPU上的执行流。

  7. 最后,使用写线程池将文件结果写入桌面。

用法

该工具需要两个必需的输入,第一个是包含后果调用的VCF文件,第二个是包含参考序列的FASTA文件。

示例

克隆项目

git clone https://github.com/ikmb/ppg

请注意,git通常预安装在大多数Mac OS和Linux系统上。如果您的系统上没有git,您可以从这里安装它 这里

更改目录到ppg

cd ppg 

请注意,在调用git之后,在git被调用的目录中会创建一个名为ppg的目录。

ppg已安装吗?

为了跟进,请确保系统上已安装并可用执行文件ppg,且位于您的PATH上。如果没有安装,请查看下面的安装指南。

导出环境变量

让我们检查GPU数组、指令生成和任务数组

export DEBUG_GPU=TRUE
export INSPECT_TXP=TRUE
export INSPECT_INS_GEN=TRUE

有关导出值的更多详细信息,请参阅下面的环境变量部分

创建一个新目录以存储结果
mkdir results 
使用生成的数据调用PPG
ppg -f examples/example_file.vcf -r examples/References_sequences.fasta -vs -g st -o results

其中o标志确定fasta文件的路径,s指导程序写入统计信息,v用于打印日志语句。

环境变量

PPG还大量使用环境变量来自定义其行为,下面是PPG使用的环境变量列表

  1. DEBUG_GPU => 检查输入到GPU的数组是否被检查索引错误,如果发生索引错误,将打印完整输入表,并且第一个索引错误的行的索引也将打印到标准输出描述符。

  2. DEBUG_CPU_EXEC => 检查提供给输入CPU执行引擎的任务向量,如果发生索引错误,将打印完整输入表,并且第一个索引错误的行的索引也将打印到标准输出描述符。

  3. DEBUG_TXP="Transcript_ID" => 该标志导出用于调试的转录本ID,当转录本ID正在创建时,不同的信息将被记录到输出描述符。

  4. INSPECT_TXP => 如果设置,在每个转录本被翻译成指令后,将调用一个检查函数来检查翻译的正确性。如果翻译失败,代码将崩溃,并将错误信息打印到输出描述符。

  5. INSPECT_INS_GEN => 检查从突变到指令的翻译过程,截至版本0.1.3,检查了两种逻辑错误:首先,多个注释,在蛋白质骨架的同一位置观察到多个突变,或者通过突变重叠和吞噬,其中两个突变在长度上重叠,例如,在位置60处插入7个氨基酸,然后是位置64处的错义突变。

  6. PANIC_INSPECT_ERR => 如果设置,在检查从突变到指令的翻译失败时,代码将崩溃。这是对默认行为的覆盖,其中将生成错误消息并将其打印到输出流。

从源代码进行编译

CPU版本

注意

编译以下代码将生成仅CPU版本,这意味着如果指定GPU作为引擎,即参数-g设置为gpu,代码将崩溃。

  1. 官方网站安装Rust

  2. 克隆当前仓库

git clone https://github.com/ikmb/ppg
  1. 更改方向为ppg
cd ppg
  1. 切换到仅CPU分支
git checkout cpu-only
  1. 构建项目
cargo build --release 
  1. 从目标目录访问二进制可执行文件
cd target/release
./ppg -h # This print the help statement 
  1. 将二进制文件添加到您的PATH

GPU版本

以下GPU代码仅与CUDA和NVIDIA GPU兼容

  1. 官方网站安装Rust

  2. 克隆当前仓库或使用项目GitHub页面下载源代码

git clone https://github.com/ikmb/ppg
  1. 更改方向为ppg
cd ppg
  1. 请确保以下环境变量已设置:CUDA_HOME和LD_LIBRARY_PATH。请根据您的系统设置这些变量的值。

  2. 使用任何文本编辑器并更新以下信息,位于根目录的构建脚本build.rs,以下是第8行

    println!("cargo:rustc-link-search=native=/opt/cuda/11.0/lib64/"); // 8th line in the current version
    println!("cargo:rustc-link-search=native=/path two cuda lib64 directory"); // 8th line in the updated version
  1. 构建项目
cargo build --release 
  1. 从目标目录访问二进制可执行文件
cd target/release
./ppg -h # This print the help statement 

故障排除

问题

加载共享库时出错:libcudart.so.11.0:无法打开共享对象文件:没有找到该文件或目录

解决方案

如果两个环境变量CUDA_HOME和LD_LIBRARY_PATH之一未定义或设置,则可能会遇到此问题。为了永久性解决方案,请更新您的.bashrc以导出这两个变量。

联系

对于进一步的问题,请在此处打开一个问题或通过电子邮件向开发者发送电子邮件至[email protected]或通过twitter @HeshamElAbd16

资助

该项目由德国研究基金会(DFG)(研究培训组1743,“基因、环境和炎症”)资助

IKMB_LOGO

依赖关系

~7MB
~126K SLoC