Closed editorialbot closed 10 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
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- 10.5281/zenodo.5558988 is OK
- 10.5194/hess-26-5473-2022 is OK
- 10.1029/2022MS003089 is OK
MISSING DOIs
- None
INVALID DOIs
- None
Software report:
github.com/AlDanial/cloc v 1.88 T=1.33 s (99.6 files/s, 337480.5 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
JSON 22 2 0 420104
Python 69 1982 1794 8325
C++ 1 331 1115 6043
C 1 328 1093 5936
reStructuredText 19 309 65 683
Cython 2 100 63 262
DOS Batch 2 37 2 238
make 2 49 6 209
Markdown 6 87 0 109
YAML 5 15 28 77
Jupyter Notebook 1 0 978 67
TeX 1 3 0 35
INI 1 4 0 13
TOML 1 0 0 6
-------------------------------------------------------------------------------
SUM: 133 3247 5144 442107
-------------------------------------------------------------------------------
gitinspector failed to run statistical information for the repository
Wordcount for paper.md
is 743
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
Hi @smchartrand, @andres-patrignani,
I just want to check if you have any questions regarding the review process. As a start, each of you should run @editorialbot generate my checklist
to get a checklist of the individual tasks a JOSS review requires. Tasks can then be ticked off one by one. You can find additional information in the guidelines. Also, feel free to tag me here if you have any additional questions.
Cheers!
Hi everyone,
I'm glad to see that the review process is in full swing now and the first issues are being created. @andres-patrignani if you could run editorialbot generate my checklist
as well that would be awesome. It makes it easier for me to track the process.
Hi Hauke,
I should have my review wrapped up in the next day or two. Thanks for your patience.
best,
-Shawn
From: Hauke Schulz @.***> Sent: May 31, 2023 10:04:26 AM To: openjournals/joss-reviews Cc: Shawn Chartrand; Mention Subject: Re: [openjournals/joss-reviews] [REVIEW]: PyFlowline a mesh independent river network generator for hydrologic models (Issue #5446)
Hi everyone, I'm glad to see that the review process is in full swing now and the first issues are being created. @andres-patrignanihttps://github.com/andres-patrignani if you could run editorialbot generate my checklist as well that would be awesome. It makes it easier for me to track the process.
— Reply to this email directly, view it on GitHubhttps://github.com/openjournals/joss-reviews/issues/5446#issuecomment-1570570186, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AE7I77S6R5TLYFP5OFQ6Y6TXI5YOPANCNFSM6AAAAAAXXBP3F4. You are receiving this because you were mentioned.Message ID: @.***>
I want to start by congratulating @changliao1025 (and Matt Cooper) for their submission. The software authors have tackled a long standing problem in hydrologic modelling, and the outcome is impressive. Thanks for the opportunity to review your submission, and get to explore the code in more detail. I hope my comments are helpful.
Most of my comments below address either (a) challenges with using the .ipynb and .py codes provided in the repository for the Susquehanna example to generate results, or (b) setting the context of the code with respect to existing platforms. All the comments are relatively minor, or moderate in scope, and should be easily addressed. I organized my comments under the review checklist headers to simplify things.
Jupyter Notebook: I could not successfully plot the flow network using oPyflowline.plot(sFilename_in = 'filter_flowline.png', sVariable_in = 'flowline_filter' )
. I did successfully plot the flow network using geopandas (I added this to the notebook), and using QGIS. After lots of digging, I think the issue lies in the dependencies. The notebook requires cartopy>=0.21.0 [based on setup.py]; I run Ubuntu 22.04 LTS and python 3.7.10 [which is the maintained version for this OS distribution], with cartopy 0.18.0 as the standard install version. After many attempts and breaking my "apt", I attempted to use a virtual python environment and then decided to stop as the effort in to address the plotting issue was too large. Perhaps the authors can think about a different way to setup the notebook visualization, or make the required dependencies more clear without having to dig through the software repository to piece things together. Geopandas was easy to implement in this case (geopandas image of the raw network geometry copied and pasted here from mpas_example notebook), although some of the formatting may be lost or more difficult to implement.
I was able to successfully execute run_simulation_mpas.py
in the examples/Susquehanna directory. However, the saved image of the filter_flowline.png has the same issues as decribed above for plotting in the Jupyter Notebook - the file saves but the network is not illustrated in the image file (saved image file shown at the bottom of this review). When I load the corresponding .geojson file into QGIS the network shows up just fine. So, I suspect the same dependency issues described for the Jupyter Notebook are affecting the reproducibility with the .py implementation.
Thank you very much for your review @smchartrand. @changliao1025 please feel free to already respond to the issues and comments, while @andres-patrignani is doing their review.
@andres-patrignani could you please create your checklist with @editorialbot generate my checklist
? That would be awesome.
@smchartrand Thank you for your comments, which will undoubtedly help us to provide better software. We will address your concerns soon about some details in the document and example code.
Below are a few responses to your concerns:
pyflowline was developed with visualization as an optional feature, see the setup file:
extras_require={
'visualization': ['cython', 'matplotlib', 'cartopy>=0.21.0']
}
This decision is made to reduce the model dependency. Users can run the model with only core dependency. But in the notebook, it is desired to have the visualization. We will update the documentation to clarify that, and users can use whatever methods for visualization, including QGIS, etc. And we recommend the Conda virtual environment for applications.
We will add some discussion comparing our model with others. Thanks for the suggestions for the other two similar tools. In short, our tool aims to provide the conceptual river networks for spatially-distributed hydrology models. Since these hydrologic models use the meshes to represent land surface, our model closes the gap by providing a method to define the river networks on top of meshes. This is different from vector line features.
We will address the remaining comments in the coming weeks. Thank you.
Hi, @smchartrand , Thank you for taking the time to write a review of our work. I appreciate your feedback. Below is the full response to your comments. Thank you for reviewing our submission and recognizing our modeling tool. PyFlowline was developed to close several gaps in hydrologic modeling. For example, although it is designed to run at regional and global scales using any mesh type, many modelers may be more interested in the watershed scale using structured meshes. To this extent, most existing applications can be viewed as a special case in PyFlowline, and PyFlowline provides an opportunity to expand existing applications to other domains and meshes.
General Checks reply:
Thanks for the comment.
There was a format issue in our original license file. It has now been resolved. The current license is BSD-3-Clause license.
Thanks for the comment.
We understand that there needs to be some clarification regarding the visualization component of the workflow. We have improved the visualization component in both the source code and documentation.
First, we revised the visualization class and function completely. Because PyFlowline is a core component in HexWatershed and both models share similar visualization patterns (point, polyline, polygon, and mixed), we merged all the visualization feature into an external module within PyFlowline. This module is largely based on another Python package PyEarth, developed by @chango1025. We plan to add PyEarth as a dependency package.
Although visualization is an important component in PyFlowline, it is not a required step to run the model. Besides, our choice of using GeoJSON as the main data I/O format is to ease the visualization task as many tools can visualize GeoJSON. Given the complexity of structured/unstructured datasets that contain point/polyline/polygon, we list the visualization feature as experimental, so users should expect undesired behavior.
We added Geopandas as another option in the notebook so users can easily switch to Geopandas for a quick fix.
Indeed, it is highly possible that the cartopy installation may affect the visualization. As discussed above, all the vector objects in PyFlowline are plotted using a geodetic framework. If some of the spatial reference information is missing, the vector objects may not be plotted correctly.
Functionality reply:
Thanks for the comment.
We updated the documentation, so there are consistent now.
Susquehanna River basin is average size watershed with a moderate amount of mesh cells. If running with a large domain with more than 10k mesh cells and 100+ river channels, the cython feature may be used to improve the performance. Besides, our workflow can be run using a SLURM job on a high-performance computer to obtain the best performance.
Documentation reply:
Thanks for the comment.
We update the readme file to explicitly list the dependency. We also specifically separate the optional dependency. The readthedocs documentation is also updated to maintain consistency.
Thanks for the comment.
Thanks for the comment.
Thanks for the comment. In most cases, our PyFlowline model should be run as a whole workflow. Running individual steps may not be feasible because the model requires all the objects to be accessible during simulation. In the future, we plan to add the checkpoint
feature so the model can resume at certain points, which may support more unit test capability.
Thanks for the comment.
Software Paper reply:
Thanks for the comment. We revised the summary to highlight that the model output from our package can be used in general hydrologic models, including
With PyFlowline, hydrologic modelers can generate conceptual river networks at various spatial resolutions for both structured and unstructured computational meshes. The generated river network datasets can be used by hydrologic models across scales.
Thanks for the comment. We added some background related to the existing vector-based river network method and explained why we developed this new model. We also cited related references. For hydrologic modelers, river networks are a key input for hydrologic models. While some hydrologic models accept vector-based river networks [@Schwenk:2021], others only accept mesh cell-based, which require a generation method from the vector-based river network. Currently, generating a mesh cell-based river network from a given vector-based river network and arbitrary computational mesh is a major challenge. Existing methods are typically limited to structured rectangular meshes, such as 30m x 30m cartesian grids for high-resolution watershed-scale modeling or 0.5 degree x 0.5 degree geographic grids for global climate modeling.
Thanks for the comment. We provided details of several different methods:
Existing river network representation methods often fall into these three categories:
PyFlowline is the only modeling software that provides these unique features:
Thank you.
conda
environment is necessary. It seems to me that most users having already a working conda
environment will not attempt to do this.Consider adding the URL to the documentation page in both the “About” section of the repository (so that the link appears below “A mesh independent river network generator for hydrologic models”)
Consider moving the “Quickstart” section in the Readme file to the top, so that people can easily find and access the documentation page.
Consider the following re-worded sentences: “River networks are landscape features typically represented using vector layers. However, most hydrologic models rely on regular grids to discretize the spatial domain and cannot directly ingest vector features into the model. As a result, hydrologic models usually implement a so-called stream-burning process to convert the vector-based river network into a mesh-based river network. PyFlowline solves this issue by using a mesh-independent approach that intersects the vector river network and mesh to reconstruct the conceptual river network.”
The following sentence is offers little detail about limitations: “and there are also some other limitations”. Can you add one or a couple of other specific limitations?
Consider adding the target audience and coding level required to install and use the package. I assume the library is aimed at hydrologists, geographers, urban planners, etc. In its current format I found the library a bit hard to get started for people that are just getting started.
There is a typo in the main Readme file when listing dependency packages. Please, change matplotlin
for matplotlib
The caption of Figure 1 in the paper (which also appears in the “Data Model” section of the online documentation) could benefit from a longer caption to better describe the connection between the OOP approach, vertex letters, and variables listed in the boxes. The current figure is fine for people with background in hydrology and computational geometry, but I'm not sure if the figure is clear to a wider audience.
In section 4.3.1. it remains unclear whether there are multiple input files or just one. The first and second sentences contradict. Should it say: “Within these configuration files…”?
There is an empty Readme file in /pyflowline-main/data/susquehanna/readme.md
. Not sure if this was intentional.
conda create --name pyflowline_test
conda install -c conda-forge pyflowline
Example usage: Authors provided a real-world example, but editing all the file paths for the user’s local installation seems overwhelming for a simple example. It would be nice to have a simpler way to set the paths and run the example from the Jupyter Notebook, since this is probably the first thing that users unfamiliar with the package will try to do to become more familiar with it.
Functionality documentation: Great
Automated tests: Good
Community guidelines: There are guidelines pointing users to the FAQ page, developers contact information, and encouragement to submit a GitHub issue if something did not work. I personally made use of the latter option and the authors responded promptly with clear instructions.
Summary: There is a clear description of the high-level functionality of the library. It may be good to provide a definition for “structured” and “unstructured” meshes in layman’s terms for non-technical readers. Perhaps the authors can add a figure illustrating both of these concepts and the perils of using structured rectangular meshes to represent river and streamflow networks. I wonder if the authors can explain some of these concepts using the concepts of vector and raster layers, which I think most people with basic training in geographic information systems will be able to understand and follow. I like the addition of a glossary in the online documentation, and it may be good to add the concepts of structured and unstructured meshes to that section.
A statement of need: The statement of need is clear and well-written.
State of the field: This seems to be the only software that can generate river networks on structured and unstructured meshes (so if I understand this correctly, the package is basically mesh-independent).
Quality of writing: The paper well written. The main website needs some clarification (see my comments above)
References: The list of references is complete.
Engwirda, D., & Liao
is missing the year and the title is all in upper case letters. Please, adopt a consistent style across all references. According to Zenodo the citation should be: Engwirda, Darren, & Liao, Chang. (2021, October 9). 'Unified' Laguerre-Power Meshes for Coupled Earth System Modelling. 29th International Meshing Roundtable (IMR), Virtual Conference. https://doi.org/10.5281/zenodo.5558988
Thank you @andres-patrignani for your review. We really appreciate it.
@changliao1025 I see that you have addressed already most, if not all, of @smchartrand comments. That's great! Could you please go now through @andres-patrignani review and let us know when you addressed all comments? We should then be relatively quick in moving forward.
Cheers!
Hi, @andres-patrignani , Thank you for taking the time to write a review of our work. I appreciate your feedback. Below is the full response to your comments.
General checks reply
Functionality reply
Documentation reply
For example, existing stream-burning methods always treat the vector river networks as a binary mask and cannot describe the topology near river confluences and meanders.
Installing and running PyFlowline requires some basic knowledge of the Python ecosystem. Besides, configuring a PyFlowline simulation requires some knowledge of Geographic Information System (GIS) and computational hydrology.
Software paper reply
In PyFlowline, we define structured meshes (e.g., lat-lon, raster files with projections, and hexagon) as those with fixed cell sizes and shapes and unstructured meshes as those with variable cell sizes and shapes.
We also add them to the glossary.
I want to add that we recently dropped the 'shapely' dependency after we found alternative GDAL APIs.
Merged additional edit from coauthor @mgcooper.
Thank you for your update @changliao1025. I will have a look at this later today or tomorrow and will make sure all comments are addressed. Potentially I'll ask the reviewers to confirm that the changes are to their satisfaction.
@editorialbot generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
Dear @changliao1025, I went through the reviews and responses and found that a few issues remain, some of which seem already addressed but not closed:
I was able to successfully execute run_simulation_mpas.py in the examples/Susquehanna directory. However, the saved image of the filter_flowline.png has the same issues as decribed above for plotting in the Jupyter Notebook - the file saves but the network is not illustrated in the image file (saved image file shown at the bottom of this review). When I load the corresponding .geojson file into QGIS the network shows up just fine. So, I suspect the same dependency issues described for the Jupyter Notebook are affecting the reproducibility with the .py implementation.
might not yet be addressed.
Please close those issues that have already been addressed.
The execution of the example notebook was most challenging for the reviewers especially because some results could only be reproduced by writing additional code, e.g. by using geopandas to plot and evaluate the results. Because the plotting is a substantial part of the evaluation of this software package it is crucial to make this functionality work out of the box (e.g. by making data paths relative to the notebooks location). I would therefore like you and your co-authors to address these outstanding comments, before I kindly ask @smchartrand and @andres-patrignani to check if all the comments have been addressed appropriately and especially check if the example notebook is easy to follow.
Thank you.
@observingClouds We have closed the mentioned issues as they are resolved. Meanwhile, we are improving the file I/O part as it does create some confusion right now.
Thanks @changliao1025 for the update. Please let us know when you have improved the I/O part.
Hi, @observingClouds , sorry for the late updates. We recently made many upgrades to the pyflowline model, including the spatial index algorithm, to speed up the algorithm.
As for the I/O part, we added two additional functions (see example in the notebook), to set and change the model parameters. These improvements are designed to ease how users interact with the model parameters. With these two functions, the users can change the parameters without directly editing the JSON files.
Besides, we simplify the visualization part using GeoPandas. The notebook is only intended to serve as an illustration of the workflow. Due to the computational nature of the model, it is recommended to use the model in the Python environment.
Hi @changliao1025,
Thank you very much for the update.
Cheers, Hauke
Dear @smchartrand, @andres-patrignani,
Could you please have a last look at this submission and check if your comments have been sufficiently addressed? In response to both of your earlier comments @changliao1025 and his colleagues have now improved the I/O interface. Please have a particular look at this and confirm if everything is to your satisfaction.
Thank you! Hauke
Hi All,
I will fit this into my schedule next week.
thanks,
-Shawn
From: Hauke Schulz @.***> Sent: September 30, 2023 9:59:57 PM To: openjournals/joss-reviews Cc: Shawn Chartrand; Mention Subject: Re: [openjournals/joss-reviews] [REVIEW]: PyFlowline a mesh independent river network generator for hydrologic models (Issue #5446)
Dear @smchartrandhttps://github.com/smchartrand, @andres-patrignanihttps://github.com/andres-patrignani,
Could you please have a last look at this submission and check if your comments have been sufficiently addressed? In response to both of your earlier comments @changliao1025https://github.com/changliao1025 and his colleagues have now improved the I/O interface. Please have a particular look at this and confirm if everything is to your satisfaction.
Thank you! Hauke
— Reply to this email directly, view it on GitHubhttps://github.com/openjournals/joss-reviews/issues/5446#issuecomment-1741955688, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AE7I77QUDLALE44DOQP2CSLX5DXZXANCNFSM6AAAAAAXXBP3F4. You are receiving this because you were mentioned.Message ID: @.***>
I want to thank the authors for the extensive work to improve the pyflowline package. I was able to successfully:
Features that I would like to see implemented in this or future versions (I leave this up to the editor and other reviewers):
Overall I think that the code and the manuscript are in good shape and can be accepted.
Some additional comments for future improvement beyond JOSS:
I hope that my comments have been useful and I commend the authors for creating this library.
Andres
@andres-patrignani Thank you for the thoughtful comments, which helped us a lot in improving our package.
Here are some quick responses to your questions:
Indeed, the mesh generation process, especially unstructured meshes such as the MPAS mesh, has various technical challenges. Currently, pyflowline has built-in support to generate structured meshes, see reference in JAMES paper. But it does not have built-in unstructured mesh generators. Instead, it can read the outputs from these unstructured mesh generators, such as JIGSAW-MPAS by @dengwirda and the newly added DGGRID mesh feature by @sahrk. There are a certain amount of learning curves to using an unstructured mesh generator, considering whether it has good documentation. The MPAS mesh is unique because it involves a range of operations. However, it has many advantages that other meshes cannot provide. That is why we use it as an example to demonstrate the capability of pyflowline to support fully unstructured meshes. In the future, we may add a more straightforward example/notebook to use a different mesh, such as the DGGRID mesh. We have just released such a dataset on Zenodo which can be customized for this purpose.
Again, thanks for the suggestions, and we will keep improving it in future versions.
I want to echo the comments by @andres-patrignani, and thank the authors for their extensive efforts to improve pyflowline. All of my previous comments have been addressed (and done so very well), and yesterday I was able to:
(re)install pyflowline using the detailed documentation and step by step instructions (Ubuntu 22.04 LTS release) , and
implement an instance of the updated Jupyter Notebook and run each notebook component all the way through for the example provided by the authors.
I have no further suggestions. Congratulations to the authors on an excellent package. Thanks for the opportunity to review.
@andres-patrignani, @smchartrand thank you very much for your time and efforts to review this submission. I appreciate it!
@changliao1025 as you can see from the reviewers' comments all issues have been fixed to their satisfaction. The suggested additional improvements regarding a future release of the software are not necessary to implement for the acceptance in JOSS but I still encourage you to do them in the near future as those might widen your user base.
@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
@changliao1025 could you please complete the above mentioned author tasks and ping me when completed? Thank you.
@observingClouds Thank you for the updates. We have checked the items as instructed.
@editorialbot set 10.5281/zenodo.6407298 as archive
Done! archive is now 10.5281/zenodo.6407298
@editorialbot set 0.3.2 as version
Done! version is now 0.3.2
@editorialbot generate pdf
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@changliao1025 thank you for finishing the post-review tasks. I have a few minor comments:
Please address these points and we should be soon ready for publication.
Hi, @observingClouds; all the above issues are fixed now. The version is also bumped to 0.3.4. Thank you for identifying these issues.
Thanks @changliao1025. Thanks for changing also the title in the zenodo archive. The newest release is not corrected though (https://zenodo.org/records/10076553).
@observingClouds. I realized that Zenodo only updates the title for a specific version, not all versions. I updated the title for the v0.3.4. Thank you. I may find a way to update the title for all versions.
@editorialbot set v0.3.4 as version
Done! version is now v0.3.4
@editorialbot set 10.5281/zenodo.10076553 as archive
Done! archive is now 10.5281/zenodo.10076553
Submitting author: !--author-handle-->@changliao1025<!--end-author-handle-- (Chang Liao) Repository: https://github.com/changliao1025/pyflowline Branch with paper.md (empty if default branch): main Version: v0.3.4 Editor: !--editor-->@observingClouds<!--end-editor-- Reviewers: @smchartrand, @andres-patrignani Archive: 10.5281/zenodo.10076553
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
@smchartrand & @andres-patrignani, 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 @observingClouds 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 @smchartrand
📝 Checklist for @andres-patrignani