
    R1i1                         d dl Zd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZmZmZ d dlmZ d	d
lmZ d dlmZ d Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+y)    N)api)DAY_Stau)earth_rotation_angle) true_equator_and_equinox_of_date)from_spherical	length_ofmxvrot_z)
GeocentricICRFITRF_to_GCRS2_GIGAPARSEC_AU)Star   )low_precision_ERA)assert_raisesc                  B   t        dddd      } t        dddd      }| |z
  }|j                  dk(  sJ |j                  dk(  sJ t        |t              sJ t        |j                  j                        d	k(  sJ t        |j                  j                        d
k(  sJ y )N)
         )(   2   <   r   i  )centertargetr         )           )	         )$   -   6   )
r   r   r   
isinstancer   tuplepositionauvelocityau_per_d)p0p1ps      a/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_positions.pytest_subtractionr4      s    	j*Qs	;B	gwq	5B
RA88s??88s??a$$$;...$$%555    c                  n    t        d      } t        d      }t        | j                  |            dk(  sJ y )Nr   r   r   r   r   r   z90deg 00' 00.0")r   strseparation_from)r0   r1   s     r3   test_separation_from_on_scalarr;      s3    	iB	iBr!!"%&*<<<<r5   c                      t        ddgddgddgf      } t        ddgddgddgf      }| j                  |      }|j                  }t        |      dk(  sJ |d   dk(  sJ |d   dk(  sJ y )Nr   r   r        V@g     f@r   r:   _degreeslenr0   r1   sepds       r3   (test_separation_from_on_two_array_valuesrE      s    	!uqeaU#	$B	"v!uqe$	%B


R
 CAq6Q;;Q44<<Q45==r5   c                  F   t        ddgddgddgf      } t        d      }| j                  |      }|j                  }t        |      dk(  sJ |d   dk(  sJ |d   dk(  sJ |j                  |       }|j                  }t        |      dk(  sJ |d   dk(  sJ |d   dk(  sJ y )Nr   r   )r   r   r   r   r>   r?   rB   s       r3   -test_separation_from_on_an_array_and_a_scalarrG   %   s    	!uqeaU#	$B	iB


R
 CAq6Q;;Q44<<Q44<< 

R
 CAq6Q;;Q44<<Q44<<r5   c                  2   t        d      } t        d      }t        d      }| j                  d       \  }}}|j                  d       \  }}}|j                  d       \  }	}
}|	j                  d   |j                  k(  sJ |	j                  d   |j                  k(  sJ |
j                  d   |j                  k(  sJ |
j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ y )Nr7   r8   )r   r   )r   r   )r   r   epochr   r   )r   ecliptic_latlondegreesr-   )r0   r1   p2lat0lon0	distance0lat1lon1	distance1lat2lon2	distance2s               r3   =test_J2000_ecliptic_coordinates_with_and_without_a_time_arrayrX   6   s   	gB	gB	  
B ..T.:D$	..T.:D$	..T.:D$	<<?dll***<<?dll***<<?dll***<<?dll***<<?ill***<<?ill***r5   c                     t         j                  j                         } | j                  d      }t	        d      }t	        d      }t	        d      }|j                  |      \  }}}|j                  |      \  }}	}
|j                  |      \  }}}|j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ |j                  d   |j                  k(  sJ |j                  d   |	j                  k(  sJ |j                  d   |j                  k(  sJ |j                  d   |
j                  k(  sJ y )Ni  r7   r8   rI   rJ   r   r   )r   load	timescaleutcr   rL   rM   r-   )tstr0   r1   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   s                 r3   ?test_dynamic_ecliptic_coordinates_with_and_without_a_time_arrayr_   J   s.   				B
tA	gB	gB	  
B ..Q.7D$	..Q.7D$	..Q.7D$	<<?dll***<<?dll***<<?dll***<<?dll***<<?ill***<<?ill***r5   c                     t         j                  j                         } | j                  ddd      }t	        d|      }|j                  t              \  }}}|j                  d      \  }}}t        |j                         |j                         z
        dk  sJ t        |j                         |j                         z
        dk  sJ t        |j                  |j                  z
        d	k  sJ t        |j                  |j                  |j                        \  }	}
}|j                  t              j                  \  }}}t        |	|z
        d	k  sJ t        |
|z
        d	k  sJ t        ||z
        d	k  sJ y )
N        )g?g333333?g?)r^   daterJ   gư>gV瞯<)r   rZ   r[   r\   r   frame_latlonr   radecabs
arcsecondsr-   r   radians	frame_xyz)r]   r^   r2   latlonrT   radecrW   x1y1z1x2y2z2s                  r3   %test_frame_rotations_for_mean_of_dateru   a   sK   				B
tRA]a A..)IJCi v.BYs~~#.."223d:::s~~"--/12T999y||ill*+e333  	ckk3;;GJBB=>AAJBBrBw<%rBw<%rBw<%r5   c                     t         dz  } t        j                  dd      }t        |j                  j
                  t         ddgz
        | k  sJ t        j                  dd      }t        |j                  j
                  dt         dgz
        | k  sJ d} t        j                  ddd      }t        |j                  j
                  g dz
        | k  sJ t        j                  ddd	      }t        |j                  j
                  g dz
        | k  sJ t        j                  j                         }|j                  t        j                        }t        j                  ddd
|      }t        |j                  j
                  g dz
        dkD  sJ |j                  |      \  }}}t        |j                        dk  sJ t        |j                        dk  sJ t        |j
                  d
z
        dk  sJ y )N缉ؗҜ<r   r"   gؗҬ<   Z   r   )r   r   r   )distance_aur   rJ   r7   g-q=gMg<)r   r   position_of_radecr	   r,   r-   rZ   r[   tt_jdB1950rf   rg   hoursrM   )epsilonr2   r]   rK   rm   rn   distances          r3   test_position_of_radecr   v   s   u$Ga#AQZZ]]na%;;<wFFFa#AQZZ]]a%;;<wFFFGb"a(AQZZ]]Y./'999b"!4AQZZ]]Y./'999				BHHSYYEaAU3AQZZ]]Y./%777e,BXrxx=5   s{{e###x{{Q%'''r5   c                      t        j                  dd      } t        | j                  j                  g dz
        dk  sJ t        j                  dd      } t        | j                  j                  g dz
        dk  sJ y )Nr   r7   rw   r"   r8   )r   position_from_radecr	   r,   r-   r2   s    r3   test_position_from_radecr      sf    1%AQZZ]]Y./%7771%AQZZ]]Y./%777r5   c            	         t         j                  j                         } | j                  dddddddg      }t	        j
                  ddg      j                  }t	        j
                  d	d	g      j                  }t        |||d
      \  }}t        |j                  |      }t        |j                  |      }|j                  \  }}|d d df   }|j                  d   |j                  d   z
  dz  t        z  }t        t        t	        j                  |      |z
        |      }|t	        j                  d||z  z         z  }||z
  }|t        z  }	t!        ||	z
        t!        |      z  }
d}|
|k  sJ y )Nra            3   r   r   r7   )r   r   r   Tg      8@gdy=)r   rZ   r[   r\   nparrayTr   r
   Mgastr   r   arctansqrtr   r	   )r]   r^   rvr0r1v0angvelactual_motionpredicted_motionrelative_erroracceptable_errors               r3   test_velocity_in_ITRF_to_GCRS2r      sZ    
			B
tQArAq6*A
)Y'(**A
)Y'(**AAq$'DAq 	ACCAACCASSFB	
1Q3B ffQi!&&)#t+c1F	U299V$v-.	3B"''!fVm#
$$BGMEz0@ @A!-01N ,,,,r5   c                  X    t        g d      } t        | j                  dz
        dk  sJ y )N)        g      ?r   g{tw?g|=)r   rg   
light_timer   s    r3   test_light_time_methodr      s(    _Aq||l*+e333r5   c                      t        j                  d      } d}t         j                  j                         }dgdgdgf|_        |j	                  ddd      }t         j
                  j                  d	d
d      }| d   }| d   }||z   j                  |      j                  |      j                         }|j                         \  }}	}
|j                  |z
  dz  dz  dz  }t        |      dk  sJ t        |      dk(  sJ y )N	de421.bspgy]r   gy[Y?gV6o?i  r    r"   gf6g\wbPg     B@)elevation_mEarthMoon   i  g     @@gQ?z<Apparent ICRS position and velocity at date t center=WGS84 latitude -22.9597 N longitude -67.7873 E elevation 5186.0 m target=301>)r   rZ   r[   polar_motion_tabler\   wgs84latlonatobserveapparenthadecr~   rg   repr)planetsexpected_har]   r^   toposearthmoonaharn   r   difference_mass               r3   
test_hadecr      s    hh{#GK				B EH:z9B
tQAIIZHEGE6?D	1%%d+446A	BXhh,2T9C?N~%%% 7	*  r5   c                  &   t         j                  j                         } | j                  t	        j
                  dd            }t        j                  d      }|d   t        j                  dd      z   }|j                  |      j                  dd	
      }|j                  |      \  }}}dt        |j                        z  }d}	t	        j                  |j                  |d|	      sJ t	        j                  |j                  dd|	      sJ y )Ni    yearr   r   r   longitude_degreeslatitude_degreesry      alt_degrees
az_degrees     v@gmn=rtolatol)r   rZ   r[   r\   r   arangeToposr   
from_altaz
cirs_radecr   ut1allcloser@   )
r]   str   postiotio_ratio_dec_eratols
             r3   test_cirs_erar      s    				B	RYYtT*	+Bhh{#G
'
SYYsS
SC &&*

B3

?C +FGQ
&rvv.
.CC;;v#C@@@;;w''3SAAAr5   c                  0   t         j                  j                         } | j                  d      }t        j                  d      }|d   t        j                  dd      z   }t        j                  dd      }|j                  |      j                  |d	      }|j                  |      \  }}}d
t        |j                        z  }	d}
t        j                  |j                  |	d|
      sJ t        j                  |j                  d|z
  d|
      sJ y )Nr   r   r   r   r   r   r   ry   r   r   gaտ=r   )r   rZ   r[   r\   r   r   r   r   r   r   r   r   r   r@   )r]   r   r   r   altmeridianmd_ramd_decr   r   r   s              r3   test_cirs_meridianr      s    				B	T	Bhh{#G
'
SYYsS
SC ))Ar
Cvvbz$$$EH  **2.E61
&rvv.
.CC;;u~~s3???;;vSsEEEr5   c                  n   t         j                  j                         } t        j                  d      d   }g dg dg dg}ddgdd	gd
dgg}d}t        ||      D ]  \  \  }}}\  }}	t	        |dz  |      }
| j                  |      }t               5  |j                  |      j                  |
      j                         j                  |      \  }}}d d d        t        j                  j                  |d|      sJ t        j                  j                  |	d|      rJ  y # 1 sw Y   VxY w)Nr   r   )     F@      G@ׂ% )g      i@g      6r   )r   r   i% g!QF@gqG@g-o i@g_E6gH|F@gi1
G@gϛe'>g      .@)ra_hoursdec_degrees)jdr   r   )r   rZ   r[   zipr   tdbr   r   r   r   r   r   r   r@   )r]   r   	test_datasofa_resultsr   ra_icrsdec_icrsr   ra_sofadec_sofassr   ra_cirsdec_cirsr   s                  r3   test_cirs_sofar   -  s*   				BHH[!'*E 	I 
/*	,-	?+L C;>y,;W7	!'8S#6GXGdNBVVsV^ #(88B<#7#7#;#D#D#F#Q#QRT#U GXq ! {{7++W3SIII{{8,,hSsKKK <X ! s   AD++D4	c                     t         j                  j                         } | j                  ddt	        dd      d      }|d   }t        j                  d      }|d   |d   |d	   }}}|j                  |      j                  |      }|j                  |      j                  j                  d
      }|dk(  sJ |j                  |      j                  d      }	|	dk(  sJ |j                  |      j                  |      }|j                  |      j                  j                  d
      }t        |      g dk(  sJ |j                  |      dz  j                  d      }	t        |	      g dk(  sJ y )Ni  r$      r!   r=   r   r   r   sunr   S@r   gףp=
?)
g     e@g33333e@g33333c@g33333Sb@g̼`@gl^@gy[@gX@gU@r   d   )
g\(\?g=
ףp=?g(\@g      @g.@g{G7@gzG@@g{GZE@g9J@g(\N@)r   rZ   r[   r\   ranger   r   phase_anglerM   roundfraction_illuminatedlist)
r]   r^   t1er   r   r   r2   r   is
             r3   )test_phase_angle_and_fraction_illuminatedr   I  sU   				B
tQaa(A	
2BAz1V9ah4ET"A	c""((+A99	s#))!,A99D!A	c""((+A7 7 7 7 7	
			$s	*11!4A7 , , , ,r5   c                  N   	 dd l } |  t        j                  j	                         }t        j                  g d      }|j                  ddd      }t        ||d      }|j                         }t        |      dk(  sJ |j                  J t        ||d      }|j                         }t        |      d	k(  sJ |j                  j                  d
k(  sJ t        ||d      }t        t              5  |j                         }d d d        y # t        $ r Y y w xY w# 1 sw Y   y xY w)Nr   r   i  r   r   )r^   r   z3<SkyCoord (ICRS): (x, y, z) in AU
    (1., 2., 3.)>r#   z~<SkyCoord (GCRS: obstime=2459582.5, obsgeoloc=(0., 0., 0.) m, obsgeovel=(0., 0., 0.) m / s): (x, y, z) in AU
    (1., 2., 3.)>z2022-01-03T00:00:00.000)astropyImportErrorr   rZ   r[   r   r   ttr   to_skycoordr9   obstimefitsr   NotImplementedError)r   r]   r   r^   r2   r   s         r3   test_astropy_conversionr  ^  s    					B
A
dAqAQ!AA	Aq6KKKK99Q!C A	Aq6	M   99>>6666Q!AA	*	+MMO 
,	+3   	2 
,	+s   D 2D	DDD$),numpyr   skyfieldr   skyfield.constantsr   r   skyfield.earthlibr   skyfield.framelibr   skyfield.functionsr   r	   r
   r   skyfield.positionlibr   r   r   r   skyfield.starlibr   fixesr   assayr   r4   r;   rE   rG   rX   r_   ru   r   r   r   r   r   r   r   r   r   r   r5   r3   <module>r     s      ) 2 > D D P P ! $ 6=
"+(+. *(48$-L4@B,FjL8,*r5   