Skip to content

Instantly share code, notes, and snippets.

@nden
Last active April 29, 2020 20:42
Show Gist options
  • Save nden/18e50a618a761e4f36522b97104ccc91 to your computer and use it in GitHub Desktop.
Save nden/18e50a618a761e4f36522b97104ccc91 to your computer and use it in GitHub Desktop.
ASDF transform examples
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/add-1.2.0
forward:
- !transform/shift-1.2.0 {offset: 1.0}
- !transform/scale-1.2.0 {factor: 2.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/bonne_equal_area-1.2.0 {direction: pix2sky, theta1: 45.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/compose-1.2.0
forward:
- !transform/shift-1.2.0 {offset: 1.0}
- !transform/scale-1.2.0 {factor: 2.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/compose-1.2.0
forward:
- !transform/shift-1.2.0
inverse: !transform/linear1d-1.0.0 {intercept: 2.0, slope: 1.0}
offset: 1.0
- !transform/scale-1.2.0 {factor: 2.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/compose-1.2.0
forward:
- !transform/shift-1.2.0
inverse: !transform/linear1d-1.0.0 {intercept: 2.0, slope: 1.0}
offset: 1.0
- !transform/scale-1.2.0 {factor: 2.0}
inverse: !transform/ortho_polynomial-1.0.0
coefficients: !core/ndarray-1.0.0
data:
- [1.0, 1.8, 2.6]
- [1.4, 2.2, 3.0]
datatype: float64
shape: [2, 3]
domain:
- [1, 5]
- [3, 6]
polynomial_type: chebyshev
window:
- [-1, 1]
- [-1, 1]
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/concatenate-1.2.0
forward:
- !transform/scale-1.2.0 {factor: 2.0}
- !transform/shift-1.2.0 {offset: 1.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/concatenate-1.2.0
forward:
- !transform/concatenate-1.2.0
forward:
- !transform/scale-1.2.0 {factor: 2.0}
- !transform/shift-1.2.0 {offset: 1.0}
- !transform/ortho_polynomial-1.0.0
coefficients: !core/ndarray-1.0.0
data:
- [1.0, 1.8, 2.6]
- [1.4, 2.2, 3.0]
datatype: float64
shape: [2, 3]
domain:
- [1, 5]
- [3, 6]
polynomial_type: chebyshev
window:
- [-1, 1]
- [-1, 1]
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/concatenate-1.2.0
forward:
- !transform/scale-1.2.0 {factor: 2.0}
- !transform/shift-1.2.0 {offset: 1.0}
inverse: !transform/ortho_polynomial-1.0.0
coefficients: !core/ndarray-1.0.0
data:
- [1.0, 1.8, 2.6]
- [1.4, 2.2, 3.0]
datatype: float64
shape: [2, 3]
domain:
- [1, 5]
- [3, 6]
polynomial_type: chebyshev
window:
- [-1, 1]
- [-1, 1]
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/remap_axes-1.2.0
mapping: [2, 1]
n_inputs: 4
...
>>> from astropy.io import fits
>>> from asdf import fits_embed
>>> hdul = fits.open("example_imaging.fits")
>>> hdul.info()
Filename: example_imaging.fits
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 775 ()
1 SCI 1 ImageHDU 71 (600, 550) float32
>>> tree = {"sci": hdul[1].data,
... "wcs": wcsobj}
>>> fa = fits.embed.AsdfInFits(hdul, tree)
>>> fa.write_to("imaging_with_wcs_in_asdf.fits")
>>> fits.info("imaging_with_wcs_in_asdf.fits")
Filename: example_with_wcs.asdf
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 775 ()
1 SCI 1 ImageHDU 71 (600, 550) float32
2 ASDF 1 BinTableHDU 11 1R x 1C [5086B]
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/identity-1.2.0 {n_dims: 3}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: gwcs.extension.GWCSExtension
software: !core/software-1.0.0 {name: gwcs, version: 0.13.0}
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
wcs: !<tag:stsci.edu:gwcs/wcs-1.0.0>
name: ''
steps:
- !<tag:stsci.edu:gwcs/step-1.0.0>
frame: !<tag:stsci.edu:gwcs/frame2d-1.0.0>
axes_names: [x, y]
axes_order: [0, 1]
axis_physical_types: ['custom:x', 'custom:y']
name: detector
unit: [!unit/unit-1.0.0 'pixel', !unit/unit-1.0.0 'pixel']
transform: !transform/compose-1.2.0
forward:
- !transform/compose-1.2.0
forward:
- !transform/concatenate-1.2.0
forward:
- !transform/shift-1.2.0 {name: crpix1, offset: -541.0}
- !transform/shift-1.2.0 {name: crpix2, offset: -506.5}
- !transform/affine-1.2.0
matrix: !core/ndarray-1.0.0
source: 0
datatype: float64
byteorder: little
shape: [2, 2]
name: pc_matrix
translation: !core/ndarray-1.0.0
source: 1
datatype: float64
byteorder: little
shape: [2]
- !transform/compose-1.2.0
forward:
- !transform/gnomonic-1.2.0 {direction: pix2sky, name: TAN}
- !transform/rotate3d-1.2.0 {name: crval, phi: 274.692661867318, psi: 180.0,
theta: -13.83266841423055}
- !<tag:stsci.edu:gwcs/step-1.0.0>
frame: !<tag:stsci.edu:gwcs/celestial_frame-1.0.0>
axes_names: [lon, lat]
axes_order: [0, 1]
axis_physical_types: [pos.eq.ra, pos.eq.dec]
name: icrs
reference_frame: !<tag:astropy.org:astropy/coordinates/frames/icrs-1.1.0>
frame_attributes: {}
unit: [!unit/unit-1.0.0 'deg', !unit/unit-1.0.0 'deg']
...
?BLK0 ?Ҍm?????,
?.????H
"?????ԭMl????ԭMl??#?H
"??>?BLK0J?6?K??y?u.#H?#ASDF BLOCK INDEX
%YAML 1.1
---
- 2580
- 2666
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev1151+g9f3858ed4.d20200427}
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
polynomial: !transform/polynomial-1.2.0
coefficients: !core/ndarray-1.0.0
data:
- [1.0, 1.7142857142857142, 1.8571428571428572, 2.0, 2.142857142857143]
- [1.1428571428571428, 2.2857142857142856, 2.4285714285714284, 2.571428571428571,
0.0]
- [1.2857142857142856, 2.7142857142857144, 2.8571428571428568, 0.0, 0.0]
- [1.4285714285714286, 3.0, 0.0, 0.0, 0.0]
- [1.5714285714285714, 0.0, 0.0, 0.0, 0.0]
datatype: float64
shape: [5, 5]
domain:
- [-1, 1]
- [-1, 1]
inverse: !transform/polynomial-1.2.0
coefficients: !core/ndarray-1.0.0
data:
- [1.0, 3.0]
- [2.0, 0.0]
datatype: float64
shape: [2, 2]
domain:
- [-1, 1]
- [-1, 1]
name: p2
window:
- [-1, 1]
- [-1, 1]
name: p1
window:
- [-1, 1]
- [-1, 1]
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/rotate2d-1.2.0
angle: !unit/quantity-1.1.0 {unit: !unit/unit-1.0.0 'arcsec', value: 23.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
scale: !transform/scale-1.2.0 {factor: 2.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/shift-1.2.0 {offset: 1.0}
...
#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
name: asdf, version: 2.6.0}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
- !core/extension_metadata-1.0.0
extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}
transform: !transform/subtract-1.2.0
forward:
- !transform/shift-1.2.0 {offset: 1.0}
- !transform/scale-1.2.0 {factor: 2.0}
...
@nden
Copy link
Author

nden commented Apr 24, 2020

All ASDF files were created in python by serializing the Python objects with code that looks like this:

from astropy.modeling.models import *
import asdf 

model = Shift(1) & Scale(2)
fa = asdf.AsdfFile()
fa.tree['transform'] = model
fa.write_to('concatenate.asdf')

All files have a header which helps with versioning and validation and looks like

#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {author: Space Telescope Science Institute, homepage: 'http://github.com/spacetelescope/asdf',
  name: asdf, version: 2.6.0}
history:
  extensions:
  - !core/extension_metadata-1.0.0
    extension_class: asdf.extension.BuiltinExtension
    software: !core/software-1.0.0 {name: asdf, version: 2.6.0}
  - !core/extension_metadata-1.0.0
    extension_class: astropy.io.misc.asdf.extension.AstropyAsdfExtension
    software: !core/software-1.0.0 {name: astropy, version: 4.1.dev982+gfd8e47bee.d20200421}

@nden
Copy link
Author

nden commented Apr 24, 2020

These are automatically created in alphabetical order. I think it helps to look at them n this order:

shift.asdf
scale.asdf
rotation_with_units.asdf
identity.asdf
drop_and_permite_axes.asdf
bon_projection.asdf
compose.asdf
compose_shift_with_custom_inverse.asdf
compose_with_custom_inverse.asdf
concatenate.asdf
concatenate_with_custom_inverse.asdf
concatenate_three_transforms.asdf
add_transforms.asdf
subtract_transforms.asdf
imaging_wcs.asdf

Example_writing_to_fits.py

@nden
Copy link
Author

nden commented Apr 29, 2020

Added polynomial_with_inverse example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment