Skip to content

Instantly share code, notes, and snippets.

@ivirshup
Created Jul 6, 2021
Embed
What would you like to do?
pynndescent 0.5.3 traceback
This file has been truncated, but you can view the full file.
2021-07-06T06:22:38.2855413Z ##[section]Starting: PyTest
2021-07-06T06:22:38.2865170Z ==============================================================================
2021-07-06T06:22:38.2865487Z Task : Command line
2021-07-06T06:22:38.2866717Z Description : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
2021-07-06T06:22:38.2867060Z Version : 2.182.0
2021-07-06T06:22:38.2867287Z Author : Microsoft Corporation
2021-07-06T06:22:38.2867638Z Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
2021-07-06T06:22:38.2868015Z ==============================================================================
2021-07-06T06:22:39.2961314Z Generating script.
2021-07-06T06:22:39.2962626Z Script contents:
2021-07-06T06:22:39.2963181Z pytest --color=yes -vv --ignore=scanpy/tests/_images
2021-07-06T06:22:39.2963596Z ========================== Starting Command Output ===========================
2021-07-06T06:22:39.2969626Z [command]/bin/bash --noprofile --norc /home/vsts/work/_temp/b25dde67-39d8-42f0-bee3-c1e8955b93b7.sh
2021-07-06T06:22:39.2970452Z ============================= test session starts ==============================
2021-07-06T06:22:39.2971524Z platform linux -- Python 3.7.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- /opt/hostedtoolcache/Python/3.7.10/x64/bin/python
2021-07-06T06:22:39.2972413Z cachedir: .pytest_cache
2021-07-06T06:22:39.2972804Z rootdir: /home/vsts/work/1/s, configfile: pyproject.toml, testpaths: scanpy/tests/
2021-07-06T06:22:39.2973378Z plugins: nunit-0.6.0, cov-2.12.1
2021-07-06T06:23:05.3033926Z collecting ... collected 738 items / 5 skipped / 733 selected
2021-07-06T06:23:05.3034476Z
2021-07-06T06:23:05.3072570Z scanpy/tests/test_binary.py::test_builtin_settings PASSED [ 0%]
2021-07-06T06:23:05.3161688Z scanpy/tests/test_binary.py::test_help_displayed[args0] PASSED [ 0%]
2021-07-06T06:23:05.3236124Z scanpy/tests/test_binary.py::test_help_displayed[args1] PASSED [ 0%]
2021-07-06T06:23:05.3318308Z scanpy/tests/test_binary.py::test_help_output PASSED [ 0%]
2021-07-06T06:23:05.3735651Z scanpy/tests/test_binary.py::test_external PASSED [ 0%]
2021-07-06T06:23:05.3824018Z scanpy/tests/test_binary.py::test_error_wrong_command PASSED [ 0%]
2021-07-06T06:23:05.4956274Z scanpy/tests/test_clustering.py::test_leiden_basic PASSED [ 0%]
2021-07-06T06:23:05.7027732Z scanpy/tests/test_clustering.py::test_clustering_subset[louvain-louvain] PASSED [ 1%]
2021-07-06T06:23:05.9399023Z scanpy/tests/test_clustering.py::test_clustering_subset[leiden-leiden] PASSED [ 1%]
2021-07-06T06:23:06.1076769Z scanpy/tests/test_clustering.py::test_louvain_basic PASSED [ 1%]
2021-07-06T06:23:06.2458265Z scanpy/tests/test_clustering.py::test_partition_type PASSED [ 1%]
2021-07-06T06:23:06.3040223Z scanpy/tests/test_combat.py::test_norm PASSED [ 1%]
2021-07-06T06:23:06.4429345Z scanpy/tests/test_combat.py::test_covariates PASSED [ 1%]
2021-07-06T06:23:06.5289639Z scanpy/tests/test_combat.py::test_combat_obs_names PASSED [ 1%]
2021-07-06T06:23:06.5938147Z scanpy/tests/test_combat.py::test_silhouette PASSED [ 2%]
2021-07-06T06:23:06.5953967Z scanpy/tests/test_datasets.py::test_burczynski06 SKIPPED (need --int...) [ 2%]
2021-07-06T06:23:06.5965967Z scanpy/tests/test_datasets.py::test_moignard15 SKIPPED (need --inter...) [ 2%]
2021-07-06T06:23:06.5980331Z scanpy/tests/test_datasets.py::test_paul15 SKIPPED (need --internet-...) [ 2%]
2021-07-06T06:23:06.5995304Z scanpy/tests/test_datasets.py::test_pbmc3k SKIPPED (need --internet-...) [ 2%]
2021-07-06T06:23:06.6007904Z scanpy/tests/test_datasets.py::test_pbmc3k_processed SKIPPED (need -...) [ 2%]
2021-07-06T06:23:06.6019566Z scanpy/tests/test_datasets.py::test_ebi_expression_atlas SKIPPED (ne...) [ 2%]
2021-07-06T06:23:06.6158465Z scanpy/tests/test_datasets.py::test_krumsiek11 PASSED [ 2%]
2021-07-06T06:23:06.6202976Z scanpy/tests/test_datasets.py::test_blobs PASSED [ 3%]
2021-07-06T06:23:06.6268438Z scanpy/tests/test_datasets.py::test_toggleswitch PASSED [ 3%]
2021-07-06T06:23:06.6995760Z scanpy/tests/test_datasets.py::test_pbmc68k_reduced PASSED [ 3%]
2021-07-06T06:23:06.7011365Z scanpy/tests/test_datasets.py::test_visium_datasets SKIPPED (need --...) [ 3%]
2021-07-06T06:23:06.8791516Z scanpy/tests/test_datasets.py::test_download_failure PASSED [ 3%]
2021-07-06T06:23:06.9527571Z scanpy/tests/test_dendrogram_key_added.py::test_dendrogram_key_added[None-bulk_labels] PASSED [ 3%]
2021-07-06T06:23:07.0300306Z scanpy/tests/test_dendrogram_key_added.py::test_dendrogram_key_added[None-groupby1] PASSED [ 3%]
2021-07-06T06:23:07.1078817Z scanpy/tests/test_dendrogram_key_added.py::test_dendrogram_key_added[custom_key-bulk_labels] PASSED [ 4%]
2021-07-06T06:23:07.1856053Z scanpy/tests/test_dendrogram_key_added.py::test_dendrogram_key_added[custom_key-groupby1] PASSED [ 4%]
2021-07-06T06:23:19.9170326Z scanpy/tests/test_deprecations.py::test_deprecate_multicore_tsne PASSED [ 4%]
2021-07-06T06:23:32.3000945Z scanpy/tests/test_embedding.py::test_tsne PASSED [ 4%]
2021-07-06T06:23:34.9191312Z scanpy/tests/test_embedding.py::test_tsne_metric_warning PASSED [ 4%]
2021-07-06T06:23:37.8077961Z scanpy/tests/test_embedding.py::test_umap_init_dtype PASSED [ 4%]
2021-07-06T06:23:37.8091599Z scanpy/tests/test_embedding.py::test_umap_init_paga[fa] SKIPPED (nee...) [ 4%]
2021-07-06T06:23:39.6475500Z scanpy/tests/test_embedding.py::test_umap_init_paga[fr] PASSED [ 5%]
2021-07-06T06:23:39.8287515Z scanpy/tests/test_embedding.py::test_diffmap PASSED [ 5%]
2021-07-06T06:23:39.8348199Z scanpy/tests/test_embedding_density.py::test_embedding_density PASSED [ 5%]
2021-07-06T06:23:40.0008681Z scanpy/tests/test_embedding_density.py::test_embedding_density_plot PASSED [ 5%]
2021-07-06T06:23:40.5797450Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.on_data-groups.3] PASSED [ 5%]
2021-07-06T06:23:40.8305936Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.on_data-groups.all] PASSED [ 5%]
2021-07-06T06:23:41.2704058Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.on_right-groups.3] PASSED [ 5%]
2021-07-06T06:23:42.3677061Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.on_right-groups.all] PASSED [ 5%]
2021-07-06T06:23:42.5898049Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.off-groups.3] PASSED [ 6%]
2021-07-06T06:23:42.7889499Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.True-legend.off-groups.all] PASSED [ 6%]
2021-07-06T06:23:43.0120341Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.on_data-groups.3] PASSED [ 6%]
2021-07-06T06:23:43.2653012Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.on_data-groups.all] PASSED [ 6%]
2021-07-06T06:23:43.6446714Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.on_right-groups.3] PASSED [ 6%]
2021-07-06T06:23:44.5355334Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.on_right-groups.all] PASSED [ 6%]
2021-07-06T06:23:44.7461705Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.off-groups.3] PASSED [ 6%]
2021-07-06T06:23:44.9479414Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.black_tup-na_in_legend.False-legend.off-groups.all] PASSED [ 7%]
2021-07-06T06:23:45.1802860Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.on_data-groups.3] PASSED [ 7%]
2021-07-06T06:23:45.4421974Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.on_data-groups.all] PASSED [ 7%]
2021-07-06T06:23:45.8901120Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.on_right-groups.3] PASSED [ 7%]
2021-07-06T06:23:46.7823242Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.on_right-groups.all] PASSED [ 7%]
2021-07-06T06:23:46.9884442Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.off-groups.3] PASSED [ 7%]
2021-07-06T06:23:47.2013229Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.True-legend.off-groups.all] PASSED [ 7%]
2021-07-06T06:23:47.4284050Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.on_data-groups.3] PASSED [ 7%]
2021-07-06T06:23:47.6781658Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.on_data-groups.all] PASSED [ 8%]
2021-07-06T06:23:48.2447460Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.on_right-groups.3] PASSED [ 8%]
2021-07-06T06:23:49.1296439Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.on_right-groups.all] PASSED [ 8%]
2021-07-06T06:23:49.3286170Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.off-groups.3] PASSED [ 8%]
2021-07-06T06:23:49.5080641Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[pca-na_color.default-na_in_legend.False-legend.off-groups.all] PASSED [ 8%]
2021-07-06T06:23:51.1409919Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.on_data-groups.3] PASSED [ 8%]
2021-07-06T06:23:52.8242729Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.on_data-groups.all] PASSED [ 8%]
2021-07-06T06:23:54.6963777Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.on_right-groups.3] PASSED [ 9%]
2021-07-06T06:23:56.8400930Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.on_right-groups.all] PASSED [ 9%]
2021-07-06T06:23:58.8067334Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.off-groups.3] PASSED [ 9%]
2021-07-06T06:24:00.1898061Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.True-legend.off-groups.all] PASSED [ 9%]
2021-07-06T06:24:01.8646197Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.on_data-groups.3] PASSED [ 9%]
2021-07-06T06:24:03.5453063Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.on_data-groups.all] PASSED [ 9%]
2021-07-06T06:24:05.3242581Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.on_right-groups.3] PASSED [ 9%]
2021-07-06T06:24:07.6102667Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.on_right-groups.all] PASSED [ 10%]
2021-07-06T06:24:09.2267391Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.off-groups.3] PASSED [ 10%]
2021-07-06T06:24:10.8088393Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.black_tup-na_in_legend.False-legend.off-groups.all] PASSED [ 10%]
2021-07-06T06:24:12.4506399Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.on_data-groups.3] PASSED [ 10%]
2021-07-06T06:24:14.1334803Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.on_data-groups.all] PASSED [ 10%]
2021-07-06T06:24:16.0620319Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.on_right-groups.3] PASSED [ 10%]
2021-07-06T06:24:18.4257715Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.on_right-groups.all] PASSED [ 10%]
2021-07-06T06:24:19.8953341Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.off-groups.3] PASSED [ 10%]
2021-07-06T06:24:21.5228346Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.True-legend.off-groups.all] PASSED [ 11%]
2021-07-06T06:24:23.1374936Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.on_data-groups.3] PASSED [ 11%]
2021-07-06T06:24:24.8003810Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.on_data-groups.all] PASSED [ 11%]
2021-07-06T06:24:26.5732928Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.on_right-groups.3] PASSED [ 11%]
2021-07-06T06:24:28.8660590Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.on_right-groups.all] PASSED [ 11%]
2021-07-06T06:24:30.4749190Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.off-groups.3] PASSED [ 11%]
2021-07-06T06:24:32.0994760Z scanpy/tests/test_embedding_plots.py::test_missing_values_categorical[spatial-na_color.default-na_in_legend.False-legend.off-groups.all] PASSED [ 11%]
2021-07-06T06:24:32.4129359Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_data-vbounds.default] PASSED [ 12%]
2021-07-06T06:24:32.7271240Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_data-vbounds.numbers] PASSED [ 12%]
2021-07-06T06:24:33.0724027Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_data-vbounds.percentile] PASSED [ 12%]
2021-07-06T06:24:33.3959358Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_data-vbounds.vcenter] PASSED [ 12%]
2021-07-06T06:24:33.7263988Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_data-vbounds.norm] PASSED [ 12%]
2021-07-06T06:24:34.0497766Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_right-vbounds.default] PASSED [ 12%]
2021-07-06T06:24:34.5626064Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_right-vbounds.numbers] PASSED [ 12%]
2021-07-06T06:24:34.9099138Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_right-vbounds.percentile] PASSED [ 13%]
2021-07-06T06:24:35.2257931Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_right-vbounds.vcenter] PASSED [ 13%]
2021-07-06T06:24:35.5449878Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.on_right-vbounds.norm] PASSED [ 13%]
2021-07-06T06:24:35.8630267Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.off-vbounds.default] PASSED [ 13%]
2021-07-06T06:24:36.1963671Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.off-vbounds.numbers] PASSED [ 13%]
2021-07-06T06:24:36.5379635Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.off-vbounds.percentile] PASSED [ 13%]
2021-07-06T06:24:36.8711753Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.off-vbounds.vcenter] PASSED [ 13%]
2021-07-06T06:24:37.1941031Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.black_tup-legend.off-vbounds.norm] PASSED [ 13%]
2021-07-06T06:24:37.5171601Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_data-vbounds.default] PASSED [ 14%]
2021-07-06T06:24:38.0485542Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_data-vbounds.numbers] PASSED [ 14%]
2021-07-06T06:24:38.4035682Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_data-vbounds.percentile] PASSED [ 14%]
2021-07-06T06:24:38.7171403Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_data-vbounds.vcenter] PASSED [ 14%]
2021-07-06T06:24:39.0521975Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_data-vbounds.norm] PASSED [ 14%]
2021-07-06T06:24:39.3652502Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_right-vbounds.default] PASSED [ 14%]
2021-07-06T06:24:39.6946386Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_right-vbounds.numbers] PASSED [ 14%]
2021-07-06T06:24:40.0325584Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_right-vbounds.percentile] PASSED [ 15%]
2021-07-06T06:24:40.3498967Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_right-vbounds.vcenter] PASSED [ 15%]
2021-07-06T06:24:40.6793702Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.on_right-vbounds.norm] PASSED [ 15%]
2021-07-06T06:24:41.1678228Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.off-vbounds.default] PASSED [ 15%]
2021-07-06T06:24:41.4753197Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.off-vbounds.numbers] PASSED [ 15%]
2021-07-06T06:24:41.8182447Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.off-vbounds.percentile] PASSED [ 15%]
2021-07-06T06:24:42.1366137Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.off-vbounds.vcenter] PASSED [ 15%]
2021-07-06T06:24:42.4600399Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[pca-na_color.default-legend.off-vbounds.norm] PASSED [ 15%]
2021-07-06T06:24:44.1701062Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_data-vbounds.default] PASSED [ 16%]
2021-07-06T06:24:45.9259395Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_data-vbounds.numbers] PASSED [ 16%]
2021-07-06T06:24:47.6797316Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_data-vbounds.percentile] PASSED [ 16%]
2021-07-06T06:24:49.3945637Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_data-vbounds.vcenter] PASSED [ 16%]
2021-07-06T06:24:51.1268745Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_data-vbounds.norm] PASSED [ 16%]
2021-07-06T06:24:52.8411580Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_right-vbounds.default] PASSED [ 16%]
2021-07-06T06:24:54.5995749Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_right-vbounds.numbers] PASSED [ 16%]
2021-07-06T06:24:56.4122887Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_right-vbounds.percentile] PASSED [ 17%]
2021-07-06T06:24:58.1723019Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_right-vbounds.vcenter] PASSED [ 17%]
2021-07-06T06:24:59.9124936Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.on_right-vbounds.norm] PASSED [ 17%]
2021-07-06T06:25:01.5166921Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.off-vbounds.default] PASSED [ 17%]
2021-07-06T06:25:03.3042597Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.off-vbounds.numbers] PASSED [ 17%]
2021-07-06T06:25:05.0941020Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.off-vbounds.percentile] PASSED [ 17%]
2021-07-06T06:25:06.8558915Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.off-vbounds.vcenter] PASSED [ 17%]
2021-07-06T06:25:08.6461276Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.black_tup-legend.off-vbounds.norm] PASSED [ 18%]
2021-07-06T06:25:10.4185321Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_data-vbounds.default] PASSED [ 18%]
2021-07-06T06:25:12.1931160Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_data-vbounds.numbers] PASSED [ 18%]
2021-07-06T06:25:13.9854339Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_data-vbounds.percentile] PASSED [ 18%]
2021-07-06T06:25:15.7307446Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_data-vbounds.vcenter] PASSED [ 18%]
2021-07-06T06:25:17.5111390Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_data-vbounds.norm] PASSED [ 18%]
2021-07-06T06:25:19.2273332Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_right-vbounds.default] PASSED [ 18%]
2021-07-06T06:25:20.9636890Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_right-vbounds.numbers] PASSED [ 18%]
2021-07-06T06:25:22.7258474Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_right-vbounds.percentile] PASSED [ 19%]
2021-07-06T06:25:24.4940220Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_right-vbounds.vcenter] PASSED [ 19%]
2021-07-06T06:25:26.2445940Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.on_right-vbounds.norm] PASSED [ 19%]
2021-07-06T06:25:27.9736009Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.off-vbounds.default] PASSED [ 19%]
2021-07-06T06:25:29.7538315Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.off-vbounds.numbers] PASSED [ 19%]
2021-07-06T06:25:31.5639676Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.off-vbounds.percentile] PASSED [ 19%]
2021-07-06T06:25:33.3091497Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.off-vbounds.vcenter] PASSED [ 19%]
2021-07-06T06:25:35.0270856Z scanpy/tests/test_embedding_plots.py::test_missing_values_continuous[spatial-na_color.default-legend.off-vbounds.norm] PASSED [ 20%]
2021-07-06T06:25:35.9438253Z scanpy/tests/test_embedding_plots.py::test_enumerated_palettes[pca] PASSED [ 20%]
2021-07-06T06:25:38.2744852Z scanpy/tests/test_embedding_plots.py::test_enumerated_palettes[spatial] PASSED [ 20%]
2021-07-06T06:25:39.1296738Z scanpy/tests/test_embedding_plots.py::test_visium_circles PASSED [ 20%]
2021-07-06T06:25:39.9121780Z scanpy/tests/test_embedding_plots.py::test_visium_default PASSED [ 20%]
2021-07-06T06:25:43.5393504Z scanpy/tests/test_embedding_plots.py::test_visium_empty_img_key PASSED [ 20%]
2021-07-06T06:25:45.7401418Z scanpy/tests/test_embedding_plots.py::test_spatial_general PASSED [ 20%]
2021-07-06T06:25:48.0711720Z scanpy/tests/test_embedding_plots.py::test_spatial_external_img PASSED [ 21%]
2021-07-06T06:25:49.5758462Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[crop] PASSED [ 21%]
2021-07-06T06:25:51.3472076Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[size:.5] PASSED [ 21%]
2021-07-06T06:25:53.0789716Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[size:2] PASSED [ 21%]
2021-07-06T06:25:54.8215517Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[spotsize] PASSED [ 21%]
2021-07-06T06:25:56.5564163Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[bw] PASSED [ 21%]
2021-07-06T06:25:58.3327845Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[img] PASSED [ 21%]
2021-07-06T06:26:00.0908382Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[na_color.transparent] PASSED [ 21%]
2021-07-06T06:26:01.9118597Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency[na_color.lightgray] PASSED [ 22%]
2021-07-06T06:26:03.2210659Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[crop] PASSED [ 22%]
2021-07-06T06:26:04.5366820Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[size:.5] PASSED [ 22%]
2021-07-06T06:26:05.8324649Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[size:2] PASSED [ 22%]
2021-07-06T06:26:07.1447058Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[spotsize] PASSED [ 22%]
2021-07-06T06:26:07.1474192Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[bw] SKIPPED [ 22%]
2021-07-06T06:26:08.8399633Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[img] PASSED [ 22%]
2021-07-06T06:26:10.1668111Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[na_color.transparent] PASSED [ 23%]
2021-07-06T06:26:11.4747074Z scanpy/tests/test_embedding_plots.py::test_manual_equivalency_no_img[na_color.lightgray] PASSED [ 23%]
2021-07-06T06:26:12.8753119Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[crop] PASSED [ 23%]
2021-07-06T06:26:14.5450230Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[size:.5] PASSED [ 23%]
2021-07-06T06:26:16.2885382Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[size:2] PASSED [ 23%]
2021-07-06T06:26:18.0034766Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[spotsize] PASSED [ 23%]
2021-07-06T06:26:18.0069839Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[bw] SKIPPED [ 23%]
2021-07-06T06:26:18.0100670Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[img] SKIPPED [ 23%]
2021-07-06T06:26:18.0132469Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[na_color.transparent] SKIPPED [ 24%]
2021-07-06T06:26:18.0160658Z scanpy/tests/test_embedding_plots.py::test_white_background_vs_no_img[na_color.lightgray] SKIPPED [ 24%]
2021-07-06T06:26:20.8828456Z scanpy/tests/test_embedding_plots.py::test_spatial_na_color PASSED [ 24%]
2021-07-06T06:26:22.5547320Z scanpy/tests/test_filter_rank_genes_groups.py::test_filter_rank_genes_groups PASSED [ 24%]
2021-07-06T06:26:22.6041435Z scanpy/tests/test_get.py::test_obs_df PASSED [ 24%]
2021-07-06T06:26:22.6116093Z scanpy/tests/test_get.py::test_repeated_gene_symbols PASSED [ 24%]
2021-07-06T06:26:22.7752171Z scanpy/tests/test_get.py::test_backed_vs_memory PASSED [ 24%]
2021-07-06T06:26:22.8692176Z scanpy/tests/test_get.py::test_column_content PASSED [ 25%]
2021-07-06T06:26:22.8974178Z scanpy/tests/test_get.py::test_var_df PASSED [ 25%]
2021-07-06T06:26:22.9038042Z scanpy/tests/test_get.py::test_just_mapping_keys[obs_df] PASSED [ 25%]
2021-07-06T06:26:22.9132001Z scanpy/tests/test_get.py::test_just_mapping_keys[var_df] PASSED [ 25%]
2021-07-06T06:26:22.9150283Z scanpy/tests/test_get.py::test_non_unique_cols_value_error PASSED [ 25%]
2021-07-06T06:26:22.9187984Z scanpy/tests/test_get.py::test_non_unique_var_index_value_error PASSED [ 25%]
2021-07-06T06:26:22.9218930Z scanpy/tests/test_get.py::test_keys_in_both_obs_and_var_index_value_error PASSED [ 25%]
2021-07-06T06:26:22.9255004Z scanpy/tests/test_get.py::test_repeated_cols[obs_df] PASSED [ 26%]
2021-07-06T06:26:22.9315467Z scanpy/tests/test_get.py::test_repeated_cols[var_df] PASSED [ 26%]
2021-07-06T06:26:22.9354825Z scanpy/tests/test_get.py::test_repeated_index_vals[obs_df] PASSED [ 26%]
2021-07-06T06:26:22.9396317Z scanpy/tests/test_get.py::test_repeated_index_vals[var_df] PASSED [ 26%]
2021-07-06T06:26:22.9471470Z scanpy/tests/test_get.py::test_shared_key_errors[obs_df] PASSED [ 26%]
2021-07-06T06:26:22.9527821Z scanpy/tests/test_get.py::test_shared_key_errors[var_df] PASSED [ 26%]
2021-07-06T06:26:22.9590605Z scanpy/tests/test_get.py::test_shared_key_errors[obs_df:use_raw] PASSED [ 26%]
2021-07-06T06:26:22.9661872Z scanpy/tests/test_get.py::test_shared_key_errors[obs_df:gene_symbols] PASSED [ 26%]
2021-07-06T06:26:22.9736584Z scanpy/tests/test_get.py::test_shared_key_errors[obs_df:gene_symbols,use_raw] PASSED [ 27%]
2021-07-06T06:26:23.3902362Z scanpy/tests/test_get.py::test_rank_genes_groups_df PASSED [ 27%]
2021-07-06T06:26:24.2020069Z scanpy/tests/test_highly_variable_genes.py::test_highly_variable_genes_basic PASSED [ 27%]
2021-07-06T06:26:24.3574484Z scanpy/tests/test_highly_variable_genes.py::test_higly_variable_genes_compare_to_seurat PASSED [ 27%]
2021-07-06T06:26:30.0012886Z scanpy/tests/test_highly_variable_genes.py::test_higly_variable_genes_compare_to_seurat_v3 PASSED [ 27%]
2021-07-06T06:26:30.1521777Z scanpy/tests/test_highly_variable_genes.py::test_filter_genes_dispersion_compare_to_seurat PASSED [ 27%]
2021-07-06T06:26:30.5397705Z scanpy/tests/test_highly_variable_genes.py::test_highly_variable_genes_batches PASSED [ 27%]
2021-07-06T06:26:32.0129843Z scanpy/tests/test_highly_variable_genes.py::test_seurat_v3_mean_var_output_with_batchkey PASSED [ 28%]
2021-07-06T06:26:35.4659076Z scanpy/tests/test_ingest.py::test_representation ERROR [ 28%]
2021-07-06T06:26:36.8557044Z scanpy/tests/test_ingest.py::test_neighbors ERROR [ 28%]
2021-07-06T06:26:38.1661831Z scanpy/tests/test_ingest.py::test_neighbors_defaults[3] ERROR [ 28%]
2021-07-06T06:26:39.4758808Z scanpy/tests/test_ingest.py::test_neighbors_defaults[4] ERROR [ 28%]
2021-07-06T06:26:40.7814456Z scanpy/tests/test_ingest.py::test_ingest_function ERROR [ 28%]
2021-07-06T06:26:41.9174292Z scanpy/tests/test_ingest.py::test_ingest_map_embedding_umap FAILED [ 28%]
2021-07-06T06:26:41.9189750Z scanpy/tests/test_logging.py::test_defaults PASSED [ 28%]
2021-07-06T06:26:41.9218696Z scanpy/tests/test_logging.py::test_formats PASSED [ 29%]
2021-07-06T06:26:41.9244759Z scanpy/tests/test_logging.py::test_deep PASSED [ 29%]
2021-07-06T06:26:41.9279523Z scanpy/tests/test_logging.py::test_logfile PASSED [ 29%]
2021-07-06T06:26:41.9307179Z scanpy/tests/test_logging.py::test_timing PASSED [ 29%]
2021-07-06T06:26:41.9328151Z scanpy/tests/test_logging.py::test_call_outputs[print_header] PASSED [ 29%]
2021-07-06T06:26:42.0614687Z scanpy/tests/test_logging.py::test_call_outputs[print_versions] PASSED [ 29%]
2021-07-06T06:26:42.0635094Z scanpy/tests/test_logging.py::test_call_outputs[print_version_and_date] PASSED [ 29%]
2021-07-06T06:26:42.0673603Z scanpy/tests/test_marker_gene_overlap.py::test_marker_overlap_base PASSED [ 30%]
2021-07-06T06:26:42.0716076Z scanpy/tests/test_marker_gene_overlap.py::test_marker_overlap_normalization PASSED [ 30%]
2021-07-06T06:26:42.0755600Z scanpy/tests/test_marker_gene_overlap.py::test_marker_overlap_methods PASSED [ 30%]
2021-07-06T06:26:42.0798184Z scanpy/tests/test_marker_gene_overlap.py::test_marker_overlap_subsetting PASSED [ 30%]
2021-07-06T06:26:43.8415863Z scanpy/tests/test_metrics.py::test_gearys_c_consistency FAILED [ 30%]
2021-07-06T06:26:45.6972641Z scanpy/tests/test_metrics.py::test_gearys_c_correctness FAILED [ 30%]
2021-07-06T06:26:47.3457732Z scanpy/tests/test_metrics.py::test_morans_i_consistency FAILED [ 30%]
2021-07-06T06:26:48.9016614Z scanpy/tests/test_metrics.py::test_morans_i_correctness FAILED [ 31%]
2021-07-06T06:26:50.6552193Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[asarray-gearys_c] FAILED [ 31%]
2021-07-06T06:26:52.4122838Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[asarray-morans_i] FAILED [ 31%]
2021-07-06T06:26:55.0369093Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[csr_matrix-gearys_c] FAILED [ 31%]
2021-07-06T06:26:56.7081859Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[csr_matrix-morans_i] FAILED [ 31%]
2021-07-06T06:26:57.6354429Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[csc_matrix-gearys_c] FAILED [ 31%]
2021-07-06T06:26:58.7554391Z scanpy/tests/test_metrics.py::test_graph_metrics_w_constant_values[csc_matrix-morans_i] FAILED [ 31%]
2021-07-06T06:26:58.7683053Z scanpy/tests/test_metrics.py::test_confusion_matrix PASSED [ 31%]
2021-07-06T06:26:58.8092235Z scanpy/tests/test_metrics.py::test_confusion_matrix_randomized PASSED [ 32%]
2021-07-06T06:26:58.8270484Z scanpy/tests/test_metrics.py::test_confusion_matrix_api PASSED [ 32%]
2021-07-06T06:27:00.0272596Z scanpy/tests/test_neighbors.py::test_umap_connectivities_euclidean FAILED [ 32%]
2021-07-06T06:27:00.0349070Z scanpy/tests/test_neighbors.py::test_gauss_noknn_connectivities_euclidean PASSED [ 32%]
2021-07-06T06:27:00.0486654Z scanpy/tests/test_neighbors.py::test_gauss_connectivities_euclidean PASSED [ 32%]
2021-07-06T06:27:00.0554046Z scanpy/tests/test_neighbors.py::test_metrics_argument PASSED [ 32%]
2021-07-06T06:27:01.2754775Z scanpy/tests/test_neighbors.py::test_use_rep_argument FAILED [ 32%]
2021-07-06T06:27:01.2858666Z scanpy/tests/test_neighbors.py::test_restore_n_neighbors[toarray] PASSED [ 33%]
2021-07-06T06:27:01.2954162Z scanpy/tests/test_neighbors.py::test_restore_n_neighbors[csr_matrix] PASSED [ 33%]
2021-07-06T06:27:02.4570394Z scanpy/tests/test_neighbors_key_added.py::test_neighbors_key_added FAILED [ 33%]
2021-07-06T06:27:03.8091771Z scanpy/tests/test_neighbors_key_added.py::test_neighbors_key_obsp[neighbors_key] FAILED [ 33%]
2021-07-06T06:27:05.1547469Z scanpy/tests/test_neighbors_key_added.py::test_neighbors_key_obsp[obsp] FAILED [ 33%]
2021-07-06T06:27:05.1674227Z scanpy/tests/test_normalization.py::test_normalize_total[float32-array] PASSED [ 33%]
2021-07-06T06:27:05.1805867Z scanpy/tests/test_normalization.py::test_normalize_total[float32-csr_matrix] PASSED [ 33%]
2021-07-06T06:27:05.1919085Z scanpy/tests/test_normalization.py::test_normalize_total[int64-array] PASSED [ 34%]
2021-07-06T06:27:05.2073171Z scanpy/tests/test_normalization.py::test_normalize_total[int64-csr_matrix] PASSED [ 34%]
2021-07-06T06:27:05.2351225Z scanpy/tests/test_normalization.py::test_normalize_total_rep[float32-asarray] PASSED [ 34%]
2021-07-06T06:27:05.2617741Z scanpy/tests/test_normalization.py::test_normalize_total_rep[float32-csr_matrix] PASSED [ 34%]
2021-07-06T06:27:05.2852264Z scanpy/tests/test_normalization.py::test_normalize_total_rep[int64-asarray] PASSED [ 34%]
2021-07-06T06:27:05.3111435Z scanpy/tests/test_normalization.py::test_normalize_total_rep[int64-csr_matrix] PASSED [ 34%]
2021-07-06T06:27:05.3188215Z scanpy/tests/test_normalization.py::test_normalize_total_layers[float32-array] PASSED [ 34%]
2021-07-06T06:27:05.3274188Z scanpy/tests/test_normalization.py::test_normalize_total_layers[float32-csr_matrix] PASSED [ 34%]
2021-07-06T06:27:05.3350689Z scanpy/tests/test_normalization.py::test_normalize_total_layers[int64-array] PASSED [ 35%]
2021-07-06T06:27:05.3434706Z scanpy/tests/test_normalization.py::test_normalize_total_layers[int64-csr_matrix] PASSED [ 35%]
2021-07-06T06:27:05.3531318Z scanpy/tests/test_normalization.py::test_normalize_total_view[float32-array] PASSED [ 35%]
2021-07-06T06:27:05.3641745Z scanpy/tests/test_normalization.py::test_normalize_total_view[float32-csr_matrix] PASSED [ 35%]
2021-07-06T06:27:05.3740807Z scanpy/tests/test_normalization.py::test_normalize_total_view[int64-array] PASSED [ 35%]
2021-07-06T06:27:05.3853098Z scanpy/tests/test_normalization.py::test_normalize_total_view[int64-csr_matrix] PASSED [ 35%]
2021-07-06T06:27:05.3870445Z scanpy/tests/test_package_structure.py::test_function_headers[print_header] PASSED [ 35%]
2021-07-06T06:27:05.3889245Z scanpy/tests/test_package_structure.py::test_function_headers[print_versions] PASSED [ 36%]
2021-07-06T06:27:05.3906517Z scanpy/tests/test_package_structure.py::test_function_headers[print_version_and_date] PASSED [ 36%]
2021-07-06T06:27:05.3927727Z scanpy/tests/test_package_structure.py::test_function_headers[error] PASSED [ 36%]
2021-07-06T06:27:05.3944346Z scanpy/tests/test_package_structure.py::test_function_headers[warning] PASSED [ 36%]
2021-07-06T06:27:05.3962861Z scanpy/tests/test_package_structure.py::test_function_headers[info] PASSED [ 36%]
2021-07-06T06:27:05.3980785Z scanpy/tests/test_package_structure.py::test_function_headers[hint] PASSED [ 36%]
2021-07-06T06:27:05.3998336Z scanpy/tests/test_package_structure.py::test_function_headers[debug] PASSED [ 36%]
2021-07-06T06:27:05.4016006Z scanpy/tests/test_package_structure.py::test_function_headers[override] PASSED [ 36%]
2021-07-06T06:27:05.4033629Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_df0] PASSED [ 37%]
2021-07-06T06:27:05.4050312Z scanpy/tests/test_package_structure.py::test_function_headers[obs_df0] PASSED [ 37%]
2021-07-06T06:27:05.4070811Z scanpy/tests/test_package_structure.py::test_function_headers[var_df0] PASSED [ 37%]
2021-07-06T06:27:05.4094461Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_df1] PASSED [ 37%]
2021-07-06T06:27:05.4108976Z scanpy/tests/test_package_structure.py::test_function_headers[obs_df1] PASSED [ 37%]
2021-07-06T06:27:05.4139994Z scanpy/tests/test_package_structure.py::test_function_headers[var_df1] PASSED [ 37%]
2021-07-06T06:27:05.4164874Z scanpy/tests/test_package_structure.py::test_function_headers[neighbors0] PASSED [ 37%]
2021-07-06T06:27:05.4185359Z scanpy/tests/test_package_structure.py::test_function_headers[compute_neighbors_umap] PASSED [ 38%]
2021-07-06T06:27:05.4201816Z scanpy/tests/test_package_structure.py::test_function_headers[compute_neighbors_rapids] PASSED [ 38%]
2021-07-06T06:27:05.4220489Z scanpy/tests/test_package_structure.py::test_function_headers[restrict] PASSED [ 38%]
2021-07-06T06:27:05.4241126Z scanpy/tests/test_package_structure.py::test_function_headers[to_igraph0] PASSED [ 38%]
2021-07-06T06:27:05.4260269Z scanpy/tests/test_package_structure.py::test_function_headers[compute_neighbors0] PASSED [ 38%]
2021-07-06T06:27:05.4275951Z scanpy/tests/test_package_structure.py::test_function_headers[compute_transitions0] PASSED [ 38%]
2021-07-06T06:27:05.4308026Z scanpy/tests/test_package_structure.py::test_function_headers[compute_eigen0] PASSED [ 38%]
2021-07-06T06:27:05.4327984Z scanpy/tests/test_package_structure.py::test_function_headers[recipe_zheng17] PASSED [ 39%]
2021-07-06T06:27:05.4354123Z scanpy/tests/test_package_structure.py::test_function_headers[recipe_weinreb17] PASSED [ 39%]
2021-07-06T06:27:05.4375135Z scanpy/tests/test_package_structure.py::test_function_headers[recipe_seurat] PASSED [ 39%]
2021-07-06T06:27:05.4396603Z scanpy/tests/test_package_structure.py::test_function_headers[filter_cells] PASSED [ 39%]
2021-07-06T06:27:05.4417638Z scanpy/tests/test_package_structure.py::test_function_headers[filter_genes] PASSED [ 39%]
2021-07-06T06:27:05.4439422Z scanpy/tests/test_package_structure.py::test_function_headers[filter_genes_dispersion0] PASSED [ 39%]
2021-07-06T06:27:05.4461895Z scanpy/tests/test_package_structure.py::test_function_headers[highly_variable_genes0] PASSED [ 39%]
2021-07-06T06:27:05.4479212Z scanpy/tests/test_package_structure.py::test_function_headers[log1p] PASSED [ 39%]
2021-07-06T06:27:05.4497914Z scanpy/tests/test_package_structure.py::test_function_headers[sqrt] PASSED [ 40%]
2021-07-06T06:27:05.4514559Z scanpy/tests/test_package_structure.py::test_function_headers[scale] PASSED [ 40%]
2021-07-06T06:27:05.4531398Z scanpy/tests/test_package_structure.py::test_function_headers[subsample] PASSED [ 40%]
2021-07-06T06:27:05.4550503Z scanpy/tests/test_package_structure.py::test_function_headers[normalize_per_cell] PASSED [ 40%]
2021-07-06T06:27:05.4568769Z scanpy/tests/test_package_structure.py::test_function_headers[regress_out] PASSED [ 40%]
2021-07-06T06:27:05.4588804Z scanpy/tests/test_package_structure.py::test_function_headers[downsample_counts] PASSED [ 40%]
2021-07-06T06:27:05.4608302Z scanpy/tests/test_package_structure.py::test_function_headers[pca0] PASSED [ 40%]
2021-07-06T06:27:05.4624050Z scanpy/tests/test_package_structure.py::test_function_headers[calculate_qc_metrics] PASSED [ 41%]
2021-07-06T06:27:05.4643288Z scanpy/tests/test_package_structure.py::test_function_headers[combat] PASSED [ 41%]
2021-07-06T06:27:05.4668696Z scanpy/tests/test_package_structure.py::test_function_headers[normalize_total] PASSED [ 41%]
2021-07-06T06:27:05.4698343Z scanpy/tests/test_package_structure.py::test_function_headers[neighbors1] PASSED [ 41%]
2021-07-06T06:27:05.4705986Z scanpy/tests/test_package_structure.py::test_function_headers[read0] PASSED [ 41%]
2021-07-06T06:27:05.4722247Z scanpy/tests/test_package_structure.py::test_function_headers[read_10x_h50] PASSED [ 41%]
2021-07-06T06:27:05.4741292Z scanpy/tests/test_package_structure.py::test_function_headers[read_visium0] PASSED [ 41%]
2021-07-06T06:27:05.4761558Z scanpy/tests/test_package_structure.py::test_function_headers[read_10x_mtx0] PASSED [ 42%]
2021-07-06T06:27:05.4780819Z scanpy/tests/test_package_structure.py::test_function_headers[write0] PASSED [ 42%]
2021-07-06T06:27:05.4800389Z scanpy/tests/test_package_structure.py::test_function_headers[read_params] PASSED [ 42%]
2021-07-06T06:27:05.4822097Z scanpy/tests/test_package_structure.py::test_function_headers[write_params] PASSED [ 42%]
2021-07-06T06:27:05.4838669Z scanpy/tests/test_package_structure.py::test_function_headers[is_float] PASSED [ 42%]
2021-07-06T06:27:05.4856705Z scanpy/tests/test_package_structure.py::test_function_headers[is_int] PASSED [ 42%]
2021-07-06T06:27:05.4876024Z scanpy/tests/test_package_structure.py::test_function_headers[convert_bool] PASSED [ 42%]
2021-07-06T06:27:05.4894488Z scanpy/tests/test_package_structure.py::test_function_headers[convert_string] PASSED [ 42%]
2021-07-06T06:27:05.4914747Z scanpy/tests/test_package_structure.py::test_function_headers[get_used_files] PASSED [ 43%]
2021-07-06T06:27:05.4934371Z scanpy/tests/test_package_structure.py::test_function_headers[is_valid_filename] PASSED [ 43%]
2021-07-06T06:27:05.4953260Z scanpy/tests/test_package_structure.py::test_function_headers[pca1] PASSED [ 43%]
2021-07-06T06:27:05.4969541Z scanpy/tests/test_package_structure.py::test_function_headers[tsne0] PASSED [ 43%]
2021-07-06T06:27:05.4988021Z scanpy/tests/test_package_structure.py::test_function_headers[umap0] PASSED [ 43%]
2021-07-06T06:27:05.5004257Z scanpy/tests/test_package_structure.py::test_function_headers[diffmap0] PASSED [ 43%]
2021-07-06T06:27:05.5023118Z scanpy/tests/test_package_structure.py::test_function_headers[draw_graph0] PASSED [ 43%]
2021-07-06T06:27:05.5039752Z scanpy/tests/test_package_structure.py::test_function_headers[paga0] PASSED [ 44%]
2021-07-06T06:27:05.5062183Z scanpy/tests/test_package_structure.py::test_function_headers[paga_degrees] PASSED [ 44%]
2021-07-06T06:27:05.5083102Z scanpy/tests/test_package_structure.py::test_function_headers[paga_expression_entropies] PASSED [ 44%]
2021-07-06T06:27:05.5101873Z scanpy/tests/test_package_structure.py::test_function_headers[paga_compare_paths] PASSED [ 44%]
2021-07-06T06:27:05.5121528Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups0] PASSED [ 44%]
2021-07-06T06:27:05.5142907Z scanpy/tests/test_package_structure.py::test_function_headers[filter_rank_genes_groups] PASSED [ 44%]
2021-07-06T06:27:05.5163571Z scanpy/tests/test_package_structure.py::test_function_headers[dpt] PASSED [ 44%]
2021-07-06T06:27:05.5181731Z scanpy/tests/test_package_structure.py::test_function_headers[leiden] PASSED [ 44%]
2021-07-06T06:27:05.5200619Z scanpy/tests/test_package_structure.py::test_function_headers[louvain] PASSED [ 45%]
2021-07-06T06:27:05.5219529Z scanpy/tests/test_package_structure.py::test_function_headers[sim0] PASSED [ 45%]
2021-07-06T06:27:05.5239583Z scanpy/tests/test_package_structure.py::test_function_headers[score_genes] PASSED [ 45%]
2021-07-06T06:27:05.5258868Z scanpy/tests/test_package_structure.py::test_function_headers[score_genes_cell_cycle] PASSED [ 45%]
2021-07-06T06:27:05.5276425Z scanpy/tests/test_package_structure.py::test_function_headers[dendrogram0] PASSED [ 45%]
2021-07-06T06:27:05.5296023Z scanpy/tests/test_package_structure.py::test_function_headers[embedding_density0] PASSED [ 45%]
2021-07-06T06:27:05.5314561Z scanpy/tests/test_package_structure.py::test_function_headers[marker_gene_overlap] PASSED [ 45%]
2021-07-06T06:27:05.5335793Z scanpy/tests/test_package_structure.py::test_function_headers[ingest] PASSED [ 46%]
2021-07-06T06:27:05.5356085Z scanpy/tests/test_package_structure.py::test_function_headers[fit] PASSED [ 46%]
2021-07-06T06:27:05.5374308Z scanpy/tests/test_package_structure.py::test_function_headers[neighbors2] PASSED [ 46%]
2021-07-06T06:27:05.5393524Z scanpy/tests/test_package_structure.py::test_function_headers[map_embedding] PASSED [ 46%]
2021-07-06T06:27:05.5412143Z scanpy/tests/test_package_structure.py::test_function_headers[map_labels] PASSED [ 46%]
2021-07-06T06:27:05.5428635Z scanpy/tests/test_package_structure.py::test_function_headers[to_adata] PASSED [ 46%]
2021-07-06T06:27:05.5456665Z scanpy/tests/test_package_structure.py::test_function_headers[to_adata_joint] PASSED [ 46%]
2021-07-06T06:27:05.5465697Z scanpy/tests/test_package_structure.py::test_function_headers[scatter] PASSED [ 47%]
2021-07-06T06:27:05.5481285Z scanpy/tests/test_package_structure.py::test_function_headers[violin] PASSED [ 47%]
2021-07-06T06:27:05.5501446Z scanpy/tests/test_package_structure.py::test_function_headers[ranking] PASSED [ 47%]
2021-07-06T06:27:05.5519546Z scanpy/tests/test_package_structure.py::test_function_headers[clustermap] PASSED [ 47%]
2021-07-06T06:27:05.5535744Z scanpy/tests/test_package_structure.py::test_function_headers[tracksplot] PASSED [ 47%]
2021-07-06T06:27:05.5554687Z scanpy/tests/test_package_structure.py::test_function_headers[dendrogram1] PASSED [ 47%]
2021-07-06T06:27:05.5574045Z scanpy/tests/test_package_structure.py::test_function_headers[correlation_matrix] PASSED [ 47%]
2021-07-06T06:27:05.5595906Z scanpy/tests/test_package_structure.py::test_function_headers[heatmap] PASSED [ 47%]
2021-07-06T06:27:05.5614142Z scanpy/tests/test_package_structure.py::test_function_headers[style0] PASSED [ 48%]
2021-07-06T06:27:05.5633155Z scanpy/tests/test_package_structure.py::test_function_headers[legend] PASSED [ 48%]
2021-07-06T06:27:05.5658365Z scanpy/tests/test_package_structure.py::test_function_headers[dotplot] PASSED [ 48%]
2021-07-06T06:27:05.5675013Z scanpy/tests/test_package_structure.py::test_function_headers[style1] PASSED [ 48%]
2021-07-06T06:27:05.5695767Z scanpy/tests/test_package_structure.py::test_function_headers[matrixplot] PASSED [ 48%]
2021-07-06T06:27:05.5715084Z scanpy/tests/test_package_structure.py::test_function_headers[style2] PASSED [ 48%]
2021-07-06T06:27:05.5732630Z scanpy/tests/test_package_structure.py::test_function_headers[stacked_violin] PASSED [ 48%]
2021-07-06T06:27:05.5751875Z scanpy/tests/test_package_structure.py::test_function_headers[filter_genes_dispersion1] PASSED [ 49%]
2021-07-06T06:27:05.5769214Z scanpy/tests/test_package_structure.py::test_function_headers[highly_variable_genes1] PASSED [ 49%]
2021-07-06T06:27:05.5787912Z scanpy/tests/test_package_structure.py::test_function_headers[embedding0] PASSED [ 49%]
2021-07-06T06:27:05.5806269Z scanpy/tests/test_package_structure.py::test_function_headers[pca2] PASSED [ 49%]
2021-07-06T06:27:05.5825268Z scanpy/tests/test_package_structure.py::test_function_headers[diffmap1] PASSED [ 49%]
2021-07-06T06:27:05.5845435Z scanpy/tests/test_package_structure.py::test_function_headers[draw_graph1] PASSED [ 49%]
2021-07-06T06:27:05.5863217Z scanpy/tests/test_package_structure.py::test_function_headers[tsne1] PASSED [ 49%]
2021-07-06T06:27:05.5880295Z scanpy/tests/test_package_structure.py::test_function_headers[umap1] PASSED [ 50%]
2021-07-06T06:27:05.5899044Z scanpy/tests/test_package_structure.py::test_function_headers[spatial] PASSED [ 50%]
2021-07-06T06:27:05.5918857Z scanpy/tests/test_package_structure.py::test_function_headers[pca_loadings] PASSED [ 50%]
2021-07-06T06:27:05.5935849Z scanpy/tests/test_package_structure.py::test_function_headers[pca3] PASSED [ 50%]
2021-07-06T06:27:05.5959195Z scanpy/tests/test_package_structure.py::test_function_headers[pca_overview] PASSED [ 50%]
2021-07-06T06:27:05.5977351Z scanpy/tests/test_package_structure.py::test_function_headers[pca_variance_ratio] PASSED [ 50%]
2021-07-06T06:27:05.6000595Z scanpy/tests/test_package_structure.py::test_function_headers[paga1] PASSED [ 50%]
2021-07-06T06:27:05.6019214Z scanpy/tests/test_package_structure.py::test_function_headers[paga_adjacency] PASSED [ 50%]
2021-07-06T06:27:05.6038945Z scanpy/tests/test_package_structure.py::test_function_headers[paga_compare] PASSED [ 51%]
2021-07-06T06:27:05.6057930Z scanpy/tests/test_package_structure.py::test_function_headers[paga_path] PASSED [ 51%]
2021-07-06T06:27:05.6075435Z scanpy/tests/test_package_structure.py::test_function_headers[dpt_timeseries] PASSED [ 51%]
2021-07-06T06:27:05.6093424Z scanpy/tests/test_package_structure.py::test_function_headers[dpt_groups_pseudotime] PASSED [ 51%]
2021-07-06T06:27:05.6110888Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups1] PASSED [ 51%]
2021-07-06T06:27:05.6130060Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_violin] PASSED [ 51%]
2021-07-06T06:27:05.6149528Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_dotplot] PASSED [ 51%]
2021-07-06T06:27:05.6174714Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_heatmap] PASSED [ 52%]
2021-07-06T06:27:05.6192572Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_stacked_violin] PASSED [ 52%]
2021-07-06T06:27:05.6208695Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_matrixplot] PASSED [ 52%]
2021-07-06T06:27:05.6226549Z scanpy/tests/test_package_structure.py::test_function_headers[rank_genes_groups_tracksplot] PASSED [ 52%]
2021-07-06T06:27:05.6246309Z scanpy/tests/test_package_structure.py::test_function_headers[sim1] PASSED [ 52%]
2021-07-06T06:27:05.6268209Z scanpy/tests/test_package_structure.py::test_function_headers[embedding_density1] PASSED [ 52%]
2021-07-06T06:27:05.6286964Z scanpy/tests/test_package_structure.py::test_function_headers[set_rcParams_scanpy] PASSED [ 52%]
2021-07-06T06:27:05.6306515Z scanpy/tests/test_package_structure.py::test_function_headers[set_rcParams_defaults] PASSED [ 52%]
2021-07-06T06:27:05.6324156Z scanpy/tests/test_package_structure.py::test_function_headers[matrix] PASSED [ 53%]
2021-07-06T06:27:05.6342620Z scanpy/tests/test_package_structure.py::test_function_headers[timeseries] PASSED [ 53%]
2021-07-06T06:27:05.6362454Z scanpy/tests/test_package_structure.py::test_function_headers[timeseries_subplot] PASSED [ 53%]
2021-07-06T06:27:05.6380732Z scanpy/tests/test_package_structure.py::test_function_headers[timeseries_as_heatmap] PASSED [ 53%]
2021-07-06T06:27:05.6402489Z scanpy/tests/test_package_structure.py::test_function_headers[highest_expr_genes] PASSED [ 53%]
2021-07-06T06:27:05.6422081Z scanpy/tests/test_package_structure.py::test_function_headers[blobs] PASSED [ 53%]
2021-07-06T06:27:05.6443171Z scanpy/tests/test_package_structure.py::test_function_headers[burczynski06] PASSED [ 53%]
2021-07-06T06:27:05.6465744Z scanpy/tests/test_package_structure.py::test_function_headers[krumsiek11] PASSED [ 54%]
2021-07-06T06:27:05.6487943Z scanpy/tests/test_package_structure.py::test_function_headers[moignard15] PASSED [ 54%]
2021-07-06T06:27:05.6506669Z scanpy/tests/test_package_structure.py::test_function_headers[paul15] PASSED [ 54%]
2021-07-06T06:27:05.6523777Z scanpy/tests/test_package_structure.py::test_function_headers[toggleswitch] PASSED [ 54%]
2021-07-06T06:27:05.6539920Z scanpy/tests/test_package_structure.py::test_function_headers[pbmc68k_reduced] PASSED [ 54%]
2021-07-06T06:27:05.6572166Z scanpy/tests/test_package_structure.py::test_function_headers[pbmc3k] PASSED [ 54%]
2021-07-06T06:27:05.6591381Z scanpy/tests/test_package_structure.py::test_function_headers[pbmc3k_processed] PASSED [ 54%]
2021-07-06T06:27:05.6612111Z scanpy/tests/test_package_structure.py::test_function_headers[visium_sge] PASSED [ 55%]
2021-07-06T06:27:05.6633477Z scanpy/tests/test_package_structure.py::test_function_headers[ebi_expression_atlas] PASSED [ 55%]
2021-07-06T06:27:05.6651855Z scanpy/tests/test_package_structure.py::test_function_headers[biomart_annotations] PASSED [ 55%]
2021-07-06T06:27:05.6668463Z scanpy/tests/test_package_structure.py::test_function_headers[gene_coordinates] PASSED [ 55%]
2021-07-06T06:27:05.6685608Z scanpy/tests/test_package_structure.py::test_function_headers[mitochondrial_genes] PASSED [ 55%]
2021-07-06T06:27:05.6705576Z scanpy/tests/test_package_structure.py::test_function_headers[enrich] PASSED [ 55%]
2021-07-06T06:27:05.6726363Z scanpy/tests/test_package_structure.py::test_function_headers[cyclone] PASSED [ 55%]
2021-07-06T06:27:05.6749373Z scanpy/tests/test_package_structure.py::test_function_headers[sandbag] PASSED [ 55%]
2021-07-06T06:27:05.6769633Z scanpy/tests/test_package_structure.py::test_function_headers[phate0] PASSED [ 56%]
2021-07-06T06:27:05.6787920Z scanpy/tests/test_package_structure.py::test_function_headers[phenograph] PASSED [ 56%]
2021-07-06T06:27:05.6807768Z scanpy/tests/test_package_structure.py::test_function_headers[palantir] PASSED [ 56%]
2021-07-06T06:27:05.6824216Z scanpy/tests/test_package_structure.py::test_function_headers[palantir_results] PASSED [ 56%]
2021-07-06T06:27:05.6840990Z scanpy/tests/test_package_structure.py::test_function_headers[trimap0] PASSED [ 56%]
2021-07-06T06:27:05.6860065Z scanpy/tests/test_package_structure.py::test_function_headers[harmony_timeseries0] PASSED [ 56%]
2021-07-06T06:27:05.6878976Z scanpy/tests/test_package_structure.py::test_function_headers[sam0] PASSED [ 56%]
2021-07-06T06:27:05.6897996Z scanpy/tests/test_package_structure.py::test_function_headers[wishbone] PASSED [ 57%]
2021-07-06T06:27:05.6916037Z scanpy/tests/test_package_structure.py::test_function_headers[embedding1] PASSED [ 57%]
2021-07-06T06:27:05.6933704Z scanpy/tests/test_package_structure.py::test_function_headers[phate1] PASSED [ 57%]
2021-07-06T06:27:05.6951825Z scanpy/tests/test_package_structure.py::test_function_headers[trimap1] PASSED [ 57%]
2021-07-06T06:27:05.6972376Z scanpy/tests/test_package_structure.py::test_function_headers[harmony_timeseries1] PASSED [ 57%]
2021-07-06T06:27:05.6990859Z scanpy/tests/test_package_structure.py::test_function_headers[sam1] PASSED [ 57%]
2021-07-06T06:27:05.7009861Z scanpy/tests/test_package_structure.py::test_function_headers[wishbone_marker_trajectory] PASSED [ 57%]
2021-07-06T06:27:05.7029513Z scanpy/tests/test_package_structure.py::test_function_headers[scrublet_score_distribution] PASSED [ 57%]
2021-07-06T06:27:05.7047816Z scanpy/tests/test_package_structure.py::test_function_headers[mnn_correct] PASSED [ 58%]
2021-07-06T06:27:05.7066936Z scanpy/tests/test_package_structure.py::test_function_headers[bbknn] PASSED [ 58%]
2021-07-06T06:27:05.7083285Z scanpy/tests/test_package_structure.py::test_function_headers[dca] PASSED [ 58%]
2021-07-06T06:27:05.7102812Z scanpy/tests/test_package_structure.py::test_function_headers[harmony_integrate] PASSED [ 58%]
2021-07-06T06:27:05.7120474Z scanpy/tests/test_package_structure.py::test_function_headers[magic] PASSED [ 58%]
2021-07-06T06:27:05.7139349Z scanpy/tests/test_package_structure.py::test_function_headers[scanorama_integrate] PASSED [ 58%]
2021-07-06T06:27:05.7158080Z scanpy/tests/test_package_structure.py::test_function_headers[hashsolo] PASSED [ 58%]
2021-07-06T06:27:05.7178848Z scanpy/tests/test_package_structure.py::test_function_headers[scrublet] PASSED [ 59%]
2021-07-06T06:27:05.7194550Z scanpy/tests/test_package_structure.py::test_function_headers[scrublet_simulate_doublets] PASSED [ 59%]
2021-07-06T06:27:05.7210761Z scanpy/tests/test_package_structure.py::test_function_headers[spring_project] PASSED [ 59%]
2021-07-06T06:27:05.7230311Z scanpy/tests/test_package_structure.py::test_function_headers[write_hdf5_genes] PASSED [ 59%]
2021-07-06T06:27:05.7248335Z scanpy/tests/test_package_structure.py::test_function_headers[write_hdf5_cells] PASSED [ 59%]
2021-07-06T06:27:05.7266102Z scanpy/tests/test_package_structure.py::test_function_headers[write_sparse_npz] PASSED [ 59%]
2021-07-06T06:27:05.7285404Z scanpy/tests/test_package_structure.py::test_function_headers[cellbrowser] PASSED [ 59%]
2021-07-06T06:27:05.7302468Z scanpy/tests/test_package_structure.py::test_function_headers[gearys_c] PASSED [ 60%]
2021-07-06T06:27:05.7320183Z scanpy/tests/test_package_structure.py::test_function_headers[confusion_matrix] PASSED [ 60%]
2021-07-06T06:27:05.7342260Z scanpy/tests/test_package_structure.py::test_function_headers[morans_i] PASSED [ 60%]
2021-07-06T06:27:05.7361900Z scanpy/tests/test_package_structure.py::test_function_headers[read1] PASSED [ 60%]
2021-07-06T06:27:05.7382491Z scanpy/tests/test_package_structure.py::test_function_headers[read_10x_h51] PASSED [ 60%]
2021-07-06T06:27:05.7401024Z scanpy/tests/test_package_structure.py::test_function_headers[read_10x_mtx1] PASSED [ 60%]
2021-07-06T06:27:05.7419335Z scanpy/tests/test_package_structure.py::test_function_headers[write1] PASSED [ 60%]
2021-07-06T06:27:05.7440590Z scanpy/tests/test_package_structure.py::test_function_headers[read_visium1] PASSED [ 60%]
2021-07-06T06:27:05.7459531Z scanpy/tests/test_package_structure.py::test_function_headers[to_igraph1] PASSED [ 61%]
2021-07-06T06:27:05.7506368Z scanpy/tests/test_package_structure.py::test_function_headers[compute_neighbors1] PASSED [ 61%]
2021-07-06T06:27:05.7507791Z scanpy/tests/test_package_structure.py::test_function_headers[compute_transitions1] PASSED [ 61%]
2021-07-06T06:27:05.7515311Z scanpy/tests/test_package_structure.py::test_function_headers[compute_eigen1] PASSED [ 61%]
2021-07-06T06:27:05.7530071Z scanpy/tests/test_package_structure.py::test_function_headers[main] PASSED [ 61%]
2021-07-06T06:27:05.7547523Z scanpy/tests/test_package_structure.py::test_function_headers[console_main] PASSED [ 61%]
2021-07-06T06:27:05.8876759Z scanpy/tests/test_package_structure.py::test_metadata PASSED [ 61%]
2021-07-06T06:27:05.9102561Z scanpy/tests/test_pca.py::test_pca_transform[scipy-csr] PASSED [ 62%]
2021-07-06T06:27:06.3232373Z scanpy/tests/test_pca.py::test_pca_transform[scipy-csc] PASSED [ 62%]
2021-07-06T06:27:06.3432093Z scanpy/tests/test_pca.py::test_pca_transform[np-ndarray] PASSED [ 62%]
2021-07-06T06:27:06.3582797Z scanpy/tests/test_pca.py::test_pca_shapes PASSED [ 62%]
2021-07-06T06:27:10.6718055Z scanpy/tests/test_pca.py::test_pca_sparse PASSED [ 62%]
2021-07-06T06:27:14.4862228Z scanpy/tests/test_pca.py::test_pca_reproducible[scipy-csr-float64] PASSED [ 62%]
2021-07-06T06:27:18.3115044Z scanpy/tests/test_pca.py::test_pca_reproducible[scipy-csr-float32] PASSED [ 62%]
2021-07-06T06:27:22.4376755Z scanpy/tests/test_pca.py::test_pca_reproducible[scipy-csc-float64] PASSED [ 63%]
2021-07-06T06:27:26.1364018Z scanpy/tests/test_pca.py::test_pca_reproducible[scipy-csc-float32] PASSED [ 63%]
2021-07-06T06:27:33.7232070Z scanpy/tests/test_pca.py::test_pca_reproducible[np-ndarray-float64] PASSED [ 63%]
2021-07-06T06:27:41.1037441Z scanpy/tests/test_pca.py::test_pca_reproducible[np-ndarray-float32] PASSED [ 63%]
2021-07-06T06:27:46.8722867Z scanpy/tests/test_pca.py::test_pca_chunked PASSED [ 63%]
2021-07-06T06:27:46.8749455Z scanpy/tests/test_performance.py::test_deferred_imports PASSED [ 63%]
2021-07-06T06:27:49.8947696Z scanpy/tests/test_plotting.py::test_heatmap PASSED [ 63%]
2021-07-06T06:27:50.6794393Z scanpy/tests/test_plotting.py::test_clustermap[None-master_clustermap] PASSED [ 63%]
2021-07-06T06:27:51.5943086Z scanpy/tests/test_plotting.py::test_clustermap[cell_type-master_clustermap_withcolor] PASSED [ 64%]
2021-07-06T06:27:52.0569617Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[dotplot-fn0] PASSED [ 64%]
2021-07-06T06:27:52.4576860Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[dotplot2-fn1] PASSED [ 64%]
2021-07-06T06:27:52.9839438Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[dotplot3-fn2] PASSED [ 64%]
2021-07-06T06:27:53.4604372Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[dotplot_std_scale_group-fn3] PASSED [ 64%]
2021-07-06T06:27:54.2160349Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[dotplot_dict-fn4] PASSED [ 64%]
2021-07-06T06:27:54.5551414Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[matrixplot-fn5] PASSED [ 64%]
2021-07-06T06:27:54.9983680Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[matrixplot_std_scale_var_dict-fn6] PASSED [ 65%]
2021-07-06T06:27:55.2923375Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[matrixplot_std_scale_group-fn7] PASSED [ 65%]
2021-07-06T06:27:55.6008342Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[matrixplot2-fn8] PASSED [ 65%]
2021-07-06T06:27:56.5955638Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[stacked_violin-fn9] PASSED [ 65%]
2021-07-06T06:27:57.9161581Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[stacked_violin_std_scale_var_dict-fn10] PASSED [ 65%]
2021-07-06T06:27:59.0033624Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[stacked_violin_std_scale_group-fn11] PASSED [ 65%]
2021-07-06T06:27:59.8211846Z scanpy/tests/test_plotting.py::test_dotplot_matrixplot_stacked_violin[stacked_violin_no_cat_obs-fn12] PASSED [ 65%]
2021-07-06T06:28:00.4385413Z scanpy/tests/test_plotting.py::test_dotplot_obj PASSED [ 65%]
2021-07-06T06:28:01.0396825Z scanpy/tests/test_plotting.py::test_matrixplot_obj PASSED [ 66%]
2021-07-06T06:28:02.8462572Z scanpy/tests/test_plotting.py::test_stacked_violin_obj PASSED [ 66%]
2021-07-06T06:28:03.8589415Z scanpy/tests/test_plotting.py::test_tracksplot PASSED [ 66%]
2021-07-06T06:28:06.6714174Z scanpy/tests/test_plotting.py::test_multiple_plots PASSED [ 66%]
2021-07-06T06:28:08.4376848Z scanpy/tests/test_plotting.py::test_violin PASSED [ 66%]
2021-07-06T06:28:09.2242542Z scanpy/tests/test_plotting.py::test_violin_without_raw PASSED [ 66%]
2021-07-06T06:28:09.4654289Z scanpy/tests/test_plotting.py::test_dendrogram PASSED [ 66%]
2021-07-06T06:28:09.9330400Z scanpy/tests/test_plotting.py::test_correlation PASSED [ 67%]
2021-07-06T06:28:11.9817898Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_sharey-fn0] PASSED [ 67%]
2021-07-06T06:28:13.8343861Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes-fn1] PASSED [ 67%]
2021-07-06T06:28:15.3805583Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_heatmap-fn2] PASSED [ 67%]
2021-07-06T06:28:16.6298671Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_heatmap_swap_axes-fn3] PASSED [ 67%]
2021-07-06T06:28:17.8772345Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_heatmap_swap_axes_vcenter-fn4] PASSED [ 67%]
2021-07-06T06:28:20.1726950Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_stacked_violin-fn5] PASSED [ 67%]
2021-07-06T06:28:21.8915452Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_dotplot-fn6] PASSED [ 68%]
2021-07-06T06:28:23.1780467Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_dotplot_gene_names-fn7] PASSED [ 68%]
2021-07-06T06:28:25.5345014Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_dotplot_logfoldchange-fn8] PASSED [ 68%]
2021-07-06T06:28:27.6384365Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_dotplot_logfoldchange_vcenter-fn9] PASSED [ 68%]
2021-07-06T06:28:29.9095723Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_matrixplot-fn10] PASSED [ 68%]
2021-07-06T06:28:31.1748668Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_matrixplot_gene_names_symbol-fn11] PASSED [ 68%]
2021-07-06T06:28:33.3549146Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_matrixplot_n_genes_negative-fn12] PASSED [ 68%]
2021-07-06T06:28:35.5183725Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_matrixplot_swap_axes-fn13] PASSED [ 68%]
2021-07-06T06:28:37.9753650Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_matrixplot_swap_axes_vcenter-fn14] PASSED [ 69%]
2021-07-06T06:28:39.6026824Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_tracksplot-fn15] PASSED [ 69%]
2021-07-06T06:28:40.0521620Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_violin-fn16] PASSED [ 69%]
2021-07-06T06:28:40.5146265Z scanpy/tests/test_plotting.py::test_rank_genes_groups[ranked_genes_violin_not_raw-fn17] PASSED [ 69%]
2021-07-06T06:28:51.0527599Z scanpy/tests/test_plotting.py::test_plot_rank_genes_groups_gene_symbols[rank_genes_groups_dotplot] PASSED [ 69%]
2021-07-06T06:28:59.8484190Z scanpy/tests/test_plotting.py::test_plot_rank_genes_groups_gene_symbols[rank_genes_groups_heatmap] PASSED [ 69%]
2021-07-06T06:29:08.7560813Z scanpy/tests/test_plotting.py::test_plot_rank_genes_groups_gene_symbols[rank_genes_groups_matrixplot] PASSED [ 69%]
2021-07-06T06:29:23.7544149Z scanpy/tests/test_plotting.py::test_plot_rank_genes_groups_gene_symbols[rank_genes_groups_stacked_violin] PASSED [ 70%]
2021-07-06T06:29:43.4066208Z scanpy/tests/test_plotting.py::test_plot_rank_genes_groups_gene_symbols[rank_genes_groups_tracksplot] PASSED [ 70%]
2021-07-06T06:29:45.3513622Z scanpy/tests/test_plotting.py::test_rank_genes_groups_plots_n_genes_vs_var_names[rank_genes_groups_dotplot] PASSED [ 70%]
2021-07-06T06:29:47.1308116Z scanpy/tests/test_plotting.py::test_rank_genes_groups_plots_n_genes_vs_var_names[rank_genes_groups_heatmap] PASSED [ 70%]
2021-07-06T06:29:49.1931492Z scanpy/tests/test_plotting.py::test_rank_genes_groups_plots_n_genes_vs_var_names[rank_genes_groups_matrixplot] PASSED [ 70%]
2021-07-06T06:29:52.1788379Z scanpy/tests/test_plotting.py::test_rank_genes_groups_plots_n_genes_vs_var_names[rank_genes_groups_stacked_violin] PASSED [ 70%]
2021-07-06T06:29:56.5981282Z scanpy/tests/test_plotting.py::test_rank_genes_groups_plots_n_genes_vs_var_names[rank_genes_groups_tracksplot] PASSED [ 70%]
2021-07-06T06:29:57.0376117Z scanpy/tests/test_plotting.py::test_genes_symbols[heatmap-heatmap] PASSED [ 71%]
2021-07-06T06:29:57.7800913Z scanpy/tests/test_plotting.py::test_genes_symbols[dotplot-dotplot] PASSED [ 71%]
2021-07-06T06:29:58.1547198Z scanpy/tests/test_plotting.py::test_genes_symbols[matrixplot-matrixplot] PASSED [ 71%]
2021-07-06T06:29:59.1645143Z scanpy/tests/test_plotting.py::test_genes_symbols[stacked_violin-stacked_violin] PASSED [ 71%]
2021-07-06T06:30:00.2653397Z scanpy/tests/test_plotting.py::test_genes_symbols[tracksplot-tracksplot] PASSED [ 71%]
2021-07-06T06:30:01.7514928Z scanpy/tests/test_plotting.py::test_scatterplots[pca-fn0] ERROR [ 71%]
2021-07-06T06:30:02.4965754Z scanpy/tests/test_plotting.py::test_scatterplots[pca_with_fonts-fn1] ERROR [ 71%]
2021-07-06T06:30:03.2723698Z scanpy/tests/test_plotting.py::test_scatterplots[3dprojection-fn2] ERROR [ 71%]
2021-07-06T06:30:03.9049632Z scanpy/tests/test_plotting.py::test_scatterplots[multipanel-fn3] ERROR [ 72%]
2021-07-06T06:30:04.5322762Z scanpy/tests/test_plotting.py::test_scatterplots[multipanel_vcenter-fn4] ERROR [ 72%]
2021-07-06T06:30:05.2788078Z scanpy/tests/test_plotting.py::test_scatterplots[pca_sparse_layer-fn5] ERROR [ 72%]
2021-07-06T06:30:05.8240858Z scanpy/tests/test_plotting.py::test_scatterplots[tsne-fn6] XFAIL (sl...) [ 72%]
2021-07-06T06:30:06.5564668Z scanpy/tests/test_plotting.py::test_scatterplots[umap_nocolor-umap] ERROR [ 72%]
2021-07-06T06:30:07.3127074Z scanpy/tests/test_plotting.py::test_scatterplots[umap-fn8] ERROR [ 72%]
2021-07-06T06:30:08.0670233Z scanpy/tests/test_plotting.py::test_scatterplots[umap_gene_expr-fn9] ERROR [ 72%]
2021-07-06T06:30:08.8127921Z scanpy/tests/test_plotting.py::test_scatterplots[umap_layer-fn10] ERROR [ 73%]
2021-07-06T06:30:09.3348354Z scanpy/tests/test_plotting.py::test_scatterplots[umap_with_edges-fn11] ERROR [ 73%]
2021-07-06T06:30:10.0868170Z scanpy/tests/test_plotting.py::test_scatterplots[umap_symbols-fn12] ERROR [ 73%]
2021-07-06T06:30:10.3525002Z scanpy/tests/test_plotting.py::test_scatter_embedding_groups_and_size PASSED [ 73%]
2021-07-06T06:30:13.9997546Z scanpy/tests/test_plotting.py::test_scatter_embedding_add_outline_vmin_vmax_norm PASSED [ 73%]
2021-07-06T06:30:16.2247074Z scanpy/tests/test_plotting.py::test_timeseries PASSED [ 73%]
2021-07-06T06:30:16.6604720Z scanpy/tests/test_plotting.py::test_scatter_raw PASSED [ 73%]
2021-07-06T06:30:16.7460333Z scanpy/tests/test_plotting.py::test_scatter_specify_layer_and_raw PASSED [ 73%]
2021-07-06T06:30:19.1933788Z scanpy/tests/test_plotting.py::test_rankings PASSED [ 74%]
2021-07-06T06:30:21.7361703Z scanpy/tests/test_plotting.py::test_scatter_rep PASSED [ 74%]
2021-07-06T06:30:23.7448818Z scanpy/tests/test_plotting.py::test_paga PASSED [ 74%]
2021-07-06T06:30:24.4699014Z scanpy/tests/test_plotting.py::test_paga_path PASSED [ 74%]
2021-07-06T06:30:25.0906583Z scanpy/tests/test_plotting.py::test_paga_compare PASSED [ 74%]
2021-07-06T06:30:29.9480059Z scanpy/tests/test_plotting.py::test_no_copy PASSED [ 74%]
2021-07-06T06:30:30.4580471Z scanpy/tests/test_plotting.py::test_groupby_index PASSED [ 74%]
2021-07-06T06:30:31.2694072Z scanpy/tests/test_plotting.py::test_groupby_list PASSED [ 75%]
2021-07-06T06:30:31.3800566Z scanpy/tests/test_plotting.py::test_color_cycler PASSED [ 75%]
2021-07-06T06:30:31.3974051Z scanpy/tests/test_preprocessing.py::test_log1p PASSED [ 75%]
2021-07-06T06:30:31.4737216Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-None-int64] PASSED [ 75%]
2021-07-06T06:30:31.5545353Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-None-float32] PASSED [ 75%]
2021-07-06T06:30:31.6236444Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-None-float64] PASSED [ 75%]
2021-07-06T06:30:31.6983111Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-2-int64] PASSED [ 75%]
2021-07-06T06:30:31.7675825Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-2-float32] PASSED [ 76%]
2021-07-06T06:30:31.8395916Z scanpy/tests/test_preprocessing.py::test_log1p_rep[<lambda>-2-float64] PASSED [ 76%]
2021-07-06T06:30:31.9157503Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-None-int64] PASSED [ 76%]
2021-07-06T06:30:31.9908378Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-None-float32] PASSED [ 76%]
2021-07-06T06:30:32.0701034Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-None-float64] PASSED [ 76%]
2021-07-06T06:30:32.1524249Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-2-int64] PASSED [ 76%]
2021-07-06T06:30:32.2355432Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-2-float32] PASSED [ 76%]
2021-07-06T06:30:32.3141606Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csr_matrix-2-float64] PASSED [ 76%]
2021-07-06T06:30:32.3945509Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-None-int64] PASSED [ 77%]
2021-07-06T06:30:32.4726965Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-None-float32] PASSED [ 77%]
2021-07-06T06:30:32.5453909Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-None-float64] PASSED [ 77%]
2021-07-06T06:30:32.6194142Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-2-int64] PASSED [ 77%]
2021-07-06T06:30:32.6921098Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-2-float32] PASSED [ 77%]
2021-07-06T06:30:32.7658289Z scanpy/tests/test_preprocessing.py::test_log1p_rep[csc_matrix-2-float64] PASSED [ 77%]
2021-07-06T06:30:33.2042149Z scanpy/tests/test_preprocessing.py::test_mean_var_sparse PASSED [ 77%]
2021-07-06T06:30:33.2289943Z scanpy/tests/test_preprocessing.py::test_normalize_per_cell PASSED [ 78%]
2021-07-06T06:30:33.2350372Z scanpy/tests/test_preprocessing.py::test_subsample PASSED [ 78%]
2021-07-06T06:30:33.2396912Z scanpy/tests/test_preprocessing.py::test_subsample_copy PASSED [ 78%]
2021-07-06T06:30:33.3335259Z scanpy/tests/test_preprocessing.py::test_scale PASSED [ 78%]
2021-07-06T06:30:33.4330074Z scanpy/tests/test_preprocessing.py::test_scale_rep[<lambda>-True] PASSED [ 78%]
2021-07-06T06:30:33.5134276Z scanpy/tests/test_preprocessing.py::test_scale_rep[<lambda>-False] PASSED [ 78%]
2021-07-06T06:30:33.6017753Z scanpy/tests/test_preprocessing.py::test_scale_rep[csr_matrix-True] PASSED [ 78%]
2021-07-06T06:30:33.6840237Z scanpy/tests/test_preprocessing.py::test_scale_rep[csr_matrix-False] PASSED [ 78%]
2021-07-06T06:30:33.7751760Z scanpy/tests/test_preprocessing.py::test_scale_rep[csc_matrix-True] PASSED [ 79%]
2021-07-06T06:30:33.8606401Z scanpy/tests/test_preprocessing.py::test_scale_rep[csc_matrix-False] PASSED [ 79%]
2021-07-06T06:30:33.8665578Z scanpy/tests/test_preprocessing.py::test_scale_array[<lambda>-True] PASSED [ 79%]
2021-07-06T06:30:33.8726140Z scanpy/tests/test_preprocessing.py::test_scale_array[<lambda>-False] PASSED [ 79%]
2021-07-06T06:30:33.8819897Z scanpy/tests/test_preprocessing.py::test_scale_array[csr_matrix-True] PASSED [ 79%]
2021-07-06T06:30:33.8904395Z scanpy/tests/test_preprocessing.py::test_scale_array[csr_matrix-False] PASSED [ 79%]
2021-07-06T06:30:33.8992378Z scanpy/tests/test_preprocessing.py::test_scale_array[csc_matrix-True] PASSED [ 79%]
2021-07-06T06:30:33.9067481Z scanpy/tests/test_preprocessing.py::test_scale_array[csc_matrix-False] PASSED [ 80%]
2021-07-06T06:30:34.5225267Z scanpy/tests/test_preprocessing.py::test_recipe_plotting PASSED [ 80%]
2021-07-06T06:30:45.7953920Z scanpy/tests/test_preprocessing.py::test_regress_out_ordinal PASSED [ 80%]
2021-07-06T06:30:52.3831769Z scanpy/tests/test_preprocessing.py::test_regress_out_view PASSED [ 80%]
2021-07-06T06:30:52.6559105Z scanpy/tests/test_preprocessing.py::test_regress_out_categorical PASSED [ 80%]
2021-07-06T06:30:52.7244429Z scanpy/tests/test_preprocessing.py::test_regress_out_constants PASSED [ 80%]
2021-07-06T06:30:53.0189203Z scanpy/tests/test_preprocessing.py::test_regress_out_constants_equivalent PASSED [ 80%]
2021-07-06T06:30:56.3278588Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-True-int64] PASSED [ 81%]
2021-07-06T06:30:57.1516807Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-True-float32] PASSED [ 81%]
2021-07-06T06:30:57.9801592Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-True-float64] PASSED [ 81%]
2021-07-06T06:30:58.0826006Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-False-int64] PASSED [ 81%]
2021-07-06T06:30:58.1884981Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-False-float32] PASSED [ 81%]
2021-07-06T06:30:58.2906131Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[<lambda>-False-float64] PASSED [ 81%]
2021-07-06T06:30:58.3892949Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-True-int64] PASSED [ 81%]
2021-07-06T06:30:58.4870803Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-True-float32] PASSED [ 81%]
2021-07-06T06:30:58.5836276Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-True-float64] PASSED [ 82%]
2021-07-06T06:30:58.6879775Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-False-int64] PASSED [ 82%]
2021-07-06T06:30:58.7947181Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-False-float32] PASSED [ 82%]
2021-07-06T06:30:58.9060597Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csr_matrix-False-float64] PASSED [ 82%]
2021-07-06T06:30:59.0053152Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-True-int64] PASSED [ 82%]
2021-07-06T06:30:59.1081123Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-True-float32] PASSED [ 82%]
2021-07-06T06:30:59.2092419Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-True-float64] PASSED [ 82%]
2021-07-06T06:30:59.3132989Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-False-int64] PASSED [ 83%]
2021-07-06T06:30:59.4203029Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-False-float32] PASSED [ 83%]
2021-07-06T06:30:59.5293083Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell[csc_matrix-False-float64] PASSED [ 83%]
2021-07-06T06:30:59.6251325Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-True-int64] PASSED [ 83%]
2021-07-06T06:30:59.7115178Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-True-float32] PASSED [ 83%]
2021-07-06T06:30:59.7897579Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-True-float64] PASSED [ 83%]
2021-07-06T06:30:59.8891457Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-False-int64] PASSED [ 83%]
2021-07-06T06:30:59.9896017Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-False-float32] PASSED [ 84%]
2021-07-06T06:31:00.0895233Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[<lambda>-False-float64] PASSED [ 84%]
2021-07-06T06:31:00.1764058Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-True-int64] PASSED [ 84%]
2021-07-06T06:31:00.2684999Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-True-float32] PASSED [ 84%]
2021-07-06T06:31:00.3612092Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-True-float64] PASSED [ 84%]
2021-07-06T06:31:00.4573341Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-False-int64] PASSED [ 84%]
2021-07-06T06:31:00.5543792Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-False-float32] PASSED [ 84%]
2021-07-06T06:31:00.6521047Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csr_matrix-False-float64] PASSED [ 84%]
2021-07-06T06:31:00.7468336Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-True-int64] PASSED [ 85%]
2021-07-06T06:31:00.8340457Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-True-float32] PASSED [ 85%]
2021-07-06T06:31:00.9190108Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-True-float64] PASSED [ 85%]
2021-07-06T06:31:01.0110751Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-False-int64] PASSED [ 85%]
2021-07-06T06:31:01.1036050Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-False-float32] PASSED [ 85%]
2021-07-06T06:31:01.2009848Z scanpy/tests/test_preprocessing.py::test_downsample_counts_per_cell_multiple_targets[csc_matrix-False-float64] PASSED [ 85%]
2021-07-06T06:31:01.2333682Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-True-int64] PASSED [ 85%]
2021-07-06T06:31:01.2689236Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-True-float32] PASSED [ 86%]
2021-07-06T06:31:01.3039804Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-True-float64] PASSED [ 86%]
2021-07-06T06:31:01.3583410Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-False-int64] PASSED [ 86%]
2021-07-06T06:31:01.4133486Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-False-float32] PASSED [ 86%]
2021-07-06T06:31:01.4649309Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[<lambda>-False-float64] PASSED [ 86%]
2021-07-06T06:31:01.4965866Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-True-int64] PASSED [ 86%]
2021-07-06T06:31:01.5306519Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-True-float32] PASSED [ 86%]
2021-07-06T06:31:01.5633471Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-True-float64] PASSED [ 86%]
2021-07-06T06:31:01.6174406Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-False-int64] PASSED [ 87%]
2021-07-06T06:31:01.6816164Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-False-float32] PASSED [ 87%]
2021-07-06T06:31:01.7386515Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csr_matrix-False-float64] PASSED [ 87%]
2021-07-06T06:31:01.7742843Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-True-int64] PASSED [ 87%]
2021-07-06T06:31:01.8068499Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-True-float32] PASSED [ 87%]
2021-07-06T06:31:01.8412536Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-True-float64] PASSED [ 87%]
2021-07-06T06:31:01.9033439Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-False-int64] PASSED [ 87%]
2021-07-06T06:31:01.9594942Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-False-float32] PASSED [ 88%]
2021-07-06T06:31:02.0188893Z scanpy/tests/test_preprocessing.py::test_downsample_total_counts[csc_matrix-False-float64] PASSED [ 88%]
2021-07-06T06:31:02.2465196Z scanpy/tests/test_preprocessing.py::test_recipe_weinreb PASSED [ 88%]
2021-07-06T06:31:02.7739406Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_log1p[direct] PASSED [ 88%]
2021-07-06T06:31:03.2877989Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_log1p[dask] PASSED [ 88%]
2021-07-06T06:31:03.7484979Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_normalize_per_cell[direct] PASSED [ 88%]
2021-07-06T06:31:04.2992694Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_normalize_per_cell[dask] PASSED [ 88%]
2021-07-06T06:31:04.7225944Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_normalize_total[direct] PASSED [ 89%]
2021-07-06T06:31:05.1660453Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_normalize_total[dask] PASSED [ 89%]
2021-07-06T06:31:05.6281125Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_filter_cells[direct] PASSED [ 89%]
2021-07-06T06:31:06.1443934Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_filter_cells[dask] PASSED [ 89%]
2021-07-06T06:31:06.5527899Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_filter_genes[direct] PASSED [ 89%]
2021-07-06T06:31:06.9561873Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_filter_genes[dask] PASSED [ 89%]
2021-07-06T06:31:07.6255533Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_write_zarr[direct] PASSED [ 89%]
2021-07-06T06:31:08.2993160Z scanpy/tests/test_preprocessing_distributed.py::TestPreprocessingDistributed::test_write_zarr[dask] PASSED [ 89%]
2021-07-06T06:31:08.3063441Z scanpy/tests/test_qc_metrics.py::test_proportions[dense] PASSED [ 90%]
2021-07-06T06:31:08.3124079Z scanpy/tests/test_qc_metrics.py::test_proportions[sparse] PASSED [ 90%]
2021-07-06T06:31:08.3351345Z scanpy/tests/test_qc_metrics.py::test_segments_binary PASSED [ 90%]
2021-07-06T06:31:08.3518616Z scanpy/tests/test_qc_metrics.py::test_top_segments[asarray] PASSED [ 90%]
2021-07-06T06:31:16.0111496Z scanpy/tests/test_qc_metrics.py::test_top_segments[csr_matrix] FAILED [ 90%]
2021-07-06T06:31:18.5410379Z scanpy/tests/test_qc_metrics.py::test_top_segments[csc_matrix] FAILED [ 90%]
2021-07-06T06:31:21.0825832Z scanpy/tests/test_qc_metrics.py::test_top_segments[coo_matrix] FAILED [ 90%]
2021-07-06T06:31:27.2748909Z scanpy/tests/test_qc_metrics.py::test_qc_metrics FAILED [ 91%]
2021-07-06T06:31:27.4206705Z scanpy/tests/test_qc_metrics.py::test_qc_metrics_format[asarray] PASSED [ 91%]
2021-07-06T06:31:30.1227418Z scanpy/tests/test_qc_metrics.py::test_qc_metrics_format[csr_matrix] FAILED [ 91%]
2021-07-06T06:31:32.4752220Z scanpy/tests/test_qc_metrics.py::test_qc_metrics_format[csc_matrix] FAILED [ 91%]
2021-07-06T06:31:35.1070228Z scanpy/tests/test_qc_metrics.py::test_qc_metrics_format[coo_matrix] FAILED [ 91%]
2021-07-06T06:31:35.2485426Z scanpy/tests/test_qc_metrics.py::test_qc_metrics_percentage PASSED [ 91%]
2021-07-06T06:31:37.7940832Z scanpy/tests/test_qc_metrics.py::test_layer_raw FAILED [ 91%]
2021-07-06T06:31:40.3465971Z scanpy/tests/test_qc_metrics.py::test_inner_methods FAILED [ 92%]
2021-07-06T06:31:40.3478241Z scanpy/tests/test_queries.py::test_enrich SKIPPED (need --internet-t...) [ 92%]
2021-07-06T06:31:40.3540161Z scanpy/tests/test_queries.py::test_mito_genes SKIPPED (need --intern...) [ 92%]
2021-07-06T06:31:40.4451196Z scanpy/tests/test_rank_genes_groups.py::test_results_dense PASSED [ 92%]
2021-07-06T06:31:40.5411027Z scanpy/tests/test_rank_genes_groups.py::test_results_sparse PASSED [ 92%]
2021-07-06T06:31:40.7321594Z scanpy/tests/test_rank_genes_groups.py::test_results_layers PASSED [ 92%]
2021-07-06T06:31:40.8186968Z scanpy/tests/test_rank_genes_groups.py::test_singlets PASSED [ 92%]
2021-07-06T06:31:40.9061676Z scanpy/tests/test_rank_genes_groups.py::test_emptycat PASSED [ 92%]
2021-07-06T06:31:41.1837945Z scanpy/tests/test_rank_genes_groups.py::test_wilcoxon_symmetry PASSED [ 93%]
2021-07-06T06:31:41.5935259Z scanpy/tests/test_rank_genes_groups.py::test_wilcoxon_tie_correction[True] PASSED [ 93%]
2021-07-06T06:31:42.1804984Z scanpy/tests/test_rank_genes_groups.py::test_wilcoxon_tie_correction[False] PASSED [ 93%]
2021-07-06T06:31:43.4469148Z scanpy/tests/test_rank_genes_groups_logreg.py::test_rank_genes_groups_with_renamed_categories FAILED [ 93%]
2021-07-06T06:31:44.6897712Z scanpy/tests/test_rank_genes_groups_logreg.py::test_rank_genes_groups_with_renamed_categories_use_rep FAILED [ 93%]
2021-07-06T06:31:44.7642342Z scanpy/tests/test_read_10x.py::test_read_10x[None-mtx_path0-h5_path0] PASSED [ 93%]
2021-07-06T06:31:44.9892516Z scanpy/tests/test_read_10x.py::test_read_10x[None-mtx_path1-h5_path1] PASSED [ 93%]
2021-07-06T06:31:45.0605008Z scanpy/tests/test_read_10x.py::test_read_10x[prefix_-mtx_path0-h5_path0] PASSED [ 94%]
2021-07-06T06:31:45.3008634Z scanpy/tests/test_read_10x.py::test_read_10x[prefix_-mtx_path1-h5_path1] PASSED [ 94%]
2021-07-06T06:31:45.3361894Z scanpy/tests/test_read_10x.py::test_read_10x_h5_v1 PASSED [ 94%]
2021-07-06T06:31:45.4000459Z scanpy/tests/test_read_10x.py::test_read_10x_h5 PASSED [ 94%]
2021-07-06T06:31:45.4209562Z scanpy/tests/test_read_10x.py::test_error_10x_h5_legacy PASSED [ 94%]
2021-07-06T06:31:45.4473654Z scanpy/tests/test_read_10x.py::test_error_missing_genome PASSED [ 94%]
2021-07-06T06:31:45.4882302Z scanpy/tests/test_read_10x.py::test_read_visium_counts PASSED [ 94%]
2021-07-06T06:31:45.5438609Z scanpy/tests/test_read_10x.py::test_10x_h5_gex PASSED [ 94%]
2021-07-06T06:31:45.5456971Z scanpy/tests/test_readwrite.py::test_slugify[path0] PASSED [ 95%]
2021-07-06T06:31:45.5479049Z scanpy/tests/test_readwrite.py::test_slugify[path1] PASSED [ 95%]
2021-07-06T06:31:45.5497908Z scanpy/tests/test_readwrite.py::test_slugify[path2] PASSED [ 95%]
2021-07-06T06:31:45.5518158Z scanpy/tests/test_readwrite.py::test_slugify[path3] PASSED [ 95%]
2021-07-06T06:31:45.5537304Z scanpy/tests/test_readwrite.py::test_slugify[path4] PASSED [ 95%]
2021-07-06T06:31:45.5556167Z scanpy/tests/test_readwrite.py::test_slugify[path5] PASSED [ 95%]
2021-07-06T06:31:45.5712667Z scanpy/tests/test_scaling.py::test_scale[float32-array] PASSED [ 95%]
2021-07-06T06:31:45.5920510Z scanpy/tests/test_scaling.py::test_scale[float32-csr_matrix] PASSED [ 96%]
2021-07-06T06:31:45.6106169Z scanpy/tests/test_scaling.py::test_scale[int64-array] PASSED [ 96%]
2021-07-06T06:31:45.6360657Z scanpy/tests/test_scaling.py::test_scale[int64-csr_matrix] PASSED [ 96%]
2021-07-06T06:31:48.5186273Z scanpy/tests/test_score_genes.py::test_score_with_reference PASSED [ 96%]
2021-07-06T06:31:48.5727577Z scanpy/tests/test_score_genes.py::test_add_score PASSED [ 96%]
2021-07-06T06:31:48.5813830Z scanpy/tests/test_score_genes.py::test_sparse_nanmean PASSED [ 96%]
2021-07-06T06:31:48.5833655Z scanpy/tests/test_score_genes.py::test_sparse_nanmean_on_dense_matrix PASSED [ 96%]
2021-07-06T06:31:48.6501583Z scanpy/tests/test_score_genes.py::test_score_genes_sparse_vs_dense PASSED [ 97%]
2021-07-06T06:31:48.7087465Z scanpy/tests/test_score_genes.py::test_score_genes_deplete PASSED [ 97%]
2021-07-06T06:31:48.7728377Z scanpy/tests/test_score_genes.py::test_npnanmean_vs_sparsemean PASSED [ 97%]
2021-07-06T06:31:48.8068042Z scanpy/tests/test_score_genes.py::test_missing_genes PASSED [ 97%]
2021-07-06T06:31:48.8496645Z scanpy/tests/test_score_genes.py::test_one_gene PASSED [ 97%]
2021-07-06T06:31:48.8974845Z scanpy/tests/test_sim.py::test_sim_toggleswitch PASSED [ 97%]
2021-07-06T06:31:48.8994671Z scanpy/tests/test_utils.py::test_descend_classes_and_funcs PASSED [ 97%]
2021-07-06T06:31:48.9050249Z scanpy/tests/test_utils.py::test_check_nonnegative_integers PASSED [ 97%]
2021-07-06T06:31:48.9075144Z scanpy/tests/test_utils.py::test_is_constant[asarray] PASSED [ 98%]
2021-07-06T06:31:49.1942764Z scanpy/tests/test_utils.py::test_is_constant[csr_matrix] PASSED [ 98%]
2021-07-06T06:31:49.1981293Z scanpy/tests/test_utils.py::test_is_constant[csc_matrix] PASSED [ 98%]
2021-07-06T06:31:57.7694436Z scanpy/tests/external/test_harmony_integrate.py::test_harmony_integrate PASSED [ 98%]
2021-07-06T06:31:58.1575665Z scanpy/tests/external/test_hashsolo.py::test_cell_demultiplexing PASSED [ 98%]
2021-07-06T06:31:58.1745771Z scanpy/tests/external/test_magic.py::test_magic_default PASSED [ 98%]
2021-07-06T06:31:58.1900355Z scanpy/tests/external/test_magic.py::test_magic_pca_only PASSED [ 98%]
2021-07-06T06:31:58.2028352Z scanpy/tests/external/test_magic.py::test_magic_copy PASSED [ 99%]
2021-07-06T06:31:58.5780199Z scanpy/tests/external/test_scanorama_integrate.py::test_scanorama_integrate PASSED [ 99%]
2021-07-06T06:32:03.1951699Z scanpy/tests/external/test_scrublet.py::test_scrublet PASSED [ 99%]
2021-07-06T06:32:04.3085757Z scanpy/tests/external/test_scrublet.py::test_scrublet_dense PASSED [ 99%]
2021-07-06T06:32:07.8846343Z scanpy/tests/external/test_scrublet.py::test_scrublet_params PASSED [ 99%]
2021-07-06T06:32:08.8283664Z scanpy/tests/external/test_scrublet.py::test_scrublet_simulate_doublets PASSED [ 99%]
2021-07-06T06:32:10.9056664Z scanpy/tests/notebooks/test_paga_paul15_subsampled.py::test_paga_paul15_subsampled FAILED [ 99%]
2021-07-06T06:32:25.2438961Z scanpy/tests/notebooks/test_pbmc3k.py::test_pbmc3k FAILED [100%]
2021-07-06T06:32:25.2439869Z
2021-07-06T06:32:25.2440494Z ==================================== ERRORS ====================================
2021-07-06T06:32:25.2441517Z ____________________ ERROR at setup of test_representation _____________________
2021-07-06T06:32:25.2442042Z
2021-07-06T06:32:25.2443397Z fmt_ = 'lowering "{inst}" at {loc}', args = ()
2021-07-06T06:32:25.2444954Z kwargs = {'inst': id=0[LoopNest(index_variable = parfor_index.31, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/host...c': Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)}
2021-07-06T06:32:25.2446538Z errcls = functools.partial(<class 'numba.core.errors.LoweringError'>, loc=Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None))
2021-07-06T06:32:25.2447909Z loc = Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)
2021-07-06T06:32:25.2450963Z newerr = LoweringError('Failed in nopython mode pipeline (step: nopython mode backend)\nNo threading layer could be loaded.\nHI...or_index.31, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)')
2021-07-06T06:32:25.2451895Z tb = None
2021-07-06T06:32:25.2452130Z
2021-07-06T06:32:25.2452489Z @contextlib.contextmanager
2021-07-06T06:32:25.2453144Z def new_error_context(fmt_, *args, **kwargs):
2021-07-06T06:32:25.2453595Z """
2021-07-06T06:32:25.2454080Z A contextmanager that prepend contextual information to any exception
2021-07-06T06:32:25.2454946Z raised within. If the exception type is not an instance of NumbaError,
2021-07-06T06:32:25.2455557Z it will be wrapped into a InternalError. The exception class can be
2021-07-06T06:32:25.2456145Z changed by providing a "errcls_" keyword argument with the exception
2021-07-06T06:32:25.2456824Z constructor.
2021-07-06T06:32:25.2457176Z
2021-07-06T06:32:25.2457639Z The first argument is a message that describes the context. It can be a
2021-07-06T06:32:25.2458351Z format string. If there are additional arguments, it will be used as
2021-07-06T06:32:25.2459249Z ``fmt_.format(*args, **kwargs)`` to produce the final message string.
2021-07-06T06:32:25.2459682Z """
2021-07-06T06:32:25.2460339Z errcls = kwargs.pop('errcls_', InternalError)
2021-07-06T06:32:25.2460777Z
2021-07-06T06:32:25.2461524Z loc = kwargs.get('loc', None)
2021-07-06T06:32:25.2462430Z if loc is not None and not loc.filename.startswith(_numba_path):
2021-07-06T06:32:25.2463334Z loc_info.update(kwargs)
2021-07-06T06:32:25.2463922Z
2021-07-06T06:32:25.2464300Z try:
2021-07-06T06:32:25.2465384Z > yield
2021-07-06T06:32:25.2465665Z
2021-07-06T06:32:25.2466494Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/errors.py:744:
2021-07-06T06:32:25.2467209Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2467570Z
2021-07-06T06:32:25.2467991Z self = <numba.core.lowering.Lower object at 0x7f16abaca350>
2021-07-06T06:32:25.2468857Z block = <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (401)>
2021-07-06T06:32:25.2469297Z
2021-07-06T06:32:25.2469721Z def lower_block(self, block):
2021-07-06T06:32:25.2471798Z """
2021-07-06T06:32:25.2472256Z Lower the given block.
2021-07-06T06:32:25.2472830Z """
2021-07-06T06:32:25.2473209Z self.pre_block(block)
2021-07-06T06:32:25.2473847Z for inst in block.body:
2021-07-06T06:32:25.2474414Z self.loc = inst.loc
2021-07-06T06:32:25.2476349Z defaulterrcls = partial(LoweringError, loc=self.loc)
2021-07-06T06:32:25.2477477Z with new_error_context('lowering "{inst}" at {loc}', inst=inst,
2021-07-06T06:32:25.2480632Z loc=self.loc, errcls_=defaulterrcls):
2021-07-06T06:32:25.2481335Z > self.lower_inst(inst)
2021-07-06T06:32:25.2481702Z
2021-07-06T06:32:25.2482581Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:230:
2021-07-06T06:32:25.2483387Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2483817Z
2021-07-06T06:32:25.2484410Z self = <numba.core.lowering.Lower object at 0x7f16abaca350>
2021-07-06T06:32:25.2485970Z inst = id=0[LoopNest(index_variable = parfor_index.31, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.31, umap_.py:404)
2021-07-06T06:32:25.2487637Z
2021-07-06T06:32:25.2488302Z def lower_inst(self, inst):
2021-07-06T06:32:25.2488962Z # Set debug location for all subsequent LL instructions
2021-07-06T06:32:25.2489602Z self.debuginfo.mark_location(self.builder, self.loc)
2021-07-06T06:32:25.2490210Z self.debug_print(str(inst))
2021-07-06T06:32:25.2490774Z if isinstance(inst, ir.Assign):
2021-07-06T06:32:25.2492407Z ty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2493015Z val = self.lower_assign(ty, inst)
2021-07-06T06:32:25.2493609Z self.storevar(val, inst.target.name)
2021-07-06T06:32:25.2494119Z
2021-07-06T06:32:25.2494648Z elif isinstance(inst, ir.Branch):
2021-07-06T06:32:25.2495391Z cond = self.loadvar(inst.cond.name)
2021-07-06T06:32:25.2497130Z tr = self.blkmap[inst.truebr]
2021-07-06T06:32:25.2498175Z fl = self.blkmap[inst.falsebr]
2021-07-06T06:32:25.2498701Z
2021-07-06T06:32:25.2499212Z condty = self.typeof(inst.cond.name)
2021-07-06T06:32:25.2499869Z pred = self.context.cast(self.builder, cond, condty, types.boolean)
2021-07-06T06:32:25.2500583Z assert pred.type == Type.int(1), ("cond is not i1: %s" % pred.type)
2021-07-06T06:32:25.2501255Z self.builder.cbranch(pred, tr, fl)
2021-07-06T06:32:25.2501756Z
2021-07-06T06:32:25.2502537Z elif isinstance(inst, ir.Jump):
2021-07-06T06:32:25.2503109Z target = self.blkmap[inst.target]
2021-07-06T06:32:25.2503660Z self.builder.branch(target)
2021-07-06T06:32:25.2504126Z
2021-07-06T06:32:25.2505712Z elif isinstance(inst, ir.Return):
2021-07-06T06:32:25.2508740Z if self.generator_info:
2021-07-06T06:32:25.2509344Z # StopIteration
2021-07-06T06:32:25.2509866Z self.genlower.return_from_generator(self)
2021-07-06T06:32:25.2510338Z return
2021-07-06T06:32:25.2510796Z val = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2511465Z oty = self.typeof(inst.value.name)
2021-07-06T06:32:25.2511949Z ty = self.fndesc.restype
2021-07-06T06:32:25.2512426Z if isinstance(ty, types.Optional):
2021-07-06T06:32:25.2512947Z # If returning an optional type
2021-07-06T06:32:25.2513500Z self.call_conv.return_optional_value(self.builder, ty, oty, val)
2021-07-06T06:32:25.2514010Z return
2021-07-06T06:32:25.2515176Z assert ty == oty, (
2021-07-06T06:32:25.2516695Z "type '{}' does not match return type '{}'".format(oty, ty))
2021-07-06T06:32:25.2517329Z retval = self.context.get_return_value(self.builder, ty, val)
2021-07-06T06:32:25.2517903Z self.call_conv.return_value(self.builder, retval)
2021-07-06T06:32:25.2518332Z
2021-07-06T06:32:25.2518803Z elif isinstance(inst, ir.StaticSetItem):
2021-07-06T06:32:25.2519309Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2519795Z assert signature is not None
2021-07-06T06:32:25.2520228Z try:
2021-07-06T06:32:25.2520972Z impl = self.context.get_function('static_setitem', signature)
2021-07-06T06:32:25.2522385Z except NotImplementedError:
2021-07-06T06:32:25.2522959Z return self.lower_setitem(inst.target, inst.index_var,
2021-07-06T06:32:25.2523508Z inst.value, signature)
2021-07-06T06:32:25.2523992Z else:
2021-07-06T06:32:25.2524443Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2524967Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2525461Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.2526006Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.2526563Z signature.args[2])
2021-07-06T06:32:25.2527117Z return impl(self.builder, (target, inst.index, value))
2021-07-06T06:32:25.2527589Z
2021-07-06T06:32:25.2528006Z elif isinstance(inst, ir.Print):
2021-07-06T06:32:25.2528464Z self.lower_print(inst)
2021-07-06T06:32:25.2528861Z
2021-07-06T06:32:25.2529689Z elif isinstance(inst, ir.SetItem):
2021-07-06T06:32:25.2530697Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2531231Z assert signature is not None
2021-07-06T06:32:25.2531770Z return self.lower_setitem(inst.target, inst.index, inst.value,
2021-07-06T06:32:25.2532291Z signature)
2021-07-06T06:32:25.2532715Z
2021-07-06T06:32:25.2533129Z elif isinstance(inst, ir.StoreMap):
2021-07-06T06:32:25.2533640Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2534104Z assert signature is not None
2021-07-06T06:32:25.2562435Z return self.lower_setitem(inst.dct, inst.key, inst.value, signature)
2021-07-06T06:32:25.2562836Z
2021-07-06T06:32:25.2563152Z elif isinstance(inst, ir.DelItem):
2021-07-06T06:32:25.2563547Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2563909Z index = self.loadvar(inst.index.name)
2021-07-06T06:32:25.2564212Z
2021-07-06T06:32:25.2564500Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2564864Z indexty = self.typeof(inst.index.name)
2021-07-06T06:32:25.2565165Z
2021-07-06T06:32:25.2566272Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2566727Z assert signature is not None
2021-07-06T06:32:25.2566998Z
2021-07-06T06:32:25.2567274Z op = operator.delitem
2021-07-06T06:32:25.2567637Z fnop = self.context.typing_context.resolve_value_type(op)
2021-07-06T06:32:25.2568032Z callsig = fnop.get_call_type(
2021-07-06T06:32:25.2568414Z self.context.typing_context, signature.args, {},
2021-07-06T06:32:25.2568739Z )
2021-07-06T06:32:25.2569428Z impl = self.context.get_function(fnop, callsig)
2021-07-06T06:32:25.2569720Z
2021-07-06T06:32:25.2570185Z assert targetty == signature.args[0]
2021-07-06T06:32:25.2570568Z index = self.context.cast(self.builder, index, indexty,
2021-07-06T06:32:25.2570980Z signature.args[1])
2021-07-06T06:32:25.2571275Z
2021-07-06T06:32:25.2571582Z return impl(self.builder, (target, index))
2021-07-06T06:32:25.2571873Z
2021-07-06T06:32:25.2572173Z elif isinstance(inst, ir.Del):
2021-07-06T06:32:25.2572508Z self.delvar(inst.value)
2021-07-06T06:32:25.2572768Z
2021-07-06T06:32:25.2573076Z elif isinstance(inst, ir.SetAttr):
2021-07-06T06:32:25.2573446Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2574275Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2574655Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2574974Z
2021-07-06T06:32:25.2575258Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2575637Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.2575976Z assert signature is not None
2021-07-06T06:32:25.2576315Z assert signature.args[0] == targetty
2021-07-06T06:32:25.2576712Z impl = self.context.get_setattr(inst.attr, signature)
2021-07-06T06:32:25.2577019Z
2021-07-06T06:32:25.2577302Z # Convert argument to match
2021-07-06T06:32:25.2577670Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.2578085Z signature.args[1])
2021-07-06T06:32:25.2578536Z
2021-07-06T06:32:25.2578831Z return impl(self.builder, (target, value))
2021-07-06T06:32:25.2579114Z
2021-07-06T06:32:25.2579401Z elif isinstance(inst, ir.StaticRaise):
2021-07-06T06:32:25.2579770Z self.lower_static_raise(inst)
2021-07-06T06:32:25.2580032Z
2021-07-06T06:32:25.2580530Z elif isinstance(inst, ir.StaticTryRaise):
2021-07-06T06:32:25.2580902Z self.lower_static_try_raise(inst)
2021-07-06T06:32:25.2581197Z
2021-07-06T06:32:25.2581424Z else:
2021-07-06T06:32:25.2581788Z for _class, func in lower_extensions.items():
2021-07-06T06:32:25.2582201Z if isinstance(inst, _class):
2021-07-06T06:32:25.2582755Z > func(self, inst)
2021-07-06T06:32:25.2582911Z
2021-07-06T06:32:25.2583774Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:443:
2021-07-06T06:32:25.2584319Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2585073Z
2021-07-06T06:32:25.2585440Z lowerer = <numba.core.lowering.Lower object at 0x7f16abaca350>
2021-07-06T06:32:25.2587229Z parfor = id=0[LoopNest(index_variable = parfor_index.31, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.31, umap_.py:404)
2021-07-06T06:32:25.2587782Z
2021-07-06T06:32:25.2588098Z def _lower_parfor_parallel(lowerer, parfor):
2021-07-06T06:32:25.2588489Z """Lowerer that handles LLVM code generation for parfor.
2021-07-06T06:32:25.2588863Z This function lowers a parfor IR node to LLVM.
2021-07-06T06:32:25.2589246Z The general approach is as follows:
2021-07-06T06:32:25.2589833Z 1) The code from the parfor's init block is lowered normally
2021-07-06T06:32:25.2590427Z in the context of the current function.
2021-07-06T06:32:25.2590825Z 2) The body of the parfor is transformed into a gufunc function.
2021-07-06T06:32:25.2591281Z 3) Code is inserted into the main function that calls do_scheduling
2021-07-06T06:32:25.2591716Z to divide the iteration space for each thread, allocates
2021-07-06T06:32:25.2592159Z reduction arrays, calls the gufunc function, and then invokes
2021-07-06T06:32:25.2593497Z the reduction function across the reduction arrays to produce
2021-07-06T06:32:25.2593919Z the final reduction values.
2021-07-06T06:32:25.2594198Z """
2021-07-06T06:32:25.2594527Z from numba.np.ufunc.parallel import get_thread_count
2021-07-06T06:32:25.2594830Z
2021-07-06T06:32:25.2595085Z ensure_parallel_support()
2021-07-06T06:32:25.2595438Z typingctx = lowerer.context.typing_context
2021-07-06T06:32:25.2596103Z targetctx = lowerer.context
2021-07-06T06:32:25.2596819Z # We copy the typemap here because for race condition variable we'll
2021-07-06T06:32:25.2597281Z # update their type to array so they can be updated by the gufunc.
2021-07-06T06:32:25.2597693Z orig_typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.2598109Z # replace original typemap with copy and restore the original at the end.
2021-07-06T06:32:25.2598551Z lowerer.fndesc.typemap = copy.copy(orig_typemap)
2021-07-06T06:32:25.2598917Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2599474Z print("lowerer.fndesc", lowerer.fndesc, type(lowerer.fndesc))
2021-07-06T06:32:25.2599841Z typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.2600338Z varmap = lowerer.varmap
2021-07-06T06:32:25.2600756Z
2021-07-06T06:32:25.2601018Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2601591Z print("_lower_parfor_parallel")
2021-07-06T06:32:25.2602053Z parfor.dump()
2021-07-06T06:32:25.2602307Z
2021-07-06T06:32:25.2602556Z loc = parfor.init_block.loc
2021-07-06T06:32:25.2602878Z scope = parfor.init_block.scope
2021-07-06T06:32:25.2603313Z
2021-07-06T06:32:25.2603588Z # produce instructions for init_block
2021-07-06T06:32:25.2603953Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2604354Z print("init_block = ", parfor.init_block, " ", type(parfor.init_block))
2021-07-06T06:32:25.2604806Z for instr in parfor.init_block.body:
2021-07-06T06:32:25.2605177Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2605563Z print("lower init_block instr = ", instr)
2021-07-06T06:32:25.2605913Z lowerer.lower_inst(instr)
2021-07-06T06:32:25.2606194Z
2021-07-06T06:32:25.2606470Z for racevar in parfor.races:
2021-07-06T06:32:25.2606838Z if racevar not in varmap:
2021-07-06T06:32:25.2607177Z rvtyp = typemap[racevar]
2021-07-06T06:32:25.2607516Z rv = ir.Var(scope, racevar, loc)
2021-07-06T06:32:25.2608709Z lowerer._alloca_var(rv.name, rvtyp)
2021-07-06T06:32:25.2609065Z
2021-07-06T06:32:25.2609549Z alias_map = {}
2021-07-06T06:32:25.2609974Z arg_aliases = {}
2021-07-06T06:32:25.2610521Z numba.parfors.parfor.find_potential_aliases_parfor(parfor, parfor.params, typemap,
2021-07-06T06:32:25.2611328Z lowerer.func_ir, alias_map, arg_aliases)
2021-07-06T06:32:25.2611742Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2612240Z print("alias_map", alias_map)
2021-07-06T06:32:25.2616941Z print("arg_aliases", arg_aliases)
2021-07-06T06:32:25.2617244Z
2021-07-06T06:32:25.2617585Z # run get_parfor_outputs() and get_parfor_reductions() before gufunc creation
2021-07-06T06:32:25.2618072Z # since Jumps are modified so CFG of loop_body dict will become invalid
2021-07-06T06:32:25.2618463Z assert parfor.params is not None
2021-07-06T06:32:25.2618751Z
2021-07-06T06:32:25.2619067Z parfor_output_arrays = numba.parfors.parfor.get_parfor_outputs(
2021-07-06T06:32:25.2619454Z parfor, parfor.params)
2021-07-06T06:32:25.2619844Z parfor_redvars, parfor_reddict = numba.parfors.parfor.get_parfor_reductions(
2021-07-06T06:32:25.2620336Z lowerer.func_ir, parfor, parfor.params, lowerer.fndesc.calltypes)
2021-07-06T06:32:25.2620731Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2621265Z print("parfor_redvars:", parfor_redvars)
2021-07-06T06:32:25.2621669Z print("parfor_reddict:", parfor_reddict)
2021-07-06T06:32:25.2621991Z
2021-07-06T06:32:25.2622395Z # init reduction array allocation here.
2021-07-06T06:32:25.2622732Z nredvars = len(parfor_redvars)
2021-07-06T06:32:25.2623041Z redarrs = {}
2021-07-06T06:32:25.2623321Z if nredvars > 0:
2021-07-06T06:32:25.2623701Z # reduction arrays outer dimension equal to thread count
2021-07-06T06:32:25.2624084Z thread_count = get_thread_count()
2021-07-06T06:32:25.2624442Z scope = parfor.init_block.scope
2021-07-06T06:32:25.2624933Z loc = parfor.init_block.loc
2021-07-06T06:32:25.2625344Z pfbdr = ParforLoweringBuilder(lowerer=lowerer, scope=scope, loc=loc)
2021-07-06T06:32:25.2625686Z
2021-07-06T06:32:25.2625960Z # For each reduction variable...
2021-07-06T06:32:25.2626333Z for i in range(nredvars):
2021-07-06T06:32:25.2626876Z redvar_typ = lowerer.fndesc.typemap[parfor_redvars[i]]
2021-07-06T06:32:25.2627289Z redvar = ir.Var(scope, parfor_redvars[i], loc)
2021-07-06T06:32:25.2627677Z redarrvar_typ = redtyp_to_redarraytype(redvar_typ)
2021-07-06T06:32:25.2628056Z reddtype = redarrvar_typ.dtype
2021-07-06T06:32:25.2628402Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2628847Z print("redvar_typ", redvar_typ, redarrvar_typ, reddtype, types.DType(reddtype))
2021-07-06T06:32:25.2629198Z
2021-07-06T06:32:25.2629498Z # If this is reduction over an array,
2021-07-06T06:32:25.2630404Z # the reduction array has just one added per-worker dimension.
2021-07-06T06:32:25.2631066Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.2631660Z redarrdim = redvar_typ.ndim + 1
2021-07-06T06:32:25.2632010Z else:
2021-07-06T06:32:25.2632307Z redarrdim = 1
2021-07-06T06:32:25.2632563Z
2021-07-06T06:32:25.2633089Z # Reduction array is created and initialized to the initial reduction value.
2021-07-06T06:32:25.2633615Z
2021-07-06T06:32:25.2634344Z # First create a var for the numpy empty ufunc.
2021-07-06T06:32:25.2634821Z glbl_np_empty = pfbdr.bind_global_function(
2021-07-06T06:32:25.2635196Z fobj=np.empty,
2021-07-06T06:32:25.2635533Z ftype=get_np_ufunc_typ(np.empty),
2021-07-06T06:32:25.2635877Z args=(
2021-07-06T06:32:25.2636217Z types.UniTuple(types.intp, redarrdim),
2021-07-06T06:32:25.2637350Z types.DType(reddtype),
2021-07-06T06:32:25.2638681Z ),
2021-07-06T06:32:25.2638945Z )
2021-07-06T06:32:25.2639201Z
2021-07-06T06:32:25.2639564Z # Create var for outer dimension size of reduction array equal to number of threads.
2021-07-06T06:32:25.2640052Z num_threads_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.2640409Z cval=thread_count,
2021-07-06T06:32:25.2640743Z typ=types.intp,
2021-07-06T06:32:25.2641757Z name='num_threads',
2021-07-06T06:32:25.2642240Z )
2021-07-06T06:32:25.2642466Z
2021-07-06T06:32:25.2642736Z size_var_list = [num_threads_var]
2021-07-06T06:32:25.2643213Z
2021-07-06T06:32:25.2643507Z # If this is a reduction over an array...
2021-07-06T06:32:25.2643954Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.2644420Z # Add code to get the shape of the array being reduced over.
2021-07-06T06:32:25.2645894Z redshape_var = pfbdr.assign(
2021-07-06T06:32:25.2646293Z rhs=ir.Expr.getattr(redvar, "shape", loc),
2021-07-06T06:32:25.2646879Z typ=types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.2647433Z name="redarr_shape",
2021-07-06T06:32:25.2647745Z )
2021-07-06T06:32:25.2647973Z
2021-07-06T06:32:25.2648345Z # Add the dimension sizes of the array being reduced over to the tuple of sizes pass to empty.
2021-07-06T06:32:25.2649015Z for j in range(redvar_typ.ndim):
2021-07-06T06:32:25.2649406Z onedimvar = pfbdr.assign(
2021-07-06T06:32:25.2650162Z rhs=ir.Expr.static_getitem(redshape_var, j, None, loc),
2021-07-06T06:32:25.2650717Z typ=types.intp,
2021-07-06T06:32:25.2651244Z name="redshapeonedim",
2021-07-06T06:32:25.2651570Z )
2021-07-06T06:32:25.2651914Z size_var_list.append(onedimvar)
2021-07-06T06:32:25.2652209Z
2021-07-06T06:32:25.2652603Z # Empty call takes tuple of sizes. Create here and fill in outer dimension (num threads).
2021-07-06T06:32:25.2653059Z size_var = pfbdr.make_tuple_variable(
2021-07-06T06:32:25.2653733Z size_var_list, name='tuple_size_var',
2021-07-06T06:32:25.2654069Z )
2021-07-06T06:32:25.2654300Z
2021-07-06T06:32:25.2654624Z # Add call to empty passing the size var tuple.
2021-07-06T06:32:25.2655037Z empty_call = pfbdr.call(glbl_np_empty, args=[size_var])
2021-07-06T06:32:25.2655374Z
2021-07-06T06:32:25.2655644Z redarr_var = pfbdr.assign(
2021-07-06T06:32:25.2656040Z rhs=empty_call, typ=redarrvar_typ, name="redarr",
2021-07-06T06:32:25.2656376Z )
2021-07-06T06:32:25.2656632Z
2021-07-06T06:32:25.2657256Z # Remember mapping of original reduction array to the newly created per-worker reduction array.
2021-07-06T06:32:25.2657752Z redarrs[redvar.name] = redarr_var
2021-07-06T06:32:25.2658037Z
2021-07-06T06:32:25.2658340Z init_val = parfor_reddict[parfor_redvars[i]][0]
2021-07-06T06:32:25.2659518Z if init_val is not None:
2021-07-06T06:32:25.2659962Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.2660453Z # Create an array of identity values for the reduction.
2021-07-06T06:32:25.2660879Z # First, create a variable for np.full.
2021-07-06T06:32:25.2661303Z full_func_node = pfbdr.bind_global_function(
2021-07-06T06:32:25.2661675Z fobj=np.full,
2021-07-06T06:32:25.2662056Z ftype=get_np_ufunc_typ(np.full),
2021-07-06T06:32:25.2662568Z args=(
2021-07-06T06:32:25.2662962Z types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.2663351Z reddtype,
2021-07-06T06:32:25.2663705Z types.DType(reddtype),
2021-07-06T06:32:25.2664058Z ),
2021-07-06T06:32:25.2664341Z )
2021-07-06T06:32:25.2664810Z
2021-07-06T06:32:25.2665127Z # Then create a var with the identify value.
2021-07-06T06:32:25.2665562Z init_val_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.2666366Z cval=init_val,
2021-07-06T06:32:25.2667142Z typ=reddtype,
2021-07-06T06:32:25.2667498Z name="init_val",
2021-07-06T06:32:25.2667826Z )
2021-07-06T06:32:25.2668069Z
2021-07-06T06:32:25.2668443Z # Then, call np.full with the shape of the reduction array and the identity value.
2021-07-06T06:32:25.2668928Z full_call = pfbdr.call(
2021-07-06T06:32:25.2669325Z full_func_node, args=[redshape_var, init_val_var],
2021-07-06T06:32:25.2669934Z )
2021-07-06T06:32:25.2670178Z
2021-07-06T06:32:25.2670475Z redtoset = pfbdr.assign(
2021-07-06T06:32:25.2670818Z rhs=full_call,
2021-07-06T06:32:25.2671171Z typ=redvar_typ,
2021-07-06T06:32:25.2671508Z name="redtoset",
2021-07-06T06:32:25.2671833Z )
2021-07-06T06:32:25.2672123Z else:
2021-07-06T06:32:25.2672472Z redtoset = pfbdr.make_const_variable(
2021-07-06T06:32:25.2672859Z cval=init_val,
2021-07-06T06:32:25.2673190Z typ=reddtype,
2021-07-06T06:32:25.2673546Z name="redtoset",
2021-07-06T06:32:25.2673860Z )
2021-07-06T06:32:25.2674159Z else:
2021-07-06T06:32:25.2674460Z redtoset = redvar
2021-07-06T06:32:25.2674744Z
2021-07-06T06:32:25.2675059Z if config.DEBUG_ARRAY_OPT_RUNTIME:
2021-07-06T06:32:25.2675546Z res_print_str = "res_print1 for redvar " + str(redvar) + ":"
2021-07-06T06:32:25.2676057Z strconsttyp = types.StringLiteral(res_print_str)
2021-07-06T06:32:25.2676377Z
2021-07-06T06:32:25.2676687Z lhs = pfbdr.make_const_variable(
2021-07-06T06:32:25.2677053Z cval=res_print_str,
2021-07-06T06:32:25.2677459Z typ=strconsttyp,
2021-07-06T06:32:25.2677805Z name="str_const",
2021-07-06T06:32:25.2678134Z )
2021-07-06T06:32:25.2678377Z
2021-07-06T06:32:25.2678698Z res_print = ir.Print(args=[lhs, redvar],
2021-07-06T06:32:25.2679109Z vararg=None, loc=loc)
2021-07-06T06:32:25.2679544Z lowerer.fndesc.calltypes[res_print] = signature(types.none,
2021-07-06T06:32:25.2680036Z typemap[lhs.name],
2021-07-06T06:32:25.2680507Z typemap[redvar.name])
2021-07-06T06:32:25.2680959Z print("res_print_redvar", res_print)
2021-07-06T06:32:25.2681338Z lowerer.lower_inst(res_print)
2021-07-06T06:32:25.2681795Z
2021-07-06T06:32:25.2681994Z
2021-07-06T06:32:25.2682979Z # For each thread, initialize the per-worker reduction array to the current reduction array value.
2021-07-06T06:32:25.2683481Z for j in range(thread_count):
2021-07-06T06:32:25.2683888Z index_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.2684410Z cval=j, typ=types.uintp, name="index_var",
2021-07-06T06:32:25.2684769Z )
2021-07-06T06:32:25.2685127Z pfbdr.setitem(obj=redarr_var, index=index_var, val=redtoset)
2021-07-06T06:32:25.2685484Z
2021-07-06T06:32:25.2685819Z # compile parfor body as a separate function to be used with GUFuncWrapper
2021-07-06T06:32:25.2686210Z flags = copy.copy(parfor.flags)
2021-07-06T06:32:25.2686760Z flags.set('error_model', 'numpy')
2021-07-06T06:32:25.2687366Z # Can't get here unless flags.set('auto_parallel', ParallelOptions(True))
2021-07-06T06:32:25.2687998Z index_var_typ = typemap[parfor.loop_nests[0].index_variable.name]
2021-07-06T06:32:25.2688420Z # index variables should have the same type, check rest of indices
2021-07-06T06:32:25.2688827Z for l in parfor.loop_nests[1:]:
2021-07-06T06:32:25.2689199Z assert typemap[l.index_variable.name] == index_var_typ
2021-07-06T06:32:25.2690345Z numba.parfors.parfor.sequential_parfor_lowering = True
2021-07-06T06:32:25.2690678Z try:
2021-07-06T06:32:25.2690941Z (func,
2021-07-06T06:32:25.2691350Z func_args,
2021-07-06T06:32:25.2691612Z func_sig,
2021-07-06T06:32:25.2691899Z redargstartdim,
2021-07-06T06:32:25.2692178Z func_arg_types,
2021-07-06T06:32:25.2692535Z exp_name_to_tuple_var) = _create_gufunc_for_parfor_body(
2021-07-06T06:32:25.2692949Z lowerer, parfor, typemap, typingctx, targetctx, flags, {},
2021-07-06T06:32:25.2693369Z bool(alias_map), index_var_typ, parfor.races)
2021-07-06T06:32:25.2693687Z finally:
2021-07-06T06:32:25.2694034Z numba.parfors.parfor.sequential_parfor_lowering = False
2021-07-06T06:32:25.2694523Z
2021-07-06T06:32:25.2694797Z # get the shape signature
2021-07-06T06:32:25.2695726Z func_args = ['sched'] + func_args
2021-07-06T06:32:25.2696088Z num_reductions = len(parfor_redvars)
2021-07-06T06:32:25.2696708Z num_inputs = len(func_args) - len(parfor_output_arrays) - num_reductions
2021-07-06T06:32:25.2698062Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2698506Z print("func_args = ", func_args)
2021-07-06T06:32:25.2698851Z print("num_inputs = ", num_inputs)
2021-07-06T06:32:25.2699241Z print("parfor_outputs = ", parfor_output_arrays)
2021-07-06T06:32:25.2699623Z print("parfor_redvars = ", parfor_redvars)
2021-07-06T06:32:25.2700015Z print("num_reductions = ", num_reductions)
2021-07-06T06:32:25.2700375Z gu_signature = _create_shape_signature(
2021-07-06T06:32:25.2700726Z parfor.get_shape_classes,
2021-07-06T06:32:25.2701023Z num_inputs,
2021-07-06T06:32:25.2701299Z num_reductions,
2021-07-06T06:32:25.2701597Z func_args,
2021-07-06T06:32:25.2701872Z redargstartdim,
2021-07-06T06:32:25.2702179Z func_sig,
2021-07-06T06:32:25.2702611Z parfor.races,
2021-07-06T06:32:25.2702891Z typemap)
2021-07-06T06:32:25.2703181Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2703547Z print("gu_signature = ", gu_signature)
2021-07-06T06:32:25.2703820Z
2021-07-06T06:32:25.2704136Z # call the func in parallel by wrapping it with ParallelGUFuncBuilder
2021-07-06T06:32:25.2704739Z loop_ranges = [(l.start, l.stop, l.step) for l in parfor.loop_nests]
2021-07-06T06:32:25.2705136Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2705499Z print("loop_nests = ", parfor.loop_nests)
2021-07-06T06:32:25.2705848Z print("loop_ranges = ", loop_ranges)
2021-07-06T06:32:25.2706177Z call_parallel_gufunc(
2021-07-06T06:32:25.2706444Z lowerer,
2021-07-06T06:32:25.2706709Z func,
2021-07-06T06:32:25.2706963Z gu_signature,
2021-07-06T06:32:25.2707225Z func_sig,
2021-07-06T06:32:25.2707659Z func_args,
2021-07-06T06:32:25.2707925Z func_arg_types,
2021-07-06T06:32:25.2708214Z loop_ranges,
2021-07-06T06:32:25.2708482Z parfor_redvars,
2021-07-06T06:32:25.2708778Z parfor_reddict,
2021-07-06T06:32:25.2709221Z redarrs,
2021-07-06T06:32:25.2709515Z parfor.init_block,
2021-07-06T06:32:25.2709801Z index_var_typ,
2021-07-06T06:32:25.2710078Z parfor.races,
2021-07-06T06:32:25.2710388Z > exp_name_to_tuple_var)
2021-07-06T06:32:25.2710543Z
2021-07-06T06:32:25.2711426Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/parfors/parfor_lowering.py:306:
2021-07-06T06:32:25.2711980Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2712211Z
2021-07-06T06:32:25.2712526Z lowerer = <numba.core.lowering.Lower object at 0x7f16abaca350>
2021-07-06T06:32:25.2713213Z cres = CompileResult(typing_context=<numba.core.typing.context.Context object at 0x7f16c9149250>, target_context=<numba.core....ollection object at 0x7f16aba24810>}, reload_init=[<function _reload_parfors at 0x7f16c92247a0>], referenced_envs=None)
2021-07-06T06:32:25.2714203Z gu_signature = ([('b',), ('a',)], [])
2021-07-06T06:32:25.2714760Z outer_sig = (array(uint64, 1d, C), array(int32, 1d, C)) -> none
2021-07-06T06:32:25.2715391Z expr_args = ['sched', 'rows'], expr_arg_types = [array(int32, 1d, C)]
2021-07-06T06:32:25.2715856Z loop_ranges = [(0, Var($28load_attr.11, umap_.py:404), 1)], redvars = []
2021-07-06T06:32:25.2716264Z reddict = {}, redarrdict = {}
2021-07-06T06:32:25.2716923Z init_block = <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>
2021-07-06T06:32:25.2717445Z index_var_typ = uint64, races = set(), exp_name_to_tuple_var = {}
2021-07-06T06:32:25.2717651Z
2021-07-06T06:32:25.2717997Z def call_parallel_gufunc(lowerer, cres, gu_signature, outer_sig, expr_args, expr_arg_types,
2021-07-06T06:32:25.2718542Z loop_ranges, redvars, reddict, redarrdict, init_block, index_var_typ, races,
2021-07-06T06:32:25.2719020Z exp_name_to_tuple_var):
2021-07-06T06:32:25.2719509Z '''
2021-07-06T06:32:25.2719848Z Adds the call to the gufunc function from the main function.
2021-07-06T06:32:25.2720325Z '''
2021-07-06T06:32:25.2720606Z context = lowerer.context
2021-07-06T06:32:25.2720908Z builder = lowerer.builder
2021-07-06T06:32:25.2721184Z
2021-07-06T06:32:25.2721492Z from numba.np.ufunc.parallel import (build_gufunc_wrapper,
2021-07-06T06:32:25.2721894Z get_thread_count,
2021-07-06T06:32:25.2722244Z _launch_threads)
2021-07-06T06:32:25.2722553Z
2021-07-06T06:32:25.2722825Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2723177Z print("make_parallel_loop")
2021-07-06T06:32:25.2723553Z print("outer_sig = ", outer_sig.args, outer_sig.return_type,
2021-07-06T06:32:25.2724124Z outer_sig.recvr, outer_sig.pysig)
2021-07-06T06:32:25.2724469Z print("loop_ranges = ", loop_ranges)
2021-07-06T06:32:25.2724800Z print("expr_args", expr_args)
2021-07-06T06:32:25.2725149Z print("expr_arg_types", expr_arg_types)
2021-07-06T06:32:25.2725492Z print("gu_signature", gu_signature)
2021-07-06T06:32:25.2725775Z
2021-07-06T06:32:25.2726029Z # Build the wrapper for GUFunc
2021-07-06T06:32:25.2726582Z args, return_type = sigutils.normalize_signature(outer_sig)
2021-07-06T06:32:25.2727007Z llvm_func = cres.library.get_function(cres.fndesc.llvm_func_name)
2021-07-06T06:32:25.2727390Z sin, sout = gu_signature
2021-07-06T06:32:25.2727646Z
2021-07-06T06:32:25.2727975Z # These are necessary for build_gufunc_wrapper to find external symbols
2021-07-06T06:32:25.2728359Z > _launch_threads()
2021-07-06T06:32:25.2728593Z
2021-07-06T06:32:25.2729291Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/parfors/parfor_lowering.py:1442:
2021-07-06T06:32:25.2729849Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2730079Z
2021-07-06T06:32:25.2730348Z def _launch_threads():
2021-07-06T06:32:25.2730688Z if not _backend_init_process_lock:
2021-07-06T06:32:25.2731054Z _set_init_process_lock()
2021-07-06T06:32:25.2731317Z
2021-07-06T06:32:25.2731620Z with _backend_init_process_lock:
2021-07-06T06:32:25.2731992Z with _backend_init_thread_lock:
2021-07-06T06:32:25.2732341Z global _is_initialized
2021-07-06T06:32:25.2732691Z if _is_initialized:
2021-07-06T06:32:25.2733006Z return
2021-07-06T06:32:25.2733272Z
2021-07-06T06:32:25.2733578Z def select_known_backend(backend):
2021-07-06T06:32:25.2733937Z """
2021-07-06T06:32:25.2734298Z Loads a specific threading layer backend based on string
2021-07-06T06:32:25.2734672Z """
2021-07-06T06:32:25.2735048Z lib = None
2021-07-06T06:32:25.2735396Z if backend.startswith("tbb"):
2021-07-06T06:32:25.2735776Z try:
2021-07-06T06:32:25.2736725Z # check if TBB is present and compatible
2021-07-06T06:32:25.2737596Z _check_tbb_version_compatible()
2021-07-06T06:32:25.2737952Z # now try and load the backend
2021-07-06T06:32:25.2738358Z from numba.np.ufunc import tbbpool as lib
2021-07-06T06:32:25.2738742Z except ImportError:
2021-07-06T06:32:25.2739089Z pass
2021-07-06T06:32:25.2739801Z elif backend.startswith("omp"):
2021-07-06T06:32:25.2740237Z # TODO: Check that if MKL is present that it is a version
2021-07-06T06:32:25.2740682Z # that understands GNU OMP might be present
2021-07-06T06:32:25.2741050Z try:
2021-07-06T06:32:25.2741409Z from numba.np.ufunc import omppool as lib
2021-07-06T06:32:25.2741793Z except ImportError:
2021-07-06T06:32:25.2742324Z pass
2021-07-06T06:32:25.2742692Z elif backend.startswith("workqueue"):
2021-07-06T06:32:25.2743136Z from numba.np.ufunc import workqueue as lib
2021-07-06T06:32:25.2743494Z else:
2021-07-06T06:32:25.2743926Z msg = "Unknown value specified for threading layer: %s"
2021-07-06T06:32:25.2744375Z raise ValueError(msg % backend)
2021-07-06T06:32:25.2749843Z return lib
2021-07-06T06:32:25.2750120Z
2021-07-06T06:32:25.2750449Z def select_from_backends(backends):
2021-07-06T06:32:25.2750807Z """
2021-07-06T06:32:25.2751170Z Selects from presented backends and returns the first working
2021-07-06T06:32:25.2751569Z """
2021-07-06T06:32:25.2751851Z lib = None
2021-07-06T06:32:25.2752209Z for backend in backends:
2021-07-06T06:32:25.2752598Z lib = select_known_backend(backend)
2021-07-06T06:32:25.2753002Z if lib is not None:
2021-07-06T06:32:25.2753347Z break
2021-07-06T06:32:25.2753668Z else:
2021-07-06T06:32:25.2754677Z backend = ''
2021-07-06T06:32:25.2755091Z return lib, backend
2021-07-06T06:32:25.2755384Z
2021-07-06T06:32:25.2755674Z t = str(config.THREADING_LAYER).lower()
2021-07-06T06:32:25.2756368Z namedbackends = ['tbb', 'omp', 'workqueue']
2021-07-06T06:32:25.2756685Z
2021-07-06T06:32:25.2757151Z lib = None
2021-07-06T06:32:25.2757449Z err_helpers = dict()
2021-07-06T06:32:25.2758093Z err_helpers['TBB'] = ("Intel TBB is required, try:\n"
2021-07-06T06:32:25.2758562Z "$ conda/pip install tbb")
2021-07-06T06:32:25.2759241Z err_helpers['OSX_OMP'] = ("Intel OpenMP is required, try:\n"
2021-07-06T06:32:25.2759934Z "$ conda/pip install intel-openmp")
2021-07-06T06:32:25.2760492Z requirements = []
2021-07-06T06:32:25.2760742Z
2021-07-06T06:32:25.2761031Z def raise_with_hint(required):
2021-07-06T06:32:25.2761441Z errmsg = "No threading layer could be loaded.\n%s"
2021-07-06T06:32:25.2761823Z hintmsg = "HINT:\n%s"
2021-07-06T06:32:25.2762555Z if len(required) == 0:
2021-07-06T06:32:25.2763041Z hint = ''
2021-07-06T06:32:25.2763404Z if len(required) == 1:
2021-07-06T06:32:25.2763784Z hint = hintmsg % err_helpers[required[0]]
2021-07-06T06:32:25.2764529Z if len(required) > 1:
2021-07-06T06:32:25.2766130Z options = '\nOR\n'.join([err_helpers[x] for x in required])
2021-07-06T06:32:25.2767975Z hint = hintmsg % ("One of:\n%s" % options)
2021-07-06T06:32:25.2768413Z raise ValueError(errmsg % hint)
2021-07-06T06:32:25.2768700Z
2021-07-06T06:32:25.2769002Z if t in namedbackends:
2021-07-06T06:32:25.2769410Z # Try and load the specific named backend
2021-07-06T06:32:25.2769808Z lib = select_known_backend(t)
2021-07-06T06:32:25.2770149Z if not lib:
2021-07-06T06:32:25.2770559Z # something is missing preventing a valid backend from
2021-07-06T06:32:25.2770988Z # loading, set requirements for hinting
2021-07-06T06:32:25.2771675Z if t == 'tbb':
2021-07-06T06:32:25.2772226Z requirements.append('TBB')
2021-07-06T06:32:25.2772827Z elif t == 'omp' and _IS_OSX:
2021-07-06T06:32:25.2773901Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.2774678Z libname = t
2021-07-06T06:32:25.2775384Z elif t in ['threadsafe', 'forksafe', 'safe']:
2021-07-06T06:32:25.2775821Z # User wants a specific behaviour...
2021-07-06T06:32:25.2776359Z available = ['tbb']
2021-07-06T06:32:25.2776864Z requirements.append('TBB')
2021-07-06T06:32:25.2777241Z if t == "safe":
2021-07-06T06:32:25.2777645Z # "safe" is TBB, which is fork and threadsafe everywhere
2021-07-06T06:32:25.2778037Z pass
2021-07-06T06:32:25.2778371Z elif t == "threadsafe":
2021-07-06T06:32:25.2778766Z if _IS_OSX:
2021-07-06T06:32:25.2779470Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.2779875Z # omp is threadsafe everywhere
2021-07-06T06:32:25.2780569Z available.append('omp')
2021-07-06T06:32:25.2780938Z elif t == "forksafe":
2021-07-06T06:32:25.2781378Z # everywhere apart from linux (GNU OpenMP) has a guaranteed
2021-07-06T06:32:25.2781849Z # forksafe OpenMP, as OpenMP has better performance, prefer
2021-07-06T06:32:25.2782283Z # this to workqueue
2021-07-06T06:32:25.2782636Z if not _IS_LINUX:
2021-07-06T06:32:25.2783192Z available.append('omp')
2021-07-06T06:32:25.2784311Z if _IS_OSX:
2021-07-06T06:32:25.2786094Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.2786542Z # workqueue is forksafe everywhere
2021-07-06T06:32:25.2787353Z available.append('workqueue')
2021-07-06T06:32:25.2787734Z else: # unreachable
2021-07-06T06:32:25.2788139Z msg = "No threading layer available for purpose %s"
2021-07-06T06:32:25.2788556Z raise ValueError(msg % t)
2021-07-06T06:32:25.2788907Z # select amongst available
2021-07-06T06:32:25.2789302Z lib, libname = select_from_backends(available)
2021-07-06T06:32:25.2789852Z elif t == 'default':
2021-07-06T06:32:25.2790441Z # If default is supplied, try them in order, tbb, omp,
2021-07-06T06:32:25.2790797Z # workqueue
2021-07-06T06:32:25.2791164Z lib, libname = select_from_backends(namedbackends)
2021-07-06T06:32:25.2791527Z if not lib:
2021-07-06T06:32:25.2791882Z # set requirements for hinting
2021-07-06T06:32:25.2792411Z requirements.append('TBB')
2021-07-06T06:32:25.2793705Z if _IS_OSX:
2021-07-06T06:32:25.2794569Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.2795306Z else:
2021-07-06T06:32:25.2796131Z msg = "The threading layer requested '%s' is unknown to Numba."
2021-07-06T06:32:25.2796547Z raise ValueError(msg % t)
2021-07-06T06:32:25.2796842Z
2021-07-06T06:32:25.2797120Z # No lib found, raise and hint
2021-07-06T06:32:25.2797465Z if not lib:
2021-07-06T06:32:25.2797800Z > raise_with_hint(requirements)
2021-07-06T06:32:25.2797980Z
2021-07-06T06:32:25.2798637Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/np/ufunc/parallel.py:499:
2021-07-06T06:32:25.2799171Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2799433Z
2021-07-06T06:32:25.2801265Z required = ['TBB']
2021-07-06T06:32:25.2801429Z
2021-07-06T06:32:25.2802482Z def raise_with_hint(required):
2021-07-06T06:32:25.2802880Z errmsg = "No threading layer could be loaded.\n%s"
2021-07-06T06:32:25.2804517Z hintmsg = "HINT:\n%s"
2021-07-06T06:32:25.2806274Z if len(required) == 0:
2021-07-06T06:32:25.2807251Z hint = ''
2021-07-06T06:32:25.2807615Z if len(required) == 1:
2021-07-06T06:32:25.2807963Z hint = hintmsg % err_helpers[required[0]]
2021-07-06T06:32:25.2808328Z if len(required) > 1:
2021-07-06T06:32:25.2808904Z options = '\nOR\n'.join([err_helpers[x] for x in required])
2021-07-06T06:32:25.2809977Z hint = hintmsg % ("One of:\n%s" % options)
2021-07-06T06:32:25.2810429Z > raise ValueError(errmsg % hint)
2021-07-06T06:32:25.2811142Z E ValueError: No threading layer could be loaded.
2021-07-06T06:32:25.2811690Z E HINT:
2021-07-06T06:32:25.2812230Z E Intel TBB is required, try:
2021-07-06T06:32:25.2812792Z E $ conda/pip install tbb
2021-07-06T06:32:25.2812975Z
2021-07-06T06:32:25.2813641Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/np/ufunc/parallel.py:444: ValueError
2021-07-06T06:32:25.2813962Z
2021-07-06T06:32:25.2815250Z During handling of the above exception, another exception occurred:
2021-07-06T06:32:25.2815527Z
2021-07-06T06:32:25.2815790Z @pytest.fixture
2021-07-06T06:32:25.2816057Z def adatas():
2021-07-06T06:32:25.2816383Z pbmc = sc.datasets.pbmc68k_reduced()
2021-07-06T06:32:25.2816689Z n_split = 500
2021-07-06T06:32:25.2817102Z adata_ref = sc.AnnData(pbmc.X[:n_split, :], obs=pbmc.obs.iloc[:n_split])
2021-07-06T06:32:25.2817575Z adata_new = sc.AnnData(pbmc.X[n_split:, :])
2021-07-06T06:32:25.2817906Z
2021-07-06T06:32:25.2818153Z sc.pp.pca(adata_ref)
2021-07-06T06:32:25.2818594Z > sc.pp.neighbors(adata_ref)
2021-07-06T06:32:25.2818768Z
2021-07-06T06:32:25.2819443Z scanpy/tests/test_ingest.py:34:
2021-07-06T06:32:25.2819881Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2820474Z scanpy/neighbors/__init__.py:147: in neighbors
2021-07-06T06:32:25.2820841Z random_state=random_state,
2021-07-06T06:32:25.2821372Z scanpy/neighbors/__init__.py:812: in compute_neighbors
2021-07-06T06:32:25.2821718Z self.n_neighbors,
2021-07-06T06:32:25.2822282Z scanpy/neighbors/__init__.py:398: in _compute_connectivities_umap
2021-07-06T06:32:25.2822681Z local_connectivity=local_connectivity,
2021-07-06T06:32:25.2823611Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py:568: in fuzzy_simplicial_set
2021-07-06T06:32:25.2824118Z knn_indices, knn_dists, sigmas, rhos, return_dists
2021-07-06T06:32:25.2825143Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:439: in _compile_for_args
2021-07-06T06:32:25.2825775Z raise e
2021-07-06T06:32:25.2826823Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:372: in _compile_for_args
2021-07-06T06:32:25.2827335Z return_val = self.compile(tuple(argtypes))
2021-07-06T06:32:25.2828075Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:909: in compile
2021-07-06T06:32:25.2828576Z cres = self._compiler.compile(args, return_type)
2021-07-06T06:32:25.2829320Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:79: in compile
2021-07-06T06:32:25.2829829Z status, retval = self._compile_cached(args, return_type)
2021-07-06T06:32:25.2830600Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:93: in _compile_cached
2021-07-06T06:32:25.2831115Z retval = self._compile_core(args, return_type)
2021-07-06T06:32:25.2832407Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:111: in _compile_core
2021-07-06T06:32:25.2832913Z pipeline_class=self.pipeline_class)
2021-07-06T06:32:25.2834057Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:606: in compile_extra
2021-07-06T06:32:25.2834613Z return pipeline.compile_extra(func)
2021-07-06T06:32:25.2835452Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:353: in compile_extra
2021-07-06T06:32:25.2835939Z return self._compile_bytecode()
2021-07-06T06:32:25.2836676Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:415: in _compile_bytecode
2021-07-06T06:32:25.2837155Z return self._compile_core()
2021-07-06T06:32:25.2837869Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:395: in _compile_core
2021-07-06T06:32:25.2838321Z raise e
2021-07-06T06:32:25.2839144Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:386: in _compile_core
2021-07-06T06:32:25.2839612Z pm.run(self.state)
2021-07-06T06:32:25.2840274Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:339: in run
2021-07-06T06:32:25.2840928Z raise patched_exception
2021-07-06T06:32:25.2842012Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:330: in run
2021-07-06T06:32:25.2842585Z self._runPass(idx, pass_inst, state)
2021-07-06T06:32:25.2843420Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_lock.py:35: in _acquire_compile_lock
2021-07-06T06:32:25.2843937Z return func(*args, **kwargs)
2021-07-06T06:32:25.2845668Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:289: in _runPass
2021-07-06T06:32:25.2846267Z mutated |= check(pss.run_pass, internal_state)
2021-07-06T06:32:25.2847040Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:262: in check
2021-07-06T06:32:25.2847548Z mangled = func(compiler_state)
2021-07-06T06:32:25.2848248Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/typed_passes.py:463: in run_pass
2021-07-06T06:32:25.2848749Z NativeLowering().run_pass(state)
2021-07-06T06:32:25.2849606Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/typed_passes.py:384: in run_pass
2021-07-06T06:32:25.2850273Z lower.lower()
2021-07-06T06:32:25.2851122Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:136: in lower
2021-07-06T06:32:25.2851788Z self.lower_normal_function(self.fndesc)
2021-07-06T06:32:25.2852682Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:190: in lower_normal_function
2021-07-06T06:32:25.2853358Z entry_block_tail = self.lower_function_body()
2021-07-06T06:32:25.2854303Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:216: in lower_function_body
2021-07-06T06:32:25.2854798Z self.lower_block(block)
2021-07-06T06:32:25.2855482Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:230: in lower_block
2021-07-06T06:32:25.2855960Z self.lower_inst(inst)
2021-07-06T06:32:25.2856580Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/contextlib.py:130: in __exit__
2021-07-06T06:32:25.2857025Z self.gen.throw(type, value, traceback)
2021-07-06T06:32:25.2857440Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2857675Z
2021-07-06T06:32:25.2858132Z fmt_ = 'lowering "{inst}" at {loc}', args = ()
2021-07-06T06:32:25.2859232Z kwargs = {'inst': id=0[LoopNest(index_variable = parfor_index.31, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/host...c': Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)}
2021-07-06T06:32:25.2860652Z errcls = functools.partial(<class 'numba.core.errors.LoweringError'>, loc=Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None))
2021-07-06T06:32:25.2862565Z loc = Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)
2021-07-06T06:32:25.2863854Z newerr = LoweringError('Failed in nopython mode pipeline (step: nopython mode backend)\nNo threading layer could be loaded.\nHI...or_index.31, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)')
2021-07-06T06:32:25.2864801Z tb = None
2021-07-06T06:32:25.2864976Z
2021-07-06T06:32:25.2865227Z @contextlib.contextmanager
2021-07-06T06:32:25.2865577Z def new_error_context(fmt_, *args, **kwargs):
2021-07-06T06:32:25.2865926Z """
2021-07-06T06:32:25.2866266Z A contextmanager that prepend contextual information to any exception
2021-07-06T06:32:25.2866736Z raised within. If the exception type is not an instance of NumbaError,
2021-07-06T06:32:25.2867186Z it will be wrapped into a InternalError. The exception class can be
2021-07-06T06:32:25.2867990Z changed by providing a "errcls_" keyword argument with the exception
2021-07-06T06:32:25.2868814Z constructor.
2021-07-06T06:32:25.2869097Z
2021-07-06T06:32:25.2869431Z The first argument is a message that describes the context. It can be a
2021-07-06T06:32:25.2869900Z format string. If there are additional arguments, it will be used as
2021-07-06T06:32:25.2870712Z ``fmt_.format(*args, **kwargs)`` to produce the final message string.
2021-07-06T06:32:25.2871296Z """
2021-07-06T06:32:25.2871913Z errcls = kwargs.pop('errcls_', InternalError)
2021-07-06T06:32:25.2872230Z
2021-07-06T06:32:25.2872682Z loc = kwargs.get('loc', None)
2021-07-06T06:32:25.2873103Z if loc is not None and not loc.filename.startswith(_numba_path):
2021-07-06T06:32:25.2873532Z loc_info.update(kwargs)
2021-07-06T06:32:25.2873792Z
2021-07-06T06:32:25.2874037Z try:
2021-07-06T06:32:25.2874291Z yield
2021-07-06T06:32:25.2874581Z except NumbaError as e:
2021-07-06T06:32:25.2874955Z e.add_context(_format_msg(fmt_, args, kwargs))
2021-07-06T06:32:25.2875272Z raise
2021-07-06T06:32:25.2875575Z except Exception as e:
2021-07-06T06:32:25.2875955Z newerr = errcls(e).add_context(_format_msg(fmt_, args, kwargs))
2021-07-06T06:32:25.2876419Z tb = sys.exc_info()[2] if numba.core.config.FULL_TRACEBACKS else None
2021-07-06T06:32:25.2876924Z > raise newerr.with_traceback(tb)
2021-07-06T06:32:25.2877707Z E numba.core.errors.LoweringError: Failed in nopython mode pipeline (step: nopython mode backend)
2021-07-06T06:32:25.2878952Z E No threading layer could be loaded.
2021-07-06T06:32:25.2879672Z E HINT:
2021-07-06T06:32:25.2880229Z E Intel TBB is required, try:
2021-07-06T06:32:25.2880804Z E $ conda/pip install tbb
2021-07-06T06:32:25.2881275Z E 
2021-07-06T06:32:25.2882152Z E File "../../../../../opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py", line 404:
2021-07-06T06:32:25.2882853Z E def compute_membership_strengths(
2021-07-06T06:32:25.2883359Z E <source elided>
2021-07-06T06:32:25.2884009Z E 
2021-07-06T06:32:25.2884737Z E rows = np.zeros(knn_indices.size, dtype=np.int32)
2021-07-06T06:32:25.2885277Z E ^
2021-07-06T06:32:25.2885698Z E 
2021-07-06T06:32:25.2887257Z E During: lowering "id=0[LoopNest(index_variable = parfor_index.31, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.31, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)
2021-07-06T06:32:25.2888046Z
2021-07-06T06:32:25.2888708Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/errors.py:751: LoweringError
2021-07-06T06:32:25.2889443Z ---------------------------- Captured stderr setup -----------------------------
2021-07-06T06:32:25.2889825Z computing PCA
2021-07-06T06:32:25.2890072Z with n_comps=50
2021-07-06T06:32:25.2890366Z finished (0:00:00)
2021-07-06T06:32:25.2890647Z computing neighbors
2021-07-06T06:32:25.2891083Z using 'X_pca' with n_pcs = 50
2021-07-06T06:32:25.2893288Z _______________________ ERROR at setup of test_neighbors _______________________
2021-07-06T06:32:25.2893584Z
2021-07-06T06:32:25.2894095Z fmt_ = 'lowering "{inst}" at {loc}', args = ()
2021-07-06T06:32:25.2895194Z kwargs = {'inst': id=4[LoopNest(index_variable = parfor_index.212, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hos...c': Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)}
2021-07-06T06:32:25.2896492Z errcls = functools.partial(<class 'numba.core.errors.LoweringError'>, loc=Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None))
2021-07-06T06:32:25.2897442Z loc = Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)
2021-07-06T06:32:25.2898696Z newerr = LoweringError('Failed in nopython mode pipeline (step: nopython mode backend)\nNo threading layer could be loaded.\nHI...r_index.212, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)')
2021-07-06T06:32:25.2899572Z tb = None
2021-07-06T06:32:25.2899708Z
2021-07-06T06:32:25.2899953Z @contextlib.contextmanager
2021-07-06T06:32:25.2900303Z def new_error_context(fmt_, *args, **kwargs):
2021-07-06T06:32:25.2900644Z """
2021-07-06T06:32:25.2900983Z A contextmanager that prepend contextual information to any exception
2021-07-06T06:32:25.2901453Z raised within. If the exception type is not an instance of NumbaError,
2021-07-06T06:32:25.2901902Z it will be wrapped into a InternalError. The exception class can be
2021-07-06T06:32:25.2902365Z changed by providing a "errcls_" keyword argument with the exception
2021-07-06T06:32:25.2902718Z constructor.
2021-07-06T06:32:25.2902973Z
2021-07-06T06:32:25.2903311Z The first argument is a message that describes the context. It can be a
2021-07-06T06:32:25.2903780Z format string. If there are additional arguments, it will be used as
2021-07-06T06:32:25.2904308Z ``fmt_.format(*args, **kwargs)`` to produce the final message string.
2021-07-06T06:32:25.2906284Z """
2021-07-06T06:32:25.2907059Z errcls = kwargs.pop('errcls_', InternalError)
2021-07-06T06:32:25.2907354Z
2021-07-06T06:32:25.2907784Z loc = kwargs.get('loc', None)
2021-07-06T06:32:25.2908450Z if loc is not None and not loc.filename.startswith(_numba_path):
2021-07-06T06:32:25.2908880Z loc_info.update(kwargs)
2021-07-06T06:32:25.2909139Z
2021-07-06T06:32:25.2909386Z try:
2021-07-06T06:32:25.2909637Z > yield
2021-07-06T06:32:25.2909766Z
2021-07-06T06:32:25.2910402Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/errors.py:744:
2021-07-06T06:32:25.2910925Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2911165Z
2021-07-06T06:32:25.2911479Z self = <numba.core.lowering.Lower object at 0x7f16ad673b10>
2021-07-06T06:32:25.2912184Z block = <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (401)>
2021-07-06T06:32:25.2912485Z
2021-07-06T06:32:25.2912756Z def lower_block(self, block):
2021-07-06T06:32:25.2913475Z """
2021-07-06T06:32:25.2913768Z Lower the given block.
2021-07-06T06:32:25.2914030Z """
2021-07-06T06:32:25.2914310Z self.pre_block(block)
2021-07-06T06:32:25.2914618Z for inst in block.body:
2021-07-06T06:32:25.2914950Z self.loc = inst.loc
2021-07-06T06:32:25.2915300Z defaulterrcls = partial(LoweringError, loc=self.loc)
2021-07-06T06:32:25.2915984Z with new_error_context('lowering "{inst}" at {loc}', inst=inst,
2021-07-06T06:32:25.2916470Z loc=self.loc, errcls_=defaulterrcls):
2021-07-06T06:32:25.2916908Z > self.lower_inst(inst)
2021-07-06T06:32:25.2917068Z
2021-07-06T06:32:25.2917683Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:230:
2021-07-06T06:32:25.2918234Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2918463Z
2021-07-06T06:32:25.2919115Z self = <numba.core.lowering.Lower object at 0x7f16ad673b10>
2021-07-06T06:32:25.2921693Z inst = id=4[LoopNest(index_variable = parfor_index.212, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.212, umap_.py:404)
2021-07-06T06:32:25.2922652Z
2021-07-06T06:32:25.2923006Z def lower_inst(self, inst):
2021-07-06T06:32:25.2923377Z # Set debug location for all subsequent LL instructions
2021-07-06T06:32:25.2924103Z self.debuginfo.mark_location(self.builder, self.loc)
2021-07-06T06:32:25.2924812Z self.debug_print(str(inst))
2021-07-06T06:32:25.2925138Z if isinstance(inst, ir.Assign):
2021-07-06T06:32:25.2926725Z ty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2927162Z val = self.lower_assign(ty, inst)
2021-07-06T06:32:25.2927536Z self.storevar(val, inst.target.name)
2021-07-06T06:32:25.2927818Z
2021-07-06T06:32:25.2928128Z elif isinstance(inst, ir.Branch):
2021-07-06T06:32:25.2928488Z cond = self.loadvar(inst.cond.name)
2021-07-06T06:32:25.2928848Z tr = self.blkmap[inst.truebr]
2021-07-06T06:32:25.2929179Z fl = self.blkmap[inst.falsebr]
2021-07-06T06:32:25.2929450Z
2021-07-06T06:32:25.2929751Z condty = self.typeof(inst.cond.name)
2021-07-06T06:32:25.2930151Z pred = self.context.cast(self.builder, cond, condty, types.boolean)
2021-07-06T06:32:25.2930654Z assert pred.type == Type.int(1), ("cond is not i1: %s" % pred.type)
2021-07-06T06:32:25.2931092Z self.builder.cbranch(pred, tr, fl)
2021-07-06T06:32:25.2931388Z
2021-07-06T06:32:25.2931673Z elif isinstance(inst, ir.Jump):
2021-07-06T06:32:25.2932230Z target = self.blkmap[inst.target]
2021-07-06T06:32:25.2932564Z self.builder.branch(target)
2021-07-06T06:32:25.2932848Z
2021-07-06T06:32:25.2933137Z elif isinstance(inst, ir.Return):
2021-07-06T06:32:25.2933496Z if self.generator_info:
2021-07-06T06:32:25.2933836Z # StopIteration
2021-07-06T06:32:25.2934174Z self.genlower.return_from_generator(self)
2021-07-06T06:32:25.2934519Z return
2021-07-06T06:32:25.2934827Z val = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2935193Z oty = self.typeof(inst.value.name)
2021-07-06T06:32:25.2935521Z ty = self.fndesc.restype
2021-07-06T06:32:25.2936298Z if isinstance(ty, types.Optional):
2021-07-06T06:32:25.2936673Z # If returning an optional type
2021-07-06T06:32:25.2937079Z self.call_conv.return_optional_value(self.builder, ty, oty, val)
2021-07-06T06:32:25.2937621Z return
2021-07-06T06:32:25.2938068Z assert ty == oty, (
2021-07-06T06:32:25.2938772Z "type '{}' does not match return type '{}'".format(oty, ty))
2021-07-06T06:32:25.2939386Z retval = self.context.get_return_value(self.builder, ty, val)
2021-07-06T06:32:25.2940027Z self.call_conv.return_value(self.builder, retval)
2021-07-06T06:32:25.2940332Z
2021-07-06T06:32:25.2940654Z elif isinstance(inst, ir.StaticSetItem):
2021-07-06T06:32:25.2941037Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2941403Z assert signature is not None
2021-07-06T06:32:25.2941702Z try:
2021-07-06T06:32:25.2942263Z impl = self.context.get_function('static_setitem', signature)
2021-07-06T06:32:25.2942701Z except NotImplementedError:
2021-07-06T06:32:25.2943101Z return self.lower_setitem(inst.target, inst.index_var,
2021-07-06T06:32:25.2943536Z inst.value, signature)
2021-07-06T06:32:25.2943876Z else:
2021-07-06T06:32:25.2944216Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2944756Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2945156Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.2945555Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.2945987Z signature.args[2])
2021-07-06T06:32:25.2947037Z return impl(self.builder, (target, inst.index, value))
2021-07-06T06:32:25.2947459Z
2021-07-06T06:32:25.2947927Z elif isinstance(inst, ir.Print):
2021-07-06T06:32:25.2948253Z self.lower_print(inst)
2021-07-06T06:32:25.2948679Z
2021-07-06T06:32:25.2949111Z elif isinstance(inst, ir.SetItem):
2021-07-06T06:32:25.2949477Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2949797Z assert signature is not None
2021-07-06T06:32:25.2950367Z return self.lower_setitem(inst.target, inst.index, inst.value,
2021-07-06T06:32:25.2950751Z signature)
2021-07-06T06:32:25.2951040Z
2021-07-06T06:32:25.2951324Z elif isinstance(inst, ir.StoreMap):
2021-07-06T06:32:25.2951700Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2952033Z assert signature is not None
2021-07-06T06:32:25.2952406Z return self.lower_setitem(inst.dct, inst.key, inst.value, signature)
2021-07-06T06:32:25.2952747Z
2021-07-06T06:32:25.2953028Z elif isinstance(inst, ir.DelItem):
2021-07-06T06:32:25.2953400Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2954155Z index = self.loadvar(inst.index.name)
2021-07-06T06:32:25.2954483Z
2021-07-06T06:32:25.2954759Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2955132Z indexty = self.typeof(inst.index.name)
2021-07-06T06:32:25.2955555Z
2021-07-06T06:32:25.2955829Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2957084Z assert signature is not None
2021-07-06T06:32:25.2957532Z
2021-07-06T06:32:25.2957973Z op = operator.delitem
2021-07-06T06:32:25.2958335Z fnop = self.context.typing_context.resolve_value_type(op)
2021-07-06T06:32:25.2959323Z callsig = fnop.get_call_type(
2021-07-06T06:32:25.2959932Z self.context.typing_context, signature.args, {},
2021-07-06T06:32:25.2960277Z )
2021-07-06T06:32:25.2960610Z impl = self.context.get_function(fnop, callsig)
2021-07-06T06:32:25.2960929Z
2021-07-06T06:32:25.2961209Z assert targetty == signature.args[0]
2021-07-06T06:32:25.2961591Z index = self.context.cast(self.builder, index, indexty,
2021-07-06T06:32:25.2962018Z signature.args[1])
2021-07-06T06:32:25.2962311Z
2021-07-06T06:32:25.2962623Z return impl(self.builder, (target, index))
2021-07-06T06:32:25.2962914Z
2021-07-06T06:32:25.2963213Z elif isinstance(inst, ir.Del):
2021-07-06T06:32:25.2963547Z self.delvar(inst.value)
2021-07-06T06:32:25.2963824Z
2021-07-06T06:32:25.2964112Z elif isinstance(inst, ir.SetAttr):
2021-07-06T06:32:25.2964480Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.2964855Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.2965209Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.2965509Z
2021-07-06T06:32:25.2966127Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.2966508Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.2967010Z assert signature is not None
2021-07-06T06:32:25.2967392Z assert signature.args[0] == targetty
2021-07-06T06:32:25.2967756Z impl = self.context.get_setattr(inst.attr, signature)
2021-07-06T06:32:25.2968424Z
2021-07-06T06:32:25.2968857Z # Convert argument to match
2021-07-06T06:32:25.2969948Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.2970390Z signature.args[1])
2021-07-06T06:32:25.2970683Z
2021-07-06T06:32:25.2970990Z return impl(self.builder, (target, value))
2021-07-06T06:32:25.2971279Z
2021-07-06T06:32:25.2971596Z elif isinstance(inst, ir.StaticRaise):
2021-07-06T06:32:25.2971956Z self.lower_static_raise(inst)
2021-07-06T06:32:25.2972243Z
2021-07-06T06:32:25.2972547Z elif isinstance(inst, ir.StaticTryRaise):
2021-07-06T06:32:25.2972919Z self.lower_static_try_raise(inst)
2021-07-06T06:32:25.2973215Z
2021-07-06T06:32:25.2973443Z else:
2021-07-06T06:32:25.2973965Z for _class, func in lower_extensions.items():
2021-07-06T06:32:25.2974378Z if isinstance(inst, _class):
2021-07-06T06:32:25.2974755Z > func(self, inst)
2021-07-06T06:32:25.2974913Z
2021-07-06T06:32:25.2975667Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:443:
2021-07-06T06:32:25.2976222Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.2976452Z
2021-07-06T06:32:25.2976744Z lowerer = <numba.core.lowering.Lower object at 0x7f16ad673b10>
2021-07-06T06:32:25.2978840Z parfor = id=4[LoopNest(index_variable = parfor_index.212, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.212, umap_.py:404)
2021-07-06T06:32:25.2979427Z
2021-07-06T06:32:25.2979795Z def _lower_parfor_parallel(lowerer, parfor):
2021-07-06T06:32:25.2980228Z """Lowerer that handles LLVM code generation for parfor.
2021-07-06T06:32:25.2980637Z This function lowers a parfor IR node to LLVM.
2021-07-06T06:32:25.2981169Z The general approach is as follows:
2021-07-06T06:32:25.2981826Z 1) The code from the parfor's init block is lowered normally
2021-07-06T06:32:25.2982228Z in the context of the current function.
2021-07-06T06:32:25.2982634Z 2) The body of the parfor is transformed into a gufunc function.
2021-07-06T06:32:25.2983139Z 3) Code is inserted into the main function that calls do_scheduling
2021-07-06T06:32:25.2983565Z to divide the iteration space for each thread, allocates
2021-07-06T06:32:25.2984004Z reduction arrays, calls the gufunc function, and then invokes
2021-07-06T06:32:25.2984435Z the reduction function across the reduction arrays to produce
2021-07-06T06:32:25.2985065Z the final reduction values.
2021-07-06T06:32:25.2985346Z """
2021-07-06T06:32:25.2985685Z from numba.np.ufunc.parallel import get_thread_count
2021-07-06T06:32:25.2985989Z
2021-07-06T06:32:25.2986261Z ensure_parallel_support()
2021-07-06T06:32:25.2986598Z typingctx = lowerer.context.typing_context
2021-07-06T06:32:25.2986933Z targetctx = lowerer.context
2021-07-06T06:32:25.2987569Z # We copy the typemap here because for race condition variable we'll
2021-07-06T06:32:25.2988470Z # update their type to array so they can be updated by the gufunc.
2021-07-06T06:32:25.2989279Z orig_typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.2989714Z # replace original typemap with copy and restore the original at the end.
2021-07-06T06:32:25.2990159Z lowerer.fndesc.typemap = copy.copy(orig_typemap)
2021-07-06T06:32:25.2990520Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2990926Z print("lowerer.fndesc", lowerer.fndesc, type(lowerer.fndesc))
2021-07-06T06:32:25.2991306Z typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.2991986Z varmap = lowerer.varmap
2021-07-06T06:32:25.2992316Z
2021-07-06T06:32:25.2992616Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2992968Z print("_lower_parfor_parallel")
2021-07-06T06:32:25.2993276Z parfor.dump()
2021-07-06T06:32:25.2993539Z
2021-07-06T06:32:25.2993799Z loc = parfor.init_block.loc
2021-07-06T06:32:25.2994135Z scope = parfor.init_block.scope
2021-07-06T06:32:25.2994401Z
2021-07-06T06:32:25.2994694Z # produce instructions for init_block
2021-07-06T06:32:25.2995036Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2995457Z print("init_block = ", parfor.init_block, " ", type(parfor.init_block))
2021-07-06T06:32:25.2995884Z for instr in parfor.init_block.body:
2021-07-06T06:32:25.2996253Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.2996638Z print("lower init_block instr = ", instr)
2021-07-06T06:32:25.2997150Z lowerer.lower_inst(instr)
2021-07-06T06:32:25.2997432Z
2021-07-06T06:32:25.2997708Z for racevar in parfor.races:
2021-07-06T06:32:25.2998078Z if racevar not in varmap:
2021-07-06T06:32:25.2998424Z rvtyp = typemap[racevar]
2021-07-06T06:32:25.2998781Z rv = ir.Var(scope, racevar, loc)
2021-07-06T06:32:25.2999137Z lowerer._alloca_var(rv.name, rvtyp)
2021-07-06T06:32:25.2999597Z
2021-07-06T06:32:25.2999826Z alias_map = {}
2021-07-06T06:32:25.3000087Z arg_aliases = {}
2021-07-06T06:32:25.3000629Z numba.parfors.parfor.find_potential_aliases_parfor(parfor, parfor.params, typemap,
2021-07-06T06:32:25.3001074Z lowerer.func_ir, alias_map, arg_aliases)
2021-07-06T06:32:25.3001467Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3001779Z print("alias_map", alias_map)
2021-07-06T06:32:25.3002285Z print("arg_aliases", arg_aliases)
2021-07-06T06:32:25.3002813Z
2021-07-06T06:32:25.3003169Z # run get_parfor_outputs() and get_parfor_reductions() before gufunc creation
2021-07-06T06:32:25.3003634Z # since Jumps are modified so CFG of loop_body dict will become invalid
2021-07-06T06:32:25.3004130Z assert parfor.params is not None
2021-07-06T06:32:25.3004400Z
2021-07-06T06:32:25.3004716Z parfor_output_arrays = numba.parfors.parfor.get_parfor_outputs(
2021-07-06T06:32:25.3005102Z parfor, parfor.params)
2021-07-06T06:32:25.3005488Z parfor_redvars, parfor_reddict = numba.parfors.parfor.get_parfor_reductions(
2021-07-06T06:32:25.3005962Z lowerer.func_ir, parfor, parfor.params, lowerer.fndesc.calltypes)
2021-07-06T06:32:25.3006355Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3006742Z print("parfor_redvars:", parfor_redvars)
2021-07-06T06:32:25.3007142Z print("parfor_reddict:", parfor_reddict)
2021-07-06T06:32:25.3007464Z
2021-07-06T06:32:25.3007747Z # init reduction array allocation here.
2021-07-06T06:32:25.3008099Z nredvars = len(parfor_redvars)
2021-07-06T06:32:25.3008391Z redarrs = {}
2021-07-06T06:32:25.3008676Z if nredvars > 0:
2021-07-06T06:32:25.3009054Z # reduction arrays outer dimension equal to thread count
2021-07-06T06:32:25.3009747Z thread_count = get_thread_count()
2021-07-06T06:32:25.3010080Z scope = parfor.init_block.scope
2021-07-06T06:32:25.3010386Z loc = parfor.init_block.loc
2021-07-06T06:32:25.3010766Z pfbdr = ParforLoweringBuilder(lowerer=lowerer, scope=scope, loc=loc)
2021-07-06T06:32:25.3011075Z
2021-07-06T06:32:25.3011527Z # For each reduction variable...
2021-07-06T06:32:25.3011861Z for i in range(nredvars):
2021-07-06T06:32:25.3012250Z redvar_typ = lowerer.fndesc.typemap[parfor_redvars[i]]
2021-07-06T06:32:25.3012647Z redvar = ir.Var(scope, parfor_redvars[i], loc)
2021-07-06T06:32:25.3013040Z redarrvar_typ = redtyp_to_redarraytype(redvar_typ)
2021-07-06T06:32:25.3013423Z reddtype = redarrvar_typ.dtype
2021-07-06T06:32:25.3013772Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3014216Z print("redvar_typ", redvar_typ, redarrvar_typ, reddtype, types.DType(reddtype))
2021-07-06T06:32:25.3014567Z
2021-07-06T06:32:25.3014861Z # If this is reduction over an array,
2021-07-06T06:32:25.3016179Z # the reduction array has just one added per-worker dimension.
2021-07-06T06:32:25.3016679Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3017096Z redarrdim = redvar_typ.ndim + 1
2021-07-06T06:32:25.3017492Z else:
2021-07-06T06:32:25.3017787Z redarrdim = 1
2021-07-06T06:32:25.3018060Z
2021-07-06T06:32:25.3018410Z # Reduction array is created and initialized to the initial reduction value.
2021-07-06T06:32:25.3018863Z
2021-07-06T06:32:25.3019186Z # First create a var for the numpy empty ufunc.
2021-07-06T06:32:25.3019581Z glbl_np_empty = pfbdr.bind_global_function(
2021-07-06T06:32:25.3019952Z fobj=np.empty,
2021-07-06T06:32:25.3020438Z ftype=get_np_ufunc_typ(np.empty),
2021-07-06T06:32:25.3020953Z args=(
2021-07-06T06:32:25.3021294Z types.UniTuple(types.intp, redarrdim),
2021-07-06T06:32:25.3021682Z types.DType(reddtype),
2021-07-06T06:32:25.3021988Z ),
2021-07-06T06:32:25.3022248Z )
2021-07-06T06:32:25.3022498Z
2021-07-06T06:32:25.3022860Z # Create var for outer dimension size of reduction array equal to number of threads.
2021-07-06T06:32:25.3023335Z num_threads_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3023693Z cval=thread_count,
2021-07-06T06:32:25.3024029Z typ=types.intp,
2021-07-06T06:32:25.3025079Z name='num_threads',
2021-07-06T06:32:25.3026266Z )
2021-07-06T06:32:25.3026646Z
2021-07-06T06:32:25.3026948Z size_var_list = [num_threads_var]
2021-07-06T06:32:25.3027231Z
2021-07-06T06:32:25.3027525Z # If this is a reduction over an array...
2021-07-06T06:32:25.3028328Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3028932Z # Add code to get the shape of the array being reduced over.
2021-07-06T06:32:25.3029342Z redshape_var = pfbdr.assign(
2021-07-06T06:32:25.3029709Z rhs=ir.Expr.getattr(redvar, "shape", loc),
2021-07-06T06:32:25.3030131Z typ=types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.3030502Z name="redarr_shape",
2021-07-06T06:32:25.3031021Z )
2021-07-06T06:32:25.3031267Z
2021-07-06T06:32:25.3032070Z # Add the dimension sizes of the array being reduced over to the tuple of sizes pass to empty.
2021-07-06T06:32:25.3032573Z for j in range(redvar_typ.ndim):
2021-07-06T06:32:25.3032958Z onedimvar = pfbdr.assign(
2021-07-06T06:32:25.3033385Z rhs=ir.Expr.static_getitem(redshape_var, j, None, loc),
2021-07-06T06:32:25.3033785Z typ=types.intp,
2021-07-06T06:32:25.3034151Z name="redshapeonedim",
2021-07-06T06:32:25.3034469Z )
2021-07-06T06:32:25.3034814Z size_var_list.append(onedimvar)
2021-07-06T06:32:25.3035105Z
2021-07-06T06:32:25.3035496Z # Empty call takes tuple of sizes. Create here and fill in outer dimension (num threads).
2021-07-06T06:32:25.3035953Z size_var = pfbdr.make_tuple_variable(
2021-07-06T06:32:25.3036629Z size_var_list, name='tuple_size_var',
2021-07-06T06:32:25.3036966Z )
2021-07-06T06:32:25.3037216Z
2021-07-06T06:32:25.3037521Z # Add call to empty passing the size var tuple.
2021-07-06T06:32:25.3037940Z empty_call = pfbdr.call(glbl_np_empty, args=[size_var])
2021-07-06T06:32:25.3038300Z
2021-07-06T06:32:25.3038569Z redarr_var = pfbdr.assign(
2021-07-06T06:32:25.3038965Z rhs=empty_call, typ=redarrvar_typ, name="redarr",
2021-07-06T06:32:25.3039302Z )
2021-07-06T06:32:25.3039550Z
2021-07-06T06:32:25.3040166Z # Remember mapping of original reduction array to the newly created per-worker reduction array.
2021-07-06T06:32:25.3040656Z redarrs[redvar.name] = redarr_var
2021-07-06T06:32:25.3040940Z
2021-07-06T06:32:25.3041393Z init_val = parfor_reddict[parfor_redvars[i]][0]
2021-07-06T06:32:25.3041781Z if init_val is not None:
2021-07-06T06:32:25.3042295Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3042769Z # Create an array of identity values for the reduction.
2021-07-06T06:32:25.3043187Z # First, create a variable for np.full.
2021-07-06T06:32:25.3043596Z full_func_node = pfbdr.bind_global_function(
2021-07-06T06:32:25.3043955Z fobj=np.full,
2021-07-06T06:32:25.3044325Z ftype=get_np_ufunc_typ(np.full),
2021-07-06T06:32:25.3044661Z args=(
2021-07-06T06:32:25.3045038Z types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.3045411Z reddtype,
2021-07-06T06:32:25.3045768Z types.DType(reddtype),
2021-07-06T06:32:25.3046290Z ),
2021-07-06T06:32:25.3046595Z )
2021-07-06T06:32:25.3046846Z
2021-07-06T06:32:25.3047157Z # Then create a var with the identify value.
2021-07-06T06:32:25.3047589Z init_val_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3048030Z cval=init_val,
2021-07-06T06:32:25.3048381Z typ=reddtype,
2021-07-06T06:32:25.3048717Z name="init_val",
2021-07-06T06:32:25.3049043Z )
2021-07-06T06:32:25.3049520Z
2021-07-06T06:32:25.3049896Z # Then, call np.full with the shape of the reduction array and the identity value.
2021-07-06T06:32:25.3050378Z full_call = pfbdr.call(
2021-07-06T06:32:25.3050766Z full_func_node, args=[redshape_var, init_val_var],
2021-07-06T06:32:25.3051135Z )
2021-07-06T06:32:25.3051370Z
2021-07-06T06:32:25.3051833Z redtoset = pfbdr.assign(
2021-07-06T06:32:25.3052181Z rhs=full_call,
2021-07-06T06:32:25.3052533Z typ=redvar_typ,
2021-07-06T06:32:25.3052868Z name="redtoset",
2021-07-06T06:32:25.3053199Z )
2021-07-06T06:32:25.3053487Z else:
2021-07-06T06:32:25.3053850Z redtoset = pfbdr.make_const_variable(
2021-07-06T06:32:25.3054214Z cval=init_val,
2021-07-06T06:32:25.3054543Z typ=reddtype,
2021-07-06T06:32:25.3054893Z name="redtoset",
2021-07-06T06:32:25.3055201Z )
2021-07-06T06:32:25.3055654Z else:
2021-07-06T06:32:25.3055944Z redtoset = redvar
2021-07-06T06:32:25.3056214Z
2021-07-06T06:32:25.3056516Z if config.DEBUG_ARRAY_OPT_RUNTIME:
2021-07-06T06:32:25.3057003Z res_print_str = "res_print1 for redvar " + str(redvar) + ":"
2021-07-06T06:32:25.3057483Z strconsttyp = types.StringLiteral(res_print_str)
2021-07-06T06:32:25.3057811Z
2021-07-06T06:32:25.3058090Z lhs = pfbdr.make_const_variable(
2021-07-06T06:32:25.3058444Z cval=res_print_str,
2021-07-06T06:32:25.3058792Z typ=strconsttyp,
2021-07-06T06:32:25.3059291Z name="str_const",
2021-07-06T06:32:25.3059596Z )
2021-07-06T06:32:25.3059820Z
2021-07-06T06:32:25.3060122Z res_print = ir.Print(args=[lhs, redvar],
2021-07-06T06:32:25.3060499Z vararg=None, loc=loc)
2021-07-06T06:32:25.3060921Z lowerer.fndesc.calltypes[res_print] = signature(types.none,
2021-07-06T06:32:25.3061353Z typemap[lhs.name],
2021-07-06T06:32:25.3061808Z typemap[redvar.name])
2021-07-06T06:32:25.3062506Z print("res_print_redvar", res_print)
2021-07-06T06:32:25.3063088Z lowerer.lower_inst(res_print)
2021-07-06T06:32:25.3063362Z
2021-07-06T06:32:25.3063554Z
2021-07-06T06:32:25.3064190Z # For each thread, initialize the per-worker reduction array to the current reduction array value.
2021-07-06T06:32:25.3065384Z for j in range(thread_count):
2021-07-06T06:32:25.3065946Z index_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3066317Z cval=j, typ=types.uintp, name="index_var",
2021-07-06T06:32:25.3066649Z )
2021-07-06T06:32:25.3067344Z pfbdr.setitem(obj=redarr_var, index=index_var, val=redtoset)
2021-07-06T06:32:25.3067697Z
2021-07-06T06:32:25.3068032Z # compile parfor body as a separate function to be used with GUFuncWrapper
2021-07-06T06:32:25.3068450Z flags = copy.copy(parfor.flags)
2021-07-06T06:32:25.3068984Z flags.set('error_model', 'numpy')
2021-07-06T06:32:25.3069584Z # Can't get here unless flags.set('auto_parallel', ParallelOptions(True))
2021-07-06T06:32:25.3071334Z index_var_typ = typemap[parfor.loop_nests[0].index_variable.name]
2021-07-06T06:32:25.3071791Z # index variables should have the same type, check rest of indices
2021-07-06T06:32:25.3072218Z for l in parfor.loop_nests[1:]:
2021-07-06T06:32:25.3072605Z assert typemap[l.index_variable.name] == index_var_typ
2021-07-06T06:32:25.3073026Z numba.parfors.parfor.sequential_parfor_lowering = True
2021-07-06T06:32:25.3073350Z try:
2021-07-06T06:32:25.3073619Z (func,
2021-07-06T06:32:25.3073883Z func_args,
2021-07-06T06:32:25.3074170Z func_sig,
2021-07-06T06:32:25.3074448Z redargstartdim,
2021-07-06T06:32:25.3074734Z func_arg_types,
2021-07-06T06:32:25.3075121Z exp_name_to_tuple_var) = _create_gufunc_for_parfor_body(
2021-07-06T06:32:25.3075547Z lowerer, parfor, typemap, typingctx, targetctx, flags, {},
2021-07-06T06:32:25.3075986Z bool(alias_map), index_var_typ, parfor.races)
2021-07-06T06:32:25.3076474Z finally:
2021-07-06T06:32:25.3076821Z numba.parfors.parfor.sequential_parfor_lowering = False
2021-07-06T06:32:25.3077121Z
2021-07-06T06:32:25.3077386Z # get the shape signature
2021-07-06T06:32:25.3077957Z func_args = ['sched'] + func_args
2021-07-06T06:32:25.3078315Z num_reductions = len(parfor_redvars)
2021-07-06T06:32:25.3078892Z num_inputs = len(func_args) - len(parfor_output_arrays) - num_reductions
2021-07-06T06:32:25.3079287Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3079636Z print("func_args = ", func_args)
2021-07-06T06:32:25.3079966Z print("num_inputs = ", num_inputs)
2021-07-06T06:32:25.3081383Z print("parfor_outputs = ", parfor_output_arrays)
2021-07-06T06:32:25.3081800Z print("parfor_redvars = ", parfor_redvars)
2021-07-06T06:32:25.3082193Z print("num_reductions = ", num_reductions)
2021-07-06T06:32:25.3082557Z gu_signature = _create_shape_signature(
2021-07-06T06:32:25.3082911Z parfor.get_shape_classes,
2021-07-06T06:32:25.3083962Z num_inputs,
2021-07-06T06:32:25.3084282Z num_reductions,
2021-07-06T06:32:25.3084561Z func_args,
2021-07-06T06:32:25.3084838Z redargstartdim,
2021-07-06T06:32:25.3085132Z func_sig,
2021-07-06T06:32:25.3085403Z parfor.races,
2021-07-06T06:32:25.3085690Z typemap)
2021-07-06T06:32:25.3085991Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3086359Z print("gu_signature = ", gu_signature)
2021-07-06T06:32:25.3086645Z
2021-07-06T06:32:25.3086989Z # call the func in parallel by wrapping it with ParallelGUFuncBuilder
2021-07-06T06:32:25.3087608Z loop_ranges = [(l.start, l.stop, l.step) for l in parfor.loop_nests]
2021-07-06T06:32:25.3088000Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3088381Z print("loop_nests = ", parfor.loop_nests)
2021-07-06T06:32:25.3088741Z print("loop_ranges = ", loop_ranges)
2021-07-06T06:32:25.3089080Z call_parallel_gufunc(
2021-07-06T06:32:25.3089353Z lowerer,
2021-07-06T06:32:25.3089629Z func,
2021-07-06T06:32:25.3089893Z gu_signature,
2021-07-06T06:32:25.3090181Z func_sig,
2021-07-06T06:32:25.3090801Z func_args,
2021-07-06T06:32:25.3091078Z func_arg_types,
2021-07-06T06:32:25.3091375Z loop_ranges,
2021-07-06T06:32:25.3091652Z parfor_redvars,
2021-07-06T06:32:25.3091953Z parfor_reddict,
2021-07-06T06:32:25.3092223Z redarrs,
2021-07-06T06:32:25.3092520Z parfor.init_block,
2021-07-06T06:32:25.3092808Z index_var_typ,
2021-07-06T06:32:25.3093108Z parfor.races,
2021-07-06T06:32:25.3093400Z > exp_name_to_tuple_var)
2021-07-06T06:32:25.3093555Z
2021-07-06T06:32:25.3094427Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/parfors/parfor_lowering.py:306:
2021-07-06T06:32:25.3094983Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3095212Z
2021-07-06T06:32:25.3096263Z lowerer = <numba.core.lowering.Lower object at 0x7f16ad673b10>
2021-07-06T06:32:25.3096974Z cres = CompileResult(typing_context=<numba.core.typing.context.Context object at 0x7f16c9149250>, target_context=<numba.core....ollection object at 0x7f16b3be3e90>}, reload_init=[<function _reload_parfors at 0x7f16c92247a0>], referenced_envs=None)
2021-07-06T06:32:25.3097928Z gu_signature = ([('b',), ('a',)], [])
2021-07-06T06:32:25.3098491Z outer_sig = (array(uint64, 1d, C), array(int32, 1d, C)) -> none
2021-07-06T06:32:25.3099122Z expr_args = ['sched', 'rows'], expr_arg_types = [array(int32, 1d, C)]
2021-07-06T06:32:25.3099597Z loop_ranges = [(0, Var($28load_attr.11, umap_.py:404), 1)], redvars = []
2021-07-06T06:32:25.3100174Z reddict = {}, redarrdict = {}
2021-07-06T06:32:25.3101295Z init_block = <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>
2021-07-06T06:32:25.3101826Z index_var_typ = uint64, races = set(), exp_name_to_tuple_var = {}
2021-07-06T06:32:25.3102027Z
2021-07-06T06:32:25.3102361Z def call_parallel_gufunc(lowerer, cres, gu_signature, outer_sig, expr_args, expr_arg_types,
2021-07-06T06:32:25.3103057Z loop_ranges, redvars, reddict, redarrdict, init_block, index_var_typ, races,
2021-07-06T06:32:25.3103539Z exp_name_to_tuple_var):
2021-07-06T06:32:25.3104192Z '''
2021-07-06T06:32:25.3104664Z Adds the call to the gufunc function from the main function.
2021-07-06T06:32:25.3105169Z '''
2021-07-06T06:32:25.3105805Z context = lowerer.context
2021-07-06T06:32:25.3106117Z builder = lowerer.builder
2021-07-06T06:32:25.3106365Z
2021-07-06T06:32:25.3106662Z from numba.np.ufunc.parallel import (build_gufunc_wrapper,
2021-07-06T06:32:25.3107053Z get_thread_count,
2021-07-06T06:32:25.3107389Z _launch_threads)
2021-07-06T06:32:25.3107677Z
2021-07-06T06:32:25.3107939Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3108280Z print("make_parallel_loop")
2021-07-06T06:32:25.3108640Z print("outer_sig = ", outer_sig.args, outer_sig.return_type,
2021-07-06T06:32:25.3109201Z outer_sig.recvr, outer_sig.pysig)
2021-07-06T06:32:25.3109559Z print("loop_ranges = ", loop_ranges)
2021-07-06T06:32:25.3109915Z print("expr_args", expr_args)
2021-07-06T06:32:25.3110261Z print("expr_arg_types", expr_arg_types)
2021-07-06T06:32:25.3110614Z print("gu_signature", gu_signature)
2021-07-06T06:32:25.3111068Z
2021-07-06T06:32:25.3111333Z # Build the wrapper for GUFunc
2021-07-06T06:32:25.3111716Z args, return_type = sigutils.normalize_signature(outer_sig)
2021-07-06T06:32:25.3112146Z llvm_func = cres.library.get_function(cres.fndesc.llvm_func_name)
2021-07-06T06:32:25.3112533Z sin, sout = gu_signature
2021-07-06T06:32:25.3112789Z
2021-07-06T06:32:25.3113136Z # These are necessary for build_gufunc_wrapper to find external symbols
2021-07-06T06:32:25.3113503Z > _launch_threads()
2021-07-06T06:32:25.3113641Z
2021-07-06T06:32:25.3114346Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/parfors/parfor_lowering.py:1442:
2021-07-06T06:32:25.3114895Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3115124Z
2021-07-06T06:32:25.3115395Z def _launch_threads():
2021-07-06T06:32:25.3115736Z if not _backend_init_process_lock:
2021-07-06T06:32:25.3116105Z _set_init_process_lock()
2021-07-06T06:32:25.3116368Z
2021-07-06T06:32:25.3116673Z with _backend_init_process_lock:
2021-07-06T06:32:25.3117149Z with _backend_init_thread_lock:
2021-07-06T06:32:25.3117519Z global _is_initialized
2021-07-06T06:32:25.3118023Z if _is_initialized:
2021-07-06T06:32:25.3118324Z return
2021-07-06T06:32:25.3118578Z
2021-07-06T06:32:25.3118872Z def select_known_backend(backend):
2021-07-06T06:32:25.3119217Z """
2021-07-06T06:32:25.3119561Z Loads a specific threading layer backend based on string
2021-07-06T06:32:25.3119926Z """
2021-07-06T06:32:25.3120199Z lib = None
2021-07-06T06:32:25.3120552Z if backend.startswith("tbb"):
2021-07-06T06:32:25.3120899Z try:
2021-07-06T06:32:25.3121251Z # check if TBB is present and compatible
2021-07-06T06:32:25.3121847Z _check_tbb_version_compatible()
2021-07-06T06:32:25.3122237Z # now try and load the backend
2021-07-06T06:32:25.3122663Z from numba.np.ufunc import tbbpool as lib
2021-07-06T06:32:25.3123063Z except ImportError:
2021-07-06T06:32:25.3123421Z pass
2021-07-06T06:32:25.3123927Z elif backend.startswith("omp"):
2021-07-06T06:32:25.3124371Z # TODO: Check that if MKL is present that it is a version
2021-07-06T06:32:25.3124801Z # that understands GNU OMP might be present
2021-07-06T06:32:25.3125171Z try:
2021-07-06T06:32:25.3125527Z from numba.np.ufunc import omppool as lib
2021-07-06T06:32:25.3125929Z except ImportError:
2021-07-06T06:32:25.3126255Z pass
2021-07-06T06:32:25.3127344Z elif backend.startswith("workqueue"):
2021-07-06T06:32:25.3127814Z from numba.np.ufunc import workqueue as lib
2021-07-06T06:32:25.3128170Z else:
2021-07-06T06:32:25.3128763Z msg = "Unknown value specified for threading layer: %s"
2021-07-06T06:32:25.3129215Z raise ValueError(msg % backend)
2021-07-06T06:32:25.3129572Z return lib
2021-07-06T06:32:25.3130028Z
2021-07-06T06:32:25.3130332Z def select_from_backends(backends):
2021-07-06T06:32:25.3131048Z """
2021-07-06T06:32:25.3131417Z Selects from presented backends and returns the first working
2021-07-06T06:32:25.3131958Z """
2021-07-06T06:32:25.3154517Z lib = None
2021-07-06T06:32:25.3154926Z for backend in backends:
2021-07-06T06:32:25.3155321Z lib = select_known_backend(backend)
2021-07-06T06:32:25.3155910Z if lib is not None:
2021-07-06T06:32:25.3156254Z break
2021-07-06T06:32:25.3156583Z else:
2021-07-06T06:32:25.3157221Z backend = ''
2021-07-06T06:32:25.3157580Z return lib, backend
2021-07-06T06:32:25.3157849Z
2021-07-06T06:32:25.3158140Z t = str(config.THREADING_LAYER).lower()
2021-07-06T06:32:25.3158736Z namedbackends = ['tbb', 'omp', 'workqueue']
2021-07-06T06:32:25.3159048Z
2021-07-06T06:32:25.3159311Z lib = None
2021-07-06T06:32:25.3159764Z err_helpers = dict()
2021-07-06T06:32:25.3160356Z err_helpers['TBB'] = ("Intel TBB is required, try:\n"
2021-07-06T06:32:25.3160799Z "$ conda/pip install tbb")
2021-07-06T06:32:25.3161453Z err_helpers['OSX_OMP'] = ("Intel OpenMP is required, try:\n"
2021-07-06T06:32:25.3162123Z "$ conda/pip install intel-openmp")
2021-07-06T06:32:25.3162750Z requirements = []
2021-07-06T06:32:25.3163125Z
2021-07-06T06:32:25.3163428Z def raise_with_hint(required):
2021-07-06T06:32:25.3164006Z errmsg = "No threading layer could be loaded.\n%s"
2021-07-06T06:32:25.3164572Z hintmsg = "HINT:\n%s"
2021-07-06T06:32:25.3164963Z if len(required) == 0:
2021-07-06T06:32:25.3165487Z hint = ''
2021-07-06T06:32:25.3166008Z if len(required) == 1:
2021-07-06T06:32:25.3166578Z hint = hintmsg % err_helpers[required[0]]
2021-07-06T06:32:25.3166987Z if len(required) > 1:
2021-07-06T06:32:25.3167606Z options = '\nOR\n'.join([err_helpers[x] for x in required])
2021-07-06T06:32:25.3168110Z hint = hintmsg % ("One of:\n%s" % options)
2021-07-06T06:32:25.3168683Z raise ValueError(errmsg % hint)
2021-07-06T06:32:25.3168975Z
2021-07-06T06:32:25.3169745Z if t in namedbackends:
2021-07-06T06:32:25.3170136Z # Try and load the specific named backend
2021-07-06T06:32:25.3170525Z lib = select_known_backend(t)
2021-07-06T06:32:25.3171769Z if not lib:
2021-07-06T06:32:25.3172256Z # something is missing preventing a valid backend from
2021-07-06T06:32:25.3172684Z # loading, set requirements for hinting
2021-07-06T06:32:25.3173363Z if t == 'tbb':
2021-07-06T06:32:25.3173918Z requirements.append('TBB')
2021-07-06T06:32:25.3174519Z elif t == 'omp' and _IS_OSX:
2021-07-06T06:32:25.3175103Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.3175473Z libname = t
2021-07-06T06:32:25.3176045Z elif t in ['threadsafe', 'forksafe', 'safe']:
2021-07-06T06:32:25.3176472Z # User wants a specific behaviour...
2021-07-06T06:32:25.3177893Z available = ['tbb']
2021-07-06T06:32:25.3178431Z requirements.append('TBB')
2021-07-06T06:32:25.3178812Z if t == "safe":
2021-07-06T06:32:25.3179213Z # "safe" is TBB, which is fork and threadsafe everywhere
2021-07-06T06:32:25.3179605Z pass
2021-07-06T06:32:25.3179937Z elif t == "threadsafe":
2021-07-06T06:32:25.3180318Z if _IS_OSX:
2021-07-06T06:32:25.3180868Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.3181278Z # omp is threadsafe everywhere
2021-07-06T06:32:25.3181806Z available.append('omp')
2021-07-06T06:32:25.3182194Z elif t == "forksafe":
2021-07-06T06:32:25.3182617Z # everywhere apart from linux (GNU OpenMP) has a guaranteed
2021-07-06T06:32:25.3183258Z # forksafe OpenMP, as OpenMP has better performance, prefer
2021-07-06T06:32:25.3183688Z # this to workqueue
2021-07-06T06:32:25.3184040Z if not _IS_LINUX:
2021-07-06T06:32:25.3184812Z available.append('omp')
2021-07-06T06:32:25.3185196Z if _IS_OSX:
2021-07-06T06:32:25.3185774Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.3186170Z # workqueue is forksafe everywhere
2021-07-06T06:32:25.3186739Z available.append('workqueue')
2021-07-06T06:32:25.3187113Z else: # unreachable
2021-07-06T06:32:25.3187527Z msg = "No threading layer available for purpose %s"
2021-07-06T06:32:25.3187926Z raise ValueError(msg % t)
2021-07-06T06:32:25.3188302Z # select amongst available
2021-07-06T06:32:25.3188679Z lib, libname = select_from_backends(available)
2021-07-06T06:32:25.3189224Z elif t == 'default':
2021-07-06T06:32:25.3189770Z # If default is supplied, try them in order, tbb, omp,
2021-07-06T06:32:25.3190139Z # workqueue
2021-07-06T06:32:25.3191289Z lib, libname = select_from_backends(namedbackends)
2021-07-06T06:32:25.3191670Z if not lib:
2021-07-06T06:32:25.3192043Z # set requirements for hinting
2021-07-06T06:32:25.3192688Z requirements.append('TBB')
2021-07-06T06:32:25.3193081Z if _IS_OSX:
2021-07-06T06:32:25.3193626Z requirements.append('OSX_OMP')
2021-07-06T06:32:25.3193992Z else:
2021-07-06T06:32:25.3194568Z msg = "The threading layer requested '%s' is unknown to Numba."
2021-07-06T06:32:25.3194998Z raise ValueError(msg % t)
2021-07-06T06:32:25.3195298Z
2021-07-06T06:32:25.3195577Z # No lib found, raise and hint
2021-07-06T06:32:25.3195930Z if not lib:
2021-07-06T06:32:25.3196264Z > raise_with_hint(requirements)
2021-07-06T06:32:25.3196445Z
2021-07-06T06:32:25.3197097Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/np/ufunc/parallel.py:499:
2021-07-06T06:32:25.3197630Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3197879Z
2021-07-06T06:32:25.3198248Z required = ['TBB']
2021-07-06T06:32:25.3198384Z
2021-07-06T06:32:25.3198679Z def raise_with_hint(required):
2021-07-06T06:32:25.3199046Z errmsg = "No threading layer could be loaded.\n%s"
2021-07-06T06:32:25.3199995Z hintmsg = "HINT:\n%s"
2021-07-06T06:32:25.3200337Z if len(required) == 0:
2021-07-06T06:32:25.3200860Z hint = ''
2021-07-06T06:32:25.3201375Z if len(required) == 1:
2021-07-06T06:32:25.3201722Z hint = hintmsg % err_helpers[required[0]]
2021-07-06T06:32:25.3202086Z if len(required) > 1:
2021-07-06T06:32:25.3202665Z options = '\nOR\n'.join([err_helpers[x] for x in required])
2021-07-06T06:32:25.3203451Z hint = hintmsg % ("One of:\n%s" % options)
2021-07-06T06:32:25.3204185Z > raise ValueError(errmsg % hint)
2021-07-06T06:32:25.3204783Z E ValueError: No threading layer could be loaded.
2021-07-06T06:32:25.3205313Z E HINT:
2021-07-06T06:32:25.3205853Z E Intel TBB is required, try:
2021-07-06T06:32:25.3206394Z E $ conda/pip install tbb
2021-07-06T06:32:25.3206568Z
2021-07-06T06:32:25.3207241Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/np/ufunc/parallel.py:444: ValueError
2021-07-06T06:32:25.3207558Z
2021-07-06T06:32:25.3208107Z During handling of the above exception, another exception occurred:
2021-07-06T06:32:25.3208556Z
2021-07-06T06:32:25.3208794Z @pytest.fixture
2021-07-06T06:32:25.3209058Z def adatas():
2021-07-06T06:32:25.3209798Z pbmc = sc.datasets.pbmc68k_reduced()
2021-07-06T06:32:25.3210115Z n_split = 500
2021-07-06T06:32:25.3210534Z adata_ref = sc.AnnData(pbmc.X[:n_split, :], obs=pbmc.obs.iloc[:n_split])
2021-07-06T06:32:25.3211008Z adata_new = sc.AnnData(pbmc.X[n_split:, :])
2021-07-06T06:32:25.3211343Z
2021-07-06T06:32:25.3211592Z sc.pp.pca(adata_ref)
2021-07-06T06:32:25.3211909Z > sc.pp.neighbors(adata_ref)
2021-07-06T06:32:25.3212066Z
2021-07-06T06:32:25.3212588Z scanpy/tests/test_ingest.py:34:
2021-07-06T06:32:25.3213030Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3213649Z scanpy/neighbors/__init__.py:147: in neighbors
2021-07-06T06:32:25.3214029Z random_state=random_state,
2021-07-06T06:32:25.3214592Z scanpy/neighbors/__init__.py:812: in compute_neighbors
2021-07-06T06:32:25.3214972Z self.n_neighbors,
2021-07-06T06:32:25.3215536Z scanpy/neighbors/__init__.py:398: in _compute_connectivities_umap
2021-07-06T06:32:25.3216074Z local_connectivity=local_connectivity,
2021-07-06T06:32:25.3216835Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py:568: in fuzzy_simplicial_set
2021-07-06T06:32:25.3217342Z knn_indices, knn_dists, sigmas, rhos, return_dists
2021-07-06T06:32:25.3218117Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:439: in _compile_for_args
2021-07-06T06:32:25.3218568Z raise e
2021-07-06T06:32:25.3219266Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:372: in _compile_for_args
2021-07-06T06:32:25.3219773Z return_val = self.compile(tuple(argtypes))
2021-07-06T06:32:25.3220691Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:909: in compile
2021-07-06T06:32:25.3221173Z cres = self._compiler.compile(args, return_type)
2021-07-06T06:32:25.3221894Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:79: in compile
2021-07-06T06:32:25.3222385Z status, retval = self._compile_cached(args, return_type)
2021-07-06T06:32:25.3223322Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:93: in _compile_cached
2021-07-06T06:32:25.3224257Z retval = self._compile_core(args, return_type)
2021-07-06T06:32:25.3225314Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/dispatcher.py:111: in _compile_core
2021-07-06T06:32:25.3225813Z pipeline_class=self.pipeline_class)
2021-07-06T06:32:25.3226737Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:606: in compile_extra
2021-07-06T06:32:25.3227218Z return pipeline.compile_extra(func)
2021-07-06T06:32:25.3227925Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:353: in compile_extra
2021-07-06T06:32:25.3228391Z return self._compile_bytecode()
2021-07-06T06:32:25.3229093Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:415: in _compile_bytecode
2021-07-06T06:32:25.3229552Z return self._compile_core()
2021-07-06T06:32:25.3230239Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:395: in _compile_core
2021-07-06T06:32:25.3230658Z raise e
2021-07-06T06:32:25.3231293Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler.py:386: in _compile_core
2021-07-06T06:32:25.3231752Z pm.run(self.state)
2021-07-06T06:32:25.3232411Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:339: in run
2021-07-06T06:32:25.3233242Z raise patched_exception
2021-07-06T06:32:25.3233973Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:330: in run
2021-07-06T06:32:25.3234489Z self._runPass(idx, pass_inst, state)
2021-07-06T06:32:25.3235230Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_lock.py:35: in _acquire_compile_lock
2021-07-06T06:32:25.3235741Z return func(*args, **kwargs)
2021-07-06T06:32:25.3236454Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:289: in _runPass
2021-07-06T06:32:25.3237039Z mutated |= check(pss.run_pass, internal_state)
2021-07-06T06:32:25.3237790Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/compiler_machinery.py:262: in check
2021-07-06T06:32:25.3238850Z mangled = func(compiler_state)
2021-07-06T06:32:25.3239536Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/typed_passes.py:463: in run_pass
2021-07-06T06:32:25.3240318Z NativeLowering().run_pass(state)
2021-07-06T06:32:25.3241183Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/typed_passes.py:384: in run_pass
2021-07-06T06:32:25.3241638Z lower.lower()
2021-07-06T06:32:25.3242271Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:136: in lower
2021-07-06T06:32:25.3242752Z self.lower_normal_function(self.fndesc)
2021-07-06T06:32:25.3243464Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:190: in lower_normal_function
2021-07-06T06:32:25.3243978Z entry_block_tail = self.lower_function_body()
2021-07-06T06:32:25.3245136Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:216: in lower_function_body
2021-07-06T06:32:25.3245622Z self.lower_block(block)
2021-07-06T06:32:25.3246284Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:230: in lower_block
2021-07-06T06:32:25.3246936Z self.lower_inst(inst)
2021-07-06T06:32:25.3247695Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/contextlib.py:130: in __exit__
2021-07-06T06:32:25.3248141Z self.gen.throw(type, value, traceback)
2021-07-06T06:32:25.3248522Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3248744Z
2021-07-06T06:32:25.3249648Z fmt_ = 'lowering "{inst}" at {loc}', args = ()
2021-07-06T06:32:25.3251277Z kwargs = {'inst': id=4[LoopNest(index_variable = parfor_index.212, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hos...c': Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)}
2021-07-06T06:32:25.3252584Z errcls = functools.partial(<class 'numba.core.errors.LoweringError'>, loc=Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None))
2021-07-06T06:32:25.3253545Z loc = Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)
2021-07-06T06:32:25.3254798Z newerr = LoweringError('Failed in nopython mode pipeline (step: nopython mode backend)\nNo threading layer could be loaded.\nHI...r_index.212, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)')
2021-07-06T06:32:25.3255507Z tb = None
2021-07-06T06:32:25.3255641Z
2021-07-06T06:32:25.3255888Z @contextlib.contextmanager
2021-07-06T06:32:25.3256238Z def new_error_context(fmt_, *args, **kwargs):
2021-07-06T06:32:25.3256578Z """
2021-07-06T06:32:25.3256917Z A contextmanager that prepend contextual information to any exception
2021-07-06T06:32:25.3257388Z raised within. If the exception type is not an instance of NumbaError,
2021-07-06T06:32:25.3257993Z it will be wrapped into a InternalError. The exception class can be
2021-07-06T06:32:25.3258467Z changed by providing a "errcls_" keyword argument with the exception
2021-07-06T06:32:25.3258821Z constructor.
2021-07-06T06:32:25.3259075Z
2021-07-06T06:32:25.3259409Z The first argument is a message that describes the context. It can be a
2021-07-06T06:32:25.3259876Z format string. If there are additional arguments, it will be used as
2021-07-06T06:32:25.3260324Z ``fmt_.format(*args, **kwargs)`` to produce the final message string.
2021-07-06T06:32:25.3260680Z """
2021-07-06T06:32:25.3261192Z errcls = kwargs.pop('errcls_', InternalError)
2021-07-06T06:32:25.3261494Z
2021-07-06T06:32:25.3261934Z loc = kwargs.get('loc', None)
2021-07-06T06:32:25.3262352Z if loc is not None and not loc.filename.startswith(_numba_path):
2021-07-06T06:32:25.3262787Z loc_info.update(kwargs)
2021-07-06T06:32:25.3263046Z
2021-07-06T06:32:25.3263290Z try:
2021-07-06T06:32:25.3263543Z yield
2021-07-06T06:32:25.3263932Z except NumbaError as e:
2021-07-06T06:32:25.3264309Z e.add_context(_format_msg(fmt_, args, kwargs))
2021-07-06T06:32:25.3264877Z raise
2021-07-06T06:32:25.3265189Z except Exception as e:
2021-07-06T06:32:25.3265571Z newerr = errcls(e).add_context(_format_msg(fmt_, args, kwargs))
2021-07-06T06:32:25.3266039Z tb = sys.exc_info()[2] if numba.core.config.FULL_TRACEBACKS else None
2021-07-06T06:32:25.3266438Z > raise newerr.with_traceback(tb)
2021-07-06T06:32:25.3267262Z E numba.core.errors.LoweringError: Failed in nopython mode pipeline (step: nopython mode backend)
2021-07-06T06:32:25.3267989Z E No threading layer could be loaded.
2021-07-06T06:32:25.3268530Z E HINT:
2021-07-06T06:32:25.3269083Z E Intel TBB is required, try:
2021-07-06T06:32:25.3269658Z E $ conda/pip install tbb
2021-07-06T06:32:25.3270130Z E 
2021-07-06T06:32:25.3270864Z E File "../../../../../opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py", line 404:
2021-07-06T06:32:25.3271593Z E def compute_membership_strengths(
2021-07-06T06:32:25.3272934Z E <source elided>
2021-07-06T06:32:25.3274726Z E 
2021-07-06T06:32:25.3276033Z E rows = np.zeros(knn_indices.size, dtype=np.int32)
2021-07-06T06:32:25.3276626Z E ^
2021-07-06T06:32:25.3277063Z E 
2021-07-06T06:32:25.3278463Z E During: lowering "id=4[LoopNest(index_variable = parfor_index.212, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.212, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)
2021-07-06T06:32:25.3279274Z
2021-07-06T06:32:25.3279949Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/errors.py:751: LoweringError
2021-07-06T06:32:25.3280686Z ---------------------------- Captured stderr setup -----------------------------
2021-07-06T06:32:25.3281072Z computing PCA
2021-07-06T06:32:25.3281323Z with n_comps=50
2021-07-06T06:32:25.3281617Z finished (0:00:00)
2021-07-06T06:32:25.3281892Z computing neighbors
2021-07-06T06:32:25.3282329Z using 'X_pca' with n_pcs = 50
2021-07-06T06:32:25.3282976Z _________________ ERROR at setup of test_neighbors_defaults[3] _________________
2021-07-06T06:32:25.3283234Z
2021-07-06T06:32:25.3283696Z fmt_ = 'lowering "{inst}" at {loc}', args = ()
2021-07-06T06:32:25.3284790Z kwargs = {'inst': id=8[LoopNest(index_variable = parfor_index.393, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hos...c': Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)}
2021-07-06T06:32:25.3286325Z errcls = functools.partial(<class 'numba.core.errors.LoweringError'>, loc=Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None))
2021-07-06T06:32:25.3287271Z loc = Loc(filename=/opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py, line=404, col=None)
2021-07-06T06:32:25.3288523Z newerr = LoweringError('Failed in nopython mode pipeline (step: nopython mode backend)\nNo threading layer could be loaded.\nHI...r_index.393, umap_.py:404)" at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)')
2021-07-06T06:32:25.3289566Z tb = None
2021-07-06T06:32:25.3289701Z
2021-07-06T06:32:25.3289946Z @contextlib.contextmanager
2021-07-06T06:32:25.3290297Z def new_error_context(fmt_, *args, **kwargs):
2021-07-06T06:32:25.3290644Z """
2021-07-06T06:32:25.3290987Z A contextmanager that prepend contextual information to any exception
2021-07-06T06:32:25.3291574Z raised within. If the exception type is not an instance of NumbaError,
2021-07-06T06:32:25.3292026Z it will be wrapped into a InternalError. The exception class can be
2021-07-06T06:32:25.3292490Z changed by providing a "errcls_" keyword argument with the exception
2021-07-06T06:32:25.3292844Z constructor.
2021-07-06T06:32:25.3293102Z
2021-07-06T06:32:25.3293433Z The first argument is a message that describes the context. It can be a
2021-07-06T06:32:25.3293903Z format string. If there are additional arguments, it will be used as
2021-07-06T06:32:25.3294351Z ``fmt_.format(*args, **kwargs)`` to produce the final message string.
2021-07-06T06:32:25.3294708Z """
2021-07-06T06:32:25.3295217Z errcls = kwargs.pop('errcls_', InternalError)
2021-07-06T06:32:25.3295527Z
2021-07-06T06:32:25.3295970Z loc = kwargs.get('loc', None)
2021-07-06T06:32:25.3296390Z if loc is not None and not loc.filename.startswith(_numba_path):
2021-07-06T06:32:25.3296827Z loc_info.update(kwargs)
2021-07-06T06:32:25.3297088Z
2021-07-06T06:32:25.3297335Z try:
2021-07-06T06:32:25.3297586Z > yield
2021-07-06T06:32:25.3297713Z
2021-07-06T06:32:25.3299976Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/errors.py:744:
2021-07-06T06:32:25.3301694Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3301951Z
2021-07-06T06:32:25.3302485Z self = <numba.core.lowering.Lower object at 0x7f16ad3bf7d0>
2021-07-06T06:32:25.3303291Z block = <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (401)>
2021-07-06T06:32:25.3303600Z
2021-07-06T06:32:25.3303875Z def lower_block(self, block):
2021-07-06T06:32:25.3304178Z """
2021-07-06T06:32:25.3304457Z Lower the given block.
2021-07-06T06:32:25.3304909Z """
2021-07-06T06:32:25.3305621Z self.pre_block(block)
2021-07-06T06:32:25.3305968Z for inst in block.body:
2021-07-06T06:32:25.3306303Z self.loc = inst.loc
2021-07-06T06:32:25.3306652Z defaulterrcls = partial(LoweringError, loc=self.loc)
2021-07-06T06:32:25.3307399Z with new_error_context('lowering "{inst}" at {loc}', inst=inst,
2021-07-06T06:32:25.3307888Z loc=self.loc, errcls_=defaulterrcls):
2021-07-06T06:32:25.3308320Z > self.lower_inst(inst)
2021-07-06T06:32:25.3308482Z
2021-07-06T06:32:25.3309777Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:230:
2021-07-06T06:32:25.3310388Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3310620Z
2021-07-06T06:32:25.3311081Z self = <numba.core.lowering.Lower object at 0x7f16ad3bf7d0>
2021-07-06T06:32:25.3312278Z inst = id=8[LoopNest(index_variable = parfor_index.393, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.393, umap_.py:404)
2021-07-06T06:32:25.3312846Z
2021-07-06T06:32:25.3313138Z def lower_inst(self, inst):
2021-07-06T06:32:25.3313505Z # Set debug location for all subsequent LL instructions
2021-07-06T06:32:25.3313902Z self.debuginfo.mark_location(self.builder, self.loc)
2021-07-06T06:32:25.3314346Z self.debug_print(str(inst))
2021-07-06T06:32:25.3314683Z if isinstance(inst, ir.Assign):
2021-07-06T06:32:25.3315058Z ty = self.typeof(inst.target.name)
2021-07-06T06:32:25.3315404Z val = self.lower_assign(ty, inst)
2021-07-06T06:32:25.3315771Z self.storevar(val, inst.target.name)
2021-07-06T06:32:25.3316052Z
2021-07-06T06:32:25.3317013Z elif isinstance(inst, ir.Branch):
2021-07-06T06:32:25.3317452Z cond = self.loadvar(inst.cond.name)
2021-07-06T06:32:25.3317816Z tr = self.blkmap[inst.truebr]
2021-07-06T06:32:25.3318365Z fl = self.blkmap[inst.falsebr]
2021-07-06T06:32:25.3318639Z
2021-07-06T06:32:25.3318938Z condty = self.typeof(inst.cond.name)
2021-07-06T06:32:25.3319341Z pred = self.context.cast(self.builder, cond, condty, types.boolean)
2021-07-06T06:32:25.3319846Z assert pred.type == Type.int(1), ("cond is not i1: %s" % pred.type)
2021-07-06T06:32:25.3320278Z self.builder.cbranch(pred, tr, fl)
2021-07-06T06:32:25.3320576Z
2021-07-06T06:32:25.3321222Z elif isinstance(inst, ir.Jump):
2021-07-06T06:32:25.3321814Z target = self.blkmap[inst.target]
2021-07-06T06:32:25.3322147Z self.builder.branch(target)
2021-07-06T06:32:25.3322430Z
2021-07-06T06:32:25.3322722Z elif isinstance(inst, ir.Return):
2021-07-06T06:32:25.3323092Z if self.generator_info:
2021-07-06T06:32:25.3323432Z # StopIteration
2021-07-06T06:32:25.3323770Z self.genlower.return_from_generator(self)
2021-07-06T06:32:25.3324122Z return
2021-07-06T06:32:25.3324429Z val = self.loadvar(inst.value.name)
2021-07-06T06:32:25.3324794Z oty = self.typeof(inst.value.name)
2021-07-06T06:32:25.3325122Z ty = self.fndesc.restype
2021-07-06T06:32:25.3325647Z if isinstance(ty, types.Optional):
2021-07-06T06:32:25.3326006Z # If returning an optional type
2021-07-06T06:32:25.3326567Z self.call_conv.return_optional_value(self.builder, ty, oty, val)
2021-07-06T06:32:25.3327093Z return
2021-07-06T06:32:25.3327543Z assert ty == oty, (
2021-07-06T06:32:25.3328238Z "type '{}' does not match return type '{}'".format(oty, ty))
2021-07-06T06:32:25.3328695Z retval = self.context.get_return_value(self.builder, ty, val)
2021-07-06T06:32:25.3329137Z self.call_conv.return_value(self.builder, retval)
2021-07-06T06:32:25.3329440Z
2021-07-06T06:32:25.3329768Z elif isinstance(inst, ir.StaticSetItem):
2021-07-06T06:32:25.3330150Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.3330512Z assert signature is not None
2021-07-06T06:32:25.3330807Z try:
2021-07-06T06:32:25.3331411Z impl = self.context.get_function('static_setitem', signature)
2021-07-06T06:32:25.3331852Z except NotImplementedError:
2021-07-06T06:32:25.3332245Z return self.lower_setitem(inst.target, inst.index_var,
2021-07-06T06:32:25.3332678Z inst.value, signature)
2021-07-06T06:32:25.3333708Z else:
2021-07-06T06:32:25.3334088Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.3334782Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.3335409Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.3335807Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.3336245Z signature.args[2])
2021-07-06T06:32:25.3336648Z return impl(self.builder, (target, inst.index, value))
2021-07-06T06:32:25.3336983Z
2021-07-06T06:32:25.3337271Z elif isinstance(inst, ir.Print):
2021-07-06T06:32:25.3337610Z self.lower_print(inst)
2021-07-06T06:32:25.3337886Z
2021-07-06T06:32:25.3338175Z elif isinstance(inst, ir.SetItem):
2021-07-06T06:32:25.3338562Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.3338903Z assert signature is not None
2021-07-06T06:32:25.3339300Z return self.lower_setitem(inst.target, inst.index, inst.value,
2021-07-06T06:32:25.3339695Z signature)
2021-07-06T06:32:25.3339998Z
2021-07-06T06:32:25.3340295Z elif isinstance(inst, ir.StoreMap):
2021-07-06T06:32:25.3340684Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.3341116Z assert signature is not None
2021-07-06T06:32:25.3341507Z return self.lower_setitem(inst.dct, inst.key, inst.value, signature)
2021-07-06T06:32:25.3341863Z
2021-07-06T06:32:25.3342153Z elif isinstance(inst, ir.DelItem):
2021-07-06T06:32:25.3342532Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.3342872Z index = self.loadvar(inst.index.name)
2021-07-06T06:32:25.3343173Z
2021-07-06T06:32:25.3343457Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.3343836Z indexty = self.typeof(inst.index.name)
2021-07-06T06:32:25.3344119Z
2021-07-06T06:32:25.3344402Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.3344905Z assert signature is not None
2021-07-06T06:32:25.3345175Z
2021-07-06T06:32:25.3345460Z op = operator.delitem
2021-07-06T06:32:25.3345822Z fnop = self.context.typing_context.resolve_value_type(op)
2021-07-06T06:32:25.3346220Z callsig = fnop.get_call_type(
2021-07-06T06:32:25.3346586Z self.context.typing_context, signature.args, {},
2021-07-06T06:32:25.3346927Z )
2021-07-06T06:32:25.3347240Z impl = self.context.get_function(fnop, callsig)
2021-07-06T06:32:25.3347559Z
2021-07-06T06:32:25.3347838Z assert targetty == signature.args[0]
2021-07-06T06:32:25.3348950Z index = self.context.cast(self.builder, index, indexty,
2021-07-06T06:32:25.3349392Z signature.args[1])
2021-07-06T06:32:25.3349688Z
2021-07-06T06:32:25.3349995Z return impl(self.builder, (target, index))
2021-07-06T06:32:25.3350438Z
2021-07-06T06:32:25.3350911Z elif isinstance(inst, ir.Del):
2021-07-06T06:32:25.3351249Z self.delvar(inst.value)
2021-07-06T06:32:25.3351545Z
2021-07-06T06:32:25.3351834Z elif isinstance(inst, ir.SetAttr):
2021-07-06T06:32:25.3352201Z target = self.loadvar(inst.target.name)
2021-07-06T06:32:25.3352592Z value = self.loadvar(inst.value.name)
2021-07-06T06:32:25.3352949Z signature = self.fndesc.calltypes[inst]
2021-07-06T06:32:25.3353258Z
2021-07-06T06:32:25.3353543Z targetty = self.typeof(inst.target.name)
2021-07-06T06:32:25.3353928Z valuety = self.typeof(inst.value.name)
2021-07-06T06:32:25.3354269Z assert signature is not None
2021-07-06T06:32:25.3354633Z assert signature.args[0] == targetty
2021-07-06T06:32:25.3355161Z impl = self.context.get_setattr(inst.attr, signature)
2021-07-06T06:32:25.3355482Z
2021-07-06T06:32:25.3355901Z # Convert argument to match
2021-07-06T06:32:25.3356266Z value = self.context.cast(self.builder, value, valuety,
2021-07-06T06:32:25.3356846Z signature.args[1])
2021-07-06T06:32:25.3357292Z
2021-07-06T06:32:25.3357765Z return impl(self.builder, (target, value))
2021-07-06T06:32:25.3358061Z
2021-07-06T06:32:25.3359156Z elif isinstance(inst, ir.StaticRaise):
2021-07-06T06:32:25.3359581Z self.lower_static_raise(inst)
2021-07-06T06:32:25.3359883Z
2021-07-06T06:32:25.3360189Z elif isinstance(inst, ir.StaticTryRaise):
2021-07-06T06:32:25.3360561Z self.lower_static_try_raise(inst)
2021-07-06T06:32:25.3360856Z
2021-07-06T06:32:25.3361083Z else:
2021-07-06T06:32:25.3361445Z for _class, func in lower_extensions.items():
2021-07-06T06:32:25.3361858Z if isinstance(inst, _class):
2021-07-06T06:32:25.3362225Z > func(self, inst)
2021-07-06T06:32:25.3362383Z
2021-07-06T06:32:25.3363138Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/core/lowering.py:443:
2021-07-06T06:32:25.3363712Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3363942Z
2021-07-06T06:32:25.3364237Z lowerer = <numba.core.lowering.Lower object at 0x7f16ad3bf7d0>
2021-07-06T06:32:25.3365547Z parfor = id=8[LoopNest(index_variable = parfor_index.393, range = (0, $28load_attr.11, 1))]{352: <ir.Block at /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/umap/umap_.py (404)>}Var(parfor_index.393, umap_.py:404)
2021-07-06T06:32:25.3366114Z
2021-07-06T06:32:25.3366442Z def _lower_parfor_parallel(lowerer, parfor):
2021-07-06T06:32:25.3366849Z """Lowerer that handles LLVM code generation for parfor.
2021-07-06T06:32:25.3367256Z This function lowers a parfor IR node to LLVM.
2021-07-06T06:32:25.3376247Z The general approach is as follows:
2021-07-06T06:32:25.3377085Z 1) The code from the parfor's init block is lowered normally
2021-07-06T06:32:25.3377500Z in the context of the current function.
2021-07-06T06:32:25.3377916Z 2) The body of the parfor is transformed into a gufunc function.
2021-07-06T06:32:25.3378376Z 3) Code is inserted into the main function that calls do_scheduling
2021-07-06T06:32:25.3378813Z to divide the iteration space for each thread, allocates
2021-07-06T06:32:25.3380199Z reduction arrays, calls the gufunc function, and then invokes
2021-07-06T06:32:25.3380822Z the reduction function across the reduction arrays to produce
2021-07-06T06:32:25.3381223Z the final reduction values.
2021-07-06T06:32:25.3381500Z """
2021-07-06T06:32:25.3381831Z from numba.np.ufunc.parallel import get_thread_count
2021-07-06T06:32:25.3382136Z
2021-07-06T06:32:25.3382409Z ensure_parallel_support()
2021-07-06T06:32:25.3382740Z typingctx = lowerer.context.typing_context
2021-07-06T06:32:25.3383093Z targetctx = lowerer.context
2021-07-06T06:32:25.3383786Z # We copy the typemap here because for race condition variable we'll
2021-07-06T06:32:25.3384262Z # update their type to array so they can be updated by the gufunc.
2021-07-06T06:32:25.3384852Z orig_typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.3385266Z # replace original typemap with copy and restore the original at the end.
2021-07-06T06:32:25.3385706Z lowerer.fndesc.typemap = copy.copy(orig_typemap)
2021-07-06T06:32:25.3386071Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3386477Z print("lowerer.fndesc", lowerer.fndesc, type(lowerer.fndesc))
2021-07-06T06:32:25.3386860Z typemap = lowerer.fndesc.typemap
2021-07-06T06:32:25.3387190Z varmap = lowerer.varmap
2021-07-06T06:32:25.3387641Z
2021-07-06T06:32:25.3387936Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3388277Z print("_lower_parfor_parallel")
2021-07-06T06:32:25.3388586Z parfor.dump()
2021-07-06T06:32:25.3388851Z
2021-07-06T06:32:25.3389110Z loc = parfor.init_block.loc
2021-07-06T06:32:25.3389625Z scope = parfor.init_block.scope
2021-07-06T06:32:25.3390051Z
2021-07-06T06:32:25.3390495Z # produce instructions for init_block
2021-07-06T06:32:25.3390820Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3391212Z print("init_block = ", parfor.init_block, " ", type(parfor.init_block))
2021-07-06T06:32:25.3391610Z for instr in parfor.init_block.body:
2021-07-06T06:32:25.3391976Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3392319Z print("lower init_block instr = ", instr)
2021-07-06T06:32:25.3392823Z lowerer.lower_inst(instr)
2021-07-06T06:32:25.3393105Z
2021-07-06T06:32:25.3393382Z for racevar in parfor.races:
2021-07-06T06:32:25.3393751Z if racevar not in varmap:
2021-07-06T06:32:25.3394089Z rvtyp = typemap[racevar]
2021-07-06T06:32:25.3394446Z rv = ir.Var(scope, racevar, loc)
2021-07-06T06:32:25.3394804Z lowerer._alloca_var(rv.name, rvtyp)
2021-07-06T06:32:25.3395111Z
2021-07-06T06:32:25.3395348Z alias_map = {}
2021-07-06T06:32:25.3395618Z arg_aliases = {}
2021-07-06T06:32:25.3396111Z numba.parfors.parfor.find_potential_aliases_parfor(parfor, parfor.params, typemap,
2021-07-06T06:32:25.3396592Z lowerer.func_ir, alias_map, arg_aliases)
2021-07-06T06:32:25.3397014Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3397801Z print("alias_map", alias_map)
2021-07-06T06:32:25.3398181Z print("arg_aliases", arg_aliases)
2021-07-06T06:32:25.3398455Z
2021-07-06T06:32:25.3398812Z # run get_parfor_outputs() and get_parfor_reductions() before gufunc creation
2021-07-06T06:32:25.3399274Z # since Jumps are modified so CFG of loop_body dict will become invalid
2021-07-06T06:32:25.3399681Z assert parfor.params is not None
2021-07-06T06:32:25.3399950Z
2021-07-06T06:32:25.3400657Z parfor_output_arrays = numba.parfors.parfor.get_parfor_outputs(
2021-07-06T06:32:25.3401080Z parfor, parfor.params)
2021-07-06T06:32:25.3401467Z parfor_redvars, parfor_reddict = numba.parfors.parfor.get_parfor_reductions(
2021-07-06T06:32:25.3401944Z lowerer.func_ir, parfor, parfor.params, lowerer.fndesc.calltypes)
2021-07-06T06:32:25.3402336Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3402726Z print("parfor_redvars:", parfor_redvars)
2021-07-06T06:32:25.3403124Z print("parfor_reddict:", parfor_reddict)
2021-07-06T06:32:25.3403447Z
2021-07-06T06:32:25.3403731Z # init reduction array allocation here.
2021-07-06T06:32:25.3404082Z nredvars = len(parfor_redvars)
2021-07-06T06:32:25.3404372Z redarrs = {}
2021-07-06T06:32:25.3404652Z if nredvars > 0:
2021-07-06T06:32:25.3405028Z # reduction arrays outer dimension equal to thread count
2021-07-06T06:32:25.3405408Z thread_count = get_thread_count()
2021-07-06T06:32:25.3406092Z scope = parfor.init_block.scope
2021-07-06T06:32:25.3406916Z loc = parfor.init_block.loc
2021-07-06T06:32:25.3407304Z pfbdr = ParforLoweringBuilder(lowerer=lowerer, scope=scope, loc=loc)
2021-07-06T06:32:25.3409287Z
2021-07-06T06:32:25.3409613Z # For each reduction variable...
2021-07-06T06:32:25.3409960Z for i in range(nredvars):
2021-07-06T06:32:25.3410367Z redvar_typ = lowerer.fndesc.typemap[parfor_redvars[i]]
2021-07-06T06:32:25.3410777Z redvar = ir.Var(scope, parfor_redvars[i], loc)
2021-07-06T06:32:25.3411181Z redarrvar_typ = redtyp_to_redarraytype(redvar_typ)
2021-07-06T06:32:25.3411579Z reddtype = redarrvar_typ.dtype
2021-07-06T06:32:25.3411937Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3412400Z print("redvar_typ", redvar_typ, redarrvar_typ, reddtype, types.DType(reddtype))
2021-07-06T06:32:25.3412764Z
2021-07-06T06:32:25.3413242Z # If this is reduction over an array,
2021-07-06T06:32:25.3413988Z # the reduction array has just one added per-worker dimension.
2021-07-06T06:32:25.3414503Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3414920Z redarrdim = redvar_typ.ndim + 1
2021-07-06T06:32:25.3415265Z else:
2021-07-06T06:32:25.3415561Z redarrdim = 1
2021-07-06T06:32:25.3415836Z
2021-07-06T06:32:25.3416185Z # Reduction array is created and initialized to the initial reduction value.
2021-07-06T06:32:25.3417281Z
2021-07-06T06:32:25.3417630Z # First create a var for the numpy empty ufunc.
2021-07-06T06:32:25.3418024Z glbl_np_empty = pfbdr.bind_global_function(
2021-07-06T06:32:25.3418391Z fobj=np.empty,
2021-07-06T06:32:25.3418727Z ftype=get_np_ufunc_typ(np.empty),
2021-07-06T06:32:25.3419085Z args=(
2021-07-06T06:32:25.3419424Z types.UniTuple(types.intp, redarrdim),
2021-07-06T06:32:25.3419967Z types.DType(reddtype),
2021-07-06T06:32:25.3420763Z ),
2021-07-06T06:32:25.3421595Z )
2021-07-06T06:32:25.3422083Z
2021-07-06T06:32:25.3422434Z # Create var for outer dimension size of reduction array equal to number of threads.
2021-07-06T06:32:25.3422898Z num_threads_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3423542Z cval=thread_count,
2021-07-06T06:32:25.3424208Z typ=types.intp,
2021-07-06T06:32:25.3425176Z name='num_threads',
2021-07-06T06:32:25.3425520Z )
2021-07-06T06:32:25.3425931Z
2021-07-06T06:32:25.3426230Z size_var_list = [num_threads_var]
2021-07-06T06:32:25.3426515Z
2021-07-06T06:32:25.3426808Z # If this is a reduction over an array...
2021-07-06T06:32:25.3427267Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3427733Z # Add code to get the shape of the array being reduced over.
2021-07-06T06:32:25.3428164Z redshape_var = pfbdr.assign(
2021-07-06T06:32:25.3428546Z rhs=ir.Expr.getattr(redvar, "shape", loc),
2021-07-06T06:32:25.3428984Z typ=types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.3429900Z name="redarr_shape",
2021-07-06T06:32:25.3430212Z )
2021-07-06T06:32:25.3430625Z
2021-07-06T06:32:25.3431029Z # Add the dimension sizes of the array being reduced over to the tuple of sizes pass to empty.
2021-07-06T06:32:25.3431523Z for j in range(redvar_typ.ndim):
2021-07-06T06:32:25.3431929Z onedimvar = pfbdr.assign(
2021-07-06T06:32:25.3432339Z rhs=ir.Expr.static_getitem(redshape_var, j, None, loc),
2021-07-06T06:32:25.3432747Z typ=types.intp,
2021-07-06T06:32:25.3433112Z name="redshapeonedim",
2021-07-06T06:32:25.3433583Z )
2021-07-06T06:32:25.3434505Z size_var_list.append(onedimvar)
2021-07-06T06:32:25.3434777Z
2021-07-06T06:32:25.3435140Z # Empty call takes tuple of sizes. Create here and fill in outer dimension (num threads).
2021-07-06T06:32:25.3435564Z size_var = pfbdr.make_tuple_variable(
2021-07-06T06:32:25.3436130Z size_var_list, name='tuple_size_var',
2021-07-06T06:32:25.3436439Z )
2021-07-06T06:32:25.3436671Z
2021-07-06T06:32:25.3436953Z # Add call to empty passing the size var tuple.
2021-07-06T06:32:25.3437336Z empty_call = pfbdr.call(glbl_np_empty, args=[size_var])
2021-07-06T06:32:25.3437650Z
2021-07-06T06:32:25.3437900Z redarr_var = pfbdr.assign(
2021-07-06T06:32:25.3438421Z rhs=empty_call, typ=redarrvar_typ, name="redarr",
2021-07-06T06:32:25.3438733Z )
2021-07-06T06:32:25.3438970Z
2021-07-06T06:32:25.3439566Z # Remember mapping of original reduction array to the newly created per-worker reduction array.
2021-07-06T06:32:25.3440021Z redarrs[redvar.name] = redarr_var
2021-07-06T06:32:25.3440284Z
2021-07-06T06:32:25.3440583Z init_val = parfor_reddict[parfor_redvars[i]][0]
2021-07-06T06:32:25.3440938Z if init_val is not None:
2021-07-06T06:32:25.3441695Z if isinstance(redvar_typ, types.npytypes.Array):
2021-07-06T06:32:25.3442182Z # Create an array of identity values for the reduction.
2021-07-06T06:32:25.3442609Z # First, create a variable for np.full.
2021-07-06T06:32:25.3443034Z full_func_node = pfbdr.bind_global_function(
2021-07-06T06:32:25.3443411Z fobj=np.full,
2021-07-06T06:32:25.3443789Z ftype=get_np_ufunc_typ(np.full),
2021-07-06T06:32:25.3444238Z args=(
2021-07-06T06:32:25.3444632Z types.UniTuple(types.intp, redvar_typ.ndim),
2021-07-06T06:32:25.3445018Z reddtype,
2021-07-06T06:32:25.3445388Z types.DType(reddtype),
2021-07-06T06:32:25.3445723Z ),
2021-07-06T06:32:25.3446033Z )
2021-07-06T06:32:25.3446276Z
2021-07-06T06:32:25.3446587Z # Then create a var with the identify value.
2021-07-06T06:32:25.3447017Z init_val_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3447387Z cval=init_val,
2021-07-06T06:32:25.3447734Z typ=reddtype,
2021-07-06T06:32:25.3448066Z name="init_val",
2021-07-06T06:32:25.3448396Z )
2021-07-06T06:32:25.3448639Z
2021-07-06T06:32:25.3449031Z # Then, call np.full with the shape of the reduction array and the identity value.
2021-07-06T06:32:25.3449486Z full_call = pfbdr.call(
2021-07-06T06:32:25.3449900Z full_func_node, args=[redshape_var, init_val_var],
2021-07-06T06:32:25.3450269Z )
2021-07-06T06:32:25.3450510Z
2021-07-06T06:32:25.3450806Z redtoset = pfbdr.assign(
2021-07-06T06:32:25.3451147Z rhs=full_call,
2021-07-06T06:32:25.3451496Z typ=redvar_typ,
2021-07-06T06:32:25.3451832Z name="redtoset",
2021-07-06T06:32:25.3452321Z )
2021-07-06T06:32:25.3452779Z else:
2021-07-06T06:32:25.3453147Z redtoset = pfbdr.make_const_variable(
2021-07-06T06:32:25.3453518Z cval=init_val,
2021-07-06T06:32:25.3453847Z typ=reddtype,
2021-07-06T06:32:25.3454198Z name="redtoset",
2021-07-06T06:32:25.3454511Z )
2021-07-06T06:32:25.3454811Z else:
2021-07-06T06:32:25.3455112Z redtoset = redvar
2021-07-06T06:32:25.3455395Z
2021-07-06T06:32:25.3455710Z if config.DEBUG_ARRAY_OPT_RUNTIME:
2021-07-06T06:32:25.3456217Z res_print_str = "res_print1 for redvar " + str(redvar) + ":"
2021-07-06T06:32:25.3456709Z strconsttyp = types.StringLiteral(res_print_str)
2021-07-06T06:32:25.3457047Z
2021-07-06T06:32:25.3457337Z lhs = pfbdr.make_const_variable(
2021-07-06T06:32:25.3457700Z cval=res_print_str,
2021-07-06T06:32:25.3458215Z typ=strconsttyp,
2021-07-06T06:32:25.3458723Z name="str_const",
2021-07-06T06:32:25.3459138Z )
2021-07-06T06:32:25.3459380Z
2021-07-06T06:32:25.3459702Z res_print = ir.Print(args=[lhs, redvar],
2021-07-06T06:32:25.3460114Z vararg=None, loc=loc)
2021-07-06T06:32:25.3460571Z lowerer.fndesc.calltypes[res_print] = signature(types.none,
2021-07-06T06:32:25.3461036Z typemap[lhs.name],
2021-07-06T06:32:25.3461523Z typemap[redvar.name])
2021-07-06T06:32:25.3461956Z print("res_print_redvar", res_print)
2021-07-06T06:32:25.3462359Z lowerer.lower_inst(res_print)
2021-07-06T06:32:25.3462649Z
2021-07-06T06:32:25.3463011Z
2021-07-06T06:32:25.3463676Z # For each thread, initialize the per-worker reduction array to the current reduction array value.
2021-07-06T06:32:25.3464780Z for j in range(thread_count):
2021-07-06T06:32:25.3465192Z index_var = pfbdr.make_const_variable(
2021-07-06T06:32:25.3465702Z cval=j, typ=types.uintp, name="index_var",
2021-07-06T06:32:25.3466065Z )
2021-07-06T06:32:25.3466425Z pfbdr.setitem(obj=redarr_var, index=index_var, val=redtoset)
2021-07-06T06:32:25.3466778Z
2021-07-06T06:32:25.3467110Z # compile parfor body as a separate function to be used with GUFuncWrapper
2021-07-06T06:32:25.3467521Z flags = copy.copy(parfor.flags)
2021-07-06T06:32:25.3468060Z flags.set('error_model', 'numpy')
2021-07-06T06:32:25.3468666Z # Can't get here unless flags.set('auto_parallel', ParallelOptions(True))
2021-07-06T06:32:25.3469156Z index_var_typ = typemap[parfor.loop_nests[0].index_variable.name]
2021-07-06T06:32:25.3469592Z # index variables should have the same type, check rest of indices
2021-07-06T06:32:25.3470386Z for l in parfor.loop_nests[1:]:
2021-07-06T06:32:25.3470929Z assert typemap[l.index_variable.name] == index_var_typ
2021-07-06T06:32:25.3471710Z numba.parfors.parfor.sequential_parfor_lowering = True
2021-07-06T06:32:25.3472023Z try:
2021-07-06T06:32:25.3472469Z (func,
2021-07-06T06:32:25.3473068Z func_args,
2021-07-06T06:32:25.3473355Z func_sig,
2021-07-06T06:32:25.3473632Z redargstartdim,
2021-07-06T06:32:25.3473920Z func_arg_types,
2021-07-06T06:32:25.3474294Z exp_name_to_tuple_var) = _create_gufunc_for_parfor_body(
2021-07-06T06:32:25.3475780Z lowerer, parfor, typemap, typingctx, targetctx, flags, {},
2021-07-06T06:32:25.3476307Z bool(alias_map), index_var_typ, parfor.races)
2021-07-06T06:32:25.3476640Z finally:
2021-07-06T06:32:25.3476999Z numba.parfors.parfor.sequential_parfor_lowering = False
2021-07-06T06:32:25.3477324Z
2021-07-06T06:32:25.3477598Z # get the shape signature
2021-07-06T06:32:25.3478204Z func_args = ['sched'] + func_args
2021-07-06T06:32:25.3478587Z num_reductions = len(parfor_redvars)
2021-07-06T06:32:25.3479188Z num_inputs = len(func_args) - len(parfor_output_arrays) - num_reductions
2021-07-06T06:32:25.3479764Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3480094Z print("func_args = ", func_args)
2021-07-06T06:32:25.3480424Z print("num_inputs = ", num_inputs)
2021-07-06T06:32:25.3480991Z print("parfor_outputs = ", parfor_output_arrays)
2021-07-06T06:32:25.3481549Z print("parfor_redvars = ", parfor_redvars)
2021-07-06T06:32:25.3482108Z print("num_reductions = ", num_reductions)
2021-07-06T06:32:25.3482471Z gu_signature = _create_shape_signature(
2021-07-06T06:32:25.3482827Z parfor.get_shape_classes,
2021-07-06T06:32:25.3483121Z num_inputs,
2021-07-06T06:32:25.3483611Z num_reductions,
2021-07-06T06:32:25.3483890Z func_args,
2021-07-06T06:32:25.3484164Z redargstartdim,
2021-07-06T06:32:25.3484631Z func_sig,
2021-07-06T06:32:25.3485075Z parfor.races,
2021-07-06T06:32:25.3485369Z typemap)
2021-07-06T06:32:25.3485844Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3486385Z print("gu_signature = ", gu_signature)
2021-07-06T06:32:25.3486816Z
2021-07-06T06:32:25.3487158Z # call the func in parallel by wrapping it with ParallelGUFuncBuilder
2021-07-06T06:32:25.3488369Z loop_ranges = [(l.start, l.stop, l.step) for l in parfor.loop_nests]
2021-07-06T06:32:25.3488996Z if config.DEBUG_ARRAY_OPT:
2021-07-06T06:32:25.3489355Z print("loop_nests = ", parfor.loop_nests)
2021-07-06T06:32:25.3489715Z print("loop_ranges = ", loop_ranges)
2021-07-06T06:32:25.3490220Z call_parallel_gufunc(
2021-07-06T06:32:25.3490676Z lowerer,
2021-07-06T06:32:25.3491702Z func,
2021-07-06T06:32:25.3491988Z gu_signature,
2021-07-06T06:32:25.3492290Z func_sig,
2021-07-06T06:32:25.3492712Z func_args,
2021-07-06T06:32:25.3493014Z func_arg_types,
2021-07-06T06:32:25.3493296Z loop_ranges,
2021-07-06T06:32:25.3493573Z parfor_redvars,
2021-07-06T06:32:25.3493878Z parfor_reddict,
2021-07-06T06:32:25.3494151Z redarrs,
2021-07-06T06:32:25.3494446Z parfor.init_block,
2021-07-06T06:32:25.3494732Z index_var_typ,
2021-07-06T06:32:25.3495027Z parfor.races,
2021-07-06T06:32:25.3495318Z > exp_name_to_tuple_var)
2021-07-06T06:32:25.3495473Z
2021-07-06T06:32:25.3496261Z /opt/hostedtoolcache/Python/3.7.10/x64/lib/python3.7/site-packages/numba/parfors/parfor_lowering.py:306:
2021-07-06T06:32:25.3496816Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2021-07-06T06:32:25.3497054Z
2021-07-06T06:32:25.3497370Z lowerer = <numba.core.lowering.Lower object at 0x7f16ad3bf7d0>
2021-07-06T06:32:25.3498202Z cres = CompileResult(typing_context=<numba.core.typing.context.Context object at 0x7f16c9149250>, target_context=<numba.core....ollection object at 0x7f16abaacb50>}, reload_init=[<function _reload_parfors at 0x7f16c92247a0>], referenced_envs=None)
2021-07-06T06:32:25.3499031Z gu_signature = ([('b',), ('a',)], [])
2021-07-06T06:32:25.3499560Z outer_sig = (array(uint64, 1d, C), array(int32, 1d, C)) -> none
2021-07-06T06:32:25.3500166Z expr_args = ['sched', 'rows'], expr_arg_types = [array(int32, 1d, C)]