Skip to main content

Finding valeriepieris circles

Project description

valeriepieris

vpmap

Find valeriepieris circles. There are the smallest circles containing at least a fraction f of the data. See the paper for much more details on how this works and what you can do with a valeriepieris circle.

The code expects 2d-numpy arrays from e.g. SEDAC.

Basic use

import numpy as np
input_data = np.loadtxt("gpw_v4_population_count_rev11_2020_1_deg.asc", skiprows=6 )
input_data[ input_data < 0] = 0

Then call

from valeriepieris import valeriepieris
data_bounds = [ -90,90, -180,180 ] ##[lowest lat, highest lat, lowest lon, highest lon]
target_fracs = [0.25, 0.5, 1]
rmin, smin, best_latlon, data, new_bounds  = valeriepieris(input_data,  data_bounds, target_fracs)		

This computes the centre and radius for all the target fractions

for i,f in enumerate(target_fracs):
	print("At f={}, radius={}, population={}, centre={}".format( f, rmin[i], smin[i], best_latlon[i] ) )

gives

At f=0.25, radius=1880.446017450536, population=1997830287.9875035, centre=[(25.5, 88.5)]
At f=0.5, radius=3376.532684670633, population=3985134876.8947124, centre=[(28.5, 100.5)]
At f=1, radius=14979.863821630814, population=7969444594.980903, centre=[(75.5, -112.5)]

note that each centre is a list, usually of one element, but for very small f there can be multiple centres.

Focussing on a specific area

europe_bounds = [ 34.1,80, -25,34.9 ] 
target_fracs = [0.5]
rmin, smin, best_latlon, europe_data, europe_data_bounds  = valeriepieris(input_data,  data_bounds, 0.5, target_bounds=europe_bounds)		

for i,f in enumerate(target_fracs):
  print("At f={}, radius={}, population={}, centre={}".format( f, rmin[i], smin[i], best_latlon[i] ) )
print("data in ", europe_data_bounds, "has shape", europe_data.shape)
At f=0.5, radius=946.0320718882176, population=371822374.10794944, centre=[(49.5, 9.5)]
data in  [34.1, 80, -25, 34.9] has shape (47, 61)

If the target_bounds argument is given, only data within that area will be considered. The data that was used in the calculation and its boundary (snapped to the input grid) is returned.

Focussing the search

If you think you know where the centre is, or you want the smallest circle containing a fraction f of the data, centered within a certain area do the following

data_bounds = [ -90,90, -180,180 ] ##[lowest lat, highest lat, lowest lon, highest lon]
target_fracs = [0.5]
search_bounds = [ 24,50, -125, -66 ] #~continental US
rmin, smin, best_latlon, data, new_bounds  = valeriepieris(input_data,  data_bounds, target_fracs, search_bounds=search_bounds)		

for i,f in enumerate(target_fracs):
	print("At f={}, radius={}, population={}, centre={}".format( f, rmin[i], smin[i], best_latlon[i] ) )
At f=0.5, radius=10344.885492078058, population=3987443544.209256, centre=[(50.5, -66.5)]

Plotting the circles

Remember the earth is round, so don't just draw a circle on a flat map! See test.py for code to make the plot at the top

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

valeriepieris-0.1.16.tar.gz (267.4 kB view details)

Uploaded Source

Built Distribution

valeriepieris-0.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (901.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

File details

Details for the file valeriepieris-0.1.16.tar.gz.

File metadata

  • Download URL: valeriepieris-0.1.16.tar.gz
  • Upload date:
  • Size: 267.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for valeriepieris-0.1.16.tar.gz
Algorithm Hash digest
SHA256 fe32cbf6696c03a7cb826d6165b170f1c11655d27d35ae21f4c0eac1b0718b6a
MD5 463393c31acb436d48aac8c4b7104e3f
BLAKE2b-256 2d76816f5bc76404361f2bd62e72c053389a322c16a9957dcc9c9398d849987b

See more details on using hashes here.

File details

Details for the file valeriepieris-0.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for valeriepieris-0.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee50b9e9d3dd1af2ced560aa90d8141575fd1b29cb3dd26ac5f490b5ac3ba0ac
MD5 f4f011f0b280f5f5387fc8dc2f870f48
BLAKE2b-256 ce6f762ac7baf5d25cf1ef438ca8607d0d7d2fbdc534a5e6d41996266edd76e3

See more details on using hashes here.

Supported by

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