Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TestAZP.test_azp_basic_from_w CI failure #386

Closed
jGaboardi opened this issue Jun 19, 2023 · 16 comments
Closed

TestAZP.test_azp_basic_from_w CI failure #386

jGaboardi opened this issue Jun 19, 2023 · 16 comments
Assignees

Comments

@jGaboardi
Copy link
Member

TestAZP.test_azp_basic_from_w CI failure.

diagnosis & potential causes

  • Seems to fail intermittently across versions and OSs (fails locally on MacOS) with the same resultant array
  • Could be an issue with the random state?
  • Could be a change in numpy or scipy?

major versions

  • geopandas==0.13.2
  • networkx== 3.1
  • numpy==1.25.0
  • pandas==2.0.2
  • scipy==1.10.1
  • shapely==2.0.1
=========================================================================== FAILURES ============================================================================
_________________________________________________________________ TestAZP.test_azp_basic_from_w _________________________________________________________________
[gw0] darwin -- Python 3.11.4 /Users/user/mambaforge/envs/py311_spopt/bin/python3.11

self = <spopt.tests.test_azp.TestAZP object at 0x162099350>

    def test_azp_basic_from_w(self):
        w = libpysal.weights.Queen.from_dataframe(self.mexico)
        attrs_name = [f"PCGDP{year}" for year in range(1950, 2010, 10)]
        args = (self.mexico, w, attrs_name)
        kwargs = {"n_clusters": 3, "random_state": RANDOM_STATE}
        model = AZP(*args, **kwargs)
        model.solve()
    
>       numpy.testing.assert_array_equal(model.labels_, self.basic_from_w_labels)

spopt/tests/test_azp.py:39: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in function eq>, array([0., 0., 0., 0., 1., 1., 1., 2., 0., 1., 1., 0., 0., 2., 2., 2., 2.,
       2., 0., 2., 2., 2., 0., 1., 1., 0., 0., 1., 2., 1., 1., 2.]), [0, 0, 2, 0, 0, 2, ...])
kwds = {'err_msg': '', 'header': 'Arrays are not equal', 'strict': False, 'verbose': True}

    @wraps(func)
    def inner(*args, **kwds):
        with self._recreate_cm():
>           return func(*args, **kwds)
E           AssertionError: 
E           Arrays are not equal
E           
E           Mismatched elements: 27 / 32 (84.4%)
E           Max absolute difference: 2.
E           Max relative difference: 1.
E            x: array([0., 0., 0., 0., 1., 1., 1., 2., 0., 1., 1., 0., 0., 2., 2., 2., 2.,
E                  2., 0., 2., 2., 2., 0., 1., 1., 0., 0., 1., 2., 1., 1., 2.])
E            y: array([0, 0, 2, 0, 0, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1,
E                  0, 0, 0, 2, 2, 2, 0, 0, 0, 1])

../mambaforge/envs/py311_spopt/lib/python3.11/contextlib.py:81: AssertionError
--------------------------------------------------------------------- Captured stdout call ----------------------------------------------------------------------
n_regions_per_comp {0: 3}
comp_label 0
n_regions_in_comp 3
Regions in comp: {0, 1, 2}
@jGaboardi
Copy link
Member Author

jGaboardi commented Jun 30, 2023

Recording package versions for posterity.

.ci/311.yml Ubuntu (last known pass)
            environment : test (active)
           env location : /home/runner/micromamba/envs/test
      user config files : /home/runner/.mambarc
 populated config files : /home/runner/micromamba-bin/.condarc
       libmamba version : 1.4.4
     micromamba version : 1.4.4
           curl version : libcurl/7.88.1 OpenSSL/3.1.1 zlib/1.2.13 zstd/1.5.2 libssh2/1.11.0 nghttp2/1.52.0
     libarchive version : libarchive 3.6.2 zlib/1.2.13 bz2lib/1.0.8 libzstd/1.5.2
       virtual packages : __unix=0=0
                          __linux=5.15.0=0
                          __glibc=2.35=0
                          __archspec=1=x86_64
               channels : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
       base environment : /home/runner/micromamba
               platform : linux-64
List of packages in environment: "/home/runner/micromamba/envs/test"

  Name                           Version       Build                Channel    
─────────────────────────────────────────────────────────────────────────────────
  _libgcc_mutex                  0.1           conda_forge          conda-forge
  _openmp_mutex                  4.5           2_gnu                conda-forge
  alabaster                      0.7.13        pyhd8ed1ab_0         conda-forge
  alsa-lib                       1.2.8         h166bdaf_0           conda-forge
  attr                           2.5.1         h166bdaf_1           conda-forge
  attrs                          23.1.0        pyh71513ae_1         conda-forge
  babel                          2.12.1        pyhd8ed1ab_1         conda-forge
  beautifulsoup4                 4.12.2        pyha770c72_0         conda-forge
  bleach                         6.0.0         pyhd8ed1ab_0         conda-forge
  blosc                          1.21.4        h0f2a231_0           conda-forge
  boost-cpp                      1.78.0        h6582d0a_3           conda-forge
  branca                         0.6.0         pyhd8ed1ab_0         conda-forge
  brotli                         1.0.9         h166bdaf_8           conda-forge
  brotli-bin                     1.0.9         h166bdaf_8           conda-forge
  bzip2                          1.0.8         h7f98852_4           conda-forge
  c-ares                         1.19.1        hd590300_0           conda-forge
  ca-certificates                2023.5.7      hbcca054_0           conda-forge
  cairo                          1.16.0        hbbf8b49_1016        conda-forge
  certifi                        2023.5.7      pyhd8ed1ab_0         conda-forge
  cfitsio                        4.2.0         hd9d235c_0           conda-forge
  charset-normalizer             3.1.0         pyhd8ed1ab_0         conda-forge
  click                          8.1.3         unix_pyhd8ed1ab_2    conda-forge
  click-plugins                  1.1.1         py_0                 conda-forge
  cligj                          0.7.2         pyhd8ed1ab_1         conda-forge
  codecov                        2.1.13        pyhd8ed1ab_0         conda-forge
  colorama                       0.4.6         pyhd8ed1ab_0         conda-forge
  contourpy                      1.1.0         py311h9547e67_0      conda-forge
  coverage                       7.2.7         py311h459d7ec_0      conda-forge
  curl                           8.1.2         h409715c_0           conda-forge
  cycler                         0.11.0        pyhd8ed1ab_0         conda-forge
  dataclasses                    0.8           pyhc8e2a94_3         conda-forge
  dbus                           1.13.6        h5008d03_3           conda-forge
  defusedxml                     0.7.1         pyhd8ed1ab_0         conda-forge
  docutils                       0.20.1        py311h38be061_0      conda-forge
  entrypoints                    0.4           pyhd8ed1ab_0         conda-forge
  esda                           2.4.3         pyhd8ed1ab_0         conda-forge
  exceptiongroup                 1.1.1         pyhd8ed1ab_0         conda-forge
  execnet                        1.9.0         pyhd8ed1ab_0         conda-forge
  expat                          2.5.0         hcb278e6_1           conda-forge
  fiona                          1.9.4         py311hbac4ec9_0      conda-forge
  folium                         0.14.0        pyhd8ed1ab_0         conda-forge
  font-ttf-dejavu-sans-mono      2.37          hab24e00_0           conda-forge
  font-ttf-inconsolata           3.000         h77eed37_0           conda-forge
  font-ttf-source-code-pro       2.038         h77eed37_0           conda-forge
  font-ttf-ubuntu                0.83          hab24e00_0           conda-forge
  fontconfig                     2.14.2        h14ed4e7_0           conda-forge
  fonts-conda-ecosystem          1             0                    conda-forge
  fonts-conda-forge              1             0                    conda-forge
  fonttools                      4.40.0        py311h459d7ec_0      conda-forge
  freetype                       2.12.1        hca18f0e_1           conda-forge
  freexl                         1.0.6         h166bdaf_1           conda-forge
  gdal                           3.7.0         py311h281082f_2      conda-forge
  geopandas                      0.13.2        pyhd8ed1ab_1         conda-forge
  geopandas-base                 0.13.2        pyha770c72_1         conda-forge
  geos                           3.11.2        hcb278e6_0           conda-forge
  geotiff                        1.7.1         h22adcc9_9           conda-forge
  gettext                        0.21.1        h27087fc_0           conda-forge
  giflib                         5.2.1         h0b41bf4_3           conda-forge
  glib                           2.76.3        hfc55251_0           conda-forge
  glib-tools                     2.76.3        hfc55251_0           conda-forge
  gmp                            6.2.1         h58526e2_0           conda-forge
  graphite2                      1.3.13        h58526e2_1001        conda-forge
  gst-plugins-base               1.22.3        h938bd60_1           conda-forge
  gstreamer                      1.22.3        h977cf35_1           conda-forge
  harfbuzz                       7.3.0         hdb3a94d_0           conda-forge
  hdf4                           4.2.15        h501b40f_6           conda-forge
  hdf5                           1.14.0        nompi_hb72d44e_103   conda-forge
  icu                            72.1          hcb278e6_0           conda-forge
  idna                           3.4           pyhd8ed1ab_0         conda-forge
  imagesize                      1.4.1         pyhd8ed1ab_0         conda-forge
  importlib-metadata             6.6.0         pyha770c72_0         conda-forge
  importlib_metadata             6.6.0         hd8ed1ab_0           conda-forge
  importlib_resources            5.12.0        pyhd8ed1ab_0         conda-forge
  iniconfig                      2.0.0         pyhd8ed1ab_0         conda-forge
  jinja2                         3.1.2         pyhd8ed1ab_1         conda-forge
  joblib                         1.2.0         pyhd8ed1ab_0         conda-forge
  json-c                         0.16          hc379101_0           conda-forge
  jsonschema                     4.17.3        pyhd8ed1ab_0         conda-forge
  jupyter_client                 8.2.0         pyhd8ed1ab_0         conda-forge
  jupyter_core                   5.3.1         py311h38be061_0      conda-forge
  jupyterlab_pygments            0.2.2         pyhd8ed1ab_0         conda-forge
  kealib                         1.5.1         h3845be2_3           conda-forge
  keyutils                       1.6.1         h166bdaf_0           conda-forge
  kiwisolver                     1.4.4         py311h4dd048b_1      conda-forge
  krb5                           1.20.1        h81ceb04_0           conda-forge
  lame                           3.100         h166bdaf_1003        conda-forge
  latexcodec                     2.0.1         pyh9f0ad1d_0         conda-forge
  lcms2                          2.15          haa2dc70_1           conda-forge
  ld_impl_linux-64               2.40          h41732ed_0           conda-forge
  lerc                           4.0.0         h27087fc_0           conda-forge
  libaec                         1.0.6         hcb278e6_1           conda-forge
  libarchive                     3.6.2         h039dbb9_1           conda-forge
  libblas                        3.9.0         17_linux64_openblas  conda-forge
  libbrotlicommon                1.0.9         h166bdaf_8           conda-forge
  libbrotlidec                   1.0.9         h166bdaf_8           conda-forge
  libbrotlienc                   1.0.9         h166bdaf_8           conda-forge
  libcap                         2.67          he9d0100_0           conda-forge
  libcblas                       3.9.0         17_linux64_openblas  conda-forge
  libclang                       15.0.7        default_h7634d5b_2   conda-forge
  libclang13                     15.0.7        default_h9986a30_2   conda-forge
  libcups                        2.3.3         h36d4200_3           conda-forge
  libcurl                        8.1.2         h409715c_0           conda-forge
  libdeflate                     1.18          h0b41bf4_0           conda-forge
  libedit                        3.1.20191231  he28a2e2_2           conda-forge
  libev                          4.33          h516909a_1           conda-forge
  libevent                       2.1.12        hf998b51_1           conda-forge
  libexpat                       2.5.0         hcb278e6_1           conda-forge
  libffi                         3.4.2         h7f98852_5           conda-forge
  libflac                        1.4.2         h27087fc_0           conda-forge
  libgcc-ng                      13.1.0        he5830b7_0           conda-forge
  libgcrypt                      1.10.1        h166bdaf_0           conda-forge
  libgdal                        3.7.0         h5418a03_2           conda-forge
  libgfortran-ng                 13.1.0        h69a702a_0           conda-forge
  libgfortran5                   13.1.0        h15d22d2_0           conda-forge
  libglib                        2.76.3        hebfc3b9_0           conda-forge
  libgomp                        13.1.0        he5830b7_0           conda-forge
  libgpg-error                   1.47          h71f35ed_0           conda-forge
  libiconv                       1.17          h166bdaf_0           conda-forge
  libjpeg-turbo                  2.1.5.1       h0b41bf4_0           conda-forge
  libkml                         1.3.0         h37653c0_1015        conda-forge
  liblapack                      3.9.0         17_linux64_openblas  conda-forge
  libllvm15                      15.0.7        h5cf9203_2           conda-forge
  libnetcdf                      4.9.2         nompi_h0f3d0bb_105   conda-forge
  libnghttp2                     1.52.0        h61bc06f_0           conda-forge
  libnsl                         2.0.0         h7f98852_0           conda-forge
  libogg                         1.3.4         h7f98852_1           conda-forge
  libopenblas                    0.3.23        pthreads_h80387f5_0  conda-forge
  libopus                        1.3.1         h7f98852_1           conda-forge
  libpng                         1.6.39        h753d276_0           conda-forge
  libpq                          15.3          hbcd7760_1           conda-forge
  libpysal                       4.7.0         pyhd8ed1ab_0         conda-forge
  librttopo                      1.1.0         h0d5128d_13          conda-forge
  libsndfile                     1.2.0         hb75c966_0           conda-forge
  libsodium                      1.0.18        h36c2ea0_1           conda-forge
  libspatialindex                1.9.3         h9c3ff4c_4           conda-forge
  libspatialite                  5.0.1         hca56755_27          conda-forge
  libsqlite                      3.42.0        h2797004_0           conda-forge
  libssh2                        1.11.0        h0841786_0           conda-forge
  libstdcxx-ng                   13.1.0        hfd8a6a1_0           conda-forge
  libsystemd0                    253           h8c4010b_1           conda-forge
  libtiff                        4.5.1         h8b53f26_0           conda-forge
  libuuid                        2.38.1        h0b41bf4_0           conda-forge
  libvorbis                      1.3.7         h9c3ff4c_0           conda-forge
  libwebp-base                   1.3.0         h0b41bf4_0           conda-forge
  libxcb                         1.15          h0b41bf4_0           conda-forge
  libxkbcommon                   1.5.0         h5d7e998_3           conda-forge
  libxml2                        2.11.4        h0d562d8_0           conda-forge
  libzip                         1.9.2         hc929e4a_1           conda-forge
  libzlib                        1.2.13        hd590300_5           conda-forge
  lz4-c                          1.9.4         hcb278e6_0           conda-forge
  lzo                            2.10          h516909a_1000        conda-forge
  mapclassify                    2.5.0         pyhd8ed1ab_1         conda-forge
  markupsafe                     2.1.3         py311h459d7ec_0      conda-forge
  matplotlib                     3.7.1         py311h38be061_0      conda-forge
  matplotlib-base                3.7.1         py311h8597a09_0      conda-forge
  mistune                        2.0.5         pyhd8ed1ab_0         conda-forge
  mpg123                         1.31.3        hcb278e6_0           conda-forge
  munch                          3.0.0         pyhd8ed1ab_0         conda-forge
  munkres                        1.1.4         pyh9f0ad1d_0         conda-forge
  mysql-common                   8.0.32        hf1915f5_3           conda-forge
  mysql-libs                     8.0.32        hca2cd23_3           conda-forge
  nbclient                       0.8.0         pyhd8ed1ab_0         conda-forge
  nbconvert                      7.5.0         pyhd8ed1ab_0         conda-forge
  nbconvert-core                 7.5.0         pyhd8ed1ab_0         conda-forge
  nbconvert-pandoc               7.5.0         pyhd8ed1ab_0         conda-forge
  nbformat                       5.9.0         pyhd8ed1ab_0         conda-forge
  nbsphinx                       0.9.2         pyhd8ed1ab_0         conda-forge
  ncurses                        6.4           hcb278e6_0           conda-forge
  networkx                       3.1           pyhd8ed1ab_0         conda-forge
  nspr                           4.35          h27087fc_0           conda-forge
  nss                            3.89          he45b914_0           conda-forge
  numpy                          1.24.3        py311h64a7726_0      conda-forge
  numpydoc                       1.5.0         pyhd8ed1ab_0         conda-forge
  openjpeg                       2.5.0         hfec8fc6_2           conda-forge
  openssl                        3.1.1         hd590300_1           conda-forge
  packaging                      23.1          pyhd8ed1ab_0         conda-forge
  pandas                         2.0.2         py311h320fe9a_0      conda-forge
  pandoc                         3.1.3         h32600fe_0           conda-forge
  pandocfilters                  1.5.0         pyhd8ed1ab_0         conda-forge
  pcre2                          10.40         hc3806b6_0           conda-forge
  pillow                         9.5.0         py311h0b84326_1      conda-forge
  pip                            23.1.2        pyhd8ed1ab_0         conda-forge
  pixman                         0.40.0        h36c2ea0_0           conda-forge
  pkgutil-resolve-name           1.3.10        pyhd8ed1ab_0         conda-forge
  platformdirs                   3.5.3         pyhd8ed1ab_0         conda-forge
  pluggy                         1.0.0         pyhd8ed1ab_5         conda-forge
  ply                            3.11          py_1                 conda-forge
  pooch                          1.7.0         pyha770c72_3         conda-forge
  poppler                        23.05.0       hd18248d_1           conda-forge
  poppler-data                   0.4.12        hd8ed1ab_0           conda-forge
  postgresql                     15.3          hd458b1d_1           conda-forge
  proj                           9.2.1         ha643af7_0           conda-forge
  pthread-stubs                  0.4           h36c2ea0_1001        conda-forge
  pulseaudio-client              16.1          hb77b528_4           conda-forge
  pybtex                         0.24.0        pyhd8ed1ab_2         conda-forge
  pybtex-docutils                1.0.2         py311h38be061_2      conda-forge
  pygments                       2.15.1        pyhd8ed1ab_0         conda-forge
  pyparsing                      3.0.9         pyhd8ed1ab_0         conda-forge
  pyproj                         3.6.0         py311ha169711_1      conda-forge
  pyqt                           5.15.7        py311ha74522f_3      conda-forge
  pyqt5-sip                      12.11.0       py311hcafe171_3      conda-forge
  pyrsistent                     0.19.3        py311h2582759_0      conda-forge
  pysocks                        1.7.1         pyha2e5f31_6         conda-forge
  pytest                         7.3.2         pyhd8ed1ab_1         conda-forge
  pytest-cov                     4.1.0         pyhd8ed1ab_0         conda-forge
  pytest-xdist                   3.3.1         pyhd8ed1ab_0         conda-forge
  python                         3.11.4        hab00c5b_0_cpython   conda-forge
  python-dateutil                2.8.2         pyhd8ed1ab_0         conda-forge
  python-fastjsonschema          2.17.1        pyhd8ed1ab_0         conda-forge
  python-tzdata                  2023.3        pyhd8ed1ab_0         conda-forge
  python_abi                     3.11          3_cp311              conda-forge
  pytz                           2023.3        pyhd8ed1ab_0         conda-forge
  pyyaml                         6.0           py311hd4cff14_5      conda-forge
  pyzmq                          25.1.0        py311h75c88c4_0      conda-forge
  qt-main                        5.15.8        h01ceb2d_13          conda-forge
  readline                       8.2           h8228510_1           conda-forge
  requests                       2.31.0        pyhd8ed1ab_0         conda-forge
  rtree                          1.0.1         py311h3bb2b0f_1      conda-forge
  scikit-learn                   1.2.2         py311hc009520_2      conda-forge
  scipy                          1.10.1        py311h64a7726_3      conda-forge
  setuptools                     67.7.2        pyhd8ed1ab_0         conda-forge
  shapely                        2.0.1         py311h54d622a_1      conda-forge
  sip                            6.7.9         py311hb755f60_0      conda-forge
  six                            1.16.0        pyh6c4a22f_0         conda-forge
  snappy                         1.1.10        h9fff704_0           conda-forge
  snowballstemmer                2.2.0         pyhd8ed1ab_0         conda-forge
  soupsieve                      2.3.2.post1   pyhd8ed1ab_0         conda-forge
  spaghetti                      1.7.3         pyhd8ed1ab_0         conda-forge
  sphinx                         7.0.1         pyhd8ed1ab_0         conda-forge
  sphinx_bootstrap_theme         0.8.1         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-applehelp        1.0.4         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-bibtex           2.5.0         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-devhelp          1.0.2         py_0                 conda-forge
  sphinxcontrib-htmlhelp         2.0.1         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-jsmath           1.0.1         py_0                 conda-forge
  sphinxcontrib-qthelp           1.0.3         py_0                 conda-forge
  sphinxcontrib-serializinghtml  1.1.5         pyhd8ed1ab_2         conda-forge
  sqlite                         3.42.0        h2c6b66d_0           conda-forge
  threadpoolctl                  3.1.0         pyh8a188c0_0         conda-forge
  tiledb                         2.13.2        hd532e3d_0           conda-forge
  tinycss2                       1.2.1         pyhd8ed1ab_0         conda-forge
  tk                             8.6.12        h27826a3_0           conda-forge
  toml                           0.10.2        pyhd8ed1ab_0         conda-forge
  tomli                          2.0.1         pyhd8ed1ab_0         conda-forge
  tornado                        6.3.2         py311h459d7ec_0      conda-forge
  tqdm                           4.65.0        pyhd8ed1ab_1         conda-forge
  traitlets                      5.9.0         pyhd8ed1ab_0         conda-forge
  typing-extensions              4.6.3         hd8ed1ab_0           conda-forge
  typing_extensions              4.6.3         pyha770c72_0         conda-forge
  tzcode                         2023c         h0b41bf4_0           conda-forge
  tzdata                         2023c         h71feb2d_0           conda-forge
  urllib3                        2.0.3         pyhd8ed1ab_0         conda-forge
  webencodings                   0.5.1         py_1                 conda-forge
  wheel                          0.40.0        pyhd8ed1ab_0         conda-forge
  xcb-util                       0.4.0         hd590300_1           conda-forge
  xcb-util-image                 0.4.0         h8ee46fc_1           conda-forge
  xcb-util-keysyms               0.4.0         h8ee46fc_1           conda-forge
  xcb-util-renderutil            0.3.9         hd590300_1           conda-forge
  xcb-util-wm                    0.4.1         h8ee46fc_1           conda-forge
  xerces-c                       3.2.4         h8d71039_2           conda-forge
  xkeyboard-config               2.39          hd590300_0           conda-forge
  xorg-kbproto                   1.0.7         h7f98852_1002        conda-forge
  xorg-libice                    1.1.1         hd590300_0           conda-forge
  xorg-libsm                     1.2.4         h7391055_0           conda-forge
  xorg-libx11                    1.8.6         h8ee46fc_0           conda-forge
  xorg-libxau                    1.0.11        hd590300_0           conda-forge
  xorg-libxdmcp                  1.1.3         h7f98852_0           conda-forge
  xorg-libxext                   1.3.4         h0b41bf4_2           conda-forge
  xorg-libxrender                0.9.10        h7f98852_1003        conda-forge
  xorg-renderproto               0.11.1        h7f98852_1002        conda-forge
  xorg-xextproto                 7.3.0         h0b41bf4_1003        conda-forge
  xorg-xf86vidmodeproto          2.3.1         h7f98852_1002        conda-forge
  xorg-xproto                    7.0.31        h7f98852_1007        conda-forge
  xyzservices                    2023.5.0      pyhd8ed1ab_1         conda-forge
  xz                             5.2.6         h166bdaf_0           conda-forge
  yaml                           0.2.5         h7f98852_2           conda-forge
  zeromq                         4.3.4         h9c3ff4c_1           conda-forge
  zipp                           3.15.0        pyhd8ed1ab_0         conda-forge
  zlib                           1.2.13        hd590300_5           conda-forge
  zstd                           1.5.2         h3eb15da_6           conda-forge
.ci/311.yml Ubuntu (current fail)
            environment : test (active)
           env location : /home/runner/micromamba/envs/test
      user config files : /home/runner/.mambarc
 populated config files : /home/runner/micromamba-bin/.condarc
       libmamba version : 1.4.4
     micromamba version : 1.4.4
           curl version : libcurl/7.88.1 OpenSSL/3.1.1 zlib/1.2.13 zstd/1.5.2 libssh2/1.11.0 nghttp2/1.52.0
     libarchive version : libarchive 3.6.2 zlib/1.2.13 bz2lib/1.0.8 libzstd/1.5.2
       virtual packages : __unix=0=0
                          __linux=5.15.0=0
                          __glibc=2.35=0
                          __archspec=1=x86_64
               channels : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
       base environment : /home/runner/micromamba
               platform : linux-64
List of packages in environment: "/home/runner/micromamba/envs/test"

  Name                           Version       Build                Channel    
─────────────────────────────────────────────────────────────────────────────────
  _libgcc_mutex                  0.1           conda_forge          conda-forge
  _openmp_mutex                  4.5           2_gnu                conda-forge
  alabaster                      0.7.13        pyhd8ed1ab_0         conda-forge
  alsa-lib                       1.2.8         h166bdaf_0           conda-forge
  attr                           2.5.1         h166bdaf_1           conda-forge
  attrs                          23.1.0        pyh71513ae_1         conda-forge
  babel                          2.12.1        pyhd8ed1ab_1         conda-forge
  beautifulsoup4                 4.12.2        pyha770c72_0         conda-forge
  bleach                         6.0.0         pyhd8ed1ab_0         conda-forge
  blosc                          1.21.4        h0f2a231_0           conda-forge
  boost-cpp                      1.78.0        h6582d0a_3           conda-forge
  branca                         0.6.0         pyhd8ed1ab_0         conda-forge
  brotli                         1.0.9         h166bdaf_8           conda-forge
  brotli-bin                     1.0.9         h166bdaf_8           conda-forge
  bzip2                          1.0.8         h7f98852_4           conda-forge
  c-ares                         1.19.1        hd590300_0           conda-forge
  ca-certificates                2023.5.7      hbcca054_0           conda-forge
  cairo                          1.16.0        hbbf8b49_1016        conda-forge
  certifi                        2023.5.7      pyhd8ed1ab_0         conda-forge
  cfitsio                        4.2.0         hd9d235c_0           conda-forge
  charset-normalizer             3.1.0         pyhd8ed1ab_0         conda-forge
  click                          8.1.3         unix_pyhd8ed1ab_2    conda-forge
  click-plugins                  1.1.1         py_0                 conda-forge
  cligj                          0.7.2         pyhd8ed1ab_1         conda-forge
  codecov                        2.1.13        pyhd8ed1ab_0         conda-forge
  colorama                       0.4.6         pyhd8ed1ab_0         conda-forge
  contourpy                      1.1.0         py311h9547e67_0      conda-forge
  coverage                       7.2.7         py311h459d7ec_0      conda-forge
  curl                           8.1.2         h409715c_0           conda-forge
  cycler                         0.11.0        pyhd8ed1ab_0         conda-forge
  dataclasses                    0.8           pyhc8e2a94_3         conda-forge
  dbus                           1.13.6        h5008d03_3           conda-forge
  defusedxml                     0.7.1         pyhd8ed1ab_0         conda-forge
  docutils                       0.20.1        py311h38be061_0      conda-forge
  entrypoints                    0.4           pyhd8ed1ab_0         conda-forge
  esda                           2.4.3         pyhd8ed1ab_0         conda-forge
  exceptiongroup                 1.1.1         pyhd8ed1ab_0         conda-forge
  execnet                        1.9.0         pyhd8ed1ab_0         conda-forge
  expat                          2.5.0         hcb278e6_1           conda-forge
  fiona                          1.9.4         py311hbac4ec9_0      conda-forge
  folium                         0.14.0        pyhd8ed1ab_0         conda-forge
  font-ttf-dejavu-sans-mono      2.37          hab24e00_0           conda-forge
  font-ttf-inconsolata           3.000         h77eed37_0           conda-forge
  font-ttf-source-code-pro       2.038         h77eed37_0           conda-forge
  font-ttf-ubuntu                0.83          hab24e00_0           conda-forge
  fontconfig                     2.14.2        h14ed4e7_0           conda-forge
  fonts-conda-ecosystem          1             0                    conda-forge
  fonts-conda-forge              1             0                    conda-forge
  fonttools                      4.40.0        py311h459d7ec_0      conda-forge
  freetype                       2.12.1        hca18f0e_1           conda-forge
  freexl                         1.0.6         h166bdaf_1           conda-forge
  gdal                           3.7.0         py311h281082f_2      conda-forge
  geopandas                      0.13.2        pyhd8ed1ab_1         conda-forge
  geopandas-base                 0.13.2        pyha770c72_1         conda-forge
  geos                           3.11.2        hcb278e6_0           conda-forge
  geotiff                        1.7.1         h22adcc9_9           conda-forge
  gettext                        0.21.1        h27087fc_0           conda-forge
  giflib                         5.2.1         h0b41bf4_3           conda-forge
  glib                           2.76.3        hfc55251_0           conda-forge
  glib-tools                     2.76.3        hfc55251_0           conda-forge
  gmp                            6.2.1         h58526e2_0           conda-forge
  graphite2                      1.3.13        h58526e2_1001        conda-forge
  gst-plugins-base               1.22.3        h938bd60_1           conda-forge
  gstreamer                      1.22.3        h977cf35_1           conda-forge
  harfbuzz                       7.3.0         hdb3a94d_0           conda-forge
  hdf4                           4.2.15        h501b40f_6           conda-forge
  hdf5                           1.14.0        nompi_hb72d44e_103   conda-forge
  icu                            72.1          hcb278e6_0           conda-forge
  idna                           3.4           pyhd8ed1ab_0         conda-forge
  imagesize                      1.4.1         pyhd8ed1ab_0         conda-forge
  importlib-metadata             6.6.0         pyha770c72_0         conda-forge
  importlib_metadata             6.6.0         hd8ed1ab_0           conda-forge
  importlib_resources            5.12.0        pyhd8ed1ab_0         conda-forge
  iniconfig                      2.0.0         pyhd8ed1ab_0         conda-forge
  jinja2                         3.1.2         pyhd8ed1ab_1         conda-forge
  joblib                         1.2.0         pyhd8ed1ab_0         conda-forge
  json-c                         0.16          hc379101_0           conda-forge
  jsonschema                     4.17.3        pyhd8ed1ab_0         conda-forge
  jupyter_client                 8.2.0         pyhd8ed1ab_0         conda-forge
  jupyter_core                   5.3.1         py311h38be061_0      conda-forge
  jupyterlab_pygments            0.2.2         pyhd8ed1ab_0         conda-forge
  kealib                         1.5.1         h3845be2_3           conda-forge
  keyutils                       1.6.1         h166bdaf_0           conda-forge
  kiwisolver                     1.4.4         py311h4dd048b_1      conda-forge
  krb5                           1.20.1        h81ceb04_0           conda-forge
  lame                           3.100         h166bdaf_1003        conda-forge
  latexcodec                     2.0.1         pyh9f0ad1d_0         conda-forge
  lcms2                          2.15          haa2dc70_1           conda-forge
  ld_impl_linux-64               2.40          h41732ed_0           conda-forge
  lerc                           4.0.0         h27087fc_0           conda-forge
  libaec                         1.0.6         hcb278e6_1           conda-forge
  libarchive                     3.6.2         h039dbb9_1           conda-forge
  libblas                        3.9.0         17_linux64_openblas  conda-forge
  libbrotlicommon                1.0.9         h166bdaf_8           conda-forge
  libbrotlidec                   1.0.9         h166bdaf_8           conda-forge
  libbrotlienc                   1.0.9         h166bdaf_8           conda-forge
  libcap                         2.67          he9d0100_0           conda-forge
  libcblas                       3.9.0         17_linux64_openblas  conda-forge
  libclang                       15.0.7        default_h7634d5b_2   conda-forge
  libclang13                     15.0.7        default_h9986a30_2   conda-forge
  libcups                        2.3.3         h36d4200_3           conda-forge
  libcurl                        8.1.2         h409715c_0           conda-forge
  libdeflate                     1.18          h0b41bf4_0           conda-forge
  libedit                        3.1.20191231  he28a2e2_2           conda-forge
  libev                          4.33          h516909a_1           conda-forge
  libevent                       2.1.12        hf998b51_1           conda-forge
  libexpat                       2.5.0         hcb278e6_1           conda-forge
  libffi                         3.4.2         h7f98852_5           conda-forge
  libflac                        1.4.2         h27087fc_0           conda-forge
  libgcc-ng                      13.1.0        he5830b7_0           conda-forge
  libgcrypt                      1.10.1        h166bdaf_0           conda-forge
  libgdal                        3.7.0         h5418a03_2           conda-forge
  libgfortran-ng                 13.1.0        h69a702a_0           conda-forge
  libgfortran5                   13.1.0        h15d22d2_0           conda-forge
  libglib                        2.76.3        hebfc3b9_0           conda-forge
  libgomp                        13.1.0        he5830b7_0           conda-forge
  libgpg-error                   1.47          h71f35ed_0           conda-forge
  libiconv                       1.17          h166bdaf_0           conda-forge
  libjpeg-turbo                  2.1.5.1       h0b41bf4_0           conda-forge
  libkml                         1.3.0         h37653c0_1015        conda-forge
  liblapack                      3.9.0         17_linux64_openblas  conda-forge
  libllvm15                      15.0.7        h5cf9203_2           conda-forge
  libnetcdf                      4.9.2         nompi_h0f3d0bb_105   conda-forge
  libnghttp2                     1.52.0        h61bc06f_0           conda-forge
  libnsl                         2.0.0         h7f98852_0           conda-forge
  libogg                         1.3.4         h7f98852_1           conda-forge
  libopenblas                    0.3.23        pthreads_h80387f5_0  conda-forge
  libopus                        1.3.1         h7f98852_1           conda-forge
  libpng                         1.6.39        h753d276_0           conda-forge
  libpq                          15.3          hbcd7760_1           conda-forge
  libpysal                       4.7.0         pyhd8ed1ab_0         conda-forge
  librttopo                      1.1.0         h0d5128d_13          conda-forge
  libsndfile                     1.2.0         hb75c966_0           conda-forge
  libsodium                      1.0.18        h36c2ea0_1           conda-forge
  libspatialindex                1.9.3         h9c3ff4c_4           conda-forge
  libspatialite                  5.0.1         hca56755_27          conda-forge
  libsqlite                      3.42.0        h2797004_0           conda-forge
  libssh2                        1.11.0        h0841786_0           conda-forge
  libstdcxx-ng                   13.1.0        hfd8a6a1_0           conda-forge
  libsystemd0                    253           h8c4010b_1           conda-forge
  libtiff                        4.5.1         h8b53f26_0           conda-forge
  libuuid                        2.38.1        h0b41bf4_0           conda-forge
  libvorbis                      1.3.7         h9c3ff4c_0           conda-forge
  libwebp-base                   1.3.0         h0b41bf4_0           conda-forge
  libxcb                         1.15          h0b41bf4_0           conda-forge
  libxkbcommon                   1.5.0         h5d7e998_3           conda-forge
  libxml2                        2.11.4        h0d562d8_0           conda-forge
  libzip                         1.9.2         hc929e4a_1           conda-forge
  libzlib                        1.2.13        hd590300_5           conda-forge
  lz4-c                          1.9.4         hcb278e6_0           conda-forge
  lzo                            2.10          h516909a_1000        conda-forge
  mapclassify                    2.5.0         pyhd8ed1ab_1         conda-forge
  markupsafe                     2.1.3         py311h459d7ec_0      conda-forge
  matplotlib                     3.7.1         py311h38be061_0      conda-forge
  matplotlib-base                3.7.1         py311h8597a09_0      conda-forge
  mistune                        2.0.5         pyhd8ed1ab_0         conda-forge
  mpg123                         1.31.3        hcb278e6_0           conda-forge
  munch                          3.0.0         pyhd8ed1ab_0         conda-forge
  munkres                        1.1.4         pyh9f0ad1d_0         conda-forge
  mysql-common                   8.0.32        hf1915f5_3           conda-forge
  mysql-libs                     8.0.32        hca2cd23_3           conda-forge
  nbclient                       0.8.0         pyhd8ed1ab_0         conda-forge
  nbconvert                      7.5.0         pyhd8ed1ab_0         conda-forge
  nbconvert-core                 7.5.0         pyhd8ed1ab_0         conda-forge
  nbconvert-pandoc               7.5.0         pyhd8ed1ab_0         conda-forge
  nbformat                       5.9.0         pyhd8ed1ab_0         conda-forge
  nbsphinx                       0.9.2         pyhd8ed1ab_0         conda-forge
  ncurses                        6.4           hcb278e6_0           conda-forge
  networkx                       3.1           pyhd8ed1ab_0         conda-forge
  nspr                           4.35          h27087fc_0           conda-forge
  nss                            3.89          he45b914_0           conda-forge
  numpy                          1.25.0        py311h64a7726_0      conda-forge
  numpydoc                       1.5.0         pyhd8ed1ab_0         conda-forge
  openjpeg                       2.5.0         hfec8fc6_2           conda-forge
  openssl                        3.1.1         hd590300_1           conda-forge
  packaging                      23.1          pyhd8ed1ab_0         conda-forge
  pandas                         2.0.2         py311h320fe9a_0      conda-forge
  pandoc                         3.1.3         h32600fe_0           conda-forge
  pandocfilters                  1.5.0         pyhd8ed1ab_0         conda-forge
  pcre2                          10.40         hc3806b6_0           conda-forge
  pillow                         9.5.0         py311h0b84326_1      conda-forge
  pip                            23.1.2        pyhd8ed1ab_0         conda-forge
  pixman                         0.40.0        h36c2ea0_0           conda-forge
  pkgutil-resolve-name           1.3.10        pyhd8ed1ab_0         conda-forge
  platformdirs                   3.6.0         pyhd8ed1ab_0         conda-forge
  pluggy                         1.0.0         pyhd8ed1ab_5         conda-forge
  ply                            3.11          py_1                 conda-forge
  pooch                          1.7.0         pyha770c72_3         conda-forge
  poppler                        23.05.0       hd18248d_1           conda-forge
  poppler-data                   0.4.12        hd8ed1ab_0           conda-forge
  postgresql                     15.3          hd458b1d_1           conda-forge
  proj                           9.2.1         ha643af7_0           conda-forge
  pthread-stubs                  0.4           h36c2ea0_1001        conda-forge
  pulseaudio-client              16.1          hb77b528_4           conda-forge
  pybtex                         0.24.0        pyhd8ed1ab_2         conda-forge
  pybtex-docutils                1.0.2         py311h38be061_2      conda-forge
  pygments                       2.15.1        pyhd8ed1ab_0         conda-forge
  pyparsing                      3.1.0         pyhd8ed1ab_0         conda-forge
  pyproj                         3.6.0         py311ha169711_1      conda-forge
  pyqt                           5.15.7        py311ha74522f_3      conda-forge
  pyqt5-sip                      12.11.0       py311hcafe171_3      conda-forge
  pyrsistent                     0.19.3        py311h2582759_0      conda-forge
  pysocks                        1.7.1         pyha2e5f31_6         conda-forge
  pytest                         7.3.2         pyhd8ed1ab_1         conda-forge
  pytest-cov                     4.1.0         pyhd8ed1ab_0         conda-forge
  pytest-xdist                   3.3.1         pyhd8ed1ab_0         conda-forge
  python                         3.11.4        hab00c5b_0_cpython   conda-forge
  python-dateutil                2.8.2         pyhd8ed1ab_0         conda-forge
  python-fastjsonschema          2.17.1        pyhd8ed1ab_0         conda-forge
  python-tzdata                  2023.3        pyhd8ed1ab_0         conda-forge
  python_abi                     3.11          3_cp311              conda-forge
  pytz                           2023.3        pyhd8ed1ab_0         conda-forge
  pyyaml                         6.0           py311hd4cff14_5      conda-forge
  pyzmq                          25.1.0        py311h75c88c4_0      conda-forge
  qt-main                        5.15.8        h01ceb2d_13          conda-forge
  readline                       8.2           h8228510_1           conda-forge
  requests                       2.31.0        pyhd8ed1ab_0         conda-forge
  rtree                          1.0.1         py311h3bb2b0f_1      conda-forge
  scikit-learn                   1.2.2         py311hc009520_2      conda-forge
  scipy                          1.10.1        py311h64a7726_3      conda-forge
  setuptools                     67.7.2        pyhd8ed1ab_0         conda-forge
  shapely                        2.0.1         py311h54d622a_1      conda-forge
  sip                            6.7.9         py311hb755f60_0      conda-forge
  six                            1.16.0        pyh6c4a22f_0         conda-forge
  snappy                         1.1.10        h9fff704_0           conda-forge
  snowballstemmer                2.2.0         pyhd8ed1ab_0         conda-forge
  soupsieve                      2.3.2.post1   pyhd8ed1ab_0         conda-forge
  spaghetti                      1.7.3         pyhd8ed1ab_0         conda-forge
  sphinx                         7.0.1         pyhd8ed1ab_0         conda-forge
  sphinx_bootstrap_theme         0.8.1         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-applehelp        1.0.4         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-bibtex           2.5.0         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-devhelp          1.0.2         py_0                 conda-forge
  sphinxcontrib-htmlhelp         2.0.1         pyhd8ed1ab_0         conda-forge
  sphinxcontrib-jsmath           1.0.1         py_0                 conda-forge
  sphinxcontrib-qthelp           1.0.3         py_0                 conda-forge
  sphinxcontrib-serializinghtml  1.1.5         pyhd8ed1ab_2         conda-forge
  sqlite                         3.42.0        h2c6b66d_0           conda-forge
  threadpoolctl                  3.1.0         pyh8a188c0_0         conda-forge
  tiledb                         2.13.2        hd532e3d_0           conda-forge
  tinycss2                       1.2.1         pyhd8ed1ab_0         conda-forge
  tk                             8.6.12        h27826a3_0           conda-forge
  toml                           0.10.2        pyhd8ed1ab_0         conda-forge
  tomli                          2.0.1         pyhd8ed1ab_0         conda-forge
  tornado                        6.3.2         py311h459d7ec_0      conda-forge
  tqdm                           4.65.0        pyhd8ed1ab_1         conda-forge
  traitlets                      5.9.0         pyhd8ed1ab_0         conda-forge
  typing-extensions              4.6.3         hd8ed1ab_0           conda-forge
  typing_extensions              4.6.3         pyha770c72_0         conda-forge
  tzcode                         2023c         h0b41bf4_0           conda-forge
  tzdata                         2023c         h71feb2d_0           conda-forge
  urllib3                        2.0.3         pyhd8ed1ab_0         conda-forge
  webencodings                   0.5.1         py_1                 conda-forge
  wheel                          0.40.0        pyhd8ed1ab_0         conda-forge
  xcb-util                       0.4.0         hd590300_1           conda-forge
  xcb-util-image                 0.4.0         h8ee46fc_1           conda-forge
  xcb-util-keysyms               0.4.0         h8ee46fc_1           conda-forge
  xcb-util-renderutil            0.3.9         hd590300_1           conda-forge
  xcb-util-wm                    0.4.1         h8ee46fc_1           conda-forge
  xerces-c                       3.2.4         h8d71039_2           conda-forge
  xkeyboard-config               2.39          hd590300_0           conda-forge
  xorg-kbproto                   1.0.7         h7f98852_1002        conda-forge
  xorg-libice                    1.1.1         hd590300_0           conda-forge
  xorg-libsm                     1.2.4         h7391055_0           conda-forge
  xorg-libx11                    1.8.6         h8ee46fc_0           conda-forge
  xorg-libxau                    1.0.11        hd590300_0           conda-forge
  xorg-libxdmcp                  1.1.3         h7f98852_0           conda-forge
  xorg-libxext                   1.3.4         h0b41bf4_2           conda-forge
  xorg-libxrender                0.9.10        h7f98852_1003        conda-forge
  xorg-renderproto               0.11.1        h7f98852_1002        conda-forge
  xorg-xextproto                 7.3.0         h0b41bf4_1003        conda-forge
  xorg-xf86vidmodeproto          2.3.1         h7f98852_1002        conda-forge
  xorg-xproto                    7.0.31        h7f98852_1007        conda-forge
  xyzservices                    2023.5.0      pyhd8ed1ab_1         conda-forge
  xz                             5.2.6         h166bdaf_0           conda-forge
  yaml                           0.2.5         h7f98852_2           conda-forge
  zeromq                         4.3.4         h9c3ff4c_1           conda-forge
  zipp                           3.15.0        pyhd8ed1ab_0         conda-forge
  zlib                           1.2.13        hd590300_5           conda-forge
  zstd                           1.5.2         h3eb15da_6           conda-forge
.ci/38.yml Ubuntu (pass)
            environment : test (active)
           env location : /home/runner/micromamba/envs/test
      user config files : /home/runner/.mambarc
 populated config files : /home/runner/micromamba-bin/.condarc
       libmamba version : 1.4.4
     micromamba version : 1.4.4
           curl version : libcurl/7.88.1 OpenSSL/3.1.1 zlib/1.2.13 zstd/1.5.2 libssh2/1.11.0 nghttp2/1.52.0
     libarchive version : libarchive 3.6.2 zlib/1.2.13 bz2lib/1.0.8 libzstd/1.5.2
       virtual packages : __unix=0=0
                          __linux=5.15.0=0
                          __glibc=2.35=0
                          __archspec=1=x86_64
               channels : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
       base environment : /home/runner/micromamba
               platform : linux-64
List of packages in environment: "/home/runner/micromamba/envs/test"

  Name                       Version       Build                Channel    
─────────────────────────────────────────────────────────────────────────────
  _libgcc_mutex              0.1           conda_forge          conda-forge
  _openmp_mutex              4.5           2_gnu                conda-forge
  alsa-lib                   1.2.8         h166bdaf_0           conda-forge
  attr                       2.5.1         h166bdaf_1           conda-forge
  attrs                      23.1.0        pyh71513ae_1         conda-forge
  beautifulsoup4             4.12.2        pyha770c72_0         conda-forge
  blosc                      1.21.4        h0f2a231_0           conda-forge
  boost-cpp                  1.78.0        h6582d0a_3           conda-forge
  branca                     0.6.0         pyhd8ed1ab_0         conda-forge
  brotli                     1.0.9         h166bdaf_8           conda-forge
  brotli-bin                 1.0.9         h166bdaf_8           conda-forge
  bzip2                      1.0.8         h7f98852_4           conda-forge
  c-ares                     1.19.1        hd590300_0           conda-forge
  ca-certificates            2023.5.7      hbcca054_0           conda-forge
  cairo                      1.16.0        hbbf8b49_1016        conda-forge
  certifi                    2023.5.7      pyhd8ed1ab_0         conda-forge
  cfitsio                    4.2.0         hd9d235c_0           conda-forge
  charset-normalizer         3.1.0         pyhd8ed1ab_0         conda-forge
  click                      8.1.3         unix_pyhd8ed1ab_2    conda-forge
  click-plugins              1.1.1         py_0                 conda-forge
  cligj                      0.7.2         pyhd8ed1ab_1         conda-forge
  codecov                    2.1.13        pyhd8ed1ab_0         conda-forge
  colorama                   0.4.6         pyhd8ed1ab_0         conda-forge
  contourpy                  1.1.0         py38h7f3f72f_0       conda-forge
  coverage                   7.2.7         py38h01eb140_0       conda-forge
  curl                       8.1.2         h409715c_0           conda-forge
  cycler                     0.11.0        pyhd8ed1ab_0         conda-forge
  dbus                       1.13.6        h5008d03_3           conda-forge
  esda                       2.4.3         pyhd8ed1ab_0         conda-forge
  exceptiongroup             1.1.1         pyhd8ed1ab_0         conda-forge
  execnet                    1.9.0         pyhd8ed1ab_0         conda-forge
  expat                      2.5.0         hcb278e6_1           conda-forge
  fiona                      1.9.4         py38h887bb71_0       conda-forge
  folium                     0.14.0        pyhd8ed1ab_0         conda-forge
  font-ttf-dejavu-sans-mono  2.37          hab24e00_0           conda-forge
  font-ttf-inconsolata       3.000         h77eed37_0           conda-forge
  font-ttf-source-code-pro   2.038         h77eed37_0           conda-forge
  font-ttf-ubuntu            0.83          hab24e00_0           conda-forge
  fontconfig                 2.14.2        h14ed4e7_0           conda-forge
  fonts-conda-ecosystem      1             0                    conda-forge
  fonts-conda-forge          1             0                    conda-forge
  fonttools                  4.40.0        py38h01eb140_0       conda-forge
  freetype                   2.12.1        hca18f0e_1           conda-forge
  freexl                     1.0.6         h166bdaf_1           conda-forge
  gdal                       3.7.0         py38ha708418_1       conda-forge
  geopandas                  0.10.2        pyhd8ed1ab_1         conda-forge
  geopandas-base             0.10.2        pyha770c72_1         conda-forge
  geos                       3.11.2        hcb278e6_0           conda-forge
  geotiff                    1.7.1         h480ec47_8           conda-forge
  gettext                    0.21.1        h27087fc_0           conda-forge
  giflib                     5.2.1         h0b41bf4_3           conda-forge
  glib                       2.76.3        hfc55251_0           conda-forge
  glib-tools                 2.76.3        hfc55251_0           conda-forge
  graphite2                  1.3.13        h58526e2_1001        conda-forge
  gst-plugins-base           1.22.3        h938bd60_1           conda-forge
  gstreamer                  1.22.3        h977cf35_1           conda-forge
  harfbuzz                   7.3.0         hdb3a94d_0           conda-forge
  hdf4                       4.2.15        h501b40f_6           conda-forge
  hdf5                       1.14.0        nompi_hb72d44e_103   conda-forge
  icu                        72.1          hcb278e6_0           conda-forge
  idna                       3.4           pyhd8ed1ab_0         conda-forge
  importlib-metadata         6.6.0         pyha770c72_0         conda-forge
  importlib-resources        5.12.0        pyhd8ed1ab_0         conda-forge
  importlib_resources        5.12.0        pyhd8ed1ab_0         conda-forge
  iniconfig                  2.0.0         pyhd8ed1ab_0         conda-forge
  jinja2                     3.1.2         pyhd8ed1ab_1         conda-forge
  joblib                     1.2.0         pyhd8ed1ab_0         conda-forge
  json-c                     0.16          hc379101_0           conda-forge
  kealib                     1.5.1         h3845be2_3           conda-forge
  keyutils                   1.6.1         h166bdaf_0           conda-forge
  kiwisolver                 1.4.4         py38h43d8883_1       conda-forge
  krb5                       1.20.1        h81ceb04_0           conda-forge
  lame                       3.100         h166bdaf_1003        conda-forge
  lcms2                      2.15          haa2dc70_1           conda-forge
  ld_impl_linux-64           2.40          h41732ed_0           conda-forge
  lerc                       4.0.0         h27087fc_0           conda-forge
  libaec                     1.0.6         hcb278e6_1           conda-forge
  libarchive                 3.6.2         h039dbb9_1           conda-forge
  libblas                    3.9.0         17_linux64_openblas  conda-forge
  libbrotlicommon            1.0.9         h166bdaf_8           conda-forge
  libbrotlidec               1.0.9         h166bdaf_8           conda-forge
  libbrotlienc               1.0.9         h166bdaf_8           conda-forge
  libcap                     2.67          he9d0100_0           conda-forge
  libcblas                   3.9.0         17_linux64_openblas  conda-forge
  libclang                   15.0.7        default_h7634d5b_2   conda-forge
  libclang13                 15.0.7        default_h9986a30_2   conda-forge
  libcups                    2.3.3         h36d4200_3           conda-forge
  libcurl                    8.1.2         h409715c_0           conda-forge
  libdeflate                 1.18          h0b41bf4_0           conda-forge
  libedit                    3.1.20191231  he28a2e2_2           conda-forge
  libev                      4.33          h516909a_1           conda-forge
  libevent                   2.1.12        hf998b51_1           conda-forge
  libexpat                   2.5.0         hcb278e6_1           conda-forge
  libffi                     3.4.2         h7f98852_5           conda-forge
  libflac                    1.4.2         h27087fc_0           conda-forge
  libgcc-ng                  13.1.0        he5830b7_0           conda-forge
  libgcrypt                  1.10.1        h166bdaf_0           conda-forge
  libgdal                    3.7.0         h9f4e061_1           conda-forge
  libgfortran-ng             13.1.0        h69a702a_0           conda-forge
  libgfortran5               13.1.0        h15d22d2_0           conda-forge
  libglib                    2.76.3        hebfc3b9_0           conda-forge
  libgomp                    13.1.0        he5830b7_0           conda-forge
  libgpg-error               1.47          h71f35ed_0           conda-forge
  libiconv                   1.17          h166bdaf_0           conda-forge
  libjpeg-turbo              2.1.5.1       h0b41bf4_0           conda-forge
  libkml                     1.3.0         h37653c0_1015        conda-forge
  liblapack                  3.9.0         17_linux64_openblas  conda-forge
  libllvm15                  15.0.7        h5cf9203_2           conda-forge
  libnetcdf                  4.9.2         nompi_h0f3d0bb_105   conda-forge
  libnghttp2                 1.52.0        h61bc06f_0           conda-forge
  libnsl                     2.0.0         h7f98852_0           conda-forge
  libogg                     1.3.4         h7f98852_1           conda-forge
  libopenblas                0.3.23        pthreads_h80387f5_0  conda-forge
  libopus                    1.3.1         h7f98852_1           conda-forge
  libpng                     1.6.39        h753d276_0           conda-forge
  libpq                      15.3          hbcd7760_1           conda-forge
  libpysal                   4.7.0         pyhd8ed1ab_0         conda-forge
  librttopo                  1.1.0         h0d5128d_13          conda-forge
  libsndfile                 1.2.0         hb75c966_0           conda-forge
  libspatialindex            1.9.3         h9c3ff4c_4           conda-forge
  libspatialite              5.0.1         hb46c372_26          conda-forge
  libsqlite                  3.42.0        h2797004_0           conda-forge
  libssh2                    1.11.0        h0841786_0           conda-forge
  libstdcxx-ng               13.1.0        hfd8a6a1_0           conda-forge
  libsystemd0                253           h8c4010b_1           conda-forge
  libtiff                    4.5.1         h8b53f26_0           conda-forge
  libuuid                    2.38.1        h0b41bf4_0           conda-forge
  libvorbis                  1.3.7         h9c3ff4c_0           conda-forge
  libwebp-base               1.3.0         h0b41bf4_0           conda-forge
  libxcb                     1.15          h0b41bf4_0           conda-forge
  libxkbcommon               1.5.0         h5d7e998_3           conda-forge
  libxml2                    2.11.4        h0d562d8_0           conda-forge
  libzip                     1.9.2         hc929e4a_1           conda-forge
  libzlib                    1.2.13        hd590300_5           conda-forge
  lz4-c                      1.9.4         hcb278e6_0           conda-forge
  lzo                        2.10          h516909a_1000        conda-forge
  mapclassify                2.5.0         pyhd8ed1ab_1         conda-forge
  markupsafe                 2.1.3         py38h01eb140_0       conda-forge
  matplotlib                 3.7.1         py38h578d9bd_0       conda-forge
  matplotlib-base            3.7.1         py38hd6c3c57_0       conda-forge
  mpg123                     1.31.3        hcb278e6_0           conda-forge
  munch                      3.0.0         pyhd8ed1ab_0         conda-forge
  munkres                    1.1.4         pyh9f0ad1d_0         conda-forge
  mysql-common               8.0.32        hf1915f5_3           conda-forge
  mysql-libs                 8.0.32        hca2cd23_3           conda-forge
  ncurses                    6.4           hcb278e6_0           conda-forge
  networkx                   2.6.3         pyhd8ed1ab_1         conda-forge
  nspr                       4.35          h27087fc_0           conda-forge
  nss                        3.89          he45b914_0           conda-forge
  numpy                      1.21.6        py38h1d589f8_0       conda-forge
  openjpeg                   2.5.0         hfec8fc6_2           conda-forge
  openssl                    3.1.1         hd590300_1           conda-forge
  packaging                  23.1          pyhd8ed1ab_0         conda-forge
  pandas                     1.3.5         py38h43a58ef_0       conda-forge
  pcre2                      10.40         hc3806b6_0           conda-forge
  pillow                     9.5.0         py38h885162f_1       conda-forge
  pip                        23.1.2        pyhd8ed1ab_0         conda-forge
  pixman                     0.40.0        h36c2ea0_0           conda-forge
  platformdirs               3.6.0         pyhd8ed1ab_0         conda-forge
  pluggy                     1.0.0         pyhd8ed1ab_5         conda-forge
  ply                        3.11          py_1                 conda-forge
  poppler                    23.05.0       hd18248d_1           conda-forge
  poppler-data               0.4.12        hd8ed1ab_0           conda-forge
  postgresql                 15.3          hd458b1d_1           conda-forge
  proj                       9.2.0         h8ffa02c_0           conda-forge
  pthread-stubs              0.4           h36c2ea0_1001        conda-forge
  pulseaudio-client          16.1          hb77b528_4           conda-forge
  pyparsing                  3.1.0         pyhd8ed1ab_0         conda-forge
  pyproj                     3.5.0         py38h2f62729_1       conda-forge
  pyqt                       5.15.7        py38ha0d8c90_3       conda-forge
  pyqt5-sip                  12.11.0       py38h8dc9893_3       conda-forge
  pysocks                    1.7.1         pyha2e5f31_6         conda-forge
  pytest                     7.3.2         pyhd8ed1ab_1         conda-forge
  pytest-cov                 4.1.0         pyhd8ed1ab_0         conda-forge
  pytest-xdist               3.3.1         pyhd8ed1ab_0         conda-forge
  python                     3.8.17        he550d4f_0_cpython   conda-forge
  python-dateutil            2.8.2         pyhd8ed1ab_0         conda-forge
  python_abi                 3.8           3_cp38               conda-forge
  pytz                       2023.3        pyhd8ed1ab_0         conda-forge
  qt-main                    5.15.8        h01ceb2d_13          conda-forge
  readline                   8.2           h8228510_1           conda-forge
  requests                   2.31.0        pyhd8ed1ab_0         conda-forge
  rtree                      1.0.1         py38h02d302b_1       conda-forge
  scikit-learn               1.0.2         py38h1561384_0       conda-forge
  scipy                      1.7.3         py38h8ce737c_1       conda-forge
  setuptools                 59.8.0        py38h578d9bd_1       conda-forge
  shapely                    2.0.1         py38haaa171b_1       conda-forge
  sip                        6.7.9         py38h17151c0_0       conda-forge
  six                        1.16.0        pyh6c4a22f_0         conda-forge
  snappy                     1.1.10        h9fff704_0           conda-forge
  soupsieve                  2.3.2.post1   pyhd8ed1ab_0         conda-forge
  spaghetti                  1.7.3         pyhd8ed1ab_0         conda-forge
  sqlite                     3.42.0        h2c6b66d_0           conda-forge
  threadpoolctl              3.1.0         pyh8a188c0_0         conda-forge
  tiledb                     2.13.2        hd532e3d_0           conda-forge
  tk                         8.6.12        h27826a3_0           conda-forge
  toml                       0.10.2        pyhd8ed1ab_0         conda-forge
  tomli                      2.0.1         pyhd8ed1ab_0         conda-forge
  tornado                    6.3.2         py38h01eb140_0       conda-forge
  typing-extensions          4.6.3         hd8ed1ab_0           conda-forge
  typing_extensions          4.6.3         pyha770c72_0         conda-forge
  tzcode                     2023c         h0b41bf4_0           conda-forge
  tzdata                     2023c         h71feb2d_0           conda-forge
  unicodedata2               15.0.0        py38h0a891b7_0       conda-forge
  urllib3                    2.0.3         pyhd8ed1ab_0         conda-forge
  wheel                      0.40.0        pyhd8ed1ab_0         conda-forge
  xcb-util                   0.4.0         hd590300_1           conda-forge
  xcb-util-image             0.4.0         h8ee46fc_1           conda-forge
  xcb-util-keysyms           0.4.0         h8ee46fc_1           conda-forge
  xcb-util-renderutil        0.3.9         hd590300_1           conda-forge
  xcb-util-wm                0.4.1         h8ee46fc_1           conda-forge
  xerces-c                   3.2.4         h8d71039_2           conda-forge
  xkeyboard-config           2.39          hd590300_0           conda-forge
  xorg-kbproto               1.0.7         h7f98852_1002        conda-forge
  xorg-libice                1.1.1         hd590300_0           conda-forge
  xorg-libsm                 1.2.4         h7391055_0           conda-forge
  xorg-libx11                1.8.6         h8ee46fc_0           conda-forge
  xorg-libxau                1.0.11        hd590300_0           conda-forge
  xorg-libxdmcp              1.1.3         h7f98852_0           conda-forge
  xorg-libxext               1.3.4         h0b41bf4_2           conda-forge
  xorg-libxrender            0.9.10        h7f98852_1003        conda-forge
  xorg-renderproto           0.11.1        h7f98852_1002        conda-forge
  xorg-xextproto             7.3.0         h0b41bf4_1003        conda-forge
  xorg-xf86vidmodeproto      2.3.1         h7f98852_1002        conda-forge
  xorg-xproto                7.0.31        h7f98852_1007        conda-forge
  xyzservices                2023.5.0      pyhd8ed1ab_1         conda-forge
  xz                         5.2.6         h166bdaf_0           conda-forge
  zipp                       3.15.0        pyhd8ed1ab_0         conda-forge
  zlib                       1.2.13        hd590300_5           conda-forge
  zstd                       1.5.2         h3eb15da_6           conda-forge

@jGaboardi
Copy link
Member Author

Seems likely an interplay between numpy and scipy, though haven't tracked down exactly what/when/how.

passing failing
gdal 3.7.0 3.7.0
geopandas 0.13.2 0.13.2
geopandas-base 0.13.2 0.13.2
geos 3.11.2 3.11.2
libgdal 3.7.0 3.7.0
libpysal 4.7.0 4.7.0
libspatialindex 1.9.3 1.9.3
networkx 3.1 3.1
numpy 1.24.3 1.25.0, 1.25.1
pandas 2.0.2 2.0.2
pyproj 3.6.0 3.6.0
python 3.11.4 3.11.4
rtree 1.0.1 1.0.1
scikit-learn 1.2.2 1.2.2
scipy 1.10.1 1.10.1, 1.11.1
shapely 2.0.1 2.0.1

@gegen07
Copy link
Member

gegen07 commented Jul 23, 2023

@jGaboardi I dug into that, but I couldn't get the error. I found that there's a difference between scipy versions 1.10.1 and 1.11.1, when using the 1.10.1 version the result is [0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 2] while the last version returns [0, 0, 1, 1, 0, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1]. I debugged the AZP function pipeline and noticed another difference in line 518, where select randomly and remove any region from neighbors. The scipy 1.10.1 selects this array [0, 1, 2, 2, 1, 0, 0, 1] (the order is based on indexes), and the scipy 1.11.1 selects this array [0, 2, 1, 0, 2, 1, 2, 0, 1]

Furthermore, changing numpy versions and keeping the scipy the same doesn't change anything on AZP results, neither on random choice.

Maybe the error is related to the random number generation, but this is so weird...

@jGaboardi
Copy link
Member Author

@martinfleis Here.

@martinfleis
Copy link
Member

A question without me looking at the code. Is the new result wrong? Or just different due to effects of randomness?

@jGaboardi
Copy link
Member Author

That is unknown to me, and a great question. I am not an expert in regionalization. @sjsrey @knaaptime @weikang9009 Did any of you originally code up the AZP algo?

@martinfleis
Copy link
Member

Is there a reference implementation in R we use use to check what they get?

@jGaboardi
Copy link
Member Author

From @gegen07's debugging several back, it does seem to be some difference in how random states are being handled. If that's true then the new result is valid and we can update the test. However, we need to be certain...

The some implementations to potentially test against:

Seems like all implementations have been developed by within our cluster of researchers... (pun intended)

@gegen07
Copy link
Member

gegen07 commented Oct 16, 2023

@jGaboardi and @martinfleis, I noticed, after tracing the test, another difference. The method _randomly_divide_connected_graph which is a subroutine of generate_initial_sol used in AZP initial solution is different between 3.8 and 3.9 python versions. I uploaded my notebook to a gist to see the differences. The minimum spanning tree of the adjacency matrix is differing for some reason I did not catch yet, and then the random indices' selection varies.

Maybe we should start testing all methods under region util stuff to debug these errors more easily.

@jGaboardi
Copy link
Member Author

Maybe we should start testing all methods under region util stuff to debug these errors more easily.

@gegen07 I was working over the weekend on this and I agree 100% with you. That is something that should have been happening from the beginning, but hindsight is 20/20...

This is great debugging; with my own stuff I was narrowing down on that, too. I have been working on some bash scripts that run though env creation --> solve --> plotting to highlight the differences when solving while incrementing clusters. I have found that there may even be differences outside of the (3.8 <--> 3.{9,10,11}) divide... Check the difference between azp_mexico_39_clusters4.png and azp_mexico_310_clusters4.png in the attached zip.

azp_plots_results.zip

Seems to be a result of untracked randomness and change in an upstream package.

@jGaboardi
Copy link
Member Author

😵‍💫

@gegen07
Copy link
Member

gegen07 commented Oct 17, 2023

@jGaboardi Gotcha! I caught the error. The mismatch over the python versions is displayed in my gist. It already has the proposed fix in _randomly_divide_connected_graph. The problem was the MST representation as I mentioned yesterday. The MST as sparse matrix is not correctly represented as it gives the directed adjacency matrix instead of giving an undirected adjacency. Then sometimes, over the python versions, it was throwing correct matrices but with some fluctuations in adj representation.

Suppose my MST is something like:

$$\begin{bmatrix} 0 && 1 && 0\\ 0 && 0 && 1\\ 1 && 0 && 0 \end{bmatrix}$$

The example of fluctuation:

$$\begin{bmatrix} 0 && 1 && 1\\ 0 && 0 && 1\\\ 0 && 0 && 0 \end{bmatrix}$$

This example is also a MST but is another version of it that scipy.sparse also generates.

Then these minor changes affected the random choice of clusters in the util function.

The proposed fix, so, is creating the undirected graph sparse matrix based on a dok_matrix. Therefore, we must have to transform the csr_matrix into a dok_matrix, assign the new edges and then transform back the dok_matrix to the csr_matrix to continue doing the operations efficiently on it.

Maybe, there is a better fixing to it.

After fixing it, I already generated the labels for AZP and all are the same now in my environment.

@martinfleis
Copy link
Member

@gegen07 great job! That sounds like a sensible solution. Can you open a PR so we can follow the implementation discussion on top of the actual code?

@knaaptime
Copy link
Member

knaaptime commented Oct 17, 2023

sorry, i missed this for awhile.

No, the AZP stuff is old; everything here is ported from region. Serge would know better than I, but my guess would be that's Aleks's code. Cant say that ive seen azp used in the wild in decades, but theres a reference implementation in geoda we could test against. Looks like there an R one too

update: oh.. if i'd actually read the whole thread, james already pointed to those

@jGaboardi
Copy link
Member Author

@gegen07 this is amazing work! Kudos for finding this. I'm on the road today, but will be able to review later in the week if you would be able to put in a PR.

Following this, let's piggy back into creating tests for each helper method/function to reduce the potential for this happening again.

I am woefully behind in digging into the AZP variants we have and providing proper documentation, demonstration, and testing...

@jGaboardi
Copy link
Member Author

Resolved via #406

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants