biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / science / math / ripser / default.nix
blob83cf6bc51aa405eda471397dcb34561b62b5ee7c
1 { lib, stdenv, fetchFromGitHub
2 , useCoefficients ? false
3 , indicateProgress ? false
4 , useGoogleHashmap ? false, sparsehash ? null
5 , fileFormat ? "lowerTriangularCsv"
6 }:
8 with lib;
10 assert assertOneOf "fileFormat" fileFormat
11   ["lowerTriangularCsv" "upperTriangularCsv" "dipha"];
12 assert useGoogleHashmap -> sparsehash != null;
14 let
15   inherit (lib) optional;
16   version = "1.2.1";
18 stdenv.mkDerivation {
19   pname = "ripser";
20   inherit version;
22   src = fetchFromGitHub {
23     owner = "Ripser";
24     repo = "ripser";
25     rev = "v${version}";
26     sha256 = "sha256-BxmkPQ/nl5cF+xwQMTjXnLgkLgdmT/39y7Kzl2wDfpE=";
27   };
29   buildInputs = optional useGoogleHashmap sparsehash;
31   buildFlags = [
32     "-std=c++11"
33     "-O3"
34     "-D NDEBUG"
35   ]
36   ++ optional useCoefficients "-D USE_COEFFICIENTS"
37   ++ optional indicateProgress "-D INDICATE_PROGRESS"
38   ++ optional useGoogleHashmap "-D USE_GOOGLE_HASHMAP"
39   ++ optional (fileFormat == "lowerTriangularCsv") "-D FILE_FORMAT_LOWER_TRIANGULAR_CSV"
40   ++ optional (fileFormat == "upperTriangularCsv") "-D FILE_FORMAT_UPPER_TRIANGULAR_CSV"
41   ++ optional (fileFormat == "dipha") "-D FILE_FORMAT_DIPHA"
42   ;
44   buildPhase = "c++ ripser.cpp -o ripser $buildFlags";
46   installPhase = ''
47     mkdir -p $out/bin
48     cp ripser $out/bin
49   '';
51   meta = {
52     description = "A lean C++ code for the computation of Vietoris–Rips persistence barcodes";
53     mainProgram = "ripser";
54     homepage = "https://github.com/Ripser/ripser";
55     license = lib.licenses.lgpl3;
56     maintainers = with lib.maintainers; [erikryb];
57     platforms = lib.platforms.linux;
58   };