Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F66487446
opts.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jun 10, 20:56
Size
3 KB
Mime Type
text/x-python
Expires
Wed, Jun 12, 20:56 (2 d)
Engine
blob
Format
Raw Data
Handle
18229827
Attached To
rPYPULSEQ pypulseq
opts.py
View Options
from
pypulseq.convert
import
convert
class
Opts
:
"""
System limits of an MR scanner.
Attributes
----------
adc_dead_time : float, default=0
Dead time for ADC readout pulses.
gamma : float, default=42.576e6
Gyromagnetic ratio. Default gamma is specified for Hydrogen.
grad_raster_time : float, default=10e-6
Raster time for gradient waveforms.
grad_unit : str, default='Hz/m'
Unit of maximum gradient amplitude. Must be one of 'Hz/m', 'mT/m' or 'rad/ms/mm'.
max_grad : float, default=0
Maximum gradient amplitude.
max_slew : float, default=0
Maximum slew rate.
rf_dead_time : float, default=0
Dead time for radio-frequency pulses.
rf_raster_time : float, default=1e-6
Raster time for radio-frequency pulses.
rf_ringdown_time : float, default=0
Ringdown time for radio-frequency pulses.
rise_time : float, default=0
Rise time for gradients.
slew_unit : str, default='Hz/m/s'
Unit of maximum slew rate. Must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s' or 'rad/ms/mm/ms'.
Raises
------
ValueError
If invalid `grad_unit` is passed. Must be one of 'Hz/m', 'mT/m' or 'rad/ms/mm'.
If invalid `slew_unit` is passed. Must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s' or 'rad/ms/mm/ms'.
"""
def
__init__
(
self
,
adc_dead_time
:
float
=
0
,
gamma
:
float
=
42.576e6
,
grad_raster_time
:
float
=
10e-6
,
grad_unit
:
str
=
'Hz/m'
,
max_grad
:
float
=
0
,
max_slew
:
float
=
0
,
rf_dead_time
:
float
=
0
,
rf_raster_time
:
float
=
1e-6
,
rf_ringdown_time
:
float
=
0
,
rise_time
:
float
=
0
,
slew_unit
:
str
=
'Hz/m/s'
):
valid_grad_units
=
[
'Hz/m'
,
'mT/m'
,
'rad/ms/mm'
]
valid_slew_units
=
[
'Hz/m/s'
,
'mT/m/ms'
,
'T/m/s'
,
'rad/ms/mm/ms'
]
if
grad_unit
not
in
valid_grad_units
:
raise
ValueError
(
f
"Invalid gradient unit. Must be one of 'Hz/m', 'mT/m' or 'rad/ms/mm'. "
f
"Passed: {grad_unit}"
)
if
slew_unit
not
in
valid_slew_units
:
raise
ValueError
(
f
"Invalid slew rate unit. Must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s' or 'rad/ms/mm/ms'. "
f
"Passed: {slew_unit}"
)
if
max_grad
==
0
:
max_grad
=
convert
(
from_value
=
40
,
from_unit
=
'mT/m'
,
gamma
=
gamma
)
else
:
max_grad
=
convert
(
from_value
=
max_grad
,
from_unit
=
grad_unit
,
to_unit
=
'Hz/m'
,
gamma
=
gamma
)
if
max_slew
==
0
:
max_slew
=
convert
(
from_value
=
170
,
from_unit
=
'T/m/s'
,
gamma
=
gamma
)
else
:
max_slew
=
convert
(
from_value
=
max_slew
,
from_unit
=
slew_unit
,
to_unit
=
'Hz/m'
,
gamma
=
gamma
)
if
rise_time
!=
0
:
max_slew
=
0
self
.
max_grad
=
max_grad
self
.
max_slew
=
max_slew
self
.
rise_time
=
rise_time
self
.
rf_dead_time
=
rf_dead_time
self
.
rf_ringdown_time
=
rf_ringdown_time
self
.
adc_dead_time
=
adc_dead_time
self
.
rf_raster_time
=
rf_raster_time
self
.
grad_raster_time
=
grad_raster_time
self
.
gamma
=
gamma
def
__str__
(
self
):
s
=
"System limits:"
s
+=
"
\n
max_grad: "
+
str
(
self
.
max_grad
)
+
str
(
self
.
grad_unit
)
s
+=
"
\n
max_slew: "
+
str
(
self
.
max_slew
)
+
str
(
self
.
slew_unit
)
s
+=
"
\n
rise_time: "
+
str
(
self
.
rise_time
)
s
+=
"
\n
rf_dead_time: "
+
str
(
self
.
rf_dead_time
)
s
+=
"
\n
rf_ring_time: "
+
str
(
self
.
rf_ringdown_time
)
s
+=
"
\n
adc_dead_time: "
+
str
(
self
.
adc_dead_time
)
s
+=
"
\n
rf_raster_time: "
+
str
(
self
.
rf_raster_time
)
s
+=
"
\n
grad_raster_time: "
+
str
(
self
.
grad_raster_time
)
s
+=
"
\n
gamma: "
+
str
(
self
.
gamma
)
return
s
Event Timeline
Log In to Comment