openjournals / joss-reviews

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

[REVIEW]: Anime: Atmospheric and Instrument Models in the Measurement Equation #6573

Closed editorialbot closed 5 months ago

editorialbot commented 7 months ago

Submitting author: !--author-handle-->@iniyannatarajan<!--end-author-handle-- (Iniyan Natarajan) Repository: https://github.com/iniyannatarajan/Anime.jl Branch with paper.md (empty if default branch): Version: v0.5.0 Editor: !--editor-->@dfm<!--end-editor-- Reviewers: @kiranshila, @michael-petersen Archive: 10.5281/zenodo.11238336

Status

status

Status badge code:

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

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

@kiranshila & @michael-petersen, 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:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @dfm 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 @michael-petersen

πŸ“ Checklist for @kiranshila

editorialbot commented 7 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
editorialbot commented 7 months ago

Software report:

github.com/AlDanial/cloc v 1.90  T=0.18 s (326.4 files/s, 31723.2 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Julia                           33            618            940           1913
CSV                              5              0              0            773
Markdown                         7             96              0            449
YAML                             9             79             91            398
TeX                              1             16              0            219
TOML                             4              8              0            134
-------------------------------------------------------------------------------
SUM:                            59            817           1031           3886
-------------------------------------------------------------------------------

Commit count by author:

   333  Iniyan Natarajan
     4  CompatHelper Julia
editorialbot commented 7 months ago

Paper file info:

πŸ“„ Wordcount for paper.md is 1274

βœ… The paper includes a Statement of need section

editorialbot commented 7 months ago

License info:

βœ… License found: MIT License (Valid open source OSI approved license)

editorialbot commented 7 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1137/141000671 is OK
- 10.21105/joss.04457 is OK
- 10.3847/1538-4357/aab6a8 is OK
- 10.1051/aas:1996146 is OK
- 10.3847/2041-8213/ab0ec7 is OK
- 10.3847/2041-8213/ab0c96 is OK
- 10.3390/galaxies11050107 is OK
- 10.1146/annurev.aa.22.090184.000525 is OK
- 10.3847/2041-8213/ac6674 is OK
- 10.1051/0004-6361/201936622 is OK
- 10.1093/mnras/stac531 is OK
- 10.1051/0004-6361/201016082 is OK
- 10.3847/1538-4357/ab328d is OK
- 10.1051/0004-6361/201935181 is OK

MISSING DOIs

- No DOI given, and none found for title: Gaussian processes for machine learning

INVALID DOIs

- None
dfm commented 7 months ago

@kiranshila, @michael-petersen β€” This is the review thread for the paper. All of our correspondence will happen here from now on. Thanks again for agreeing to participate!

πŸ‘‰ Please read the "Reviewer instructions & questions" in the first comment above, and generate your checklists by commenting @editorialbot generate my checklist on this issue ASAP. As you go over the submission, please check any items that you feel have been satisfied. There are also links to the JOSS reviewer guidelines.

The JOSS review is different from most other journals. Our goal is to work with the authors to help them meet our criteria instead of merely passing judgment on the submission. As such, the reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention openjournals/joss-reviews#6573 so that a link is created to this thread (and I can keep an eye on what is happening). Please also feel free to comment and ask questions on this thread. In my experience, it is better to post comments/questions/suggestions as you come across them instead of waiting until you've reviewed the entire package.

We aim for the review process to be completed within about 4-6 weeks but please try to make a start ahead of this as JOSS reviews are by their nature iterative and any early feedback you may be able to provide to the author will be very helpful in meeting this schedule. Please get your review started as soon as possible!

editorialbot commented 7 months ago

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

michael-petersen commented 7 months ago

Review checklist for @michael-petersen

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

kiranshila commented 7 months ago

Review checklist for @kiranshila

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

kiranshila commented 7 months ago

Review

Great work, Iniyan. Good to see more Julia in radio astronomy!

Paper

Fantastic paper. I think the objectives were clear, and the paper covers the correct mix of theory and practice.

Code

Critical - Please include something like CONTRIBUTING to the repo that describes the community guidelines for contributors, issue reporting, and support seeking.

I have been having a heck of a time trying to get this to install, although this seems par for the course given both the C++ and Python FFI that's happening. I have tried a few different ways, using my setup on Arch Linux, on RHEL 8, in a pure nix shell (nix-shell -p julia-bin cacert --pure), and on a remote Ubuntu server. I only managed to get it to install in the nix shell and on ubuntu. I've gotten a range of issues from PythonCall failing to do some stuff in Conda, linker errors with stuff from cxxwrap, and even a segfault from PythonCall. To be clear, I don't think this is your packaging problem, but just exposes a lot of fragility in Julia's FFI. It may make sense to expand your CI matrix a bit to other platforms. Usually for Julia this wouldn't matter, but again - fragile FFI means this probably is worth it. As I wrote the first CXXWrap version of Casacore, I know this pain.

This being said, I haven't been able to run any of your examples. Your tutorials refer to some unknown paths and data. Presumably these are the ones in the repo and the docs are set up like this for doc tests, but just going off the docs, I am unable to follow the tutorials. There are also some instances of using .Anime, which would be correct in the CI context, but not for a tutorial.

For example, I'm trying to follow this tutorial, in which I correct the import, and clone your repo, fix the paths, I still get an error (I can open an issue if you like). In fact, it appears that the aforementioned segfault comes from giving invalid paths to some FFI, which means there might need to be some more error checking in some of these FFI shims. For completeness, here is the error I got when I got closest to it working

msfromconfig error ```julia msfromconfig(msname, mode, stations, casaanttemplate, spw_centrefreq, spw_bw, spw_channels, sourcedict, starttime, exposure, scans, scanlengths, scanlag; autocorr=autocorr, telescopename=telescopename, feed=feed, shadowlimit=shadowlimit, elevationlimit=elevationlimit, stokes=stokes, delim=delim, ignorerepeated=ignorerepeated) [ Info: Creating new ANTENNA table from CSV station info file... 2024-04-15 18:11:07 SEVERE Exception Reported: (src/code/synthesis/MeasurementEquations/Simulator.cc : 776) Failed AlwaysAssert (nn == mount_p.nelements()) ERROR: Python: RuntimeError: (src/code/synthesis/MeasurementEquations/Simulator.cc : 776) Failed AlwaysAssert (nn == mount_p.nelements()) Python stacktrace: [1] setconfig @ casatools.__casac__.simulator ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatools/__casac__/simulator.py:615 [2] setconfig @ casatools.simulator ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatools/simulator.py:178 Stacktrace: [1] pythrow() @ PythonCall.Core ~/.julia/packages/PythonCall/bb3ax/src/Core/err.jl:92 [2] errcheck @ ~/.julia/packages/PythonCall/bb3ax/src/Core/err.jl:10 [inlined] [3] pycallargs @ ~/.julia/packages/PythonCall/bb3ax/src/Core/builtins.jl:213 [inlined] [4] pycall(::PythonCall.Core.Py; kwargs::@Kwargs{…}) @ PythonCall.Core ~/.julia/packages/PythonCall/bb3ax/src/Core/builtins.jl:224 [5] pycall @ ~/.julia/packages/PythonCall/bb3ax/src/Core/builtins.jl:220 [inlined] [6] #_#11 @ ~/.julia/packages/PythonCall/bb3ax/src/Core/Py.jl:339 [inlined] [7] msfromconfig(msname::String, mscreationmode::String, stations::String, casaanttemplate::String, spw_centrefreq::Vector{…}, spw_bw::Vector{…}, spw_channels::Vector{…}, sourcedict::Dict{…}, starttime::String, exposure::Float64, scans::Int64, scanlengths::Vector{…}, scanlag::Float64; autocorr::Bool, telescopename::String, feed::String, shadowlimit::Float64, elevationlimit::String, stokes::String, delim::String, ignorerepeated::Bool) @ Anime ~/.julia/packages/Anime/5wUdA/src/storageutils/generatems.jl:219 [8] top-level scope @ REPL[31]:1 Some type information was truncated. Use `show(err)` to see complete types. ```

The rest of the documentation, though, is fantastic! You cover all the math someone might need to know and have beautiful plots and all the API docs we would want, I just couldn't run any of it. The only actionable thing I can say then is you could tweak the tutorials to be a bit more follow-able. Even if that's "clone the repo and cd into this path to get the example data", or "here's the link to download the example data", etc. Your tests run in CI, so the installation stuff is some combination of my setup and the Julia's packaging, so I can't fault you for that.

iniyannatarajan commented 7 months ago

Hi Kiran,

Thanks very much for your comments! I have added a Contributing section to the README.

I see this error with the latest PythonCall. PythonCall has had a few releases since v0.9.15, which trip up the arguments being passed to the Python functions by msfromconfig function. Restricting PythonCall to v0.9.15 gets rid of this error.

The version tagged to the REVIEW is 0.3.0 but I have made a 0.4.0 release since then. The PyhtonCall releases happened after I released this version, so I have updated the Project.toml on the main repo restricting PythonCall to v0.9.15. So, the latest version on the main branch should not give this error.

Would it be possible for you (and would it be okay) to test the main branch for the review, or should I make a new release with only this change made to Project.toml?

Also, I will expand the CI to other platforms, but I do not have ready access to them. Any idea on how to easily debug if I run into error on the other platforms? Thanks!

iniyannatarajan commented 6 months ago

Hi Kiran,

I was wondering if you were able to get rid of the PythonCall error with the latest code in the main branch? I have also added instructions to generate all the tutorials locally in the documentation. Please let me know if this works for you.

Thanks!

dfm commented 6 months ago

@michael-petersen, @kiranshila β€” I'm checking in here to see how things are going with your reviews. Please take a look here again ASAP. Thanks!!

kiranshila commented 6 months ago

Hi Kiran,

I was wondering if you were able to get rid of the PythonCall error with the latest code in the main branch? I have also added instructions to generate all the tutorials locally in the documentation. Please let me know if this works for you.

Thanks!

Great! I'll give it a shot again!

@dfm I have mostly completed my review, just was trying to get some examples to run on my local machine.

michael-petersen commented 6 months ago

Hi,

@iniyannatarajan Thanks for the thoughts on MacOS install, it seems like that is still a work in progress, which is fine. Maybe worth noting in the installation documentation?

An Ubuntu installation is very smooth, but I agree with @kiranshila that the tutorial currently refers to some local paths (e.g. the tutorial here) and I haven't been able to run any of the examples locally. @iniyannatarajan I'll open an issue to this effect, since it looks like you might be able to hack this with relativepath = joinpath(pathof(Anime),"../../"), but I'm not sure that is behaving as intended.

iniyannatarajan commented 6 months ago

Hi Michael,

Thanks for your comments!

I have added a note regarding MacOS in the installation section of the documentation here. Downgrading casatools to version 6.5.1.23 in CondaPkg.toml could be a solution for MacOS as Lindy Blackburn has mentioned here, but I have currently left it at version 6.5.5.21 which has been used for all of the testing so far.

I have updated the instructions for downloading the source code and generating all the docs & tutorials locally in the tutorial section of the documentation. I have also removed the relative path loading from the documentation to avoid confusion (it is still internally used), so that anyone with Anime installed in their local Julia environment can just type using Anime and step through the tutorials.

Please note that I have refactored the code since v0.3 or v0.4 and the latest code in the main branch (and the dev docs) reflects the changes mentioned above. Let me know if the above changes work for you.

kiranshila commented 6 months ago

@iniyannatarajan I'm still having trouble installing on the main branch (on Arch linux). I tried from a cleared Julia and pip cache with the same results. Looks like now I'm getting a numpy version problem? I've attached the log.

```julia ERROR: The following 1 direct dependency failed to precompile: Anime [628eb91b-9d1c-424a-81d5-cd7fa5d7294a] Failed to precompile Anime [628eb91b-9d1c-424a-81d5-cd7fa5d7294a] to "/home/kiran/.julia/compiled/v1.10/Anime/jl_snnWTH". CondaPkg Found dependencies: /home/kiran/.julia/packages/Anime/d9tOh/CondaPkg.toml CondaPkg Found dependencies: /home/kiran/.julia/packages/PythonCall/wXfah/CondaPkg.toml CondaPkg Resolving changes + casadata (pip) + casatasks (pip) + casatools (pip) + libstdcxx-ng + openssl + pip + python CondaPkg Creating environment β”‚ /home/kiran/.julia/artifacts/7973f2c7725e2d0eef7a95159454c4145f0945a2/bin/micromamba β”‚ -r /home/kiran/.julia/scratchspaces/0b3b1443-0f03-428d-bdfb-f27f9c1191ea/root β”‚ create β”‚ -y β”‚ -p /home/kiran/.julia/environments/v1.10/.CondaPkg/env β”‚ --override-channels β”‚ --no-channel-priority β”‚ libstdcxx-ng[version='>=3.4,<13.0'] β”‚ openssl[version='=3.0.2'] β”‚ pip[version='>=22.0.0'] β”‚ python[version='>=3.7,<4',channel='conda-forge',build='*cpython*'] β”‚ python[version='=3.8'] β”” -c conda-forge conda-forge/linux-64 Using cache conda-forge/noarch Using cache Transaction Prefix: /home/kiran/.julia/environments/v1.10/.CondaPkg/env Updating specs: - libstdcxx-ng[version='>=3.4,<13.0'] - openssl===3.0.2 - pip[version='>=22.0.0'] - conda-forge::python[version='>=3.7,<4',build=*cpython*] - python===3.8 Package Version Build Channel Size ──────────────────────────────────────────────────────────────────────────── Install: ──────────────────────────────────────────────────────────────────────────── + libstdcxx-ng 12.3.0 hc0a3c3a_7 conda-forge Cached + _libgcc_mutex 0.1 conda_forge conda-forge Cached + ca-certificates 2024.2.2 hbcca054_0 conda-forge Cached + ld_impl_linux-64 2.40 h55db66e_0 conda-forge Cached + libgomp 13.2.0 h77fa898_7 conda-forge Cached + _openmp_mutex 4.5 2_gnu conda-forge Cached + libgcc-ng 13.2.0 h77fa898_7 conda-forge Cached + xz 5.2.6 h166bdaf_0 conda-forge Cached + ncurses 6.5 h59595ed_0 conda-forge Cached + libzlib 1.2.13 hd590300_5 conda-forge Cached + libuuid 2.38.1 h0b41bf4_0 conda-forge Cached + libnsl 2.0.1 hd590300_0 conda-forge Cached + libffi 3.4.2 h7f98852_5 conda-forge Cached + bzip2 1.0.8 hd590300_5 conda-forge Cached + openssl 3.0.2 h166bdaf_1 conda-forge Cached + readline 8.2 h8228510_1 conda-forge Cached + tk 8.6.13 noxft_h4845f30_101 conda-forge Cached + libsqlite 3.45.3 h2797004_0 conda-forge Cached + sqlite 3.45.3 h2c6b66d_0 conda-forge Cached + python 3.8.13 ha86cf86_0_cpython conda-forge Cached + wheel 0.43.0 pyhd8ed1ab_1 conda-forge Cached + setuptools 69.5.1 pyhd8ed1ab_0 conda-forge Cached + pip 24.0 pyhd8ed1ab_0 conda-forge Cached Summary: Install: 23 packages Total download: 0 B ──────────────────────────────────────────────────────────────────────────── Transaction starting Linking libstdcxx-ng-12.3.0-hc0a3c3a_7 Linking _libgcc_mutex-0.1-conda_forge Linking ca-certificates-2024.2.2-hbcca054_0 Linking ld_impl_linux-64-2.40-h55db66e_0 Linking libgomp-13.2.0-h77fa898_7 Linking _openmp_mutex-4.5-2_gnu Linking libgcc-ng-13.2.0-h77fa898_7 Linking xz-5.2.6-h166bdaf_0 Linking ncurses-6.5-h59595ed_0 Linking libzlib-1.2.13-hd590300_5 Linking libuuid-2.38.1-h0b41bf4_0 Linking libnsl-2.0.1-hd590300_0 Linking libffi-3.4.2-h7f98852_5 Linking bzip2-1.0.8-hd590300_5 Linking openssl-3.0.2-h166bdaf_1 Linking readline-8.2-h8228510_1 Linking tk-8.6.13-noxft_h4845f30_101 Linking libsqlite-3.45.3-h2797004_0 Linking sqlite-3.45.3-h2c6b66d_0 Linking python-3.8.13-ha86cf86_0_cpython Linking wheel-0.43.0-pyhd8ed1ab_1 Linking setuptools-69.5.1-pyhd8ed1ab_0 Linking pip-24.0-pyhd8ed1ab_0 Transaction finished To activate this environment, use: micromamba activate /home/kiran/.julia/environments/v1.10/.CondaPkg/env Or to execute a single command in this environment, use: micromamba run -p /home/kiran/.julia/environments/v1.10/.CondaPkg/env mycommand CondaPkg Installing Pip packages β”‚ /home/kiran/.julia/environments/v1.10/.CondaPkg/env/bin/pip β”‚ install β”‚ casadata β”‚ casatasks ==6.5.5.21 β”” casatools ==6.5.5.21 Collecting casadata Downloading casadata-2024.1.15-py3-none-any.whl.metadata (430 bytes) Collecting casatasks==6.5.5.21 Downloading casatasks-6.5.5.21-py3-none-any.whl.metadata (685 bytes) Collecting casatools==6.5.5.21 Downloading casatools-6.5.5.21-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.1 kB) Collecting matplotlib (from casatasks==6.5.5.21) Downloading matplotlib-3.7.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.metadata (5.7 kB) Requirement already satisfied: scipy in ./.local/lib/python3.8/site-packages (from casatasks==6.5.5.21) (1.4.1) Collecting certifi (from casatasks==6.5.5.21) Downloading certifi-2024.2.2-py3-none-any.whl.metadata (2.2 kB) Collecting numpy (from casatools==6.5.5.21) Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.6 kB) Collecting contourpy>=1.0.1 (from matplotlib->casatasks==6.5.5.21) Downloading contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.9 kB) Collecting cycler>=0.10 (from matplotlib->casatasks==6.5.5.21) Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB) Collecting fonttools>=4.22.0 (from matplotlib->casatasks==6.5.5.21) Downloading fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (159 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 159.5/159.5 kB 5.6 MB/s eta 0:00:00 Collecting kiwisolver>=1.0.1 (from matplotlib->casatasks==6.5.5.21) Downloading kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (6.4 kB) Collecting packaging>=20.0 (from matplotlib->casatasks==6.5.5.21) Downloading packaging-24.0-py3-none-any.whl.metadata (3.2 kB) Requirement already satisfied: pillow>=6.2.0 in ./.local/lib/python3.8/site-packages (from matplotlib->casatasks==6.5.5.21) (7.1.1) Collecting pyparsing>=2.3.1 (from matplotlib->casatasks==6.5.5.21) Downloading pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB) Collecting python-dateutil>=2.7 (from matplotlib->casatasks==6.5.5.21) Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB) Collecting importlib-resources>=3.2.0 (from matplotlib->casatasks==6.5.5.21) Downloading importlib_resources-6.4.0-py3-none-any.whl.metadata (3.9 kB) Collecting zipp>=3.1.0 (from importlib-resources>=3.2.0->matplotlib->casatasks==6.5.5.21) Downloading zipp-3.18.1-py3-none-any.whl.metadata (3.5 kB) Collecting six>=1.5 (from python-dateutil>=2.7->matplotlib->casatasks==6.5.5.21) Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB) Downloading casatasks-6.5.5.21-py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 18.2 MB/s eta 0:00:00 Downloading casatools-6.5.5.21-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (133.6 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.6/133.6 MB 5.6 MB/s eta 0:00:00 Downloading casadata-2024.1.15-py3-none-any.whl (349.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 349.3/349.3 MB 8.9 MB/s eta 0:00:00 Downloading certifi-2024.2.2-py3-none-any.whl (163 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 163.8/163.8 kB 15.3 MB/s eta 0:00:00 Downloading matplotlib-3.7.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.2/9.2 MB 54.1 MB/s eta 0:00:00 Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.3/17.3 MB 54.0 MB/s eta 0:00:00 Downloading contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (301 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 301.1/301.1 kB 31.0 MB/s eta 0:00:00 Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB) Downloading fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7/4.7 MB 45.7 MB/s eta 0:00:00 Downloading importlib_resources-6.4.0-py3-none-any.whl (38 kB) Downloading kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 41.5 MB/s eta 0:00:00 Downloading packaging-24.0-py3-none-any.whl (53 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.5/53.5 kB 5.7 MB/s eta 0:00:00 Downloading pyparsing-3.1.2-py3-none-any.whl (103 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.2/103.2 kB 11.3 MB/s eta 0:00:00 Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 18.9 MB/s eta 0:00:00 Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Downloading zipp-3.18.1-py3-none-any.whl (8.2 kB) Installing collected packages: casadata, zipp, six, pyparsing, packaging, numpy, kiwisolver, fonttools, cycler, certifi, python-dateutil, importlib-resources, contourpy, casatools, matplotlib, casatasks ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. librosa 0.7.2 requires decorator>=3.0.0, which is not installed. pandas 1.0.3 requires pytz>=2017.2, which is not installed. tb-nightly 2.3.0a20200424 requires markdown>=2.6.8, which is not installed. tb-nightly 2.3.0a20200424 requires requests<3,>=2.21.0, which is not installed. tensorboard 2.2.1 requires markdown>=2.6.8, which is not installed. tensorboard 2.2.1 requires requests<3,>=2.21.0, which is not installed. tf-nightly 2.1.0 requires wrapt>=1.11.1, which is not installed. Successfully installed casadata-2024.1.15 casatasks-6.5.5.21 casatools-6.5.5.21 certifi-2024.2.2 contourpy-1.1.1 cycler-0.12.1 fonttools-4.51.0 importlib-resources-6.4.0 kiwisolver-1.4.5 matplotlib-3.7.5 numpy-1.24.4 packaging-24.0 pyparsing-3.1.2 python-dateutil-2.9.0.post0 six-1.16.0 zipp-3.18.1 ERROR: LoadError: Python: ImportError: cannot import name 'int' from 'numpy' (/home/kiran/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/numpy/__init__.py) Python stacktrace: [1] @ ~/.local/lib/python3.8/site-packages/scipy/special/orthogonal.py:81 [2] @ ~/.local/lib/python3.8/site-packages/scipy/special/_basic.py:19 [3] @ ~/.local/lib/python3.8/site-packages/scipy/special/__init__.py:637 [4] @ ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatasks/private/JPLephem_reader2.py:21 [5] @ ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatasks/private/task_fixplanets.py:10 [6] @ ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatasks/fixplanets.py:9 [7] @ ~/.julia/environments/v1.10/.CondaPkg/env/lib/python3.8/site-packages/casatasks/__init__.py:178 Stacktrace: [1] pythrow() @ PythonCall ~/.julia/packages/PythonCall/wXfah/src/err.jl:94 [2] errcheck @ ~/.julia/packages/PythonCall/wXfah/src/err.jl:10 [inlined] [3] pyimport(m::String) @ PythonCall ~/.julia/packages/PythonCall/wXfah/src/concrete/import.jl:11 [4] pyimport(::Pair{String, String}) @ PythonCall ~/.julia/packages/PythonCall/wXfah/src/concrete/import.jl:12 [5] top-level scope @ ~/.julia/packages/Anime/d9tOh/src/Anime.jl:22 [6] include @ ./Base.jl:495 [inlined] [7] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing) @ Base ./loading.jl:2222 [8] top-level scope @ stdin:3 in expression starting at /home/kiran/.julia/packages/Anime/d9tOh/src/Anime.jl:4 in expression starting at stdin: Stacktrace: [1] pkgerror(msg::String) @ Pkg.Types ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/Types.jl:70 [2] precompile(ctx::Pkg.Types.Context, pkgs::Vector{…}; internal_call::Bool, strict::Bool, warn_loaded::Bool, already_instantiated::Bool, timing::Bool, _from_loading::Bool, kwargs::@Kwargs{…}) @ Pkg.API ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:1659 [3] precompile(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::@Kwargs{_from_loading::Bool}) @ Pkg.API ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:159 [4] precompile @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:147 [inlined] [5] #precompile#114 @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/API.jl:146 [inlined] [6] #invokelatest#2 @ ./essentials.jl:894 [inlined] [7] invokelatest @ ./essentials.jl:889 [inlined] [8] _require(pkg::Base.PkgId, env::String) @ Base ./loading.jl:1963 [9] __require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1812 [10] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [11] invoke_in_world @ ./essentials.jl:923 [inlined] [12] _require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1803 [13] macro expansion @ ./loading.jl:1790 [inlined] [14] macro expansion @ ./lock.jl:267 [inlined] [15] __require(into::Module, mod::Symbol) @ Base ./loading.jl:1753 [16] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [17] invoke_in_world @ ./essentials.jl:923 [inlined] [18] require(into::Module, mod::Symbol) @ Base ./loading.jl:1746 Some type information was truncated. Use `show(err)` to see complete types. ```
kiranshila commented 6 months ago

It seems the scipy version needs to be bumped (as a transitive dep of casatasks) as numpy 1.24 doesn't have a np.int type, which scipy refers to.

iniyannatarajan commented 6 months ago

@kiranshila Thanks! I downgraded numpy to 1.23.5 instead. Would this work?

kiranshila commented 6 months ago

That did the trick! Classic python versioning, I blame CASA. I'm surprised this didn't come up in tests, I guess things were using an older cached version? Like, you'd think casatools would have noticed.

I was able to run the tutorials manually by cloning the repo and setting relativepath to the cloned dir! Everything is now working as expected. Great job on the docs updates, everything looks good!

Maybe a last little note (unrelated to the review), this is still a relatively complex software stack with c libraries, julia, python, and all sorts of crazy interlanguage things happening. It might be in your interest to explore some deterministic packaging to create environments for your users with the likes of Nix, Guix, or Spack. I've been exploring this with our telescope project with decent success. Maybe something to check out if you get bored :)

@dfm I've completed my review and recommend this paper for publication

iniyannatarajan commented 6 months ago

Thanks @kiranshila for your comments!

The logs of previous builds on ubuntu-latest show that numpy 1.24.4 and scipy 1.10.1 were being installed and the tests had run without issues (same on my local Ubuntu machine too), which is puzzling to me.

I will check out the packaging tools you have recommended. The idea is to ultimately eliminate the reliance on external software and python dependencies. Only MS creation from scratch uses python casatools/casatasks directly. To avoid this, Casacore.jl needs to support the simulator tool. If I get time I will see if I can add this to Casacore.jl.

michael-petersen commented 6 months ago

Hi @iniyannatarajan ,

I'm able to run most of the tutorial now on Ubuntu, no problem -- thanks for the updates!

However, I'm still crashing out of the first tutorial ('Creating Data Sets') with an opaque segfault that I'm not sure how to diagnose. @kiranshila , you were able to run this tutorial fine?

Error log ``` julia> createmsfromuvfits(uvfits, msname, mode) signal (11): Segmentation fault in expression starting at REPL[41]:1 _PyVectorcall_Function at /usr/local/src/conda/python-3.8.13/Include/cpython/abstract.h:83 [inlined] PyObject_Call at /usr/local/src/conda/python-3.8.13/Objects/call.c:227 unknown function (ip: 0x7f01cc29c06f) Allocations: 260147087 (Pool: 260072308; Big: 74779); GC: 73 Segmentation fault ``` With the same sort of behaviour for the other data sets examples.

I'm guessing it is some sort of Python issue under the hood, but for the purposes of this test, I'm just blindly following the documentation.

The docs for 'Compute coherency matrix' still need the path fixes in the dev version.

I'm very happy with the other changes and the text of the paper is great. Just want to see the tutorial to some sort of conclusion and then am happy to sign off!

iniyannatarajan commented 6 months ago

Hi @michael-petersen, thanks for catching this!

I have updated the documentation with the path fixes and additional clarification, but I too get the same error as you when I create a temporary environment in Julia REPL, install Anime from GitHub, and call createmsfromuvfits.

It does not happen if I do something like include("/path/to/Anime.jl/src/Anime.jl") in this temporary environment (which replaces module Anime with a warning) and then call the same function; or if I do importuvfits = pyimport("casatasks" => "importuvfits") and then call importuvfits directly.

I will add an instruction to this effect in the tutorial for creating data sets for now and look into this issue.

michael-petersen commented 6 months ago

Good suggestion, @iniyannatarajan , that works for me! Just add that instruction to the tutorial, and then you are good as far as I am concerned. Good luck with tracking down those annoying little bugs in the long run!

michael-petersen commented 6 months ago

To conclude my review, just a few more compliments on the paper; I really liked the control flow figure, and appreciated the inclusion of a 'Related Software' section, as someone not familiar with the radio astronomy Julia offerings. Great work!

@dfm , I have completed my review and recommend the paper for publication.

iniyannatarajan commented 6 months ago

Hi @michael-petersen , thanks for your comments!

I have added the instruction to the docs here. I will make a new release with the updates made since version 0.4.0 (plus additional minor updates) in the next week or so.

Getting rid of the python dependencies is indeed a high priority item now without losing the ability to handle CASA data sets. New data schemas are being developed by a few different VLBI/radio astronomy groups, for which I (and a few others) are interested in developing native support in Julia. Ultimately, we would like to move to these as the primary formats for storing data and metadata.

kiranshila commented 6 months ago

One final note (not related to the review), it may be useful to bundle WSClean and AATM as BinaryBuilder artifacts instead of relying on the user to install this software. This is the β€œpath of the least resistance” for Julia libraries requiring external stuff.

iniyannatarajan commented 6 months ago

@kiranshila Thanks! I am indeed about to replace AATM with AM for atmospheric modelling and have already built a binary wrapper here for it. This will replace AATM in future releases.

I will try to build a binary wrapper for WSClean. The idea is to reproduce its functionality natively in Julia (similar to packages such as Comrade.jl) but that is slightly longer term for now.

dfm commented 6 months ago

@editorialbot generate pdf

dfm commented 6 months ago

@editorialbot check references

editorialbot commented 6 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1137/141000671 is OK
- 10.21105/joss.04457 is OK
- 10.3847/1538-4357/aab6a8 is OK
- 10.1051/aas:1996146 is OK
- 10.3847/2041-8213/ab0ec7 is OK
- 10.3847/2041-8213/ab0c96 is OK
- 10.3390/galaxies11050107 is OK
- 10.1146/annurev.aa.22.090184.000525 is OK
- 10.3847/2041-8213/ac6674 is OK
- 10.1051/0004-6361/201936622 is OK
- 10.1093/mnras/stac531 is OK
- 10.1051/0004-6361/201016082 is OK
- 10.3847/1538-4357/ab328d is OK
- 10.1051/0004-6361/201935181 is OK

MISSING DOIs

- No DOI given, and none found for title: Gaussian processes for machine learning

INVALID DOIs

- None
editorialbot commented 6 months ago

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

dfm commented 6 months ago

@kiranshila, @michael-petersen β€” Thanks for your thorough and constructive reviews!!

@iniyannatarajan β€” I've opened a small PR with some minor edits to the manuscript, please take a look and merge or let me know what you think.

Once you've done that:

  1. Take one last read through the manuscript to make sure that you're happy with it (it's harder to make changes later!), especially the author names and affiliations. I've taken a pass and it looks good to me!
  2. Increment the version number of the software and report that version number back here.
  3. Create an archived release of that version of the software (using Zenodo or something similar). Please make sure that the metadata (title and author list) exactly match the paper. Then report the DOI of the release back to this thread.
iniyannatarajan commented 5 months ago

@dfm Thanks for the PR. I have made some minor updates to the paper draft and created a new release and DOI for the software.

Version: v0.5.0 DOI: 10.5281/zenodo.11238336

dfm commented 5 months ago

@editorialbot set v0.5.0 as version

editorialbot commented 5 months ago

Done! version is now v0.5.0

dfm commented 5 months ago

@editorialbot set 10.5281/zenodo.11238336 as archive

editorialbot commented 5 months ago

Done! archive is now 10.5281/zenodo.11238336

dfm commented 5 months ago

@editorialbot generate pdf

editorialbot commented 5 months ago

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

dfm commented 5 months ago

@editorialbot recommend-accept

editorialbot commented 5 months ago
Attempting dry run of processing paper acceptance...
editorialbot commented 5 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1137/141000671 is OK
- 10.21105/joss.04457 is OK
- 10.3847/1538-4357/aab6a8 is OK
- 10.1051/aas:1996146 is OK
- 10.3847/2041-8213/ab0ec7 is OK
- 10.3847/2041-8213/ab0c96 is OK
- 10.3390/galaxies11050107 is OK
- 10.1146/annurev.aa.22.090184.000525 is OK
- 10.3847/2041-8213/ac6674 is OK
- 10.1051/0004-6361/201936622 is OK
- 10.1093/mnras/stac531 is OK
- 10.1051/0004-6361/201016082 is OK
- 10.3847/1538-4357/ab328d is OK
- 10.1051/0004-6361/201935181 is OK

MISSING DOIs

- None

INVALID DOIs

- https://doi.org/10.7551/mitpress/3206.001.0001 is INVALID because of 'https://doi.org/' prefix
dfm commented 5 months ago

@iniyannatarajan β€” Can you fix that last DOI (remove the "https://doi.org/" part)? Then I'll run the final processing!

editorialbot commented 5 months ago

:warning: Error preparing paper acceptance. The generated XML metadata file is invalid.

Element doi: [facet 'pattern'] The value 'https://doi.org/10.7551/mitpress/3206.001.0001' is not accepted by the pattern '10\.[0-9]{4,9}/.{1,200}'.
iniyannatarajan commented 5 months ago

@dfm I've fixed it

dfm commented 5 months ago

@editorialbot recommend-accept

editorialbot commented 5 months ago
Attempting dry run of processing paper acceptance...
editorialbot commented 5 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1137/141000671 is OK
- 10.21105/joss.04457 is OK
- 10.3847/1538-4357/aab6a8 is OK
- 10.1051/aas:1996146 is OK
- 10.3847/2041-8213/ab0ec7 is OK
- 10.3847/2041-8213/ab0c96 is OK
- 10.3390/galaxies11050107 is OK
- 10.1146/annurev.aa.22.090184.000525 is OK
- 10.3847/2041-8213/ac6674 is OK
- 10.1051/0004-6361/201936622 is OK
- 10.1093/mnras/stac531 is OK
- 10.1051/0004-6361/201016082 is OK
- 10.3847/1538-4357/ab328d is OK
- 10.1051/0004-6361/201935181 is OK
- 10.7551/mitpress/3206.001.0001 is OK

MISSING DOIs

- None

INVALID DOIs

- None
editorialbot commented 5 months ago

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

Check final proof :point_right::page_facing_up: Download article

If the paper PDF and the deposit XML files look good in https://github.com/openjournals/joss-papers/pull/5387, then you can now move forward with accepting the submission by compiling again with the command @editorialbot accept