Closed anitagraser closed 4 years ago
hi @anitagraser !! thank you again for this submission. it will be on our discussion list for this thursday's pyopensci meeting! can you think of any folks who might be well suited to review this package? we will need 2 people.
Thank you @lwasser! I think GeoPandas developers would be a good fit.
@jlpalomino will be the fearless editor for this submission !! And @xmnlab will be our first reviewer. We will reach out to the geopandas folks. @martinfleis would you be interested in being a second reviewer for moving pandas? please let us know!
@lwasser I would love to do that, but not sure how fast I'd be. What is the timeframe?
hey @martinfleis we understand. we typically ask for a 3 week turn around on reviews. Would that timeframe work for you or is that too quick? Many thanks for responding so quickly!
@lwasser that seems to be doable. Count me in.
awesome!! Thanks @martinfleis for doing this!!
Thanks @xmnlab and @martinfleis for agreeing to review MovingPandas. Please use the following resources to submit your review:
The submitting author is open to receiving issues and PRs if you want to create a review using that approach (e.g. include links to the issue and/or PR in your review).
Feel free to reach out with any questions about the review process.
Reviewers: Ivan Ogasawara (@xmnlab) and Martin Fleischmann (@martinfleis) Due date: February 7th, 2020
The package includes all the following forms of documentation:
[x] A statement of need clearly stating problems the software is designed to solve and its target audience in README
[x] Installation instructions: for the development version of package and any non-standard dependencies in README
[x] Vignette(s) demonstrating major functionality that runs successfully locally
[x] Function Documentation: for all user-facing functions
Trajectory.get_position_at()
or Trajectory.generalize()
. I would personally also prefer having one place with all documentation sources, or at least links between them. Some parts are in Readme, some in examples and other on RTD. [x] Examples for all user-facing functions
The repository contains extraordinary Jupyter Notebooks working as a user guide and new are being created. All run locally as well as on mybinder if one wants to play with the data quickly. However, there is no link to all the examples apart from my binder badge. One has to find them in the repository.
Minor typo in 3_horse_collar.ipynb
: ha is 10 000 not 1 000 m (which is correct at another place).: total_area = total_area[collar_id]/1000
[x] Community guidelines including contribution guidelines in the README or CONTRIBUTING.
[x] Metadata including author(s), author e-mail(s), a url, and any other relevant metadata e.g., in a setup.py
file or elsewhere.
Readme requirements The package meets the readme requirements below:
The README should include, from top to bottom:
[x] The package name
[x] Badges for continuous integration and test coverage, the badge for pyOpenSci peer-review once it has started (see below), a repostatus.org badge, and any other badges. If the README has many more badges, you might want to consider using a table for badges, see this example, that one and that one. Such a table should be more wide than high.
[x] Short description of goals of package, with descriptive links to all vignettes (rendered, i.e. readable, cf the documentation website section) unless the package is small and there’s only one vignette repeating the README.
[x] Installation instructions
[x] Any additional setup required (authentication tokens, etc)
[x] Brief demonstration usage
[x] Direction to more detailed documentation (e.g. your documentation files or website).
[x] If applicable, how the package compares to other similar packages and/or how it relates to other packages
[x] Citation information
movingpandas
itself cited.~[x] Automated tests: Tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
movingpandas/trajectory_collection.py
is covered only from 63%. I am aware that movingpandas/trajectory_aggregator.py
is new so I assume that its tests are still TBD. Name Stmts Miss Cover
----------------------------------------------------------------------
movingpandas/__init__.py 6 0 100%
movingpandas/geometry_utils.py 45 4 91%
movingpandas/overlay.py 152 12 92%
movingpandas/tests/__init__.py 0 0 100%
movingpandas/tests/test_geometry_utils.py 41 0 100%
movingpandas/tests/test_overlay.py 78 0 100%
movingpandas/tests/test_trajectory.py 208 0 100%
movingpandas/tests/test_trajectory_collection.py 54 0 100%
movingpandas/trajectory.py 298 29 90%
movingpandas/trajectory_aggregator.py 229 192 16%
movingpandas/trajectory_collection.py 113 42 63%
movingpandas/trajectory_plotter.py 82 13 84%
----------------------------------------------------------------------
TOTAL 1306 292 78%
[x] Continuous Integration: Has continuous integration, such as Travis CI, AppVeyor, CircleCI, and/or others.
[x] Packaging guidelines: The package conforms to the pyOpenSci packaging guidelines.
Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.
The package contains a paper.md
matching JOSS's requirements with:
Estimated hours spent reviewing: 5
MovingPandas is a valuable addition to python geospatial stack. Being built on top of GeoPandas GeoDataFrames, its main classes are easy to understand, and the whole work with MovingPandas is very natural and straightforward. I had almost no issues in using it with my data, and everything works as advertised.
Initially, I was a bit confused by released versions of MovingPandas as when I started there was no release on GitHub and PyPI had different version than conda-forge. I would recommend following JOSS recommendation here and trying to keep these 3 (GitHub, PyPI, conda-forge) in sync as GitHub releases automatically send a notification to watching users.
During the review process, I have opened a couple of issues/PRs in the original repository, all linked above this post.
I am excited to see the further development of it as the latest addition of trajectory aggregator looks brilliant. I will certainly follow new releases, and once I have to work with movement data, MovingPandas will be the first choice.
Thanks a lot for the thorough review and great feedback, Martin! I'll work on the open issues.
I've been looking for the badge for pyOpenSci peer-review but haven't been able to locate one for ongoing peer review.
I've been looking for the badge for pyOpenSci peer-review but haven't been able to locate one for ongoing peer review.
That is more the question for @lwasser and @jlpalomino, I just copied review template.
Thanks @martinfleis for your review.
@anitagraser I also was not able to find the badge details in our review guide, so I have made a note to look into where we provide this info.
Here is the badge for pyOpenSci peer review, with the second link being the URL to this issue:
[![pyOpenSci](https://tinyurl.com/y22nb8up)](https://github.com/pyOpenSci/software-review/issues/18)
If fixed the remaining README issues: badges https://github.com/anitagraser/movingpandas/issues/53 and citation information https://github.com/anitagraser/movingpandas/commit/56ef608c3302f53f408f07781fbf9c30147eb1f3
The last open issue from Martin's review should be the Contribution guidelines.
I am planning to review MovingPandas today :)
Contribution guidelines are now available at https://github.com/anitagraser/movingpandas/blob/master/CONTRIBUTING.md
@anitagraser when your package has fully passed both reviews and both reviewers are happy with your addressing their requested changes, we will ask you to add the badge to the readme!! please get in touch with any other questions. @martinfleis THANK YOU for this review!!
one other question @anitagraser are you interested in JOSS? i see you didn't check the box. Joss only requires you to write a very short paper about the package (i can show you the earthpy example) . They accept the pyopensci technical review by default. no worries if you are not interested... but it's a nice citation to have if you are (linked to your orcid id and such).
@lwasser Thank you. Do I understand correctly that I should remove the pyopensci badge from the MovingPandas readme again? Is there a different badge to fulfill the requirement in the review template "the badge for pyOpenSci peer-review once it has started"?
Concerning JOSS, I have been thinking about it but wasn't sure if JOSS sees prior publications as an obstacle:
Graser, A. (2019). MovingPandas: Efficient Structures for Movement Data in Python. GI_Forum ‒ Journal of Geographic Information Science 2019, 1-2019, 54-68. doi:10.1553/giscience2019_01_s54. URL: https://www.austriaca.at/rootcollection?arp=0x003aba2b
@lwasser After looking at the earthpy paper you mentioned, I think there should be minimal overlap with the existing MovingPandas paper in GI_Forum. So yes, I'd like to try a JOSS submission.
Work in progress: https://github.com/anitagraser/movingpandas/tree/joss-paper
I will finish my review today :)
@anitagraser that's great to hear!! ok so the process is pretty straight forward. Once the review is done and moving pandas is accepted here, I will ping our JOSS friends and they will help you through the JOSS process. this all looks great. the only challenge i had with JOSS was small formatting issues when it published to PDF. There is a nice tool however that is helpful. so when we get there ... I can help!
Thank you @xmnlab :) we are so appreciative of your review!!
Also you are the second package maintainer that has asked about other publications. i will email arfon tonight!! Also let me look into the badge specifics. it's not a huge deal but typically we've had people add the badge post review. I'll get back to you anita!!
ok @anitagraser @arfon actually responded here: https://github.com/pyOpenSci/software-review/issues/16#issuecomment-581677530 on another review. he did say that if you have another citation already that you want to use to cite your software, then you probably don't need to worry about joss. i know you have already begun work on the joss paper... but see his comment and let us know what you think! thank you for your patience. we are still working through some of the details of our review process in these early stages
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
The package includes all the following forms of documentation:
movingpandas
for development, e.g.: python setup.py develop
or pip install --no-deps -e .
[x] Function Documentation: for all user-facing functions
You can use some tool to check the docstrings, e.g.: pydocstyle ( pydocstyle --convention=numpy ) or maybe numpydoc (https://numpydoc.readthedocs.io/en/latest/validation.html).
setup.py
file or elsewhere.Readme requirements The package meets the readme requirements below:
The README should include, from top to bottom:
pip install movingpandas
didn't work~Note: Be sure to check this carefully, as JOSS's submission requirements and scope differ from pyOpenSci's in terms of what types of packages are accepted.
The package contains a paper.md
matching JOSS's requirements with:
Estimated hours spent reviewing: 5h30
Review based on the version with the latest commit fb97166
[0]
and [1]
would be linked to the Publications
section.movingpandas
in development mode.Examples
section in the user-facing functions/methods docstrings.~movingpandas
compares to other similar packagespip install movingpandas
didn't workSuggestions (optional):
movingpandas
, it would be good to comment in the documenation the Python versions supported.PS/1: Examples for all user-facing functions is not required anymore. PS/2: new note: that it is NOT recommended to install MovingPandas from PyPI
@anitagraser it is a interesting project!
I have added the result of my review above. Let me know if you need any additional explanation or detail!
Thank you very much for the extensive feedback @xmnlab! It's very clear. I have just one question so far concerning "explain how to install movingpandas in development mode.": the README already has a section titled Development Installation with the necessary conda instructions. Are you missing something specific?
Status of improvements:
Hi David!
For some reason I can’t seem to find this post but we are always looking for reviewers so please reach out to me if you have space to review another package! Moving pandas is under review currently and we do have 2 reviewers already. But we have a few other packages in the pipelines that will need reviewers.
@lwasser I've removed the review badge for now (after reading the last pyOpenSci meeting notes). Concerning JOSS: I think it would still be worthwhile to publish in JOSS since the current main paper is in a very specific venue with a very different audience.
@anitagraser thanks for checking in about this and for your action! We are now working on a PR to the dev guide (https://github.com/pyOpenSci/dev_guide/pull/42) to address the timing of when to add the badge as well as to include the badge information for when the package is accepted.
@anitagraser about the "Development Installation" it explains how to prepare the environment but I didn't find the command line for install movingpandas
in development mode, it could be, for example, python setup.py develop
or pip install --no-deps -e .
or if you want to just point to some nice documentation/tutorial that explains more about development mode you can add just a link to that page (eg.: https://python-packaging-tutorial.readthedocs.io/en/latest/setup_py.html#develop-mode) or also you can do both
@xmnlab Thank you! I wasn't aware of this develop mode. That's what caused the confusion, since my dev setup so far is finished when the environment is ready.
I've added usage examples to all user-facing functions except those that are self-explanatory (because they have either no parameters or have only simple parameters that are sufficiently described in the corresponding parameters section). I've also added direct links to the tutorials to https://movingpandas.readthedocs.io/en/latest/index.html
@anitagraser it looks very nice!
related to your point about the methods self-explanatory, I would add examples for each function/method including for these cases because:
1) if you want you can also integrate it with doctest (https://docs.python.org/3/library/doctest.html) in the future and it will help to test your docstring examples and
2) for some functions that return more complex data (like dataframe or series) it helps to understand better the data returned (also maybe it would be good to add more details about the data structure (eg: columns names and data types) for functions that return dataframes in the Returns
section.
@lwasser do you have any thoughts about this point?
actually the editor for this submission is @jlpalomino. do you have any thoughts about this?
If I may add my thoughts here, I would say that there should be a distinction in the pyOpenSci review process between what is considered required change and what is a recommendation only. For example, I did not point out examples in docstrings as I did not feel it is a substantial issue. @xmnlab has a different approach, requiring complete examples ready for doctest.
This is a more general comment, so this issue might not be the right place for such discussion, but I believe that pyOpenSci needs to find a balance in the review process and maybe set some standards (maybe rOpenSci already deals with this?). The review should be valuable and thorough, but not onerous. I know it is hard to find the balance, especially if the submitted package would be of low quality (which is definitely not this case), but we are still in the open source world and we should acknowledge the nature of (largely free) work.
I believe that all the issues @xmnlab are valuable and will help @anitagraser. But it is a bit unclear to me if pyOpenSci review require this detail or if they should actually be recommendations, which are not in a way of publishing MovingPandas on pyOpenSci.
It may sounds as critics of @xmnlab's review, but it is not meant to be one :). I am genuinely curious about the expected level of the review as this is my first experience with pyOpenSci.
@martinfleis actually I am very curious about this too :) as the guideline says that all facing-user function should have examples
(https://www.pyopensci.org/dev_guide/packaging/packaging_guide.html#Documentation) so using just tutorials for the examples is hard to check if all functions have an example inside. also from the user's perspective, If I want to see how to use a method, generally I will go to the API documentation not the tutorials.
examples inside the docstring will be published automatically inside the documentation (if the project generate the documentation from the code).
maybe I didn't express me well about the doctest ... I didn't want to suggest to use that .. I just want to comment that also it could help in the future .. but it is not required. the main point about the examples was the item 2.
But as required by https://www.pyopensci.org/dev_guide/packaging/packaging_guide.html#Documentation my first guess is that all public functions should have an example inside the docstrings or on the API documentation.
@jlpalomino could you guide us about this topic?
@xmnlab good point. I thank that after reading Good/Better/Best in this section I interpreted it as if it is covered in tutorial it is fine. But you are probably right.
Thank you all for working on clarifying this! I mostly looked at previously accepted projects to guide my work. For example, Pandera has usage examples but not for all user-facing functions: https://pandera.readthedocs.io/en/latest/API.html
@anitagraser @martinfleis @xmnlab This is a great discussion, and I want to encourage you to continue it. I am interjecting here to say that I will discuss these comments further with @lwasser and get back to you with feedback from the editor perspective.
When I started my review I tried to understand what pyOpenSci expects. Based on the review guide, I felt that it tries to be rather inclusive than strict. After reading various Good/Better/Best explanations, my understanding was following:
Manually updated documentation as text files that ship with your package.
), but they are good enough to send the package to the world.These were (roughly) the rules I applied to my review. I would be happy to hear from @lwasser and @jlpalomino if they fit the aim of pyOpenSci. How strict do you want to be in the review?
Hi @anitagraser @martinfleis @xmnlab thanks for your patience in this process.
@lwasser and I have decided that this is a good topic of conversation during the next pyOpenSci meeting, which will occur next Fri 2/28/20 at 11am MDT (details on discourse). We invite you all to attend if you are able.
Hi @anitagraser @martinfleis @xmnlab - an update that I have posted on discourse ahead of the community meeting tomorrow at 11am MDT.
You have all brought up great points, and as the editor, I am looking forward to getting input from the community regarding "Good, "Better", "Best" and recommended vs required changes.
hi @anitagraser @martinfleis @xmnlab i have added some language to the post based upon our meeting today. how much documentation is good enough? https://pyopensci.discourse.group/t/good-better-best-required-versus-recommended-changes-by-reviewers-your-feedback-is-requested/160/2 same link as the one jenny provided above but with a new post from our community call today. Do you guys have any thoughts on this? i really appreciate the feedback as we define what our standards are for the community!
Thank you for the update, @lwasser ! If I understand the intent of the discussion on discourse, having examples for all user-facing functions is not going to be a must. Besides trying to find the best wording for the guidelines, how should we proceed on this review? If I haven't missed anything, my work on the requested improvements is finished.
@anitagraser what about JOSS submission? Is it happening in the end? If you want to submit to JOSS we’ll have to review the paper and tick couple of other boxes.
@martinfleis Right! For JOSS, I'll still have to get a DOI.
I might bump the MovingPandas version to 0.3. (Movingpandas 0.2 works for geopandas 0.6.3. MovingPandas 0.3 works with GeoPandas 0.7)
The paper is in a dedicated brach for now: https://github.com/anitagraser/movingpandas/blob/joss-paper/paper.md
Is there anything else?
I've checked the paper and there does not seem to be any issue re JOSS requirements. Just few very minor notes.
code
, which in some cases breaks movingpandas, geopandas, and python words. See linked pdf - paper.pdf. You can check how it renders on https://whedon.theoj.org.I'll formally update my review post to include JOSS boxes, but I am happy with the package and all responses and recommend it for a publication on both pyOpenSci and JOSS.
@martinfleis Thank you for reviewing the paper! I have fixed the first two issues. I don't see how to affect the line break (third issue you mentioned) and found that this issue also appears in recently published papers, such as https://joss.theoj.org/papers/10.21105/joss.02075
Submitting Author: Anita Graser (@anitagraser)
All current maintainers: Anita Graser (@anitagraser)
Package Name: MovingPandas One-Line Description of Package: Trajectory classes and functions built on top of GeoPandas Repository Link: https://github.com/movingpandas/movingpandas Version submitted: 0.2 Editor: Jenny Palomino (@jlpalomino)
Reviewer 1: Ivan Ogasawara (@xmnlab)
Reviewer 2: Martin Fleischmann (@martinfleis) Archive: JOSS DOI: N/A Version accepted: v 0.3.rc1 Date accepted (month/day/year): 03/19/2020
Description
MovingPandas is a package for dealing with movement data. MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas. A trajectory has a time-ordered series of point geometries. These points and associated attributes are stored in a GeoDataFrame. MovingPandas implements spatial and temporal data access and analysis functions (covered in the open access publication [0]) as well as plotting functions. A usage example is available at http://exploration.movingpandas.org,
[0] Graser, A. (2019). MovingPandas: Efficient Structures for Movement Data in Python. GI_Forum ‒ Journal of Geographic Information Science 2019, 1-2019, 54-68. doi:10.1553/giscience2019_01_s54. URL: https://www.austriaca.at/rootcollection?arp=0x003aba2b
Scope
* Please fill out a pre-submission inquiry before submitting a data visualization package. For more info, see this section of our guidebook.
Geospatial (primary): The MovingPandas Trajectory class implements is a spatio-temporal data model for movement data.
Data visualization (secondary): The implemented plot functions enable straight-forward movement data exploration that goes beyond plotting the individual point locations by ensuring that trajectories are represented by linear segments between consecutive points.
Movement data / trajectories appear in many different scientific domains, including physics, biology, ecology, chemistry, transport and logistics, astrophysics, remote sensing, and more. For example, the provided tutorials cover the analysis of migrating birds as well as the analysis of ship movement within a port.
scikit-mobility is a similar package which is also in an early development stage and also deals with movement data. They implement TrajectoryDataFrames and FlowDataFrames on top of Pandas instead of GeoPandas. There is little overlap in the covered use cases and implemented functionality (comparing MovingPandas tutorials and scikit-mobility tutorials). MovingPandas focuses on spatio-temporal data exploration with corresponding functions for data manipulation and analysis. scikit-mobility on the other hand focuses on computing human mobility metrics, generating synthetic trajectories and assessing privacy risks.
@tag
the editor you contacted:https://github.com/pyOpenSci/software-review/issues/14
Technical checks
For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:
Publication options
JOSS Checks
- [x] The package has an **obvious research application** according to JOSS's definition in their [submission requirements](https://joss.readthedocs.io/en/latest/submitting.html#submission-requirements). Be aware that completing the pyOpenSci review process **does not** guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS. - [x] The package is not a "minor utility" as defined by JOSS's [submission requirements](https://joss.readthedocs.io/en/latest/submitting.html#submission-requirements): "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria. - [x] The package contains a `paper.md` matching [JOSS's requirements](https://joss.readthedocs.io/en/latest/submitting.html#what-should-my-paper-contain) with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: *Note: Do not submit your package separately to JOSS*Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?
This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.
Code of conduct
P.S. Have feedback/comments about our review process? Leave a comment here
Editor and Review Templates
Editor and review templates can be found here