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

Upgrading to 0.7 #87

Open
timholy opened this issue Aug 20, 2018 · 12 comments
Open

Upgrading to 0.7 #87

timholy opened this issue Aug 20, 2018 · 12 comments

Comments

@timholy
Copy link
Member

timholy commented Aug 20, 2018

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:

  • push a branch called julia0.6, so that anyone still using 0.6 can follow that branch without disruption
  • check out a local branch called julia0.7
  • run Femtocleaner locally with the REQUIRE file set to julia 0.6 and see if there are any deprecations. Let it fix those and make a commit.
  • bump the REQUIRE file to julia 0.7 and re-run femotcleaner. Note femtocleaner only runs on 0.6, there is no need to use 0.7 for this step. Commit the fixes.

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:

  • just try using PkgName where PkgName is, e.g., BlockRegistration. For our more complex packages it would not be surprising if even this failed. Make any needed fixes to get the package to compile and commit.
  • start working your way through the tests. Fix both errors and deprecation warnings. For the bigger packages it is probably worth making a commit for each test file that you get working.
  • before you submit to the HolyLab repo, be sure you update the .travis.yml and appveyor.yml scripts. Note that Appveyor.jl has a cut-and-paste script in the README that can be used everywhere.

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

@timholy
Copy link
Member Author

timholy commented Aug 21, 2018

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
Copy link
Contributor

Cody-G commented Aug 23, 2018

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

@Cody-G
Copy link
Contributor

Cody-G commented Jan 12, 2019

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
Copy link
Member Author

timholy commented Jan 12, 2019

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
Copy link
Contributor

Cody-G commented Jan 12, 2019

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
Copy link
Contributor

kdw503 commented Jan 14, 2019

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
Copy link
Contributor

Cody-G commented Jan 14, 2019

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
Copy link
Contributor

kdw503 commented Jan 14, 2019

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
Copy link
Contributor

Cody-G commented Jan 14, 2019

I'll update QuadDIRECT and the tests

I think QuadDIRECT is already updated?
See timholy/QuadDIRECT.jl#12

@kdw503
Copy link
Contributor

kdw503 commented Jan 14, 2019

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
Copy link
Contributor

Cody-G commented Jan 14, 2019

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
Copy link
Contributor

Cody-G commented Jan 25, 2019

Crossreferencing HolyLab/RegisterQD.jl#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.

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

3 participants