PsychoPy / app.py
KurniaKadir's picture
Update app.py
a9cc923 verified
import os
import sys
import warnings
from pathlib import Path
# Add project root to path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
# Environment detection
IS_HUGGINGFACE = bool(
os.environ.get('SPACE_ID') or
os.environ.get('GRADIO_SERVER_NAME') or
os.environ.get('HF_SPACE')
)
IS_DOCKER = Path('/.dockerenv').exists() or os.environ.get('DOCKER_CONTAINER')
def check_dependencies():
"""Check and report available dependencies."""
deps = {
'gradio': False,
'numpy': False,
'pandas': False,
'psychopy': False,
'plotly': False,
'scipy': False
}
for dep in deps:
try:
__import__(dep)
deps[dep] = True
except ImportError:
pass
return deps
def main():
"""Main entry point."""
print("=" * 60)
print("MULTI-AGENT PSYCHOPHYSICS SYSTEM")
print("=" * 60)
deps = check_dependencies()
print(f"\nEnvironment: {'Hugging Face' if IS_HUGGINGFACE else 'Local'}")
print(f"Docker: {'Yes' if IS_DOCKER else 'No'}")
print(f"\nDependencies:")
for dep, available in deps.items():
status = "✓" if available else "✗"
print(f" {status} {dep}")
# Launch appropriate interface
if deps['gradio']:
print("\n🚀 Launching Gradio interface...")
from interface.gradio_app import create_app
app = create_app()
# Hugging Face specific settings
server_name = os.environ.get('GRADIO_SERVER_NAME', '0.0.0.0')
server_port = int(os.environ.get('GRADIO_SERVER_PORT', '7860'))
app.launch(
server_name=server_name,
server_port=server_port,
share=False,
show_error=True
)
else:
print("\n⚠️ Gradio not available. Running CLI demo...")
from agents.base import MultiAgentSystem
from core.data_structures import ExperimentConfig
config = ExperimentConfig(
experiment_name="cli_demo",
subject_id="test",
n_trials=20,
simulation_mode=True
)
system = MultiAgentSystem()
system.initialize(config)
system.start_all()
# Wait for completion
import time
while system.running:
time.sleep(0.5)
status = system.get_status()
print(f"\rTrials: {status.get('trial_count', 0)} | "
f"Agents: {sum(1 for v in status.get('agents', {}).values() if v == 'active')}/6",
end='')
print("\n\nExperiment complete!")
system.stop_all()
if __name__ == "__main__":
main()