Feature #1543 concatenation final#1619
Feature #1543 concatenation final#1619jan-petr merged 47 commits intofeature-#1551_RevampedSubtractionTempBranchfrom
Conversation
0573a36 to
daa0003
Compare
HenkMutsaerts
left a comment
There was a problem hiding this comment.
This can now finally be merged! Though note that the MergingScaling parameter should not be in here. Let's discuss this separately.
My point is that you can easily make a vector from the factors that have an influence on the scaling, such as FA. And then these merge properly such as TE, PLD, etc. Then you take this into account for quantification (doing the scaling volume-wise, before subtraction/averaging). Because this will be more fool-proof (more difficult for the users to forget) and more reproducible. Unless this is very difficult or a lot of work. In any case, I'm fine moving this to the future; but note that you will confuse users because they first need a scaling parameter which would be removed soon.
HenkMutsaerts
left a comment
There was a problem hiding this comment.
Looks all good. One conversation still open, and we need to discuss how to solve the scaling nicely
HenkMutsaerts
left a comment
There was a problem hiding this comment.
I have added a commit that I believe helps, but check if you agree.
- Why is xASL_im_MergePWI4D a separate function, and is all the other merging defined in a subfunction? (I don't mind much, just asking)
- You added this statement for merging:
x.mutex.HasState(StateName{iState-4}) && (~x.mutex.HasState(StateName{iState}) || bOutput)
which I don't understand. Why do you only want to define path_PWI4D_used when you have finished resampling && not yet quantification or you want output?
A) it is IMHO too little overhead to add an if-statement (just add an if exist and we always run the same code
B) how does bOutput make sense, we never need PWI4D_used as output?
It's a separate function that handles the merging of parameters and images. We have agreed upon that. There are no important subfunctions in it. Is that good as an answer to your question? HENK: No I know that :) My question is why this is a separate function and the merging admin (variables definition etc) is a subfunction. It seems arbitrary why one thing is a separate function and the other is not. Not very important. JAN: I don't see which subfunction you mean. But lets leave it if it is unimportant.
It had a very good reason to do it like this:
HENK: Is the merging a lot of overhead? It only reads a json, that is not a lot of overhead right? JAN: It's a cosiderable overhead when you have 100+ subjects. It's definitively 1000 times larger overhead to I/O NII instead of keeping a single IF :) HENK: In the past we had something that would return xASL_module_ASL when it had 999_ready, not sure why we removed this. So the if statement had a very good reason to avoid unnecessary calculations, reduce overhead, avoid inconsistencies. HENK: Probably checking that quantification OR QC mutex doesn't exist is then the best indeed. You can keep my "improved comments" and move this improved mutex checking back? |
Linked issue
#1543