Skip to content

Releases: observerly/skysolve

v0.6.0

14 Nov 14:41
01ff37b
Compare
Choose a tag to compare

What's Changed

Features

  • feat: add (wcs *WCS) EquatorialCoordinateToPixel() to wcs module in @observerly/skysolve by @michealroberts in #72

Full Changelog: v0.5.0...v0.6.0

v0.5.0

14 Nov 12:35
4660283
Compare
Choose a tag to compare

What's Changed

Fixes

  • fix: amend PixelToEquatorialCoordinate() in wcs module in @observerly/skysolve by @michealroberts in #71

Full Changelog: v0.4.0...v0.5.0

v0.4.0

08 Nov 15:48
36f766e
Compare
Choose a tag to compare

What's Changed

🔭 This release improves the performance and reliability of the astrometric plate solving solution. The following code has been benchmarked to run consistently less than <100ms with a variance of +/-20ms.

N.B. more CPU and memory profiling will come along with a dedicated benchmarking suite in the next minor release.

// Attempt to create a new PlateSolver:
solver, err := solver.NewPlateSolver(solver.GAIA, fit, solver.Params{
	RA:                  float64(ra.Value),  // The appoximate RA of the center of the image
	Dec:                 float64(dec.Value), // The appoximate Dec of the center of the image
	PixelScale:          2.061 / 3600.0,     // 2.061 arcseconds per pixel (0.0005725 degrees)
	ExtractionThreshold: 80,                 // Extract a minimum of 80 of the brightest stars
	Radius:              16,                 // 16 pixels radius for the star extraction
	Sigma:               8,                  // 8 pixels sigma for the Gaussian kernel
})

if err != nil {
	fmt.Printf("error: %v", err)
	return
}

// Define the tolerances for the solver, we can adjust these as needed:
tolerances := geometry.InvariantFeatureTolerance{
	LengthRatio: 0.025, // 5% tolerance in side length ratios
	Angle:       0.5,   // 1 degree tolerance in angles
}

// Record the start time
startTime := time.Now()
wcs, err := solver.Solve(tolerances, 3)

if err != nil {
	fmt.Printf("an error occured while plate solving: %v", err)
	return
}

// Calculate the elapsed time
elapsedTime := time.Since(startTime)

fmt.Println(elapsedTime)

Performance

  • perf: amend (ps *PlateSolver) FindSourceMatches in @observerly/skysolve by @michealroberts in #69
  • perf: amend (ps *PlateSolver) MatchAsterismsWithCatalog in @observerly/skysolve by @michealroberts in #70

Features

  • feat: add SIP2DInverseParameters to transform module in @observerly/skysolve by @michealroberts in #68

Refactors

  • refactor: amend SIP2DParameters in transform module in @observerly/skysolve by @michealroberts in #67

Full Changelog: v0.3.0...v0.4.0

v0.3.0

06 Nov 12:08
ad16d88
Compare
Choose a tag to compare

What's Changed

🔭 This release improves the calculation of SIP polynomial non-linear terms, discounts linear terms as they are covered by the affine transformations already applied, as well as applying the SIP corrections in PixelToEquatorialCoordinate.

Features

  • feat: add parseSIPTerm helper utility to wcs module in @observerly/skysolve by @michealroberts in #64
  • feat: add SIP transform.SIP2DParameters key to WCS struct in @observerly/skysolve by @michealroberts in #65

Refactors

  • refactor: amend (ps *PlateSolver) solveForSIPParameters() for non-linear terms in @observerly/skysolve by @michealroberts in #63
  • refactor: amend PixelToEquatorialCoordinate() in wcs module in @observerly/skysolve by @michealroberts in #66

Full Changelog: v0.2.0...v0.3.0

v0.2.0

06 Nov 09:37
b8e681c
Compare
Choose a tag to compare

What's Changed

🔭 This release to @observerly/skysolve begins, but doesn't fully expose, the APIs for calculating the Simple Imaging Polynomial, or SIP, convention for FITs images. The development of the SIP convention is in parallel with work on the World Coordinate
System (WCS) FITS standard support.

Future releases will stabilise the APIs and provide easy ways to work with SkySolve and the FITs standard.

This release also comes with a benchmarked, but approximately, 20ms improvement in performance when plate solving your astronomical images.

Features

  • feat: add CoordinateProjectionType to wcs module in @observerly/skysolve by @michealroberts in #53
  • feat: add CTypeP (c CoordinateProjectionType) to wcs module in @observerly/skysolve by @michealroberts in #55
  • feat: add SIP2DParameters to transform module in @observerly/skysolve by @michealroberts in #56
  • feat: add WCSParams struct to wcs module in @observerly/skysolve by @michealroberts in #57
  • feat: add (ps *PlateSolver) solveForAffineParameters() to solver module in @observerly/skysolve by @michealroberts in #59
  • feat: add (ps *PlateSolver) solveForSIPParameters() to solver module in @observerly/skysolve by @michealroberts in #60
  • feat: add sipParams calculation to (ps *PlateSolver) Solve() in @observerly/skysolve by @michealroberts in #62

Refactors

  • refactor: amend NewWorldCoordinateSystem to accept WCSParams type in @observerly/skysolve by @michealroberts in #58

Performance

  • perf: amend (ps *PlateSolver) FindSourceMatches to utilise coroutines in @observerly/skysolve by @michealroberts in #61

Full Changelog: v0.1.0...v0.2.0

v0.1.0

02 Nov 15:34
14b1303
Compare
Choose a tag to compare

What's Changed

Features

  • feat: add Client *http.Client to GAIAServiceClient in catalog module in @observerly/skysolve by @michealroberts in #51
  • feat: use new g.Client in PerformRadialSearch() in catalog module in @observerly/skysolve by @michealroberts in #52

Full Changelog: v0.0.0...v0.1.0

v0.0.0

01 Nov 20:08
df044c0
Compare
Choose a tag to compare
v0.0.0 Pre-release
Pre-release

What's Changed

Features

  • feat: add Source struct to catalog module in @observerly/skysolve by @michealroberts in #7
  • feat: add GAIAQuery struct to catalog module in @observerly/skysolve by @michealroberts in #8
  • feat: add NewGAIAServiceClient to catalog module in @observerly/skysolve by @michealroberts in #9
  • feat: add (g *GAIAServiceClient) Build() to catalog module in @observerly/skysolve by @michealroberts in #10
  • feat: add ICRSEquatorialCoordinate struct to astrometry module in @observerly/skysolve by @michealroberts in #11
  • feat: add (g *GAIAServiceClient) PerformRadialSearch() to catalog module in @observerly/skysolve by @michealroberts in #12
  • feat: add NewWorldCoordinateSystem to catalog module in @observerly/skysolve by @michealroberts in #14
  • feat: add (wcs *WCS) PixelToEquatorialCoordinate() to catalog module in @observerly/skysolve by @michealroberts in #15
  • feat: add Affine2DParameters struct to transform module in @observerly/skysolve by @michealroberts in #16
  • feat: add (wcs *WCS) SolveForCentroid() to wcs module in @observerly/skysolve by @michealroberts in #17
  • feat: add Matrix struct type to matrix module in @observerly/skysolve by @michealroberts in #18
  • feat: add New(rows, columns int) (*Matrix, error) to matrix module in @observerly/skysolve by @michealroberts in #19
  • feat: add NewFromSlice(value []float64, rows, columns int) (*Matrix, error) to matrix module in @observerly/skysolve by @michealroberts in #20
  • feat: add simple Rows() and Columns() property accessors in @observerly/skysolve by @michealroberts in #21
  • feat: add (m *Matrix) At(row, col int) to matrix module in @observerly/skysolve by @michealroberts in #22
  • feat: add (m *Matrix) Set(row, col int, value float64) to matrix module in @observerly/skysolve by @michealroberts in #23
  • feat: add (m *Matrix) Transpose() to matrix module in @observerly/skysolve by @michealroberts in #24
  • feat: add (m *Matrix) Multiply() to matrix module in @observerly/skysolve by @michealroberts in #25
  • feat: add (m *Matrix) Invert() to matrix module in @observerly/skysolve by @michealroberts in #26
  • feat: add remaining C* HDU headers to WCS in @observerly/skuysolve by @michealroberts in #27
  • feat: add WCAXES hdu keyword to WCS struct in @observerly/skysolve by @michealroberts in #28
  • feat: add DistanceBetweenTwoCartesianPoints() to geometry module in @observerly/skysolve by @michealroberts in #29
  • feat: add AngleBetweenThreeCartesianPoints() to geometry module in @observerly/skysolve by @michealroberts in #30
  • feat: add ComputeInvariantFeatures() to geometry module in @observerly/skysolve by @michealroberts in #31
  • feat: add Asterism type to astrometry module in @observerly/skysolve by @michealroberts in #32
  • feat: add SourceAsterism type to catalog module in @observerly/skysolve by @michealroberts in #33
  • feat: amend Algorithm section of README.md in workspace root by @michealroberts in #35
  • feat: add QuantizeFeatures to utils module in @observerly/skysolve by @michealroberts in #37
  • feat: add Features property to Asterism struct in @observerly/skysolve by @michealroberts in #39
  • feat: add Features property to SourceAsterism struct in @observerly/skysolve by @michealroberts in #40
  • feat: add CompareInvariantFeatures() to geometry module in @observerly/skysolve by @michealroberts in #41
  • feat: add ConvertEquatorialToGnomic() to projection module in @observerly/skysolve by @michealroberts in #42
  • feat: add PlateSolverCatalog type to solver moduel in @observerly/skysolve by @michealroberts in #43
  • feat: add NewPlateSolver type to solver module in @observerly/skysolve by @michealroberts in #44
  • feat: add (ps *PlateSolver) GenerateStarAsterisms() to solver module in @observerly/skysolve by @michealroberts in #45
  • feat: add (ps *PlateSolver) GenerateSourceAsterisms() to solver module in @observerly/skysolve by @michealroberts in #46
  • feat: add Match type to solver module in @observerly/skysolve by @michealroberts in #47
  • feat: add (ps *PlateSolver) MatchAsterismsWithCatalog() to solver module in @observerly/skysolve by @michealroberts in #48
  • feat: add (ps *PlateSolver) FindSourceMatches to solver module in @observerly/skysolve by @michealroberts in #49
  • feat: add (ps *PlateSolver) Solve to solver module in @observerly/skysolve by @michealroberts in #50

New Contributors

Full Changelog: https://github.com/observerly/skysolve/commits/v0.0.0