PySAL: Python Spatial Analysis Library Meta-Package

Related tags

Geolocationpysal
Overview

Python Spatial Analysis Library

Unit Tests PyPI version Anaconda-Server Badge Gitter Code style: black DOI

PySAL, the Python spatial analysis library, is an open source cross-platform library for geospatial data science with an emphasis on geospatial vector data written in Python. It supports the development of high level applications for spatial analysis, such as

  • detection of spatial clusters, hot-spots, and outliers
  • construction of graphs from spatial data
  • spatial regression and statistical modeling on geographically embedded networks
  • spatial econometrics
  • exploratory spatio-temporal data analysis

PySAL Components

PySAL is a family of packages for spatial data science and is divided into four major components:

Lib

solve a wide variety of computational geometry problems including graph construction from polygonal lattices, lines, and points, construction and interactive editing of spatial weights matrices & graphs - computation of alpha shapes, spatial indices, and spatial-topological relationships, and reading and writing of sparse graph data, as well as pure python readers of spatial vector data. Unike other PySAL modules, these functions are exposed together as a single package.

  • libpysal : libpysal provides foundational algorithms and data structures that support the rest of the library. This currently includes the following modules: input/output (io), which provides readers and writers for common geospatial file formats; weights (weights), which provides the main class to store spatial weights matrices, as well as several utilities to manipulate and operate on them; computational geometry (cg), with several algorithms, such as Voronoi tessellations or alpha shapes that efficiently process geometric shapes; and an additional module with example data sets (examples).

Explore

The explore layer includes modules to conduct exploratory analysis of spatial and spatio-temporal data. At a high level, packages in explore are focused on enabling the user to better understand patterns in the data and suggest new interesting questions rather than answer existing ones. They include methods to characterize the structure of spatial distributions (either on networks, in continuous space, or on polygonal lattices). In addition, this domain offers methods to examine the dynamics of these distributions, such as how their composition or spatial extent changes over time.

  • esda : esda implements methods for the analysis of both global (map-wide) and local (focal) spatial autocorrelation, for both continuous and binary data. In addition, the package increasingly offers cutting-edge statistics about boundary strength and measures of aggregation error in statistical analyses

  • giddy : giddy is an extension of esda to spatio-temporal data. The package hosts state-of-the-art methods that explicitly consider the role of space in the dynamics of distributions over time

  • inequality : inequality provides indices for measuring inequality over space and time. These comprise classic measures such as the Theil T information index and the Gini index in mean deviation form; but also spatially-explicit measures that incorporate the location and spatial configuration of observations in the calculation of inequality measures.

  • pointpats : pointpats supports the statistical analysis of point data, including methods to characterize the spatial structure of an observed point pattern: a collection of locations where some phenomena of interest have been recorded. This includes measures of centrography which provide overall geometric summaries of the point pattern, including central tendency, dispersion, intensity, and extent.

  • segregation : segregation package calculates over 40 different segregation indices and provides a suite of additional features for measurement, visualization, and hypothesis testing that together represent the state-of-the-art in quantitative segregation analysis.

  • spaghetti : spaghetti supports the the spatial analysis of graphs, networks, topology, and inference. It includes functionality for the statistical testing of clusters on networks, a robust all-to-all Dijkstra shortest path algorithm with multiprocessing functionality, and high-performance geometric and spatial computations using geopandas that are necessary for high-resolution interpolation along networks, and the ability to connect near-network observations onto the network

Model

In contrast to explore, the model layer focuses on confirmatory analysis. In particular, its packages focus on the estimation of spatial relationships in data with a variety of linear, generalized-linear, generalized-additive, nonlinear, multi-level, and local regression models.

  • mgwr : mgwr provides scalable algorithms for estimation, inference, and prediction using single- and multi-scale geographically-weighted regression models in a variety of generalized linear model frameworks, as well model diagnostics tools

  • spglm : spglm implements a set of generalized linear regression techniques, including Gaussian, Poisson, and Logistic regression, that allow for sparse matrix operations in their computation and estimation to lower memory overhead and decreased computation time.

  • spint : spint provides a collection of tools to study spatial interaction processes and analyze spatial interaction data. It includes functionality to facilitate the calibration and interpretation of a family of gravity-type spatial interaction models, including those with production constraints, attraction constraints, or a combination of the two.

  • spreg : spreg supports the estimation of classic and spatial econometric models. Currently it contains methods for estimating standard Ordinary Least Squares (OLS), Two Stage Least Squares (2SLS) and Seemingly Unrelated Regressions (SUR), in addition to various tests of homokestadicity, normality, spatial randomness, and different types of spatial autocorrelation. It also includes a suite of tests for spatial dependence in models with binary dependent variables.

  • spvcm : spvcm provides a general framework for estimating spatially-correlated variance components models. This class of models allows for spatial dependence in the variance components, so that nearby groups may affect one another. It also also provides a general-purpose framework for estimating models using Gibbs sampling in Python, accelerated by the numba package.

  • tobler : tobler provides functionality for for areal interpolation and dasymetric mapping. Its name is an homage to the legendary geographer Waldo Tobler a pioneer of dozens of spatial analytical methods. tobler includes functionality for interpolating data using area-weighted approaches, regression model-based approaches that leverage remotely-sensed raster data as auxiliary information, and hybrid approaches.

  • access : access aims to make it easy for analysis to calculate measures of spatial accessibility. This work has traditionally had two challenges: [1] to calculate accurate travel time matrices at scale and [2] to derive measures of access using the travel times and supply and demand locations. access implements classic spatial access models, allowing easy comparison of methodologies and assumptions.

  • spopt: spopt is an open-source Python library for solving optimization problems with spatial data. Originating from the original region module in PySAL, it is under active development for the inclusion of newly proposed models and methods for regionalization, facility location, and transportation-oriented solutions.

Viz

The viz layer provides functionality to support the creation of geovisualisations and visual representations of outputs from a variety of spatial analyses. Visualization plays a central role in modern spatial/geographic data science. Current packages provide classification methods for choropleth mapping and a common API for linking PySAL outputs to visualization tool-kits in the Python ecosystem.

  • legendgram : legendgram is a small package that provides "legendgrams" legends that visualize the distribution of observations by color in a given map. These distributional visualizations for map classification schemes assist in analytical cartography and spatial data visualization

  • mapclassify : mapclassify provides functionality for Choropleth map classification. Currently, fifteen different classification schemes are available, including a highly-optimized implementation of Fisher-Jenks optimal classification. Each scheme inherits a common structure that ensures computations are scalable and supports applications in streaming contexts.

  • splot : splot provides statistical visualizations for spatial analysis. It methods for visualizing global and local spatial autocorrelation (through Moran scatterplots and cluster maps), temporal analysis of cluster dynamics (through heatmaps and rose diagrams), and multivariate choropleth mapping (through value-by-alpha maps. A high level API supports the creation of publication-ready visualizations

Installation

PySAL is available through Anaconda (in the defaults or conda-forge channel) We recommend installing PySAL from conda-forge:

conda config --add channels conda-forge
conda install pysal

PySAL can also be installed using pip:

pip install pysal

As of version 2.0.0 PySAL has shifted to Python 3 only.

Users who need an older stable version of PySAL that is Python 2 compatible can install version 1.14.3 through pip or conda:

conda install pysal==1.14.3

Documentation

For help on using PySAL, check out the following resources:

Development

As of version 2.0.0, PySAL is now a collection of affiliated geographic data science packages. Changes to the code for any of the subpackages should be directed at the respective upstream repositories, and not made here. Infrastructural changes for the meta-package, like those for tooling, building the package, and code standards, will be considered.

Development is hosted on github.

Discussions of development as well as help for users occurs on the developer list as well as gitter.

Getting Involved

If you are interested in contributing to PySAL please see our development guidelines.

Bug reports

To search for or report bugs, please see PySAL's issues.

Build Instructions

To build the meta-package pysal see tools/README.md.

License information

See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

Comments
  • Geotable plot

    Geotable plot

    This is a PR to bring into pysal/dev work to implement easy plotting for geotables. Not to be merged yet but rather to create a place to centralized the discussion around design details and so on. My idea is that, once we're happy with it we merge and, ideally, we have it in by the time @ljwolf's GSoC project gets merged as well so we can have a big splash on simplifying workflows with spatial data.

    So far, this implements basic machinery to plot geotables with both a matplotlib and a bokeh backend and contains a color.py module with palette support that depends on bewer2mpl. There's a notebook (geotable_plot) explaining the new functionality.

    Visualization Discussion 
    opened by darribas 60
  • Port pysal to python3

    Port pysal to python3

    Original author: [email protected] (April 13, 2011 22:22:52)

    Task to be completed

    http://pysal.org/1.2/developers/pep/pep-0009.html

    Original issue: http://code.google.com/p/pysal/issues/detail?id=151

    Enhancement 
    opened by sjsrey 47
  • working moran plot func

    working moran plot func

    Hello! Please make sure to check all these boxes before submitting a Pull Request (PR). Once you have checked the boxes, feel free to remove all text except the justification in point 5.

    1. [ X] You have run tests on this submission, either by using Travis Continuous Integration testing testing or running nosetests on your changes?
    2. [ X] This pull request is directed to the pysal/dev branch.
    3. [ X] This pull introduces new functionality covered by docstrings and unittests?
    4. [ - ] You have assigned a reviewer and added relevant labels [[ No option for assignee? Cant find it on my fork in issues or pull screen?? ]]
    5. [ X] The justification for this PR is: Adding Moran Plot view to contrib module. Will add additional functionality. In Progress
    opened by Makosak 22
  • NumFOCUS affiliation

    NumFOCUS affiliation

    In order to become affiliated with NumFOCUS, we need to send an email to NumFOCUS explaining how your project would answer the following questions:

    • Is the project focused on science or general development?
    • How large and diverse is the project in terms of its contributor base?
    • Does the project accept community contributions?
      • yes
    • What is the governance structure of the project, and is it documented?
      • Discussion in meeting
      • potentially fixed place necessary for written governance structure, e.g. on Pysal.org
    • Does the project use an OSI approved license?
    • What communication channels does the project have with the public/its users?
      • Gitter channel
      • Google group
      • Github
      • pysal.org project website
      • google hangouts monthly dev meetings
    • Does the project have a public code of conduct?
      • In progress
    Discussion 
    opened by slumnitz 21
  • Approximate spatial weights for barely-touching polygons

    Approximate spatial weights for barely-touching polygons

    Hi, I have some problems with this code:

    w = pysal.queen_from_shapefile("zats.shp", "zat_id")
    w.transform = 'v'
    

    and this result:

    WARNING: there are 43 disconnected observations
    ('Island ids: ', [58, 141, 270, 318, 323, 334, 383, 407, 422, 503, 524, 535, 536, 543, 545, 562, 573, 605, 622, 624, 666, 670, 703, 754, 939, 940, 941, 942, 943, 944, 946, 947, 950, 951, 952, 954, 955, 957, 964, 970, 972, 986, 993])
    

    which is not true. As you can see, zat_id = 58 (red one) is next to other two regions (e.g. 57) screen shot 2016-12-13 at 11 57 22

    Why? Thanks

    import os; print(os.name, os.sys.platform);print(os.uname())
    posix darwin
    posix.uname_result(sysname='Darwin', nodename='Marcos-MacBook-Air-2.local', release='15.3.0', version='Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', machine='x86_64')
    import sys; print(sys.version)
    3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
    import scipy; print(scipy.__version__)
    0.18.1
    import numpy; print(numpy.__version__)
    1.11.2
    

    shpfiles.zip

    Question 
    opened by denadai2 21
  • Enum links around regions hangs

    Enum links around regions hangs

    Enumerating the links around region 2 hangs. This is likely due to the filaments in that region.

    To reproduce:

    file_name = "streets_net.shp"
    coords, edges = net_shp_io.reader(file_name, doubleEdges=True)
    wed_streets = wed.extract_wed(edges, coords)
    wed_streets.region_edge[2]
    wed.enum_edges_region(wed_streets,2)
    

    This region is keyed to edge (33,34) which is the SW corner edge. The link that causes the hang is (136, 198).

    wed.regions_from_graph is correctly identifying both the filaments (3) and the regions. Minimal cycle 2, that becomes region 2 in the WED is: [34, 33, 153, 159, 158, 157, 156, 177, 134, 132, 133, 196, 141, 143, 135, 136, 35, 34]

    Therefore, I would guess the issue is occurring somewhere in the generation of one of the WED pointers. Best guess is the start and end link pointers.

    Bug 
    opened by jlaura 21
  • Update installation instructions

    Update installation instructions

    Original author: sjsrey (January 25, 2010 01:54:10)

    Wiki page http://code.google.com/p/pysal/wiki/Installation still shows dependencies that we are out of date and lacks specificity on versions for numpy and scipy

    It should mirror what is on the pysal.org http://pysal.org/users/installation.html page so the two are in sync

    Original issue: http://code.google.com/p/pysal/issues/detail?id=41

    opened by sjsrey 21
  • ML Lag indexing error on optimization result

    ML Lag indexing error on optimization result

    When running ml_lag, I get the following error: IndexError: invalid index to scalar variable. This is from the code: self.rho = res.x[0][0]. I went into the ml_lag.py file in spreg and printed out res, which is the OptimizeResult object from scipy. This was the following output:

    status: 0
        nfev: 36
     success: True
         fun: array([[ nan]])
           x: -0.23606797749978981
     message: 'Solution found.'
    

    X should be a solution array, but here it is just a scalar value. I changed rho = res.x[0][0] to rho=res.x; however, that gave me problems elsewhere.

    Regression 
    opened by ratishm1 20
  • PySAL 2.1.0 changing matplotlib backend (Jupyter)

    PySAL 2.1.0 changing matplotlib backend (Jupyter)

    I've encountered an issue with PySAL 2.1.0 (possibly conda specific?) in which importing pysal into a Jupyter notebook changes the matplotlib rendering back-end from whatever I specify (TkAgg) to agg, which doesn't work and yields the error:

    ipykernel_launcher.py:12: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
       if sys.path[0] == '': 
    

    The attached screenshot shows this behaviour in action in a notebook (I've also attached the notebook for testing purposes, though you'll need to change the extension back to .ipynb).

    I've confirmed that this issue is specific to 2.1.0 by downgrading to 2.0.0 and the issue disappears (see second attached screenshot). Perhaps this is something specific to Jupyter/JupyterLab but the fact that downgrading PySAL makes the problem go away leaves me wondering...

    jon

    P.S. Can supply a full Conda YAML file if necessary, but this should be easily reproducible if it's actually something specific to PySAL 2.1.0.

    Pysal 2-1-0 Pysal 2-0-0 PySAL Test.txt

    opened by jreades 19
  • Documentation Clarification Help

    Documentation Clarification Help

    Hello,

    I have two questions:

    1. If you want to integrate your own package with pysal, which has it's own geometry objects, what suggestions do you suggest in order to make the geometries inter-operable? Do I just need to provide a __geo_interface__ property on my geometry object?

    2. The help is very quick to mention how to use geopandas with this package. How do you actually use a geopandas' dataframe with pysal? Are there any examples of doing this? How do you create a w from a geopandas dataframe?

    Question 
    opened by achapkowski 19
  • GSOC -SpInt

    GSOC -SpInt

    This PR is to promote review and discussion of what I have produced as a result of my Google Summer of Code project, which was to develop code for spatial interaction modeling and the general analysis of spatial interaction data.

    A list of the current features, and future work is here and an in-depth log of the project development can be found on the project blog. A jupyter notebook that showcases the use of the main features is here.

    Some potential points of discussion:

    1. The CountModel class: originally meant to act as a dispatcher to different types of count models and estimation techniques, it currently only dispatched to Poisson models estimated using IWLS, which makes it sort of superficial. If support for more models/estimation techniques are added then this might become more useful. If non-count models (i.e., Gaussian) are added, perhaps a better name reflective of this flexibility should be chosen.
    2. VecMoran class: right now this class relies on list comprehensions to store the output of permutations. For large datasets, the memory overheard becomes huge, so perhaps there is a better way to store only the necessary output rather than say, the entire W object for each permutation. This problem does not arise in a regular Moran's I because the permutation does not effect the spatial organization of the spatial units as it does in the vector-based Moran's I.
    3. OD based weights: the ODW type spatial weight, which is based on the contiguity of both origins and destinations, currently takes in an n x n origin W and and n x n destination W (often these are the same) and returns the n**2 x n**2 origin-destination W. It might be useful, depending on how development of a SAR Lag spatial interaction model goes, to have it also return n**2 x n**2 W's for the origins and destinations too. These are just the result of np.kron(np.identity(n), originW) and np.kron(destinationW, np.identity(n)) and are needed to have W objects that match the dimensions of the n x 1 vector of spatial interaction observations. This point overlaps with #847
    4. Default intercept behavior: currently the spatial interaction models are calibrated without intercepts. This can be changed using the boolean parameter constant=True. I found that the intercept needs to be omitted for the results to match those calibrated from maximum entropy and maximum likelihood estimation, though this default behavior might not always be optimal.
    Discussion 
    opened by TaylorOshan 18
  • GSoC 2022 Interfaces for Consistent API Design: Library-wide Discussion

    GSoC 2022 Interfaces for Consistent API Design: Library-wide Discussion

    For GSoC 2022, I'm working on designing more consistent interfaces to PySAL's exploratory and inferential statistics classes. The end goal is to design a sleek new API for PySAL's statistical classes that is highly self-consistent.

    To couple with related issues in spreg, mgwr, esda, spopt, and spglm, I'm creating an issue here for discussion on library-wide concerns related to this project. From discussion in the other issues, it seems like a PySAL-specific set of base classes would be most preferable to developers. While scikit-learn and multiple dispatch might not be great fits for the library, it still needs consistent standards (whether or not they conform to external rules). Creating a PySAL-specific framework would have several key advantages, like in-house maintainability and customizability.

    Importantly, I'm starting this API redesign in the modeling classes (spreg first, then likely moving to mgwr, spint, and beyond). Developing common constructs for these packages is a good subproblem before moving out of the model module. To this end, I'm interested in getting your feedback on the following questions:

    • What design elements would you like to see implemented in a new interface for PySAL's modeling classes?
    • What design elements does PySAL's current design get right, and what design elements could be deprecated?
    • Are there library/package/code structures elsewhere that might be beneficial to use or mimic in PySAL? What benefits would PySAL gain from drawing on these structures?

    My drafts for this redesign can be found in pysal-base and in my copy of spreg. These are quite rough at present as development is ongoing. Descriptions of my development can be found on my blog.

    Excited to hear your input!

    opened by tdhoffman 0
  • Spatiol Temporal Prediction

    Spatiol Temporal Prediction

    Hey everyone, this is less of a feature request and more of a question. I hope this is the right place to ask this.

    I am working on a project where I attempt to predict heroin overdose rates is the US by county using spreg, and I've run into 2 issues.

    The first issue is that spreg models don't seem to have a predict function, so I can't actually predict with it. I'll be honest, I don't even know if the models in the spreg package are the right ones for this problem anyway.

    The other problem I'm running into that I can't find a way to use both spatial and temporal components at the same time. If I arrange by data like this, I can't take calculate spatial weights since you can't do that with coincident points, which is what happens when you have multiple years of data for the same county

    | County | Death Rate | Median Income | Year | geometry | |-------------|------------|---------------|------|--------------| | Alameda | 120 | 20000 | 2010 | Polygon(...) | | Alameda | 121 | 20100 | 2011 | Polygon(...) | | Los Angeles | 98 | 45000 | 2010 | Polygon(...) | | Los Angeles | 99 | 45100 | 2011 | Polygon(...) | | ... | ... | ... | ... | ... |

    An example of a model I could use here that didn't take into account spatial effects is OLSRegimes.

    If I do try to have spatial effects, then I can't have the data split by year, as I need to ensure the the same geometric point doesn't come up twice in the data, and the data has to look like this

    | County | Death Rate 2010 | Median Income 2010 | Death Rate 2011 | Median Income 2011 | geometry | |-------------|-----------------|--------------------|-----------------|--------------------|--------------| | Alameda | 120 | 20000 | 121 | 20100 | Polygon(...) | | Los Angeles | 98 | 45000 | 99 | 45100 | Polygon(...) | | ... | ... | ... | ... | | ... |

    And the models I've used so far like GM_Error_Het just haven't performed well so far.

    Is there something I'm doing wrong here? Am I using the wrong models? Is something about my data not right? Or does pysal simply not support this functionality and I have to look elsewhere.

    opened by kmirijan 2
  • Move to single directory and auto generate/publish docs

    Move to single directory and auto generate/publish docs

    Currently we build the html docs out of docsrcand use a sync script to copy over to docs and publish via gh-pages:

    image

    It would be great to refactor this to use the gh-pages branch approach to publish and build out of a single directory.

    I'm assuming this would enable the bot action to work as intended.

    Docs 
    opened by sjsrey 24
  • Fedora 33 with LLVM 11 and Python  3.9 breaks giddy and splot installation

    Fedora 33 with LLVM 11 and Python 3.9 breaks giddy and splot installation

    The pysal metapackage fails in part to install on Fedora 33. The cause is that llvmlite, used by numba, quantecon, and then by giddy and splot, has not been extended to LLVM 11. Other Fedora components use LLVM 11, so multiple installs are not advisable. I have not been able to reconstruct the dependency graphs, so do not know whether the use of llvmlite is directly in giddy and splot, or via quantecon and numba, or numba seperately. It would be advisable to make at least some of the dependencies conditional. Note that I'm only using pip, and will never consider conda or similar mechanisms, so suggesting such a workaround isn't helpful.

    opened by rsbivand 8
  • new open-source alternative to GitHub

    new open-source alternative to GitHub

    Gitly is a new open-source alternative to GitHub written in V. It is currently in pre-alpha, but may be something we should consider in the intermediate to long-term future for increased focus on open source and potential performance improvements/flexibility.

    Discussion 
    opened by jGaboardi 0
Releases(v2.7.0)
  • v2.7.0(Jul 31, 2022)

    PySAL 2.7.0, 2022-07-31

    Overall, there were 212 commits that closed 81 issues, together with 14 pull requests since our last release on 2022-02-01.

    Highlights

    • The segregation package added a new set of measures, the global and local Distortion indices, based on Bezenac et al thanks to an excellent GSoC project by Noah Bouchier
    • The spreg package added functionalities to estimate endogenous spatial regimes models based on Anselin & Amaral (2021)
    • A paper highlighting the spopt package was published in the Journal of Open Source Software.

    Changes by Package

    libpysal

    • #454: revert shapely hard dependecy
    • #453: Shapely Dependancy Added
    • #457: [WIP] Filter holes from alpha shape returns
    • #461: Bump actions/checkout from 2 to 3
    • #460: Update release_and_publish.yml
    • #458: Is 10.yaml missing in ci?
    • #459: Update build_docs.yml

    access

    • #36: key error from #34
    • #28: Raam outputs
    • #31: release + upload workflow failure
    • #33: bump to v1.1.7
    • #32: update gitcount tool for access
    • #30: Update setup.py
    • #29: generate pypi token for Secret in GH
    • #26: Partial solution to #18
    • #18: [BUG]: demand estimation is incorrect with asymmetric travel matrices

    segregation

    • #199: move pandana into function-level import inside reproject_network
    • #198: pyproj pin
    • #197: add pin for minimum pyproj
    • #196: Sjr/docs
    • #192: add KLDivergence class
    • #195: feat: memory efficient and performant gini
    • #170: Memory efficient Gini
    • #194: add black to docs reqs
    • #193: remove deprecated modules
    • #185: Commit of kl_divergence_profile function and walkthrough notebook - following Google Summer of Code 2021

    momepy

    • #352: CI updates
    • #353: RLS: 0.5.3 changelog
    • #351: BUG: fix issue with blocks within another blocks
    • #350: TST: skip to avoid geopandas regression
    • #349: REF: simplify orientation calculation
    • #347: BUG: Fix angle computation in graph creation with dual approach
    • #346: BUG?: angular betweenness is returning strange results
    • #345: Update actions versions in tests.yaml
    • #344: Update release_to_pypi.yml

    splot

    • #156: [RLS] changelog for 1.1.5
    • #155: add GHA for release
    • #154: release GHA workflow
    • #153: Streamlining Unittest CI workflow
    • #127: [DOC] Add Codecov coverage testing
    • #152: DOC: update docs for bibtex>1
    • #142: Usage of tags in splot
    • #143: Use versioneer
    • #151: Drop Python 3.7 support
    • #150: Import ABC from collections.abc for Python 3.10 compatibility.
    • #148: DOC: change links from master to main

    spopt

    • #252: a 'final' proofing for JOSS manuscript
    • #248: JOSS manuscript clean up [2]
    • #250: clean out code block and add preexisting facility text
    • #213: K means heuristic test failure (3.10)
    • #249: address reference concerns, etc. [2]
    • #246: JOSS manuscript clean up [1]
    • #247: cleaning up JOSS manuscript -- references & links
    • #245: add spopt ref to JOSS paper
    • #242: General usability issues when working with coverage models
    • #240: Consider documenting class properties
    • #243: Document locate class properties
    • #244: build(deps): bump actions/setup-python from 3 to 4
    • #233: PuLP: cannot execute glpsol.exe when
    • #241: Consider documenting units for the max_coverage parameter of MCLP/LSCP.from_geodataframe
    • #237: issue with predefined facilities results?
    • #239: Check feasibility following solution attempt
    • #238: checking for model feasibility following solve
    • #235: UBDC acknowledgement
    • #232: ERROR: Package 'spopt' requires a different Python: 3.6.9 not in '>=3.7'
    • #231: Add predefined locations to coverage models
    • #229: build(deps): bump codecov/codecov-action from 2 to 3
    • #228: Components
    • #227: Components fix
    • #226: doc: update policy options for maxp
    • #224: islands argument ignored in skater
    • #223: policy for multiple components in maxp
    • #225: Fix skater islands kwarg being ignored
    • #221: mclp and lscp jupyter notebooks using osrm routing
    • #222: MCLP with optional Capacity of Facilities Constraint
    • #220: Bump actions/checkout from 2 to 3
    • #219: bump actions/setup-python from 2 to 3
    • #209: Cut release for meta
    • #217: Factoring in existing facilities
    • #216: build(deps): bump actions/github-script from 5 to 6
    • #214: Region docs

    Contributors

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

    • Eli Knaap
    • Germano Barcelos
    • James Gaboardi
    • Jamie Saxon
    • Karthikeyan Singaravelan
    • Levi John Wolf
    • Martin Fleischmann
    • Serge Rey
    • Stefanie Lumnitz
    • Timothy Ellersiek
    Source code(tar.gz)
    Source code(zip)
  • v2.7.0-rc1(Jul 23, 2022)

    PySAL 2.7.0-rc1 Release (Summer 2022)

    Overall, there were 212 commits that closed 81 issues, together with 14 pull requests since our last release on 2022-02-01.

    Highlights

    • The segregation package added a new set of measures, the global and local Distortion indices, based on Bezenac et al thanks to an excellent GSoC project by Noah Bouchier
    • The spreg package added functionalities to estimate endogenous spatial regimes models based on Anselin & Amaral (2021)
    • A paper highlighting the spopt package was published in the Journal of Open Source Software.

    Changes by Package

    libpysal

    • #454: revert shapely hard dependecy
    • #453: Shapely Dependancy Added
    • #457: [WIP] Filter holes from alpha shape returns
    • #461: Bump actions/checkout from 2 to 3
    • #460: Update release_and_publish.yml
    • #458: Is 10.yaml missing in ci?
    • #459: Update build_docs.yml

    access

    • #36: key error from #34
    • #28: Raam outputs
    • #31: release + upload workflow failure
    • #33: bump to v1.1.7
    • #32: update gitcount tool for access
    • #30: Update setup.py
    • #29: generate pypi token for Secret in GH
    • #26: Partial solution to #18
    • #18: [BUG]: demand estimation is incorrect with asymmetric travel matrices

    segregation

    • #199: move pandana into function-level import inside reproject_network
    • #198: pyproj pin
    • #197: add pin for minimum pyproj
    • #196: Sjr/docs
    • #192: add KLDivergence class
    • #195: feat: memory efficient and performant gini
    • #170: Memory efficient Gini
    • #194: add black to docs reqs
    • #193: remove deprecated modules
    • #185: Commit of kl_divergence_profile function and walkthrough notebook - following Google Summer of Code 2021

    momepy

    • #352: CI updates
    • #353: RLS: 0.5.3 changelog
    • #351: BUG: fix issue with blocks within another blocks
    • #350: TST: skip to avoid geopandas regression
    • #349: REF: simplify orientation calculation
    • #347: BUG: Fix angle computation in graph creation with dual approach
    • #346: BUG?: angular betweenness is returning strange results
    • #345: Update actions versions in tests.yaml
    • #344: Update release_to_pypi.yml

    splot

    • #156: [RLS] changelog for 1.1.5
    • #155: add GHA for release
    • #154: release GHA workflow
    • #153: Streamlining Unittest CI workflow
    • #127: [DOC] Add Codecov coverage testing
    • #152: DOC: update docs for bibtex>1
    • #142: Usage of tags in splot
    • #143: Use versioneer
    • #151: Drop Python 3.7 support
    • #150: Import ABC from collections.abc for Python 3.10 compatibility.
    • #148: DOC: change links from master to main

    spopt

    • #252: a 'final' proofing for JOSS manuscript
    • #248: JOSS manuscript clean up [2]
    • #250: clean out code block and add preexisting facility text
    • #213: K means heuristic test failure (3.10)
    • #249: address reference concerns, etc. [2]
    • #246: JOSS manuscript clean up [1]
    • #247: cleaning up JOSS manuscript -- references & links
    • #245: add spopt ref to JOSS paper
    • #242: General usability issues when working with coverage models
    • #240: Consider documenting class properties
    • #243: Document locate class properties
    • #244: build(deps): bump actions/setup-python from 3 to 4
    • #233: PuLP: cannot execute glpsol.exe when
    • #241: Consider documenting units for the max_coverage parameter of MCLP/LSCP.from_geodataframe
    • #237: issue with predefined facilities results?
    • #239: Check feasibility following solution attempt
    • #238: checking for model feasibility following solve
    • #235: UBDC acknowledgement
    • #232: ERROR: Package 'spopt' requires a different Python: 3.6.9 not in '>=3.7'
    • #231: Add predefined locations to coverage models
    • #229: build(deps): bump codecov/codecov-action from 2 to 3
    • #228: Components
    • #227: Components fix
    • #226: doc: update policy options for maxp
    • #224: islands argument ignored in skater
    • #223: policy for multiple components in maxp
    • #225: Fix skater islands kwarg being ignored
    • #221: mclp and lscp jupyter notebooks using osrm routing
    • #222: MCLP with optional Capacity of Facilities Constraint
    • #220: Bump actions/checkout from 2 to 3
    • #219: bump actions/setup-python from 2 to 3
    • #209: Cut release for meta
    • #217: Factoring in existing facilities
    • #216: build(deps): bump actions/github-script from 5 to 6
    • #214: Region docs

    Contributors

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

    • Eli Knaap
    • Germano Barcelos
    • James Gaboardi
    • Jamie Saxon
    • Karthikeyan Singaravelan
    • Levi John Wolf
    • Martin Fleischmann
    • Serge Rey
    • Stefanie Lumnitz
    • Timothy Ellersiek
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Jan 30, 2022)

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

    Highlights

    New Package: pysal/momepy

    Momepy is a library for quantitative analysis of urban form - urban morphometrics

    Changes by Package

    Overall, there were 181 commits that closed 99 issues since our last release on 2021-07-31.

    libpysal

    • #450: DOCS: Gabriel and related enhancements
    • #449: DOC: Update docs for Gabriel and related enhancements
    • #448: Gabriel docs
    • #438: add gabriel weights and more performant voronoi generation
    • #442: ENH: Moving to appdirs for example storage
    • #443: MAINT: replace LooseVersion with packaging
    • #349: Format UserWarning string in W.to_adjlist
    • #285: remove non-coincident points correctly from knn weights
    • #439: Bug fix for parallel execution environments
    • #429: Use versioneer to manage version
    • #437: REF: update for shapely 2.0
    • #434: tools/gitcount with versioneer
    • #435: update version import in gitcount
    • #321: represent islands as self-joins with zero weight in adjacency lists
    • #431: DOC: Fix several warnings during the build
    • #430: Fix test_voronoi on other architectures.
    • #420: Testraster failures without numba: 'dia_matrix' object is not subscriptable
    • #232: add neighbor_equality and write_gal to the imports from util
    • #428: Fix failure of "dia_matrix object is not subscriptable"
    • #402: Edgelist-based contiguity constructor
    • #419: scipy 1.7.0 breaking test_lat2SW
    • #423: use toarray in W.full()
    • #426: cast sw to csc and eliminate zeros
    • #425: skip scipy 1.7.1 for in test_lat2SW
    • #422: dense

    access

    esda

    giddy

    inequality

    pointpats

    segregation

    • #184: prepare v2.1.0
    • #35: parallelization simulation based indexes and inference wrappers
    • #180: use rvlib for densitycorrecteddissim
    • #183: performance enhancements

    spaghetti

    • #657: attempt Python 3.10 in CI
    • #638: Update changelog tooling to report contributors
    • #655: Try automated release notes action
    • #653: update gitcount notebook for versioneer?
    • #654: access version from pacakge in gitcount
    • #652: add manual triggers for workflows
    • #650: omit new versioner files from code coverage
    • #651: ignore versioneer files for code coverage reporting
    • #649: add deprecation warning for libpysal geometries
    • #647: versioneer for version management
    • #648: Versioneer
    • #373: [ENH] Explore a "two workflows" style format

    mgwr

    momepy

    • #331: RLS: add 0.5.2 changelog
    • #330: BUG: fix FormFactor
    • #329: BUG: FormFactor uses incorrect formula
    • #320: REF: simplify calculation of Simpson diversity
    • #319: TST: redo CI matrix
    • #327: Summary at the custom-zone level
    • #325: QST: input data type for momepy
    • #321: QST: mm.Blocks emits CRS mismatch warnings
    • #323: QST: how to save graph to Shapefile?
    • #318: TST: use mambaforge in CI
    • #315: BUG: non-default index dropped in Blocks id series
    • #316: 0.5.1 release
    • #311: BUG: incorrect index in Blocks.*_id Series for non-default index
    • #314: TST: CI failure due to geopandas regression
    • #313: relicense under BSD
    • #305: copyright and license
    • #312: REF/TST: minimise warnings
    • #309: Silence warnings from geopandas 0.10
    • #306: update README.md
    • #303: Fix links after the transfer under pysal org
    • #301: Finish transfer under PySAL org
    • #299: ENH: support shapely polygon as enclosures limit
    • #254: ENH: allow limit of enclosures to be shapely polygon
    • #293: Import causes ImportError
    • #298: ENH: catch geographic CRS in Tessellation
    • #297: Tesselation fails at Generating input point array... with ValueError: need at least one array to concatenate
    • #286: momepy.Tessellation returns empty rows when buildings are outside of enclosures
    • #296: PERF: use dask.bag in Tessellation
    • #295: momepy.Tessellation doesn't appear to run faster on a machine with many more cores
    • #292: DOC: edit/proof street network analysis notebooks
    • #288: BUG: properly clip enclosures by limit
    • #287: momepy.enclosures doesn't appear to observe limit parameter
    • #270: Enclosure has problems with rivers
    • #291: BUG: Tessellation error on non-standard enclosures
    • #289: BUG: momepy.Tessellation fails with IndexError
    • #290: small typo in gdf_to_nx

    spglm

    spint

    spreg

    spvcm

    tobler

    mapclassify

    splot

    spopt

    • #205: install pulp for docs build
    • #196: rework JOSS manuscript
    • #200: [WIP] JOSS paper revisions work
    • #203: update the real-world facility location notebook.
    • #204: Update fac-loc real world notebook
    • #201: region_k_means not handling candidate move updates
    • #202: Update candidates list after making a move
    • #179: Update changelog tooling to report contributors
    • #199: Generate Changelog notes automatically on release
    • #197: access package version in tools/gitcount
    • #198: Add examples section to locate module
    • #190: update locate docs
    • #194: switch to versioneer
    • #193: Update locate docs
    • #192: Reference error for Church and Murray book
    • #2: facility location models in a class
    • #189: Facility Location modeling solutions & CI
    • #186: Add Locate Module
    • #3: bug: maxp implementation is not using contiguity
    • #49: spopt as solver agnostic?
    • #61: solvers and solver APIs
    • #18: new alternative to pulp

    Contributors

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

    • Charles Schmidt
    • Eli Knaap
    • Elliott Sales De Andrade
    • Germano Barcelos
    • James Gaboardi
    • Levi John Wolf
    • Martin Fleischmann
    • Serge Rey
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0-rc2(Jan 23, 2022)

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

    Highlights

    New Package: pysal/momepy

    Momepy is a library for quantitative analysis of urban form - urban morphometrics

    Changes by Package

    Overall, there were 181 commits that closed 99 issues since our last release on 2021-07-31.

    libpysal

    • #450: DOCS: Gabriel and related enhancements
    • #449: DOC: Update docs for Gabriel and related enhancements
    • #448: Gabriel docs
    • #438: add gabriel weights and more performant voronoi generation
    • #442: ENH: Moving to appdirs for example storage
    • #443: MAINT: replace LooseVersion with packaging
    • #349: Format UserWarning string in W.to_adjlist
    • #285: remove non-coincident points correctly from knn weights
    • #439: Bug fix for parallel execution environments
    • #429: Use versioneer to manage version
    • #437: REF: update for shapely 2.0
    • #434: tools/gitcount with versioneer
    • #435: update version import in gitcount
    • #321: represent islands as self-joins with zero weight in adjacency lists
    • #431: DOC: Fix several warnings during the build
    • #430: Fix test_voronoi on other architectures.
    • #420: Testraster failures without numba: 'dia_matrix' object is not subscriptable
    • #232: add neighbor_equality and write_gal to the imports from util
    • #428: Fix failure of "dia_matrix object is not subscriptable"
    • #402: Edgelist-based contiguity constructor
    • #419: scipy 1.7.0 breaking test_lat2SW
    • #423: use toarray in W.full()
    • #426: cast sw to csc and eliminate zeros
    • #425: skip scipy 1.7.1 for in test_lat2SW
    • #422: dense

    access

    esda

    giddy

    inequality

    pointpats

    segregation

    • #184: prepare v2.1.0
    • #35: parallelization simulation based indexes and inference wrappers
    • #180: use rvlib for densitycorrecteddissim
    • #183: performance enhancements

    spaghetti

    • #657: attempt Python 3.10 in CI
    • #638: Update changelog tooling to report contributors
    • #655: Try automated release notes action
    • #653: update gitcount notebook for versioneer?
    • #654: access version from pacakge in gitcount
    • #652: add manual triggers for workflows
    • #650: omit new versioner files from code coverage
    • #651: ignore versioneer files for code coverage reporting
    • #649: add deprecation warning for libpysal geometries
    • #647: versioneer for version management
    • #648: Versioneer
    • #373: [ENH] Explore a "two workflows" style format

    mgwr

    momepy

    • #331: RLS: add 0.5.2 changelog
    • #330: BUG: fix FormFactor
    • #329: BUG: FormFactor uses incorrect formula
    • #320: REF: simplify calculation of Simpson diversity
    • #319: TST: redo CI matrix
    • #327: Summary at the custom-zone level
    • #325: QST: input data type for momepy
    • #321: QST: mm.Blocks emits CRS mismatch warnings
    • #323: QST: how to save graph to Shapefile?
    • #318: TST: use mambaforge in CI
    • #315: BUG: non-default index dropped in Blocks id series
    • #316: 0.5.1 release
    • #311: BUG: incorrect index in Blocks.*_id Series for non-default index
    • #314: TST: CI failure due to geopandas regression
    • #313: relicense under BSD
    • #305: copyright and license
    • #312: REF/TST: minimise warnings
    • #309: Silence warnings from geopandas 0.10
    • #306: update README.md
    • #303: Fix links after the transfer under pysal org
    • #301: Finish transfer under PySAL org
    • #299: ENH: support shapely polygon as enclosures limit
    • #254: ENH: allow limit of enclosures to be shapely polygon
    • #293: Import causes ImportError
    • #298: ENH: catch geographic CRS in Tessellation
    • #297: Tesselation fails at Generating input point array... with ValueError: need at least one array to concatenate
    • #286: momepy.Tessellation returns empty rows when buildings are outside of enclosures
    • #296: PERF: use dask.bag in Tessellation
    • #295: momepy.Tessellation doesn't appear to run faster on a machine with many more cores
    • #292: DOC: edit/proof street network analysis notebooks
    • #288: BUG: properly clip enclosures by limit
    • #287: momepy.enclosures doesn't appear to observe limit parameter
    • #270: Enclosure has problems with rivers
    • #291: BUG: Tessellation error on non-standard enclosures
    • #289: BUG: momepy.Tessellation fails with IndexError
    • #290: small typo in gdf_to_nx

    spglm

    spint

    spreg

    spvcm

    tobler

    mapclassify

    splot

    spopt

    • #205: install pulp for docs build
    • #196: rework JOSS manuscript
    • #200: [WIP] JOSS paper revisions work
    • #203: update the real-world facility location notebook.
    • #204: Update fac-loc real world notebook
    • #201: region_k_means not handling candidate move updates
    • #202: Update candidates list after making a move
    • #179: Update changelog tooling to report contributors
    • #199: Generate Changelog notes automatically on release
    • #197: access package version in tools/gitcount
    • #198: Add examples section to locate module
    • #190: update locate docs
    • #194: switch to versioneer
    • #193: Update locate docs
    • #192: Reference error for Church and Murray book
    • #2: facility location models in a class
    • #189: Facility Location modeling solutions & CI
    • #186: Add Locate Module
    • #3: bug: maxp implementation is not using contiguity
    • #49: spopt as solver agnostic?
    • #61: solvers and solver APIs
    • #18: new alternative to pulp

    Contributors

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

    • Charles Schmidt
    • Eli Knaap
    • Elliott Sales De Andrade
    • Germano Barcelos
    • James Gaboardi
    • Levi John Wolf
    • Martin Fleischmann
    • Serge Rey
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0-rc1(Jan 17, 2022)

    PySAL 2.6.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 149 commits that closed 61 issues since our last release on 2021-07-31.

    Highlights

    New Package: pysal/momempy

    Momepy is a library for quantitative analysis of urban form - urban morphometrics

    Detailed Changes by Package

    segregation

    • #184: prepare v2.1.0
    • #35: parallelization simulation based indexes and inference wrappers
    • #180: use rvlib for densitycorrecteddissim
    • #183: performance enhancements

    spaghetti

    • #653: update gitcount notebook for versioneer?
    • #654: access version from pacakge in gitcount
    • #652: add manual triggers for workflows
    • #650: omit new versioner files from code coverage
    • #651: ignore versioneer files for code coverage reporting
    • #649: add deprecation warning for libpysal geometries
    • #647: versioneer for version management
    • #648: Versioneer
    • #373: [ENH] Explore a "two workflows" style format

    momepy

    • #315: BUG: non-default index dropped in Blocks id series
    • #316: 0.5.1 release
    • #311: BUG: incorrect index in Blocks.*_id Series for non-default index
    • #314: TST: CI failure due to geopandas regression
    • #313: relicense under BSD
    • #305: copyright and license
    • #312: REF/TST: minimise warnings
    • #309: Silence warnings from geopandas 0.10
    • #306: update README.md
    • #303: Fix links after the transfer under pysal org
    • #301: Finish transfer under PySAL org
    • #299: ENH: support shapely polygon as enclosures limit
    • #254: ENH: allow limit of enclosures to be shapely polygon
    • #293: Import causes ImportError
    • #298: ENH: catch geographic CRS in Tessellation
    • #297: Tesselation fails at Generating input point array... with ValueError: need at least one array to concatenate
    • #286: momepy.Tessellation returns empty rows when buildings are outside of enclosures
    • #296: PERF: use dask.bag in Tessellation
    • #295: momepy.Tessellation doesn't appear to run faster on a machine with many more cores
    • #292: DOC: edit/proof street network analysis notebooks
    • #288: BUG: properly clip enclosures by limit
    • #287: momepy.enclosures doesn't appear to observe limit parameter
    • #270: Enclosure has problems with rivers
    • #291: BUG: Tessellation error on non-standard enclosures
    • #289: BUG: momepy.Tessellation fails with IndexError
    • #290: small typo in gdf_to_nx

    spopt

    • #205: install pulp for docs build
    • #196: rework JOSS manuscript
    • #200: [WIP] JOSS paper revisions work
    • #203: update the real-world facility location notebook.
    • #204: Update fac-loc real world notebook
    • #201: region_k_means not handling candidate move updates
    • #202: Update candidates list after making a move
    • #179: Update changelog tooling to report contributors
    • #199: Generate Changelog notes automatically on release
    • #197: access package version in tools/gitcount
    • #198: Add examples section to locate module
    • #190: update locate docs
    • #194: switch to versioneer
    • #193: Update locate docs
    • #192: Reference error for Church and Murray book
    • #2: facility location models in a class
    • #189: Facility Location modeling solutions & CI
    • #186: Add Locate Module
    • #3: bug: maxp implementation is not using contiguity
    • #49: spopt as solver agnostic?
    • #61: solvers and solver APIs
    • #18: new alternative to pulp

    Contributors

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

    • Eli Knaap
    • Gegen07
    • Germano Barcelos
    • James Gaboardi
    • Martin Fleischmann
    • Serge Rey
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Aug 1, 2021)

    PySAL 2.5.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 543 commits that closed 190 issues, together with 33 pull requests since our last release on 2021-01-31.

    Package Highlights

    esda

    This version merges two large new sets of functionalities:

    segregation

    Version 2.0 of the segregation package brings a new API, a massive code restructuring, and dozens of new features, enhancements, and bug fixes. For a complete overview of the new API, please see the documentation page at https://pysal.org/segregation/api. The new version does away with the distinction between spatial and aspatial segregation indices and instead partitions the functions based on single-group and multi-group measures. The spatial/aspatial distinction is echewed in version 2.0 because all aspatial indices can be generalized into spatial versions, following the logic of Reardon and O'Sullivan (see a description in this example notebook). Furthermore, "space" can be incorporated into the index calculation using either Euclidean distance or the shortest path along a travel network. With this logic, the package now offers multiscalar segregation profiles for 23 different segregation indices (a first in any software package).

    tobler

    Added pychnophylactic interpolation.

    spaghetti

    The highlights of this release include functionality to split network arcs by count, which compliments the previously available distance splitting, and a paper in the Journal of Open Source Software. Also, Python 3.6 is no longer supported.

    spopt

    This release includes another model to add to the suite: RandomRegions. RandomRegions, originally written by David C. Folch (@dfolch) and Serge Rey, builds regions based on an initial random seed while considering user-defined specifications such as: region count, cardinality, contiguity, and compactness (citation?). Also, we have improved the testing coverage for the models inlcuded in the initial release: AZP, Max-p-regions, Region-k-means, Skater, Spenc, and WardSpatial.

    Detailed Changes by Package

    libpysal

    • #412: Add missing endianness in WK1 reader.
    • #413: Update unittests, etc
    • #415: classify repo as Python
    • #389: add docs action workflow
    • #411: Return a dataframe with info on available datasets
    • #409: Do not fetch examples on import
    • #410: Do not poll remotes on init.
    • #400: Fixed index2da causing inverted output
    • #399: Raster weights w2da failing on 3.6
    • #408: Correct way to compute spatial weights in libpysal
    • #407: Bump actions/upload-release-asset from 1 to 1.0.2
    • #405: Bump conda-incubator/setup-miniconda from 2 to 2.1.1
    • #404: Bump actions/setup-python from 2 to 2.2.2
    • #406: Bump actions/cache from 2 to 2.1.5
    • #403: Bump actions/checkout from 2 to 2.3.4
    • #401: Dimension issues in DistanceBand weights
    • #341: Use a labelled sparse xarray.DataArray as the core representation for weights
    • #397: Draft of adjacency table as df
    • #398: Expand weights benchmark
    • #396: Draft of adjacency table as df
    • #395: xarray geograph implementation
    • #392: Add start of workbench notebook
    • #390: Bump actions/cache from v2 to v2.1.4
    • #388: update dev docs link
    • #387: make build + make sync @docsrc
    • #386: bump version
    • #385: Adding raster interface to docs API + notebooks
    • #384: [Doc]: Update raster example notebook and docstrings

    access

    esda

    • #188: add pygeos-tolerant fails for the module
    • #133: add the start on new calculation method for getisord statistics
    • #121: Gi rewrite
    • #86: Incorrect behavior for Moran_Local and self-neighbors
    • #186: update codecov action to v2
    • #180: Add map correspondence measure from Nowosad and Stepinski
    • #185: [PERF] List comprehension to array operation in local multivariate Geary
    • #184: Update Spatial Autocorrelation for Areal Unit Data
    • #172: Merge ljwolf/shapestats into esda
    • #182: adjust setup in conf.py
    • #170: [DOC] Updating read the docs api for local join counts, local geary
    • #179: Bump sphinxcontrib-bibtex from 1.0.0 to 2.3.0
    • #178: Bump sphinxcontrib-bibtex from 1.0.0 to 2.2.1
    • #176: Bump actions/checkout from 2 to 2.3.4
    • #175: Bump codecov/codecov-action from 1 to 1.5.0
    • #177: Bump actions/setup-python from 2 to 2.2.2
    • #173: Bump actions/create-release from 1 to 1.1.4
    • #174: Bump actions/upload-release-asset from 1 to 1.0.2
    • #169: Bump sphinxcontrib-bibtex from 1.0.0 to 2.2.0
    • #168: add tests for parallel crand

    giddy

    inequality

    pointpats

    segregation

    • #166: remove mamba reference
    • #169: error in AbsoluteClustering with geographic coordinate system
    • #171: add deprecation layer for 2.0
    • #104: [ENH] extend segregation profile function to accept more spatial indices
    • #167: Dissimilarity Index API typo
    • #165: remove travis-ci badge
    • #4: consider refactor to scikit-style mixins
    • #161: 2.0 refactor
    • #168: Segregation measure (aspatial/spatial) with groupby?
    • #163: Example notebooks missing scaramento2.shp

    spaghetti

    • #639: prepare for v1.6.2 release
    • #637: update conf.py link in tutorials
    • #617: update action for GH releases
    • #636: Version bump & rerun notebooks
    • #635: bump to v1.6.0.post5 - another try
    • #634: Try new release action (softprops/action-gh-release)
    • #633: removing descartes requirement
    • #632: remove descartes dependency
    • #573: Blacken code in docs
    • #631: doc updates for v1.6.0 release
    • #597: Update copyright year
    • #630: split arc by count functionality
    • #494: network segmentation by count
    • #522: rtree dependency and value of SMALL
    • #629: Drop support for Python 3.6
    • #628: Drop support for Python 3.6
    • #627: Rebuild docs for version bump
    • #440: release v1.6.0
    • #491: Add type annotations?
    • #626: Minor formatting fixes
    • #625: version bump & rerun notebooks for JOSS paper
    • #575: [JOSS review] Manuscript statement of need
    • #624: trim down Statement of Need section
    • #623: Bump actions/checkout from 2 to 2.3.4
    • #622: Bump actions/setup-python from 2 to 2.2.2
    • #621: Bump actions/upload-release-asset from 1 to 1.0.2
    • #620: Bump actions/create-release from 1 to 1.1.4
    • #619: Bump codecov/codecov-action from 1 to 1.5.0
    • #618: minor cosmetic updates to workflows
    • #616: Prune CI testing matrix
    • #615: reduce testing matrix
    • #609: pin rtree version
    • #614: GitHub Actions CI with micromamba
    • #613: try provision-with-micromamba
    • #612: try mamba + strict again
    • #611: CI work, etc.
    • #610: remove mamba & conda mixture
    • #583: [JOSS review] Manuscript "Current functionality"
    • #582: [JOSS review] Support reading/writing networks from different formats, integration with NetworkX/OSMnx
    • #581: [JOSS review] Methods to assist common tasks (especially plotting)
    • #580: [JOSS review] Network class, key (unique) functionalities of spaghetti, relationship to NetworkX (or the like).
    • #578: [JOSS review] Improve the quickstart notebook
    • #577: [JOSS review] Add more information in the tutorial notebooks
    • #576: [JOSS review] Manuscript Figure 1 (PySAL logo)
    • #574: [JOSS review] Manuscript summary
    • #608: update JOSS paper cite and figure size
    • #607: update JOSS paper text
    • #605: [WIP] Add paper references, etc.
    • #586: additional functions & methods from tutorials
    • #606: improve point snap / Moran figure for JOSS
    • #588: addressing issue #576
    • #603: add to quick start notebook
    • #592: addressing #582: update spaghetti.Network docstring
    • #602: Bump actions/cache from v2 to v2.1.4
    • #601: update docs only on release

    mgwr

    spglm

    spint

    spreg

    • #76: Update conf and rerelease
    • #75: Update GHA & CI
    • #59: Add Python 3.9 testing
    • #74: Fixing bug with order of variables' names changing randomly in regimes.
    • #66: Bump actions/setup-python from 2 to 2.2.2
    • #67: Bump actions/cache from 2 to 2.1.5
    • #68: Bump codecov/codecov-action from 1 to 1.5.0
    • #69: Bump actions/upload-release-asset from 1 to 1.0.2
    • #70: Bump actions/create-release from 1 to 1.1.4
    • #65: Bump actions/cache from v2 to v2.1.4

    spvcm

    tobler

    • #144: add pycno to docs
    • #143: remove css from docs conf
    • #142: bump version 0.8
    • #141: add pycnophylactic interpolation
    • #95: Add Pycnophylactic Interpolation
    • #79: sentinel data
    • #135: ENH: support categorical variables in area_interpolate
    • #96: vector data as a dasymetric mask
    • #132: bump version

    mapclassify

    • #114: Add min arg to UserDefined
    • #110: Enable python 2 install
    • #109: Inconsistent UserDefined Scale With Multiple Axes
    • #107: Turn off 3.6 testing on ubuntu
    • #108: 3.9
    • #106: about the classification method's output interval's precision

    splot

    • #136: [REL] add new version number and release notes for 1.1.4
    • #135: Streamline & upgrade CI
    • #134: update conf.py
    • #124: Migrating testing & coverage services
    • #121: [MAINT] rename 'master' to 'main'
    • #130: ipywidgets dependency
    • #132: REF: make ipywidgets optional dependency
    • #133: [WIP] update testing procedure with new datasets
    • #115: MatplotlibDeprecationWarning from ax.spines[label].set_smart_bounds()

    spopt

    • #180: prep for release of version 0.1.2
    • #177: update notebook links in conf
    • #176: add trigger to doc_build action
    • #175: update reg-k-means.ipynb
    • #174: update release_and_publish.yml
    • #169: Increase test cases & coverage
    • #112: Improve testing suite
    • #171: Classify repo as Python
    • #168: maintenance for CI
    • #167: Streamline CI with micromamba
    • #166: Update reference DOIs and add PySAL GA reference
    • #165: remove draft PDF action
    • #164: remove draft_pdf action
    • #163: Fixes documentation
    • #162: Import clauses in documentation are wrong throughout the examples
    • #161: correct paper indent & add JOSS badge
    • #160: Bump actions/upload-artifact from 1 to 2.2.3
    • #159: Add paper
    • #158: include the paper in the git-based repository together with the software
    • #153: Bump actions/create-release from 1 to 1.1.4
    • #156: Bump actions/upload-release-asset from 1 to 1.0.2
    • #157: Bump conda-incubator/setup-miniconda from 2 to 2.1.1
    • #155: Bump codecov/codecov-action from 1 to 1.5.0
    • #154: Bump actions/cache from 2 to 2.1.5
    • #152: Update docs for random region
    • #147: Support for RandomRegions?
    • #150: Add support for randomregions
    • #151: Adding random regions
    • #149: test
    • #148: update region-k-means notebook
    • #146: revise ward in notebooks
    • #145: revised notebook for azp
    • #144: Bump actions/cache from v2 to v2.1.4
    • #143: update dev docs link
    • #142: revise skater in notebooks
    • #140: Tutorials link in readme leads to a 404 error
    • #141: update tutorials link in README
    • #138: fresh cut release?
    • #139: bump version 0.1.0 -> 0.1.1

    pysal

    • #1199: Bump access version in meta release
    • #1223: Spatial Weights issue, Points geometry not allowed
    • #1220: Could not load shared object file: llvmlite.dll
    • #1218: 2.4.0

    Contributors

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

    • Arfon Smith
    • Dani Arribas-Bel
    • Eli Knaap
    • Elliott Sales De Andrade
    • James Gaboardi
    • Jeffcsauer
    • Jkoschinsky
    • Justin Pihony
    • Leo Morales
    • Levi John Wolf
    • Martin Fleischmann
    • Mgeeeek
    • Pedro Amaral
    • Pedro Camargo
    • Serge Rey
    • Stefanie Lumnitz
    • Tlouf
    • Xin Feng
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Feb 1, 2021)

    PySAL 2.4.0 represents 6 months of enhancements, bug-fixes, widening of test coverage, and improved documentation. Three Google Summer of Code projects made substantial contributions to this release (see below). 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 1155 commits that closed 352 issues, together with 121 pull requests since our last release on 2020-07-29.

    Highlights

    New Package: pysal/spopt

    Provides methods for solving optimization problems with spatial data. Currently, regionalization methods are supported with planned support for facility location and transportation-oriented modeling.

    The regionalization models implemented include:

    • Max-p-regions: It involves the aggregation or clustering of a set of small areas into the maximum number of homogeneous and spatially contiguous regions such that the value of a regional attribute is higher than a predefined threshold. The number of regions will be endogenized in order to satisfy the threshold. (Duque, Anselin, and Rey, 2012 and Wei, Rey, and Knaap, 2020)
    • Automatic Zoning Procedure (AZP) algorithm: It can work with any type of objective function that is sensitive to the aggregation of data for a larger number of zones into a pre-specified smaller number of regions (Openshaw, 1977 and Openshaw and Rao, 1995)
    • Region-K-means: It is K-means clustering for regions with the constraint that each cluster forms a spatially connected component.
    • Skater: It is a constrained spatial regionalization algorithm based on spanning tree pruning. Specifically, the number of edges is prespecified to be cut in a continuous tree to group spatial units into contiguous regions. (AssunCao et al., 2006)
    • Spenc: spatially-encouraged spectral clustering is an approach to balance spatial and feature coherence using kernel combination in spectral clustering.([Wolf, 2020] (https://osf.io/yzt2p/))
    • WardSpatial: It is an Agglomerative Clustering using Ward linkage with a spatial connectivity constraint. Basically, it is a "bottom-up" approach: each observation starts in its own cluster, and pairs of clusters are chosen to merge at each step in order to minimize the variance of the clusters. (sklearn.cluster.AgglomerativeClustering)

    Enhancements to existing packages

    libpysal

    Thanks to the Google Summer of Code 2020 led by Mragank Shekhar (@MgeeeeK), we have built an interface with xarray that allows you to create spatial weights matrices from xarray.DataArray objects. This means it is possible to build a weights matrix from raster data. We are using numba and multi-core where possible so the implementation is performant and scalable within memory limits. Current weights supported include:

    • libpysal.weights.Rook.from_xarray
    • libpysal.weights.Queen.from_xarray

    In addition, the following methods have been added and are exposed to end users:

    • [RECOMMENDED] da2WSP, to build a thin weights matrix (WSP) from a xarray.DataArray da2W, to build a weights matrix from a xarray.DataArray
    • [RECOMMENDED] wsp2da, to reconstruct a xarray.DataArray object from a thin weights matrix and a pandas.Series (e.g. with mapclassify or esda.Moran_Local outcomes
    • w2da, to reconstruct a xarray.DataArray object from a weights matrix and a pandas.Series (e.g. with mapclassify or esda.Moran_Local outcomes testDataArray, to generate a toy xarray.DataArray object for testing purposes.

    esda

    • Integration of the work of @jeffcsauer's 2020 GSOC project. This adds tons of new statistical estimators, such as:
      • the local heteroskedasticity estimator, esda.LOSH
      • local geary and multivariate geary estimators, esda.Geary_Local and esda.Geary_Local_MV
      • local join counts in univariate, bivariate, and multivariate flavors, esda.Join_Counts_Local, esda.Join_Counts_Local_BV, and esda.Join_Counts_Local_MV.
    • "analytical" moments for Moran's I for replication/comparison to R. Forms are provided in Sokal 1998.

    spreg

    Thanks to the Google Summer of Code 2020 led by paboloestrada, we have added the following functionality:

    • Panel_RE_Lag: random effects panel estimation with spatial lagged dependent variable.
    • Panel_RE_Error: random effects panel estimation with spatial error interaction.
    • Lagrange Multiplier test: classic and robust version.
    • Hausman test.

    spaghetti

    The highlights of this release include a bug fix for how network segments were being split (raised in #526) and additions to several notebooks (spatial network segmentation, caveats, and network-constrained spatial autocorrelation). Also, spaghetti is now tested against Python 3.9.

    tobler

    • interpolation to hexagons using h3f
    • more efficient unary_union in h3f

    segregation

    • segregation measures on network distances

    mapclassify

    • streamlined api

    Detailed Changes by Package

    libpysal

    • #385: Adding raster interface to docs API + notebooks
    • #384: [Doc]: Update raster example notebook and docstrings
    • #383: [WIP]: id_order as a property of WSP class
    • #343: [WIP]: Optimized raster-based weights builder
    • #382: remove dup matplotlib in environment.yml
    • #366: fix typo
    • #376: Bump PYPI version to 4.3.1
    • #381: adjust duplicated rst link in README
    • #380: rst link & syntax issue in README
    • #379: Correct readme.rst
    • #378: Troubleshoot release GHA
    • #377: bump to v4.3.2 for release action
    • #374: Adding deps for examples.
    • #373: update unittests.yml
    • #372: release action is broken due to gh deprecation of env var
    • #371: Fix release action
    • #370: Bump actions/setup-python from v2.1.4 to v2.2.0
    • #364: examples.explain returning 404
    • #368: This address a move in remote datasets
    • #335: ENH: use query_bulk in fuzzy_contiguity
    • #334: BUG: fuzzy_contiguity picks more neighbours than it should
    • #367: ENH: use active geometry in from_dataframe
    • #342: standardizing libpysal/io docs & ibpysal/cg docs
    • #363: Testing matrix
    • #359: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #358: Bump actions/checkout from v2.3.3 to v2.3.4
    • #355: Add codecov.yml for customized reports/testing
    • #357: Add codecov.yml
    • #286: Blacken codebase
    • #291: [WIP] DEV: blacken codebase
    • #354: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #257: street network-based weights
    • #351: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #279: GHA for PyPI release
    • #324: Update PR template
    • #347: ENH: include lower order contiguities in higher_order_sp
    • #313: higher_order weights of <= k
    • #348: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #345: Add xarray to requirements_plus_conda.txt
    • #346: Bump actions/checkout from v2.3.2 to v2.3.3
    • #344: Bump actions/create-release from v1.1.3 to v1.1.4
    • #318: [WIP] : Base Raster Interface
    • #339: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #338: Update actions/checkout requirement to v2.3.2
    • #336: Bump actions/create-release from v1.1.2 to v1.1.3
    • #337: Bump actions/setup-python from v2.0.1 to v2.1.2
    • #326: Updating PULL_REQUEST_TEMPLATE.md
    • #298: Add github action for releasing
    • #316: adding release_and_publish.yml
    • #333: Rook contiguity weights fails when polygons border at two points

    access

    • #10: capitalize Access class
    • #15: Changes case on Access and Datasets classess
    • #2: Ensure that the meta import for access exposes intended classes and functions
    • #3: Confirm access version to freeze in meta
    • #11: sphinx enforced to install w/ packages
    • #12: The package does not depend on scipy
    • #13: Adjust dependenies
    • #1: Release on conda-forge

    esda

    • #160: bump version for release
    • #157: Use tags now in gitcount
    • #139: [ENH][DOC] local join count and LOSH statistics
    • #143: document minimum numba version
    • #159: Moments for Moran's I_i following Sokal 1998
    • #145: [ENH][DOC] local Geary statistics
    • #158: Bump actions/setup-python from v1 to v2.2.1
    • #156: Bump to 2.3.5
    • #155: Bump version
    • #154: Prepping for 2.3.2 release.
    • #142: Issue with Numba < 0.47
    • #146: parallel_crand_ ValueError
    • #147: fix concatenation for random statistics
    • #153: Unexpected LISA results for polygons contained by another polygon
    • #152: Dropping 3.6 from testing.
    • #151: CI: update conda setup
    • #150: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #149: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #144: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #141: Spatial cross-correlations?

    giddy

    inequality

    pointpats

    segregation

    • #159: bump ver
    • #79: add network, util, and profile functions to readthedocs
    • #158: update docs
    • #153: update docstring for decomposition plotting
    • #157: Update release action for deprecation of set env
    • #156: update github actions
    • #155: bump to Version 1.4
    • #154: add docstring to decomp plotting
    • #152: more flexible decomp plotting
    • #151: move testing to gha
    • #148: col names hardcoded in _generate_counterfactual
    • #150: updates docs link
    • #149: Website is not rendering correctly

    spaghetti

    • #572: bump 1.5.5 --> v1.5.6 after syntax error
    • #571: Prep 1.5.4 rel
    • #569: new documentation build GHA schema
    • #568: keep docs/notebooks directory
    • #556: Revert "Python 3.9 testing for CI"
    • #567: documentation maintenance and notebook generation
    • #566: update docs build process
    • #558: Is sphinx_gallery needed for docs?
    • #565: remove sphinx_gallery from reqs
    • #564: Update unittests.yml (GitHub Action)
    • #557: revisit #555 (adding Python 3.9 testing)
    • #555: Python 3.9 testing for CI
    • #552: update GHA workflows and drop Py3.6 Windows testing
    • #551: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #548: Request inclusion for GitHub Discussions.
    • #546: Bump actions/checkout from v2.3.3 to v2.3.4
    • #101: Network K Functionality
    • #543: changed binder's link to reflect the new name of master branches from…
    • #544: Update environment.yml
    • #437: [JOSS] time to start thinking about a JOSS paper
    • #542: minor edits and updated figure references
    • #541: preparing JOSS paper for submission
    • #540: Libpysal req
    • #539: forgot to sync docs for v1.5.1 release
    • #538: Version bump for bug fix (#535)
    • #535: Vertex/Arc ID sorting bug in Network.split_arcs()
    • #537: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #526: Strange count_per_link() results for networks generated using ntw.split_arcs()
    • #536: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #533: Clarify the Network._extractnetwork() creation procedure
    • #534: Add more documentation for Network._extractnetwork()
    • #532: Network creation splits arcs at each node
    • #531: Network parameter extractgraph has no effect
    • #528: Correcting unit typos and errors in notebooks
    • #529: updating landing page images
    • #525: Wrong distance units in split_arcs description
    • #524: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #523: update docstrings and rebuild docs
    • #521: bump Python version for notebooks
    • #520: Bump actions/checkout from v2.3.2 to v2.3.3
    • #519: Bump actions/create-release from v1.1.3 to v1.1.4
    • #518: updating test_nearest_neighbor_distances()
    • #517: remove black check in unittest
    • #516: updating Python version in pre-commit-config.yaml
    • #515: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #514: Bump actions/create-release from v1.1.2 to v1.1.3
    • #513: Bump actions/setup-python from v2.1.1 to v2.1.2
    • #512: Bump actions/checkout from v2.3.1 to v2.3.2

    mgwr

    • #86: version bump
    • #83: check_constant change
    • #85: model.predict => AttributeError: 'list' object has no attribute 'shape'

    spglm

    • #30: update log
    • #29: version bump
    • #28: fix check_constant returns

    spint

    • #26: version/log bump
    • #25: update travis

    spreg

    • #54: Docs To Do
    • #63: Missing classes in API docs
    • #64: notebook and API docs cleanup
    • #60: Add tutorials to docs
    • #56: Travis --> GHA
    • #55: CI with GitHub Actions
    • #53: Migrate from RTD to GH-pages for automated doc builds and hosting
    • #52: update env variable syntax
    • #47: Spatial dependence diagnostics returns nan
    • #46: Random Effects for Spatial Panels
    • #50: Random Effects Panel
    • #38: Add GM_Lag_example notebook
    • #44: Fixed Effects Panel - Spatial Error model
    • #45: Fixed Effects Panel - Spatial Error
    • #49: Not being able to release to PyPI using release_and_publish.yml
    • #48: fix doctest of check_constant

    spvcm

    tobler

    • #129: bump version
    • #128: badges out of date
    • #127: update docs
    • #94: remove accidental notebook commit
    • #121: h3fy example/dep
    • #126: more efficient unary_union in h3fy
    • #124: hexify multipolygons
    • #125: h3fy function fails if input contains multipolygons
    • #123: BUG: fix parallel binning
    • #122: Untitled notebook
    • #104: numba/parallel implementation of _area_tables_binning
    • #112: [WIP] STRTree parallel implementation
    • #119: ENH: add area_join for join based on the largest intersection
    • #101: Pick attribute based on largest intersection
    • #120: add missing deps for example notebooks.
    • #117: maintenance/admin for setup/README/etc.
    • #111: add hexify function
    • #116: Update & enhance syntax/options in GitHub Actions
    • #115: move dasymetric test back into test folder
    • #114: GHA for docs
    • #113: add h3fy to docs
    • #110: REF: use STRtree.query_bulk in _area_tables_binning
    • #109: fix path in release workflow
    • #108: increment version
    • #107: increment version number
    • #106: update gitcount notebook
    • #105: prepare 0.5.0 release
    • #103: dont hardcode geometry name
    • #102: BUG: area_interpolate fails in geometry column not named "geometry"
    • #98: update setup-miniconda
    • #99: Refactor test suite to be more modular for quicker development
    • #11: enhance readme
    • #27: Assume Poisson in the XGBoost approach
    • #82: Reorganize repository
    • #83: Add a tutorial to the documentation site
    • #92: area interpolation question
    • #91: don try to init a df if columns are missing
    • #89: bumping release version and disambiguation of names
    • #90: deps to run notebooks added to requirements_docs.txt
    • #88: fix docs
    • #87: Tutorial
    • #86: reorg notebooks
    • #85: BUG: have to reset_index on geometry after interpolation
    • #70: Faster raster
    • #81: DOC: Update notebooks for api change
    • #72: jupyter example
    • #69: add tests for intensive, extensive, and both
    • #68: Problem running area_interpolate with both intensive and extensive vars
    • #6: Consider usage of data.store_rasters() for examples
    • #80: fix concatenation issue and copy inputs

    mapclassify

    • #103: 2.4.2 prep
    • #102: Update change log and version
    • #104: REGR: invariant array fix
    • #99: BUG: support series in sampled classifiers
    • #98: BUG: FisherJenksSampled returns ValueError if Series is passed as y
    • #101: REGR: fix invariant array regression
    • #100: REGR: UserDefined classifier returns ValueError("Minimum and maximum of input data are equal, cannot create bins.")
    • #91: [DOC] add example nb for new classify API
    • #97: 2.4.0 Release
    • #96: Remove timeout on tests.
    • #92: BUG: HeadTailBreaks RecursionError due to floating point issue
    • #95: Handle recursion error for head tails.
    • #72: Add streamlined API
    • #90: [API] add high-level API mapclassify.classify()
    • #89: BUG: Fix mapclassify #88
    • #94: exclude Python 3.6 for Windows
    • #93: CI: update conda action
    • #88: EqualInterval unclear error when max_y - min_y = 0
    • #87: BUG: fix unordered series in greedy
    • #86: BUG: greedy(strategy='balanced') does not return correct labels

    splot

    spopt

    • #138: fresh cut release?
    • #139: bump version 0.1.0 -> 0.1.1
    • #135: High level description of spopt needed for meta release change log
    • #137: Fixing import structure
    • #118: availability on conda-forge
    • #134: spopt is now on conda-forge
    • #136: bump v0.1.0
    • #69: Installing for Google Collab
    • #119: manual release on PYPI
    • #132: pulp omitted from requirements
    • #133: pulp to reqs
    • #128: spopt sub-sub modules not included on PyPI?
    • #131: Include all packages.
    • #129: add token user to pypi step
    • #126: revert to old pysal-styles.ccs
    • #127: Revert pysal-styles.ccs, etc.
    • #125: Narrative for notebook and handling a single attribute.
    • #124: update docs & README
    • #115: Add Zenodo DOI
    • #116: pre-releases for workflow testing, etc.
    • #123: Add Zenodo DOI and citation
    • #122: update changelog notebook
    • #121: fix changelog notebook
    • #120: bump version to v0.0.2
    • #117: bump initial version down to 0.0.1
    • #113: extra reqs for binder environment + binder badge
    • #114: Update notebook env
    • #111: Polish up and minor docs/reqs fixes
    • #110: various tasks for package admin/cleanup
    • #109: Update sphinxcontrib-bibtex requirement from <2.0.0 to <3.0.0
    • #107: update formatting on Installation
    • #108: Update installation.rst
    • #106: corrections for README
    • #102: README is incomplete
    • #105: change python version in installation.rst
    • #104: add docs badge to README.md
    • #103: yml-->yaml
    • #99: updated docs handling
    • #51: Funding information in README.md
    • #56: adding Support info.
    • #98: Adding support information.
    • #100: add images for funding
    • #97: remove ortools
    • #39: Implementation
    • #33: inventory models for consideration
    • #37: identify models for implementation in region
    • #40: Release Polishing
    • #54: consider moving spenc to spopt
    • #73: attempt 3.9 testing
    • #95: update for 39
    • #96: Why was ci/ changed to .ci/?
    • #89: replace deleted logos
    • #90: Add back images that were deleted
    • #92: revise pictures
    • #94: handle deprecation of discretize in skl.
    • #93: Add spenc as a lib rather than using via an import
    • #91: Environment for development.
    • #64: change < to ==
    • #66: add ward and test_ward
    • #83: update .rst files
    • #88: add description of models
    • #86: update docs and docscr
    • #87: Update GitHub Actions
    • #76: Python error (Ubuntu): Segmentation fault (core dumped)
    • #85: update methods and notebooks
    • #75: add azp into spopt
    • #84: Exclude failing 3.8 on ubuntu due to seg falt.
    • #79: An issue about "module 'spopt' has no attribute 'version'"
    • #81: migrate spenc code
    • #80: add spenc to requirements.txt
    • #68: rename master branch to main branch
    • #74: Updating links from master branch to main branch
    • #60: Issue with PuLP for Python 3.8 on conda-forge
    • #72: Request inclusion for GitHub Discussions.
    • #71: attempt 3.9 testing
    • #70: Issues caused by GitHub Actions: Deprecating set-env and add-path commands
    • #67: add spenc and test_spenc
    • #65: skater
    • #62: removing python-mip language from REAMDE
    • #63: an error with the maxp code
    • #59: adding .github/dependabot.yml
    • #58: Setup correction
    • #55: Updating README.md & adding CONTRIBUTING.md

    pysal

    • #1217: add spopt description in changelog
    • #1215: 2.4.0rc2
    • #1214: 2.4.0rc2
    • #1211: AttributeError: module 'pysal' has no attribute 'common'
    • #1213: Update changelog instructions
    • #1212: 2.4.0rc1
    • #1169: Import problem in Google Colab
    • #1137: conda install does not install plus requirements
    • #1139: Raise warnings on use, not import
    • #1133: AttributeError: module 'pysal' has no attribute 'open' -- Python3 on Fedora
    • #1092: integrate/incorporate geodacenter/spatial_access
    • #1179: Migrate CI to GHA and pytest
    • #1186: draft rc1 release notes
    • #1154: multiplatform testing
    • #1208: spopt now on conda-forge
    • #1209: Update changelog building and grab spopt from conda-forge not pip
    • #1210: wrong link to access in v2.3.0 Release Notes
    • #1207: removing codecov action & streamlining CI
    • #1205: remove codecov
    • #1206: Update README for spopt and new project homepage
    • #1202: Update tooling to handle master or main branches in ecosystem
    • #1204: 2.4.0
    • #1203: updating urllib3 to 1.26 minimum
    • #1201: Python 3.7 pip install has an error
    • #1200: ModuleNotFoundError: No module named 'pysal.model.mgwr.gwr'
    • #1185: dependency conflicts on 3.8
    • #1060: Handling coincident points
    • #678: W stitch
    • #1146: Improved documentation...
    • #1196: GM_Lag
    • #1195: splot seaborn failure
    • #1193: Image missing from readme on pypi
    • #1194: updating image link in README.md
    • #1192: DOCS: 2.3.0
    • #1191: 2.3.0
    • #1189: Subpackages

    Contributors

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

    • Andrew Annex
    • Dani Arribas-Bel
    • Eli Knaap
    • James Gaboardi
    • Jamie Saxon
    • Jeffcsauer
    • Jkoschinsky
    • Levi John Wolf
    • Martin Fleischmann
    • Mragank Shekhar
    • Omar
    • Pabloestradac
    • Pedro Amaral
    • Rwei5
    • Serge Rey
    • Stefanie Lumnitz
    • Taylor Oshan
    • Vidal Anguiano Jr
    • Wei Kang
    • Xin Feng
    • Ziqi Li
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0-rc2(Jan 24, 2021)

    PySAL 2.4.0-rc2 reflects 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 1065 commits that closed 309 issues, together with 117 pull requests since our last release on 2020-07-29.

    Major Highlights of PySAL 2.4.0

    Entirely New Packages

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

    pysal/spopt

    Providing methods for solving optimization problems with spatial data.

    Changes by Package

    libpysal

    • #381: adjust duplicated rst link in README
    • #380: rst link & syntax issue in README
    • #379: Correct readme.rst
    • #378: Troubleshoot release GHA
    • #377: bump to v4.3.2 for release action
    • #374: Adding deps for examples.
    • #373: update unittests.yml
    • #372: release action is broken due to gh deprecation of env var
    • #371: Fix release action
    • #370: Bump actions/setup-python from v2.1.4 to v2.2.0
    • #364: examples.explain returning 404
    • #368: This address a move in remote datasets
    • #335: ENH: use query_bulk in fuzzy_contiguity
    • #334: BUG: fuzzy_contiguity picks more neighbours than it should
    • #367: ENH: use active geometry in from_dataframe
    • #342: standardizing libpysal/io docs & ibpysal/cg docs
    • #363: Testing matrix
    • #359: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #358: Bump actions/checkout from v2.3.3 to v2.3.4
    • #355: Add codecov.yml for customized reports/testing
    • #357: Add codecov.yml
    • #286: Blacken codebase
    • #291: [WIP] DEV: blacken codebase
    • #354: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #257: street network-based weights
    • #351: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #279: GHA for PyPI release
    • #324: Update PR template
    • #347: ENH: include lower order contiguities in higher_order_sp
    • #313: higher_order weights of <= k
    • #348: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #345: Add xarray to requirements_plus_conda.txt
    • #346: Bump actions/checkout from v2.3.2 to v2.3.3
    • #344: Bump actions/create-release from v1.1.3 to v1.1.4
    • #318: [WIP] : Base Raster Interface
    • #339: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #338: Update actions/checkout requirement to v2.3.2
    • #336: Bump actions/create-release from v1.1.2 to v1.1.3
    • #337: Bump actions/setup-python from v2.0.1 to v2.1.2
    • #326: Updating PULL_REQUEST_TEMPLATE.md
    • #298: Add github action for releasing
    • #316: adding release_and_publish.yml
    • #333: Rook contiguity weights fails when polygons border at two points

    access

    esda

    • Integration of the work of @jeffcsauer's 2020 GSOC project. This adds tons of new statistical estimators, such as:
      • the local heteroskedasticity estimator, esda.LOSH
      • local geary and multivariate geary estimators, esda.Geary_Local and esda.Geary_Local_MV
      • local join counts in univariate, bivariate, and multivariate flavors, esda.Join_Counts_Local, esda.Join_Counts_Local_BV, and esda.Join_Counts_Local_MV.
    • "analytical" moments for Moran's I for replication/comparison to R. Forms are provided in Sokal 1998.
    • #160: bump version for release
    • #157: Use tags now in gitcount
    • #139: [ENH][DOC] local join count and LOSH statistics
    • #143: document minimum numba version
    • #159: Moments for Moran's I_i following Sokal 1998
    • #145: [ENH][DOC] local Geary statistics
    • #158: Bump actions/setup-python from v1 to v2.2.1
    • #156: Bump to 2.3.5
    • #155: Bump version
    • #154: Prepping for 2.3.2 release.
    • #142: Issue with Numba < 0.47
    • #146: parallel_crand_ ValueError
    • #147: fix concatenation for random statistics
    • #153: Unexpected LISA results for polygons contained by another polygon
    • #152: Dropping 3.6 from testing.
    • #151: CI: update conda setup
    • #150: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #149: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #144: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #141: Spatial cross-correlations?

    giddy

    inequality

    pointpats

    segregation

    • #159: bump ver
    • #79: add network, util, and profile functions to readthedocs
    • #158: update docs
    • #153: update docstring for decomposition plotting
    • #157: Update release action for deprecation of set env
    • #156: update github actions
    • #155: bump to Version 1.4
    • #154: add docstring to decomp plotting
    • #152: more flexible decomp plotting
    • #151: move testing to gha
    • #148: col names hardcoded in _generate_counterfactual
    • #150: updates docs link
    • #149: Website is not rendering correctly

    spaghetti

    The highlights of this release include a bug fix for how network segments were being split (raised in #526) and additions to several notebooks (spatial network segmentation, caveats, and network-constrained spatial autocorrelation). Also, spaghetti is now tested against Python 3.9.

    • #572: bump 1.5.5 --> v1.5.6 after syntax error
    • #571: Prep 1.5.4 rel
    • #569: new documentation build GHA schema
    • #568: keep docs/notebooks directory
    • #556: Revert "Python 3.9 testing for CI"
    • #567: documentation maintenance and notebook generation
    • #566: update docs build process
    • #558: Is sphinx_gallery needed for docs?
    • #565: remove sphinx_gallery from reqs
    • #564: Update unittests.yml (GitHub Action)
    • #557: revisit #555 (adding Python 3.9 testing)
    • #555: Python 3.9 testing for CI
    • #552: update GHA workflows and drop Py3.6 Windows testing
    • #551: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #548: Request inclusion for GitHub Discussions.
    • #546: Bump actions/checkout from v2.3.3 to v2.3.4
    • #101: Network K Functionality
    • #543: changed binder's link to reflect the new name of master branches from…
    • #544: Update environment.yml
    • #437: [JOSS] time to start thinking about a JOSS paper
    • #542: minor edits and updated figure references
    • #541: preparing JOSS paper for submission
    • #540: Libpysal req
    • #539: forgot to sync docs for v1.5.1 release
    • #538: Version bump for bug fix (#535)
    • #535: Vertex/Arc ID sorting bug in Network.split_arcs()
    • #537: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #526: Strange count_per_link() results for networks generated using ntw.split_arcs()
    • #536: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #533: Clarify the Network._extractnetwork() creation procedure
    • #534: Add more documentation for Network._extractnetwork()
    • #532: Network creation splits arcs at each node
    • #531: Network parameter extractgraph has no effect
    • #528: Correcting unit typos and errors in notebooks
    • #529: updating landing page images
    • #525: Wrong distance units in split_arcs description
    • #524: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #523: update docstrings and rebuild docs
    • #521: bump Python version for notebooks
    • #520: Bump actions/checkout from v2.3.2 to v2.3.3
    • #519: Bump actions/create-release from v1.1.3 to v1.1.4
    • #518: updating test_nearest_neighbor_distances()
    • #517: remove black check in unittest
    • #516: updating Python version in pre-commit-config.yaml
    • #515: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #514: Bump actions/create-release from v1.1.2 to v1.1.3
    • #513: Bump actions/setup-python from v2.1.1 to v2.1.2
    • #512: Bump actions/checkout from v2.3.1 to v2.3.2

    mgwr

    • #86: version bump
    • #83: check_constant change
    • #85: model.predict => AttributeError: 'list' object has no attribute 'shape'

    spglm

    • #30: update log
    • #29: version bump
    • #28: fix check_constant returns

    spint

    • #26: version/log bump
    • #25: update travis

    spreg

    • #54: Docs To Do
    • #63: Missing classes in API docs
    • #64: notebook and API docs cleanup
    • #60: Add tutorials to docs
    • #56: Travis --> GHA
    • #55: CI with GitHub Actions
    • #53: Migrate from RTD to GH-pages for automated doc builds and hosting
    • #52: update env variable syntax
    • #47: Spatial dependence diagnostics returns nan
    • #46: Random Effects for Spatial Panels
    • #50: Random Effects Panel
    • #38: Add GM_Lag_example notebook
    • #44: Fixed Effects Panel - Spatial Error model
    • #45: Fixed Effects Panel - Spatial Error
    • #49: Not being able to release to PyPI using release_and_publish.yml
    • #48: fix doctest of check_constant

    spvcm

    tobler

    • #129: bump version
    • #128: badges out of date
    • #127: update docs
    • #94: remove accidental notebook commit
    • #121: h3fy example/dep
    • #126: more efficient unary_union in h3fy
    • #124: hexify multipolygons
    • #125: h3fy function fails if input contains multipolygons
    • #123: BUG: fix parallel binning
    • #122: Untitled notebook
    • #104: numba/parallel implementation of _area_tables_binning
    • #112: [WIP] STRTree parallel implementation
    • #119: ENH: add area_join for join based on the largest intersection
    • #101: Pick attribute based on largest intersection
    • #120: add missing deps for example notebooks.
    • #117: maintenance/admin for setup/README/etc.
    • #111: add hexify function
    • #116: Update & enhance syntax/options in GitHub Actions
    • #115: move dasymetric test back into test folder
    • #114: GHA for docs
    • #113: add h3fy to docs
    • #110: REF: use STRtree.query_bulk in _area_tables_binning
    • #109: fix path in release workflow
    • #108: increment version
    • #107: increment version number
    • #106: update gitcount notebook
    • #105: prepare 0.5.0 release
    • #103: dont hardcode geometry name
    • #102: BUG: area_interpolate fails in geometry column not named "geometry"
    • #98: update setup-miniconda
    • #99: Refactor test suite to be more modular for quicker development
    • #11: enhance readme
    • #27: Assume Poisson in the XGBoost approach
    • #82: Reorganize repository
    • #83: Add a tutorial to the documentation site
    • #92: area interpolation question
    • #91: don try to init a df if columns are missing
    • #89: bumping release version and disambiguation of names
    • #90: deps to run notebooks added to requirements_docs.txt
    • #88: fix docs
    • #87: Tutorial
    • #86: reorg notebooks
    • #85: BUG: have to reset_index on geometry after interpolation
    • #70: Faster raster
    • #81: DOC: Update notebooks for api change
    • #72: jupyter example
    • #69: add tests for intensive, extensive, and both
    • #68: Problem running area_interpolate with both intensive and extensive vars
    • #6: Consider usage of data.store_rasters() for examples
    • #80: fix concatenation issue and copy inputs

    mapclassify

    • #103: 2.4.2 prep
    • #102: Update change log and version
    • #104: REGR: invariant array fix
    • #99: BUG: support series in sampled classifiers
    • #98: BUG: FisherJenksSampled returns ValueError if Series is passed as y
    • #101: REGR: fix invariant array regression
    • #100: REGR: UserDefined classifier returns ValueError("Minimum and maximum of input data are equal, cannot create bins.")
    • #91: [DOC] add example nb for new classify API
    • #97: 2.4.0 Release
    • #96: Remove timeout on tests.
    • #92: BUG: HeadTailBreaks RecursionError due to floating point issue
    • #95: Handle recursion error for head tails.
    • #72: Add streamlined API
    • #90: [API] add high-level API mapclassify.classify()
    • #89: BUG: Fix mapclassify #88
    • #94: exclude Python 3.6 for Windows
    • #93: CI: update conda action
    • #88: EqualInterval unclear error when max_y - min_y = 0
    • #87: BUG: fix unordered series in greedy
    • #86: BUG: greedy(strategy='balanced') does not return correct labels

    splot

    spopt

    • #136: bump v0.1.0
    • #69: Installing for Google Collab
    • #119: manual release on PYPI
    • #132: pulp omitted from requirements
    • #133: pulp to reqs
    • #128: spopt sub-sub modules not included on PyPI?
    • #131: Include all packages.
    • #129: add token user to pypi step
    • #126: revert to old pysal-styles.ccs
    • #127: Revert pysal-styles.ccs, etc.
    • #125: Narrative for notebook and handling a single attribute.
    • #124: update docs & README
    • #115: Add Zenodo DOI
    • #116: pre-releases for workflow testing, etc.
    • #123: Add Zenodo DOI and citation
    • #122: update changelog notebook
    • #121: fix changelog notebook
    • #120: bump version to v0.0.2
    • #117: bump initial version down to 0.0.1
    • #113: extra reqs for binder environment + binder badge
    • #114: Update notebook env
    • #111: Polish up and minor docs/reqs fixes
    • #110: various tasks for package admin/cleanup
    • #109: Update sphinxcontrib-bibtex requirement from <2.0.0 to <3.0.0
    • #107: update formatting on Installation
    • #108: Update installation.rst
    • #106: corrections for README
    • #102: README is incomplete
    • #105: change python version in installation.rst
    • #104: add docs badge to README.md
    • #103: yml-->yaml
    • #99: updated docs handling
    • #51: Funding information in README.md
    • #56: adding Support info.
    • #98: Adding support information.
    • #100: add images for funding
    • #97: remove ortools
    • #39: Implementation
    • #33: inventory models for consideration
    • #37: identify models for implementation in region
    • #40: Release Polishing
    • #54: consider moving spenc to spopt
    • #73: attempt 3.9 testing
    • #95: update for 39
    • #96: Why was ci/ changed to .ci/?
    • #89: replace deleted logos
    • #90: Add back images that were deleted
    • #92: revise pictures
    • #94: handle deprecation of discretize in skl.
    • #93: Add spenc as a lib rather than using via an import
    • #91: Environment for development.
    • #64: change < to ==
    • #66: add ward and test_ward
    • #83: update .rst files
    • #88: add description of models
    • #86: update docs and docscr
    • #87: Update GitHub Actions
    • #76: Python error (Ubuntu): Segmentation fault (core dumped)
    • #85: update methods and notebooks
    • #75: add azp into spopt
    • #84: Exclude failing 3.8 on ubuntu due to seg falt.
    • #79: An issue about "module 'spopt' has no attribute 'version'"
    • #81: migrate spenc code
    • #80: add spenc to requirements.txt
    • #68: rename master branch to main branch
    • #74: Updating links from master branch to main branch
    • #60: Issue with PuLP for Python 3.8 on conda-forge
    • #72: Request inclusion for GitHub Discussions.
    • #71: attempt 3.9 testing
    • #70: Issues caused by GitHub Actions: Deprecating set-env and add-path commands
    • #67: add spenc and test_spenc
    • #65: skater
    • #62: removing python-mip language from REAMDE
    • #63: an error with the maxp code
    • #59: adding .github/dependabot.yml
    • #58: Setup correction
    • #55: Updating README.md & adding CONTRIBUTING.md

    pysal

    Contributors

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

    • Andrew Annex
    • Dani Arribas-Bel
    • Eli Knaap
    • James Gaboardi
    • Jcs Laptop
    • Jeffcsauer
    • Levi John Wolf
    • Martin Fleischmann
    • Mgeeeek
    • Omar
    • Pabloestradac
    • Pedro Amaral
    • Rwei5
    • Serge Rey
    • Stefanie Lumnitz
    • Taylor Oshan
    • Wei Kang
    • Xin Feng
    • Ziqi Li
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0-rc1(Jan 20, 2021)

    PySAL 2.4.0-rc1 reflects 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 980 commits that closed 277 issues, together with 95 pull requests since our last release on 2020-07-29.

    Major Highlights of PySAL 2.4.0

    Entirely New Packages

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

    pysal/spopt

    Providing methods for solving optimization problems with spatial data.

    Changes by Package

    libpysal

    • #381: adjust duplicated rst link in README
    • #380: rst link & syntax issue in README
    • #379: Correct readme.rst
    • #378: Troubleshoot release GHA
    • #377: bump to v4.3.2 for release action
    • #374: Adding deps for examples.
    • #373: update unittests.yml
    • #372: release action is broken due to gh deprecation of env var
    • #371: Fix release action
    • #370: Bump actions/setup-python from v2.1.4 to v2.2.0
    • #364: examples.explain returning 404
    • #368: This address a move in remote datasets
    • #335: ENH: use query_bulk in fuzzy_contiguity
    • #334: BUG: fuzzy_contiguity picks more neighbours than it should
    • #367: ENH: use active geometry in from_dataframe
    • #342: standardizing libpysal/io docs & ibpysal/cg docs
    • #363: Testing matrix
    • #359: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #358: Bump actions/checkout from v2.3.3 to v2.3.4
    • #355: Add codecov.yml for customized reports/testing
    • #357: Add codecov.yml
    • #286: Blacken codebase
    • #291: [WIP] DEV: blacken codebase
    • #354: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #257: street network-based weights
    • #351: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #279: GHA for PyPI release
    • #324: Update PR template
    • #347: ENH: include lower order contiguities in higher_order_sp
    • #313: higher_order weights of <= k
    • #348: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #345: Add xarray to requirements_plus_conda.txt
    • #346: Bump actions/checkout from v2.3.2 to v2.3.3
    • #344: Bump actions/create-release from v1.1.3 to v1.1.4
    • #318: [WIP] : Base Raster Interface
    • #339: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #338: Update actions/checkout requirement to v2.3.2
    • #336: Bump actions/create-release from v1.1.2 to v1.1.3
    • #337: Bump actions/setup-python from v2.0.1 to v2.1.2
    • #326: Updating PULL_REQUEST_TEMPLATE.md
    • #298: Add github action for releasing
    • #316: adding release_and_publish.yml
    • #333: Rook contiguity weights fails when polygons border at two points

    access

    esda

    • #156: Bump to 2.3.5
    • #155: Bump version
    • #154: Prepping for 2.3.2 release.
    • #142: Issue with Numba < 0.47
    • #146: parallel_crand_ ValueError
    • #147: fix concatenation for random statistics
    • #153: Unexpected LISA results for polygons contained by another polygon
    • #152: Dropping 3.6 from testing.
    • #151: CI: update conda setup
    • #150: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #149: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #144: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #141: Spatial cross-correlations?

    giddy

    inequality

    pointpats

    segregation

    • #159: bump ver
    • #79: add network, util, and profile functions to readthedocs
    • #158: update docs
    • #153: update docstring for decomposition plotting
    • #157: Update release action for deprecation of set env
    • #156: update github actions
    • #155: bump to Version 1.4
    • #154: add docstring to decomp plotting
    • #152: more flexible decomp plotting
    • #151: move testing to gha
    • #148: col names hardcoded in _generate_counterfactual
    • #150: updates docs link
    • #149: Website is not rendering correctly

    spaghetti

    • #572: bump 1.5.5 --> v1.5.6 after syntax error
    • #571: Prep 1.5.4 rel
    • #569: new documentation build GHA schema
    • #568: keep docs/notebooks directory
    • #556: Revert "Python 3.9 testing for CI"
    • #567: documentation maintenance and notebook generation
    • #566: update docs build process
    • #558: Is sphinx_gallery needed for docs?
    • #565: remove sphinx_gallery from reqs
    • #564: Update unittests.yml (GitHub Action)
    • #557: revisit #555 (adding Python 3.9 testing)
    • #555: Python 3.9 testing for CI
    • #552: update GHA workflows and drop Py3.6 Windows testing
    • #551: Bump codecov/codecov-action from v1.0.14 to v1.0.15
    • #548: Request inclusion for GitHub Discussions.
    • #546: Bump actions/checkout from v2.3.3 to v2.3.4
    • #101: Network K Functionality
    • #543: changed binder's link to reflect the new name of master branches from…
    • #544: Update environment.yml
    • #437: [JOSS] time to start thinking about a JOSS paper
    • #542: minor edits and updated figure references
    • #541: preparing JOSS paper for submission
    • #540: Libpysal req
    • #539: forgot to sync docs for v1.5.1 release
    • #538: Version bump for bug fix (#535)
    • #535: Vertex/Arc ID sorting bug in Network.split_arcs()
    • #537: Bump codecov/codecov-action from v1.0.13 to v1.0.14
    • #526: Strange count_per_link() results for networks generated using ntw.split_arcs()
    • #536: Bump actions/setup-python from v2.1.3 to v2.1.4
    • #533: Clarify the Network._extractnetwork() creation procedure
    • #534: Add more documentation for Network._extractnetwork()
    • #532: Network creation splits arcs at each node
    • #531: Network parameter extractgraph has no effect
    • #528: Correcting unit typos and errors in notebooks
    • #529: updating landing page images
    • #525: Wrong distance units in split_arcs description
    • #524: Bump actions/setup-python from v2.1.2 to v2.1.3
    • #523: update docstrings and rebuild docs
    • #521: bump Python version for notebooks
    • #520: Bump actions/checkout from v2.3.2 to v2.3.3
    • #519: Bump actions/create-release from v1.1.3 to v1.1.4
    • #518: updating test_nearest_neighbor_distances()
    • #517: remove black check in unittest
    • #516: updating Python version in pre-commit-config.yaml
    • #515: Bump codecov/codecov-action from v1.0.12 to v1.0.13
    • #514: Bump actions/create-release from v1.1.2 to v1.1.3
    • #513: Bump actions/setup-python from v2.1.1 to v2.1.2
    • #512: Bump actions/checkout from v2.3.1 to v2.3.2

    mgwr

    • #86: version bump
    • #83: check_constant change
    • #85: model.predict => AttributeError: 'list' object has no attribute 'shape'

    spglm

    • #30: update log
    • #29: version bump
    • #28: fix check_constant returns

    spint

    • #26: version/log bump
    • #25: update travis

    spreg

    • #54: Docs To Do
    • #63: Missing classes in API docs
    • #64: notebook and API docs cleanup
    • #60: Add tutorials to docs
    • #56: Travis --> GHA
    • #55: CI with GitHub Actions
    • #53: Migrate from RTD to GH-pages for automated doc builds and hosting
    • #52: update env variable syntax
    • #47: Spatial dependence diagnostics returns nan
    • #46: Random Effects for Spatial Panels
    • #50: Random Effects Panel
    • #38: Add GM_Lag_example notebook
    • #44: Fixed Effects Panel - Spatial Error model
    • #45: Fixed Effects Panel - Spatial Error
    • #49: Not being able to release to PyPI using release_and_publish.yml
    • #48: fix doctest of check_constant

    spvcm

    tobler

    • #109: fix path in release workflow
    • #108: increment version
    • #107: increment version number
    • #106: update gitcount notebook
    • #105: prepare 0.5.0 release
    • #103: dont hardcode geometry name
    • #102: BUG: area_interpolate fails in geometry column not named "geometry"
    • #98: update setup-miniconda
    • #99: Refactor test suite to be more modular for quicker development
    • #11: enhance readme
    • #27: Assume Poisson in the XGBoost approach
    • #82: Reorganize repository
    • #83: Add a tutorial to the documentation site
    • #92: area interpolation question
    • #91: don try to init a df if columns are missing
    • #89: bumping release version and disambiguation of names
    • #90: deps to run notebooks added to requirements_docs.txt
    • #88: fix docs
    • #87: Tutorial
    • #86: reorg notebooks
    • #85: BUG: have to reset_index on geometry after interpolation
    • #70: Faster raster
    • #81: DOC: Update notebooks for api change
    • #72: jupyter example
    • #69: add tests for intensive, extensive, and both
    • #68: Problem running area_interpolate with both intensive and extensive vars
    • #6: Consider usage of data.store_rasters() for examples
    • #80: fix concatenation issue and copy inputs

    mapclassify

    • #103: 2.4.2 prep
    • #102: Update change log and version
    • #104: REGR: invariant array fix
    • #99: BUG: support series in sampled classifiers
    • #98: BUG: FisherJenksSampled returns ValueError if Series is passed as y
    • #101: REGR: fix invariant array regression
    • #100: REGR: UserDefined classifier returns ValueError("Minimum and maximum of input data are equal, cannot create bins.")
    • #91: [DOC] add example nb for new classify API
    • #97: 2.4.0 Release
    • #96: Remove timeout on tests.
    • #92: BUG: HeadTailBreaks RecursionError due to floating point issue
    • #95: Handle recursion error for head tails.
    • #72: Add streamlined API
    • #90: [API] add high-level API mapclassify.classify()
    • #89: BUG: Fix mapclassify #88
    • #94: exclude Python 3.6 for Windows
    • #93: CI: update conda action
    • #88: EqualInterval unclear error when max_y - min_y = 0
    • #87: BUG: fix unordered series in greedy
    • #86: BUG: greedy(strategy='balanced') does not return correct labels

    splot

    spopt

    • #132: pulp omitted from requirements
    • #133: pulp to reqs
    • #128: spopt sub-sub modules not included on PyPI?
    • #131: Include all packages.
    • #129: add token user to pypi step
    • #126: revert to old pysal-styles.ccs
    • #127: Revert pysal-styles.ccs, etc.
    • #125: Narrative for notebook and handling a single attribute.
    • #124: update docs & README
    • #115: Add Zenodo DOI
    • #116: pre-releases for workflow testing, etc.
    • #123: Add Zenodo DOI and citation
    • #122: update changelog notebook
    • #121: fix changelog notebook
    • #120: bump version to v0.0.2
    • #117: bump initial version down to 0.0.1
    • #113: extra reqs for binder environment + binder badge
    • #114: Update notebook env
    • #111: Polish up and minor docs/reqs fixes
    • #110: various tasks for package admin/cleanup
    • #109: Update sphinxcontrib-bibtex requirement from <2.0.0 to <3.0.0
    • #107: update formatting on Installation
    • #108: Update installation.rst
    • #106: corrections for README
    • #102: README is incomplete
    • #105: change python version in installation.rst
    • #104: add docs badge to README.md
    • #103: yml-->yaml
    • #99: updated docs handling
    • #51: Funding information in README.md
    • #56: adding Support info.
    • #98: Adding support information.
    • #100: add images for funding
    • #97: remove ortools
    • #39: Implementation
    • #33: inventory models for consideration
    • #37: identify models for implementation in region
    • #40: Release Polishing
    • #54: consider moving spenc to spopt
    • #73: attempt 3.9 testing
    • #95: update for 39
    • #96: Why was ci/ changed to .ci/?
    • #89: replace deleted logos
    • #90: Add back images that were deleted
    • #92: revise pictures
    • #94: handle deprecation of discretize in skl.
    • #93: Add spenc as a lib rather than using via an import
    • #91: Environment for development.
    • #64: change < to ==
    • #66: add ward and test_ward
    • #83: update .rst files
    • #88: add description of models
    • #86: update docs and docscr
    • #87: Update GitHub Actions
    • #76: Python error (Ubuntu): Segmentation fault (core dumped)
    • #85: update methods and notebooks
    • #75: add azp into spopt
    • #84: Exclude failing 3.8 on ubuntu due to seg falt.
    • #79: An issue about "module 'spopt' has no attribute 'version'"
    • #81: migrate spenc code
    • #80: add spenc to requirements.txt
    • #68: rename master branch to main branch
    • #74: Updating links from master branch to main branch
    • #60: Issue with PuLP for Python 3.8 on conda-forge
    • #72: Request inclusion for GitHub Discussions.
    • #71: attempt 3.9 testing
    • #70: Issues caused by GitHub Actions: Deprecating set-env and add-path commands
    • #67: add spenc and test_spenc
    • #65: skater
    • #62: removing python-mip language from REAMDE
    • #63: an error with the maxp code
    • #59: adding .github/dependabot.yml
    • #58: Setup correction
    • #55: Updating README.md & adding CONTRIBUTING.md

    pysal

    Contributors

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

    • Andrew Annex
    • Dani Arribas-Bel
    • Eli Knaap
    • James Gaboardi
    • Jcs Laptop
    • Levi John Wolf
    • Martin Fleischmann
    • Mgeeeek
    • Omar
    • Pabloestradac
    • Pedro Amaral
    • Rwei5
    • Serge Rey
    • Stefanie Lumnitz
    • Taylor Oshan
    • Wei Kang
    • Xin Feng
    • Ziqi Li
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Jul 30, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0rc1(Jul 29, 2020)

    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

    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

    pysal

    Summary Statistics

    Package Activity

    package commits total issues pulls
    spaghetti 412 78 47
    libpysal 190 55 25
    esda 160 27 16
    mapclassify 114 32 17
    giddy 103 28 25
    pointpats 100 9 7
    access 79 6 5
    tobler 64 26 16
    pysal 49 0 0
    segregation 24 5 1
    spreg 23 3 3
    splot 17 4 4
    mgwr 8 0 0
    inequality 0 0 0
    spglm 0 0 0
    spint 0 0 0
    spvcm 0 0 0

    Contributor Activity

    commits
    Arfon Smith 1
    Bryan Bennett 1
    Dani Arribas-Bel 39
    Dependabot[Bot] 1
    Eli Knaap 100
    Elliott Sales De Andrade 4
    James Gaboardi 454
    Jamie Saxon 41
    Jeffery Sauer 2
    Jkoschinsky 6
    Levi John Wolf 153
    Martin Fleischmann 10
    Pattyf 1
    Pedro Amaral 6
    Serge 10
    Serge Rey 252
    Stefanie Lumnitz 11
    Sugam Srivastava 4
    Vidal-Anguiano 32
    Wagner 2
    Wei Kang 115

    Contributor by Package Activity

    Serge Rey James Gaboardi Martin Fleischmann Dani Arribas-Bel Levi John Wolf Bryan Bennett Jeffery Sauer Elliott Sales De Andrade Wagner Jkoschinsky Jamie Saxon Vidal-Anguiano Serge Wei Kang Dependabot[Bot] Eli Knaap Sugam Srivastava Pedro Amaral Pattyf Stefanie Lumnitz Arfon Smith
    libpysal 88 58 2 1 16 1 1 4 2 0 0 0 0 0 0 0 0 0 0 0 0
    access 0 0 0 0 0 0 0 0 0 6 41 32 0 0 0 0 0 0 0 0 0
    esda 35 13 0 38 61 0 1 0 0 0 0 0 5 1 1 1 0 0 0 0 0
    giddy 1 0 0 0 0 0 0 0 0 0 0 0 0 102 0 0 0 0 0 0 0
    inequality 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    pointpats 16 0 0 0 75 0 0 0 0 0 0 0 1 4 0 0 4 0 0 0 0
    segregation 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 0 0 0 0 0
    spaghetti 2 357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    mgwr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    spglm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    spint 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    spreg 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 6 0 0 0
    spvcm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    tobler 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 0 0 1 0 0
    mapclassify 84 20 8 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0
    splot 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 1
    pysal 25 5 0 0 0 0 0 0 0 0 0 0 4 8 0 7 0 0 0 0 0
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Feb 13, 2020)

    PySAL v<2.2.0>, 2020-02-13

    PySAL 2.2.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 1122 commits that closed 307 issues, together with 192 pull requests since our last release on 2019-07-29.

    Major Highlights of PySAL 2.2.0

    Meta-package loses some serious weight

    PySAL is no longer a source release meta-package, but instead specifies the packages in the PySAL ecosystem as dependencies. This means that installing the pysal meta-package will ensure that all the ecosystem packages are installed.

    Entirely New Packages

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

    • tobler Areal interpolation and dasymetric mapping.

    Enhancements to Existing Packages

    • Refactoring of pysal/libpysal to use remote example data sets which reduces the footprint of the source install from 25mb to under 3mb. Remote examples can now be examined with interactive maps if being run in Jupyter Notebooks.
    • pysal/mapclassify: Choropleth legend formatting has been enhanced to permit more granular control of class labels.
    • pysal/spaghetti: This release includes a major overhaul to the API documentation and notebooks/tutorials.
    • pysal/splot: This release includes additional documentation, in-depth tutorials and pointers how to solve common installation issues. splot has been submitted and will soon be available as an article in the journal of open source software.
    • pysal/giddy: Two enhancements: (1) a new sequence module consisting of several alignment-based sequence analysis methods (example notebook) (2) extend Markov methods to deal with non-ergodic Markov chains. This release also includes a bug fix for the estimation of kendall's Tau and its spatial extension when ties are present.

    Changes by Package

    libpysal

    • #176: Fetch
    • #238: REL: version bump for bug fix release
    • #236: test_map breakage due to pandas 1.0 deprecation of ufunc.outer
    • #237: BUG: ufunc.outer deprecated
    • #230: raise warning when islands are used in to_adjlist
    • #113: Some example datasets are missing documentation
    • #229: DOC: Cleaning up docs and docsr for tutorial
    • #165: to_adjlist(remove_symmetric=True) fails on string-indexed weights.
    • #204: AttributeError: 'Queen' object has no attribute 'silent_island_warning'
    • #226: 4.2.1
    • #228: Revert "4.2.1"
    • #227: 4.2.1
    • #225: DOC: images for notebooks
    • #224: 4.2.1
    • #223: 4.2.1
    • #221: duplicate pypi package badge
    • #222: 4.2.1
    • #220: REL: 4.2.1
    • #214: libpysal 4.2.0 won't import on Windows
    • #215: libpysal 4.2.0 Windows import issue
    • #212: Constructing contiguity spatial weights using from_dataframe and from_shapefile could give different results
    • #213: fix bug 212
    • #216: alpha_shapes docs not rendering
    • #217: corrected docstrings in cg.alpha_shapes.py
    • #211: Updating requirements
    • #174: Big tarball
    • #209: DOC: math rendering in sphinx, and members included for W
    • #125: metadata for examples
    • #210: (docs) automatically generate docstrings for class members
    • #207: (docs) keep file .nojekyll in docs when syncing between docs/ and docsrc/_build/html/
    • #206: (bug) replace silent_island_warning with silence_warnings for weights
    • #205: Documentation does not work
    • #203: updating cg.standalone.distance_matrix docs
    • #195: error message in cg.standalone.distance_matrix()
    • #202: improved docs in io.util.shapefile
    • #201: [ENH] moving jit import to common.py / improve documentation
    • #199: rearrange shapely import in cg.alpha_shapes
    • #200: fix quasi-redundant import of shapely
    • #196: Remove more relics (from pre-reorg PySAL)
    • #198: [BUG] correcting shapely import bug
    • #197: [BUG] alpha_shapes/shapely import error
    • #129: decorating functions with requires()
    • #192: removing iteritems decorator
    • #193: [WIP] removing unused relics
    • #194: README.txt refers to pre-reorg PySAL
    • #147: remove distribute_setup.py?
    • #128: requires() decorator for libpysal.cg.alpha_shapes
    • #191: necessity of libpysal.common.iteritems()?
    • #189: Voronoi results in weights of different shape than input points
    • #190: BUG: alpha_shape_auto can fail to contain all points in the set.
    • #186: Cast arrays as lists (Issue 185)
    • #185: WSP(sparse).to_W() has arrays in weights,neighbors dictionaries, rather than lists.
    • #188: BUG: Update for geopandas use of GeometryArray
    • #187: Updated documentation error (link incorrectly specified) in README.rst
    • #182: Docs: badges for pypi
    • #178: development guidelines link failure
    • #181: DOCS: moving off rtd
    • #180: REL 4.1.1 bf release
    • #179: BUG: Updating manifest for additional requirements files
    • #169: libpysal 4.1.0 is not released on pypi or conda-forge
    • #131: addressing DeprecationWarning: fromstring()
    • #132: addressing DeprecationWarning: fromstring()
    • #175: ENH: fromstring has been deprecated
    • #172: Ci

    esda

    • #102: REL: 2.2.1 bf release
    • #101: Fixes for pandas deprecation and 3.8 verbosity
    • #98: ENH: adjust tests for new libpysal.examples
    • #97: update docs
    • #96: DOC: changelog update
    • #95: ENH: bumping version and handle array creation error in join counts
    • #87: development guidelines link in README.md and README.rst
    • #92: PYSAL_PYPI is not defined in .travis.yml
    • #93: addressing #92 -- .travis.yml issue
    • #88: resolving dev guidelines link
    • #80: Update officially supported Python versions
    • #74: ENH - Join count tails
    • #83: DOC: Have notebooks show output in the src
    • #82: no output in documentation notebooks

    giddy

    • #107: Extend functions for Markov classes to deal with non-ergodic Markov chains
    • #127: prepare for releasing V2.3.0
    • #109: (ENH) Extend functions for Markov classes to deal with non-ergodic Markov chains
    • #126: travis CI: pip install from git clone
    • #125: rewrite utility function "get_lower" using numpy's more efficient functionality
    • #121: Release version 2.2.2 for bug fix
    • #123: prepare for new release: version 2.2.2
    • #122: remove the parameter in plt.show() due to the API change in Matplotlib (deprecation)
    • #119: development guidelines link in README.md
    • #118: BUG: Fix for correct handling of ties in Tau
    • #120: resolving broken dev link
    • #117: initialization of ECount parameter in Kendall's Tau
    • #116: (bug) debug travis-ci

    inequality

    pointpats

    segregation

    • #146: Merge pull request #146 from knaaptime/warnings
    • #144: move import down
    • #141: addressing pysal/pysal#1145
    • #137: tweaks readme
    • #140: Fix ReadMe
    • #139: resolving broken link
    • #138: development guidelines link broken
    • #136: improve inference wrappers docstring
    • #135: Strange non-corresponding legend on output (Out)when running indexes
    • #130: [WIP] NA handling
    • #132: Update link for instruction of LTDB_Std_All_fullcount.zip
    • #105: handling nans/missing values
    • #131: Raise an informative error when input data have NAs (also update geosnap links)
    • #129: ModuleNotFoundError: No module named 'segregation.spatial'
    • #127: haversine_distance relies on newer version of scikit-learn
    • #128: update scikit-learn requirements
    • #126: fix bug of compute_all tests
    • #123: Swap to more robust tests that rely on numpy seeds
    • #121: Adds MinMax and SpatialMinMax to documentations/notebooks and compute_all and tweak notebooks
    • #125: Change precision of simulated-based tests.
    • #124: Increase the precision of simulated-based tests.
    • #86: [ENH] extend inference framework to multigroup indices
    • #122: Adds inference wrappers for multigroup indexes (Single and Two)

    spaghetti

    • #401: Version bump to v1.4.1
    • #399: Binder is broken for network-analysis
    • #400: Some tutorial links giving 404
    • #398: Fix links 2
    • #397: Fix links for notebooks
    • #396: [DOC] Reorg for tutorials page
    • #110: Traveling Salesperson Notebook
    • #100: create new TSP notebook with pulp
    • #386: [WIP] TSP notebook
    • #394: [DOC] paths docstring missing
    • #395: correcting routes doc
    • #393: [ENH] add back build badge
    • #387: [BUG] Stale links on pysal.org/spaghetti
    • #391: Rebuild docs
    • #390: force read-add conn-comp notebook
    • #389: repushing missing notebooks
    • #388: Stale links
    • #343: tarball jobs failing on Travis
    • #380: [ENH] shortest-path extraction
    • #385: [ENH] regular lattice generator
    • #382: [WIP][ENH] addressing shortest path extract
    • #384: mention the pysal/notebook project
    • #383: point pattern --> network error message
    • #381: [ENH] connected components demo notebook
    • #217: spaghetti should handle native cg.Point/Chain objects
    • #377: Native geometries
    • #379: updating README.md
    • #378: data type testing
    • #376: adding CoC link to README.md
    • #375: update CHANGELOG.md format
    • #346: all reqs found in requirements*.txt necessary?
    • #320: [ENH] explore overlapping "nearest point" calculation — DRY
    • #372: altering reference format in docs
    • #369: Clear instructions for black/pre-commit for contributing
    • #371: Contrib precommit
    • #351: alldistances vs. distancematrix?
    • #370: distance matrix and tree storage
    • #367: update readme
    • #366: Adding citations for facility location notebook
    • #340: v1.4 release checklist
    • #364: updating README.md
    • #333: add pre-commit black for PRs?
    • #363: trying out the black pre-commit hook
    • #362: adding descartes to environment.yml
    • #361: Attempt binder3
    • #360: need readthedocs.yml?
    • #359: need all tarball tests?
    • #358: Attempt binder2
    • #357: using environment.yml for binder
    • #354: Add blob/master/ to notebooks link
    • #356: addressing #354
    • #355: Citation review
    • #78: launch binder
    • #353: version 1.3.1 --> 1.4 bump
    • #352: updating version and docs
    • #332: improve spaghetti homepage and notebooks?
    • #338: Review docs for links, etc.
    • #341: Spelling and default value of n_processes
    • #342: [ENH][WIP]extension of #339: Rahul799 docs/bugfix
    • #330: [WIP] TSP notebook
    • #350: Revert "order analysis.py classes/functions alphabetically"
    • #349: order analysis.py classes/functions alphabetically
    • #347: updating requirement_dev.txt
    • #348: update README.md
    • #339: links in the docs,reviewed
    • #344: updating README.md
    • #336: automatically generate docstrings for class members
    • #337: Update docs
    • #335: Updating .travis.yml
    • #334: fix indentation in .travis.yml
    • #331: update README.md badges
    • #327: Citation stipulation for notebooks
    • #329: Notebooks update part 2
    • #328: Notebooks update
    • #326: Updating Notebooks
    • #324: update email address in notebooks
    • #325: Plotting error in Facility_Location.ipynb
    • #323: module 'pysal.explore.spaghetti' has no attribute 'element_as_gdf'
    • #319: swapping out distance calculation function
    • #318: [ENH] util.compute_length() — DRY
    • #317: adjusting snapping image in README.md
    • #315: inaccurate documentation — Network.split_arcs()
    • #316: Split arcs update
    • #313: streamline badges in README.md
    • #314: streaming badges on README.md
    • #312: adding +travis to notification recipients
    • #308: Update travis CI for new testing schema
    • #309: broken "development guidelines" link
    • #311: updating broken dev link
    • #299: Update Travis CI schema
    • #310: adding static docs badge
    • #288: mock c modules for doc dependencies
    • #306: doi missing from citation
    • #307: adding Zenodo DOI to README.md and website
    • #305: blackify setup.py
    • #301: Change Read the Docs to GitHub?
    • #304: updating README to reflect GitHub docs
    • #303: switching to github docs as per #301
    • #302: get_versions() function
    • #293: code formatting with black
    • #300: blackifying code (#293)

    mgwr

    spglm

    spint

    spreg

    spvcm

    • #14: ENH: bump version and retool setup for pysal-meta integration
    • #10: addressing pysal #1139 & new libpysal.examples schema

    tobler

    • #45: MNT: release tooling
    • #44: add pysal integration/import test
    • #43: update docs
    • #40: return dfs
    • #42: Move example data to remotes
    • #41: revisit regression approach
    • #36: generalize regression approach
    • #38: License?
    • #34: wrapper for regression approach
    • #39: update docs
    • #9: sphinx docs
    • #37: remove shap and xgboost as hard deps
    • #35: cosmetic upgrades
    • #33: reorg and add masked_area_interpolate func
    • #31: Move data into data direcotry for examples
    • #32: Environment
    • #8: decide on working notebooks
    • #30: Reorg
    • #29: fix for quilt dep clash
    • #28: quilt3 breakage
    • #26: raise ioerror
    • #24: raise IOError if rasters are missing
    • #25: Rel01
    • #23: add xgboost approach in tests
    • #22: update readme image from harmonize notebook
    • #21: Add raster regression tests (also small tweak in a notebook)
    • #20: handle "file://" in raster path
    • #19: add quilt dependency
    • #18: extra reqs files
    • #17: update travis
    • #16: turn on travis
    • #15: swap to pytest tests
    • #14: fix url and keywords from setup.py
    • #13: tweak badge link
    • #12: add build and coverage badges in readme
    • #7: remove local paths
    • #5: Drop scanlines (and harmonize) and improve notebooks and include tobler examples notebook (also adds tests and create travis file)
    • #1: put NLCD as default for raster data
    • #4: default to nlcd data from quilt
    • #3: keep input crs

    mapclassify

    • #43: Remove doc badge
    • #55: REL: update changelog for release.
    • #54: 2.2
    • #53: 2.2
    • #52: conda-forge UnsatisfiableError on windows and python 3.7
    • #49: [MAINT] updating supported Python versions in setup.py
    • #46: BUG: RecursiveError in HeadTailBreaks
    • #45: BUG: HeadTailBreaks raise RecursionError
    • #47: BUG: UserDefined accepts only list if max not in bins
    • #44: BUG: avoid deprecation warning in HeadTailBreaks
    • #42: remove docs badge
    • #41: Docs: moving to project pages on github and off rtd

    splot

    • #98: Release prep for 1.1.2
    • #88: Installation instructions; pip install fails on macOS
    • #90: Usage in readme is a fragment
    • #92: JOSS: missing figure captions
    • #96: [DOC] update installation instruction
    • #97: [DOC] add example links to README.md & figure captions in joss article
    • #83: [BUG] vba_choropleth failure
    • #95: BUG: Fix breakage due to mapclassify deprecation
    • #93: addressing pysal/pysal#1145 & adapting testing examples
    • #89: Fix docstring for plot_spatial_weights
    • #59: JOSS paper submission
    • #87: Fix format for multiple citations in JOSS paper
    • #86: Joss paper, finalise title
    • #62: [JOSS] work on paper.md
    • #85: [ENH] change doc badge to latest doc
    • #84: [BUG] require geopandas>=0.4.0,<=0.6.0rc1 for vba_choropleth testing
    • #82: plot_moran_simulation weird dimensions

    pysal

    • #1157: DOC: update build instructions
    • #1156: Frozen
    • #1152: Metalite
    • #1148: Meta-package not building for 3.6
    • #1151: Update issue templates
    • #1145: testing submodules' master in .travis.yml
    • #1144: [ENH] Contribute A-DBSCAN
    • #1098: doc typos in pysal.lib.weights.W
    • #1143: Voronoi results in weights of different shape than input points
    • #966: Preserving more than one underscore if present in the original column name. Currently if a column name has more than one underscore, they are smashed into one.
    • #1140: local_moran
    • #889: Approximate spatial weights for barely-touching polygons
    • #1126: Bumping spaghetti version
    • #1135: DOC: update links to repositories feeding into the meta project
    • #1136: Numpy 1.17
    • #1134: Rtdmove
    • #1131: Use markdown README
    • #1118: Release Notes for PySAL 2.1.0
    • #1120: Spatial autoregressive processes
    • #1130: Don't use conda-env files with Travis-CI
    • #1129: Updating for docs on RTD

    Summary Statistics

    Package Activity

    package commits total issues pulls
    spaghetti 348 101 61
    libpysal 204 64 37
    tobler 187 40 31
    pysal 82 21 10
    esda 51 14 10
    spreg 44 0 0
    splot 42 17 11
    giddy 42 13 9
    segregation 38 23 12
    mapclassify 32 12 9
    pointpats 25 0 0
    spvcm 12 2 2
    spint 7 0 0
    mgwr 5 0 0
    spglm 2 0 0
    inequality 1 0 0

    Contributor Activity

    commits
    Eli Knaap 123
    Filipe Fernandes 3
    James Gaboardi 385
    Leonardo Uieda 1
    Levi John Wolf 12
    Martin Fleischmann 4
    Rahul799 2
    Renan Xavier Cortes 60
    Serge Rey 308
    Siddharths8212376 2
    Stefanie Lumnitz 28
    Wei Kang 38

    Contributor by Package Activity

    Serge Rey Levi John Wolf James Gaboardi Wei Kang Siddharths8212376 Eli Knaap Renan Xavier Cortes Rahul799 Martin Fleischmann Stefanie Lumnitz Leonardo Uieda Filipe Fernandes
    libpysal 145 6 43 6 2 0 0 0 0 0 0 0
    esda 30 3 6 1 0 2 0 0 0 0 0 0
    giddy 2 0 3 26 0 0 0 0 0 0 0 0
    inequality 0 0 0 0 0 0 0 0 0 0 0 0
    pointpats 0 0 0 0 0 0 0 0 0 0 0 0
    segregation 0 0 2 0 0 17 19 0 0 0 0 0
    spaghetti 0 0 305 0 0 0 0 2 0 0 0 0
    mgwr 0 0 0 0 0 0 0 0 0 0 0 0
    spglm 0 0 0 0 0 0 0 0 0 0 0 0
    spint 0 0 0 0 0 0 0 0 0 0 0 0
    spreg 0 0 0 0 0 0 0 0 0 0 0 0
    spvcm 1 2 9 0 0 0 0 0 0 0 0 0
    tobler 36 0 0 0 0 101 41 0 0 0 0 0
    mapclassify 21 0 4 4 0 0 0 0 3 0 0 0
    splot 3 1 7 1 0 0 0 0 1 28 1 0
    pysal 70 0 6 0 0 3 0 0 0 0 0 3
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Jul 29, 2019)

    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 https://github.com/cypress-io/cypress/issues/4069#issuecomment-488816887
    • #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 https://github.com/lemurheavy/coveralls-public/issues/971#issuecomment-338942441
    • #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
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Jan 30, 2019)

    Release Notes for PySAL 2.0

    This release represents over 15 months of hard work on PySAL. It brings major transitions in the project together with many new enhancements, improved documentation, and numerous bug fixes and optimizations.

    Table of Contents

    Major Changes

    This release, we've had a ton of activity in PySAL, much of which has been conducted in our subpackages, the independently-released components of our library. Because it is too onerous to list all the changes to the API here, please consult the Migrating to PySAL 2.0 page for a detailed discussion of all reorganization-related changes. This document will focus only on improvements to functionality, enhancements, and additional modules added to 2.0, over and above the last stable release of the 1.0 series, PySAL 1.14.4.

    Entirely New Packages

    For starters, we've added some entirely-new subpackages to this release candidate:

    • mgwr, the multi-scale Geographically-weighted regression package for Python.

      Don't worry, mgwr fits single-scale geographically-weighted regressions, too. Geographically-weighted regression is a kind of generalized additive model that uses kernel functions in the geographic area around each observation to predict outcomes at that area more accuratly, kind of like Gaussian Process regression for geographic data.

    • spvcm, for spatially-correlated multilevel models.

      Spatially-correlated multilevel models are models that allow for random effects of nearby areas, regions, or groups to be correlated with one another. This is a Gibbs sampling framework plus diagnostics & plotting tools for general Bayesian analysis of Gibbs samplers. The package also contains simple tools to implement new samplers on top of the infrastructure provided, which is fast, parallel, serializable, iterative-write, and interruptible.

    • spint, for estimating spatial interaction models, such as the production-constrained or consumption-constrained gravity models.

    • spglm, a package for fitting sparse GLMs, focused on performance over sparse categorical data.

    • splot, for spatial vizualization in Python, built on top of the excellent geopandas. This is headed by our Google Summer of Code (2018) student, Stefanie Lumnitz, and will be ongoing throughout the release candidate maturation cycle.

    • pointpats, a package for the statistical analysis of point patterns, geographical colocation, and dispersion.

    Significant Enhancements to Existing Packages

    We've also had a ton of activity adding new features in our submodules:

    Changes by Package

    Overall, there were 1636 commits that closed 368 issues, together with 236 pull requests since our last release on 2017-11-03.

    libpysal

    • weights.distance.KNN.from_dataframe ignoring radius (#116)
    • Always make spherical KDTrees if radius is passed (#117)
    • [ENH] should weights.util.get_ids() also accept a geodataframe? (#97)
    • enh: add doctests to travis (#2) (#112)
    • sphinx docs need updating (#49)
    • Add notebooks for subpackage contract (#108)
    • Api docs complete (#110)
    • Doctests and start of documentation for libpysal (#109)
    • Add dependencies to requirements_plus.txt for test_db (#107)
    • Weights/util/get ids gdf (#101)
    • missing adjustments to lower case module names (#106)
    • Rel.4.0.0 (#105)
    • REL: 3.0.8 (#104)
    • error importing v3.0.7 (#100)
    • Lower case module names (#98)
    • remove function regime_weights (#96)
    • depreciating regime_weights in the new release? (#94)
    • inconsistency in api? (#93)
    • Ensure consistency in from .module import * in components of libpysal (#95)
    • [WIP] cleanup (#88)
    • docstrings for attributes are defined in properties (#87)
    • docstrings in W class need editing (#64)
    • version name as version (#92)
    • remove del statements and modify alphashape all (#89)
    • libpysal/libpysal/cg/init.py not importing rtree (#90)
    • including rtree in imports (#91)
    • BUG: test_weights_IO.py is using pysal and hard-coded paths (#85)
    • fix hardcoded swm test (#86)
    • check for spatial index if nonplanar neighbors (#84)
    • nonplanar_neighbors fails when sindex is not constructed. (#63)
    • increment version number and add bugfixes, api changes (#79)
    • Spherebug (#82)
    • only warn once for islands/disconnected components (#83)
    • only warn on disconnected components if there are no islands (#81)
    • LEP: Stuff/use pysal/network stuff to provide queen weights on linestring dataframes (#59)
    • swm fix not ported forward from pysal. (#66)
    • import scipy syntax typo in the new issue template (#68)
    • deletion of extra spaces in warning message (#78)
    • Nightli.es build permissions (#77)
    • name of geometry column is hardcoded in nonplanar_neighbors (#75)
    • changed geometry column name from a str to an attribute (#76)
    • Missing example file (#71)
    • if numba isn't present, libpysal warns every time imported (#73)
    • add check for disconnected components (#65)
    • clean up for release (#74)
    • update for new examples (#72)
    • Swm (#70)
    • Remaining concerns left unfixed in #61 (#62)
    • [WIP] Alpha shapes (2D) code (#58)
    • [WIP]: add linestring/multilinestring functionality (#61)
    • Fuzzy contiguity (#57)
    • add berlin example (#56)
    • force UTF8 encoding for the long description read (#55)
    • add guerry example dataset (#45)
    • update georgia shapefile (#53)
    • fix typo add non_planar_joins instead of non_planar_neighbor attr… (#54)
    • add voronoi to the API (#46)
    • ENH: Neighbor detection for nonplanar enforced polygon collections. (#51)
    • Missing example used by gwr tests (#43)
    • Wplot (#50)
    • close the door on 2 for libpysal (#44)
    • To networkx argument name changed (#40)
    • bump micro version (#42)
    • fix networkx adapters (#41)
    • minor version bump for release (#39)
    • Plot weights (#38)
    • forward port of legacy fix #1028 (#37)
    • Adding Voronoi generator for cg as well as Voronoi weights from 2-d points (#36)
    • bump version for release (#34)
    • attach_islands correction: incorporate pr #32 (#33)
    • change data type of contiguity W.neighbors value from set to list (consistent with other weights) (#32)
    • add a function to attach the nearest neighbor to island (#30)
    • fix id2i lookup for string names and make better names (#31)
    • two modules “Wsets.py” and "util.py" depend on each other (#26)
    • add unittest for Wset.w_clip (#29)
    • resolve circular import in Wsets and util (#28)
    • update doctests in weights module to use libpysal instead of pysal (#27)
    • bump stable date (#25)
    • bump version for point release of lag cat fix (#24)

    esda

    • enh: updating travis build and rtd (#40)
    • BUG: missing rtd file (#39)
    • REL: 2.0.1 (#38)
    • Prepping for a doc release (#37)
    • docstrings are using pysal legacy (#4)
    • add zenodo doi badge (#36)
    • REL: 2.0.0 (#34)
    • Changing esda setup to handle version programatically (#33)
    • port legacy esda fix for 1013 (#12)
    • notebook links broken (#29)
    • include /tests in release (#32)
    • Add tests to release (#27)
    • Accounting for incoming API changes to libpysal and adding testing against libpysal's master branch (#26)
    • no varnames in Moran_BV_matrix (#22)
    • add .varnames attribute to Moran_BV objects in Moran_BV_Matrix results (#23)
    • Inconsistent metadata in setup.py (#28)
    • Update license (#30)
    • esda has no readme (#14)
    • Readme added (#25)
    • move api into init and remove api (#24)
    • .z attribute divided by standard deviation (#21)
    • offer standardised and non-standardised .z, .x and .y attributes (#20)
    • get sjsrey's changes into a release (#16)
    • esda's namespace is broken (#17)
    • update api.py (#18)
    • Update docstrings to use libpysal not pysal (#13)
    • esda needs an api.py module (#9)
    • chore: Update setup for 3+ (#15)
    • Master (#10)

    giddy

    • remove giddy.api in README.rst (#66)
    • chore: update for libpysal lower case module name changes (#65)
    • remove api.py (#62)
    • set up travis dual testing against mapclassify and esda (#63)
    • replace libpysal.api imports with new imports in markov.py and `d… (#61)
    • Remove api.py and account for changes in (incoming) API of mapclassify, esda, and libpysal (#64)
    • version giddy only in giddy/ini.py (#60)
    • remove duplicate makefile for sphinx build (#59)
    • add zenodo doi badge to README (#58)
    • add changelog for the release 1.2.0 (#57)
    • prepare for release 1.2.0 (#56)
    • set up dual travis tests for libpysal (pip and github) (#55)
    • ENH: Allow for more flexible specification of Spatial Markov (#54)
    • Update notebooks to rely on geopandas for mapping (#52)
    • ENH to docs (#51)
    • include /tests in the release and correct for the directional doctests (#50)
    • add doc building badge to README (#49)
    • Tests and documentation for rose.plot() and rose.plot_vectors() (#47)
    • A tentative version of giddy documentation website with sphinx (#48)
    • encoding issue in README.rst (#45)
    • force utf8 for the install description read (#46)
    • implement rose.plot() and rose.plot_vectors() method using splot (#43)
    • More on building doc webpages using sphinx (#44)
    • Gallery (#42)
    • new features for sphinx documentation website (#41)
    • typo - email notifications (#40)
    • fix for python 3 (#38)
    • first draft of sphinx gallery (#39)
    • add docstring for categorical spatial Markov (#37)
    • add changelog for the release 1.1.0 (#36)
    • prepare for release (#35)
    • code 2to3 (#34)
    • chore: update for python 3+ only (#33)
    • How to use the 'development' version (#31)
    • KeyError: 1 in spatial_lag.py (#30)
    • giddy needs an api.py module (#26)
    • add inequality to api (#28)
    • adding discretized Spatial_Markov (#29)

    inequality

    • Change setup to handle version pragmatically (#6)
    • accounting for libpysal api changes in unittests (#5)
    • missing parenthesis in call to print (#2)
    • setting up dual testing (#4)
    • 2to3 for _indices.py (#3)
    • Initial setup (#1)

    pointpats

    • add changelog for release 2.0.0 (#21)
    • remove api.py & adjust notebooks and doctests for changes in libpysal (#19)
    • version pointpats only in pointpats/ini.py (#18)
    • include /tests in the release (#17)
    • configure dual testing (#16)
    • install stable released libpysal for travis testing (#15)
    • force UTF8 encoding for the long description read (#14)
    • Prepare for the release (#13)
    • chore: libpysal is 3 only now so removing travis tests on python 2 (#12)
    • try removing conversion and see if this passes (#11)

    spaghetti

    • refreshing documentation (#124)
    • option to add distance from point to snapped location (#75)
    • attempting pyproj_fix (#122)
    • [WIP] Add snap dist (#123)
    • travis CI build failing with KeyError: 'PROJ_LIB' (#121)
    • resolving obs_to_node question (#120)
    • why convert obs_to_node from defaultdict to list? (#93)
    • network.PointPatterns condense code chunk (#74)
    • condensing idvariable code chunk (#119)
    • Network Cross Nearest Neighbor (#102)
    • refreshing docs (#117)
    • shortest path look up from allneighborsdistances? (#115)
    • adding shortest path traceback for point patterns (#116)
    • ImportError: No module named 'boto3' (#113)
    • adding boto3 test req for current fiona bug (#114)
    • [WIP] cleanup_nearest_neighbor (#112)
    • duplicate neighbor distance functions? (#91)
    • network.allneighbordistances documentation not accurate (#111)
    • [WIP] General package maintenance (#109)
    • new badges (#96)
    • tools/ (#99)
    • updating thumbnails in docs (#108)
    • [WIP] updating docs, badges, tools, etc. (#107)
    • initializing new sphinx docs based on submodule_template (#98)
    • new labels for issues (#105)
    • populating sphinx docs (#37)
    • tests for analysis and util (#44)
    • NetworkF (#94)
    • rename functions to be more pythonic (#104)
    • add poisson distribution to tests (#106)
    • initial sphix docs attempt (#67)
    • bumping version to 1.1.0 (#97)
    • adding in new tests for utils.py (#95)
    • add flag for util.generatetree() (#92)
    • [completed atm] - docstrings cleanup (#89)
    • clean docstrings (#77)
    • adding MANIFEST.in (#88)
    • clearing Facility_Location.ipynb (#87)
    • removing typo in Facility_Location (#86)
    • clearing Facility_Location.ipynb (#85)
    • updating Facility_Location.ipynb for typos (#84)
    • adding Facility_Location.ipynb (#83)
    • new notebook ideas (#48)
    • adding windows functionality for 'last updated' (#82)
    • ensure nearest nodes are returned as np.array() (#73)
    • snapping trouble when the initial node in KDtree is the nearest (#72)
    • add Github version badge (#80)
    • add open issues badge (#79)
    • update notebooks as per pysal/pysal#1057 (#81)
    • [Complete/Needs Review] updating in_shp parameter in spaghetti.Network (#69)
    • [ENH] geopandas.GeoDataFrame for PointPattern (#28)
    • update in_shp kwarg in spaghetti.Network (#68)
    • removing undeclared edge_time attribute (#65)
    • update README.txt (#33)
    • [ENH] Add badges (#31)
    • Publish on Zenodo (#36)
    • Some errors in node_distance_matrix() (#64)
    • declare SMALL as np.finfo(float).eps (#63)
    • smallest numpy epsilon float? (#61)
    • [WIP] Prep for next pypi (#60)
    • mimic other pysal submodules for api removal (#50)
    • PEP8 compliant (#38)
    • update notebooks (#43)
    • api testing (#59)
    • DRY version documentation (#53)
    • configure travis dual testing for "Allowed Failures" to work (#58)
    • adding geopandas for dual travis testing (#56)
    • New tests required for new in_shp parameter option (#30)
    • fix or remove code_health badge (#54)
    • add .landscape.yml for code health (#51)
    • removing code health badge from README (#55)
    • adding .landscape.yml for code health (#52)
    • adding additional pip install instructions/options (#35)
    • dual testing (#45)
    • change libpysal imports in tests (#46)
    • change weights variable name (#47)
    • update notebooks for reorg (#1)
    • spaghetti/analysis.py:182: RuntimeWarning (#42)
    • change xrange to range (#40)
    • summation error in computeobserved() of spaghetti.analysis.py (#41)
    • TypeError: can't pickle dict_keys objects (#39)
    • add CHANGELOG (#34)
    • update import scheme for new package name (#5)
    • Prepare a release of spaghetti for pypi (#26)
    • pip (#32)
    • preparing for pypi release (#25)
    • api.py tests (#19)
    • trailing comma not allowed with surrounding parenthesis (#29)
    • Necessity of future? (#27)
    • spaghetti currently only python 2.7.x compatible (#21)
    • Geopandas read (#22)
    • Py2topy3 (#23)
    • Spaghetti/update travis (#24)
    • Generalize the Network input API for libpysal/#59 (#20)

    mapclassify

    • fix doctests (interactive examples in inline docstrings) (#19)
    • complete readthedocs configuration & add Slocum 2009 reference (#17)
    • prepping for a doc based release (#15)
    • new release on pypi (#10)
    • prepare for release 2.0.0 (#13)
    • Clean up for next pypi release (#12)
    • move notebooks outside of the package (#11)
    • ENH: move classifiers up into init (#9)
    • Moving to python 3+ (#8)

    splot

    • merge Sprint with master branch (#39)
    • Change documentation style (#38)
    • add travis build badge to README.md (#37)
    • fix current documentation for sprint (#36)
    • value_by_alpha prototype (#28)
    • Clean up of current code base (#30)
    • Value By Alpha specification (#24)
    • nonplanar example update (#33)
    • add README.md (#29)
    • issues in some docstrings for giddy (#26)
    • debug splot documentation (#25)
    • collection of cleanups forsplot.giddy (#23)
    • created esda.moran.Moran_Local_BV visualisations (#20)
    • add esda.moran.Moran_BV visualizations to splot.esda (#18)
    • add seaborn and matplotlib to install_requirements in setup.py (#19)
    • prototype moran_scatterplot(), plot_moran_simulation() and plot_moran() for esda (#17)
    • include utility functions shift_colormap and truncate_colormap (#15)
    • fix setup.py so files are installed with "pip install ." (#16)
    • plot_spatial_weights including network joins for non_planar_joins (#14)
    • adapting existing esda functionality to splot.esda namespace and allow .plot() method (#13)
    • adding license (#4)
    • add giddy dynamic LISA functionality under splot.giddy (#11)
    • start sphinx html documentation (#12)
    • add visualization option with significance to mplot (#7)
    • Visualising Local Autocorrelation (#8)
    • Copy new changes made to viz module into split (#5)
    • run 2to3 for splot (#6)

    spreg

    • update docstrings for libpysal API changes (#9)
    • Merging in spanel & spreg2 code necessary for new spatial panel & GeoDaSpace (#10)
    • move to silence_warnings from current libpysal (#7)
    • add init to ensure tests are shipped (#6)
    • weights typechecking will only accept things from pysal. (#3)
    • relax error checking in check_weights (#4)
    • simplify testing (#5)
    • Convert spreg to common subset 2,3 code (#2)

    spglm

    • fix docstrings (as well as some within interactive examples) (#14)
    • Fix docs (#17)
    • Submodule (#16)
    • submodule_contract (#13)
    • Inconsistent metadata in setup.py (#10)
    • adapting spglm to new libpysal (#12)
    • move to using libpysal.io.open rather than just libpysal.open (#11)
    • Freeze (#8)
    • add tr_S attribute for use in GWR (#7)
    • remove pysal requirements (#6)
    • remove v 2.x tests from CI (#5)
    • houskeeping of new basefiles needed as a submodule (#4)

    spint

    • add changelog (#15)
    • pypi files do not include tests (#9)
    • Submodule (#14)
    • adapting spint to newest version of libpysal (#13)
    • Reorg (#12)
    • spint has pysal as a dependency, should be libpysal (#2)
    • api.py syntax error (#10)
    • removed trailing api comma (#11)
    • Freeze (#8)
    • update dependencies (#7)
    • remove v 2.x test from CI (#6)
    • version bump (#5)
    • Common subset (#4)
    • houskeeping of basefiles needed for submodule (#3)

    mgwr

    • add solve from scipy instead of inv (#45)
    • bool variables and singular matrix error (#42)
    • update travis.yml for matrix testing (#44)
    • add changelog (#43)
    • fix compare_surfaces docstrings (#40)
    • add docs for viz function compare_surfaces (#39)
    • add compare_surfaces docstring and bump version (#38)
    • add viz functions to docs (#37)
    • add_map_func (#36)
    • add badges to README (#35)
    • (ENH) prepare online docs (#33)
    • Revert "move notebooks outside of the package folder and fix notebooks" (#34)
    • move notebooks outside of the package folder and fix notebooks (#32)
    • Georgia main example patch (#31)
    • format gwr.py following PEP 8 style and fix docstrings (#30)
    • use libpysal in docstrings and adapt to python 3 syntax (#29)
    • Inconsistent metadata info on setup.py (#25)
    • rebuild rights access? (#28)
    • swap to libpysal.io.open (#26)
    • adapting mgwr to newest libpysal (#27)
    • change spreg import pattern (#24)
    • change imports from spreg (#22)
    • rework pickles in the tests (#21)
    • Swap to use more portable types than pickles (#23)
    • Output summary (#17)
    • Adding summary output (#18)
    • Freeze (#20)
    • Allow user-set BW's for MGWR (#7)
    • Set mgwr bw (#15)
    • adds py27 to ci (#16)
    • Gwr to mgwr (#14)
    • Standard errors and t-vals (#8)
    • Redundant calculation of Aj (#10)
    • question about final fit in MGWR class? (#1)
    • change main directory from gwr to mgwr (#13)
    • Update mgwr (#12)
    • clean up MGWR (#11)
    • Consolidate MGWR (#5)
    • hat matrices (#2)

    spvcm

    • change the API to reflect up-to-date libpysal api (#7)
    • Test failures in effective size & geweke diagnostics (#2)
    • update plotting and diagnostics for pandas deprecation (#3)

    Summary Statistics

    Package Activity

    package commits total issues pulls
    spaghetti 282 94 34
    libpysal 276 79 57
    splot 247 27 21
    mgwr 245 39 24
    giddy 137 38 31
    esda 80 29 19
    spglm 70 12 9
    spint 63 14 11
    spreg 57 8 6
    spvcm 55 3 1
    mapclassify 48 9 8
    pointpats 40 10 10
    inequality 36 6 5

    Contributor Activity

    commits
    Dani Arribas-Bel 25
    Eli Knaap 14
    Hu Shao 5
    James Gaboardi 314
    Jsignell 1
    Levi John Wolf 262
    Philip Kahn 2
    Serge Rey 239
    Stefanie Lumnitz 240
    Taylor Oshan 243
    Thequackdaddy 1
    Wei Kang 225
    Ziqi Li 51

    Contributor by Package Activity

    Dani Arribas-Bel Eli Knaap Hu Shao James Gaboardi Jsignell Levi John Wolf Philip Kahn Serge Rey Stefanie Lumnitz Taylor Oshan Thequackdaddy Wei Kang Ziqi Li
    lib.libpysal 19 12 0 8 0 112 0 101 2 4 0 18 0
    explore.esda 0 0 0 1 0 11 0 50 10 0 0 8 0
    explore.giddy 0 2 0 0 0 1 0 18 10 0 0 103 0
    explore.inequality 0 0 0 0 0 1 0 20 0 0 0 11 0
    explore.pointpats 0 0 5 0 0 7 0 2 0 0 0 26 0
    explore.spaghetti 0 0 0 278 0 3 0 0 0 0 0 1 0
    viz.mapclassify 0 0 0 0 0 3 0 22 0 0 0 23 0
    viz.splot 6 0 0 0 1 9 0 7 218 0 1 0 0
    model.spreg 0 0 0 0 0 40 0 17 0 0 0 0 0
    model.spglm 0 0 0 7 0 1 0 0 0 60 0 1 0
    model.spint 0 0 0 7 0 9 0 0 0 42 0 4 0
    model.mgwr 0 0 0 12 0 13 2 0 0 137 0 30 51
    model.spvcm 0 0 0 1 0 52 0 2 0 0 0 0 0
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc3(Jan 13, 2019)

    Release Notes for PySAL2.0rc3

    This is the third release candidate for PySAL 2.0.

    Overall, there were 1636 commits that closed 368 issues, together with 236 pull requests since our last release on 2017-11-03.

    Changes by package

    libpysal:

    • weights.distance.KNN.from_dataframe ignoring radius (#116)
    • Always make spherical KDTrees if radius is passed (#117)
    • [ENH] should weights.util.get_ids() also accept a geodataframe? (#97)
    • enh: add doctests to travis (#2) (#112)
    • sphinx docs need updating (#49)
    • Add notebooks for subpackage contract (#108)
    • Api docs complete (#110)
    • Doctests and start of documentation for libpysal (#109)
    • Add dependencies to requirements_plus.txt for test_db (#107)
    • Weights/util/get ids gdf (#101)
    • missing adjustments to lower case module names (#106)
    • Rel.4.0.0 (#105)
    • REL: 3.0.8 (#104)
    • error importing v3.0.7 (#100)
    • Lower case module names (#98)
    • remove function regime_weights (#96)
    • depreciating regime_weights in the new release? (#94)
    • inconsistency in api? (#93)
    • Ensure consistency in from .module import * in components of libpysal (#95)
    • [WIP] cleanup (#88)
    • docstrings for attributes are defined in properties (#87)
    • docstrings in W class need editing (#64)
    • version name as version (#92)
    • remove del statements and modify alphashape all (#89)
    • libpysal/libpysal/cg/init.py not importing rtree (#90)
    • including rtree in imports (#91)
    • BUG: test_weights_IO.py is using pysal and hard-coded paths (#85)
    • fix hardcoded swm test (#86)
    • check for spatial index if nonplanar neighbors (#84)
    • nonplanar_neighbors fails when sindex is not constructed. (#63)
    • increment version number and add bugfixes, api changes (#79)
    • Spherebug (#82)
    • only warn once for islands/disconnected components (#83)
    • only warn on disconnected components if there are no islands (#81)
    • LEP: Stuff/use pysal/network stuff to provide queen weights on linestring dataframes (#59)
    • swm fix not ported forward from pysal. (#66)
    • import scipy syntax typo in the new issue template (#68)
    • deletion of extra spaces in warning message (#78)
    • Nightli.es build permissions (#77)
    • name of geometry column is hardcoded in nonplanar_neighbors (#75)
    • changed geometry column name from a str to an attribute (#76)
    • Missing example file (#71)
    • if numba isn't present, libpysal warns every time imported (#73)
    • add check for disconnected components (#65)
    • clean up for release (#74)
    • update for new examples (#72)
    • Swm (#70)
    • Remaining concerns left unfixed in #61 (#62)
    • [WIP] Alpha shapes (2D) code (#58)
    • [WIP]: add linestring/multilinestring functionality (#61)
    • Fuzzy contiguity (#57)
    • add berlin example (#56)
    • force UTF8 encoding for the long description read (#55)
    • add guerry example dataset (#45)
    • update georgia shapefile (#53)
    • fix typo add non_planar_joins instead of non_planar_neighbor attr… (#54)
    • add voronoi to the API (#46)
    • ENH: Neighbor detection for nonplanar enforced polygon collections. (#51)
    • Missing example used by gwr tests (#43)
    • Wplot (#50)
    • close the door on 2 for libpysal (#44)
    • To networkx argument name changed (#40)
    • bump micro version (#42)
    • fix networkx adapters (#41)
    • minor version bump for release (#39)
    • Plot weights (#38)
    • forward port of legacy fix #1028 (#37)
    • Adding Voronoi generator for cg as well as Voronoi weights from 2-d points (#36)
    • bump version for release (#34)
    • attach_islands correction: incorporate pr #32 (#33)
    • change data type of contiguity W.neighbors value from set to list (consistent with other weights) (#32)
    • add a function to attach the nearest neighbor to island (#30)
    • fix id2i lookup for string names and make better names (#31)
    • two modules “Wsets.py” and "util.py" depend on each other (#26)
    • add unittest for Wset.w_clip (#29)
    • resolve circular import in Wsets and util (#28)
    • update doctests in weights module to use libpysal instead of pysal (#27)
    • bump stable date (#25)
    • bump version for point release of lag cat fix (#24)

    esda:

    • enh: updating travis build and rtd (#40)
    • BUG: missing rtd file (#39)
    • REL: 2.0.1 (#38)
    • Prepping for a doc release (#37)
    • docstrings are using pysal legacy (#4)
    • add zenodo doi badge (#36)
    • REL: 2.0.0 (#34)
    • Changing esda setup to handle version programatically (#33)
    • port legacy esda fix for 1013 (#12)
    • notebook links broken (#29)
    • include /tests in release (#32)
    • Add tests to release (#27)
    • Accounting for incoming API changes to libpysal and adding testing against libpysal's master branch (#26)
    • no varnames in Moran_BV_matrix (#22)
    • add .varnames attribute to Moran_BV objects in Moran_BV_Matrix results (#23)
    • Inconsistent metadata in setup.py (#28)
    • Update license (#30)
    • esda has no readme (#14)
    • Readme added (#25)
    • move api into init and remove api (#24)
    • .z attribute divided by standard deviation (#21)
    • offer standardised and non-standardised .z, .x and .y attributes (#20)
    • get sjsrey's changes into a release (#16)
    • esda's namespace is broken (#17)
    • update api.py (#18)
    • Update docstrings to use libpysal not pysal (#13)
    • esda needs an api.py module (#9)
    • chore: Update setup for 3+ (#15)
    • Master (#10)

    giddy:

    • remove giddy.api in README.rst (#66)
    • chore: update for libpysal lower case module name changes (#65)
    • remove api.py (#62)
    • set up travis dual testing against mapclassify and esda (#63)
    • replace libpysal.api imports with new imports in markov.py and `d… (#61)
    • Remove api.py and account for changes in (incoming) API of mapclassify, esda, and libpysal (#64)
    • version giddy only in giddy/ini.py (#60)
    • remove duplicate makefile for sphinx build (#59)
    • add zenodo doi badge to README (#58)
    • add changelog for the release 1.2.0 (#57)
    • prepare for release 1.2.0 (#56)
    • set up dual travis tests for libpysal (pip and github) (#55)
    • ENH: Allow for more flexible specification of Spatial Markov (#54)
    • Update notebooks to rely on geopandas for mapping (#52)
    • ENH to docs (#51)
    • include /tests in the release and correct for the directional doctests (#50)
    • add doc building badge to README (#49)
    • Tests and documentation for rose.plot() and rose.plot_vectors() (#47)
    • A tentative version of giddy documentation website with sphinx (#48)
    • encoding issue in README.rst (#45)
    • force utf8 for the install description read (#46)
    • implement rose.plot() and rose.plot_vectors() method using splot (#43)
    • More on building doc webpages using sphinx (#44)
    • Gallery (#42)
    • new features for sphinx documentation website (#41)
    • typo - email notifications (#40)
    • fix for python 3 (#38)
    • first draft of sphinx gallery (#39)
    • add docstring for categorical spatial Markov (#37)
    • add changelog for the release 1.1.0 (#36)
    • prepare for release (#35)
    • code 2to3 (#34)
    • chore: update for python 3+ only (#33)
    • How to use the 'development' version (#31)
    • KeyError: 1 in spatial_lag.py (#30)
    • giddy needs an api.py module (#26)
    • add inequality to api (#28)
    • adding discretized Spatial_Markov (#29)

    inequality:

    • Change setup to handle version pragmatically (#6)
    • accounting for libpysal api changes in unittests (#5)
    • missing parenthesis in call to print (#2)
    • setting up dual testing (#4)
    • 2to3 for _indices.py (#3)
    • Initial setup (#1)

    pointpats:

    • add changelog for release 2.0.0 (#21)
    • remove api.py & adjust notebooks and doctests for changes in libpysal (#19)
    • version pointpats only in pointpats/ini.py (#18)
    • include /tests in the release (#17)
    • configure dual testing (#16)
    • install stable released libpysal for travis testing (#15)
    • force UTF8 encoding for the long description read (#14)
    • Prepare for the release (#13)
    • chore: libpysal is 3 only now so removing travis tests on python 2 (#12)
    • try removing conversion and see if this passes (#11)

    spaghetti:

    • refreshing documentation (#124)
    • option to add distance from point to snapped location (#75)
    • attempting pyproj_fix (#122)
    • [WIP] Add snap dist (#123)
    • travis CI build failing with KeyError: 'PROJ_LIB' (#121)
    • resolving obs_to_node question (#120)
    • why convert obs_to_node from defaultdict to list? (#93)
    • network.PointPatterns condense code chunk (#74)
    • condensing idvariable code chunk (#119)
    • Network Cross Nearest Neighbor (#102)
    • refreshing docs (#117)
    • shortest path look up from allneighborsdistances? (#115)
    • adding shortest path traceback for point patterns (#116)
    • ImportError: No module named 'boto3' (#113)
    • adding boto3 test req for current fiona bug (#114)
    • [WIP] cleanup_nearest_neighbor (#112)
    • duplicate neighbor distance functions? (#91)
    • network.allneighbordistances documentation not accurate (#111)
    • [WIP] General package maintenance (#109)
    • new badges (#96)
    • tools/ (#99)
    • updating thumbnails in docs (#108)
    • [WIP] updating docs, badges, tools, etc. (#107)
    • initializing new sphinx docs based on submodule_template (#98)
    • new labels for issues (#105)
    • populating sphinx docs (#37)
    • tests for analysis and util (#44)
    • NetworkF (#94)
    • rename functions to be more pythonic (#104)
    • add poisson distribution to tests (#106)
    • initial sphix docs attempt (#67)
    • bumping version to 1.1.0 (#97)
    • adding in new tests for utils.py (#95)
    • add flag for util.generatetree() (#92)
    • [completed atm] - docstrings cleanup (#89)
    • clean docstrings (#77)
    • adding MANIFEST.in (#88)
    • clearing Facility_Location.ipynb (#87)
    • removing typo in Facility_Location (#86)
    • clearing Facility_Location.ipynb (#85)
    • updating Facility_Location.ipynb for typos (#84)
    • adding Facility_Location.ipynb (#83)
    • new notebook ideas (#48)
    • adding windows functionality for 'last updated' (#82)
    • ensure nearest nodes are returned as np.array() (#73)
    • snapping trouble when the initial node in KDtree is the nearest (#72)
    • add Github version badge (#80)
    • add open issues badge (#79)
    • update notebooks as per pysal/pysal#1057 (#81)
    • [Complete/Needs Review] updating in_shp parameter in spaghetti.Network (#69)
    • [ENH] geopandas.GeoDataFrame for PointPattern (#28)
    • update in_shp kwarg in spaghetti.Network (#68)
    • removing undeclared edge_time attribute (#65)
    • update README.txt (#33)
    • [ENH] Add badges (#31)
    • Publish on Zenodo (#36)
    • Some errors in node_distance_matrix() (#64)
    • declare SMALL as np.finfo(float).eps (#63)
    • smallest numpy epsilon float? (#61)
    • [WIP] Prep for next pypi (#60)
    • mimic other pysal submodules for api removal (#50)
    • PEP8 compliant (#38)
    • update notebooks (#43)
    • api testing (#59)
    • DRY version documentation (#53)
    • configure travis dual testing for "Allowed Failures" to work (#58)
    • adding geopandas for dual travis testing (#56)
    • New tests required for new in_shp parameter option (#30)
    • fix or remove code_health badge (#54)
    • add .landscape.yml for code health (#51)
    • removing code health badge from README (#55)
    • adding .landscape.yml for code health (#52)
    • adding additional pip install instructions/options (#35)
    • dual testing (#45)
    • change libpysal imports in tests (#46)
    • change weights variable name (#47)
    • update notebooks for reorg (#1)
    • spaghetti/analysis.py:182: RuntimeWarning (#42)
    • change xrange to range (#40)
    • summation error in computeobserved() of spaghetti.analysis.py (#41)
    • TypeError: can't pickle dict_keys objects (#39)
    • add CHANGELOG (#34)
    • update import scheme for new package name (#5)
    • Prepare a release of spaghetti for pypi (#26)
    • pip (#32)
    • preparing for pypi release (#25)
    • api.py tests (#19)
    • trailing comma not allowed with surrounding parenthesis (#29)
    • Necessity of future? (#27)
    • spaghetti currently only python 2.7.x compatible (#21)
    • Geopandas read (#22)
    • Py2topy3 (#23)
    • Spaghetti/update travis (#24)
    • Generalize the Network input API for libpysal/#59 (#20)

    mapclassify:

    • fix doctests (interactive examples in inline docstrings) (#19)
    • complete readthedocs configuration & add Slocum 2009 reference (#17)
    • prepping for a doc based release (#15)
    • new release on pypi (#10)
    • prepare for release 2.0.0 (#13)
    • Clean up for next pypi release (#12)
    • move notebooks outside of the package (#11)
    • ENH: move classifiers up into init (#9)
    • Moving to python 3+ (#8)

    splot:

    • merge Sprint with master branch (#39)
    • Change documentation style (#38)
    • add travis build badge to README.md (#37)
    • fix current documentation for sprint (#36)
    • value_by_alpha prototype (#28)
    • Clean up of current code base (#30)
    • Value By Alpha specification (#24)
    • nonplanar example update (#33)
    • add README.md (#29)
    • issues in some docstrings for giddy (#26)
    • debug splot documentation (#25)
    • collection of cleanups forsplot.giddy (#23)
    • created esda.moran.Moran_Local_BV visualisations (#20)
    • add esda.moran.Moran_BV visualizations to splot.esda (#18)
    • add seaborn and matplotlib to install_requirements in setup.py (#19)
    • prototype moran_scatterplot(), plot_moran_simulation() and plot_moran() for esda (#17)
    • include utility functions shift_colormap and truncate_colormap (#15)
    • fix setup.py so files are installed with "pip install ." (#16)
    • plot_spatial_weights including network joins for non_planar_joins (#14)
    • adapting existing esda functionality to splot.esda namespace and allow .plot() method (#13)
    • adding license (#4)
    • add giddy dynamic LISA functionality under splot.giddy (#11)
    • start sphinx html documentation (#12)
    • add visualization option with significance to mplot (#7)
    • Visualising Local Autocorrelation (#8)
    • Copy new changes made to viz module into split (#5)
    • run 2to3 for splot (#6)

    spreg:

    • update docstrings for libpysal API changes (#9)
    • Merging in spanel & spreg2 code necessary for new spatial panel & GeoDaSpace (#10)
    • move to silence_warnings from current libpysal (#7)
    • add init to ensure tests are shipped (#6)
    • weights typechecking will only accept things from pysal. (#3)
    • relax error checking in check_weights (#4)
    • simplify testing (#5)
    • Convert spreg to common subset 2,3 code (#2)

    spglm:

    • fix docstrings (as well as some within interactive examples) (#14)
    • Fix docs (#17)
    • Submodule (#16)
    • submodule_contract (#13)
    • Inconsistent metadata in setup.py (#10)
    • adapting spglm to new libpysal (#12)
    • move to using libpysal.io.open rather than just libpysal.open (#11)
    • Freeze (#8)
    • add tr_S attribute for use in GWR (#7)
    • remove pysal requirements (#6)
    • remove v 2.x tests from CI (#5)
    • houskeeping of new basefiles needed as a submodule (#4)

    spint:

    • add changelog (#15)
    • pypi files do not include tests (#9)
    • Submodule (#14)
    • adapting spint to newest version of libpysal (#13)
    • Reorg (#12)
    • spint has pysal as a dependency, should be libpysal (#2)
    • api.py syntax error (#10)
    • removed trailing api comma (#11)
    • Freeze (#8)
    • update dependencies (#7)
    • remove v 2.x test from CI (#6)
    • version bump (#5)
    • Common subset (#4)
    • houskeeping of basefiles needed for submodule (#3)

    mgwr:

    • add solve from scipy instead of inv (#45)
    • bool variables and singular matrix error (#42)
    • update travis.yml for matrix testing (#44)
    • add changelog (#43)
    • fix compare_surfaces docstrings (#40)
    • add docs for viz function compare_surfaces (#39)
    • add compare_surfaces docstring and bump version (#38)
    • add viz functions to docs (#37)
    • add_map_func (#36)
    • add badges to README (#35)
    • (ENH) prepare online docs (#33)
    • Revert "move notebooks outside of the package folder and fix notebooks" (#34)
    • move notebooks outside of the package folder and fix notebooks (#32)
    • Georgia main example patch (#31)
    • format gwr.py following PEP 8 style and fix docstrings (#30)
    • use libpysal in docstrings and adapt to python 3 syntax (#29)
    • Inconsistent metadata info on setup.py (#25)
    • rebuild rights access? (#28)
    • swap to libpysal.io.open (#26)
    • adapting mgwr to newest libpysal (#27)
    • change spreg import pattern (#24)
    • change imports from spreg (#22)
    • rework pickles in the tests (#21)
    • Swap to use more portable types than pickles (#23)
    • Output summary (#17)
    • Adding summary output (#18)
    • Freeze (#20)
    • Allow user-set BW's for MGWR (#7)
    • Set mgwr bw (#15)
    • adds py27 to ci (#16)
    • Gwr to mgwr (#14)
    • Standard errors and t-vals (#8)
    • Redundant calculation of Aj (#10)
    • question about final fit in MGWR class? (#1)
    • change main directory from gwr to mgwr (#13)
    • Update mgwr (#12)
    • clean up MGWR (#11)
    • Consolidate MGWR (#5)
    • hat matrices (#2)

    spvcm:

    • change the API to reflect up-to-date libpysal api (#7)
    • Test failures in effective size & geweke diagnostics (#2)
    • update plotting and diagnostics for pandas deprecation (#3)

    Contributions

    The following individuals contributed to this release:

    commits
    Dani Arribas-Bel 25
    Eli Knaap 14
    Hu Shao 5
    James Gaboardi 314
    Jsignell 1
    Levi John Wolf 263
    Philip Kahn 2
    Serge Rey 241
    Stefanie Lumnitz 240
    Taylor Oshan 243
    Thequackdaddy 1
    Wei Kang 227
    Ziqi Li 51

    Contributions by Package

    Dani Arribas-Bel Eli Knaap Hu Shao James Gaboardi Jsignell Levi John Wolf Philip Kahn Serge Rey Stefanie Lumnitz Taylor Oshan Thequackdaddy Wei Kang Ziqi Li
    lib.libpysal 19 12 0 8 0 112 0 101 2 4 0 18 0
    explore.esda 0 0 0 1 0 11 0 50 10 0 0 8 0
    explore.giddy 0 2 0 0 0 1 0 18 10 0 0 103 0
    explore.inequality 0 0 0 0 0 1 0 22 0 0 0 13 0
    explore.pointpats 0 0 5 0 0 7 0 2 0 0 0 26 0
    explore.spaghetti 0 0 0 278 0 3 0 0 0 0 0 1 0
    viz.mapclassify 0 0 0 0 0 3 0 22 0 0 0 23 0
    viz.splot 6 0 0 0 1 9 0 7 218 0 1 0 0
    model.spreg 0 0 0 0 0 40 0 17 0 0 0 0 0
    model.spglm 0 0 0 7 0 1 0 0 0 60 0 1 0
    model.spint 0 0 0 7 0 10 0 0 0 42 0 4 0
    model.mgwr 0 0 0 12 0 13 2 0 0 137 0 30 51
    model.spvcm 0 0 0 1 0 52 0 2 0 0 0 0 0
    tags: pysal, changelog, release candidate, spatial statistics, statistics, networks, graphs
    Source code(tar.gz)
    Source code(zip)
  • 2.0rc2(Jul 20, 2018)

    Release Notes for PySAL2.0rc2

    For starters, these change notes are only for this release candidate, which is like a typical release of PySAL, but considered a preview. This release candidate, 2.0rc2, signifies that our API will change (the 2.0 part) and that we want to ensure users can opt-in to these changes with a longer time delay than a usual release (the rc2 part). We will make a full release of PySAL 2.0 by 2018-12-31, which will largely follow the API reorganization in this release candidate (and any subsequent release candidates). For more information on how to migrate to the 2.0-API, please check out migrating.pysal.org.

    Feature Changes in 2.0rc2

    This release, we've had a ton of activity in PySAL, but it has all been conducted in our subpackages, the independently-released components of our library. Because it is too onerous to list all the changes to the API here, please consult the migrating.pysal.org website for a detailed discussion of all reorganization-related changes. This document will focus only on improvements to functionality, enhancements, and additional modules added to 2.0rc2, over and above the last stable release of the 1.0 series, PySAL 1.14.4.

    Overall, there were 719 commits that closed 240 issues, together with 105 pull requests across 12 packages since our last release on 2017-11-03.

    Entirely New Packages

    For starters, we've added some entirely-new subpackages to this release candidate:

    • mgwr, the multi-scale Geographically-weighted regression package for Python.

      Don't worry, mgwr fits single-scale geographically-weighted regressions, too. Geographically-weighted regression is a kind of generalized additive model that uses kernel functions in the geographic area around each observation to predict outcomes at that area more accuratly, kind of like Gaussian Process regression for geographic data.

    • spvcm, for spatially-correlated multilevel models.

      Spatially-correlated multilevel models are models that allow for random effects of nearby areas, regions, or groups to be correlated with one another. This is a Gibbs sampling framework plus diagnostics & plotting tools for general Bayesian analysis of Gibbs samplers. The package also contains simple tools to implement new samplers on top of the infrastructure provided, which is fast, parallel, serializable, iterative-write, and interruptible.

    • spint, for estimating spatial interaction models, such as the production-constrained or consumption-constrained gravity models.

    • spglm, a package for fitting sparse GLMs, focused on performance over sparse categorical data.

    • splot, for spatial vizualization in Python, built on top of the excellent geopandas. This is headed by our Google Summer of Code (2018) student, Stefanie Lumnitz, and will be ongoing throughout the release candidate maturation cycle.

    • pointpats, a package for the statistical analysis of point patterns, geographical colocation, and dispersion.

    Significant Enhancements to Existing Packages

    We've also had a ton of activity adding new features in our submodules:

    Contributor Statistics

    Below, you'll find some contribution statistics from users, how active each subpackage is, and how active users are within each subpackage:

    Developer commits

    commits
    Dani Arribas-Bel 20
    Eli Knaap 7
    Hu Shao 2
    James Gaboardi 10
    Jsignell 1
    Levi John Wolf 140
    Serge Rey 96
    Stefanie Lumnitz 157
    Taylor Oshan 85
    Thequackdaddy 1
    Wei Kang 67
    Ziqi Li 52

    Subpackage Activity

    package commits total issues pulls
    mgwr 165 22 7
    splot 163 30 14
    libpysal 161 76 35
    giddy 94 43 19
    spreg 32 11 5
    spint 21 12 6
    spglm 20 10 5
    spvcm 20 3 1
    pointpats 15 8 4
    spaghetti 10 8 2
    esda 9 13 5
    inequality 7 2 1
    mapclassify 2 2 1

    Committers by Subpackage

    Dani Arribas-Bel Eli Knaap Hu Shao James Gaboardi Jsignell Levi John Wolf Serge Rey Stefanie Lumnitz Taylor Oshan Thequackdaddy Wei Kang Ziqi Li
    lib.libpysal 19 5 0 2 0 73 48 2 4 0 8 0
    explore.esda 0 0 0 0 0 4 5 0 0 0 0 0
    explore.pointpats 0 0 2 0 0 7 2 0 0 0 4 0
    explore.spaghetti 0 0 0 8 0 2 0 0 0 0 0 0
    dynamics.giddy 0 2 0 0 0 1 18 8 0 0 55 0
    viz.mapclassify 0 0 0 0 0 1 1 0 0 0 0 0
    viz.splot 1 0 0 0 1 8 5 147 0 1 0 0
    model.gwr 0 0 0 0 0 5 0 0 46 0 0 52
    model.spglm 0 0 0 0 0 1 0 0 19 0 0 0
    model.spint 0 0 0 0 0 5 0 0 16 0 0 0
    model.spreg 0 0 0 0 0 13 17 0 0 0 0 0
    model.spvcm 0 0 0 0 0 20 0 0 0 0 0 0
    tags: pysal, changelog, release candidate, spatial statistics, statistics, networks, graphs
    Source code(tar.gz)
    Source code(zip)
  • v1.14.4(Jul 18, 2018)

    This is the final release of PySAL with the legacy version of the API. All subsequent releases will adopt a new API.

    This release contains only docfixes and bugfixes. All new functionality has been implemented in the various subpackages, documented in migrating.pysal.org.

    Please consult that documentation for more information about this package, and what is coming next.

    We thank our contributors, supporters, and funding agencies.

    Source code(tar.gz)
    Source code(zip)
  • v1.14.3(Nov 6, 2017)

  • v1.14.2(Sep 23, 2017)

    This is a minor point release incorporating corrections to Geary's C and Moran's I, as well as changes to Map_Classifier.find_bin and plot_lisa_cluster. It is also the first tagged release on Github since 1.13.0, so includes all major release notes from the last major release, PySAL 1.14.0. As such, it contains a large number of enhancements and resolutions since 1.13.0, such as:

    • deprecation of Headbanging methods in pysal.esda.smoothing
    • update of .swm file reader
    • bugfix to lag_categorical
    • multiprocessing options for shortest path computation in pysal.network.
    • Geographically weighted regression (in pysal.contrib)
    • spatial interaction modeling methods

    This is a rolling release consisting of enhancements, bug fixes, and documentation updates including over 122 issues, 39 pull requests, and 83 regular issues since the last release.

    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(Dec 9, 2016)

    PySAL 1.13.0

    Enhancements

    • Spatial Interaction: New primer
    • visualization: geoplot: geotable-enabled plotting with matplotlib and bokeh backends, providing a high-level layer to integrate PySAL geometries in the plotting workflow. Choropleth mapping supported using palettable.

    This is a rolling release consisting of enhancements, bug fixes, and documentation updates including 77 commits, 7 closed pull requests and 31 issues since the last release.

    Python Spatial Analysis Library

    image

    image

    PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.

    LISA Maps of US County Homicide Rates

    Above: Local Indicators of Spatial Association for Homicide Rates in US Counties 1990.

    PySAL modules

    • pysal.cg Computational geometry
    • pysal.contrib Contributed modules
    • pysal.core Core data structures and IO
    • pysal.esda Exploratory spatial data analysis
    • pysal.examples Data sets
    • pysal.inequality Spatial inequality analysis
    • pysal.network Spatial analysis on networks
    • pysal.region Spatially constrained clustering
    • pysal.spatial_dynamics Spatial dynamics
    • pysal.spreg Spatial econometrics and diagnostics
    • pysal.weights Spatial weights

    Installation

    PySAL can be installed using pip:

    $ pip install pysal
    

    PySAL is also available through Anaconda and Enthought Canopy.

    Documentation

    For help on using PySAL, check out the following resources:

    Development

    PySAL development is hosted on github.

    Discussions of development occurs on the developer list as well as gitter.

    Getting Involved

    If you are interested in contributing to PySAL please see our development guidelines.

    Bug reports

    To search for or report bugs, please see PySAL's issues.

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(Sep 26, 2016)

    PySAL 1.12.0

    Enhancements

    • Numerically roubst centroid computation (possibly resolves #767)
    • Moran plot function
    • Bugfix of Distance Band Weights where named weights failed because indexing was not label-based
    • GSOC weights
      • from_iterable/array: weights from any geo-interfaced iterable collection
      • from_shapefile: supersedes weights.*_from_shapefile
      • from_dataframe: weights from any dataframe-like with column with geometric elements
      • from_? others
      • incorporated @jlaura's optimized contiguity builder
    • Geotable module - extending the shapely extension to apply tabularly, and add some adapters between geopandas and pysal+pandas
    • GSOC esda
      • all methods now take series/frames natively
      • by_col method for bulk computation over a specific dataframe
      • to_df for file handles with tabular dimensions
      • .make partial application for classifiers
    • Numba autojit
    • Soft dependency testing for pysal+
    • sparse distance band weights code
    • Network docfixes
    • GSOC spint
      • spatial interaction OD weights -vector-based Moran's I
      • sparse generalized linear modeling (GLM) module
      • unconstrained, production-constrained, attraction-constrained, and doubly-constrained gravity-type spatial interaction models (calibrated using Poisson GLM)
      • Tests for overdispersion of Poisson GLM

    This is a rolling release consisting of enhancements, bug fixes, and documentation updates including 277 commits, 33 closed pull requests and 67 issues since the last release.

    Python Spatial Analysis Library

    image

    image

    PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.

    LISA Maps of US County Homicide Rates

    Above: Local Indicators of Spatial Association for Homicide Rates in US Counties 1990.

    PySAL modules

    • pysal.cg Computational geometry
    • pysal.contrib Contributed modules
    • pysal.core Core data structures and IO
    • pysal.esda Exploratory spatial data analysis
    • pysal.examples Data sets
    • pysal.inequality Spatial inequality analysis
    • pysal.network Spatial analysis on networks
    • pysal.region Spatially constrained clustering
    • pysal.spatial_dynamics Spatial dynamics
    • pysal.spreg Spatial econometrics and diagnostics
    • pysal.weights Spatial weights

    Installation

    PySAL can be installed using pip:

    $ pip install pysal
    

    PySAL is also available through Anaconda and Enthought Canopy.

    Documentation

    For help on using PySAL, check out the following resources:

    Development

    PySAL development is hosted on github.

    Discussions of development occurs on the developer list as well as gitter.

    Getting Involved

    If you are interested in contributing to PySAL please see our development guidelines.

    Bug reports

    To search for or report bugs, please see PySAL's issues.

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Source code(tar.gz)
    Source code(zip)
  • v1.11.2(May 18, 2016)

    PySAL 1.11.2 is the second rolling release of PySAL following twelve previous time-specified releases.

    Enhancements

    This is primarily a maintenance release consisting of bug fixes and documentation updates including 35 commits and the closing of 14 issues since the last release.

    Python Spatial Analysis Library

    image

    image

    PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.

    LISA Maps of US County Homicide Rates

    Above: Local Indicators of Spatial Association for Homicide Rates in US Counties 1990.

    PySAL modules

    • pysal.cg Computational geometry
    • pysal.contrib Contributed modules
    • pysal.core Core data structures and IO
    • pysal.esda Exploratory spatial data analysis
    • pysal.examples Data sets
    • pysal.inequality Spatial inequality analysis
    • pysal.network Spatial analysis on networks
    • pysal.region Spatially constrained clustering
    • pysal.spatial_dynamics Spatial dynamics
    • pysal.spreg Spatial econometrics and diagnostics
    • pysal.weights Spatial weights

    Installation

    PySAL can be installed using pip:

    $ pip install pysal
    

    PySAL is also available through Anaconda and Enthought Canopy.

    Documentation

    For help on using PySAL, check out the following resources:

    Development

    PySAL development is hosted on github.

    Discussions of development occurs on the developer list as well as gitter.

    Getting Involved

    If you are interested in contributing to PySAL please see our development guidelines.

    Bug reports

    To search for or report bugs, please see PySAL's issues.

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Source code(tar.gz)
    Source code(zip)
  • v1.11.1(Apr 6, 2016)

    PySAL 1.11.1, is the first rolling release of PySAL following twelve previous time-specified releases.

    Enhancements

    • Enhanced dynamic map classification system
    • Well Known Binary support
    • Spatial lag for categorical variables
    • Unpinning from SciPy 0.16

    Among the 66 commits and bug fixes since the last release since the last release.

    Python Spatial Analysis Library

    image

    image

    PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.

    LISA Maps of US County Homicide Rates

    Above: Local Indicators of Spatial Association for Homicide Rates in US Counties 1990.

    PySAL modules

    • pysal.cg Computational geometry
    • pysal.contrib Contributed modules
    • pysal.core Core data structures and IO
    • pysal.esda Exploratory spatial data analysis
    • pysal.examples Data sets
    • pysal.inequality Spatial inequality analysis
    • pysal.network Spatial analysis on networks
    • pysal.region Spatially constrained clustering
    • pysal.spatial_dynamics Spatial dynamics
    • pysal.spreg Spatial econometrics and diagnostics
    • pysal.weights Spatial weights

    Installation

    PySAL can be installed using pip:

    $ pip install pysal
    

    PySAL is also available through Anaconda and Enthought Canopy.

    Documentation

    For help on using PySAL, check out the following resources:

    Development

    PySAL development is hosted on github.

    Discussions of development occurs on the developer list as well as gitter.

    Getting Involved

    If you are interested in contributing to PySAL please see our development guidelines.

    Bug reports

    To search for or report bugs, please see PySAL's issues.

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Source code(tar.gz)
    Source code(zip)
  • v1.11.0(Jan 28, 2016)

    PySAL 1.11, the twelfth official release of PySAL, brings the following key enhancements:

    Python 3 Support

    PySAL now supports Python 3.4+ in addition to Python 2.7.

    Enhancements

    • Bivariate Local Moran class to compute local bivariate spatial correlations (esda.Local_Moran_BV)
    • by_col_array to extract an array of attributes from file handlers in a more concise way.
    • Seemingly Unrelated Regression with test for spatial error autocorrelation and coefficient homogeneity, LR and LM test on off-diagonal elements (spreg.SUR)
    • Three-Stage Least-Squares Regression with test for coefficient homogeneity (spreg.ThreeSLS)
    • Spatial lag SUR using Three-Stage Least-Squares, with test on coefficient homogeneity and joint significance of spatial autocorrelation (spreg.SURlagIV)
    • Spatial error SUR using ML w/ LR test on spatial error paramter, off diagonal elements, and coefficient homogeneity; as well as optional asymptotic variance and tests on the spatial error parameter, homogeneity, and joint significance tests (spreg.SURerrorML)
    • New Maximum Likelihood estimation options using sparse LU decomposition (spreg.MLerror)
    • Optional, soft-dependency Pandas wrappers around PySAL IO (pdio, contrib.pdutilities)
    • Optional, soft-dependency single-class Patsy/Pandas wrapper for parametric models in PySAL (contrib.handler)
    • Spatial Interaction Module, with frameworks for Unconstrained, Origin-Constrained, Destination-Constrained, and Doubly-Constrained Spatial Interaction models (requires Pandas) (contrib.spint)

    Among the 216 commits and bug fixes since the last release, 6 months ago.

    Python Spatial Analysis Library

    image

    image

    PySAL is an open source cross-platform library of spatial analysis functions written in Python. It is intended to support the development of high level applications for spatial analysis.

    LISA Maps of US County Homicide Rates

    Above: Local Indicators of Spatial Association for Homicide Rates in US Counties 1990.

    PySAL modules

    • pysal.cg Computational geometry
    • pysal.contrib Contributed modules
    • pysal.core Core data structures and IO
    • pysal.esda Exploratory spatial data analysis
    • pysal.examples Data sets
    • pysal.inequality Spatial inequality analysis
    • pysal.network Spatial analysis on networks
    • pysal.region Spatially constrained clustering
    • pysal.spatial_dynamics Spatial dynamics
    • pysal.spreg Spatial econometrics and diagnostics
    • pysal.weights Spatial weights

    Installation

    PySAL can be installed using pip:

    $ pip install pysal
    

    PySAL is also available through Anaconda and Enthought Canopy.

    Documentation

    For help on using PySAL, check out the following resources:

    Development

    PySAL development is hosted on github.

    Discussions of development occurs on the developer list as well as gitter.

    Getting Involved

    If you are interested in contributing to PySAL please see our development guidelines.

    Bug reports

    To search for or report bugs, please see PySAL's issues.

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Source code(tar.gz)
    Source code(zip)
  • v1.10(Jul 30, 2015)

    PySAL is a library of tools for spatial data analysis and geocomputation written in Python.

    PySAL 1.10, the eleventh official release of PySAL, brings the following key enhancements:

    Inequality (inequality)

    • Isolation and Theil indices added

    Network (network)

    • Optimized snapping of points to network (exam-ples)

    Open Data module (contrib.opendata)

    • Tools for extracting information through Google Places API

    Visualization (contrib.viz)

    • LISA scatter plot and maps (example)
    • enhanced folium support (example)

    Pandas utilities (contrib.pdutilities)

    • New module with utilities for interfacing with pandas.DataFrame objects and database files

    Spatial interaction models (contrib.spint)

    • spatial interaction modeling package

    Examples (examples)

    • new methods to expose and explore built-in example datasets

    Among the 334 commits and bug fixes since the last release, 6 months ago.

    PySAL modules

    * pysal.core — Core Data Structures and IO
    * pysal.cg — Computational Geometry
    * pysal.esda — Exploratory Spatial Data Analysis
    * pysal.inequality — Spatial Inequality Analysis
    * pysal.network — Spatial Analysis on Networks 
    * pysal.spatial_dynamics — Spatial Dynamics
    * pysal.spreg - Regression and Diagnostics
    * pysal.region — Spatially Constrained Clustering
    * pysal.weights — Spatial Weights
    * pysal.FileIO — PySAL FileIO: Module for reading and writing various file types in a Pythonic way
    * pysal.contrib — Contributed modules that use optional dependencies for extensions of PySAL
    

    Downloads

    Source distributions are available at http://pypi.python.org/pypi/PySAL

    PySAL is available through the Anaconda and Enthought Canopy Python distributions.

    Documentation

    The documentation site is here http://pythonhosted.org/PySAL/

    Other resources for learning about PySAL

    Web sites

    PySAL's home is here http://pysal.org/

    The developer's site is here https://github.com/pysal/pysal

    Mailing Lists

    Please see the developer's list here http://groups.google.com/group/pysal-dev

    Help for users is here http://groups.google.com/group/openspace-list

    Bug reports and feature requests

    To search for or report bugs, as well as request enhancements, please see https://github.com/pysal/pysal/issues

    License information

    See the file "LICENSE.txt" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

    Many thanks to all who contributed!

    Source code(tar.gz)
    Source code(zip)
Owner
Python Spatial Analysis Library
Python Spatial Analysis Library
Google Maps keeps old satellite imagery around for a while – this tool collects what's available for a user-specified region in the form of a GIF.

google-maps-at-88-mph The folks maintaining Google Maps regularly update the satellite imagery it serves its users, but outdated versions of the image

Noah Doersing 111 Sep 27, 2022
Get Landsat surface reflectance time-series from google earth engine

geextract Google Earth Engine data extraction tool. Quickly obtain Landsat multispectral time-series for exploratory analysis and algorithm testing On

Loïc Dutrieux 50 Dec 15, 2022
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
LicenseLocation - License Location With Python

LicenseLocation Hi,everyone! ❤ 🧡 💛 💚 💙 💜 This is my first project! ✔ Actual

The Bin 1 Jan 25, 2022
A ready-to-use curated list of Spectral Indices for Remote Sensing applications.

A ready-to-use curated list of Spectral Indices for Remote Sensing applications. GitHub: https://github.com/davemlz/awesome-ee-spectral-indices Docume

David Montero Loaiza 488 Jan 03, 2023
Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot

Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot without any prior knowledge about the position of the receiver and only coarse knowledge about the time.

Jonas Beuchert 2 Nov 17, 2022
Automated download of LANDSAT data from USGS website

LANDSAT-Download It seems USGS has changed the structure of its data, and so far, I have not been able to find the direct links to the products? Help

Olivier Hagolle 197 Dec 30, 2022
Implemented a Google Maps prototype that provides the shortest route in terms of distance

Implemented a Google Maps prototype that provides the shortest route in terms of distance, the fastest route, the route with the fewest turns, and a scenic route that avoids roads when provided a sou

1 Dec 26, 2021
Client library for interfacing with USGS datasets

USGS API USGS is a python module for interfacing with the US Geological Survey's API. It provides submodules to interact with various endpoints, and c

Amit Kapadia 104 Dec 30, 2022
Manage your XYZ Hub or HERE Data Hub spaces from Python.

XYZ Spaces for Python Manage your XYZ Hub or HERE Data Hub spaces and Interactive Map Layer from Python. FEATURED IN: Online Python Machine Learning C

HERE Technologies 30 Oct 18, 2022
A toolbox for processing earth observation data with Python.

eo-box eobox is a Python package with a small collection of tools for working with Remote Sensing / Earth Observation data. Package Overview So far, t

13 Jan 06, 2022
leafmap - A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

A Python package for geospatial analysis and interactive mapping with minimal coding in a Jupyter environment

Qiusheng Wu 1.4k Jan 02, 2023
Creates 3D geometries from 2D vector graphics, for use in geodynamic models

geomIO - creating 3D geometries from 2D input This is the Julia and Python version of geomIO, a free open source software to generate 3D volumes and s

3 Feb 01, 2022
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
Python bindings to libpostal for fast international address parsing/normalization

pypostal These are the official Python bindings to https://github.com/openvenues/libpostal, a fast statistical parser/normalizer for street addresses

openvenues 651 Dec 16, 2022
A compilation of several single-beam bathymetry surveys of the Caribbean

Caribbean - Single-beam bathymetry This dataset is a compilation of several single-beam bathymetry surveys of the Caribbean ocean displaying a wide ra

Fatiando a Terra Datasets 0 Jan 20, 2022
Manipulation and analysis of geometric objects

Shapely Manipulation and analysis of geometric objects in the Cartesian plane. Shapely is a BSD-licensed Python package for manipulation and analysis

3.1k Jan 03, 2023
Yet Another Time Series Model

Yet Another Timeseries Model (YATSM) master v0.6.x-maintenance Build Coverage Docs DOI | About Yet Another Timeseries Model (YATSM) is a Python packag

Chris Holden 60 Sep 13, 2022
framework for large-scale SAR satellite data processing

pyroSAR A Python Framework for Large-Scale SAR Satellite Data Processing The pyroSAR package aims at providing a complete solution for the scalable or

John Truckenbrodt 389 Dec 21, 2022
a Geolocator made in python

Geolocator A Geolocator made in python ✨ Features locates ur location using ur ip thats it! 💁‍♀️ How to use first download the locator.py file instal

Portgas D Ace 1 Oct 27, 2021