test_pulseq_loader.py 1.4 KB

1234567891011121314151617181920212223242526272829
  1. import pytest
  2. from ..src.interfaces.pulseq_adapter import PulseqLoader
  3. from ..src.hardware.constraints import HardwareConstraints
  4. @pytest.fixture
  5. def hw():
  6. return HardwareConstraints()
  7. def test_pulseq_loader_removes_zero_duration_blocks(hw):
  8. loader = PulseqLoader(hw)
  9. seq_mock = {
  10. "block_events": [1, 2, 3, 4, 5], # 5 блоков
  11. "block_durations": {1: 5e-3, 2: 0, 3: 3e-3, 4: 0, 5: 1e-3}, # Второй и четвёртый блоки = 0 (должны удалиться)
  12. "blocks": {
  13. 1: {"rf": True, "gx": None, "gy": None, "gz": None, "adc": None},
  14. 2: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": None}, # Длительность 0 (удалится)
  15. 3: {"rf": None, "gx": True, "gy": None, "gz": None, "adc": None},
  16. 4: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": None}, # Длительность 0 (удалится)
  17. 5: {"rf": None, "gx": None, "gy": None, "gz": None, "adc": True},
  18. }
  19. }
  20. parsed_blocks = loader._parse_blocks(seq_mock)
  21. # Проверяем, что блоки с нулевой длительностью удалены
  22. assert len(parsed_blocks) == 3 # Было 5, удалилось 2
  23. assert parsed_blocks[0]["type"] == "RF"
  24. assert parsed_blocks[1]["type"] == "GRAD"
  25. assert parsed_blocks[2]["type"] == "GRAD"