Skip to content

stillfast/aiida-nodetools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages