Un simulador cuántico completo implementado con Flask y JavaScript, que permite simular moléculas usando métodos cuánticos avanzados.
- API REST Simple: Simulación cuántica básica con respuesta inmediata
- WebSocket Tiempo Real: Progreso en tiempo real durante la simulación
- API Mock: Respuestas predefinidas para desarrollo frontend
- Simulación por Lote: Procesamiento en segundo plano para simulaciones largas
- Análisis de Interacción: Estudio de interacciones entre moléculas
- Interfaz Web Moderna: UI responsive con animaciones
- Python 3.8+
- Flask 2.3.3+
- Node.js (para desarrollo frontend)
- Navegador web moderno
-
Clonar el repositorio:
git clone <repository-url> cd cuantica
-
Instalar dependencias:
pip install -r requirements.txt
-
Configurar variables de entorno (opcional, para IBM Quantum):
# En Linux/Mac export IBM_QUANTUM_TOKEN=tu_api_key_de_ibm_quantum # En Windows PowerShell $env:IBM_QUANTUM_TOKEN="tu_api_key_de_ibm_quantum"
O crea un archivo
.env(no lo subas a Git):IBM_QUANTUM_TOKEN=tu_api_key_de_ibm_quantum SECRET_KEY=tu_clave_secreta_aleatoriaIMPORTANTE: Nunca agregues tu API key directamente en el código fuente.
-
Ejecutar el servidor:
python app.py
-
Abrir en el navegador:
- Interfaz principal: http://localhost:5000
- Demo interactivo: http://localhost:5000/demo
- IBM Quantum: http://localhost:5000/ibm-quantum
POST /api/quantum/simple
Content-Type: application/json
{
"molecule": "LiH",
"parameters": {
"basis_set": "sto3g",
"optimizer": "COBYLA"
}
}POST /api/quantum/simulate
Content-Type: application/json
{
"molecule": "LiH",
"parameters": {
"basis_set": "sto3g",
"optimizer": "COBYLA"
}
}POST /api/mock/quantum-simulate
Content-Type: application/json
{
"molecule": "LiH"
}const socket = io('http://localhost:5000');
socket.emit('start_quantum_simulation', {
molecule: 'LiH',
parameters: {}
});POST /api/quantum/start-simulation
GET /api/quantum/status/{simulation_id}POST /api/analyze-interaction
Content-Type: application/json
{
"molecule1": "LiH",
"molecule2": "H2O"
}GET /api/molecules
GET /api/molecules/{molecule_name}- LiH: Litio-Hidrógeno
- Li_GLYCINE: Litio-Glicina
- H2O: Agua
- Selecciona una molécula del dropdown
- Configura los parámetros (conjunto base, optimizador)
- Elige el tipo de simulación:
- Simulación Simple: Respuesta inmediata
- Simulación Avanzada: Con más detalles
- Simulación Mock: Para desarrollo
- WebSocket: Con progreso en tiempo real
Visita /demo para probar todas las funcionalidades:
- Comparación de APIs
- Análisis de interacciones
- Información de moléculas
- Pruebas de rendimiento
cuantica/
├── app.py # Servidor Flask principal
├── quantum_simulator.py # Módulo de simulación cuántica
├── requirements.txt # Dependencias Python
├── templates/ # Plantillas HTML
│ ├── index.html # Interfaz principal
│ └── demo.html # Demo interactivo
├── static/ # Archivos estáticos
│ ├── style.css # Estilos CSS
│ └── script.js # JavaScript
└── README.md # Documentación
- Edita
quantum_simulator.py - Agrega la molécula al diccionario
molecule_data - Actualiza el frontend si es necesario
- Define el endpoint en
app.py - Implementa la lógica de negocio
- Actualiza la documentación
// Simulación simple
async function runSimulation() {
const response = await fetch('http://localhost:5000/api/quantum/simple', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
molecule: 'LiH',
parameters: {
basis_set: 'sto3g',
optimizer: 'COBYLA'
}
})
});
const result = await response.json();
console.log('Energía:', result.data.energy);
}
// WebSocket
const socket = io('http://localhost:5000');
socket.on('simulation_complete', (data) => {
console.log('Simulación completada:', data.energy);
});from quantum_simulator import simulate_molecule
# Simular molécula
result = simulate_molecule('LiH', {
'basis_set': 'sto3g',
'optimizer': 'COBYLA'
})
print(f"Energía: {result['energy']} Ha")
print(f"Fuerza de interacción: {result['interaction_strength']}")python app.py# Usando Gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
# Usando Docker
docker build -t quantum-simulator .
docker run -p 5000:5000 quantum-simulator- Verifica que el servidor esté ejecutándose en el puerto 5000
- Revisa que no haya otros servicios usando el puerto
- Asegúrate de que Socket.IO esté cargado
- Verifica la consola del navegador para errores
- Usa la API Mock para desarrollo
- Considera usar simulación por lote para cálculos largos
- Soporte para más moléculas
- Visualización 3D de moléculas
- Exportación de resultados
- Autenticación de usuarios
- Base de datos para historial
- API de machine learning
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.
Si tienes problemas o preguntas:
- Abre un issue en GitHub
- Contacta al equipo de desarrollo
- Revisa la documentación
¡Disfruta simulando el mundo cuántico! 🚀⚛️