-
Notifications
You must be signed in to change notification settings - Fork 93
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
Algorithms and Ops #40
Comments
One more interesting idea is, that this clean algorithms package has a dependency on Scijava-Common such that we can add some annotations to the algorithm (and to the conventions?!) and run them as imagej2 macros? |
Hi Christian, I like this initiative a lot. Sandbox, great idea - and also the split between ops and actual implementations of algorithms. We just have to defines the rules though. Maybe a google-doc would be a great idea so that we can all change and discuss it. I object a little to the "no other algorithm doing the same should exist" ... I think there are examples where it makes sense to have it, e.g. Gauss3 vs FourierConvolution. They basically do the same but there is no point in extending one with another. But maybe you mean it much more strict, saying there should not be Gauss1, Gauss2, Gauss3? Still, maybe I want to make Gaussian convolution using CUDA or some other approximation, which does the same but has much more dependencies or I do not know what. Maybe it is better to say they have to be in the same package. What do you think? I feel we at least have to be more precise what it means "doing the same thing". But again, in general I like it! Ciao ciao, |
Sorry for not being precise ;-) Of course there may co-exist several implementations of the same algorithms. For Example a user may chose which implementation to use (GPU vs. Direct Convolution vs. Fourier-Space). |
Hi Christian
I am really glad this happens. Otherwise imglib2 is to become or dead or
As per Stephan remark, maybe we could rephrase this rule by saying that
|
On 07.11.2013 16:58, Jean-Yves Tinevez wrote:
You are right, the general interfaces don't need to be in ops, they ImgLib2-ops is a mixture of the "Functions" implemented by barry and the However, imglib2-ops, especially the classes we (KNIP) contributed, will We are also not "real" software-developers and really learned a lot the |
Hi, I like the sandbox idea. One question is, how do we decide when something is ready for moving to a more permanent place? One way would be via pull requests on github, and then a certain number of people has to vote it in (after reviewing the code of course). I think we should also make a core sandbox and vote on not-quite-ready stuff that should go there (I vote for the net.imglib2.multithreading package). With respect to imglib-ops, I think making them leight-weight wrappers around algorithms is a good idea I think. Thanks a lot Christian and Martin for pushing in this direction! I like it very much. best regards, On Nov 7, 2013, at 5:31 PM, Christian Dietz notifications@github.com wrote:
|
@dietzc and I are heavily hacking on work related to this, in the new SciJava OPS repository. Will update further by the end of this week! |
@tpietzsch: My personal preference is for each project to have a BDFL. I have been subjected to heavier process workflows on other projects which I feel harm development, and I would strongly prefer not to encumber ImgLib2 that way. I nominate @tpietzsch for BDFL of ImgLib2 core, if @axtimwalde and @StephanPreibisch are OK with it. (Or if you guys really want to be a 3-way BDFL with voting, that's fine too. But let's not require PRs, please?) And you three are already pretty much BDFLs of the project, since if one you dislikes something it is basically vetoed. And note that you can have a BDFL while still allowing direct contributions from others. It's how all the SciJava projects are at the moment.
Yes, @dietzc wants such a sandbox, too. And that is fine with me. Let's make a separate Git repository imglib-sandbox? Also, in general, what do you think about creating a new GitHub org "imglib" or "imglib2" (neither yet exists) and migrating all ImgLib2 stuff there? Or else migrating the imglib.git to scijava? I think we move imglib out of the imagej namespace before we come out of beta, because ImgLib2 really is about more than just ImageJ (and the
I am working on it. I doubt that scijava-ops will be ready for review by the end of the year though, unfortunately.
Yes, thank you so much for all your efforts, guys! |
@ctrueden The BDFL idea is great! |
Hi, On Dec 13, 2013, at 12:02 AM, Curtis Rueden notifications@github.com wrote:
best regards,
|
Hi,
I would prefer to have our own project space ... Otherwise I am fine with Tobias being the main BDFL (http://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life), so basically continuing as it is now as Tobias pointed out. For important design decision Saalfeld, Tobias and me would still keep our old and time-proven 3-way BDFL voting scheme. Tobi, Saalfeld, are you ok with that?? Cheers, On Dec 17, 2013, at 14:58 , tpietzsch wrote:
|
Great, I moved it: https://github.com/imglib/imglib The old URL (https://github.com/imagej/imglib) redirects automatically. And most importantly, the ImgLib2 organization has its own shiny icon.
I like this plan. However, please note that there are several "maintainer" aspects of being a BDFL which until now @dscho and I have been handling. For example, I set up the new GitHub organization just now, created the teams, etc. And we (the ImageJ2 team) have thus far cut the ImgLib2 releases. Unless @tpietzsch wants to start being responsible for such things, I am happy to continue doing it. All we ask is that the ImgLib2 BDFL(s) remain cognizant of it and appreciate how much work it is. 😉 |
Resurrection of this issue! By way of introduction for those I havn't met yet, my name is John Bogovic and I've been First, I was happy to see this conversation here and like the direction / conclusions thus far. I hope so, because it seems to be a good idea, and from my perspective it would help to:
because as a relative newcomer, these two things have been a bit challenging so far. There have been a couple of algorithms that I've 'stumbled upon' while looking through My suggestion at the moment would be to include some non-trivial test case in the sandbox If these all stay in the same place or are named similarly, it would be easier to see both What does everyone think? If / when a sandbox is made I'll absolutely start dumping my more experimental stuff in there for people to play with / criticize / etc. Thanks again everyone! PS SimpleOps.add( img1, img2, result );
result = SimpleOps.threshold( img1, thresh ); because honestly when these are used as intermediate steps in an alg, what I'd like more than a general solution is something that produces code that's quick to type and easy to read, just for some of the most common tasks. Does such a thing exist? |
Hi John, just a quick reply: In March we (@ctrueden, @hornm, @dscho, ...) started to work on a package called ImageJ-Ops, which basically will contain all of the stuff which is currently available in imglib2-ops. In the future we plan to deprecate imglib2-ops. Have a look here for more details on ImageJ-Ops: http://developer.imagej.net/2014/04/04/announcing-imagej-ops I hope this helps, |
Great, thanks Christian - I'll check it out! |
@bogovicj imagej-ops also addresses a couple of problems with extensibility and the impossibility in imglib2-algorithms for implicitly optimized algorithms (if you want to run optimally performing algorithms on your data, you will have to make sure to run the most algorithm for your actual data explicitly). As you undoubtedly know, static methods can neither be overridden nor augmented in third-party libraries. This is another problem we addressed with ops. |
@dscho Sounds good! |
@bogovicj See the ImageJ OPS announcement blog post for an overview of the project. See also the ImageJ OPS readme and tutorials—Using OPS and Create a New OP—for documentation at the moment. You can also check out the javadoc, but the blog post and readme should hopefully convey the fundamentals of the design, and why it is better than a static |
@dietzc This issue has not been updated in a long time now. Is there more to discuss here? Perhaps we can close in favor of scijava/scijava-common#133? Or split apart your comments into individual issues? |
Hi all,
we would like to draw your attention to a probably well-known issue regarding the implementation of general algorithms. And by now we feel the urge to discuss it (you too, hopefully):
The issues we want to address are:
As a first starting point, we propose the following:
The conventions for stable algorithms in imglib2-algorithms can be something like this:
let's start this discussion!
Martin & Christian
Update: Added GoogleDoc document
https://docs.google.com/document/d/1vENBDKboBWf9q29LHNtY0aizPY6mUw0pa0-q99JsscQ/edit#
To: @LeeKamentsky @MichaelZinsmaier @Squareys @angrauma @StephanPreibisch @axtimwalde @tpietzsch @tinevez @ctrueden @dscho @bdezonia @hinerm @hornm
The text was updated successfully, but these errors were encountered: