NanoVer Python Server
Repository containing the python based implementations of servers for NanoVer, providing a framework for working with interactive molecular dynamics simulations for computational chemistry research.
This software is designed to be used with NanoVer's iMD-XR client: Meta Quest 3 app (source repo).
This repository is maintained by the Intangible Realities Laboratory, University of Santiago de Compostela, and is distributed under the MIT license. See the list of contributors for the individual authors of the project. If you would like to contribute to NanoVer, please see our contributing file for guidelines on how to do this.
For more information please take a look at the project's documentation.
Contents
- Getting started
- Installing the nanover-server package
- Running the command line servers
- Tutorials
- Troubleshooting
- Developer installation
- Running the tests
- Citation and external libraries
Getting started
The quickest way to see NanoVer in action is to install the NanoVer iMD-XR client app on a Meta Quest 3 headset, install
the nanover-server package in a python environment, and then run one of the package's command line servers with one of
the example files in this repo:
Installing the nanover-server package
NanoVer is available as a PyPI package and as an Anaconda package. The two packages are identical but when using conda you should prefer the Anaconda package to ensure that dependencies are installed in the manner most compatible with your conda environment.
Check out the Installation & Getting Started page in our documentation for more complete instructions on installing NanoVer for those not familiar with conda or python.
Installing the PyPI package
# with pip
pip install nanover-server
# with uv
uv pip install nanover-server
Installing the Anaconda package
# in a fresh environment
conda create -n nanover -c conda-forge irl::nanover-server
# in an existing environment
conda install -c conda-forge irl::nanover-server
Running the command line servers
nanover provides a command line interface for running OpenMM simulations. For example, from the nanover-server-py
directory:
# live openmm simulation
nanover-server --omm ./tutorials/systems/openmm/nanotube.openmm.zip
# static pdb structure
nanover-server --mda ./tutorials/systems/17-ala.pdb
# nanover format recording
nanover-server --playback ./tutorials/systems/recordings/nanotube-example-recording.nanover.zip
Learn more about running a NanoVer server here in our documentation.
Tutorials
The tutorials folder contains Jupyter notebooks that demostrate how to get started NanoVer. Please head to the Tutorials page of the project's documentation for more information!
Troubleshooting
Connecting to servers
If you are having trouble browsing or auto-connecting to servers, you can run nanover-essd-list to verify which local
network servers are visible to your machine. Even if you can't see your server in the server listing, you may be able
to connect to it directly by finding the machine's ip in the local network and the server's port. Connectivity problems
are likely when using bare eduroam, and it is recommended instead to use a private local network.
Developer installation
To install for development, first follow the user installation instructions for either the PyPI or the Anaconda package, and then these additional steps to reinstall the package from the source code in development mode and install additional development dependencies.
Clone the nanover-server-py repository
git clone https://github.com/IRL2/nanover-server-py.git
Enter the nanover-server-py directory
cd nanover-server-py
Install the package from source code
# with pip
pip install -e .[dev]
# with uv
uv pip install -e .[dev]
NOTE: You should repeat this step whenever the dependencies or available command line apps are changed. If in doubt after pulling updates, rerun this installation step.
Running the tests locally
All code changes have to pass a series of automatic tests that attempt to verify code quality and continued functionality of the project. You can run these locally to verify your changes in advance.
Running the unit tests
The unit tests check code functionality of the python libraries. To run them:
pytest tests
Optionally, you can run most of the tests in parallel with pytest-xdist:
pip install pytest-xdist
pytest tests -n auto -m 'not serial'
pytest tests -n0 -m 'serial'
Running the linting and reformatting
The linting checks code style using ruff:
ruff check src
ruff format --check src
Ruff can also automatically fix and reformat the files:
ruff check --fix src
ruff format src
Running the type checker
The mypy type checker looks at the type hints in the code to make sure they are consistent and help find potential errors:
mypy src
We're also trying out ty:
ty check src
Citation and external libraries
Any work that uses NanoVer should cite the following publications:
Stroud, H. J., Wonnacott, M. D., Barnoud, J., Roebuck Williams, R., Dhouioui, M., McSloy, A., Aisa, L., Toledo, L. E., Bates, P., Mulholland, A. J., & Glowacki, D. R. (2025). NanoVer Server: A Python Package for Serving Real-Time Multi-User Interactive Molecular Dynamics in Virtual Reality. Journal of Open Source Software, 10 (110), 8118. https://doi.org/10.21105/joss.08118
Jamieson-Binnie, A. D., O’Connor, M. B., Barnoud, J., Wonnacott, M. D., Bennie, S. J., & Glowacki, D. R. (2020, August 17). Narupa iMD: A VR-Enabled Multiplayer Framework for Streaming Interactive Molecular Simulations. ACM SIGGRAPH 2020 Immersive Pavilion. SIGGRAPH ’20: Special Interest Group on Computer Graphics and Interactive Techniques Conference. https://doi.org/10.1145/3388536.3407891
O’Connor, M., Bennie, S. J., Deeks, H. M., Jamieson-Binnie, A., Jones, A. J., Shannon, R. J., Walters, R., Mitchell, T., Mulholland, A. J., & Glowacki, D. R. (2019). Interactive molecular dynamics from quantum chemistry to drug binding: an open-source multi-person virtual reality framework, The Journal of Chemical Physics, 150 (22), 224703. https://doi.org/10.1021/acs.jcim.0c01030
This project has been made possible by the following open source projects. We gratefully thank them for their efforts, and suggest that you use and cite them:
- ASE (LGPLv3): Atomic simulation environment used for running simulations (citation).
- OpenMM (MIT, LGPLv3): GPU accelerated molecular mechanics library (citation).
- MDAnalysis (GPLv2): Molecular dynamics analysis library (citations).
- NGLView (MIT): IPython/Jupyter widget to interactively view structures and trajectories (citations).
- NumPy (BSD) - Numerical computation library.
- psutil (BSD) - Cross-platform lib for process and system monitoring in Python.
- pytest (MIT) - Python testing framework
- Hypothesis (Mozilla Public License 2.0) - Python testing framework.
Metadata
Release files for nanover-server 0.1.3015
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nanover_server-0.1.3015.tar.gz | 119.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nanover_server-0.1.3015-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 265.2 kB
Release files / nanover_server-0.1.3015.tar.gz
| Download URL | nanover_server-0.1.3015.tar.gz |
|---|---|
| Size | 119.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ca54b7f0515d13fc41a493d2bd832ef3d0f4c32ab190cb014df8dd3b59c132e
|
|
BLAKE2b-256 checksum How to use checksums |
aa9b9252c1b7daf075528b49730f86bfaf9ef9c421df2b15d8b655d9117a727c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / nanover_server-0.1.3015-py3-none-any.whl
| Download URL | nanover_server-0.1.3015-py3-none-any.whl |
|---|---|
| Size | 146.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
be5e5771232e93337e39048ef0d4ddc95c7559a6b7b8e1b052dfa03c30beb0d4
|
|
BLAKE2b-256 checksum How to use checksums |
9ce8a909f73828b63c0185f1041f6d2f11c115facae51e62c870d58a8cf3a62a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log