General icon indicating copy to clipboard operation
General copied to clipboard

New package: Epicycle v0.4.0

Open JuliaRegistrator opened this issue 1 month ago • 12 comments

  • Registering package: Epicycle
  • Repository: https://github.com/GenAstro/Epicycle
  • Created by: @stevenhughes73
  • Version: v0.4.0
  • Commit: bc9a0adc21389c1842d4865e454d60ecb3ab0058
  • Reviewed by: @stevenhughes73
  • Reference: https://github.com/GenAstro/Epicycle/commit/bc9a0adc21389c1842d4865e454d60ecb3ab0058#commitcomment-171570912
  • Description: An application for space systems with a nod to the giants who came before us and to how far we’ve come.
  • Release notes:
Epicycle is an application and package ecosystem for space mission design and navigation.
Initial release - integration layer providing unified interface and common workflows.


README - https://github.com/GenAstro/Epicycle
docs - https://genastro.github.io/Epicycle/Epicycle/dev/

This package is part of a larger monorepo. The original PR removed the deps to avoid sequential registration and three day timers. This registration contains all deps, which only depends on EpicycleBase which is already merged (see here https://github.com/JuliaRegistries/General/pull/142542#event-21019565512)

JuliaRegistrator avatar Nov 09 '25 11:11 JuliaRegistrator

Hello, I am an automated registration bot. I help manage the registration process by checking your registration against a set of AutoMerge guidelines. If all these guidelines are met, this pull request will be merged automatically, completing your registration. It is strongly recommended to follow the guidelines, since otherwise the pull request needs to be manually reviewed and merged by a human.

1. New package registration

Please make sure that you have read the package naming guidelines.

2. AutoMerge Guidelines are all met! ✅

Your new package registration met all of the guidelines for auto-merging and is scheduled to be merged when the mandatory waiting period (3 days) has elapsed.

3. To pause or stop registration

If you want to prevent this pull request from being auto-merged, simply leave a comment. If you want to post a comment without blocking auto-merging, you must include the text [noblock] in your comment.

Tip: You can edit blocking comments to add [noblock] in order to unblock auto-merging.

github-actions[bot] avatar Nov 09 '25 12:11 github-actions[bot]

[noblock]

This description

an application for space systems with a nod to the giants who came before us and to how far we’ve come

is very heart-warming, but it’s not very informative. I’m even wondering whether I know what a “space system” is! 🤔

cormullion avatar Nov 10 '25 13:11 cormullion

Agreed. It would be important to clearly delineate this with respect to the existing ecosystem, see also https://github.com/JuliaRegistries/General/pull/142059#issuecomment-3518137322 and @aplavin's concerns

I think it's fine to have a secondary self-contained ecosystem in the astro space, but I'd ask for it to be well-documented, both in itself and in relation to the existing ecosystem. Please make sure to flesh out the README a little bit more and to fix the docs badge.

Something that's also important: please make sure that the GenAstro organization has at least two owners, and that their membership is set to "public".

I'll leave this as a blocking comment for now so that we can check on these finer details, before finalizing the merge of the entire ecosystem.

goerz avatar Nov 11 '25 18:11 goerz

@cormullion @aplavin @cormullion

sigh, with 11 packages going through simultaneously I missed this one. My week has gotten a lot busier too with my day job ramping up.

the single sentence is really just an elevator pitch. Here is the wholistic information I wrote for this

https://genastro.github.io/Epicycle/Epicycle/dev/

I can put this in the README too if that is the community standard. Right now, the link is near the top of the README and the first link so it pops out. I like to avoid having the same information in multiple places, that creates maintenance problems if I need to update, have a typo etc.

So, two questions, did you see this information and find it inadequate? If it meets standards, is the problem that is is not also in the README? If something is missing what would you like to see?

[noblock]

stevenhughes73 avatar Nov 14 '25 12:11 stevenhughes73

[noblock]

A good description is useful for users:

https://arxiv.org/pdf/2110.13283

cormullion avatar Nov 14 '25 15:11 cormullion

@cormullion

A good description is useful for users:

I agree 100%, and I spent a lot of time on that. The information I wrote for this before registering and included in the documentation is below (this is the content in the link from my response above with some minor clean up I did this morning) and I added the first section below to README. Can you provide me better feedback on what you think is missing? I need a bit more to go on here given all the content below that seems to address the feedback.

Epicycle: An Application for Space Mission Design and Navigation

Epicycle is a Julia package ecosystem for astrodynamics and space mission design, built with a modular architecture that spans mission analysis workflows from preliminary design through trajectory optimization. The current implementation - which is the initial release - focuses on establishing a robust architecture with key components—coordinate systems, time standards, spacecraft state representations, basic propagation, targeting and optimization—while providing extensible interfaces for systematic expansion toward operational mission design and navigation capabilities.

The ecosystem consists of eleven specialized packages organized in architectural layers, from core abstractions (AstroBase) through utilities (AstroEpochs, AstroStates, and AstroUniverse) to integrated workflows (AstroManeuvers, AstroProp, and AstroSolve). The structure enables users to use low level utilities independently of the full system, or compose mission-specific analyses using interfaces designed to solve complex design problems, fast. The architecture in the first release is well tested and documented, and provides a clear pathway for extending capabilities toward high-fidelity force modeling, advanced optimization algorithms, and operational navigation applications as the framework matures.

Architecture and Components

Development Environment

Epicycle is designed to work seamlessly with modern development tools:

  • Visual Studio Code with Julia Language Server provides comprehensive IDE features
  • Code Intelligence through language-based completion and GitHub Copilot integration
  • Interactive Development with integrated debugger and REPL workflow
  • Workspace Management for organizing multi-package projects

Package Architecture

The Epicycle ecosystem implements a layered architecture where each package provides focused functionality while maintaining clean interfaces for composition in workflows. Users can access the complete system through using Epicycle in Julia, or leverage individual components independently for specialized applications. The packages are organized from the integration layer down through foundational components:

Package Purpose
Epicycle Integration layer providing unified interface and common workflows
AstroBase Core abstractions, type hierarchy, and fundamental constants
AstroStates Spacecraft state representations and state transformations
AstroEpochs Time systems, epoch handling, and temporal conversions
AstroUniverse Celestial body models, ephemeris data, and gravitational parameters
AstroFrames Reference frames and coordinate system transformations
AstroModels Spacecraft and physical models
AstroManeuvers Maneuver models and algorithms
AstroCallbacks Utilities for constraints, objectives, and events
AstroProp Numerical integration and trajectory propagation methods
AstroSolve Optimization algorithms and constraint solving capabilities

Current Status

The initial release of Epicycle provides a core architecture that integrates fundamental algorithms and models into an intuitive application for solving engineering problems. The model packages establish essential functionality while the architecture is designed for systematic expansion. The implementation maintains loose coupling between packages so lower-level components can be used independently of the full Epicycle application.

The system includes comprehensive test suites and documentation across all packages, with 95% code coverage and continuous integration on GitHub. The software has been tested and validated on macOS, Linux, and Windows environments, with the architectural foundation established and core functionality implemented, making Epicycle ready for mission analysis workflows while maintaining an extensible design for advanced capabilities.

Astrodynamics computations are tested against the General Mission Analysis Tool (GMAT) R2022a. Time conversion calculations are tested against Astropy.Time.

Why New Software

Julia is a modern, high-performance language designed for technical computing. It combines the ease of use found in MATLAB and Python with the performance of C/C++.

Most aerospace tools require custom scripting interfaces or domain-specific languages. Julia serves as both the implementation language and the user interface, providing direct access to the full computational ecosystem. The language's design emphasizes scientific computing and automatic differentiation, both essential for aerospace optimization and navigation applications.

  • High-Performance Numerical Analysis - Julia is designed for high-performance numerical analysis, making it suitable for complex scientific computations.
  • Efficient Linear Algebra - Julia excels in linear algebra with efficient matrix operations and optimized algorithms.
  • Differential Equations - Julia provides advanced features for solving differential equations, making it suitable for complex scientific and engineering problems.
  • SciML Machine Learning - Julia seamlessly integrates with SciML for machine learning, enhancing the capabilities for scientific machine learning applications.
  • Optimization Tools - Julia interfaces seamlessly with optimization tools like SNOPT and IPOPT, facilitating the handling of complex tasks in technical computing.

Acknowledgments

Epicycle builds upon the foundational work of many contributors to the aerospace and scientific computing communities:

Astrodynamics Standards

  • NASA GMAT Development Team for orbital mechanics specifications and validation test cases
  • David Vallado, "Fundamentals of Astrodynamics and Applications, 4th Edition" (2013), Microcosm Press, for mathematical formulations and algorithmic references
  • The Astropy Project for rigorous time system standards and implementations

Julia Scientific Computing Ecosystem

  • SciML Organization for OrdinaryDiffEq.jl used in AstroProp
  • Julia Astro community for SPICE.jl used in AstroUniverse
  • BYU FLOW Lab for SNOW.jl used in AstroSolve
  • Julia Space Mission Design for the TEMPO.jl library used in AstroEpochs
  • Wächter & Biegler for the IPOPT nonlinear programming solver

Open Source Foundations

  • Julia Computing and contributors to the Julia language
  • The Documenter.jl team for documentation generation
  • GitHub Actions and the CI/CD community for automated testing infrastructure
  • Visual Studio Code, used to develop Epicycle and the recommended user interface

We gratefully acknowledge these projects and their maintainers, whose work makes Epicycle possible.

Core Contributors

  • Steve Hughes (steven.hughes at genastro.org), architect and lead developer.

License

We believe in the power of open source to foster innovation and community-driven development and also recognize the need for a sustainable business model and a model that can handle export-controlled aerospace content.

For these reasons, Epicycle is offered under a tri-licensing model. The license allows users to choose between the following three options:

  1. LGPL V3.0
  2. Evaluation and Education use Only
  3. Commercial License

See LICENSE.txt for the terms of each license option. For licensing questions contact licensing [at] genastro.org

Contributing

To protect both contributors and our company, we use the Linux Kernel's Developer's Certificate of Origin (DCO) as detailed in CONTRIBUTING.txt.

Support

For support, including technical support and services to apply Epicycle to your application, contact support [at] genastro.org tolemy to explain why planets appear to reverse direction and perform small loops in their celestial paths. While this model represented a significant advancement over earlier theories, it was ultimately incorrect—and it would be nearly 1500 years before Kepler developed a more accurate framework for understanding orbital mechanics.

We've come remarkably far in our understanding, yet fundamental questions remain. Either our theories of relativity, quantum mechanics, or both may be incomplete—reminding us that scientific discovery is an ongoing journey.

The Epicycle software is a tribute to the brilliant minds who came before us, celebrating how far we've advanced while embracing the excitement of continuing to push the boundaries of knowledge and make new discoveries.

[noblock]

stevenhughes73 avatar Nov 14 '25 16:11 stevenhughes73

[noblock]

No worries, it was just a minor suggestion to improve the description that people see:

Screenshot 2025-11-14 at 16 20 25

because this is what people see first in searches and summaries ... :)

cormullion avatar Nov 14 '25 16:11 cormullion

@cormullion

Copy. I updated so they seen this now.

Epicycle is a Julia package ecosystem for astrodynamics and space mission design, built with a modular architecture that spans mission analysis workflows from preliminary design through trajectory optimization. The current implementation - which is the initial release - focuses on establishing a robust architecture with key components—coordinate systems, time standards, spacecraft state representations, basic propagation, targeting and optimization—while providing extensible interfaces for systematic expansion toward operational mission design and navigation capabilities.

The ecosystem consists of eleven specialized packages organized in architectural layers, from core abstractions (AstroBase) through utilities (AstroEpochs, AstroStates, and AstroUniverse) to integrated workflows (AstroManeuvers, AstroProp, and AstroSolve). The structure enables users to use low level utilities independently of the full system, or compose mission-specific analyses using interfaces designed to solve complex design problems, fast. The architecture in the first release is well tested and documented, and provides a clear pathway for extending capabilities toward high-fidelity force modeling, advanced optimization algorithms, and operational navigation applications as the framework matures.

[noblock]

stevenhughes73 avatar Nov 14 '25 16:11 stevenhughes73

Something that's also important: please make sure that the GenAstro organization has at least two owners, and that their membership is set to "public".

@goerz FYI, I am working on this one.

[noblock]

stevenhughes73 avatar Nov 14 '25 16:11 stevenhughes73

[noblock]

Oh, I see - I’ve been referring to the metadata rather than the Readme:

https://github.com/orgs/community/discussions/170808

cormullion avatar Nov 17 '25 11:11 cormullion

Something that's also important: please make sure that the GenAstro organization has at least two owners, and that their membership is set to "public".

@goerz I have added a new owner and made their role public. You can see that here:

https://github.com/orgs/GenAstro/people?query=role%3Aowner

This is the last package in Epicycle, all others are now registered. I'm going to register this one again with deps and compats shortly, but suspect this comment will block. I replied to all others and I think they are resolved. The finish line is in sight!

[noblock]

stevenhughes73 avatar Nov 28 '25 17:11 stevenhughes73

@goerz I have not lost site of this registration. While I was working through registration of all the other packages, I tried a new feature I thought was out of reach for this version, and it isn't. So I am working on some new functionality for this release.

image

stevenhughes73 avatar Dec 15 '25 13:12 stevenhughes73