openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
697 stars 36 forks source link

[REVIEW]: A Short Introduction to PF: A C++ Library for Particle Filtering #2599

Closed whedon closed 3 years ago

whedon commented 3 years ago

Submitting author: @tbrown122387 (Taylor Brown) Repository: https://github.com/tbrown122387/pf Version: v1.0.3 Editor: @diehlpk Reviewer: @ziotom78, @andremrsantos Archive: 10.5281/zenodo.4068564

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/8b4d434b0834c3cce76aaccd8e83ac9b"><img src="https://joss.theoj.org/papers/8b4d434b0834c3cce76aaccd8e83ac9b/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/8b4d434b0834c3cce76aaccd8e83ac9b/status.svg)](https://joss.theoj.org/papers/8b4d434b0834c3cce76aaccd8e83ac9b)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@ziotom78 & @andremrsantos, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @diehlpk know.

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Review checklist for @ziotom78

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

Review checklist for @andremrsantos

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

whedon commented 3 years ago

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @ziotom78, @andremrsantos it looks like you're currently assigned to review this paper :tada:.

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
whedon commented 3 years ago
Reference check summary:

OK DOIs

- 10.1080/10618600.2016.1172487 is OK
- 10.1007/978-1-4684-9393-1 is OK
- 10.1111/j.1467-9868.2009.00736.x is OK
- 10.1063/1.1699114 is OK
- 10.1093/biomet/57.1.97 is OK
- 10.1111/1467-9868.00363 is OK
- 10.1109/9780470544334.ch9 is OK
- 10.1214/aoms/1177699147 is OK
- 10.1109/5.18626 is OK
- 10.1049/ip-f-2.1993.0015 is OK
- 10.1080/01621459.1999.10474153 is OK
- 10.1109/TSP.2005.849185 is OK
- 10.3150/14-BEJ666 is OK
- 10.2139/ssrn.2386371 is OK

MISSING DOIs

- None

INVALID DOIs

- None
whedon commented 3 years ago

:point_right: Check article proof :page_facing_up: :point_left:

diehlpk commented 3 years ago

Hi @ziotom78 and @andremrsantos how are your reviews going?

andremrsantos commented 3 years ago

Hi @diehlpk , I am working on it. Should I reply to my checklist here?

diehlpk commented 3 years ago

Hi @andremrsantos yes, please reply in this thread or for more major things please open tickets in the repo and mention this thread here.

andremrsantos commented 3 years ago

Dear all, here are some comments regarding the manuscript and the software package.

Overall, the PF library developed by the authors is a useful and interesting package for development of Particle Filters. I believe the code and document are suitable for publication after answer some of the comments below regarding the manuscript and code base.

Comments

Documentation

Software paper

Best, André Santos

diehlpk commented 3 years ago

Hi, @tbrown122387, please post your comments here. If you have a pull request, please mention this ticket here. So the reviewers can comment on your pull request.

ziotom78 commented 3 years ago

Hi @ziotom78 and @andremrsantos how are your reviews going?

Hi @diehlpk , I plan to start this review next week, I came back from holidays just yesterday and I first need to catch up with a few emails.

tbrown122387 commented 3 years ago

@andremrsantos thanks very much for your work reviewing my paper. I found the feedback spot-on and very useful.

For the sake of organization, I'll respond to your suggestions point by point.

First, there were some changes I was able to make relatively quickly:

On the project github page, the authors should make clear any requirements. Currently, the authors mentions the library requires Boost , Eigen, and Catch2, but they appear to be only necessary for the second installation option. Also versions required are not clear.

I added a section to the README that precedes the installation instructions and that mentions dependencies with specific versions: here

I also added specific version numbers to the installation section: see here

Automated test are included in the package, but I was unable to execute them with make test on the build directory. The authors should include a quick guide to run their tests.

Test building is done automatically with the cmake installation approach, but the executable is sort of hidden and not really mentioned, so you're right about that. I added a mention of where the executable would show up here

The authors could expand a little on the Particle Filtering subject.

on the example section (at page 2), the example model lists phi = .91, but on the text says it is .95

I not particular sure why an object-oriented design facilitates implementation of update to many particular in place of others design models. I would suggested the authors to justify or remove the statement.

I add more details about why I think this is important here and here I think it makes using particle filters inside more complicated algorithms a bit easier.

Second, these changes might take me some more time, but I've started working on them:

The authors also claims the library attempts to provide speed and abstraction to mitigate the complexity of particle filters and slow, but the manuscript doesn't include any comparison in terms of speed to similar projects.

I'm working on a side-by-side comparison now. I've added an issue here

The authors provide an example usage, but they should include the expected results so the users can check the code behave as expected. Also, they should define a seed on their examples to make the results replicable.

I've added an issue for this as well (here). So far, seeds have been set by the clock. I'll just need to add another constructor to the base class template for the resampling types.

I couldn't find any guidelines for third parties wishing to contribute, report issues or seek support.

I'm still thinking about how to do this. I've never been able to recruit many people in real life to help me with this software, so this point is of great interest to me. I've seen other software projects with online forums...maybe that would be something worth exploring. I'm open to any suggestions. Also, I'm in the process of reading this

diehlpk commented 3 years ago

@tbrown122387 instead of having a shell script to run the tests, you could add ctests so the user could type make test to run them.

Not mandatory, just a small suggestion.

ziotom78 commented 3 years ago

Sorry @diehlpk , I started working on this review only this week, but it seems that my invitation has expired in the meantime, as I'm not able to modify my checklist. How should I proceed?

diehlpk commented 3 years ago

@whedon re-invite @ziotom78 as reviewer

whedon commented 3 years ago

OK, the reviewer has been re-invited.

@ziotom78 please accept the invite by clicking this link: https://github.com/openjournals/joss-reviews/invitations

diehlpk commented 3 years ago

@ziotom78 No worries, please click on the link in the invitation email, you should receive soon. The invitation expires after few days. Or click on this link:

https://github.com/openjournals/joss-reviews/invitations

andremrsantos commented 3 years ago

Dear @tbrown122387, here are some considerations regarding your answer:

diehlpk commented 3 years ago

@tbrown122387 I checked the references and please update

  1. Murray, L. M. (2013). Bayesian state-space modelling on high-performance hardware using LibBi. (add the arxiv.org information)
  2. Taylor, S. (1982). Financial returns modelled by the product of two stochastic processes, a study of daily sugar prices 1961-79,1. (Add the journal)
  3. Brown, T. R. (2020). Approximating posterior predictive distributions by averaging output from many particle filters. (Add archiv.org information)
ziotom78 commented 3 years ago

Hi @tbrown122387 , I have completed my review and have no further comments to make. Thanks!

diehlpk commented 3 years ago

@andremrsantos can you please confirm that you finished the review as well?

diehlpk commented 3 years ago

@tbrown122387 I will do the final pass of the paper this week. Please let me know once you updated the references and I will proceed.

andremrsantos commented 3 years ago

@diehlpk I am happy with the modifications and I've finished my review.

tbrown122387 commented 3 years ago

@ziotom78 thanks very much for your very helpful and valuable comments! @diehlpk so far I have addressed all of the problems except for two: updating the references and writing a speed comparison example. I should be done relatively soon. Apologies for the delay--this is a busy week for me.

diehlpk commented 3 years ago

@tbrown122387 Take your time. Just let me know once I can do the editorial processing.

tbrown122387 commented 3 years ago

@diehlpk I have just finished updating the references and making all the other requested changes.

diehlpk commented 3 years ago

@whedon generate pdf

diehlpk commented 3 years ago

@whedon commands

whedon commented 3 years ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@whedon commands
whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

diehlpk commented 3 years ago

@whedon commands

whedon commented 3 years ago

Here are some things you can ask me to do:

# List all of Whedon's capabilities
@whedon commands

# Assign a GitHub user as the sole reviewer of this submission
@whedon assign @username as reviewer

# Add a GitHub user to the reviewers of this submission
@whedon add @username as reviewer

# Re-invite a reviewer (if they can't update checklists)
@whedon re-invite @username as reviewer

# Remove a GitHub user from the reviewers of this submission
@whedon remove @username as reviewer

# List of editor GitHub usernames
@whedon list editors

# List of reviewers together with programming language preferences and domain expertise
@whedon list reviewers

# Change editorial assignment
@whedon assign @username as editor

# Set the software archive DOI at the top of the issue e.g.
@whedon set 10.0000/zenodo.00000 as archive

# Set the software version at the top of the issue e.g.
@whedon set v1.0.1 as version

# Open the review issue
@whedon start review

EDITORIAL TASKS

# All commands can be run on a non-default branch, to do this pass a custom 
# branch name by following the command with `from branch custom-branch-name`.
# For example:

# Compile the paper
@whedon generate pdf

# Compile the paper from alternative branch
@whedon generate pdf from branch custom-branch-name

# Remind an author or reviewer to return to a review after a
# certain period of time (supported units days and weeks)
@whedon remind @reviewer in 2 weeks

# Ask Whedon to do a dry run of accepting the paper and depositing with Crossref
@whedon accept

# Ask Whedon to check the references for missing DOIs
@whedon check references

# Ask Whedon to check repository statistics for the submitted software
@whedon check repository

EiC TASKS

# Invite an editor to edit a submission (sending them an email)
@whedon invite @editor as editor

# Reject a paper
@whedon reject

# Withdraw a paper
@whedon withdraw

# Ask Whedon to actually accept the paper and deposit with Crossref
@whedon accept deposit=true
diehlpk commented 3 years ago

@whedon check references

diehlpk commented 3 years ago

@tbrown122387

Following remarks:

I think, that it would be beneficial for the reader to have a link to the README.md file here

this is “Option 2” described in theREADME.mdfile

and same for examples/svol_sisr.h here

The fileexamples/svol_sisr.hprovides an example of writing a class template calledsvol_sisrfor this model-algorithm pair

To make the definitions more prominent, would you like to consider to have a bullet list here

Filtering” is defined asobtaining the distributions of each unobserved state/code random variable, conditioning onall of the observed information up to that point in time. “Particle filters” are a class ofalgorithms that approximate this sequence of distributions with weighted samples (termedparticles)

Or any other way to highlight the definitions?

tbrown122387 commented 3 years ago

@diehlpk perhaps I could add an equation/some notation? Eyes are drawn to equations, and it would also cement some of the notation that would be (re-)used in the coming Example section. It might also be easier on the reader to see me label states/codes as xt immediately after the first time I use those words, and to see "observed information" labeled with $y{1:t}$ immediately after they see that phrase for for the first time too. Let me know what you think of the most recent commit. I added the links as well

diehlpk commented 3 years ago

@tbrown122387

perhaps I could add an equation/some notation?

Sounds good.

diehlpk commented 3 years ago

@whedon generate pdf

whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

diehlpk commented 3 years ago

@tbrown122387

The next steps are

tbrown122387 commented 3 years ago

@diehlpk

diehlpk commented 3 years ago

@whedon set v1.0.3 as version

whedon commented 3 years ago

OK. v1.0.3 is the version.

diehlpk commented 3 years ago

@tbrown122387

tbrown122387/pf: v1.0.3

Taylor R. Brown; trb5me

Can you remove trb5me from the author list? Only the authors of the paper should be listed?

Can you please replace tbrown122387/pf: v1.0.3 with the paper title?

tbrown122387 commented 3 years ago

@diehlpk I just forgot to hit "publish." This looks better.

diehlpk commented 3 years ago

@whedon set 10.5281/zenodo.4068564 as archive

whedon commented 3 years ago

OK. 10.5281/zenodo.4068564 is the archive.

diehlpk commented 3 years ago

@whedon generate pdf

whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

diehlpk commented 3 years ago

@tbrown122387 Please check the latest proof of the PDF.

diehlpk commented 3 years ago

@whedon accept

whedon commented 3 years ago
Attempting dry run of processing paper acceptance...
whedon commented 3 years ago

:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/1784

If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/1784, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true