-
Notifications
You must be signed in to change notification settings - Fork 3
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
JOSS review comments #31
Comments
PaperMain points The paper is very clear, detailed and pleasant to read. The review of the state of the art, both for the algorithms and for their implementations, seems exhaustive.
I wanna know how generic we're talking:
Side remarks
|
DocumentationMain points The documentation is REALLY well-written and extensive, kudos on that! There is a single thing I don't like, namely the fact that users need to click to see the full code examples. In addition, these examples are run during tests but their output is not checked against the expected output, so we're unsure of their behavior. The same goes for the code examples inside docstrings. Some solutions for this include:
I have used Literate.jl in my recent JOSS submission HiddenMarkovModels.jl to include examples in both the test suite and the docs, you can check it out if it helps. Side remarks Some typos are fixed in #32 I read the documentation in order, so some of the questions that pop up early might be answered later on, but it's useful to know that they do pop up in the first place. Mathematical background
Basic usage
Mid level usage
Advanced usage I didn't read that section in detail but you may be interested in DocStringExtensions.jl to document structures with numerous fields |
TestsI took a quick look at the To account for stochasticity in the tests, you can
|
Better indeed, although I would recommend adding labels to the legend and colorbar, something like "particle evolution" and "objective value" |
Regarding this: The previous packages were developed by me (Python) and @rafaelbailo (Julia) and are basically deprecated. For the Python case, the previous one was tailored to the polarized CBO variant. Broadly speaking, CBXPy offers more generality to define other CBO methods and also simplifies the user interface. I made a remark on this in the paper. For Julia, I guess @rafaelbailo can answer the question better, but as far as I understand the Julia implementation, CBX.jl is just a significant improvement to the previous consensus.jl, which only offered basic CBO functionality. |
We included both suggestions in the current version of the paper |
I added a lot of DOIs, I'll check if there are still some missing,. |
It is a weighted covariance matrix of the ensemble, we clarified it in the paper. |
Hi @gdalle, thank you very much for the thorough review! I'm working through the missing points, post by post. Regarding the Paper, I've made a specification of the improvements of the new package with regards to my old Consensus.jl. In short, the old package implemented only CBO, and wasn't necessarily allocation free, whereas the new one is free of allocations, type stable, and implements CBS as well. I think the rest of the comments have already been answered by @TimRoith. I will follow up shortly with the Documentation and Tests parts. |
Regarding tests, I have adapted a test of R. Pinnau, C. Totzeck, O. Tse, and S. Martin (2017). We are now checking that the consensus point (or distribution mean when relevant) is indeed close to the global minimiser, in high dimension (20 for CBO, 5 for CBS for performance reasons), for several objective functions (quadratic, Ackley, and Rastrigin). This is similar to the tests that was added to the CBXpy. |
Regarding the Documentation:
This has been addressed now, as discussed in the other review issue
We were just following the original CBS paper. I've added the SDE for completeness.
Both notations mean the same to me! Again, we use
This was sort of explained in "Extended output". I've added comments in the "Function minimisation" and "Distribution sampling" pages, linking back to "Extended output" for the full details. "Extended output" has also been expanded and clarified.
See the later parallelisation comment.
It's dimensionless time; it's the SDE solution time, not the CPU time! This wasn't very clear in the docs, I've hopefully clarified it.
This has been expanded
Yes it would! I was not aware of the extension functionality, thank you for the tip. I have an upcoming intern who is going to work on extending the plotting package (what's there right now is extremely basic), I think we will use that chance to include the package as an extension.
I've added a recommendation in the docs to use BenchmarkTools.jl to test the implementation of the objective function before using it with our pacakge. For the internal benchmark mode, I think it makes sense to keep using
I wasn't able to find a non-allocating matrix square root, which is rather frustrating!
Indeed it's multithreading, this is now stated clearly. It is certainly possible to parallelise most of the routines at the particle level. There was a lengthy discussion among the authors on whether or not this should be pursued, since we expect that real-world use of this package is to optimise very expensive objective functions, whose implementations will already be multithreaded. In the end, we decided not to implement particle parallelism, though I would be open to implementing this in the future if there is user demand.
I was not aware of this either, thank you. I think the current docstrings are quite complete, but I will certainly use this next time I have to make changes to them! |
@gdalle I think I've addressed all the points, but do let me know if I've missed anything. Thanks again for the review, it's been very helpful! |
Thanks for taking the review into account! I'm okay with the changes to the docs and tests, proofreading the revised article now |
Last remarks on the paper:
Otherwise it's good to go! |
I've just pushed a fix for those typos. @TimRoith could you update the figure please? |
Closing this as resolved :) |
Hi there, and congrats on the package and JOSS submission!
I'm one of the reviewers and I'll put my remarks and questions below.
The text was updated successfully, but these errors were encountered: