ElectrAI is a PyTorch based super-resolution machine learning model for materials. Currently, it implements a ResUNet neural network architecture using PyTorch Lightning.
Begin with example training code in examples/MP/run.sh.
Always use uv when running python code and managing its environment.
# Install dependencies with uv
uv sync# Run pre-commit hooks (linting, formatting)
uvx pre-commit run --all-files
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=src/electraiPlease ask if you need to train a model.
Training is controlled via YAML config files in src/electrai/configs/. Key parameters:
n_channels,n_residual_blocks: Model architecturelr,epochs,nbatch: Training hyperparameterswarmup_length: Learning rate warmup epochswandb_mode: "online", "offline", or "disabled"
Supports multiple data sources:
- Native CHGCAR files (via pymatgen) Currently preferred
- Compressed JSON (.json.gz)
- Zarr format (local or S3 paths)
Use zarr_conversion/ utilities to convert between formats.
src/electrai/
├── lightning.py # PyTorch Lightning training module
├── configs/ # YAML training configs
├── dataloader/ # Data loading (mp.py, mp_zarr_s3_data.py, registry.py)
├── entrypoints/ # CLI entry points (train.py, main.py)
├── loggers/ # Logging utilities
├── model/ # Neural network (resunet.py, srgan_layernorm_pbc.py) and losses
└── zarr_conversion/ # Data format conversion tools
data/ # Example data
examples/ # Entry to running training
tests/ # pytest test suite
Key files:
lightning.py- LightningGenerator class with train/val stepsmodel/resunet.py- ResUNet3D architecture (ResBlock3D, encoder-decoder with skip connections)model/srgan_layernorm_pbc.py- GeneratorResNet architecturedataloader/mp.py- Materials Project dataset loaderdataloader/registry.py- Dataset registration via @register_data decoratorentrypoints/train.py- Training orchestration