Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/deploy_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Install latest mdbook
run: |
tag=$(curl 'https://api.github.com/repos/rust-lang/mdbook/releases/latest' | jq -r '.tag_name')
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
- 1.2.0
- add `fid_graph`: builds a graph with only `z0` and one `+` state per repetition, as an alternative to `compute_graph` without running the prepass
- fix: `import_pulseq_rs` stores `pulse.freq_offset` in Hz, matching the pydissect importer (was rad/s) (#197)
- speed up `import_pulseq_rs` by integrating gradient moments in NumPy instead of once per event, ~4-13x faster on typical sequences (#194)
- fix: cast values to native Python floats before writing the MRD header, so the XML no longer contains `np.float64(...)` (#189)
- fix: update pulseq-rs for full rotation extension support and soft-delay default
- 1.1.2
- fix: diffusion for z states was missing a (2pi)² in the b-value computation
- 1.1.1
Expand Down
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mrzero_core"
version = "1.1.2"
version = "1.2.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
Expand Down
10 changes: 2 additions & 8 deletions documentation/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
- [Pulseq Integration](integration-pulseq.md)
- [Matlab Integration](integration-matlab.md)
- [Pulseq-zero](integration-pulseqzero.md)
- [ISMRMD]()
- [FAQ](faq.md)

---
Expand All @@ -22,7 +21,6 @@
- [Loading and generating phantoms](nifti-generate.md)
- [Specification](nifti-spec.md)
- [Coordinate System](nifti-coords.md)
- [Motion simulation]()
- [State selection](state_selection.md)
- [API overview](api.md)
- [Sequence building blocks](api-sequence.md)
Expand All @@ -35,12 +33,8 @@
- [MR-zero FFT/sign conventions](fft_sign_conventions.md)


# 📊 Pulseq-zero

- [Introduction](pulseqzero-intro.md)
- [Math methods for differentiability](pulseqzero-math.md)


---

[Literature](literature.md)

[Changelog](changelog.md)
17 changes: 17 additions & 0 deletions documentation/src/api-simulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,23 @@ Returns the computed [`Graph`](#graph).
| `size` | used to scale gradients to phantom FOV if the [`Sequence`](api-sequence.md#sequence) sets `normalize_grads=True` |


### `fid_graph`

Alternative to [`compute_graph`](#compute_graph) that skips the pre-pass.
Returns a [`Graph`](#graph) that only contains `z0` and a single `+` state per repetition, which [`execute_graph`](#execute_graph) simulates as FID signal.
Every excitation pulse (`PulseUsage.EXCIT` or `UNDEF`) creates a new `+` state from `z0` and discards the previous one; refocusing pulses (`REFOC`) conjugate it, all other pulses only scale it.
Stimulated echoes and other states are never simulated, so this is only exact for perfectly spoiled sequences.

```python
graph = mr0.fid_graph(seq)
signal = mr0.execute_graph(graph, seq, data)
```

| Parameter | Description |
| --------- | ----------- |
| `seq` | the [`Sequence`](api-sequence.md#sequence) to compute the graph for |


### `execute_graph`

Takes the [`Sequence`](api-sequence.md#sequence), the [`SimData`](api-phantom.md#simdata) and the [`Graph`](#graph) and calculates the measured ADC signal.
Expand Down
1 change: 1 addition & 0 deletions documentation/src/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import MRzeroCore as mr0
- [`mr0.isochromat_sim`](api-simulation.md#isochromat_sim)
- [`mr0.compute_graph`](api-simulation.md#compute_graph)
- [`mr0.compute_graph_ext`](api-simulation.md#compute_graph_ext)
- [`mr0.fid_graph`](api-simulation.md#fid_graph)
- [`mr0.Graph`](api-simulation.md#graph)
- [`mr0.execute_graph`](api-simulation.md#execute_graph)
- [Reconstruction](api-reconstruction.md)
Expand Down
3 changes: 3 additions & 0 deletions documentation/src/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Changelog

{{#include ../../CHANGELOG.md}}
1 change: 0 additions & 1 deletion documentation/src/external/pulseq-zero
Submodule pulseq-zero deleted from b96f11
2 changes: 1 addition & 1 deletion documentation/src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ seq = pp.Sequence()
signal, ktraj_adc = mr0.util.simulate(seq) # seq is PyPulseq object
```
Note, this is will still generate a temporary seq file.
For avoiding seq files completely, check out [Pulseq-zero](https://github.com/pulseq-frame/pulseq-zero)
For avoiding seq files completely, check out [Pulseq-zero](https://github.com/MRsources/pulseq-zero)


## How do I use custom phantoms with B0 field modifications?
Expand Down
7 changes: 7 additions & 0 deletions documentation/src/integration-pulseqzero.md
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
# Pulseq-zero

[Pulseq-zero](https://github.com/MRsources/pulseq-zero) lets you define sequences with [PyPulseq](https://github.com/imr-framework/pypulseq) and optimize them with MR-zero, without writing `.seq` files in between.

- [README](https://github.com/MRsources/pulseq-zero/blob/main/README.md): installation, usage and examples
- [MATH.md](https://github.com/MRsources/pulseq-zero/blob/main/MATH.md): math methods used for differentiability

Examples are listed in the [Playground](playground.md).
2 changes: 1 addition & 1 deletion documentation/src/playground.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ These .seq files could also be measured on any MRI scanner using a Pulseq interp
## MR-zero optimization

Gradient descent optimizations using automatic differentiation by backpropagation.
Some notebooks use [pulseq-zero](https://github.com/pulseq-frame/pulseq-zero) for optimizable sequence definitions with PyPulseq.
Some notebooks use [pulseq-zero](https://github.com/MRsources/pulseq-zero) for optimizable sequence definitions with PyPulseq.

| Notebook | ![](https://colab.research.google.com/assets/colab-badge.svg) |
| -------- | ------------------------------------------------------------- |
Expand Down
1 change: 0 additions & 1 deletion documentation/src/pulseqzero-intro.md

This file was deleted.

1 change: 0 additions & 1 deletion documentation/src/pulseqzero-math.md

This file was deleted.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "maturin"

[project]
name = "mrzerocore"
version = "1.1.2"
version = "1.2.0"
description = "Core functionality of MRzero"
authors = [
{name = "Jonathan Endres", email = "jonathan.endres@uk-erlangen.de"},
Expand Down
1 change: 1 addition & 0 deletions python/MRzeroCore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from .simulation.isochromat_sim import isochromat_sim
from .simulation.pre_pass import compute_graph, compute_graph_ext, merge_graphs, Graph
from .simulation.main_pass import execute_graph
from .simulation.fid_graph import fid_graph
from .simulation.sig_to_mrd import sig_to_mrd
from .reconstruction import reco_adjoint
from .pulseq.exporter import pulseq_write_cartesian
Expand Down
Loading
Loading