# pymatgen.io.abinit.nodes module¶

This module defines the Node class that is inherited by Task, Work and Flow objects.

class Dependency(node, exts=None)[source]

Bases: object

This object describes the dependencies among the nodes of a calculation.

A Dependency consists of a Node that produces a list of products (files) that are used by the other nodes (Task or Work) to start the calculation. One usually creates the object by calling work.register

Example

# Register the SCF task in work. scf_task = work.register(scf_strategy)

# Register the NSCF calculation and its dependency on the SCF run via deps. nscf_task = work.register(nscf_strategy, deps={scf_task: “DEN”})

Parameters: node – The task or the worfklow associated to the dependency or string with a filepath. exts – Extensions of the output files that are needed for running the other tasks.
apply_getters(task)[source]

This function is called when we specify the task dependencies with the syntax:

deps={node: “@property”}

In this case the task has to the get property from node before starting the calculation.

At present, the following properties are supported:

• @structure
connecting_vars()[source]

Returns a dictionary with the variables that must be added to the input file in order to connect this Node to its dependencies.

get_filepaths_and_exts()[source]

Returns the paths of the output files produced by self and its extensions

info
node

The Node associated to the dependency.

products[source]

List of output files produces by self.

status

The status of the dependency, i.e. the status of the Node.

class FileNode(filename)[source]

A Node that consists of a file. May be not yet existing

Mainly used to connect Task objects to external files produced in previous runs.

check_status()[source]
color_rgb = array([ 0.4, 0.2, 1. ])
get_results(**kwargs)[source]
opath_from_ext(ext)[source]
products
status
class GarbageCollector(exts, policy)[source]

Bases: object

This object stores information on the

class GridFsFile(path, fs_id=None, mode='b')[source]

Bases: monty.collections.AttrDict

Information on a file that will stored in the MongoDb gridfs collection.

class HistoryRecord(level, pathname, lineno, msg, args, exc_info, func=None)[source]

Bases: object

A HistoryRecord instance represents an entry in the NodeHistory.

HistoryRecord instances are created every time something is logged. They contain all the information pertinent to the event being logged. The main information passed in is in msg and args, which are combined using str(msg) % args to create the message field of the record. The record also includes information such as when the record was created, the source line where the logging call was made

levelno

Numeric logging level for the message (DEBUG, INFO, WARNING, ERROR, CRITICAL)

levelname

Text logging level for the message (“DEBUG”, “INFO”, “WARNING”, “ERROR”, “CRITICAL”)

pathname

Full pathname of the source file where the logging call was issued (if available)

filename

Filename portion of pathname

module

Module (name portion of filename)

lineno

Source line number where the logging call was issued (if available)

func_name

Function name

created

Time when the HistoryRecord was created (time.time() return value)

asctime

Textual time when the HistoryRecord was created

message
The result of record.getMessage(), computed just as the record is emitted

Initialize a logging record with interesting information.

as_dict()[source]
classmethod from_dict(d)[source]
get_message(metadata=False, asctime=True)[source]

Return the message after merging any user-supplied arguments with the message.

Parameters: metadata – True if function and module name should be added. asctime – True if time string should be added.
class Node[source]

Bases: object

Abstract base class defining the interface that must be implemented by the nodes of the calculation.

Nodes are hashable and can be tested for equality

ALL_STATUS = [<Status: Initialized, at 4743045768>, <Status: Locked, at 4727378568>, <Status: Ready, at 4727350088>, <Status: Submitted, at 4740741576>, <Status: Running, at 4758005960>, <Status: Done, at 4758003848>, <Status: AbiCritical, at 4758006600>, <Status: QCritical, at 4758006664>, <Status: Unconverged, at 4758006728>, <Status: Error, at 4758006792>, <Status: Completed, at 4758006856>]
Error

alias of NodeError

Results

alias of NodeResults

S_ABICRITICAL = <Status: AbiCritical, at 4758006600>
S_DONE = <Status: Done, at 4758003848>
S_ERROR = <Status: Error, at 4758006792>
S_INIT = <Status: Initialized, at 4743045768>
S_LOCKED = <Status: Locked, at 4727378568>
S_OK = <Status: Completed, at 4758006856>
S_QCRITICAL = <Status: QCritical, at 4758006664>
S_READY = <Status: Ready, at 4727350088>
S_RUN = <Status: Running, at 4758005960>
S_SUB = <Status: Submitted, at 4740741576>
S_UNCONVERGED = <Status: Unconverged, at 4758006728>
SpectatorError

alias of SpectatorNodeError

add_deps(deps)[source]

Add a list of dependencies to the Node.

Parameters: deps – List of Dependency objects specifying the dependencies of the node. or dictionary mapping nodes to file extensions e.g. {task: “DEN”}
classmethod as_node(obj)[source]

Convert obj into a Node instance.

Returns: obj if obj is a Node instance, cast obj to FileNode instance of obj is a string. None if obj is None
check_status()[source]

Check the status of the Node.

color_rgb = (0, 0, 0)
corrections

List of dictionaries with infornation on the actions performed to solve AbiCritical Events. Each dictionary contains the AbinitEvent who triggered the correction and a human-readable message with the description of the operation performed.

depends_on(other)[source]

True if this node depends on the other node.

deps

List of Dependency objects defining the dependencies of this Node. Empty list if this Node does not have dependencies.

deps_status

Returns a list with the status of the dependencies.

event_handlers

The list of handlers registered for this node. If the node is not a Flow and does not have its own list of handlers the handlers registered at the level of the flow are returned.

This trick allows one to registered different handlers at the level of the Task for testing purposes. By default, we have a common list of handlers for all the nodes in the flow. This choice facilitates the automatic installation of the handlers when we use callbacks to generate new Works and Tasks!

finalized

True if the Node has been finalized.

gc

Garbage collector. None if garbage collection is deactivated. Use flow.set_garbage_collector to initialize the object.

get_children()[source]

Return the list of nodes in the Flow that depends on this Node

get_parents()[source]

Return the list of nodes in the Flow required by this Node

in_spectator_mode
install_event_handlers(categories=None, handlers=None)[source]

Install the EventHandlers for this Node. If no argument is provided the default list of handlers is installed.

Parameters: categories – List of categories to install e.g. base + can_change_physics handlers – explicit list of EventHandler instances. This is the most flexible way to install handlers.

Note

categories and handlers are mutually exclusive.

is_file

True if this node is a file

is_flow

True if this node is a Flow

is_task

True if this node is a Task

is_work

True if this node is a Work

log_correction(event, action)[source]

This method should be called once we have fixed the problem associated to this event. It adds a new entry in the correction history of the node.

Parameters: event – AbinitEvent that triggered the correction. action (str) – Human-readable string with info on the action perfomed to solve the problem.
name

The name of the node (only used for facilitating its identification in the user interface).

node_id

Node identifier.

num_corrections
relworkdir

Return a relative version of the workdir

remove_deps(deps)[source]

Remove a list of dependencies from the Node.

Parameters: deps – List of Dependency objects specifying the dependencies of the node.
send_signal(signal)[source]

Send signal from this node to all connected receivers unless the node is in spectator mode.

signal – (hashable) signal value, see dispatcher connect for details

Return a list of tuple pairs [(receiver, response), ... ] or None if the node is in spectator mode.

if any receiver raises an error, the error propagates back through send, terminating the dispatch loop, so it is quite possible to not have all receivers called if a raises an error.

set_gc(gc)[source]

Set the garbage collector.

set_name(name)[source]

Set the name of the Node.

set_node_id(node_id)[source]

Set the node identifier. Use it carefully!

show_event_handlers(stream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>, verbose=0)[source]

Print to stream the event handlers installed for this flow.

status

The status of the Node.

str_deps()[source]

Return the string representation of the dependencies of the node.

class NodeCorrections[source]

Bases: list

Iterable storing the correctios performed by the EventHandler

exception NodeError[source]

Bases: Exception

Base Exception raised by Node subclasses

class NodeHistory[source]

Bases: collections.deque

Logger-like object

critical(msg, *args, **kwargs)[source]

Log ‘msg % args’ with the critical severity level

info(msg, *args, **kwargs)[source]

Log ‘msg % args’ with the info severity level

to_string(metadata=False)[source]

Returns a string with the history. Set metadata to True to have info on function and module.

warning(msg, *args, **kwargs)[source]

Log ‘msg % args’ with the warning severity level

class NodeResults(node, **kwargs)[source]

Bases: dict, monty.json.MSONable

Dictionary used to store the most important results produced by a Node.

JSON_SCHEMA = {'type': 'object', 'properties': {'node_id': {'type': 'integer', 'required': True}, 'node_finalized': {'type': 'boolean', 'required': True}, 'node_history': {'type': 'array', 'required': True}, 'node_class': {'type': 'string', 'required': True}, 'node_name': {'type': 'string', 'required': True}, 'node_status': {'type': 'string', 'required': True}, 'in': {'type': 'object', 'required': True, 'description': 'dictionary with input parameters'}, 'out': {'type': 'object', 'required': True, 'description': 'dictionary with the output results'}, 'exceptions': {'type': 'array', 'required': True}, 'files': {'type': 'object', 'required': True}}}
as_dict()[source]
exceptions
classmethod from_dict(d)[source]
classmethod from_node(node)[source]

Initialize an instance of NodeResults from a Node subclass.

gridfs_files

List with the absolute paths of the files to be put in GridFs.

json_dump(filename)[source]
classmethod json_load(filename)[source]
push_exceptions(*exceptions)[source]
register_gridfs_files(**kwargs)[source]

This function registers the files that will be saved in GridFS. kwargs is a dictionary mapping the key associated to the file (usually the extension) to the absolute path. By default, files are assumed to be in binary form, for formatted files one should pass a tuple (“filepath”, “t”).

Example:

results.register_gridfs(GSR="path/to/GSR.nc", text_file=("/path/to/txt_file", "t"))


The GSR file is a binary file, whereas text_file is a text file.

update_collection(collection)[source]

Update a mongodb collection.

validate_json_schema()[source]
class Product(ext, path)[source]

Bases: object

A product represents an output file produced by ABINIT instance. This file is needed to start another Task or another Work.

Parameters: ext – ABINIT file extension path – (asbolute) filepath
connecting_vars()[source]

Returns a dictionary with the ABINIT variables that must be used to make the code use this file.

filepath

Absolute path of the file.

classmethod from_file(filepath)[source]

Build a Product instance from a filepath.

exception SpectatorNodeError[source]

Exception raised by Node methods when the node is in spectator mode and we are calling a method with side effects.

class Status[source]

Bases: int

This object is an integer representing the status of the Node.

classmethod all_status_strings()[source]

List of strings with all possible values status.

classmethod as_status(obj)[source]

Convert obj into Status.

color_opts
colored

Return colorized text used to print the status if the stream supports it.

classmethod from_string(s)[source]

Return a Status instance from its string representation.

is_critical

True if status is critical.

check_spectator(node_method)[source]

Decorator for Node methods. Raise SpectatorNodeError.

get_newnode_id()[source]

Returns a new node identifier used for Task, Work and Flow objects.

init_counter()[source]
save_lastnode_id`()[source]

Save the id of the last node created.