-
Notifications
You must be signed in to change notification settings - Fork 95
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
-tedpca command-line interface #956
Comments
For better and worse, we are calling sklearn.decomposition.PCA and we are replicating their terminology ( https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html ) The actual call in tedana is here: I fully agree that this is a very confusing convention and shouldn't exist, but I'm not sure if using a different option to send the same parameter to another function might create a different type of confusion. In general, this hold PCA method parsing step is a messy function with a lot of conditional logic and it's likely we'll want to add more options. I'm at OHBM now, but I'm very open to rethinking both how this section of the workflow is organized and what options can more clearly be presented. Since this would be a breaking change for some workflows, I'd like to think enough to make a change only once so that we won't have multiple breaks. |
OK, that's useful to know the origin / justification for the interface. I suppose though there can be different demands between an API and a CLI, since with the latter the user technical skill floor is lower and everything is a string. Can optimise for the latter and massage back for the former.
I'm at the end of my scope of knowledge of TE-dependent (P|I)CA as it is, so would be leaning entirely on the experts here.
Completely agree. From a user interface perspective, at least if one were to attempt to use From a software engineering perspective, you may not want to have such backward-incompatible changes being merged to |
In meeting 2024-03-21 it was decided to preserve the current command-line option, but refine the internal translation of a user-provided input into the internal representation. Discussion around that alternative solution will best occur in the relevant Pull Request. |
Relates to discussion in #949.
Note that I am approaching this as someone with no experience with specifically TEDANA, but plenty of experience in research software.
In
23.0.x
, there is a single command-line option "-tedpca
" that controls how much data will pass from the PCA to the ICA. There are multiple ways in which this option can be used:The relevant logic to tease these apart is here.
This however introduces a few problems:
argparse
capability to enforce that the user input corresponds to one of a set of choices.From a software user interface perspective, the way that I would approach this personally would be an argument group, with three mutually exclusive options, eg.:
-tedpca_method
, of type choice-tedpca_rank
, of type integer-tedpca_variance
, of type floatThis would preclude erroneous user input at the point of command-line parsing.
Further, in our particular circumstance (lead by @BahmanTahayori), where we want to bypass the PCA step here, that would be properly achieved:
-tedpca_variance 1.0
.-tedpca_skip
to be added to this option group.The text was updated successfully, but these errors were encountered: