ndx-odor-metadata
NWB extension to store odor stimulus metadata with DynamicTable format. Entries that have a PubChem and stim_types indicate odor/chemical will also be queried with pubchempy for more information.
This is in alpha development stages WITHOUT any appropriate tests yet. Please use with discretion.
Requirement
The requirements and additional development requirements can be seen in pyproject.toml file.
Here are the minimum requirements:
python >=3.8pynwb>=1.5.0,<3hdmf>=3.4.7,<4pubchempy>=1.0.4pyyaml>=5.0
Installation
You can install via pip:
pip install ndx-odor-metadata
Or conda:
conda install -c fleischmannlab ndx-odor-metadata
Or directly from the git repository:
pip install git+https://gitlab.com/fleischmann-lab/ndx/ndx-odor-metadata
Usage
Main usage
from ndx_odor_metadata import OdorMetaData
odor_table = OdorMetaData(name='odor_table', description='an odor table')
odor_table.add_stimulus(
pubchem_id = 7662.0,
stim_name = "3-Phenylpropyl isobutyrate",
raw_id = 3,
stim_id = 1,
stim_types = "odor",
chemical_dilution_type='vaporized',
chemical_concentration = 0.01,
chemical_concentration_unit='%',
chemical_solvent = "Mineral Oil",
chemical_provider = "Sigma",
stim_description = "Legit odor stimulus #1",
)
nwbfile.add_acquisition(odor_table)
Details on arguments
| name | dtype | doc | default_value | quantity | |
|---|---|---|---|---|---|
| 0 | stim_name | text | Stimulus name, e.g. "hexanal" or "sound" | nan | nan |
| 1 | pubchem_id | float | PubChem ID, NaN indicates non-(standard)-odor stimulus |
nan | ? |
| 2 | raw_id | text | Raw acquisition stimulus ID. Will be converted to str. |
nan | nan |
| 3 | raw_id_dtype | text | The actual dtype of raw_id value. Useful for (re)casting. |
N/A | ? |
| 4 | stim_id | text | Preferred stimulus ID, which can be used to remap acquisition stimulus id raw_id. Will be converted to str. If not explicitly given, will copy from raw_id |
nan | ? |
| 5 | stim_id_dtype | text | The actual dtype of stim_id value. Useful for (re)casting. |
N/A | ? |
| 6 | stim_types | text | Type(s) of stimulus, e.g. 'odor', 'sound', 'control', 'CS', 'US', ... | nan | nan |
| 7 | stim_types_index | nan | Index for stim_types |
nan | nan |
| 8 | stim_description | text | Human-readable description, notes, comments of each stimulus | N/A | ? |
| 9 | chemical_dilution_type | text | Type of dilution, e.g. 'volume/volume', 'vaporized' | N/A | ? |
| 10 | chemical_concentration | float | Concentration of chemical | nan | ? |
| 11 | chemical_concentration_unit | text | Unit of concentration, e.g. "%" or "M" | N/A | ? |
| 12 | chemical_solvent | text | Solvent to dilute the chemicals in, e.g. 'mineral oil' | N/A | ? |
| 13 | chemical_provider | text | Provider of the chemicals, e.g. 'Sigma' | N/A | ? |
| 14 | nonchemical_details | text | Information about non-chemical/odor stimulus, e.g. 'sound' frequencies | N/A | ? |
| 15 | is_validated | bool | Whether the stimulus, if chemical/odor, is validated against PubChem (or other sources listed in validation_info.If does not have a valid PubChem ID, this assumes to default False value |
False | ? |
| 16 | validation_details | text | Additional information/details/notes about stimulus validation, e.g. source, software used & version, validation date, ... | N/A | ? |
| 17 | pubchem_cid | float | PubChem CID, NaN indicates non-(standard)-odor stimulus |
nan | ? |
| 18 | chemical_IUPAC | text | Official chemical IUPAC name | N/A | ? |
| 19 | chemical_SMILES | text | Canonical SMILES | N/A | ? |
| 20 | chemical_synonyms | text | List of chemical synonyms | ? | |
| 21 | chemical_synonyms_index | nan | Index for chemical_synonyms |
nan | ? |
| 22 | chemical_molecular_formula | text | Molecular formula of chemical used | N/A | ? |
| 23 | chemical_molecular_weight | float | Molecular weight of chemical used | nan | ? |
Demonstration
For more detailed demonstration, please visit the demo folder.
TODOs
- Create test
- Update documentation for
sphinx(also update style) - Publish on
conda - Publish on
pypi - Fetch pubchem data using
pubchempy - Use
pyproject.tomlinstead ofsetup.py
This extension was created using ndx-template.
Metadata
Release files for ndx-odor-metadata 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ndx-odor-metadata-0.1.1.tar.gz | 23.5 kB | Without provenance | Details for ndx-odor-metadata-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ndx_odor_metadata-0.1.1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for ndx_odor_metadata-0.1.1-py2.py3-none-any.whl |
Total release size: 37.5 kB
Release files / ndx-odor-metadata-0.1.1.tar.gz
| Download URL | ndx-odor-metadata-0.1.1.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7de42b883f49e1c964d17437087b85ce95af5bb8c948ac7b13858570de8a3048
|
|
BLAKE2b-256 checksum How to use checksums |
8d0af5c8d707028accc01baf2b6e80546b250189d9462c9b6a0810763c6270e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / ndx_odor_metadata-0.1.1-py2.py3-none-any.whl
| Download URL | ndx_odor_metadata-0.1.1-py2.py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
80ee1d4403af9d11ece87f9bb05ee07c1b02252d86e943145b65ffd55ac34368
|
|
BLAKE2b-256 checksum How to use checksums |
5fb913cac8e6823f356f8b0e3daac48d941766ca7dd1156a1053dbae41f3cf2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Security for ndx-odor-metadata 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.