Skip to main content

Implementation of Dijkstra's Shortest Path algorithm on 3D images.

Project description

Build Status PyPI version

dijkstra3d

Dijkstra's Shortest Path variants for 6, 18, and 26-connected 3D Image Volumes or 4 and 8-connected 2D images.

import dijkstra3d
import numpy as np

field = np.ones((512, 512, 512), dtype=np.int32)
source = (0,0,0)
target = (511, 511, 511)

# path is an [N,3] numpy array i.e. a list of x,y,z coordinates
# terminates early, default is 26 connected
path = dijkstra3d.dijkstra(field, source, target, connectivity=26) 
path = dijkstra3d.dijkstra(field, source, target, bidirectional=True) # 2x memory usage, faster

# Use distance from target as a heuristic (A* search)
# Does nothing if bidirectional=True (it's just not implemented)
path = dijkstra3d.dijkstra(field, source, target, compass=True) 

parents = dijkstra3d.parental_field(field, source=(0,0,0), connectivity=6) # default is 26 connected
path = dijkstra3d.path_from_parents(parents, target=(511, 511, 511))
print(path.shape)

# Given a boolean label "field" and a source vertex, compute 
# the anisotropic euclidean distance from the source to all labeled vertices.
dist_field = dijkstra3d.euclidean_distance_field(field, source=(0,0,0), anisotropy=(4,4,40))

# To make the EDF go faster add the free_space_radius parameter. It's only
# safe to use if you know that some distance around the source point
# is unobstructed space. For that region, we use an equation instead
# of dijkstra's algorithm. Hybrid algorithm! free_space_radius is a physical
# distance, meaning you must account for anisotropy in setting it.
dist_field = dijkstra3d.euclidean_distance_field(field, source=(0,0,0), anisotropy=(4,4,40), free_space_radius=300) 

# Given a numerical field, for each directed edge from adjacent voxels A and B, 
# use B as the edge weight. In this fashion, compute the distance from a source 
# point for all finite voxels.
dist_field = dijkstra3d.distance_field(field, source=(0,0,0))

Perform dijkstra's shortest path algorithm on a 3D image grid. Vertices are voxels and edges are the nearest neighbors. For 6 connected images, these are the faces of the voxel (L1: manhattan distance), 18 is faces and edges, 26 is faces, edges, and corners (L: chebyshev distance). For given input voxels A and B, the edge weight from A to B is B and from B to A is A. All weights must be finite and non-negative (incl. negative zero).

What Problem does this Package Solve?

This package was developed in the course of exploring TEASAR skeletonization of 3D image volumes (now available in Kimimaro). Other commonly available packages implementing Dijkstra used matricies or object graphs as their underlying implementation. In either case, these generic graph packages necessitate explicitly creating the graph's edges and vertices, which turned out to be a significant computational cost compared with the search time. Additionally, some implementations required memory quadratic in the number of vertices (e.g. an NxN matrix for N nodes) which becomes prohibitive for large arrays. In some cases, a compressed sparse matrix representation was used to remain within memory limits.

Neither of graph construction nor quadratic memory pressure are necessary for an image analysis application. The edges between voxels (3D pixels) are regular and implicit in the rectangular structure of the image. Additionally, the cost of each edge can be stored a single time instead of 26 times in contiguous uncompressed memory regions for faster performance.

C++ Use

#include <vector>
#include "dijkstra3d.hpp"

// 3d array represented as 1d array
float* labels = new float[512*512*512](); 

// x + sx * y + sx * sy * z
int source = 0 + 512 * 5 + 512 * 512 * 3; // coordinate <0, 5, 3>
int target = 128 + 512 * 128 + 512 * 512 * 128; // coordinate <128, 128, 128>

vector<unsigned int> path = dijkstra::dijkstra3d<float>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512,
  source, target, /*connectivity=*/26 // 26 is default
);

vector<unsigned int> path = dijkstra::bidirectional_dijkstra3d<float>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512,
  source, target, /*connectivity=*/26 // 26 is default
);

// A* search using a distance to target heuristic
vector<unsigned int> path = dijkstra::compass_guided_dijkstra3d<float>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512,
  source, target, /*connectivity=*/26 // 26 is default
);

uint32_t* parents = dijkstra::parental_field3d<float>(
  labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  source, /*connectivity=*/26 // 26 is default
);
vector<unsigned int> path = dijkstra::query_shortest_path(parents, target);


float* field = dijkstra::euclidean_distance_field3d<float>(
  labels, 
  /*sx=*/512, /*sy=*/512, /*sz=*/512, 
  /*wx=*/4, /*wy=*/4, /*wz=*/40, 
  source, /*free_space_radius=*/0 // set to > 0 to switch on
);

float* field = dijkstra::distance_field3d<float>(labels, /*sx=*/512, /*sy=*/512, /*sz=*/512, source);

Python pip Binary Installation

pip install dijkstra3d

Python pip Source Installation

Requires a C++ compiler.

pip install numpy
pip install dijkstra3d

Python Direct Installation

Requires a C++ compiler.

git clone https://github.com/seung-lab/dijkstra3d.git
cd dijkstra3d
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
python setup.py develop

Performance

I ran three algorithms on a field of ones from the bottom left corner to the top right corner of a 512x512x512 int8 image using a 3.7 GHz Intel i7-4920K CPU. Unidirectional search takes about 42 seconds (3.2 MVx/sec) with a maximum memory usage of about 1300 MB. In the unidirectional case, this test forces the algorithm to process nearly all of the volume (dijkstra aborts early when the target is found). In the bidirectional case, the volume is processed in about 11.8 seconds (11.3 MVx/sec) with a peak memory usage of about 2300 MB. The A* version processes the volume in 0.5 seconds (268.4 MVx/sec) with an identical memory profile to unidirectional search. A* works very well in this simple case, but may not be superior in all configurations.

Theoretical unidirectional memory allocation breakdown: 128 MB source image, 512 MB distance field, 512 MB parents field (1152 MB). Theoretical bidirectional memory allocation breakdown: 128 MB source image, 2x 512 distance field, 2x 512 MB parental field (2176 MB).

Fig. 1: A benchmark of dijkstra.dijkstra run on a 512<sup>3</sup> voxel field of ones from bottom left source to top right target. (black) unidirectional search (blue) bidirectional search (red) A* search aka compass=True.
Fig. 1: A benchmark of dijkstra.dijkstra run on a 5123 voxel field of ones from bottom left source to top right target. (black) unidirectional search (blue) bidirectional search (red) A* search aka compass=True.

import numpy as np
import time
import dijkstra3d

field = np.ones((512,512,512), order='F', dtype=np.int8)
source = (0,0,0)
target = (511,511,511)

path = dijkstra3d.dijkstra(field, source, target) # black line
path = dijkstra3d.dijkstra(field, source, target, bidirectional=True) # blue line
path = dijkstra3d.dijkstra(field, source, target, compass=True) # red line

Fig. 2: A benchmark of dijkstra.dijkstra run on a 50<sup>3</sup> voxel field of random integers of increasing variation from random source to random target. (blue/squares) unidirectional search (yellow/triangles) bidirectional search (red/diamonds) A* search aka .compass=True.
Fig. 2: A benchmark of dijkstra.dijkstra run on a 503 voxel field of random integers of increasing variation from random source to random target. (blue/squares) unidirectional search (yellow/triangles) bidirectional search (red/diamonds) A* search aka compass=True.

import numpy as np
import time
import dijkstra3d

N = 250
sx, sy, sz = 50, 50, 50

def trial(bi, compass):
  for n in range(0, 100, 1):
    accum = 0
    for i in range(N):
      if n > 0:
        values = np.random.randint(1,n+1, size=(sx,sy,sz))
      else:
        values = np.ones((sx,sy,sz))
      values = np.asfortranarray(values)
      start = np.random.randint(0,min(sx,sy,sz), size=(3,))
      target = np.random.randint(0,min(sx,sy,sz), size=(3,))  

      s = time.time()
      path_orig = dijkstra3d.dijkstra(values, start, target, bidirectional=bi, compass=compass)
      accum += (time.time() - s)

    MVx_per_sec = N * sx * sy * sz / accum / 1000000
    print(n, ',', '%.3f' % MVx_per_sec)

print("Unidirectional")
trial(False, False)
print("Bidirectional")
trial(True, False)
print("Compass")
trial(False, True)

What is that pairing_heap.hpp?

Early on, I anticipated using decrease key in my heap and implemented a pairing heap, which is supposed to be an improvement on the Fibbonacci heap. However, I ended up not using decrease key, and the STL priority queue ended up being faster. If you need a pairing heap outside of boost, check it out.

References

  1. E. W. Dijkstra. "A Note on Two Problems in Connexion with Graphs" Numerische Mathematik 1. pp. 269-271. (1959)
  2. E. W. Dijkstra. "Go To Statement Considered Harmful". Communications of the ACM. Vol. 11, No. 3, pp. 147-148. (1968)
  3. Pohl, Ira. "Bi-directional Search", in Meltzer, Bernard; Michie, Donald (eds.), Machine Intelligence, 6, Edinburgh University Press, pp. 127-140. (1971)

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

dijkstra3d-1.7.0.tar.gz (294.9 kB view details)

Uploaded Source

Built Distributions

dijkstra3d-1.7.0-cp39-cp39-win_amd64.whl (172.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

dijkstra3d-1.7.0-cp39-cp39-win32.whl (167.6 kB view details)

Uploaded CPython 3.9 Windows x86

dijkstra3d-1.7.0-cp39-cp39-manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9

dijkstra3d-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl (267.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

dijkstra3d-1.7.0-cp38-cp38-win_amd64.whl (173.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

dijkstra3d-1.7.0-cp38-cp38-win32.whl (152.0 kB view details)

Uploaded CPython 3.8 Windows x86

dijkstra3d-1.7.0-cp38-cp38-manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.8

dijkstra3d-1.7.0-cp38-cp38-manylinux2010_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

dijkstra3d-1.7.0-cp38-cp38-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8

dijkstra3d-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl (263.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

dijkstra3d-1.7.0-cp37-cp37m-win_amd64.whl (168.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

dijkstra3d-1.7.0-cp37-cp37m-win32.whl (148.6 kB view details)

Uploaded CPython 3.7m Windows x86

dijkstra3d-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.7m

dijkstra3d-1.7.0-cp37-cp37m-manylinux2010_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

dijkstra3d-1.7.0-cp37-cp37m-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7m

dijkstra3d-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl (263.0 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

dijkstra3d-1.7.0-cp36-cp36m-win_amd64.whl (168.1 kB view details)

Uploaded CPython 3.6m Windows x86-64

dijkstra3d-1.7.0-cp36-cp36m-win32.whl (148.6 kB view details)

Uploaded CPython 3.6m Windows x86

dijkstra3d-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.6m

dijkstra3d-1.7.0-cp36-cp36m-manylinux2010_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

dijkstra3d-1.7.0-cp36-cp36m-manylinux1_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.6m

dijkstra3d-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl (262.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file dijkstra3d-1.7.0.tar.gz.

File metadata

  • Download URL: dijkstra3d-1.7.0.tar.gz
  • Upload date:
  • Size: 294.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0.tar.gz
Algorithm Hash digest
SHA256 80040d77b9aecbb52cfa55a1cf10a965f9ea8455ee135b00ddd7437366bc8b4e
MD5 0eb1184af11ffbfdab5b6d3729740e3c
BLAKE2b-256 5a9117d7b892407deaee19eb45099cfd1289d23dc8e835bdc72fa902da06517b

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 172.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1ff6aef265a172495fdc9e35d97b4f95375085450134a6d108700849d73ae971
MD5 3d2e51100e74c99072d9c8d6d9f082c0
BLAKE2b-256 0dfdf70f95395f56f70dc688c4d72e7255c0594ee4a596cbdec8a2314c3dfe87

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 167.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 d7ae4963ae3ac6133633d3c87052d9f06c94970aa5736d0657739e9f8ce4889f
MD5 d49be691d5250266fe00f63abe26d437
BLAKE2b-256 787f9f76eb692b3b5b7b2d4e4d5c9152dfb9c214ede7c0c48bb488f3c326b204

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b59c6d2bcf552270050b4d4a61c620d04e726dcd6e013d954458d75a994347c6
MD5 e9f5d27513fc96edb01c91b1aa246d90
BLAKE2b-256 34df69b2a0b15ad3409e1d077276c4e9fcc24e3c4fb52d9575d2da1e197f9f3b

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 267.4 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c6960b0aaa914d0f9fd52d01ccc0ac869e574b5fa8f72d5407e0d9480b67d727
MD5 44f31439dcc36ebb5fc4658bdcf979ae
BLAKE2b-256 a652774c9ff352e888a09de5a478156568d2984c53a59f440d7b2bc80563ed12

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 173.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1ee0c3de5c0f040f18911c8669f6af8e2aef74d51515f86764c1daca1bb7d150
MD5 eb24a7e9f79e5e03e40bade458fd76af
BLAKE2b-256 8f633538e3f56e4739edb11917bfa5898299d67535c1238d4d515b16a4084fd4

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 152.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 594bb0664b4c5578bca9a0f153fb95610c5d13385757b278f4d6b1e4a7aa3203
MD5 acffff3f80a69d28da45fe767f122178
BLAKE2b-256 25433aa17a041f2917d0302fa4ce0a17de1dc5c075e50e018b74040ef6a23e18

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb3a4b9969e2b2dcfa4f6f1bcfe2326e449df5c5f35b35e39f6a8e75fc2f3b3f
MD5 d359982415a83c23a30056816942a74c
BLAKE2b-256 edb340559b628087bb66f913efcf4a9b8195554061f14de3d5d61b83b3182882

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 33c6919695eaaac6f14589b844828dd0c9cea023ca8d71841b2a7397fc3bd268
MD5 7bb9d0975d7fd9fd9582a76c77adc89e
BLAKE2b-256 921af311827e0821f8d211e78566a2b8fe6eaf5bd7353cd99be1d68409b2cf0f

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b5fcda9890880983dd23a98501d2e862cd7623c6a65f9ca8621d5488dd2ad8dd
MD5 1d3703776ba4aa009d54f1519331ff66
BLAKE2b-256 99f68d195be08e47d24a19acf8520cdf0b949acee5d01a064f4d0d99fa59c88f

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 263.3 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9fc003461a41d8315f9a601e428f5c3b8ddb2c158e092a1fda173f4c41903103
MD5 0d2b765d5cf03fa7ff38970b22ce47ac
BLAKE2b-256 8a77b4d08ac9b6108fd73930b269fccfaca00ebd8ee3a4c0f51b6580b0c66b4d

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 168.2 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6fd429cc0439dc5ff3ddd959d3097f61eecd9f6136e68511953118f86ac07a5e
MD5 de579ee020f247dc21677d85ef16cba7
BLAKE2b-256 0645ba3c47ec4b7b45e2c71e7d63454f594e6090e2bd82f4a0e8f5cb8c4f9014

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-win32.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 148.6 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 efb1280927647755f56445cf9f6d18674d2fe4b0cfa8b313edc4a571c52c22ef
MD5 fad284bf6e1a5f32e74586b075d44bd6
BLAKE2b-256 06c46b0e8da1c9e5427231bdfe14e686a743eb9f04715f4a7da51b7339eacfe0

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f632204227a4a7ec9e3d158335cd9c2e98baff7ff42a45a4e0f10787cad92b9d
MD5 24aa2cb58db6a23c3933c4066dda1adc
BLAKE2b-256 1123a04856aac1ab0da19bc4de023341446dd69a3a3debbbf2b063941e9c4b47

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7e66467111f71676c1454cf956f4723ef200347f0556b6c5ac5b5a7c44a3de5d
MD5 42f7185f98cb927098196ea7f1267400
BLAKE2b-256 515c317ee1312925f0e665fb59a5033a92071dd23de28761c6f2819d22ea6787

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7fedc39856ba695c9199813d98b5d7b09c9f1cf9965e2d6144ce43e7e87e8aa9
MD5 0873983dd8df0d415ccbc57c2138cece
BLAKE2b-256 b8bf0fa1352d4a32b12d94674facaf1fa43d7470534fe7ae35b5935fda8f8e7d

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 263.0 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5165c3330a332d8fd514ed8306937b5d5fadabe0cca7614bdcb5672d20fc74d2
MD5 811533ead4a1b3d32e7532c4a5441520
BLAKE2b-256 a499b52e40d055ceb6353a9e7f128d8cd4f00c086d599a7511c7b3fe498d73be

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 168.1 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 8f6ea4487a3463889cf9b2ef750cdeda56bbd241b809009ea412a8a752890a89
MD5 abf856203e974278687ce818467f449a
BLAKE2b-256 f3d0dd350e69fdd1f36354db0cdf6334da7969aa9026ed846a644ad2cae73bd0

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-win32.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 148.6 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 70ee89cd5ec3320cc20f6e1bd9781e12192d5d363d765ec3730b64680b4b5eb3
MD5 b035a0558f50f66307d2a9b2ea727498
BLAKE2b-256 3ecc4ba6457c0086cbbd9a6d6719eb678b949acbb491c2d9bc2f9448676d1de0

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb596878e86fc179ae9e9cf96b4f171f48c25e27c249cf19deef2a9c96f47b55
MD5 d72fd2a0c7e65ffd7118964c8608cf36
BLAKE2b-256 4480df867f4a556dc12c1a6d07c66a0bb3856e920ed9adf64eb2521defecde23

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 68b7f9d94213e0751aeeb67def70dddf88f277807d9689f841a15a4230d1d961
MD5 2c7987b9e4e48eb438c12e93e32df8c7
BLAKE2b-256 c46a8f9731f160196364a432cba505860de544f10f4982cb4e4666650689053e

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 28cec09ae97ff137e99a4741c1a2de53090a3da249aeb89820f8e602355eeb46
MD5 e2a5ee3bfc379aff595bdc80bcdc6dbe
BLAKE2b-256 e2257c920cf744fdd006de487c327946c5ebfe1e907f9710e5acbf4d34c67b04

See more details on using hashes here.

Provenance

File details

Details for the file dijkstra3d-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: dijkstra3d-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 262.8 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for dijkstra3d-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c4599bc3d30406bd14265d2e6f9b5bbc75b19afd6fdeb3739f308825ceb5fc27
MD5 e23d99876fbc7a3006d89930b6ba1df4
BLAKE2b-256 821d075dc6bef1900c43c74c82b67ee6fc02b21c26ffc77a833e521861a8674b

See more details on using hashes here.

Provenance

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