[![KonigCell](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/logo.png?raw=true)](https://konigcell.readthedocs.io/en/latest/)
[![PyPI version shields.io](https://img.shields.io/pypi/v/konigcell.svg?style=flat-square)](https://pypi.python.org/pypi/konigcell/)
[![Documentation Status](https://readthedocs.org/projects/konigcell/badge/?version=latest&style=flat-square)](https://konigcell.readthedocs.io/en/latest/?badge=latest)
[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/anicusan/KonigCell.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/anicusan/KonigCell/context:python)
[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/anicusan/KonigCell.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/anicusan/KonigCell/context:cpp)
[![License: MIT](https://img.shields.io/github/license/anicusan/konigcell?style=flat-square)](https://github.com/anicusan/konigcell)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/konigcell.svg?style=flat-square)](https://pypi.python.org/pypi/konigcell/)
[![Wheels Windows](https://img.shields.io/badge/Wheels-Windows%20x86%20%7C%20x86__64-brightgreen)](https://pypi.org/project/konigcell/#files)
[![Wheels MacOS](https://img.shields.io/badge/Wheels-MacOS%20x86__64-brightgreen)](https://pypi.org/project/konigcell/#files)
[![Wheels Linux](https://img.shields.io/badge/Wheels-Linux%20x86__64%20%7C%20i686-brightgreen)](https://pypi.org/project/konigcell/#files)
[![Wheel Python](https://img.shields.io/badge/Wheels-Python%203.6%20%7C%203.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-brightgreen)](https://pypi.org/project/konigcell/#files)
#### **Quantitative, Fast Grid-Based Fields Calculations in 2D and 3D** - Residence Time Distributions, Velocity Grids, Eulerian Cell Projections etc.
That sounds dry as heck.
#### **Project moving particles' trajectories (experimental or simulated) onto 2D or 3D grids with infinite resolution.**
Better? No? Here are some figures produced by KonigCell:
![Example Plots](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/examples.png?raw=true)
*Left panel: 2D residence time distribution in a GranuTools GranuDrum imaged using Positron Emission Particle Tracking (PEPT). Two middle panels: 3D velocity distribution in the same system; voxels are rendered as a scatter plot (left) and tomogram-like 3-slice (right). Right panel: velocity vectorfield in a constricted pipe simulating a aneurysm, imaged using PEPT.*
This is, to my knowledge, the only library that accurately projects particle
trajectories onto grids - that is, taking their full projected area / volume into
account (and not approximating them as points / lines). It's also the only one creating
quantitative 3D projections.
And it is *fast* - 1,000,000 particle positions can be rasterized onto a 512x512
grid in 7 seconds on my 16-thread i9 CPU. The code is fully parallelised on
threads, processes or distributed MPI nodes.
## But Why?
Rasterizing moving tracers onto uniform grids is a powerful way of computing statistics about a
system - occupancies, velocity vector fields, modelling particle clump imaging etc. - be it
experimental or simulated. However, the classical approach of approximating particle trajectories
as lines discards a lot of (most) information.
Here is an example of a particle moving randomly inside a box - on a high resolution (512x512)
pixel grid, the classical approach (top row) does not yield much better statistics with increasing
numbers of particle positions imaged. Projecting complete trajectory **areas** onto the grid
(KonigCell, bottom row) preserves more information about the system explored:
![Increasing Positions](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/increasing_positions.png?raw=true)
A typical strategy for dealing with information loss is to coarsen the pixel grid, resulting in
a trade-off between accuracy and statistical soundness. However, even very low resolutions
still yield less information using line approximations (top row). With area projections,
**you can increase the resolution arbitrarily** and improve precision (KonigCell, bottom row):
![Increasing Resolution](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/increasing_resolution.png?raw=true)
## The KonigCell Libraries
This repository effectively hosts three libraries:
- `konigcell2d`: a portable C library for 2D grid projections.
- `konigcell3d`: a portable C library for 3D grid projections.
- `konigcell`: a user-friendly Python interface to the two libraries above.
### Installing the Python Package
This package supports Python 3.6 and above (though it might work with even older
versions).
Install this package from PyPI:
```pip install konigcell```
Or conda-forge:
```conda install konigcell```
If you have a relatively standard system, the above should just download pre-compiled wheels -
so no prior configuration should be needed.
To *build* this package on your specific machine, you will need a C compiler -
the low-level C code does not use any tomfoolery, so any compiler since the
2000s should do.
To build the latest development version from GitHub:
```pip install git+https://github.com/anicusan/KonigCell```
### Integrating the C Libraries with your Code
The C libraries in the `konigcell2d` and `konigcell3d` directories in this repository; they
contain instructions for compiling and using the low-level subroutines. All code is fully
commented and follows a portable subset of the C99 standard - so no VLAs, weird macros or
compiler-specific extensions. Even MSVC compiles it!
You can run `make` in the `konigcell2d` or `konigcell3d` directories to build shared
libraries and the example executables under `-Wall -Werror -Wextra` like a stickler. Running
`make` in the repository root builds both libraries.
Both libraries are effectively single-source - they should be as straightforward as possible
to integrate in other C / C++ codebases, or interface with from higher-level programming
languages.
## Examples and Documentation
The `examples` directory contains some Python scripts using the high-level Python routines
and the low-level Cython interfaces. The `konigcell2d` and `konigcell3d` directories contain
C examples.
Full documentation is available [here](https://konigcell.readthedocs.io/).
```python
import numpy as np
import konigcell as kc
# Generate a short trajectory of XY positions to pixellise
positions = np.array([
[0.3, 0.2],
[0.2, 0.8],
[0.3, 0.55],
[0.6, 0.8],
[0.3, 0.45],
[0.6, 0.2],
])
# The particle radius may change
radii = np.array([0.05, 0.03, 0.01, 0.02, 0.02, 0.03])
# Values to rasterize - velocity, duration, etc.
values = np.array([1, 2, 1, 1, 2, 1])
# Pixellise the particle trajectories
pixels1 = kc.dynamic2d(
positions,
mode = kc.ONE,
radii = radii,
values = values[:-1],
resolution = (512, 512),
)
pixels2 = kc.static2d(
positions,
mode = kc.ONE,
radii = radii,
values = values,
resolution = (512, 512),
)
# Create Plotly 1x2 subplot grid and add Plotly heatmaps of pixels
fig = kc.create_fig(
nrows = 1, ncols = 2,
subplot_titles = ["Dynamic 2D", "Static 2D"],
)
fig.add_trace(pixels1.heatmap_trace(), row = 1, col = 1)
fig.add_trace(pixels2.heatmap_trace(), row = 1, col = 2)
fig.show()
```
![Static-Dynamic 2D](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/static_dynamic2d.png?raw=true)
## Contributing
You are more than welcome to contribute to this library in the form of library
improvements, documentation or helpful examples; please submit them either as:
- GitHub issues.
- Pull requests (superheroes only).
- Email me at <a.l.nicusan@bham.ac.uk>.
## Acknowledgements
I would like to thank the Formulation Engineering CDT @School of Chemical
Engineering and the Positron Imaging Centre @School of Physics and
Astronomy, University of Birmingham for supporting my work.
And thanks to Dr. Kit Windows-Yule for putting up with my bonkers ideas.
## Citing
If you use this library in your research, you are kindly asked to cite:
> [Paper after publication]
This library would not have been possible without the excellent `r3d` library
(https://github.com/devonmpowell/r3d) which forms the very core of the C
subroutines; if you use KonigCell in your work, please also cite:
> Powell D, Abel T. An exact general remeshing scheme applied to physically conservative voxelization. Journal of Computational Physics. 2015 Sep 15;297:340-56.
## Licensing
KonigCell is MIT licensed. Enjoy.
Raw data
{
"_id": null,
"home_page": "https://github.com/anicusan/KonigCell",
"name": "konigcell",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "grid pixel voxel field euler projection",
"author": "Andrei Leonard Nicusan",
"author_email": "a.l.nicusan@bham.ac.uk",
"download_url": "https://files.pythonhosted.org/packages/8c/fa/a73f7b471a6683673b1cc365686ef2a6645453978d8e2e268529672ee849/konigcell-0.2.1.tar.gz",
"platform": null,
"description": "\n\n[![KonigCell](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/logo.png?raw=true)](https://konigcell.readthedocs.io/en/latest/)\n\n[![PyPI version shields.io](https://img.shields.io/pypi/v/konigcell.svg?style=flat-square)](https://pypi.python.org/pypi/konigcell/)\n[![Documentation Status](https://readthedocs.org/projects/konigcell/badge/?version=latest&style=flat-square)](https://konigcell.readthedocs.io/en/latest/?badge=latest)\n[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/anicusan/KonigCell.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/anicusan/KonigCell/context:python)\n[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/anicusan/KonigCell.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/anicusan/KonigCell/context:cpp)\n[![License: MIT](https://img.shields.io/github/license/anicusan/konigcell?style=flat-square)](https://github.com/anicusan/konigcell)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/konigcell.svg?style=flat-square)](https://pypi.python.org/pypi/konigcell/)\n\n[![Wheels Windows](https://img.shields.io/badge/Wheels-Windows%20x86%20%7C%20x86__64-brightgreen)](https://pypi.org/project/konigcell/#files)\n[![Wheels MacOS](https://img.shields.io/badge/Wheels-MacOS%20x86__64-brightgreen)](https://pypi.org/project/konigcell/#files)\n[![Wheels Linux](https://img.shields.io/badge/Wheels-Linux%20x86__64%20%7C%20i686-brightgreen)](https://pypi.org/project/konigcell/#files)\n[![Wheel Python](https://img.shields.io/badge/Wheels-Python%203.6%20%7C%203.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-brightgreen)](https://pypi.org/project/konigcell/#files)\n\n#### **Quantitative, Fast Grid-Based Fields Calculations in 2D and 3D** - Residence Time Distributions, Velocity Grids, Eulerian Cell Projections etc.\n\nThat sounds dry as heck.\n\n#### **Project moving particles' trajectories (experimental or simulated) onto 2D or 3D grids with infinite resolution.**\n\nBetter? No? Here are some figures produced by KonigCell:\n\n\n![Example Plots](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/examples.png?raw=true)\n\n*Left panel: 2D residence time distribution in a GranuTools GranuDrum imaged using Positron Emission Particle Tracking (PEPT). Two middle panels: 3D velocity distribution in the same system; voxels are rendered as a scatter plot (left) and tomogram-like 3-slice (right). Right panel: velocity vectorfield in a constricted pipe simulating a aneurysm, imaged using PEPT.*\n\n\nThis is, to my knowledge, the only library that accurately projects particle\ntrajectories onto grids - that is, taking their full projected area / volume into\naccount (and not approximating them as points / lines). It's also the only one creating\nquantitative 3D projections.\n\nAnd it is *fast* - 1,000,000 particle positions can be rasterized onto a 512x512\ngrid in 7 seconds on my 16-thread i9 CPU. The code is fully parallelised on\nthreads, processes or distributed MPI nodes.\n\n\n\n## But Why?\n\nRasterizing moving tracers onto uniform grids is a powerful way of computing statistics about a\nsystem - occupancies, velocity vector fields, modelling particle clump imaging etc. - be it \nexperimental or simulated. However, the classical approach of approximating particle trajectories\nas lines discards a lot of (most) information.\n\nHere is an example of a particle moving randomly inside a box - on a high resolution (512x512)\npixel grid, the classical approach (top row) does not yield much better statistics with increasing\nnumbers of particle positions imaged. Projecting complete trajectory **areas** onto the grid\n(KonigCell, bottom row) preserves more information about the system explored:\n\n![Increasing Positions](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/increasing_positions.png?raw=true)\n\n\nA typical strategy for dealing with information loss is to coarsen the pixel grid, resulting in\na trade-off between accuracy and statistical soundness. However, even very low resolutions\nstill yield less information using line approximations (top row). With area projections,\n**you can increase the resolution arbitrarily** and improve precision (KonigCell, bottom row):\n\n![Increasing Resolution](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/increasing_resolution.png?raw=true)\n\n\n\n\n## The KonigCell Libraries\n\nThis repository effectively hosts three libraries:\n\n- `konigcell2d`: a portable C library for 2D grid projections.\n- `konigcell3d`: a portable C library for 3D grid projections.\n- `konigcell`: a user-friendly Python interface to the two libraries above.\n\n\n\n### Installing the Python Package\n\nThis package supports Python 3.6 and above (though it might work with even older\nversions).\n\nInstall this package from PyPI:\n\n```pip install konigcell``` \n\n\nOr conda-forge:\n\n```conda install konigcell```\n\n\nIf you have a relatively standard system, the above should just download pre-compiled wheels -\nso no prior configuration should be needed.\n\n\nTo *build* this package on your specific machine, you will need a C compiler -\nthe low-level C code does not use any tomfoolery, so any compiler since the\n2000s should do.\n\n\nTo build the latest development version from GitHub:\n\n```pip install git+https://github.com/anicusan/KonigCell```\n\n\n\n### Integrating the C Libraries with your Code\n\nThe C libraries in the `konigcell2d` and `konigcell3d` directories in this repository; they\ncontain instructions for compiling and using the low-level subroutines. All code is fully\ncommented and follows a portable subset of the C99 standard - so no VLAs, weird macros or\ncompiler-specific extensions. Even MSVC compiles it!\n\nYou can run `make` in the `konigcell2d` or `konigcell3d` directories to build shared\nlibraries and the example executables under `-Wall -Werror -Wextra` like a stickler. Running\n`make` in the repository root builds both libraries.\n\nBoth libraries are effectively single-source - they should be as straightforward as possible\nto integrate in other C / C++ codebases, or interface with from higher-level programming\nlanguages.\n\n\n\n## Examples and Documentation\n\nThe `examples` directory contains some Python scripts using the high-level Python routines\nand the low-level Cython interfaces. The `konigcell2d` and `konigcell3d` directories contain\nC examples.\n\nFull documentation is available [here](https://konigcell.readthedocs.io/).\n\n```python\nimport numpy as np\nimport konigcell as kc\n\n# Generate a short trajectory of XY positions to pixellise\npositions = np.array([\n [0.3, 0.2],\n [0.2, 0.8],\n [0.3, 0.55],\n [0.6, 0.8],\n [0.3, 0.45],\n [0.6, 0.2],\n])\n\n# The particle radius may change\nradii = np.array([0.05, 0.03, 0.01, 0.02, 0.02, 0.03])\n\n# Values to rasterize - velocity, duration, etc.\nvalues = np.array([1, 2, 1, 1, 2, 1])\n\n# Pixellise the particle trajectories\npixels1 = kc.dynamic2d(\n positions,\n mode = kc.ONE,\n radii = radii,\n values = values[:-1],\n resolution = (512, 512),\n)\n\npixels2 = kc.static2d(\n positions,\n mode = kc.ONE,\n radii = radii,\n values = values,\n resolution = (512, 512),\n)\n\n# Create Plotly 1x2 subplot grid and add Plotly heatmaps of pixels\nfig = kc.create_fig(\n nrows = 1, ncols = 2,\n subplot_titles = [\"Dynamic 2D\", \"Static 2D\"],\n)\n\nfig.add_trace(pixels1.heatmap_trace(), row = 1, col = 1)\nfig.add_trace(pixels2.heatmap_trace(), row = 1, col = 2)\n\nfig.show()\n```\n\n![Static-Dynamic 2D](https://github.com/anicusan/KonigCell/blob/main/docs/source/_static/static_dynamic2d.png?raw=true)\n\n\n\n## Contributing\nYou are more than welcome to contribute to this library in the form of library\nimprovements, documentation or helpful examples; please submit them either as:\n\n- GitHub issues.\n- Pull requests (superheroes only).\n- Email me at <a.l.nicusan@bham.ac.uk>.\n\n\n\n## Acknowledgements\nI would like to thank the Formulation Engineering CDT @School of Chemical\nEngineering and the Positron Imaging Centre @School of Physics and\nAstronomy, University of Birmingham for supporting my work.\n\nAnd thanks to Dr. Kit Windows-Yule for putting up with my bonkers ideas.\n\n\n\n## Citing\nIf you use this library in your research, you are kindly asked to cite:\n\n> [Paper after publication]\n\n\nThis library would not have been possible without the excellent `r3d` library\n(https://github.com/devonmpowell/r3d) which forms the very core of the C\nsubroutines; if you use KonigCell in your work, please also cite:\n\n> Powell D, Abel T. An exact general remeshing scheme applied to physically conservative voxelization. Journal of Computational Physics. 2015 Sep 15;297:340-56.\n\n\n\n## Licensing\nKonigCell is MIT licensed. Enjoy.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Quantitative, Fast Grid-Based Fields Calculations in 2D and 3D - Residence Time Distributions, Velocity Grids, Eulerian Cell Projections etc.",
"version": "0.2.1",
"split_keywords": [
"grid",
"pixel",
"voxel",
"field",
"euler",
"projection"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0d4c0e826cd20ed46712178c655004ee57cd3e2a3f6466ed7a2a23ec6b93c01e",
"md5": "2d40b5a697f3c7dba96dd8cea54766cf",
"sha256": "93bdbb6b7fb3fbdf4ecdbd7504698c43bf2b3f39aa5952a4dad5c046e74ea466"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "2d40b5a697f3c7dba96dd8cea54766cf",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 431424,
"upload_time": "2023-03-31T17:29:45",
"upload_time_iso_8601": "2023-03-31T17:29:45.661502Z",
"url": "https://files.pythonhosted.org/packages/0d/4c/0e826cd20ed46712178c655004ee57cd3e2a3f6466ed7a2a23ec6b93c01e/konigcell-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d8935eacb2f6db2b3ef659646d2df401b8b14cb65b0a41c4428f974800af6898",
"md5": "c23bfd71ca89abcb1ec29032a05290e9",
"sha256": "758f5bdbe4a6e143203e605cbe18c872e96d62744a4a660d87d2e64909b16be3"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "c23bfd71ca89abcb1ec29032a05290e9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 554294,
"upload_time": "2023-03-31T17:29:47",
"upload_time_iso_8601": "2023-03-31T17:29:47.760050Z",
"url": "https://files.pythonhosted.org/packages/d8/93/5eacb2f6db2b3ef659646d2df401b8b14cb65b0a41c4428f974800af6898/konigcell-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "72f2479ca6e52827d7a26c3b13cdd727b33c1e396e9a2bee9ee26b442e5bbf9b",
"md5": "4c1166455a61675ca0a05d8b6615f0aa",
"sha256": "5b3a97026a8901fe26bac285537c482391afd306eef4bc6f8fe6e9cba86ca452"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "4c1166455a61675ca0a05d8b6615f0aa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 557612,
"upload_time": "2023-03-31T17:29:49",
"upload_time_iso_8601": "2023-03-31T17:29:49.471841Z",
"url": "https://files.pythonhosted.org/packages/72/f2/479ca6e52827d7a26c3b13cdd727b33c1e396e9a2bee9ee26b442e5bbf9b/konigcell-0.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "64ef7a27fed7e1232c15b731ba150255674b13701bb06e1fe173be49e0073582",
"md5": "0ec226968ec193470a0bec2dc703f6da",
"sha256": "642e1f23342448fc291199df4459db3c99442b3d9b02e1f9da5d3d18e1cbf022"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "0ec226968ec193470a0bec2dc703f6da",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 387633,
"upload_time": "2023-03-31T17:29:50",
"upload_time_iso_8601": "2023-03-31T17:29:50.557081Z",
"url": "https://files.pythonhosted.org/packages/64/ef/7a27fed7e1232c15b731ba150255674b13701bb06e1fe173be49e0073582/konigcell-0.2.1-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4ee1e0561aa71431bf64a15100c4596621b815994df30062c4dd56af9e00eaad",
"md5": "be7c3afd5154d217c0f1819b4bc8f43d",
"sha256": "cff78b65375c9dabd49cd0dfefda752da0ef0fcec29c4f9d7d5313e3da5b7fcd"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "be7c3afd5154d217c0f1819b4bc8f43d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 413059,
"upload_time": "2023-03-31T17:29:52",
"upload_time_iso_8601": "2023-03-31T17:29:52.147763Z",
"url": "https://files.pythonhosted.org/packages/4e/e1/e0561aa71431bf64a15100c4596621b815994df30062c4dd56af9e00eaad/konigcell-0.2.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c2449ebc8669d3c867270c399514c9ba4a019f8eb4f2e326959fece647a90199",
"md5": "a9be051d03bc03bad0bd7f835c7a631c",
"sha256": "3745dc2ca9fe706c1f16986a3173e71160d3534d6faac100ea2729fff5dd09b8"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a9be051d03bc03bad0bd7f835c7a631c",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 446982,
"upload_time": "2023-03-31T17:29:54",
"upload_time_iso_8601": "2023-03-31T17:29:54.412459Z",
"url": "https://files.pythonhosted.org/packages/c2/44/9ebc8669d3c867270c399514c9ba4a019f8eb4f2e326959fece647a90199/konigcell-0.2.1-cp36-cp36m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9e478380db698cd600e26772532c3e9dcba0b9a208006ef3677fee6c1a81b285",
"md5": "bfc4595499abd66eb5a0708fe95a54c9",
"sha256": "0482b42affaf32a48d4de0cb3b22cf1b6b9c06b708028d1f893dc53c62284cfb"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "bfc4595499abd66eb5a0708fe95a54c9",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 581019,
"upload_time": "2023-03-31T17:29:55",
"upload_time_iso_8601": "2023-03-31T17:29:55.538498Z",
"url": "https://files.pythonhosted.org/packages/9e/47/8380db698cd600e26772532c3e9dcba0b9a208006ef3677fee6c1a81b285/konigcell-0.2.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "75339e2322c12dc9f5f05c9b3952967d338177fa20f036e315956951b7af36c3",
"md5": "f5f22c57081f6edf97b75f2d11dd0b19",
"sha256": "75b03fb57da697196243db020d144a8428cb2aea6e8912e49a5afdc5ae0e93cc"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "f5f22c57081f6edf97b75f2d11dd0b19",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 584168,
"upload_time": "2023-03-31T17:29:57",
"upload_time_iso_8601": "2023-03-31T17:29:57.191468Z",
"url": "https://files.pythonhosted.org/packages/75/33/9e2322c12dc9f5f05c9b3952967d338177fa20f036e315956951b7af36c3/konigcell-0.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "38643580780097feca02b367ddbb2bb3517b9dcaad72c6c8c9e4be50fa2b5274",
"md5": "a5a669eedbebab1951cd6945e20d7101",
"sha256": "c9e7e7960811ad5c4d73e4e83bf53ef55ddb3cfb639373181373557407fd6e59"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp36-cp36m-win32.whl",
"has_sig": false,
"md5_digest": "a5a669eedbebab1951cd6945e20d7101",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 404056,
"upload_time": "2023-03-31T17:29:58",
"upload_time_iso_8601": "2023-03-31T17:29:58.295722Z",
"url": "https://files.pythonhosted.org/packages/38/64/3580780097feca02b367ddbb2bb3517b9dcaad72c6c8c9e4be50fa2b5274/konigcell-0.2.1-cp36-cp36m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c54a0695383f7972f4ea70101d0cc814e7ce32e70ddc98e3ba19322af7b29239",
"md5": "90fedc6ebb7fdd7bdf1e64116afd3db5",
"sha256": "b59ddb87e1ac980a37817371f23097caff967f3782f9356f3309f76ef3fe482c"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "90fedc6ebb7fdd7bdf1e64116afd3db5",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 430460,
"upload_time": "2023-03-31T17:29:59",
"upload_time_iso_8601": "2023-03-31T17:29:59.525257Z",
"url": "https://files.pythonhosted.org/packages/c5/4a/0695383f7972f4ea70101d0cc814e7ce32e70ddc98e3ba19322af7b29239/konigcell-0.2.1-cp36-cp36m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9281604f0b2bbc309ff7e162fb80a33ca6695db1f78edcef763f7955612c83ec",
"md5": "0a214f7209a0d12f1447f070090b2fa9",
"sha256": "b59001e39b73fa7dac619c1750d33e3160b59d0539c70fb625b3e117c6f26e2f"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "0a214f7209a0d12f1447f070090b2fa9",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 447031,
"upload_time": "2023-03-31T17:30:00",
"upload_time_iso_8601": "2023-03-31T17:30:00.895503Z",
"url": "https://files.pythonhosted.org/packages/92/81/604f0b2bbc309ff7e162fb80a33ca6695db1f78edcef763f7955612c83ec/konigcell-0.2.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7daec665e8ae2f2674b533ba0c0112e62ed54090852e1add9249077f616ef861",
"md5": "540c1503d9e93bc910188515f4b37ddb",
"sha256": "fa2696cc61c49eba93e51b44554c43a7e8e4ef485ae00676437f86fce94e9a8b"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "540c1503d9e93bc910188515f4b37ddb",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 582335,
"upload_time": "2023-03-31T17:30:02",
"upload_time_iso_8601": "2023-03-31T17:30:02.234562Z",
"url": "https://files.pythonhosted.org/packages/7d/ae/c665e8ae2f2674b533ba0c0112e62ed54090852e1add9249077f616ef861/konigcell-0.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c0e0a8770c3ca4d69a86d658a8c704adf18259b9673e08c27e1a34778b52e101",
"md5": "cef9d596f133e38a40cc3f65f57108ab",
"sha256": "d52c95cf9ef3a77e476a05ab183d26c81a1349a2b41e1ba439d746009b4f3217"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "cef9d596f133e38a40cc3f65f57108ab",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 585097,
"upload_time": "2023-03-31T17:30:04",
"upload_time_iso_8601": "2023-03-31T17:30:04.046524Z",
"url": "https://files.pythonhosted.org/packages/c0/e0/a8770c3ca4d69a86d658a8c704adf18259b9673e08c27e1a34778b52e101/konigcell-0.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "24967b4f48aff71f3e862e55358a5863ff82a36d96347e52b4be1f6f81120b94",
"md5": "78bf7125533c530bc4f06deac7947a31",
"sha256": "c7dae26f807e6f9ffecdf559c6739b5da0866621816dc9fc8330b50a4369016c"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp37-cp37m-win32.whl",
"has_sig": false,
"md5_digest": "78bf7125533c530bc4f06deac7947a31",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 404121,
"upload_time": "2023-03-31T17:30:05",
"upload_time_iso_8601": "2023-03-31T17:30:05.794054Z",
"url": "https://files.pythonhosted.org/packages/24/96/7b4f48aff71f3e862e55358a5863ff82a36d96347e52b4be1f6f81120b94/konigcell-0.2.1-cp37-cp37m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7a1e82757ae6f63327fc1aa50806641e7603afc7bbf970a25cebd64867e86d80",
"md5": "a4da02b8f0da84d89417a60579b3dc90",
"sha256": "118dd7a670173d912f54825bbd755613e2c887177fb6680c2a6ee3328002b754"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "a4da02b8f0da84d89417a60579b3dc90",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 430582,
"upload_time": "2023-03-31T17:30:07",
"upload_time_iso_8601": "2023-03-31T17:30:07.572146Z",
"url": "https://files.pythonhosted.org/packages/7a/1e/82757ae6f63327fc1aa50806641e7603afc7bbf970a25cebd64867e86d80/konigcell-0.2.1-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "addd7d6a1483be1743050ac4eb3c1ff933b7b6c739d5bc97bab1cc788186ce9f",
"md5": "cf82b923dfab9c335e61892c5f22b3c1",
"sha256": "0188feb5db9f079d90406180bc9a638a0cd19cb031a70c68a033d4047c0e481b"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "cf82b923dfab9c335e61892c5f22b3c1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 446747,
"upload_time": "2023-03-31T17:30:08",
"upload_time_iso_8601": "2023-03-31T17:30:08.682831Z",
"url": "https://files.pythonhosted.org/packages/ad/dd/7d6a1483be1743050ac4eb3c1ff933b7b6c739d5bc97bab1cc788186ce9f/konigcell-0.2.1-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a0293213dd2c8c49806ffa1fdb8fda88dedc320a735186eb7801c9cc67e1e4ae",
"md5": "c7f3adebf422719b66853ae0fa8922db",
"sha256": "ef0f0e2447ae57b054bae48abd9b4d54e9257c662f8781d7cb4935f0e2c8f703"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "c7f3adebf422719b66853ae0fa8922db",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 575163,
"upload_time": "2023-03-31T17:30:09",
"upload_time_iso_8601": "2023-03-31T17:30:09.961169Z",
"url": "https://files.pythonhosted.org/packages/a0/29/3213dd2c8c49806ffa1fdb8fda88dedc320a735186eb7801c9cc67e1e4ae/konigcell-0.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "19fe9064d500314e0fff864ddc0f4263a8ed2b1cd8219f2c22491f3a884b7821",
"md5": "cf8cac7772be98521ec8c1e2cf4bf386",
"sha256": "c928d37713e04b518ead24c51d681c764ae2b5752ca5140e9cc57d1700a771c6"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "cf8cac7772be98521ec8c1e2cf4bf386",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 579385,
"upload_time": "2023-03-31T17:30:11",
"upload_time_iso_8601": "2023-03-31T17:30:11.174209Z",
"url": "https://files.pythonhosted.org/packages/19/fe/9064d500314e0fff864ddc0f4263a8ed2b1cd8219f2c22491f3a884b7821/konigcell-0.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dfd91f8d538f915338e84c98014833f029e4a5ba7c222e1471b3ea116f0030c5",
"md5": "9855ccd87bff7360b61027ee55b1afdd",
"sha256": "c78597d4b2fbf31ff0d818835186875cb6844308c9e5dfaa1e39ba955573ce3f"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "9855ccd87bff7360b61027ee55b1afdd",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 406339,
"upload_time": "2023-03-31T17:30:12",
"upload_time_iso_8601": "2023-03-31T17:30:12.322494Z",
"url": "https://files.pythonhosted.org/packages/df/d9/1f8d538f915338e84c98014833f029e4a5ba7c222e1471b3ea116f0030c5/konigcell-0.2.1-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "beed49767132f8973f47cc79e9ae0daef50fcc2b21535e339427f4e8476aa073",
"md5": "df29948f35f1e94c15fabd5be7badf2d",
"sha256": "4dfe5f7abeaf157f008872045b6c01fca140f1aaf7b5e1d3849a12adfba201cc"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "df29948f35f1e94c15fabd5be7badf2d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 431962,
"upload_time": "2023-03-31T17:30:13",
"upload_time_iso_8601": "2023-03-31T17:30:13.476961Z",
"url": "https://files.pythonhosted.org/packages/be/ed/49767132f8973f47cc79e9ae0daef50fcc2b21535e339427f4e8476aa073/konigcell-0.2.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "45010edb1262c4a78171e8a81c2193d2a858461ee9b88c570acbc744615e2175",
"md5": "ea8a39e60cc4106883f6fe148514d790",
"sha256": "9d9b5d8aa093da77fd7f16ceb73cfa78177b7a46f7dba63aada85d6192d627de"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ea8a39e60cc4106883f6fe148514d790",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 429916,
"upload_time": "2023-03-31T17:30:15",
"upload_time_iso_8601": "2023-03-31T17:30:15.156771Z",
"url": "https://files.pythonhosted.org/packages/45/01/0edb1262c4a78171e8a81c2193d2a858461ee9b88c570acbc744615e2175/konigcell-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "52ea47c7a2ead68708f670bbcf490e3d4e7703fe14fb249153830dcc38c51256",
"md5": "6f50bda2af356bdc278b9565fc2541a0",
"sha256": "d88747a325373e504712a537c4a709df0f980c837f34815e9bcb572d71a122c5"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "6f50bda2af356bdc278b9565fc2541a0",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 555153,
"upload_time": "2023-03-31T17:30:16",
"upload_time_iso_8601": "2023-03-31T17:30:16.323319Z",
"url": "https://files.pythonhosted.org/packages/52/ea/47c7a2ead68708f670bbcf490e3d4e7703fe14fb249153830dcc38c51256/konigcell-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d43588a986b983e146b5718ad44f9e16737762826c0b8cff5852545c318eff57",
"md5": "b67096d25a2aa02cdbd71ef5dd7b6991",
"sha256": "fa8029e1bade31eea7f7aaf6367bab52491133582e69abdce67dd6e66e7c148c"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "b67096d25a2aa02cdbd71ef5dd7b6991",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 557848,
"upload_time": "2023-03-31T17:30:17",
"upload_time_iso_8601": "2023-03-31T17:30:17.497562Z",
"url": "https://files.pythonhosted.org/packages/d4/35/88a986b983e146b5718ad44f9e16737762826c0b8cff5852545c318eff57/konigcell-0.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c6f561fc1d8f5009133895f40a314a540246d902040e7baf5c6a96861384cfe5",
"md5": "e3fd690ed5b41f7a54f8464d81f1805a",
"sha256": "235295bea38a6911a113bad7af53884c4bf52946980bfd0fe54a143d1e338948"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "e3fd690ed5b41f7a54f8464d81f1805a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 387193,
"upload_time": "2023-03-31T17:30:18",
"upload_time_iso_8601": "2023-03-31T17:30:18.596540Z",
"url": "https://files.pythonhosted.org/packages/c6/f5/61fc1d8f5009133895f40a314a540246d902040e7baf5c6a96861384cfe5/konigcell-0.2.1-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6294855a49efa1b2ad863f500eed0978aecbbe61231784f0289bcebd301ef052",
"md5": "0cccff25fae9aed303280b44a148608d",
"sha256": "e545b7899d4f20dec2997630a9b524193c63d441fcc0da716062db80caee870d"
},
"downloads": -1,
"filename": "konigcell-0.2.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "0cccff25fae9aed303280b44a148608d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 413019,
"upload_time": "2023-03-31T17:30:20",
"upload_time_iso_8601": "2023-03-31T17:30:20.413032Z",
"url": "https://files.pythonhosted.org/packages/62/94/855a49efa1b2ad863f500eed0978aecbbe61231784f0289bcebd301ef052/konigcell-0.2.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8cfaa73f7b471a6683673b1cc365686ef2a6645453978d8e2e268529672ee849",
"md5": "5eda3504a194563552b91ce27420b6e5",
"sha256": "46a51629ef503f06276314ca9ceba385439b28f2d655cd9abeb34a74c19d5aca"
},
"downloads": -1,
"filename": "konigcell-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "5eda3504a194563552b91ce27420b6e5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 298129,
"upload_time": "2023-03-31T17:30:22",
"upload_time_iso_8601": "2023-03-31T17:30:22.115222Z",
"url": "https://files.pythonhosted.org/packages/8c/fa/a73f7b471a6683673b1cc365686ef2a6645453978d8e2e268529672ee849/konigcell-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-31 17:30:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "anicusan",
"github_project": "KonigCell",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "konigcell"
}