Comments (4)
@jweine Issue #72 was related to this, fixed in PR #84. Please try it out and let me know!
from pypulseq.
@sravan953 Negative, unit test still fails:
======================================================================
FAIL: test_correct_start_trap (GradWaveformUT.TestGradientWaveform)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/bilal/Insync/[email protected]/GoogleDrive/codebase/pulseq_sequences/bilal_seqs/GradWaveformUT.py", line 16, in test_correct_start_trap
self.assertTrue(np.allclose(wf[:, 0], 0, rtol=1e-10),
AssertionError: False is not true : First gridded sample is not zero
----------------------------------------------------------------------
I feel like the issue arises from the use of interpolation in the points_to_waveform(), as @jweine pointed out. I will take a look at the issue and see if I can come up with a better solution.
from pypulseq.
Update: Behavior is the same between 'Pulseq' and 'PyPulseq'. 'The issue' comes from the convention Siemens uses, shifting gradient sampling by half raster time, or equivalently, sampling the gradients at the center, not the edges. I believe confusion comes from the fact that, we use shifted gradients for visualization, when in fact, it makes more sense to display non shifted ones.
If we also plot the time-axis, as the first sample will not be at time=0, but time=GRT/2, it all makes sense. So I believe there is no bug here, just a confusing feature.
from pypulseq.
@bilal-tasdelen Thanks for following up on this. The existence of this shift is mentioned in the pulseq file format definition when using arbitrary gradients and rf-waveforms but not Trapezoidals. But I couldn't find the actual reason for using the shift / center-sampling. I feel it should be documented that this is a Siemens specific feature, as i don't think it is intuitive without more context (especially for non-siemens sites :)). Personally I think, this behaviour should not be presented to user but handled in the Siemens sequence export. But this is more of a design decision to be discussed also with the Pulseq project. Anyway, thanks for the clarification!
from pypulseq.
Related Issues (20)
- Import with latest version of numpy not possible HOT 1
- Questions about ADC dead time check HOT 6
- unused variable HOT 3
- np.int and np.float HOT 1
- AttributeError when calling calculate_kspace() in sequence.py HOT 2
- CI Tests HOT 1
- Cannot generate trapezoidal gradient only specifying amplitude and duration. HOT 1
- Arguments of make_block_pulse are highly confusing HOT 3
- make_trapezoid with just flat_area fails HOT 6
- Conda Package for Pypulseq HOT 5
- PyPulseq requires GPU compute (cuPy) on Google Colab HOT 2
- KeyError When Reading .seq File generated from MATLAB pulseq 1.4.0 in pypulseq 1.4.0 HOT 5
- Pypulseq ignores BlockDurationRaster Definition in file
- Compatibility with Pulseq 1.3.1 broken HOT 1
- Feature: Sequence `install`
- Sigpy pulses can not be added to sequence HOT 1
- add_blocks interpolation issue HOT 2
- "Identical" shapes not found in event_lib HOT 4
- Numpy float error when importing pypulseq HOT 1
- Change default branch back to main HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pypulseq.