diff -Nru pysal-1.14.2/CHANGELOG.txt pysal-1.14.3/CHANGELOG.txt --- pysal-1.14.2/CHANGELOG.txt 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/CHANGELOG.txt 2017-11-03 00:27:09.000000000 +0000 @@ -1,3 +1,52 @@ +v<1.14.3>, 2017-11-2 + + +GitHub stats for 2017/09/23 - 2017/11/02 + +These lists are automatically generated, and may be incomplete or contain duplicates. + + +We closed a total of 31 issues, 8 pull requests and 23 regular issues; +this is the full list (generated with the script +:file:`tools/github_stats.py`): + +Pull Requests (8): + +* :ghpull:`997`: b'edit README.md for example datasets' +* :ghpull:`999`: b'Raise ImportError on missing palettable and PEP8' +* :ghpull:`983`: b'Fix inconsistent use of tabs and spaces in indentation.' +* :ghpull:`995`: b'Foliumfix' +* :ghpull:`993`: b'B991' +* :ghpull:`988`: b'Resolve issue of "False" "id_order_set" when building contiguity weights from shapefile even if `idVariable` is given in initialization' +* :ghpull:`982`: b'update release instructions for new test.pypi' +* :ghpull:`979`: b'Rel 1.14.2' + +Issues (23): + +* :ghissue:`997`: b'edit README.md for example datasets' +* :ghissue:`970`: b'Odd pysal.Moran() randomisation VI' +* :ghissue:`999`: b'Raise ImportError on missing palettable and PEP8' +* :ghissue:`998`: b'Should missing palettable be a warning or error? ' +* :ghissue:`981`: b'mixed indentation in `iwls`' +* :ghissue:`987`: b"discrepancy in EB Local Moran's I with PySAL vs. GeoDa results" +* :ghissue:`992`: b'Scipy 1.0.0 Compat issues' +* :ghissue:`991`: b'Chisqprob is deprecated' +* :ghissue:`983`: b'Fix inconsistent use of tabs and spaces in indentation.' +* :ghissue:`996`: b'edit README for example datasets' +* :ghissue:`989`: b"resolve discrepancy of estimating Moran's I corrected for rates between GeoDa and pysal" +* :ghissue:`995`: b'Foliumfix' +* :ghissue:`994`: b'folium breakage' +* :ghissue:`971`: b'base_lisa_cluster function call does not pass p_thresh' +* :ghissue:`993`: b'B991' +* :ghissue:`984`: b'Level dev & master, incorporate 983' +* :ghissue:`990`: b'problem with open shp file' +* :ghissue:`988`: b'Resolve issue of "False" "id_order_set" when building contiguity weights from shapefile even if `idVariable` is given in initialization' +* :ghissue:`980`: b'release documentation test pypi is out of date' +* :ghissue:`982`: b'update release instructions for new test.pypi' +* :ghissue:`978`: b'Coordinate releases on pypi and github' +* :ghissue:`976`: b'bump pysal/pysal/version.py please' +* :ghissue:`979`: b'Rel 1.14.2' + v<1.14.2>, 2017-09-23 This is a bug fix release for the 1.14 Python 2.x. series of PySAL. diff -Nru pysal-1.14.2/debian/changelog pysal-1.14.3/debian/changelog --- pysal-1.14.2/debian/changelog 2017-09-25 05:49:08.000000000 +0000 +++ pysal-1.14.3/debian/changelog 2017-11-06 18:47:27.000000000 +0000 @@ -1,3 +1,13 @@ +pysal (1.14.3-1) unstable; urgency=medium + + * Team upload. + * New upstream release. + * Drop TabError.patch, applied upstream. + * Bump Standards-Version to 4.1.1, no changes. + * Add patch to fix UnicodeDecodeError in test_examples. + + -- Bas Couwenberg Mon, 06 Nov 2017 19:47:27 +0100 + pysal (1.14.2-2) unstable; urgency=medium * Team upload. diff -Nru pysal-1.14.2/debian/control pysal-1.14.3/debian/control --- pysal-1.14.2/debian/control 2017-09-25 05:46:36.000000000 +0000 +++ pysal-1.14.3/debian/control 2017-11-06 18:44:57.000000000 +0000 @@ -31,7 +31,7 @@ python3-shapely, python-sklearn, python3-sklearn -Standards-Version: 4.1.0 +Standards-Version: 4.1.1 Vcs-Browser: https://anonscm.debian.org/cgit/pkg-grass/pysal.git Vcs-Git: https://anonscm.debian.org/git/pkg-grass/pysal.git Homepage: https://pysal.readthedocs.org/en/latest/ diff -Nru pysal-1.14.2/debian/patches/series pysal-1.14.3/debian/patches/series --- pysal-1.14.2/debian/patches/series 2017-09-25 05:46:36.000000000 +0000 +++ pysal-1.14.3/debian/patches/series 2017-11-06 18:44:57.000000000 +0000 @@ -1 +1 @@ -TabError.patch +test_examples.patch diff -Nru pysal-1.14.2/debian/patches/TabError.patch pysal-1.14.3/debian/patches/TabError.patch --- pysal-1.14.2/debian/patches/TabError.patch 2017-09-25 05:49:01.000000000 +0000 +++ pysal-1.14.3/debian/patches/TabError.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -Description: Fix inconsistent use of tabs and spaces in indentation. -Author: Bas Couwenberg -Bug-Debian: https://bugs.debian.org/876700 -Forwarded: https://github.com/pysal/pysal/pull/983 - ---- a/pysal/contrib/glm/iwls.py -+++ b/pysal/contrib/glm/iwls.py -@@ -45,7 +45,7 @@ def iwls(y, x, family, offset, y_fix, - diff = 1.0e6 - - if ini_betas is None: -- betas = np.zeros((x.shape[1], 1), np.float) -+ betas = np.zeros((x.shape[1], 1), np.float) - else: - betas = ini_betas - -@@ -53,9 +53,9 @@ def iwls(y, x, family, offset, y_fix, - y = family.link._clean(y) - if isinstance(family, Poisson): - y_off = y/offset -- y_off = family.starting_mu(y_off) -- v = family.predict(y_off) -- mu = family.starting_mu(y) -+ y_off = family.starting_mu(y_off) -+ v = family.predict(y_off) -+ mu = family.starting_mu(y) - else: - mu = family.starting_mu(y) - v = family.predict(mu) -@@ -78,7 +78,7 @@ def iwls(y, x, family, offset, y_fix, - mu = family.fitted(v) - - if isinstance(family, Poisson): -- mu = mu * offset -+ mu = mu * offset - - diff = min(abs(n_betas-betas)) - betas = n_betas diff -Nru pysal-1.14.2/debian/patches/test_examples.patch pysal-1.14.3/debian/patches/test_examples.patch --- pysal-1.14.2/debian/patches/test_examples.patch 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/debian/patches/test_examples.patch 2017-11-06 18:47:21.000000000 +0000 @@ -0,0 +1,29 @@ +Description: Fix UnicodeDecodeError by changing UTF-8 character to ASCII. + ====================================================================== + ERROR: test_parser (pysal.examples.test_examples.Example_Tester) + ---------------------------------------------------------------------- + Traceback (most recent call last): + File "/build/pysal-1.14.3/.pybuild/pythonX.Y_3.6/build/pysal/examples/test_examples.py", line 15, in test_parser + self.extext = ex.explain(example) + File "/build/pysal-1.14.3/.pybuild/pythonX.Y_3.6/build/pysal/examples/__init__.py", line 77, in explain + return _read_example(fpath) + File "/build/pysal-1.14.3/.pybuild/pythonX.Y_3.6/build/pysal/examples/__init__.py", line 55, in _read_example + title = io.readline().strip('\n') + File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode + return codecs.ascii_decode(input, self.errors)[0] + UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 384: ordinal not in range(128) + -------------------- >> begin captured stdout << --------------------- +Author: Bas Couwenberg +Forwarded: https://github.com/pysal/pysal/pull/1002 + +--- a/pysal/examples/networks/README.md ++++ b/pysal/examples/networks/README.md +@@ -9,7 +9,7 @@ Datasets used for network testing + * eberly_net.shx: spatial index. + * eberly_net_pts_offnetwork.dbf: attribute data for points off network. (k=2) + * eberly_net_pts_offnetwork.shp: Point shapefile. (n=100) +-* eberly_net_pts_offnetwork.shx: spatial index。 ++* eberly_net_pts_offnetwork.shx: spatial index. + * eberly_net_pts_onnetwork.dbf: attribute data for points on network. (k=1) + * eberly_net_pts_onnetwork.shp: Point shapefile. (n=110) + * eberly_net_pts_onnetwork.shx: spatial index. diff -Nru pysal-1.14.2/debian/rules pysal-1.14.3/debian/rules --- pysal-1.14.2/debian/rules 2017-09-25 05:46:36.000000000 +0000 +++ pysal-1.14.3/debian/rules 2017-11-06 18:44:57.000000000 +0000 @@ -5,7 +5,7 @@ export PYBUILD_NAME=pysal export PYBUILD_TEST_NOSE=1 -export PYBUILD_TEST_ARGS=--exclude test_DistanceBand_arc --exclude test_Headbanging_Median_Rate --exclude test_Headbanging_Median_Rate_tabular --exclude-dir=pysal/contrib --exclude-dir pysal/network +export PYBUILD_TEST_ARGS=--verbose --exclude test_DistanceBand_arc --exclude test_Headbanging_Median_Rate --exclude test_Headbanging_Median_Rate_tabular --exclude-dir=pysal/contrib --exclude-dir pysal/network %: dh $@ --with python2,python3 --buildsystem pybuild diff -Nru pysal-1.14.2/doc/source/conf.py pysal-1.14.3/doc/source/conf.py --- pysal-1.14.2/doc/source/conf.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/doc/source/conf.py 2017-11-03 00:27:09.000000000 +0000 @@ -47,9 +47,9 @@ # built documents. # # The short X.Y version. -version = '1.14.2' +version = '1.14.3' # The full version, including alpha/beta/rc tags. -release = '1.14.2' +release = '1.14.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -Nru pysal-1.14.2/doc/source/developers/release.rst pysal-1.14.3/doc/source/developers/release.rst --- pysal-1.14.2/doc/source/developers/release.rst 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/doc/source/developers/release.rst 2017-11-03 00:27:09.000000000 +0000 @@ -9,7 +9,6 @@ Prepare the release ------------------- -- Create a branch_ out of the `dev` branch - Check all tests pass. See :doc:`testing`. - Update CHANGELOG:: @@ -29,46 +28,36 @@ Add a comment that this is for release. -Tag ---- - -With version 1.10 we changed the way the tags are created to reflect our -policy_ of not pushing directly to upstream. - -After you have issued a pull request, the project maintainer can `create the release`_ on GitHub. - Make docs --------- As of version 1.6, docs are automatically compiled and hosted_. -Make and Upload and Test Distributions --------------------------------------- - -On each build machine, clone and checkout the newly created tag (assuming that -is `v1.10` in what follows):: - - $ git clone http://github.com/pysal/pysal.git - $ cd pysal - $ git fetch --tags - $ git checkout v1.10 - -- Make and upload_ to the **Testing** Python Package Index:: - - $ python setup.py sdist upload -r https://testpypi.python.org/pypi +Make a source dist and test locally (Python 3) +---------------------------------------------- -- Test that your package can install correctly:: +On each build machine - $ pip install --extra-index-url https://testpypi.python.org/pypi pysal + $ git clone http://github.com/pysal/pysal.git + $ cd pysal + $ python setup.py sdist + $ cp dist/PySAL-1.14.2.tar.gz ../junk/. + $ cd ../junk + $ conda create -n pysaltest3 python=3 pip + $ source activate pysaltest3 + $ pip install PySAL-1.14.2.tar.gz + $ rm -r /home/serge/anaconda3/envs/pysaltest3/lib/python3.6/site-packages/pysal/contrib + $ nosetests /home/serge/anaconda3/envs/pysaltest3/lib/python3.6/site-packages/pysal/ +You can modify the above to test for Python 2 environments. -If all is good, proceed, otherwise fix, and repeat. +Upload release to pypi +---------------------- - Make and upload_ to the Python Package Index in one shot!:: - $ python setup.py sdist (to test it) $ python setup.py sdist upload - if not registered_, do so. Follow the prompts. You can save the @@ -79,25 +68,20 @@ $ python setup.py bdist_wininst -Announce --------- +Create a release on github +-------------------------- -- Draft and distribute press release on geodacenter.asu.edu, openspace-list, and pysal.org +https://help.github.com/articles/creating-releases/ - - On GeoDa center website, do this: - - Login and expand the wrench icon to reveal the Admin menu - - Click "Administer", "Content Management", "Content" - - Next, click "List", filter by type, and select "Featured Project". - - Click "Filter" +Announce +-------- - Now you will see the list of Featured Projects. Find "PySAL". +- Draft and distribute press release on openspace-list, pysal.org, spatial.ucr.edu - - Choose to 'edit' PySAL and modify the short text there. This changes the text users see on the homepage slider. - - Clicking on the name "PySAL" allows you to edit the content of the PySAL project page, which is also the "About PySAL" page linked to from the homepage slider. -Put master back to dev ----------------------- +Bump master version +------------------- - Change MAJOR, MINOR version in setup script. - Change pysal/version.py to dev number diff -Nru pysal-1.14.2/doc/source/index.rst pysal-1.14.3/doc/source/index.rst --- pysal-1.14.2/doc/source/index.rst 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/doc/source/index.rst 2017-11-03 00:27:09.000000000 +0000 @@ -20,7 +20,7 @@ .. sidebar:: Releases - - `Stable 1.14.2 (Released 2017-9-23) `_ + - `Stable 1.14.3 (Released 2017-11-2) `_ - `Development `_ PySAL is an open source library of spatial analysis functions written in diff -Nru pysal-1.14.2/doc/source/users/tutorials/smoothing.rst pysal-1.14.3/doc/source/users/tutorials/smoothing.rst --- pysal-1.14.2/doc/source/users/tutorials/smoothing.rst 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/doc/source/users/tutorials/smoothing.rst 2017-11-03 00:27:09.000000000 +0000 @@ -141,7 +141,7 @@ .. doctest:: >>> import pysal - >>> stl = pysal.open('../pysal/examples/stl_hom.csv', 'r') + >>> stl = pysal.open(pysal.examples.get_path('stl_hom.csv'), 'r') >>> e, b = np.array(stl[:,10]), np.array(stl[:,13]) We then read the spatial weights file defining neighborhood relationships among the counties @@ -149,7 +149,7 @@ .. doctest:: - >>> w = pysal.open('../pysal/examples/stl.gal', 'r').read() + >>> w = pysal.open(pysal.examples.get_path("stl.gal"),"r").read() >>> if not w.id_order_set: w.id_order = range(1,len(stl) + 1) Now we calculate locally weighted averages of the homicide rates. diff -Nru pysal-1.14.2/.github/PULL_REQUEST_TEMPLATE.md pysal-1.14.3/.github/PULL_REQUEST_TEMPLATE.md --- pysal-1.14.2/.github/PULL_REQUEST_TEMPLATE.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/.github/PULL_REQUEST_TEMPLATE.md 2017-11-03 00:27:09.000000000 +0000 @@ -3,7 +3,7 @@ justification in point 5. 1. [ ] You have run tests on this submission, either by using [Travis Continuous Integration testing](https://github.com/pysal/pysal/wiki/GitHub-Standard-Operating-Procedures#automated-testing-w-travis-ci) testing or running `nosetests` on your changes? -2. [ ] This pull request is directed to the `pysal/dev` branch. +2. [ ] This pull request is directed to the `pysal/master` branch. **This is important, as any PRs submitted against any other branches will be delayed.** 3. [ ] This pull introduces new functionality covered by [docstrings](https://en.wikipedia.org/wiki/Docstring#Python) and [unittests](https://docs.python.org/2/library/unittest.html)? diff -Nru pysal-1.14.2/pysal/cg/tests/test_sphere.py pysal-1.14.3/pysal/cg/tests/test_sphere.py --- pysal-1.14.2/pysal/cg/tests/test_sphere.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/cg/tests/test_sphere.py 2017-11-03 00:27:09.000000000 +0000 @@ -2,7 +2,8 @@ import pysal import math import unittest - +import numpy as np +from pysal.common import (RTOL, ATOL) class Sphere(unittest.TestCase): @@ -70,7 +71,7 @@ pup = (42.023768, -87.946389) # Arlington Heights IL pdown = (41.644415, -87.524102) # Hammond, IN grid1 = sphere.geogrid(pup, pdown, 3, lonx=False) - self.assertAlmostEqual(grid, grid1) + np.testing.assert_allclose(grid, grid1, rtol=RTOL, atol=ATOL) def test_toXYZ(self): w2 = {0: [2, 5, 6, 10], 1: [4, 7, 9, 14], 2: [6, 0, 3, 8], diff -Nru pysal-1.14.2/pysal/common.py pysal-1.14.3/pysal/common.py --- pysal-1.14.2/pysal/common.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/common.py 2017-11-03 00:27:09.000000000 +0000 @@ -1,20 +1,12 @@ # external imports -try: - import numpy as np - import numpy.linalg as la -except: - print('numpy 1.3 is required') - raise -try: - import scipy as sp - import scipy.stats as stats - from cg.kdtree import KDTree - from scipy.spatial.distance import pdist, cdist -except: - print('scipy 0.7+ is required') - raise +import numpy as np +import numpy.linalg as la +import scipy as sp +import scipy.stats as stats +from cg.kdtree import KDTree +from scipy.spatial.distance import pdist, cdist RTOL = .00001 ATOL = 1e-7 diff -Nru pysal-1.14.2/pysal/contrib/glm/iwls.py pysal-1.14.3/pysal/contrib/glm/iwls.py --- pysal-1.14.2/pysal/contrib/glm/iwls.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/contrib/glm/iwls.py 2017-11-03 00:27:09.000000000 +0000 @@ -45,7 +45,7 @@ diff = 1.0e6 if ini_betas is None: - betas = np.zeros((x.shape[1], 1), np.float) + betas = np.zeros((x.shape[1], 1), np.float) else: betas = ini_betas @@ -53,9 +53,9 @@ y = family.link._clean(y) if isinstance(family, Poisson): y_off = y/offset - y_off = family.starting_mu(y_off) - v = family.predict(y_off) - mu = family.starting_mu(y) + y_off = family.starting_mu(y_off) + v = family.predict(y_off) + mu = family.starting_mu(y) else: mu = family.starting_mu(y) v = family.predict(mu) @@ -78,7 +78,7 @@ mu = family.fitted(v) if isinstance(family, Poisson): - mu = mu * offset + mu = mu * offset diff = min(abs(n_betas-betas)) betas = n_betas diff -Nru pysal-1.14.2/pysal/contrib/viz/color.py pysal-1.14.3/pysal/contrib/viz/color.py --- pysal-1.14.2/pysal/contrib/viz/color.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/contrib/viz/color.py 2017-11-03 00:27:09.000000000 +0000 @@ -2,13 +2,8 @@ color handling for mapping and geovisualization """ -from warnings import warn -try: - import palettable as pltt - from palettable.colorbrewer import qualitative, sequential, diverging -except: - warn('palettable not installed. Functionality ' - 'related to it will not work') +import palettable as pltt + def get_color_map(palette=None, name='BuGn', cmtype='sequential', k=5, color_encoding='hex'): @@ -50,20 +45,21 @@ cmtype = pltt2type[name.lower()] if name[-2:] == '_r': palette = pltt.colorbrewer.get_map(name[:-2], cmtype, - k, reverse=True) + k, reverse=True) else: palette = pltt.colorbrewer.get_map(name, cmtype, k) colors = getattr(palette, encs[color_encoding.lower()]) return colors + def _build_pltt2type(): types = ['sequential', 'diverging', 'qualitative'] pltt2type = {} for t in types: pals = list(set([ p.split('_')[0] for p in dir(getattr(pltt.colorbrewer, t)) - if p[0]!='_' - ])) + if p[0] != '_' + ])) pals = pals + [p+'_r' for p in pals] for p in pals: pltt2type[p.lower()] = t @@ -71,7 +67,7 @@ pltt2type = _build_pltt2type() + def get_maps_by_type(data_type): names = [name for name in dir(data_type) if not name.startswith('_')] return names - diff -Nru pysal-1.14.2/pysal/contrib/viz/folium_mapping.ipynb pysal-1.14.3/pysal/contrib/viz/folium_mapping.ipynb --- pysal-1.14.2/pysal/contrib/viz/folium_mapping.ipynb 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/contrib/viz/folium_mapping.ipynb 2017-11-03 00:27:09.000000000 +0000 @@ -4,316 +4,97 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Mapping using Pysal and Folium: Example" + "# Mapping using Pysal and Folium: Texas" ] }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [], "source": [ "import pysal as ps\n", - "import geojson as gj\n", - "import folium_mapping as fm" + "import geopandas as gpd\n", + "import folium_mapping as fm\n", + "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First, we need to convert the data into a JSON format. JSON, short for \"Javascript Serialized Object Notation,\" is a simple and effective way to represent objects in a digital environment. For geographic information, the [GeoJSON](https://geojson.org) standard defines how to represent geographic information in JSON format. Python programmers may be more comfortable thinking of JSON data as something akin to a standard Python dictionary. " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "filepath = ps.examples.get_path('south.shp')[:-4]" + "Let's look at the columns that we're going to map." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 9, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ - "shp = ps.open(filepath + '.shp')\n", - "dbf = ps.open(filepath + '.dbf')" + "df = gpd.read_file('./example.json')" ] }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "js = fm.build_features(shp, dbf)" - ] - }, - { - "cell_type": "markdown", + "execution_count": 13, "metadata": {}, - "source": [ - "Just to show, this constructs a dictionary with the following keys:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { "text/plain": [ - "dict_keys(['bbox', 'features', 'type'])" + "" ] }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "js.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'FeatureCollection'" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "js.type" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[-106.6495132446289, 24.95596694946289, -75.0459976196289, 40.63713836669922]" - ] - }, - "execution_count": 7, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" - } - ], - "source": [ - "js.bbox" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ + }, { "data": { + "image/png": "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\n", "text/plain": [ - "{\"bbox\": [-80.6688232421875, 40.39815902709961, -80.52220916748047, 40.63713836669922], \"geometry\": {\"coordinates\": [[[-80.6280517578125, 40.39815902709961], [-80.60203552246094, 40.480472564697266], [-80.62545776367188, 40.504398345947266], [-80.6336441040039, 40.53913879394531], [-80.6688232421875, 40.568214416503906], [-80.66793060302734, 40.58207321166992], [-80.63754272460938, 40.61391830444336], [-80.61175537109375, 40.619998931884766], [-80.57462310791016, 40.615909576416016], [-80.52220916748047, 40.63713836669922], [-80.52456665039062, 40.47871780395508], [-80.52377319335938, 40.4029655456543], [-80.6280517578125, 40.39815902709961]]], \"type\": \"Polygon\"}, \"properties\": {\"BLK60\": 3.839454752, \"BLK70\": 3.2554278095, \"BLK80\": 2.5607402642, \"BLK90\": 2.5572616581, \"CNTY_FIPS\": \"029\", \"COFIPS\": 29, \"DNL60\": 6.1681225056, \"DNL70\": 6.1714993547, \"DNL80\": 6.1714631077, \"DNL90\": 6.0508978146, \"DV60\": 2.2779893943, \"DV70\": 2.5591397849, \"DV80\": 5.0619350519, \"DV90\": 7.2636377003, \"FH60\": 9.9812973718, \"FH70\": 7.8, \"FH80\": 9.7857968181, \"FH90\": 12.604551644, \"FIPS\": \"54029\", \"FIPSNO\": 54029, \"FP59\": 9.6, \"FP69\": 5.9, \"FP79\": 6.5327526442, \"FP89\": 10.17311807, \"GI59\": 0.2236450331, \"GI69\": 0.2953773833, \"GI79\": 0.3322512119, \"GI89\": 0.3639335641, \"HC60\": 0.6666666667, \"HC70\": 1.6666666667, \"HC80\": 2.6666666667, \"HC90\": 0.3333333333, \"HR60\": 1.6828642349, \"HR70\": 4.1929776011, \"HR80\": 6.5977204876, \"HR90\": 0.9460827444, \"MA60\": 28.9, \"MA70\": 30.0, \"MA80\": 31.4, \"MA90\": 37.7, \"MFIL59\": 8.8410143105, \"MFIL69\": 9.2471543451, \"MFIL79\": 10.073356901, \"MFIL89\": 10.327970666, \"NAME\": \"Hancock\", \"PO60\": 39615, \"PO70\": 39749, \"PO80\": 40418, \"PO90\": 35233, \"POL60\": 10.586963113, \"POL70\": 10.590339963, \"POL80\": 10.607030509, \"POL90\": 10.469738422, \"PS60\": 1.218684208, \"PS70\": 1.1368342185, \"PS80\": 1.0385705291, \"PS90\": 0.8964534429, \"RD60\": -1.394676863, \"RD70\": -1.307438562, \"RD80\": -1.159302086, \"RD90\": -0.399028376, \"SOUTH\": 1, \"STATE_FIPS\": \"54\", \"STATE_NAME\": \"West Virginia\", \"STFIPS\": 54, \"UE60\": 3.1, \"UE70\": 2.7, \"UE80\": 7.0763827919, \"UE90\": 6.8578070515}, \"type\": \"Feature\"}" + "" ] }, - "execution_count": 8, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "js.features[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we write the json to a file. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "with open('./example.json', 'w') as out:\n", - " gj.dump(js, out)" + "df.HR90.hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Mapping" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's look at the columns that we're going to map." + "To use the folium mapper, you pass the the geodataframe, a unique key for the geometries, & the attribute to be mapped: " ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['POL80', 'PO70', 'UE70', 'PO80', 'BLK80']" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#js.features[0].properties.keys()[0:5]\n", - "list(js.features[0].properties.keys())[:5]" - ] - }, - { - "cell_type": "markdown", + "execution_count": 15, "metadata": {}, - "source": [ - "We can map these attributes by calling them as commands to the choropleth mapping function. \n", - "\n", - "Here's the simplest mapping command:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import folium as fol" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "fol.Map.choropleth?" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR90')" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR90')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This produces a map using default classifications and color schemes and saves it to an html file. We set the function to have sane defaults. However, if the user wants to have more control, we have many options available. " + "fm.choropleth_map(df, key='FIPS', attribute='HR90')" ] }, { @@ -325,35 +106,25 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR90', classification = 'Quantiles')" + "fm.choropleth_map(ex, 'FIPS', 'HR90', classification = 'Equal Interval')" ] }, { @@ -372,35 +143,27 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR90', classification = 'Jenks Caspall', tiles='Stamen Toner', save=True) " + "fm.choropleth_map(ex, 'FIPS', 'HR90', \n", + " classification = 'Jenks Caspall', \n", + " tiles='Stamen Toner', save=True) " ] }, { @@ -419,35 +182,27 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR80', classification = 'Jenks Caspall', tiles='Stamen Toner', fill_color = 'PuBuGn', save=True) " + "fm.choropleth_map(ex, 'FIPS', 'HR80', \n", + " classification = 'Jenks Caspall', \n", + " tiles='Stamen Toner', fill_color = 'PuBuGn', save=True) " ] }, { @@ -466,42 +221,28 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 25, + "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR80', classification = 'Equal Interval', classes=6, tiles='Stamen Toner', fill_color='PuBuGn',save=True) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Folium supports up to 6 classes." + "fm.choropleth_map('./example.json', 'FIPS', 'HR80', \n", + " classification = 'Jenks Caspall', \n", + " classes=3, tiles='Stamen Toner', \n", + " fill_color='PuBuGn',save=True) " ] }, { @@ -513,114 +254,48 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/numpy/lib/function_base.py:3142: RuntimeWarning: Invalid value encountered in median\n", - " RuntimeWarning)\n", - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" - ] - }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fm.choropleth_map('./example.json', 'FIPS', 'HR90', classification = 'Quantiles', std='HR80' , tiles='Stamen Toner', fill_color='PuBuGn',save=True) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The goal of the `std` argument was to implement a very flexible transformation argument that could take functions, fields, and static items. As of now, it only supports float/int scaling and division by another field, which would support the mapping of spatial rates or population rates." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Conclusion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Overall, the function neatly encapsulates three components:\n", - "\n", - "- plumbing large lists of arguments together to simplify mapping from JSON files\n", - "- searching for sane defaults (bounding box & zoom level)\n", - "- implementing classification and standardization useful for choropleth mapping" - ] - }, - { - "cell_type": "markdown", + "execution_count": 27, "metadata": {}, - "source": [ - "Due to some pretty strong limitations in `Folium` itself, its usefulness for rich, dynamic, and interactive visualizations built from small, atomic functions is probably limited. It would need to be extended quite significantly (or linked with even more packages with more fickle APIs) to usefully generate mixed-mode scientific visualizations. With `Folium`'s natural linkages to `Pandas`, mapping derived quantites is also possible.\n", - "\n", - "But, it's really simple to map quickly from PySAL:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/home/ljw/.local/lib/python3.5/site-packages/folium/folium.py:504: UserWarning: This method is deprecated. Please use Map.choropleth instead.\n", - " warnings.warn('This method is deprecated. '\n" + "/home/ljw/anaconda3/envs/ana/lib/python3.6/site-packages/pysal/esda/mapclassify.py:267: RuntimeWarning: invalid value encountered in greater\n", + " binIds += (x > l) * (x <= r) * k\n", + "/home/ljw/anaconda3/envs/ana/lib/python3.6/site-packages/pysal/esda/mapclassify.py:267: RuntimeWarning: invalid value encountered in less_equal\n", + " binIds += (x > l) * (x <= r) * k\n", + "/home/ljw/anaconda3/envs/ana/lib/python3.6/site-packages/numpy/lib/function_base.py:4016: RuntimeWarning: Invalid value encountered in median\n", + " r = func(a, **kwargs)\n" ] }, { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 20, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "with open('example2.json', 'w') as out:\n", - " gj.dump(fm.build_features(ps.open(filepath + '.shp'), ps.open(filepath + '.dbf')), out)\n", - "fm.choropleth_map('example2.json', 'FIPS', 'HR70')" + "fm.choropleth_map(ex, 'FIPS', 'HR90', \n", + " classification = 'Quantiles', \n", + " std='HR80' , tiles='Stamen Toner', \n", + " fill_color='PuBuGn',save=True) " ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda env:ana]", "language": "python", - "name": "python3" + "name": "conda-env-ana-py" }, "language_info": { "codemirror_mode": { @@ -632,9 +307,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff -Nru pysal-1.14.2/pysal/contrib/viz/folium_mapping.py pysal-1.14.3/pysal/contrib/viz/folium_mapping.py --- pysal-1.14.2/pysal/contrib/viz/folium_mapping.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/contrib/viz/folium_mapping.py 2017-11-03 00:27:09.000000000 +0000 @@ -142,14 +142,7 @@ sjson = gj.load(open(jsonpath)) else: raise IOError('File not found') - - if isinstance(jsonpath, dict): - raise NotImplementedError('Direct mapping from dictionary not yet supported') - #with open('tmp.json', 'w') as out: - # gj.dump(jsonpath, out) - # sjson = gj.load(open('tmp.json')) - - if isinstance(jsonpath, tuple): + elif isinstance(jsonpath, tuple): if 'ShpWrapper' in str(type(jsonpath[0])) and 'DBF' in str(type(jsonpath[1])): flip('tmp.json', jsonpath[0], jsonpath[1]) sjson = gj.load(open('tmp.json')) @@ -162,6 +155,14 @@ else: raise IOError('Inputs must be GeoJSON filepath, GeoJSON dictionary in memory, or shp-dbf tuple') + else: + import geopandas + if isinstance(jsonpath, geopandas.GeoDataFrame): + jsonpath = jsonpath + df = jsonpath + geom_col = df._geometry_column_name + centroid = tuple(reversed(np.hstack(df[geom_col].centroid.cascaded_union.centroid.xy))) + bbox = df.total_bounds #key construction if df is None: @@ -169,7 +170,7 @@ dfkey = [key, attribute] #centroid search - if centroid == None: + if centroid is None: if 'bbox' in sjson.keys(): bbox = sjson.bbox bbox = bboxsearch(sjson) @@ -194,15 +195,13 @@ y = np.array(df[attribute].tolist()) #For people who don't read documentation... - if isinstance(classes, list): - bins = classes - classes = len(bins) - elif isinstance(classes, float): + if isinstance(classes, float): try: classes = int(classes) except: raise ValueError('Classes must be coercable to integers') + classes += 1 #classification passing if classification != None: if classification == "Maximum Breaks": #there is probably a better way to do this, but it's a start. @@ -248,14 +247,19 @@ mapclass = ps.Quantiles(y, k=classes).bins.tolist() #folium call, try abstracting to a "mapper" function, passing list of args - choromap.geo_json(geo_path=jsonpath, key_on = jsonkey, + if len(mapclass) > 6: + raise ValueError('Folium only supports a maximum of' + ' six classes on threshold scales') + #return dict(geo_data = jsonpath, key_on = jsonkey, data = df, columns=dfkey, fill_color=fill_color, + # fill_opacity=fill_opacity, line_opacity=line_opacity, threshold_scale=mapclass, legend_name=legend_name) + choromap.choropleth(geo_data=jsonpath, key_on = jsonkey, data = df, columns = dfkey, fill_color = fill_color, fill_opacity = fill_opacity, - line_opacity = line_opacity, threshold_scale = mapclass[:-1] , legend_name = legend_name + line_opacity = line_opacity, threshold_scale = mapclass, legend_name = legend_name ) if save: - fname = jsonpath.rstrip('.json') + '_' + attribute + '.html' + fname = '_'.join((key,attribute))+'.html' choromap.save(fname) return choromap diff -Nru pysal-1.14.2/pysal/contrib/viz/mapping.py pysal-1.14.3/pysal/contrib/viz/mapping.py --- pysal-1.14.2/pysal/contrib/viz/mapping.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/contrib/viz/mapping.py 2017-11-03 00:27:09.000000000 +0000 @@ -1097,7 +1097,7 @@ shp = ps.open(shp_link) # Lisa layer lisa_obj = map_poly_shp(shp) - lisa_obj = base_lisa_cluster(lisa_obj, lisa) + lisa_obj = base_lisa_cluster(lisa_obj, lisa, p_thres=p_thres) lisa_obj.set_alpha(alpha) # Figure fig = plt.figure(figsize=figsize) diff -Nru pysal-1.14.2/pysal/core/util/shapefile.py pysal-1.14.3/pysal/core/util/shapefile.py --- pysal-1.14.2/pysal/core/util/shapefile.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/core/util/shapefile.py 2017-11-03 00:27:09.000000000 +0000 @@ -149,7 +149,10 @@ for name, dtype, order in structure: dtype, n = dtype result = array.array(dtype) - result.fromstring(fileObj.read(result.itemsize * n)) + try: + result.frombytes(fileObj.read(result.itemsize * n)) + except AttributeError: + result.fromstring(fileObj.read(result.itemsize * n)) if order != SYS_BYTE_ORDER: result.byteswap() d[name] = result.tolist() diff -Nru pysal-1.14.2/pysal/esda/moran.py pysal-1.14.3/pysal/esda/moran.py --- pysal-1.14.2/pysal/esda/moran.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/esda/moran.py 2017-11-03 00:27:09.000000000 +0000 @@ -726,10 +726,10 @@ Parameters ---------- - y : array - (n,1), attribute array - w : W - weight instance assumed to be aligned with y + y : array + (n,1), attribute array + w : W + weight instance assumed to be aligned with y transformation : {'R', 'B', 'D', 'U', 'V'} weights transformation, default is row-standardized "r". Other options include @@ -952,12 +952,12 @@ Parameters ---------- - x : array - x-axis variable - y : array - (n,1), wy will be on y axis - w : W - weight instance assumed to be aligned with y + x : array + x-axis variable + y : array + (n,1), wy will be on y axis + w : W + weight instance assumed to be aligned with y transformation : {'R', 'B', 'D', 'U', 'V'} weights transformation, default is row-standardized "r". Other options include @@ -1197,15 +1197,15 @@ Parameters ---------- - e : array - (n,1), an event variable across n spatial units - b : array - (n,1), a population-at-risk variable across n spatial units - w : W - weight instance assumed to be aligned with y - adjusted : boolean - whether or not local Moran statistics need to be adjusted for - rate variable + e : array + (n,1), an event variable across n spatial units + b : array + (n,1), a population-at-risk variable across n spatial units + w : W + weight instance assumed to be aligned with y + adjusted : boolean + whether or not local Moran statistics need to be adjusted for + rate variable transformation : {'R', 'B', 'D', 'U', 'V'} weights transformation, default is row-standardized "r". Other options include @@ -1222,47 +1222,47 @@ If False use PySAL Scheme: HH=1, LH=2, LL=3, HL=4 Attributes ---------- - y : array - rate variables computed from parameters e and b - if adjusted is True, y is standardized rates - otherwise, y is raw rates - w : W - original w object - permutations : int - number of random permutations for calculation of pseudo - p_values - I : float - value of Moran's I - q : array - (if permutations>0) - values indicate quandrant location 1 HH, 2 LH, 3 LL, 4 HL - sim : array - (if permutations>0) - vector of I values for permuted samples - p_sim : array - (if permutations>0) - p-value based on permutations (one-sided) - null: spatial randomness - alternative: the observed Ii is further away or extreme - from the median of simulated Iis. It is either extremely - high or extremely low in the distribution of simulated Is - EI_sim : float - (if permutations>0) - average value of I from permutations - VI_sim : float - (if permutations>0) - variance of I from permutations - seI_sim : float - (if permutations>0) - standard deviation of I under permutations. - z_sim : float - (if permutations>0) - standardized I based on permutations - p_z_sim : float - (if permutations>0) - p-value based on standard normal approximation from - permutations (one-sided) - for two-sided tests, these values should be multiplied by 2 + y : array + rate variables computed from parameters e and b + if adjusted is True, y is standardized rates + otherwise, y is raw rates + w : W + original w object + permutations : int + number of random permutations for calculation of pseudo + p_values + Is : float + local Moran's I values for rates or Empirical Bayes Index + q : array + (if permutations>0) + values indicate quandrant location 1 HH, 2 LH, 3 LL, 4 HL + sim : array + (if permutations>0) + vector of I values for permuted samples + p_sim : array + (if permutations>0) + p-values based on permutations (one-sided) + null: spatial randomness + alternative: the observed Ii is further away or extreme + from the median of simulated values. It is either extremelyi + high or extremely low in the distribution of simulated Is. + EI_sim : array + (if permutations>0) + average values of local Is from permutations + VI_sim : array + (if permutations>0) + variance of Is from permutations + seI_sim : array + (if permutations>0) + standard deviations of Is under permutations. + z_sim : arrray + (if permutations>0) + standardized Is based on permutations + p_z_sim : array + (if permutations>0) + p-values based on standard normal approximation from + permutations (one-sided) + for two-sided tests, these values should be multiplied by 2 Examples -------- diff -Nru pysal-1.14.2/pysal/esda/smoothing.py pysal-1.14.3/pysal/esda/smoothing.py --- pysal-1.14.2/pysal/esda/smoothing.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/esda/smoothing.py 2017-11-03 00:27:09.000000000 +0000 @@ -510,10 +510,10 @@ Parameters ---------- - e : array(n, 1) - event variable measured at n spatial units - b : array(n, 1) - population at risk variable measured at n spatial units + e : array + (n, 1), event variable measured at n spatial units + b : array + (n, 1), population at risk variable measured at n spatial units Notes ----- @@ -521,7 +521,8 @@ Returns ------- - : array (nx1) + : array + (n,1) Examples -------- @@ -540,7 +541,7 @@ Computing the rates >>> print assuncao_rate(e, b)[:4] - [ 1.04319254 -0.04117865 -0.56539054 -1.73762547] + [ 1.03843594 -0.04099089 -0.56250375 -1.73061861] """ @@ -667,15 +668,15 @@ Parameters ---------- - e : array (n, 1) - event variable measured across n spatial units - b : array (n, 1) - population at risk variable measured across n spatial units + e : array + (n, 1), event variable measured across n spatial units + b : array + (n, 1), population at risk variable measured across n spatial units Attributes ---------- - r : array (n, 1) - rate values from Empirical Bayes Smoothing + r : array + (n, 1), rate values from Empirical Bayes Smoothing Examples -------- @@ -1665,7 +1666,7 @@ (0.33753, 0.302707) """ def __init__(self, data, w, k=5, t=3, angle=135.0, edgecor=False): - raise DepricationWarning('Depricated') + raise DeprecationWarning('Deprecated. This function is no longer supported.') if k < 3: raise ValueError("w should be NeareastNeighbors instance & the number of neighbors should be more than 3.") if not w.id_order_set: @@ -1811,7 +1812,7 @@ array([ 0.00091659, 0. , 0.00156838, 0.0018315 , 0.00498891]) """ def __init__(self, e, b, t, aw=None, iteration=1): - warnings.warn("Deprecated", DepricationWarning) + raise DeprecationWarning('Deprecated. This function is no longer supported.') self.r = e * 1.0 / b self.tr, self.aw = t.triples, aw if hasattr(t, 'extra'): diff -Nru pysal-1.14.2/pysal/examples/10740/README.md pysal-1.14.3/pysal/examples/10740/README.md --- pysal-1.14.2/pysal/examples/10740/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/10740/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,13 +1,11 @@ 10740 ===== -Albuquerque Census 2000 Tract Data ----------------------------------- +Albuquerque, New Mexico, Census 2000 Tract Data +----------------------------------------------- -Albuquerque, New Mexico, 2000 Census Tracts (n = 141) - -* 10740.dbf: attribute database file -* 10740.shp: shapefile -* 10740.shx: spatial index -* 10740_queen.gal: queen contiguity GAL format -* 10740_rook.gal: rook contiguity GAL format +* 10740.dbf: attribute data. (k=5) +* 10740.shp: shapefile. (n=195) +* 10740.shx: spatial index. +* 10740_queen.gal: queen contiguity weights in GAL format. +* 10740_rook.gal: rook contiguity weights in GAL format. diff -Nru pysal-1.14.2/pysal/examples/arcgis/README.md pysal-1.14.3/pysal/examples/arcgis/README.md --- pysal-1.14.2/pysal/examples/arcgis/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/arcgis/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,4 +4,7 @@ arcgis testing files -------------------- -Files used for internal testing +* arcgis_ohio.dbf: spatial weights in ArcGIS DBF format. +* arcgis_txt.txt: spatial weights in ArcGIS TXT format. + +Files used for internal testing. diff -Nru pysal-1.14.2/pysal/examples/baltim/README.md pysal-1.14.3/pysal/examples/baltim/README.md --- pysal-1.14.2/pysal/examples/baltim/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/baltim/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,16 +1,14 @@ baltim ====== -Baltimore house sales prices and hedonics ------------------------------------------ +Baltimore house sales prices and hedonics 1978 +---------------------------------------------------------------- -* baltim.dbf attribute data -* baltim.shp shape file -* baltim.shx spatial index file -* baltim.tri.k12.kwt Kernel weights using a triangular kernel with 12 neares - neighbors -* baltim_k4.gwt Nearest neighbor weights (4nn) -* baltim_q.gal Queen contiguity file -* baltimore.geojson +* baltim.dbf: attribute data. (k=17) +* baltim.shp: Point shapefile. (n=211) +* baltim.shx: spatial index. +* baltim.tri.k12.kwt: kernel weights using a triangular kernel with 12 nearest neighbors in KWT format. +* baltim_k4.gwt: nearest neighbor weights (4nn) in GWT format. +* baltim_q.gal: queen contiguity weights in GAL format. +* baltimore.geojson: spatial weights in geojson format. -Point data, n=211, k= 17. diff -Nru pysal-1.14.2/pysal/examples/book/README.md pysal-1.14.3/pysal/examples/book/README.md --- pysal-1.14.2/pysal/examples/book/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/book/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,10 +1,8 @@ book ==== -Synthetic data to illustrate spatial weights +Synthetic data to illustrate spatial weights -------------------------------------------- -* book.gal: rook contiguity for regular lattice -* book.txt: attribute data for regular lattice - -Source: Anselin, L. and S.J. Rey (in progress) Spatial Econometrics: Foundations. +* book.gal: rook contiguity weights in GAL format for regular lattice. +* book.txt: attribute data for regular lattice. diff -Nru pysal-1.14.2/pysal/examples/burkitt/README.md pysal-1.14.3/pysal/examples/burkitt/README.md --- pysal-1.14.2/pysal/examples/burkitt/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/burkitt/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,8 +4,6 @@ Burkitt's lymphoma in the Western Nile district of Uganda --------------------------------------------------------- - * burkitt.dbf attribute file - * burkitt.shp shapefile - * burkitt.shx spatial index - - Point data, n=188, k=6 +* burkitt.dbf: attribute data. (k=6) +* burkitt.shp: Point shapefile. (n=188) +* burkitt.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/calemp/README.md pysal-1.14.3/pysal/examples/calemp/README.md --- pysal-1.14.2/pysal/examples/calemp/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/calemp/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -5,9 +5,7 @@ ------------------------------------------ * calempdensity.csv: data on employment and employment density in California - counties. - -Polygon data, n=58, k=11. + counties. (n=58, k=11) Source: Anselin, L. and S.J. Rey (in progress) Spatial Econometrics: Foundations. diff -Nru pysal-1.14.2/pysal/examples/chicago/README.md pysal-1.14.3/pysal/examples/chicago/README.md --- pysal-1.14.2/pysal/examples/chicago/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/chicago/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,8 +4,6 @@ Chicago neighborhoods -------------------- - * Chicago77.dbf attribute file - * Chicago77.shp shapefile - * Chicago77.shx spatial index - -Polygons, n=77, k=11 +* Chicago77.dbf: attribute data. (k=11) +* Chicago77.shp: Polygon shapefile. (n=77) +* Chicago77.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/columbus/README.md pysal-1.14.3/pysal/examples/columbus/README.md --- pysal-1.14.2/pysal/examples/columbus/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/columbus/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,14 @@ +columbus +======== + +Columbus neighborhood crime data 1980 +------------------------------------- + +* columbus.dbf: attribute data. (k=20) +* columbus.gal: queen contiguity file in GAL format. +* columbus.html: metadata. +* columbus.json: shape and attribute data file in JSON format. +* columbus.shp: Polygon shapefile. (n=49) +* columbus.shx: spatial index. + +Anselin, Luc (1988). Spatial Econometrics. Boston, Kluwer Academic, Table 12.1, p. 189. \ No newline at end of file diff -Nru pysal-1.14.2/pysal/examples/desmith/README.md pysal-1.14.3/pysal/examples/desmith/README.md --- pysal-1.14.2/pysal/examples/desmith/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/desmith/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,12 +1,13 @@ desmith ======= -Small data set to illustrate Moran's I statistic ------------------------------------------------- +Small dataset to illustrate Moran's I statistic +----------------------------------------------- -Figure 5-31 of de Smith, Goodchild and Longley (2015) +* desmith.gal: spatial weights in GAL format. +* desmith.txt: attribute data. (n=10, k=2) -Polygons, n=12, k=1 +Figure 5-31 of de Smith, Goodchild and Longley (2015) Source: diff -Nru pysal-1.14.2/pysal/examples/examples.txt pysal-1.14.3/pysal/examples/examples.txt --- pysal-1.14.2/pysal/examples/examples.txt 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/examples.txt 2017-11-03 00:27:09.000000000 +0000 @@ -8,134 +8,437 @@ 10740 ===== -Polygon shapefile for Albuquerque New Mexico. -* 10740.dbf: attribute database file -* 10740.shp: shapefile -* 10740.shx: spatial index -* 10740_queen.gal: queen contiguity GAL format -* 10740_rook.gal: rook contiguity GAL format +Albuquerque, New Mexico, Census 2000 Tract Data +----------------------------------------------- + +* 10740.dbf: attribute data. (k=5) +* 10740.shp: shapefile. (n=195) +* 10740.shx: spatial index. +* 10740_queen.gal: queen contiguity weights in GAL format. +* 10740_rook.gal: rook contiguity weights in GAL format. + + +Line +===== + +Line Shapefile +--------------- + +* Line.dbf: attribute data. (k=3) +* Line.prj: ESRI projection file. +* Line.shp: Line shapefile. (n=4) +* Line.shx: spatial index. + +Used for testing. + + +Point +===== + +Point Shapefile +--------------- + +* Point.dbf: attribute data. (k=3) +* Point.prj: ESRI projection file. +* Point.shp: Point shapefile. (n=9) +* Point.shx: spatial index. + +Used for testing + + +Polygon +======= + +Polygon Shapefile +----------------- + +* Polygon.dbf: attribute data. (k=3) +* Polygon.prj: ESRI projection file. +* Polygon.shp: Polygon shapefile. (n=3) +* Polygon.shx: spatial index. + +Used for testing. + + +arcgis +====== + +arcgis testing files +-------------------- + +* arcgis_ohio.dbf: spatial weights in ArcGIS DBF format. +* arcgis_txt.txt: spatial weights in ArcGIS TXT format. + +Files used for internal testing. + + +baltim +====== + +Baltimore house sales prices and hedonics 1978 +---------------------------------------------------------------- + +* baltim.dbf: attribute data. (k=17) +* baltim.shp: Point shapefile. (n=211) +* baltim.shx: spatial index. +* baltim.tri.k12.kwt: kernel weights using a triangular kernel with 12 nearest neighbors in KWT format. +* baltim_k4.gwt: nearest neighbor weights (4nn) in GWT format. +* baltim_q.gal: queen contiguity weights in GAL format. +* baltimore.geojson: spatial weights in geojson format. book ==== -Synthetic data to illustrate spatial weights. Source: Anselin, L. and S.J. Rey (in -progress) Spatial Econometrics: Foundations. -* book.gal: rook contiguity for regular lattice -* book.txt: attribute data for regular lattice +Synthetic data to illustrate spatial weights +-------------------------------------------- -calempdensity -============= -Employment density for California counties. Source: Anselin, L. and S.J. Rey (in -progress) Spatial Econometrics: Foundations. +* book.gal: rook contiguity weights in GAL format for regular lattice. +* book.txt: attribute data for regular lattice. + + +burkitt +======= + +Burkitt's lymphoma in the Western Nile district of Uganda +--------------------------------------------------------- + +* burkitt.dbf: attribute data. (k=6) +* burkitt.shp: Point shapefile. (n=188) +* burkitt.shx: spatial index. + + +calemp +====== + +Employment density for California counties +------------------------------------------ * calempdensity.csv: data on employment and employment density in California - counties. + counties. (n=58, k=11) -chicago77 -========= -Chicago Community Areas (n=77). Source: Anselin, L. and S.J. Rey (in -progress) Spatial Econometrics: Foundations. -* Chicago77.dbf: attribute data -* Chicago77.shp: shapefile -* Chicago77.shx: spatial index +chicago +======= + +Chicago neighborhoods +-------------------- + +* Chicago77.dbf: attribute data. (k=11) +* Chicago77.shp: Polygon shapefile. (n=77) +* Chicago77.shx: spatial index. + + +columbus +======== + +Columbus neighborhood crime data 1980 +------------------------------------- + +* columbus.dbf: attribute data. (k=20) +* columbus.gal: queen contiguity file in GAL format. +* columbus.html: metadata. +* columbus.json: shape and attribute data file in JSON format. +* columbus.shp: Polygon shapefile. (n=49) +* columbus.shx: spatial index. + +Anselin, Luc (1988). Spatial Econometrics. Boston, Kluwer Academic, Table 12.1, p. 189. desmith ======= -Example data for autocorrelation analysis. Source: de Smith et al (2009) -`Geospatial Analysis -`_ (Used -with permission) -* desmith.txt: attribute data for 10 spatial units -* desmith.gal: spatial weights in GAL format +Small dataset to illustrate Moran's I statistic +----------------------------------------------- + +* desmith.gal: spatial weights in GAL format. +* desmith.txt: attribute data. (n=10, k=2) + +Figure 5-31 of de Smith, Goodchild and Longley (2015) + +Source: + +Used with permission. + + +geodanet +======== + +Datasets from geodanet for network analysis +------------------------------------------- + +* crimes.dbf: attribute data for crime point set. (k=2) +* crimes.prj: ESRI projection file. +* crimes.sbn: spatial index. +* crimes.sbx: spatial index. +* crimes.shp: Point shapefile for crime data. (n=287) +* crimes.shp.xml: metadata. +* crimes.shx: spatial index. +* schools.dbf: attribute data for schools point set. (k=1) +* schools.prj: ESRI projection file. +* schools.sbn: spatial index. +* schools.sbx: spatial index. +* schools.shp: Point shapefile for schools data. (n=8) +* schools.shp.xml: metadata. +* schools.shx: spatial index. +* streets.dbf: attribute data for street polyline set. (k=2) +* streets.prj: ESRI projection file. +* streets.sbn: spatial index. +* streets.sbx: spatial index. +* streets.shp: Line shapefile data for street data. (n=293) +* streets.shx: spatial index. + juvenile ======== -Cardiff juvenile delinquent residences. -* juvenile.dbf: attribute data -* juvenile.html: documentation -* juvenile.shp: shapefile -* juvenile.shx: spatial index +Residences of juvenile offenders in Cardiff, UK +----------------------------------------------- + +* juvenile.dbf: attribute data. (k=3) +* juvenile.gwt: spatial weights in GWT format. +* juvenile.shp: Point shapefile. (n=168) +* juvenile.shx: spatial index. + +Source: https://s3.amazonaws.com/geoda/data/juvenile.zip + mexico ====== -State regional income Mexican states 1940-2000. Source: Rey, S.J. and M.L. -Sastre Gutierrez. "Interregional inequality dynamics in Mexico." Spatial -Economic Analysis. Forthcoming. -* mexico.csv: attribute data -* mexico.gal: spatial weights in GAL format +Mexican states regional income 1940-2000 +---------------------------------------- -rook31 -====== -Small test shapefile +* mexico.csv: attribute data. (n=32, k=13) +* mexico.gal: spatial weights in GAL format. + +Data used in Rey, S.J. and M.L. Sastre Gutierrez. (2010) "Interregional inequality dynamics in Mexico." Spatial Economic Analysis, 5: 277-298. + + +nat +=== + +US county homicides 1960-1990 +----------------------------- -* rook31.dbf: attribute data -* rook31.gal: spatia weights in GAL format -* rook31.shp: shapefile -* rook31.shx: spatial index +* NAT.dbf: attribute data for US county homicides. (k=69) +* NAT.shp: Polygon shapefile for US counties. (n=3085) +* NAT.shx: spatial index. +* nat.geojson: shape and attribute data in GeoJSON format. +* nat_queen.gal: queen contiguity weights in GAL format. +* nat_queen_old.gal: queen contiguity weights in GAL format using old polygon index. +* nat_trian_k20.kwt: kernel weights in KWT format. +* natregimes.dbf: attribute data for US county homicides with regimes assigned. (k=73) +* natregimes.shp: Polygon shapefile for US counties. (n=3085) +* natregimes.shx: spatial index. + + +networks +======== + +Datasets used for network testing +--------------------------------- + +* eberly_net.dbf: attribute data. (k=3) +* eberly_net.shp: Line shapefile. (n=29) +* eberly_net.shx: spatial index. +* eberly_net_pts_offnetwork.dbf: attribute data for points off network. (k=2) +* eberly_net_pts_offnetwork.shp: Point shapefile. (n=100) +* eberly_net_pts_offnetwork.shx: spatial index。 +* eberly_net_pts_onnetwork.dbf: attribute data for points on network. (k=1) +* eberly_net_pts_onnetwork.shp: Point shapefile. (n=110) +* eberly_net_pts_onnetwork.shx: spatial index. +* nonplanarsegments.dbf: attribute data. (k=1) +* nonplanarsegments.prj: ESRI projection file. +* nonplanarsegments.qpj: QGIS projection file. +* nonplanarsegments.shp: Line shapefile. (n=2) +* nonplanarsegments.shx: spatial index. + + +newHaven +======== + +New Haven crime dataset Sept 2014 +--------------------------------- + +* new_haven_merged.dbf: attribute data for New Haven crimes. (k=5) +* new_haven_merged.shp: Point shapefile. (n=3293) +* new_haven_merged.shx: spatial index. +* newhaven_nework.dbf: attribute data for New Haven street network. (k=6) +* newhaven_nework.prj: ESRI projection file. +* newhaven_nework.qpj: QGIS projection file. +* newhaven_nework.shp: Line shapefile. (n=1537) +* newhaven_nework.shx: spatial index. sacramento2 =========== -1998 and 2001 Zip Code Business Patterns (Census Bureau) for Sacramento MSA - * sacramento2.dbf - * sacramento2.sbn - * sacramento2.sbx - * sacramento2.shp - * sacramento2.shx +2000 Census Tract Data for Sacramento MSA +----------------------------------------- -shp_test -======== -Sample Shapefiles used only for testing purposes. Each example include a ".shp" Shapefile, ".shx" Shapefile Index, ".dbf" DBase file, and a ".prj" ESRI Projection file. +* sacramentot2.dbf: attribute data. (k=31) +* sacramentot2.gal: queen contiguity weights in GAL format. +* sacramentot2.sbn: spatial index. +* sacramentot2.sbx: spatial index. +* sacramentot2.shp: Polygon shapefile. (n=403) +* sacramentot2.shx: spatial index. -Examples include: +Source: US Census Bureau, 2000 Census (Summary File 3). Extracted from http://factfinder.census.gov in April 2004. - * Point: Example of an ESRI Shapefile of Type 1 (Point). - * Line: Example of an ESRI Shapefile of Type 3 (Line). - * Polygon: Example of an ESRI Shapefile of Type 5 (Polygon). sids2 ===== -North Carolina county SIDS death counts and rates + +North Carolina county Sudden Infant Death Syndrome (SIDS) death counts and rates +-------------------------------------------------------------------------------- - * sids2.dbf: attribute data - * sids2.html: documentation - * sids2.shp: shapefile - * sids2.shx: spatial index - * sids2.gal: GAL file for spatial weights +* sids2.dbf: attribute data. (k=18) +* sids2.html: metadata. +* sids2.shp: Polygon shapefile. (n=100) +* sids2.shx: spatial index. +* sids2.gal: spatial weights in GAL format. -stl_hom -======= -Homicides and selected socio-economic characteristics for counties surrounding St Louis, MO. Data aggregated for three time periods: 1979-84 (steady decline in homicides), 1984-88 (stable period), and 1988-93 (steady increase in homicides). Source: S. Messner, L. Anselin, D. Hawkins, G. Deane, S. Tolnay, R. Baller (2000). An Atlas of the Spatial Patterning of County-Level Homicide, 1960-1990. Pittsburgh, PA, National Consortium on Violence Research (NCOVR). +Source: https://s3.amazonaws.com/geoda/data/sids2.zip - * stl_hom.html: Metadata - * stl_hom.txt: txt file with attribute data - * stl_hom.wkt: A Well-Known-Text representation of the geometry. - * stl_hom.csv: attribute data and WKT geometry. - * stl.hom.gal: GAL file for spatial weights - -US Regional Incomes -=================== -Per capita income for the lower 48 US states, 1929-2010 - - * us48.shp: shapefile - * us48.dbf: dbf for shapefile - * us48.shx: index for shapefile - * usjoin.csv: attribute data (comma delimited file) - -Virginia -======== -Virginia Counties Shapefile. - - * virginia.shp: Shapefile - * virginia.shx: shapefile index - * virginia.dbf: attributes - * virginia.prj: shapefile projection +snow_maps +========= + +Public water pumps and Cholera deaths in London 1954 (Snow's Map) +----------------------------------------------------------------- + +* SohoPeople.dbf: attribute data for Cholera deaths. (k=2) +* SohoPeople.prj: ESRI projection file. +* SohoPeople.sbn: spatial index. +* SohoPeople.sbx: spatial index. +* SohoPeople.shp: Point shapefile for Cholera deaths. (n=324) +* SohoPeople.shx: spatial index. +* SohoWater.dbf: attribute data for public water pumps. (k=1) +* SohoWater.prj: ESRI projection file. +* SohoWater.sbn: spatial index. +* SohoWater.sbx: spatial index. +* SohoWater.shp: Point shapefile for public water pumps. (n=13) +* SohoWater.shx: spatial index. +* Soho_Network.dbf: attribute data for street network. (k=1) +* Soho_Network.prj: ESRI projection file. +* Soho_Network.sbn: spatial index. +* Soho_Network.sbx: spatial index. +* Soho_Network.shp: Line shapefile for street network. (n=118) +* Soho_Network.shx: spatial index. + + +south +===== + +Homicides and selected socio-economic characteristics for Southern U.S. counties (subset of NCOVR national data set). Data for four decennial census years: 1960, 1970, 1980, 1990 +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +* south.dbf: attribute data. (k=69) +* south.shp: Polygon shapefile. (n=1412) +* south.shx: spatial index. +* south_q.gal: queen contiguity weights in GAL format. +* south_queen.gal: queen contiguity weights in GAL format. + + +stl +=== + +Homicides and selected socio-economic characteristics for counties surrounding St Louis, MO. Data aggregated for three time periods: 1979-84 (steady decline in homicides), 1984-88 (stable period), and 1988-93 (steady increase in homicides). +--------------------------------------------------------------------------- + +* stl.gal: queen contiguity weights in GAL format. +* stl_hom.csv: attribute data and WKT geometry. +* stl_hom.dbf: attribute data. (k=22) +* stl_hom.html: metadata. +* stl_hom.shp: Polygon shapefile. (n=78) +* stl_hom.shx: spatial index. +* stl_hom.txt: selected attribute data. +* stl_hom.wkt: a Well-Known-Text representation of the geometry. +* stl_hom_rook.gal: rook contiguity weights in GAL format. + +Source: S. Messner, L. Anselin, D. Hawkins, G. Deane, S. Tolnay, R. Baller (2000). An Atlas of the Spatial Patterning of County-Level Homicide, 1960-1990. Pittsburgh, PA, [National Consortium on Violence Research (NCOVR)](http://www.ncovr.heinz.cmu.edu). + + +street_net_pts +============== + +Street network points +--------------------- + +* street_net_pts.dbf: attribute data. (k=1) +* street_net_pts.prj: ESRI projection file. +* street_net_pts.qpj: QGIS projection file. +* street_net_pts.shp: Point shapefile. (n=303) +* street_net_pts.shx: spatial index. + + +taz +=== + +Dataset used for regionalization +-------------------------------- + +* taz.dbf: attribute data. (k=14) +* taz.shp: Polygon shapefile. (n=4109) +* taz.shx: spatial index. + + +us_income +========= + +Nominal per capita income for the lower 48 US states 1929-2009 +—————————————————————————————————————————————————————————————— + +* states48.gal: queen contiguity weights in GAL format. +* us48.dbf: attribute data. (k=8) +* us48.shp: Polygon shapefile. (n=48) +* us48.shx: spatial index. +* usjoin.csv: 48 US states nominal per capita income time series 1929-2009. + + +virginia +======== + +Virginia counties shapefile +--------------------------- + +* virginia.dbf: attribute data. (k=7) +* virginia.gal: rook contiguity weights in GAL format. +* virginia.json: attribute and shape data in JSON format. +* virginia.prj: ESRI projection file. +* virginia.shp: Polygon shapefile. (n=136) +* virginia.shx: spatial index. +* virginia_queen.dat: queen contiguity weights in DAT format. +* virginia_queen.dbf: queen contiguity weights in DBF format. +* virginia_queen.gal: queen contiguity weights in GAL format. +* virginia_queen.mat: queen contiguity weights in MATLAB MAT format. +* virginia_queen.mtx: queen contiguity weights in Matrix Market MTX format. +* virginia_queen.swm: queen contiguity weight in ArcGIS SWM format. +* virginia_queen.txt: queen contiguity weights in TXT format. +* virginia_queen.wk1: queen contiguity weights in Lotus Wk1 format. +* virginia_rook.gal: rook contiguity weights in GAL format. + + +wmat +==== + +Datasets used for spatial weights testing +----------------------------------------- + +* geobugs_scot: spatial weights in GeoBUGS text format. +* lattice10x10.shp: Polygon shapefile for 10 * 10 regular lattices. (n=100) +* lattice10x10.shx: spatial index. +* ohio.swm: spatial weights in ArcGIS SWM format. +* rook31.dbf: attribute data. (k=2) +* rook31.gal: rook contiguity weights in GAL format. +* rook31.shp: Polygon shapefile. (n=3) +* rook31.shx: spatial index. +* spat-sym-us.mat: spatial weights in MATLAB MAT format. +* spat-sym-us.wk1: spatial weights in Lotus Wk1 format. +* spdep_listw2WB_columbus: spatial weights in GeoBUGS text format. +* stata_full.txt: full spatial weights matrix. +* stata_sparse.txt: sparse spatial weights matrix. +* wmat.dat: spatial weights in DAT format. +* wmat.mtx: spatial weights in Matrix Market MTX format. diff -Nru pysal-1.14.2/pysal/examples/geodanet/README.md pysal-1.14.3/pysal/examples/geodanet/README.md --- pysal-1.14.2/pysal/examples/geodanet/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/geodanet/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,23 +4,23 @@ Datasets from geodanet for network analysis ------------------------------------------- -* crimes.dbf attribute data for crime point set -* crimes.prj projection -* crimes.sbn spatial index -* crimes.sbx spatial index -* crimes.shp shapefile for crime point data -* crimes.shp.xml metadata -* crimes.shx shape index -* schools.dbf attribute data for schools point set -* schools.prj projection -* schools.sbn spatial index -* schools.sbx spatial index -* schools.shp spatial index -* schools.shp.xml metadata -* schools.shx shape index -* streets.dbf attribute data for street polyline -* streets.prj projection -* streets.sbn spatial index -* streets.sbx spatial index -* streets.shp shapefile -* streets.shx shape index +* crimes.dbf: attribute data for crime point set. (k=2) +* crimes.prj: ESRI projection file. +* crimes.sbn: spatial index. +* crimes.sbx: spatial index. +* crimes.shp: Point shapefile for crime data. (n=287) +* crimes.shp.xml: metadata. +* crimes.shx: spatial index. +* schools.dbf: attribute data for schools point set. (k=1) +* schools.prj: ESRI projection file. +* schools.sbn: spatial index. +* schools.sbx: spatial index. +* schools.shp: Point shapefile for schools data. (n=8) +* schools.shp.xml: metadata. +* schools.shx: spatial index. +* streets.dbf: attribute data for street polyline set. (k=2) +* streets.prj: ESRI projection file. +* streets.sbn: spatial index. +* streets.sbx: spatial index. +* streets.shp: Line shapefile data for street data. (n=293) +* streets.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/juvenile/README.md pysal-1.14.3/pysal/examples/juvenile/README.md --- pysal-1.14.2/pysal/examples/juvenile/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/juvenile/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,11 +4,9 @@ Residences of juvenile offenders in Cardiff, UK ----------------------------------------------- - * juvenile.dbf attribute file - * juvenile.gwt spatial weights - * juvenile.shp shapefile - * juvenile.shx spatial index +* juvenile.dbf: attribute data. (k=3) +* juvenile.gwt: spatial weights in GWT format. +* juvenile.shp: Point shapefile. (n=168) +* juvenile.shx: spatial index. -Point data, unknown coordinates, n=168, k=3. - -Source: http://geodacenter.org/downloads/data-files/juvenile.zip +Source: https://s3.amazonaws.com/geoda/data/juvenile.zip \ No newline at end of file diff -Nru pysal-1.14.2/pysal/examples/Line/README.md pysal-1.14.3/pysal/examples/Line/README.md --- pysal-1.14.2/pysal/examples/Line/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/Line/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,7 +1,12 @@ -Point +Line ===== -Point Shapefile +Line Shapefile --------------- -Used for testing +* Line.dbf: attribute data. (k=3) +* Line.prj: ESRI projection file. +* Line.shp: Line shapefile. (n=4) +* Line.shx: spatial index. + +Used for testing. diff -Nru pysal-1.14.2/pysal/examples/mexico/README.md pysal-1.14.3/pysal/examples/mexico/README.md --- pysal-1.14.2/pysal/examples/mexico/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/mexico/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,12 +4,7 @@ Mexican states regional income 1940-2000 ---------------------------------------- -Data used in Rey, S.J. and M.L. Sastre Gutierrez. (2010) "Interregional inequality -dynamics in Mexico." Spatial Economic Analysis, 5: 277-298 - -* mexico.csv: attribute data -* mexico.gal: spatial weights in GAL format - -Polygon data, n=32, k=13 - +* mexico.csv: attribute data. (n=32, k=13) +* mexico.gal: spatial weights in GAL format. +Data used in Rey, S.J. and M.L. Sastre Gutierrez. (2010) "Interregional inequality dynamics in Mexico." Spatial Economic Analysis, 5: 277-298. diff -Nru pysal-1.14.2/pysal/examples/nat/README.md pysal-1.14.3/pysal/examples/nat/README.md --- pysal-1.14.2/pysal/examples/nat/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/nat/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,16 @@ +nat +=== + +US county homicides 1960-1990 +----------------------------- + +* NAT.dbf: attribute data for US county homicides. (k=69) +* NAT.shp: Polygon shapefile for US counties. (n=3085) +* NAT.shx: spatial index. +* nat.geojson: shape and attribute data in GeoJSON format. +* nat_queen.gal: queen contiguity weights in GAL format. +* nat_queen_old.gal: queen contiguity weights in GAL format using old polygon index. +* nat_trian_k20.kwt: kernel weights in KWT format. +* natregimes.dbf: attribute data for US county homicides with regimes assigned. (k=73) +* natregimes.shp: Polygon shapefile for US counties. (n=3085) +* natregimes.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/networks/README.md pysal-1.14.3/pysal/examples/networks/README.md --- pysal-1.14.2/pysal/examples/networks/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/networks/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,20 @@ +networks +======== + +Datasets used for network testing +--------------------------------- + +* eberly_net.dbf: attribute data. (k=3) +* eberly_net.shp: Line shapefile. (n=29) +* eberly_net.shx: spatial index. +* eberly_net_pts_offnetwork.dbf: attribute data for points off network. (k=2) +* eberly_net_pts_offnetwork.shp: Point shapefile. (n=100) +* eberly_net_pts_offnetwork.shx: spatial index。 +* eberly_net_pts_onnetwork.dbf: attribute data for points on network. (k=1) +* eberly_net_pts_onnetwork.shp: Point shapefile. (n=110) +* eberly_net_pts_onnetwork.shx: spatial index. +* nonplanarsegments.dbf: attribute data. (k=1) +* nonplanarsegments.prj: ESRI projection file. +* nonplanarsegments.qpj: QGIS projection file. +* nonplanarsegments.shp: Line shapefile. (n=2) +* nonplanarsegments.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/newHaven/README.md pysal-1.14.3/pysal/examples/newHaven/README.md --- pysal-1.14.2/pysal/examples/newHaven/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/newHaven/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,14 @@ +newHaven +======== + +New Haven crime dataset Sept 2014 +--------------------------------- + +* new_haven_merged.dbf: attribute data for New Haven crimes. (k=5) +* new_haven_merged.shp: Point shapefile. (n=3293) +* new_haven_merged.shx: spatial index. +* newhaven_nework.dbf: attribute data for New Haven street network. (k=6) +* newhaven_nework.prj: ESRI projection file. +* newhaven_nework.qpj: QGIS projection file. +* newhaven_nework.shp: Line shapefile. (n=1537) +* newhaven_nework.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/Point/README.md pysal-1.14.3/pysal/examples/Point/README.md --- pysal-1.14.2/pysal/examples/Point/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/Point/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,12 @@ +Point +===== + +Point Shapefile +--------------- + +* Point.dbf: attribute data. (k=3) +* Point.prj: ESRI projection file. +* Point.shp: Point shapefile. (n=9) +* Point.shx: spatial index. + +Used for testing diff -Nru pysal-1.14.2/pysal/examples/Polygon/README.md pysal-1.14.3/pysal/examples/Polygon/README.md --- pysal-1.14.2/pysal/examples/Polygon/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/Polygon/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,4 +4,9 @@ Polygon Shapefile ----------------- -Used for testing +* Polygon.dbf: attribute data. (k=3) +* Polygon.prj: ESRI projection file. +* Polygon.shp: Polygon shapefile. (n=3) +* Polygon.shx: spatial index. + +Used for testing. diff -Nru pysal-1.14.2/pysal/examples/README.txt pysal-1.14.3/pysal/examples/README.txt --- pysal-1.14.2/pysal/examples/README.txt 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/README.txt 2017-11-03 00:27:09.000000000 +0000 @@ -1,5 +1,5 @@ Documentation for all example data sets for PySAL can be found at -http://pysal.org/users/tutorials/examples.html +http://pysal.readthedocs.io/en/latest/users/tutorials/examples.html If you obtained this example data by downloading it as a separate zip file, it should be unzipped in the pysal directory, so that the path to the data herein would be like pysal/examples/rook31.dbf, for example. diff -Nru pysal-1.14.2/pysal/examples/sacramento2/README.md pysal-1.14.3/pysal/examples/sacramento2/README.md --- pysal-1.14.2/pysal/examples/sacramento2/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/sacramento2/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,14 @@ +sacramento2 +=========== + +2000 Census Tract Data for Sacramento MSA +----------------------------------------- + +* sacramentot2.dbf: attribute data. (k=31) +* sacramentot2.gal: queen contiguity weights in GAL format. +* sacramentot2.sbn: spatial index. +* sacramentot2.sbx: spatial index. +* sacramentot2.shp: Polygon shapefile. (n=403) +* sacramentot2.shx: spatial index. + +Source: US Census Bureau, 2000 Census (Summary File 3). Extracted from http://factfinder.census.gov in April 2004. \ No newline at end of file diff -Nru pysal-1.14.2/pysal/examples/sids2/README.md pysal-1.14.3/pysal/examples/sids2/README.md --- pysal-1.14.2/pysal/examples/sids2/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/sids2/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,14 +1,13 @@ sids2 ===== -North Carolina county SIDS death counts and rates -------------------------------------------------- - - * sids2.dbf: attribute data - * sids2.html: documentation - * sids2.shp: shapefile - * sids2.shx: spatial index - * sids2.gal: GAL file for spatial weights +North Carolina county Sudden Infant Death Syndrome (SIDS) death counts and rates +-------------------------------------------------------------------------------- +* sids2.dbf: attribute data. (k=18) +* sids2.html: metadata. +* sids2.shp: Polygon shapefile. (n=100) +* sids2.shx: spatial index. +* sids2.gal: spatial weights in GAL format. -Source: http://geodacenter.org/downloads/data-files/sids2.zip +Source: https://s3.amazonaws.com/geoda/data/sids2.zip diff -Nru pysal-1.14.2/pysal/examples/snow_maps/README.md pysal-1.14.3/pysal/examples/snow_maps/README.md --- pysal-1.14.2/pysal/examples/snow_maps/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/snow_maps/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,24 @@ +snow_maps +========= + +Public water pumps and Cholera deaths in London 1954 (Snow's Map) +----------------------------------------------------------------- + +* SohoPeople.dbf: attribute data for Cholera deaths. (k=2) +* SohoPeople.prj: ESRI projection file. +* SohoPeople.sbn: spatial index. +* SohoPeople.sbx: spatial index. +* SohoPeople.shp: Point shapefile for Cholera deaths. (n=324) +* SohoPeople.shx: spatial index. +* SohoWater.dbf: attribute data for public water pumps. (k=1) +* SohoWater.prj: ESRI projection file. +* SohoWater.sbn: spatial index. +* SohoWater.sbx: spatial index. +* SohoWater.shp: Point shapefile for public water pumps. (n=13) +* SohoWater.shx: spatial index. +* Soho_Network.dbf: attribute data for street network. (k=1) +* Soho_Network.prj: ESRI projection file. +* Soho_Network.sbn: spatial index. +* Soho_Network.sbx: spatial index. +* Soho_Network.shp: Line shapefile for street network. (n=118) +* Soho_Network.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/south/README.md pysal-1.14.3/pysal/examples/south/README.md --- pysal-1.14.2/pysal/examples/south/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/south/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,11 @@ +south +===== + +Homicides and selected socio-economic characteristics for Southern U.S. counties (subset of NCOVR national data set). Data for four decennial census years: 1960, 1970, 1980, 1990. +---------------------------------------------------------------------- + +* south.dbf: attribute data. (k=69) +* south.shp: Polygon shapefile. (n=1412) +* south.shx: spatial index. +* south_q.gal: queen contiguity weights in GAL format. +* south_queen.gal: queen contiguity weights in GAL format. diff -Nru pysal-1.14.2/pysal/examples/stl/README.md pysal-1.14.3/pysal/examples/stl/README.md --- pysal-1.14.2/pysal/examples/stl/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/stl/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,17 @@ +stl +=== + +Homicides and selected socio-economic characteristics for counties surrounding St Louis, MO. Data aggregated for three time periods: 1979-84 (steady decline in homicides), 1984-88 (stable period), and 1988-93 (steady increase in homicides). +--------------------------------------------------------------------------- + +* stl.gal: queen contiguity weights in GAL format. +* stl_hom.csv: attribute data and WKT geometry. +* stl_hom.dbf: attribute data. (k=22) +* stl_hom.html: metadata. +* stl_hom.shp: Polygon shapefile. (n=78) +* stl_hom.shx: spatial index. +* stl_hom.txt: selected attribute data. +* stl_hom.wkt: a Well-Known-Text representation of the geometry. +* stl_hom_rook.gal: rook contiguity weights in GAL format. + +Source: S. Messner, L. Anselin, D. Hawkins, G. Deane, S. Tolnay, R. Baller (2000). An Atlas of the Spatial Patterning of County-Level Homicide, 1960-1990. Pittsburgh, PA, [National Consortium on Violence Research (NCOVR)](http://www.ncovr.heinz.cmu.edu). diff -Nru pysal-1.14.2/pysal/examples/street_net_pts/README.md pysal-1.14.3/pysal/examples/street_net_pts/README.md --- pysal-1.14.2/pysal/examples/street_net_pts/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/street_net_pts/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,11 @@ +street_net_pts +============== + +Street network points +--------------------- + +* street_net_pts.dbf: attribute data. (k=1) +* street_net_pts.prj: ESRI projection file. +* street_net_pts.qpj: QGIS projection file. +* street_net_pts.shp: Point shapefile. (n=303) +* street_net_pts.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/taz/README.md pysal-1.14.3/pysal/examples/taz/README.md --- pysal-1.14.2/pysal/examples/taz/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/taz/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,9 @@ +taz +=== + +Dataset used for regionalization +-------------------------------- + +* taz.dbf: attribute data. (k=14) +* taz.shp: Polygon shapefile. (n=4109) +* taz.shx: spatial index. diff -Nru pysal-1.14.2/pysal/examples/test_examples.py pysal-1.14.3/pysal/examples/test_examples.py --- pysal-1.14.2/pysal/examples/test_examples.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/test_examples.py 2017-11-03 00:27:09.000000000 +0000 @@ -1,12 +1,13 @@ import unittest import pysal.examples as ex +import os class Example_Tester(unittest.TestCase): def test_get_path(self): - pathparts = ex.get_path('').split('/') - self.localpath = '/'.join(pathparts[-3:]) - self.assertEquals(self.localpath, 'pysal/examples/') + pathparts = os.path.normpath(ex.get_path('')).split(os.path.sep) + self.localpath = os.path.join(*pathparts[-2:]) + self.assertEquals(self.localpath, os.path.normpath('pysal/examples/')) def test_parser(self): for example in ex.available(): diff -Nru pysal-1.14.2/pysal/examples/tmpIvIYa5.gwt pysal-1.14.3/pysal/examples/tmpIvIYa5.gwt --- pysal-1.14.2/pysal/examples/tmpIvIYa5.gwt 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/tmpIvIYa5.gwt 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,2803 @@ +0 168 juvenile ID +1 2 14.1421 +2 1 14.1421 +2 3 5.09902 +2 4 3.60555 +2 5 5 +2 6 14.1421 +2 57 7.61577 +2 58 7 +3 2 5.09902 +3 4 2.23607 +3 5 3.60555 +3 6 13.3417 +3 52 14.1421 +3 53 11.3137 +3 54 11.4018 +3 55 9.43398 +3 56 9.84886 +3 57 2.82843 +3 58 2.23607 +3 59 13.3417 +4 2 3.60555 +4 3 2.23607 +4 5 2 +4 6 12.0416 +4 7 14.1421 +4 53 12.2066 +4 54 12.53 +4 55 10.7703 +4 56 11.4018 +4 57 4.12311 +4 58 4.47214 +5 2 5 +5 3 3.60555 +5 4 2 +5 6 10.0499 +5 7 12.1655 +5 52 13.8924 +5 53 11.1803 +5 54 11.7047 +5 55 10.198 +5 56 11.0454 +5 57 4.12311 +5 58 5.65685 +6 2 14.1421 +6 3 13.3417 +6 4 12.0416 +6 5 10.0499 +6 7 3.60555 +6 8 9.43398 +6 9 9.05539 +6 10 13.0384 +6 48 13.6015 +6 49 10.2956 +6 51 8.48528 +6 52 13.3417 +6 53 12.083 +6 54 13.4164 +6 55 13.6015 +6 57 12.083 +7 4 14.1421 +7 5 12.1655 +7 6 3.60555 +7 8 6.32456 +7 9 7.28011 +7 10 11.1803 +7 11 14 +7 47 13.8924 +7 48 10.2956 +7 49 7.28011 +7 50 11.4018 +7 51 5 +7 52 11.1803 +7 53 10.6301 +7 54 12.0416 +7 55 12.8062 +7 57 13.1529 +79 73 12.0416 +79 74 10.4403 +79 75 8 +79 76 4.47214 +79 77 3.16228 +79 78 9.21954 +79 80 1.41421 +79 81 3.60555 +79 18 12.083 +79 19 13.6015 +79 21 14 +79 22 13 +79 23 12 +79 27 13.9284 +79 28 12.53 +79 29 10.2956 +79 30 7.81025 +79 31 9.21954 +8 51 2.23607 +8 43 12.8062 +8 6 9.43398 +8 7 6.32456 +8 40 13.8924 +8 9 4.12311 +8 10 6.40312 +8 11 8.24621 +8 12 9.21954 +8 45 8.544 +8 46 8.06226 +8 47 7.81025 +8 48 4.24264 +8 49 1 +8 50 7.07107 +8 42 13.0384 +8 52 13.6015 +8 41 12.53 +8 44 12.2066 +9 6 9.05539 +9 7 7.28011 +9 8 4.12311 +9 41 14.1421 +9 10 4 +9 11 7.28011 +9 12 8.24621 +9 45 9.89949 +9 46 10 +9 47 10.2956 +9 48 7.28011 +9 49 4 +9 50 11 +9 51 5.83095 +10 43 13 +10 49 5.65685 +10 6 13.0384 +10 7 11.1803 +10 8 6.40312 +10 9 4 +10 42 12.53 +10 11 3.60555 +10 12 4.47214 +10 45 7.61577 +10 46 8.24621 +10 47 9.05539 +10 48 7.28011 +10 40 13.0384 +10 50 11.7047 +10 51 8.60233 +10 41 11.6619 +10 44 12.083 +11 36 14.1421 +11 37 11.4018 +11 7 14 +11 8 8.24621 +11 9 7.28011 +11 10 3.60555 +11 43 10.198 +11 12 1 +11 45 5 +11 46 6.08276 +11 44 9.21954 +11 48 7.07107 +11 40 9.84886 +11 50 11.4018 +11 51 10.4403 +11 41 8.544 +11 39 10.8167 +11 49 7.28011 +11 47 7.28011 +11 42 9.48683 +12 51 11.4018 +12 34 13.6015 +12 43 10.0499 +12 36 13.4536 +12 37 10.6301 +12 39 10.2956 +12 8 9.21954 +12 9 8.24621 +12 10 4.47214 +12 11 1 +12 44 9.05539 +12 45 5.09902 +12 46 6.32456 +12 47 7.61577 +12 48 7.81025 +12 40 9.48683 +12 50 12.0416 +12 35 13.4536 +12 41 8.24621 +12 49 8.24621 +12 42 9.21954 +13 14 3.16228 +13 15 10.4403 +13 16 11.4018 +13 17 11.7047 +13 18 13.4536 +13 19 11.4018 +13 20 7.07107 +13 21 7.81025 +13 22 8.60233 +13 23 9.43398 +13 24 6.32456 +13 25 6.08276 +13 26 6.08276 +13 27 7 +13 28 9.05539 +13 29 11 +13 30 14 +13 31 13.0384 +13 32 4.47214 +13 33 6.32456 +13 34 10 +13 35 11.4018 +13 36 12.8062 +13 37 11.4018 +14 13 3.16228 +14 15 9 +14 16 10 +14 17 10.0499 +14 18 10.8167 +14 19 8.94427 +14 20 4.47214 +14 21 5 +14 22 5.65685 +14 23 6.40312 +14 24 3.16228 +14 25 3 +14 26 3 +14 27 4.12311 +14 28 6.32456 +14 29 8.06226 +14 30 11.0454 +14 31 10.198 +14 32 3.16228 +14 33 4.24264 +14 34 8.60233 +14 35 10 +14 36 11.4018 +14 37 10.7703 +15 32 12.0416 +15 33 12.3693 +15 13 10.4403 +15 14 9 +15 16 1 +15 17 1.41421 +15 18 6 +15 19 4.12311 +15 20 5.38516 +15 21 5.83095 +15 22 6.40312 +15 23 7.07107 +15 24 8.544 +15 25 9.48683 +15 26 9.48683 +15 27 10.7703 +15 28 12.53 +15 29 12.8062 +16 32 13.0384 +16 33 13.3417 +16 13 11.4018 +16 14 10 +16 15 1 +16 17 1 +16 18 6.08276 +16 19 4.47214 +16 20 6.32456 +16 21 6.7082 +16 22 7.2111 +16 23 7.81025 +16 24 9.48683 +16 25 10.4403 +16 26 10.4403 +16 27 11.7047 +16 28 13.4164 +16 29 13.6015 +17 32 13 +17 33 13.1529 +17 13 11.7047 +17 14 10.0499 +17 15 1.41421 +17 16 1 +17 18 5.09902 +17 19 3.60555 +17 20 6.08276 +17 21 6.32456 +17 22 6.7082 +17 23 7.2111 +17 24 9.21954 +17 25 10.198 +17 26 10.198 +17 27 11.4018 +17 28 13 +17 29 13.0384 +18 13 13.4536 +18 14 10.8167 +18 15 6 +18 16 6.08276 +18 17 5.09902 +18 19 2.23607 +18 20 6.40312 +18 21 5.83095 +18 22 5.38516 +18 23 5.09902 +18 24 8.544 +18 25 9.48683 +18 26 9.48683 +18 27 10.198 +18 28 11 +18 29 10.198 +18 30 11.1803 +18 31 11.7047 +18 32 13 +18 33 12.3693 +18 77 12.8062 +18 79 12.083 +18 80 12.6491 +18 81 13.1529 +19 13 11.4018 +19 14 8.94427 +19 15 4.12311 +19 16 4.47214 +19 17 3.60555 +19 18 2.23607 +19 20 4.47214 +19 21 4.12311 +19 22 4 +19 23 4.12311 +19 24 7.07107 +19 25 8.06226 +19 26 8.06226 +19 27 9 +19 28 10.198 +19 29 9.84886 +19 30 11.4018 +19 31 11.6619 +19 32 11.4018 +19 33 11.0454 +19 77 13.8924 +19 79 13.6015 +20 13 7.07107 +20 14 4.47214 +20 15 5.38516 +20 16 6.32456 +20 17 6.08276 +20 18 6.40312 +20 19 4.47214 +20 21 1 +20 22 2 +20 23 3 +20 24 3.16228 +20 25 4.12311 +20 26 4.12311 +20 27 5.38516 +20 28 7.2111 +20 29 7.81025 +20 30 10.2956 +20 31 10 +20 32 7.07107 +20 33 7.07107 +20 34 11.4018 +20 35 12.6491 +20 36 13.9284 +20 37 14.1421 +21 13 7.81025 +21 14 5 +21 15 5.83095 +21 16 6.7082 +21 17 6.32456 +21 18 5.83095 +21 19 4.12311 +21 20 1 +21 22 1 +21 23 2 +21 24 3 +21 25 4 +21 26 4 +21 27 5.09902 +21 28 6.7082 +21 29 7.07107 +21 30 9.43398 +21 31 9.21954 +21 32 7.28011 +21 33 7 +21 34 11.1803 +21 35 12.3693 +21 36 13.6015 +21 37 14.0357 +21 77 13.3417 +21 79 14 +22 13 8.60233 +22 14 5.65685 +22 15 6.40312 +22 16 7.2111 +22 17 6.7082 +22 18 5.38516 +22 19 4 +22 20 2 +22 21 1 +22 23 1 +22 24 3.16228 +22 25 4.12311 +22 26 4.12311 +22 27 5 +22 28 6.32456 +22 29 6.40312 +22 30 8.60233 +22 31 8.48528 +22 32 7.61577 +22 33 7.07107 +22 34 11.0454 +22 35 12.1655 +22 36 13.3417 +22 37 14 +22 77 12.3693 +22 79 13 +23 13 9.43398 +23 14 6.40312 +23 15 7.07107 +23 16 7.81025 +23 17 7.2111 +23 18 5.09902 +23 19 4.12311 +23 20 3 +23 21 2 +23 22 1 +23 24 3.60555 +23 25 4.47214 +23 26 4.47214 +23 27 5.09902 +23 28 6.08276 +23 29 5.83095 +23 30 7.81025 +23 31 7.81025 +23 32 8.06226 +23 33 7.28011 +23 34 11 +23 35 12.0416 +23 36 13.1529 +23 37 14.0357 +23 77 11.4018 +23 79 12 +23 80 13.0384 +24 13 6.32456 +24 14 3.16228 +24 15 8.544 +24 16 9.48683 +24 17 9.21954 +24 18 8.544 +24 19 7.07107 +24 20 3.16228 +24 21 3 +24 22 3.16228 +24 23 3.60555 +24 25 1 +24 26 1 +24 27 2.23607 +24 28 4.24264 +24 29 5.38516 +24 30 8.24621 +24 31 7.61577 +24 32 4.47214 +24 33 4 +24 34 8.24621 +24 35 9.48683 +24 36 10.7703 +24 37 11.0454 +24 77 13 +25 13 6.08276 +25 14 3 +25 15 9.48683 +25 16 10.4403 +25 17 10.198 +25 18 9.48683 +25 19 8.06226 +25 20 4.12311 +25 21 4 +25 22 4.12311 +25 23 4.47214 +25 24 1 +25 26 1.41421E-05 +25 27 1.41421 +25 28 3.60555 +25 29 5.09902 +25 30 8.06226 +25 31 7.28011 +25 32 3.60555 +25 33 3 +25 34 7.28011 +25 35 8.544 +25 36 9.84886 +25 37 10.0499 +25 39 13.3417 +25 77 13.0384 +26 13 6.08276 +26 14 3 +26 15 9.48683 +26 16 10.4403 +26 17 10.198 +26 18 9.48683 +26 19 8.06226 +26 20 4.12311 +26 21 4 +26 22 4.12311 +26 23 4.47214 +26 24 1 +26 25 1.41421E-05 +26 27 1.41421 +26 28 3.60555 +26 29 5.09902 +26 30 8.06226 +26 31 7.28011 +26 32 3.60555 +26 33 3 +26 34 7.28011 +26 35 8.544 +26 36 9.84886 +26 37 10.0499 +26 39 13.3417 +26 77 13.0384 +27 13 7 +27 14 4.12311 +27 15 10.7703 +27 16 11.7047 +27 17 11.4018 +27 18 10.198 +27 19 9 +27 20 5.38516 +27 21 5.09902 +27 22 5 +27 23 5.09902 +27 24 2.23607 +27 25 1.41421 +27 26 1.41421 +27 28 2.23607 +27 29 4 +27 30 7 +27 31 6.08276 +27 32 3.60555 +27 33 2.23607 +27 34 6.08276 +27 35 7.28011 +27 36 8.544 +27 37 9 +27 38 13.6015 +27 39 12.1655 +27 40 14.1421 +27 73 13.8924 +27 75 13.3417 +27 77 12.1655 +27 79 13.9284 +28 13 9.05539 +28 14 6.32456 +28 15 12.53 +28 16 13.4164 +28 17 13 +28 18 11 +28 19 10.198 +28 20 7.2111 +28 21 6.7082 +28 22 6.32456 +28 23 6.08276 +28 24 4.24264 +28 25 3.60555 +28 26 3.60555 +28 27 2.23607 +28 29 2.23607 +28 30 5.09902 +28 31 4 +28 32 5.09902 +28 33 3.16228 +28 34 5.09902 +28 35 6 +28 36 7.07107 +28 37 8.24621 +28 38 11.6619 +28 39 11 +28 40 13 +28 41 14.0357 +28 42 14 +28 73 11.6619 +28 75 11.1803 +28 76 13.1529 +28 77 10.4403 +28 79 12.53 +28 80 13.8924 +29 13 11 +29 14 8.06226 +29 15 12.8062 +29 16 13.6015 +29 17 13.0384 +29 18 10.198 +29 19 9.84886 +29 20 7.81025 +29 21 7.07107 +29 22 6.40312 +29 23 5.83095 +29 24 5.38516 +29 25 5.09902 +29 26 5.09902 +29 27 4 +29 28 2.23607 +29 30 3 +29 31 2.23607 +29 32 7.28011 +29 33 5.38516 +29 34 6.7082 +29 35 7.28011 +29 36 8.06226 +29 37 9.84886 +29 38 11.7047 +29 39 12.1655 +29 40 14.1421 +29 73 10.6301 +29 74 13 +29 75 9.48683 +29 76 11.0454 +29 77 8.24621 +29 79 10.2956 +29 80 11.6619 +29 81 13.6015 +30 13 14 +30 14 11.0454 +30 18 11.1803 +30 19 11.4018 +30 20 10.2956 +30 21 9.43398 +30 22 8.60233 +30 23 7.81025 +30 24 8.24621 +30 25 8.06226 +30 26 8.06226 +30 27 7 +30 28 5.09902 +30 29 3 +30 31 1.41421 +30 32 10.198 +30 33 8.24621 +30 34 8.48528 +30 35 8.60233 +30 36 8.94427 +30 37 11.4018 +30 38 11.0454 +30 39 13 +30 73 8.60233 +30 74 10.2956 +30 75 6.7082 +30 76 8.06226 +30 77 5.38516 +30 79 7.81025 +30 80 9.21954 +30 81 11.3137 +31 13 13.0384 +31 14 10.198 +31 18 11.7047 +31 19 11.6619 +31 20 10 +31 21 9.21954 +31 22 8.48528 +31 23 7.81025 +31 24 7.61577 +31 25 7.28011 +31 26 7.28011 +31 27 6.08276 +31 28 4 +31 29 2.23607 +31 30 1.41421 +31 32 9.05539 +31 33 7.07107 +31 34 7.07107 +31 35 7.2111 +31 36 7.61577 +31 37 10 +31 38 10.198 +31 39 11.7047 +31 40 13.6015 +31 73 8.48528 +31 74 10.7703 +31 75 7.28011 +31 76 9.21954 +31 77 6.7082 +31 79 9.21954 +31 80 10.6301 +31 81 12.7279 +32 13 4.47214 +32 14 3.16228 +32 15 12.0416 +32 16 13.0384 +32 17 13 +32 18 13 +32 19 11.4018 +32 20 7.07107 +32 21 7.28011 +32 22 7.61577 +32 23 8.06226 +32 24 4.47214 +32 25 3.60555 +32 26 3.60555 +32 27 3.60555 +32 28 5.09902 +32 29 7.28011 +32 30 10.198 +32 31 9.05539 +32 33 2 +32 34 5.65685 +32 35 7.07107 +32 36 8.48528 +32 37 7.61577 +32 39 11.1803 +32 40 13 +32 41 13.6015 +32 42 13.9284 +33 13 6.32456 +33 14 4.24264 +33 15 12.3693 +33 16 13.3417 +33 17 13.1529 +33 18 12.3693 +33 19 11.0454 +33 20 7.07107 +33 21 7 +33 22 7.07107 +33 23 7.28011 +33 24 4 +33 25 3 +33 26 3 +33 27 2.23607 +33 28 3.16228 +33 29 5.38516 +33 30 8.24621 +33 31 7.07107 +33 32 2 +33 34 4.47214 +33 35 5.83095 +33 36 7.2111 +33 37 7.07107 +33 38 12.7279 +33 39 10.4403 +33 40 12.3693 +33 41 13.1529 +33 42 13.3417 +33 73 13.9284 +33 75 14.0357 +33 77 13.6015 +34 12 13.6015 +34 13 10 +34 14 8.60233 +34 20 11.4018 +34 21 11.1803 +34 22 11.0454 +34 23 11 +34 24 8.24621 +34 25 7.28011 +34 26 7.28011 +34 27 6.08276 +34 28 5.09902 +34 29 6.7082 +34 30 8.48528 +34 31 7.07107 +34 32 5.65685 +34 33 4.47214 +34 35 1.41421 +34 36 2.82843 +34 37 3.16228 +34 38 8.60233 +34 39 6.08276 +34 40 8.06226 +34 41 9 +34 42 9.05539 +34 43 10.198 +34 44 10.0499 +34 45 12.3693 +34 46 13.1529 +34 47 14.0357 +34 67 13.8924 +34 73 11.0454 +34 75 12.3693 +34 77 13.6015 +35 12 13.4536 +35 13 11.4018 +35 14 10 +35 20 12.6491 +35 21 12.3693 +35 22 12.1655 +35 23 12.0416 +35 24 9.48683 +35 25 8.544 +35 26 8.544 +35 27 7.28011 +35 28 6 +35 29 7.28011 +35 30 8.60233 +35 31 7.2111 +35 32 7.07107 +35 33 5.83095 +35 34 1.41421 +35 36 1.41421 +35 37 2.82843 +35 38 7.2111 +35 39 5 +35 40 7 +35 41 8.06226 +35 42 8 +35 43 9.05539 +35 44 9 +35 45 11.7047 +35 46 12.3693 +35 47 13.1529 +35 67 12.53 +35 68 13.0384 +35 73 10 +35 74 14.1421 +35 75 11.7047 +35 77 13.4536 +36 11 14.1421 +36 12 13.4536 +36 13 12.8062 +36 14 11.4018 +36 20 13.9284 +36 21 13.6015 +36 22 13.3417 +36 23 13.1529 +36 24 10.7703 +36 25 9.84886 +36 26 9.84886 +36 27 8.544 +36 28 7.07107 +36 29 8.06226 +36 30 8.94427 +36 31 7.61577 +36 32 8.48528 +36 33 7.2111 +36 34 2.82843 +36 35 1.41421 +36 37 3.16228 +36 38 5.83095 +36 39 4.12311 +36 40 6.08276 +36 41 7.28011 +36 42 7.07107 +36 43 8 +36 44 8.06226 +36 45 11.1803 +36 46 11.7047 +36 47 12.3693 +36 67 11.1803 +36 68 11.6619 +36 73 9.05539 +36 74 13.3417 +36 75 11.1803 +36 77 13.4536 +37 11 11.4018 +37 12 10.6301 +37 13 11.4018 +37 14 10.7703 +37 20 14.1421 +37 21 14.0357 +37 22 14 +37 23 14.0357 +37 24 11.0454 +37 25 10.0499 +37 26 10.0499 +37 27 9 +37 28 8.24621 +37 29 9.84886 +37 30 11.4018 +37 31 10 +37 32 7.61577 +37 33 7.07107 +37 34 3.16228 +37 35 2.82843 +37 36 3.16228 +37 38 8.24621 +37 39 3.60555 +37 40 5.38516 +37 41 6.08276 +37 42 6.32456 +37 43 7.61577 +37 44 7.28011 +37 45 9.21954 +37 46 10.0499 +37 47 11 +37 67 12.0416 +37 68 12.7279 +37 73 12.1655 +38 27 13.6015 +38 28 11.6619 +38 29 11.7047 +38 30 11.0454 +38 31 10.198 +38 33 12.7279 +38 34 8.60233 +38 35 7.2111 +38 36 5.83095 +38 37 8.24621 +38 39 6.08276 +38 40 6.7082 +38 41 8.06226 +38 42 7.2111 +38 43 7.07107 +38 44 7.81025 +38 45 12.2066 +38 46 12.0416 +38 47 12.0416 +38 64 12.2066 +38 67 7 +38 68 7.07107 +38 69 14.1421 +38 72 14.0357 +38 73 5.65685 +38 74 10 +38 75 9.43398 +38 76 13.8924 +38 77 13.6015 +39 11 10.8167 +39 12 10.2956 +39 25 13.3417 +39 26 13.3417 +39 27 12.1655 +39 28 11 +39 29 12.1655 +39 30 13 +39 31 11.7047 +39 32 11.1803 +39 33 10.4403 +39 34 6.08276 +39 35 5 +39 36 4.12311 +39 37 3.60555 +39 38 6.08276 +39 40 2 +39 41 3.16228 +39 42 3 +39 43 4.12311 +39 44 4 +39 45 7.2111 +39 46 7.61577 +39 47 8.24621 +39 48 11.7047 +39 50 13 +39 67 8.48528 +39 68 9.21954 +39 73 11.1803 +40 8 13.8924 +40 10 13.0384 +40 11 9.84886 +40 12 9.48683 +40 27 14.1421 +40 28 13 +40 29 14.1421 +40 31 13.6015 +40 32 13 +40 33 12.3693 +40 34 8.06226 +40 35 7 +40 36 6.08276 +40 37 5.38516 +40 38 6.7082 +40 39 2 +40 41 1.41421 +40 42 1 +40 43 2.23607 +40 44 2 +40 45 5.65685 +40 46 5.83095 +40 47 6.32456 +40 48 9.84886 +40 49 13.0384 +40 50 11 +40 67 7.2111 +40 68 8.06226 +40 73 12.2066 +41 8 12.53 +41 9 14.1421 +41 10 11.6619 +41 11 8.544 +41 12 8.24621 +41 28 14.0357 +41 32 13.6015 +41 33 13.1529 +41 34 9 +41 35 8.06226 +41 36 7.28011 +41 37 6.08276 +41 38 8.06226 +41 39 3.16228 +41 40 1.41421 +41 42 1 +41 43 2.23607 +41 44 1.41421 +41 45 4.24264 +41 46 4.47214 +41 47 5.09902 +41 48 8.544 +41 49 11.6619 +41 50 10.0499 +41 51 13.9284 +41 67 7.61577 +41 68 8.544 +41 73 13.6015 +42 8 13.0384 +42 10 12.53 +42 11 9.48683 +42 12 9.21954 +42 28 14 +42 32 13.9284 +42 33 13.3417 +42 34 9.05539 +42 35 8 +42 36 7.07107 +42 37 6.32456 +42 38 7.2111 +42 39 3 +42 40 1 +42 41 1 +42 43 1.41421 +42 44 1 +42 45 5 +42 46 5 +42 47 5.38516 +42 48 8.94427 +42 49 12.2066 +42 50 10 +42 67 6.7082 +42 68 7.61577 +42 73 12.8062 +43 8 12.8062 +43 10 13 +43 11 10.198 +43 12 10.0499 +43 34 10.198 +43 35 9.05539 +43 36 8 +43 37 7.61577 +43 38 7.07107 +43 39 4.12311 +43 40 2.23607 +43 41 2.23607 +43 42 1.41421 +43 44 1 +43 45 5.38516 +43 46 5 +43 47 5 +43 48 8.60233 +43 49 12.0416 +43 50 9.05539 +43 51 13.8924 +43 64 13 +43 67 5.38516 +43 68 6.32456 +43 73 12.7279 +44 8 12.2066 +44 10 12.083 +44 11 9.21954 +44 12 9.05539 +44 34 10.0499 +44 35 9 +44 36 8.06226 +44 37 7.28011 +44 38 7.81025 +44 39 4 +44 40 2 +44 41 1.41421 +44 42 1 +44 43 1 +44 45 4.47214 +44 46 4.24264 +44 47 4.47214 +44 48 8.06226 +44 49 11.4018 +44 50 9 +44 51 13.4164 +44 64 13.9284 +44 67 6.32456 +44 68 7.28011 +44 73 13.4536 +45 8 8.544 +45 9 9.89949 +45 10 7.61577 +45 11 5 +45 12 5.09902 +45 34 12.3693 +45 35 11.7047 +45 36 11.1803 +45 37 9.21954 +45 38 12.2066 +45 39 7.2111 +45 40 5.65685 +45 41 4.24264 +45 42 5 +45 43 5.38516 +45 44 4.47214 +45 46 1.41421 +45 47 2.82843 +45 48 5 +45 49 7.61577 +45 50 8.06226 +45 51 10.198 +45 67 10 +45 68 11 +46 8 8.06226 +46 9 10 +46 10 8.24621 +46 11 6.08276 +46 12 6.32456 +46 34 13.1529 +46 35 12.3693 +46 36 11.7047 +46 37 10.0499 +46 38 12.0416 +46 39 7.61577 +46 40 5.83095 +46 41 4.47214 +46 42 5 +46 43 5 +46 44 4.24264 +46 45 1.41421 +46 47 1.41421 +46 48 4.12311 +46 49 7.2111 +46 50 6.7082 +46 51 9.48683 +46 67 9.05539 +46 68 10.0499 +47 7 13.8924 +47 8 7.81025 +47 9 10.2956 +47 10 9.05539 +47 11 7.28011 +47 12 7.61577 +47 34 14.0357 +47 35 13.1529 +47 36 12.3693 +47 37 11 +47 38 12.0416 +47 39 8.24621 +47 40 6.32456 +47 41 5.09902 +47 42 5.38516 +47 43 5 +47 44 4.47214 +47 45 2.82843 +47 46 1.41421 +47 48 3.60555 +47 49 7.07107 +47 50 5.38516 +47 51 8.94427 +47 67 8.24621 +47 68 9.21954 +48 51 5.38516 +48 67 11.1803 +48 68 12.083 +48 49 3.60555 +48 6 13.6015 +48 7 10.2956 +48 8 4.24264 +48 9 7.28011 +48 10 7.28011 +48 11 7.07107 +48 12 7.81025 +48 45 5 +48 46 4.12311 +48 47 3.60555 +48 43 8.60233 +48 50 4.47214 +48 42 8.94427 +48 40 9.84886 +48 41 8.544 +48 39 11.7047 +48 44 8.06226 +49 51 3.16228 +49 43 12.0416 +49 6 10.2956 +49 7 7.28011 +49 8 1 +49 9 4 +49 10 5.65685 +49 11 7.28011 +49 12 8.24621 +49 45 7.61577 +49 46 7.2111 +49 47 7.07107 +49 48 3.60555 +49 40 13.0384 +49 50 7 +49 42 12.2066 +49 41 11.6619 +49 44 11.4018 +50 7 11.4018 +50 8 7.07107 +50 9 11 +50 10 11.7047 +50 11 11.4018 +50 12 12.0416 +50 39 13 +50 40 11 +50 41 10.0499 +50 42 10 +50 43 9.05539 +50 44 9 +50 45 8.06226 +50 46 6.7082 +50 47 5.38516 +50 48 4.47214 +50 49 7 +50 51 6.7082 +50 52 12.0416 +50 53 14.0357 +50 61 12.2066 +50 64 13.6015 +50 67 9.21954 +50 68 9.89949 +51 43 13.8924 +51 6 8.48528 +51 7 5 +51 8 2.23607 +51 9 5.83095 +51 10 8.60233 +51 11 10.4403 +51 12 11.4018 +51 45 10.198 +51 46 9.48683 +51 47 8.94427 +51 48 5.38516 +51 49 3.16228 +51 50 6.7082 +51 52 11.4018 +51 53 12.083 +51 54 13.4164 +51 41 13.9284 +51 44 13.4164 +52 3 14.1421 +52 5 13.8924 +52 6 13.3417 +52 7 11.1803 +52 8 13.6015 +52 50 12.0416 +52 51 11.4018 +52 53 2.82843 +52 54 3.16228 +52 55 5.38516 +52 56 6.08276 +52 57 11.3137 +52 58 13.6015 +52 59 13.3417 +52 61 10.2956 +53 3 11.3137 +53 4 12.2066 +53 5 11.1803 +53 6 12.083 +53 7 10.6301 +53 50 14.0357 +53 51 12.083 +53 52 2.82843 +53 54 1.41421 +53 55 3 +53 56 4.12311 +53 57 8.48528 +53 58 10.8167 +53 59 12.083 +53 61 13.0384 +54 3 11.4018 +54 4 12.53 +54 5 11.7047 +54 6 13.4164 +54 7 12.0416 +54 51 13.4164 +54 52 3.16228 +54 53 1.41421 +54 55 2.23607 +54 56 3 +54 57 8.60233 +54 58 10.6301 +54 59 10.7703 +54 61 12.8062 +55 3 9.43398 +55 4 10.7703 +55 5 10.198 +55 6 13.6015 +55 7 12.8062 +55 52 5.38516 +55 53 3 +55 54 2.23607 +55 56 1.41421 +55 57 6.7082 +55 58 8.48528 +55 59 9.43398 +56 3 9.84886 +56 4 11.4018 +56 5 11.0454 +56 52 6.08276 +56 53 4.12311 +56 54 3 +56 55 1.41421 +56 57 7.28011 +56 58 8.60233 +56 59 8.06226 +57 2 7.61577 +57 3 2.82843 +57 4 4.12311 +57 5 4.12311 +57 6 12.083 +57 7 13.1529 +57 52 11.3137 +57 53 8.48528 +57 54 8.60233 +57 55 6.7082 +57 56 7.28011 +57 58 3 +57 59 12.083 +58 2 7 +58 3 2.23607 +58 4 4.47214 +58 5 5.65685 +58 52 13.6015 +58 53 10.8167 +58 54 10.6301 +58 55 8.48528 +58 56 8.60233 +58 57 3 +58 59 11.1803 +59 3 13.3417 +59 52 13.3417 +59 53 12.083 +59 54 10.7703 +59 55 9.43398 +59 56 8.06226 +59 57 12.083 +59 58 11.1803 +60 96 11.1803 +60 97 10.4403 +60 98 12.3693 +60 99 12.083 +60 100 12.083 +60 61 9.21954 +60 62 7.07107 +60 63 11.1803 +61 64 11.4018 +61 50 12.2066 +61 52 10.2956 +61 53 13.0384 +61 54 12.8062 +61 60 9.21954 +61 62 9.43398 +61 63 11.4018 +62 96 6.7082 +62 65 8.06226 +62 66 8.24621 +62 69 14.1421 +62 64 7.81025 +62 93 10.8167 +62 95 10 +62 60 7.07107 +62 61 9.43398 +62 94 9.89949 +62 63 4.12311 +63 64 4.47214 +63 65 5.83095 +63 66 5 +63 67 12.083 +63 68 11.1803 +63 69 10.4403 +63 70 11.7047 +63 71 13 +63 72 13.3417 +63 96 7.07107 +63 93 8.60233 +63 94 8.544 +63 60 11.1803 +63 61 11.4018 +63 62 4.12311 +63 95 9.21954 +64 96 11.4018 +64 65 9.05539 +64 66 7.28011 +64 67 7.61577 +64 68 6.7082 +64 70 12.0416 +64 38 12.2066 +64 71 13.4536 +64 72 13.0384 +64 43 13 +64 44 13.9284 +64 93 11.4018 +64 50 13.6015 +64 94 12.0416 +64 69 10.6301 +64 95 13 +64 61 11.4018 +64 62 7.81025 +64 63 4.47214 +65 64 9.05539 +65 96 4.47214 +65 66 2.23607 +65 69 7.28011 +65 70 8.06226 +65 71 9 +65 72 10.198 +65 95 4.12311 +65 94 3 +65 91 13.0384 +65 92 11.1803 +65 93 2.82843 +65 62 8.06226 +65 63 5.83095 +66 64 7.28011 +66 65 2.23607 +66 67 14.0357 +66 68 13.0384 +66 69 6 +66 70 7.07107 +66 71 8.24621 +66 72 9 +66 96 6.40312 +66 95 6.32456 +66 94 5.09902 +66 91 13.4536 +66 92 12.6491 +66 93 4.12311 +66 62 8.24621 +66 63 5 +67 64 7.61577 +67 66 14.0357 +67 35 12.53 +67 68 1 +67 37 12.0416 +67 38 7 +67 39 8.48528 +67 40 7.2111 +67 41 7.61577 +67 42 6.7082 +67 43 5.38516 +67 44 6.32456 +67 45 10 +67 46 9.05539 +67 47 8.24621 +67 48 11.1803 +67 34 13.8924 +67 50 9.21954 +67 73 11.7047 +67 36 11.1803 +67 63 12.083 +68 64 6.7082 +68 66 13.0384 +68 67 1 +68 36 11.6619 +68 37 12.7279 +68 38 7.07107 +68 39 9.21954 +68 40 8.06226 +68 41 8.544 +68 42 7.61577 +68 43 6.32456 +68 44 7.28011 +68 45 11 +68 46 10.0499 +68 47 9.21954 +68 48 12.083 +68 50 9.89949 +68 35 13.0384 +68 73 11.4018 +68 69 13.9284 +68 63 11.1803 +69 38 14.1421 +69 62 14.1421 +69 63 10.4403 +69 64 10.6301 +69 65 7.28011 +69 66 6 +69 68 13.9284 +69 70 1.41421 +69 71 2.82843 +69 72 3 +69 73 11.6619 +69 74 10 +69 75 13.4536 +69 87 9.43398 +69 88 9.21954 +69 89 13.0384 +69 90 10.8167 +69 91 9.84886 +69 92 12.1655 +69 93 6.40312 +69 94 8.60233 +69 95 10 +69 96 11.7047 +70 64 12.0416 +70 65 8.06226 +70 66 7.07107 +70 69 1.41421 +70 71 1.41421 +70 72 2.23607 +70 73 12.083 +70 74 9.89949 +70 75 13.4536 +70 96 12.3693 +70 95 10.2956 +70 84 14.1421 +70 87 8.06226 +70 88 7.81025 +70 89 11.6619 +70 90 9.43398 +70 91 8.544 +70 92 11.4018 +70 93 6.7082 +70 94 8.94427 +70 63 11.7047 +71 63 13 +71 64 13.4536 +71 65 9 +71 66 8.24621 +71 69 2.82843 +71 70 1.41421 +71 72 2.23607 +71 73 12.6491 +71 74 10 +71 75 13.6015 +71 78 14.1421 +71 84 12.7279 +71 85 13.8924 +71 87 6.7082 +71 88 6.40312 +71 89 10.2956 +71 90 8.06226 +71 91 7.28011 +71 92 10.7703 +71 93 7.28011 +71 94 9.48683 +71 95 10.7703 +71 96 13.1529 +72 38 14.0357 +72 63 13.3417 +72 64 13.0384 +72 65 10.198 +72 66 9 +72 69 3 +72 70 2.23607 +72 71 2.23607 +72 73 10.4403 +72 74 7.81025 +72 75 11.4018 +72 76 13.0384 +72 78 13 +72 84 13.6015 +72 87 7.07107 +72 88 7.2111 +72 89 11.7047 +72 90 9.48683 +72 91 9.05539 +72 92 13 +72 93 8.94427 +72 94 11.1803 +72 95 12.53 +73 27 13.8924 +73 28 11.6619 +73 29 10.6301 +73 30 8.60233 +73 31 8.48528 +73 33 13.9284 +73 34 11.0454 +73 35 10 +73 36 9.05539 +73 37 12.1655 +73 38 5.65685 +73 39 11.1803 +73 40 12.2066 +73 41 13.6015 +73 42 12.8062 +73 43 12.7279 +73 44 13.4536 +73 67 11.7047 +73 68 11.4018 +73 69 11.6619 +73 70 12.083 +73 71 12.6491 +73 72 10.4403 +73 74 4.47214 +73 75 4.12311 +73 76 8.544 +73 77 9 +73 78 14.1421 +73 79 12.0416 +73 80 13.1529 +74 35 14.1421 +74 36 13.3417 +74 69 10 +74 70 9.89949 +74 71 10 +74 72 7.81025 +74 73 4.47214 +74 75 3.60555 +74 76 6.08276 +74 77 8.06226 +74 78 10 +74 79 10.4403 +74 80 11.1803 +74 81 13.0384 +74 87 11 +74 88 12.0416 +74 38 10 +74 29 13 +74 30 10.2956 +74 31 10.7703 +75 27 13.3417 +75 28 11.1803 +75 29 9.48683 +75 30 6.7082 +75 31 7.28011 +75 33 14.0357 +75 34 12.3693 +75 35 11.7047 +75 36 11.1803 +75 38 9.43398 +75 69 13.4536 +75 70 13.4536 +75 71 13.6015 +75 72 11.4018 +75 73 4.12311 +75 74 3.60555 +75 76 4.47214 +75 77 5.09902 +75 78 10.8167 +75 79 8 +75 80 9.05539 +75 81 11.1803 +76 38 13.8924 +76 72 13.0384 +76 73 8.544 +76 74 6.08276 +76 75 4.47214 +76 77 3.16228 +76 78 7.28011 +76 79 4.47214 +76 80 5.09902 +76 81 7 +76 87 13.4164 +76 28 13.1529 +76 29 11.0454 +76 30 8.06226 +76 31 9.21954 +77 18 12.8062 +77 19 13.8924 +77 21 13.3417 +77 22 12.3693 +77 23 11.4018 +77 24 13 +77 25 13.0384 +77 26 13.0384 +77 27 12.1655 +77 28 10.4403 +77 29 8.24621 +77 30 5.38516 +77 31 6.7082 +77 33 13.6015 +77 34 13.6015 +77 35 13.4536 +77 36 13.4536 +77 38 13.6015 +77 73 9 +77 74 8.06226 +77 75 5.09902 +77 76 3.16228 +77 78 10.0499 +77 79 3.16228 +77 80 4.47214 +77 81 6.7082 +78 71 14.1421 +78 72 13 +78 73 14.1421 +78 74 10 +78 75 10.8167 +78 76 7.28011 +78 77 10.0499 +78 79 9.21954 +78 80 8.544 +78 81 8.60233 +78 84 12.083 +78 87 9.43398 +78 88 10.8167 +78 90 13.4536 +80 73 13.1529 +80 74 11.1803 +80 75 9.05539 +80 76 5.09902 +80 77 4.47214 +80 78 8.544 +80 79 1.41421 +80 81 2.23607 +80 18 12.6491 +80 23 13.0384 +80 28 13.8924 +80 29 11.6619 +80 30 9.21954 +80 31 10.6301 +81 74 13.0384 +81 75 11.1803 +81 76 7 +81 77 6.7082 +81 78 8.60233 +81 79 3.60555 +81 80 2.23607 +81 18 13.1529 +81 29 13.6015 +81 30 11.3137 +81 31 12.7279 +82 137 13.0384 +82 83 4.12311 +82 141 13.9284 +83 137 12.3693 +83 82 4.12311 +84 70 14.1421 +84 71 12.7279 +84 72 13.6015 +84 78 12.083 +84 85 3.60555 +84 86 5.83095 +84 87 6.7082 +84 88 6.40312 +84 89 4 +84 90 5.38516 +84 91 7.28011 +84 92 13.0384 +85 71 13.8924 +85 84 3.60555 +85 86 2.23607 +85 87 9.05539 +85 88 8.24621 +85 89 3.60555 +85 90 5.83095 +85 91 7.07107 +85 92 11.1803 +86 129 13.0384 +86 84 5.83095 +86 85 2.23607 +86 87 11 +86 88 10.0499 +86 89 5.09902 +86 90 7.28011 +86 91 8.06226 +86 92 10.7703 +86 126 12.8062 +86 127 12.7279 +87 69 9.43398 +87 70 8.06226 +87 71 6.7082 +87 72 7.07107 +87 74 11 +87 76 13.4164 +87 78 9.43398 +87 84 6.7082 +87 85 9.05539 +87 86 11 +87 88 1.41421 +87 89 6.08276 +87 90 4.47214 +87 91 5.65685 +87 92 12.2066 +87 93 13.0384 +88 69 9.21954 +88 70 7.81025 +88 71 6.40312 +88 72 7.2111 +88 74 12.0416 +88 78 10.8167 +88 84 6.40312 +88 85 8.24621 +88 86 10.0499 +88 87 1.41421 +88 89 5 +88 90 3.16228 +88 91 4.24264 +88 92 10.8167 +88 93 12.1655 +88 94 14.0357 +89 69 13.0384 +89 70 11.6619 +89 71 10.2956 +89 72 11.7047 +89 84 4 +89 85 3.60555 +89 86 5.09902 +89 87 6.08276 +89 88 5 +89 90 2.23607 +89 91 3.60555 +89 92 9.05539 +89 93 13.8924 +90 69 10.8167 +90 70 9.43398 +90 71 8.06226 +90 72 9.48683 +90 78 13.4536 +90 84 5.38516 +90 85 5.83095 +90 86 7.28011 +90 87 4.47214 +90 88 3.16228 +90 89 2.23607 +90 91 2 +90 92 8.544 +90 93 12.083 +90 94 13.6015 +91 65 13.0384 +91 66 13.4536 +91 69 9.84886 +91 70 8.544 +91 71 7.28011 +91 72 9.05539 +91 84 7.28011 +91 85 7.07107 +91 86 8.06226 +91 87 5.65685 +91 88 4.24264 +91 89 3.60555 +91 90 2 +91 92 6.7082 +91 93 10.2956 +91 94 11.7047 +91 95 12.3693 +92 65 11.1803 +92 66 12.6491 +92 69 12.1655 +92 70 11.4018 +92 71 10.7703 +92 72 13 +92 84 13.0384 +92 85 11.1803 +92 86 10.7703 +92 87 12.2066 +92 88 10.8167 +92 89 9.05539 +92 90 8.544 +92 91 6.7082 +92 93 8.544 +92 94 8.60233 +92 95 8.48528 +92 96 12.0416 +92 124 12.083 +92 125 13.9284 +92 126 12 +92 127 13.0384 +93 64 11.4018 +93 65 2.82843 +93 66 4.12311 +93 69 6.40312 +93 70 6.7082 +93 71 7.28011 +93 72 8.94427 +93 96 6 +93 95 3.60555 +93 94 2.23607 +93 87 13.0384 +93 88 12.1655 +93 89 13.8924 +93 90 12.083 +93 91 10.2956 +93 92 8.544 +93 62 10.8167 +93 63 8.60233 +94 64 12.0416 +94 65 3 +94 66 5.09902 +94 69 8.60233 +94 70 8.94427 +94 71 9.48683 +94 72 11.1803 +94 96 4.12311 +94 95 1.41421 +94 88 14.0357 +94 90 13.6015 +94 91 11.7047 +94 92 8.60233 +94 93 2.23607 +94 62 9.89949 +94 63 8.544 +95 64 13 +95 65 4.12311 +95 66 6.32456 +95 69 10 +95 70 10.2956 +95 71 10.7703 +95 72 12.53 +95 96 3.60555 +95 94 1.41421 +95 91 12.3693 +95 92 8.48528 +95 93 3.60555 +95 62 10 +95 63 9.21954 +96 64 11.4018 +96 65 4.47214 +96 66 6.40312 +96 97 13.9284 +96 69 11.7047 +96 70 12.3693 +96 71 13.1529 +96 92 12.0416 +96 94 4.12311 +96 95 3.60555 +96 60 11.1803 +96 93 6 +96 62 6.7082 +96 63 7.07107 +97 96 13.9284 +97 98 2 +97 99 2.23607 +97 100 2.23607 +97 101 5.65685 +97 102 6.40312 +97 103 8.48528 +97 104 8.48528 +97 115 10 +97 116 11.7047 +97 117 8.24621 +97 60 10.4403 +98 97 2 +98 99 2.23607 +98 100 2.23607 +98 101 4.47214 +98 102 5.38516 +98 103 7.2111 +98 104 7.2111 +98 112 13.0384 +98 115 8.48528 +98 116 9.84886 +98 117 6.32456 +98 60 12.3693 +99 97 2.23607 +99 98 2.23607 +99 100 1.41421E-05 +99 101 3.60555 +99 102 4.24264 +99 103 6.40312 +99 104 6.40312 +99 112 12.0416 +99 115 8.06226 +99 116 10.198 +99 117 7 +99 60 12.083 +100 97 2.23607 +100 98 2.23607 +100 99 1.41421E-05 +100 101 3.60555 +100 102 4.24264 +100 103 6.40312 +100 104 6.40312 +100 112 12.0416 +100 115 8.06226 +100 116 10.198 +100 117 7 +100 60 12.083 +101 97 5.65685 +101 98 4.47214 +101 99 3.60555 +101 100 3.60555 +101 102 1 +101 103 2.82843 +101 104 2.82843 +101 105 13.3417 +101 111 12.0416 +101 112 8.60233 +101 113 12.53 +101 114 11.1803 +101 115 4.47214 +101 116 7 +101 117 4.47214 +102 97 6.40312 +102 98 5.38516 +102 99 4.24264 +102 100 4.24264 +102 101 1 +102 103 2.23607 +102 104 2.23607 +102 105 12.3693 +102 106 13.3417 +102 107 13.6015 +102 111 11.4018 +102 112 7.81025 +102 113 12.083 +102 114 10.7703 +102 115 4.12311 +102 116 7.07107 +102 117 5 +103 97 8.48528 +103 98 7.2111 +103 99 6.40312 +103 100 6.40312 +103 101 2.82843 +103 102 2.23607 +103 104 1.41421E-05 +103 105 12.083 +103 106 13 +103 107 13.4164 +103 110 12.6491 +103 111 9.21954 +103 112 5.83095 +103 113 9.84886 +103 114 8.544 +103 115 2 +103 116 5.38516 +103 117 4.47214 +104 97 8.48528 +104 98 7.2111 +104 99 6.40312 +104 100 6.40312 +104 101 2.82843 +104 102 2.23607 +104 103 1.41421E-05 +104 105 12.083 +104 106 13 +104 107 13.4164 +104 110 12.6491 +104 111 9.21954 +104 112 5.83095 +104 113 9.84886 +104 114 8.544 +104 115 2 +104 116 5.38516 +104 117 4.47214 +105 101 13.3417 +105 102 12.3693 +105 103 12.083 +105 104 12.083 +105 106 1 +105 107 1.41421 +105 108 4.12311 +105 109 5 +105 110 9.05539 +105 111 13 +105 112 10 +105 115 13.0384 +106 102 13.3417 +106 103 13 +106 104 13 +106 105 1 +106 107 1 +106 108 3.16228 +106 109 4 +106 110 9 +106 111 13.4164 +106 112 10.6301 +106 115 13.8924 +107 102 13.6015 +107 103 13.4164 +107 104 13.4164 +107 105 1.41421 +107 106 1 +107 108 3 +107 109 4.12311 +107 110 10 +107 112 11.4018 +108 105 4.12311 +108 106 3.16228 +108 107 3 +108 109 1.41421 +108 110 10.4403 +108 112 13.4536 +109 105 5 +109 106 4 +109 107 4.12311 +109 108 1.41421 +109 110 9.84886 +109 112 13.6015 +110 103 12.6491 +110 104 12.6491 +110 105 9.05539 +110 106 9 +110 107 10 +110 108 10.4403 +110 109 9.84886 +110 111 6.7082 +110 112 7.07107 +110 113 9.43398 +110 114 9.84886 +110 115 12.1655 +110 116 14.0357 +111 101 12.0416 +111 102 11.4018 +111 103 9.21954 +111 104 9.21954 +111 105 13 +111 106 13.4164 +111 110 6.7082 +111 112 4.12311 +111 113 2.82843 +111 114 3.16228 +111 115 7.81025 +111 116 8.24621 +111 117 11.1803 +112 98 13.0384 +112 99 12.0416 +112 100 12.0416 +112 101 8.60233 +112 102 7.81025 +112 103 5.83095 +112 104 5.83095 +112 105 10 +112 106 10.6301 +112 107 11.4018 +112 108 13.4536 +112 109 13.6015 +112 110 7.07107 +112 111 4.12311 +112 113 6.08276 +112 114 5.38516 +112 115 5.09902 +112 116 7.28011 +112 117 9.05539 +113 101 12.53 +113 102 12.083 +113 103 9.84886 +113 104 9.84886 +113 110 9.43398 +113 111 2.82843 +113 112 6.08276 +113 114 1.41421 +113 115 8.06226 +113 116 7.2111 +113 117 10.6301 +113 118 13.6015 +114 101 11.1803 +114 102 10.7703 +114 103 8.544 +114 104 8.544 +114 110 9.84886 +114 111 3.16228 +114 112 5.38516 +114 113 1.41421 +114 115 6.7082 +114 116 5.83095 +114 117 9.21954 +114 118 13.4536 +115 97 10 +115 98 8.48528 +115 99 8.06226 +115 100 8.06226 +115 101 4.47214 +115 102 4.12311 +115 103 2 +115 104 2 +115 105 13.0384 +115 106 13.8924 +115 110 12.1655 +115 111 7.81025 +115 112 5.09902 +115 113 8.06226 +115 114 6.7082 +115 116 3.60555 +115 117 4 +116 97 11.7047 +116 98 9.84886 +116 99 10.198 +116 100 10.198 +116 101 7 +116 102 7.07107 +116 103 5.38516 +116 104 5.38516 +116 110 14.0357 +116 111 8.24621 +116 112 7.28011 +116 113 7.2111 +116 114 5.83095 +116 115 3.60555 +116 117 3.60555 +116 118 13 +116 119 13.6015 +116 120 13.4164 +117 97 8.24621 +117 98 6.32456 +117 99 7 +117 100 7 +117 101 4.47214 +117 102 5 +117 103 4.47214 +117 104 4.47214 +117 111 11.1803 +117 112 9.05539 +117 113 10.6301 +117 114 9.21954 +117 115 4 +117 116 3.60555 +117 120 13.4536 +118 160 4.47214 +118 161 5 +118 113 13.6015 +118 114 13.4536 +118 116 13 +118 119 7.2111 +118 120 9.21954 +118 121 9.43398 +118 122 12.2066 +118 156 11.1803 +118 157 10.6301 +118 158 7.07107 +118 159 7.2111 +119 160 6.32456 +119 161 12.0416 +119 123 8.544 +119 156 7.81025 +119 154 13.6015 +119 157 11.1803 +119 116 13.6015 +119 118 7.2111 +119 120 2.23607 +119 121 2.23607 +119 122 5 +119 155 12.2066 +119 124 11.1803 +119 125 10.4403 +119 158 9.05539 +119 159 10.198 +120 160 8.544 +120 161 14.1421 +120 123 8.60233 +120 156 8.94427 +120 154 14.1421 +120 158 11.1803 +120 157 13.0384 +120 116 13.4164 +120 117 13.4536 +120 118 9.21954 +120 119 2.23607 +120 121 1.41421 +120 122 3.16228 +120 155 12.7279 +120 124 9.48683 +120 125 9.05539 +120 126 14.1421 +120 159 12.3693 +121 160 8.06226 +121 123 7.2111 +121 156 7.61577 +121 154 12.7279 +121 157 12 +121 159 11.7047 +121 158 10.4403 +121 118 9.43398 +121 119 2.23607 +121 120 1.41421 +121 122 2.82843 +121 155 11.3137 +121 124 8.94427 +121 125 8.24621 +121 126 13.3417 +121 127 14.1421 +122 128 13.3417 +122 160 10.8167 +122 123 7.2111 +122 156 9.05539 +122 157 14.1421 +122 158 13 +122 118 12.2066 +122 119 5 +122 120 3.16228 +122 121 2.82843 +122 154 13.0384 +122 155 11.6619 +122 124 6.32456 +122 125 6 +122 126 11.0454 +122 127 12 +123 128 9.48683 +123 160 10.4403 +123 150 13 +123 156 4.24264 +123 151 12.53 +123 159 12.2066 +123 157 10 +123 158 10.8167 +123 154 5.83095 +123 119 8.544 +123 120 8.60233 +123 121 7.2111 +123 122 7.2111 +123 155 4.47214 +123 124 8.24621 +123 125 6.32456 +123 126 9.89949 +123 127 10 +124 128 8.60233 +124 155 12 +124 156 12.083 +124 154 13.0384 +124 119 11.1803 +124 120 9.48683 +124 121 8.94427 +124 122 6.32456 +124 123 8.24621 +124 92 12.083 +124 125 2 +124 126 5.09902 +124 127 6.32456 +125 128 7.61577 +125 155 10 +125 92 13.9284 +125 156 10.2956 +125 119 10.4403 +125 120 9.05539 +125 121 8.24621 +125 122 6 +125 123 6.32456 +125 124 2 +125 154 11.0454 +125 126 5.09902 +125 127 6 +126 128 4.47214 +126 129 12.083 +126 155 12.083 +126 150 13 +126 124 5.09902 +126 154 12.6491 +126 156 14.1421 +126 147 12.0416 +126 148 13.0384 +126 149 13.0384 +126 86 12.8062 +126 151 13.6015 +126 120 14.1421 +126 121 13.3417 +126 122 11.0454 +126 123 9.89949 +126 92 12 +126 125 5.09902 +126 127 1.41421 +127 128 3.16228 +127 129 10.7703 +127 155 11.6619 +127 150 11.7047 +127 124 6.32456 +127 154 12.083 +127 147 10.6301 +127 148 11.6619 +127 149 11.6619 +127 86 12.7279 +127 151 12.3693 +127 121 14.1421 +127 122 12 +127 123 10 +127 92 13.0384 +127 125 6 +127 126 1.41421 +128 129 9.05539 +128 155 9.89949 +128 156 13.4164 +128 154 10 +128 147 7.81025 +128 148 8.60233 +128 149 8.60233 +128 150 8.544 +128 151 9.21954 +128 122 13.3417 +128 123 9.48683 +128 124 8.60233 +128 125 7.61577 +128 126 4.47214 +128 127 3.16228 +129 128 9.05539 +129 150 9.21954 +129 134 14.1421 +129 145 9.21954 +129 146 7.2111 +129 147 5 +129 148 7.2111 +129 149 7.2111 +129 86 13.0384 +129 151 10.6301 +129 126 12.083 +129 127 10.7703 +130 131 1.41421 +130 132 4 +130 133 3.16228 +130 134 9 +130 135 10.4403 +130 136 5.09902 +130 137 8.24621 +130 138 9.48683 +130 139 13 +131 130 1.41421 +131 132 3.16228 +131 133 2 +131 134 8.06226 +131 135 9.21954 +131 136 4.47214 +131 137 7.61577 +131 138 8.24621 +131 139 11.7047 +131 140 14.0357 +132 130 4 +132 131 3.16228 +132 133 1.41421 +132 134 5 +132 135 6.7082 +132 136 7.07107 +132 137 10 +132 138 9.05539 +132 139 12.0416 +132 145 12.8062 +132 146 13.4536 +133 130 3.16228 +133 131 2 +133 132 1.41421 +133 134 6.08276 +133 135 7.28011 +133 136 5.65685 +133 137 8.60233 +133 138 8 +133 139 11.1803 +133 140 14.0357 +134 129 14.1421 +134 130 9 +134 131 8.06226 +134 132 5 +134 133 6.08276 +134 135 3.16228 +134 136 11.1803 +134 137 13.6015 +134 138 10.8167 +134 139 12.6491 +134 142 14.0357 +134 145 9.43398 +134 146 10.7703 +135 130 10.4403 +135 131 9.21954 +135 132 6.7082 +135 133 7.28011 +135 134 3.16228 +135 136 11.1803 +135 137 13 +135 138 9.21954 +135 139 10.2956 +135 142 13.1529 +135 145 11.7047 +135 146 13.3417 +136 130 5.09902 +136 131 4.47214 +136 132 7.07107 +136 133 5.65685 +136 134 11.1803 +136 135 11.1803 +136 137 3.16228 +136 138 5.65685 +136 139 9.21954 +136 140 10.4403 +137 130 8.24621 +137 131 7.61577 +137 132 10 +137 133 8.60233 +137 134 13.6015 +137 135 13 +137 136 3.16228 +137 138 5.09902 +137 139 8.06226 +137 140 8.06226 +137 141 12.1655 +137 82 13.0384 +137 83 12.3693 +138 130 9.48683 +138 131 8.24621 +138 132 9.05539 +138 133 8 +138 134 10.8167 +138 135 9.21954 +138 136 5.65685 +138 137 5.09902 +138 139 3.60555 +138 140 6.08276 +138 141 11.4018 +139 130 13 +139 131 11.7047 +139 132 12.0416 +139 133 11.1803 +139 134 12.6491 +139 135 10.2956 +139 136 9.21954 +139 137 8.06226 +139 138 3.60555 +139 140 4.24264 +139 141 9.43398 +140 131 14.0357 +140 133 14.0357 +140 136 10.4403 +140 137 8.06226 +140 138 6.08276 +140 139 4.24264 +140 141 5.38516 +141 137 12.1655 +141 82 13.9284 +141 139 9.43398 +141 140 5.38516 +141 138 11.4018 +142 134 14.0357 +142 166 13.4536 +142 135 13.1529 +142 168 12.8062 +142 143 2.23607 +142 144 8.06226 +142 145 12.7279 +143 165 12.53 +143 166 11.4018 +143 167 12.8062 +143 168 10.8167 +143 142 2.23607 +143 144 7.61577 +143 145 13.6015 +144 165 9.84886 +144 166 10.198 +144 167 11.4018 +144 168 9.21954 +144 142 8.06226 +144 143 7.61577 +144 145 8.06226 +144 146 9.48683 +144 152 14.0357 +145 129 9.21954 +145 132 12.8062 +145 134 9.43398 +145 135 11.7047 +145 142 12.7279 +145 143 13.6015 +145 144 8.06226 +145 146 2.23607 +145 147 9.48683 +145 148 10.0499 +145 149 10.0499 +145 150 12 +145 151 13.0384 +146 129 7.2111 +146 132 13.4536 +146 134 10.7703 +146 135 13.3417 +146 144 9.48683 +146 145 2.23607 +146 147 7.28011 +146 148 8 +146 149 8 +146 150 10.0499 +146 151 11.1803 +147 128 7.81025 +147 129 5 +147 145 9.48683 +147 146 7.28011 +147 148 2.23607 +147 149 2.23607 +147 150 4.24264 +147 151 5.65685 +147 152 12.6491 +147 154 12.3693 +147 155 13.1529 +147 126 12.0416 +147 127 10.6301 +148 128 8.60233 +148 129 7.2111 +148 164 13 +148 145 10.0499 +148 146 8 +148 147 2.23607 +148 149 1.41421E-05 +148 150 2.23607 +148 151 3.60555 +148 152 10.4403 +148 153 12.8062 +148 154 11.0454 +148 155 12 +148 126 13.0384 +148 127 11.6619 +149 128 8.60233 +149 129 7.2111 +149 164 13 +149 145 10.0499 +149 146 8 +149 147 2.23607 +149 148 1.41421E-05 +149 150 2.23607 +149 151 3.60555 +149 152 10.4403 +149 153 12.8062 +149 154 11.0454 +149 155 12 +149 126 13.0384 +149 127 11.6619 +150 128 8.544 +150 129 9.21954 +150 155 10.0499 +150 164 11.4018 +150 145 12 +150 146 10.0499 +150 147 4.24264 +150 148 2.23607 +150 149 2.23607 +150 151 1.41421 +150 152 9.05539 +150 153 10.8167 +150 154 9 +150 123 13 +150 126 13 +150 127 11.7047 +151 128 9.21954 +151 129 10.6301 +151 155 9.21954 +151 164 10.198 +151 163 13 +151 145 13.0384 +151 146 11.1803 +151 147 5.65685 +151 148 3.60555 +151 149 3.60555 +151 150 1.41421 +151 152 8 +151 153 9.43398 +151 154 8.06226 +151 123 12.53 +151 126 13.6015 +151 127 12.3693 +152 162 9.21954 +152 163 6.40312 +152 164 2.82843 +152 165 12.8062 +152 144 14.0357 +152 147 12.6491 +152 148 10.4403 +152 149 10.4403 +152 150 9.05539 +152 151 8 +152 153 5 +152 154 12.0416 +152 155 13.4536 +153 162 6.32456 +153 163 4 +153 164 3.60555 +153 148 12.8062 +153 149 12.8062 +153 150 10.8167 +153 151 9.43398 +153 152 5 +153 154 9.48683 +153 155 10.7703 +153 157 13.4164 +154 128 10 +154 147 12.3693 +154 148 11.0454 +154 149 11.0454 +154 150 9 +154 151 8.06226 +154 152 12.0416 +154 153 9.48683 +154 155 1.41421 +154 156 6.32456 +154 157 9.48683 +154 158 12.0416 +154 159 13.1529 +154 160 13.1529 +154 163 13.3417 +154 164 12.53 +154 119 13.6015 +154 120 14.1421 +154 121 12.7279 +154 122 13.0384 +154 123 5.83095 +154 124 13.0384 +154 125 11.0454 +154 126 12.6491 +154 127 12.083 +155 128 9.89949 +155 147 13.1529 +155 148 12 +155 149 12 +155 150 10.0499 +155 151 9.21954 +155 152 13.4536 +155 153 10.7703 +155 154 1.41421 +155 156 5.09902 +155 157 8.94427 +155 158 11.1803 +155 159 12.3693 +155 160 12.0416 +155 164 13.8924 +155 119 12.2066 +155 120 12.7279 +155 121 11.3137 +155 122 11.6619 +155 123 4.47214 +155 124 12 +155 125 10 +155 126 12.083 +155 127 11.6619 +156 128 13.4164 +156 160 7 +156 123 4.24264 +156 161 14.1421 +156 154 6.32456 +156 157 5.83095 +156 158 6.7082 +156 118 11.1803 +156 119 7.81025 +156 120 8.94427 +156 121 7.61577 +156 122 9.05539 +156 155 5.09902 +156 124 12.083 +156 125 10.2956 +156 126 14.1421 +156 159 8.06226 +157 160 6.40312 +157 161 11.4018 +157 123 10 +157 158 3.60555 +157 118 10.6301 +157 119 11.1803 +157 120 13.0384 +157 121 12 +157 122 14.1421 +157 155 8.94427 +157 156 5.83095 +157 154 9.48683 +157 153 13.4164 +157 159 4.12311 +158 160 3.16228 +158 161 8.06226 +158 123 10.8167 +158 154 12.0416 +158 118 7.07107 +158 119 9.05539 +158 120 11.1803 +158 121 10.4403 +158 122 13 +158 155 11.1803 +158 156 6.7082 +158 157 3.60555 +158 159 1.41421 +159 160 4 +159 161 7.28011 +159 123 12.2066 +159 118 7.2111 +159 119 10.198 +159 120 12.3693 +159 121 11.7047 +159 154 13.1529 +159 155 12.3693 +159 156 8.06226 +159 157 4.12311 +159 158 1.41421 +160 161 7.28011 +160 123 10.4403 +160 154 13.1529 +160 118 4.47214 +160 119 6.32456 +160 120 8.544 +160 121 8.06226 +160 122 10.8167 +160 155 12.0416 +160 156 7 +160 157 6.40312 +160 158 3.16228 +160 159 4 +161 160 7.28011 +161 118 5 +161 119 12.0416 +161 120 14.1421 +161 156 14.1421 +161 157 11.4018 +161 158 8.06226 +161 159 7.28011 +162 152 9.21954 +162 153 6.32456 +162 163 2.82843 +162 164 6.40312 +163 162 2.82843 +163 164 3.60555 +163 151 13 +163 152 6.40312 +163 153 4 +163 154 13.3417 +164 162 6.40312 +164 163 3.60555 +164 165 13.4164 +164 148 13 +164 149 13 +164 150 11.4018 +164 151 10.198 +164 152 2.82843 +164 153 3.60555 +164 154 12.53 +164 155 13.8924 +165 164 13.4164 +165 166 2.23607 +165 167 2.23607 +165 168 2 +165 143 12.53 +165 144 9.84886 +165 152 12.8062 +166 165 2.23607 +166 167 1.41421 +166 168 1 +166 142 13.4536 +166 143 11.4018 +166 144 10.198 +167 168 2.23607 +167 144 11.4018 +167 165 2.23607 +167 166 1.41421 +167 143 12.8062 +168 165 2 +168 166 1 +168 167 2.23607 +168 142 12.8062 +168 143 10.8167 +168 144 9.21954 diff -Nru pysal-1.14.2/pysal/examples/us_income/README.md pysal-1.14.3/pysal/examples/us_income/README.md --- pysal-1.14.2/pysal/examples/us_income/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/us_income/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -1,10 +1,11 @@ us_income ========= -Per-capita income for the lower 47 US states 1929-2010 ------------------------------------------------------- +Nominal per capita income for the lower 48 US states 1929-2009 +-------------------------------------------------------------- - * us48.shp: shapefile - * us48.dbf: dbf for shapefile - * us48.shx: index for shapefile - * usjoin.csv: attribute data (comma delimited file) +* states48.gal: queen contiguity weights in GAL format. +* us48.dbf: attribute data. (k=8) +* us48.shp: Polygon shapefile. (n=48) +* us48.shx: spatial index. +* usjoin.csv: 48 US states nominal per capita income time series 1929-2009. diff -Nru pysal-1.14.2/pysal/examples/virginia/README.md pysal-1.14.3/pysal/examples/virginia/README.md --- pysal-1.14.2/pysal/examples/virginia/README.md 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/examples/virginia/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -4,7 +4,18 @@ Virginia counties shapefile --------------------------- - * virginia.shp: Shapefile - * virginia.shx: shapefile index - * virginia.dbf: attributes - * virginia.prj: shapefile projection +* virginia.dbf: attribute data. (k=7) +* virginia.gal: rook contiguity weights in GAL format. +* virginia.json: attribute and shape data in JSON format. +* virginia.prj: ESRI projection file. +* virginia.shp: Polygon shapefile. (n=136) +* virginia.shx: spatial index. +* virginia_queen.dat: queen contiguity weights in DAT format. +* virginia_queen.dbf: queen contiguity weights in DBF format. +* virginia_queen.gal: queen contiguity weights in GAL format. +* virginia_queen.mat: queen contiguity weights in MATLAB MAT format. +* virginia_queen.mtx: queen contiguity weights in Matrix Market MTX format. +* virginia_queen.swm: queen contiguity weight in ArcGIS SWM format. +* virginia_queen.txt: queen contiguity weights in TXT format. +* virginia_queen.wk1: queen contiguity weights in Lotus Wk1 format. +* virginia_rook.gal: rook contiguity weights in GAL format. diff -Nru pysal-1.14.2/pysal/examples/wmat/README.md pysal-1.14.3/pysal/examples/wmat/README.md --- pysal-1.14.2/pysal/examples/wmat/README.md 1970-01-01 00:00:00.000000000 +0000 +++ pysal-1.14.3/pysal/examples/wmat/README.md 2017-11-03 00:27:09.000000000 +0000 @@ -0,0 +1,21 @@ +wmat +==== + +Datasets used for spatial weights testing +----------------------------------------- + +* geobugs_scot: spatial weights in GeoBUGS text format. +* lattice10x10.shp: Polygon shapefile for 10 * 10 regular lattices. (n=100) +* lattice10x10.shx: spatial index. +* ohio.swm: spatial weights in ArcGIS SWM format. +* rook31.dbf: attribute data. (k=2) +* rook31.gal: rook contiguity weights in GAL format. +* rook31.shp: Polygon shapefile. (n=3) +* rook31.shx: spatial index. +* spat-sym-us.mat: spatial weights in MATLAB MAT format. +* spat-sym-us.wk1: spatial weights in Lotus Wk1 format. +* spdep_listw2WB_columbus: spatial weights in GeoBUGS text format. +* stata_full.txt: full spatial weights matrix. +* stata_sparse.txt: sparse spatial weights matrix. +* wmat.dat: spatial weights in DAT format. +* wmat.mtx: spatial weights in Matrix Market MTX format. diff -Nru pysal-1.14.2/pysal/spreg/diagnostics.py pysal-1.14.3/pysal/spreg/diagnostics.py --- pysal-1.14.2/pysal/spreg/diagnostics.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/spreg/diagnostics.py 2017-11-03 00:27:09.000000000 +0000 @@ -6,6 +6,7 @@ import pysal from pysal.common import * +chisqprob = stats.chi2.sf import scipy.sparse as SP from math import sqrt from utils import spmultiply, sphstack, spmin, spmax @@ -657,7 +658,7 @@ S = mu3 / (mu2 ** (1.5)) # skewness measure K = (mu4 / (mu2 ** 2)) # kurtosis measure jb = n * (((S ** 2) / 6) + ((K - 3) ** 2) / 24) - pvalue = stats.chisqprob(jb, 2) + pvalue = chisqprob(jb, 2) jb_result = {"df": 2, "jb": jb, 'pvalue': pvalue} return jb_result @@ -807,7 +808,7 @@ bp_array = 0.5 * part2 bp = bp_array[0, 0] - pvalue = stats.chisqprob(bp, df) + pvalue = chisqprob(bp, df) bp_result = {'df': df, 'bp': bp, 'pvalue': pvalue} return bp_result @@ -961,7 +962,7 @@ aux_r2 = r2(aux_reg) wh = aux_r2 * n df = k - 1 - pvalue = stats.chisqprob(wh, df) + pvalue = chisqprob(wh, df) white_result = {'df': df, 'wh': wh, 'pvalue': pvalue} return white_result @@ -1116,7 +1117,7 @@ kb_array = (1.0 / v) * part2 kb = kb_array[0, 0] - pvalue = stats.chisqprob(kb, df) + pvalue = chisqprob(kb, df) kb_result = {'kb': kb, 'df': df, 'pvalue': pvalue} return kb_result @@ -1330,7 +1331,7 @@ raise Exception, "Missing or improper log-likelihoods in regression objects" if likr < 0.0: # always enforces positive likelihood ratio likr = -likr - pvalue = stats.chisqprob(likr, 1) + pvalue = chisqprob(likr, 1) likratio = {"likr": likr, "df": 1, "p-value": pvalue} return likratio diff -Nru pysal-1.14.2/pysal/spreg/diagnostics_sp.py pysal-1.14.3/pysal/spreg/diagnostics_sp.py --- pysal-1.14.2/pysal/spreg/diagnostics_sp.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/spreg/diagnostics_sp.py 2017-11-03 00:27:09.000000000 +0000 @@ -4,7 +4,8 @@ __author__ = "Luc Anselin luc.anselin@asu.edu, Daniel Arribas-Bel darribas@asu.edu" from utils import spdot -from scipy.stats.stats import chisqprob +from scipy.stats import chi2 +chisqprob = chi2.sf from scipy.stats import norm import numpy as np import numpy.linalg as la diff -Nru pysal-1.14.2/pysal/spreg/probit.py pysal-1.14.3/pysal/spreg/probit.py --- pysal-1.14.2/pysal/spreg/probit.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/spreg/probit.py 2017-11-03 00:27:09.000000000 +0000 @@ -5,7 +5,8 @@ import numpy as np import numpy.linalg as la import scipy.optimize as op -from scipy.stats import norm, chisqprob +from scipy.stats import norm, chi2 +chisqprob = chi2.sf import scipy.sparse as SP import user_output as USER import summary_output as SUMMARY diff -Nru pysal-1.14.2/pysal/spreg/regimes.py pysal-1.14.3/pysal/spreg/regimes.py --- pysal-1.14.2/pysal/spreg/regimes.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/spreg/regimes.py 2017-11-03 00:27:09.000000000 +0000 @@ -2,7 +2,8 @@ import pysal import scipy.sparse as SP import itertools as iter -from scipy.stats import f, chisqprob +from scipy.stats import f, chi2 +chisqprob = chi2.sf import numpy.linalg as la from utils import spbroadcast diff -Nru pysal-1.14.2/pysal/spreg/sur_error.py pysal-1.14.3/pysal/spreg/sur_error.py --- pysal-1.14.2/pysal/spreg/sur_error.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/spreg/sur_error.py 2017-11-03 00:27:09.000000000 +0000 @@ -9,7 +9,8 @@ import numpy as np import pysal import numpy.linalg as la -import scipy.stats as stats +from scipy.stats import chi2 +chisqprob = chi2.sf import summary_output as SUMMARY import user_output as USER from scipy.sparse.linalg import splu as SuperLU @@ -320,7 +321,7 @@ if nonspat_diag: M = self.n_eq * (self.n_eq - 1)/2.0 likrodiag = 2.0 * (self.surerrllik - self.errllik) - plik1 = stats.chisqprob(likrodiag, M) + plik1 = chisqprob(likrodiag, M) self.lrtest = (likrodiag,int(M),plik1) else: self.lrtest = None @@ -328,7 +329,7 @@ # LR test on spatial autoregressive coefficients if spat_diag: liklambda = 2.0 * (self.surerrllik - self.llik) - plik2 = stats.chisqprob(liklambda, self.n_eq) + plik2 = chisqprob(liklambda, self.n_eq) self.likrlambda = (liklambda,self.n_eq,plik2) else: self.likrlambda = None diff -Nru pysal-1.14.2/pysal/version.py pysal-1.14.3/pysal/version.py --- pysal-1.14.2/pysal/version.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/version.py 2017-11-03 00:27:09.000000000 +0000 @@ -1,3 +1,3 @@ import datetime -version = "1.14.2" -stable_release_date = datetime.date(2017, 9, 23) +version = "1.14.3" +stable_release_date = datetime.date(2017, 11, 2) diff -Nru pysal-1.14.2/pysal/weights/Contiguity.py pysal-1.14.3/pysal/weights/Contiguity.py --- pysal-1.14.2/pysal/weights/Contiguity.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/pysal/weights/Contiguity.py 2017-11-03 00:27:09.000000000 +0000 @@ -79,11 +79,13 @@ """ sparse = kwargs.pop('sparse', False) if idVariable is not None: - ids = get_ids(filepath, idVariable) + ids = get_ids(filepath, idVariable) + id_order = ids else: ids = None + id_order = None iterable = FileIO(filepath) - w = cls(FileIO(filepath), ids=ids, **kwargs) + w = cls(iterable, ids=ids, id_order=id_order, **kwargs) w.set_shapefile(filepath, idVariable=idVariable, full=full) if sparse: w = w.to_WSP() @@ -243,11 +245,14 @@ """ sparse = kwargs.pop('sparse', False) if idVariable is not None: - ids = get_ids(filepath, idVariable) + ids = get_ids(filepath, idVariable) + id_order = ids else: ids = None + id_order = None + iterable = FileIO(filepath) - w = cls(FileIO(filepath), ids=ids, **kwargs) + w = cls(iterable, ids=ids, id_order=id_order, **kwargs) w.set_shapefile(filepath, idVariable=idVariable, full=full) if sparse: w = w.to_WSP() diff -Nru pysal-1.14.2/README.rst pysal-1.14.3/README.rst --- pysal-1.14.2/README.rst 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/README.rst 2017-11-03 00:27:09.000000000 +0000 @@ -28,7 +28,6 @@ Counties 1990.* - PySAL modules ============= diff -Nru pysal-1.14.2/requirements_plus.txt pysal-1.14.3/requirements_plus.txt --- pysal-1.14.2/requirements_plus.txt 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/requirements_plus.txt 2017-11-03 00:27:09.000000000 +0000 @@ -9,3 +9,4 @@ statsmodels>=0.6.1 numba numexpr +palettable diff -Nru pysal-1.14.2/setup.py pysal-1.14.3/setup.py --- pysal-1.14.2/setup.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/setup.py 2017-11-03 00:27:09.000000000 +0000 @@ -14,7 +14,7 @@ MAJOR = 1 MINOR = 14 -MICRO = 2 +MICRO = 3 ISRELEASED = False VERSION = '%d.%d.%d' % (MAJOR, MINOR, MICRO) diff -Nru pysal-1.14.2/THANKS.txt pysal-1.14.3/THANKS.txt --- pysal-1.14.2/THANKS.txt 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/THANKS.txt 2017-11-03 00:27:09.000000000 +0000 @@ -42,6 +42,7 @@ mylons-tcc dnadai2 MridulS +thequackdaddy Funding from the following sources has supported PySAL development: diff -Nru pysal-1.14.2/tools/bump.py pysal-1.14.3/tools/bump.py --- pysal-1.14.2/tools/bump.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/tools/bump.py 2017-11-03 00:27:09.000000000 +0000 @@ -60,10 +60,10 @@ tok = line[:9] if tok == 'version =': lines[i] = "version = '{}'\n".format(version) - print lines[i] + print(lines[i]) elif tok == 'release =': lines[i] = "release = '{}'\n".format(version) - print lines[i] + print(lines[i]) with open("../doc/source/conf.py", 'w') as c_file: c_file.write("".join(lines)) diff -Nru pysal-1.14.2/tools/github_stats.py pysal-1.14.3/tools/github_stats.py --- pysal-1.14.2/tools/github_stats.py 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/tools/github_stats.py 2017-11-03 00:27:09.000000000 +0000 @@ -15,7 +15,11 @@ from datetime import datetime, timedelta from subprocess import check_output -from urllib2 import urlopen +try: + from urllib import urlopen +except: + from urllib.request import urlopen + import ssl context = ssl._create_unverified_context() @@ -48,7 +52,7 @@ results = [] while url: print("fetching %s" % url, file=sys.stderr) - f = urlopen(url, context=context) + f = urlopen(url) results.extend(json.load(f)) links = parse_link_header(f.headers) url = links.get('next') diff -Nru pysal-1.14.2/.travis.yml pysal-1.14.3/.travis.yml --- pysal-1.14.2/.travis.yml 2017-09-23 20:49:59.000000000 +0000 +++ pysal-1.14.3/.travis.yml 2017-11-03 00:27:09.000000000 +0000 @@ -7,6 +7,7 @@ - "2.7" - "3.4" - "3.5" + - "3.6" env: - PYSAL_PLUS=false