así que recientemente escribí un código básico para analizar la distancia entre dos puntos que se almacenan en dos archivos de Excel separados. Ahora que tengo ese código funcionando, es hora de aplicar el uso legítimo y usar este código para analizar no solo 2 dimensiones (x, y) sino tres (ra, dec, z). En las hojas de datos ahora he almacenado las coordenadas de dos galaxias separadas. Aquí está el código modificado a continuación:
import math
import pandas
file1 = pandas.read_excel('Book1.xlsx')
file2 = pandas.read_excel('Book2.xlsx')
file1['RA_diff'] = file2['RA'] - file1['RA']
file1['DEC_diff'] = file2['DEC'] - file1['DEC']
file1['Z_diff'] = file2['Z'] - file1['Z']
dist = file1.apply(lambda row: math.hypot(row['RA_diff'], row['DEC_diff', row['Z_diff']]), axis=1)
if dist.values >= .5:
print 'no match'
elif dist.values <= .5:
print True, dist
Este código funciona muy bien solo con RA y DEC, pero no mucho con la Z agregada.
Mi esperanza es que alguien me dé algunos consejos sobre cómo acortar todo este proceso utilizando el método:
from astropy.coordinates import SkyCoord
Básicamente: ¿Cómo uso esta herramienta a mi favor al leer (de dos documentos de Excel separados) dos coordenadas separadas de (ra, dec, z) para determinar si los objetos tienen alguna proximidad entre sí?
Mi investigación ha resultado bastante infructuosa para analizar los puntos de esta manera específicamente, ya que en su mayoría simplemente no entiendo las páginas de ayuda. Este es mi primer proyecto de codificación, así que sea amable con sus consejos, recomendaciones, ayuda, comentarios o CUALQUIER otra cosa que pueda ofrecer. Gracias por adelantado.
De la documentación
>>> c1 = SkyCoord(ra=10*u.degree, dec=9*u.degree, distance=10*u.pc, frame='icrs')
>>> c2 = SkyCoord(ra=11*u.degree, dec=10*u.degree, distance=11.5*u.pc, frame='icrs')
>>> c1.separation_3d(c2)
<Distance 1.5228602415117989 pc>
El resto del código es solo leer los archivos de Excel e imprimir los resultados. Lo que tienes ahora es incorrecto, incluso sin la coordenada "z". No puedes calcular la separación de dos puntos en coordenadas esféricas por el teorema de Pitágoras: por ejemplo, (30*, 0*) y (30*, 359*) deberían estar muy cerca. Primero debe convertir a coordenadas cartesianas, que es lo que hace el módulo de astrología.
justin t
james k
justin t
james k
céfiro
numpy.genfromtxt
para leerlo.justin t