Skip to content

swiftgalaxy #244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
19 of 32 tasks
kyleaoman opened this issue May 24, 2025 · 6 comments
Open
19 of 32 tasks

swiftgalaxy #244

kyleaoman opened this issue May 24, 2025 · 6 comments

Comments

@kyleaoman
Copy link

kyleaoman commented May 24, 2025

Submitting Author: @kyleaoman
All current maintainers: @kyleaoman
Package Name: swiftgalaxy
One-Line Description of Package: Load in particles of a simulated galaxy, rotate coordinates, easy spherical/cylindrical coordinates, access integrated properties, and more.
Repository Link: https://github.com/SWIFTSIM/swiftgalaxy
Version submitted: 2.0.3
EiC: @coatless
Editor: TBD
Reviewer 1: TBD
Reviewer 2: TBD
Archive: TBD
JOSS DOI: TBD
Version accepted: TBD
Date accepted (month/day/year): TBD


Code of Conduct & Commitment to Maintain Package

Description

  • Include a brief paragraph describing what your package does:

SWIFTGalaxy is a module that extends SWIFTSimIO tailored to analyses of particles belonging to individual simulated galaxies. It inherits from and extends the functionality of the SWIFTDataset. It understands the content of halo catalogues (supported: Velociraptor, Caesar, SOAP) and therefore which particles belong to a galaxy or other group of particles, and its integrated properties. The particles occupy a coordinate frame that is enforced to be consistent, such that particles loaded on-the-fly will match e.g. rotations and translations of particles already in memory. Intuitive masking of particle datasets is also enabled. Finally, some utilities to make working in cylindrical and spherical coordinate systems more convenient are also provided.

Scope

  • Please indicate which category or categories.
    Check out our package scope page to learn more about our
    scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):

    • Data retrieval
    • Data extraction
    • Data processing/munging
    • Data deposition
    • Data validation and testing
    • Data visualization1
    • Workflow automation
    • Citation management and bibliometrics
    • Scientific software wrappers
    • Database interoperability

Domain Specific

  • Geospatial
  • Education

Community Partnerships

If your package is associated with an
existing community please check below:

  • For all submissions, explain how and why the package falls under the categories you indicated above. In your explanation, please address the following points (briefly, 1-2 sentences for each):

    • Who is the target audience and what are scientific applications of this package? The package is for scientists analysing SWIFT simulations of galaxies. It facilitates extracting a subset of a simulation containing many galaxies that corresponds to a single galaxy and manipulating the data.

    • Are there other Python packages that accomplish the same thing? If so, how does yours differ? pynbody has some points in common, but swiftgalaxy is specifically designed for SWIFT simulations by (i) using swiftsimio as a backend and (ii) having features that leverage the particular data layout and metadata annotations of SWIFT outputs.

    • If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted:

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

  • does not violate the Terms of Service of any service it interacts with.
  • uses an OSI approved license.
  • contains a README with instructions for installing the development version.
  • includes documentation with examples for all functions.
  • contains a tutorial with examples of its essential functions and uses.
  • has a test suite.
  • has continuous integration setup, such as GitHub Actions CircleCI, and/or others.

Publication Options

JOSS Checks
  • The package has an obvious research application according to JOSS's definition in their 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.
  • The package is not a "minor utility" as defined by JOSS's 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.
  • The package contains a paper.md matching JOSS's requirements with a high-level description in the package root or in inst/. I expect to have this in place before PyOpenSci review is completed
  • The package is deposited in a long-term repository with the DOI: 10.5281/zenodo.15502355

Note: JOSS accepts our review as theirs. You will NOT need to go through another full review. JOSS will only review your paper.md file. Be sure to link to this pyOpenSci issue when a JOSS issue is opened for your package. Also be sure to tell the JOSS editor that this is a pyOpenSci reviewed package once you reach this step.

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.

  • Yes I am OK with reviewers submitting requested changes as issues to my repo. Reviewers will then link to the issues in their submitted review.

Confirm each of the following by checking the box.

  • I have read the author guide.
  • I expect to maintain this package for at least 2 years and can help find a replacement for the maintainer (team) if needed.

Please fill out our survey

P.S. Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

The editor template can be found here.

The review template can be found here.

Footnotes

  1. Please fill out a pre-submission inquiry before submitting a data visualization package.

@coatless
Copy link

Editor in Chief checks

Hi there! Thank you for submitting your package for pyOpenSci
review. Below are the basic checks that your package needs to pass
to begin our review. If some of these are missing, we will ask you
to work on them before the review process begins.

Please check our Python packaging guide for more information on the elements
below.

  • Installation The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (e.g. conda-forge, bioconda).
    • The package imports properly into a standard Python environment import package.
  • Fit The package meets criteria for fit and overlap.
  • [] Documentation The package has sufficient online documentation to allow us to evaluate package function and scope without installing the package. This includes:
    • User-facing documentation that overviews how to install and start using the package.
    • Short tutorials that help a user understand how to use the package and what it can do for them.
    • API documentation (documentation for your code's functions, classes, methods and attributes): this includes clearly written docstrings with variables defined using a standard docstring format.
  • Core GitHub repository Files
    • README The package has a README.md file with clear explanation of what the package does, instructions on how to install it, and a link to development instructions.
    • Contributing File The package has a CONTRIBUTING.md file that details how to install and contribute to the package.
    • Code of Conduct The package has a CODE_OF_CONDUCT.md file.
    • License The package has an OSI approved license.
      NOTE: We prefer that you have development instructions in your documentation too.
  • Issue Submission Documentation All of the information is filled out in the YAML header of the issue (located at the top of the issue template).
  • Automated tests Package has a testing suite and is tested via a Continuous Integration service.
  • Repository The repository link resolves correctly.
  • Package overlap The package doesn't entirely overlap with the functionality of other packages that have already been submitted to pyOpenSci.
  • Archive (JOSS only, may be post-review): The repository DOI resolves correctly.
  • Version (JOSS only, may be post-review): Does the release version given match the GitHub release (v1.0.0)?

  • Initial onboarding survey was filled out
    We appreciate each maintainer of the package filling out this survey individually. 🙌
    Thank you authors in advance for setting aside five to ten minutes to do this. It truly helps our organization. 🙌


Editor comments

Given the astronomy nature of this package, would you like to also pursue Astropy as well?

Please address the following:

Package Dependency

Please emphasize the requirement for NumPy >= 2.0

https://github.com/SWIFTSIM/swiftgalaxy/blob/c79cd0f190f052f021313000c56c432f3d4740a5/pyproject.toml#L20

README

Please add installation instructions:

https://www.pyopensci.org/python-package-guide/documentation/repository-files/readme-file-best-practices.html#installation-instructions

Please show a brief example of the package in action:

https://www.pyopensci.org/python-package-guide/documentation/repository-files/readme-file-best-practices.html#brief-demonstration-of-how-to-use-the-package

Please add a community section:

https://www.pyopensci.org/python-package-guide/documentation/repository-files/readme-file-best-practices.html#a-community-section-with-links-to-contributing-guide-code-of-conduct

Please add a section that links to the gallery/alternative tutorials.

https://www.pyopensci.org/python-package-guide/documentation/repository-files/readme-file-best-practices.html#descriptive-links-to-package-documentation-short-tutorials

Please update the repository information to add the readthedocs webpage.

https://swiftgalaxy.readthedocs.io/en/latest/

Should be here:

https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics#adding-topics-to-your-repository

(Sorry, there's only a "topics" help page for showing this... But, it's in the same location!)

Package website

Please try to organize the landing page with:

https://www.pyopensci.org/python-package-guide/documentation/write-user-documentation/get-started.html#four-elements-of-a-good-open-source-documentation-landing-page

Example: https://www.fatiando.org/verde/latest/

Please consider placing tutorials under a clear website section, c.f.

https://www.pyopensci.org/python-package-guide/documentation/write-user-documentation/create-package-tutorials.html#sphinx-gallery

Example: https://www.fatiando.org/verde/latest/gallery/index.html#

Or, see the "User Guide" portion on the left hand side bar.

Please make available a way to obtain example data, e.g. snap.hdf5. This could be through a function or a simple bash script that could be run by a user to download and setup the data in an expected format.

https://swiftgalaxy.readthedocs.io/en/latest/getting_started/index.html#quick-start

Action

Please take the necessary steps to address the README file and website requirements. We cannot send the package onto a later stage until these issues are addressed as our reviewers and your future users will need to be able to more easily navigate the documentation.

@hamogu
Copy link

hamogu commented May 27, 2025

This package seems to be astronomy-focussed and the source code does have astropy as a dependency. So, I wonder if it makes sense to treat this as an astropy/astronomy related package; to me it looks like that would make sense, but the authors have not set the tick-box for "astropy community".

@kyleaoman: Just checking if that's intentional or should we add it?

@kyleaoman
Copy link
Author

@hamogu As far as I understand the astropy community packages look for use of astropy features where this is relevant, which is not really the case for this package. For example, astropy.units enables attaching physical units to arrays, so I think that it would be expected that a community package uses this. However, swiftgalaxy uses the unyt package from the yt project for physical units, so doesn't really fit into the astropy ecosystem in this sense. There are options to convert to astropy Quantity arrays if a user wants to pass output to an astropy-affiliated package (this is part of where the dependency comes in), but the connection feels weak so I left the box un-ticked. It's a similar story for other aspects such as coordinate arrays.

@hamogu
Copy link

hamogu commented May 27, 2025

Great, thanks for the fast reply; I agree. I just wanted to check to make sure we don't overlook it!

@coatless
Copy link

@kyleaoman thank you for the clarifications!

@kyleaoman
Copy link
Author

kyleaoman commented May 27, 2025

Just so I can keep track:

  • Please emphasize the requirement for NumPy >= 2.0
  • Please add installation instructions
  • Please show a brief example of the package in action
  • Please add a community section
  • Please add a section that links to the gallery/alternative tutorials
  • Please update the repository information to add the readthedocs webpage
  • Please try to organize the landing page following best practice
  • Please consider placing tutorials under a clear website section, c.f.
  • Or, see the "User Guide" portion on the left hand side bar.
  • Please make available a way to obtain example data, e.g. snap.hdf5. This could be through a function or a simple bash script that could be run by a user to download and setup the data in an expected format.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: pre-review-checks
Development

No branches or pull requests

3 participants