phase_grad_utils.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import numpy as np
  2. def create_k_steps_PI(k_span, steps, PI_factor):
  3. """
  4. A function that returns a k_span gradient span with odd and even gradient steps
  5. """
  6. steps_PI = int(np.ceil(steps/PI_factor))
  7. k_steps = np.array(range(steps_PI + 1))
  8. if steps == 1:
  9. k_steps = np.array([0])
  10. else:
  11. k_steps = (k_steps*PI_factor + steps%PI_factor - np.ceil(steps/2))/ np.floor(steps/ 2)
  12. k_steps = [k_steps[i] for i in range(len(k_steps)) if abs(k_steps[i]) <= 1]
  13. k_steps = np.flip(k_steps, 0)
  14. if len(k_steps)>steps_PI:
  15. k_steps = np.delete(k_steps, -1)
  16. return k_steps * k_span * 0.5
  17. def create_k_steps(k_span, steps):
  18. """
  19. A function that returns a k_span gradient span with odd and even gradient steps
  20. """
  21. k_steps = np.array(range(steps + 1))
  22. if (np.mod(steps, 2) == 0):
  23. k_steps = (k_steps - steps / 2) / (steps / 2)
  24. else:
  25. k_steps = (k_steps - (steps + 1) / 2) / (steps / 2)
  26. k_steps = np.flip(k_steps, 0)
  27. k_steps = np.delete(k_steps, -1)
  28. return k_steps * k_span * 0.5