__init__.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import numpy as np
  2. import os
  3. import sys
  4. sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'pypulseq')))
  5. # =========
  6. # BANKER'S ROUNDING FIX
  7. # =========
  8. def round_half_up(n, decimals=0):
  9. """
  10. Avoid banker's rounding inconsistencies; from https://realpython.com/python-rounding/#rounding-half-up
  11. """
  12. multiplier = 10**decimals
  13. return np.floor(np.abs(n) * multiplier + 0.5) / multiplier
  14. # =========
  15. # NP.FLOAT EPSILON
  16. # =========
  17. eps = np.finfo(np.float64).eps
  18. # =========
  19. # PACKAGE-LEVEL IMPORTS
  20. # =========
  21. from LF_scanner.pypulseq.Sequence.sequence import Sequence
  22. from LF_scanner.pypulseq.add_gradients import add_gradients
  23. from LF_scanner.pypulseq.align import align
  24. from LF_scanner.pypulseq.calc_duration import calc_duration
  25. from LF_scanner.pypulseq.calc_ramp import calc_ramp
  26. from LF_scanner.pypulseq.calc_rf_bandwidth import calc_rf_bandwidth
  27. from LF_scanner.pypulseq.calc_rf_center import calc_rf_center
  28. from LF_scanner.pypulseq.make_adc import make_adc
  29. from LF_scanner.pypulseq.make_arbitrary_rf import make_arbitrary_rf
  30. from LF_scanner.pypulseq.make_block_pulse import make_block_pulse
  31. from LF_scanner.pypulseq.make_delay import make_delay
  32. from LF_scanner.pypulseq.make_digital_output_pulse import make_digital_output_pulse
  33. from LF_scanner.pypulseq.make_extended_trapezoid import make_extended_trapezoid
  34. from LF_scanner.pypulseq.make_extended_trapezoid_area import make_extended_trapezoid_area
  35. from LF_scanner.pypulseq.make_gauss_pulse import make_gauss_pulse
  36. from LF_scanner.pypulseq.make_label import make_label
  37. from LF_scanner.pypulseq.make_sinc_pulse import make_sinc_pulse
  38. from LF_scanner.pypulseq.make_trapezoid import make_trapezoid
  39. from LF_scanner.pypulseq.sigpy_pulse_opts import SigpyPulseOpts
  40. from LF_scanner.pypulseq.make_trigger import make_trigger
  41. from LF_scanner.pypulseq.opts import Opts
  42. from LF_scanner.pypulseq.points_to_waveform import points_to_waveform
  43. from LF_scanner.pypulseq.rotate import rotate
  44. from LF_scanner.pypulseq.scale_grad import scale_grad
  45. from LF_scanner.pypulseq.split_gradient import split_gradient
  46. from LF_scanner.pypulseq.split_gradient_at import split_gradient_at
  47. from LF_scanner.pypulseq.supported_labels_rf_use import get_supported_labels
  48. from LF_scanner.pypulseq.traj_to_grad import traj_to_grad
  49. try:
  50. from LF_scanner.pypulseq.SAR.SAR_calc import calc_SAR
  51. except Exception:
  52. calc_SAR = None
  53. try:
  54. from LF_scanner.pypulseq.make_adiabatic_pulse import make_adiabatic_pulse
  55. except Exception:
  56. make_adiabatic_pulse = None
  57. try:
  58. from LF_scanner.pypulseq.make_sigpy_pulse import *
  59. except Exception:
  60. pass