# Explanations

Conceptual background for the interfaces documented in {doc}`../api/index` and
used in the {doc}`user guide <../user-guide/index>`. These pages state the
components, the representations exchanged between them and the conventions the
rest of the documentation assumes.

| Explanation | What it covers |
| --- | --- |
| {doc}`architecture` | The four layers of an acquisition through pulserver, the service each machine runs, and the representation exchanged at each boundary. |
| {doc}`protocol` | How a prescription edited in the scanner UI is resolved into the protocol a sequence plays, and the units and precision it is exchanged in. |
| {doc}`designs` | The identity of a design, the checks it passes before it is stored, the design store, and how the reconstruction side finds a design. |
| {doc}`scanner-representation` | The base blocks, virtual segments and execution stream a scanner interpreter plays, and how pulserver derives them from a Pulseq sequence. |
| {doc}`virtual-scanner` | The stand-ins that replace the scanner in tests: the playout, the signal model, the Bloch simulation and the reconstruction client. |
| {doc}`reconstruction` | Enrichment of the raw data from the sequence that played it, and the routing of each series to a reconstruction. |
| {doc}`calibration` | Coil sensitivity maps, noise prewhitening and coil compression as transforms of the receive channels, and the conditions under which sensitivity maps are reused. |

Implementation detail -- the cache layout, the wire format, the proxy's
buffers and workers, and the Bloch engine -- is in
{doc}`../developer-guide/internals/index`.

```{toctree}
:hidden:

architecture
protocol
designs
scanner-representation
virtual-scanner
reconstruction
calibration
```
