
    R1ie                         d Z 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 d Zd	Zd
ZdZde
z  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)z1Accuracy tests against data pulled from HORIZONS.    N)max)apiframelib)Topos)AU_M)position_angle_ofc                     t         j                  j                  t         j                  j                  t              d|       S )Ndata)ospathjoindirname__file__)filenames    h/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_against_horizons.py
_data_pathr   
   s&    77<<168DD    g)QΠE>g߼xV42?g!tk>g      ?c               #   L   K   t         j                  j                          y w)N)r   load	timescale r   r   tsr      s     
((


s   "$c                     t        | d      st        |d      rt        t        | |z
              |k  sJ y t        | |z
        |k  sJ y )Nshape)hasattrr   abs)valueexpected_valueepsilons      r   comparer       sJ    ug'.'"B3u~-./7:::5>)*g555r   c           	      (   t        j                  d      }|d   }|d   j                  | j                  ddddd            j	                  |      }|j                         \  }}}t        |j                  dd       t        |j                  d	d       y )
N	de421.bspzjupiter barycentersun     r   gh|?5?MbP?g|a2Ub@)r   r   atutcobserveecliptic_latlonr    degrees)r   ejupastrometrichlathlonds          r   test_ecliptic_framer2      s}    A
 
!CE(++bffT1aA67??DK//1MD$DLL%'DLL(E*r   c           
      N   t        j                  d      }|d   }|d   j                  | j                  dddddd            j	                  |      }|j                         }|j                  d	
      \  }}}t        |j                  dd       t        |j                  dd       y )Nr"   zmars barycenterearthi  r%         r   dateepochgW^Mk?h㈵>gn@-C6*?	r   r   r'   r(   r)   apparentr*   r    r+   )r   r,   marsr.   r=   r/   r0   r1   s           r   test_ecliptic_for_epoch_of_dater?   #   s    ADG*--tQAq! <=EEdKK##%H,,6,:MD$DLL)W-DLL+v.r   c           
         t        j                  d      }|d   }|d   j                  | j                  dddddgd	d	            j	                  |      }|j                         }|j                  d
      \  }}}t        |j                  d	   dd       t        |j                  d   dd       t        |j                  d	   dd       t        |j                  d   dd       y )Nr"   r#   r4   i  
   r%         r   r7   r8   g{;ӕ	?r:   gF@?gt:ڂog@r;   gZDg@r<   )r   r,   r#   r.   r=   r/   r0   r1   s           r   %test_ecliptic_for_epoch_of_date_arrayrD   ,   s    A
E(CG*--tRQFAq ABJJ3OK##%H,,6,:MD$DLLOY0DLLOY0DLLO[&1DLLO[&1r   c           	         t        j                  d      }|d   j                  | j                  ddddd            j	                  |d         }|j                  t        j                        \  }}}t        |j                  |j                         t        |j                  dd       t        |j                  d	d       y )
Nr"   r4   r$   r%   r   moongnض(T@giUMu?gF2Ɉ2@)r   r   r'   r(   r)   frame_latlonr   equatorial_B1950_frameprint_degreesr+   r    )r   r,   r.   decrar1   s         r   test_fk4_framerM   7   s    AG*--tQ1a 89AA!F)LK))(*I*IJJCQ	"++s{{#BKK7+CKK7+r   c           	         t        j                  d      }|d   j                  | j                  ddddd            j	                  |d         }|j                  t        j                        \  }}}t        ||j                  ||j                         t        |j                  dd       t        |j                  d	d       y )
Nr"   r4   r$   r%   r   rF   gq89 g{Gzt?g^gg@)r   r   r'   r(   r)   rG   r   galactic_framerI   r+   r    )r   r,   r.   glatglonr1   s         r   test_galactic_framerR   ?   s    AG*--tQ1a 89AA!F)LK,,X-D-DEMD$	$dDLL1DLL)U+DLL*e,r   c                 R   t        j                  t        d            }|d   |d   z
  j                  | j	                  d            }t        |       t        |j                  j                  g ddt        z         t        |j                  j                  g dd	t        z         y )
Njup310-2053-10-08.bspcallistor4   g   @BAjd)gf/g$]gv{Sr&   )gc`?g)"L.Ώg6Z{r:   )r   	load_filer   r'   tdbrI   r    positionaumetervelocityau_per_d)r   r,   as      r   test_callisto_geometryr`   G   s    j!89:A	
:7	#'')(<=A	!HAJJMMNem AJJMor   c                    t        j                  t        d            }|d   j                  | j	                  d            j                  |d         }|j                         \  }}}t        |j                  ddt        z         t        |j                  ddt        z         t        |j                  d	d
t        z         y )NrT   r4   gz@BArV   rU   gX}%k@r&   g0`+gKv@>@g?)r   rX   r   r'   ttr)   radecr    rJ   	arcsecondr+   r[   r\   )r   r,   r_   rL   rK   distances         r   test_callisto_astrometricrf   R   s    j!89:A 	
'
bee1e23;;AjMJA	BXBKKei&78CKKei&78HKK)3;7r   c                  b   t        j                  t        d            } t         j                  j	                  d      }dgdgdgf|_        |j                  ddd	      }| d
   t        dd      z   }| d
   |z
  j                  |      }d}t        |j                  j                  g dd|z         y )Nzjup310-2015-03-02.bspP@delta_t        fbal?G)s?        r4   *      g8@iro   g8@r&   )g`2,fg!mgE)gffffff?)r   rX   r   r   r   polar_motion_tablerY   r   r'   r    rZ   km)r,   r   tbostonr_   r\   s         r   test_boston_geometryry   \   s    j!89:A			$9		:B EH:z9B
tQAwZ%??F	
7f	  #AEAJJMMN	Ekr   c                  f   t        j                  t        d            } t         j                  j	                  d      }dgdgdgf|_        |j                  ddd	      }| d
   t        dd      z   }| d   |z
  j                  |      }t        |j                  j                  g ddt        z         y )Nde430-2015-03-02.bsprh   ri   rk   rl   rm   rn   ro   rp   r4   rq   rt   rF   )gUg{a?gN@<iF?g?)r   rX   r   r   r   ru   rY   r   r'   r    rZ   r[   r\   )r,   r   rw   rx   r_   s        r   test_moon_from_boston_geometryr|   h   s    j!789A			$9		:B EH:z9B
tQAwZ%??F	
6V	"AAJJMML	Ekr   c                     t        j                  t        d            } t         j                  j	                  d      }dgdgdgf|_        |j                  ddd	      }| d
   t        dd      z   }|j                  |      j                  | d         }|j                         \  }}}t        |j                  ddt        z         t        |j                  ddt        z         t        |j                  ddt         z         y )Nr{   rh   ri   rk   rl   rm   rn   ro   rp   r4   rq   rt   rF   gT^^@r&   gCsFZ-@gw^e?g?)r   rX   r   r   r   ru   rY   r   r'   r)   rc   r    rJ   rd   r+   r[   r\   )r,   r   rw   rx   r_   rL   rK   re   s           r   !test_moon_from_boston_astrometricr~   s   s    j!789A			$9		:B EH:z9B
tQAwZ%??F		!QvY'A	BXBKKei&78CKKUY%67HKK)4%<8r   c                    | j                  ddd      }t        j                  t        d            }|d   t	        dd      z   }|j                  |      }|j                  |d	         }|j                  |d
         }t        |j                  d      |j                  d            }t        |j                  dz
        dk  sJ t        |       t        |j                  d      |j                  d            }t        |       y )Ni  rA   	   rT   r4   rt   rq   )longitude_degreeslatitude_degreesjupiterior7   r8   g~jZr@gMb`?)r(   r   rX   r   r   r'   r)   r   rc   r   r+   rI   r*   )r   rw   ephrx   bjir_   s           r   test_position_angle_from_bostonr      s    
tRA
--
#:;
<C\EN3AC CF 			!A			#i.!A			#d)A!'''/v1FGAqyy7"#e+++	!H!++&+9++&+9	;A	!Hr   )__doc__r   numpyr   skyfieldr   r   skyfield.apir   skyfield.constantsr   skyfield.trigonometryr   r   
one_secondrd   ra_arcsecondr\   r   r    r2   r?   rD   rM   rR   r`   rf   ry   r|   r~   r   r   r   r   <module>r      s{    7 	  "  # 3E &
	)d
6+/	2,-	8
	
9r   