PyEphem Curso de Python Astronómico César Husillos Rodrı́guez IAA-CSIC Mayo de 2015 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 1 / 64 Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 2 / 64 ¿Qué es PyEphem? Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 3 / 64 ¿Qué es PyEphem? ¿Qué es y para qué sirve? Es un paquete que contiene variables, constantes y funciones que permiten programar cálculos astronómicos básicos con Python. Con PyEphem es posible determinar La posición de los cuerpos mayores del sistema solar y de sus lunas. También hay información sobre algunos asteorides, cometas y satélites artificales. La constelación asociada a la posición del cuerpo de interés. Tránsitos, salidas y puestas de cualquier objeto dada sus coordenadas en un instante concreto, para cualquier dı́a. Distancia angular entre dos objetos. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 4 / 64 Antes de empezar... Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 5 / 64 Antes de empezar... Requisitos previos Software y versiones La versión estable de PyEphem a fecha de hoy es la 3.7.5.3. Para instalar en LINUX, se recomienda ejecutar el comando sudo pip install pyephem Si no tiene instalado el comando pip, puede hacerlo ejecutando la instrucción sudo apt-get install python-pip En versiones de Python 2.7.9 y posteriores, y en Python 3.4, ya viene preinstalado. . César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 6 / 64 Caja de herramientas Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 7 / 64 Caja de herramientas Estructura del módulo Clases principales Los tipos de datos (clases) más importantes de este paquete son: Cuerpo (Body) Observador (Observer) Fecha (Date) Las operaciones más frecuentes serán las llevadas a cabo entre Ángulos (Angle) Fechas (Date) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 8 / 64 Caja de herramientas Fechas Generalidades PyEphem tiene su propio tipo de datos para las fechas. Funciones del módulo que las generan: d = ephem . Date ( ’ 2015/5/22 13:23 ’) d = ephem . now () Las fechas se almacenan internamente como float. Se emplea el Calendario Juliano1 para fechas antiguas y Calendario Gregoriano2 para las modernas. 1 2 Introducido por Julio César el año 46 a.C. Introducido por el Papa Gregorio XIII, en octubre de 1582 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 9 / 64 Caja de herramientas Fechas Generalidades Para crear una fecha, podemos pasar a la función Date(param), números decimales, cadenas de texto o tuplas. El tiempo considerado es siempre tiempo universal. >>> >>> >>> >>> >>> >>> >>> >>> d d d d d d d d = = = = = = = = ephem . Date ( 35 49 7. 71 97 91 66 67 ) ephem . Date ( ’ 1 9 9 7 / 3 / 1 0 . 2 1 9 7 9 1 6 6 6 7 ’) ephem . Date ( ’ 1997/3/10 05.275 ’) ephem . Date ( ’ 1997/3/10 05:16.5 ’) ephem . Date ( ’ 1997/3/10 05:16:30 ’) ephem . Date ( ’ 1997/3/10 05:16:30.0 ’) ephem . Date ((1997 , 3 , 10.2197916667)) ephem . Date ((1997 , 3 , 10 , 5 , 16 , 30.0)) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 10 / 64 Caja de herramientas Fechas Generalidades Dada una fecha, podemos extraer la información sobre el año, mes, dı́a, hora, minuto y segundo. Las funciones disponibles para una fecha de PyEphem son datetime() Devuelve un objeto de tipo datetime (fecha y hora) del módulo datetime de la librerı́a estándar de Python. triple() Devuelve una tupla (a~ no, mes, dı́a), con el dı́a como float. tuple() Devuelve una tupla (a~ no, mes, dı́a, hora, minuto, segundo), con segundo como float. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 11 / 64 Caja de herramientas Fechas Generalidades >>> d = ephem . Date ((2015 , 5 , 22 , 5 , 16 , 30.0)) >>> d . datetime () datetime . datetime (2015 , 5 , 22 , 5 , 16 , 30) >>> obj = d . datetime () >>> obj . year 1997 >>> obj . month , obj . day , obj . hour , obj . minute , obj . second (5 , 22 , 5 , 16 , 30) >>> d . triple () (2015 , 5 , 2 2 .2 1 9 79 1 6 66 6 7 00 6 2 ) >>> d . tuple () (2015 , 5 , 22 , 5 , 16 , 30 .0 00 00 029 33 66 61 ) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 12 / 64 Caja de herramientas Fechas Generalidades Las fechas almacenan el número de dı́as que han transcurrido desde el mediodı́a (tiempo universal) del último dı́a del año 1889. Podemos realizar operaciones con fechas sumando o restando dı́as. >>> d = ephem . Date ( ’ 2015/5/22 13:23 ’) >>> print d 2015/5/22 13:23:00 >>> anterior = ephem . Date ( d - 1) >>> print anterior 2015/5/21 13:23:00 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 13 / 64 Caja de herramientas Fechas Generalidades Para operaciones con fracciones de dı́as, se recomienda usar las constantes disponibles ephem.hour ephem.minute ephem.second >>> d = ephem . Date ( ’ 2015/5/22 13:23 ’) >>> print d 2015/5/22 13:23:00 >>> print ephem . Date ( d - ephem . hour ) 2015/5/22 12:23:00 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 14 / 64 Caja de herramientas Ángulos Generalidades Internamente Se almacenan como números de tipo float. Vienen dados en radianes. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 15 / 64 Caja de herramientas Ángulos Generalidades PyEphem dispone de dos funciones para crear ángulos 1 degrees(), que devuelve el ángulo en grados. 2 hours(), que lo devuelve en horas. >>> print ephem . degrees ( ephem . pi / 4) 45:00:00.0 >>> deg = ephem . degrees ( ’ 0.7854 ’) >>> deg = ephem . degrees ( ’ 45:00 ’) >>> deg = ephem . degrees ( ’ 45:00:00 ’) >>> deg = ephem . degrees ( ’ 45:00:00.0 ’) >>> print ephem . hours ( ephem . pi / 12) 1:00:00.00 >>> hours = ephem . hours ( ’ 0.2618 ’) >>> hours = ephem . hours ( ’ 1:00 ’) >>> hours = ephem . hours ( ’ 1:00:00 ’) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 16 / 64 Caja de herramientas Ángulos Generalidades Sólo cuando se imprimen mediante llamada a la función str o mediante modificador de formato %s, se muestran en formato de texto. >>> a = ephem . degrees ( ephem . pi ) >>> print ( " como texto : %s , como float : %f " % (a , a )) como texto : 180:00:00.0 , como float : 3.141593 >>> b = ephem . hours ( ephem . pi ) >>> print ( " como texto : %s , como float : %f " % (b , b )) como texto : 12:00:00.00 , como float : 3.141593 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 17 / 64 Caja de herramientas Ángulos Operaciones Podemos realizar cualquier operación que se nos ocurra. Puede que nos salgamos del rango [0, 2π) tras operar. Los ángulos normalizados están disponibles en los atributos norm Devuelve el ángulo normalizado entre [0, 2π) znorm Devuelve el ángulo normalizado entre [−π, π) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 18 / 64 Caja de herramientas Ángulos Operaciones >>> a = ephem . pi / 3 >>> deg_a = ephem . degrees ( a ) >>> print ’ %s , %s , %s ’ % ( deg_a , deg_a . norm , \ deg_a . znorm ) 120:00:00.0 , 120:00:00.0 , 120:00:00.0 >>> import math >>> b = math . radians (253.15) >>> deg_b = ephem . degrees ( b ) >>> print ’ %s , %s , %s ’ % ( deg_b , deg_b . norm , \ deg_b . znorm ) 253:09:00.0 , 253:09:00.0 , -106:51:00.0 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 19 / 64 Caja de herramientas Ángulos Operaciones Código erróneo >>> deg_c = deg_a + deg_b >>> deg_a , deg_b , deg_c (2.0943951023931953 , 4.418301001423646 , 6 .5 126 96 10 38 16 84 >>> print ’ %s , %s , %s ’ % ( deg_c , deg_c . norm , \ deg_c . znorm ) ... AttributeError : ’ float ’ object has no attribute ’ norm ’ César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 20 / 64 Caja de herramientas Ángulos Operaciones Código correcto >>> deg_c = ephem . degrees ( deg_a + deg_b ) >>> deg_a , deg_b , deg_c (2.0943951023931953 , 4.418301001423646 , 6 .5 126 96 10 38 16 84 >>> print ’ %s , %s , %s ’ % ( deg_c , deg_c . norm , \ deg_c . znorm ) 373:09:00.0 , 13:09:00.0 , 13:09:00.0 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 21 / 64 Caja de herramientas Observadores Generalidades Un observador representa el punto en la superficie terrestre desde la que se observa cualquier objeto. Cuando se proporciona, se emplea para el cálculo de posiciones celestes. Se crea mediante una función sin parámetros. >>> osn = ephem . Observer () Se establecen las propiedades de este observador a posteriori. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 22 / 64 Caja de herramientas Observadores Generalidades Propiedades del observador Parámetro date temp pressure elevation lat lon epoch Descripción Instante de observación Temperatura Presión Atm. Altitud de observación Latitud Longitud Época de observación Unidades s C mBar m (a.s.l.) deg deg Valor por defecto ahora 15 1010 0 0 0 J2000 Esta información es necesaria para corregir la posición de los cuerpos cuando están cerca del horizonte3 . 3 Por efecto de la mayor masa de aire y la dispersión atmosférica César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 23 / 64 Caja de herramientas Cuerpos (Bodies) Generalidades Esta clase representa la posición de un objeto en el cielo. PyEphem contiene información sobre los cuerpos mayores del sistema solar, sus lunas, algunos asteroides y satélites artificiales y estrellas. Si el objeto de estudio está en la base de datos de PyEPhem, basta crear el objeto de la forma que se muestra >>> m = ephem . Mars () >>> m . name ’ Mars ’ César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 24 / 64 Caja de herramientas Cuerpos (Bodies) Generalidades Si el cuerpo no forma parte de los objetos conocidos, bastarán las coordenadas para generar un objeto body con el que poder trabajar. >>> >>> >>> >>> star = ephem . FixedBody () star . _ra = 123.123 star . _dec = 45.45 star . _epoch = ’ 2000 ’ César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 25 / 64 Cálculo de coordenadas celestes Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 26 / 64 Cálculo de coordenadas celestes Coordenadas celestes Un poco de teorı́a PyEphem emplea la librerı́a libastro que contiene funciones astronómicas para determinar la posición de un objeto con gran precisión. El proceso de determinación de coordenadas es el siguiente: 1 Dado un cuerpo, PyEphem copia y recalcula las coordenadas precesándolas hasta la época solicitada ( por defecto J2000). Lo guarda en las variables a ra y a dec, de Astrometric Geocentric Position. 2 Después ajusta la posición corrigiendo posibles deflexiones relativistas por efecto de gravedad de objetos masivos cerca de la linea de visión. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 27 / 64 Cálculo de coordenadas celestes Cálculo de coordenadas celestes Un poco de teorı́a 1 Seguidamente, ajusta la posición del cuerpo por efecto de la nutacion. Almacena el resultado en las variables g ra y g dec, de Apparent Geocentric Position. 2 Si se le da un observador 1 2 Corrije de efectos de paralaje (sitúa al observador sobre la superficie de la Tierra) Corrije efectos dispersivos de la atmósfera (cerca del horizonte). El resultado se guarda en las variables ra y dec, llamadas Apparent Topocentric Position, y en alt y az, que muestran la misma posición pero medidas desde el horizonte. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 28 / 64 Cálculo de coordenadas celestes Coordenadas celestes Determinación de las coordenadas de un cuerpo Una vez establecido el cuerpo a observar y (opcionalmente) la posición del observador, se realizan cálculos para obtener las coordenadas celestes. Se usa la función compute([Date|Observer]). Tiene dos variantes dependiendo de si se le pasa una fecha como parámetro o un observador. Si no se pone ningún parámetro, se toma la fecha actual (ephem.now()) Como parámetro opcional, la época de observación. compute(Observer|Date[, epoch=’J2000’]) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 29 / 64 Cálculo de coordenadas celestes Coordenadas celestes Compute(Date) compute(Date[, epoch=’2000’]) Determina los siguientes parámetros: Parámetro a ra a dec g ra, ra g dec, dec elong mag size radius circumpolar neverup Descripción Ascención geocéntrica astrométrica (época dada) Declinación geocéntrica astrométrica (época dada) Ascención reacta geocéntrica aparente (época dada por la fecha) Declinación geocéntrica aparente (época dada por la fecha) Elongación (ángulo respecto al Sol) Magnitud Diámetro en segundos de arco Tamaño (radio angular) True si permanece por encima del horizonte True si permanece bajo el horizonte César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 30 / 64 Cálculo de coordenadas celestes Coordenadas celestes Compute(Observer) compute(Observer[, epoch=’2000’]) Usa la fecha y la época del observador. Determina los mismos parámetros que el caso anterior. Calcula las coordenadas en el cielo (4 nuevos parámetros) ra (ascensión recta), dec (declinación) az (azimut), alt (altura) donde (ra, dec) son coordenadas topocéntricas aparentes, y (ra, dec) marcan la posición aparente relativa al horizonte. Estas coordenadas incluyen las correcciones ligadas a la dispersión atmosférica. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 31 / 64 Cálculo de coordenadas celestes Cálculo de coordenadas celestes Observador en el Observatorio de Sierra Nevada (OSN) >>> osn = ephem . Observer () >>> osn . elevation = 2896 >>> osn . lat = 37.0642 # N 37 d 03 m 51 s >>> osn . lon = -3.3847 # W 03 d 23 m 05 s >>> v = ephem . Venus ( osn ) # UT selected : now !! >>> print ( ’ %s %s ’ % ( v . ra , v . dec )) 6:17:12.97 26:01:56.2 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 32 / 64 Cálculo de coordenadas celestes Cálculo de coordenadas celestes Observador en el Observatorio de Sierra Nevada (OSN) >>> osn . date = ephem . Date ( ’ 2015/5/23 02:00 ’) # UT ( localtime --> 02:00 AM ) >>> v = ephem . Venus ( osn ) >>> print ( ’ %s %s ’ % ( v . ra , v . dec )) 7:12:13.37 25:10:48.8 NOTA: Se puede verificar este ejemplo introduciendo los datos del script cualquier página web que proporcione efemérides, p. e., http://cosinekitty.com/solar system.html César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 33 / 64 Transformación de coordenadas Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 34 / 64 Transformación de coordenadas Sistemas de coordenadas celestes Un poco de teorı́a PyEphem maneja tres sistemas de coordenadas: 1 Ecuatoriales Ascensión recta (ra), declinación (dec) y época de observación (epoch). Sistema geocéntrico. 2 Eclı́pticas Longitud eclı́ptica (lon, +E), latitud eclı́ptica (lat, +N) y época de observación (epoch). Sistema geocéntrico. 3 Galácticas Longitud galáctica (lon, +E), latitud galáctica (lat, +N) y época de observación (epoch). Origen de coordenadas: centro de la galaxia. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 35 / 64 Transformación de coordenadas Sistemas de coordenadas celestes Ecuatorial César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 36 / 64 Transformación de coordenadas Sistemas de coordenadas celestes Galácticas César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 37 / 64 Transformación de coordenadas Sistemas de coordenadas celestes Cambio de sistema de coordenadas PyEphem dispone de tres funciones que permiten el cambio entre sistemas de coordenadas Ecliptic(Body o coordenadas [, epoch]) Galactic(Body o coordenadas [, epoch]) Equatorial(Body o coordenadas [, epoch]) Se les puede pasar un objeto de tipo Body o un par de coordenadas (longitud, latitud). Opcionalmente se puede concretar una época. Si no se especifica ninguna, se asume J2000. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 38 / 64 Transformación de coordenadas Sistemas de coordenadas celestes Cambio de sistema de coordenadas >>> mars = ephem . Mars () >>> mars . compute () >>> emars = ephem . Ecliptic ( mars ) >>> print ’ %s %s ’ %( emars . lon , emars . lat ) 66:32:26.5 0:24:15.1 >>> e1950mars = ephem . Ecliptic ( mars , epoch = ’ 1950 ’) >>> print ’ %s %s ’ % ( e1950mars . lon , e1950mars . lat ) 65:50:32.3 0:23:52.8 >>> north_pole = ephem . Equatorial ( ’0 ’ , ’ 90 ’ , \ epoch = ephem . J2000 ) >>> print ’ %s %s ’ % ( north_pole . ra , north_pole . dec ) 0:00:00.00 90:00:00.0 >>> ancient_pole = ephem . Equatorial ( north_pole , \ epoch = ’ -10000 ’) >>> print ’ %s %s ’ % ( ancient_pole . ra , ancient_pole . dec ) 18:34:46.15 41:31:40.9 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 39 / 64 Tránsitos, salidas y puestas Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 40 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Definiciones Se defiene salida (rising ) y puesta (setting ) de un cuerpo a los instantes temporales en los que la parte superior del disco toca el horizonte. Se define meridiano como la lı́nea que pasa por el cénit y los polos norte y sur. Un tránsito (transit) se da cuando el cuerpo atraviesa el meridiano. Siempre sucede. Salidas y puestas son sensibles a las condiciones atmosféricas y a la posición del observador (su horizonte). César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 41 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Métodos Métodos disponibles (del objeto Observer) previous transit(BodyObject [, start]) next transit(BodyObject [, start]) previous antitransit(BodyObject [, start]) next antitransit(BodyObject [, start]) previous rising(BodyObject [, start]) next rising(BodyObject [, start]) previous setting(BodyObject [, start]) next setting(BodyObject [, start]) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 42 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Métodos Reciben como parámetro un objeto de tipo Body (excepto satélites artificiales). Por defecto, los eventos cuentan a partir de la fecha del observador. Toman como parámetro adicional start. Es una fecha a partir de la cual se busca el siguiente tránsito, salida o puesta. Si la llamada estas funciones es correcta, devuelve una fecha que se puede pasar como parámetro ( start). Los métodos de rising y setting pueden producir errores si el cuerpo considerado no cruza el horizonte. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 43 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Métodos Se lanzan excepciones del tipo ephem.CircumpolarError, en sus modalidades ephem.AlwaysUpError ephem.NeverUpError Atributos del cuerpo (Body) que ayudan a controlar ese tipo de situaciones: circumpolar True, si siempre está a la vista, sobre el horizonte. False en caso contrario. neverup True si siempre está por debajo del horizonte para el observador considerado. False en caso contrario. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 44 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Ejemplo Granada (37d10m41s N, 3d36m03s W, altitud=680m), a 22 de mayo de 2015, ¿hora UT de salida, puesta y tránsito de la luna (época=’J2000’)? >>> import ephem >>> obsGranada = ephem . Observer () >>> obsGranada . lat = ephem . degrees ( ’ 37:10:41 ’) >>> obsGranada . lon = ephem . degrees ( ’ -3:36:03 ’) >>> obsGranada . elevation =680 >>> obsGranada . date = ephem . Date ( ’ 2015 -05 -22 ’) >>> moon = ephem . Moon () >>> print obsGranada . next_rising ( moon ) 2015/5/22 09:01:16 >>> print obsGranada . next_transit ( moon ) 2015/5/22 16:07:09 >>> print obsGranada . next_setting ( moon ) 2015/5/22 23:08:45 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 45 / 64 Tránsitos, salidas y puestas Tránsitos, salidas y puestas Ejemplo >>> nr = obsGranada . next_setting ( moon ) >>> print nr 2015/5/22 23:08:45 >>> print obsGranada . next_setting ( moon , start = nr ) 2015/5/23 23:47:13 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 46 / 64 Miscelánea Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 47 / 64 Miscelánea Miscelánea Fecha Juliana julian date(Date) Devuelve la fecha según el calendario juliano, para la fecha que se le pasa como parámetro. >>> print ephem . julian_date ( ’ 2015/5/22 ’) 2457164.5 >>> print ephem . julian_date ( ’ 1582/8/14 ’) 2299108.5 >>> print ephem . julian_date ( ’ 1582/8/15 ’) 2299109.5 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 48 / 64 Miscelánea Miscelánea Distancia angular separation(object1|coords1, object2|coords2) Recibe dos parámetros. Pueden ser datos de tipo Body o tupla de coordenadas((ra, dec), (az, alt)). Devuelve un ángulo (en radianes) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 49 / 64 Miscelánea Miscelánea Distancia angular: ejemplo ¿Ángulo diario lunar (en grados)? >>> import ephem >>> import math >>> m1 = ephem . Moon ( ’ 2015/5/22 ’) >>> m2 = ephem . Moon ( ’ 2015/5/23 ’) >>> s = ephem . separation ( m1 , m2 ) >>> print ( " La luna se mueve %6.4 f grados / dia " % \ math . degrees ( s )) La luna se mueve 12.5942 grados / dia César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 50 / 64 Miscelánea Miscelánea Distancia angular: ejemplo2 ¿Ángulo diario lunar (en grados)? >>> import ephem >>> import math >>> m1 = ephem . Moon ( ’ 2015/5/22 ’) >>> m2 = ephem . Moon ( ’ 2015/5/23 ’) >>> s = ephem . separation ( m1 , ( m2 . ra , m2 . dec )) >>> print ( " La luna se mueve %6.4 f grados / dia " % \ math . degrees ( s )) La luna se mueve 12.5942 grados / dia César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 51 / 64 Miscelánea Miscelánea Tiempo local localtime(Date) Devuelve un objeto de tipo datetime de Python. Ese objeto datetime almacena el tiempo local. Recibe como parámetro un objeto ephem.date. >>> import ephem >>> d = ephem . now () >>> print d 2015/5/14 06:26:37 >>> print ephem . localtime ( d ) 2015 -05 -14 08:26:37.000003 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 52 / 64 Miscelánea Miscelánea Tiempo local delta t([Date or Observer]) La función delta t() devuelve la diferencia en segundos, entre Tiempo Terrestre4 y Tiempo Universal5 . Sin argumento, usa now(). 4 El tiempo terrestre (TT) es una escala de tiempo uniforme basada en el Tiempo Atómico Internacional (TAI). Basado en tiempo solar promedio entre 1750 y 1890. 5 El tiempo universal (UT) es una escala de tiempo basada en el periodo de rotación de la Tierra. Es variable. Las fuerzas de marea gravitatoria ralentizan la rotación César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 53 / 64 Miscelánea Miscelánea Tiempo local: ejemplo >>> import ephem >>> print ephem . delta_t ( ’ -2500 ’) # Keops ’ Pyramid (4 th Dinasty ) 59699.68 >>> print ephem . delta_t ( ’0 ’) # Begining of Christian Ca 87491092594.0 >>> obsGranada = ephem . Observer () >>> obsGranada . lat = ephem . degrees ( ’ 37:10:41 ’) >>> obsGranada . lon = ephem . degrees ( ’ -3:36:03 ’) >>> obsGranada . elevation =680 >>> obsGranada . date = ephem . Date ( ’ 2015 -05 -22 13:25:00.0 ’) >>> print ephem . delta_t ( obsGranada ) 67.9070436458 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 54 / 64 Miscelánea Miscelánea Fases lunares Hay varias funciones disponibles en PyEphem previous new moon(Date) next new moon(Date) previous first quarter moon(Date) next first quarter moon(Date) previous full moon(Date) next full moon(Date) previous last quarter moon(Date) next last quarter moon(Date) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 55 / 64 Miscelánea Miscelánea Fases lunares Todas ellas reciben una fecha como parámetro de entrada. Devuelven otra fecha como parámetro de salida. >>> fullmoon = ephem . next_full_moon ( ’ 2015 ’) >>> print ( fullmoon ) 2015/1/5 04:53:16 >>> firstquartermoon = \ ephem . n e x t _ f i r s t _ q u a r t e r _ m o o n ( fullmoon ) >>> print ( firstquartermoon ) 2015/1/27 04:48:24 César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 56 / 64 Miscelánea Miscelánea Constelación constellation(Body) Devuelve una tupla. El primer elemento es la abreviatura de la constelación. El segundo, el nombre de esa constelación. >>> jup = ephem . Jupiter ( ’ 2015/05/23 ’) >>> print ephem . constellation ( jup ) ( ’ Cnc ’ , ’ Cancer ’) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 57 / 64 Otras constantes PyEphem Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 58 / 64 Otras constantes PyEphem Otras constantes Tipo Época de Observación Distancias (m) Velocidad de la luz (m/s) Ángulos (rad) César Husillos Rodrı́guez (IAA-CSIC) Constantes ephem.B1900 ephem.B1950 ephem.J2000 ephem.meters per au ephem.earth radius ephem.moon radius ephem.sun radius ephem.c ephem.pi PyEphem Mayo de 2015 59 / 64 Referencias Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 60 / 64 Referencias Referencias Toda la información ha sido resumida de las fuentes oficiales del paquete PyEPHEM Para profundizar más, ésta es la mejor de las referencias. La documentación en lı́nea no es exhaustiva. >>> import ephem >>> help ( ephem . compute ) Help on built - in function julian_date in module ephem . _libastro : julian_date (...) Return the Julian date of the current time , or of an argument that can be converted into an ephem . Date ( END ) César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 61 / 64 Ejercicios Índice 1 2 3 4 5 6 7 8 9 10 César Husillos Rodrı́guez (IAA-CSIC) ¿Qué es PyEphem? Antes de empezar... Caja de herramientas Cálculo de coordenadas celestes Transformación de coordenadas Tránsitos, salidas y puestas Miscelánea Otras constantes PyEphem Referencias Ejercicios PyEphem Mayo de 2015 62 / 64 Ejercicios Ejercicios propuestos 1 Salida, puesta y tránsitos de la luna sobre la base aérea de Torrejón el 22/05/2015 Coordenadas (40d29m48s N, 3d26m45s W), 618 m a.s.l. 2 ¿A qué hora (UT) sale y se pone el Sol el 22/05/2015 en la base aérea de Torrejón de Ardoz? 3 ¿Y en hora local?¿A qué hora sale y se pone el Sol en el caso del ejercicio anterior? 4 ¿En qué constelaciones están los planetas Mercurio, Marte, Júpiter, Saturno y Urano? 5 ¿Cuál es la menor distancia angular entre ellos? 6 ¿Podré observar Régulo (en la constelación de LEO) la noche del 23/05/2015?¿A qué hora sale y a qué hora se pone?. 7 ¿Qué altura (alt) alcanza en el momento del tránsito en la base aérea de Torrejón? César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 63 / 64 Ejercicios Ejercicios adicionales 1 Determine el azimut (az) la altura (alt) del Sol cada 10 minutos en el dı́a 23/05/2015 sobre la base aérea de Torrejón. Guarde las coordenadas en el fichero 20150523 sol torrejon.txt. El formato de cada fila será: fecha;az;alt (la fecha como número float). 2 Lea el fichero anterior. Pinte en una gráfica con az en abscisas y alt en ordenadas. Ajuste mediante un polinomio de grado 2 esa curva en las horas de Sol (altura solar mayor que cero). ¿Es suficiente ese grado del polinomio?. ¿Cuál es la altura solar a las 13:36 horas?. César Husillos Rodrı́guez (IAA-CSIC) PyEphem Mayo de 2015 64 / 64