-
Notifications
You must be signed in to change notification settings - Fork 2
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
Creating conversion spec stubs for all Nipype interfaces #8
Comments
I think it could be worth checking in with Python packages about whether they'd prefer to host and maintain their own task packages.
A useful thing could be to write a template GitHub action that would install |
It would be great to have the interfaces maintained in the package repos where possible. In those cases you mentioned, do you expect it would be easier just to create new Pydra interfaces from scratch, or would the first step still be to do the auto-convert? If it is auto-convert, perhaps we could start off by having a separate repo while we are still ironing out the converter tool (and potentially the interface syntax) and then approach the tool maintainer to include them in their repo when they are stable (ie no longer auto generated).
I'm not sure I follow |
I agree
I do not understand. Can you develop the idea ? |
I suppose if we have it as a template to start from, authors might find it useful.
By this I meant I meant we could create a |
Generating automatic tests is pretty hard to do properly isn't it? I'm trying to do this with MRtrix, but that is only possible as I'm able to hook into their argument parsing source code. |
I have a model in my head where the tools are adding They'll still need to write the tests that make sense for their tasks, but won't need to worry about figuring out the CI. For people already doing exactly this, it won't be a huge benefit, though it will be one thing less for them to do. But a lot of projects still have a mix of AppVeyor, CircleCI, Travis, etc, and might not be running pre-release tests. For them, it could make the prospect of supporting pydra tasks less of a burden. |
I think this would not be too difficult to implement within nitime, and I don't anticipate this being a big burden in terms of maintenance, because nitime API/functionality is not likely to change much (based on the fact that it hasn't changed much in the last 10 years 😄 ), so I am open to this. |
They should be able to use the Re auto-generating tests, what are your thoughts on a testing framework that would work similar to pytest-timeout but pass instead of fail after the timeout, in order to check whether the command survives the setup phase of the tool. I'm thinking it should be possible to supply arbitrary test data based on the data/file types and the value bounds. |
I have scraped the Nipype interfaces package to generate a list of all the available Nipype interfaces to generate a YAML file I stored in this repo under nipype-interfaces-to-import.yaml. After scraping the interface names, I slightly curated the list to get rid of base classes and generic interfaces (e.g. split, merge, etc...) that I didn't think were worth importing.
Next, I plan to create stub conversion specs (see
example-specs/ants_registration_Registration.yaml
for example) for all of these interfaces (in separate repos for each tool) as a starting point for the migration process. The idea is that a nipype2pydra port process would be set up on each repo to attempt to generate pydra tasks for each Nipype interface under apydra.tasks.<pkg>.auto
package.Obviously, most of these interfaces would be unusable out of the box and their conversion specs would need manual editing before they would be useful. But I figure having something there as a starting point will make it much more likely someone will come along and do the manual steps. Once the conversion spec has been edited to a usable point, the idea would be to import the automatically generated interface from
pydra.tasks.<pkg>.auto
topydra.tasks.<pkg>.v1
orpydra.tasks.<pkg>.latest
to signify that is ready for use.So my question is, are there any packages/interfaces in that list which are just not worth bothering at all (i.e. if the underlying tool is unsupported and broken). If so could you suggest to delete them from the list.
The text was updated successfully, but these errors were encountered: