Trying to fix basic functionality again.
This commit is contained in:
127
scripts/prepare_environment.sh
Executable file
127
scripts/prepare_environment.sh
Executable file
@@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
# prepare_environment.sh
|
||||
#
|
||||
# This script prepares the environment for running the Synthea pipeline.
|
||||
# It rebuilds the Docker containers, ensures the directory structure is correct,
|
||||
# and starts the necessary services.
|
||||
|
||||
set -e # Exit on error
|
||||
|
||||
# Display a header
|
||||
echo "=================================================="
|
||||
echo "Synthea All Diseases Pipeline - Environment Setup"
|
||||
echo "=================================================="
|
||||
|
||||
# Check for Docker
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "ERROR: Docker is not installed or not in the PATH."
|
||||
echo "Please install Docker and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for docker-compose
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo "ERROR: docker-compose is not installed or not in the PATH."
|
||||
echo "Please install docker-compose and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create necessary directories if they don't exist
|
||||
echo "Creating required directories..."
|
||||
mkdir -p module_generator
|
||||
mkdir -p src/main/resources/modules
|
||||
mkdir -p src/main/resources/disease
|
||||
mkdir -p modules
|
||||
mkdir -p output
|
||||
|
||||
# Check if the module_generator directory has the required scripts
|
||||
if [ ! -f "module_generator/module_generator.py" ] || [ ! -f "module_generator/run_module_generator.py" ]; then
|
||||
echo "ERROR: Required Python scripts not found in module_generator directory!"
|
||||
# Check if they're in the python directory and we need to move them
|
||||
if [ -d "python" ] && [ -f "python/module_generator.py" ] && [ -f "python/run_module_generator.py" ]; then
|
||||
echo "Found scripts in python directory, moving them to module_generator directory..."
|
||||
mkdir -p module_generator
|
||||
mv python/module_generator.py module_generator/
|
||||
mv python/run_module_generator.py module_generator/
|
||||
# Copy README if exists
|
||||
if [ -f "python/README_module_generator.md" ]; then
|
||||
mv python/README_module_generator.md module_generator/
|
||||
fi
|
||||
else
|
||||
echo "Scripts not found in python directory either. Please ensure the scripts are in the module_generator directory."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make the Python scripts executable
|
||||
chmod +x module_generator/module_generator.py
|
||||
chmod +x module_generator/run_module_generator.py
|
||||
|
||||
# Create symlinks for convenience
|
||||
ln -sf "$(pwd)/module_generator/run_module_generator.py" "$(pwd)/run_module_generator.py"
|
||||
ln -sf "$(pwd)/module_generator/module_generator.py" "$(pwd)/module_generator.py"
|
||||
|
||||
# Create an empty disease_list.json if it doesn't exist
|
||||
if [ ! -f "src/main/resources/disease_list.json" ]; then
|
||||
echo "Creating empty disease_list.json..."
|
||||
echo "[]" > src/main/resources/disease_list.json
|
||||
fi
|
||||
|
||||
# Check if .env file exists
|
||||
if [ ! -f ".env" ]; then
|
||||
echo ".env file is missing. Creating from .env.example..."
|
||||
if [ -f ".env.example" ]; then
|
||||
cp .env.example .env
|
||||
echo " Created .env from .env.example. Please edit it with your API key."
|
||||
else
|
||||
echo "WARNING: .env.example not found. Creating minimal .env file..."
|
||||
echo "ANTHROPIC_API_KEY=your_api_key_here" > .env
|
||||
fi
|
||||
fi
|
||||
|
||||
# Stop any running containers
|
||||
echo "Stopping any running containers..."
|
||||
docker-compose down || true
|
||||
|
||||
# Rebuild the containers
|
||||
echo "Building Docker containers..."
|
||||
docker-compose build
|
||||
|
||||
# Start the Synthea container
|
||||
echo "Starting Synthea container..."
|
||||
docker-compose up -d synthea
|
||||
|
||||
# Give the container a moment to start
|
||||
echo "Waiting for Synthea container to be ready..."
|
||||
sleep 10
|
||||
|
||||
# Check if the container is healthy
|
||||
CONTAINER_ID=$(docker-compose ps -q synthea)
|
||||
if [ -z "$CONTAINER_ID" ]; then
|
||||
echo "ERROR: Failed to start Synthea container."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the container is using proper health checks
|
||||
HEALTH_STATUS=$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_ID 2>/dev/null || echo "unknown")
|
||||
if [ "$HEALTH_STATUS" != "healthy" ] && [ "$HEALTH_STATUS" != "unknown" ]; then
|
||||
echo "WARNING: Synthea container is not reporting as healthy (status: $HEALTH_STATUS)."
|
||||
echo "It may take some time for the container to become fully operational."
|
||||
echo "You can proceed, but the pipeline may fail if the container is not ready."
|
||||
fi
|
||||
|
||||
# Check if we should generate modules
|
||||
if [ "$1" == "--generate-modules" ]; then
|
||||
echo "Starting module generator..."
|
||||
docker-compose --profile generator up module-generator
|
||||
fi
|
||||
|
||||
echo "=================================================="
|
||||
echo "Environment is ready!"
|
||||
echo ""
|
||||
echo "To generate patients for a disease module:"
|
||||
echo "nextflow run main.nf --disease_name \"Disease Name\" --generate_patients true"
|
||||
echo ""
|
||||
echo "To generate a new module and patients:"
|
||||
echo "nextflow run main.nf --disease_name \"Disease Name\" --force_generate true --generate_patients true"
|
||||
echo "=================================================="
|
||||
Reference in New Issue
Block a user