Skip to content

Latest commit

 

History

History
executable file
·
197 lines (137 loc) · 4.49 KB

File metadata and controls

executable file
·
197 lines (137 loc) · 4.49 KB

aiida-node-tools

AiiDA node querying, convergence checking, and workflow management utilities for computational materials science.

Features

  • 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

Installation

From GitHub (Recommended)

pip install git+https://github.com/yourusername/aiida-node-tools.git

From Source (Development)

git clone https://github.com/yourusername/aiida-node-tools.git
cd aiida-node-tools
pip install -e .

With Dev Dependencies

pip install -e ".[dev]"

Requirements

  • Python >= 3.8
  • aiida-core >= 2.0.0

Quick Start

Query Nodes

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')
)

Check Convergence Status

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!")

Dump Failed Tasks

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'))

Parse Cell Relaxation Logs

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'])}")

Project Structure

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

API Reference

query_nodes()

Query AiiDA nodes with flexible filtering options.

Parameters:

  • node_filter (dict or list): Filter criteria
  • extra_keys (list, optional): Keys for result dictionary composition
  • json_dir (Path, optional): Directory to save successful results
  • fail_dir (Path, optional): Directory to save failed task dumps
  • callback (function, optional): Callback function for each node

Returns: Dictionary with query results

check_convergence()

Check SCF and ionic convergence status.

Parameters:

  • node: AiiDA Node object

Returns: Dictionary with 'electronic' and 'ionic' status keys

dump_failed_task()

Export failed task data using verdi process dump.

Parameters:

  • node: AiiDA Node object
  • failed_folder: Directory to save dump
  • folder_name (optional): Custom folder name

parse_cell_relax_log()

Parse cell-relax log files to extract step data.

Parameters:

  • node: AiiDA Node object

Returns: Dictionary with lattice_constants, energies, pressures arrays

Development

Setup Development Environment

git clone https://github.com/yourusername/aiida-node-tools.git
cd aiida-node-tools
pip install -e ".[dev]"

Run Tests

pytest

Code Formatting

black nodetools/
isort nodetools/

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions, please open an issue on GitHub.