@almaobservatory/astro
v1.0.1
Published
ALMA astronomy utilities: coordinate math, frequency converters, receiver bands, and atmospheric octiles.
Keywords
Readme
@almaobservatory/astro
An Angular library for astronomical-related calculations. Hard-core calculations. This has been populated with a simplified version of the ICRS <-> galactic converter from ATC's NgOTv1 and ESO's sexagesimal converter.
Shared between ngOT and SnooPI.
What's inside
- Coordinate math — sexagesimal ↔ decimal, sky / rest reference-frame conversions, offset → absolute via Euler rotation (SLALIB-style routines)
- Unit and value conversions — frequency, velocity, angle, sensitivity, flux, line-width, redshift
- ALMA reference data — receiver-band table (
getReceiverBandByNumber) and the 7-octile atmospheric-transmission dataset (OctilesMap) - Angular pipes —
RaPipe,DecPipe,DurationPipe,DataSizePipe,FormatNumberPipe - Utilities — solar-system targets, calibration-query helpers, rectangle / pointing geometry, formatters
The full public surface is in src/public-api.ts.
Installation
npm install @almaobservatory/astro@almaobservatory/model is a peer dependency and will be installed alongside.
lodash is also a peer dependency.
Usage
import {
getReceiverBandByNumber,
OctilesMap,
offsetToAbsolute,
RaPipe,
DecPipe
} from '@almaobservatory/astro';
// Look up ALMA Band 6
const band6 = getReceiverBandByNumber(6);
console.log(band6.rfmin, band6.rfmax); // 211, 275
// Median atmospheric-transmission curve
const data = OctilesMap[4];
// Offset → absolute sky position (uses SkyCoordinates objects from model)
const result = offsetToAbsolute(
{ longitude: { value: 10, unit: 'arcsec' }, latitude: { value: 0, unit: 'arcsec' }, type: 'RELATIVE' },
{ longitude: { value: 86.8, unit: 'deg' }, latitude: { value: -70.7, unit: 'deg' }, type: 'ABSOLUTE' }
);
// Use pipes in standalone components
@Component({
imports: [RaPipe, DecPipe],
template: `{{ raDeg | ra }}, {{ decDeg | dec }}`
})Development
The library lives under projects/astro/ in the ngOT workspace. From the
workspace root:
# Build the library to dist/astro
ng build astro
# Build + run the consuming app against the latest local build
npm run build-allngOT's own code imports from astro (path-mapped to dist/astro); you do
not need to publish to npm in order to consume changes inside ngOT.
Publishing a new version
When astro changes and external consumers (SnooPI, etc.) need to pick up the new version, publish a new release.
# 1. Bump the version in projects/astro/package.json
# (patch / minor / major per semver)
# 2. From the workspace root:
npm run publish-astro
# 3. Verify
npm view @almaobservatory/astroThe publish script builds, runs fix-dist-pkg-astro to tidy the dist
package.json, and runs npm publish --access public. Requires npm
credentials for the @almaobservatory org.
License
ALMA Observatory.
