-
Notifications
You must be signed in to change notification settings - Fork 524
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
Prefixed names for interface functions #1415
Comments
@TheChymera - the only way i can see this work is to add a command-prefix option to base classes in nipype. by default this is None, but can be specific to such things. |
Is there a reason fsl interfaces just make a system call with the binary name, rather than with the full path to it (using $FSLDIR, like Feat does)? |
no particular reason other than we expected things to be available on the command line, and kept it simple. now that we are supporting more packages, it may make sense to think a bit about extending how underlying interfaces are supported. however the general package management, dependency, update, and composition issue is not something nipype should tackle (at least in the near future). |
I think it is a sane assumption that the tools should be available from the command line. However, I don't see how we can make any one assumption about the naming of the functions.
The only way I can see all these cases being addressed, is if you can pass a command modifier to each Interface. The drawback of this being that the user will be expected to know how his package maintainer handles conflicts. Neurodebian might handle stuff diferently from NeuroGentoo, and many people install stuff independently of their package manager anyway... Alternatively we could use |
It seems the best way for a package manager to deal with FSL's myriad of functions and potential naming conflicts is to install all the executables in some This is the way it is currently done in both NeuroGentoo and NeuroDebian. I think the best way for nipype to be compatible with the only two larger repositories for neuroscientific software management is to call FSL functions via their @satra @mwaskom can I enable this by simply adding a few lines to the |
@TheChymera , @satra , @mwaskom - are you still planning to modify the fsl cmd? |
@djarecka no, Currently Gentoo is offering FSL up to We have chosen this approach for 2 reasons:
|
@TheChymera - thanks for your answer. But if you changed in Gentoo after you changed |
@djarecka curently this example would fail. The right thing to do at this point would be:
Would you like to help with 1. ? :) |
@TheChymera - can try :) |
@TheChymera , @djarecka - fsl is not going to change the name anytime soon. conflicts exist for many packages, and will continue to. the idea of namespaces on command lines effectively moved binaries from for the current purpose i think FSL should prefix every command with |
i meant in FSL's nipype interfaces we should use |
We could make this general by adding an input called |
Are you aware of any other conflicts with FSL? Maybe we should make a list to know what exactly is broken (if it actually is more than just
Have they stated as much?
This is a bad design path to go down. Giving each package its own tree encourages disregard for and general ignorance of standards, and perhaps worst of all, it encourages bundling. With the exception of serious fringe cases, modern systems can work perfectly without balkanizing their executable namespace:
I know I agreed with this in the past, but in effect, this means that instead of addressing this specific error like what it is, an error, we would generalize it, and make it comfortable for other packages (and even better, users) to make more of the same error. Given the choice of making FSL cleaner or nipype messier, I think the first is preferable :) |
At least one of the many functions nipype has interfaces for - FSL's
cluster
- collides with another function from another package that shares its name. To make matters worse, this other package (graphviz) is a direct dependency of FSL (for the full description of the conflict see this issue).One of the most intuitive ways to fix this is by adding a prefix to the function which is called by fewer other packages. In this case that would be FSL's
cluster
. I have actually noticed that many sysadmins consistently add a prefix to all functions from FSL or AFNI.So, should I as a package maintainer decide to prefix FSL's
cluster
asfsl_cluster
on Gentoo - how could I make sure nipype is aware that it should call that when one invokes theCluster()
interface?The text was updated successfully, but these errors were encountered: