Skip to main content

a Python library to interact with a collection of frictionless datapackages

Project description

Binder DOI

This module provides a Python library to interact with a collection of frictionless datapackages. Such datapackages consist of a CSV (data) file which is annotated with a JSON file. This allows storing additional information such as units used in the columns of a CSV or store metadata describing the underlying data. Example datapackages can be found here and a JSON could be structured as follows

{
    "resources": [
        {
            "name": "demo_package",
            "type": "table",
            "path": "demo_package.csv",
            "scheme": "file",
            "format": "csv",
            "mediatype": "text/csv",
            "encoding": "utf-8",
            "schema": {
                "fields": [
                    {
                        "name": "t",
                        "type": "number",
                        "unit": "s"
                    },
                    {
                        "name": "j",
                        "type": "number",
                        "unit": "A / m2"
                    }
                ]
            },
            "metadata": {
                "echemdb": {
                    "description": "Sample data for the unitpackage module.",
                    "curation": {
                        "process": [
                            {
                                "role": "experimentalist",
                                "name": "John Doe",
                                "laboratory": "Institute of Good Scientific Practice",
                                "date": "2021-07-09"
                            }
                        ]
                    }
                }
            }
        }
    ]
}

The metadata of an entries' resource in a collection is accessible from the python API.

>>> from unitpackage.collection import Collection
>>> db = Collection.from_local('./doc/files')
>>> entry = db['demo_package_cv']
>>> entry.description
'Sample data for the unitpackage module.'

From the API also a simple 2D plot can be drawn.

>>> entry.plot()

Ultimately, the unitpackage allows for simple transformation of data within a resource into different units.

>>> entry.get_unit('j')
'A / m2'
>>> entry.df
          t         E        j
0  0.000000	-0.196962 0.043009
1  0.011368	-0.196393 0.051408
...
>>> entry.rescale({'E' : 'mV', 'j' : 'uA / m2'}).df
          t           E             j
0  0.000000 -196.961730  43008.842162
1  0.011368 -196.393321  51408.199892
...

Collections for specific measurement types can be created, which provide additional accessibility to the meatadata or simplify the representation of such data in common plot types. An example of such a collection can be found on echemdb.org, which shows Cyclic Voltammetry data annotated following echemdb's metadata schema, which can be stored in a CVCollection and is retrieved from the echemdb data repository.

Detailed installation instructions, description of the modules, advanced usage examples, including local collection creation, are provided in our documentation.

Installation instructions

This package is available on PyPI and can be installed with pip:

pip install unitpackage

The package is also available on conda-forge an can be installed with conda

conda install -c conda-forge unitpackage

or mamba

mamba install -c conda-forge unitpackage

Please consult our documentation for more detailed installation instructions.

License

The contents of this repository are licensed under the GNU General Public License v3.0 or, at your option, any later version.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unitpackage-0.8.4.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

unitpackage-0.8.4-py3-none-any.whl (36.7 kB view details)

Uploaded Python 3

File details

Details for the file unitpackage-0.8.4.tar.gz.

File metadata

  • Download URL: unitpackage-0.8.4.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for unitpackage-0.8.4.tar.gz
Algorithm Hash digest
SHA256 41e6112437b55f56af9e134bb935b010c640b3df9d73bc26740d3db720218731
MD5 8a6b5e25be54ff8c7b64b0ee5990661f
BLAKE2b-256 14aabe2f64d9ac75e66219cefe1d60a355c640425556e2787ef31d3ce6744506

See more details on using hashes here.

File details

Details for the file unitpackage-0.8.4-py3-none-any.whl.

File metadata

  • Download URL: unitpackage-0.8.4-py3-none-any.whl
  • Upload date:
  • Size: 36.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for unitpackage-0.8.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d14a88ee7e68f51c1150ad6b976a56f97b56188c70054d49fcef3fb4d36aee5c
MD5 d2df5c8f1d12ffd2af7a79d75da67d49
BLAKE2b-256 780b77e1af58836f0e8bb2fe09efe66837378bf5fd23d14f41105f76dd87d812

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page