zooniverse / Panoptes-Front-End

Front end for zooniverse/Panoptes
https://www.zooniverse.org
Apache License 2.0
64 stars 76 forks source link

I want to create a fairly limited extension of functionality offered within the project builder -- what is the best approach for developing my project? #3554

Closed freen closed 6 years ago

freen commented 7 years ago

I'm interested in creating a project which (a) can create new child-subjects, (b) whose images are based on boundary box selections made on "original" / pre-existing subjects.*

(* I’m told this functionality is not available within the existing features of the Zooniverse project builder --- even though I have found evidence of it in both the API and the front-end. I would gladly be contradicted here!)

TL;DR: If I’m seeking to make a limited modification, such as this, what are some tips which I could use to decide whether I need to fork PFE, or build out a fully-qualified front-end using the panoptes-javascript-client library? I haven’t found much discussion of this choice, as it were.

I've seen mention of both of PFE-forked projects and “custom projects” --- where the latter seems to be a quite hands-on implementation of a custom Panoptes interface, using the panoptes-javascript-client library, and the former (PFE-fork) scenario presumably would account for “manageable” modifications of a handful of mainline features in PFE / project-builder . . .

However, it’s not obvious to me, as a newcomer to the platform, what the scope of development of PFE-fork scenario really entails. It seems like a PFE-fork whose goal is to extend workflow functionality would quickly lead to modifications of workflow configuration engine internals, which could result in pretty dramatic work. On the other hand, “custom projects” on their own imply pretty significant boilerplate work.

Please let me know if there's a better venue where I should raise this question.

Best, freen

camallen commented 7 years ago

Hi @freen - creating new child subjects from existing ones requires you to interact with the API to create new subjects that use the existing media locations (image URLs). As stated if you want to make new images from bounding boxes then you'd have to either:

  1. process the image extraction and re-upload the new media resources as a new subject
  2. store the bounding box coords and subset the image on the fly from the full resource. Note in this case, you'll pay the network transfer cost of the full image and you may see output differences between browsers.
  3. use a server to dynamically resize images on the fly via URL's. We've got an internal tool that does this image crop / resize dynamically that could be useful in this case - https://github.com/zooniverse/static-crop.

(* I’m told this functionality is not available within the existing features of the Zooniverse project builder --- even though I have found evidence of it in both the API and the front-end. I would gladly be contradicted here!)

To my knowledge we don't re-use subjects in this way but the api would support it as outlined in points above.

You can use PFE out of the box for points 1 & 3, you would need to either create the "new" subjects as cropped images correlating to the bounding boxes or store the box coords as a URL for existing subjects and crop / resize via a server. As I said, we've got an internal server that does this for our sites on the fly so all you need to do is be able to construct a valid URL.

You would have to modify PFE for point 2, though it could do this I suppose, I don't think we'd accept this feature into the codebase.

Hope this helps, happy to explain things further if you need.

eatyourgreens commented 7 years ago

There's also an image cropping task available, which might be useful. It's hidden behind a feature flag at present, but we can enable it for individual projects if you'd like to try it out.

camallen commented 7 years ago

Maybe it will work with point 2 out of the box then!

eatyourgreens commented 7 years ago

Possibly. You can play around with the crop task on staging at https://master.pfe-preview.zooniverse.org/dev/classifier

freen commented 7 years ago

Thanks so much for your comments, @camallen and @eatyourgreens. They're really helpful.

I'm still curious to understand better what kind of / amount of custom coding these tasks would require.

Whether I choose the experimental route @eatyourgreens indicated, and try out the image cropping task, or if I use the zooniverse/static-crop internal tool, it sounds like in both cases I will have to write some custom code which constructs my new image URLs, and, using them, leverages the API child subject creation endpoints.

What's not clear to me, yet, is where this custom code would be written? @camallen you indicated that I most likely will not need to fork PFE. Would this new, child-creation code somehow be provided inline in the project builder (I suppose not)? Or is is my job now to somehow create custom task code, which I will then integrate into my project builder workflow?

Apologies if I've missed discussion of this workflow in the documentation, somewhere.

camallen commented 7 years ago

In my scenario you would use the results of the bounding box marks to create new subjects and upload them to the system to be served as a subsequent image. Similar to how https://whaling.oldweather.org/ works, 1 task is to make boxes, the other is to fill in the boxes with data. And no this would have to happen as a post processing task from 1 workflow to the other. Most likely using the raw classification exports, etc.

freen commented 7 years ago

@camallen Great, that's super helpful.

It sounds like generation of new images & subjections can be managed, without moving into territory of forking Panoptes repositories, or even running a custom instance --- rather, we just need a tool which uses the public API / raw exports to propagate subject data / new images across the workfows.

One question --- is the zooniverse/static-crop tool publicly hosted / running somewhere publicly already? Or we'd need to provision it?

Thanks again ~

camallen commented 7 years ago

We run it for our media resources (images) hosted by the zooniverse on AWS S3.

stale[bot] commented 6 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 6 years ago

Closed by probot-stale due to a lack of recent activity. Please feel free to re-open if you wish to take on this change.