Skip to main content

NanoVer Python Server

License: MIT Docs DOI Build Status

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

  1. Getting started
  2. Installing the nanover-server package
  3. Running the command line servers
  4. Tutorials
  5. Troubleshooting
  6. Developer installation
  7. Running the tests
  8. 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:

  1. Install the Nanover iMD-XR app
  2. Install the nanover-server package
  3. Run a command line server

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 type checker looks at the type hints in the code to make sure they are consistent and help find potential errors:

mypy 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.2994

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nanover-server 0.1.2994
File Size Uploaded
nanover_server-0.1.2994.tar.gz 116.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nanover-server 0.1.2994
File Interpreter ABI Platform
nanover_server-0.1.2994-py3-none-any.whl Python 3 none any Details

Total release size: 259.4 kB

Release files / nanover_server-0.1.2994.tar.gz

Download URL nanover_server-0.1.2994.tar.gz
Size 116.4 kB
Tags Source
SHA-256 checksum
How to use checksums
55f36bd6402529155177569522a3593bc2aed59344d1b9b9ea2e469e3dac00b1
BLAKE2b-256 checksum
How to use checksums
df9758847d010caf4a3b89a5a76c84bb674db5ea0f4ae6ec8d8f47430b4856e1
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 Sep 13, 2026.

Transparency log

Release files / nanover_server-0.1.2994-py3-none-any.whl

Download URL nanover_server-0.1.2994-py3-none-any.whl
Size 143.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e500c92b9be48bbcf6a0e60ea686f1c665ecebaab26dc07a16e9d0bef991eeea
BLAKE2b-256 checksum
How to use checksums
ea22f77eec21132c1a6f55f2cbeaf250511ad93bb299be7712c9704a9b383b3a
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 Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2994 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page