Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repetitiontime #13

Closed

Conversation

agahkarakuzu
Copy link
Collaborator

Suggestion: Replace RepetitionTimeInversion with RepetitionTimePreparation to have a more flexible parameter that can also be used for sequences with preparation blocks other than a single inversion pulse.

The definition of RepetitionTimeExcitation remains as suggested in the original proposal by @KirstieJane. Some edits are made on the description to comply with changes regarding RepetitionTimeInversion and for clarity.

Many thanks to @mathieuboudreau and @spinicist for their valuable contributions.

Copy link
Member

@KirstieJane KirstieJane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @agahkarakuzu!

Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
- Get rid of line breaks and white spaces 
- Remove diff w.r.t. previous version
- Wrapping long lines
- Remove residual +
Copy link
Member

@KirstieJane KirstieJane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @agahkarakuzu!!

I have a question for discussion tomorrow about where to put all the explanation of the difference between RepetitionTimeExcitation and RepetitionTimePreparation. My gut would be to have the bullet points be shorter and then have a paragraph explaining the logic below, but Iets just see what everyone on the call would prefer as this is definitely not something I'm terribly bothered about!

Proposal_RepetitionTime.md Outdated Show resolved Hide resolved
|---------|------------------------------------------|--------------------------------|
| VFA | Variable Flip Angle | T1Map |
| IRT1 | Inversion Recovery | T1Map |
| MP2RAGE | Magnetization Prepared 2 Gradient Echoes | T1Map, UNIT1 |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since you already have MP2RAGE here, how about its more generic form MPXRAGE? or could you use the more generic name now, and the json would indicate there were 2 echos.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can imagine MP2RAGE being the popular use case . From this perspective, keeping it as is seems reasonable. On the other hand, your suggestion would make this label semantically more accurate for multi-echo acquisitions and as you noted the rest can be revealed by the jsons. I don't have a strong opinion about this, can be briefly discussed in the meeting I guess @KirstieJane ?


| Suffix | Method Name | Output Name |
|---------|------------------------------------------|--------------------------------|
| VFA | Variable Flip Angle | T1Map |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is akin to using FLASH and can give rise to T1Map, T2*Map, and PDMap

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was the reason why instead of using sequence names, method names were suggested in the suffix. For example, T2* mapping with multi-echo FLASH for can be grouped under another label, which would make it easier to signify the purpose of that collection of images. IMO, overloading one label with more than one method is not really helpful for users and validation.

* `RepetitionTimeExcitation`: The time in seconds between successive excitation pulses that excite the same tissue.
As with `RepetitionTimeInversion` this corresponds to [DICOM Tag 0018, 0080](http://dicomlookup.com/lookup.asp?sw=Tnumber&q=(0018,0080)): "the period of time … between the beginning of a pulse sequence and the beginning of the succeeding (essentially identical) pulse sequence".
Note that although this would typically be called `RepetitionTime` please use `RepetitionTimeExcitation` for structural scans with multiple excitations as `RepetitionTime` is already defined as the amount of time that it takes to acquire a single volume in section 8.3.3 and to distinguish it from `RepetitionTimeInversion`.
* `RepetitionTimeExcitation`: The time in seconds between successive excitation pulses that excite the same tissue. The DICOM tag best refers to this parameter is [(0018, 0080)](http://dicomlookup.com/lookup.asp?sw=Tnumber&q=(0018,0080)): "the period of time … between the beginning of a pulse sequence and the beginning of the succeeding (essentially identical) pulse sequence". This may be superseded by `RepetitionTimePreparation` for certain use cases, such as [MP2RAGE](https://infoscience.epfl.ch/record/172927/files/mp2rage.pdf). Please see the description of `RepetitionTimePreparation` parameter for further information. Finally, please note that `RepetitionTimeExcitation` (0018,0080) is also widely refered to as `RepetitionTime` in MRI physics literature. However, `RepetitionTime` is already defined as the amount of time that it takes to acquire a single volume in section 8.3.3. Therefore, please use `RepetitionTimeExcitation` (along with `RepetitionTimePreparation`, if needed) for anatomy imaging data.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since you are defining this as a new key, would it make sense to keep the units the same as DICOM in ms?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As other timing parameters in the main spec are described in seconds, I would say we keep it in seconds here for the sake of consistency.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep 👍 on @agahkarakuzu's comment here. Here's the reference to the section in BIDS that says we have to convert to s from ms: https://github.com/bids-standard/bids-specification/blob/master/src/02-common-principles.md#units

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@KirstieJane, @agahkarakuzu - it was a suggestions since this PR is already deviating from the spec with respect to things that needed to be added.

do note the wording says SHOULD not MUST (even though it later says needs to), which means there is a weighing in place to be considered.

For certain things when the scale is in micro or nano secs, i don't think it makes sense to convert to seconds. BIDS being a text-based standard vs a binary standard actually results in representing float as text, which has all kinds of issues. representing numbers as integers when possible has several benefits. thus far with the focus on MR, and more specifically fMRI, most units are in s. As this and other BEPs from other modalities get merged, the units of consideration need to be weighed.

The specific DICOM parameter the section is referring to is RepetitionTime and the decision at that time was taken with fMRI in mind (80% use case), where the typical natural order is in seconds. the original DICOM standard was not created with fMRI in mind. it was closer to the MR physics definition of excitation. Since this PR is an attempt to bring those pieces into play, it would be good to consider and perhaps note why choosing s over a natural scale was more appropriate.

Copy link

@spinicist spinicist Jan 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In any practical case I can think of, RepetitionTimeExcitation has to be a float value. If you specified it in milliseconds, integers would not be sufficient. I frequently have TRs of e.g. 8.5ms. I think most would agree that microseconds are not a natural scale for anyone other than sequence programmers (I certainly do not want to have to write TR=8500 microseconds and then sprinkle 1.e-6 conversion factors through my code. I have to do that when programming in EPIC and it is painful). I have never needed nanosecond precision for MR. To my knowledge the finest time resolution on any existing scanner is 2 microseconds.

Hence in my opinion seconds are the natural scale for MR. Keeping the units in seconds massively reduces the number of conversion factors you have to add to equations, which is a common source of bugs (for me anyway).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spinicist - fair enough - the point of this discussion is to ensure that people do not choose a time unit just because, but because it is the appropriate thing to do so. it is critical that once the choice is made we do not change it, but let's ensure the choice is made with a wide range of use cases in mind. this discussion should be had not just for this particular key, for any key that is being introduced in this bep, and in the spec more generally. the intent of the SHOULD is that this is recommended, but you (the "royal you" creators of a new field) should still decide if it is appropriate.

regarding conversions people have to either change existing code or convert from BIDS units one way or the other. so that is less of a concern. people should be careful in their code (just ask NASA about their rover).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @satra & @spinicist! So sorry for my slow reply.

I like @spinicist's point about not wanting to write 1.e-6 everywhere. I agree that the repetition times are likely to be most humanly readable in seconds.

I had implicitly interpreted the SHOULD slightly differently to @satra - I had read it as "unless you have a good reason not to (for example if we were including values in years!). This is different to the idea that the royal "you" 👑 needs to make an informed decision every time.

My position is that we have had the conversation. We've decided to keep seconds. And I propose that we do not include the justification in the documentation anywhere.

So specifically, can I mark this conversation as resolved? Do we need to add anything to the specification?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@KirstieJane - a lot of bids came out of the cognitive neuroimaging world where fMRI rules supreme. bep001 comes out of tissue quantification world, and in that world many of the sequences are more tuned to other things, and we will continue to see changes. in this world, times are represented typically in different units:

https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0169265

i'm fine with marking this conversation as resolved, but i do want people to consider things beyond a few years or a few sequences. my point was to ensure that people think through before setting in stone, which is often what a standard is. some things are much harder to change than others, and thus require more careful consideration.

@Gilles86
Copy link
Collaborator

This pull request has been superseded by #24

@Gilles86 Gilles86 closed this Mar 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants