Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Release v24.07

Choose a tag to compare

@github-actions github-actions released this 30 Jul 17:42
· 49 commits to main since this release

PySAL v24.07

This release is the result of six months of effort by the PySAL community reflected in 609 commits that closed 358 issues since our last release on 2024-01-31. These updates bring significant improvements that enhance PySAL's capabilities, providing users with more robust tools for spatial data science. The enhancements ensure greater flexibility, accuracy, and usability, making it easier to perform complex spatial analyses and integrate with other data processing workflows.

Major Highlights by Package

esda

  • Interactive Plot for Local Moran's I: Introduced by @knaaptime in #274, this feature adds an interactive plot for local Moran's I, enabling users to visually explore local spatial autocorrelation in an intuitive manner.
  • Native Graph Support Across Modules: Major updates by @martinfleis include:
    • Support for Graph objects in losh and silhouettes modules (#327)
    • Integration of Graph objects in the Moran module (#293)
    • Inclusion of Graph objects in all Join Counts statistics (#295)
    • Support for Graph objects in all Geary statistics (#296)
    • Graph object support in getisord and gamma modules (#326)

libpysal

  • Transition Guide: A new guide for transitioning from W to g, created by @sjsrey in #733, provides essential documentation for users. This guide is particularly useful for those migrating their spatial analysis workflows to the latest version, ensuring a smooth and efficient transition.
  • Use representative_point Instead of centroid in Graph Plotting: This update, implemented by @martinfleis in #737, improves the accuracy of visual representations by using representative points rather than centroids in Graph plotting.
  • Add index_pairs to Graph: Contributed by @martinfleis in #752, this feature introduces index_pairs to the Graph module, enhancing the detail and flexibility of spatial analyses.
  • Graph Summary with s0, s1, s2 Properties: In #742, @martinfleis added a summary feature to Graph, providing comprehensive properties such as s0, s1, and s2 for better analytical insights.
  • xarray Interface for Graph: The addition of an xarray interface to Graph, introduced by @martinfleis in #740, broadens the module’s compatibility and usability, allowing for more versatile data manipulation and analysis.
  • Graph from Travel Network: A new feature added by @knaaptime in #755, enabling the creation of Graph objects from travel networks.
  • Expose mapping_distance in Travel Builder: This enhancement, by @knaaptime in #756, exposes the mapping_distance function in the travel builder, facilitating more detailed and accurate travel network analyses.
  • Move Graph from Experimental to Stable API: As part of ongoing improvements, @martinfleis moved the Graph module from experimental to stable API in #754, indicating its reliability and readiness for broader use.

mapclassify

  • Plot Histogram with Class Bins: Added by @knaaptime in #216, this feature allows users to plot histograms with class bins, providing a more detailed and visual representation of data distribution.
  • Classify to RGBA: Introduced by @knaaptime in #211, this enhancement adds the ability to classify data to RGBA color values, improving data visualization capabilities.

momepy

This release of momepy brings completely new reimplementation of core measurement classes. These are now available as functions and depend on libpysal.Graph implementation of spatial matrices. Please see the migration guide and updated user guide for more.

pointpats

  • Local Knox Statistic: Contributed by @knaaptime in #136, the localknox feature enhances the module by adding the ability to perform local Knox tests. This is particularly useful for detecting space-time interaction in point patterns.

  • Reimplementation of MRR: Enhanced by @martinfleis in #133, the mrr (minimum rotated rectangle) function has been reimplemented on top of Shapely, improving its underlying functionality. This reimplementation helps in accurately computing the smallest rectangle that can enclose a given shape.

spreg

  • Introduction of the DGP module

  • The DGP module allows for the creation of spatial models for specific Data Generation Processes (DGP) to support simulation exercises. These include the creation of error term vectors (classic and spatial), dependent and independent variables, spatially correlated or not, and other elements for OLS, SAR, SLX, SDM, SARAR models, etc.

  • Introduction of new specification tests

    • The Koley-Bera (2024) tests for WX and SDM, and their variants, have been included in the diagnostics suite.
    • The Common Factor Hypothesis test has been added to Spatial Durbin Models (GM and ML).
  • Impact estimation

    • The estimation of average direct impact (ADI), average indirect impact (AII), and average total impact (ATI) in summary results has been added to models with a spatial lag of the dependent variable.
  • Endogenous Spatial Regimes estimation

    • Methods for endogenous spatial regimes estimation based on Anselin and Amaral (2023) have been added, such as OLS_Endog_Regimes and GM_Lag_Endog_Regimes
  • A flag to allow for the printing of the table with the coefficients' results and their inference straight in LaTeX format

  • Skater_reg now allows for the estimation of Spatial Lag models with a common spatial lag across regimes. A method adapted from Mojena (1977)'s Rule Two has also been introduced to find the optimal number of regimes for the endogenous spatial regimes models.

spvcm

As of pysal 24.07, spvcm has been archived.

Contributors

Many thanks to all of the following individuals who contributed to this release:

  • Anastassia Vybornova
  • Anna Brázdová
  • Daniela Dančejová
  • Eli Knaap
  • Elliott Sales De Andrade
  • Germano Barcelos
  • James Gaboardi
  • Josiah Parry
  • Krasen Samardzhiev
  • Levi John Wolf
  • Lisa Winkler
  • Luc Anselin
  • Marek Novotný
  • Martin Fleischmann
  • Pedro Amaral
  • Ryanzomorrodi
  • Serge Rey
  • Stevee404

Detialed Changes by Package

libpysal v4.12.0

  • #757: W to g guide
  • #756: exposing mapping_distance in travel builder
  • #233: [WIP] stop sorting ids by default
  • #299: [WIP] remove Ids attribute
  • #505: New changelog conventions
  • #365: start on perimeter weighting with just pygeos
  • #356: [WIP] initial draft of network weights
  • #626: allow ids in graph when passing sparse
  • #151: network weights
  • #755: add graph from travel network
  • #369: refactor examples
  • #490: Logic for pushing tags to trigger release needs to be revisited
  • #375: pygeos-based contiguity
  • #733: W to g guide
  • #754: DOC: move Graph from experimental to stable API
  • #740: ENH: add xarray interface to Graph
  • #753: make asymmetry computation in Graph summary optional
  • #739: fix higher_order contiguity including lower order
  • #738: BUG: higher_order(lower_order=True) not working in edge cases
  • #742: ENH: add Graph.summary with s0, s1, s2 and similar properties to Graph
  • #752: ENH: add index_pairs to Graph
  • #746: BUG: fix categorical lag for custom index
  • #743: BUG: fix handling of non-isolate self-weights of 0 and order preservation
  • #751: adjust CI env name & add Graph to README
  • #750: update README with mention of Graph
  • #749: update CI env naming conventions
  • #534: Weights sprint planning
  • #444: Does release GHA work?
  • #315: scikit-geometry?
  • #747: ensure that Graph.repr fits to 80 characters
  • #745: added examples to graph
  • #744: test against intel & apple silicon
  • #573: BUG: relative neighbourhood depends on the order of observations
  • #736: [pre-commit.ci] pre-commit autoupdate
  • #737: ENH: use representative_point instead of centroid in Graph plotting
  • #735: Centroid or representative point in graph plotting
  • #698: ENH: Graph IO to classic weights file formats
  • #732: CI: do not xfail momepy in reverse checks
  • #729: Use importlib to implement simport
  • #731: CI: ignore spvcm, add osmnx to env, xfail stuff out of control in reverse dep testing
  • #726: Use fixtures for test data that uses the network
  • #728: DOC: Fix a couple Sphinx warnings
  • #727: DOC: Remove unused mkdocs-jupyter dependency
  • #725: COMPAT: ensure argsort output has a stable order in numpy 2
  • #724: [CI] precision failure on ubuntu-latest, ci/312-no-optional.yaml [2024-06-19]
  • #723: COMPAT: fix numpy 2.0 incompatibility
  • #722: Failure due to numpy 2.0 deprecation
  • #721: inserted chicagoSDOH as sample data
  • #720: ENH: pass kwargs to buffer in fuzzy_contiguity
  • #695: import libpysal stuck on loading remote examples
  • #718: Add timeout in request to handle off-line use cases in examples
  • #719: COMPAT: remove typing from Graph.describe
  • #716: Categorical spatial lag using the Graph
  • #711: ENH: implement Graph.repr
  • #717: ENH: include Graph.describe() to describe neighbourhood values
  • #529: [DO NOT MERGE] Change to the new sparse arrays and see what breaks
  • #715: PERF: sorting-related improvements in Graph
  • #714: Refactor handling of coincident points in triangulation
  • #713: Co-location issues with Graph triangulation builders
  • #694: ENH: add Graph.build_h3
  • #667: Build Graph from H3
  • #710: PERF: don't build coincident lookup if not needed
  • #709: BUG: misaligned weights in the gabriel graph
  • #708: add back numba in Py312 tests
  • #590: check when numba is ready for Python 3.12
  • #703: DOC: add examples to build_contiguity and build_triangulation
  • #697: REF: minor performance improvements in Graph
  • #704: Added examples to from_dicts and build_knn.
  • #705: DOC: Add examples to build_distance_band
  • #702: DOC: add examples to build_block_contiguity
  • #701: DOC: add example to Graph.to_W
  • #700: DOC: clarify the requirements of the canonical sorting of Graph index
  • #687: Ensure Graph.sparse is robust enough
  • #696: [pre-commit.ci] pre-commit autoupdate
  • #693: Work around GEOS issue in voronoi_frames
  • #691: REF: refactor Graph.to_W to avoid perf bottleneck
  • #672: Graph.to_W is slow
  • #692: COMPAT: compatibility with pandas 3
  • #678: ENH: geometry agnostic Voronoi based on shapely
  • #665: Interest in Optimal Spatial Matching?
  • #685: REF: remove usage of deprecated cascaded_union
  • #686: TST: resolve FutureWarnings in graph apply tests
  • #684: ImportError: cannot import name 'np' from 'libpysal.common'
  • #683: Bump codecov/codecov-action from 3 to 4

esda v2.6.0

  • #343: formats, lints, pytest pt. 2 -- test_adbscan.py
  • #341: formats, lints, pytest pt. 1 -- test_{utils,topo}.py
  • #336: xfail for test_G_star_Row_Standardized
  • #331: weird Python 3.10 oldest error
  • #337: remove xtyt & xhyh in shape._second_moa_ring_xplusy()
  • #334: declared but unused xtyt & xhyh in shape._second_moa_ring_xplusy()
  • #339: small factor of moran.Moran_Local_BV.__calc()
  • #333: unused zx in moran.Moran_Local_BV.__calc()
  • #332: drop black - reup linting w/0 Python 3.8 pin
  • #330: we never added a pre-commit-config...
  • #308: formatting -> drop black and adopt ruff
  • #289: Silhouette tests failing under scipy 1.13
  • #326: ENH: natively support Graph in getisord and gamma modules
  • #296: ENH: natively support Graph in all Geary statistics
  • #295: ENH: natively support Graph in all Join Counts statistics
  • #293: ENH: natively support Graph in moran module
  • #294: Support of Graph
  • #329: min pin for libpysal in README - resolve #319
  • #319: determine minimal pin for libpysal
  • #328: pin libpysal to 4.12
  • #327: ENH: natively support Graph in losh and sihouettes modules
  • #325: update chat link -- gitter >> discord
  • #324: update chat from gitter to discord
  • #240: esda implementation problem with new numba version
  • #307: add rtree as optional dependency
  • #311: update dependency pins from SPEC000
  • #299: NumPy 2.0 - CI failures - AttributeError: ptp
  • #310: update CI matrix for supported Python versions
  • #318: modernize CI matrix & deps
  • #301: ImportError: rtree library must be installed
  • #312: move geopandas requirements
  • #309: CI failure introduced in #306
  • #304: list rtree in optional requirements?
  • #316: update CI env naming conventions
  • #315: prune CI testing matrix - only test windows & macOS on latest Python
  • #314: sync requirements & versions
  • #313: add plus dependency section in pyproject.toml
  • #321: remove bleeding edge libpysal install from testing.yml
  • #320: Add folium and mapclassify to testing dependencies
  • #317: test against both oldest versions & minimal requirements
  • #322: skip test if rtree not installed optional
  • #306: numpy.math.atan2 -> numpy.atan2 in shape._get_angles()
  • #300: AttributeError: module 'numpy' has no attribute 'math'
  • #303: test against mac os intel chip, etc.
  • #302: add explicit Mac intel testing environment
  • #298: remove .coveragerc - info in pyproject.toml
  • #297: remove .gitattributes - no longer using versioneer
  • #286: Adding coverage for vec_permutations
  • #290: import failure- likely due to scipy 1.13 and 1.12
  • #288: DOC: fix adbscan reference
  • #287: A-DBSCAN citation not generated in docs
  • #285: 311-dev CI failures [2024-03-16]
  • #284: Importing esda: need for update on numpy long
  • #282: landing page notebook links are broken
  • #283: Update link to notebooks on landing page
  • #280: Bump codecov/codecov-action from 3 to 4

pointpats v2.5.0

  • #140: update min supported Python and testing workflow
  • #141: bump & sync min reqs [2024-06]
  • #139: minimum support Python [2024-06]
  • #138: fix typo in random.normal function
  • #133: REF: reimplement mrr on top of shapely
  • #136: localknox
  • #137: Typo in random.normal method that results in errors
  • #134: keep members of local knox hotspots

spaghetti v1.7.6

  • #771: #770 -- doctests after full tests
  • #770: doctests as separate action or workflow
  • #769: update docstring tests -- numpy-2.0 failures
  • #767: current CI failures [2024-06-19]
  • #768: fix doctests in CI -- numpy 2.0
  • #765: [pre-commit.ci] pre-commit autoupdate
  • #764: gpd & shp as hard reqs -- no optional testing -- #763
  • #763: 310-no-optional CI failures [2024-03-16]
  • #762: 312-dev CI failures [2024-03-16]
  • #761: Bump codecov/codecov-action from 3 to 4

momepy v0.8.0

  • #648: TST: Fix expected test values when using higher_order
  • #650: bump libpysal requirement to 4.12
  • #649: expose buffer variable
  • #647: BUG: check loops in remove_false_nodes against any node degree
  • #643: Approximate shared walls
  • #646: ENH: allow extraction of coins ends in COINS.stroke_attribute
  • #645: BUG: fix ordering of closed loops in remove_false_nodes
  • #644: ENH: add flow mode to COINS
  • #642: REF: refactor remove_false_nodes
  • #640: add mypy to pre-commit - #639
  • #641: ENH: add preserve_index keyword to gdf_to_nx to allow preservation of index and order
  • #639: mypy - move from action to pre-commit
  • #637: DOC: add migration guide to new API
  • #605: DOC: migration guide
  • #558: Linking objects under the new API
  • #638: TST: update for changes in GEOS
  • #636: DOC: update face artifacts bibtex
  • #635: [pre-commit.ci] pre-commit autoupdate
  • #629: [COINS] angles between segments in the same quadrant of the Cartesian plane
  • #630: [COINS] Fix angle between lines
  • #632: BUG: refactor computation of angles in COINS
  • #634: CI: bump minimal requirements as per SPEC 0
  • #625: DOC: update user guide to avoid MultiIndex
  • #631: DOC: update rest of the guide
  • #628: DOC: User guide fixes for elements examples
  • #626: REF: remove result_index attribute from describe_agg
  • #627: REF: do not return building_id from generate_blocks
  • #606: BUG: verify handling of MultiIndex
  • #622: ENH: either support MultiIndex or raise an error when one is given
  • #624: DOC: update docstrings to match numpy2 outputs
  • #623: TYP: add type hints to the graph module
  • #579: API: distinction between libpysal and networkx graphs
  • #621: BUG: fix a case when there's only a single building to be passed to voronoi_frames
  • #620: ENH: add mean_deviation
  • #619: API: deprecate legacy API in favour of Graph-based functional implementation
  • #612: API: deprecate legacy API
  • #618: minor type hinting fix
  • #617: API: allow silencing of FutureWarnings from legacy API
  • #616: DOC: expose get_nearest_node, fix fmt
  • #615: DOC: remaining examples in the new API
  • #610: DOC: add examples
  • #614: update precommit to ruff docs dir
  • #613: DOC: ruff user guide
  • #611: DOC: add first batch of examples + testing
  • #609: Faster node density
  • #608: BUG: fix describe_ function when count is not present
  • #543: GHA: switch to autogenerated release notes
  • #582: BUG/ENH: support custom enclosure index is in tessellation and GeoDataFrame as enclosure input
  • #592: DOC: add citation.cff
  • #544: DOC: update dev installation instructions
  • #576: functional node_density implementation
  • #575: functional reached calculations
  • #572: functional courtyards calculation
  • #570: ENH: describe as a replacement of AverageCharacter
  • #566: ENH: street_alignment and get_nearest_street
  • #559: ENH: refactor tessellation
  • #557: ENH: add neighbors
  • #556: ENH: mean_interbuilding_distance and building_adjacency
  • #555: ENH: neighbor_distance using Graph and new API
  • #554: ENH: add alignment to the new API
  • #553: ENH: add orientation and shared_walls functional versions
  • #600: ENH: add get_nearest_node
  • #593: Street profile
  • #590: ENH: adaptive buffer as a tessellation limit
  • #589: Functional percentiles
  • #588: Functional distribution
  • #587: Functional dimension
  • #586: Functional density
  • #584: _describe API refactoring
  • #583: Functional arearatio
  • #581: Functional diversity
  • #580: Functional blocks
  • #607: Update release.yml - troubleshoot release action failure
  • #604: gha for release notes - #543
  • #396: ENH: helper functions for geometry-based network simplification
  • #461: TestDistribution.test_MeanInterbuildingDistance failure on dev
  • #304: Add GitHub Action to build and push container
  • #537: BUG: tessellation may produce overlapping polygons
  • #261: EHN: Add SkyViewFactor
  • #603: DOC: execute notebooks and ensure they're tested
  • #264: ENH: Simple Building Volume Density
  • #465: ENH: helper functions part 1
  • #562: test efficiency of graphblas in straightness
  • #602: API: return morphological tessellation as a GeoDataFrame
  • #601: DOC: create usable env on RTD, update clustering
  • #599: DOC: User guide refresh
  • #598: DOC: note on a precision issue in enclosed_tessellation
  • #597: DOC: rework API docs around the new functional stuff
  • #596: COMPAT: numpy 2.0 compatibility
  • #585: Functional count
  • #594: DEP: bump libpysal minimum to 4.11
  • #406: API: deprecation decorators for transition to functional API
  • #317: Add citation.cff
  • #310: ENH: refactor get_network_id based on sindex.nearest_all
  • #359: Add osmnx_like keyword to gdf_to_nx
  • #478: Enclosure function does not work correctly
  • #525: Networkx deprecations
  • #497: Resolve geopandas deprecations
  • #577: more complete linting & formatting - docs & benchmarks

spreg v1.5.0

  • #138: Minor adjustments to printouts and spatial impacts
  • #136: Version 1.5
  • #137: Update unittests.yml -- manual trigger
  • #130: Bump actions/github-script from 6 to 7
  • #131: Bump conda-incubator/setup-miniconda from 2 to 3
  • #133: Bump actions/cache from 3 to 4
  • #134: Bump codecov/codecov-action from 3 to 4

tobler v0.11.3

  • #215: macOS testing -- Intel & Apple Silicon CI
  • #212: update links for examples
  • #211: CI: include dev env in CI matrix
  • #209: COMPAT: geopandas 1.0 compatibility fix in h3fy
  • #208: point testing badge testing page
  • #184: dask tests failing
  • #203: infrastructure
  • #198: H3 test failure
  • #199: Troubles importing tobler to a jupyter notebook
  • #202: fix typo area_interpolate.py
  • #201: fix typo area_interpolate_dask.py
  • #200: fix typo

mapclassify v2.7.0

  • #211: WIP classify to rgba
  • #216: plot histogram with class bins
  • #221: [pre-commit.ci] pre-commit autoupdate
  • #215: Add monthly downloads badge to README
  • #217: doctest failures [2024-06-23]
  • #220: CI: test against Python 3.12
  • #219: CI: doctest only on ubuntu latest
  • #218: CI: ensure 3.9 envs are compatible
  • #214: [CI] failing dev from libpysal.graph --> numpy.float_
  • #210: COMPAT: make greedy compatible with future
  • #209: 311-dev CI failures [2024-04-01]
  • #208: [pre-commit.ci] pre-commit autoupdate
  • #207: 311-dev CI failures [2024-03-16]
  • #206: Bump codecov/codecov-action from 3 to 4

spopt v0.6.1

  • #457: fix numpy=2.0.0 compat -- #456
  • #456: numpy>=2.0 failures -- [2024-06-19]
  • #454: add OR_classic_problem to README
  • #449: testing code cleanup
  • #452: numpy DeprecationWarning within pyproj
  • #451: codecov acting up a bit – update action
  • #450: "Generate and publish the report" not working - remove
  • #448: better raises/warns control + DRY out testing
  • #453: FutureWarning: The 'unary_union' attribute is deprecated – ignore for now?
  • #437: work on resolving warning in CI (2024-01)
  • #447: Fix service radius in LSCP GIS notebook
  • #446: Unable to run through LSCP example
  • #445: [pre-commit.ci] pre-commit autoupdate
  • #444: re- lint & re-format repo – #438
  • #438: lint spopt/tests/*
  • #443: 312-dev CI failures [2024-03-17]

pysal v24.07

  • #1353: CI: Update build and release instructions
  • #1352: Add workflow for rc prereleases
  • #1351: Update bib and turn off empty sidebars
  • #1350: 24.07rc4
  • #1347: Missing dependency for doc build
  • #1349: Replace theme
  • #1348: BUG: install sphinx_design for gh workflow Build Docs
  • #1346: REL: 24.07rc3
  • #1331: Updating api and installation instructions
  • #1345: DOC: move to pydata theme
  • #1343: Move release tooling to modules out of notebooks
  • #1344: Move build tooling into scripts and remove notebooks
  • #1342: Update release tooling for 24.01rc2
  • #1332: Fix README.md package links
  • #1336: PR template & contrib updates
  • #1335: update PULL_REQUEST_TEMPLATE.md
  • #1334: update chat link in CONTRIBUTING.md
  • #1329: explicit intel chip test for macOS
  • #1328: update README format badge
  • #1327: update black -> ruff badge on README
  • #1188: new open-source alternative to GitHub
  • #1164: spatialpandas?
  • #1301: Pin on dependencies
  • #1325: Update build instructions in tools
  • #1326: prune tools dir - #1320
  • #1320: pruning the tools/ directory
  • #1321: release action update & general cleaning up
  • #1319: remove gitreleases.ipynb?
  • #1318: remove MIGRATING.md?
  • #1317: need for Makefile?
  • #1316: remove .coveragerc
  • #1315: remove MANIFEST.in
  • #1314: remove requirements*.txt files
  • #1313: update release_and_publish.yml
  • #1312: 24.07rc1
  • #1306: remove legacy ci/travis/38-latest-conda-forge.yaml
  • #1307: migrate from setup.py, etc. to consolidated pyproject.toml
  • #1311: Fix doc build
  • #1294: TypeError: float() argument must be a string or a number, not 'Point'
  • #1275: PySAL GSOC 2023
  • #1258: GSoC 2022 Interfaces for Consistent API Design: Library-wide Discussion
  • #1254: Spatiol Temporal Prediction
  • #1246: Move to single directory and auto generate/publish docs
  • #1299: update unittests.yml workflow
  • #1310: add action for building docs
  • #1305: ci update
  • #1308: Dead link alert
  • #1309: Fix nb links
  • #1198: Fedora 33 with LLVM 11 and Python 3.9 breaks giddy and splot installation
  • #1302: pin packages in requirements.txt
  • #1303: Bump softprops/action-gh-release from 1 to 2
  • #1297: update chat links: gitter >> discord