Source code for gerrychain.metrics.compactness

import math


def compute_polsby_popper(area, perimeter):
    try:
        return 4 * math.pi * area / perimeter ** 2
    except ZeroDivisionError:
        return math.nan


[docs]def polsby_popper(partition): """Computes Polsby-Popper compactness scores for each district in the partition. """ return { part: compute_polsby_popper( partition["area"][part], partition["perimeter"][part] ) for part in partition.parts }