1个不稳定版本
0.1.4 | 2021年8月11日 |
---|
#168 in 生物学
380KB
6K SLoC
PPGG:使用图形处理卡(GPU)进行个性化蛋白质组生成
项目目标
通过使用图形处理单元(GPU)加速从变异调用格式(VCF)文件和参考蛋白质组生成个性化蛋白质组。
执行逻辑和需求
输入需求
- 包含转录ID作为序列标识符和每个转录的蛋白质序列的参考fasta文件,例如,
>TRANS_ID
TRANS_SEQ_LINE1
TRANS_SEQ_LINE2
>TRANS_ID
TRANS_SEQ_LINE1
.
.
.
即解析器期望“>”和“\n”之间的每个字符都是转录名称。另外,请确保文件中使用的ID与VCF文件中的ID相同。否则,程序将无法正常工作。
- 包含研究中观察到的变异的VCF文件。VCF文件应由BCF/csq生成,因为PPGG已针对解码其位掩码和解析其后果字段进行了优化。文件还应为相变和flat-VCF格式,而不是BCF格式。
注意
-
唯一的例外是当使用Python包装器时,它会直接与BCF tabix索引文件一起工作。
-
您可以使用以下命令将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的执行逻辑可以分为以下主要步骤
-
读取并解析文件,文件作为UTF-8编码的字符串读取,提取患者姓名并过滤记录,只包含支持蛋白质编码效果的记录进入下一步。当前突变支持的变异列表可在文件list_supported_alterations.tsv中找到。
-
一旦VCF记录被过滤,位掩码将被解码并与后果突变组合,生成一个映射表,将每位患者与其在两个患者的单倍型中观察到的突变集合相关联。
-
对于每位患者,突变按转录本ID分组,即所有发生在特定转录本上的突变将被合并在一起。
-
对于每个突变集合,突变将被转换为指令,在此阶段将检查突变是否存在逻辑错误,例如突变吞噬,其中一种突变是另一种突变的子集,或者多重注释,其中同一位置的注释包含多个突变。此外,语义等价,即两个突变在遗传水平上不同但在蛋白质水平上等效,导致蛋白质水平的变异定义更小、更一致。如果遇到任何逻辑错误,将打印警告消息到标准输出描述符,并过滤掉转录本。最后,解释指令并生成序列转录本的简单表示,内部表示为任务向量。
-
将每个转录本编码为任务后,将所有转录本端到端连接,生成一个描述单倍型中所有序列生成的任务向量。
-
接下来,使用后端引擎执行任务并生成序列,例如,该引擎可以是CPU线程的集合或GPU上的执行流。
-
最后,使用写线程池将文件结果写入桌面。
用法
该工具需要两个必需的输入,第一个是包含后果调用的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使用的环境变量列表
-
DEBUG_GPU => 检查输入到GPU的数组是否被检查索引错误,如果发生索引错误,将打印完整输入表,并且第一个索引错误的行的索引也将打印到标准输出描述符。
-
DEBUG_CPU_EXEC => 检查提供给输入CPU执行引擎的任务向量,如果发生索引错误,将打印完整输入表,并且第一个索引错误的行的索引也将打印到标准输出描述符。
-
DEBUG_TXP="Transcript_ID" => 该标志导出用于调试的转录本ID,当转录本ID正在创建时,不同的信息将被记录到输出描述符。
-
INSPECT_TXP => 如果设置,在每个转录本被翻译成指令后,将调用一个检查函数来检查翻译的正确性。如果翻译失败,代码将崩溃,并将错误信息打印到输出描述符。
-
INSPECT_INS_GEN => 检查从突变到指令的翻译过程,截至版本0.1.3,检查了两种逻辑错误:首先,多个注释,在蛋白质骨架的同一位置观察到多个突变,或者通过突变重叠和吞噬,其中两个突变在长度上重叠,例如,在位置60处插入7个氨基酸,然后是位置64处的错义突变。
-
PANIC_INSPECT_ERR => 如果设置,在检查从突变到指令的翻译失败时,代码将崩溃。这是对默认行为的覆盖,其中将生成错误消息并将其打印到输出流。
从源代码进行编译
CPU版本
注意
编译以下代码将生成仅CPU版本,这意味着如果指定GPU作为引擎,即参数-g设置为gpu,代码将崩溃。
-
从官方网站安装Rust
-
克隆当前仓库
git clone https://github.com/ikmb/ppg
- 更改方向为ppg
cd ppg
- 切换到仅CPU分支
git checkout cpu-only
- 构建项目
cargo build --release
- 从目标目录访问二进制可执行文件
cd target/release
./ppg -h # This print the help statement
- 将二进制文件添加到您的PATH
GPU版本
以下GPU代码仅与CUDA和NVIDIA GPU兼容
-
从官方网站安装Rust
-
克隆当前仓库或使用项目GitHub页面下载源代码
git clone https://github.com/ikmb/ppg
- 更改方向为ppg
cd ppg
-
请确保以下环境变量已设置:CUDA_HOME和LD_LIBRARY_PATH。请根据您的系统设置这些变量的值。
-
使用任何文本编辑器并更新以下信息,位于根目录的构建脚本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
- 构建项目
cargo build --release
- 从目标目录访问二进制可执行文件
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,“基因、环境和炎症”)资助
依赖关系
~7MB
~126K SLoC