Skip to content

Commit

Permalink
Paper typo fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Joey Carpinelli committed Oct 6, 2024
1 parent 698d092 commit e004a1e
Showing 1 changed file with 28 additions and 26 deletions.
54 changes: 28 additions & 26 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
title: Idiomatic Ephemeris Sourcing and Parsing in Julia

tags:
- astrodynamics
- astronomy
- astrophysics
- ephemeris
- Astrodynamics
- Astronomy
- Astrophysics
- Ephemeris
- Julia
- SPICE
- Horizons
Expand All @@ -32,17 +32,17 @@ bibliography: references.bib
Students and professionals in astronomy, astrodynamics, astrophysics,
and other related fields often download and parse data about objects in
our solar system --- ephemeris data --- from two major providers: JPL's
publicly available [Generic SPICE
Kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels/), and JPL's
publicly-available [Generic SPICE
Kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels/) and JPL's
[Horizons platform](https://ssd.jpl.nasa.gov/horizons/). SPICE kernels
are typically read through the SPICE Toolkit, which is available in a
variety of programming languages, include the C Programming Language
variety of programming languages, including the C Programming Language
with `CSPICE` [@cspice]. The Julia packages
[`CSPICE_jll.jl`](https://github.com/JuliaBinaryWrappers/CSPICE_jll.jl)
and [`SPICE.jl`](https://github.com/JuliaAstro/SPICE.jl) expose many
`CSPICE` functions through Julia functions. Julia users can load and
interact with SPICE kernels through methods such as `SPICE.furnsh` and
`SPICE.spkez`. Horizons data is available through a variety of methods,
`SPICE.spkez`. Horizons provides data through a variety of methods,
including email, command-line, graphical web interfaces, and a [REST
API](https://ssd-api.jpl.nasa.gov/doc/horizons.html) [@horizons].

Expand All @@ -53,19 +53,19 @@ idiomatically, all from within Julia. While ephemeris data comes in many
forms, including observer tables, osculating orbital elements, and
binary formats, these packages currently target Cartesian state vector
(position and velocity) ephemeris data. Through the use of these
packages, users can share replicatable code which automatically fetches
data from publicly available ephemeris sources, as opposed to manually
packages, users can share replicable code which automatically fetches
data from publicly-available ephemeris sources, as opposed to manually
including ephemeris data files with their source code distribution.

# Statement of Need

While astronomers, astrodynamicists, and other ephemeris users have the
tools they need to fetch and parse position and velocity data from
multiple sources within Julia, they do not have the tools to do so
*simply* or *idiomatically*. Horizons ephemeris data is distributed in
*simply* or *idiomatically*. Horizons' ephemeris data is distributed in
plain text with surrounding metadata, and manual parsing is required for
users to programmatically use the fetched ephemeris data. Generic SPICE
kernels are freely available, and can be used with `CSPICE` (and wrapper
kernels are freely available and can be used with `CSPICE` (and wrapper
libraries) for kernel inspection and data retrieval, but new users and
students may find the required workflows unfamiliar. The packages
presented in this paper may be used by students and professionals to
Expand All @@ -83,13 +83,14 @@ REST API with tab-completion through *static keyword arguments*[^1], and
the first to offer automatic response parsing into `NamedTuple` types.
The `NamedTuple` output of `HorizonsEphemeris.ephemeris`, the top-level
method for fetching Cartesian state vectors from the Horizons platform,
allows for easy plotting, file-saving, and `DataFrame` construction.
allows for easy plotting, CSV file-saving, and `DataFrame` construction.
Both `HorizonsAPI.jl` and `HorizonsEphemeris.jl` offer users a simple,
repeatable way to query and parse Horizons state vector data. Other
repeatable way to query and parse Horizons state vector data. Parsing for other
ephemeris types, including observer tables and osculating orbital
element tables, are desired features but are not yet implemented. For
sending Horizons requests for these other ephemeris types, see
[`Horizons.jl`](https://github.com/PerezHz/Horizons.jl).
sending Horizons requests for these other ephemeris types, use `HorizonsAPI`
methods to manually construct each request,
or see [`Horizons.jl`](https://github.com/PerezHz/Horizons.jl).

[^1]: The code required to support static keyword arguments was provided
by Joseph Wilson, as described in the **Acknowledgements** section.
Expand All @@ -103,22 +104,22 @@ and
--- provide idiomatic kernel fetching, inspection, and caching from
within Julia. Previously, Julia users interacted with SPICE kernels by
manually downloading publicly-available [generic
kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels/), and
kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels/) and
parsing the data using `SPICE.jl`, or another ephemeris parsing source.
This workflow requires that users know how to find the correct generic
This workflow requires that users know how to find the appropriate generic
kernels for their chosen application, and that they know how to use
CSPICE functions to retrieve their desired data. `SPICEKernels.jl` and
`SPICEBodies.jl` offer idiomatic interfaces to ephemeris fetching and
parsing parsing respectively. The `SPICEKernels.jl` project uses
continuous integration to fetch and parse publicly available
[kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels), and
parsing respectively. The `SPICEKernels.jl` project uses
continuous integration to fetch and parse publicly-available
[kernels](https://naif.jpl.nasa.gov/pub/naif/generic_kernels) and
expose each kernel as a variable in a new release version. SPICE Toolkit
executables, provided by
[`SPICEApplications.jl`](https://github.com/JuliaAstro/SPICE.jl/tree/main/lib/SPICEApplications),
are used to retrieve a description of each kernel file's contents, and
are used to retrieve a description of each kernel file's contents and
place that description in the corresponding variable's docstring.
`SPICEKernels.jl` users can utilize tab-completion and Julia's built-in
documentation tools to inspect kernel contents, and download the correct
documentation tools to inspect kernel contents and download the appropriate
generic kernel for their application. Once each kernel is downloaded and
loaded into the SPICE kernel pool with `SPICE.jl`, users can use
`SPICEBodies.jl` to idiomatically fetch state vector data at a provided
Expand All @@ -134,11 +135,12 @@ site](https://juliaastro.org/EphemerisSources.jl).
The packages presented in this paper which interact with the SPICE
Toolkit require users to use
[`SPICE.jl`](https://github.com/JuliaAstro/SPICE.jl), or another
SPICE-compatible kernel loading tool. Support for other SPICE kernel
SPICE-compatible kernel loading tool. `SPICEBodies.jl` uses the kernel cache
that is created with `SPICE.furnsh`. Support for other SPICE kernel
management packages, such as
[`Ephemerides.jl`](https://github.com/JuliaSpaceMissionDesign/Ephemerides.jl),
may be added in the future. Support for `Ephemerides.jl` is particularly
desirable, as it supports fetching kernel data in multi-threaded
desirable, as it enables fetching kernel data in multi-threaded
contexts. In addition to the packages in this paper which interface with
the JPL Horizons ephemeris platform, the
[`Horizons.jl`](https://github.com/PerezHz/Horizons.jl) package offers
Expand All @@ -151,7 +153,7 @@ state vector data.
# Acknowledgements {#sec-acknowledgements}

Joseph Wilson (user `@jollywatt` on Julia's
[Discourse](https://discourse.julialang.org/u/Jollywatt/summary)),
[Discourse](https://discourse.julialang.org/u/Jollywatt/summary))
provided incredibly helpful [guidance and
code](https://discourse.julialang.org/t/unpack-namedtuple-into-a-function-definition/97500)
to support static keyword arguments. This contribution substantially
Expand Down

12 comments on commit e004a1e

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register subdir="lib/HorizonsEphemeris"

This comment was generated with commit-comment and Register.yml.

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register subdir="lib/SPICEBodies"

This comment was generated with commit-comment and Register.yml.

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register"

This comment was generated with commit-comment and Register.yml.

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register subdir="lib/HorizonsAPI"

This comment was generated with commit-comment and Register.yml.

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register subdir="lib/EphemerisSourcesBase"

This comment was generated with commit-comment and Register.yml.

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register subdir="lib/SPICEKernels"

This comment was generated with commit-comment and Register.yml.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/116699

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a HorizonsEphemeris-v1.4.0 -m "<description of version>" e004a1e2c6bfd2b8e1afd3539201dc518f451df3
git push origin HorizonsEphemeris-v1.4.0

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/116700

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a HorizonsAPI-v1.1.0 -m "<description of version>" e004a1e2c6bfd2b8e1afd3539201dc518f451df3
git push origin HorizonsAPI-v1.1.0

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/116701

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a SPICEBodies-v1.2.0 -m "<description of version>" e004a1e2c6bfd2b8e1afd3539201dc518f451df3
git push origin SPICEBodies-v1.2.0

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/116702

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v1.0.0 -m "<description of version>" e004a1e2c6bfd2b8e1afd3539201dc518f451df3
git push origin v1.0.0

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error while trying to register: Version 0.2.0 already exists

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/116703

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a SPICEKernels-v2.1.0 -m "<description of version>" e004a1e2c6bfd2b8e1afd3539201dc518f451df3
git push origin SPICEKernels-v2.1.0

Please sign in to comment.