HolyLab / BlockRegistration.jl

Deformable image registration via shift-alignment of blocks
6 stars 1 forks source link

Upgrading to 0.7 #87

Open timholy opened 6 years ago

timholy commented 6 years ago

Within days the Images suite will be ready for julia 0.7 and 1.0, and hence it is time to start thinking about upgrading our packages. Here is an outline of the recommended process.

Steps that can be taken before testing on 0.7:

The next steps require 0.7. 0.7 and 1.0 are both built and available in /usr/local/julia on both cannon and flash:

Note that Revise and Rebugger are quite handy for fixing bugs.

timholy commented 6 years ago

Another point worth making is that there is no reason to try to maintain 0.6 compatibility: the julia0.6 branch will be available, and since 0.7 is "the future" there is little point having a lot of cruft around to support older versions.

Cody-G commented 6 years ago

I pushed a candidate julia0.6 branch. I had to remove a commit so the history got a bit messy, see #89

Cody-G commented 5 years ago

I see that many of the sub-modules of this package have been separated and updated for Julia 0.7. Is this still a work in progress and this package will be updated too? Or is the plan to deprecate this package and have all the individual modules as dependencies in BlockRegistrationScheduler?

timholy commented 5 years ago

My understanding is that this is basically done except for the CUDA stuff. It will probably still exist as a "meta-package" but most of the code will be moved out. If you want to experiment with it locally, you could probably duplicate the top-level file (name it something different perhaps so it's not confusing when the "official" version comes out). I haven't tested it myself.

Cody-G commented 5 years ago

Gotcha. I think also the QuadDIRECT-based registration methods haven't been updated and separated yet. Those are a dependency of my EmpiricalTiming package. I could either break those out into a different package or I could depend on HistogramRegistration instead. I only need 2D rigid registration (translation + rotation), do you think that package is a good option? I may even be able to get away with translation only. I don't think the CUDA version is ideal in my case because it would need to run on the microscope server which doesn't have a good GPU.

Edit: I just noticed that RegisterOptimize does have the QuadDIRECT registration code, but the tests weren't ported yet so maybe this is still a work in progress?

kdw503 commented 5 years ago

Most of sub-packages of BlockRegistrations were separated and updated except RegisterMismatchCuda. I am working on RegisterMismatchCuda right now. The top level package is RegisterOptimize which includes qd_rigid.jl (I think this is the QuadDIRECT-based registration) but related test scripts were not included originally. I think these packages could be connected directly to BlockRegistrationScheduler without BlockRegistrations package later. Although the BlockRegistrationScheduler is also not updated yet, you can use these sub-packages directly.

Cody-G commented 5 years ago

Got it, I'll work on integrating the QuadDIRECT registration tests into RegisterOptimize (One could argue that the QuadDIRECT registration should be in its own package, but I'll leave it there for now).

kdw503 commented 5 years ago

Thank you. If you integrating the tests as it is, I'll update QuadDIRECT and the tests. And, I prefer separating the QuadDIRECT out from RegisterOptimize, if the work is not that hard.

Cody-G commented 5 years ago

I'll update QuadDIRECT and the tests

I think QuadDIRECT is already updated? See https://github.com/timholy/QuadDIRECT.jl/pull/12

kdw503 commented 5 years ago

I found some deprecations by eye and updated. If your test script fully covers the QuadDIRECT, it may complain some more deprecations I missed.

Cody-G commented 5 years ago

See https://github.com/HolyLab/RegisterQD.jl for a work in progress splitting out the code. Currently tests are failing due to optimization results, I'm looking into it.

Cody-G commented 5 years ago

Crossreferencing https://github.com/HolyLab/RegisterQD.jl/issues/1, the move to Julia 0.7 seems to have come with a big regression in the runtime of QuadDIRECT-based registration, and a smaller regression in the accuracy of the results.