From f7dea4207ff0e479268dbd3b29bb265414135fec Mon Sep 17 00:00:00 2001 From: Alexis Praga Date: Tue, 23 Jan 2024 22:34:49 +0100 Subject: [PATCH] vep: init at 110 Version number use Ensembl major version. --- pkgs/by-name/ve/vep/package.nix | 134 ++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 pkgs/by-name/ve/vep/package.nix diff --git a/pkgs/by-name/ve/vep/package.nix b/pkgs/by-name/ve/vep/package.nix new file mode 100644 index 000000000000..576b4c9b35fb --- /dev/null +++ b/pkgs/by-name/ve/vep/package.nix @@ -0,0 +1,134 @@ +# Instructions:http://www.ensembl.org/info/docs/api/api_installation.html, +# Do not use https://github.com/Ensembl/ensembl-vep/archive/release/${version}.zip +# We cannot use INSTALL.pl but it’s not that bad:install the dependencies and copies the .pm files should be ok +{ + lib, + htslib, + perlPackages, + stdenv, + fetchFromGitHub, + perl, + makeWrapper, +}: + +let + version = "110"; + customInstallPhase = '' + mkdir -p $out/${perl.libPrefix}/${perl.version}/ + tests=$(find modules/ -mindepth 1 -maxdepth 1 -type d | grep -v t) + cp -r $tests $out/${perl.libPrefix}/${perl.version}/ + ''; + + ensemblGit = + name: sha256: + # Copy modules directly + stdenv.mkDerivation { + inherit name version; + src = fetchFromGitHub { + inherit sha256 version; + owner = "Ensembl"; + repo = name; + rev = "release/${version}"; + }; + installPhase = '' + runHook preInstall + + ${customInstallPhase} + + runHook postInstall''; + }; + + vepPlugins = fetchFromGitHub { + owner = "Ensembl"; + repo = "VEP_plugins"; + rev = "8f271c4848338dc7d504881ff71fdf2892c3d096"; + sha256 = "sha256-LbaXwLFDP3m1QhRHwO9uh36BEFHE2NzL4xdxTb7/S5Q="; + }; + + # Install ensembl-xs, faster run using re-implementation in C of some of the Perl subroutines + ensembl-xs = perlPackages.buildPerlPackage rec { + pname = "ensembl-xs"; + version = "2.3.2"; + src = fetchFromGitHub { + inherit version; + owner = "Ensembl"; + repo = "ensembl-xs"; + rev = version; + sha256 = "1qqnski532f4bz32wxbqd9w1sz40rjh81ipp9p02k3rlaf1gp1fa"; + }; + # PREFIX is important + configurePhase = '' + perl Makefile.PL PREFIX=$out INSTALLDIRS=site + ''; + # Test do not work -- wrong include path + doCheck = false; + }; + + # it contains compiled versions of certain key subroutines used in VEP + ensembl = ensemblGit "ensembl" "sha256-ZhI4VNxIY+53RX2uYRNlFeo/ydAmlwGx00WDXaxv6h4="; + ensembl-io = ensemblGit "ensembl-io" "sha256-r3RvN5U2kcyghoKM0XuiBRe54t1U4FaZ0QEeYIFiG0w="; + ensembl-variation = ensemblGit "ensembl-variation" "sha256-UjrLHF9EqI+Mp+SZR4sLNZUCGiA/UYhoFWtpwiKF8tM="; + ensembl-funcgen = ensemblGit "ensembl-funcgen" "sha256-a9hxLBoXJsF5JWuRdpyOac1u033M8ivEjEQecuncghs="; +in +perlPackages.buildPerlModule rec { + inherit version; + pname = "vep"; + buildInputs = + (with perlPackages; [ + ArchiveZip + BioBigFile + BioDBHTS + BioExtAlign + BioPerl + DBI + DBDmysql + LWP + JSON + ]) + ++ [ + ensembl-xs + ensembl + ensembl-funcgen + ensembl-io + ensembl-variation + ]; + propagatedBuildInputs = [ htslib ]; + src = fetchFromGitHub { + owner = "Ensembl"; + repo = "ensembl-${pname}"; + rev = "release/${version}"; + sha256 = "sha256-6lRdWV2ispl+mpBhkZez/d9PxOw1fkNUWeG8mUIqBJc="; + }; + + nativeBuildInputs = [ makeWrapper ]; + dontBuild = true; + doCheck = false; + + outputs = [ "out" ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + install -D -m755 filter_vep vep $out/bin/ + + wrapProgram $out/bin/vep \ + --prefix PERL5LIB : $out/${perl.libPrefix}/${perl.version}/ \ + --add-flags "--dir_plugins ${vepPlugins}" + + wrapProgram $out/bin/filter_vep \ + --prefix PERL5LIB : $out/${perl.libPrefix}/${perl.version}/ + ${customInstallPhase} + + runHook postInstall + ''; + + meta = { + homepage = "https://www.ensembl.org/info/docs/tools/vep/index.html"; + description = "Annotate genetics variants based on genes, transcripts, and protein sequence, as well as regulatory regions"; + license = lib.licenses.asl20; + mainProgram = "vep"; + maintainers = with lib.maintainers; [ apraga ]; + platforms = lib.platforms.unix; + }; +}