Conversation
…r -maxnum provided
|
So as I argued in my response to this thread, I'm not convinced I agree with the rationale behind this change... |
This requires knowledge of the number of voxels in the seed mask, so that one can set the appropriate number of seeds per voxel to get the desired total number of seeds. Easy I know, but may be indirect depending on experimental design.
That's a fair inferential leap. For instance they might simply be trying to match experimental design across software platforms.
Even if it isn't the recommended approach, surely it's better than this behaviour? That to me is a hidden default value infiltrating through despite a user request having been made. It's not 'overriding |
Hmm, it's subtle, but I'm not sure about this: if you say a "hidden default" is disabled, you imply there is an (even more hidden/implied) default that becomes the default if the default is disabled. I'd say, the current default isn't hidden: it's very explicit in the manual / command help. Yes, users do need to read it to know it, but why else do we have manuals? About this overall issue: I have the feeling a lot could be resolved by keeping the behaviour as is (on master), but maybe re-thinking the names of these options. Admittedly, if I would come in as a naive new user, I may be deceived by the name |
|
Ok, just checked the actual command help: it seems the actual default (1000) is not mentioned. That one should definitely be added to the help text of the |
|
OK, I can see there are arguments for and against. Personally, I tend to also think this is more a matter of terminology than anything else. I stand by my earlier comment that in the overwhelming majority of cases, the current setup is appropriate - yes, there may be cases where users want to have a fixed number of seeds without using the explicit
is a case in point: this would only affect a very small minority of users, and if they genuinely want to match across software platforms, they will definitely need to read the docs very carefully. Besides, I suspect MRtrix3 is the only platform that uses random uniform seeding by default, I expect most other packages out there will seed on a uniform grid, potentially with multiple seeds per location. This can only be matched using a non-default seeder anyway, for which the option doesn't apply. I'm not saying that there can't be any legitimate use cases for this, just that I struggle to think of any that genuinely can't or shouldn't be addressed differently. Onto what we can do about it: I've been thinking along similar lines to @thijsdhollander: the terminology is confusing and not explicit enough. We definitely need to document what the default is for
I think this should cover it. I'm not convinced about the name for the Thoughts? |
|
It took me a little while to let those proposed names sink in, but I think I like where that logic is going. If we go this way: would it make sense to actually put |
|
Happy with @thijsdhollander's suggestions for reorganising the options into the right sections, makes total sense. Going back to the original idea, I think changing the terminology from 'attempts' to 'seeds' will help reduce confusion massively in the long run. Still not sold on the |
|
Another gotcha: There's a difference between the number of 'seeds' and the number of 'attempts', since sometimes the seed generator will nominate a point (and possibly direction) but the tracking algorithm Though how these seeding mechanisms work may or may not change in the future. shifty eyes |
That's funny, I thought about this but came to the opposite conclusion: when you have a fixed number of seeds per voxel, there is a one-to-one relationship between seeds and attempts. However, I can see that things aren't all that simple: seeding may fail because there genuinely is nothing to track there (in which case this still classes as an attempt), but also because the random direction we picked didn't have sufficent FOD amplitude along it (in which case we should really be trying a bit harder to find a viable direction at that seed location before we can genuinely call it an attempt). So maybe we need to think this through a bit more carefully, but probably more in terms of how things are implemented than the terms used?
You little teaser... Now WTF are you about to do? |
Logically yes, they're the same. But programmatically, if Also another aside point: If the command-line options are to change, should the corresponding
Began playing with this yesterday. The current code for iFODx just selects the first direction it samples that's above threshold. I'm trying to get it using calibration & rejection sampling much like the tracking itself, so that seeding in a direction of large FOD amplitude is more probable. What I have works, except for the case of iFOD2 with large FOD power because the distribution gets sharpened so much. The code also now logs the number of cases where
Oh nothing too evil. Would just like to have seed mechanisms that set the number of successful streamlines per voxel rather than the number of attempts per voxel as is currently provided. Haven't actually started on it though. Currently I'm achieving the same by just generating single-voxel seeds and looping over |
|
Since this one (not the current commit, but where the discussion led to) seems to converge towards quite an important change (renaming) of interface to one of the core options of |
|
Where do we stand with the changes we'd discussed here? I agree with @thijsdhollander that if we want to make such drastic changes, |
|
I've done the initial changes to get this going: see #921. The implementation of the |
|
This has now been superseded by #921 . |
Only revert to default 1000 streamlines if neither
-numbernor-maxnumprovided.As discussed here.