a Python library to interact with a collection of frictionless datapackages
Project description
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
Built Distribution
Hashes for unitpackage-0.8.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d14a88ee7e68f51c1150ad6b976a56f97b56188c70054d49fcef3fb4d36aee5c |
|
MD5 | d2df5c8f1d12ffd2af7a79d75da67d49 |
|
BLAKE2b-256 | 780b77e1af58836f0e8bb2fe09efe66837378bf5fd23d14f41105f76dd87d812 |