From 8d8b52501e7379e610348f9901b7df9d0743c4c2 Mon Sep 17 00:00:00 2001 From: Stephan Rave Date: Mon, 13 Jul 2020 10:00:25 +0200 Subject: [PATCH 1/7] [demos] fix analyze pickle demo for recent numpy --- src/pymordemos/analyze_pickle.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pymordemos/analyze_pickle.py b/src/pymordemos/analyze_pickle.py index 12ccc42f1d..f576c524da 100755 --- a/src/pymordemos/analyze_pickle.py +++ b/src/pymordemos/analyze_pickle.py @@ -115,8 +115,8 @@ def analyze_pickle_histogram(args): axHisty = plt.axes(rect_histy) # scatter plot - total_min = min(min(ests), min(errs)) * 0.9 - total_max = max(max(ests), max(errs)) * 1.1 + total_min = min(np.min(ests), np.min(errs)) * 0.9 + total_max = max(np.max(ests), np.max(errs)) * 1.1 axScatter.set_xscale('log') axScatter.set_yscale('log') axScatter.set_xlim([total_min, total_max]) @@ -137,15 +137,15 @@ def analyze_pickle_histogram(args): axHisty.set_yticklabels([]) axHistx.set_xlim(axScatter.get_xlim()) axHisty.set_ylim(axScatter.get_ylim()) - axHistx.set_ylim([0, max(max(x_hist), max(y_hist))]) - axHisty.set_xlim([0, max(max(x_hist), max(y_hist))]) + axHistx.set_ylim([0, max(np.max(x_hist), np.max(y_hist))]) + axHisty.set_xlim([0, max(np.max(x_hist), np.max(y_hist))]) plt.show() elif hasattr(rom, 'estimate'): - total_min = min(ests) * 0.9 - total_max = max(ests) * 1.1 + total_min = np.min(ests) * 0.9 + total_max = np.max(ests) * 1.1 hist, bin_edges = np.histogram(ests, bins=_bins(total_min, total_max)) plt.bar(bin_edges[1:], hist, width=bin_edges[:-1] - bin_edges[1:], color='blue') @@ -157,8 +157,8 @@ def analyze_pickle_histogram(args): elif args['--detailed']: - total_min = min(ests) * 0.9 - total_max = max(ests) * 1.1 + total_min = np.min(ests) * 0.9 + total_max = np.max(ests) * 1.1 hist, bin_edges = np.histogram(errs, bins=_bins(total_min, total_max)) plt.bar(bin_edges[1:], hist, width=bin_edges[:-1] - bin_edges[1:], color='blue') From 1325fa4e2a8d200a1df111d108affdd3337be25b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fritze?= Date: Mon, 13 Jul 2020 18:49:10 +0200 Subject: [PATCH 2/7] [ci] bump images --- .binder/Dockerfile | 2 +- .ci/gitlab/ci.yml | 78 +++++++++++++++++++++++----------------------- .env | 4 +-- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.binder/Dockerfile b/.binder/Dockerfile index debdb0099f..711eaa8cdc 100644 --- a/.binder/Dockerfile +++ b/.binder/Dockerfile @@ -5,7 +5,7 @@ # the container, local dev needs it in path from mounted src # we trick docker into fulfilling both roles via a conditional ONBUILD # if you want to use the local dev setup, see docker/docker-compose.yml -ARG BASE=pymor/jupyter_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 +ARG BASE=pymor/jupyter_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 ARG BUILD_ENV=binder FROM $BASE as image_binder diff --git a/.ci/gitlab/ci.yml b/.ci/gitlab/ci.yml index ddaedaf249..32dfa1f25b 100644 --- a/.ci/gitlab/ci.yml +++ b/.ci/gitlab/ci.yml @@ -20,8 +20,8 @@ stages: except: - /^staging/.*$/i variables: - PYPI_MIRROR_TAG: b59ac79e36381fb509ec5a90cfaae5cec4be3a60 - CI_IMAGE_TAG: b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + PYPI_MIRROR_TAG: d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 + CI_IMAGE_TAG: d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 PYMOR_HYPOTHESIS_PROFILE: ci .pytest: @@ -139,7 +139,7 @@ stages: .sanity_checks: extends: .test_base - image: pymor/ci_sanity:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/ci_sanity:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 stage: sanity #******** end definition of base jobs *********************************************************************************# @@ -164,18 +164,18 @@ minimal_cpp_demo: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: ./.ci/gitlab/cpp_demo.bash mpi 3 6: extends: .pytest except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -191,9 +191,9 @@ mpi 3 7: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -209,9 +209,9 @@ mpi 3 8: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -227,9 +227,9 @@ notebooks_dir 3 6: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -245,9 +245,9 @@ notebooks_dir 3 7: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -263,9 +263,9 @@ notebooks_dir 3 8: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -281,9 +281,9 @@ pip_installed 3 6: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -299,9 +299,9 @@ pip_installed 3 7: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -317,9 +317,9 @@ pip_installed 3 8: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -335,9 +335,9 @@ vanilla 3 6: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -353,9 +353,9 @@ vanilla 3 7: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -371,9 +371,9 @@ vanilla 3 8: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -389,9 +389,9 @@ numpy_git 3 8: except: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -407,9 +407,9 @@ oldest 3 6: except: - schedules services: - - name: pymor/pypi-mirror_oldest_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_oldest_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: - | if [[ "$CI_COMMIT_REF_NAME" == *"github/"* ]]; then @@ -426,9 +426,9 @@ ci_weekly 3 6: only: - schedules services: - - name: pymor/pypi-mirror_stable_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.6:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.6:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: ./.ci/gitlab/test_vanilla.bash ci_weekly 3 7: @@ -437,9 +437,9 @@ ci_weekly 3 7: only: - schedules services: - - name: pymor/pypi-mirror_stable_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.7:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.7:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: ./.ci/gitlab/test_vanilla.bash ci_weekly 3 8: @@ -448,9 +448,9 @@ ci_weekly 3 8: only: - schedules services: - - name: pymor/pypi-mirror_stable_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + - name: pymor/pypi-mirror_stable_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 alias: pypi_mirror - image: pymor/testing_py3.8:b59ac79e36381fb509ec5a90cfaae5cec4be3a60 + image: pymor/testing_py3.8:d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 script: ./.ci/gitlab/test_vanilla.bash submit vanilla 3 6: diff --git a/.env b/.env index 6b799f4b1f..8856599608 100644 --- a/.env +++ b/.env @@ -2,6 +2,6 @@ DOCKER_BASE_PYTHON=3.7 PYMOR_TEST_SCRIPT=vanilla PYPI_MIRROR=stable PYMOR_TEST_OS=debian_buster -PYPI_MIRROR_TAG=b59ac79e36381fb509ec5a90cfaae5cec4be3a60 -CI_IMAGE_TAG=b59ac79e36381fb509ec5a90cfaae5cec4be3a60 +PYPI_MIRROR_TAG=d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 +CI_IMAGE_TAG=d4cc6ff37b42c8c36d1a4d533399d28fa6c5edb2 PYMOR_HYPOTHESIS_PROFILE=dev From ab9e6f02e233a11dd764652c47a73c857f360183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fritze?= Date: Fri, 10 Jul 2020 17:38:13 +0200 Subject: [PATCH 3/7] [tests] adjust hypothesis rnadom module usage --- src/pymortests/strategies.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pymortests/strategies.py b/src/pymortests/strategies.py index 23b4914744..9b5a44ce40 100644 --- a/src/pymortests/strategies.py +++ b/src/pymortests/strategies.py @@ -382,7 +382,7 @@ def base_vector_arrays(draw, count=1, dtype=None, max_dim=100): length = space.dim # this lets hypothesis control np's random state too - random = draw(hyst.randoms()) + random = draw(hyst.random_module()) # scipy performs this check although technically numpy accepts a different range assume(0 <= random.seed < 2**32 - 1) random_correlation = random_correlation_gen(random.seed) From 2e50560dccfb07e7da61095d04089e98ce282dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fritze?= Date: Tue, 14 Jul 2020 10:46:08 +0200 Subject: [PATCH 4/7] [ci] replace faulty from url pip install with extras --- .ci/gitlab/test_pip_installed.bash | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.ci/gitlab/test_pip_installed.bash b/.ci/gitlab/test_pip_installed.bash index ff3d8391ee..b1883ab9f9 100755 --- a/.ci/gitlab/test_pip_installed.bash +++ b/.ci/gitlab/test_pip_installed.bash @@ -12,7 +12,12 @@ PIP_CLONE_URL="git+${CI_PROJECT_URL}@${CI_COMMIT_SHA}" # source /tmp/venv/bin/activate pip install ${PIP_CLONE_URL} pip uninstall -y pymor -pip install ${PIP_CLONE_URL}#egg=pymor[full] + +# this is currently disabled because it erroneously pulls in pyqt5 +# pip install ${PIP_CLONE_URL}#egg=pymor[full] +# pip uninstall -y pymor + +pip install .[full] pip uninstall -y pymor # other requirements are installed from pymor[full] pip install -r requirements-ci.txt From 50bd56bfc61d78e9ef1c7cb257d49b2ff7dad89f Mon Sep 17 00:00:00 2001 From: Stephan Rave Date: Tue, 14 Jul 2020 16:18:57 +0200 Subject: [PATCH 5/7] [tests] fix tolerance in test_project_array --- src/pymortests/algorithms/basic.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pymortests/algorithms/basic.py b/src/pymortests/algorithms/basic.py index e85830f677..00c4614c26 100644 --- a/src/pymortests/algorithms/basic.py +++ b/src/pymortests/algorithms/basic.py @@ -196,14 +196,13 @@ def test_almost_equal_incompatible(vector_arrays): @given(pyst.base_vector_arrays(count=2)) @settings(deadline=None) -def test_project_array(bases): - U = bases[0][:-2] - basis = bases[1] +def test_project_array(arrays): + U, basis = arrays U_p = project_array(U, basis, orthonormal=False) onb = gram_schmidt(basis) U_p2 = project_array(U, onb, orthonormal=True) err = relative_error(U_p, U_p2) - tol = 3e-10 + tol = np.finfo(np.float64).eps * np.linalg.cond(basis.gramian()) * 100. assert np.all(err < tol) From e845641c246d6cffd21819cf579f86a4d84da701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fritze?= Date: Wed, 15 Jul 2020 18:44:22 +0200 Subject: [PATCH 6/7] [alogorithms] increase default rtol for pod --- src/pymor/algorithms/pod.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pymor/algorithms/pod.py b/src/pymor/algorithms/pod.py index f1163ec4ad..9f6d9dd53c 100644 --- a/src/pymor/algorithms/pod.py +++ b/src/pymor/algorithms/pod.py @@ -15,7 +15,7 @@ @defaults('rtol', 'atol', 'l2_err', 'method', 'orth_tol') -def pod(A, product=None, modes=None, rtol=4e-8, atol=0., l2_err=0., +def pod(A, product=None, modes=None, rtol=1e-7, atol=0., l2_err=0., method='method_of_snapshots', orth_tol=1e-10): """Proper orthogonal decomposition of `A`. From 119ae2ac4a0a6ace8761396c64325d58eb52799b Mon Sep 17 00:00:00 2001 From: Stephan Rave Date: Thu, 16 Jul 2020 09:58:09 +0200 Subject: [PATCH 7/7] [svd_va] also change method_of_snapshots default rtol to 1e-7 --- src/pymor/algorithms/svd_va.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pymor/algorithms/svd_va.py b/src/pymor/algorithms/svd_va.py index e0c89d42c3..d8e364358c 100644 --- a/src/pymor/algorithms/svd_va.py +++ b/src/pymor/algorithms/svd_va.py @@ -15,7 +15,7 @@ @defaults('rtol', 'atol', 'l2_err') -def method_of_snapshots(A, product=None, modes=None, rtol=4e-8, atol=0., l2_err=0.): +def method_of_snapshots(A, product=None, modes=None, rtol=1e-7, atol=0., l2_err=0.): """SVD of a |VectorArray| using the method of snapshots. Viewing the |VectorArray| `A` as a `A.dim` x `len(A)` matrix, the