Metadata-Version: 2.1
Name: pyicat-plus
Version: 0.2.1
Summary: Python client to ICAT+
Home-page: https://gitlab.esrf.fr/icat/pyicat-plus/
Author: ESRF
Author-email: wout.de_nolf@esrf.fr
License: MIT
Project-URL: Source, https://gitlab.esrf.fr/icat/pyicat-plus/
Project-URL: Documentation, https://pyicat-plus.readthedocs.io/
Project-URL: Tracker, https://gitlab.esrf.fr/icat/pyicat-plus/issues/
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: requests
Requires-Dist: stompest
Requires-Dist: numpy
Requires-Dist: querypool
Requires-Dist: icat-esrf-definitions
Requires-Dist: tqdm
Requires-Dist: h5py
Provides-Extra: bliss
Requires-Dist: blissdata[beacon]; extra == "bliss"
Provides-Extra: test
Requires-Dist: blissdata[beacon]; extra == "test"
Requires-Dist: pytest>=7; extra == "test"
Requires-Dist: pytest-timeout>=2.1; extra == "test"
Requires-Dist: numpy>=1.15; extra == "test"
Requires-Dist: psutil; extra == "test"
Requires-Dist: coilmq; extra == "test"
Requires-Dist: stomp.py>=7; extra == "test"
Requires-Dist: xmltodict; extra == "test"
Requires-Dist: h5py>=3.5; extra == "test"
Provides-Extra: dev
Requires-Dist: blissdata[beacon]; extra == "dev"
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-timeout>=2.1; extra == "dev"
Requires-Dist: numpy>=1.15; extra == "dev"
Requires-Dist: psutil; extra == "dev"
Requires-Dist: coilmq; extra == "dev"
Requires-Dist: stomp.py>=7; extra == "dev"
Requires-Dist: xmltodict; extra == "dev"
Requires-Dist: h5py>=3.5; extra == "dev"
Requires-Dist: black>=22; extra == "dev"
Requires-Dist: flake8>=4; extra == "dev"
Provides-Extra: doc
Requires-Dist: blissdata[beacon]; extra == "doc"
Requires-Dist: pytest>=7; extra == "doc"
Requires-Dist: pytest-timeout>=2.1; extra == "doc"
Requires-Dist: numpy>=1.15; extra == "doc"
Requires-Dist: psutil; extra == "doc"
Requires-Dist: coilmq; extra == "doc"
Requires-Dist: stomp.py>=7; extra == "doc"
Requires-Dist: xmltodict; extra == "doc"
Requires-Dist: h5py>=3.5; extra == "doc"
Requires-Dist: sphinx>=4.5; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=1.16; extra == "doc"
Requires-Dist: pydata-sphinx-theme<0.15; extra == "doc"

# PyIcat-Plus

A python client for ICAT+.

## Getting started

Register raw datasets with ICAT

```bash
icat-store-raw --beamline id00 \
    --proposal id002207 \
    --path /data/visitor/path/to/dataset1 \
    --dataset test1 \
    --sample mysample

icat-store-raw --beamline id00 \
    --proposal id002207 \
    --path /data/visitor/path/to/dataset2 \
    --dataset test2 \
    --sample mysample
```

Register processed data with ICAT

```bash
icat-store-processed --beamline id00 \
    --proposal id002207 \
    --path /data/visitor/path/to/processed \
    --dataset testproc \
    --sample mysample \
    --raw /data/visitor/path/to/dataset1 \
    --raw /data/visitor/path/to/dataset2
```

## Test

With threads

```bash
python -m pip install -e .[test]
pytest
```

With gevent

```bash
python -m pip install -e .[test]
python -m pip install gevent
python -m gevent.monkey --module pytest
```

## NeXus

Each ICAT field has a [NeXus](http://www.nexusformat.org/) equivalent. Create a NeXus compliant
HDF5 file with all ICAT fields:

```bash
icat-nexus-definitions [--url https://...]
```

An example can be found [here](https://gitlab.esrf.fr/icat/pyicat-plus/-/jobs/artifacts/main/download?job=build_hdf5)
and opened with [myhdf5](https://myhdf5.hdfgroup.org/).

## Documentation

https://pyicat-plus.readthedocs.io/
