gdist


Namegdist JSON
Version 2.1.0 PyPI version JSON
download
home_pagehttps://github.com/the-virtual-brain/tvb-gdist
SummaryCompute geodesic distances
upload_time2022-12-08 20:05:48
maintainer
docs_urlNone
authorDanil Kirsanov, Gaurav Malhotra and Stuart Knock
requires_python
licenseGPL v3
keywords gdist geodesic distance geo tvb
VCS
bugtrack_url
requirements cython numpy scipy
Travis-CI
coveralls test coverage
            =================
Geodesic Library 
=================

.. image:: https://travis-ci.com/the-virtual-brain/tvb-gdist.svg?branch=trunk
    :target: https://travis-ci.com/the-virtual-brain/tvb-gdist

The **tvb-gdist** module is a Cython interface to a C++ library
(https://code.google.com/archive/p/geodesic/) for computing
geodesic distance which is the length of shortest line between two
vertices on a triangulated mesh in three dimensions, such that the line
lies on the surface.

The algorithm is due Mitchell, Mount and Papadimitriou, 1987; the implementation
is due to Danil Kirsanov and the Cython interface to Gaurav Malhotra and
Stuart Knock (TVB Team).

Original library (published under MIT license):
https://code.google.com/archive/p/geodesic/

We added a Python wrapped and made small fixes to the original library, to make
it compatible with Cython.

To install this, either run ``pip install tvb-gdist`` or download
sources from GitHub and run ``python setup.py install`` in current folder.

You can also use pip to directly install from GitHub: 
``pip install git+https://github.com/the-virtual-brain/tvb-gdist``.

Basic test could be::

    python
    import gdist


Python 3, Cython, and a C++ compiler are required unless the Pypi whl files are
compatible with your system.

APIs
====

The module exposes 2 APIs.

**gdist.compute_gdist(numpy.ndarray[numpy.float64_t, ndim=2] vertices,
numpy.ndarray[numpy.int32_t, ndim=2] triangles,
numpy.ndarray[numpy.int32_t, ndim=1] source_indices = None,
numpy.ndarray[numpy.int32_t, ndim=1] target_indices = None,
double max_distance = GEODESIC_INF,
bool is_one_indexed = False)**

    This is the wrapper function for computing geodesic distance between a
    set of sources and targets on a mesh surface.

    Args:
        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z
            coordinates of the mesh's vertices.
        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of
            the mesh as index triplets into vertices.
        source_indices (numpy.ndarray[numpy.int32_t, ndim=1]): Index of the
            source on the mesh.
        target_indices (numpy.ndarray[numpy.int32_t, ndim=1]): Index of the
            targets on the mesh.
        max_distance (double): Propagation algorithm stops after reaching the
            certain distance from the source.
        is_one_indexed (bool): defines if the index of the triangles data is
            one-indexed.

    Returns:
        numpy.ndarray((len(target_indices), ), dtype=numpy.float64): Specifying
            the shortest distance to the target vertices from the nearest source
            vertex on the mesh. If no target_indices are provided, all vertices
            of the mesh are considered as targets, however, in this case,
            specifying max_distance will limit the targets to those vertices
            within max_distance of a source. If no source_indices are provided,
            it defaults to 0.
    
    NOTE: This is the function to use when specifying localised stimuli and
    parameter variations. For efficiently using the whole mesh as sources, such
    as is required to represent local connectivity within the cortex, see the 
    local_gdist_matrix() function.
    
    Basic usage then looks like::
        >>> import numpy
        >>> temp = numpy.loadtxt("data/flat_triangular_mesh.txt", skiprows=1)
        >>> vertices = temp[0:121].astype(numpy.float64)
        >>> triangles = temp[121:321].astype(numpy.int32)
        >>> src = numpy.array([1], dtype=numpy.int32)
        >>> trg = numpy.array([2], dtype=numpy.int32)
        >>> import gdist
        >>> gdist.compute_gdist(vertices, triangles, source_indices=src, target_indices=trg)
         array([0.2])


**gdist.local_gdist_matrix(numpy.ndarray[numpy.float64_t, ndim=2] vertices,
numpy.ndarray[numpy.int32_t, ndim=2] triangles,
double max_distance = GEODESIC_INF,
bool is_one_indexed = False)**

    This is the wrapper function for computing geodesic distance from every 
    vertex on the surface to all those within a distance ``max_distance`` of 
    them.

    Args:
        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z
            coordinates of the mesh's vertices.
        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of
            the mesh as index triplets into vertices.
        max_distance (double): Propagation algorithm stops after reaching the
            certain distance from the source.
        is_one_indexed (bool): defines if the index of the triangles data is
            one-indexed.
        
    Returns:
        scipy.sparse.csc_matrix((N, N), dtype=numpy.float64): where N
        is the number of vertices, specifying the shortest distance from all 
        vertices to all the vertices within max_distance.
    
    Basic usage then looks like::
        >>> import numpy
        >>> temp = numpy.loadtxt("data/flat_triangular_mesh.txt", skiprows=1)
        >>> import gdist
        >>> vertices = temp[0:121].astype(numpy.float64)
        >>> triangles = temp[121:321].astype(numpy.int32)
        >>> gdist.local_gdist_matrix(vertices, triangles, max_distance=1.0)
         <121x121 sparse matrix of type '<type 'numpy.float64'>'
             with 6232 stored elements in Compressed Sparse Column format>

    Runtime and guesstimated memory usage as a function of max_distance for the
    reg_13 cortical surface mesh, ie containing 2**13 vertices per hemisphere.
    ::
    [[10, 20, 30, 40,  50,  60,  70,  80,  90, 100], # mm
    [19, 28, 49, 81, 125, 181, 248, 331, 422, 522], # s
    [ 3, 13, 30, 56,  89, 129, 177, 232, 292, 358]] # MB]
         
    where memory is a min-guestimate given by: mem_req = nnz * 8 / 1024 / 1024.


**distance_matrix_of_selected_points(numpy.ndarray[numpy.float64_t, ndim=2] vertices,
numpy.ndarray[numpy.int32_t, ndim=2] triangles,
numpy.ndarray[numpy.int32_t, ndim=1] points,
double max_distance = GEODESIC_INF,
bool is_one_indexed = False)**

    Function for calculating pairwise geodesic distance for a set of points
    within a distance ``max_distance`` of them.

    Args:
        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z
            coordinates of the mesh's vertices.
        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of
            the mesh as index triplets into vertices.
        points (numpy.ndarray[numpy.int32_t, ndim=1]): Indices of the points
            among which the pairwise distances are to be calculated.
        max_distance (double): Propagation algorithm stops after reaching the
            certain distance from the source.
        is_one_indexed (bool): defines if the index of the triangles data is
            one-indexed.

    Returns:
        scipy.sparse.csc_matrix((N, N), dtype=numpy.float64): where N
            is the number of vertices, specifying the pairwise distances among
            the given points.
    
    Basic usage then looks like::
        >>> import numpy
        >>> temp = numpy.loadtxt("data/flat_triangular_mesh.txt", skiprows=1)
        >>> vertices = temp[0:121].astype(numpy.float64)
        >>> triangles = temp[121:321].astype(numpy.int32)
        >>> points = numpy.array([2, 5, 10], dtype=numpy.int32)
        >>> import gdist
        >>> gdist.distance_matrix_of_selected_points(
                vertices, triangles, points
            )
         <121x121 sparse matrix of type '<class 'numpy.float64'>'
            with 6 stored elements in Compressed Sparse Column format>

Notes
=====

* The obtained matrix will be almost symmetrical due to floating point
  imprecision.

* In order for the algorithm to work the mesh must not be numbered incorrectly
  or disconnected or of somehow degenerate.
  
Acknowledgments
===============
This project has received funding from the European Union’s Horizon 2020 
Framework Programme for Research and Innovation under the Specific Grant 
Agreement No. 826421 - VirtualBrainCloud.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/the-virtual-brain/tvb-gdist",
    "name": "gdist",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "gdist geodesic distance geo tvb",
    "author": "Danil Kirsanov, Gaurav Malhotra and Stuart Knock",
    "author_email": "tvb.admin@thevirtualbrain.org",
    "download_url": "https://files.pythonhosted.org/packages/2b/91/3e56e4c14b99dffcf08bf4ff7afaff31fc3214d033379bb0f6ab055bdad1/gdist-2.1.0.tar.gz",
    "platform": null,
    "description": "=================\nGeodesic Library \n=================\n\n.. image:: https://travis-ci.com/the-virtual-brain/tvb-gdist.svg?branch=trunk\n    :target: https://travis-ci.com/the-virtual-brain/tvb-gdist\n\nThe **tvb-gdist** module is a Cython interface to a C++ library\n(https://code.google.com/archive/p/geodesic/) for computing\ngeodesic distance which is the length of shortest line between two\nvertices on a triangulated mesh in three dimensions, such that the line\nlies on the surface.\n\nThe algorithm is due Mitchell, Mount and Papadimitriou, 1987; the implementation\nis due to Danil Kirsanov and the Cython interface to Gaurav Malhotra and\nStuart Knock (TVB Team).\n\nOriginal library (published under MIT license):\nhttps://code.google.com/archive/p/geodesic/\n\nWe added a Python wrapped and made small fixes to the original library, to make\nit compatible with Cython.\n\nTo install this, either run ``pip install tvb-gdist`` or download\nsources from GitHub and run ``python setup.py install`` in current folder.\n\nYou can also use pip to directly install from GitHub: \n``pip install git+https://github.com/the-virtual-brain/tvb-gdist``.\n\nBasic test could be::\n\n    python\n    import gdist\n\n\nPython 3, Cython, and a C++ compiler are required unless the Pypi whl files are\ncompatible with your system.\n\nAPIs\n====\n\nThe module exposes 2 APIs.\n\n**gdist.compute_gdist(numpy.ndarray[numpy.float64_t, ndim=2] vertices,\nnumpy.ndarray[numpy.int32_t, ndim=2] triangles,\nnumpy.ndarray[numpy.int32_t, ndim=1] source_indices = None,\nnumpy.ndarray[numpy.int32_t, ndim=1] target_indices = None,\ndouble max_distance = GEODESIC_INF,\nbool is_one_indexed = False)**\n\n    This is the wrapper function for computing geodesic distance between a\n    set of sources and targets on a mesh surface.\n\n    Args:\n        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z\n            coordinates of the mesh's vertices.\n        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of\n            the mesh as index triplets into vertices.\n        source_indices (numpy.ndarray[numpy.int32_t, ndim=1]): Index of the\n            source on the mesh.\n        target_indices (numpy.ndarray[numpy.int32_t, ndim=1]): Index of the\n            targets on the mesh.\n        max_distance (double): Propagation algorithm stops after reaching the\n            certain distance from the source.\n        is_one_indexed (bool): defines if the index of the triangles data is\n            one-indexed.\n\n    Returns:\n        numpy.ndarray((len(target_indices), ), dtype=numpy.float64): Specifying\n            the shortest distance to the target vertices from the nearest source\n            vertex on the mesh. If no target_indices are provided, all vertices\n            of the mesh are considered as targets, however, in this case,\n            specifying max_distance will limit the targets to those vertices\n            within max_distance of a source. If no source_indices are provided,\n            it defaults to 0.\n    \n    NOTE: This is the function to use when specifying localised stimuli and\n    parameter variations. For efficiently using the whole mesh as sources, such\n    as is required to represent local connectivity within the cortex, see the \n    local_gdist_matrix() function.\n    \n    Basic usage then looks like::\n        >>> import numpy\n        >>> temp = numpy.loadtxt(\"data/flat_triangular_mesh.txt\", skiprows=1)\n        >>> vertices = temp[0:121].astype(numpy.float64)\n        >>> triangles = temp[121:321].astype(numpy.int32)\n        >>> src = numpy.array([1], dtype=numpy.int32)\n        >>> trg = numpy.array([2], dtype=numpy.int32)\n        >>> import gdist\n        >>> gdist.compute_gdist(vertices, triangles, source_indices=src, target_indices=trg)\n         array([0.2])\n\n\n**gdist.local_gdist_matrix(numpy.ndarray[numpy.float64_t, ndim=2] vertices,\nnumpy.ndarray[numpy.int32_t, ndim=2] triangles,\ndouble max_distance = GEODESIC_INF,\nbool is_one_indexed = False)**\n\n    This is the wrapper function for computing geodesic distance from every \n    vertex on the surface to all those within a distance ``max_distance`` of \n    them.\n\n    Args:\n        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z\n            coordinates of the mesh's vertices.\n        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of\n            the mesh as index triplets into vertices.\n        max_distance (double): Propagation algorithm stops after reaching the\n            certain distance from the source.\n        is_one_indexed (bool): defines if the index of the triangles data is\n            one-indexed.\n        \n    Returns:\n        scipy.sparse.csc_matrix((N, N), dtype=numpy.float64): where N\n        is the number of vertices, specifying the shortest distance from all \n        vertices to all the vertices within max_distance.\n    \n    Basic usage then looks like::\n        >>> import numpy\n        >>> temp = numpy.loadtxt(\"data/flat_triangular_mesh.txt\", skiprows=1)\n        >>> import gdist\n        >>> vertices = temp[0:121].astype(numpy.float64)\n        >>> triangles = temp[121:321].astype(numpy.int32)\n        >>> gdist.local_gdist_matrix(vertices, triangles, max_distance=1.0)\n         <121x121 sparse matrix of type '<type 'numpy.float64'>'\n             with 6232 stored elements in Compressed Sparse Column format>\n\n    Runtime and guesstimated memory usage as a function of max_distance for the\n    reg_13 cortical surface mesh, ie containing 2**13 vertices per hemisphere.\n    ::\n    [[10, 20, 30, 40,  50,  60,  70,  80,  90, 100], # mm\n    [19, 28, 49, 81, 125, 181, 248, 331, 422, 522], # s\n    [ 3, 13, 30, 56,  89, 129, 177, 232, 292, 358]] # MB]\n         \n    where memory is a min-guestimate given by: mem_req = nnz * 8 / 1024 / 1024.\n\n\n**distance_matrix_of_selected_points(numpy.ndarray[numpy.float64_t, ndim=2] vertices,\nnumpy.ndarray[numpy.int32_t, ndim=2] triangles,\nnumpy.ndarray[numpy.int32_t, ndim=1] points,\ndouble max_distance = GEODESIC_INF,\nbool is_one_indexed = False)**\n\n    Function for calculating pairwise geodesic distance for a set of points\n    within a distance ``max_distance`` of them.\n\n    Args:\n        vertices (numpy.ndarray[numpy.float64_t, ndim=2]): Defines x,y,z\n            coordinates of the mesh's vertices.\n        triangles (numpy.ndarray[numpy.float64_t, ndim=2]): Defines faces of\n            the mesh as index triplets into vertices.\n        points (numpy.ndarray[numpy.int32_t, ndim=1]): Indices of the points\n            among which the pairwise distances are to be calculated.\n        max_distance (double): Propagation algorithm stops after reaching the\n            certain distance from the source.\n        is_one_indexed (bool): defines if the index of the triangles data is\n            one-indexed.\n\n    Returns:\n        scipy.sparse.csc_matrix((N, N), dtype=numpy.float64): where N\n            is the number of vertices, specifying the pairwise distances among\n            the given points.\n    \n    Basic usage then looks like::\n        >>> import numpy\n        >>> temp = numpy.loadtxt(\"data/flat_triangular_mesh.txt\", skiprows=1)\n        >>> vertices = temp[0:121].astype(numpy.float64)\n        >>> triangles = temp[121:321].astype(numpy.int32)\n        >>> points = numpy.array([2, 5, 10], dtype=numpy.int32)\n        >>> import gdist\n        >>> gdist.distance_matrix_of_selected_points(\n                vertices, triangles, points\n            )\n         <121x121 sparse matrix of type '<class 'numpy.float64'>'\n            with 6 stored elements in Compressed Sparse Column format>\n\nNotes\n=====\n\n* The obtained matrix will be almost symmetrical due to floating point\n  imprecision.\n\n* In order for the algorithm to work the mesh must not be numbered incorrectly\n  or disconnected or of somehow degenerate.\n  \nAcknowledgments\n===============\nThis project has received funding from the European Union\u2019s Horizon 2020 \nFramework Programme for Research and Innovation under the Specific Grant \nAgreement No. 826421 - VirtualBrainCloud.\n",
    "bugtrack_url": null,
    "license": "GPL v3",
    "summary": "Compute geodesic distances",
    "version": "2.1.0",
    "split_keywords": [
        "gdist",
        "geodesic",
        "distance",
        "geo",
        "tvb"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "8e389117890a1f390c11102b4001b804",
                "sha256": "ff7551ee9b5c7716fc077068e2b52890ac9cf3ef249582acde895f7119d4040f"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8e389117890a1f390c11102b4001b804",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 94545,
            "upload_time": "2022-12-08T20:05:12",
            "upload_time_iso_8601": "2022-12-08T20:05:12.745561Z",
            "url": "https://files.pythonhosted.org/packages/c5/2c/3b3a46c497513d543f1869456c2b2704d3d7d0261bec835886e7c1b54176/gdist-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "ca040e5a322ce35dd9a9018e50b33647",
                "sha256": "ace46774ea8fa3d75a0d775951a4c3bacd3da69b06f9f17d805474e95f71b1b0"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ca040e5a322ce35dd9a9018e50b33647",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 89404,
            "upload_time": "2022-12-08T20:05:15",
            "upload_time_iso_8601": "2022-12-08T20:05:15.337862Z",
            "url": "https://files.pythonhosted.org/packages/16/85/09bed02227a00e6ea597370a922383ea4a97e3ce8abfe8fbc519e02525cd/gdist-2.1.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "0b9566b9d2d46e0390c2cdc281e689e8",
                "sha256": "91b3280f6d1fdef415232496b30397a6c9dcc8d472806bffe610a26313ce03e0"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0b9566b9d2d46e0390c2cdc281e689e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 739341,
            "upload_time": "2022-12-08T20:05:17",
            "upload_time_iso_8601": "2022-12-08T20:05:17.664385Z",
            "url": "https://files.pythonhosted.org/packages/46/9e/f4c4cb32e2fcfa1e8b7b8090458e0e8083eac5e59bb7fc6bde583d674b32/gdist-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "f76efd84f7e4a762c8d3ed02c8d90a04",
                "sha256": "8154e208b4a30dff370fdcfda11c133748d229390f54d1f114b0c7c54431a255"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f76efd84f7e4a762c8d3ed02c8d90a04",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 84936,
            "upload_time": "2022-12-08T20:05:19",
            "upload_time_iso_8601": "2022-12-08T20:05:19.022354Z",
            "url": "https://files.pythonhosted.org/packages/c4/90/a0a80659c8786704fadb50e1e4b3d91047a5ff224b9f70fb6ee224fe4a48/gdist-2.1.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "6d035df0596401c26af0ca045a471e16",
                "sha256": "f08396d8b0dd89886dcf8b75f9eeb5390dac27efa7703ba1a1b724754951afa6"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6d035df0596401c26af0ca045a471e16",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 95093,
            "upload_time": "2022-12-08T20:05:20",
            "upload_time_iso_8601": "2022-12-08T20:05:20.378750Z",
            "url": "https://files.pythonhosted.org/packages/80/9f/25fdfaf0ad42bff87cbf21d0d7cd24f79563a0afbabdcde01e2b15b49e9b/gdist-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "53d16ce4ad8f042e630f73f54333b704",
                "sha256": "29d7da6d285b6980cc1c30c2cc9263c03c4bdfe158b929f33ddd7993219042b3"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "53d16ce4ad8f042e630f73f54333b704",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 89520,
            "upload_time": "2022-12-08T20:05:21",
            "upload_time_iso_8601": "2022-12-08T20:05:21.826597Z",
            "url": "https://files.pythonhosted.org/packages/eb/3b/a80040dd83b56b6b6e6b27b7ac6e51fe0acc85141eb2bf2c366e7bf60b5d/gdist-2.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "e202d405ee3920e40137c4965abae9fa",
                "sha256": "9271466f4fab9881c57f7825d66eba069ee8df32764021474e8348667abb49b7"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e202d405ee3920e40137c4965abae9fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 752376,
            "upload_time": "2022-12-08T20:05:23",
            "upload_time_iso_8601": "2022-12-08T20:05:23.929558Z",
            "url": "https://files.pythonhosted.org/packages/f2/c2/44edddf8fae4bcd21ed42c95a53b75fb06062c77b0358e078acb2edba344/gdist-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8aa395dc29e7c9b52bc93edf0a8d95df",
                "sha256": "0198e7410a91461052d747ac6c5c26515a987789ec9808c938fa26790616ba3b"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8aa395dc29e7c9b52bc93edf0a8d95df",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 85047,
            "upload_time": "2022-12-08T20:05:25",
            "upload_time_iso_8601": "2022-12-08T20:05:25.238944Z",
            "url": "https://files.pythonhosted.org/packages/9c/28/3e03a056b16711aa4bb14c9c81f41863c800b14b121b0aaa1184fa9ca472/gdist-2.1.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "822ba38c016b3414f51f964f729156de",
                "sha256": "2ad481522be56672c2461d215985f25cf471a192f2723269790241e0d4e0beab"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "822ba38c016b3414f51f964f729156de",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 95172,
            "upload_time": "2022-12-08T20:05:26",
            "upload_time_iso_8601": "2022-12-08T20:05:26.606659Z",
            "url": "https://files.pythonhosted.org/packages/03/3b/f115741ade07fccf3bb58737206db58542906d32e8194db42908c8a18c01/gdist-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "df1e3e569b9867a1523118375cda9528",
                "sha256": "bfe8d8ff3f8ef7c3862300f24cceb348b7cd1fb71b6ed4011a3d17ecd37b3704"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "df1e3e569b9867a1523118375cda9528",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 726560,
            "upload_time": "2022-12-08T20:05:28",
            "upload_time_iso_8601": "2022-12-08T20:05:28.159010Z",
            "url": "https://files.pythonhosted.org/packages/3c/db/a47f5818f08b5bff63e0b24411dd1d81a8b2d85432e0bb3f0983a734188f/gdist-2.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "eaa19f36736557d94651d5fbe2adec5e",
                "sha256": "a195568f72ff859b25c900c7f00d92f18bd063bf13948e8ad8287061b89c72cd"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "eaa19f36736557d94651d5fbe2adec5e",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 88967,
            "upload_time": "2022-12-08T20:05:30",
            "upload_time_iso_8601": "2022-12-08T20:05:30.241851Z",
            "url": "https://files.pythonhosted.org/packages/32/68/e251bb982ea2ec07c38af8844901868f7d92b1233fa8eacc2408fd563b28/gdist-2.1.0-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "74bb6a77f3c6f7402be1b72936fffad4",
                "sha256": "cc3c0ca7168be4ec7256db96a123bc4b64b00fa0f1fc70bf87bbef44cd344b3e"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "74bb6a77f3c6f7402be1b72936fffad4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 95779,
            "upload_time": "2022-12-08T20:05:31",
            "upload_time_iso_8601": "2022-12-08T20:05:31.805206Z",
            "url": "https://files.pythonhosted.org/packages/6a/6c/8db4560b51c3748f8597c684b266c9426e7a0c8d7856d213f7fe1ccde760/gdist-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "ad004fb149b7a1fce0f581b862678693",
                "sha256": "70723f620fe9d339075b8dce1662b48a8bb9c47df84d7b6850072ff0179af128"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad004fb149b7a1fce0f581b862678693",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 728449,
            "upload_time": "2022-12-08T20:05:33",
            "upload_time_iso_8601": "2022-12-08T20:05:33.605513Z",
            "url": "https://files.pythonhosted.org/packages/37/80/745e9a5edfdde6900e207f5292239ed42f45f41c028e0334df8df80b690b/gdist-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "9d0f7748fa65a0b62a28b7be9729b3fd",
                "sha256": "1131123f24964ee542806cb6dbb56744c5aa9ba041cd9ee1de255ecddb6cf96a"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9d0f7748fa65a0b62a28b7be9729b3fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 85340,
            "upload_time": "2022-12-08T20:05:34",
            "upload_time_iso_8601": "2022-12-08T20:05:34.862746Z",
            "url": "https://files.pythonhosted.org/packages/49/fb/b2fc387c70b92b9ef1f60feb7117c5cbaca84edb0acc034f7357b0bde589/gdist-2.1.0-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "e6538e4267eb1d7c8839b5f0bb332415",
                "sha256": "d30b4b5e50a7d191bdc5fa9b7701684a18b1a0075f6b649daa8342d36efa7104"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e6538e4267eb1d7c8839b5f0bb332415",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 95191,
            "upload_time": "2022-12-08T20:05:36",
            "upload_time_iso_8601": "2022-12-08T20:05:36.482882Z",
            "url": "https://files.pythonhosted.org/packages/b8/a3/dfd97b09630521a872b750d5e369b09b5af00603cdcc1b36c3f153c31de1/gdist-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "0f3e4c8b6ab678b4ea6bd38a92441791",
                "sha256": "2a40a2fd8335e981c12debe2091775b54306300a415c1f253dff3fb3eb2990ba"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0f3e4c8b6ab678b4ea6bd38a92441791",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 89737,
            "upload_time": "2022-12-08T20:05:37",
            "upload_time_iso_8601": "2022-12-08T20:05:37.855367Z",
            "url": "https://files.pythonhosted.org/packages/b6/ed/3d96b447dd5bb61357eb38031d86a369b0532969d7a83050e52bf8787496/gdist-2.1.0-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "b3695394f10735314232acc4ce83723c",
                "sha256": "54262561068f3d28c76f21de850e8adb18751aac066ff86e671da12262350286"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b3695394f10735314232acc4ce83723c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 743463,
            "upload_time": "2022-12-08T20:05:39",
            "upload_time_iso_8601": "2022-12-08T20:05:39.273560Z",
            "url": "https://files.pythonhosted.org/packages/81/b8/b3ff607c6148594cd6150629ae98bc5e79c87aaf236154f994593da39469/gdist-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "7fb62b1f6102888b86aed12df75380f3",
                "sha256": "08a847153353a296188bd01946242cd0e0eabe35594db1a8cdef8f9258b98162"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7fb62b1f6102888b86aed12df75380f3",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 85880,
            "upload_time": "2022-12-08T20:05:40",
            "upload_time_iso_8601": "2022-12-08T20:05:40.877707Z",
            "url": "https://files.pythonhosted.org/packages/15/1d/8f13960a079c043601524035dbb3bb1beee8d73c338a986611d8ed1ee8e7/gdist-2.1.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "293e721a8b7ebc8b52477fb635aa6f9a",
                "sha256": "56af0eb5828fd23d28c77c4d09e6357fe024720b3dcea45ecf3dd918fc3c81c8"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "293e721a8b7ebc8b52477fb635aa6f9a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 95768,
            "upload_time": "2022-12-08T20:05:42",
            "upload_time_iso_8601": "2022-12-08T20:05:42.570449Z",
            "url": "https://files.pythonhosted.org/packages/64/bd/fd2c0877e4aed96c4ab2fdaa09778aaaf21671b6f45ee51830eb6ce06d6d/gdist-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d6760eea96672d6df0d10e2795c50446",
                "sha256": "599a14363ec9570d53eb17d9e0b3a443fea774a0c3044161727cc732725dfd27"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d6760eea96672d6df0d10e2795c50446",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 90203,
            "upload_time": "2022-12-08T20:05:43",
            "upload_time_iso_8601": "2022-12-08T20:05:43.942847Z",
            "url": "https://files.pythonhosted.org/packages/18/74/a1ef0a52305706d8bf26fd6ace9a0bc3ebf1717162bb1f216c2fa7166482/gdist-2.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "a002f5615e5dd175e85a9a2247e8d66c",
                "sha256": "1b075bfbef6781c80c256184b9b61c5d8ac17384461ef43e1cf3c2c05a20bb99"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a002f5615e5dd175e85a9a2247e8d66c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 744091,
            "upload_time": "2022-12-08T20:05:45",
            "upload_time_iso_8601": "2022-12-08T20:05:45.437562Z",
            "url": "https://files.pythonhosted.org/packages/c6/ec/d4cc8a5715504e7bf0ebc5dad371cfa36c41edec6646410ef41f1481c49e/gdist-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "85077ac8ed145c4c399d44f1450b3c7d",
                "sha256": "c28ce89c4b9c8d8e987027bb3a8add9877d19a8ede0bf7167d14d2fd023d85a2"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "85077ac8ed145c4c399d44f1450b3c7d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 85973,
            "upload_time": "2022-12-08T20:05:47",
            "upload_time_iso_8601": "2022-12-08T20:05:47.291834Z",
            "url": "https://files.pythonhosted.org/packages/6d/13/d0de672a84e8530fc8e8539c6f6d4c23a7e978fb26fd99e4fb932f0de29c/gdist-2.1.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "a31247616a6968b7b0846335c9e2474b",
                "sha256": "f8c6b25f9ab7c626cd683c23c7886f4a5f5a4aae2e1d3931ae865157d4e33fe8"
            },
            "downloads": -1,
            "filename": "gdist-2.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a31247616a6968b7b0846335c9e2474b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 112604,
            "upload_time": "2022-12-08T20:05:48",
            "upload_time_iso_8601": "2022-12-08T20:05:48.651898Z",
            "url": "https://files.pythonhosted.org/packages/2b/91/3e56e4c14b99dffcf08bf4ff7afaff31fc3214d033379bb0f6ab055bdad1/gdist-2.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-08 20:05:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "the-virtual-brain",
    "github_project": "tvb-gdist",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": false,
    "requirements": [
        {
            "name": "cython",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "scipy",
            "specs": []
        }
    ],
    "lcname": "gdist"
}
        
Elapsed time: 0.01643s