scicomap


Namescicomap JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
Summarydata visualization on maps with varying levels of granularity
upload_time2024-05-15 20:45:34
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License Copyright (c) [2021] [Thomas Bury] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords visualization color uniform scientific
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="pics/logo.png" alt="drawing" width="200"/>

[buy me caffeine](https://ko-fi.com/V7V72SOHX)



# Scientific color maps 

## Blog post

[Scicomap Medium blog post (free)](https://towardsdatascience.com/your-colour-map-is-bad-heres-how-to-fix-it-lessons-learnt-from-the-event-horizon-telescope-b82523f09469)

[Official Documentation](https://scicomap.readthedocs.io/en/latest/)

[Tutorial notebook](./docs/notebooks/tutorial.ipynb)

## Installation

```shell
pip install scicomap
```

## Introduction 

Scicomap is a package that provides scientific color maps and tools to standardize your favourite color maps if you don't like the built-in ones.
Scicomap currently provides sequential, bi-sequential, diverging, circular, qualitative and miscellaneous color maps. You can easily draw examples, compare the rendering, see how colorblind people will perceive the color maps. I will illustrate the scicomap capabilities below.

This package is heavily based on the [Event Horyzon Plot package](https://github.com/liamedeiros/ehtplot/tree/docs) and uses good color maps found in the [the python portage of the Fabio Crameri](https://github.com/callumrollo/cmcrameri), [cmasher](https://cmasher.readthedocs.io/), [palettable](https://jiffyclub.github.io/palettable/), [colorcet](https://colorcet.holoviz.org/) and [cmocean](https://matplotlib.org/cmocean/)

## Motivation

The accurate representation of data is essential. Many common color maps distort data through uneven colour gradients and are often unreadable to those with color-vision deficiency. An infamous example is the jet color map. These color maps do not render all the information you want to illustrate or even worse render false information through artefacts. Scientist or not, your goal is to communicate visual information in the most accurate and appealing fashion. Moreover, do not overlook colour-vision deficiency, which represents 8% of the (Caucasian) male population.

## Color spaces

Perceptual uniformity is the idea that Euclidean distance between colors in color space should match human color perception distance judgements. For example, a blue and red that are at a distance d apart should look as discriminable as green and purple that are at a distance d apart.
Scicomap uses the CAM02-UCS color space (Uniform Colour Space). Its three coordinates are usually denoted by J', a', and b'. And its cylindrical coordinates are J', C', and h'. The perceptual color space Jab is similar to Lab. However, Jab uses an updated color appearance model that in theory provides greater precision for discriminability measurements.

 * Lightness: also known as value or tone, is a representation of a color's brightness
 * Chroma: the intrinsic difference between a color and gray of an object
 * Hue: the degree to which a stimulus can be described as similar to or different from stimuli that are described as red, green, blue, and yellow

## Encoding information

 * Lightness J': for a scalar value, intensity. It must vary linearly with the physical quantity
 * hue h' can encode an additional physical quantity, the change of hue should be linearly proportional to the quantity. The hue h' is also ideal in making an image more attractive without interfering with the representation of pixel values.
 * chroma is less recognizable and should not be used to encode physical information
  
## Color map uniformization

Following the references and the theories, the uniformization is performed by

 * Making the color map linear in J'
 * Lifting the color map (making it lighter, i.e. increasing the minimal value of J')
 * Symmetrizing the chroma to avoid further artefacts
 * Avoid kinks and edges in the chroma curve
 * Bitonic symmetrization or not


# Scicomap

## Choosing the right type of color maps
Scicomap provides a bunch of color maps for different applications. The different types of color map are 

```python
import scicomap as sc
sc_map = sc.SciCoMap()
sc_map.get_ctype()
```

```
dict_keys(['diverging', 'sequential', 'multi-sequential', 'circular', 'miscellaneous', 'qualitative'])
```

I'll refer to the [The misuse of colour in science communication](https://www.nature.com/articles/s41467-020-19160-7.pdf) for choosing the right scientific color map

<td align="left"><img src="pics/choosing-cmap.png" width="500"/></td>

## Get the matplotlib cmap


```python
plt_cmap_obj = sc_map.get_mpl_color_map()
```

## Choosing the color map for a given type

Get the color maps for a given type

```python
sc_map = sc.ScicoSequential()
sc_map.get_color_map_names()
```

```
dict_keys(['afmhot', 'amber', 'amber_r', 'amp', 'apple', 'apple_r', 'autumn', 'batlow', 'bilbao', 'bilbao_r', 'binary', 'Blues', 'bone', 'BuGn', 'BuPu', 'chroma', 'chroma_r', 'cividis', 'cool', 'copper', 'cosmic', 'cosmic_r', 'deep', 'dense', 'dusk', 'dusk_r', 'eclipse', 'eclipse_r', 'ember', 'ember_r', 'fall', 'fall_r', 'gem', 'gem_r', 'gist_gray', 'gist_heat', 'gist_yarg', 'GnBu', 'Greens', 'gray', 'Greys', 'haline', 'hawaii', 'hawaii_r', 'heat', 'heat_r', 'hot', 'ice', 'inferno', 'imola', 'imola_r', 'lapaz', 'lapaz_r', 'magma', 'matter', 'neon', 'neon_r', 'neutral', 'neutral_r', 'nuuk', 'nuuk_r', 'ocean', 'ocean_r', 'OrRd', 'Oranges', 'pink', 'plasma', 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'rain', 'rainbow', 'rainbow-sc', 'rainbow-sc_r', 'rainforest', 'rainforest_r', 'RdPu', 'Reds', 'savanna', 'savanna_r', 'sepia', 'sepia_r', 'speed', 'solar', 'spring', 'summer', 'tempo', 'thermal', 'thermal_r', 'thermal-2', 'tokyo', 'tokyo_r', 'tropical', 'tropical_r', 'turbid', 'turku', 'turku_r', 'viridis', 'winter', 'Wistia', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd'])
```

## Assessing a color map

In order to assess if a color map should be corrected or not, `scicomap` provides a way to quickly check if the lightness is linear, how asymmetric and smooth is the chroma and how the color map renders for color-deficient users. I will illustrate some of the artefacts using classical images, as the pyramid and specific functions for each kind of color map.


### An infamous example

```python
import scicomap as sc
import matplotlib.pyplot as plt

# the thing that should not be
ugly_jet = plt.get_cmap("jet")
sc_map =  sc.ScicoMiscellaneous(cmap=ugly_jet)
f=sc_map.assess_cmap(figsize=(22,10))
```


<td align="left"><img src="pics/jet.png" width="1000"/></td>
 

Clearly, the lightness is not linear, has edges and kinks. The chroma is not smooth and asymmetrical. See the below illustration to see how bad and how many artefacts the jet color map introduces


<td align="left"><img src="pics/jet2.png" width="1000"/></td>


## Correcting a color map - Example

### Sequential color map

Let's assess the built-in color map `hawaii` without correction:

```python
sc_map = sc.ScicoSequential(cmap='hawaii')
f=sc_map.assess_cmap(figsize=(22,10))
```

<td align="left"><img src="pics/hawaii.png" width="1000"/></td>


The color map seems ok, however, the lightness is not linear and the chroma is asymmetrical even if smooth. Those small defects introduce artefact in the information rendering, as we can visualize using the following example


```python
f=sc_map.draw_example()
```

<td align="left"><img src="pics/hawaii-examples.png" width="1000"/></td>


We can clearly see the artefacts, especially for the pyramid for which our eyes should only pick out the corners in the pyramid (ideal situation). Those artefacts are even more striking for color-deficient users (this might not always be the case). Hopefully, `scicomap` provides an easy way to correct those defects:

```python
# fixing the color map, using the same minimal lightness (lift=None), 
# not normalizing to bitone and 
# smoothing the chroma
sc_map.unif_sym_cmap(lift=None, 
                     bitonic=False, 
                     diffuse=True)

# re-assess the color map after fixing it                     
f=sc_map.assess_cmap(figsize=(22,10))
```

<td align="left"><img src="pics/hawaii-fixed.png" width="1000"/></td>


After fixing the color map, the artefacts are less present

<td align="left"><img src="pics/hawaii-fixed-examples.png" width="1000"/></td>

# All the built-in color maps

## Sequential

<td align="left"><img src="pics/seq-cmaps-all.png" width="500"/></td>

## Diverging


<td align="left"><img src="pics/div-cmaps-all.png" width="500"/></td>

## Mutli-sequential

<td align="left"><img src="pics/multi-cmaps-all.png" width="500"/></td>

## Miscellaneous

<td align="left"><img src="pics/misc-cmaps-all.png" width="500"/></td>

## Circular

<td align="left"><img src="pics/circular-cmaps-all.png" width="500"/></td>

## Qualitative

<td align="left"><img src="pics/qual-cmaps-all.png" width="500"/></td>

# References

 * [The misuse of colour in science communication](https://www.nature.com/articles/s41467-020-19160-7.pdf)
 * [Why We Use Bad Color Maps and What You Can Do About It](https://www.kennethmoreland.com/color-advice/BadColorMaps.pdf)
 * [THE RAINBOW IS DEAD…LONG LIVE THE RAINBOW! – SERIES OUTLINE](https://mycarta.wordpress.com/2012/05/29/the-rainbow-is-dead-long-live-the-rainbow-series-outline/)
 * [Scientific colour maps](https://www.fabiocrameri.ch/colourmaps/)
 * [Picking a colour scale for scientific graphics](https://betterfigures.org/2015/06/23/picking-a-colour-scale-for-scientific-graphics/)
 * [ColorCET](https://colorcet.com/)
 * [Good Colour Maps: How to Design Them](https://arxiv.org/abs/1509.03700)
 * [Perceptually uniform color space for image signals including high dynamic range and wide gamut](https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272)


# Changes log

### 1.0.0

 - Docstring
 - Tutorial notebook
 - Web documentation

### 0.4

 - Including files in source distributions

### 0.3

 - Add a section "how to use with matplotlib"
 - [Bug] Center diverging color map in examples

### 0.2

 - [Bug] Fix typo in chart titles

### 0.1

 - First version

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "scicomap",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "visualization, color, uniform, scientific",
    "author": null,
    "author_email": "Thomas Bury <bury.thomas@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/17/1e/3ed6fd29b7936f5f4c19d66720ee874a1724b16e09696be600639aafd7b1/scicomap-1.0.1.tar.gz",
    "platform": null,
    "description": "<img src=\"pics/logo.png\" alt=\"drawing\" width=\"200\"/>\r\n\r\n[buy me caffeine](https://ko-fi.com/V7V72SOHX)\r\n\r\n\r\n\r\n# Scientific color maps \r\n\r\n## Blog post\r\n\r\n[Scicomap Medium blog post (free)](https://towardsdatascience.com/your-colour-map-is-bad-heres-how-to-fix-it-lessons-learnt-from-the-event-horizon-telescope-b82523f09469)\r\n\r\n[Official Documentation](https://scicomap.readthedocs.io/en/latest/)\r\n\r\n[Tutorial notebook](./docs/notebooks/tutorial.ipynb)\r\n\r\n## Installation\r\n\r\n```shell\r\npip install scicomap\r\n```\r\n\r\n## Introduction \r\n\r\nScicomap is a package that provides scientific color maps and tools to standardize your favourite color maps if you don't like the built-in ones.\r\nScicomap currently provides sequential, bi-sequential, diverging, circular, qualitative and miscellaneous color maps. You can easily draw examples, compare the rendering, see how colorblind people will perceive the color maps. I will illustrate the scicomap capabilities below.\r\n\r\nThis package is heavily based on the [Event Horyzon Plot package](https://github.com/liamedeiros/ehtplot/tree/docs) and uses good color maps found in the [the python portage of the Fabio Crameri](https://github.com/callumrollo/cmcrameri), [cmasher](https://cmasher.readthedocs.io/), [palettable](https://jiffyclub.github.io/palettable/), [colorcet](https://colorcet.holoviz.org/) and [cmocean](https://matplotlib.org/cmocean/)\r\n\r\n## Motivation\r\n\r\nThe accurate representation of data is essential. Many common color maps distort data through uneven colour gradients and are often unreadable to those with color-vision deficiency. An infamous example is the jet color map. These color maps do not render all the information you want to illustrate or even worse render false information through artefacts. Scientist or not, your goal is to communicate visual information in the most accurate and appealing fashion. Moreover, do not overlook colour-vision deficiency, which represents 8% of the (Caucasian) male population.\r\n\r\n## Color spaces\r\n\r\nPerceptual uniformity is the idea that Euclidean distance between colors in color space should match human color perception distance judgements. For example, a blue and red that are at a distance d apart should look as discriminable as green and purple that are at a distance d apart.\r\nScicomap uses the CAM02-UCS color space (Uniform Colour Space). Its three coordinates are usually denoted by J', a', and b'. And its cylindrical coordinates are J', C', and h'. The perceptual color space Jab is similar to Lab. However, Jab uses an updated color appearance model that in theory provides greater precision for discriminability measurements.\r\n\r\n * Lightness: also known as value or tone, is a representation of a color's brightness\r\n * Chroma: the intrinsic difference between a color and gray of an object\r\n * Hue: the degree to which a stimulus can be described as similar to or different from stimuli that are described as red, green, blue, and yellow\r\n\r\n## Encoding information\r\n\r\n * Lightness J': for a scalar value, intensity. It must vary linearly with the physical quantity\r\n * hue h' can encode an additional physical quantity, the change of hue should be linearly proportional to the quantity. The hue h' is also ideal in making an image more attractive without interfering with the representation of pixel values.\r\n * chroma is less recognizable and should not be used to encode physical information\r\n  \r\n## Color map uniformization\r\n\r\nFollowing the references and the theories, the uniformization is performed by\r\n\r\n * Making the color map linear in J'\r\n * Lifting the color map (making it lighter, i.e. increasing the minimal value of J')\r\n * Symmetrizing the chroma to avoid further artefacts\r\n * Avoid kinks and edges in the chroma curve\r\n * Bitonic symmetrization or not\r\n\r\n\r\n# Scicomap\r\n\r\n## Choosing the right type of color maps\r\nScicomap provides a bunch of color maps for different applications. The different types of color map are \r\n\r\n```python\r\nimport scicomap as sc\r\nsc_map = sc.SciCoMap()\r\nsc_map.get_ctype()\r\n```\r\n\r\n```\r\ndict_keys(['diverging', 'sequential', 'multi-sequential', 'circular', 'miscellaneous', 'qualitative'])\r\n```\r\n\r\nI'll refer to the [The misuse of colour in science communication](https://www.nature.com/articles/s41467-020-19160-7.pdf) for choosing the right scientific color map\r\n\r\n<td align=\"left\"><img src=\"pics/choosing-cmap.png\" width=\"500\"/></td>\r\n\r\n## Get the matplotlib cmap\r\n\r\n\r\n```python\r\nplt_cmap_obj = sc_map.get_mpl_color_map()\r\n```\r\n\r\n## Choosing the color map for a given type\r\n\r\nGet the color maps for a given type\r\n\r\n```python\r\nsc_map = sc.ScicoSequential()\r\nsc_map.get_color_map_names()\r\n```\r\n\r\n```\r\ndict_keys(['afmhot', 'amber', 'amber_r', 'amp', 'apple', 'apple_r', 'autumn', 'batlow', 'bilbao', 'bilbao_r', 'binary', 'Blues', 'bone', 'BuGn', 'BuPu', 'chroma', 'chroma_r', 'cividis', 'cool', 'copper', 'cosmic', 'cosmic_r', 'deep', 'dense', 'dusk', 'dusk_r', 'eclipse', 'eclipse_r', 'ember', 'ember_r', 'fall', 'fall_r', 'gem', 'gem_r', 'gist_gray', 'gist_heat', 'gist_yarg', 'GnBu', 'Greens', 'gray', 'Greys', 'haline', 'hawaii', 'hawaii_r', 'heat', 'heat_r', 'hot', 'ice', 'inferno', 'imola', 'imola_r', 'lapaz', 'lapaz_r', 'magma', 'matter', 'neon', 'neon_r', 'neutral', 'neutral_r', 'nuuk', 'nuuk_r', 'ocean', 'ocean_r', 'OrRd', 'Oranges', 'pink', 'plasma', 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'rain', 'rainbow', 'rainbow-sc', 'rainbow-sc_r', 'rainforest', 'rainforest_r', 'RdPu', 'Reds', 'savanna', 'savanna_r', 'sepia', 'sepia_r', 'speed', 'solar', 'spring', 'summer', 'tempo', 'thermal', 'thermal_r', 'thermal-2', 'tokyo', 'tokyo_r', 'tropical', 'tropical_r', 'turbid', 'turku', 'turku_r', 'viridis', 'winter', 'Wistia', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd'])\r\n```\r\n\r\n## Assessing a color map\r\n\r\nIn order to assess if a color map should be corrected or not, `scicomap` provides a way to quickly check if the lightness is linear, how asymmetric and smooth is the chroma and how the color map renders for color-deficient users. I will illustrate some of the artefacts using classical images, as the pyramid and specific functions for each kind of color map.\r\n\r\n\r\n### An infamous example\r\n\r\n```python\r\nimport scicomap as sc\r\nimport matplotlib.pyplot as plt\r\n\r\n# the thing that should not be\r\nugly_jet = plt.get_cmap(\"jet\")\r\nsc_map =  sc.ScicoMiscellaneous(cmap=ugly_jet)\r\nf=sc_map.assess_cmap(figsize=(22,10))\r\n```\r\n\r\n\r\n<td align=\"left\"><img src=\"pics/jet.png\" width=\"1000\"/></td>\r\n \r\n\r\nClearly, the lightness is not linear, has edges and kinks. The chroma is not smooth and asymmetrical. See the below illustration to see how bad and how many artefacts the jet color map introduces\r\n\r\n\r\n<td align=\"left\"><img src=\"pics/jet2.png\" width=\"1000\"/></td>\r\n\r\n\r\n## Correcting a color map - Example\r\n\r\n### Sequential color map\r\n\r\nLet's assess the built-in color map `hawaii` without correction:\r\n\r\n```python\r\nsc_map = sc.ScicoSequential(cmap='hawaii')\r\nf=sc_map.assess_cmap(figsize=(22,10))\r\n```\r\n\r\n<td align=\"left\"><img src=\"pics/hawaii.png\" width=\"1000\"/></td>\r\n\r\n\r\nThe color map seems ok, however, the lightness is not linear and the chroma is asymmetrical even if smooth. Those small defects introduce artefact in the information rendering, as we can visualize using the following example\r\n\r\n\r\n```python\r\nf=sc_map.draw_example()\r\n```\r\n\r\n<td align=\"left\"><img src=\"pics/hawaii-examples.png\" width=\"1000\"/></td>\r\n\r\n\r\nWe can clearly see the artefacts, especially for the pyramid for which our eyes should only pick out the corners in the pyramid (ideal situation). Those artefacts are even more striking for color-deficient users (this might not always be the case). Hopefully, `scicomap` provides an easy way to correct those defects:\r\n\r\n```python\r\n# fixing the color map, using the same minimal lightness (lift=None), \r\n# not normalizing to bitone and \r\n# smoothing the chroma\r\nsc_map.unif_sym_cmap(lift=None, \r\n                     bitonic=False, \r\n                     diffuse=True)\r\n\r\n# re-assess the color map after fixing it                     \r\nf=sc_map.assess_cmap(figsize=(22,10))\r\n```\r\n\r\n<td align=\"left\"><img src=\"pics/hawaii-fixed.png\" width=\"1000\"/></td>\r\n\r\n\r\nAfter fixing the color map, the artefacts are less present\r\n\r\n<td align=\"left\"><img src=\"pics/hawaii-fixed-examples.png\" width=\"1000\"/></td>\r\n\r\n# All the built-in color maps\r\n\r\n## Sequential\r\n\r\n<td align=\"left\"><img src=\"pics/seq-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n## Diverging\r\n\r\n\r\n<td align=\"left\"><img src=\"pics/div-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n## Mutli-sequential\r\n\r\n<td align=\"left\"><img src=\"pics/multi-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n## Miscellaneous\r\n\r\n<td align=\"left\"><img src=\"pics/misc-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n## Circular\r\n\r\n<td align=\"left\"><img src=\"pics/circular-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n## Qualitative\r\n\r\n<td align=\"left\"><img src=\"pics/qual-cmaps-all.png\" width=\"500\"/></td>\r\n\r\n# References\r\n\r\n * [The misuse of colour in science communication](https://www.nature.com/articles/s41467-020-19160-7.pdf)\r\n * [Why We Use Bad Color Maps and What You Can Do About It](https://www.kennethmoreland.com/color-advice/BadColorMaps.pdf)\r\n * [THE RAINBOW IS DEAD\u2026LONG LIVE THE RAINBOW! \u2013 SERIES OUTLINE](https://mycarta.wordpress.com/2012/05/29/the-rainbow-is-dead-long-live-the-rainbow-series-outline/)\r\n * [Scientific colour maps](https://www.fabiocrameri.ch/colourmaps/)\r\n * [Picking a colour scale for scientific graphics](https://betterfigures.org/2015/06/23/picking-a-colour-scale-for-scientific-graphics/)\r\n * [ColorCET](https://colorcet.com/)\r\n * [Good Colour Maps: How to Design Them](https://arxiv.org/abs/1509.03700)\r\n * [Perceptually uniform color space for image signals including high dynamic range and wide gamut](https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272)\r\n\r\n\r\n# Changes log\r\n\r\n### 1.0.0\r\n\r\n - Docstring\r\n - Tutorial notebook\r\n - Web documentation\r\n\r\n### 0.4\r\n\r\n - Including files in source distributions\r\n\r\n### 0.3\r\n\r\n - Add a section \"how to use with matplotlib\"\r\n - [Bug] Center diverging color map in examples\r\n\r\n### 0.2\r\n\r\n - [Bug] Fix typo in chart titles\r\n\r\n### 0.1\r\n\r\n - First version\r\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) [2021] [Thomas Bury]  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "data visualization on maps with varying levels of granularity",
    "version": "1.0.1",
    "project_urls": {
        "Tracker": "https://github.com/ThomasBury/scicomap/issues",
        "changelog": "https://github.com/ThomasBury/scicomap",
        "documentation": "https://github.com/ThomasBury/scicomap",
        "homepage": "https://github.com/ThomasBury/scicomap",
        "repository": "https://github.com/ThomasBury/scicomap.git"
    },
    "split_keywords": [
        "visualization",
        " color",
        " uniform",
        " scientific"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c354f0a06af12b25343d52f8ecb18966112ff9c6b5c423bd8ccc3d464ba993f5",
                "md5": "9a4cb147b3d74bc74673f8e81021869c",
                "sha256": "a4f697f33ab3e948ebb5c0716c710d77c57eb6ca675faf9f0578eb11554f5aa5"
            },
            "downloads": -1,
            "filename": "scicomap-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9a4cb147b3d74bc74673f8e81021869c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 2130232,
            "upload_time": "2024-05-15T20:45:31",
            "upload_time_iso_8601": "2024-05-15T20:45:31.615798Z",
            "url": "https://files.pythonhosted.org/packages/c3/54/f0a06af12b25343d52f8ecb18966112ff9c6b5c423bd8ccc3d464ba993f5/scicomap-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "171e3ed6fd29b7936f5f4c19d66720ee874a1724b16e09696be600639aafd7b1",
                "md5": "049519710208c9dbd9e08c4c0681534f",
                "sha256": "b42c995f96791eedbf324e0edc693d801f8b274427480a294e012de071ee763b"
            },
            "downloads": -1,
            "filename": "scicomap-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "049519710208c9dbd9e08c4c0681534f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 2135945,
            "upload_time": "2024-05-15T20:45:34",
            "upload_time_iso_8601": "2024-05-15T20:45:34.175658Z",
            "url": "https://files.pythonhosted.org/packages/17/1e/3ed6fd29b7936f5f4c19d66720ee874a1724b16e09696be600639aafd7b1/scicomap-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-15 20:45:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ThomasBury",
    "github_project": "scicomap",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "scicomap"
}
        
Elapsed time: 0.25402s