apple

Finished
1717from .cirs import CIRS
1818from .itrs import ITRS
1919from .equatorial import TEME, TETE
20from .utils import get_polar_motion, get_jd12, EARTH_CENTER
20from .altaz import AltAz
21from .hadec import HADec
22from .utils import get_polar_motion, get_jd12, EARTH_CENTER, PIOVER2
23from ..matrix_utilities import rotation_matrix, matrix_transpose
2124
2225# # first define helper functions
2326
2427
28def itrs_to_observed_mat(observed_frame):
29 """Create transformation matrix from ITRS to observed frame (AltAz or HADec).
30
31 Parameters
32 ----------
33 observed_frame : AltAz or HADec
34 The target observed frame
35
36 Returns
37 -------
38 mat : ndarray
39 3x3 rotation matrix
40 """
41 from .altaz import AltAz
42 from .hadec import HADec
43
44 lon, lat, height = observed_frame.location.to_geodetic('WGS84')
45 elong = lon.to_value(u.radian)
46
47 if isinstance(observed_frame, AltAz):
48 # form ITRS to AltAz matrix
49 elat = lat.to_value(u.radian)
50 # AltAz frame is left handed
51 minus_x = np.eye(3)
52 minus_x[0][0] = -1.0
53 mat = (minus_x
54 @ rotation_matrix(PIOVER2 - elat, 'y', unit=u.radian)
55 @ rotation_matrix(elong, 'z', unit=u.radian))
56
57 else:
58 # form ITRS to HADec matrix
59 # HADec frame is left handed
60 minus_y = np.eye(3)
61 minus_y[1][1] = -1.0
62 mat = (minus_y
63 @ rotation_matrix(elong, 'z', unit=u.radian))
64 return mat
65
66
2567def teme_to_itrs_mat(time):
2668 # Sidereal time, rotates from ITRS to mean equinox
2769 # Use 1982 model for consistency with Vallado et al (2006)
272314 return teme_frame.realize_frame(newrepr)
273315
274316
317@frame_transform_graph.transform(FunctionTransformWithFiniteDifference, ITRS, AltAz)
318@frame_transform_graph.transform(FunctionTransformWithFiniteDifference, ITRS, HADec)
319def itrs_to_observed(itrs_coo, observed_frame):
320 """Transform ITRS coordinates to observed frame (AltAz or HADec).
321
322 This function stays entirely within the ITRS and converts between
323 ITRS and AltAz/HADec coordinates. ITRS positions are treated as time
324 invariant - the obstime of the output frame is simply adopted.
325
326 Parameters
327 ----------
328 itrs_coo : ITRS
329 Input ITRS coordinates
330 observed_frame : AltAz or HADec
331 Target observed frame
332
333 Returns
334 -------
335 observed_frame
336 Coordinates in the target observed frame
337 """
338 # form the Topocentric ITRS position
339 topocentric_itrs_repr = (itrs_coo.cartesian
340 - observed_frame.location.get_itrs().cartesian)
341 rep = topocentric_itrs_repr.transform(itrs_to_observed_mat(observed_frame))
342 return observed_frame.realize_frame(rep)
343
344
345@frame_transform_graph.transform(FunctionTransformWithFiniteDifference, AltAz, ITRS)
346@frame_transform_graph.transform(FunctionTransformWithFiniteDifference, HADec, ITRS)
347def observed_to_itrs(observed_coo, itrs_frame):
348 """Transform observed coordinates (AltAz or HADec) to ITRS.
349
350 This function stays entirely within the ITRS and converts between
351 AltAz/HADec and ITRS coordinates.
352
353 Parameters
354 ----------
355 observed_coo : AltAz or HADec
356 Input observed coordinates
357 itrs_frame : ITRS
358 Target ITRS frame
359
360 Returns
361 -------
362 itrs_frame
363 Coordinates in the target ITRS frame
364 """
365 # form the Topocentric ITRS position
366 topocentric_itrs_repr = observed_coo.cartesian.transform(matrix_transpose(
367 itrs_to_observed_mat(observed_coo)))
368 # form the Geocentric ITRS position
369 rep = topocentric_itrs_repr + observed_coo.location.get_itrs().cartesian
370 return itrs_frame.realize_frame(rep)
371
372
275373# Create loopback transformations
276374frame_transform_graph._add_merged_transform(ITRS, CIRS, ITRS)
277375frame_transform_graph._add_merged_transform(PrecessedGeocentric, GCRS, PrecessedGeocentric)
Test NameStatus
astropy/coordinates/tests/test_intermediate_transformations.py::test_itrs_topo_to_altaz_with_refraction
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_itrs_topo_to_hadec_with_refraction
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_itrs_topo
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_itrs_straight_overhead
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_bothroutes[testframe0]
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_bothroutes[testframe1]
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_bothroutes[testframe2]
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_bothroutes[testframe3]
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_bothroutes[testframe4]
Fail
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrs[icoo0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrs[icoo1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrs_dist_diff[gframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrs_dist_diff[gframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_to_altaz
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_to_hadec
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_itrs
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_itrs
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_cirs
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_hadec
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_precessed_geocentric
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_precessed_geocentric_different_obstime
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_sunish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_sunish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_sunish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_sunish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_sunish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_moonish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_moonish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_moonish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_moonish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_altaz_moonish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_moonish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_moonish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_moonish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_moonish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_moonish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_nodist[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_nodist[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_nodist[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_nodist[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_altaz_nodist[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_icrs_moonish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_icrs_moonish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_icrs_moonish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_icrs_moonish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_cirs_icrs_moonish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_icrs_moonish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_icrs_moonish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_icrs_moonish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_icrs_moonish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_icrs_moonish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrscirs_sunish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrscirs_sunish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrscirs_sunish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrscirs_sunish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_gcrscirs_sunish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_altaz_moonish[testframe0]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_altaz_moonish[testframe1]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_altaz_moonish[testframe2]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_altaz_moonish[testframe3]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_icrs_altaz_moonish[testframe4]
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_gcrs_self_transform_closeby
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_teme_itrf
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_precessedgeocentric_loopback
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_teme_loopback
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_tete_transforms
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_straight_overhead
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::test_aa_high_precision_nodata
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::TestGetLocationGCRS::test_get_gcrs_posvel
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::TestGetLocationGCRS::test_tete_quick
Pass
astropy/coordinates/tests/test_intermediate_transformations.py::TestGetLocationGCRS::test_cirs_quick
Pass
Loading...
Ridges.AIRidges.AI

© 2025 Ridges AI. Building the future of decentralized AI development.