User guide#

Installing the package, the platforms it is supported on, running its services and writing the plugins they load. The components and the representations they exchange are described in Explanations.

Documentation sections#

Section

Purpose

This page

Installation, supported platforms, issues and security.

Running the services

The design calls, the warm server and the reconstruction proxy, and their options.

Scanner sequences

Binding a pypulseqpp sequence function to the scanner protocol.

Reconstruction plugins

Writing a reconstruction and running it outside the proxy.

Reconstruction clients

The MRD stream a scanner’s reconstruction client sends the proxy.

Scanning a phantom without a scanner

Scanning an analytic phantom through a stored design, the proxy and a reconstruction plugin, without a scanner.

Explanations

Architecture, protocol resolution, the design store, the scanner IR and raw-data enrichment.

Examples

Executable examples: a course from a protocol to a reconstructed image, and Tours of specialised workflows.

API reference

Exact interfaces, units and defaults.

Developer guide

Development setup and contribution workflow.

Miscellaneous

Licensing, related projects and contributors.

Source

Repository, issues and discussions.

Prerequisites and supported platforms#

pulserver supports Python 3.10 through 3.13. CI tests the lower and upper bounds on Linux and macOS. Windows is not supported: the warm design server forks one process per call and listens on a Unix socket.

Published wheels cover:

Platform

Architectures

Linux

x86-64, glibc (manylinux)

macOS

Apple silicon

The extension pulserver._ext is compiled into each wheel. A source build requires a C compiler, a C++17 compiler, CMake and the Python development headers.

Installation#

Install the package from PyPI:

pip install pulserver

This installs pypulseqpp, which designs the sequences, and the ISMRMRD and DICOM libraries the reconstruction side uses. A reconstruction engine is not a dependency: a reconstruction plugin imports the engine it uses, and the reconstruction proxy imports bartorch into its spare workers when it is installed.

Developer installation is documented in Developer guide.

Reporting issues#

Use the GitHub issue tracker for a reproducible defect, a documentation error, or a narrowly scoped feature request. A useful report includes the pulserver, pypulseqpp and Python versions, the operating system, the affected subpackage and the smallest reproducer: a plugin file, a short .seq file, or the design call and its reply.

A defect in sequence design belongs to the pypulseqpp tracker, and one in a reconstruction algorithm to the bartorch tracker.

Discussions#

GitHub Discussions is the public forum for usage questions and broad design ideas. Reproducible defects belong in the issue tracker.

Security#

The canonical policy is SECURITY.md. Vulnerabilities must be reported through GitHub private vulnerability reporting, not through a public issue.

Safety#

Pulserver designs, converts and reconstructs; it performs no safety check of its own. The timing, gradient, PNS, mechanical-resonance and SAR checks of pypulseqpp compute estimates. Passing these checks does not establish scanner or patient safety.