Backend-agnostic adapter library for physical simulation ML
Project description
PhysLink
Quick Start → | Evaluate for your lab → | For Domain Scientists →
PhysLink bridges physical simulators and deep RL adapters in one pip install.
Plug your robot trajectories into DreamerV3 (and future backends) without writing boilerplate space definitions, checkpoint logic, or compliance checks. PhysLink handles the plumbing — you keep the science.
Why PhysLink
| Without PhysLink | With PhysLink |
|---|---|
| Hand-write observation/action space mappings per framework | ObservationSpace.from_proprioception(joints=7) |
| Debug silent OOM on Colab at step 8 000 | physlink.doctor() catches it before you start |
| Lose 3h of T4 training on session disconnect | Auto-checkpoint every N steps, resume on reconnect |
| Manually verify energy conservation after adaptation | register_invariant + compliance_report() |
| Stare at loss curves to diagnose model drift | Triptych GIF — Imagination / Real / Difference in one call |
Install
pip install physlink
Works on Google Colab out of the box. No CUDA required for diagnostics and space definitions.
Quick example
import physlink
# 1. Verify your environment (< 15 s)
physlink.doctor()
# 2. Define spaces from your robot config
obs = physlink.ObservationSpace.from_proprioception(joints=7, include_velocity=True)
act = physlink.ActionSpace.continuous(dims=7, bounds=(-1.0, 1.0))
# 3. Adapt
adapter = physlink.DreamerV3Adapter(obs, act)
adapter.fit(trajectories, steps=10_000)
# 4. Validate physics compliance
physlink.register_invariant(adapter, "energy", fn=energy_fn, tolerance=0.05)
report = adapter.compliance_report()
report.plot()
# 5. Visualise
adapter.visualize(trajectories) # → triptych GIF
adapter.export("./run-01/")
Documentation
Full docs at Denis-hamon.github.io/physlink — includes API reference, lab adoption guide, and domain-scientist quickstart.
Status
v0.1.x — public API stable across minor versions (see CHANGELOG).
test-cpu CI passes on every PR. GPU benchmarks run on release tags.
Contributing
See CONTRIBUTING.md. Issues and PRs welcome — use the provided templates.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file physlink-0.1.2.tar.gz.
File metadata
- Download URL: physlink-0.1.2.tar.gz
- Upload date:
- Size: 29.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b901d28e52a5c41179a29de56f9151f25281fe8ffe316d41609a520e424bb19
|
|
| MD5 |
be9f672066d041e3b2749e7a936196e3
|
|
| BLAKE2b-256 |
784cf9b16c48701c11ebe416930f04cb19efb96f59c092b4ef4a028f4c3dc06b
|
Provenance
The following attestation bundles were made for physlink-0.1.2.tar.gz:
Publisher:
publish.yml on Denis-hamon/physlink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
physlink-0.1.2.tar.gz -
Subject digest:
7b901d28e52a5c41179a29de56f9151f25281fe8ffe316d41609a520e424bb19 - Sigstore transparency entry: 1607105951
- Sigstore integration time:
-
Permalink:
Denis-hamon/physlink@8f05bccd03b32b73e4c8991050577e569165af14 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Denis-hamon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8f05bccd03b32b73e4c8991050577e569165af14 -
Trigger Event:
push
-
Statement type:
File details
Details for the file physlink-0.1.2-py3-none-any.whl.
File metadata
- Download URL: physlink-0.1.2-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80d5b510e9e2b362ec01ca47d1576457bf32451bf26896464cdd1dbc4604ff66
|
|
| MD5 |
d78573aa3b8946393d2ea1494a5d7e18
|
|
| BLAKE2b-256 |
447322ba988d28da16936db7a46fc0af9b67c93dfcd6949c6f95950c6ce1a340
|
Provenance
The following attestation bundles were made for physlink-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on Denis-hamon/physlink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
physlink-0.1.2-py3-none-any.whl -
Subject digest:
80d5b510e9e2b362ec01ca47d1576457bf32451bf26896464cdd1dbc4604ff66 - Sigstore transparency entry: 1607106056
- Sigstore integration time:
-
Permalink:
Denis-hamon/physlink@8f05bccd03b32b73e4c8991050577e569165af14 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Denis-hamon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8f05bccd03b32b73e4c8991050577e569165af14 -
Trigger Event:
push
-
Statement type: