Skip to content

@sjsrey sjsrey released this Jul 29, 2019 · 33 commits to master since this release

PySAL 2.1.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.

From this version forward, PySAL supports Python 3 only and is tested on Python 3.6 and 3.7. Please make sure that you are operating in a Python 3 environment.

Major Highlights of PySAL 2.1.0

Entirely New Packages

This release we have added the following new package(s) to the PySAL stack:

  • segregation. Segregation Analytics with PySAL.

This is an extensive package that deals with segregation measurements with several frameworks ranging from inference, decomposition, street network based measures, and a multiscalar segregation profiles on urban street networks. With a consistent and well defined api following the pep8 standards, users of segregation (v1.1.1) can:

Calculate over 40 segregation measures from simple to state-of-the art, including:

Test whether segregation estimates are statistically significant:

Decompose
segregation comparisons into

  • differences arising from spatial structure
  • differences arising from demographic structure

Significant Enhancements to Existing Packages

  • Addition of two rank-based Markov methods to pysal/giddy: Full Rank Markov and Geographic Rank Markov, both of which avoid the potentially arbitrary selection of the discretization scheme when a discrete Markov chain is applied to continuous variables (e.g. incomes). An example notebook applying these two methods to reveal interesting spatiotemporal patterns of income distribution dynamics in the United States 1929-2009 is given here.
  • A new function fdr in pysal/esda which account for multiple testing in local statistics by controlling the False Discovery Rate (FDR). The function takes the p-values for all of n local statistics and the significance level as the inputs, and returns the p-value cutoff which would be used for deciding whether to reject the null for each local test.
  • The S-MAUP test was added to esda. This test statistic measures the sensitivity of statistical results to re-aggregation. Contributed by Juan Carlos Duque (@JuancaDuque), the statistic is defined in this PLOS paper.
  • The Lee & Local Lee statistics were added to esda. These statistics characterize the structure of local autocorrelation using Pearson's r. The statistic is defined in Lee (2001).
  • The notebooks project, which provides a centralised online site with example notebooks from all the federated packages has undergone several back-end improvements and (partially) supports now interactive notebooks through Binder. The project is available at http://pysal.org/notebooks
  • Computational improvements to mgwr package includes memory optimization and parallelization. The update allows GWR and Multi-scale GWR model to be calibrated faster and on much larger datasets. Additionally, there are API changes to the kernel functions in mgwr. (#55)

Changes by Package

Overall, there were 992 commits that closed 261 issues, together with 173 pull requests since our last release on 2019-01-30.

libpysal

  • #158: Allow for **kwargs any time there's a weights construction
  • #134: Some functions do not support silence_warnings=True
  • #159: REL: update changelog
  • #157: MAINT: bumping version for a release
  • #122: update interactive examples in inline docstrings
  • #156: BUG: fix for scipy bump #154
  • #155: Revert "bump supported Python versions and correct lat2SW doctest"
  • #154: bump supported Python versions and correct lat2SW doctest
  • #141: WIP debugging travis failure
  • #152: replace deprecated "fromstring" with "frombytes"
  • #48: doctests on weights are failing across the board
  • #149: Use Unix line-endings for all files.
  • #148: Remove unnecessary executable bits.
  • #144: import pysal in libpysal/io/iohandlers/dat.py
  • #143: enforce strict channel in .travis.yml
  • #145: continued failing doctests in libpysal.io
  • #146: sphinxcontrib-napoleon is no longer necessary
  • #142: pysal --> libpysal docs conv & modernizing .travis.yml
  • #7: fix README for pypi
  • #138: build_lattice_shapefile swapped arguments
  • #124: Accidental create of branch
  • #127: Travis errors on Python3.6 PYTHON_PLUS=True
  • #140: [WIP] solution for Travis CI failures
  • #139: Conda travis
  • #111: alphashapes & n<4
  • #115: [WIP] ensure safe returns for small n alphashapes

esda

  • #64: DOC: style sheet update and adding Smaup to init
  • #63: DOC: correcting Geary documentation
  • #62: 2.1.0
  • #52: (ENH) FDR-based adjustment to account for multiple testing in local statistics
  • #58: [WIP] Contributing Smaup test to esda
  • #53: G_Local: EG_sim and seG_sim are scalar
  • #55: docs building failed
  • #57: (bug) fix docs build
  • #54: BUG: EG_Sim and seG_sim were incorrectly given as scalars. #53

giddy

  • #97: (docs) change the css to accommodate new versions of sphinx and sphinx bootstrap theme
  • #96: PyPi page configuration
  • #95: pip install github master.zip of pysal dependencies
  • #93: update README.md
  • #94: Update readme
  • #92: migrate from readthedocs configuration file v1 to v2
  • #91: updating supported python versions (3.6 and 3.7) in setup.py
  • #90: Move testing off of 3.5 and add 3.7
  • #89: release on conda-forge
  • #53: allow user specified lag and check shape
  • #87: Update zenodo doi and pypi badge for version 2.1.0 (new release)
  • #86: (bug) format readme.rst as long_description for pypi display
  • #85: Prepare for release 2.1.0

inequality

pointpats

  • #31: prepare for release of v2.1.0
  • #33: (docs) reference label style
  • #32: (docs) change the css to accommodate new versions of sphinx and sphinx bootstrap theme
  • #30: (docs) migrate from readthedocs configuration file v1 to v2
  • #29: (docs) updating supported python versions (3.6 and 3.7) in setup.py
  • #28: doc: edits to notebook
  • #27: require libpysal>=4.0.0

spaghetti

  • #277: add requirements_dev.txt to MANIFEST.in
  • #279: Update changelog
  • #278: version bump to include req_dev in MANIFEST.in
  • #276: v1.2 --> 1.3rc1 (for release candidate)
  • #275: Updating notebooks prior to v1.3 release
  • #274: updating README
  • #158: update notebooks following prior to v1.3 release
  • #196: TypeError: '>' not supported between instances of '_NodeCursor' and '_NodeCursor'
  • #273: Update docsite
  • #268: docs failing with rtree
  • #272: fix docs building
  • #269: 3.5 --> 3.7 readthedocs
  • #271: updating README.md
  • #265: conda-forge recipe
  • #270: Solo owner/maintainer
  • #266: update requirements in README
  • #267: updating requirements in README
  • #259: Switch snapping to Rtree package?
  • #262: update python versions in setup.py
  • #263: updating supported python versions in setup.py
  • #260: Drop 3.5, Add 3.7 testing
  • #261: adding support for python3.7
  • #257: Update Facility_Location.ipynb
  • #256: Further failures in TravisCI builds. (rake)
  • #255: bumping down geopandas requirement to 0.3.0
  • #254: bumping geopandas req version to 0.4.1
  • #253: TravisCI build failing with geopandas
  • #252: Streamline setup travis
  • #250: Remove redundancies in requirements_xxx.txt files
  • #251: Removing redundant requirements
  • #240: pandas.core error leading to Travis CI failure
  • #248: uniform .travis.yml
  • #249: switching from pip to conda for reqs install resolves .travis error
  • #246: v1.2.rc1?
  • #247: updating GitHub version badge
  • #245: update version badges
  • #242: AttributeError: module 'spaghetti' has no attribute 'element_as_gdf'
  • #244: bump from rc to stable
  • #243: v1.2rc1 bump
  • #241: adding pandas as a requirement

segregation

  • #43: absolute concentration values not matching with other open-source options?
  • #118: Concentration indexes rank fix
  • #117: remove W from importings in spatial_indexes
  • #102: consider surface based S
  • #116: Adds SpatialMinMax index based on Sullivan and Wong (2007)
  • #113: add robust and informative condition for large magnitude projections (tests only off-diagonal)
  • #115: MinMaxS
  • #114: spelling
  • #99: consider tqdm instead of print statements for simulations
  • #32: add DOI
  • #110: Building Error (after tqdm inclusion?)
  • #112: [WIP] add libcfitsio-dev in travis.yml
  • #111: enh: add libcfitsio.so.5 in travis.yml following cypress-io/cypress#4069 (comment)
  • #109: inference wrapper tweaks
  • #107: bug: add descartes in requirements_tests for plotting tests
  • #106: enh: add plotting tests in the decomposition framework
  • #103: add spatial divergence index
  • #100: Generalize also for haversine distance
  • #72: release checklist
  • #101: Update README.md
  • #98: fix the broken link to compute all in readthe docs
  • #97: coveralls badge fix
  • #95: remove erroneous reference to geodetaframe in multigroup section
  • #93: add github tag to coveralls badge
  • #94: update badge link for update following lemurheavy/coveralls-public#971 (comment)
  • #92: this adds tests for improving coverage
  • #91: add DOI badge
  • #90: changelog
  • #89: update version in init
  • #88: Renan final tweak release
  • #87: include coverage option
  • #85: mention center argument in centralization index in spatial notebook
  • #84: release prep
  • #56: improve readme with network examples
  • #83: small tweak MultiDissim on readme
  • #82: small tweak on SpatialDissim on readme
  • #81: Change API (Deprecated classes) in favor of CamelLikeNames
  • #80: BUG: add compute_seg_profile to spatial all
  • #77: Add local segregation measures
  • #78: drop heavy deps
  • #19: function to calculate segregation profiles
  • #75: reimplement more flexible SpatialInformationTheory index
  • #76: add xtol to Ddc in readmme table
  • #52: generate counterfactual distributions on comparative segregation using util _generate_counterfactual function
  • #39: improve nomenclature of distance-decay isolation/exposure
  • #73: release Renan's checklist
  • #71: installation .rst tweaks
  • #70: remove sphinx of requirements and point rtd to _docs requirements for organization
  • #58: api docs not rendering fully
  • #69: move numpy doc from mock to requirements
  • #68: moving sphinxcontrib.bibtex from mock to requirements
  • #67: create mocks for c dependency libraries
  • #57: change the current API of network notebook
  • #66: getting back with old conf, putting all depencies back to requirement…
  • #65: remove recent dependencies included to see if rtd will be build
  • #64: commenting sphinx_bootstrap_theme (trying to follow https://github.co…
  • #63: add tests and docs in setup_package
  • #62: add napoleon and gallery for rtd
  • #61: fix typo value -> values
  • #59: July release readthedocs tweaks
  • #60: Notebooks updates (decomposition and networks)
  • #2: add spatial information theory index
  • #17: consider multi-group segregation indexes
  • #55: adds Multigroup Divergence Index of Roberto (2018)
  • #54: (bug) dual testing aganist pypi and github versions of libpysal
  • #50: Tweaks for july release
  • #51: update nbsit notebook
  • #38: include bootstrap approach for single-value inference (and also for comparative)
  • #49: Adds many Multigroup segregation measures
  • #48: update network notebook
  • #46: Remove sit and tweaks refactoring
  • #47: [WIP] add network-based spatial information theory index
  • #45: reorganize library into modules
  • #37: fixed docstrings and decomposition notebook (LTDB links)
  • #42: change denominator of spatial interaction term of Perimeter_Area_Ratio_Spatial_Dissim (and also add some tweak for concentration indexes)
  • #40: add bootstrap (for unit levels) for single value segregation
  • #44: add Absolute Clustering (ACL) segregation measure
  • #9: add multigroup counterfactual approach
  • #8: add "city share" counterfactual approach
  • #41: add conda-forge option in intalling readme
  • #25: OK: Create additional argument for the center in Centralization indexes
  • #34: fix missing the year in the image title of Readme
  • #33: updating README.md
  • #31: add license file
  • #30: Release 106
  • #29: plan for Release 106
  • #28: update changelog and run gitcount
  • #27: tweaks for 1.0.5 release in setup.py
  • #26: update readme with decompose framework for 1.0.5 release
  • #23: create additional argument for the center in Centralization indexes
  • #24: ENH: bump version number for bf release
  • #16: second step in building a Shapley's decomposition framework (also address many tweaks, typos, etc.)
  • #22: BUG: adding MANIFEST.in so requirements.txt gets included in sdist
  • #21: create changelog and gitcount
  • #20: Create Tools for Github release
  • #15: error when installing using pip
  • #14: add RTD yaml
  • #13: add docs reqs
  • #12: begin docs
  • #5: Order of connectivity may be incorrect in Spatial_Prox_Prof
  • #10: add lorenz
  • #7: add working decomposition func and CDF plotting func
  • #6: start counterfactual
  • #3: directly specifiy Miniconda3
  • #1: add second install option to README.md

mapclassify

  • #39: Release 2.1.0
  • #38: ENH: dropping 3.5 support and adding 3.7
  • #36: ENH: plot method added to Mapclassify
  • #35: ENH: keeping init keyword argument to avoid API breakage.
  • #16: mapclassify.Natural_Break() does not return the specified k classes
  • #32: Fix for #16
  • #33: Mixed usage of brewer2mpl and palettable.colorbrewer in color.py
  • #34: Chorobrewer
  • #14: conda-forge recipe needs some love
  • #31: generating images for color selector
  • #30: doc: bump version and dev setup docs
  • #29: environment.yml
  • #28: add color import and chorobrewer notebook
  • #26: Chorobrewer
  • #25: chorobrewer init

splot

  • #76: [ENH] read long_description from README.md
  • #74: Rel1.1.0
  • #72: LISA cluster map colours mixed when cluster value not present
  • #73: [ENH] select colour by presence of value in list in mask_local_auto
  • #51: Moran Scatterplots with equal bounds on X and Y axes?
  • #70: Add aspect_equal argument to Moran functionality
  • #69: set up dual travis tests for pysal dependencies (pip and github)
  • #65: API changes of mapclassify propagate to splot
  • #68: [DOC] include rtree and descartes in requirements_dev.txt
  • #67: Readme update
  • #64: docs building using readthedocs.yml version 2
  • #57: [DOC] add test for missing code cove %
  • #61: Add tests for warnings and ValueErrors
  • #1: Update travis for testing
  • #63: travis ci testing: migrate from 3.5 and 3.6 to 3.6 and 3.7
  • #58: create paper directory
  • #56: clean and rerun notebooks
  • #45: vba_choropleth API
  • #52: allow string (default) in vba_choropleth function of tests
  • #54: migrating to readthedocs II
  • #53: migration to readthedocs
  • #46: Make docs
  • #47: Segmentation fault in running tests on TravisCI
  • #48: code 139 memory segmentation fault: RESOLVED
  • #41: pip install on linux fails on pyproj

spreg

  • #23: GM_Lag throws Singular Matrix error with high-dimension design matrix
  • #21: MAINT: Fix for upcoming bump in scipy
  • #22: xxxx

spglm

  • #22: (docs) change to readthedocs v2
  • #23: debug travis testing
  • #21: transition to python 3.6 and 3.7

spint

mgwr

  • #66: Large-scale data cause the server down
  • #67: update req to add spreg
  • #64: transition to readthedocs v2
  • #63: transition to python3.6 and 3.7
  • #58: GWR poisson: local variable 'aicc' referenced before assignment
  • #59: (bug, doc) family parameter for Poisson GWR/MGWR
  • #62: inline docs: proper citation
  • #61: correct docstrings for family parameter in Sel_BW
  • #56: Adding a univariate example for Poisson MGWR
  • #57: Multi bw changes
  • #55: (docs) reflect api (kernels) change in the docs
  • #54: can set of independent variables contain zero's (bool)?
  • #49: Distance matrix calculation is not vectorized for lat, lon (spherical) coordinates
  • #52: Memory optimization and optional parallelization for GWR/MGWR
  • #41: Memory optimization

spvcm

Summary Statistics

Package Activity

package commits total issues pulls
segregation 456 105 78
spaghetti 120 40 21
splot 95 25 16
libpysal 80 26 11
esda 67 9 7
mgwr 44 15 7
mapclassify 43 15 12
giddy 32 13 10
pointpats 25 7 7
spreg 16 3 1
spglm 14 3 3
inequality 0 0 0
spint 0 0 0
spvcm 0 0 0

Contributor Activity

commits
Antti Härkönen 4
Dani Arribas-Bel 5
Eli Knaap 94
Elliott Sales De Andrade 2
Filipe Fernandes 3
James Gaboardi 175
Juan C Duque 8
Levi John Wolf 18
Martin Fleischmann 3
Renan Xavier Cortes 357
Serge Rey 86
Stefanie Lumnitz 63
Taylor Oshan 9
Tom Gertin 1
Wei Kang 135
Ziqi Li 24

Contributor by Package Activity

Antti Härkönen Dani Arribas-Bel Eli Knaap Elliott Sales De Andrade Filipe Fernandes James Gaboardi Juan C Duque Levi John Wolf Martin Fleischmann Renan Xavier Cortes Serge Rey Stefanie Lumnitz Taylor Oshan Tom Gertin Wei Kang Ziqi Li
lib.libpysal 0 0 0 2 0 54 0 1 3 0 14 0 0 0 6 0
explore.esda 0 5 0 0 3 3 8 14 0 0 18 0 0 0 16 0
explore.giddy 0 0 0 0 0 5 0 0 0 0 0 0 0 0 27 0
explore.inequality 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
explore.pointpats 0 0 0 0 0 1 0 0 0 0 1 0 0 0 18 0
explore.spaghetti 0 0 0 0 0 97 0 1 0 0 0 0 0 1 21 0
explore.segregation 4 0 94 0 0 4 0 0 0 349 2 0 0 0 3 0
viz.mapclassify 0 0 0 0 0 0 0 0 0 0 41 0 0 0 2 0
viz.splot 0 0 0 0 0 9 0 1 0 8 1 63 0 0 13 0
model.spreg 0 0 0 0 0 2 0 1 0 0 9 0 0 0 4 0
model.spglm 0 0 0 0 0 0 0 0 0 0 0 0 5 0 9 0
model.spint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
model.mgwr 0 0 0 0 0 0 0 0 0 0 0 0 4 0 16 24
model.spvcm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Assets 2
You can’t perform that action at this time.