Metadata-Version: 2.1
Name: zndraw
Version: 0.2.0
Summary: 
License: Apache-2.0
Author: zincwarecode
Author-email: zincwarecode@gmail.com
Requires-Python: >=3.9,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: ase (>=3.22.1,<4.0.0)
Requires-Dist: eventlet (>=0.33.3,<0.34.0)
Requires-Dist: flask (>=2.2.3,<3.0.0)
Requires-Dist: flask-socketio (>=5.3.4,<6.0.0)
Requires-Dist: networkx (>=3.1,<4.0)
Requires-Dist: pandas (>=2.0.3,<3.0.0)
Requires-Dist: plotly (>=5.16.1,<6.0.0)
Requires-Dist: pydantic (>=2.2.0,<3.0.0)
Requires-Dist: python-socketio[client] (>=5.8.0,<6.0.0)
Requires-Dist: tqdm (>=4.65.0,<5.0.0)
Requires-Dist: typer[all] (>=0.7.0,<0.8.0)
Requires-Dist: znh5md (>=0.1.6,<0.2.0)
Project-URL: repository, https://github.com/zincware/ZnDraw
Description-Content-Type: text/markdown

[![zincware](https://img.shields.io/badge/Powered%20by-zincware-darkcyan)](https://github.com/zincware)
[![PyPI version](https://badge.fury.io/py/zndraw.svg)](https://badge.fury.io/py/zndraw)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8304530.svg)](https://doi.org/10.5281/zenodo.8304530)
!['Threejs](https://img.shields.io/badge/threejs-black?style=for-the-badge&logo=three.js&logoColor=white)

# ZnDraw

Install via `pip install zndraw`. If you have `pip install pywebview` installed,
ZnDraw will open in a dedicated window.

## CLI

You can use ZnDraw to view a file using the CLI `zndraw traj.xyz`. Supported
file formats include everything that `ase.io` can read and additionally `h5`
files in the H5MD standard.

If you want to view the frames while they are added to the scene you can use
`zndraw -mp traj.xyz`. See `zndraw --help` for more CLI options.

## Python

ZnDraw provides a Python interface. The `zndraw.ZnDraw` object offers `append`,
`extend` as well as assignment operations. More information is available in the
example notebook.

```python
from zndraw import ZnDraw
import ase

zndraw = ZnDraw()

zndraw.socket.sleep(2) # give it some time to fully connect
zndraw[0] = ase.Atoms(
  "H2O", positions=[[0.75, -0.75, 0], [0.75, 0.75, 0], [0, 0, 0]]
  )
```

## User Interface

![ZnDraw UI](https://raw.githubusercontent.com/zincware/ZnDraw/main/misc/zndraw_ui.png "ZnDraw UI")

![ZnDraw UI2](https://raw.githubusercontent.com/zincware/ZnDraw/main/misc/zndraw_protein.gif "ZnDraw Protein GIF")

![ZnDraw UI3](https://raw.githubusercontent.com/zincware/ZnDraw/main/misc/zndraw_draw.png "ZnDraw UI3")

# Development

ZnDraw is developed using https://python-poetry.org/. Furthermore, the
javascript packages have to be installed using https://www.npmjs.com/.

```bash
cd zndraw/static/
npm install
```

