我按照文档中的说明安装了ensembl-vep:
cd $HOME/vep_data
curl -O https://ftp.ensembl.org/pub/release-110/variation/vep/homo_sapiens_vep_110_GRCh38.tar.gz
tar xzf homo_sapiens_vep_110_GRCh38.tar.gz
当我按如下方式运行程序时,即使文件确实存在,也会打印以下错误消息:
$ sudo docker run -v $HOME/vep_data:/data ensemblorg/ensembl-vep vep --cache --offline --format vcf --vcf --force_overwrite
--input_file input/1000123_23191_0_0.g.vcf --output_file output/my_output.vcf
-------------------- EXCEPTION --------------------
MSG: ERROR: File "input/1000123_23191_0_0.g.vcf" does not exist
STACK Bio::EnsEMBL::VEP::Parser::file /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Parser.pm:237
STACK Bio::EnsEMBL::VEP::Parser::new /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Parser.pm:131
STACK Bio::EnsEMBL::VEP::Runner::get_Parser /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Runner.pm:802
STACK Bio::EnsEMBL::VEP::Runner::get_InputBuffer /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Runner.pm:829
STACK Bio::EnsEMBL::VEP::Runner::init /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Runner.pm:136
STACK Bio::EnsEMBL::VEP::Runner::run /opt/vep/src/ensembl-vep/modules/Bio/EnsEMBL/VEP/Runner.pm:200
STACK toplevel /opt/vep/src/ensembl-vep/vep:46
Date (localtime) = Wed Aug 2 15:41:03 2023
Ensembl API version = 110
---------------------------------------------------
在您的 docker 容器中,您有一个完全不同的覆盖文件系统,因此
input/1000123_23191_0_0.g.vcf
在那里不存在。您需要首先使用 volumes
(-v
) 使容器中的每个目录或驱动器可用,就像处理下载的数据集一样:-v $HOME/vep_data:/data
一个选项是添加
-v $(pwd)/input:/input
以使容器内的所有内容都可用。
如果您的
-v
命令中有多个 docker run
参数,那完全没问题,只需确保它们位于 run
和使用的 docker-image 之间