Kete
Predecir órbitas de asteroides y cometas a gran escala.
Vea el artículo en arXiv.
Las herramientas kete están diseñadas para permitir la simulación de encuestas de todo el cielo de planetas menores. Esto incluye la dinámica orbital de física de múltiples cuerpos, determinación y ajuste de órbitas, modelado térmico y óptico de los objetos, así como correcciones de campo de visión y retraso de la luz. Estas herramientas, junto con los Centros de Planetas Menores (MPC) y las bases de datos de asteroides conocidos del JPL, pueden usarse no solo para planificar encuestas sino también para predecir qué objetos son visibles para encuestas existentes o pasadas.
El objetivo principal de kete es habilitar un conjunto de herramientas que puedan operar sobre todo el catálogo MPC de una vez, sin necesidad de hacer consultas sobre objetos específicos. Se ha usado para simular más de 10 años de tiempo de encuesta para la misión NEO Surveyor usando 10 millones de asteroides del cinturón principal y cercanos a la Tierra.
https://github.com/user-attachments/assets/a48491d8-9c15-4659-9022-1767a3aa1e94Aquí hay una simulación de lo que la encuesta ZTF observaría durante todo el 2023. Esta es cada posición de cada asteroide numerado, junto con un cálculo de las magnitudes esperadas en banda V. Si la magnitud esperada es menor que el límite de magnitud reportado por ZTF para el cuadro específico, entonces el objeto parpadeará en gris claro.
Esto tomó aproximadamente 50 minutos en una computadora de escritorio para calcular, y alrededor de 40 minutos para generar la película.
Kete se puede usar para responder muchas preguntas, por ejemplo, identificar todos los asteroides conocidos dentro de una imagen dada.
Kete también se puede usar como backend para visualizaciones más divertidas, tales como:
Ketev - Visualizador del Sistema Solar en tu navegador
Instalación
Kete se puede instalar usando pip:
`` bash
pip install kete
Ejemplo de Código
Aquí hay un pequeño ejemplo que muestra cómo es programar con kete. Esto calcula la distancia más cercana que el asteroide Apophis tendrá durante su acercamiento muy cercano a la Tierra en abril de 2029.
Una mirada más profunda a este ejemplo se puede encontrar aquí. python
import kete import numpy as np
# Date of impact +- 1 day in Julian Date jd_center = kete.Time.from_ymd(2029, 4, 13.9066).jd
# Step the orbit every 1 minute for +- 1 day. step_size = 1 / 24 / 60 jd_range = np.arange(-1, 1, step_size) + jd_center
# load Apophis from JPL Horizons obj = kete.HorizonsProperties.fetch("Apophis") cur_state = obj.state
# keep track the the closest approach closest_approach = [np.inf, 0] for jd in jd_range: # propagate the object, and include the massive main belt asteroids cur_state = kete.propagate_n_body(cur_state, jd, include_asteroids=True)
# calculate position relative to earth earth_vec = cur_state.pos - kete.spice.get_state("Earth", cur_state.jd).pos earth_dist = earth_vec.r * kete.constants.AU_KM if earth_dist < closest_approach[0]: closest_approach = [earth_dist, cur_state.jd]
print("Closest approach is on:") print(kete.Time(closest_approach[1]).iso) print(f"At a distance of about {closest_approach[0]:0.0f} km") # Closest approach is on: # 2029-04-13T21:45:30.239+00:00 # At a distance of about 38015 km
bash export KETE_CACHE_DIR="~/.kete/"## NombreKETE_CACHE_DIR'Kete' proviene de la mitología griega antigua, significa monstruos marinos, y es la palabra raíz de Cetáceos (Ballenas).
Licencia:
La versión original de este código fue desarrollada mientras el autor original (Dar Dahlen) trabajaba en Caltech IPAC. Este es un fork de ese repositorio donde el trabajo continuará como un proyecto personal. La diferencia entre este fork y el código anterior está licenciada bajo BSD de 3 cláusulas, pero con derechos de autor para Dar Dahlen y futuros colaboradores.
Unidades y Marco de Referencia
Kete usa el marco de referencia ICRF como el marco de coordenadas base, con unidades en UA, y tiempo en JD con escala de Tiempo Dinámico Baricéntrico (TDB). Internamente este marco se convierte a un sistema de coordenadas Eclípticas definido por el ángulo de oblicuidad usado por JPL Horizons, que es el modelo definido IAU76/80 en el marco J2000.
Tanto JPL Horizons como el Centro de Planetas Menores (MPC) usan este marco de coordenadas, que es esencialmente equivalente a las coordenadas Eclípticas J2000. Herramientas de conversión están disponibles en kete que permiten la conversión al marco Ecuatorial y a varias formas de tiempo.
- https://en.wikipedia.org/wiki/Axial_tilt#Short_term
- https://ssd.jpl.nasa.gov/horizons/manual.html#defs
Directorio de caché
Muchas operaciones en kete resultan en la descarga de varios archivos. Estos archivos se almacenan en caché automáticamente, el directorio donde se guarda esta caché puede establecerse configurando la variable de entorno
. El directorio predeterminado es~/.kete/.
dockerfile RUN pip install kete && \ python -c "import kete" # Triggers kernel downloads during buildRUN python -c "import kete"Uso con Contenedores - Docker/Podman
Tenga en cuenta que kete descarga varios archivos grandes del núcleo SPICE en el primer uso, que se guardan en un directorio de caché.
Importante para Docker/Podman:
- Si activa la descarga durante la construcción de Docker (por ejemplo,
), los archivos se incluirán en la imagen.se perderán cuando el contenedor se detenga a menos que use un montaje de volumen para el directorio de caché.
- Si omite este paso, los archivos se descargarán en la primera ejecución del contenedor pero
Enfoque recomendado para Dockerfile:
Esto asegura que los núcleos SPICE formen parte de su imagen y no necesiten ser descargados nuevamente.Información para desarrolladores:
La información a continuación está dirigida a desarrolladores, y no es necesaria para los usuarios finales.
Instalación - Desde el código fuente
Si kete se construye desde el código fuente, debe estar instalado el compilador de Rust. Las instrucciones de instalación
pueden encontrarse aquí:
https://www.rust-lang.org/learn/get-started
Asegúrese de que su Python esté actualizado, este código funciona con Python 3.9+.
bash
python --version
bash pip --versionAsegúrese de que su pip esté actualizado, debe ser al menos la versión22.0.0.
Esto se puede actualizar usando: bash
python -m pip install "pip>=22.0.0" --upgrade
pip install setuptools --upgrade
Desarrollo
Si planea hacer desarrollo, se recomienda instalar con lo siguiente:
bash
pip install '.[dev]'
bash pip install sphinx sphinx_gallery autodocEl[dev]en esa línea tiene pip install una serie de dependencias opcionales que son útiles para el desarrollo. Incluyendo pytest y herramientas de documentación.Construcción de la Documentación
Para que la documentación se construya, se necesitan algunas bibliotecas adicionales de Python. Estas se pueden instalar con:
Después de que esto haya sido instalado, la documentación puede ser construida ejecutando dentro del
directorio kete. bash
(cd docs && make html && open html/index.html&)
bash (cd docs && make clean)Una vez que esto haya terminado de ejecutarse, abra el archivokete/docs/html/index.htmlpara acceder a la documentación HTML.Para limpiar la compilación de documentos anterior:
Las pruebas de documentación pueden ejecutarse con: bash
(cd docs && make doctest)
bash pytest --cov-report term-missing --cov=ketepytestEjecutando pruebas
Ejecutar pruebas requiere que los paquetes
ypytest-covestén instalados.Abre una terminal en la base de esta carpeta y ejecuta el siguiente comando:
bash pytest --cov-report html --cov=keteOtro tipo de informe de cobertura es HTML, esto generará una carpeta llamadahtmlcoven el directorio donde se ejecutó el comando, luego puedes abrir el archivohtmlcov/index.html. Esta es una representación en forma de sitio web amigable para el usuario de la cobertura de código.
Ejecución de Tutoriales
Los tutoriales son ejemplos computacionalmente costosos que son más indicativos del uso típico esperado.
Dado que estos ejemplos son tan costosos de ejecutar, no se ejecutan a menos que
se realicen manualmente. Se ha proporcionado un script de Python de conveniencia para hacer precisamente esto.
bash
cd docs
python utils.py
bash cargo bench open target/criterion/report/index.htmlgnuplotEjecución de Benchmarks
Hay un conjunto de micro-benchmarks en el backend de rust de kete. Estos requieren
instalado, y pueden ejecutarse usando el siguiente comando:
Adicionalmente, los Flamegraphs pueden ser producidos usando lo siguiente:
bash
cargo bench --bench propagation -- --profile-time=5
cargo bench --bench spice -- --profile-time=5
cargo bench --bench thermal -- --profile-time=5
`Estos flamegraphs se colocarán en
target/criterion/*/profile/flamegraph.svg`. Abrir
estos archivos en un navegador web mostrará qué funciones se están utilizando durante la prueba.--- Tranlated By Open Ai Tx | Last indexed: 2026-06-27 ---