File size: 1,797 Bytes
ba763c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
Setup script for Hugging Face Spaces deployment
Downloads data and trains model if not present
"""
import os
import sys

def setup():
    """Initialize data and model for the application"""
    print("="*80)
    print("EXOPLANET HUNTER AI - SETUP")
    print("="*80)

    # Check if model exists
    model_exists = os.path.exists('model/exoplanet_classifier.pkl')
    data_exists = os.path.exists('data/kepler_koi.csv')

    if not data_exists:
        print("\n📥 Downloading NASA datasets...")
        print("This may take a few minutes...")
        try:
            import download_data
            download_data.main()
            print("✅ Data downloaded successfully!")
        except Exception as e:
            print(f"❌ Error downloading data: {e}")
            sys.exit(1)
    else:
        print("\n✅ Data already exists, skipping download")

    # Always retrain model on first deployment to ensure version compatibility
    if not model_exists:
        print("\n🤖 Training machine learning model...")
        print("This ensures compatibility with the deployment environment...")
        print("This may take a few minutes...")
        try:
            import train_model
            train_model.main()
            print("✅ Model trained successfully!")
        except Exception as e:
            print(f"❌ Error training model: {e}")
            print(f"Error details: {str(e)}")
            import traceback
            traceback.print_exc()
            sys.exit(1)
    else:
        print("\n✅ Model already exists, skipping training")
        print("   (If you encounter pickle errors, delete model/ and restart)")

    print("\n" + "="*80)
    print("SETUP COMPLETE! Starting application...")
    print("="*80 + "\n")

if __name__ == "__main__":
    setup()