1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-07-22 10:47:43 +02:00
trexio/python/README.md

101 lines
5.0 KiB
Markdown
Raw Permalink Normal View History

2021-09-13 17:21:34 +02:00
2021-09-12 12:27:08 +02:00
# TREXIO Python API
2021-09-08 19:34:16 +02:00
2022-01-17 19:14:58 +01:00
[![PyPI version](https://badge.fury.io/py/trexio.svg)](https://badge.fury.io/py/trexio)
2021-09-14 09:48:55 +02:00
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/TREX-CoE/trexio-tutorials/HEAD)
2021-09-09 15:06:26 +02:00
TREXIO provides a Python API, which enables interactive calls to the library.
2022-01-17 19:14:58 +01:00
It facilitates the development of interfaces between different codes and
2021-09-09 15:06:26 +02:00
can be used to convert data from one input/output file format into another.
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
## Requirements
2021-09-08 19:34:16 +02:00
- python3 (>= 3.6)
2022-06-01 17:42:30 +02:00
- numpy (>= 1.17.3)
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
## Installation from PyPI
2021-09-08 19:34:16 +02:00
2021-09-13 17:21:34 +02:00
In short, you can run the following command:
`pip install trexio`
However, it is good practice to first check for updates of the build-system packages. This can be achieved by running
`python -m pip install --upgrade pip setuptools build wheel`
2021-09-08 19:34:16 +02:00
2022-01-17 19:14:58 +01:00
**Note: we highly recommend to use virtual environments to avoid compatibility issues and to improve reproducibility.**
2021-09-09 15:06:26 +02:00
For more details, see the corresponding part of the [Python documentation](https://docs.python.org/3/library/venv.html#creating-virtual-environments).
2021-09-08 19:53:45 +02:00
**Note: our build farm (GitHub Actions) does not support ARM64 architectures (including the Mac M1/M2 chips). Therefore, `pip install trexio` does not work on an ARM64-based machine. Thus, we recommend to install TREXIO from source on an ARM64-based machine. If one uses a Mac where HDF5 is installed with brew (i.e., `brew install hdf5`), a workaround is to execute the following 2 lines before doing `pip install trexio`:**
- `export H5_CFLAGS="-I$(brew --prefix hdf5)/include"`
- `export H5_LDFLAGS="-L$(brew --prefix hdf5)/lib"`
2021-09-08 19:53:45 +02:00
2021-09-12 12:27:08 +02:00
## Additional requirements (for installation from source)
2021-09-08 19:53:45 +02:00
2022-06-01 17:42:30 +02:00
- C compiler (gcc/icc/clang)
2021-09-08 19:53:45 +02:00
- HDF5 library (>= 1.8)
2021-09-12 12:27:08 +02:00
- pkgconfig (Python package)
- build (Python package)
2022-06-01 17:42:30 +02:00
- pytest (Python package)
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
## Installation from source
2021-09-08 19:34:16 +02:00
2021-09-13 17:21:34 +02:00
1. Download the `trexio-<version>.tar.gz` file with the latest Python API
2. `gzip -cd trexio-<version>.tar.gz | tar xvf -`
3. `cd trexio-<version>`
4. `pip install -r requirements.txt` (this installs all required python dependencies)
2022-01-17 19:14:58 +01:00
5. Export custom environment variables needed for the installation following the procedure below and replacing `/path/to/hdf5/` with your paths.
The following two steps can be skipped if HDF5 is properly configured for `pkg-config` (i.e. if executing `pkg-config --libs hdf5` returns a list of options).
2022-06-01 17:42:30 +02:00
- `export H5_CFLAGS=-I/path/to/hdf5/include`
- `export H5_LDFLAGS=-L/path/to/hdf5/lib`
6. `pip install .` (this installs `trexio` in your environment)
2022-06-01 17:42:30 +02:00
7. `cd test && python -m pytest -v test_api.py` (this executes several tests that verify the installation)
2021-09-08 19:34:16 +02:00
You are ready to go!
2022-01-17 19:14:58 +01:00
**Note:**
installation based on `pip` compiles its own C extension (shared library) called `pytrexio`.
2021-09-12 12:27:08 +02:00
This extension is built from the TREXIO source files coupled to the wrapper code generated by [SWIG](http://www.swig.org/).
2021-09-13 17:21:34 +02:00
The compiler options during this installation may differ from the ones used to compile the primary TREXIO API in C.
Furthermore, custom compiler flags provided to `./configure` or `make` are not applied to the Python API.
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
## Examples
2021-09-08 19:34:16 +02:00
2022-01-17 19:14:58 +01:00
An interactive Jupyter notebook called `tutorial_benzene.ipynb` is provided in the `examples` directory.
2021-09-13 17:21:34 +02:00
The notebook can be lauched either locally (see [next section](#Running-the-notebook) for details) or using [pre-built environment on Binder](https://mybinder.org/v2/gh/TREX-CoE/trexio-tutorials/HEAD?filepath=notebooks%2Ftutorial_benzene.ipynb).
2021-09-08 19:34:16 +02:00
2021-09-09 15:06:26 +02:00
Jupyter can be installed using `pip install jupyter`. If you are not familiar with it, feel free to consult the [Jupyter documentation](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html).
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
### Running the notebook
2021-09-08 19:34:16 +02:00
2021-09-09 15:06:26 +02:00
The example notebook can be launched using the following command:
2021-09-08 19:34:16 +02:00
2021-09-09 15:06:26 +02:00
`jupyter notebook tutorial_benzene.ipynb`
2021-09-08 19:34:16 +02:00
2021-09-12 12:27:08 +02:00
### Additional steps needed to run a custom virtual environment in Jupyter notebooks
2021-09-08 19:34:16 +02:00
2021-09-09 17:29:17 +02:00
In some cases, it may happen that the Jupyter kernels in the activated virtual environment (e.g. `myvenv`) still point to the system-wide python binaries and not to the environment ones.
This will result in `ImportError` when importing `trexio` in the notebook cell. In order to avoid this, the `myvenv` has to be installed as an additional kernel.
2022-01-17 19:14:58 +01:00
This requires `ipykernel` python package, which usually comes together with the Jupyter installation. If this is not the case, run `pip install ipykernel`.
2021-09-09 15:06:26 +02:00
You can install `myvenv` as a kernel by executing the following command:
2021-09-08 19:34:16 +02:00
2021-09-09 15:06:26 +02:00
`python3 -m ipykernel install --user --name=myvenv`
2021-09-08 19:34:16 +02:00
2022-01-17 19:14:58 +01:00
Now you can launch a Jupyter notebook. Once it is open, make sure that your virtual environment is selected as the current kernel.
2021-09-09 15:06:26 +02:00
If this is not the case, try this:
2021-09-08 19:34:16 +02:00
1. Press the `Kernel` button in the navigation panel
2. In the output list of options select `Change kernel`
3. Find the name of your virtual environment (e.g. `myvenv`) in the list and select it
2021-09-09 15:06:26 +02:00
That's it, you have activated the custom virtual environment called `myvenv` in your notebook.
2021-09-08 19:34:16 +02:00
2021-09-09 15:06:26 +02:00
To uninstall the kernel named `myvenv`, execute the following command:
2021-09-08 19:53:45 +02:00
2021-09-09 15:06:26 +02:00
`jupyter kernelspec uninstall myvenv`