{
 "metadata": {
  "name": "",
  "signature": "sha256:a138ff2bb82f0ff84b1c6ddbfcdd96a0d757ce0a91b7848a1d377b8e5b58d79b"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import pysal.contrib.clusterpy as cp\n",
      "%pylab inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "ClusterPy: Library of spatially constrained clustering algorithms\n",
        "Populating the interactive namespace from numpy and matplotlib"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import numpy as np\n",
      "import pysal as ps\n",
      "from collections import Counter"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "columbus = cp.loadArcData(ps.examples.get_path('columbus.shp'))\n",
      "columbus.fieldNames\n",
      "n = len(columbus.Wqueen)\n",
      "#columbus.generateData('Uniform', 'rook', 1, 1, 10)\n",
      "columbus.dataOperation(\"CONSTANT = 1\")\n",
      "columbus.cluster('maxpTabu', ['CRIME',  'CONSTANT'], threshold=4, dissolve=0, std=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Adding CONSTANT to fieldNames\n",
        "Adding values from 1 to Y\n",
        "Adding variables\n",
        "Done\n",
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running max-p-regions model (Duque, Anselin and Rey, 2010)\n",
        "Local search method: Tabu Search\n",
        "Number of areas:  49\n",
        "threshold value:  4\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [6, 6, 6, 6, 7, 1, 6, 6, 1, 1, 3, 3, 3, 3, 7, 3, 1, 8, 8, 5, 8, 1, 5, 8, 7, 7, 0, 0, 0, 0, 4, 5, 9, 4, 9, 4, 2, 0, 4, 5, 5, 4, 2, 9, 2, 4, 5, 2, 9]\n",
        "FINAL OF:  2615.44707346\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(columbus.region2areas)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "Counter({4: 6, 5: 6, 6: 6, 0: 5, 1: 5, 3: 5, 2: 4, 7: 4, 8: 4, 9: 4})"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "columbus.cluster('arisel', ['CRIME'], 5, wType='rook', inits=10, dissolve=0)\n",
      "#calif.cluster('arisel', ['PCR2002'], 9, wType='rook', inits=10, dissolve=1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  49\n",
        "Number of regions:  5\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 2, 2, 2, 0, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 4, 0, 1, 4, 1, 1, 4, 0, 0, 0, 0, 0, 0, 4, 1, 3, 4, 3, 4, 3, 0, 4, 1, 1, 4, 3, 3, 3, 4, 1, 3, 3]\n",
        "initial O.F:  4292.34464226\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 2, 2, 2, 0, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 4, 1, 4, 3, 0, 4, 1, 1, 4, 3, 1, 1, 4, 1, 1, 1]\n",
        "FINAL OF:  3695.95184733\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# regionalization solutions are added as a list of region ids at the end\n",
      "columbus.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 6,
       "text": [
        "['ID',\n",
        " 'AREA',\n",
        " 'PERIMETER',\n",
        " 'COLUMBUS_',\n",
        " 'COLUMBUS_I',\n",
        " 'POLYID',\n",
        " 'NEIG',\n",
        " 'HOVAL',\n",
        " 'INC',\n",
        " 'CRIME',\n",
        " 'OPEN',\n",
        " 'PLUMB',\n",
        " 'DISCBD',\n",
        " 'X',\n",
        " 'Y',\n",
        " 'NSA',\n",
        " 'NSB',\n",
        " 'EW',\n",
        " 'CP',\n",
        " 'THOUS',\n",
        " 'NEIGNO',\n",
        " 'CONSTANT',\n",
        " 'maxpTabu_20140823211458',\n",
        " 'arisel_20140823211459']"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "warisel = ps.block_weights(columbus.region2areas)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "warisel.neighbors"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 8,
       "text": [
        "{0: [1L, 2L, 3L, 6L, 7L],\n",
        " 1: [0L, 2L, 3L, 6L, 7L],\n",
        " 2: [0L, 1L, 3L, 6L, 7L],\n",
        " 3: [0L, 1L, 2L, 6L, 7L],\n",
        " 4: [10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 5: [8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 6: [0L, 1L, 2L, 3L, 7L],\n",
        " 7: [0L, 1L, 2L, 3L, 6L],\n",
        " 8: [5L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 9: [5L, 8L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 10: [4L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 11: [4L,\n",
        "  10L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 12: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 13: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 14: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 15: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 16: [5L, 8L, 9L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 17: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 18: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 19: [5L, 8L, 9L, 16L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 20: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 21: [5L, 8L, 9L, 16L, 19L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 22: [5L, 8L, 9L, 16L, 19L, 21L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 23: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 24: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 25: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 26: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 27: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 28: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 29: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  32L,\n",
        "  37L],\n",
        " 30: [33L, 35L, 38L, 41L, 45L],\n",
        " 31: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 32: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  37L],\n",
        " 33: [30L, 35L, 38L, 41L, 45L],\n",
        " 34: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 35: [30L, 33L, 38L, 41L, 45L],\n",
        " 36: [42L],\n",
        " 37: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L],\n",
        " 38: [30L, 33L, 35L, 41L, 45L],\n",
        " 39: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 40: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 43L, 44L, 46L, 47L, 48L],\n",
        " 41: [30L, 33L, 35L, 38L, 45L],\n",
        " 42: [36L],\n",
        " 43: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 44L, 46L, 47L, 48L],\n",
        " 44: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 46L, 47L, 48L],\n",
        " 45: [30L, 33L, 35L, 38L, 41L],\n",
        " 46: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 47L, 48L],\n",
        " 47: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 48L],\n",
        " 48: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L]}"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "wregimes = ps.block_weights(columbus.region2areas)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "columbus.region2areas[5]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 10,
       "text": [
        "1"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "wregimes.n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 11,
       "text": [
        "49"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "wregimes.neighbors"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 12,
       "text": [
        "{0: [1L, 2L, 3L, 6L, 7L],\n",
        " 1: [0L, 2L, 3L, 6L, 7L],\n",
        " 2: [0L, 1L, 3L, 6L, 7L],\n",
        " 3: [0L, 1L, 2L, 6L, 7L],\n",
        " 4: [10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 5: [8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 6: [0L, 1L, 2L, 3L, 7L],\n",
        " 7: [0L, 1L, 2L, 3L, 6L],\n",
        " 8: [5L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 9: [5L, 8L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 10: [4L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 11: [4L,\n",
        "  10L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 12: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 13: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 14: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 15: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 16: [5L, 8L, 9L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 17: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 18: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 19: [5L, 8L, 9L, 16L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 20: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 21: [5L, 8L, 9L, 16L, 19L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 22: [5L, 8L, 9L, 16L, 19L, 21L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 23: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 24: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 25: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 26: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 27: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 28: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  29L,\n",
        "  32L,\n",
        "  37L],\n",
        " 29: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  32L,\n",
        "  37L],\n",
        " 30: [33L, 35L, 38L, 41L, 45L],\n",
        " 31: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 34L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 32: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  37L],\n",
        " 33: [30L, 35L, 38L, 41L, 45L],\n",
        " 34: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 39L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 35: [30L, 33L, 38L, 41L, 45L],\n",
        " 36: [42L],\n",
        " 37: [4L,\n",
        "  10L,\n",
        "  11L,\n",
        "  12L,\n",
        "  13L,\n",
        "  14L,\n",
        "  15L,\n",
        "  17L,\n",
        "  18L,\n",
        "  20L,\n",
        "  23L,\n",
        "  24L,\n",
        "  25L,\n",
        "  26L,\n",
        "  27L,\n",
        "  28L,\n",
        "  29L,\n",
        "  32L],\n",
        " 38: [30L, 33L, 35L, 41L, 45L],\n",
        " 39: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 40L, 43L, 44L, 46L, 47L, 48L],\n",
        " 40: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 43L, 44L, 46L, 47L, 48L],\n",
        " 41: [30L, 33L, 35L, 38L, 45L],\n",
        " 42: [36L],\n",
        " 43: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 44L, 46L, 47L, 48L],\n",
        " 44: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 46L, 47L, 48L],\n",
        " 45: [30L, 33L, 35L, 38L, 41L],\n",
        " 46: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 47L, 48L],\n",
        " 47: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 48L],\n",
        " 48: [5L, 8L, 9L, 16L, 19L, 21L, 22L, 31L, 34L, 39L, 40L, 43L, 44L, 46L, 47L]}"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Attrribute data from a csv file and a W from a gal file"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico = cp.importCsvData(ps.examples.get_path('mexico.csv'))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 14,
       "text": [
        "['ID',\n",
        " 'State',\n",
        " 'pcgdp1940',\n",
        " 'pcgdp1950',\n",
        " 'pcgdp1960',\n",
        " 'pcgdp1970',\n",
        " 'pcgdp1980',\n",
        " 'pcgdp1990',\n",
        " 'pcgdp2000',\n",
        " 'hanson03',\n",
        " 'hanson98',\n",
        " 'esquivel99',\n",
        " 'inegi',\n",
        " 'inegi2']"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "w = ps.open(ps.examples.get_path('mexico.gal')).read()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "w.n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 16,
       "text": [
        "32"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "cp.addRook2Layer(ps.examples.get_path('mexico.gal'), mexico)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.Wrook"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "{0: [31, 13],\n",
        " 1: [2, 25],\n",
        " 2: [1],\n",
        " 3: [30, 22, 26],\n",
        " 4: [19, 26, 29],\n",
        " 5: [6, 9, 24, 25],\n",
        " 6: [18, 23, 31, 9, 5],\n",
        " 7: [13, 15],\n",
        " 8: [16, 14],\n",
        " 9: [5, 6, 31, 13, 17, 24],\n",
        " 10: [23, 21, 31, 15, 13],\n",
        " 11: [15, 14, 16, 20, 19],\n",
        " 12: [21, 23, 29, 20, 28, 14],\n",
        " 13: [17, 31, 0, 23, 10, 15, 7, 9],\n",
        " 14: [21, 12, 28, 20, 16, 11, 15, 8],\n",
        " 15: [7, 13, 10, 21, 14, 11],\n",
        " 16: [14, 8, 20, 11],\n",
        " 17: [24, 9, 31, 13],\n",
        " 18: [6, 27, 23, 31],\n",
        " 19: [11, 20, 29, 4],\n",
        " 20: [29, 19, 11, 16, 14, 28, 12],\n",
        " 21: [23, 12, 14, 15, 10],\n",
        " 22: [30, 3],\n",
        " 23: [18, 27, 29, 12, 21, 10, 31, 6, 13],\n",
        " 24: [25, 5, 9, 17],\n",
        " 25: [1, 5, 24],\n",
        " 26: [3, 4, 29],\n",
        " 27: [18, 29, 23],\n",
        " 28: [12, 20, 14],\n",
        " 29: [26, 4, 19, 20, 12, 23, 27],\n",
        " 30: [3, 22],\n",
        " 31: [18, 23, 10, 0, 13, 17, 9, 6]}"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.cluster('arisel', ['pcgdp1940'], 5, wType='rook', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  32\n",
        "Number of regions:  5\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 3, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2]\n",
        "initial O.F:  287200188.741\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 3, 3, 0, 0, 2, 2, 2, 4, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 2, 1, 0, 0, 2, 0, 2, 0, 2, 0, 0]\n",
        "FINAL OF:  186036319.667\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 20,
       "text": [
        "['ID',\n",
        " 'State',\n",
        " 'pcgdp1940',\n",
        " 'pcgdp1950',\n",
        " 'pcgdp1960',\n",
        " 'pcgdp1970',\n",
        " 'pcgdp1980',\n",
        " 'pcgdp1990',\n",
        " 'pcgdp2000',\n",
        " 'hanson03',\n",
        " 'hanson98',\n",
        " 'esquivel99',\n",
        " 'inegi',\n",
        " 'inegi2',\n",
        " 'arisel_20140823211523']"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.getVars('pcgdp1940')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 21,
       "text": [
        "{0: [10384.0],\n",
        " 1: [22361.0],\n",
        " 2: [9573.0],\n",
        " 3: [3758.0],\n",
        " 4: [2934.0],\n",
        " 5: [8578.0],\n",
        " 6: [8537.0],\n",
        " 7: [6909.0],\n",
        " 8: [17816.0],\n",
        " 9: [12132.0],\n",
        " 10: [4359.0],\n",
        " 11: [2181.0],\n",
        " 12: [4414.0],\n",
        " 13: [5309.0],\n",
        " 14: [3408.0],\n",
        " 15: [3327.0],\n",
        " 16: [6936.0],\n",
        " 17: [4836.0],\n",
        " 18: [9073.0],\n",
        " 19: [1892.0],\n",
        " 20: [3569.0],\n",
        " 21: [11016.0],\n",
        " 22: [21965.0],\n",
        " 23: [4372.0],\n",
        " 24: [4840.0],\n",
        " 25: [6399.0],\n",
        " 26: [2459.0],\n",
        " 27: [7508.0],\n",
        " 28: [3605.0],\n",
        " 29: [5203.0],\n",
        " 30: [7990.0],\n",
        " 31: [3734.0]}"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# mexico example all together\n",
      "\n",
      "csvfile = ps.examples.get_path('mexico.csv')\n",
      "galfile = ps.examples.get_path('mexico.gal')\n",
      "\n",
      "mexico = cp.importCsvData(csvfile)\n",
      "cp.addRook2Layer(galfile, mexico)\n",
      "mexico.cluster('arisel', ['pcgdp1940'], 5, wType='rook', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  32\n",
        "Number of regions:  5\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 0, 0, 1, 1, 2, 2, 2, 4, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, 2, 2, 2, 1, 2, 1, 2, 1, 2]\n",
        "initial O.F:  228683641.198\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [2, 0, 0, 1, 1, 2, 2, 2, 4, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 3, 1, 1, 2, 1, 2, 1, 2, 1, 1]\n",
        "FINAL OF:  186036319.667\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.region2areas.index(2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 23,
       "text": [
        "0"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.Wrook[0]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 24,
       "text": [
        "[31, 13]"
       ]
      }
     ],
     "prompt_number": 24
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mexico.getVars('State')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 25,
       "text": [
        "{0: ['Aguascalientes'],\n",
        " 1: ['Baja California'],\n",
        " 2: ['Baja California Sur'],\n",
        " 3: ['Campeche'],\n",
        " 4: ['Chiapas'],\n",
        " 5: ['Chihuahua'],\n",
        " 6: ['Coahuila'],\n",
        " 7: ['Colima'],\n",
        " 8: ['Distrito Federal'],\n",
        " 9: ['Durango'],\n",
        " 10: ['Guanajuato'],\n",
        " 11: ['Guerrero'],\n",
        " 12: ['Hidalgo'],\n",
        " 13: ['Jalisco'],\n",
        " 14: ['Mexico'],\n",
        " 15: ['Michoacan'],\n",
        " 16: ['Morelos'],\n",
        " 17: ['Nayarit'],\n",
        " 18: ['Nuevo Leon'],\n",
        " 19: ['Oaxaca'],\n",
        " 20: ['Puebla'],\n",
        " 21: ['Quertaro'],\n",
        " 22: ['Quintana Roo'],\n",
        " 23: ['San Luis Potosi'],\n",
        " 24: ['Sinaloa'],\n",
        " 25: ['Sonora'],\n",
        " 26: ['Tabasco'],\n",
        " 27: ['Tamaulipas'],\n",
        " 28: ['Tlaxcala'],\n",
        " 29: ['Veracruz'],\n",
        " 30: ['Yucatan'],\n",
        " 31: ['Zacatecas']}"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions = np.array(mexico.region2areas)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 26
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 27,
       "text": [
        "array([2, 0, 0, 1, 1, 2, 2, 2, 4, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 3,\n",
        "       1, 1, 2, 1, 2, 1, 2, 1, 1])"
       ]
      }
     ],
     "prompt_number": 27
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 28,
       "text": [
        "Counter({1: 16, 2: 12, 0: 2, 3: 1, 4: 1})"
       ]
      }
     ],
     "prompt_number": 28
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "## Shapefile and mapping results with PySAL Viz"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usf = ps.examples.get_path('us48.shp')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 29
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "us = cp.loadArcData(usf.split(\".\")[0])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 30
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "us.Wqueen"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 31,
       "text": [
        "{0: [10, 7],\n",
        " 1: [3, 4, 5, 7],\n",
        " 2: [11],\n",
        " 3: [1, 4, 9],\n",
        " 4: [1, 3, 5, 9, 12, 14],\n",
        " 5: [1, 4, 7, 14, 22, 29],\n",
        " 6: [9, 12, 25, 47],\n",
        " 7: [0, 1, 5, 10, 21, 22],\n",
        " 8: [11, 13, 15],\n",
        " 9: [12, 3, 4, 6],\n",
        " 10: [0, 23, 21, 7],\n",
        " 11: [8, 2, 13],\n",
        " 12: [33, 4, 6, 9, 14, 25],\n",
        " 13: [8, 17, 18, 11, 15],\n",
        " 14: [33, 4, 5, 12, 29, 31],\n",
        " 15: [8, 16, 19, 13, 17],\n",
        " 16: [15, 19, 24, 26, 27, 28],\n",
        " 17: [18, 13, 15],\n",
        " 18: [17, 13],\n",
        " 19: [16, 26, 15],\n",
        " 20: [24, 25, 30, 47],\n",
        " 21: [10, 23, 34, 22, 7],\n",
        " 22: [34, 5, 39, 7, 21, 29],\n",
        " 23: [10, 34, 21],\n",
        " 24: [16, 27, 20, 30, 47],\n",
        " 25: [20, 12, 30, 6, 33],\n",
        " 26: [16, 19, 28],\n",
        " 27: [16, 24, 28, 30, 32],\n",
        " 28: [16, 32, 26, 27],\n",
        " 29: [34, 35, 5, 39, 14, 22, 31],\n",
        " 30: [32, 33, 37, 20, 24, 25, 27],\n",
        " 31: [33, 35, 29, 14],\n",
        " 32: [36, 27, 28, 37, 30],\n",
        " 33: [35, 37, 44, 12, 14, 25, 30, 31],\n",
        " 34: [39, 29, 21, 22, 23],\n",
        " 35: [33, 38, 39, 44, 29, 31],\n",
        " 36: [32, 42, 43, 37],\n",
        " 37: [32, 33, 36, 40, 41, 42, 44, 30],\n",
        " 38: [35, 44, 45, 39],\n",
        " 39: [38, 34, 35, 29, 22],\n",
        " 40: [41, 42, 37, 46],\n",
        " 41: [40, 44, 37, 45],\n",
        " 42: [40, 43, 36, 37, 46],\n",
        " 43: [42, 36],\n",
        " 44: [33, 35, 37, 38, 41, 45],\n",
        " 45: [41, 44, 38],\n",
        " 46: [40, 42],\n",
        " 47: [24, 20, 6]}"
       ]
      }
     ],
     "prompt_number": 31
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "us.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 32,
       "text": [
        "['ID',\n",
        " 'AREA',\n",
        " 'PERIMETER',\n",
        " 'STATE_',\n",
        " 'STATE_ID',\n",
        " 'STATE_NAME',\n",
        " 'STATE_FIPS',\n",
        " 'SUB_REGION',\n",
        " 'STATE_ABBR']"
       ]
      }
     ],
     "prompt_number": 32
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "uscsv = ps.examples.get_path(\"usjoin.csv\")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 33
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "f = ps.open(uscsv)\n",
      "pci = np.array([f.by_col[str(y)] for y in range(1929, 2010)]).T"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 34
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "pci"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 35,
       "text": [
        "array([[  323,   267,   224, ..., 31988, 32819, 32274],\n",
        "       [  600,   520,   429, ..., 33470, 33445, 32077],\n",
        "       [  310,   228,   215, ..., 31070, 31800, 31493],\n",
        "       ..., \n",
        "       [  460,   408,   356, ..., 29769, 31265, 31843],\n",
        "       [  673,   588,   469, ..., 35839, 36594, 35676],\n",
        "       [  675,   585,   476, ..., 43453, 45177, 42504]])"
       ]
      }
     ],
     "prompt_number": 35
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy = cp.Layer()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 36
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "cp.addQueen2Layer(ps.examples.get_path('states48.gal'), usy)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 37
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "names = [\"Y_%d\"%v for v in range(1929,2010)]\n",
      "cp.addArray2Layer(pci, usy, names)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 38
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "names"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 39,
       "text": [
        "['Y_1929',\n",
        " 'Y_1930',\n",
        " 'Y_1931',\n",
        " 'Y_1932',\n",
        " 'Y_1933',\n",
        " 'Y_1934',\n",
        " 'Y_1935',\n",
        " 'Y_1936',\n",
        " 'Y_1937',\n",
        " 'Y_1938',\n",
        " 'Y_1939',\n",
        " 'Y_1940',\n",
        " 'Y_1941',\n",
        " 'Y_1942',\n",
        " 'Y_1943',\n",
        " 'Y_1944',\n",
        " 'Y_1945',\n",
        " 'Y_1946',\n",
        " 'Y_1947',\n",
        " 'Y_1948',\n",
        " 'Y_1949',\n",
        " 'Y_1950',\n",
        " 'Y_1951',\n",
        " 'Y_1952',\n",
        " 'Y_1953',\n",
        " 'Y_1954',\n",
        " 'Y_1955',\n",
        " 'Y_1956',\n",
        " 'Y_1957',\n",
        " 'Y_1958',\n",
        " 'Y_1959',\n",
        " 'Y_1960',\n",
        " 'Y_1961',\n",
        " 'Y_1962',\n",
        " 'Y_1963',\n",
        " 'Y_1964',\n",
        " 'Y_1965',\n",
        " 'Y_1966',\n",
        " 'Y_1967',\n",
        " 'Y_1968',\n",
        " 'Y_1969',\n",
        " 'Y_1970',\n",
        " 'Y_1971',\n",
        " 'Y_1972',\n",
        " 'Y_1973',\n",
        " 'Y_1974',\n",
        " 'Y_1975',\n",
        " 'Y_1976',\n",
        " 'Y_1977',\n",
        " 'Y_1978',\n",
        " 'Y_1979',\n",
        " 'Y_1980',\n",
        " 'Y_1981',\n",
        " 'Y_1982',\n",
        " 'Y_1983',\n",
        " 'Y_1984',\n",
        " 'Y_1985',\n",
        " 'Y_1986',\n",
        " 'Y_1987',\n",
        " 'Y_1988',\n",
        " 'Y_1989',\n",
        " 'Y_1990',\n",
        " 'Y_1991',\n",
        " 'Y_1992',\n",
        " 'Y_1993',\n",
        " 'Y_1994',\n",
        " 'Y_1995',\n",
        " 'Y_1996',\n",
        " 'Y_1997',\n",
        " 'Y_1998',\n",
        " 'Y_1999',\n",
        " 'Y_2000',\n",
        " 'Y_2001',\n",
        " 'Y_2002',\n",
        " 'Y_2003',\n",
        " 'Y_2004',\n",
        " 'Y_2005',\n",
        " 'Y_2006',\n",
        " 'Y_2007',\n",
        " 'Y_2008',\n",
        " 'Y_2009']"
       ]
      }
     ],
     "prompt_number": 39
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 40,
       "text": [
        "['Y_1929',\n",
        " 'Y_1930',\n",
        " 'Y_1931',\n",
        " 'Y_1932',\n",
        " 'Y_1933',\n",
        " 'Y_1934',\n",
        " 'Y_1935',\n",
        " 'Y_1936',\n",
        " 'Y_1937',\n",
        " 'Y_1938',\n",
        " 'Y_1939',\n",
        " 'Y_1940',\n",
        " 'Y_1941',\n",
        " 'Y_1942',\n",
        " 'Y_1943',\n",
        " 'Y_1944',\n",
        " 'Y_1945',\n",
        " 'Y_1946',\n",
        " 'Y_1947',\n",
        " 'Y_1948',\n",
        " 'Y_1949',\n",
        " 'Y_1950',\n",
        " 'Y_1951',\n",
        " 'Y_1952',\n",
        " 'Y_1953',\n",
        " 'Y_1954',\n",
        " 'Y_1955',\n",
        " 'Y_1956',\n",
        " 'Y_1957',\n",
        " 'Y_1958',\n",
        " 'Y_1959',\n",
        " 'Y_1960',\n",
        " 'Y_1961',\n",
        " 'Y_1962',\n",
        " 'Y_1963',\n",
        " 'Y_1964',\n",
        " 'Y_1965',\n",
        " 'Y_1966',\n",
        " 'Y_1967',\n",
        " 'Y_1968',\n",
        " 'Y_1969',\n",
        " 'Y_1970',\n",
        " 'Y_1971',\n",
        " 'Y_1972',\n",
        " 'Y_1973',\n",
        " 'Y_1974',\n",
        " 'Y_1975',\n",
        " 'Y_1976',\n",
        " 'Y_1977',\n",
        " 'Y_1978',\n",
        " 'Y_1979',\n",
        " 'Y_1980',\n",
        " 'Y_1981',\n",
        " 'Y_1982',\n",
        " 'Y_1983',\n",
        " 'Y_1984',\n",
        " 'Y_1985',\n",
        " 'Y_1986',\n",
        " 'Y_1987',\n",
        " 'Y_1988',\n",
        " 'Y_1989',\n",
        " 'Y_1990',\n",
        " 'Y_1991',\n",
        " 'Y_1992',\n",
        " 'Y_1993',\n",
        " 'Y_1994',\n",
        " 'Y_1995',\n",
        " 'Y_1996',\n",
        " 'Y_1997',\n",
        " 'Y_1998',\n",
        " 'Y_1999',\n",
        " 'Y_2000',\n",
        " 'Y_2001',\n",
        " 'Y_2002',\n",
        " 'Y_2003',\n",
        " 'Y_2004',\n",
        " 'Y_2005',\n",
        " 'Y_2006',\n",
        " 'Y_2007',\n",
        " 'Y_2008',\n",
        " 'Y_2009']"
       ]
      }
     ],
     "prompt_number": 40
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.getVars('Y_1929')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 41,
       "text": [
        "{0: [323],\n",
        " 1: [600],\n",
        " 2: [310],\n",
        " 3: [991],\n",
        " 4: [634],\n",
        " 5: [1024],\n",
        " 6: [1032],\n",
        " 7: [518],\n",
        " 8: [347],\n",
        " 9: [507],\n",
        " 10: [948],\n",
        " 11: [607],\n",
        " 12: [581],\n",
        " 13: [532],\n",
        " 14: [393],\n",
        " 15: [414],\n",
        " 16: [601],\n",
        " 17: [768],\n",
        " 18: [906],\n",
        " 19: [790],\n",
        " 20: [599],\n",
        " 21: [286],\n",
        " 22: [621],\n",
        " 23: [592],\n",
        " 24: [596],\n",
        " 25: [868],\n",
        " 26: [686],\n",
        " 27: [918],\n",
        " 28: [410],\n",
        " 29: [1152],\n",
        " 30: [332],\n",
        " 31: [382],\n",
        " 32: [771],\n",
        " 33: [455],\n",
        " 34: [668],\n",
        " 35: [772],\n",
        " 36: [874],\n",
        " 37: [271],\n",
        " 38: [426],\n",
        " 39: [378],\n",
        " 40: [479],\n",
        " 41: [551],\n",
        " 42: [634],\n",
        " 43: [434],\n",
        " 44: [741],\n",
        " 45: [460],\n",
        " 46: [673],\n",
        " 47: [675]}"
       ]
      }
     ],
     "prompt_number": 41
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.Wrook"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 42,
       "text": [
        "{}"
       ]
      }
     ],
     "prompt_number": 42
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', ['Y_1980'], 8, wType='queen', inits=10, dissolve=0)\n",
      "#mexico.cluster('arisel', ['pcgdp1940'], 5, wType='rook', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  48\n",
        "Number of regions:  8\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [4, 0, 4, 2, 0, 6, 0, 4, 4, 1, 0, 0, 0, 0, 4, 4, 5, 0, 7, 0, 0, 4, 0, 1, 0, 2, 5, 7, 1, 7, 4, 1, 0, 0, 1, 0, 3, 4, 1, 4, 0, 1, 5, 0, 1, 4, 0, 0]\n",
        "initial O.F:  23338316.0\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [4, 1, 4, 2, 0, 6, 7, 4, 4, 1, 0, 0, 1, 0, 4, 1, 5, 0, 7, 0, 0, 4, 0, 1, 1, 2, 5, 7, 1, 7, 4, 1, 0, 1, 1, 0, 3, 4, 1, 4, 1, 1, 5, 0, 1, 4, 0, 0]\n",
        "FINAL OF:  21804253.0\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 43
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 43
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "us = cp.Layer()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 44
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "cp.addQueen2Layer(ps.examples.get_path('states48.gal'), us)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 45
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "uscsv = ps.examples.get_path(\"usjoin.csv\")"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 46
    },
    {
     "cell_type": "code",
     "collapsed": true,
     "input": [
      "f = ps.open(uscsv)\n",
      "pci = np.array([f.by_col[str(y)] for y in range(1929, 2010)]).T\n",
      "names = [\"Y_%d\"%v for v in range(1929,2010)]\n",
      "cp.addArray2Layer(pci, us, names)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 47
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', ['Y_1980'], 8, wType='queen', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  48\n",
        "Number of regions:  8\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [0, 6, 0, 2, 6, 5, 6, 0, 0, 7, 6, 6, 6, 6, 0, 0, 4, 6, 4, 6, 6, 0, 6, 7, 6, 2, 4, 1, 7, 4, 0, 7, 6, 6, 2, 6, 4, 0, 7, 0, 6, 7, 3, 6, 2, 0, 6, 6]\n",
        "initial O.F:  21166215.0\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [0, 6, 0, 2, 6, 5, 1, 0, 0, 7, 6, 6, 6, 6, 0, 0, 4, 6, 4, 6, 6, 0, 6, 7, 7, 2, 4, 1, 7, 1, 0, 7, 6, 6, 2, 6, 4, 0, 7, 0, 6, 7, 3, 6, 2, 0, 6, 6]\n",
        "FINAL OF:  19355956.0\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 48
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "us_alpha = cp.importCsvData(ps.examples.get_path('usjoin.csv'))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 49
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "alpha_fips = us_alpha.getVars('STATE_FIPS')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n"
       ]
      }
     ],
     "prompt_number": 50
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "alpha_fips"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 51,
       "text": [
        "{0: [1],\n",
        " 1: [4],\n",
        " 2: [5],\n",
        " 3: [6],\n",
        " 4: [8],\n",
        " 5: [9],\n",
        " 6: [10],\n",
        " 7: [12],\n",
        " 8: [13],\n",
        " 9: [16],\n",
        " 10: [17],\n",
        " 11: [18],\n",
        " 12: [19],\n",
        " 13: [20],\n",
        " 14: [21],\n",
        " 15: [22],\n",
        " 16: [23],\n",
        " 17: [24],\n",
        " 18: [25],\n",
        " 19: [26],\n",
        " 20: [27],\n",
        " 21: [28],\n",
        " 22: [29],\n",
        " 23: [30],\n",
        " 24: [31],\n",
        " 25: [32],\n",
        " 26: [33],\n",
        " 27: [34],\n",
        " 28: [35],\n",
        " 29: [36],\n",
        " 30: [37],\n",
        " 31: [38],\n",
        " 32: [39],\n",
        " 33: [40],\n",
        " 34: [41],\n",
        " 35: [42],\n",
        " 36: [44],\n",
        " 37: [45],\n",
        " 38: [46],\n",
        " 39: [47],\n",
        " 40: [48],\n",
        " 41: [49],\n",
        " 42: [50],\n",
        " 43: [51],\n",
        " 44: [53],\n",
        " 45: [54],\n",
        " 46: [55],\n",
        " 47: [56]}"
       ]
      }
     ],
     "prompt_number": 51
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "dbf = ps.open(ps.examples.get_path('us48.dbf'))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 52
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "dbf.header"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 53,
       "text": [
        "['AREA',\n",
        " 'PERIMETER',\n",
        " 'STATE_',\n",
        " 'STATE_ID',\n",
        " 'STATE_NAME',\n",
        " 'STATE_FIPS',\n",
        " 'SUB_REGION',\n",
        " 'STATE_ABBR']"
       ]
      }
     ],
     "prompt_number": 53
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "state_fips = dbf.by_col('STATE_FIPS')\n",
      "names = dbf.by_col('STATE_NAME')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 54
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "names"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 55,
       "text": [
        "['Washington',\n",
        " 'Montana',\n",
        " 'Maine',\n",
        " 'North Dakota',\n",
        " 'South Dakota',\n",
        " 'Wyoming',\n",
        " 'Wisconsin',\n",
        " 'Idaho',\n",
        " 'Vermont',\n",
        " 'Minnesota',\n",
        " 'Oregon',\n",
        " 'New Hampshire',\n",
        " 'Iowa',\n",
        " 'Massachusetts',\n",
        " 'Nebraska',\n",
        " 'New York',\n",
        " 'Pennsylvania',\n",
        " 'Connecticut',\n",
        " 'Rhode Island',\n",
        " 'New Jersey',\n",
        " 'Indiana',\n",
        " 'Nevada',\n",
        " 'Utah',\n",
        " 'California',\n",
        " 'Ohio',\n",
        " 'Illinois',\n",
        " 'Delaware',\n",
        " 'West Virginia',\n",
        " 'Maryland',\n",
        " 'Colorado',\n",
        " 'Kentucky',\n",
        " 'Kansas',\n",
        " 'Virginia',\n",
        " 'Missouri',\n",
        " 'Arizona',\n",
        " 'Oklahoma',\n",
        " 'North Carolina',\n",
        " 'Tennessee',\n",
        " 'Texas',\n",
        " 'New Mexico',\n",
        " 'Alabama',\n",
        " 'Mississippi',\n",
        " 'Georgia',\n",
        " 'South Carolina',\n",
        " 'Arkansas',\n",
        " 'Louisiana',\n",
        " 'Florida',\n",
        " 'Michigan']"
       ]
      }
     ],
     "prompt_number": 55
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "state_fips = map(int, state_fips)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 56
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "state_fips"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 57,
       "text": [
        "[53,\n",
        " 30,\n",
        " 23,\n",
        " 38,\n",
        " 46,\n",
        " 56,\n",
        " 55,\n",
        " 16,\n",
        " 50,\n",
        " 27,\n",
        " 41,\n",
        " 33,\n",
        " 19,\n",
        " 25,\n",
        " 31,\n",
        " 36,\n",
        " 42,\n",
        " 9,\n",
        " 44,\n",
        " 34,\n",
        " 18,\n",
        " 32,\n",
        " 49,\n",
        " 6,\n",
        " 39,\n",
        " 17,\n",
        " 10,\n",
        " 54,\n",
        " 24,\n",
        " 8,\n",
        " 21,\n",
        " 20,\n",
        " 51,\n",
        " 29,\n",
        " 4,\n",
        " 40,\n",
        " 37,\n",
        " 47,\n",
        " 48,\n",
        " 35,\n",
        " 1,\n",
        " 28,\n",
        " 13,\n",
        " 45,\n",
        " 5,\n",
        " 22,\n",
        " 12,\n",
        " 26]"
       ]
      }
     ],
     "prompt_number": 57
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# the csv file has the states ordered alphabetically, but this isn't the case for the order in the shapefile so we have to reorder before any choropleths are drawn\n",
      "alpha_fips = [i[0] for i in alpha_fips.values()]\n",
      "reorder = [ alpha_fips.index(s) for s in state_fips]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 58
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions = usy.region2areas"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 59
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 60,
       "text": [
        "[0,\n",
        " 6,\n",
        " 0,\n",
        " 2,\n",
        " 6,\n",
        " 5,\n",
        " 1,\n",
        " 0,\n",
        " 0,\n",
        " 7,\n",
        " 6,\n",
        " 6,\n",
        " 6,\n",
        " 6,\n",
        " 0,\n",
        " 0,\n",
        " 4,\n",
        " 6,\n",
        " 4,\n",
        " 6,\n",
        " 6,\n",
        " 0,\n",
        " 6,\n",
        " 7,\n",
        " 7,\n",
        " 2,\n",
        " 4,\n",
        " 1,\n",
        " 7,\n",
        " 1,\n",
        " 0,\n",
        " 7,\n",
        " 6,\n",
        " 6,\n",
        " 2,\n",
        " 6,\n",
        " 4,\n",
        " 0,\n",
        " 7,\n",
        " 0,\n",
        " 6,\n",
        " 7,\n",
        " 3,\n",
        " 6,\n",
        " 2,\n",
        " 0,\n",
        " 6,\n",
        " 6]"
       ]
      }
     ],
     "prompt_number": 60
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from pysal.contrib.viz import mapping as maps"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 61
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "shp = ps.examples.get_path('us48.shp')\n",
      "regions = np.array(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 62
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nrkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x149ca390>"
       ]
      }
     ],
     "prompt_number": 63
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', ['Y_1929'], 8, wType='queen', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Getting variables\n",
        "Variables successfully extracted\n",
        "Running original Arisel algorithm\n",
        "Number of areas:  48\n",
        "Number of regions:  8\n",
        "initial Solution: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [0, 4, 0, 1, 4, 6, 6, 0, 0, 4, 5, 5, 4, 4, 2, 0, 3, 5, 6, 5, 4, 0, 4, 7, 4, 1, 3, 6, 0, 6, 0, 4, 5, 0, 4, 5, 6, 0, 4, 2, 0, 4, 3, 2, 4, 2, 4, 7]\n",
        "initial O.F:  320792.0\n",
        "FINAL SOLUTION: "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " [0, 4, 0, 1, 7, 6, 6, 0, 0, 4, 5, 5, 4, 4, 0, 0, 3, 5, 6, 5, 4, 0, 4, 4, 4, 1, 3, 6, 0, 6, 0, 4, 5, 0, 4, 5, 6, 0, 4, 0, 0, 4, 3, 2, 4, 2, 5, 7]\n",
        "FINAL OF:  311057.0\n",
        "Done\n",
        "Adding variables\n",
        "Done\n"
       ]
      }
     ],
     "prompt_number": 64
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions = usy.region2areas"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 65
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions = np.array(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 66
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1495def0>"
       ]
      }
     ],
     "prompt_number": 67
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "names = [\"Y_%d\"%i for i in range(1929, 2010)]\n",
      "#usy.cluster('arisel', ['Y_1929'], 8, wType='queen', inits=10, dissolve=0)\n",
      "usy.cluster('arisel', names, 8, wType='queen', inits=10, dissolve=0)\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='All Years')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ps.version"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', names[:40], 8, wType='queen', inits=10, dissolve=0)\n",
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='1929-68')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', names[40:], 8, wType='queen', inits=10, dissolve=0)\n",
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='1969-2009')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('arisel', names[40:], 8, wType='queen', inits=10, dissolve=0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.dataOperation(\"CONSTANT = 1\")\n",
      "usy.Wrook = usy.Wqueen\n",
      "usy.cluster('maxpTabu', ['Y_1929', 'Y_1929'], threshold=1000, dissolve=0)\n",
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='maxp 1929')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.getVars('Y_1929')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.Wrook"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('maxpTabu', ['Y_1929', 'CONSTANT'], threshold=8, dissolve=0)\n",
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='maxp 1929')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "regions"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "vars = names"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "vars.append('CONSTANT')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "vars"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "usy.cluster('maxpTabu', vars, threshold=8, dissolve=0)\n",
      "regions = usy.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions[reorder], 'unique_values', title='maxp 1929-2009')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "south = cp.loadArcData(ps.examples.get_path(\"south.shp\"))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "south.fieldNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# uncomment if you have some time ;->\n",
      "#south.cluster('arisel', ['HR70'], 20, wType='queen', inits=10, dissolve=0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#regions = south.region2areas"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "shp = ps.examples.get_path('south.shp')\n",
      "#maps.plot_choropleth(shp, np.array(regions), 'unique_values')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "south.dataOperation(\"CONSTANT = 1\")\n",
      "south.cluster('maxpTabu', ['HR70', 'CONSTANT'], threshold=70, dissolve=0)\n",
      "regions = south.region2areas\n",
      "regions = np.array(regions)\n",
      "maps.plot_choropleth(shp, regions, 'unique_values', title='maxp HR70 threshold=70')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Counter(regions)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}