mrzerocore 0.2.10__tar.gz → 0.2.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/CHANGELOG.md +2 -0
  2. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/Cargo.lock +1 -1
  3. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/Cargo.toml +1 -1
  4. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/PKG-INFO +3 -3
  5. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/_toc.yml +1 -0
  6. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/brainweb/brainweb_data.json +1 -1
  7. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/simulation/main_pass.py +21 -8
  8. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/.github/workflows/pypi_publish.yml +0 -0
  9. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/.gitignore +0 -0
  10. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/.readthedocs.yaml +0 -0
  11. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/EULA.txt +0 -0
  12. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/LICENSE +0 -0
  13. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/README.md +0 -0
  14. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/_config.yml +0 -0
  15. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/phantom.md +0 -0
  16. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/reco.md +0 -0
  17. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/sequence.md +0 -0
  18. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/simulation/isochromat_sim.md +0 -0
  19. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/simulation/pdg_sim.md +0 -0
  20. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/simulation.md +0 -0
  21. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api/util.md +0 -0
  22. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/api.md +0 -0
  23. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/intro.md +0 -0
  24. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/logo.png +0 -0
  25. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/phantom_generation.md +0 -0
  26. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/AdjDataUser2gB0_transversal_0.08moving_average.mat +0 -0
  27. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/flash.ipynb +0 -0
  28. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/flash_DWI.ipynb +0 -0
  29. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr00_FLASH_2D_ernstAngle_opt.ipynb +0 -0
  30. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_CS_cartesian_seq.ipynb +0 -0
  31. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_CS_radial_seq.ipynb +0 -0
  32. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_DREAM_STE_seq.ipynb +0 -0
  33. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_DREAM_STID_seq.ipynb +0 -0
  34. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_DWI_GRE_2D_seq.ipynb +0 -0
  35. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_EPI_2D_seq.ipynb +0 -0
  36. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_FID_seq.ipynb +0 -0
  37. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_FLASH_2D_seq.ipynb +0 -0
  38. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_GRE_to_FLASH.ipynb +0 -0
  39. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_RARE_2D_seq.ipynb +0 -0
  40. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_SE_CPMG_seq.ipynb +0 -0
  41. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_STE_3pulses_5echoes_seq.ipynb +0 -0
  42. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_bSSFP_2D_seq.ipynb +0 -0
  43. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_burst_TSE.ipynb +0 -0
  44. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_opt_FLASH_2D_IR_Fit_T1.ipynb +0 -0
  45. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_opt_FLASH_2D_IR_voxelNN_T1.ipynb +0 -0
  46. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_pypulseq_exmpls_seq.ipynb +0 -0
  47. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/mr0_upload_seq.ipynb +0 -0
  48. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/numerical_brain_cropped.mat +0 -0
  49. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/overview.md +0 -0
  50. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/ptx_phantom.p +0 -0
  51. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/pulseq_flash.ipynb +0 -0
  52. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/pulseq_rf_shim.ipynb +0 -0
  53. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/pulseq_sim_pTx.ipynb +0 -0
  54. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/seqs/flash pTx CP.seq +0 -0
  55. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/seqs/flash pTx EP.seq +0 -0
  56. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/seqs/flash pTx QM.seq +0 -0
  57. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/playground_mr0/subject05.npz +0 -0
  58. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/requirements.txt +0 -0
  59. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/resources/logo.blend +0 -0
  60. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/resources/logo.png +0 -0
  61. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/documentation/resources/studio_small_09_2k.hdr +0 -0
  62. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/pyproject.toml +0 -0
  63. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/__init__.py +0 -0
  64. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/brainweb/__init__.py +0 -0
  65. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/brainweb/brainweb_data_sources.txt +0 -0
  66. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/brainweb/output/.gitkeep +0 -0
  67. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/custom_voxel_phantom.py +0 -0
  68. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/sim_data.py +0 -0
  69. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/phantom/voxel_grid_phantom.py +0 -0
  70. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/exporter.py +0 -0
  71. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/exporter_v2.py +0 -0
  72. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/helpers.py +0 -0
  73. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_exporter.py +0 -0
  74. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/__init__.py +0 -0
  75. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/adc.py +0 -0
  76. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/helpers.py +0 -0
  77. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulse.py +0 -0
  78. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/__init__.py +0 -0
  79. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/adc.py +0 -0
  80. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/block.py +0 -0
  81. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/definitons.py +0 -0
  82. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/gradient.py +0 -0
  83. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/helpers.py +0 -0
  84. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/rf.py +0 -0
  85. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/pulseq_file/trap.py +0 -0
  86. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/pulseq/pulseq_loader/spoiler.py +0 -0
  87. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/reconstruction.py +0 -0
  88. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/sequence.py +0 -0
  89. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/simulation/isochromat_sim.py +0 -0
  90. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/simulation/pre_pass.py +0 -0
  91. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/python/MRzeroCore/util.py +0 -0
  92. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/src/lib.rs +0 -0
  93. {MRzeroCore-0.2.10 → MRzeroCore-0.2.11}/src/pre_pass.rs +0 -0
@@ -1,3 +1,5 @@
1
+ - 0.2.11
2
+ - (re-)introduced return_mag_z parameter in pdg simulation
1
3
  - 0.2.10
2
4
  - change default FOV in all notebooks to phantom size (200 mm)
3
5
  - Use Open in Colab badges in the playground instead of links
@@ -53,7 +53,7 @@ dependencies = [
53
53
 
54
54
  [[package]]
55
55
  name = "mrzero_core"
56
- version = "0.2.10"
56
+ version = "0.2.11"
57
57
  dependencies = [
58
58
  "num-complex",
59
59
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "mrzero_core"
3
- version = "0.2.10"
3
+ version = "0.2.11"
4
4
  edition = "2021"
5
5
 
6
6
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MRzeroCore
3
- Version: 0.2.10
3
+ Version: 0.2.11
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -18,9 +18,9 @@ Summary: Core functionality of MRzero
18
18
  Author-email: Jonathan Endres <jonathan.endres@uk-erlangen.de>
19
19
  Requires-Python: >=3.9
20
20
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
21
- Project-URL: Documentation, https://mrzero-core.readthedocs.io/
22
- Project-URL: Repository, https://github.com/MRsources/MRzero-Core
23
21
  Project-URL: MRzero-Paper, https://arxiv.org/abs/2002.04265
22
+ Project-URL: Repository, https://github.com/MRsources/MRzero-Core
23
+ Project-URL: Documentation, https://mrzero-core.readthedocs.io/
24
24
 
25
25
  [![Documentation Status](https://readthedocs.org/projects/mrzero-core/badge/?version=latest)](https://mrzero-core.readthedocs.io/en/latest/?badge=latest)
26
26
 
@@ -42,5 +42,6 @@ chapters:
42
42
  - file: playground_mr0/mr00_FLASH_2D_ernstAngle_opt.ipynb
43
43
 
44
44
  - file: playground_mr0/flash
45
+ - file: playground_mr0/flash_DWI
45
46
  - file: playground_mr0/pulseq_flash
46
47
  - file: playground_mr0/pulseq_sim_pTx
@@ -33,7 +33,7 @@
33
33
  "gm": {
34
34
  "PD": 0.8,
35
35
  "T1": 1.56,
36
- "T2": 0.0083,
36
+ "T2": 0.083,
37
37
  "T2'": 0.32,
38
38
  "D": 0.83
39
39
  },
@@ -18,12 +18,9 @@ def execute_graph(graph: Graph,
18
18
  min_emitted_signal: float = 1e-2,
19
19
  min_latent_signal: float = 1e-2,
20
20
  print_progress: bool = True,
21
- ) -> torch.Tensor:
22
- """Calculate the signal of the sequence by computing the graph.
23
-
24
- This function can optionally return the + or z magnetisation and the
25
- encoding of all states, if requested. The encoding consists of the signal
26
- of a distribution and its k-t space trajectory.
21
+ return_mag_z: int | bool | None = None,
22
+ ) -> torch.Tensor | list:
23
+ """Calculate the signal of the sequence by executing the phase graph.
27
24
 
28
25
  Parameters
29
26
  ----------
@@ -40,11 +37,18 @@ def execute_graph(graph: Graph,
40
37
  Should be <= than min_emitted_signal.
41
38
  print_progress : bool
42
39
  If true, the current repetition is printed while simulating.
40
+ return_mag_z : int or bool, optional
41
+ If set, returns the longitudinal magnetisation of either the given
42
+ repetition (int) or all repetitions (``True``).
43
+
43
44
 
44
45
  Returns
45
46
  -------
46
47
  signal : torch.Tensor
47
48
  The simulated signal of the sequence.
49
+ mag_z : torch.Tensor | list[torch.Tensor]
50
+ The longitudinal magnetisation of the specified or all repetition(s).
51
+
48
52
  """
49
53
  if seq.normalized_grads:
50
54
  grad_scale = 1 / data.size
@@ -67,6 +71,7 @@ def execute_graph(graph: Graph,
67
71
  # Calculate kt_vec ourselves for autograd
68
72
  graph[0][0].kt_vec = torch.zeros(4, device=data.device)
69
73
 
74
+ mag_z = []
70
75
  for i, (dists, rep) in enumerate(zip(graph[1:], seq)):
71
76
  if print_progress:
72
77
  print(f"\rCalculating repetition {i+1} / {len(seq)}", end='')
@@ -129,7 +134,8 @@ def execute_graph(graph: Graph,
129
134
  # Use the same adc phase for all coils
130
135
  adc_rot = torch.exp(1j * rep.adc_phase).unsqueeze(1)
131
136
 
132
-
137
+ mag_z_rep = []
138
+ mag_z.append(mag_z_rep)
133
139
  for dist in dists:
134
140
  # Create a list only containing ancestors that were simulated
135
141
  ancestors = list(filter(
@@ -142,6 +148,9 @@ def execute_graph(graph: Graph,
142
148
  continue # skip dists for which no ancestors were simulated
143
149
 
144
150
  dist.mag = sum([calc_mag(ancestor) for ancestor in ancestors])
151
+ if dist.dist_type in ['z0', 'z'] and return_mag_z in [i, True]:
152
+ mag_z_rep.append(dist.mag)
153
+
145
154
  # The pre_pass already calculates kt_vec, but that does not
146
155
  # work with autograd -> we need to calculate it with torch
147
156
  if dist.dist_type == 'z0':
@@ -224,6 +233,10 @@ def execute_graph(graph: Graph,
224
233
  print(" - done")
225
234
 
226
235
  # Only return measured samples
227
- return torch.cat([
236
+ measured = torch.cat([
228
237
  sig[rep.adc_usage > 0, :] for sig, rep in zip(signal, seq)
229
238
  ])
239
+ if return_mag_z is not None:
240
+ return measured, mag_z
241
+ else:
242
+ return measured
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes