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
EphemerisSources.jl
Meta package for accessing JPL HORIZONS and SPICE sources
- Calculate positions and velocities of solar system bodies
PerezHz/HORIZONS.jl
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
Perform analysis and build simulations related to satellites
- Atmospheric, gravitational, and geomagnetic field models
- Orbit propagators
See also:
SPICE.jl
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
JuliaHCI/ADI.jl
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
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
Tools for displaying and solving Keplerian orbits in the context of direct imaging
Transits.jl
Flexible photometric transit curves with limb darkening
- Inspired by exoplanet
- Includes Keplerian orbits and generic orbits
- Fully compatible with Unitful.jl
Cosmology.jl
Distances in the universe
- $\Lambda$-CDM and $w_0$-$w_a$ cosmologies
- Open, closed, and flat variants
- Fully compatible with Unitful.jl
DustExtinction.jl
Dust extinction laws and maps
- Various empirical extinction models
- SFD (1998) galactic dust map
- Fully compatible with Unitful.jl
Techniques
CCDReduction.jl
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
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
Aperture photometry
- Background estimation and source extraction
- Fast and precise aperture photometry
PSFModels.jl
Analytical, allocation-free point-spread-functions (PSF)
- Lazy representation allows fast allocation-free calculations
- Gaussian (Normal), Moffat, and Airy disk.
SAOImageDS9.jl
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
andget
barrettp/Astrometry.jl
Set of IAU standard algorithms for calculating the time and position of celestial objects
- More information can be found on the official website of the Standards of Fundamental Astronomy.
AstroTime.jl
Astronomical time keeping
- High-precision, time-scale aware, DateTime-like data type
- Support all commonly used astronomical time scales
EarthOrientation.jl
Earth orientation parameters
- Calculate Earth orientation parameters from IERS tables
ERFA.jl
Time systems conversions
- Low-level wrapper for liberfa
ziotom78/Healpix.jl
Implementation of Healpix spherical tesselation scheme in pure Julia
- pixel functions, query functions, map functions
- power spectrum support
- plotting support
Reproject.jl
Astronomical image reprojection
SkyCoords.jl
Astronomical coordinate systems
- Supports ICRS, galactic, and FK5 coordinate systems
- Fast conversion of coordinates between different systems
WCS.jl
World Coordinate System transformations
- Wrapper for wcslib
ajwheeler/Korg.jl
Theoretical stellar spectra from 1D model atmospheres and linelists, assuming LTE
Spectra.jl
Utilities for interfacing with astronomical spectra and synthetic spectra libraries
- Utilities for interfacing with astronomical spectra and synthetic spectra libraries
fjebaker/SpectralFitting.jl
✨🛰 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
JuliaDSP/DSP.jl
Filter design, periodograms, window functions, and other digital signal processing functionality
- DSP.jl provides a number of common digital signal processing routines in Julia
LombScargle.jl
Compute Lomb-Scargle periodogram
- Create periodograms from unevenly sampled periodic signals
- Supports multi-threading
JuliaStats/TimeSeries.jl
Time series toolkit for Julia
- TimeSeries aims to provide a lightweight framework for working with time series data in Julia
JuliaAPlavin/Difmap.jl
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
Support for OI-FITS
- Read and write OI-FITS optical interferometry data format
fabienbaron/OITOOLS.jl
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
JuliaAPlavin/VLBIData.jl
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
Statistics
JuliaPhysics/Measurements.jl
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
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
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
BoxLeastSquares.jl
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
Modeling language for Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear)
- JuMP is a domain-specific modeling language for mathematical optimization embedded in Julia
SciML/NonlinearSolve.jl
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
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!
AstroLib.jl
Collection of generic astronomical and astrophysical functions
- Translation of many IDL AstroLib procedures
mileslucas/BiweightStats.jl
Robust statistics based on the biweight transform
- Implements the location, scale, midvariance, midcovariance, and midcorrelation statistics
JuliaStats
Statistics and Machine Learning made easy in Julia
- Easy to use tools for statistics and machine learning
JuliaStats/Distributions.jl
A Julia package for probability distributions and associated functions
- A Julia package for probability distributions and associated functions
Utilities
eschnett/ASDF2.jl
ASDF, the Advanced Scientific Data Format
- A new Advanced Scientific Data Format (ASDF) package, written in Julia
AstroImages.jl
Load, manipulate, and visualize astronomical images
- Works with the FileIO.jl interface
CFITSIO.jl
Reading and writing FITS files
- Low-level wrapper for cfitsio
- The c interface can be directly accessed with the CFITSIO_jll package
emmt/EasyFITS.jl
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/FITS.jl
A Julia Flexible Image Transport System (FITS) file IO package
- A Julia Flexible Image Transport System (FITS) file IO package
FITSIO.jl
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
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
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
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
Read and write VOTable files
- Text and binary VOTables support
- Read Unitful numbers and column metadata
AstroImages.jl
Load, manipulate, and visualize astronomical images
- Works with the FileIO.jl interface
torrance/Casacore.jl
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
In-memory tabular data in Julia
- Tools for working with tabular data in Julia
rafaqz/DimensionalData.jl
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
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
JuliaAPlavin/SkyImages.jl
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
gcalderone/SortMerge.jl
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
AstroImages.jl
Load, manipulate, and visualize astronomical images
- Works with the FileIO.jl interface
JuliaImages/ImageFiltering.jl
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
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
Beautiful and flexible visualizations of high dimensional data
- Corner plots or scatter plot matrices. Both Julia and Python are supported (PairPlots.jl and pairplots.py)
- Inspired by corner.py and chainconsumer.py
See also:
JuliaAPlavin/SkyImages.jl
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
AstroAngles.jl
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
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
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 ofAbstractQuantity
(fromUnitful.jl
package) and can also be turned intoMeasurement
objects (fromMeasurements.jl
package) at request
PainterQubits/Unitful.jl
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
Astronomical units and things
- Extension of Unitful.jl