aiida.orm.nodes.process.calculation package

Module with Node sub classes for calculation processes.

class aiida.orm.nodes.process.calculation.CalcFunctionNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.utils.mixins.FunctionCalculationMixin, aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a calcfunction.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calcfunction'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode (REPORT)>
_plugin_type_string = 'process.calculation.calcfunction.CalcFunctionNode.'
_query_type_string = 'process.calculation.calcfunction.'
validate_outgoing(target: Node, link_type: aiida.common.links.LinkType, link_label: str)None[source]

Validate adding a link of the given type from ourself to a given node.

A calcfunction cannot return Data, so if we receive an outgoing link to a stored Data node, that means the user created a Data node within our function body and stored it themselves or they are returning an input node. The latter use case is reserved for @workfunctions, as they can have RETURN links.

Parameters
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

Raises
  • TypeError – if target is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

class aiida.orm.nodes.process.calculation.CalcJobNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a CalcJob.

CALC_JOB_STATE_KEY = 'state'
REMOTE_WORKDIR_KEY = 'remote_workdir'
RETRIEVE_LIST_KEY = 'retrieve_list'
RETRIEVE_TEMPORARY_LIST_KEY = 'retrieve_temporary_list'
SCHEDULER_DETAILED_JOB_INFO_KEY = 'detailed_job_info'
SCHEDULER_JOB_ID_KEY = 'job_id'
SCHEDULER_LAST_CHECK_TIME_KEY = 'scheduler_lastchecktime'
SCHEDULER_LAST_JOB_INFO_KEY = 'last_job_info'
SCHEDULER_STATE_KEY = 'scheduler_state'
__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calcjob'
_abc_impl = <_abc_data object>
_get_objects_to_hash() → List[Any][source]

Return a list of objects which should be included in the hash.

This method is purposefully overridden from the base Node class, because we do not want to include the repository folder in the hash. The reason is that the hash of this node is computed in the store method, at which point the input files that will be stored in the repository have not yet been generated. Including these anyway in the computation of the hash would mean that the hash of the node would change as soon as the process has started and the input files have been written to the repository.

_hash_ignored_attributes: Tuple[str, ] = ('queue_name', 'account', 'qos', 'priority', 'max_wallclock_seconds', 'max_memory_kb')
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calcjob.CalcJobNode (REPORT)>
_plugin_type_string = 'process.calculation.calcjob.CalcJobNode.'
_query_type_string = 'process.calculation.calcjob.'
_tools = None
_updatable_attributes: Tuple[str, ] = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status', 'state', 'remote_workdir', 'retrieve_list', 'retrieve_temporary_list', 'job_id', 'scheduler_state', 'scheduler_lastchecktime', 'last_job_info', 'detailed_job_info')
static _validate_retrieval_directive(directives: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Validate a list or tuple of file retrieval directives.

Parameters

directives – a list or tuple of file retrieval directives

Raises

ValueError – if the format of the directives is invalid

delete_state()None[source]

Delete the calculation job state attribute if it exists.

get_authinfo() → AuthInfo[source]

Return the AuthInfo that is configured for the Computer set for this node.

Returns

AuthInfo

get_builder_restart() → ProcessBuilder[source]

Return a ProcessBuilder that is ready to relaunch the same CalcJob that created this node.

The process class will be set based on the process_type of this node and the inputs of the builder will be prepopulated with the inputs registered for this node. This functionality is very useful if a process has completed and you want to relaunch it with slightly different inputs.

In addition to prepopulating the input nodes, which is implemented by the base ProcessNode class, here we also add the options that were passed in the metadata input of the CalcJob process.

get_description()str[source]

Return a description of the node based on its properties.

get_detailed_job_info() → Optional[dict][source]

Return the detailed job info dictionary.

The scheduler is polled for the detailed job info after the job is completed and ready to be retrieved.

Returns

the dictionary with detailed job info if defined or None

get_job_id() → Optional[str][source]

Return job id that was assigned to the calculation by the scheduler.

Returns

the string representation of the scheduler job id

get_last_job_info() → Optional[JobInfo][source]

Return the last information asked to the scheduler about the status of the job.

The last job info is updated on every poll of the scheduler, except for the final poll when the job drops from the scheduler’s job queue. For completed jobs, the last job info therefore contains the “second-to-last” job info that still shows the job as running. Please use get_detailed_job_info() instead.

Returns

a JobInfo object (that closely resembles a dictionary) or None.

get_option(name: str) → Optional[Any][source]

Retun the value of an option that was set for this CalcJobNode

Parameters

name – the option name

Returns

the option value or None

Raises

ValueError for unknown option

get_options() → Dict[str, Any][source]

Return the dictionary of options set for this CalcJobNode

Returns

dictionary of the options and their values

get_parser_class() → Optional[Type[Parser]][source]

Return the output parser object for this calculation or None if no parser is set.

Returns

a Parser class.

Raises

aiida.common.exceptions.EntryPointError – if the parser entry point can not be resolved.

get_remote_workdir() → Optional[str][source]

Return the path to the remote (on cluster) scratch folder of the calculation.

Returns

a string with the remote path

get_retrieve_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][source]

Return the list of files/directories to be retrieved on the cluster after the calculation has completed.

Returns

a list of file directives

get_retrieve_temporary_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][source]

Return list of files to be retrieved from the cluster which will be available during parsing.

Returns

a list of file directives

get_retrieved_node() → Optional[FolderData][source]

Return the retrieved data folder.

Returns

the retrieved FolderData node or None if not found

get_scheduler_lastchecktime() → Optional[datetime.datetime][source]

Return the time of the last update of the scheduler state by the daemon or None if it was never set.

Returns

a datetime object or None

get_scheduler_state() → Optional[JobState][source]

Return the status of the calculation according to the cluster scheduler.

Returns

a JobState enum instance.

get_scheduler_stderr() → Optional[AnyStr][source]

Return the scheduler stdout output if the calculation has finished and been retrieved, None otherwise.

Returns

scheduler stdout output or None

get_scheduler_stdout() → Optional[AnyStr][source]

Return the scheduler stderr output if the calculation has finished and been retrieved, None otherwise.

Returns

scheduler stderr output or None

get_state() → Optional[aiida.common.datastructures.CalcJobState][source]

Return the calculation job active sub state.

The calculation job state serves to give more granular state information to CalcJobs, in addition to the generic process state, while the calculation job is active. The state can take values from the enumeration defined in aiida.common.datastructures.CalcJobState and can be used to query for calculation jobs in specific active states.

Returns

instance of aiida.common.datastructures.CalcJobState or None if invalid value, or not set

get_transport() → Transport[source]

Return the transport for this calculation.

Returns

Transport configured with the AuthInfo associated to the computer of this node

Return the link label used for the retrieved FolderData node.

property res

To be used to get direct access to the parsed parameters.

Returns

an instance of the CalcJobResultManager.

Note

a practical example on how it is meant to be used: let’s say that there is a key ‘energy’ in the dictionary of the parsed results which contains a list of floats. The command calc.res.energy will return such a list.

set_detailed_job_info(detailed_job_info: Optional[dict])None[source]

Set the detailed job info dictionary.

Parameters

detailed_job_info – a dictionary with metadata with the accounting of a completed job

set_job_id(job_id: Union[int, str])None[source]

Set the job id that was assigned to the calculation by the scheduler.

Note

the id will always be stored as a string

Parameters

job_id – the id assigned by the scheduler after submission

set_last_job_info(last_job_info: JobInfo)None[source]

Set the last job info.

Parameters

last_job_info – a JobInfo object

set_option(name: str, value: Any)None[source]

Set an option to the given value

Parameters
  • name – the option name

  • value – the value to set

Raises

ValueError for unknown option

Raises

TypeError for values with invalid type

set_options(options: Dict[str, Any])None[source]

Set the options for this CalcJobNode

Parameters

options – dictionary of option and their values to set

set_remote_workdir(remote_workdir: str)None[source]

Set the absolute path to the working directory on the remote computer where the calculation is run.

Parameters

remote_workdir – absolute filepath to the remote working directory

set_retrieve_list(retrieve_list: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Set the retrieve list.

This list of directives will instruct the daemon what files to retrieve after the calculation has completed. list or tuple of files or paths that should be retrieved by the daemon.

Parameters

retrieve_list – list or tuple of with filepath directives

set_retrieve_temporary_list(retrieve_temporary_list: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Set the retrieve temporary list.

The retrieve temporary list stores files that are retrieved after completion and made available during parsing and are deleted as soon as the parsing has been completed.

Parameters

retrieve_temporary_list – list or tuple of with filepath directives

set_scheduler_state(state: JobState)None[source]

Set the scheduler state.

Parameters

state – an instance of JobState

set_state(state: aiida.common.datastructures.CalcJobState)None[source]

Set the calculation active job state.

Raise

ValueError if state is invalid

property tools

Return the calculation tools that are registered for the process type associated with this calculation.

If the entry point name stored in the process_type of the CalcJobNode has an accompanying entry point in the aiida.tools.calculations entry point category, it will attempt to load the entry point and instantiate it passing the node to the constructor. If the entry point does not exist, cannot be resolved or loaded, a warning will be logged and the base CalculationTools class will be instantiated and returned.

Returns

CalculationTools instance

class aiida.orm.nodes.process.calculation.CalculationNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.nodes.process.process.ProcessNode

Base class for all nodes representing the execution of a calculation process.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calculation'
_abc_impl = <_abc_data object>
_cachable = True
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calculation.CalculationNode (REPORT)>
_plugin_type_string = 'process.calculation.CalculationNode.'
_query_type_string = 'process.calculation.'
_storable = True
_unstorable_message = 'storing for this node has been disabled'
property inputs

Return an instance of NodeLinksManager to manage incoming INPUT_CALC links

The returned Manager allows you to easily explore the nodes connected to this node via an incoming INPUT_CALC link. The incoming nodes are reachable by their link labels which are attributes of the manager.

property outputs

Return an instance of NodeLinksManager to manage outgoing CREATE links

The returned Manager allows you to easily explore the nodes connected to this node via an outgoing CREATE link. The outgoing nodes are reachable by their link labels which are attributes of the manager.

Submodules

Module with Node sub class for calculation function processes.

class aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.utils.mixins.FunctionCalculationMixin, aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a calcfunction.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calcfunction'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode (REPORT)>
_plugin_type_string = 'process.calculation.calcfunction.CalcFunctionNode.'
_query_type_string = 'process.calculation.calcfunction.'
validate_outgoing(target: Node, link_type: aiida.common.links.LinkType, link_label: str)None[source]

Validate adding a link of the given type from ourself to a given node.

A calcfunction cannot return Data, so if we receive an outgoing link to a stored Data node, that means the user created a Data node within our function body and stored it themselves or they are returning an input node. The latter use case is reserved for @workfunctions, as they can have RETURN links.

Parameters
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

Raises
  • TypeError – if target is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

Module with Node sub class for calculation job processes.

class aiida.orm.nodes.process.calculation.calcjob.CalcJobNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a CalcJob.

CALC_JOB_STATE_KEY = 'state'
REMOTE_WORKDIR_KEY = 'remote_workdir'
RETRIEVE_LIST_KEY = 'retrieve_list'
RETRIEVE_TEMPORARY_LIST_KEY = 'retrieve_temporary_list'
SCHEDULER_DETAILED_JOB_INFO_KEY = 'detailed_job_info'
SCHEDULER_JOB_ID_KEY = 'job_id'
SCHEDULER_LAST_CHECK_TIME_KEY = 'scheduler_lastchecktime'
SCHEDULER_LAST_JOB_INFO_KEY = 'last_job_info'
SCHEDULER_STATE_KEY = 'scheduler_state'
__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calcjob'
_abc_impl = <_abc_data object>
_get_objects_to_hash() → List[Any][source]

Return a list of objects which should be included in the hash.

This method is purposefully overridden from the base Node class, because we do not want to include the repository folder in the hash. The reason is that the hash of this node is computed in the store method, at which point the input files that will be stored in the repository have not yet been generated. Including these anyway in the computation of the hash would mean that the hash of the node would change as soon as the process has started and the input files have been written to the repository.

_hash_ignored_attributes: Tuple[str, ] = ('queue_name', 'account', 'qos', 'priority', 'max_wallclock_seconds', 'max_memory_kb')
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calcjob.CalcJobNode (REPORT)>
_plugin_type_string = 'process.calculation.calcjob.CalcJobNode.'
_query_type_string = 'process.calculation.calcjob.'
_tools = None
_updatable_attributes: Tuple[str, ] = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status', 'state', 'remote_workdir', 'retrieve_list', 'retrieve_temporary_list', 'job_id', 'scheduler_state', 'scheduler_lastchecktime', 'last_job_info', 'detailed_job_info')
static _validate_retrieval_directive(directives: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Validate a list or tuple of file retrieval directives.

Parameters

directives – a list or tuple of file retrieval directives

Raises

ValueError – if the format of the directives is invalid

delete_state()None[source]

Delete the calculation job state attribute if it exists.

get_authinfo() → AuthInfo[source]

Return the AuthInfo that is configured for the Computer set for this node.

Returns

AuthInfo

get_builder_restart() → ProcessBuilder[source]

Return a ProcessBuilder that is ready to relaunch the same CalcJob that created this node.

The process class will be set based on the process_type of this node and the inputs of the builder will be prepopulated with the inputs registered for this node. This functionality is very useful if a process has completed and you want to relaunch it with slightly different inputs.

In addition to prepopulating the input nodes, which is implemented by the base ProcessNode class, here we also add the options that were passed in the metadata input of the CalcJob process.

get_description()str[source]

Return a description of the node based on its properties.

get_detailed_job_info() → Optional[dict][source]

Return the detailed job info dictionary.

The scheduler is polled for the detailed job info after the job is completed and ready to be retrieved.

Returns

the dictionary with detailed job info if defined or None

get_job_id() → Optional[str][source]

Return job id that was assigned to the calculation by the scheduler.

Returns

the string representation of the scheduler job id

get_last_job_info() → Optional[JobInfo][source]

Return the last information asked to the scheduler about the status of the job.

The last job info is updated on every poll of the scheduler, except for the final poll when the job drops from the scheduler’s job queue. For completed jobs, the last job info therefore contains the “second-to-last” job info that still shows the job as running. Please use get_detailed_job_info() instead.

Returns

a JobInfo object (that closely resembles a dictionary) or None.

get_option(name: str) → Optional[Any][source]

Retun the value of an option that was set for this CalcJobNode

Parameters

name – the option name

Returns

the option value or None

Raises

ValueError for unknown option

get_options() → Dict[str, Any][source]

Return the dictionary of options set for this CalcJobNode

Returns

dictionary of the options and their values

get_parser_class() → Optional[Type[Parser]][source]

Return the output parser object for this calculation or None if no parser is set.

Returns

a Parser class.

Raises

aiida.common.exceptions.EntryPointError – if the parser entry point can not be resolved.

get_remote_workdir() → Optional[str][source]

Return the path to the remote (on cluster) scratch folder of the calculation.

Returns

a string with the remote path

get_retrieve_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][source]

Return the list of files/directories to be retrieved on the cluster after the calculation has completed.

Returns

a list of file directives

get_retrieve_temporary_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][source]

Return list of files to be retrieved from the cluster which will be available during parsing.

Returns

a list of file directives

get_retrieved_node() → Optional[FolderData][source]

Return the retrieved data folder.

Returns

the retrieved FolderData node or None if not found

get_scheduler_lastchecktime() → Optional[datetime.datetime][source]

Return the time of the last update of the scheduler state by the daemon or None if it was never set.

Returns

a datetime object or None

get_scheduler_state() → Optional[JobState][source]

Return the status of the calculation according to the cluster scheduler.

Returns

a JobState enum instance.

get_scheduler_stderr() → Optional[AnyStr][source]

Return the scheduler stdout output if the calculation has finished and been retrieved, None otherwise.

Returns

scheduler stdout output or None

get_scheduler_stdout() → Optional[AnyStr][source]

Return the scheduler stderr output if the calculation has finished and been retrieved, None otherwise.

Returns

scheduler stderr output or None

get_state() → Optional[aiida.common.datastructures.CalcJobState][source]

Return the calculation job active sub state.

The calculation job state serves to give more granular state information to CalcJobs, in addition to the generic process state, while the calculation job is active. The state can take values from the enumeration defined in aiida.common.datastructures.CalcJobState and can be used to query for calculation jobs in specific active states.

Returns

instance of aiida.common.datastructures.CalcJobState or None if invalid value, or not set

get_transport() → Transport[source]

Return the transport for this calculation.

Returns

Transport configured with the AuthInfo associated to the computer of this node

Return the link label used for the retrieved FolderData node.

property res

To be used to get direct access to the parsed parameters.

Returns

an instance of the CalcJobResultManager.

Note

a practical example on how it is meant to be used: let’s say that there is a key ‘energy’ in the dictionary of the parsed results which contains a list of floats. The command calc.res.energy will return such a list.

set_detailed_job_info(detailed_job_info: Optional[dict])None[source]

Set the detailed job info dictionary.

Parameters

detailed_job_info – a dictionary with metadata with the accounting of a completed job

set_job_id(job_id: Union[int, str])None[source]

Set the job id that was assigned to the calculation by the scheduler.

Note

the id will always be stored as a string

Parameters

job_id – the id assigned by the scheduler after submission

set_last_job_info(last_job_info: JobInfo)None[source]

Set the last job info.

Parameters

last_job_info – a JobInfo object

set_option(name: str, value: Any)None[source]

Set an option to the given value

Parameters
  • name – the option name

  • value – the value to set

Raises

ValueError for unknown option

Raises

TypeError for values with invalid type

set_options(options: Dict[str, Any])None[source]

Set the options for this CalcJobNode

Parameters

options – dictionary of option and their values to set

set_remote_workdir(remote_workdir: str)None[source]

Set the absolute path to the working directory on the remote computer where the calculation is run.

Parameters

remote_workdir – absolute filepath to the remote working directory

set_retrieve_list(retrieve_list: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Set the retrieve list.

This list of directives will instruct the daemon what files to retrieve after the calculation has completed. list or tuple of files or paths that should be retrieved by the daemon.

Parameters

retrieve_list – list or tuple of with filepath directives

set_retrieve_temporary_list(retrieve_temporary_list: Sequence[Union[str, Tuple[str, str, str]]])None[source]

Set the retrieve temporary list.

The retrieve temporary list stores files that are retrieved after completion and made available during parsing and are deleted as soon as the parsing has been completed.

Parameters

retrieve_temporary_list – list or tuple of with filepath directives

set_scheduler_state(state: JobState)None[source]

Set the scheduler state.

Parameters

state – an instance of JobState

set_state(state: aiida.common.datastructures.CalcJobState)None[source]

Set the calculation active job state.

Raise

ValueError if state is invalid

property tools

Return the calculation tools that are registered for the process type associated with this calculation.

If the entry point name stored in the process_type of the CalcJobNode has an accompanying entry point in the aiida.tools.calculations entry point category, it will attempt to load the entry point and instantiate it passing the node to the constructor. If the entry point does not exist, cannot be resolved or loaded, a warning will be logged and the base CalculationTools class will be instantiated and returned.

Returns

CalculationTools instance

Module with Node sub class for calculation processes.

class aiida.orm.nodes.process.calculation.calculation.CalculationNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[source]

Bases: aiida.orm.nodes.process.process.ProcessNode

Base class for all nodes representing the execution of a calculation process.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.calculation.calculation'
_abc_impl = <_abc_data object>
_cachable = True
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.calculation.calculation.CalculationNode (REPORT)>
_plugin_type_string = 'process.calculation.CalculationNode.'
_query_type_string = 'process.calculation.'
_storable = True
_unstorable_message = 'storing for this node has been disabled'
property inputs

Return an instance of NodeLinksManager to manage incoming INPUT_CALC links

The returned Manager allows you to easily explore the nodes connected to this node via an incoming INPUT_CALC link. The incoming nodes are reachable by their link labels which are attributes of the manager.

property outputs

Return an instance of NodeLinksManager to manage outgoing CREATE links

The returned Manager allows you to easily explore the nodes connected to this node via an outgoing CREATE link. The outgoing nodes are reachable by their link labels which are attributes of the manager.