Ecosystem

The joy of our community is the many astronomy and astrophysics packages available for wide use. Packages are separated by functionality and Julia's declarative package manager takes care of resolving dependencies. You get just the functionality you need, and smaller packages lead to more rapid development.


Domain

Solar System

EphemerisSources.jl

💻 Repository | 📘 Documentation

Meta package for accessing JPL HORIZONS and SPICE sources

  • Calculate positions and velocities of solar system bodies

PerezHz/HORIZONS.jl

💻 Repository | 📘 Documentation

An interface to NASA-JPL HORIZONS system and other Solar System Dynamics APIs in Julia

  • Calculate positions and velocities of solar system bodies

JuliaSpace/SatelliteToolbox.jl

💻 Repository | 📘 Documentation

Perform analysis and build simulations related to satellites

  • Atmospheric, gravitational, and geomagnetic field models
  • Orbit propagators

See also:

SPICE.jl

💻 Repository | 📘 Documentation

SPICE data retrieval and usage

  • Wrapper for CSPICE
  • Read SPICE data files and compute derived observation geometry such as altitude, latitude/longitude and lighting angles

Exoplanets

JuliaHCI/ADI.jl

💻 Repository | 📘 Documentation

Angular Differential Imaging (ADI) routines in Julia

  • PCA, NMF, LLSG, LOCI, etc.
  • Apply algorithms framewise or in spectral differential imaging (SDI) using Julia's multiple dispatch
  • Provide an interface for using these algorithms in other tools
  • Common HCI metrics including S/N maps, contrast curves, throughput curves (from PSF injection), STIM, etc.

JuliaHCI/HCIToolbox.jl

💻 Repository | 📘 Documentation

Common utilities for high-contrast imaging (HCI) processing

  • Morphological operations (rotation, stacking, shifting)
  • Masking routines (circles, annulus, series of annuli)
  • Spectral scaling and descaling

sefffal/PlanetOrbits.jl

💻 Repository | 📘 Documentation

Tools for displaying and solving Keplerian orbits in the context of direct imaging

Transits.jl

💻 Repository | 📘 Documentation

Flexible photometric transit curves with limb darkening

  • Inspired by exoplanet
  • Includes Keplerian orbits and generic orbits
  • Fully compatible with Unitful.jl

Stars

cgarling/BolometricCorrections.jl

💻 Repository | 📘 Documentation

Interfaces to libraries of astrophysical bolometric correction

  • Access to and interpolation of pre-computed grids of bolometric corrections

cgarling/InitialMassFunctions.jl

💻 Repository | 📘 Documentation

Evaluation of and sampling from stellar initial mass functions

  • Provides a framework to evaluate and sample from stellar initial mass functions, including common literature models

cgarling/StarFormationHistories.jl

💻 Repository | 📘 Documentation

Fitting astrophysical star formation histories via CMD modeling

  • Implements methods for modeling observed Hess diagrams (i.e., binned color-magnitude diagrams) and using them to fit astrophysical star formation histories (SFHs)
  • Provides utilities for simulating CMDs given input SFHs and photometric error and completeness functions, which can be useful for planning observations and writing proposals

Galaxies and Cosmology

Cosmology.jl

💻 Repository | 📘 Documentation

Distances in the universe

  • $\Lambda$-CDM and $w_0$-$w_a$ cosmologies
  • Open, closed, and flat variants
  • Fully compatible with Unitful.jl

DustExtinction.jl

💻 Repository | 📘 Documentation

Dust extinction laws and maps

  • Various empirical extinction models
  • SFD (1998) galactic dust map
  • Fully compatible with Unitful.jl

EHTJulia/ScatteringOptics.jl

💻 Repository | 📘 Documentation

A Julia package to simulate and model interstellar scattering in strong regime

  • Analyze interstellar scintillation observed at radio wavelengths
  • Implements physical models for the anisotropic scattering of radio waves
  • Modeling, analyze, and interpret the images of the Galactic Center's supermassive black hole, Sagittarius A*, especially with the Event Horizon Telescope

Techniques

Photometry

CCDReduction.jl

💻 Repository | 📘 Documentation

Common CCD image processing routines

  • Creation of calibration files
  • Dark subtraction, flat normalization, bias subtraction, cropping
  • Specialized iterator for processing directories of FITS files using a table built from the FITS headers.

LACosmic.jl

💻 Repository | 📘 Documentation

Cosmic-ray rejection by Laplacian edge detection

  • Implementation of the L.A.Cosmic algorithm (van Dokkum, 2001)
  • Returns bad pixel masks and cleaned data

Photometry.jl

💻 Repository | 📘 Documentation

Aperture photometry

  • Background estimation and source extraction
  • Fast and precise aperture photometry

PSFModels.jl

💻 Repository | 📘 Documentation

Analytical, allocation-free point-spread-functions (PSF)

  • Lazy representation allows fast allocation-free calculations
  • Gaussian (Normal), Moffat, and Airy disk.

SAOImageDS9.jl

💻 Repository | 📘 Documentation

Interface with the DS9 image viewer

  • Uses XPA.jl to communicate with DS9 instances
  • Easily display images in DS9 and add features like circles and lines
  • Low-level API accessible with set and get

Astrometry

barrettp/Astrometry.jl

💻 Repository | 📘 Documentation

Set of IAU standard algorithms for calculating the time and position of celestial objects

AstroTime.jl

💻 Repository | 📘 Documentation

Astronomical time keeping

  • High-precision, time-scale aware, DateTime-like data type
  • Support all commonly used astronomical time scales

EarthOrientation.jl

💻 Repository | 📘 Documentation

Earth orientation parameters

  • Calculate Earth orientation parameters from IERS tables

ERFA.jl

💻 Repository | 📘 Documentation

Time systems conversions

ziotom78/Healpix.jl

💻 Repository | 📘 Documentation

Implementation of Healpix spherical tesselation scheme in pure Julia

  • pixel functions, query functions, map functions
  • power spectrum support
  • plotting support

Reproject.jl

💻 Repository | 📘 Documentation

Astronomical image reprojection

  • Uses FITSIO.jl and WCS.jl to reproject coordinate systems between FITS images

SkyCoords.jl

💻 Repository | 📘 Documentation

Astronomical coordinate systems

  • Supports ICRS, galactic, and FK5 coordinate systems
  • Fast conversion of coordinates between different systems

WCS.jl

💻 Repository | 📘 Documentation

World Coordinate System transformations


Spectroscopy

ajwheeler/Korg.jl

💻 Repository | 📘 Documentation

Theoretical stellar spectra from 1D model atmospheres and linelists, assuming LTE

Spectra.jl

💻 Repository | 📘 Documentation

Utilities for interfacing with astronomical spectra and synthetic spectra libraries

  • Utilities for interfacing with astronomical spectra and synthetic spectra libraries

fjebaker/SpectralFitting.jl

💻 Repository | 📘 Documentation

✨🛰 Fast and flexible spectral fitting in Julia

  • Spectral fitting routines and models with a focus on X-ray astronomy
  • This project is an attempt to modernise the field with new advancements in computational methods and statistical methods
  • SpectralFitting.jl aims to be extensible and reproducible, such that fits may be easily tailored to novel and specific problems, and easily verified by others

Time Series Analysis

JuliaDSP/DSP.jl

💻 Repository | 📘 Documentation

Filter design, periodograms, window functions, and other digital signal processing functionality

LombScargle.jl

💻 Repository | 📘 Documentation

Compute Lomb-Scargle periodogram

  • Create periodograms from unevenly sampled periodic signals
  • Supports multi-threading

JuliaStats/TimeSeries.jl

💻 Repository | 📘 Documentation

Time series toolkit for Julia

  • TimeSeries aims to provide a lightweight framework for working with time series data in Julia

Interferometry

ptiede/Comrade.jl

💻 Repository | 📘 Documentation

Composable Modeling of Radio Emission

  • A Bayesian differentiable modular modeling package for very long baseline interferometry

JuliaAPlavin/Difmap.jl

💻 Repository | 📘 Documentation

Wrapper for the Difmap program used in synthesis imaging

  • Execute Difmap scripts, handle inputs/outputs and logs
  • Display images and plots from Difmap in interactive Julia environments

emmt/OIFITS.jl

💻 Repository | 📘 Documentation

Support for OI-FITS

  • Read and write OI-FITS optical interferometry data format

fabienbaron/OITOOLS.jl

💻 Repository | 📘 Documentation

A collection of tools to load, visualize, model-fit and image optical interferometry data coming from CHARA, NPOI and VLTI

  • OITOOLS is a Julia package to read, plot, model-fit and image optical interferometric data coming from astronomical arrays such as CHARA, VLTI, and NPOI
  • Note that despite having the same name as JMMC's oitools, they are completely unrelated and were developed independently

EHTJulia/PolarizedTypes.jl

💻 Repository | 📘 Documentation

Basic Polarized types for interferometry

  • This defines the basic for polarized types for use in VLBI, including
    • StokesParams for the stokes parameters
    • CoherencyMatrix for coherency matrices in arbitrary bases, including a mixed basis

JuliaAPlavin/VLBIData.jl

💻 Repository | 📘 Documentation

Work with data formats common in very long baseline interferometry (VLBI)

  • Read interferometric visibilities (uvfits), images (fits), and source models
  • Minimal writing support for source models

EHTJulia/VLBISkyModels.jl

💻 Repository | 📘 Documentation

Just the Comrade Models

  • VLBISkyModels provides an interface and library for of models that can be used to describe the on-sky emission seen by VLBI interferometers

Statistics

Uncertainty

JuliaPhysics/Measurements.jl

💻 Repository | 📘 Documentation

Error propagation calculator and library for physical measurements. It supports real and complex numbers with uncertainty, arbitrary precision calculations, operations with arrays, and numerical integration

  • Measurements.jl relieves you from the hassle of propagating uncertainties coming from physical measurements, when performing mathematical operations involving them
  • The linear error propagation theory is employed to propagate the errors

MonteCarloMeasurements.jl

💻 Repository | 📘 Documentation

Propagation of distributions by Monte-Carlo sampling: Real number types with uncertainty represented by samples

  • This package facilitates working with probability distributions by means of Monte-Carlo methods, in a way that allows for propagation of probability distributions through functions

JuliaAPlavin/Uncertain.jl

💻 Repository | 📘 Documentation

Handle uncertain values with ease and performance!

  • The ultimate goal of Uncertain.jl is to support arbitrary uncertainty specifications – asymmetric errors, intervals, more complex distributions, and go beyond plain numbers. All within a single uniform interface

Optimization

BoxLeastSquares.jl

💻 Repository | 📘 Documentation

Compute box-least-squares periodogram

  • Fit BLS periodograms to time-series data
  • Extract best-fitting transit parameters from the BLS periodogram
  • Fully compatible with Unitful.jl

jump-dev/JuMP.jl

💻 Repository | 📘 Documentation

Modeling language for Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear)

SciML/NonlinearSolve.jl

💻 Repository | 📘 Documentation

High-performance and differentiation-enabled nonlinear solvers (Newton methods), bracketed rootfinding (bisection, Falsi), with sparsity and Newton-Krylov support

  • Fast implementations of root finding algorithms in Julia that satisfy the SciML common interface

SciML/Optimization.jl

💻 Repository | 📘 Documentation

Mathematical Optimization in Julia. Local, global, gradient-based and derivative-free. Linear, Quadratic, Convex, Mixed-Integer, and Nonlinear Optimization in one simple, fast, and differentiable interface

  • Optimization.jl seeks to bring together all of the optimization packages it can find, local and global, into one unified Julia interface
  • This means, you learn one package and you learn them all!

General

AstroLib.jl

💻 Repository | 📘 Documentation

Collection of generic astronomical and astrophysical functions

  • Translation of many IDL AstroLib procedures

mileslucas/BiweightStats.jl

💻 Repository | 📘 Documentation

Robust statistics based on the biweight transform

  • Implements the location, scale, midvariance, midcovariance, and midcorrelation statistics

jeff-regier/Celeste.jl

💻 Repository | 📘 Documentation

Scalable inference for a generative model of astronomical images

  • Find and characterize stars and galaxies in astronomical images via approximate Bayesian inference

JuliaStats

💻 Repository | 📘 Documentation

Statistics and Machine Learning made easy in Julia

  • Easy to use tools for statistics and machine learning

JuliaStats/Distributions.jl

💻 Repository | 📘 Documentation

A Julia package for probability distributions and associated functions

  • A Julia package for probability distributions and associated functions

EHTJulia/FastHartleyTransform.jl

💻 Repository | 📘 Documentation

A Julia implementation of the Fast Hartley Transform (FHT)

  • This package provides a Julia implementation of the Fast Hartley Transform (FHT)
  • It supports both CPUs and NVIDIA CUDA GPUs

sefffal/Octofitter.jl

💻 Repository | 📘 Documentation

Octofitter is a Julia package for performing Bayesian inference against a wide variety of exoplanet and binary star data


Utilities

Data I/O

eschnett/ASDF2.jl

💻 Repository | 📘 Documentation

ASDF, the Advanced Scientific Data Format

AstroImages.jl

💻 Repository | 📘 Documentation

Load, manipulate, and visualize astronomical images

CFITSIO.jl

💻 Repository | 📘 Documentation

Reading and writing FITS files

emmt/EasyFITS.jl

💻 Repository | 📘 Documentation

Using FITS files made easier for Julia

  • EasyFITS is a Julia package designed to make it easier to read and write data in FITS format without sacrificing performances, flexibility, or readability.

barrettp/FITSFiles.jl

💻 Repository | 📘 Documentation

A Julia Flexible Image Transport System (FITS) file IO package

  • A Julia Flexible Image Transport System (FITS) file IO package

FITSIO.jl

💻 Repository | 📘 Documentation

Reading and writing FITS files

  • Interact with header data units (HDUs), FITS headers, and FITS data: both images and tables
  • FITS tables follow the Tables.jl interface, allowing seamless integration with the rich data ecosystem, like CSV.jl, DataFrames.jl, etc.

FixedWidthTables.jl

💻 Repository | 📘 Documentation

Read fixed width (so-called ASCII) tables

  • Read fixed width (so-called ASCII) tables. A wide range of format specification options, including autodetection

JuliaAPlavin/SkyImages.jl

💻 Repository | 📘 Documentation

Load astronomical images of the sky and process them with convenient, general, and composable functions.

  • FITS WCS and Healpix images
  • Uniform interface and Makie plotting
  • Use original data as-is or project onto a rectangular grid

JuliaAPlavin/VirtualObservatory.jl

💻 Repository | 📘 Documentation

Access remote data and services that follow VO protocols

  • Access remote data and services that follow Virtual Observatory (VO, https://www.ivoa.net/) protocols
  • Currently supports the Table Access Protocol (TAP), and a few key features specific to the VizieR database

JuliaAPlavin/VOTables.jl

💻 Repository | 📘 Documentation

Read and write VOTable files

  • Text and binary VOTables support
  • Read Unitful numbers and column metadata

Data processing

torrance/Casacore.jl

💻 Repository | 📘 Documentation

A high level Julia interface to Casacore

  • Wrapper for CasaCore
  • Uses casacorecxx which uses CxxWrap to wrap the C++ Casacore codebase. These raw objects and methods are available in Casacore.LibCasacore

JuliaData/DataFrames.jl

💻 Repository | 📘 Documentation

In-memory tabular data in Julia

  • Tools for working with tabular data in Julia

rafaqz/DimensionalData.jl

💻 Repository | 📘 Documentation

Named dimensions and indexing for julia arrays and other data

  • DimensionalData.jl provides tools and abstractions for working with datasets that have named dimensions, and optionally a lookup index
  • It provides no-cost abstractions for named indexing, and fast index lookups

JuliaAPlavin/FlexiJoins.jl

💻 Repository | 📘 Documentation

FlexiJoins.jl is a fresh take on joining tabular or non-tabular datasets in Julia.

  • From simple joins by key, to asof joins, to merging catalogs of terrestrial or celestial coordinates – FlexiJoins supports any usecase

gcalderone/SortMerge.jl

💻 Repository | 📘 Documentation

A Julia implementation of the Sort-merge join algorithm

  • The Sort-merge join algorithm allows to quickly find the matching pairs in two separate arrays or collections
  • The best performances are obtained when the input data are already sorted, but the package is able to sort the data if they are not

Data Viz

AstroImages.jl

💻 Repository | 📘 Documentation

Load, manipulate, and visualize astronomical images

JuliaImages/ImageFiltering.jl

💻 Repository | 📘 Documentation

ulia implementations of multidimensional array convolution and nonlinear stencil operations

  • ImageFiltering implements blurring, sharpening, gradient computation, and other linear filtering operations, as well nonlinear filters like min/max

ManuelBehrendt/Mera.jl

💻 Repository | 📘 Documentation

Working with large hydrodynamical simulation data

  • Loading, writing, analysing 3D AMR/uniform-grid and N-body data sets
  • Memory lightweight data processing within a database framework
  • Many predefined functions and examples

sefffal/PairPlots.jl

💻 Repository | 📘 Documentation

Beautiful and flexible visualizations of high dimensional data

See also:

JuliaAPlavin/SkyImages.jl

💻 Repository | 📘 Documentation

Load astronomical images of the sky and process them with convenient, general, and composable functions.

  • FITS WCS and Healpix images
  • Uniform interface and Makie plotting
  • Use original data as-is or project onto a rectangular grid

Units/Constants

AstroAngles.jl

💻 Repository | 📘 Documentation

String parsing and representation of angles

  • Parse and represent sexagesimal angles with a variety of delimiters
  • Methods for converting to hour-minute-second angles from degrees and radians, and vice-versa

SymbolicML/DynamicQuantities.jl

💻 Repository | 📘 Documentation

Efficient and type-stable physical quantities in Julia

  • Defines a simple statically-typed Quantity type for Julia
  • Physical dimensions are stored as a value, as opposed to a parametric type, as in Unitful.jl

JuliaPhysics/PhysicalConstants.jl

💻 Repository | 📘 Documentation

Collection of fundamental physical constants with uncertainties

  • PhysicalConstants.jl provides common physical constants
  • They are defined as instances of the new Constant type, which is subtype of AbstractQuantity (from Unitful.jl package) and can also be turned into Measurement objects (from Measurements.jl package) at request

PainterQubits/Unitful.jl

💻 Repository | 📘 Documentation

Physical quantities with arbitrary units

  • Unitful is a Julia package for physical units
  • We want to support not only SI units but also any other unit system

UnitfulAstro.jl

💻 Repository | 📘 Documentation

Astronomical units and things