Pysal

Latest version: v24.7

Safety actively analyzes 685838 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 7

2.4.0

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](https://pysal.org/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](https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1467-9787.2011.00743.x) and [Wei, Rey, and Knaap, 2020](https://www.tandfonline.com/doi/abs/10.1080/13658816.2020.1759806?journalCode=tgis20))
* 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](https://www.jstor.org/stable/622300?casa_token=QITLwNVUPj4AAAAA%3AKXYVQHrdeAtefxZKkvxxUrWA_QCedSJrZwQD36F16Jfqx7Vq47uu1G_vp9I085Iozy_roZ_Dh6qQopZ6yXjfPsy4Y2aBqso-l0wZS2YqNv9pkh1JNXc&seq=1#metadata_info_tab_contents)
and [Openshaw and Rao, 1995](https://journals.sagepub.com/doi/abs/10.1068/a270425))
* 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](https://www.tandfonline.com/doi/full/10.1080/13658810600665111?casa_token=ovYjEkDDjbAAAAAA%3AjX8FMJWkrJDbSy8nmGiCOUFV6Fl-5KAhDibrQ89qqEpM4HvJ5wyNsrn7_x5qOwLmauKIh-RUdfZm))
* 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](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html))


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](https://onlinelibrary.wiley.com/doi/pdf/10.1111/j.1538-4632.1998.tb00406.x).

spreg

Thanks to the Google Summer of Code 2020 led by [paboloestrada](https://github.com/pabloestradac), 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](https://github.com/pysal/spaghetti/pull/535) for how network segments were being split (raised in [#526](https://github.com/pysal/spaghetti/issues/526)) and additions to several notebooks ([spatial network segmentation](https://pysal.org/spaghetti/notebooks/network-segmentation.html#Large-synthetic-clusters), [caveats](https://pysal.org/spaghetti/tutorials.html), and [network-constrained spatial autocorrelation](https://pysal.org/spaghetti/notebooks/network-spatial-autocorrelation.html#A-highly-clustered-synthetic-example)). 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

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

2.3.0

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


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


<a name="inequality"></a>
inequality


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


<a name="segregation"></a>
segregation
* [147:](https://github.com/pysal/segregation/pull/147) update crs checking for newer pyproj
* [96:](https://github.com/pysal/segregation/issues/96) warn for indices that expect certain projections
* [145:](https://github.com/pysal/segregation/issues/145) update tests to use new libpysal examples
* [134:](https://github.com/pysal/segregation/issues/134) Add Bibtex citation in readme
* [143:](https://github.com/pysal/segregation/issues/143) segregation raising warning in pysal meta package


<a name="spaghetti"></a>
spaghetti
* [487:](https://github.com/pysal/spaghetti/issues/487) GHA for release and publish
* [489:](https://github.com/pysal/spaghetti/pull/489) Attempting GHA release workflow #2
* [488:](https://github.com/pysal/spaghetti/pull/488) Attempting GHA release workflow

2.2.2

* [122:](https://github.com/pysal/giddy/pull/122) remove the parameter in plt.show() due to the API change in Matplotlib (deprecation)
* [119:](https://github.com/pysal/giddy/issues/119) development guidelines link in README.md
* [118:](https://github.com/pysal/giddy/pull/118) BUG: Fix for correct handling of ties in Tau
* [120:](https://github.com/pysal/giddy/pull/120) resolving broken dev link
* [117:](https://github.com/pysal/giddy/issues/117) initialization of ECount parameter in Kendall's Tau
* [116:](https://github.com/pysal/giddy/pull/116) (bug) debug travis-ci


<a name="inequality"></a>
inequality


<a name="pointpats"></a>
pointpats


<a name="segregation"></a>
segregation


<a name="spaghetti"></a>
spaghetti
* [350:](https://github.com/pysal/spaghetti/pull/350) Revert "order analysis.py classes/functions alphabetically"
* [349:](https://github.com/pysal/spaghetti/pull/349) order analysis.py classes/functions alphabetically
* [347:](https://github.com/pysal/spaghetti/pull/347) updating requirement_dev.txt
* [348:](https://github.com/pysal/spaghetti/pull/348) update README.md
* [343:](https://github.com/pysal/spaghetti/issues/343) tarball jobs failing on Travis
* [344:](https://github.com/pysal/spaghetti/pull/344) updating README.md
* [339:](https://github.com/pysal/spaghetti/pull/339) links in the docs,reviewed
* [336:](https://github.com/pysal/spaghetti/issues/336) automatically generate docstrings for class members
* [337:](https://github.com/pysal/spaghetti/pull/337) Update docs
* [335:](https://github.com/pysal/spaghetti/pull/335) Updating .travis.yml
* [334:](https://github.com/pysal/spaghetti/pull/334) fix indentation in `.travis.yml`
* [331:](https://github.com/pysal/spaghetti/pull/331) update README.md badges
* [327:](https://github.com/pysal/spaghetti/issues/327) Citation stipulation for notebooks
* [329:](https://github.com/pysal/spaghetti/pull/329) Notebooks update part 2
* [328:](https://github.com/pysal/spaghetti/pull/328) Notebooks update
* [324:](https://github.com/pysal/spaghetti/issues/324) update email address in notebooks
* [325:](https://github.com/pysal/spaghetti/issues/325) Plotting error in Facility_Location.ipynb
* [326:](https://github.com/pysal/spaghetti/pull/326) Updating Notebooks
* [323:](https://github.com/pysal/spaghetti/issues/323) module 'pysal.explore.spaghetti' has no attribute 'element_as_gdf'
* [318:](https://github.com/pysal/spaghetti/issues/318) [ENH] util.compute_length() — DRY
* [319:](https://github.com/pysal/spaghetti/pull/319) swapping out distance calculation function
* [317:](https://github.com/pysal/spaghetti/pull/317) adjusting snapping image in README.md
* [315:](https://github.com/pysal/spaghetti/issues/315) inaccurate documentation — Network.split_arcs()
* [316:](https://github.com/pysal/spaghetti/pull/316) Split arcs update
* [313:](https://github.com/pysal/spaghetti/issues/313) streamline badges in README.md
* [314:](https://github.com/pysal/spaghetti/pull/314) streaming badges on README.md
* [312:](https://github.com/pysal/spaghetti/pull/312) adding +travis to notification recipients
* [309:](https://github.com/pysal/spaghetti/issues/309) broken "development guidelines" link
* [311:](https://github.com/pysal/spaghetti/pull/311) updating broken dev link
* [299:](https://github.com/pysal/spaghetti/issues/299) Update Travis CI schema
* [308:](https://github.com/pysal/spaghetti/pull/308) Update travis CI for new testing schema
* [310:](https://github.com/pysal/spaghetti/pull/310) adding static docs badge
* [288:](https://github.com/pysal/spaghetti/issues/288) mock c modules for doc dependencies
* [306:](https://github.com/pysal/spaghetti/issues/306) doi missing from citation
* [307:](https://github.com/pysal/spaghetti/pull/307) adding Zenodo DOI to README.md and website
* [305:](https://github.com/pysal/spaghetti/pull/305) blackify setup.py
* [301:](https://github.com/pysal/spaghetti/issues/301) Change Read the Docs to GitHub?
* [304:](https://github.com/pysal/spaghetti/pull/304) updating README to reflect GitHub docs
* [303:](https://github.com/pysal/spaghetti/pull/303) switching to github docs as per #301
* [302:](https://github.com/pysal/spaghetti/issues/302) get_versions() function
* [293:](https://github.com/pysal/spaghetti/issues/293) code formatting with black
* [300:](https://github.com/pysal/spaghetti/pull/300) blackifying code (#293)


<a name="mgwr"></a>
mgwr


<a name="spglm"></a>
spglm


<a name="spint"></a>
spint


<a name="spreg"></a>
spreg


<a name="spvcm"></a>
spvcm


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


<a name="mapclassify"></a>
mapclassify
* [54:](https://github.com/pysal/mapclassify/pull/54) 2.2
* [53:](https://github.com/pysal/mapclassify/pull/53) 2.2
* [52:](https://github.com/pysal/mapclassify/issues/52) conda-forge UnsatisfiableError on windows and python 3.7
* [49:](https://github.com/pysal/mapclassify/pull/49) [MAINT] updating supported Python versions in setup.py
* [46:](https://github.com/pysal/mapclassify/pull/46) BUG: RecursiveError in HeadTailBreaks
* [45:](https://github.com/pysal/mapclassify/issues/45) BUG: HeadTailBreaks raise RecursionError
* [47:](https://github.com/pysal/mapclassify/pull/47) BUG: UserDefined accepts only list if max not in bins
* [44:](https://github.com/pysal/mapclassify/pull/44) BUG: avoid deprecation warning in HeadTailBreaks
* [42:](https://github.com/pysal/mapclassify/issues/42) remove docs badge
* [43:](https://github.com/pysal/mapclassify/pull/43) Remove doc badge
* [41:](https://github.com/pysal/mapclassify/pull/41) Docs: moving to project pages on github and off rtd


<a name="splot"></a>
splot
* [83:](https://github.com/pysal/splot/issues/83) [BUG] vba_choropleth failure
* [95:](https://github.com/pysal/splot/pull/95) BUG: Fix breakage due to mapclassify deprecation
* [93:](https://github.com/pysal/splot/pull/93) addressing pysal/pysal#1145 & adapting testing examples
* [89:](https://github.com/pysal/splot/pull/89) Fix docstring for plot_spatial_weights
* [59:](https://github.com/pysal/splot/issues/59) JOSS paper submission
* [87:](https://github.com/pysal/splot/pull/87) Fix format for multiple citations in JOSS paper
* [86:](https://github.com/pysal/splot/pull/86) Joss paper, finalise title
* [62:](https://github.com/pysal/splot/pull/62) [JOSS] work on `paper.md`
* [85:](https://github.com/pysal/splot/pull/85) [ENH] change doc badge to latest doc
* [84:](https://github.com/pysal/splot/pull/84) [BUG] require geopandas>=0.4.0,<=0.6.0rc1 for vba_choropleth testing
* [82:](https://github.com/pysal/splot/issues/82) `plot_moran_simulation` weird dimensions

<a name="summary-statistics"></a>
Summary Statistics

<a name="package-activity"></a>
Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th>package</th>
<th>commits</th>
<th>total issues</th>
<th>pulls</th>
</tr>
</thead>
<tbody>
<tr>
<td>tobler</td>
<td>178</td>
<td>38</td>
<td>29</td>
</tr>
<tr>
<td>spaghetti</td>
<td>172</td>
<td>42</td>
<td>25</td>
</tr>
<tr>
<td>libpysal</td>
<td>170</td>
<td>43</td>
<td>24</td>
</tr>
<tr>
<td>splot</td>
<td>42</td>
<td>11</td>
<td>8</td>
</tr>
<tr>
<td>mapclassify</td>
<td>32</td>
<td>11</td>
<td>8</td>
</tr>
<tr>
<td>giddy</td>
<td>31</td>
<td>10</td>
<td>7</td>
</tr>
<tr>
<td>esda</td>
<td>21</td>
<td>8</td>
<td>4</td>
</tr>
<tr>
<td>inequality</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>pointpats</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>segregation</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>mgwr</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spglm</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spint</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spreg</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spvcm</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>

<a name="contributor-activity"></a>
Contributor Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>commits</th>
</tr>
</thead>
<tbody>
<tr>
<th>Eli Knaap</th>
<td>98</td>
</tr>
<tr>
<th>James Gaboardi</th>
<td>217</td>
</tr>
<tr>
<th>Leonardo Uieda</th>
<td>1</td>
</tr>
<tr>
<th>Levi John Wolf</th>
<td>7</td>
</tr>
<tr>
<th>Martin Fleischmann</th>
<td>4</td>
</tr>
<tr>
<th>Rahul799</th>
<td>2</td>
</tr>
<tr>
<th>Renan Xavier Cortes</th>
<td>41</td>
</tr>
<tr>
<th>Serge Rey</th>
<td>176</td>
</tr>
<tr>
<th>Siddharths8212376</th>
<td>2</td>
</tr>
<tr>
<th>Stefanie Lumnitz</th>
<td>24</td>
</tr>
<tr>
<th>Wei Kang</th>
<td>35</td>
</tr>
</tbody>
</table>

<a name="contributor-by-package-activity"></a>
Contributor by Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Serge Rey</th>
<th>James Gaboardi</th>
<th>Levi John Wolf</th>
<th>Wei Kang</th>
<th>Siddharths8212376</th>
<th>Rahul799</th>
<th>Eli Knaap</th>
<th>Renan Xavier Cortes</th>
<th>Martin Fleischmann</th>
<th>Stefanie Lumnitz</th>
<th>Leonardo Uieda</th>
</tr>
</thead>
<tbody>
<tr>
<th>libpysal.libpysal</th>
<td>116</td>
<td>43</td>
<td>3</td>
<td>6</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.esda</th>
<td>5</td>
<td>9</td>
<td>3</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.giddy</th>
<td>2</td>
<td>3</td>
<td>0</td>
<td>23</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.inequality</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.pointpats</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.segregation</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.spaghetti</th>
<td>0</td>
<td>152</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.mgwr</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.spglm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.spint</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.spreg</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.spvcm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.tobler</th>
<td>31</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>98</td>
<td>41</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.mapclassify</th>
<td>21</td>
<td>3</td>
<td>0</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>3</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>libpysal.splot</th>
<td>1</td>
<td>7</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>24</td>
<td>1</td>
</tr>
</tbody>
</table>

2.2.0

Meta-package looses 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 subpackages 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](https://github.com/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 Notebookss.
* [pysal/mapclassify](https://github.com/pysal/mapclassify): Choropleth legend formatting has been enhanced to permit more granular control of legends.
* others here
* and here
* and here


Changes by Package

Overall, there were 646 commits that closed 163 issues, together with 105 pull requests since our last release on 2019-07-29.


<a name="libpysal"></a>
libpysal
* [216:](https://github.com/pysal/libpysal/issues/216) alpha_shapes docs not rendering
* [217:](https://github.com/pysal/libpysal/pull/217) corrected docstrings in cg.alpha_shapes.py
* [211:](https://github.com/pysal/libpysal/pull/211) Updating requirements
* [174:](https://github.com/pysal/libpysal/issues/174) Big tarball
* [176:](https://github.com/pysal/libpysal/pull/176) Fetch
* [125:](https://github.com/pysal/libpysal/pull/125) metadata for examples
* [209:](https://github.com/pysal/libpysal/pull/209) DOC: math rendering in sphinx, and members included for W
* [210:](https://github.com/pysal/libpysal/pull/210) (docs) automatically generate docstrings for class members
* [207:](https://github.com/pysal/libpysal/pull/207) (docs) keep file .nojekyll in docs when syncing between docs/ and docsrc/_build/html/
* [206:](https://github.com/pysal/libpysal/pull/206) (bug) replace silent_island_warning with silence_warnings for weights
* [205:](https://github.com/pysal/libpysal/issues/205) Documentation does not work
* [203:](https://github.com/pysal/libpysal/pull/203) updating cg.standalone.distance_matrix docs
* [195:](https://github.com/pysal/libpysal/issues/195) error message in cg.standalone.distance_matrix()
* [202:](https://github.com/pysal/libpysal/pull/202) improved docs in io.util.shapefile
* [201:](https://github.com/pysal/libpysal/pull/201) [ENH] moving jit import to common.py / improve documentation
* [199:](https://github.com/pysal/libpysal/issues/199) rearrange shapely import in cg.alpha_shapes
* [200:](https://github.com/pysal/libpysal/pull/200) fix quasi-redundant import of shapely
* [196:](https://github.com/pysal/libpysal/pull/196) Remove more relics (from pre-reorg PySAL)
* [197:](https://github.com/pysal/libpysal/issues/197) [BUG] alpha_shapes/shapely import error
* [198:](https://github.com/pysal/libpysal/pull/198) [BUG] correcting shapely import bug
* [194:](https://github.com/pysal/libpysal/issues/194) README.txt refers to pre-reorg PySAL
* [147:](https://github.com/pysal/libpysal/issues/147) remove `distribute_setup.py`?
* [128:](https://github.com/pysal/libpysal/issues/128) requires() decorator for libpysal.cg.alpha_shapes
* [129:](https://github.com/pysal/libpysal/pull/129) decorating functions with requires()
* [193:](https://github.com/pysal/libpysal/pull/193) [WIP] removing unused relics
* [191:](https://github.com/pysal/libpysal/issues/191) necessity of libpysal.common.iteritems()?
* [192:](https://github.com/pysal/libpysal/pull/192) removing iteritems decorator
* [189:](https://github.com/pysal/libpysal/issues/189) Voronoi results in weights of different shape than input points
* [190:](https://github.com/pysal/libpysal/pull/190) BUG: alpha_shape_auto can fail to contain all points in the set.
* [185:](https://github.com/pysal/libpysal/issues/185) WSP(sparse).to_W() has `array`s in weights,neighbors dictionaries, rather than lists.
* [186:](https://github.com/pysal/libpysal/pull/186) Cast arrays as lists (Issue 185)
* [188:](https://github.com/pysal/libpysal/pull/188) BUG: Update for geopandas use of GeometryArray
* [187:](https://github.com/pysal/libpysal/pull/187) Updated documentation error (link incorrectly specified) in README.rst
* [182:](https://github.com/pysal/libpysal/pull/182) Docs: badges for pypi
* [178:](https://github.com/pysal/libpysal/issues/178) development guidelines link failure
* [181:](https://github.com/pysal/libpysal/pull/181) DOCS: moving off rtd
* [180:](https://github.com/pysal/libpysal/pull/180) REL 4.1.1 bf release
* [179:](https://github.com/pysal/libpysal/pull/179) BUG: Updating manifest for additional requirements files
* [169:](https://github.com/pysal/libpysal/issues/169) libpysal 4.1.0 is not released on pypi or conda-forge
* [131:](https://github.com/pysal/libpysal/issues/131) addressing DeprecationWarning: fromstring()
* [175:](https://github.com/pysal/libpysal/pull/175) ENH: fromstring has been deprecated
* [132:](https://github.com/pysal/libpysal/pull/132) addressing DeprecationWarning: fromstring()
* [172:](https://github.com/pysal/libpysal/pull/172) Ci


<a name="esda"></a>
esda
* [87:](https://github.com/pysal/esda/issues/87) development guidelines link in README.md and README.rst
* [92:](https://github.com/pysal/esda/issues/92) `PYSAL_PYPI` is not defined in `.travis.yml`
* [93:](https://github.com/pysal/esda/pull/93) addressing #92 -- .travis.yml issue
* [88:](https://github.com/pysal/esda/pull/88) resolving dev guidelines link
* [80:](https://github.com/pysal/esda/issues/80) Update officially supported Python versions
* [74:](https://github.com/pysal/esda/pull/74) ENH - Join count tails
* [83:](https://github.com/pysal/esda/pull/83) DOC: Have notebooks show output in the src
* [82:](https://github.com/pysal/esda/issues/82) no output in documentation notebooks


<a name="giddy"></a>
giddy
* [126:](https://github.com/pysal/giddy/pull/126) travis CI: pip install from git clone
* [125:](https://github.com/pysal/giddy/pull/125) rewrite utility function "get_lower" using numpy's more efficient functionality
* [121:](https://github.com/pysal/giddy/issues/121) Release version 2.2.2 for bug fix

2.1.0

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


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


<a name="spreg"></a>
spreg
* [23:](https://github.com/pysal/spreg/issues/23) GM_Lag throws Singular Matrix error with high-dimension design matrix
* [21:](https://github.com/pysal/spreg/pull/21) MAINT: Fix for upcoming bump in scipy
* [22:](https://github.com/pysal/spreg/pull/22) xxxx


<a name="spglm"></a>
spglm
* [22:](https://github.com/pysal/spglm/pull/22) (docs) change to readthedocs v2
* [23:](https://github.com/pysal/spglm/pull/23) debug travis testing
* [21:](https://github.com/pysal/spglm/pull/21) transition to python 3.6 and 3.7


<a name="spint"></a>
spint


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


<a name="spvcm"></a>
spvcm

<a name="summary-statistics"></a>
Summary Statistics

<a name="package-activity"></a>
Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th>package</th>
<th>commits</th>
<th>total issues</th>
<th>pulls</th>
</tr>
</thead>
<tbody>
<tr>
<td>segregation</td>
<td>456</td>
<td>105</td>
<td>78</td>
</tr>
<tr>
<td>spaghetti</td>
<td>120</td>
<td>40</td>
<td>21</td>
</tr>
<tr>
<td>splot</td>
<td>95</td>
<td>25</td>
<td>16</td>
</tr>
<tr>
<td>libpysal</td>
<td>80</td>
<td>26</td>
<td>11</td>
</tr>
<tr>
<td>esda</td>
<td>67</td>
<td>9</td>
<td>7</td>
</tr>
<tr>
<td>mgwr</td>
<td>44</td>
<td>15</td>
<td>7</td>
</tr>
<tr>
<td>mapclassify</td>
<td>43</td>
<td>15</td>
<td>12</td>
</tr>
<tr>
<td>giddy</td>
<td>32</td>
<td>13</td>
<td>10</td>
</tr>
<tr>
<td>pointpats</td>
<td>25</td>
<td>7</td>
<td>7</td>
</tr>
<tr>
<td>spreg</td>
<td>16</td>
<td>3</td>
<td>1</td>
</tr>
<tr>
<td>spglm</td>
<td>14</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>inequality</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spint</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>spvcm</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>

<a name="contributor-activity"></a>
Contributor Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>commits</th>
</tr>
</thead>
<tbody>
<tr>
<th>Antti Härkönen</th>
<td>4</td>
</tr>
<tr>
<th>Dani Arribas-Bel</th>
<td>5</td>
</tr>
<tr>
<th>Eli Knaap</th>
<td>94</td>
</tr>
<tr>
<th>Elliott Sales De Andrade</th>
<td>2</td>
</tr>
<tr>
<th>Filipe Fernandes</th>
<td>3</td>
</tr>
<tr>
<th>James Gaboardi</th>
<td>175</td>
</tr>
<tr>
<th>Juan C Duque</th>
<td>8</td>
</tr>
<tr>
<th>Levi John Wolf</th>
<td>18</td>
</tr>
<tr>
<th>Martin Fleischmann</th>
<td>3</td>
</tr>
<tr>
<th>Renan Xavier Cortes</th>
<td>357</td>
</tr>
<tr>
<th>Serge Rey</th>
<td>86</td>
</tr>
<tr>
<th>Stefanie Lumnitz</th>
<td>63</td>
</tr>
<tr>
<th>Taylor Oshan</th>
<td>9</td>
</tr>
<tr>
<th>Tom Gertin</th>
<td>1</td>
</tr>
<tr>
<th>Wei Kang</th>
<td>135</td>
</tr>
<tr>
<th>Ziqi Li</th>
<td>24</td>
</tr>
</tbody>
</table>

<a name="contributor-by-package-activity"></a>
Contributor by Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Antti Härkönen</th>
<th>Dani Arribas-Bel</th>
<th>Eli Knaap</th>
<th>Elliott Sales De Andrade</th>
<th>Filipe Fernandes</th>
<th>James Gaboardi</th>
<th>Juan C Duque</th>
<th>Levi John Wolf</th>
<th>Martin Fleischmann</th>
<th>Renan Xavier Cortes</th>
<th>Serge Rey</th>
<th>Stefanie Lumnitz</th>
<th>Taylor Oshan</th>
<th>Tom Gertin</th>
<th>Wei Kang</th>
<th>Ziqi Li</th>
</tr>
</thead>
<tbody>
<tr>
<th>lib.libpysal</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>54</td>
<td>0</td>
<td>1</td>
<td>3</td>
<td>0</td>
<td>14</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>6</td>
<td>0</td>
</tr>
<tr>
<th>explore.esda</th>
<td>0</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>3</td>
<td>3</td>
<td>8</td>
<td>14</td>
<td>0</td>
<td>0</td>
<td>18</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>16</td>
<td>0</td>
</tr>
<tr>
<th>explore.giddy</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>27</td>
<td>0</td>
</tr>
<tr>
<th>explore.inequality</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>explore.pointpats</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>18</td>
<td>0</td>
</tr>
<tr>
<th>explore.spaghetti</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>97</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>21</td>
<td>0</td>
</tr>
<tr>
<th>explore.segregation</th>
<td>4</td>
<td>0</td>
<td>94</td>
<td>0</td>
<td>0</td>
<td>4</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>349</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>3</td>
<td>0</td>
</tr>
<tr>
<th>viz.mapclassify</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>41</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
</tr>
<tr>
<th>viz.splot</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>9</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>8</td>
<td>1</td>
<td>63</td>
<td>0</td>
<td>0</td>
<td>13</td>
<td>0</td>
</tr>
<tr>
<th>model.spreg</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>9</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>4</td>
<td>0</td>
</tr>
<tr>
<th>model.spglm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>5</td>
<td>0</td>
<td>9</td>
<td>0</td>
</tr>
<tr>
<th>model.spint</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>model.mgwr</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>4</td>
<td>0</td>
<td>16</td>
<td>24</td>
</tr>
<tr>
<th>model.spvcm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>

2.0.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 many bug fixes and optimizations.

<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
**Table of Contents**

- [Release Notes for PySAL 2.0](release-notes-for-pysal-20)
- [Major Changes](major-changes)
- [Entirely New Packages](entirely-new-packages)
- [Significant Enhancements to Existing Packages](significant-enhancements-to-existing-packages)
- [Changes by Package](changes-by-package)
- [libpysal](libpysal)
- [esda](esda)
- [giddy](giddy)
- [inequality](inequality)
- [pointpats](pointpats)
- [spaghetti](spaghetti)
- [mapclassify](mapclassify)
- [splot](splot)
- [spreg](spreg)
- [spglm](spglm)
- [spint](spint)
- [mgwr](mgwr)
- [spvcm](spvcm)
- [Summary Statistics](summary-statistics)
- [Package Activity](package-activity)
- [Contributor Activity](contributor-activity)
- [Contributor by Package Activity](contributor-by-package-activity)

<!-- markdown-toc end -->


<a name="major-changes"></a>
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](http://pysal.org/about.html#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`.


<a name="entirely-new-packages"></a>
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`](https://github.com/geopandas/geopandas). This is headed by our Google Summer of Code (2018) student, [Stefanie Lumnitz](https://github.com/slumnitz), and will be ongoing throughout the release candidate maturation cycle.
- `pointpats`, a package for the statistical analysis of point patterns, geographical colocation, and dispersion.

<a name="significant-enhancements-to-existing-packages"></a>
Significant Enhancements to Existing Packages

We've also had a ton of activity adding new features in our *submodules*:
- [alpha shapes](https://github.com/pysal/libpysal/blob/master/libpysal/cg/alpha_shapes.py), a fast implementation (numba-enabled) of the [original algorithm](https://ieeexplore.ieee.org/document/1056714) generalizing convex hulls to allow for non-convex hulls
- [Contiguity weights from voronoi tesselations/delaunay triangulation graphs](https://github.com/pysal/libpysal/blob/master/libpysal/weights/contiguity.py#L318) for point patterns
- [Fuzzy contiguity weights](https://github.com/pysal/libpysal/blob/master/libpysal/weights/util.py#L1328), for polygonal data where planarity is not strictly enforced (provided in part by [`geopandas`](https://github.com/geopandas/geopandas))
- A family of spatially explicit indicators of mobility association including the [inter- and intra-regional indicators](https://github.com/pysal/giddy/blob/master/giddy/rank.py#L798) as well as the [local indicators](https://github.com/pysal/giddy/blob/master/giddy/rank.py#L493). The inter- and intra-regional indicators provide a meso-level view on the exchange mobility pattern, shedding light on specific regions hosting frequent rank exchanges while the local indicators examine the concordance relationship between a focal spatial unit and its neighbors for revealing the role of space in shaping the exchange mobility pattern over time.
- [Categorical Spatial Markov](https://github.com/pysal/giddy/blob/master/giddy/markov.py#L200), a generalization of the Spatial_Markov class previously implemented to interrogate the role of space in shaping regional income distribution dynamics to incorporate direct variables. Here, the [categorical spatial lag](https://github.com/pysal/libpysal/blob/master/libpysal/weights/spatial_lag.py#L90) is adopted for formalizing the neighborhood.
- [Connected Components checks](https://github.com/pysal/libpysal/blob/2843eeaaff4efa0b1816077d9e76d15ccbd81929/libpysal/weights/weights.py#L340) for our spatial graph matrices
- [Pandas Adjacency list constructors](https://github.com/pysal/libpysal/blob/2843eeaaff4efa0b1816077d9e76d15ccbd81929/libpysal/weights/weights.py#L200) and [NetworkX adapters](https://github.com/pysal/libpysal/blob/2843eeaaff4efa0b1816077d9e76d15ccbd81929/libpysal/weights/weights.py#L265) for PySAL graph objects
- [Attach islands](https://github.com/pysal/libpysal/blob/master/libpysal/weights/util.py#L1280), tooling to merge isolated observations into existing spatial graphs
- [Construct Contiguity graphs from linestrings](https://github.com/pysal/libpysal/blob/ea2d44da797659904000e20ddbb0f3d52efd1ad2/libpysal/weights/tests/test_contiguity.py#L110), allowing for easy and fast access to road network data in PySAL



<a name="changes-by-package"></a>
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.

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


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


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


<a name="inequality"></a>
inequality
* Change setup to handle version pragmatically [(6)](https://github.com/pysal/inequality/pull/6)
* accounting for libpysal api changes in unittests [(5)](https://github.com/pysal/inequality/pull/5)
* missing parenthesis in call to print [(2)](https://github.com/pysal/inequality/issues/2)
* setting up dual testing [(4)](https://github.com/pysal/inequality/pull/4)
* 2to3 for _indices.py [(3)](https://github.com/pysal/inequality/pull/3)
* Initial setup [(1)](https://github.com/pysal/inequality/pull/1)


<a name="pointpats"></a>
pointpats
* add changelog for release 2.0.0 [(21)](https://github.com/pysal/pointpats/pull/21)
* remove api.py & adjust notebooks and doctests for changes in libpysal [(19)](https://github.com/pysal/pointpats/pull/19)
* version pointpats only in pointpats/__ini__.py [(18)](https://github.com/pysal/pointpats/pull/18)
* include /tests in the release [(17)](https://github.com/pysal/pointpats/pull/17)
* configure dual testing [(16)](https://github.com/pysal/pointpats/pull/16)
* install stable released libpysal for travis testing [(15)](https://github.com/pysal/pointpats/pull/15)
* force UTF8 encoding for the long description read [(14)](https://github.com/pysal/pointpats/pull/14)
* Prepare for the release [(13)](https://github.com/pysal/pointpats/pull/13)
* chore: libpysal is 3 only now so removing travis tests on python 2 [(12)](https://github.com/pysal/pointpats/pull/12)
* try removing conversion and see if this passes [(11)](https://github.com/pysal/pointpats/pull/11)


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


<a name="mapclassify"></a>
mapclassify
* fix doctests (interactive examples in inline docstrings) [(19)](https://github.com/pysal/mapclassify/pull/19)
* complete readthedocs configuration & add Slocum 2009 reference [(17)](https://github.com/pysal/mapclassify/pull/17)
* prepping for a doc based release [(15)](https://github.com/pysal/mapclassify/pull/15)
* new release on pypi [(10)](https://github.com/pysal/mapclassify/issues/10)
* prepare for release 2.0.0 [(13)](https://github.com/pysal/mapclassify/pull/13)
* Clean up for next pypi release [(12)](https://github.com/pysal/mapclassify/pull/12)
* move notebooks outside of the package [(11)](https://github.com/pysal/mapclassify/pull/11)
* ENH: move classifiers up into init [(9)](https://github.com/pysal/mapclassify/pull/9)
* Moving to python 3+ [(8)](https://github.com/pysal/mapclassify/pull/8)


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


<a name="spreg"></a>
spreg
* update docstrings for libpysal API changes [(9)](https://github.com/pysal/spreg/pull/9)
* Merging in spanel & spreg2 code necessary for new spatial panel & GeoDaSpace [(10)](https://github.com/pysal/spreg/pull/10)
* move to silence_warnings from current libpysal [(7)](https://github.com/pysal/spreg/pull/7)
* add init to ensure tests are shipped [(6)](https://github.com/pysal/spreg/pull/6)
* weights typechecking will only accept things from `pysal`. [(3)](https://github.com/pysal/spreg/issues/3)
* relax error checking in check_weights [(4)](https://github.com/pysal/spreg/pull/4)
* simplify testing [(5)](https://github.com/pysal/spreg/pull/5)
* Convert spreg to common subset 2,3 code [(2)](https://github.com/pysal/spreg/pull/2)


<a name="spglm"></a>
spglm
* fix docstrings (as well as some within interactive examples) [(14)](https://github.com/pysal/spglm/pull/14)
* Fix docs [(17)](https://github.com/pysal/spglm/pull/17)
* Submodule [(16)](https://github.com/pysal/spglm/pull/16)
* submodule_contract [(13)](https://github.com/pysal/spglm/pull/13)
* Inconsistent metadata in setup.py [(10)](https://github.com/pysal/spglm/issues/10)
* adapting spglm to new libpysal [(12)](https://github.com/pysal/spglm/pull/12)
* move to using libpysal.io.open rather than just libpysal.open [(11)](https://github.com/pysal/spglm/pull/11)
* Freeze [(8)](https://github.com/pysal/spglm/pull/8)
* add tr_S attribute for use in GWR [(7)](https://github.com/pysal/spglm/pull/7)
* remove pysal requirements [(6)](https://github.com/pysal/spglm/pull/6)
* remove v 2.x tests from CI [(5)](https://github.com/pysal/spglm/pull/5)
* houskeeping of new basefiles needed as a submodule [(4)](https://github.com/pysal/spglm/pull/4)


<a name="spint"></a>
spint
* add changelog [(15)](https://github.com/pysal/spint/pull/15)
* pypi files do not include tests [(9)](https://github.com/pysal/spint/issues/9)
* Submodule [(14)](https://github.com/pysal/spint/pull/14)
* adapting spint to newest version of libpysal [(13)](https://github.com/pysal/spint/pull/13)
* Reorg [(12)](https://github.com/pysal/spint/pull/12)
* spint has pysal as a dependency, should be libpysal [(2)](https://github.com/pysal/spint/issues/2)
* api.py syntax error [(10)](https://github.com/pysal/spint/issues/10)
* removed trailing api comma [(11)](https://github.com/pysal/spint/pull/11)
* Freeze [(8)](https://github.com/pysal/spint/pull/8)
* update dependencies [(7)](https://github.com/pysal/spint/pull/7)
* remove v 2.x test from CI [(6)](https://github.com/pysal/spint/pull/6)
* version bump [(5)](https://github.com/pysal/spint/pull/5)
* Common subset [(4)](https://github.com/pysal/spint/pull/4)
* houskeeping of basefiles needed for submodule [(3)](https://github.com/pysal/spint/pull/3)


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


<a name="spvcm"></a>
spvcm
* change the API to reflect up-to-date libpysal api [(7)](https://github.com/pysal/spvcm/pull/7)
* Test failures in effective size & geweke diagnostics [(2)](https://github.com/pysal/spvcm/issues/2)
* update plotting and diagnostics for pandas deprecation [(3)](https://github.com/pysal/spvcm/pull/3)

<a name="summary-statistics"></a>
Summary Statistics

<a name="package-activity"></a>
Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th>package</th>
<th>commits</th>
<th>total issues</th>
<th>pulls</th>
</tr>
</thead>
<tbody>
<tr>
<td>spaghetti</td>
<td>282</td>
<td>94</td>
<td>34</td>
</tr>
<tr>
<td>libpysal</td>
<td>276</td>
<td>79</td>
<td>57</td>
</tr>
<tr>
<td>splot</td>
<td>247</td>
<td>27</td>
<td>21</td>
</tr>
<tr>
<td>mgwr</td>
<td>245</td>
<td>39</td>
<td>24</td>
</tr>
<tr>
<td>giddy</td>
<td>137</td>
<td>38</td>
<td>31</td>
</tr>
<tr>
<td>esda</td>
<td>80</td>
<td>29</td>
<td>19</td>
</tr>
<tr>
<td>spglm</td>
<td>70</td>
<td>12</td>
<td>9</td>
</tr>
<tr>
<td>spint</td>
<td>63</td>
<td>14</td>
<td>11</td>
</tr>
<tr>
<td>spreg</td>
<td>57</td>
<td>8</td>
<td>6</td>
</tr>
<tr>
<td>spvcm</td>
<td>55</td>
<td>3</td>
<td>1</td>
</tr>
<tr>
<td>mapclassify</td>
<td>48</td>
<td>9</td>
<td>8</td>
</tr>
<tr>
<td>pointpats</td>
<td>40</td>
<td>10</td>
<td>10</td>
</tr>
<tr>
<td>inequality</td>
<td>36</td>
<td>6</td>
<td>5</td>
</tr>
</tbody>
</table>

<a name="contributor-activity"></a>
Contributor Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>commits</th>
</tr>
</thead>
<tbody>
<tr>
<th>Dani Arribas-Bel</th>
<td>25</td>
</tr>
<tr>
<th>Eli Knaap</th>
<td>14</td>
</tr>
<tr>
<th>Hu Shao</th>
<td>5</td>
</tr>
<tr>
<th>James Gaboardi</th>
<td>314</td>
</tr>
<tr>
<th>Jsignell</th>
<td>1</td>
</tr>
<tr>
<th>Levi John Wolf</th>
<td>262</td>
</tr>
<tr>
<th>Philip Kahn</th>
<td>2</td>
</tr>
<tr>
<th>Serge Rey</th>
<td>239</td>
</tr>
<tr>
<th>Stefanie Lumnitz</th>
<td>240</td>
</tr>
<tr>
<th>Taylor Oshan</th>
<td>243</td>
</tr>
<tr>
<th>Thequackdaddy</th>
<td>1</td>
</tr>
<tr>
<th>Wei Kang</th>
<td>225</td>
</tr>
<tr>
<th>Ziqi Li</th>
<td>51</td>
</tr>
</tbody>
</table>

<a name="contributor-by-package-activity"></a>
Contributor by Package Activity
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Dani Arribas-Bel</th>
<th>Eli Knaap</th>
<th>Hu Shao</th>
<th>James Gaboardi</th>
<th>Jsignell</th>
<th>Levi John Wolf</th>
<th>Philip Kahn</th>
<th>Serge Rey</th>
<th>Stefanie Lumnitz</th>
<th>Taylor Oshan</th>
<th>Thequackdaddy</th>
<th>Wei Kang</th>
<th>Ziqi Li</th>
</tr>
</thead>
<tbody>
<tr>
<th>lib.libpysal</th>
<td>19</td>
<td>12</td>
<td>0</td>
<td>8</td>
<td>0</td>
<td>112</td>
<td>0</td>
<td>101</td>
<td>2</td>
<td>4</td>
<td>0</td>
<td>18</td>
<td>0</td>
</tr>
<tr>
<th>explore.esda</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>11</td>
<td>0</td>
<td>50</td>
<td>10</td>
<td>0</td>
<td>0</td>
<td>8</td>
<td>0</td>
</tr>
<tr>
<th>explore.giddy</th>
<td>0</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>18</td>
<td>10</td>
<td>0</td>
<td>0</td>
<td>103</td>
<td>0</td>
</tr>
<tr>
<th>explore.inequality</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>20</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>11</td>
<td>0</td>
</tr>
<tr>
<th>explore.pointpats</th>
<td>0</td>
<td>0</td>
<td>5</td>
<td>0</td>
<td>0</td>
<td>7</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>26</td>
<td>0</td>
</tr>
<tr>
<th>explore.spaghetti</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>278</td>
<td>0</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<th>viz.mapclassify</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>3</td>
<td>0</td>
<td>22</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>23</td>
<td>0</td>
</tr>
<tr>
<th>viz.splot</th>
<td>6</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>9</td>
<td>0</td>
<td>7</td>
<td>218</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>model.spreg</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>40</td>
<td>0</td>
<td>17</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>model.spglm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>7</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>60</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<th>model.spint</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>7</td>
<td>0</td>
<td>9</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>42</td>
<td>0</td>
<td>4</td>
<td>0</td>
</tr>
<tr>
<th>model.mgwr</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>12</td>
<td>0</td>
<td>13</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>137</td>
<td>0</td>
<td>30</td>
<td>51</td>
</tr>
<tr>
<th>model.spvcm</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>52</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>

Page 2 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.