# Python Backend for COCO Tool This is the converted Python backend using Flask and SQLAlchemy. ## Setup 1. Create a virtual environment (recommended): ```bash python -m venv venv ``` 2. Activate the virtual environment: - Windows: `venv\Scripts\activate` - Linux/Mac: `source venv/bin/activate` 3. Install dependencies: ```bash pip install -r requirements.txt ``` ## Running the Server ### Option 1: Using start.py ```bash python start.py ``` ### Option 2: Using Flask directly ```bash python app.py ``` ### Option 3: Using Flask CLI ```bash flask --app app run --host=0.0.0.0 --port=3000 ``` The server will start on `http://0.0.0.0:3000` ## Database Configuration The database configuration is in `database/database.py`. Default settings: - Host: localhost - Database: myapp - User: root - Password: root Modify `app.py` to change these settings. ## Project Structure ``` backend/ ├── app.py # Main Flask application ├── start.py # Startup script ├── requirements.txt # Python dependencies ├── database/ │ └── database.py # Database configuration ├── models/ # SQLAlchemy models │ ├── __init__.py │ ├── Annotation.py │ ├── Images.py │ ├── LabelStudioProject.py │ ├── training.py │ ├── TrainingProject.py │ └── TrainingProjectDetails.py ├── routes/ │ └── api.py # API endpoints └── services/ # Business logic ├── fetch_labelstudio.py ├── generate_json_yolox.py ├── generate_yolox_exp.py ├── push_yolox_exp.py └── seed_label_studio.py ``` ## API Endpoints All endpoints are prefixed with `/api`: - `GET /api/seed` - Seed database from Label Studio - `POST /api/generate-yolox-json` - Generate YOLOX training files - `POST /api/start-yolox-training` - Start YOLOX training - `GET /api/training-log` - Get training logs - `GET/POST /api/training-projects` - Manage training projects - `GET /api/label-studio-projects` - Get Label Studio projects - `GET/POST/PUT /api/training-project-details` - Manage project details - `POST /api/yolox-settings` - Save YOLOX settings - `GET/DELETE /api/trainings` - Manage trainings - `DELETE /api/training-projects/:id` - Delete training project ## Migration Notes This is a direct conversion from Node.js/Express to Python/Flask: - Express → Flask - Sequelize ORM → SQLAlchemy ORM - node-fetch → requests library - Async routes maintained where needed - All file paths and logic preserved from original ## Differences from Node.js Version 1. Python uses async/await differently - some routes may need adjustments 2. File handling uses Python's built-in open() instead of fs module 3. Subprocess calls use Python's subprocess module 4. JSON handling uses Python's json module 5. Path operations use os.path instead of Node's path module