Closed editorialbot closed 9 months ago
Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.
For a list of things I can do to help you, just type:
@editorialbot commands
For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:
@editorialbot generate pdf
Software report:
github.com/AlDanial/cloc v 1.88 T=0.04 s (1055.9 files/s, 165874.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Julia 18 725 175 2748
TOML 3 310 1 1420
Markdown 14 139 0 362
TeX 1 16 0 259
YAML 4 1 7 121
-------------------------------------------------------------------------------
SUM: 40 1191 183 4910
-------------------------------------------------------------------------------
gitinspector failed to run statistical information for the repository
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- 10.1126/scirobotics.aav4317 is OK
- 10.1126/sciadv.aat4388 is OK
- 10.1137/141000671 is OK
- 10.1038/nmeth.2019 is OK
- 10.1126/scirobotics.aba5726 is OK
- 10.1002/adma.202002047 is OK
- 10.1006/jcis.1996.0217 is OK
- 10.1038/s41598-022-09177-x is OK
- 10.1002/nano.202100353 is OK
- 10.1021/acsomega.3c00886 is OK
- 10.1038/nmeth.2089 is OK
- 10.5281/zenodo.7670439 is OK
- 10.5281/zenodo.6234110 is OK
- 10.1021/acs.langmuir.3c00701 is OK
- 10.5281/zenodo.6234110 is OK
- 10.5281/zenodo.8028030 is OK
MISSING DOIs
- None
INVALID DOIs
- https://doi.org/10.1016/j.ymeth.2016.09.016 is INVALID because of 'https://doi.org/' prefix
Wordcount for paper.md
is 832
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
Well written and extensive documentation!
However, I would recommend to upload the data elsewhere instead of uploading ~300MB of images to GitHub. Also, running the default tutorial, it was not quite clear where the data is coming from. Is there a default path? My first run was failing because of path issues and couldn't find out how to fix it.
Hi @roflmaostc, thanks for volunteering to review our submission!
After looking into potential alternatives for hosting the example images, it seems like the best practice for Julia packages is to use the Artifacts feature of Pkg.jl. I will get to work on this and create a new fork of MicroTracker which uses Artifacts.
Currently, MicroTracker is designed so the user's working directory is the project folder. This allows the microscopy video, segmenting results, and linking results to stay organized and referenceable throughout the pipeline. This project folder is created using the create_project_here
function. Subsequent functions like batch_particle_data_to_linked_data
reference the folders inside the project folder to load and save data. We will work on adding some path checking error handing and documentation to clarify the functions that need to be run from the project working directory to try and mitigate path issues.
@mkitti, @BioTurboNick thanks again for your help in reviewing this work for JOSS. Can you please get started and/or update me on review progress? Thanks!
@roflmaostc, thanks for your help too. I see you have all boxes above ticked. Are there any remaining issues from your end or are you done and happy to formulate a recommendation?
For me this is ready for publication!
Installation goes quite smoothly. The package also has some Python package dependencies including numpy
, pandas
, and trackpy
. It would be nice to more clearly document this in the Setup part of the documentation with a note that this will install these packages in the default ROOT conda environment. It would be even better if it could better documented how to use a bespoke conda environment for this purpose. I would be happy to work with the authors on developing that documentation since I am involved with PyCall.jl and Conda.jl.
edit: There are two strategies I can think of that could improve the situation.
$JULIA_DEPOT_PATH
. This will result in a new conda install within this depot with it's own environment. This is less than ideal though because we may duplicate some of the Julia package installation.While it would be nice if the author's could automate option 1, the main requirement here is to document that this will install Python packages into the root Conda environment by default and reference the Conda.jl README as to how to configure this install. This also should reference how PyCall.jl is configured since it's possible that PyCall.jl is not configured to use the correct python
executable.
Additionally, for the purpose of the paper, could the authors also document the versions of all dependencies used. For Julia dependencies this could be in the form of a (Julia)Manifest.toml. While this Manifest.toml should not necessarily be at the package root, perhaps it could be included in the paper
directory. If a Project.toml is included along with this manifest, then the project could be activated and instantiated. To clarify, the purpose of this pair of Project.toml and Manifest.toml is needed to document the project used to generate the examples in the paper. Additonally, the versions of the Python packages should be documented. This could be done by exporting an environment.yml file via conda
. Establishing the versions of all dependencies is required for future reproducibility.
It is documented how to contribute to the software. However documentation on these issues are currently absent.
Generally for Julia projects like this Github issues
may be used and/or one of the Julia community channels such as Slack or Discourse. The authors should explicitly note how they prefer to be contacted, how to report issues, and how to seek support.
I am experiencing a test failure on my Windows machine. I will investigate further. My guess is that this is related to the Python environment issues mentioned above.
julia> versioninfo()
Julia Version 1.9.3
Commit bed2cd540a (2023-08-24 14:43 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: 48 × Intel(R) Xeon(R) Gold 5220R CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-14.0.6 (ORCJIT, cascadelake)
Threads: 1 on 96 virtual cores
Also, I'm noting that the automated Github Actions testing does pass. However, there is some output that should be investigated concerning the plot tests.
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: linuxfb, minimal, offscreen, vnc, xcb.
Aborted (core dumped)
connect: Connection refused
GKS: can't connect to GKS socket application
GKS: Open failed in routine OPEN_WS
GKS: GKS not in proper state. GKS must be either in the state WSOP or WSAC in routine ACTIVATE_WS
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: linuxfb, minimal, offscreen, vnc, xcb.
Aborted (core dumped)
connect: Connection refused
GKS: can't connect to GKS socket application
GKS: Open failed in routine OPEN_WS
GKS: GKS not in proper state. GKS must be either in the state WSOP or WSAC in routine ACTIVATE_WS
After making sure that PyCall.jl and Conda.jl were properly configured I was able to execute the tests. The tests emit several warnings, and I would appreciate if the authors could discuss if these warnings are expected and how the user should respond to such warnings.
The paper mentions several other tracking packages written for other languages including Python and Java. It also happens to be able to integrate with some of them.
There is another Julia tracking package called BlobTracking.jl. Please compare and differentiate this package from BlobTracking.jl.
@czimm79 Note the above comments by one of the reviewers that need your attention ☝️
Current review summary:
MicroTracker.jl is well packaged and documented. The package is used to track microbots, a form of active matter inspired by natural phenomena. While bespoke for a particular materials science experimental design, the package seems to have potential for general tracking problems, greatly expanding the number of potential users.
I appreciate that the authors have taken the time to mention some variety of other tracking packages. However, the tracking field is quite large with numerous tracking packages available. Because of this, I feel the authors have understated the "State of the Field". In particular several reviews cover the results of the particle tracking and cell tracking challenges. Mentioning the existence of these challenges would be helpful in expanding the discussion of the field.
In the expanded context, the authors should motivate further the creation of their software and in particular describe what makes microbots different from particles or cells. The authors currently that "MicroTracker.jl allows for size, shape, and rotation rate tracking of microbots which regularly enter and leave the video frame". However, it is unclear to me how that differs from other tracking problems that appear in the previously mentioned challenges.
What would help is to first explain the nature of the problem that this package is meant to address. In particular, what are the unique challenges that tracking microbots present? What are the unique or particular solutions that this package implements? Some hint of this is given in the paragraph starting on line 48, but this needs to be expanded and probably should some much earlier in the paper.
There are a few technical points that I've outlined in detail above.
This Julia package has Python package dependencies. There is no mention of this in the Quick Start or Setup portions of the documentation. However, the interface between Python and Julia often needs careful configuration. In particular, the authors use the function pyimport_conda
from PyCall.jl. Proper use of this function requires that both the packages Conda.jl and PyCall.jl be consistently configured. The authors should at minimum note the use of these dependencies and reference the documentation for those packages.
The versions of the Julia and Python dependencies should be listed for reproducibility.
Automated testing does exist in the form of Julia tests and is run by Github Actions on each commit. This obviously only works with a properly installed package including with the Python dependencies.
Additionally, the community guidelines requirement of this journal are not fully met as per the above.
Overall, MicroTracker.jl is a very promising package in a fastastic state. Some improvements could be made. In particular, explaining the problem being solved by this package thoroughly will help potential users evaluate if they have similar problems that could be solved either by this package directly or could be solved by studing the open source code of this package. Some technical improvements could be made or documented to help users forestall potential issues. I believe these issues could be addressed by the authors in a reasonable amount of time, and I look forward to seeing those changes.
Some technical challenges I had to overcome to properly configure the Julia - Python interface:
python3
installed in Ubuntu rather than the python
executable installed by conda in Conda.jl. To properly configure this, I needed to either remove python3
from my executable path or configure my executable path to be of the conda environment followed by using Pkg.build
to rebuild PyCall.jl.$PYTHON
environment variable alone was not compatible with the author's use of pyimport_conda
since in this mode PyCall.jl is not aware of the conda installation. In this case, Conda.add
needed to be invoked manually before pyimport_conda
could succeed.I believe the author's current installation process may succeed in the conditions where there is no python
executable on the current path, PyCall.jl uses Python from the Conda.jl conda install, and then configures itself to use both the executables python
and conda
from the same environment.
It is not the author's responsibility to solve and lessen this complex process, but it would helpful to note that this is part of the installation process and where to get help if the above process goes awry as it did for me on my Windows and Linux machines. Fortunately, I have some expertise in this matter and was able to resolve them. It would be helpful if the author's could point other potential users to the PyCall.jl and Conda.jl documentation for troubleshooting.
I was unable to install the code as directed here (https://czimm79.github.io/MicroTracker.jl/dev/quickstart/), thanks to a Python/Conda issue, documented here: https://github.com/czimm79/MicroTracker.jl/issues/40
UPDATE: I got it to install as expected on a different machine.
Noted that the summary seems incomplete, and contains jargon https://github.com/czimm79/MicroTracker.jl/issues/41
Noted that the Statement of Need seems to be overloaded, advised to move the implementation details into a different section: https://github.com/czimm79/MicroTracker.jl/issues/42
I think the documentation's statement of need could be expanded placed in the formal docs, not just in the README: https://github.com/czimm79/MicroTracker.jl/issues/43
Also I generally concur with @mkitti's points.
Thank you all for your review and insightful comments on our work. We will begin to address and implement the solutions discussed here. When ready for review, I will create a PR which addresses each issue and link to them from this thread.
Thank you. This review format allows for an interactive conversation, so I would be happy to discuss anything about it in the meantime. I look forward to seeing your revisions.
@czimm79 hope you are getting one well. Would you be able to provide an update on how you are addressing the above?
@Kevin-Mattheus-Moerman Yes, I would be happy to provide an update on our remaining blockers by the end of this week. Thank you all for your patience, I was without a workstation during my recent move.
As promised, here is the current status on the review.
Thank you all again for your patience and helpful comments.
@czimm79 thanks for the updates/links. Let me know if I should tell the reviewers to pick this up again, or if you are still working on things.
Hi @Kevin-Mattheus-Moerman - Still working on things, the response should be complete by the end of this week. Thanks.
@Kevin-Mattheus-Moerman The response is ready for the reviewers to pick up again.
Reviewers: Please find the responses in the MicroTracker pull requests tab. After the review of each PR, the plan is to merge them into the review
branch. Then, after verifying everything works well combined, the review
branch will be merged into master
with a new version increment.
Please let me know if I missed anything. I will be monitoring this thread and the PRs for any continued discussion. Thank you.
@roflmaostc, @mkitti, @BioTurboNick please pick up the review and provide further feedback to the authors where needed. Thanks!
@roflmaostc, @mkitti, @BioTurboNick please pick up the review and provide further feedback to the authors where needed. Thanks!
My remaining comments concern the Python interface as detailed in https://github.com/czimm79/MicroTracker.jl/pull/47#pullrequestreview-1787821495 .
It appears that PyCall currently does not support non-root Conda environments
There is some misreading of the documentation here. Conda.ROOTENV
is the default value for the optional env
arguments across the Conda.jl API. However, you can specify the environment by passing a second argument to functions such as Conda.add
and Conda.add_channel
.
PyCall.jl can be used with non-root environments by
PYTHON
either via ENV["PYTHON"]
in Julia or in the shell before starting Julia.using Pkg; Pkg.build("PyCall")
as per the PyCall.jl README.Mark's comments are good, but otherwise LGTM!
LGTM too!
Thanks all. I plan on addressing @mkitti's comments by the end of this week.
Hi @Kevin-Mattheus-Moerman - I believe we're ready to move forward. I've worked with Mark to address his comments over on https://github.com/czimm79/MicroTracker.jl/pull/47. The combined reviewer comments have been pushed to the master branch and tagged with v0.3. Let me know what I need to do next. Thanks!
@editorialbot generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@BioTurboNick , could you check if you the remaining checklist items have been satisfied?
Done
@mkitti @BioTurboNick @roflmaostc thanks for your excellent reviews! All boxes are now ticked. It looks like @BioTurboNick @roflmaostc have already given their blessing. @mkitti at this point would you recommend acceptance in JOSS as well? Thanks!
Yes, I recommend acceptance.
@czimm79 it looks like all reviewers have now given their blessing. So we can proceed to process this work for acceptance in JOSS.
@editorialbot set <DOI here> as archive
@editorialbot set <version here> as version
@editorialbot generate pdf
@editorialbot check references
and ask author(s) to update as needed@editorialbot recommend-accept
@czimm79 can you work on your set of points here ☝️
In addition:
References
heading prior to the reference list. USA
as United States of America
|
, can you reformat this? This should perhaps be a comma instead. @editorialbot generate pdf
Submitting author: !--author-handle-->@czimm79<!--end-author-handle-- (Coy Zimmermann) Repository: https://github.com/czimm79/MicroTracker.jl Branch with paper.md (empty if default branch): Version: v.0.3.3 Editor: !--editor-->@Kevin-Mattheus-Moerman<!--end-editor-- Reviewers: @roflmaostc, @mkitti, @BioTurboNick Archive: 10.5281/zenodo.10578580
Status
Status badge code:
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
@roflmaostc & @mkitti & @BioTurboNick, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:
The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @Kevin-Mattheus-Moerman 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 ✨
Checklists
📝 Checklist for @roflmaostc
📝 Checklist for @mkitti
📝 Checklist for @BioTurboNick