def test_hgc_frame_to_wcs(): frame = HeliographicCarrington(obstime='2013-10-28') result_wcs = solar_frame_to_wcs_mapping(frame) assert isinstance(result_wcs, WCS) assert result_wcs.wcs.ctype[0] == 'CRLN-TAN' assert result_wcs.wcs.cunit[0] == 'deg'
def test_self_observer(): frame = HeliographicCarrington(0 * u.deg, 0 * u.deg, 1 * u.au, observer="self", obstime='2013-10-28') wcs = solar_frame_to_wcs_mapping(frame) assert wcs.wcs.aux.hgln_obs is None assert u.allclose(wcs.wcs.aux.hglt_obs, frame.lon.to_value(u.deg)) assert u.allclose(wcs.wcs.aux.crln_obs, frame.lon.to_value(u.deg)) assert u.allclose(wcs.wcs.aux.dsun_obs, frame.radius.to_value(u.m))
def test_hgc_frame_to_wcs(): frame = HeliographicCarrington(obstime='2013-10-28', rsun=690 * u.Mm) result_wcs = solar_frame_to_wcs_mapping(frame) assert isinstance(result_wcs, WCS) assert result_wcs.wcs.ctype[0] == 'CRLN-TAN' assert result_wcs.wcs.cunit[0] == 'deg' assert result_wcs.wcs.dateobs == '2013-10-28T00:00:00.000' assert result_wcs.wcs.aux.rsun_ref == frame.rsun.to_value(u.m) new_frame = solar_wcs_frame_mapping(result_wcs) assert new_frame.rsun == frame.rsun # Test a frame with no obstime frame = HeliographicCarrington() result_wcs = solar_frame_to_wcs_mapping(frame) assert isinstance(result_wcs, WCS) assert result_wcs.wcs.ctype[0] == 'CRLN-TAN' assert result_wcs.wcs.cunit[0] == 'deg' assert result_wcs.wcs.dateobs == ''
def test_wcs_frame_mapping_observer_hgc_self(): # Test whether a WCS with HGC coordinates for the observer location uses observer="self" wcs = WCS(naxis=2) wcs.wcs.ctype = ['SOLX', 'SOLY'] wcs.wcs.dateobs = '2001-01-01' wcs.wcs.aux.crln_obs = 10 wcs.wcs.aux.hglt_obs = 20 wcs.wcs.aux.dsun_obs = 1.5e11 # This frame will have the observer location in HGS result = solar_wcs_frame_mapping(wcs) # We perform the desired transformation using observer="self" hgc_obs = HeliographicCarrington(wcs.wcs.aux.crln_obs * u.deg, wcs.wcs.aux.hglt_obs * u.deg, wcs.wcs.aux.dsun_obs * u.m, obstime=wcs.wcs.dateobs, observer="self") hgs_obs = hgc_obs.transform_to( HeliographicStonyhurst(obstime=hgc_obs.obstime)) assert_quantity_allclose(result.observer.lon, hgs_obs.lon) assert_quantity_allclose(result.observer.lat, hgs_obs.lat) assert_quantity_allclose(result.observer.radius, hgs_obs.radius)
def test_set_wcs_aux(): wcs = WCS(naxis=2) observer = Helioprojective(observer="earth", obstime='2013-10-28').observer _set_wcs_aux_obs_coord(wcs, observer) assert wcs.wcs.aux.hgln_obs == 0 assert u.allclose(wcs.wcs.aux.hglt_obs, 4.7711570596394015) assert u.allclose(wcs.wcs.aux.dsun_obs, 148644585949.4918) assert wcs.wcs.aux.crln_obs is None wcs = WCS(naxis=2) observer = observer.transform_to(HeliographicCarrington(observer=observer)) _set_wcs_aux_obs_coord(wcs, observer) assert wcs.wcs.aux.hgln_obs is None assert u.allclose(wcs.wcs.aux.hglt_obs, 4.7711570596394015) assert u.allclose(wcs.wcs.aux.dsun_obs, 148644585949.4918) assert u.allclose(wcs.wcs.aux.crln_obs, 326.05139910339886) observer = observer.transform_to(Heliocentric(observer=observer)) with pytest.raises(ValueError, match='obs_coord must be in a Stonyhurst or Carrington frame'): _set_wcs_aux_obs_coord(wcs, observer)
def test_observer_self_get(): hgc_noobstime = HeliographicCarrington(observer="self") assert hgc_noobstime.observer == "self" hgc_obstime = HeliographicCarrington(observer="self", obstime="2001-01-01") assert hgc_obstime.observer == "self"
def test_hgc_wrapping_360(): hpc1 = HeliographicCarrington(350*u.deg, 10*u.deg) assert_quantity_allclose(hpc1.lon, 350*u.deg) assert_quantity_allclose(hpc1.lon.wrap_angle, 360*u.deg)