Metadata-Version: 2.4
Name: celestial_body_package
Version: 1.0.3
Summary: Educational python package for basic astronomy
Author: Joanne Michelle Rodríguez Romo
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: matplotlib>=3.7
Requires-Dist: numpy>=1.26

# celestial_body_package

# Objetivo:

Es un paquete educativo en Python de astronomía básica. Este paquete cuenta con un catálogo de las estrellas más representativas de cada tipo espectral, así como un catálogo de los planetas del sistema solar. Adicionalmente, con este paquete se podrá realizar operaciones básicas de mecánica celeste, tal como cálculo de las leyes de kepler entre el catálogo de estrellas incluidas y los planetas del sistema solar.

# Problema que resulve:

Resolver problemas básicas de mecánica celeste de forma rápida. De igual manera, permite identificar cualquier tipo de estrella en el diagrama HR ( Hertzsprung-Russell), apartir de su temperatura en Kelvin, luminosidad en watts y radio en radios solares; permitiendo estudiar así su evolución y características. 

# Instalación paso a paso:

Hay dos formas sencillas de instalar el paquete:


1: Desde Pypi: haciendo únicamente 

```bash
 pip install celestial-body-package
 ```
2: Creando un entorno visual y descargando la carpeta zip.

Windows (PowerShell)

```bash
cd \Celestial_Body\cb-package
python -m venv venv
.\venv\Scripts\Activate.ps1
cd \Celestial_Body\cb-package\celestial_body_package (Asegurarse de estár en la carpeta que contiene el documento pyproject.toml)
pip install -e .
```

Ubuntu / Mac

```bash
cd \Celestial_Body\cb-package
python3 -m venv venv
source venv/bin/activate
cd \Celestial_Body\cb-package\celestial_body_package
pip install -e .
```

# Estructura:

```text
celestial_body_package/
├── pyproject.toml
├── README.md
├── src/
│   └── celestial_body_package/
│       ├── __init__.py
│       ├── cuerpoceleste.py
│       ├── planeta.py
│       ├── estrella.py
│       ├── rules.py
│       ├── factory.py
│       ├── catalog.py
│       ├── app.py
│       ├── cli.py
│       └── gui.py
├── examples/
│   └── demo.py
└── tests/
    └── test_basis.py

```

# Uso rápido - Application Programming Interface (API Python)
``` python

from celestial_body_package import Mercurio, sol, is_planeta, is_estrella

m = Mercurio()
print(m.name, m.planet_type)

s = sol()
print(s.name, is_estrella(s))

```

# Command Line Interface (CLI)

```bash
celestial body --help
```

- Listar estrellas disponibles:
  
```bash  
  celestial-body list-estrella sol
```

- Listar planetas disponibles:
  
```bash  
  celestial-body list-planeta jupiter
```

- Obtener información de un planeta:
  
 ```bash  
celestial-body info-planeta mercurio
```
- Obtener información de una estrella:
  
 ```bash  
celestial-body info-estrella sirio_a
```

- Clasificar una estrella/planeta:
  
 ```bash  
celestial-body classify-estrella sirio_a
celestial-body classify-planeta tierra
```

# Propiedades de los cuerpos celestes:

- Catálogo tabular desde Python:

```python
from celestial_body_package import body_table, to_markdown
rows = body_table()
print(to_markdown(rows))
```
# CLI

```bash
celestial-body catalog --format markdown
```

- Calcular la magnitud absoluta de una estrella del catalogo:
  
 ```bash    
 celestial-body magnitud-absoluta sirio_a
```

- Calcular la luminosidad en luminosidad solar de una estrella del catalogo:
  
 ```bash    
 celestial-body luminosidad-solar sirio_a
```

-Calcular la gravedad superficial de una estrella o planeta:
  
 ```bash    
 celestial-body luminosidad-solar marte
```
- Calcular la densidad de una estrella o planeta:
  
 ```bash    
 celestial-body densidad marte
```
- Calcular la velocidad de escape de una estrella o planeta:
  
 ```bash    
 celestial-body velocidad-escape tierra
```

# Leyes de Kepler 
```python
from celestial_body_package import (
    orbit_type, vis_viva, kepler_period, scatter_plot,
)

print(orbit_type("tierra"))
print(vis_viva( "sol", "marte",1.0))
print(kepler_period("sol","marte"))
scatter_plot([1000,2000,3000], [1000,4000,9000], [10,40,90], title="D-HR", output="DHR.png")
```
# CLI
- Lista de procesos:
  
 ```bash    
 celestial-body processes
```

- Leyes de Kepler:
  
 ```bash    
celestial-body vel-orb 1.0 tierra sol
```

- Leyes de Kepler con formato:
 ```bash  
 celestial-body run-process vis_viva --planeta marte --estrella sol --distance-au 1.0 --output-format latex
```

-Generar un diagram HR con estrellas de interes:
 ```bash 
celestial body d-hr --x Temperatura --y Luminosidad --r Radio --output OUTPUT.png --title "Diagrama HR"
```
# Graphical User Interface (GUI)

Se añadió una GUI sencilla con `tkinter` (incluida en la librería estándar de Python)

```bash
celestial-body-gui
```
La GUI permite:

- Mostrar info y clasificación de las estrellas y planetas
- Convertir de unidades astronómicas a m y viceversa
- Calcular las leyes de kepler para una estrella y planeta en interacción gravitacional
  
1. **Cálculos E-P**
   - Ejecuta calculas de las leyes de kepler
   - Muestra resultados numéricos junto con:
     - nombre del proceso,
     - Planeta y estrella involucradas,
     - resultado numérico,
     - ecuación simbólica,
     - parámetros,
     - unidades,
     - hipótesis.
       
2. **Diagrama HR**
   - Permite introducir `T`, `L` y `R` como listas CSV,
   - personalizar título/etiquetas,
   - elegir ruta de salida (`.png` o `.pdf`),
   - generar y guardar el diagrama desde la interfaz.


# Ejemplos

Revisar `examples/demo.py`.
