Skip to content
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

web interface / gui for ANTs? #1677

Closed
ncullen93 opened this issue Feb 11, 2024 · 10 comments
Closed

web interface / gui for ANTs? #1677

ncullen93 opened this issue Feb 11, 2024 · 10 comments

Comments

@ncullen93
Copy link
Member

Is your feature request related to a problem?

No

Proposed new features

It would be nice to be able to interact with ANTs via a user interface on the web. This would allow users to more easily visualize and compare results. It would also be nice to have a place to create deep learning models using ANTs-specific pipelines. To be clear, the idea is a more persistent application where results could be saved and shared, and not like a toy Shiny app to demonstrate algorithms. A hosted ANTs could also be a way to raise funds to support the project into the future.

Alternatives you've considered

The first main issue I see is how users would actually get their images onto such a web app, since just uploading them seems possible but not ideal. I wonder if there is already a common web host like flywheel which has an API that images could be pulled from. The second main issue would be high memory demands to run ANTs, although this probably just means some kind of aws solution is needed rather than a small server.

Additional context

I was wondering @cookpa what the thoughts are about this? I know this has been discussed in the past but I wonder if it hasn't be tackled due to lack of time/interest on the devs part or perceived lack of demand from the community. Would people use this if it existed?

I have some time and some great web development experience where I think I could take a shot at building a first MVP. I may try regardless but just wanted to see what the thoughts were.

@dorianps
Copy link
Collaborator

dorianps commented Feb 11, 2024 via email

@ncullen93
Copy link
Member Author

Thanks, Dorian! That is great insight. The key value proposition would be exactly as you say -- not just running ANTs without writing any code, but being able to store and version results which persist across user sessions. I am pretty convinced that using ANTsPy would be the way to go, as I imagine supporting deep learning pipelines is something that would need to be done.

The key really is how to interface with the data, so I appreciate hearing the way people store and version images. Like you said, users uploading images seems unlikely to be the main use-case. Getting read-only access to an S3 bucket where images are stored seems reasonable. For labs that have images stored on a university cluster, however, I'm not sure how that would work. Images would have to be downloaded from the user's image directory onto the server running ANTs, so maybe that's not super efficient for quick functions.

In short, it would be nice to decide on what a bare-bones MVP would need to look like for people to say "OK, yes this is worth pursuing further."

@stnava
Copy link
Member

stnava commented Feb 11, 2024

I would recommend starting with a simple visualization task. e.g.

  • checking registration results
  • plotting a (cropped) overlay heatmap on an image or template
  • demonstrating where a given subject's values are wrt a normative distribution ( eg brain volume )

just PoC stuff that doesn't depend on any particular back end or data organization.

@stnava
Copy link
Member

stnava commented Feb 11, 2024

I will add more later (if/when paper is submitted) but there is some work like this being done by Faraz Faghri's group.

@cookpa
Copy link
Member

cookpa commented Feb 13, 2024

I think a service that interfaces with an existing back end like Datalad or Flywheel would be the way to go. Managing a provenance database is a huge amount of work in itself.

In terms of use cases, just based on community feedback I think the most interesting cases would be:

  • Interactive registration. Registration is a black box and it would be good to be able to visualize it in progress, roll back registration, change parameters, and generally get a sense of what's happening. ITK-SNAP has a basic version of this at least for affine registration

  • Template building. One of the most common uses of ANTs I see in publications.

  • Evaluating results of registration - in particular visualizing landmarks, segmentations etc

  • Applying deep learning tools in ANTsPyNet, and even better, re-training them

@ncullen93
Copy link
Member Author

Thanks for the input, Phil. I am with you on all those points.

@ncullen93
Copy link
Member Author

@dorianps I was working a bit on datalad integration and was wondering if you could expand a bit on how you work with it. Do you host the datasets on github and then clone them onto a server or local computer when you run an analysis? How do you handle authentication if they're private?

@dorianps
Copy link
Collaborator

dorianps commented Feb 20, 2024 via email

@dorianps
Copy link
Collaborator

Forgot to add something relevant to your use. Datalad has a system to run pipelines directly from datalad. The idea is to keep track of absolutely everything, the script you ran, the data it produced, and the command that was fired, etc. There is an example in the handbook: https://handbook.datalad.org/en/latest/basics/101-130-yodaproject.html

However, I do not use this system because I need to run jobs in parallel using a job scheduling system. Datalad tended to struggle with this scenario because it tries to save dataset from multiple instances. Not sure if they fixed this behavior later. I just run pipelines separately and then save the outputs with datalad.

@ncullen93
Copy link
Member Author

Thanks, that's really helpful. I would love to talk later next week - I will reach out to set up a time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants