pulserver orchestrates MR acquisitions with Pulseq sequences on clinical scanners: sequence design, scanner preparation and reconstruction. It resolves the protocol an operator edits in the scanner UI against a pypulseqpp sequence function, converts the design into the segmented representation a scanner interpreter plays, and routes the raw data of each series, enriched from the sequence that acquired it, to a reconstruction, normally bartorch. Vendor-specific playout belongs to the scanner interpreters, which call pulserver's services. Passing the checks pypulseqpp provides does not establish scanner or patient safety.
Try the virtual scanner in your browser: https://pulserver.github.io/MaRGE/.
Features
- Protocol resolution: the echo time, repetition time and bandwidth a design achieves, the scan time, and the design error for an infeasible prescription.
- Stateless design calls for every interpreter host process of a scanner, one command per call or through a warm server, and a store of immutable designs named by their content.
- Segmentation of a
NextSequencechain into a binary IR cache, read by an ANSI C library linked into the interpreter, with the prescribed field-of-view offset applied to the logical-frame design as RF and ADC frequency and phase. - MRD enrichment: encoding counters, flags, encoding spaces and trajectories from the sequence.
- Reconstruction plugins run in isolated worker processes, over a live MRD stream, an ISMRMRD file or an assembled acquisition bucket.
Quick start
pip install pulserver bartorch
A sequence plugin binds a pypulseqpp sequence function, a function that returns the designed sequences, to the scanner protocol, and a reconstruction plugin reconstructs the series it acquires. The client of a scan chooses the reconstruction, independently of the sequence. The plugin below evaluates a protocol by designing the sequence, which states the scan time and refuses a prescription the design cannot realize:
# sequences/gre.py
from pypulseqpp import sequences
from pypulseqpp.sequences.sequence.gre2D_sequence import gre2d
from pulserver.design import Evaluation, SequencePlugin, TimeParam, UIParam
class Gre(SequencePlugin):
app = gre2d
protocol = {UIParam.TE: TimeParam("te", range_min=3000, range_max=20000)} # µs
def evaluate(self, system, protocol):
scan = self.app(system, **protocol.arguments)
return Evaluation(protocol, sequences.duration(scan))
# recon/gre.py
import torch
import bartorch.tools as bt
from bartorch import apps, priors
from pulserver import recon
class Pics(recon.ReconPlugin):
def recon(self, context, branch, data):
kspace = torch.from_numpy(data.data.kspace) # (coils, y, x)
maps = bt.ecalib(kspace, maps=1)
image = apps.pics(kspace, maps, regularizers=priors.Wavelet((-1, -2), 0.005))
return recon.ReconResult(image.abs().numpy())
PLUGIN = Pics()
Scan a phantom on the virtual scanner and reconstruct it:
printf '[Limits]\nB0: 3.0\n[Limits End]\n' > limits.txt
pulserver proxy --store designs --port 9002 --plugins recon &
pulserver scan --plugins sequences --plugin gre --reconstruction gre \
--limits limits.txt --store designs --recon 127.0.0.1:9002 --output images
The shipped sequences and reconstructions are found by name after the given
directories, so --plugin gre_radial2d or --reconstruction pics needs no file
of its own. A scan of a shipped sequence that names no reconstruction uses the
shipped reconstruction paired with it. On a scanner, the interpreter makes the
same design calls, and the reconstruction client streams to the same proxy and
names its reconstruction in its config.
Documentation
The user guide covers installation and support, running the two services, and writing scanner-sequence and reconstruction plugins. The explanations describe the architecture, protocol resolution, the design store, the scanner representation, the virtual scanner and raw-data enrichment, and the examples are a course from a protocol to a reconstructed image, followed by Tours of specialised workflows, each executed when the documentation is built. Every version of the documentation is published at https://pulserver.github.io/pulserver/.
Citation
pulserver has no project publication. Cite the formats it is built on in work that uses it:
@article{layton2017pulseq,
title = {Pulseq: a rapid and hardware-independent pulse sequence prototyping framework},
author = {Layton, Kelvin J and Kroboth, Stefan and Jia, Feng and Littin, Sebastian
and Yu, Huijun and Leupold, Jochen and Nielsen, Jon-Fredrik
and St{\"o}cker, Tony and Zaitsev, Maxim},
journal = {Magnetic Resonance in Medicine},
volume = {77},
number = {4},
pages = {1544--1552},
year = {2017},
doi = {10.1002/mrm.26235}
}
@article{inati2017ismrmrd,
title = {{ISMRM} Raw data format: A proposed standard for {MRI} raw datasets},
author = {Inati, Souheil J and Naegele, Joseph D and Zwart, Nicholas R
and Roopchansingh, Vinai and Lizak, Martin J and Hansen, David C
and Liu, Chia-Ying and Atkinson, David and Kellman, Peter
and Kozerke, Sebastian and Xue, Hui and Campbell-Washburn, Adrienne E
and S{\o}rensen, Thomas S and Hansen, Michael S},
journal = {Magnetic Resonance in Medicine},
volume = {77},
number = {1},
pages = {411--421},
year = {2017},
doi = {10.1002/mrm.26089}
}
License
MIT. See License and notices.
Metadata
Release files for pulserver 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pulserver-0.2.1.tar.gz | 1.1 MB | Details |
Built distributions (wheels)
Total release size: 10.4 MB
Release files / pulserver-0.2.1.tar.gz
| Download URL | pulserver-0.2.1.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0de02a02e301dfbdc3399d3a5e76a270935843a988b6032533416abe723ec86c
|
|
BLAKE2b-256 checksum How to use checksums |
e7c8cee8f1789358f2ea5799714653eeb132ebf462d8bc57a262e3055facfc50
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pulserver-0.2.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
40d845614d102da7038e68861a58944706a5d7dd873c8a93ce9c3d89d7929ba0
|
|
BLAKE2b-256 checksum How to use checksums |
c013c016b2b6eb03837705cdd023b416dbfb81ec5a2877f1b0112465dee24d6c
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | pulserver-0.2.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 667.6 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d5093f6366d3c228167961aae4eb9be8385c436ea05b01f11bed36f276e666b2
|
|
BLAKE2b-256 checksum How to use checksums |
4ea1717f87c0b8f188ec0f21fef535c108bff17fe30911d945494cb6fb962fb5
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pulserver-0.2.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
27b340127ea95ba6f97575cd74d2c8c0903693a81bf716e24e726095558f4bf6
|
|
BLAKE2b-256 checksum How to use checksums |
76d6d9830834b8f76f4b8102a38e5748d08bd064bfaf609380a65f5bb57464cd
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pulserver-0.2.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 666.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4ef90db0d8599b64a44f407f44ab9927a12d24885b4fd3c091ba9ea7935e0dcc
|
|
BLAKE2b-256 checksum How to use checksums |
0d458ebf9635a45af2e13d858829c4d8f1e3e92e59f61cdcf4ac1b5988e2f386
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pulserver-0.2.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3ef2b40f853e1419ae57d3060d1972766b720eaef0e332541a19913fc2b14492
|
|
BLAKE2b-256 checksum How to use checksums |
63431a5984ad752d11dcfd7767a43adde961051690deef897cd2b4a199868f94
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pulserver-0.2.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 666.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a96093551306927c9dbb3880ea51e4e632f9062912e7ab4c320ebee680aaade0
|
|
BLAKE2b-256 checksum How to use checksums |
e559df21decfef3d69f04f4fc1205c330bcf3181db1b2e8220bb800dd06b2fcb
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pulserver-0.2.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0c513e406d18d6340d050f1277748c97c9f8f9da1115a3bdfb2d10cb72b41342
|
|
BLAKE2b-256 checksum How to use checksums |
e689dc050c8e93b289ae109ed1e2f57a507377c66e1f5dfafc14dfd91d45a079
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pulserver-0.2.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 664.6 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
196faca042400a63f068897128c44be1701331b09b0847da601794e906adf3f3
|
|
BLAKE2b-256 checksum How to use checksums |
41801174629b03f25767dd7467d08efa33698df2278804cd3bcbaf0f32bfc3e1
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pulserver-0.2.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
787bdb885ae81469e9ff391a4b8f681c2b2c9ec87af427fb388b954f1bf883f1
|
|
BLAKE2b-256 checksum How to use checksums |
4af79fbd5c231664d26b2b832000601de0798b905e4fb62d62cf1195ccb10bc9
|
| 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 8, 2026.
Transparency logRelease files / pulserver-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pulserver-0.2.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 663.5 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
30c5f3975779f2b7e005c6cca08e6e411eb9b7497b8cc1db2fa68b0ed27ec724
|
|
BLAKE2b-256 checksum How to use checksums |
aa9d180b585c523ed8ade859a9810a4c10cca8d0aa0da6ca58c0d8b3e2bcaf4a
|
| 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 8, 2026.
Transparency log