Skip to main content

Redistricting analytics in Python

Project description

rdapy

Redistricting Analytics in Python

This repository (rdapy) re-implements the main analytics used in Dave's Redistricting (DRA). Unlike the analytics used in the app (dra-analytics) which are implememented in TypeScript, these are implemented as a Python package to make them easier to use outside of DRA. There is also a command-line interface for high-volume scoring.

These are described in detail at the website for this repository.

To use it in your Python, install the package. To use the high-volume scoring scripts, set up the command-line interface.

Installing the Package

To install the package:

pip install rdapy

The latest version of the package is 3.2.0.

Then in your code, either import rdapy or from rdapy import ....

Installing Command-Line Interface

Before installing the command-line interface (CLI), make sure you have the prerequisites installed.

Install Prequisites

The high-volume scoring scripts require Python 3.12 or later. If that is not the default on your computer, you can use pyenv to manage multiple Python versions. These instructions assume you're using pyenv.

Install pyenv from Homebrew:

brew install pyenv

Completing that setup will involve adding a few lines to your shell profile file (like .bash_profile).

You can install Python 3.12 from Homebrew:

brew install python@3.12

Setting Up Your Environment

With the prequisites installed, clone the GitHub repository:

git clone https://github.com/dra2020/rdapy
cd rdapy

Then create a virtual environment that uses Python 3.12, and then reset Python outside the virtual environment to the normal setting:

pyenv shell 3.12
python3 -m venv /path/to/venvs/rdapy
source /path/to/venvs/rdapy/bin/activate
deactivate
pyenv shell --unset

Then activate the virtual environment again, and install the required dependencies:

source /path/to/venvs/rdapy/bin/activate
pip install -r requirements.txt
pip install --upgrade pip
export PYTHONPATH="${PYTHONPATH}:$(pwd)"

Finally, test that the automated tests run:

pytest

Then score some sample plans. On a Mac or Linux, use this bash script:

scripts/score/SCORE.sh \
--state NC \
--plan-type congress \
--geojson /dir/for/unzipped/files/NC_2020_VD_tabblock.vtd.datasets.geojson \
--graph /dir/for/unzipped/files/NC_2020_graph.json \
--precomputed testdata/examples/NC_congress_precomputed.json \
--plans testdata/plans/NC_congress_plans.tagged.jsonl \
--scores /path/to/TEST_scores.csv \
--by-district /path/to/TEST_by-district.jsonl

The --scores and by-district paths are where you want the scores CSV and by-district JSONL aggregates files to be saved, respectively.

Alternatively or on Windows, use this Python version of the script:

scripts/score/SCORE-PYTHON.py \
--state NC \
--plan-type congress \
--geojson /dir/for/unzipped/files/NC_2020_VD_tabblock.vtd.datasets.geojson \
--graph /dir/for/unzipped/files/NC_2020_graph.json \
--precomputed testdata/examples/NC_congress_precomputed.json \
--plans testdata/plans/NC_congress_plans.tagged.jsonl \
--scores /path/to/TEST_scores.csv \
--by-district /path/to/TEST_by-district.jsonl

It has the same arguments as the bash script, and will produce the same output files, but it is implemented in Python and can be run on Windows.

Development

There is a sample launch.json for VS Code debugging in the docs directory.

Testing

Run automated tests with:

pytest

Questions

Email questions to feedback.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rdapy-3.2.0.tar.gz (82.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rdapy-3.2.0-py3-none-any.whl (73.8 kB view details)

Uploaded Python 3

File details

Details for the file rdapy-3.2.0.tar.gz.

File metadata

  • Download URL: rdapy-3.2.0.tar.gz
  • Upload date:
  • Size: 82.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for rdapy-3.2.0.tar.gz
Algorithm Hash digest
SHA256 471dc77f927e5c7cfa3030ddcbe90c19fa829517ef5f95df80cff1113768d1d2
MD5 98eae9b99397a7d022a37f052b07d078
BLAKE2b-256 6e07b955aac87e6e0a9cfd2713232364a207ad3eeef5c97cd323adec7a4470e7

See more details on using hashes here.

File details

Details for the file rdapy-3.2.0-py3-none-any.whl.

File metadata

  • Download URL: rdapy-3.2.0-py3-none-any.whl
  • Upload date:
  • Size: 73.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for rdapy-3.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 09e2abb1e3108b1dd490f4cbed972a7d33bd5aab21cb00a449d97d0944f6d8a8
MD5 e8978d1a22475f2574c2a5d4a522b290
BLAKE2b-256 7525375bed216e554260c4c03ba46c900b15eda3775517cd433dd68bc2fdb073

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page