Unverified Commit c105d9b5 authored by Stig's avatar Stig Committed by GitHub
Browse files

vep: init at 110 (#283317)

parents abe4b94d f7dea420
Loading
Loading
Loading
Loading
+134 −0
Original line number Diff line number Diff line
# 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;
  };
}