175 lines
4.9 KiB
Nix
175 lines
4.9 KiB
Nix
{ lib
|
|
, pythonOlder
|
|
, buildPythonPackage
|
|
, fetchFromGitHub
|
|
, cvxpy
|
|
, dlx
|
|
, docplex
|
|
, fastdtw
|
|
, h5py
|
|
, networkx
|
|
, numpy
|
|
, psutil
|
|
, python
|
|
, qiskit-ignis
|
|
, qiskit-terra
|
|
, quandl
|
|
, scikitlearn
|
|
, yfinance
|
|
# Optional inputs
|
|
, withTorch ? false
|
|
, pytorch
|
|
, withPyscf ? false
|
|
, pyscf ? null
|
|
, withScikitQuant ? false
|
|
, scikit-quant ? null
|
|
, withCplex ? false
|
|
, cplex ? null
|
|
# Check Inputs
|
|
, ddt
|
|
, pytestCheckHook
|
|
, pytest-timeout
|
|
, qiskit-aer
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "qiskit-aqua";
|
|
version = "0.8.1";
|
|
|
|
disabled = pythonOlder "3.6";
|
|
|
|
# Pypi's tarball doesn't contain tests
|
|
src = fetchFromGitHub {
|
|
owner = "Qiskit";
|
|
repo = "qiskit-aqua";
|
|
rev = version;
|
|
sha256 = "11qyya3vyq50wpzrzzl8v46yx5p72rhpqhybwn47qgazxgg82r1b";
|
|
};
|
|
|
|
# Optional packages: pyscf (see below NOTE) & pytorch. Can install via pip/nix if needed.
|
|
propagatedBuildInputs = [
|
|
cvxpy
|
|
docplex
|
|
dlx # Python Dancing Links package
|
|
fastdtw
|
|
h5py
|
|
networkx
|
|
numpy
|
|
psutil
|
|
qiskit-terra
|
|
qiskit-ignis
|
|
quandl
|
|
scikitlearn
|
|
yfinance
|
|
] ++ lib.optionals (withTorch) [ pytorch ]
|
|
++ lib.optionals (withPyscf) [ pyscf ]
|
|
++ lib.optionals (withScikitQuant) [ scikit-quant ]
|
|
++ lib.optionals (withCplex) [ cplex ];
|
|
|
|
# *** NOTE ***
|
|
# We make pyscf optional in this package, due to difficulties packaging it in Nix (test failures, complicated flags, etc).
|
|
# See nixpkgs#78772, nixpkgs#83447. You are welcome to try to package it yourself,
|
|
# or use the Nix User Repository version (https://github.com/drewrisinger/nur-packages).
|
|
# It can also be installed at runtime from the pip wheel.
|
|
# We disable appropriate tests below to allow building without pyscf installed
|
|
|
|
# NOTE: we remove cplex b/c we can't build pythonPackages.cplex.
|
|
# cplex is only distributed in manylinux1 wheel (no source), and Nix python is not manylinux1 compatible
|
|
|
|
postPatch = ''
|
|
substituteInPlace setup.py \
|
|
--replace "pyscf; sys_platform != 'win32'" "" \
|
|
--replace "cplex; python_version >= '3.6' and python_version < '3.8'" ""
|
|
|
|
# Add ImportWarning when running qiskit.chemistry (pyscf is a chemistry package) that pyscf is not included
|
|
echo -e "\nimport warnings\ntry: import pyscf;\nexcept ImportError:\n " \
|
|
"warnings.warn('pyscf is not supported on Nixpkgs so some qiskit features will fail." \
|
|
"You must install it yourself via pip or add it to your environment from the Nix User Repository." \
|
|
"See https://github.com/NixOS/nixpkgs/pull/83447 for details', ImportWarning)\n" \
|
|
>> qiskit/chemistry/__init__.py
|
|
|
|
# Add ImportWarning when running qiskit.optimization that cplex (optimization package) is not included
|
|
echo -e "\nimport warnings\ntry: import cplex;\nexcept ImportError:\n " \
|
|
"warnings.warn('cplex is not supported on Nixpkgs so some qiskit features will fail." \
|
|
"You must install it yourself via pip or add it to your environment from the Nix User Repository." \
|
|
"', ImportWarning)\n" \
|
|
>> qiskit/optimization/__init__.py
|
|
'';
|
|
|
|
postInstall = "rm -rf $out/${python.sitePackages}/docs"; # Remove docs dir b/c it can cause conflicts.
|
|
|
|
checkInputs = [
|
|
pytestCheckHook
|
|
ddt
|
|
pytest-timeout
|
|
qiskit-aer
|
|
];
|
|
pythonImportsCheck = [
|
|
"qiskit.aqua"
|
|
"qiskit.aqua.algorithms"
|
|
"qiskit.chemistry"
|
|
"qiskit.finance"
|
|
"qiskit.ml"
|
|
"qiskit.optimization"
|
|
];
|
|
pytestFlagsArray = [
|
|
"--timeout=30"
|
|
"--durations=10"
|
|
] ++ lib.optionals (!withPyscf) [
|
|
"--ignore=test/chemistry/test_qeom_ee.py"
|
|
"--ignore=test/chemistry/test_qeom_vqe.py"
|
|
"--ignore=test/chemistry/test_vqe_uccsd_adapt.py"
|
|
"--ignore=test/chemistry/test_bopes_sampler.py"
|
|
];
|
|
disabledTests = [
|
|
# Disabled due to missing pyscf
|
|
"test_validate" # test/chemistry/test_inputparser.py
|
|
|
|
# Online tests
|
|
"test_exchangedata"
|
|
"test_yahoo"
|
|
|
|
# Disabling slow tests > 10 seconds
|
|
"TestVQE"
|
|
"TestOOVQE"
|
|
"TestVQC"
|
|
"TestQSVM"
|
|
"TestOptimizerAQGD"
|
|
"test_graph_partition_vqe"
|
|
"TestLookupRotation"
|
|
"_vqe"
|
|
"TestHHL"
|
|
"TestQGAN"
|
|
"test_evaluate_qasm_mode"
|
|
"test_measurement_error_mitigation_auto_refresh"
|
|
"test_wikipedia"
|
|
"test_shor_factoring_1__15___qasm_simulator____3__5__"
|
|
"test_readme_sample"
|
|
"test_ecev"
|
|
"test_expected_value"
|
|
"test_qubo_gas_int_paper_example"
|
|
"test_shor_no_factors_1_5"
|
|
"test_shor_no_factors_2_7"
|
|
"test_evolve_2___suzuki___1__3_"
|
|
"test_delta"
|
|
"test_swaprz"
|
|
"test_deprecated_algo_result"
|
|
"test_unsorted_grouping"
|
|
"test_ad_hoc_data"
|
|
"test_nft"
|
|
"test_oh"
|
|
"test_confidence_intervals_00001"
|
|
"test_eoh"
|
|
"test_qasm_5"
|
|
"test_uccsd_hf"
|
|
];
|
|
|
|
meta = with lib; {
|
|
description = "An extensible library of quantum computing algorithms";
|
|
homepage = "https://github.com/QISKit/qiskit-aqua";
|
|
changelog = "https://qiskit.org/documentation/release_notes.html";
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ drewrisinger ];
|
|
};
|
|
}
|