Skip to main content

Distances in python

Project description

apartogether

Version python downloads Binder

codecov Lint workflow

Space with a (pseudo-)metric allows us to perform distances. This library offers several functionalities in this regard;

How to install

We run the command on desired installation environment:

pip install spycio

Minimal example

#!/usr/bin/env python
from numpy import pi, Inf

from spycio import distance, travelTime
from spycio.utils import spherToGeo

def format_distance_without_configuration(A, B, speed, method):
    string_template='A:{origin}, B:{target}, speed:{speed}, method:{on}, distance:{d}, eta:{eta}'
    
    dist=distance(A, B, method)
    duration=travelTime(speed, A, B, method)
    
    return string_template.format(origin=A,target=B,speed=speed, on=method,d=dist,eta=duration)

def format_distance(A, B, speed, method, config):
    string_template='A:{origin}, B:{target}, speed:{speed}, method:{on}, config:{setup}, distance:{d}, eta:{eta}'
    
    dist=distance(A, B, method, config)
    duration=travelTime(speed, A, B, method, config)
    
    return string_template.format(origin=A,target=B, speed=speed, on=method,setup=config, d=dist, eta=duration)


# Default distance calculation: Euclidean
A=[0, 0]
B=[1, 1]
C=[2, 2]
D=[pi / 2, 0]

speed=1

print('Euclidean distance: '+str(distance(A, B)))

print('\n')

configurations=[
    (B, C, speed, "manhattan"),
    (B, C, speed, "euclidean"),
    (B, C, speed, "max"),
    (B, C, speed, "chebyshev"),
    (B, C, speed, "manhattan"),
    (B, C, speed, "cityblock"),
    (B, C, speed, "cosine"),
    (B, C, speed, "braycurtis"),
    (B, C, speed, "canberra")
]

print('Format distance without configuration: ')
for origin, target, speed, method in configurations:
    print(format_distance_without_configuration(origin, target, speed, method))

print('\n')

configurations=[
    (B, C, speed, "pnorm", { "exponent": 2 }),
    (B, C, speed, "pnorm", { "exponent": 3 }),
    (B, C, speed, "pnorm", { "exponent": 4 }),
    (B, C, speed, "pnorm", { "exponent": Inf }),
    (A, D, speed, "sphere", { "radius": 1 }),
    (spherToGeo(A), spherToGeo(D), speed, "geographical", { "radius": 1 })
]

print('Format distance with configuration: ')

for origin, target, speed, method, config in configurations:
    print(format_distance(origin, target, speed, method, config))

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

spycio-0.2.8.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

spycio-0.2.8-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file spycio-0.2.8.tar.gz.

File metadata

  • Download URL: spycio-0.2.8.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.8.10 Linux/5.15.0-69-generic

File hashes

Hashes for spycio-0.2.8.tar.gz
Algorithm Hash digest
SHA256 20d57aca6700c04c882999fc86939393b0fe958d608b1c35346abcd0aca1aff7
MD5 ab1f554da9cb2aa9272294f6a3f9c707
BLAKE2b-256 4e920f9e7bdd0336057b8129aef715c1e62d086f07c47f1abed53044665d9e53

See more details on using hashes here.

File details

Details for the file spycio-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: spycio-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.8.10 Linux/5.15.0-69-generic

File hashes

Hashes for spycio-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 86b0af5638c9b708a4a01c0e2509ffac99ea523aee02c940e899a59c5c817bb4
MD5 4d3cecf98833cdd8c39f5cbf2fae8ac1
BLAKE2b-256 0572115d5a43f0198b5371a8e411738b919118d2d5ef2dee1381bc779619f318

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