Skip to content
Compare
Choose a tag to compare

pysal 2.3.0

@sjsrey sjsrey released this
· 132 commits to master since this release
94b7eed
Compare
Choose a tag to compare

PySAL 2.3.0 represents 6 months of enhancements, bug-fixes, widening of test coverage, and improved documentation. All users are encouraged to upgrade to this version as there are numerous optimizations as well as new features (see below) that have been implemented.

Overall, there were 1343 commits that closed 273 issues, together with 166 pull requests since our last release on 2020-02-09.

Major Highlights of PySAL 2.3.0

Entirely New Packages

In this release, the PySAL family has expanded to include:

pysal/access

Providing classical and novel measures of spatial accessibility to services.

  • We implement classic spatial access models, allowing easy comparison of methodologies and assumptions.
  • We support spatial access research by providing pre-computed travel time matrices and share code for computing new matrices at scale.
  • We also developed a simple web app that runs the package on Amazon Web Services, allowing users to explore results without installing the package. We think this is a fun new strategy for trying new analysis methods, and hope that it will make the package more accessible to professionals.

This access models implemented include:

  • Floating Catchment Areas (FCA): For each provider, this is the ratio of providers to clients within a given travel time to the provider (Huff 1963, Joseph and Bantock 1982, and Luo 2004).
  • Two-Stage FCAs (2SFCA): Calculated in two steps for a given travel time to the provider: 1) for each provider, the provider-to-client ratio is generated, 2) for each point of origin, these ratios are then summed (Luo and Wang 2002, and Wang and Luo 2005).
  • Enhanced 2SFCA (E2SFCA): 2SFCA but with less weight to providers that are still within the travel threshold but at larger distances from the point of origin (Luo and Qi 2009).
  • Three-Stage FCA (3SFCA): adds distance-based allocation function to E2SFCA (Wan, Zou, and Sternberg, 2012).
  • Rational Agent Access Model (RAAM) (Saxon and Snow 2019).
  • Access Score: This is a weighted sum of access components like distance to provider and relative importance of provider type (Isard 1960).

The package is implemented as a single class with a number of helper functions. According to PySAL tradition, we have also developed a broad set of tutorials and examples.

Enhancements to Existing Packages

pysal/esda

  • Highly performant multi-core, numba-based conditional permutation inference for local autocorrelation statistics (#116)
  • Adbscan: an extension of the original DBSCAN algorithm that creates an ensemble of solutions generated by running DBSCAN on a random subset and "extending" the solution to the rest of the sample through nearest-neighbor regression (see Arribas-Bel, Garcia-Lopez & Viladecans-Marsal, 2020 for more details). (#120)

pysal/spaghetti

pysal/mapclassify

pysal/spreg

pysal/libpysal

pysal/giddy

pysal/splot

Detailed Changes by Package

Overall, there were 1403 commits that closed 273 issues, together with 166 pull requests since our last release on 2020-02-09.

libpysal

  • #296: 4.3 Release
  • #294: Standardize libpysal/examples/*.py docstrings
  • #295: Fetch
  • #273: Mac builds seem to take longer — bump up timeout
  • #281: Voronoi_frames function causes jupyter notebook kernel to die
  • #280: ENH: allow specific buffer in fuzzy_contiguity
  • #278: Return alpha option & use pygeos for alphashaping if available
  • #276: add weights writing as a method on weights.
  • #277: Docs ci badge
  • #259: [rough edge] libpysal.examples w/o internet?
  • #275: removing six from ci
  • #274: Handle connection errors for remote datasets
  • #264: GH-263: Don't implicitly import examples when importing base library
  • #263: examples directory prevents installing with pyInstaller
  • #254: Error in the internal hack for the Arc_KDTree class inheritance and the KDTree function
  • #271: GitHub Actions failures
  • #255: Bugfix
  • #270: dropping nose in ci/36.yml
  • #268: Follow-up To Do for GH Actions
  • #269: Polish up GitHub Action residuals
  • #267: Initializing complete Github Actions CI
  • #266: TEST: turning off 3.6 on github actions
  • #256: fix for issue #153
  • #262: Cleaning up weights/weights.py docs
  • #265: DOC: Udpdating citations, minor description editing
  • #261: Unused code in weights.from_networkx()?
  • #9: redirect pysal/#934 to libpysal
  • #35: defaulting to using the dataframe index as the id set
  • #23: Handling coincident points in KNN
  • #67: MGWR_Georgia_example.ipynb fails due to different sample data shapes
  • #47: Kernel docstring does not mention unique Gaussian kernel behavior
  • #69: MGWR_Georgia_example.ipynb missing pickle import statement
  • #99: weights.Voronoi is a function, not a class.
  • #121: some weights util functions are lost in ini.py
  • #150: [ENH][WIP] Adding a rasterW to extract W from raster and align values
  • #123: Current weight plot method is time consuming for a large data set
  • #151: network kernel weights
  • #208: Weight Object Question
  • #173: Add from_sparse and from_numpy methods, to match the other from_ methods
  • #258: ENH: setting up github actions
  • #114: deprecate or test shapely_ext
  • #250: Update reqs for tests
  • #177: Tests failures under Python 3.8
  • #253: Nbdocs
  • #244: Fix and simplify filter_adjlist.
  • #240: Remove calls to deprecated/removed time.clock.
  • #242: Fix syntax errors
  • #243: DOC: Fix invalid section headings.
  • #249: test_fiiter fails on 3.8 but passes on < 3.8
  • #251: 3.8
  • #235: rebuild docs;
  • #219: set up appveyor or circle ci for multiplatform testing
  • #241: Nose is unmaintained
  • #248: Add appveyor badge
  • #247: Appveyor

access

  • #9: dataset updates from Vidal
  • #8: Update installation.rst
  • #7: Conda install to docs -- all set.
  • #6: Move to pysal
  • #5: Tutorial links broken on docs site
  • #4: ENH: syncing pysal/access

esda

  • #137: [BUG] remove README.rst
  • #135: [DOC] Update for 2.30
  • #127: Release notes for 2.3.0
  • #134: (BUG) missing comma in setup.py
  • #124: BUG: fix join_count contingency table
  • #132: Bump codecov/codecov-action from v1 to v1.0.10
  • #131: moving dependabot directory
  • #130: [ENH] Update README for coverage and testing badges
  • #129: adding dependabot
  • #128: [WIP, ENH] Moving to github actions for CI
  • #116: permutation inference performance using numba
  • #120: Adbscan fix
  • #118: Preferred style format of new ESDA estimators
  • #112: G_Local returns unexpectedly low z_sim for what should be a hotspot
  • #115: [WIP]: initial commit of ripley in numpy-oriented style
  • #117: Tweak README.md
  • #113: Memory efficient conditional permutation for LISA
  • #114: ENH: More efficient Geary implementation with new test data
  • #84: Develop separate notebooks for functionalilty
  • #100: by_col is failing in test_by_col due to deprecation of from_item
  • #48: Join count tail-ness
  • #99: Noisy imports on 3.8
  • #111: DeprecationWarning when running spatial smoothing
  • #94: ADBSCAN
  • #110: DOC: fixing link in geosilhouettes notebook
  • #108: Allow failures on 3.8 when pulling from git for testing.
  • #107: Docs for esda not reachable

giddy

  • #157: (bug) pytest-runner is deprecated
  • #158: version bump to v2.3.3
  • #156: Prepare for releasing v2.3.2 as v2.3.1 is broken
  • #155: Follow-up fixes for the automatic release of v2.3.1 with github actions
  • #154: Prepare for a formal release of giddy v2.3.1 with GitHub actions
  • #153: fix for github actions release (name of changelog)
  • #152: GitHub actions (packing and releasing) - pack the updated changelog to the built distribution
  • #151: Fixes for building and releasing with github actions
  • #150: (bug) fix workflow of building and releasing
  • #149: Name of the passwords are capitalized
  • #148: Version bump for building and releasing with GitHub actions (testing)
  • #147: Give a name to the continuous testing workflow
  • #146: (bug) fix workflow of GitHub actions for building and releasing a package
  • #145: release and publish with github actions
  • #143: CI only testing against master branch
  • #144: Update README
  • #141: badges for CI with github actions and codecov
  • #142: migrate from readthedocs to github page for docs hosting
  • #140: fix docs (with nbsphinx)
  • #139: Continuous integration using GitHub Actions
  • #138: add requirements on quantecon (>=0.4.7)
  • #137: code formatting with black
  • #124: spatial_dynamics.interaction migration?
  • #136: remove accidentally added testing notebook
  • #132: Binder for examples is missing dependencies
  • #135: (bug) adding missing dependencies for Binder
  • #133: output for classic Markov needs slight rewording
  • #134: rewording summary output for Markov chains

inequality

pointpats

  • #59: [ENH] Version bump for 2.2 and pointer to changelog
  • #58: make quadrat statistics accept a numpy array as argument
  • #56: add numba-fied version of skyum code
  • #54: Ripley numpy
  • #48: #47 : Added enhancements to mbr in pointpats
  • #55: intensity estimates for new ripley functions are very incorrect sometimes
  • #53: (doc) add inline docstring for the equation of L function
  • #44: (BUG) L function and its Simulation Envelope under the null (CSR) not close to 0
  • #46: (bug) fix for calculating rule of thumb (rot) for a point pattern

segregation

  • #147: update crs checking for newer pyproj
  • #96: warn for indices that expect certain projections
  • #145: update tests to use new libpysal examples
  • #134: Add Bibtex citation in readme
  • #143: segregation raising warning in pysal meta package

spaghetti

  • #487: GHA for release and publish
  • #489: Attempting GHA release workflow #2
  • #488: Attempting GHA release workflow
  • #486: Version bump for release v1.5.0.rc0
  • #469: [WIP] Update Network K Function
  • #478: Break spatial analysis tutorial into several notebooks
  • #477: Update, review, and rename K statistic
  • #485: toy PR to test codecov.yml
  • #484: toy PR to test tcodecov.yml
  • #481: treebeard CI
  • #483: Docs funding
  • #479: [WIP] Dropping "change" param in codecov.yml
  • #480: Add funding source?
  • #482: add funding sources to README
  • #471: [Bug] Addressing bug in K-Function formation
  • #476: Revert "[Bug] Addressing bug in K-Function formation"
  • #470: [BUG] Correction to NetworkK formulation
  • #472: [TST] add codecov.yml
  • #475: no post until 24 codecov reports
  • #474: attempting custom codecov reports
  • #473: update install docs
  • #467: Network L Function
  • #466: Remove G and F functions
  • #468: Removing G and F functions
  • #442: [TEST] regular 3x3 lattice for network analysis testing
  • #465: DOC: correct comments for K-function related code
  • #464: Updating docs with new sphinx release
  • #463: Remedy for non-transparent favicon
  • #462: stylize the minimum spanning tree plot in README.md
  • #461: Updating pinned requirements versions
  • #460: Streamling GHA
  • #449: [ENH] Functionality for spanning trees
  • #459: [ENH][WIP] Min/Max Spanning Trees functionality
  • #458: Update Python version support in CONTRIBUTING.md
  • #457: Adding network arc spatial weights notebook
  • #454: Appveyor still being triggered
  • #456: Corrections for Caveat notebook
  • #455: CHANGELOG.txt --> CHANGELOG.md
  • #453: [TST] GitHub Actions only; Migrate away from Travis/Appveyor
  • #452: Customizing/improving GitHub Actions
  • #451: Trying out GitHub Actions for additional testing
  • #426: [ENH] caveats notebook
  • #445: [WIP][ENH] New notebook for caveats
  • #404: release v1.4.3
  • #448: logo update, rearrange
  • #447: updating README logo
  • #427: package import warning?
  • #444: Improved docstrings for NetworkF and NetworkG
  • #225: analysis.ffunction() may not be correct
  • #438: [MAINT] re-evaluate testing structure
  • #443: [TST] Updating tests and testing structure
  • #441: moving watermark to notebook reqs
  • #436: appveyor — rebuild the master 3.8 PYPI
  • #439: [MAINT] DRYing off unittests
  • #434: Docs for v1.4.2.post1 were not rebuilt
  • #435: rebuilding docs for post release
  • #392: release v1.4.2
  • #433: pushing changelog for 1.4.2post1
  • #432: version bump v1.4.2 --> 1.4.2post1
  • #431: fixing conda-forge failure
  • #430: final PR before v1.4.2 release — updating CHANGELOG.md
  • #429: updating README
  • #424: [WIP][ENH] longest and largest network components
  • #425: Add a fully connected attribute
  • #414: [ENH] longest/largest connected component
  • #345: add logos to website
  • #428: attempting fast finish again
  • #423: pushing fix for environment.yml
  • #422: Add 3.8 as a supported Python version in docs
  • #416: [ENH] matplotlib-scalebar for notebooks/binders
  • #421: using a true scalebar in notebook plots
  • #413: [REQ] requirements for notebooks/binders?
  • #420: adding notebook reqs files
  • #407: support multiplatform testing
  • #419: make sure data set is downloaded for appveyor.yml
  • #418: [ENH] moving towards multi-platform testing
  • #417: Migrate testing functionality from nose to pytest
  • #322: [On Hold] too many emails from Travis CI

mgwr

spglm

spint

spreg

  • #36: release prep
  • #35: Allowing single dimensions array as y and fixing BaseGM_Lag
  • #34: use flatten instead of setting shape directly

spvcm

tobler

  • #77: bump version
  • #75: Correct testing in unittests.yml?
  • #76: Fix tests
  • #74: add ci dir
  • #73: update testing/publishing infrastructure
  • #71: Closes #68.
  • #68: Problem running area_interpolate with both intensive and extensive vars
  • #67: ImportError: cannot import name 'CRS' from 'pyproj'
  • #50: crs checking
  • #66: Breakage upstream possibly due to refactor on data?
  • #63: dateutil pinning causing problems upstream
  • #65: prep v0.3 release
  • #64: Simplify deps
  • #10: add more tests
  • #49: handle remote rasters
  • #62: update changelog
  • #61: version bump
  • #60: update quilt pin
  • #59: allow specifying path for quilt storage
  • #58: TEST: 3.8 testing
  • #57: update docs
  • #56: update changelog
  • #54: small reorg
  • #55: reorg: adding model submodule
  • #53: bump version for bugfix release
  • #52: quilt handling

mapclassify

  • #77: Make networkx optional, remove xfail from greedy
  • #56: Extra files in PyPI sdist
  • #85: MAINT: fix repos name
  • #84: DOC: content type for long description
  • #83: MAINT: update gitcount notebook
  • #63: Update documentations to include tutorial
  • #71: build binder for notebooks
  • #70: current version of mapclassify in docs?
  • #79: 404 for notebook/tutorials links in docs
  • #82: DOC: figs
  • #81: DOCS: new images for tutorial
  • #80: DOC: missing figs
  • #78: DOCS: update documentation pages
  • #76: BINDER: point to upstream
  • #75: add binder badge
  • #74: Binder
  • #73: sys import missing from setup.py
  • #66: [WIP] DOC: Updating tutorial
  • #27: chorobrewer branch has begun
  • #68: Is mapclassify code black?
  • #69: Code format and README
  • #65: Migrate to GHA
  • #64: Move testing over to github actions
  • #67: Add pinning in pooled example documentation
  • #51: Add a Pooled classifier
  • #48: Backwards compatability
  • #62: Difference between Natural Breaks and Fisher Jenks schemes
  • #61: ENH: add greedy (topological) coloring
  • #60: Error while running mapclassify
  • #59: Pooled
  • #57: Invalid escape sequences in strings
  • #58: 3.8, appveyor, deprecation fixes

splot

  • #103: Release1.1.3
  • #102: add permanent links to current version of no's to joss paper
  • #101: [BUG] set colors as list in _plot_choropleth_fig()
  • #99: Remove the links around figures in the JOSS paper

Contributors

Thanks to all the individuals who have contributed to this release:

  • Arfon Smith
  • Bryan Bennett
  • Dani Arribas-Bel
  • Eli Knaap
  • Elliott Sales De Andrade
  • James Gaboardi
  • Jamie Saxon
  • Jeffery Sauer
  • Jkoschinsky
  • Levi John Wolf
  • Martin Fleischmann
  • Pattyf
  • Pedro Amaral
  • Serge Rey
  • Stefanie Lumnitz
  • Sugam Srivastava
  • Vidal-Anguiano
  • Wagner
  • Wei Kang