AiiDA node querying, convergence checking, and workflow management utilities for computational materials science.
- Node Querying: Query AiiDA nodes with flexible filters and save results to JSON
- Failed Task Dumping: Export failed tasks with complete input/output data
- Node Information Extraction: Parse detailed information from calculation nodes
- Convergence Checking: Check SCF and ionic convergence status from log files
- Cell Relaxation Parsing: Extract lattice constants, energies, and pressures from relaxation logs
pip install git+https://github.com/yourusername/aiida-node-tools.gitgit clone https://github.com/yourusername/aiida-node-tools.git
cd aiida-node-tools
pip install -e .pip install -e ".[dev]"- Python >= 3.8
- aiida-core >= 2.0.0
from nodetools import query_nodes
from pathlib import Path
# Simple query
filters = {'process_type': {'like': '%WorkChain%'}}
results = query_nodes(filters)
# Query with extra keys and save results
results = query_nodes(
filters,
extra_keys=['structure_name', 'pseudo_family'],
json_dir=Path('./results'),
fail_dir=Path('./failed_tasks')
)from nodetools import check_convergence, is_converged
from aiida.orm import load_node
node = load_node(12345)
# Get detailed convergence status
status = check_convergence(node)
print(f"Electronic: {status['electronic']}")
print(f"Ionic: {status['ionic']}")
# Quick boolean check
if is_converged(node):
print("Calculation converged!")from nodetools import dump_failed_task
from aiida.orm import load_node
from pathlib import Path
node = load_node(12345)
dump_failed_task(node, Path('./failed_tasks'))from nodetools import parse_cell_relax_log
from aiida.orm import load_node
node = load_node(12345)
data = parse_cell_relax_log(node)
if data:
print(f"Optimal lattice constant: {data['lattice_constants'][-1]}")
print(f"Minimum energy: {min(data['energies'])}")aiida-node-tools/
├── nodetools/ # Main package directory
│ ├── __init__.py # Package initialization
│ ├── node_query.py # Node querying utilities
│ ├── node_dump.py # Failed task dumping
│ ├── node_parser.py # Node information extraction
│ ├── node_convergence.py # Convergence checking
│ └── parse_cell_relax.py # Cell relaxation parsing
├── pyproject.toml # Project configuration
├── setup.py # Installation script
├── README.md # This file
├── LICENSE # MIT License
└── .gitignore # Git ignore rules
Query AiiDA nodes with flexible filtering options.
Parameters:
node_filter(dict or list): Filter criteriaextra_keys(list, optional): Keys for result dictionary compositionjson_dir(Path, optional): Directory to save successful resultsfail_dir(Path, optional): Directory to save failed task dumpscallback(function, optional): Callback function for each node
Returns: Dictionary with query results
Check SCF and ionic convergence status.
Parameters:
node: AiiDA Node object
Returns: Dictionary with 'electronic' and 'ionic' status keys
Export failed task data using verdi process dump.
Parameters:
node: AiiDA Node objectfailed_folder: Directory to save dumpfolder_name(optional): Custom folder name
Parse cell-relax log files to extract step data.
Parameters:
node: AiiDA Node object
Returns: Dictionary with lattice_constants, energies, pressures arrays
git clone https://github.com/yourusername/aiida-node-tools.git
cd aiida-node-tools
pip install -e ".[dev]"pytestblack nodetools/
isort nodetools/MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For issues and questions, please open an issue on GitHub.