-
Notifications
You must be signed in to change notification settings - Fork 13
Revamp #480 restructure #607
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
Conversation
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like a lot of changes. Great work, though my worries of course dampen my enthusiasm :)
Probably pointless to ask if you always searched for all occurrences to make sure this was replaced everywhere.
If this was done, then I only see a single possibility that you have missed some parameters. And that is if something was changed between the branching and future merging. In these cases, you probably want to scrutinize these commits and make sure that all these are added also to all things modified in between. Note that some can be identified by conflicts, but new code additions won't. That might be some amount of work - what do you think, how much commits were there inbetween?
Thanks 👍
I turned on the indexing on windows to search within files. This way it was pretty easy to search for all occurrences. Searching for
The branch was created four days ago and all of it was implemented within the last four days as well. Most of the changes that happened within the last four days within develop were import related, so I don't see a big issue there. It is a really tricky issue though. Letting it grow older makes things worse though :D There are still a lot of fields that could be improved, but I thought it would be good not to do everything at once. Especially because we develop so much stuff in parallel now. |
Agree with all. Yes - all the latest commits/edits were import related, so hopefully nothing really conflicting. But still - do we want to check to be sure? Or we quickly merge? Has Henk seen it? Better ask now and not receive questions later ;) |
Already checked it. The only commits in between were for #600, #603 & #612. The files that were changed are |
HenkMutsaerts
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Is
x.dirthe dataset-related folders (currently inx.P)? Or environment/ExploreASL-related folders (currently inx.D)? - Should
x.toolsbeexternal? - What is the difference between
x.optsandx.settings? Input arguments travel through the pipeline right
Also: - WBmask -> belongs to statistics
- Skull -> belongs to vis
- What is the use for
x.utils? - Do you want settings to be separated per module? If yes, then
BILAT_FILTERis ASL module Pediatric_Templateis an atlas setting?
I used it for global directories, like the dataset root, the studyPar, sourceStructure etc. and I thought that those rather complex directories related to mutex etc. are better there than in x.P or x.D, especially since those ones get pretty overfilled and unstructured in the end.
Personal choice, like all of the other fields as well. In the document within the revamp drive and within the ABBA meeting about that we agreed on tools for toolboxes and for me SPM is a toolbox.
x.opts are only the input options of exploreasl master and it's close derivatives right now. x.settings are general pipeline settings that were in exploreasl before and that were in the main level of the x struct before. I think it's a lot cleaner the way it is now and we can easily improve minor things later on.
For me both of those belong to something like
No, we're not there yet. We need to do this step by step and make sure that the pipeline stays stable. After that we can think about further restructuring.
Is it? I only know that it's used in the structural module and defined in the data dependent settings. |
That sounds like
|
|
@MichaelStritt I will let you resolve all the errors by Henk. At the same time, I will run some tests and check the code as well for mistakes. But I will report them in comments to avoid conflicting edits... |
|
That's it for me. I don't think it makes sense to change even more now. There's a follow up issue to improve this later on. |
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
xASL_adm_CleanUpBeforeRerun.mLine 369-375:SPMdirandSPMpathare in a subfield.
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Functions/xASL_init_DefineDataDependentSettings.m:39:if ~isfield(x,'Pediatric_Template')
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Functions/xASL_adm_CompareDataSets.m:40: if isfield(x,'bReproTesting')
- Functions/xASL_init_DefineDataDependentSettings.m:25:if ~isfield(x,'bReproTesting')
- Functions/xASL_init_DefineDataDependentSettings.m:30:if isfield(x, 'bReproTesting')
- Functions/xASL_Iteration.m:35: if ~isfield(x,'dryRun')
- Modules/SubModule_ASL/xASL_wrp_ProcessM0.m:83:if ~isfield(x,'M0_conventionalProcessing')
- Modules/xASL_module_Structural.m:347:if ~isfield(x,'SegmentSPM12')
- ExploreASL_ProcessMaster.m:46: if isfield(x,'SegmentSPM12')
- Functions/xASL_init_DefineDataDependentSettings.m:72:if ~isfield(x, 'SegmentSPM12')
- Functions/xASL_init_DefineDataDependentSettings.m:75: x.SegmentSPM12 = x.Segment_SPM12;
Agree - the others need a more discussion. And this is all internal, so can be done in two steps. However - please see all the errors I found. They look to me like forgotten renames. It is mostly isfield(x,'field') instead of isfield(x.subgroup,'field'). And note that in some cases, you might need to add isfield(x,'subgroup'). I keep on searching... |
|
Damn, I thought I found all the isfield ones. They are a bit tricky with the search function. I can fix that 👍 |
Removed them from the list. They are in x.D now ae1eb76. It didn't crash because if this though, right? Edit: Do all of the other ones really still exist? Like PathPop_MaskSusceptibility etc.? |
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Functions/xASL_Iteration.m:46: if ~isfield(x,'stopAfterErrors')
- DataParTemplate.json:5: "exclusion": "",
- Functions/xASL_init_DefineStudyData.m:93:if ~isfield(x,'exclusion')
- Functions/xASL_init_DefineStudyData.m:148:if ~isfield(x,'exclusion')
I have a better search :) |
Hope it's better with 3300654 now 👍 |
|
Jan should do a find & replace course ;) |
jan-petr
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Functions/xASL_adm_CleanUpBeforeRerun.m:370: 'SPMDIR', 'SPMpath', 'STRUCT_TEMPLATE_IM', 'LOCKDIR', 'SUBJECTDIR',...
Move to x.dataset.TimePointSubjects
Move to x.dataset ...
Move to x.dataset ...
Move to x.opts ...
Move to x.settings
Move to x.dir
Move to x.dir
Move to x.dir
Move to x.dataset
Move to x.dataset
dabf88a to
e0bf14e
Compare
Linked issue
Check out #480
How to test
Pray and hope that I broke nothing 👍
Comments
I think this should be enough for now. We can do further restructuring later on 👍
Edit 28.05.2021: I just ran the test dataset on low quality and there everything seems to work. Could be really painful to check all the individual commits, but the edits are pretty straight forward. The only real code changes are here f6f5253 and here bef5bf4 .