# Contenedor Cuántico

Sistema de almacenamiento con deduplicación basado en figuras cuánticas y dedupFS.

## Requisitos previos

1. Python 3.6 o superior
2. WinFSP instalado para sistema de archivos FUSE en Windows
   - Descargar desde: https://github.com/winfsp/winfsp/releases
3. Paquetes Python:
   - fusepy
   - zstd
   - numpy
   - Pillow
   - anytree

## Instalación

1. Clonar o descargar este repositorio.
2. Crear un entorno virtual de Python:
   ```bash
   python -m venv .venv
   ```
3. Activar el entorno virtual:
   ```bash
   # En Windows
   .\veny\Scripts\Activate
   
   # En Linux/macOS
   source veny/bin/activate
   ```
4. Instalar los paquetes requeridos:
   ```bash
   pip install -r veny/src/requirements.txt
   ```

## Uso

Para iniciar el Contenedor Cuántico:

```bash
python veny/src/quantum_driver.py "C:\ruta\a\directorio\con\archivos"
```

El sistema procesará los archivos, creará figuras cuánticas y aplicará deduplicación automáticamente.

## Estructura del Proyecto

### Archivos principales
- **`quantum_fs.py`**: Implementación del sistema de archivos y deduplicación.
- **`quantum_metadata_manager.py`**: Gestión de metadatos y figuras globales.
- **`quantum_driver.py`**: Punto de entrada e interfaz de usuario.
- **`compression_utils.py`**: Utilidades para compresión y descompresión de datos.

### Scripts de configuración y diagnóstico
- **`configurar.bat`**: Script para configurar el entorno virtual y ejecutar el sistema.
- **`setup_winfsp.ps1`**: Configuración de WinFSP en sistemas Windows.
- **`winfsp_diagnostic.py`**: Diagnóstico de instalación de WinFSP y dependencias.

### Scripts auxiliares
- **`create_init.py`**: Genera automáticamente archivos `__init__.py` en todas las carpetas.
- **`find_fusepy_folder.py`**: Busca la carpeta `fusepy` en el entorno virtual.
- **`check_sys_path.py`**: Verifica las rutas en `sys.path`.

### Archivos de soporte
- **`requirements.txt`**: Lista de dependencias del proyecto.
- **`pyvenv.cfg`**: Configuración del entorno virtual.
- **`.gitignore`**: Ignora archivos generados automáticamente.

## Solución de problemas de montaje FUSE

Si experimenta problemas con el montaje del sistema de archivos FUSE:

1. **Ejecute la herramienta de diagnóstico**:
   ```bash
   python winfsp_diagnostic.py
   ```
   Esta herramienta verificará la instalación de WinFSP, los módulos de Python y el estado del punto de montaje.

2. **Problemas comunes**:
   - **"Mount point in use"**: Cierre todas las ventanas del Explorador que tengan abierto el punto de montaje.
   - **"Access denied"**: Ejecute el programa como administrador.
   - **Servicio WinFSP no iniciado**: Inicie el servicio con `net start WinFsp.Launcher`.

3. **Solución alternativa**:
   El Contenedor Cuántico sigue funcionando aunque el montaje FUSE falle, ya que:
   - Los archivos seguirán siendo procesados y deduplicados.
   - La interfaz gráfica mostrará los archivos y sus metadatos.
   - Los archivos procesados estarán disponibles en `.venv\mountpoint` como copias físicas.

## Modos de operación

El Contenedor Cuántico opera en dos modos posibles:

### 1. Modo FUSE (preferido)
Cuando WinFSP está correctamente instalado y configurado, el sistema crea un punto de montaje virtual. Los archivos que ves en este punto no ocupan espacio físico adicional y son reconstruidos dinámicamente desde el índice global deduplicado.

### 2. Modo de copia física (respaldo)
Si el montaje FUSE falla por cualquier razón, el sistema automáticamente crea copias físicas de los archivos en el punto de montaje. Esto garantiza que siempre tendrás acceso a tus archivos, pero no aprovecha todas las ventajas de la deduplicación en términos de espacio.

## Funcionamiento conceptual

El Contenedor Cuántico:
- Convierte archivos en "figuras cuánticas" con propiedades geométricas.
- Deduplica automáticamente bloques idénticos entre archivos.
- Mantiene un índice global para reconstruir archivos a partir de bloques únicos.
- Fusiona figuras similares para optimizar el almacenamiento.

## Para desarrolladores

El código fuente está organizado en tres componentes principales:
1. `quantum_fs.py`: Implementación del sistema de archivos y deduplicación.
2. `quantum_metadata_manager.py`: Gestión de metadatos y figuras globales.
3. `quantum_driver.py`: Punto de entrada e interfaz de usuario.

### Scripts útiles
- **`create_init.py`**: Útil para inicializar módulos automáticamente.
- **`find_fusepy_folder.py`**: Ayuda a localizar dependencias específicas.
- **`check_sys_path.py`**: Diagnóstico de rutas de importación.

### Mejoras recientes
- Se corrigieron inconsistencias en la inicialización de rutas en `quantum_fs.py` y `quantum_metadata_manager.py`.
- Se agregó soporte para compresión avanzada en `compression_utils.py`.
- Se mejoró la documentación y los scripts de configuración.
