Exoplanet classification system using machine learning trained on NASA datasets (Kepler, TESS) for the NASA Space Apps Hackathon 2025
Daniel Kwan, Karl Keshavarzi, Wen Ting Wang, Aadhya Anand
This starts the Flask backend + the Vite frontend.
Backend setup:
cd exodiscover-backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtStart the API:
python app.pyStart the frontend (in a second terminal):
npm install
npm run devOpen the app using the given localhost server.
This runs a script-driven predictor and does not use the web app.
Ensure the Python environment is ready (same as Option 1), then run:
python exodiscover-backend/predict.pyData source: NASA Kepler Objects of Interest (KOI) catalog
Features extracted from light curves:
- Statistical: mean, std, median, max, min, range, coefficient of variation
- Transit detection: num_dips, dip_fraction, max_dip_depth, transit_count
- Signal analysis: skewness, kurtosis, SNR, smoothness
- Periodicity: num_periods, primary_period
Target labels:
- Confirmed (verified exoplanet)
- Candidate (potential exoplanet)
- False Positive (not an exoplanet)
Models implemented using scikit-learn and XGBoost:
- XGBoost Classifier (production)
- CNN for light curve analysis
- LSTM for sequential data
Training and evaluation:
python exodiscover-backend/train_final_model.py
python exodiscover-backend/predict.pyEvaluation metrics:
- Accuracy on holdout test set
- Classification report (precision, recall, F1)
- Confusion matrix
Frontend:
- React
- TypeScript
- Vite
- Tailwind CSS
- shadcn-ui
Backend:
- Flask
- XGBoost
- scikit-learn
- TensorFlow/Keras
- lightkurve (NASA light curve analysis)
- NASA Exoplanet Archive
- Kepler Objects of Interest (KOI) catalog
- Kepler, K2, and TESS mission data