Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F61821298
convert.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
Thu, May 9, 04:34
Size
2 KB
Mime Type
text/x-python
Expires
Sat, May 11, 04:34 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
17562574
Attached To
rPYPULSEQ pypulseq
convert.py
View Options
from
typing
import
Iterable
,
Union
import
numpy
as
np
def
convert
(
from_value
:
Union
[
float
,
Iterable
],
from_unit
:
str
,
to_unit
:
str
=
str
(),
gamma
:
float
=
42.576e6
)
->
Union
[
float
,
Iterable
]:
""""
Converts gradient amplitude or slew rate from unit `from_unit` to unit `to_unit` with gyromagnetic ratio `gamma`.
Parameters
----------
from_value : float
Gradient amplitude or slew rate to convert from.
from_unit : str
Unit of gradient amplitude or slew rate to convert from.
to_unit : str, optional, default=''
Unit of gradient amplitude or slew rate to convert to.
gamma : float, optional, default=42.576e6
Gyromagnetic ratio. Default is 42.576e6, for Hydrogen.
Returns
-------
out : float
Converted gradient amplitude or slew rate.
Raises
------
ValueError
If an invalid `from_unit` is passed. Must be one of 'Hz/m', 'mT/m', or 'rad/ms/mm'.
If an invalid `to_unit` is passed. Must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s', 'rad/ms/mm/ms'.
"""
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'
]
valid_units
=
valid_grad_units
+
valid_slew_units
if
from_unit
not
in
valid_units
:
raise
ValueError
(
"Invalid from_unit. Must be one of 'Hz/m', 'mT/m', or 'rad/ms/mm' for gradients;"
"or must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s', 'rad/ms/mm/ms' for slew rate."
)
if
to_unit
!=
''
and
to_unit
not
in
valid_units
:
raise
ValueError
(
"Invalid to_unit. Must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s', 'rad/ms/mm/ms' for gradients;"
"or must be one of 'Hz/m/s', 'mT/m/ms', 'T/m/s', 'rad/ms/mm/ms' for slew rate.."
)
if
to_unit
==
''
:
if
from_unit
in
valid_grad_units
:
to_unit
=
valid_grad_units
[
0
]
elif
from_unit
in
valid_slew_units
:
to_unit
=
valid_slew_units
[
0
]
# Convert to standard units
# Grad units
if
from_unit
==
'Hz/m'
:
standard
=
from_value
elif
from_unit
==
'mT/m'
:
standard
=
from_value
*
1e-3
*
gamma
elif
from_unit
==
'rad/ms/mm'
:
standard
=
from_value
*
1e6
/
(
2
*
np
.
pi
)
# Slew units
elif
from_unit
==
'Hz/m/s'
:
standard
=
from_value
elif
from_unit
==
'mT/m/ms'
or
from_unit
==
'T/m/s'
:
standard
=
from_value
*
gamma
elif
from_unit
==
'rad/ms/mm/ms'
:
standard
=
from_value
*
1e9
/
(
2
*
np
.
pi
)
# Convert from standard units
# Grad units
if
to_unit
==
'Hz/m'
:
out
=
standard
elif
to_unit
==
'mT/m'
:
out
=
1e3
*
standard
/
gamma
elif
to_unit
==
'rad/ms/mm'
:
out
=
standard
*
2
*
np
.
pi
*
1e-6
# Slew units
elif
to_unit
==
'Hz/m/s'
:
out
=
standard
elif
to_unit
==
'mT/m/ms'
or
to_unit
==
'T/m/s'
:
out
=
standard
/
gamma
elif
to_unit
==
'rad/ms/mm/ms'
:
out
=
standard
*
2
*
np
.
pi
*
1e-9
return
out
Event Timeline
Log In to Comment