nickeubank / partisan_dislocation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Partisan Dislocation

Build Status

This package implements the partisan dislocation measure from Partisan Dislocation: A Precinct-Level Measure ofRepresentation and Gerrymandering by Deford, Eubank, & Rodden.

It takes as input a GeoDataframe of polygons with columns containing vote counts for both political parties for each polygon. it includes three functions which, when used sequentially, will return a GeoDataframe of representative voter point along with associated dislocation scores for each point.

In addition, the repository for this package also include the shapefiles of US precincts and their vote totals from the 2008 presidential election used in Deford, Eubank, Rodden. these can be found in the folder "2008_presidential_precinct_data." It also includes CSV containing all of the underlying data behind Figure 10 from the Partisan Dislocation paper in the folder "figure_10_csv". Note that to download this data, you will have to first install git-lfs before cloning the repository.

The three functions provided by the package are:

  • random_points_in_polygon: takes a polygon GeoDataframe with the number of votes cast democrats and republicans in each polygon and returns a GeoDataframe off of representative voter points.
  • calculate_voter_knn: takes a voter point GeoDataframe and returns a voter point GeoDataframe with voter knn scores.
  • calculate_dislocation: takes a voter point GeoDataframe with knn scores and a GeoDataframe with electoral district polygons and returns voter dislocation scores.

Tutorial

Demonstration of how the package can be used can be found in dislocation_tutorial.ipynb.

Installation

This package can be easily installed using pip:

pip install partisan_dislocation

Dislocation Maps

This repository also includes partisan dislocation maps --- analogous to those in Deford, Eubank, Rodden --- for all states and legislative levels. Those can be found in the partisan_dislocation_maps folder.

Development Notes

  • To run test suite, set working directory to top level and run python -m unittest partisan_dislocation/tests/test_partisan_dislocation.py (after ensuring pip-installed version of package not in current environment).
  • To build package: install flit, and from root directory run flit build.
  • To install locally, build then run flit install.
  • To create new release, build then run flit publish.

About

License:MIT License


Languages

Language:Jupyter Notebook 90.0%Language:Python 10.0%