aiida.orm package

Main module to expose all orm classes and methods

class aiida.orm.ArrayData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.data.Data

Store a set of arrays on disk (rather than on the database) in an efficient way using numpy.save() (therefore, this class requires numpy to be installed).

Each array is stored within the Node folder as a different .npy file.

Note

Before storing, no caching is done: if you perform a get_array() call, the array will be re-read from disk. If instead the ArrayData node has already been stored, the array is cached in memory after the first read, and the cached array is used thereafter. If too much RAM memory is used, you can clear the cache with the clear_internal_cache() method.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.array.array'
_abc_impl = <_abc_data object>
_arraynames_from_files()[源代码]

Return a list of all arrays stored in the node, listing the files (and not relying on the properties).

_arraynames_from_properties()[源代码]

Return a list of all arrays stored in the node, listing the attributes starting with the correct prefix.

_cached_arrays = None
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.array.ArrayData (REPORT)>
_plugin_type_string = 'data.array.ArrayData.'
_query_type_string = 'data.array.'
_validate()[源代码]

Check if the list of .npy files stored inside the node and the list of properties match. Just a name check, no check on the size since this would require to reload all arrays and this may take time and memory.

array_prefix = 'array|'
clear_internal_cache()[源代码]

Clear the internal memory cache where the arrays are stored after being read from disk (used in order to reduce at minimum the readings from disk). This function is useful if you want to keep the node in memory, but you do not want to waste memory to cache the arrays in RAM.

delete_array(name)[源代码]

Delete an array from the node. Can only be called before storing.

参数

name – The name of the array to delete from the node.

get_array(name)[源代码]

Return an array stored in the node

参数

name – The name of the array to return.

get_arraynames()[源代码]

Return a list of all arrays stored in the node, listing the files (and not relying on the properties).

0.7 新版功能: Renamed from arraynames

get_iterarrays()[源代码]

Iterator that returns tuples (name, array) for each array stored in the node.

1.0 新版功能: Renamed from iterarrays

get_shape(name)[源代码]

Return the shape of an array (read from the value cached in the properties for efficiency reasons).

参数

name – The name of the array.

initialize()[源代码]

Initialize internal variables for the backend node

This needs to be called explicitly in each specific subclass implementation of the init.

set_array(name, array)[源代码]

Store a new numpy array inside the node. Possibly overwrite the array if it already existed.

Internally, it stores a name.npy file in numpy format.

参数
  • name – The name of the array.

  • array – The numpy array to store.

class aiida.orm.AuthInfo(computer, user, backend=None)[源代码]

基类:aiida.orm.entities.Entity

ORM class that models the authorization information that allows a User to connect to a Computer.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of AuthInfo entries.

__module__ = 'aiida.orm.authinfos'
__parameters__ = ()
delete(pk)[源代码]

Delete an entry from the collection.

参数

pk – the pk of the entry to delete

PROPERTY_WORKDIR = 'workdir'
__init__(computer, user, backend=None)[源代码]

Create an AuthInfo instance for the given computer and user.

参数
返回类型

aiida.orm.authinfos.AuthInfo

__module__ = 'aiida.orm.authinfos'
__str__()[源代码]

Return str(self).

property computer

Return the computer associated with this instance.

返回类型

aiida.orm.computers.Computer

property enabled

Return whether this instance is enabled.

返回

True if enabled, False otherwise

返回类型

bool

get_auth_params()[源代码]

Return the dictionary of authentication parameters

返回

a dictionary with authentication parameters

返回类型

dict

get_metadata()[源代码]

Return the dictionary of metadata

返回

a dictionary with metadata

返回类型

dict

get_transport()[源代码]

Return a fully configured transport that can be used to connect to the computer set for this instance.

返回类型

aiida.transports.Transport

get_workdir()[源代码]

Return the working directory.

If no explicit work directory is set for this instance, the working directory of the computer will be returned.

返回

the working directory

返回类型

str

set_auth_params(auth_params)[源代码]

Set the dictionary of authentication parameters

参数

auth_params – a dictionary with authentication parameters

set_metadata(metadata)[源代码]

Set the dictionary of metadata

参数

metadata (dict) – a dictionary with metadata

property user

Return the user associated with this instance.

返回类型

aiida.orm.users.User

class aiida.orm.AutoGroup(label=None, user=None, description='', type_string=None, backend=None)[源代码]

基类:aiida.orm.groups.Group

Group to be used to contain selected nodes generated while aiida.orm.autogroup.CURRENT_AUTOGROUP is set.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.groups'
_abc_impl = <_abc_data object>
_type_string = 'core.auto'
class aiida.orm.BandsData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.array.kpoints.KpointsData

Class to handle bands data

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.array.bands'
_abc_impl = <_abc_data object>
_get_band_segments(cartesian)[源代码]

Return the band segments.

_get_bandplot_data(cartesian, prettify_format=None, join_symbol=None, get_segments=False, y_origin=0.0)[源代码]

Get data to plot a band structure

参数
  • cartesian – if True, distances (for the x-axis) are computed in cartesian coordinates, otherwise they are computed in reciprocal coordinates. cartesian=True will fail if no cell has been set.

  • prettify_format – by default, strings are not prettified. If you want to prettify them, pass a valid prettify_format string (see valid options in the docstring of :py:func:prettify_labels).

  • join_symbols – by default, strings are not joined. If you pass a string, this is used to join strings that are much closer than a given threshold. The most typical string is the pipe symbol: |.

  • get_segments – if True, also computes the band split into segments

  • y_origin – if present, shift bands so to set the value specified at y=0

返回

a plot_info dictiorary, whose keys are x (array of distances for the x axis of the plot); y (array of bands), labels (list of tuples in the format (float x value of the label, label string), band_type_idx (array containing an index for each band: if there is only one spin, then it’s an array of zeros, of length equal to the number of bands at each point; if there are two spins, then it’s an array of zeros or ones depending on the type of spin; the length is always equalt to the total number of bands per kpoint).

static _get_mpl_body_template(paths)[源代码]
参数

paths – paths of k-points

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.bands.BandsData (REPORT)>
_matplotlib_get_dict(main_file_name='', comments=True, title='', legend=None, legend2=None, y_max_lim=None, y_min_lim=None, y_origin=0.0, prettify_format=None, **kwargs)[源代码]

Prepare the data to send to the python-matplotlib plotting script.

参数
  • comments – if True, print comments (if it makes sense for the given format)

  • plot_info – a dictionary

  • setnumber_offset – an offset to be applied to all set numbers (i.e. s0 is replaced by s[offset], s1 by s[offset+1], etc.)

  • color_number – the color number for lines, symbols, error bars and filling (should be less than the parameter MAX_NUM_AGR_COLORS defined below)

  • title – the title

  • legend – the legend (applied only to the first of the set)

  • legend2 – the legend for second-type spins (applied only to the first of the set)

  • y_max_lim – the maximum on the y axis (if None, put the maximum of the bands)

  • y_min_lim – the minimum on the y axis (if None, put the minimum of the bands)

  • y_origin – the new origin of the y axis -> all bands are replaced by bands-y_origin

  • prettify_format – if None, use the default prettify format. Otherwise specify a string with the prettifier to use.

  • kwargs – additional customization variables; only a subset is accepted, see internal variable ‘valid_additional_keywords

_plugin_type_string = 'data.array.bands.BandsData.'
_prepare_agr(main_file_name='', comments=True, setnumber_offset=0, color_number=1, color_number2=2, legend='', title='', y_max_lim=None, y_min_lim=None, y_origin=0.0, prettify_format=None)[源代码]

Prepare an xmgrace agr file.

参数
  • comments – if True, print comments (if it makes sense for the given format)

  • plot_info – a dictionary

  • setnumber_offset – an offset to be applied to all set numbers (i.e. s0 is replaced by s[offset], s1 by s[offset+1], etc.)

  • color_number – the color number for lines, symbols, error bars and filling (should be less than the parameter MAX_NUM_AGR_COLORS defined below)

  • color_number2 – the color number for lines, symbols, error bars and filling for the second-type spins (should be less than the parameter MAX_NUM_AGR_COLORS defined below)

  • legend – the legend (applied only to the first set)

  • title – the title

  • y_max_lim – the maximum on the y axis (if None, put the maximum of the bands); applied after shifting the origin by y_origin

  • y_min_lim – the minimum on the y axis (if None, put the minimum of the bands); applied after shifting the origin by y_origin

  • y_origin – the new origin of the y axis -> all bands are replaced by bands-y_origin

  • prettify_format – if None, use the default prettify format. Otherwise specify a string with the prettifier to use.

_prepare_agr_batch(main_file_name='', comments=True, prettify_format=None)[源代码]

Prepare two files, data and batch, to be plot with xmgrace as: xmgrace -batch file.dat

参数
  • main_file_name – if the user asks to write the main content on a file, this contains the filename. This should be used to infer a good filename for the additional files. In this case, we remove the extension, and add ‘_data.dat’

  • comments – if True, print comments (if it makes sense for the given format)

  • prettify_format – if None, use the default prettify format. Otherwise specify a string with the prettifier to use.

_prepare_dat_blocks(main_file_name='', comments=True)[源代码]

Format suitable for gnuplot using blocks. Columns with x and y (path and band energy). Several blocks, separated by two empty lines, one per energy band.

参数

comments – if True, print comments (if it makes sense for the given format)

_prepare_dat_multicolumn(main_file_name='', comments=True)[源代码]

Write an N x M matrix. First column is the distance between kpoints, The other columns are the bands. Header contains number of kpoints and the number of bands (commented).

参数

comments – if True, print comments (if it makes sense for the given format)

_prepare_gnuplot(main_file_name=None, title='', comments=True, prettify_format=None, y_max_lim=None, y_min_lim=None, y_origin=0.0)[源代码]

Prepare an gnuplot script to plot the bands, with the .dat file returned as an independent file.

参数
  • main_file_name – if the user asks to write the main content on a file, this contains the filename. This should be used to infer a good filename for the additional files. In this case, we remove the extension, and add ‘_data.dat’

  • title – if specified, add a title to the plot

  • comments – if True, print comments (if it makes sense for the given format)

  • prettify_format – if None, use the default prettify format. Otherwise specify a string with the prettifier to use.

_prepare_json(main_file_name='', comments=True)[源代码]

Prepare a json file in a format compatible with the AiiDA band visualizer

参数

comments – if True, print comments (if it makes sense for the given format)

_prepare_mpl_pdf(main_file_name='', *args, **kwargs)[源代码]

Prepare a python script using matplotlib to plot the bands, with the JSON returned as an independent file.

For the possible parameters, see documentation of _matplotlib_get_dict()

_prepare_mpl_png(main_file_name='', *args, **kwargs)[源代码]

Prepare a python script using matplotlib to plot the bands, with the JSON returned as an independent file.

For the possible parameters, see documentation of _matplotlib_get_dict()

_prepare_mpl_singlefile(*args, **kwargs)[源代码]

Prepare a python script using matplotlib to plot the bands

For the possible parameters, see documentation of _matplotlib_get_dict()

_prepare_mpl_withjson(main_file_name='', *args, **kwargs)[源代码]

Prepare a python script using matplotlib to plot the bands, with the JSON returned as an independent file.

For the possible parameters, see documentation of _matplotlib_get_dict()

_query_type_string = 'data.array.bands.'
_set_pbc(value)[源代码]

validate the pbc, then store them

_validate_bands_occupations(bands, occupations=None, labels=None)[源代码]

Validate the list of bands and of occupations before storage. Kpoints must be set in advance. Bands and occupations must be convertible into arrays of Nkpoints x Nbands floats or Nspins x Nkpoints x Nbands; Nkpoints must correspond to the number of kpoints.

property array_labels

Get the labels associated with the band arrays

get_bands(also_occupations=False, also_labels=False)[源代码]

Returns an array (nkpoints x num_bands or nspins x nkpoints x num_bands) of energies. :param also_occupations: if True, returns also the occupations array. Default = False

set_bands(bands, units=None, occupations=None, labels=None)[源代码]

Set an array of band energies of dimension (nkpoints x nbands). Kpoints must be set in advance. Can contain floats or None. :param bands: a list of nkpoints lists of nbands bands, or a 2D array of shape (nkpoints x nbands), with band energies for each kpoint :param units: optional, energy units :param occupations: optional, a 2D list or array of floats of same shape as bands, with the occupation associated to each band

set_kpointsdata(kpointsdata)[源代码]

Load the kpoints from a kpoint object. :param kpointsdata: an instance of KpointsData class

show_mpl(**kwargs)[源代码]

Call a show() command for the band structure using matplotlib. This uses internally the ‘mpl_singlefile’ format, with empty main_file_name.

Other kwargs are passed to self._exportcontent.

property units

Units in which the data in bands were stored. A string

class aiida.orm.BaseType(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Data sub class to be used as a base for data containers that represent base python data types.

__abstractmethods__ = frozenset({})
__eq__(other)[源代码]

Fallback equality comparison by uuid (can be overwritten by specific types)

__hash__ = None
__init__(*args, **kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.data.base'
__ne__(other)[源代码]

Return self!=value.

__str__()[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.base.BaseType (REPORT)>
_plugin_type_string = 'data.base.BaseType.'
_query_type_string = 'data.base.'
new(value=None)[源代码]
property value
class aiida.orm.Bool(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.base.BaseType

Data sub class to represent a boolean value.

__abstractmethods__ = frozenset({})
__bool__()[源代码]
__int__()[源代码]
__module__ = 'aiida.orm.nodes.data.bool'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.bool.Bool (REPORT)>
_plugin_type_string = 'data.bool.Bool.'
_query_type_string = 'data.bool.'
_type

builtins.bool 的别名

class aiida.orm.CalcFunctionNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类: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[源代码]

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.

参数
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

引发
  • 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.CalcJobNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类: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_SINGLE_FILE_LIST_KEY = 'retrieve_singlefile_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][源代码]

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.'
property _raw_input_folder

Get the input folder object.

返回

the input folder object.

Raise

NotExistent: if the raw folder hasn’t been created yet

_repository_base_path = 'raw_input'
_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', 'retrieve_singlefile_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[源代码]

Validate a list or tuple of file retrieval directives.

参数

directives – a list or tuple of file retrieval directives

引发

ValueError – if the format of the directives is invalid

delete_state()None[源代码]

Delete the calculation job state attribute if it exists.

get_authinfo()AuthInfo[源代码]

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

返回

AuthInfo

get_builder_restart() → ProcessBuilder[源代码]

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[源代码]

Return a description of the node based on its properties.

get_detailed_job_info() → Optional[dict][源代码]

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.

返回

the dictionary with detailed job info if defined or None

get_job_id() → Optional[str][源代码]

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

返回

the string representation of the scheduler job id

get_last_job_info() → Optional[JobInfo][源代码]

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.

返回

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

get_option(name: str) → Optional[Any][源代码]

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

参数

name – the option name

返回

the option value or None

Raises

ValueError for unknown option

get_options()Dict[str, Any][源代码]

Return the dictionary of options set for this CalcJobNode

返回

dictionary of the options and their values

get_parser_class() → Optional[Type[Parser]][源代码]

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

返回

a Parser class.

引发

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

get_remote_workdir() → Optional[str][源代码]

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

返回

a string with the remote path

get_retrieve_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][源代码]

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

返回

a list of file directives

get_retrieve_singlefile_list()[源代码]

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

返回

list of single file retrieval directives

1.0.0 版后已移除: Will be removed in v2.0.0, use aiida.orm.nodes.process.calculation.calcjob.CalcJobNode.get_retrieve_temporary_list() instead.

get_retrieve_temporary_list() → Optional[Sequence[Union[str, Tuple[str, str, str]]]][源代码]

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

返回

a list of file directives

get_retrieved_node() → Optional[FolderData][源代码]

Return the retrieved data folder.

返回

the retrieved FolderData node or None if not found

get_scheduler_lastchecktime() → Optional[datetime.datetime][源代码]

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

返回

a datetime object or None

get_scheduler_state() → Optional[JobState][源代码]

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

返回

a JobState enum instance.

get_scheduler_stderr() → Optional[AnyStr][源代码]

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

返回

scheduler stdout output or None

get_scheduler_stdout() → Optional[AnyStr][源代码]

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

返回

scheduler stderr output or None

get_state() → Optional[aiida.common.datastructures.CalcJobState][源代码]

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.

返回

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

get_transport() → Transport[源代码]

Return the transport for this calculation.

返回

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.

返回

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[源代码]

Set the detailed job info dictionary.

参数

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

set_job_id(job_id: Union[int, str])None[源代码]

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

注解

the id will always be stored as a string

参数

job_id – the id assigned by the scheduler after submission

set_last_job_info(last_job_info: JobInfo)None[源代码]

Set the last job info.

参数

last_job_info – a JobInfo object

set_option(name: str, value: Any)None[源代码]

Set an option to the given value

参数
  • 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[源代码]

Set the options for this CalcJobNode

参数

options – dictionary of option and their values to set

set_remote_workdir(remote_workdir: str)None[源代码]

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

参数

remote_workdir – absolute filepath to the remote working directory

set_retrieve_list(retrieve_list: Sequence[Union[str, Tuple[str, str, str]]])None[源代码]

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.

参数

retrieve_list – list or tuple of with filepath directives

set_retrieve_singlefile_list(retrieve_singlefile_list)[源代码]

Set the retrieve singlefile list.

The files will be stored as SinglefileData instances and added as output nodes to this calculation node. The format of a single file directive is a tuple or list of length 3 with the following entries:

  1. the link label under which the file should be added

  2. the SinglefileData class or sub class to use to store

  3. the filepath relative to the remote working directory of the calculation

参数

retrieve_singlefile_list – list or tuple of single file directives

1.0.0 版后已移除: Will be removed in v2.0.0. Use set_retrieve_temporary_list() instead.

set_retrieve_temporary_list(retrieve_temporary_list: Sequence[Union[str, Tuple[str, str, str]]])None[源代码]

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.

参数

retrieve_temporary_list – list or tuple of with filepath directives

set_scheduler_state(state: JobState)None[源代码]

Set the scheduler state.

参数

state – an instance of JobState

set_state(state: aiida.common.datastructures.CalcJobState)None[源代码]

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.

返回

CalculationTools instance

class aiida.orm.CalculationNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类: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.

class aiida.orm.CifData(ase=None, file=None, filename=None, values=None, source=None, scan_type=None, parse_policy=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.singlefile.SinglefileData

Wrapper for Crystallographic Interchange File (CIF)

注解

the file (physical) is held as the authoritative source of information, so all conversions are done through the physical file: when setting ase or values, a physical CIF file is generated first, the values are updated from the physical CIF file.

_PARSE_POLICIES = ('eager', 'lazy')
_PARSE_POLICY_DEFAULT = 'eager'
_SCAN_TYPES = ('standard', 'flex')
_SCAN_TYPE_DEFAULT = 'standard'
_SET_INCOMPATIBILITIES = [('ase', 'file'), ('ase', 'values'), ('file', 'values')]
__abstractmethods__ = frozenset({})
__init__(ase=None, file=None, filename=None, values=None, source=None, scan_type=None, parse_policy=None, **kwargs)[源代码]

Construct a new instance and set the contents to that of the file.

参数
  • file – an absolute filepath or filelike object for CIF. Hint: Pass io.BytesIO(b”my string”) to construct the SinglefileData directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

  • ase – ASE Atoms object to construct the CifData instance from.

  • values – PyCifRW CifFile object to construct the CifData instance from.

  • source

  • scan_type – scan type string for parsing with PyCIFRW (‘standard’ or ‘flex’). See CifFile.ReadCif

  • parse_policy – ‘eager’ (parse CIF file on set_file) or ‘lazy’ (defer parsing until needed)

__module__ = 'aiida.orm.nodes.data.cif'
_abc_impl = <_abc_data object>
_ase = None
_get_object_ase()[源代码]

Converts CifData to ase.Atoms

返回

an ase.Atoms object

_get_object_pycifrw()[源代码]

Converts CifData to PyCIFRW.CifFile

返回

a PyCIFRW.CifFile object

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.cif.CifData (REPORT)>
_plugin_type_string = 'data.cif.CifData.'
_prepare_cif(**kwargs)[源代码]

Return CIF string of CifData object.

If parsed values are present, a CIF string is created and written to file. If no parsed values are present, the CIF string is read from file.

_query_type_string = 'data.cif.'
_validate()[源代码]

Validates MD5 hash of CIF file.

_values = None
property ase

ASE object, representing the CIF.

注解

requires ASE module.

classmethod from_md5(md5)[源代码]

Return a list of all CIF files that match a given MD5 hash.

注解

the hash has to be stored in a _md5 attribute, otherwise the CIF file will not be found.

generate_md5()[源代码]

Computes and returns MD5 hash of the CIF file.

get_ase(**kwargs)[源代码]

Returns ASE object, representing the CIF. This function differs from the property ase by the possibility to pass the keyworded arguments (kwargs) to ase.io.cif.read_cif().

注解

requires ASE module.

get_formulae(mode='sum', custom_tags=None)[源代码]

Return chemical formulae specified in CIF file.

Note: This does not compute the formula, it only reads it from the appropriate tag. Use refine_inline to compute formulae.

classmethod get_or_create(filename, use_first=False, store_cif=True)[源代码]

Pass the same parameter of the init; if a file with the same md5 is found, that CifData is returned.

参数
  • filename – an absolute filename on disk

  • use_first – if False (default), raise an exception if more than one CIF file is found. If it is True, instead, use the first available CIF file.

  • store_cif (bool) – If false, the CifData objects are not stored in the database. default=True.

Return (cif, created)

where cif is the CifData object, and create is either True if the object was created, or False if the object was retrieved from the DB.

get_spacegroup_numbers()[源代码]

Get the spacegroup international number.

get_structure(converter='pymatgen', store=False, **kwargs)[源代码]

Creates aiida.orm.nodes.data.structure.StructureData.

1.0 新版功能: Renamed from _get_aiida_structure

参数
  • converter – specify the converter. Default ‘pymatgen’.

  • store – if True, intermediate calculation gets stored in the AiiDA database for record. Default False.

  • primitive_cell – if True, primitive cell is returned, conventional cell if False. Default False.

  • occupancy_tolerance – If total occupancy of a site is between 1 and occupancy_tolerance, the occupancies will be scaled down to 1. (pymatgen only)

  • site_tolerance – This tolerance is used to determine if two sites are sitting in the same position, in which case they will be combined to a single disordered site. Defaults to 1e-4. (pymatgen only)

返回

aiida.orm.nodes.data.structure.StructureData node.

property has_atomic_sites

Returns whether there are any atomic sites defined in the cif data. That is to say, it will check all the values for the _atom_site_fract_* tags and if they are all equal to ? that means there are no relevant atomic sites defined and the function will return False. In all other cases the function will return True

返回

False when at least one atomic site fractional coordinate is not equal to ? and True otherwise

property has_attached_hydrogens

Check if there are hydrogens without coordinates, specified as attached to the atoms of the structure.

返回

True if there are attached hydrogens, False otherwise.

property has_partial_occupancies

Return if the cif data contains partial occupancies

A partial occupancy is defined as site with an occupancy that differs from unity, within a precision of 1E-6

返回

True if there are partial occupancies, False otherwise

property has_undefined_atomic_sites

Return whether the cif data contains any undefined atomic sites.

An undefined atomic site is defined as a site where at least one of the fractional coordinates specified in the _atom_site_fract_* tags, cannot be successfully interpreted as a float. If the cif data contains any site that matches this description, or it does not contain any atomic site tags at all, the cif data is said to have undefined atomic sites.

返回

boolean, True if no atomic sites are defined or if any of the defined sites contain undefined positions and False otherwise

property has_unknown_species

Returns whether the cif contains atomic species that are not recognized by AiiDA.

The known species are taken from the elements dictionary in aiida.common.constants, with the exception of the “unknown” placeholder element with symbol ‘X’, as this could not be used to construct a real structure. If any of the formula of the cif data contain species that are not in that elements dictionary, the function will return True and False in all other cases. If there is no formulae to be found, it will return None

返回

True when there are unknown species in any of the formulae, False if not, None if no formula found

parse(scan_type=None)[源代码]

Parses CIF file and sets attributes.

参数

scan_type – See set_scan_type

static read_cif(fileobj, index=- 1, **kwargs)[源代码]

A wrapper method that simulates the behavior of the old function ase.io.cif.read_cif by using the new generic ase.io.read function.

Somewhere from 3.12 to 3.17 the tag concept was bundled with each Atom object. When reading a CIF file, this is incremented and signifies the atomic species, even though the CIF file do not have specific tags embedded. On reading CIF files we thus force the ASE tag to zero for all Atom elements.

set_ase(aseatoms)[源代码]

Set the contents of the CifData starting from an ASE atoms object

参数

aseatoms – the ASE atoms object

set_file(file, filename=None)[源代码]

Set the file.

If the source is set and the MD5 checksum of new file is different from the source, the source has to be deleted.

参数
  • file – filepath or filelike object of the CIF file to store. Hint: Pass io.BytesIO(b”my string”) to construct the file directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

set_parse_policy(parse_policy)[源代码]

Set the parse policy.

参数

parse_policy – Either ‘eager’ (parse CIF file on set_file) or ‘lazy’ (defer parsing until needed)

set_scan_type(scan_type)[源代码]

Set the scan_type for PyCifRW.

The ‘flex’ scan_type of PyCifRW is faster for large CIF files but does not yet support the CIF2 format as of 02/2018. See the CifFile.ReadCif function

参数

scan_type – Either ‘standard’ or ‘flex’ (see _scan_types)

set_values(values)[源代码]

Set internal representation to values.

Warning: This also writes a new CIF file.

参数

values – PyCifRW CifFile object

注解

requires PyCifRW module.

store(*args, **kwargs)[源代码]

Store the node.

property values

PyCifRW structure, representing the CIF datablocks.

注解

requires PyCifRW module.

class aiida.orm.Code(remote_computer_exec=None, local_executable=None, input_plugin_name=None, files=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

A code entity. It can either be ‘local’, or ‘remote’.

  • Local code: it is a collection of files/dirs (added using the add_path() method), where one file is flagged as executable (using the set_local_executable() method).

  • Remote code: it is a pair (remotecomputer, remotepath_of_executable) set using the set_remote_computer_exec() method.

For both codes, one can set some code to be executed right before or right after the execution of the code, using the set_preexec_code() and set_postexec_code() methods (e.g., the set_preexec_code() can be used to load specific modules required for the code to be run).

HIDDEN_KEY = 'hidden'
__abstractmethods__ = frozenset({})
__init__(remote_computer_exec=None, local_executable=None, input_plugin_name=None, files=None, **kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.data.code'
__str__()[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.code.Code (REPORT)>
_plugin_type_string = 'data.code.Code.'
_query_type_string = 'data.code.'
_set_local()[源代码]

Set the code as a ‘local’ code, meaning that all the files belonging to the code will be copied to the cluster, and the file set with set_exec_filename will be run.

It also deletes the flags related to the local case (if any)

_set_remote()[源代码]

Set the code as a ‘remote’ code, meaning that the code itself has no files attached, but only a location on a remote computer (with an absolute path of the executable on the remote computer).

It also deletes the flags related to the local case (if any)

_validate()[源代码]

Perform validation of the Data object.

注解

validation of data source checks license and requires attribution to be provided in field ‘description’ of source in the case of any CC-BY* license. If such requirement is too strict, one can remove/comment it out.

can_run_on(computer)[源代码]

Return True if this code can run on the given computer, False otherwise.

Local codes can run on any machine; remote codes can run only on the machine on which they reside.

TODO: add filters to mask the remote machines on which a local code can run.

property full_label

Get full label of this code.

Returns label of the form <code-label>@<computer-name>.

classmethod get(pk=None, label=None, machinename=None)[源代码]

Get a Computer object with given identifier string, that can either be the numeric ID (pk), or the label (and computername) (if unique).

参数
  • pk – the numeric ID (pk) for code

  • label – the code label identifying the code to load

  • machinename – the machine name where code is setup

引发
get_append_text()[源代码]

Return the postexec_code, or an empty string if no post-exec code was defined.

get_builder()[源代码]

Create and return a new ProcessBuilder for the CalcJob class of the plugin configured for this code.

The configured calculation plugin class is defined by the get_input_plugin_name method.

注解

it also sets the builder.code value.

返回

a ProcessBuilder instance with the code input already populated with ourselves

引发
classmethod get_code_helper(label, machinename=None)[源代码]
参数
  • label – the code label identifying the code to load

  • machinename – the machine name where code is setup

引发
get_computer_label()[源代码]

Get label of this code’s computer.

get_computer_name()[源代码]

Get label of this code’s computer.

1.4.0 版后已移除: Will be removed in v2.0.0, use the self.get_computer_label() method instead.

get_description()[源代码]

Return a string description of this Code instance.

返回

string description of this Code instance

get_execname()[源代码]

Return the executable string to be put in the script. For local codes, it is ./LOCAL_EXECUTABLE_NAME For remote codes, it is the absolute path to the executable.

classmethod get_from_string(code_string)[源代码]

Get a Computer object with given identifier string in the format label@machinename. See the note below for details on the string detection algorithm.

注解

the (leftmost) ‘@’ symbol is always used to split code and computername. Therefore do not use ‘@’ in the code name if you want to use this function (‘@’ in the computer name are instead valid).

参数

code_string – the code string identifying the code to load

引发
get_full_text_info(verbose=False)[源代码]

Return a list of lists with a human-readable detailed information on this code.

1.4.0 版后已移除: Will be removed in v2.0.0.

返回

list of lists where each entry consists of two elements: a key and a value

get_input_plugin_name()[源代码]

Return the name of the default input plugin (or None if no input plugin was set.

get_local_executable()[源代码]
get_prepend_text()[源代码]

Return the code that will be put in the scheduler script before the execution, or an empty string if no pre-exec code was defined.

get_remote_computer()[源代码]
get_remote_exec_path()[源代码]
property hidden

Determines whether the Code is hidden or not

hide()[源代码]

Hide the code (prevents from showing it in the verdi code list)

is_local()[源代码]

Return True if the code is ‘local’, False if it is ‘remote’ (see also documentation of the set_local and set_remote functions).

property label

Return the node label.

返回

the label

classmethod list_for_plugin(plugin, labels=True)[源代码]

Return a list of valid code strings for a given plugin.

参数
  • plugin – The string of the plugin.

  • labels – if True, return a list of code names, otherwise return the code PKs (integers).

返回

a list of string, with the code names if labels is True, otherwise a list of integers with the code PKs.

relabel(new_label, raise_error=True)[源代码]

Relabel this code.

参数
  • new_label – new code label

  • raise_error – Set to False in order to return a list of errors instead of raising them.

1.2.0 版后已移除: Will remove raise_error in v2.0.0. Use try/except instead.

reveal()[源代码]

Reveal the code (allows to show it in the verdi code list) By default, it is revealed

set_append_text(code)[源代码]

Pass a string of code that will be put in the scheduler script after the execution of the code.

set_files(files)[源代码]

Given a list of filenames (or a single filename string), add it to the path (all at level zero, i.e. without folders). Therefore, be careful for files with the same name!

Todo

decide whether to check if the Code must be a local executable to be able to call this function.

set_input_plugin_name(input_plugin)[源代码]

Set the name of the default input plugin, to be used for the automatic generation of a new calculation.

set_local_executable(exec_name)[源代码]

Set the filename of the local executable. Implicitly set the code as local.

set_prepend_text(code)[源代码]

Pass a string of code that will be put in the scheduler script before the execution of the code.

set_remote_computer_exec(remote_computer_exec)[源代码]

Set the code as remote, and pass the computer on which it resides and the absolute path on that computer.

参数

remote_computer_exec – a tuple (computer, remote_exec_path), where computer is a aiida.orm.Computer and remote_exec_path is the absolute path of the main executable on remote computer.

class aiida.orm.Collection(*args, **kwds)[源代码]

基类:typing.Generic

Container class that represents the collection of objects of a particular type.

_COLLECTIONS = <aiida.common.datastructures.LazyStore object>
__call__(backend)[源代码]

Create a new objects collection using a new backend.

参数

backend (aiida.orm.implementation.Backend) – the backend instance to get the collection for

返回

a new collection with the new backend

返回类型

aiida.orm.Collection

__dict__ = mappingproxy({'__module__': 'aiida.orm.entities', '__doc__': 'Container class that represents the collection of objects of a particular type.', '_COLLECTIONS': <aiida.common.datastructures.LazyStore object>, 'get_collection': <classmethod object>, '__init__': <function Collection.__init__>, '__call__': <function Collection.__call__>, 'backend': <property object>, 'entity_type': <property object>, 'query': <function Collection.query>, 'get': <function Collection.get>, 'find': <function Collection.find>, 'all': <function Collection.all>, 'count': <function Collection.count>, '__orig_bases__': (typing.Generic[~EntityType],), '__dict__': <attribute '__dict__' of 'Collection' objects>, '__weakref__': <attribute '__weakref__' of 'Collection' objects>, '__parameters__': (~EntityType,)})
__init__(backend, entity_class)[源代码]

Construct a new entity collection.

参数
__module__ = 'aiida.orm.entities'
__orig_bases__ = (typing.Generic[~EntityType],)
__parameters__ = (~EntityType,)
__weakref__

list of weak references to the object (if defined)

all()[源代码]

Get all entities in this collection

返回

A list of all entities

返回类型

list

property backend

Return the backend.

返回

the backend instance of this collection

返回类型

aiida.orm.implementation.Backend

count(filters=None)[源代码]

Count entities in this collection according to criteria

参数

filters (dict) – the keyword value pair filters to match

返回

The number of entities found using the supplied criteria

返回类型

int

property entity_type

The entity type.

返回类型

aiida.orm.Entity

find(filters=None, order_by=None, limit=None)[源代码]

Find collection entries matching the filter criteria

参数
  • filters (dict) – the keyword value pair filters to match

  • order_by (list) – a list of (key, direction) pairs specifying the sort order

  • limit (int) – the maximum number of results to return

返回

a list of resulting matches

返回类型

list

get(**filters)[源代码]

Get a single collection entry that matches the filter criteria

参数

filters (dict) – the filters identifying the object to get

返回

the entry

classmethod get_collection(entity_type, backend)[源代码]

Get the collection for a given entity type and backend instance

参数
返回

a new collection with the new backend

返回类型

aiida.orm.Collection

query(filters=None, order_by=None, limit=None, offset=None)[源代码]

Get a query builder for the objects of this collection

参数
  • filters (dict) – the keyword value pair filters to match

  • order_by (list) – a list of (key, direction) pairs specifying the sort order

  • limit (int) – the maximum number of results to return

  • offset (int) – number of initial results to be skipped

返回

a new query builder instance

返回类型

aiida.orm.QueryBuilder

class aiida.orm.Comment(node, user, content=None, backend=None)[源代码]

基类:aiida.orm.entities.Entity

Base class to map a DbComment that represents a comment attached to a certain Node.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of Comment entries.

__module__ = 'aiida.orm.comments'
__parameters__ = ()
delete(comment_id)[源代码]

Remove a Comment from the collection with the given id

参数

comment_id (int) – the id of the comment to delete

引发
  • TypeError – if comment_id is not an int

  • NotExistent – if Comment with ID comment_id is not found

delete_all()[源代码]

Delete all Comments from the Collection

引发

IntegrityError – if all Comments could not be deleted

delete_many(filters)[源代码]

Delete Comments from the Collection based on filters

参数

filters (dict) – similar to QueryBuilder filter

返回

(former) PK s of deleted Comments

返回类型

list

引发
__init__(node, user, content=None, backend=None)[源代码]

Create a Comment for a given node and user

参数
返回

a Comment object associated to the given node and user

返回类型

aiida.orm.Comment

__module__ = 'aiida.orm.comments'
__str__()[源代码]

Return str(self).

property content
property ctime
property mtime
property node
set_content(value)[源代码]
set_mtime(value)[源代码]
set_user(value)[源代码]
property user
class aiida.orm.Computer(label: str = None, hostname: str = None, description: str = '', transport_type: str = '', scheduler_type: str = '', workdir: str = None, backend: aiida.orm.implementation.backends.Backend = None, name: str = None)[源代码]

基类:aiida.orm.entities.Entity

Computer entity.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of Computer entries.

__module__ = 'aiida.orm.computers'
__parameters__ = ()
delete(id)[源代码]

Delete the computer with the given id

get(**filters)[源代码]

Get a single collection entry that matches the filter criteria.

参数

filters (dict) – the filters identifying the object to get

返回

the entry

get_or_create(label=None, **kwargs)[源代码]

Try to retrieve a Computer from the DB with the given arguments; create (and store) a new Computer if such a Computer was not present yet.

参数

label (str) – computer label

返回

(computer, created) where computer is the computer (new or existing, in any case already stored) and created is a boolean saying

返回类型

(aiida.orm.Computer, bool)

list_labels()[源代码]

Return a list with all the labels of the computers in the DB.

list_names()[源代码]

Return a list with all the names of the computers in the DB.

1.4.0 版后已移除: Will be removed in v2.0.0, use list_labels instead.

PROPERTY_MINIMUM_SCHEDULER_POLL_INTERVAL = 'minimum_scheduler_poll_interval'
PROPERTY_MINIMUM_SCHEDULER_POLL_INTERVAL__DEFAULT = 10.0
PROPERTY_SHEBANG = 'shebang'
PROPERTY_WORKDIR = 'workdir'
__init__(label: str = None, hostname: str = None, description: str = '', transport_type: str = '', scheduler_type: str = '', workdir: str = None, backend: aiida.orm.implementation.backends.Backend = None, name: str = None)aiida.orm.computers.Computer[源代码]

Construct a new computer

1.4.0 版后已移除: The name keyword will be removed in v2.0.0, use label instead.

__module__ = 'aiida.orm.computers'
__repr__()[源代码]

Return repr(self).

__str__()[源代码]

Return str(self).

classmethod _append_text_validator(append_text)[源代码]

Validates the append text string.

classmethod _default_mpiprocs_per_machine_validator(def_cpus_per_machine)[源代码]

Validates the default number of CPUs per machine (node)

classmethod _description_validator(description)[源代码]

Validates the description.

classmethod _hostname_validator(hostname)[源代码]

Validates the hostname.

_logger = <Logger aiida.orm.computers (REPORT)>
_mpirun_command_validator(mpirun_cmd)[源代码]

Validates the mpirun_command variable. MUST be called after properly checking for a valid scheduler.

classmethod _name_validator(name)[源代码]

Validates the name.

classmethod _prepend_text_validator(prepend_text)[源代码]

Validates the prepend text string.

classmethod _scheduler_type_validator(scheduler_type)[源代码]

Validates the transport string.

classmethod _transport_type_validator(transport_type)[源代码]

Validates the transport string.

classmethod _workdir_validator(workdir)[源代码]

Validates the transport string.

configure(user=None, **kwargs)[源代码]

Configure a computer for a user with valid auth params passed via kwargs

参数

user – the user to configure the computer for

Kwargs

the configuration keywords with corresponding values

返回

the authinfo object for the configured user

返回类型

aiida.orm.AuthInfo

copy()[源代码]

Return a copy of the current object to work with, not stored yet.

delete_property(name, raise_exception=True)[源代码]

Delete a property from this computer

参数
  • name (str) – the name of the property

  • raise_exception (bool) – if True raise if the property does not exist, otherwise return None

property description

Return the computer computer.

返回

the description.

property full_text_info

Return a (multiline) string with a human-readable detailed information on this computer.

1.4.0 版后已移除: Will be removed in v2.0.0.

返回类型

str

get_append_text()[源代码]
get_authinfo(user)[源代码]

Return the aiida.orm.authinfo.AuthInfo instance for the given user on this computer, if the computer is configured for the given user.

参数

user – a User instance.

返回

a AuthInfo instance

引发

aiida.common.NotExistent – if the computer is not configured for the given user.

get_configuration(user=None)[源代码]

Get the configuration of computer for the given user as a dictionary

参数

user (aiida.orm.User) – the user to to get the configuration for. Uses default user if None

get_default_mpiprocs_per_machine()[源代码]

Return the default number of CPUs per machine (node) for this computer, or None if it was not set.

get_description()[源代码]

Get the description for this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the description property instead.

返回

the description

返回类型

str

get_hostname()[源代码]

Get this computer hostname

1.4.0 版后已移除: Will be removed in v2.0.0, use the hostname property instead.

返回类型

str

get_metadata()[源代码]

1.4.0 版后已移除: Will be removed in v2.0.0, use the metadata property instead.

get_minimum_job_poll_interval()[源代码]

Get the minimum interval between subsequent requests to update the list of jobs currently running on this computer.

返回

The minimum interval (in seconds)

返回类型

float

get_mpirun_command()[源代码]

Return the mpirun command. Must be a list of strings, that will be then joined with spaces when submitting.

I also provide a sensible default that may be ok in many cases.

get_name()[源代码]

Return the computer name.

1.4.0 版后已移除: Will be removed in v2.0.0, use the label property instead.

get_prepend_text()[源代码]
get_property(name, *args)[源代码]

Get a property of this computer

参数
  • name (str) – the property name

  • args – additional arguments

返回

the property value

get_scheduler()[源代码]

Get a scheduler instance for this computer

返回

the scheduler instance

返回类型

aiida.schedulers.Scheduler

get_scheduler_type()[源代码]

Get the scheduler type for this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the scheduler_type property instead.

返回

the scheduler type

返回类型

str

static get_schema()[源代码]
Every node property contains:
  • display_name: display name of the property

  • help text: short help text of the property

  • is_foreign_key: is the property foreign key to other type of the node

  • type: type of the property. e.g. str, dict, int

返回

get schema of the computer

1.0.0 版后已移除: Will be removed in v2.0.0. Use get_projectable_properties() instead.

get_shebang()[源代码]
get_transport(user=None)[源代码]

Return a Transport class, configured with all correct parameters. The Transport is closed (meaning that if you want to run any operation with it, you have to open it first (i.e., e.g. for a SSH transport, you have to open a connection). To do this you can call transports.open(), or simply run within a with statement:

transport = Computer.get_transport()
with transport:
    print(transports.whoami())
参数

user – if None, try to obtain a transport for the default user. Otherwise, pass a valid User.

返回

a (closed) Transport, already configured with the connection parameters to the supercomputer, as configured with verdi computer configure for the user specified as a parameter user.

get_transport_class()[源代码]

Get the transport class for this computer. Can be used to instantiate a transport instance.

返回

the transport class

get_transport_type()[源代码]

Get the current transport type for this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the transport_type property instead.

返回

the transport type

返回类型

str

get_workdir()[源代码]

Get the working directory for this computer :return: The currently configured working directory :rtype: str

property hostname

Return the computer hostname.

返回

the hostname.

is_user_configured(user)[源代码]

Is the user configured on this computer?

参数

user – the user to check

返回

True if configured, False otherwise

返回类型

bool

is_user_enabled(user)[源代码]

Is the given user enabled to run on this computer?

参数

user – the user to check

返回

True if enabled, False otherwise

返回类型

bool

property label

Return the computer label.

返回

the label.

property logger
property metadata

Return the computer metadata.

返回

the metadata.

property name

Return the computer name.

1.4.0 版后已移除: Will be removed in v2.0.0, use the label property instead.

property scheduler_type

Return the computer scheduler type.

返回

the scheduler type.

set_append_text(val)[源代码]
set_default_mpiprocs_per_machine(def_cpus_per_machine)[源代码]

Set the default number of CPUs per machine (node) for this computer. Accepts None if you do not want to set this value.

set_description(val)[源代码]

Set the description for this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the description property instead.

参数

val (str) – the new description

set_hostname(val)[源代码]

Set the hostname of this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the hostname property instead.

参数

val (str) – The new hostname

set_metadata(metadata)[源代码]

Set the metadata.

1.4.0 版后已移除: Will be removed in v2.0.0, use the metadata property instead.

set_minimum_job_poll_interval(interval)[源代码]

Set the minimum interval between subsequent requests to update the list of jobs currently running on this computer.

参数

interval (float) – The minimum interval in seconds

set_mpirun_command(val)[源代码]

Set the mpirun command. It must be a list of strings (you can use string.split() if you have a single, space-separated string).

set_name(val)[源代码]

Set the computer name.

1.4.0 版后已移除: Will be removed in v2.0.0, use the label property instead.

set_prepend_text(val)[源代码]
set_property(name, value)[源代码]

Set a property on this computer

参数
  • name – the property name

  • value – the new value

set_scheduler_type(scheduler_type)[源代码]

1.4.0 版后已移除: Will be removed in v2.0.0, use the scheduler_type property instead.

参数

scheduler_type – the new scheduler type

set_shebang(val)[源代码]
参数

val (str) – A valid shebang line

set_transport_type(transport_type)[源代码]

Set the transport type for this computer

1.4.0 版后已移除: Will be removed in v2.0.0, use the transport_type property instead.

参数

transport_type (str) – the new transport type

set_workdir(val)[源代码]
store()[源代码]

Store the computer in the DB.

Differently from Nodes, a computer can be re-stored if its properties are to be changed (e.g. a new mpirun command, etc.)

property transport_type

Return the computer transport type.

返回

the transport_type.

validate()[源代码]

Check if the attributes and files retrieved from the DB are valid. Raise a ValidationError if something is wrong.

Must be able to work even before storing: therefore, use the get_attr and similar methods that automatically read either from the DB or from the internal attribute cache.

For the base class, this is always valid. Subclasses will reimplement this. In the subclass, always call the super().validate() method first!

class aiida.orm.Data(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.node.Node

The base class for all Data nodes.

AiiDA Data classes are subclasses of Node and must support multiple inheritance.

Architecture note: Calculation plugins are responsible for converting raw output data from simulation codes to Data nodes. Data nodes are responsible for validating their content (see _validate method).

__abstractmethods__ = frozenset({})
__copy__()[源代码]

Copying a Data node is not supported, use copy.deepcopy or call Data.clone().

__deepcopy__(memo)[源代码]

Create a clone of the Data node by pipiong through to the clone method and return the result.

返回

an unstored clone of this Data node

__module__ = 'aiida.orm.nodes.data.data'
_abc_impl = <_abc_data object>
_export_format_replacements = {}
_exportcontent(fileformat, main_file_name='', **kwargs)[源代码]

Converts a Data node to one (or multiple) files.

Note: Export plugins should return utf8-encoded bytes, which can be directly dumped to file.

参数
  • fileformat (str) – the extension, uniquely specifying the file format.

  • main_file_name (str) – (empty by default) Can be used by plugin to infer sensible names for additional files, if necessary. E.g. if the main file is ‘../myplot.gnu’, the plugin may decide to store the dat file under ‘../myplot_data.dat’.

  • kwargs – other parameters are passed down to the plugin

返回

a tuple of length 2. The first element is the content of the otuput file. The second is a dictionary (possibly empty) in the format {filename: filecontent} for any additional file that should be produced.

返回类型

(bytes, dict)

_get_converters()[源代码]

Get all implemented converter formats. The convention is to find all _get_object_… methods. Returns a list of strings.

_get_exporters()[源代码]

Get all implemented export formats. The convention is to find all _prepare_… methods. Returns a dictionary of method_name: method_function

_get_importers()[源代码]

Get all implemented import formats. The convention is to find all _parse_… methods. Returns a list of strings.

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.data.Data (REPORT)>
_plugin_type_string = 'data.Data.'
_query_type_string = 'data.'
_source_attributes = ['db_name', 'db_uri', 'uri', 'id', 'version', 'extras', 'source_md5', 'description', 'license']
_storable = True
_unstorable_message = 'storing for this node has been disabled'
_validate()[源代码]

Perform validation of the Data object.

注解

validation of data source checks license and requires attribution to be provided in field ‘description’ of source in the case of any CC-BY* license. If such requirement is too strict, one can remove/comment it out.

clone()[源代码]

Create a clone of the Data node.

返回

an unstored clone of this Data node

convert(object_format=None, *args)[源代码]

Convert the AiiDA StructureData into another python object

参数

object_format – Specify the output format

property creator

Return the creator of this node or None if it does not exist.

返回

the creating node or None

export(path, fileformat=None, overwrite=False, **kwargs)[源代码]

Save a Data object to a file.

参数
  • fname – string with file name. Can be an absolute or relative path.

  • fileformat – kind of format to use for the export. If not present, it will try to use the extension of the file name.

  • overwrite – if set to True, overwrites file found at path. Default=False

  • kwargs – additional parameters to be passed to the _exportcontent method

返回

the list of files created

classmethod get_export_formats()[源代码]

Get the list of valid export format strings

返回

a list of valid formats

importfile(fname, fileformat=None)[源代码]

Populate a Data object from a file.

参数
  • fname – string with file name. Can be an absolute or relative path.

  • fileformat – kind of format to use for the export. If not present, it will try to use the extension of the file name.

importstring(inputstring, fileformat, **kwargs)[源代码]

Converts a Data object to other text format.

参数

fileformat – a string (the extension) to describe the file format.

返回

a string with the structure description.

set_source(source)[源代码]

Sets the dictionary describing the source of Data object.

property source

Gets the dictionary describing the source of Data object. Possible fields:

  • db_name: name of the source database.

  • db_uri: URI of the source database.

  • uri: URI of the object’s source. Should be a permanent link.

  • id: object’s source identifier in the source database.

  • version: version of the object’s source.

  • extras: a dictionary with other fields for source description.

  • source_md5: MD5 checksum of object’s source.

  • description: human-readable free form description of the object’s source.

  • license: a string with a type of license.

注解

some limitations for setting the data source exist, see _validate method.

返回

dictionary describing the source of Data object.

class aiida.orm.Dict(**kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Data sub class to represent a dictionary.

The dictionary contents of a Dict node are stored in the database as attributes. The dictionary can be initialized through the dict argument in the constructor. After construction, values can be retrieved and updated through the item getters and setters, respectively:

node[‘key’] = ‘value’

Alternatively, the dict property returns an instance of the AttributeManager that can be used to get and set values through attribute notation:

node.dict.key = ‘value’

Note that trying to set dictionary values directly on the node, e.g. node.key = value, will not work as intended. It will merely set the key attribute on the node instance, but will not be stored in the database. As soon as the node goes out of scope, the value will be lost.

It is also relevant to note here the difference in something being an “attribute of a node” (in the sense that it is stored in the “attribute” column of the database when the node is stored) and something being an “attribute of a python object” (in the sense of being able to modify and access it as if it was a property of the variable, e.g. node.key = value). This is true of all types of nodes, but it becomes more relevant for Dict nodes where one is constantly manipulating these attributes.

Finally, all dictionary mutations will be forbidden once the node is stored.

__abstractmethods__ = frozenset({})
__getitem__(key)[源代码]
__init__(**kwargs)[源代码]

Store a dictionary as a Node instance.

Usual rules for attribute names apply, in particular, keys cannot start with an underscore, or a ValueError will be raised.

Initial attributes can be changed, deleted or added as long as the node is not stored.

参数

dict – the dictionary to set

__module__ = 'aiida.orm.nodes.data.dict'
__setitem__(key, value)[源代码]
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.dict.Dict (REPORT)>
_plugin_type_string = 'data.dict.Dict.'
_query_type_string = 'data.dict.'
property dict

Return an instance of AttributeManager that transforms the dictionary into an attribute dict.

注解

this will allow one to do node.dict.key as well as node.dict[key].

返回

an instance of the AttributeResultManager.

get_dict()[源代码]

Return a dictionary with the parameters currently set.

返回

dictionary

keys()[源代码]

Iterator of valid keys stored in the Dict object.

返回

iterator over the keys of the current dictionary

set_dict(dictionary)[源代码]

Replace the current dictionary with another one.

参数

dictionary – dictionary to set

update_dict(dictionary)[源代码]

Update the current dictionary with the keys provided in the dictionary.

注解

works exactly as dict.update() where new keys are simply added and existing keys are overwritten.

参数

dictionary – a dictionary with the keys to substitute

class aiida.orm.Entity(backend_entity)[源代码]

基类:object

An AiiDA entity

class Collection(*args, **kwds)

基类:typing.Generic

Container class that represents the collection of objects of a particular type.

_COLLECTIONS = <aiida.common.datastructures.LazyStore object>
__call__(backend)

Create a new objects collection using a new backend.

参数

backend (aiida.orm.implementation.Backend) – the backend instance to get the collection for

返回

a new collection with the new backend

返回类型

aiida.orm.Collection

__dict__ = mappingproxy({'__module__': 'aiida.orm.entities', '__doc__': 'Container class that represents the collection of objects of a particular type.', '_COLLECTIONS': <aiida.common.datastructures.LazyStore object>, 'get_collection': <classmethod object>, '__init__': <function Collection.__init__>, '__call__': <function Collection.__call__>, 'backend': <property object>, 'entity_type': <property object>, 'query': <function Collection.query>, 'get': <function Collection.get>, 'find': <function Collection.find>, 'all': <function Collection.all>, 'count': <function Collection.count>, '__orig_bases__': (typing.Generic[~EntityType],), '__dict__': <attribute '__dict__' of 'Collection' objects>, '__weakref__': <attribute '__weakref__' of 'Collection' objects>, '__parameters__': (~EntityType,)})
__init__(backend, entity_class)

Construct a new entity collection.

参数
__module__ = 'aiida.orm.entities'
__orig_bases__ = (typing.Generic[~EntityType],)
__parameters__ = (~EntityType,)
__weakref__

list of weak references to the object (if defined)

all()

Get all entities in this collection

返回

A list of all entities

返回类型

list

property backend

Return the backend.

返回

the backend instance of this collection

返回类型

aiida.orm.implementation.Backend

count(filters=None)

Count entities in this collection according to criteria

参数

filters (dict) – the keyword value pair filters to match

返回

The number of entities found using the supplied criteria

返回类型

int

property entity_type

The entity type.

返回类型

aiida.orm.Entity

find(filters=None, order_by=None, limit=None)

Find collection entries matching the filter criteria

参数
  • filters (dict) – the keyword value pair filters to match

  • order_by (list) – a list of (key, direction) pairs specifying the sort order

  • limit (int) – the maximum number of results to return

返回

a list of resulting matches

返回类型

list

get(**filters)

Get a single collection entry that matches the filter criteria

参数

filters (dict) – the filters identifying the object to get

返回

the entry

classmethod get_collection(entity_type, backend)

Get the collection for a given entity type and backend instance

参数
返回

a new collection with the new backend

返回类型

aiida.orm.Collection

query(filters=None, order_by=None, limit=None, offset=None)

Get a query builder for the objects of this collection

参数
  • filters (dict) – the keyword value pair filters to match

  • order_by (list) – a list of (key, direction) pairs specifying the sort order

  • limit (int) – the maximum number of results to return

  • offset (int) – number of initial results to be skipped

返回

a new query builder instance

返回类型

aiida.orm.QueryBuilder

__dict__ = mappingproxy({'__module__': 'aiida.orm.entities', '__doc__': 'An AiiDA entity', '_objects': None, 'Collection': <class 'aiida.orm.entities.Collection'>, 'objects': <aiida.common.lang.classproperty object>, 'get': <classmethod object>, 'from_backend_entity': <classmethod object>, '__init__': <function Entity.__init__>, 'init_from_backend': <function Entity.init_from_backend>, 'initialize': <function super_check.<locals>.wrapper>, 'id': <property object>, 'pk': <property object>, 'uuid': <property object>, 'store': <function Entity.store>, 'is_stored': <property object>, 'backend': <property object>, 'backend_entity': <property object>, '__dict__': <attribute '__dict__' of 'Entity' objects>, '__weakref__': <attribute '__weakref__' of 'Entity' objects>})
__init__(backend_entity)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.entities'
__weakref__

list of weak references to the object (if defined)

_objects = None
property backend

Get the backend for this entity :return: the backend instance

property backend_entity

Get the implementing class for this object

返回

the class model

classmethod from_backend_entity(backend_entity)[源代码]

Construct an entity from a backend entity instance

参数

backend_entity – the backend entity

返回

an AiiDA entity instance

classmethod get(**kwargs)[源代码]
property id

Return the id for this entity.

This identifier is guaranteed to be unique amongst entities of the same type for a single backend instance.

返回

the entity’s id

init_from_backend(backend_entity)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

initialize(*args: Any, **kwargs: Any)None
property is_stored

Return whether the entity is stored.

返回

boolean, True if stored, False otherwise

返回类型

bool

objects = <aiida.orm.entities.Collection object>[源代码]
property pk

Return the primary key for this entity.

This identifier is guaranteed to be unique amongst entities of the same type for a single backend instance.

返回

the entity’s principal key

store()[源代码]

Store the entity.

property uuid

Return the UUID for this entity.

This identifier is unique across all entities types and backend instances.

返回

the entity uuid

返回类型

uuid.UUID

class aiida.orm.EntityAttributesMixin[源代码]

基类:abc.ABC

Mixin class that adds all methods for the attributes column to an entity.

__abstractmethods__ = frozenset({})
__dict__ = mappingproxy({'__module__': 'aiida.orm.entities', '__doc__': 'Mixin class that adds all methods for the attributes column to an entity.', 'attributes': <property object>, 'get_attribute': <function EntityAttributesMixin.get_attribute>, 'get_attribute_many': <function EntityAttributesMixin.get_attribute_many>, 'set_attribute': <function EntityAttributesMixin.set_attribute>, 'set_attribute_many': <function EntityAttributesMixin.set_attribute_many>, 'reset_attributes': <function EntityAttributesMixin.reset_attributes>, 'delete_attribute': <function EntityAttributesMixin.delete_attribute>, 'delete_attribute_many': <function EntityAttributesMixin.delete_attribute_many>, 'clear_attributes': <function EntityAttributesMixin.clear_attributes>, 'attributes_items': <function EntityAttributesMixin.attributes_items>, 'attributes_keys': <function EntityAttributesMixin.attributes_keys>, '__dict__': <attribute '__dict__' of 'EntityAttributesMixin' objects>, '__weakref__': <attribute '__weakref__' of 'EntityAttributesMixin' objects>, '__abstractmethods__': frozenset(), '_abc_impl': <_abc_data object>})
__module__ = 'aiida.orm.entities'
__weakref__

list of weak references to the object (if defined)

_abc_impl = <_abc_data object>
property attributes

Return the complete attributes dictionary.

警告

While the entity is unstored, this will return references of the attributes on the database model, meaning that changes on the returned values (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned attributes will be a deep copy and mutations of the database attributes will have to go through the appropriate set methods. Therefore, once stored, retrieving a deep copy can be a heavy operation. If you only need the keys or some values, use the iterators attributes_keys and attributes_items, or the getters get_attribute and get_attribute_many instead.

返回

the attributes as a dictionary

attributes_items()[源代码]

Return an iterator over the attributes.

返回

an iterator with attribute key value pairs

attributes_keys()[源代码]

Return an iterator over the attribute keys.

返回

an iterator with attribute keys

clear_attributes()[源代码]

Delete all attributes.

delete_attribute(key)[源代码]

Delete an attribute.

参数

key – name of the attribute

引发
delete_attribute_many(keys)[源代码]

Delete multiple attributes.

参数

keys – names of the attributes to delete

引发
get_attribute(key, default=())[源代码]

Return the value of an attribute.

警告

While the entity is unstored, this will return a reference of the attribute on the database model, meaning that changes on the returned value (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned attribute will be a deep copy and mutations of the database attributes will have to go through the appropriate set methods.

参数
  • key – name of the attribute

  • default – return this value instead of raising if the attribute does not exist

返回

the value of the attribute

引发

AttributeError – if the attribute does not exist and no default is specified

get_attribute_many(keys)[源代码]

Return the values of multiple attributes.

警告

While the entity is unstored, this will return references of the attributes on the database model, meaning that changes on the returned values (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned attributes will be a deep copy and mutations of the database attributes will have to go through the appropriate set methods. Therefore, once stored, retrieving a deep copy can be a heavy operation. If you only need the keys or some values, use the iterators attributes_keys and attributes_items, or the getters get_attribute and get_attribute_many instead.

参数

keys – a list of attribute names

返回

a list of attribute values

引发

AttributeError – if at least one attribute does not exist

reset_attributes(attributes)[源代码]

Reset the attributes.

注解

This will completely clear any existing attributes and replace them with the new dictionary.

参数

attributes – a dictionary with the attributes to set

引发
set_attribute(key, value)[源代码]

Set an attribute to the given value.

参数
  • key – name of the attribute

  • value – value of the attribute

引发
set_attribute_many(attributes)[源代码]

Set multiple attributes.

注解

This will override any existing attributes that are present in the new dictionary.

参数

attributes – a dictionary with the attributes to set

引发
class aiida.orm.EntityExtrasMixin[源代码]

基类:abc.ABC

Mixin class that adds all methods for the extras column to an entity.

__abstractmethods__ = frozenset({})
__dict__ = mappingproxy({'__module__': 'aiida.orm.entities', '__doc__': 'Mixin class that adds all methods for the extras column to an entity.', 'extras': <property object>, 'get_extra': <function EntityExtrasMixin.get_extra>, 'get_extra_many': <function EntityExtrasMixin.get_extra_many>, 'set_extra': <function EntityExtrasMixin.set_extra>, 'set_extra_many': <function EntityExtrasMixin.set_extra_many>, 'reset_extras': <function EntityExtrasMixin.reset_extras>, 'delete_extra': <function EntityExtrasMixin.delete_extra>, 'delete_extra_many': <function EntityExtrasMixin.delete_extra_many>, 'clear_extras': <function EntityExtrasMixin.clear_extras>, 'extras_items': <function EntityExtrasMixin.extras_items>, 'extras_keys': <function EntityExtrasMixin.extras_keys>, '__dict__': <attribute '__dict__' of 'EntityExtrasMixin' objects>, '__weakref__': <attribute '__weakref__' of 'EntityExtrasMixin' objects>, '__abstractmethods__': frozenset(), '_abc_impl': <_abc_data object>})
__module__ = 'aiida.orm.entities'
__weakref__

list of weak references to the object (if defined)

_abc_impl = <_abc_data object>
clear_extras()[源代码]

Delete all extras.

delete_extra(key)[源代码]

Delete an extra.

参数

key – name of the extra

引发

AttributeError – if the extra does not exist

delete_extra_many(keys)[源代码]

Delete multiple extras.

参数

keys – names of the extras to delete

引发

AttributeError – if at least one of the extra does not exist

property extras

Return the complete extras dictionary.

警告

While the entity is unstored, this will return references of the extras on the database model, meaning that changes on the returned values (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned extras will be a deep copy and mutations of the database extras will have to go through the appropriate set methods. Therefore, once stored, retrieving a deep copy can be a heavy operation. If you only need the keys or some values, use the iterators extras_keys and extras_items, or the getters get_extra and get_extra_many instead.

返回

the extras as a dictionary

extras_items()[源代码]

Return an iterator over the extras.

返回

an iterator with extra key value pairs

extras_keys()[源代码]

Return an iterator over the extra keys.

返回

an iterator with extra keys

get_extra(key, default=())[源代码]

Return the value of an extra.

警告

While the entity is unstored, this will return a reference of the extra on the database model, meaning that changes on the returned value (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned extra will be a deep copy and mutations of the database extras will have to go through the appropriate set methods.

参数
  • key – name of the extra

  • default – return this value instead of raising if the attribute does not exist

返回

the value of the extra

引发

AttributeError – if the extra does not exist and no default is specified

get_extra_many(keys)[源代码]

Return the values of multiple extras.

警告

While the entity is unstored, this will return references of the extras on the database model, meaning that changes on the returned values (if they are mutable themselves, e.g. a list or dictionary) will automatically be reflected on the database model as well. As soon as the entity is stored, the returned extras will be a deep copy and mutations of the database extras will have to go through the appropriate set methods. Therefore, once stored, retrieving a deep copy can be a heavy operation. If you only need the keys or some values, use the iterators extras_keys and extras_items, or the getters get_extra and get_extra_many instead.

参数

keys – a list of extra names

返回

a list of extra values

引发

AttributeError – if at least one extra does not exist

reset_extras(extras)[源代码]

Reset the extras.

注解

This will completely clear any existing extras and replace them with the new dictionary.

参数

extras – a dictionary with the extras to set

引发

aiida.common.ValidationError – if any of the keys are invalid, i.e. contain periods

set_extra(key, value)[源代码]

Set an extra to the given value.

参数
  • key – name of the extra

  • value – value of the extra

引发

aiida.common.ValidationError – if the key is invalid, i.e. contains periods

set_extra_many(extras)[源代码]

Set multiple extras.

注解

This will override any existing extras that are present in the new dictionary.

参数

extras – a dictionary with the extras to set

引发

aiida.common.ValidationError – if any of the keys are invalid, i.e. contain periods

class aiida.orm.Float(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.numeric.NumericType

Data sub class to represent a float value.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.float'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.float.Float (REPORT)>
_plugin_type_string = 'data.float.Float.'
_query_type_string = 'data.float.'
_type

builtins.float 的别名

class aiida.orm.FolderData(**kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Data sub class to represent a folder on a file system.

__abstractmethods__ = frozenset({})
__init__(**kwargs)[源代码]

Construct a new FolderData to which any files and folders can be added.

Use the tree keyword to simply wrap a directory:

folder = FolderData(tree=’/absolute/path/to/directory’)

Alternatively, one can construct the node first and then use the various repository methods to add objects:

folder = FolderData() folder.put_object_from_tree(‘/absolute/path/to/directory’) folder.put_object_from_filepath(‘/absolute/path/to/file.txt’) folder.put_object_from_filelike(filelike_object)

参数

tree (str) – absolute path to a folder to wrap

__module__ = 'aiida.orm.nodes.data.folder'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.folder.FolderData (REPORT)>
_plugin_type_string = 'data.folder.FolderData.'
_query_type_string = 'data.folder.'
class aiida.orm.Group(label=None, user=None, description='', type_string=None, backend=None)[源代码]

基类:aiida.orm.entities.Entity, aiida.orm.entities.EntityExtrasMixin

An AiiDA ORM implementation of group of nodes.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

Collection of Groups

__module__ = 'aiida.orm.groups'
__parameters__ = ()
delete(id)[源代码]

Delete a group

参数

id – the id of the group to delete

get_or_create(label=None, **kwargs)[源代码]

Try to retrieve a group from the DB with the given arguments; create (and store) a new group if such a group was not present yet.

参数

label (str) – group label

返回

(group, created) where group is the group (new or existing, in any case already stored) and created is a boolean saying

返回类型

(aiida.orm.Group, bool)

__abstractmethods__ = frozenset({})
__init__(label=None, user=None, description='', type_string=None, backend=None)[源代码]

Create a new group. Either pass a dbgroup parameter, to reload a group from the DB (and then, no further parameters are allowed), or pass the parameters for the Group creation.

1.2.0 版后已移除: The parameter type_string will be removed in v2.0.0 and is now determined automatically.

参数
  • label (str) – The group label, required on creation

  • description (str) – The group description (by default, an empty string)

  • user (aiida.orm.User) – The owner of the group (by default, the automatic user)

  • type_string (str) – a string identifying the type of group (by default, an empty string, indicating an user-defined group.

__module__ = 'aiida.orm.groups'
__repr__()[源代码]

Return repr(self).

__str__()[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_type_string = 'core'
add_nodes(nodes)[源代码]

Add a node or a set of nodes to the group.

Note

all the nodes and the group itself have to be stored.

参数

nodes (aiida.orm.Node or list) – a single Node or a list of Nodes

clear()[源代码]

Remove all the nodes from this group.

count()[源代码]

Return the number of entities in this group.

返回

integer number of entities contained within the group

返回类型

int

property description
返回

the description of the group as a string

返回类型

str

classmethod get(**kwargs)[源代码]

Custom get for group which can be used to get a group with the given attributes

参数

kwargs – the attributes to match the group to

返回

the group

static get_schema()[源代码]
Every node property contains:
  • display_name: display name of the property

  • help text: short help text of the property

  • is_foreign_key: is the property foreign key to other type of the node

  • type: type of the property. e.g. str, dict, int

返回

schema of the group

返回类型

dict

1.0.0 版后已移除: Will be removed in v2.0.0. Use get_projectable_properties() instead.

property is_empty

Return whether the group is empty, i.e. it does not contain any nodes.

返回

True if it contains no nodes, False otherwise

返回类型

bool

is_user_defined()[源代码]
返回

True if the group is user defined, False otherwise

返回类型

bool

property label
返回

the label of the group as a string

property nodes

Return a generator/iterator that iterates over all nodes and returns the respective AiiDA subclasses of Node, and also allows to ask for the number of nodes in the group using len().

返回类型

aiida.orm.convert.ConvertIterator

remove_nodes(nodes)[源代码]

Remove a node or a set of nodes to the group.

Note

all the nodes and the group itself have to be stored.

参数

nodes (aiida.orm.Node or list) – a single Node or a list of Nodes

store()[源代码]

Verify that the group is allowed to be stored, which is the case along as type_string is set.

property type_string
返回

the string defining the type of the group

property user
返回

the user associated with this group

property uuid
返回

a string with the uuid

返回类型

str

class aiida.orm.GroupTypeString(value)[源代码]

基类:enum.Enum

A simple enum of allowed group type strings.

1.2.0 版后已移除: This enum is deprecated and will be removed in v2.0.0.

IMPORTGROUP_TYPE = 'auto.import'
UPFGROUP_TYPE = 'data.upf'
USER = 'user'
VERDIAUTOGROUP_TYPE = 'auto.run'
__module__ = 'aiida.orm.groups'
class aiida.orm.ImportGroup(label=None, user=None, description='', type_string=None, backend=None)[源代码]

基类:aiida.orm.groups.Group

Group to be used to contain all nodes from an export archive that has been imported.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.groups'
_abc_impl = <_abc_data object>
_type_string = 'core.import'
class aiida.orm.Int(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.numeric.NumericType

Data sub class to represent an integer value.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.int'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.int.Int (REPORT)>
_plugin_type_string = 'data.int.Int.'
_query_type_string = 'data.int.'
_type

builtins.int 的别名

class aiida.orm.KpointsData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.array.array.ArrayData

Class to handle array of kpoints in the Brillouin zone. Provide methods to generate either user-defined k-points or path of k-points along symmetry lines. Internally, all k-points are defined in terms of crystal (fractional) coordinates. Cell and lattice vector coordinates are in Angstroms, reciprocal lattice vectors in Angstrom^-1 . :note: The methods setting and using the Bravais lattice info assume the PRIMITIVE unit cell is provided in input to the set_cell or set_cell_from_structure methods.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.array.kpoints'
_abc_impl = <_abc_data object>
_change_reference(kpoints, to_cartesian=True)[源代码]

Change reference system, from cartesian to crystal coordinates (units of b1,b2,b3) or viceversa. :param kpoints: a list of (3) point coordinates :return kpoints: a list of (3) point coordinates in the new reference

property _dimension

Dimensionality of the structure, found from its pbc (i.e. 1 if it’s a 1D structure, 2 if its 2D, 3 if it’s 3D …). :return dimensionality: 0, 1, 2 or 3 :note: will return 3 if pbc has not been set beforehand

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.kpoints.KpointsData (REPORT)>
_plugin_type_string = 'data.array.kpoints.KpointsData.'
_query_type_string = 'data.array.kpoints.'
_set_cell(value)[源代码]

Validate if ‘value’ is a allowed crystal unit cell :param value: something compatible with a 3x3 tuple of floats

_set_labels(value)[源代码]

set label names. Must pass in input a list like: [[0,'X'],[34,'L'],... ]

_set_pbc(value)[源代码]

validate the pbc, then store them

_validate_kpoints_weights(kpoints, weights)[源代码]

Validate the list of kpoints and of weights before storage. Kpoints and weights must be convertible respectively to an array of N x dimension and N floats

property cell

The crystal unit cell. Rows are the crystal vectors in Angstroms. :return: a 3x3 numpy.array

get_description()[源代码]

Returns a string with infos retrieved from kpoints node’s properties. :param node: :return: retstr

get_kpoints(also_weights=False, cartesian=False)[源代码]

Return the list of kpoints

参数
  • also_weights – if True, returns also the list of weights. Default = False

  • cartesian – if True, returns points in cartesian coordinates, otherwise, returns in crystal coordinates. Default = False.

get_kpoints_mesh(print_list=False)[源代码]

Get the mesh of kpoints.

参数

print_list – default=False. If True, prints the mesh of kpoints as a list

引发

AttributeError – if no mesh has been set

Return mesh,offset

(if print_list=False) a list of 3 integers and a list of three floats 0<x<1, representing the mesh and the offset of kpoints

Return kpoints

(if print_list = True) an explicit list of kpoints coordinates, similar to what returned by get_kpoints()

property labels

Labels associated with the list of kpoints. List of tuples with kpoint index and kpoint name: [(0,'G'),(13,'M'),...]

property pbc

The periodic boundary conditions along the vectors a1,a2,a3.

返回

a tuple of three booleans, each one tells if there are periodic boundary conditions for the i-th real-space direction (i=1,2,3)

property reciprocal_cell

Compute reciprocal cell from the internally set cell.

返回

reciprocal cell in units of 1/Angstrom with cell vectors stored as rows. Use e.g. reciprocal_cell[0] to access the first reciprocal cell vector.

set_cell(cell, pbc=None)[源代码]

Set a cell to be used for symmetry analysis. To set a cell from an AiiDA structure, use “set_cell_from_structure”.

参数
  • cell – 3x3 matrix of cell vectors. Orientation: each row represent a lattice vector. Units are Angstroms.

  • pbc – list of 3 booleans, True if in the nth crystal direction the structure is periodic. Default = [True,True,True]

set_cell_from_structure(structuredata)[源代码]

Set a cell to be used for symmetry analysis from an AiiDA structure. Inherits both the cell and the pbc’s. To set manually a cell, use “set_cell”

参数

structuredata – an instance of StructureData

set_kpoints(kpoints, cartesian=False, labels=None, weights=None, fill_values=0)[源代码]

Set the list of kpoints. If a mesh has already been stored, raise a ModificationNotAllowed

参数
  • kpoints

    a list of kpoints, each kpoint being a list of one, two or three coordinates, depending on self.pbc: if structure is 1D (only one True in self.pbc) one allows singletons or scalars for each k-point, if it’s 2D it can be a length-2 list, and in all cases it can be a length-3 list. Examples:

    • [[0.,0.,0.],[0.1,0.1,0.1],…] for 1D, 2D or 3D

    • [[0.,0.],[0.1,0.1,],…] for 1D or 2D

    • [[0.],[0.1],…] for 1D

    • [0., 0.1, …] for 1D (list of scalars)

    For 0D (all pbc are False), the list can be any of the above or empty - then only Gamma point is set. The value of k for the non-periodic dimension(s) is set by fill_values

  • cartesian – if True, the coordinates given in input are treated as in cartesian units. If False, the coordinates are crystal, i.e. in units of b1,b2,b3. Default = False

  • labels – optional, the list of labels to be set for some of the kpoints. See labels for more info

  • weights – optional, a list of floats with the weight associated to the kpoint list

  • fill_values – scalar to be set to all non-periodic dimensions (indicated by False in self.pbc), or list of values for each of the non-periodic dimensions.

set_kpoints_mesh(mesh, offset=None)[源代码]

Set KpointsData to represent a uniformily spaced mesh of kpoints in the Brillouin zone. This excludes the possibility of set/get kpoints

参数
  • mesh – a list of three integers, representing the size of the kpoint mesh along b1,b2,b3.

  • offset – (optional) a list of three floats between 0 and 1. [0.,0.,0.] is Gamma centered mesh [0.5,0.5,0.5] is half shifted [1.,1.,1.] by periodicity should be equivalent to [0.,0.,0.] Default = [0.,0.,0.].

set_kpoints_mesh_from_density(distance, offset=None, force_parity=False)[源代码]

Set a kpoints mesh using a kpoints density, expressed as the maximum distance between adjacent points along a reciprocal axis

参数
  • distance – distance (in 1/Angstrom) between adjacent kpoints, i.e. the number of kpoints along each reciprocal axis i is \(|b_i|/distance\) where \(|b_i|\) is the norm of the reciprocal cell vector.

  • offset – (optional) a list of three floats between 0 and 1. [0.,0.,0.] is Gamma centered mesh [0.5,0.5,0.5] is half shifted Default = [0.,0.,0.].

  • force_parity – (optional) if True, force each integer in the mesh to be even (except for the non-periodic directions).

Note

a cell should be defined first.

Note

the number of kpoints along non-periodic axes is always 1.

class aiida.orm.List(**kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data, collections.abc.MutableSequence

Data sub class to represent a list.

_LIST_KEY = 'list'
__abstractmethods__ = frozenset({})
__delitem__(key)[源代码]
__eq__(other)[源代码]

Fallback equality comparison by uuid (can be overwritten by specific types)

__getitem__(item)[源代码]
__hash__ = None
__init__(**kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__len__()[源代码]
__module__ = 'aiida.orm.nodes.data.list'
__ne__(other)[源代码]

Return self!=value.

__setitem__(key, value)[源代码]
__str__()[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.list.List (REPORT)>
_plugin_type_string = 'data.list.List.'
_query_type_string = 'data.list.'
_using_list_reference()[源代码]

This function tells the class if we are using a list reference. This means that calls to self.get_list return a reference rather than a copy of the underlying list and therefore self.set_list need not be called. This knwoledge is essential to make sure this class is performant.

Currently the implementation assumes that if the node needs to be stored then it is using the attributes cache which is a reference.

返回

True if using self.get_list returns a reference to the underlying sequence. False otherwise.

返回类型

bool

append(value)[源代码]

S.append(value) – append value to the end of the sequence

count(value)[源代码]

Return number of occurrences of value.

extend(value)[源代码]

S.extend(iterable) – extend sequence by appending elements from the iterable

get_list()[源代码]

Return the contents of this node.

返回

a list

index(value)[源代码]

Return first index of value..

insert(i, value)[源代码]

S.insert(index, value) – insert value before index

pop(**kwargs)[源代码]

Remove and return item at index (default last).

remove(value)[源代码]

S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.

reverse()[源代码]

S.reverse() – reverse IN PLACE

set_list(data)[源代码]

Set the contents of this node.

参数

data – the list to set

sort(key=None, reverse=False)[源代码]
class aiida.orm.Log(time, loggername, levelname, dbnode_id, message='', metadata=None, backend=None)[源代码]

基类:aiida.orm.entities.Entity

An AiiDA Log entity. Corresponds to a logged message against a particular AiiDA node.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

This class represents the collection of logs and can be used to create and retrieve logs.

__module__ = 'aiida.orm.logs'
__parameters__ = ()
static create_entry_from_record(record)[源代码]

Helper function to create a log entry from a record created as by the python logging library

参数

record (logging.LogRecord) – The record created by the logging module

返回

An object implementing the log entry interface

返回类型

aiida.orm.logs.Log

delete(log_id)[源代码]

Remove a Log entry from the collection with the given id

参数

log_id (int) – id of the Log to delete

引发
delete_all()[源代码]

Delete all Logs in the collection

引发

IntegrityError – if all Logs could not be deleted

delete_many(filters)[源代码]

Delete Logs based on filters

参数

filters (dict) – similar to QueryBuilder filter

返回

(former) PK s of deleted Logs

返回类型

list

引发
get_logs_for(entity, order_by=None)[源代码]

Get all the log messages for a given entity and optionally sort

参数
  • entity (aiida.orm.Entity) – the entity to get logs for

  • order_by (list) – a list of (key, direction) pairs specifying the sort order

返回

the list of log entries

返回类型

list

__init__(time, loggername, levelname, dbnode_id, message='', metadata=None, backend=None)[源代码]

Construct a new log

参数
  • time (datetime.datetime) – time

  • loggername (str) – name of logger

  • levelname (str) – name of log level

  • dbnode_id (int) – id of database node

  • message (str) – log message

  • metadata (dict) – metadata

  • backend (aiida.orm.implementation.Backend) – database backend

__module__ = 'aiida.orm.logs'
property dbnode_id

Get the id of the object that created the log entry

返回

The id of the object that created the log entry

返回类型

int

property levelname

The name of the log level

返回

The entry log level name

返回类型

str

property loggername

The name of the logger that created this entry

返回

The entry loggername

返回类型

str

property message

Get the message corresponding to the entry

返回

The entry message

返回类型

str

property metadata

Get the metadata corresponding to the entry

返回

The entry metadata

返回类型

dict

property time

Get the time corresponding to the entry

返回

The entry timestamp

返回类型

datetime.datetime

class aiida.orm.Node(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.entities.Entity, aiida.orm.entities.EntityAttributesMixin, aiida.orm.entities.EntityExtrasMixin

Base class for all nodes in AiiDA.

Stores attributes starting with an underscore.

Caches files and attributes before the first save, and saves everything only on store(). After the call to store(), attributes cannot be changed.

Only after storing (or upon loading from uuid) extras can be modified and in this case they are directly set on the db.

In the plugin, also set the _plugin_type_string, to be set in the DB in the ‘type’ field.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of nodes.

__module__ = 'aiida.orm.nodes.node'
__parameters__ = ()
delete(node_id: int)None[源代码]

Delete a Node from the collection with the given id

参数

node_id – the node id

__abstractmethods__ = frozenset({})
__annotations__ = {'_hash_ignored_attributes': typing.Tuple[str, ...], '_incoming_cache': typing.Union[typing.List[aiida.orm.utils.links.LinkTriple], NoneType], '_logger': typing.Union[logging.Logger, NoneType], '_repository': typing.Union[aiida.orm.utils._repository.Repository, NoneType], '_updatable_attributes': typing.Tuple[str, ...]}
__copy__()[源代码]

Copying a Node is not supported in general, but only for the Data sub class.

__deepcopy__(memo)[源代码]

Deep copying a Node is not supported in general, but only for the Data sub class.

__eq__(other: Any)bool[源代码]

Fallback equality comparison by uuid (can be overwritten by specific types)

__hash__()int[源代码]

Python-Hash: Implementation that is compatible with __eq__

__init__(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)None[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.node'
__repr__()str[源代码]

Return repr(self).

__str__()str[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_add_incoming_cache(source: aiida.orm.nodes.node.Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

Add an incoming link to the cache.

参数
  • source – the node from which the link is coming

  • link_type – the link type

  • link_label – the link label

引发

aiida.common.UniquenessError – if the given link triple already exists in the cache

_add_outputs_from_cache(cache_node: aiida.orm.nodes.node.Node)None[源代码]

Replicate the output links and nodes from the cached node onto this node.

_cachable = False
_get_hash(ignore_errors: bool = True, **kwargs: Any) → Optional[str][源代码]

Return the hash for this node based on its attributes.

This will always work, even before storing.

参数

ignore_errors – return None on aiida.common.exceptions.HashingError (logging the exception)

_get_objects_to_hash()List[Any][源代码]

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

_get_same_node() → Optional[aiida.orm.nodes.node.Node][源代码]

Returns a stored node from which the current Node can be cached or None if it does not exist

If a node is returned it is a valid cache, meaning its _aiida_hash extra matches self.get_hash(). If there are multiple valid matches, the first one is returned. If no matches are found, None is returned.

返回

a stored Node instance with the same hash as this code or None

Note: this should be only called on stored nodes, or internally from .store() since it first calls clean_value() on the attributes to normalise them.

_hash_ignored_attributes: Tuple[str, ] = ()
_incoming_cache: Optional[List[aiida.orm.utils.links.LinkTriple]] = None
_iter_all_same_nodes(allow_before_store=False) → Iterator[aiida.orm.nodes.node.Node][源代码]

Returns an iterator of all same nodes.

Note: this should be only called on stored nodes, or internally from .store() since it first calls clean_value() on the attributes to normalise them.

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.node.Node (REPORT)>
_plugin_type_string = ''
_query_type_string = ''
_repository: Optional[aiida.orm.utils._repository.Repository] = None
_repository_base_path = 'path'
_storable = False
_store(with_transaction: bool = True, clean: bool = True)aiida.orm.nodes.node.Node[源代码]

Store the node in the database while saving its attributes and repository directory.

参数
  • with_transaction – if False, do not use a transaction because the caller will already have opened one.

  • clean – boolean, if True, will clean the attributes and extras before attempting to store

_store_from_cache(cache_node: aiida.orm.nodes.node.Node, with_transaction: bool)None[源代码]

Store this node from an existing cache node.

_unstorable_message = 'only Data, WorkflowNode, CalculationNode or their subclasses can be stored'
_updatable_attributes: Tuple[str, ] = ()
_validate()bool[源代码]

Check if the attributes and files retrieved from the database are valid.

Must be able to work even before storing: therefore, use the get_attr and similar methods that automatically read either from the DB or from the internal attribute cache.

For the base class, this is always valid. Subclasses will reimplement this. In the subclass, always call the super()._validate() method first!

add_comment(content: str, user: Optional[aiida.orm.users.User] = None)aiida.orm.comments.Comment[源代码]

Add a new comment.

参数
  • content – string with comment

  • user – the user to associate with the comment, will use default if not supplied

返回

the newly created comment

add_incoming(source: aiida.orm.nodes.node.Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

Add a link of the given type from a given node to ourself.

参数
  • source – the node from which the link is coming

  • link_type – the link type

  • link_label – the link label

引发
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

property backend_entity

Get the implementing class for this object

返回

the class model

class_node_type = ''
clear_hash()None[源代码]

Sets the stored hash of the Node to None.

property computer

Return the computer of this node.

返回

the computer or None

返回类型

Computer or None

property ctime

Return the node ctime.

返回

the ctime

delete_object(path: Optional[str] = None, force: bool = False, key: Optional[str] = None)None[源代码]

Delete the object from the repository.

警告

If the repository belongs to a stored node, a ModificationNotAllowed exception will be raised. This check can be avoided by using the force flag, but this should be used with extreme caution!

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Keyword force is deprecated and will be removed in v2.0.0.

参数
  • key – fully qualified identifier for the object within the repository

  • force – boolean, if True, will skip the mutability check

引发

aiida.common.ModificationNotAllowed – if repository is immutable and force=False

property description

Return the node description.

返回

the description

classmethod from_backend_entity(backend_entity: BackendNode)Node[源代码]

Construct an entity from a backend entity instance

参数

backend_entity – the backend entity

返回

an AiiDA entity instance

get_all_same_nodes()List[aiida.orm.nodes.node.Node][源代码]

Return a list of stored nodes which match the type and hash of the current node.

All returned nodes are valid caches, meaning their _aiida_hash extra matches self.get_hash().

Note: this can be called only after storing a Node (since at store time attributes will be cleaned with clean_value and the hash should become idempotent to the action of serialization/deserialization)

get_cache_source() → Optional[str][源代码]

Return the UUID of the node that was used in creating this node from the cache, or None if it was not cached.

返回

source node UUID or None

get_comment(identifier: int)aiida.orm.comments.Comment[源代码]

Return a comment corresponding to the given identifier.

参数

identifier – the comment pk

引发
返回

the comment

get_comments()List[aiida.orm.comments.Comment][源代码]

Return a sorted list of comments for this node.

返回

the list of comments, sorted by pk

get_description()str[源代码]

Return a string with a description of the node.

返回

a description string

get_hash(ignore_errors: bool = True, **kwargs: Any) → Optional[str][源代码]

Return the hash for this node based on its attributes.

参数

ignore_errors – return None on aiida.common.exceptions.HashingError (logging the exception)

get_incoming(node_class: Type[Node] = None, link_type: Union[aiida.common.links.LinkType, Sequence[aiida.common.links.LinkType]] = (), link_label_filter: Optional[str] = None, only_uuid: bool = False)aiida.orm.utils.links.LinkManager[源代码]

Return a list of link triples that are (directly) incoming into this node.

参数
  • node_class – If specified, should be a class or tuple of classes, and it filters only elements of that specific type (or a subclass of ‘type’)

  • link_type – If specified should be a string or tuple to get the inputs of this link type, if None then returns all inputs of all link types.

  • link_label_filter – filters the incoming nodes by its link label. Here wildcards (% and _) can be passed in link label filter as we are using “like” in QB.

  • only_uuid – project only the node UUID instead of the instance onto the NodeTriple.node entries

get_object(path: Optional[str] = None, key: Optional[str] = None) → File[源代码]

Return the object with the given path.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

参数
  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

返回

a File named tuple

get_object_content(path: Optional[str] = None, mode: str = 'r', key: Optional[str] = None) → Union[str, bytes][源代码]

Return the content of a object with the given path.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

参数
  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

get_outgoing(node_class: Type[Node] = None, link_type: Union[aiida.common.links.LinkType, Sequence[aiida.common.links.LinkType]] = (), link_label_filter: Optional[str] = None, only_uuid: bool = False)aiida.orm.utils.links.LinkManager[源代码]

Return a list of link triples that are (directly) outgoing of this node.

参数
  • node_class – If specified, should be a class or tuple of classes, and it filters only elements of that specific type (or a subclass of ‘type’)

  • link_type – If specified should be a string or tuple to get the inputs of this link type, if None then returns all outputs of all link types.

  • link_label_filter – filters the outgoing nodes by its link label. Here wildcards (% and _) can be passed in link label filter as we are using “like” in QB.

  • only_uuid – project only the node UUID instead of the instance onto the NodeTriple.node entries

static get_schema()Dict[str, Any][源代码]
Every node property contains:
  • display_name: display name of the property

  • help text: short help text of the property

  • is_foreign_key: is the property foreign key to other type of the node

  • type: type of the property. e.g. str, dict, int

返回

get schema of the node

1.0.0 版后已移除: Will be removed in v2.0.0. Use get_projectable_properties() instead.

Return the list of stored link triples directly incoming to or outgoing of this node.

Note this will only return link triples that are stored in the database. Anything in the cache is ignored.

参数
  • node_class – If specified, should be a class, and it filters only elements of that (subclass of) type

  • link_type – Only get inputs of this link type, if empty tuple then returns all inputs of all link types.

  • link_label_filter – filters the incoming nodes by its link label. This should be a regex statement as one would pass directly to a QueryBuilder filter statement with the ‘like’ operation.

  • link_directionincoming or outgoing to get the incoming or outgoing links, respectively.

  • only_uuid – project only the node UUID instead of the instance onto the NodeTriple.node entries

Feturn whether there are unstored incoming links in the cache.

返回

boolean, True when there are links in the incoming cache, False otherwise

initialize()None[源代码]

Initialize internal variables for the backend node

This needs to be called explicitly in each specific subclass implementation of the init.

property is_created_from_cache

Return whether this node was created from a cached node.

返回

boolean, True if the node was created by cloning a cached node, False otherwise

property is_valid_cache

Hook to exclude certain Node instances from being considered a valid cache.

property label

Return the node label.

返回

the label

list_object_names(path: Optional[str] = None, key: Optional[str] = None)List[str][源代码]

Return a list of the object names contained in this repository, optionally in the given sub directory.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

参数
  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

list_objects(path: Optional[str] = None, key: Optional[str] = None)List[File][源代码]

Return a list of the objects contained in this repository, optionally in the given sub directory.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

参数
  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

返回

a list of File named tuples representing the objects present in directory with the given path

引发

FileNotFoundError – if the path does not exist in the repository of this node

property logger

Return the logger configured for this Node.

返回

Logger object

property mtime

Return the node mtime.

返回

the mtime

property node_type

Return the node type.

返回

the node type

open(path: Optional[str] = None, mode: str = 'r', key: Optional[str] = None) → aiida.orm.nodes.node.WarnWhenNotEntered[源代码]

Open a file handle to the object with the given path.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Starting from v2.0.0 this will raise if not used in a context manager.

参数
  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

  • mode – the mode under which to open the handle

property process_type

Return the node process type.

返回

the process type

put_object_from_file(filepath: str, path: Optional[str] = None, mode: Optional[str] = None, encoding: Optional[str] = None, force: bool = False, key: Optional[str] = None)None[源代码]

Store a new object under path with contents of the file located at filepath on this file system.

警告

If the repository belongs to a stored node, a ModificationNotAllowed exception will be raised. This check can be avoided by using the force flag, but this should be used with extreme caution!

1.4.0 版后已移除: First positional argument path has been deprecated and renamed to filepath.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Keyword force is deprecated and will be removed in v2.0.0.

参数
  • filepath – absolute path of file whose contents to copy to the repository

  • path – the relative path where to store the object in the repository.

  • key – fully qualified identifier for the object within the repository

  • mode – the file mode with which the object will be written Deprecated: will be removed in v2.0.0

  • encoding – the file encoding with which the object will be written Deprecated: will be removed in v2.0.0

  • force – boolean, if True, will skip the mutability check

引发

aiida.common.ModificationNotAllowed – if repository is immutable and force=False

put_object_from_filelike(handle: IO[Any], path: Optional[str] = None, mode: str = 'w', encoding: str = 'utf8', force: bool = False, key: Optional[str] = None)None[源代码]

Store a new object under path with contents of filelike object handle.

警告

If the repository belongs to a stored node, a ModificationNotAllowed exception will be raised. This check can be avoided by using the force flag, but this should be used with extreme caution!

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Keyword force is deprecated and will be removed in v2.0.0.

参数
  • handle – filelike object with the content to be stored

  • path – the relative path where to store the object in the repository.

  • key – fully qualified identifier for the object within the repository

  • mode – the file mode with which the object will be written

  • encoding – the file encoding with which the object will be written

  • force – boolean, if True, will skip the mutability check

引发

aiida.common.ModificationNotAllowed – if repository is immutable and force=False

put_object_from_tree(filepath: str, path: Optional[str] = None, contents_only: bool = True, force: bool = False, key: Optional[str] = None)None[源代码]

Store a new object under path with the contents of the directory located at filepath on this file system.

警告

If the repository belongs to a stored node, a ModificationNotAllowed exception will be raised. This check can be avoided by using the force flag, but this should be used with extreme caution!

1.4.0 版后已移除: First positional argument path has been deprecated and renamed to filepath.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Keyword force is deprecated and will be removed in v2.0.0.

1.4.0 版后已移除: Keyword contents_only is deprecated and will be removed in v2.0.0.

参数
  • filepath – absolute path of directory whose contents to copy to the repository

  • path – the relative path of the object within the repository.

  • key – fully qualified identifier for the object within the repository

  • contents_only – boolean, if True, omit the top level directory of the path and only copy its contents.

  • force – boolean, if True, will skip the mutability check

引发

aiida.common.ModificationNotAllowed – if repository is immutable and force=False

rehash()None[源代码]

Regenerate the stored hash of the Node.

remove_comment(identifier: int)None[源代码]

Delete an existing comment.

参数

identifier – the comment pk

store(with_transaction: bool = True, use_cache=None)aiida.orm.nodes.node.Node[源代码]

Store the node in the database while saving its attributes and repository directory.

After being called attributes cannot be changed anymore! Instead, extras can be changed only AFTER calling this store() function.

Note

After successful storage, those links that are in the cache, and for which also the parent node is already stored, will be automatically stored. The others will remain unstored.

参数

with_transaction – if False, do not use a transaction because the caller will already have opened one.

store_all(with_transaction: bool = True, use_cache=None)aiida.orm.nodes.node.Node[源代码]

Store the node, together with all input links.

Unstored nodes from cached incoming linkswill also be stored.

参数

with_transaction – if False, do not use a transaction because the caller will already have opened one.

update_comment(identifier: int, content: str)None[源代码]

Update the content of an existing comment.

参数
  • identifier – the comment pk

  • content – the new comment content

引发
property user

Return the user of this node.

返回

the user

返回类型

User

property uuid

Return the node UUID.

返回

the string representation of the UUID

validate_incoming(source: aiida.orm.nodes.node.Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

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

This function will first validate the types of the inputs, followed by the node and link types and validate whether in principle a link of that type between the nodes of these types is allowed.

Subsequently, the validity of the “degree” of the proposed link is validated, which means validating the number of links of the given type from the given node type is allowed.

参数
  • source – the node from which the link is coming

  • link_type – the link type

  • link_label – the link label

引发
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

validate_outgoing(target: aiida.orm.nodes.node.Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

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

The validity of the triple (source, link, target) should be validated in the validate_incoming call. This method will be called afterwards and can be overriden by subclasses to add additional checks that are specific to that subclass.

参数
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

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

  • ValueError – if the proposed link is invalid

validate_storability()None[源代码]

Verify that the current node is allowed to be stored.

引发

aiida.common.exceptions.StoringNotAllowed – if the node does not match all requirements for storing

verify_are_parents_stored()None[源代码]

Verify that all parent nodes are already stored.

引发

aiida.common.ModificationNotAllowed – if one of the source nodes of incoming links is not stored.

class aiida.orm.NumericType(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.base.BaseType

Sub class of Data to store numbers, overloading common operators (+, *, …).

__abstractmethods__ = frozenset({})
__add__(other)[源代码]

Decorator wrapper.

__div__(other)[源代码]

Decorator wrapper.

__float__()[源代码]
__floordiv__(other)[源代码]

Decorator wrapper.

__ge__(other)[源代码]

Decorator wrapper.

__gt__(other)[源代码]

Decorator wrapper.

__int__()[源代码]
__le__(other)[源代码]

Decorator wrapper.

__lt__(other)[源代码]

Decorator wrapper.

__mod__(other)[源代码]

Decorator wrapper.

__module__ = 'aiida.orm.nodes.data.numeric'
__mul__(other)[源代码]

Decorator wrapper.

__pow__(other)[源代码]

Decorator wrapper.

__radd__(other)[源代码]

Decorator wrapper.

__rdiv__(other)[源代码]

Decorator wrapper.

__rfloordiv__(other)[源代码]

Decorator wrapper.

__rmod__(other)[源代码]

Decorator wrapper.

__rmul__(other)[源代码]

Decorator wrapper.

__rsub__(other)[源代码]

Decorator wrapper.

__rtruediv__(other)[源代码]

Decorator wrapper.

__sub__(other)[源代码]

Decorator wrapper.

__truediv__(other)[源代码]

Decorator wrapper.

_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.numeric.NumericType (REPORT)>
_plugin_type_string = 'data.numeric.NumericType.'
_query_type_string = 'data.numeric.'
class aiida.orm.OrbitalData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.data.Data

Used for storing collections of orbitals, as well as providing methods for accessing them internally.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.orbital'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.orbital.OrbitalData (REPORT)>
_plugin_type_string = 'data.orbital.OrbitalData.'
_query_type_string = 'data.orbital.'
clear_orbitals()[源代码]

Remove all orbitals that were added to the class Cannot work if OrbitalData has been already stored

get_orbitals(**kwargs)[源代码]

Returns all orbitals by default. If a site is provided, returns all orbitals cooresponding to the location of that site, additional arguments may be provided, which act as filters on the retrieved orbitals.

参数

site – if provided, returns all orbitals with position of site

Kwargs

attributes than can filter the set of returned orbitals

Return list_of_outputs

a list of orbitals

set_orbitals(orbitals)[源代码]

Sets the orbitals into the database. Uses the orbital’s inherent set_orbital_dict method to generate a orbital dict string.

参数

orbital – an orbital or list of orbitals to be set

aiida.orm.OrderSpecifier(field, direction)[源代码]
class aiida.orm.ProcessNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.utils.mixins.Sealable, aiida.orm.nodes.node.Node

Base class for all nodes representing the execution of a process

This class and its subclasses serve as proxies in the database, for actual Process instances being run. The Process instance in memory will leverage an instance of this class (the exact sub class depends on the sub class of Process) to persist important information of its state to the database. This serves as a way for the user to inspect the state of the Process during its execution as well as a permanent record of its execution in the provenance graph, after the execution has terminated.

CHECKPOINT_KEY = 'checkpoints'
EXCEPTION_KEY = 'exception'
EXIT_MESSAGE_KEY = 'exit_message'
EXIT_STATUS_KEY = 'exit_status'
PROCESS_LABEL_KEY = 'process_label'
PROCESS_PAUSED_KEY = 'paused'
PROCESS_STATE_KEY = 'process_state'
PROCESS_STATUS_KEY = 'process_status'
__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.process'
__str__()str[源代码]

Return str(self).

_abc_impl = <_abc_data object>
_get_objects_to_hash()List[Any][源代码]

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

_hash_ignored_inputs = ['CALL_CALC', 'CALL_WORK']
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.process.ProcessNode (REPORT)>
_plugin_type_string = 'process.ProcessNode.'
_query_type_string = 'process.'
_unstorable_message = 'only Data, WorkflowNode, CalculationNode or their subclasses can be stored'
_updatable_attributes: Tuple[str, ] = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status')
property called

Return a list of nodes that the process called

返回

list of process nodes called by this process

property called_descendants

Return a list of all nodes that have been called downstream of this process

This will recursively find all the called processes for this process and its children.

property caller

Return the process node that called this process node, or None if it does not have a caller

返回

process node that called this process node instance or None

property checkpoint

Return the checkpoint bundle set for the process

返回

checkpoint bundle if it exists, None otherwise

delete_checkpoint()None[源代码]

Delete the checkpoint bundle set for the process

property exception

Return the exception of the process or None if the process is not excepted.

If the process is marked as excepted yet there is no exception attribute, an empty string will be returned.

返回

the exception message or None

property exit_message

Return the exit message of the process

返回

the exit message

property exit_status

Return the exit status of the process

返回

the exit status, an integer exit code or None

get_builder_restart() → ProcessBuilder[源代码]

Return a ProcessBuilder that is ready to relaunch the process 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.

返回

~aiida.engine.processes.builder.ProcessBuilder instance

property is_excepted

Return whether the process has excepted

Excepted means that during execution of the process, an exception was raised that was not caught.

返回

True if during execution of the process an exception occurred, False otherwise

返回类型

bool

property is_failed

Return whether the process has failed

Failed means that the process terminated nominally but it had a non-zero exit status.

返回

True if the process has failed, False otherwise

返回类型

bool

property is_finished

Return whether the process has finished

Finished means that the process reached a terminal state nominally. Note that this does not necessarily mean successfully, but there were no exceptions and it was not killed.

返回

True if the process has finished, False otherwise

返回类型

bool

property is_finished_ok

Return whether the process has finished successfully

Finished successfully means that it terminated nominally and had a zero exit status.

返回

True if the process has finished successfully, False otherwise

返回类型

bool

property is_killed

Return whether the process was killed

Killed means the process was killed directly by the user or by the calling process being killed.

返回

True if the process was killed, False otherwise

返回类型

bool

property is_terminated

Return whether the process has terminated

Terminated means that the process has reached any terminal state.

返回

True if the process has terminated, False otherwise

返回类型

bool

property is_valid_cache

Return whether the node is valid for caching

返回

True if this process node is valid to be used for caching, False otherwise

property logger

Get the logger of the Calculation object, so that it also logs to the DB.

返回

LoggerAdapter object, that works like a logger, but also has the ‘extra’ embedded

pause()None[源代码]

Mark the process as paused by setting the corresponding attribute.

This serves only to reflect that the corresponding Process is paused and so this method should not be called by anyone but the Process instance itself.

property paused

Return whether the process is paused

返回

True if the Calculation is marked as paused, False otherwise

property process_class

Return the process class that was used to create this node.

返回

Process class

引发

ValueError – if no process type is defined, it is an invalid process type string or cannot be resolved to load the corresponding class

property process_label

Return the process label

返回

the process label

property process_state

Return the process state

返回

the process state instance of ProcessState enum

property process_status

Return the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed

返回

the process status

set_checkpoint(checkpoint: Dict[str, Any])None[源代码]

Set the checkpoint bundle set for the process

参数

state – string representation of the stepper state info

set_exception(exception: str)None[源代码]

Set the exception of the process

参数

exception – the exception message

set_exit_message(message: Optional[str])None[源代码]

Set the exit message of the process, if None nothing will be done

参数

message – a string message

set_exit_status(status: Union[None, enum.Enum, int])None[源代码]

Set the exit status of the process

参数

state – an integer exit code or None, which will be interpreted as zero

set_process_label(label: str)None[源代码]

Set the process label

参数

label – process label string

set_process_state(state: Union[str, plumpy.process_states.ProcessState])[源代码]

Set the process state

参数

state – value or instance of ProcessState enum

set_process_status(status: Optional[str])None[源代码]

Set the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed. If status is None, the corresponding attribute will be deleted.

参数

status – string process status

set_process_type(process_type_string: str)None[源代码]

Set the process type string.

参数

process_type – the process type string identifying the class using this process node as storage.

unpause()None[源代码]

Mark the process as unpaused by removing the corresponding attribute.

This serves only to reflect that the corresponding Process is unpaused and so this method should not be called by anyone but the Process instance itself.

validate_incoming(source: aiida.orm.nodes.node.Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

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

Adding an input link to a ProcessNode once it is stored is illegal because this should be taken care of by the engine in one go. If a link is being added after the node is stored, it is most likely not by the engine and it should not be allowed.

参数
  • source – the node from which the link is coming

  • link_type – the link type

  • link_label – the link label

引发
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

class aiida.orm.ProjectionData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.orbital.OrbitalData, aiida.orm.nodes.data.array.array.ArrayData

A class to handle arrays of projected wavefunction data. That is projections of a orbitals, usually an atomic-hydrogen orbital, onto a given bloch wavefunction, the bloch wavefunction being indexed by s, n, and k. E.g. the elements are the projections described as < orbital | Bloch wavefunction (s,n,k) >

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.array.projection'
_abc_impl = <_abc_data object>
_check_projections_bands(projection_array)[源代码]

Checks to make sure that a reference bandsdata is already set, and that projection_array is of the same shape of the bands data

参数

projwfc_arrays – nk x nb x nwfc array, to be checked against bands

Raise

AttributeError if energy is not already set

Raise

AttributeError if input_array is not of same shape as dos_energy

_find_orbitals_and_indices(**kwargs)[源代码]

Finds all the orbitals and their indicies associated with kwargs essential for retrieving the other indexed array parameters

参数

kwargs – kwargs that can call orbitals as in get_orbitals()

返回

retrieve_indexes, list of indicicies of orbitals corresponding to the kwargs

返回

all_orbitals, list of orbitals to which the indexes correspond

static _from_index_to_arrayname(index)[源代码]

Used internally to determine the array names.

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.projection.ProjectionData (REPORT)>
_plugin_type_string = 'data.array.projection.ProjectionData.'
_query_type_string = 'data.array.projection.'
get_pdos(**kwargs)[源代码]

Retrieves all the pdos arrays corresponding to the input kwargs

参数

kwargs – inputs describing the orbitals associated with the pdos arrays

返回

a list of tuples containing the orbital, energy array and pdos array associated with all orbitals that correspond to kwargs

get_projections(**kwargs)[源代码]

Retrieves all the pdos arrays corresponding to the input kwargs

参数

kwargs – inputs describing the orbitals associated with the pdos arrays

返回

a list of tuples containing the orbital, and projection arrays associated with all orbitals that correspond to kwargs

get_reference_bandsdata()[源代码]

Returns the reference BandsData, using the set uuid via set_reference_bandsdata

返回

a BandsData instance

引发
set_orbitals(**kwargs)[源代码]

This method is inherited from OrbitalData, but is blocked here. If used will raise a NotImplementedError

set_projectiondata(list_of_orbitals, list_of_projections=None, list_of_energy=None, list_of_pdos=None, tags=None, bands_check=True)[源代码]

Stores the projwfc_array using the projwfc_label, after validating both.

参数
  • list_of_orbitals – list of orbitals, of class orbital data. They should be the ones up on which the projection array corresponds with.

  • list_of_projections – list of arrays of projections of a atomic wavefunctions onto bloch wavefunctions. Since the projection is for every bloch wavefunction which can be specified by its spin (if used), band, and kpoint the dimensions must be nspin x nbands x nkpoints for the projwfc array. Or nbands x nkpoints if spin is not used.

  • energy_axis – list of energy axis for the list_of_pdos

  • list_of_pdos – a list of projected density of states for the atomic wavefunctions, units in states/eV

  • tags – A list of tags, not supported currently.

  • bands_check – if false, skips checks of whether the bands has been already set, and whether the sizes match. For use in parsers, where the BandsData has not yet been stored and therefore get_reference_bandsdata cannot be called

set_reference_bandsdata(value)[源代码]

Sets a reference bandsdata, creates a uuid link between this data object and a bandsdata object, must be set before any projection arrays

参数

value – a BandsData instance, a uuid or a pk

Raise

exceptions.NotExistent if there was no BandsData associated with uuid or pk

class aiida.orm.QueryBuilder(backend=None, **kwargs)[源代码]

基类:object

The class to query the AiiDA database.

Usage:

from aiida.orm.querybuilder import QueryBuilder
qb = QueryBuilder()
# Querying nodes:
qb.append(Node)
# retrieving the results:
results = qb.all()
_EDGE_TAG_DELIM = '--'
_VALID_PROJECTION_KEYS = ('func', 'cast')
__deepcopy__(memo)[源代码]

Create deep copy of QueryBuilder instance.

__dict__ = mappingproxy({'__module__': 'aiida.orm.querybuilder', '__doc__': '\n The class to query the AiiDA database.\n\n Usage::\n\n from aiida.orm.querybuilder import QueryBuilder\n qb = QueryBuilder()\n # Querying nodes:\n qb.append(Node)\n # retrieving the results:\n results = qb.all()\n\n ', '_EDGE_TAG_DELIM': '--', '_VALID_PROJECTION_KEYS': ('func', 'cast'), '__init__': <function QueryBuilder.__init__>, '__str__': <function QueryBuilder.__str__>, '_get_ormclass': <function QueryBuilder._get_ormclass>, '_get_unique_tag': <function QueryBuilder._get_unique_tag>, 'append': <function QueryBuilder.append>, 'order_by': <function QueryBuilder.order_by>, 'add_filter': <function QueryBuilder.add_filter>, '_process_filters': <staticmethod object>, '_add_node_type_filter': <function QueryBuilder._add_node_type_filter>, '_add_process_type_filter': <function QueryBuilder._add_process_type_filter>, '_add_group_type_filter': <function QueryBuilder._add_group_type_filter>, 'add_projection': <function QueryBuilder.add_projection>, '_get_projectable_entity': <function QueryBuilder._get_projectable_entity>, '_add_to_projections': <function QueryBuilder._add_to_projections>, '_build_projections': <function QueryBuilder._build_projections>, '_get_tag_from_specification': <function QueryBuilder._get_tag_from_specification>, 'set_debug': <function QueryBuilder.set_debug>, 'limit': <function QueryBuilder.limit>, 'offset': <function QueryBuilder.offset>, '_build_filters': <function QueryBuilder._build_filters>, '_check_dbentities': <staticmethod object>, '_join_outputs': <function QueryBuilder._join_outputs>, '_join_inputs': <function QueryBuilder._join_inputs>, '_join_descendants_recursive': <function QueryBuilder._join_descendants_recursive>, '_join_ancestors_recursive': <function QueryBuilder._join_ancestors_recursive>, '_join_group_members': <function QueryBuilder._join_group_members>, '_join_groups': <function QueryBuilder._join_groups>, '_join_creator_of': <function QueryBuilder._join_creator_of>, '_join_created_by': <function QueryBuilder._join_created_by>, '_join_to_computer_used': <function QueryBuilder._join_to_computer_used>, '_join_computer': <function QueryBuilder._join_computer>, '_join_group_user': <function QueryBuilder._join_group_user>, '_join_user_group': <function QueryBuilder._join_user_group>, '_join_node_comment': <function QueryBuilder._join_node_comment>, '_join_comment_node': <function QueryBuilder._join_comment_node>, '_join_node_log': <function QueryBuilder._join_node_log>, '_join_log_node': <function QueryBuilder._join_log_node>, '_join_user_comment': <function QueryBuilder._join_user_comment>, '_join_comment_user': <function QueryBuilder._join_comment_user>, '_get_function_map': <function QueryBuilder._get_function_map>, '_get_connecting_node': <function QueryBuilder._get_connecting_node>, 'get_json_compatible_queryhelp': <function QueryBuilder.get_json_compatible_queryhelp>, 'queryhelp': <property object>, '__deepcopy__': <function QueryBuilder.__deepcopy__>, '_build_order': <function QueryBuilder._build_order>, '_build': <function QueryBuilder._build>, 'get_aliases': <function QueryBuilder.get_aliases>, 'get_alias': <function QueryBuilder.get_alias>, 'get_used_tags': <function QueryBuilder.get_used_tags>, 'get_query': <function QueryBuilder.get_query>, 'get_aiida_entity_res': <staticmethod object>, 'inject_query': <function QueryBuilder.inject_query>, 'distinct': <function QueryBuilder.distinct>, 'first': <function QueryBuilder.first>, 'one': <function QueryBuilder.one>, 'count': <function QueryBuilder.count>, 'iterall': <function QueryBuilder.iterall>, 'iterdict': <function QueryBuilder.iterdict>, 'all': <function QueryBuilder.all>, 'dict': <function QueryBuilder.dict>, 'inputs': <function QueryBuilder.inputs>, 'outputs': <function QueryBuilder.outputs>, 'children': <function QueryBuilder.children>, 'parents': <function QueryBuilder.parents>, '__dict__': <attribute '__dict__' of 'QueryBuilder' objects>, '__weakref__': <attribute '__weakref__' of 'QueryBuilder' objects>})
__init__(backend=None, **kwargs)[源代码]

Instantiates a QueryBuilder instance.

Which backend is used decided here based on backend-settings (taken from the user profile). This cannot be overriden so far by the user.

参数
  • debug (bool) – Turn on debug mode. This feature prints information on the screen about the stages of the QueryBuilder. Does not affect results.

  • path (list) – A list of the vertices to traverse. Leave empty if you plan on using the method QueryBuilder.append().

  • filters – The filters to apply. You can specify the filters here, when appending to the query using QueryBuilder.append() or even later using QueryBuilder.add_filter(). Check latter gives API-details.

  • project – The projections to apply. You can specify the projections here, when appending to the query using QueryBuilder.append() or even later using QueryBuilder.add_projection(). Latter gives you API-details.

  • limit (int) – Limit the number of rows to this number. Check QueryBuilder.limit() for more information.

  • offset (int) – Set an offset for the results returned. Details in QueryBuilder.offset().

  • order_by – How to order the results. As the 2 above, can be set also at later stage, check QueryBuilder.order_by() for more information.

__module__ = 'aiida.orm.querybuilder'
__str__()[源代码]

When somebody hits: print(QueryBuilder) or print(str(QueryBuilder)) I want to print the SQL-query. Because it looks cool…

__weakref__

list of weak references to the object (if defined)

_add_group_type_filter(tagspec, classifiers, subclassing)[源代码]

Add a filter based on group type.

参数
  • tagspec – The tag, which has to exist already as a key in self._filters

  • classifiers – a dictionary with classifiers

  • subclassing – if True, allow for subclasses of the ormclass

_add_node_type_filter(tagspec, classifiers, subclassing)[源代码]

Add a filter based on node type.

参数
  • tagspec – The tag, which has to exist already as a key in self._filters

  • classifiers – a dictionary with classifiers

  • subclassing – if True, allow for subclasses of the ormclass

_add_process_type_filter(tagspec, classifiers, subclassing)[源代码]

Add a filter based on process type.

参数
  • tagspec – The tag, which has to exist already as a key in self._filters

  • classifiers – a dictionary with classifiers

  • subclassing – if True, allow for subclasses of the process type

Note: This function handles the case when process_type_string is None.

_add_to_projections(alias, projectable_entity_name, cast=None, func=None)[源代码]
参数
  • alias (sqlalchemy.orm.util.AliasedClass) – A instance of sqlalchemy.orm.util.AliasedClass, alias for an ormclass

  • projectable_entity_name – User specification of what to project. Appends to query’s entities what the user wants to project (have returned by the query)

_build()[源代码]

build the query and return a sqlalchemy.Query instance

_build_filters(alias, filter_spec)[源代码]

Recurse through the filter specification and apply filter operations.

参数
  • alias – The alias of the ORM class the filter will be applied on

  • filter_spec – the specification as given by the queryhelp

返回

an instance of sqlalchemy.sql.elements.BinaryExpression.

_build_order(alias, entitytag, entityspec)[源代码]

Build the order parameter of the query

_build_projections(tag, items_to_project=None)[源代码]

Build the projections for a given tag.

static _check_dbentities(entities_cls_joined, entities_cls_to_join, relationship)[源代码]
参数
  • entities_cls_joined – A tuple of the aliased class passed as joined_entity and the ormclass that was expected

  • entities_cls_joined – A tuple of the aliased class passed as entity_to_join and the ormclass that was expected

  • relationship (str) – The relationship between the two entities to make the Exception comprehensible

_get_connecting_node(index, joining_keyword=None, joining_value=None, **kwargs)[源代码]
参数
  • querydict – A dictionary specifying how the current node is linked to other nodes.

  • index – Index of this node within the path specification

  • joining_keyword – the relation on which to join

  • joining_value – the tag of the nodes to be joined

_get_function_map()[源代码]

Map relationship type keywords to functions The new mapping (since 1.0.0a5) is a two level dictionary. The first level defines the entity which has been passed to the qb.append functon, and the second defines the relationship with respect to a given tag.

_get_ormclass(cls, ormclass_type_string)[源代码]

Get ORM classifiers from either class(es) or ormclass_type_string(s).

参数
  • cls – a class or tuple/set/list of classes that are either AiiDA ORM classes or backend ORM classes.

  • ormclass_type_string – type string for ORM class

返回

the ORM class as well as a dictionary with additional classifier strings

Handles the case of lists as well.

_get_projectable_entity(alias, column_name, attrpath, **entityspec)[源代码]

Return projectable entity for a given alias and column name.

_get_tag_from_specification(specification)[源代码]
参数

specification – If that is a string, I assume the user has deliberately specified it with tag=specification. In that case, I simply check that it’s not a duplicate. If it is a class, I check if it’s in the _cls_to_tag_map!

_get_unique_tag(classifiers)[源代码]

Using the function get_tag_from_type, I get a tag. I increment an index that is appended to that tag until I have an unused tag. This function is called in QueryBuilder.append() when autotag is set to True.

参数

classifiers (dict) –

Classifiers, containing the string that defines the type of the AiiDA ORM class. For subclasses of Node, this is the Node._plugin_type_string, for other they are as defined as returned by QueryBuilder._get_ormclass().

Can also be a list of dictionaries, when multiple classes are passed to QueryBuilder.append

返回

A tag as a string (it is a single string also when passing multiple classes).

_join_ancestors_recursive(joined_entity, entity_to_join, isouterjoin, filter_dict, expand_path=False)[源代码]

joining ancestors using the recursive functionality :TODO: Move the filters to be done inside the recursive query (for example on depth) :TODO: Pass an option to also show the path, if this is wanted.

_join_comment_node(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased comment

  • entity_to_join – aliased node

_join_comment_user(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased comment

  • entity_to_join – aliased user

_join_computer(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An entity that can use a computer (eg a node)

  • entity_to_join – aliased dbcomputer entity

_join_created_by(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – the aliased user you want to join to

  • entity_to_join – the (aliased) node or group in the DB to join with

_join_creator_of(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – the aliased node

  • entity_to_join – the aliased user to join to that node

_join_descendants_recursive(joined_entity, entity_to_join, isouterjoin, filter_dict, expand_path=False)[源代码]

joining descendants using the recursive functionality :TODO: Move the filters to be done inside the recursive query (for example on depth) :TODO: Pass an option to also show the path, if this is wanted.

_join_group_members(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – The (aliased) ORMclass that is a group in the database

  • entity_to_join – The (aliased) ORMClass that is a node and member of the group

joined_entity and entity_to_join are joined via the table_groups_nodes table. from joined_entity as group to enitity_to_join as node. (enitity_to_join is with_group joined_entity)

_join_group_user(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased dbgroup

  • entity_to_join – aliased dbuser

_join_groups(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – The (aliased) node in the database

  • entity_to_join – The (aliased) Group

joined_entity and entity_to_join are joined via the table_groups_nodes table. from joined_entity as node to enitity_to_join as group. (enitity_to_join is a group with_node joined_entity)

_join_inputs(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – The (aliased) ORMclass that is an output

  • entity_to_join – The (aliased) ORMClass that is an input.

joined_entity and entity_to_join are joined with a link from joined_entity as output to enitity_to_join as input (enitity_to_join is with_outgoing joined_entity)

_join_log_node(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased log

  • entity_to_join – aliased node

_join_node_comment(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased node

  • entity_to_join – aliased comment

_join_node_log(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased node

  • entity_to_join – aliased log

_join_outputs(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – The (aliased) ORMclass that is an input

  • entity_to_join – The (aliased) ORMClass that is an output.

joined_entity and entity_to_join are joined with a link from joined_entity as input to enitity_to_join as output (enitity_to_join is with_incoming joined_entity)

_join_to_computer_used(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – the (aliased) computer entity

  • entity_to_join – the (aliased) node entity

_join_user_comment(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased user

  • entity_to_join – aliased comment

_join_user_group(joined_entity, entity_to_join, isouterjoin)[源代码]
参数
  • joined_entity – An aliased user

  • entity_to_join – aliased group

static _process_filters(filters)[源代码]

Process filters.

add_filter(tagspec, filter_spec)[源代码]

Adding a filter to my filters.

参数
  • tagspec – The tag, which has to exist already as a key in self._filters

  • filter_spec – The specifications for the filter, has to be a dictionary

Usage:

qb = QueryBuilder()         # Instantiating the QueryBuilder instance
qb.append(Node, tag='node') # Appending a Node
#let's put some filters:
qb.add_filter('node',{'id':{'>':12}})
# 2 filters together:
qb.add_filter('node',{'label':'foo', 'uuid':{'like':'ab%'}})
# Now I am overriding the first filter I set:
qb.add_filter('node',{'id':13})
add_projection(tag_spec, projection_spec)[源代码]

Adds a projection

参数
  • tag_spec – A valid specification for a tag

  • projection_spec – The specification for the projection. A projection is a list of dictionaries, with each dictionary containing key-value pairs where the key is database entity (e.g. a column / an attribute) and the value is (optional) additional information on how to process this database entity.

If the given projection_spec is not a list, it will be expanded to a list. If the listitems are not dictionaries, but strings (No additional processing of the projected results desired), they will be expanded to dictionaries.

Usage:

qb = QueryBuilder()
qb.append(StructureData, tag='struc')

# Will project the uuid and the kinds
qb.add_projection('struc', ['uuid', 'attributes.kinds'])

The above example will project the uuid and the kinds-attribute of all matching structures. There are 2 (so far) special keys.

The single star * will project the ORM-instance:

qb = QueryBuilder()
qb.append(StructureData, tag='struc')
# Will project the ORM instance
qb.add_projection('struc', '*')
print type(qb.first()[0])
# >>> aiida.orm.nodes.data.structure.StructureData

The double star ** projects all possible projections of this entity:

QueryBuilder().append(StructureData,tag=’s’, project=’**’).limit(1).dict()[0][‘s’].keys()

# >>> ‘user_id, description, ctime, label, extras, mtime, id, attributes, dbcomputer_id, type, uuid’

Be aware that the result of ** depends on the backend implementation.

all(batch_size=None, flat=False)[源代码]

Executes the full query with the order of the rows as returned by the backend.

The order inside each row is given by the order of the vertices in the path and the order of the projections for each vertex in the path.

参数
  • batch_size (int) – the size of the batches to ask the backend to batch results in subcollections. You can optimize the speed of the query by tuning this parameter. Leave the default None if speed is not critical or if you don’t know what you’re doing.

  • flat (bool) – return the result as a flat list of projected entities without sub lists.

返回

a list of lists of all projected entities.

append(cls=None, entity_type=None, tag=None, filters=None, project=None, subclassing=True, edge_tag=None, edge_filters=None, edge_project=None, outerjoin=False, **kwargs)[源代码]

Any iterative procedure to build the path for a graph query needs to invoke this method to append to the path.

参数
  • cls

    The Aiida-class (or backend-class) defining the appended vertice. Also supports a tuple/list of classes. This results in an all instances of this class being accepted in a query. However the classes have to have the same orm-class for the joining to work. I.e. both have to subclasses of Node. Valid is:

    cls=(StructureData, Dict)
    

    This is invalid:

    cls=(Group, Node)

  • entity_type – The node type of the class, if cls is not given. Also here, a tuple or list is accepted.

  • autotag (bool) – Whether to find automatically a unique tag. If this is set to True (default False),

  • tag (str) – A unique tag. If none is given, I will create a unique tag myself.

  • filters – Filters to apply for this vertex. See add_filter(), the method invoked in the background, or usage examples for details.

  • project – Projections to apply. See usage examples for details. More information also in add_projection().

  • subclassing (bool) – Whether to include subclasses of the given class (default True). E.g. Specifying a ProcessNode as cls will include CalcJobNode, WorkChainNode, CalcFunctionNode, etc..

  • outerjoin (bool) – If True, (default is False), will do a left outerjoin instead of an inner join

  • edge_tag (str) – The tag that the edge will get. If nothing is specified (and there is a meaningful edge) the default is tag1–tag2 with tag1 being the entity joining from and tag2 being the entity joining to (this entity).

  • edge_filters (str) – The filters to apply on the edge. Also here, details in add_filter().

  • edge_project (str) – The project from the edges. API-details in add_projection().

A small usage example how this can be invoked:

qb = QueryBuilder()             # Instantiating empty querybuilder instance
qb.append(cls=StructureData)    # First item is StructureData node
# The
# next node in the path is a PwCalculation, with
# the structure joined as an input
qb.append(
    cls=PwCalculation,
    with_incoming=StructureData
)
返回

self

返回类型

aiida.orm.QueryBuilder

children(**kwargs)[源代码]

Join to children/descendants of previous vertice in path.

返回

self

count()[源代码]

Counts the number of rows returned by the backend.

返回

the number of rows as an integer

dict(batch_size=None)[源代码]

Executes the full query with the order of the rows as returned by the backend. the order inside each row is given by the order of the vertices in the path and the order of the projections for each vertice in the path.

参数

batch_size (int) – The size of the batches to ask the backend to batch results in subcollections. You can optimize the speed of the query by tuning this parameter. Leave the default (None) if speed is not critical or if you don’t know what you’re doing!

返回

a list of dictionaries of all projected entities. Each dictionary consists of key value pairs, where the key is the tag of the vertice and the value a dictionary of key-value pairs where key is the entity description (a column name or attribute path) and the value the value in the DB.

Usage:

qb = QueryBuilder()
qb.append(
    StructureData,
    tag='structure',
    filters={'uuid':{'==':myuuid}},
)
qb.append(
    Node,
    with_ancestors='structure',
    project=['entity_type', 'id'],  # returns entity_type (string) and id (string)
    tag='descendant'
)

# Return the dictionaries:
print "qb.iterdict()"
for d in qb.iterdict():
    print '>>>', d

results in the following output:

qb.iterdict()
>>> {'descendant': {
        'entity_type': 'calculation.job.quantumespresso.pw.PwCalculation.',
        'id': 7716}
    }
>>> {'descendant': {
        'entity_type': 'data.remote.RemoteData.',
        'id': 8510}
    }
distinct()[源代码]

Asks for distinct rows, which is the same as asking the backend to remove duplicates. Does not execute the query!

If you want a distinct query:

qb = QueryBuilder()
# append stuff!
qb.append(...)
qb.append(...)
...
qb.distinct().all() #or
qb.distinct().dict()
返回

self

first()[源代码]

Executes query asking for one instance. Use as follows:

qb = QueryBuilder(**queryhelp)
qb.first()
返回

One row of results as a list

static get_aiida_entity_res(value)[源代码]

Convert a projected query result to front end class if it is an instance of a BackendEntity.

Values that are not an BackendEntity instance will be returned unaltered

参数

value – a projected query result to convert

返回

the converted value

get_alias(tag)[源代码]

In order to continue a query by the user, this utility function returns the aliased ormclasses.

参数

tag – The tag for a vertice in the path

返回

the alias given for that vertice

get_aliases()[源代码]
返回

the list of aliases

get_json_compatible_queryhelp()[源代码]

Makes the queryhelp a json-compatible dictionary.

In this way,the queryhelp can be stored in the database or a json-object, retrieved or shared and used later. See this usage:

qb = QueryBuilder(limit=3).append(StructureData, project='id').order_by({StructureData:'id'})
queryhelp  = qb.get_json_compatible_queryhelp()

# Now I could save this dictionary somewhere and use it later:

qb2=QueryBuilder(**queryhelp)

# This is True if no change has been made to the database.
# Note that such a comparison can only be True if the order of results is enforced
qb.all()==qb2.all()
返回

the json-compatible queryhelp

1.0.0 版后已移除: Will be removed in v2.0.0, use the aiida.orm.querybuilder.QueryBuilder.queryhelp() property instead.

get_query()[源代码]

Instantiates and manipulates a sqlalchemy.orm.Query instance if this is needed. First, I check if the query instance is still valid by hashing the queryhelp. In this way, if a user asks for the same query twice, I am not recreating an instance.

返回

an instance of sqlalchemy.orm.Query that is specific to the backend used.

get_used_tags(vertices=True, edges=True)[源代码]

Returns a list of all the vertices that are being used. Some parameter allow to select only subsets. :param bool vertices: Defaults to True. If True, adds the tags of vertices to the returned list :param bool edges: Defaults to True. If True, adds the tags of edges to the returnend list.

返回

A list of all tags, including (if there is) also the tag give for the edges

inject_query(query)[源代码]

Manipulate the query an inject it back. This can be done to add custom filters using SQLA. :param query: A sqlalchemy.orm.Query instance

inputs(**kwargs)[源代码]

Join to inputs of previous vertice in path.

返回

self

iterall(batch_size=100)[源代码]

Same as all(), but returns a generator. Be aware that this is only safe if no commit will take place during this transaction. You might also want to read the SQLAlchemy documentation on http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.yield_per

参数

batch_size (int) – The size of the batches to ask the backend to batch results in subcollections. You can optimize the speed of the query by tuning this parameter.

返回

a generator of lists

iterdict(batch_size=100)[源代码]

Same as dict(), but returns a generator. Be aware that this is only safe if no commit will take place during this transaction. You might also want to read the SQLAlchemy documentation on http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.yield_per

参数

batch_size (int) – The size of the batches to ask the backend to batch results in subcollections. You can optimize the speed of the query by tuning this parameter.

返回

a generator of dictionaries

limit(limit)[源代码]

Set the limit (nr of rows to return)

参数

limit (int) – integers of number of rows of rows to return

offset(offset)[源代码]

Set the offset. If offset is set, that many rows are skipped before returning. offset = 0 is the same as omitting setting the offset. If both offset and limit appear, then offset rows are skipped before starting to count the limit rows that are returned.

参数

offset (int) – integers of nr of rows to skip

one()[源代码]

Executes the query asking for exactly one results. Will raise an exception if this is not the case :raises: MultipleObjectsError if more then one row can be returned :raises: NotExistent if no result was found

order_by(order_by)[源代码]

Set the entity to order by

参数

order_by – This is a list of items, where each item is a dictionary specifies what to sort for an entity

In each dictionary in that list, keys represent valid tags of entities (tables), and values are list of columns.

Usage:

#Sorting by id (ascending):
qb = QueryBuilder()
qb.append(Node, tag='node')
qb.order_by({'node':['id']})

# or
#Sorting by id (ascending):
qb = QueryBuilder()
qb.append(Node, tag='node')
qb.order_by({'node':[{'id':{'order':'asc'}}]})

# for descending order:
qb = QueryBuilder()
qb.append(Node, tag='node')
qb.order_by({'node':[{'id':{'order':'desc'}}]})

# or (shorter)
qb = QueryBuilder()
qb.append(Node, tag='node')
qb.order_by({'node':[{'id':'desc'}]})
outputs(**kwargs)[源代码]

Join to outputs of previous vertice in path.

返回

self

parents(**kwargs)[源代码]

Join to parents/ancestors of previous vertice in path.

返回

self

property queryhelp

queryhelp dictionary correspondig to QueryBuilder instance.

The queryhelp can be used to create a copy of the QueryBuilder instance like so:

qb = QueryBuilder(limit=3).append(StructureData, project='id').order_by({StructureData:'id'})
qb2 = QueryBuilder(**qb.queryhelp)

# The following is True if no change has been made to the database.
# Note that such a comparison can only be True if the order of results is enforced
qb.all() == qb2.all()
返回

a queryhelp dictionary

set_debug(debug)[源代码]

Run in debug mode. This does not affect functionality, but prints intermediate stages when creating a query on screen.

参数

debug (bool) – Turn debug on or off

class aiida.orm.RemoteData(remote_path=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Store a link to a file or folder on a remote machine.

Remember to pass a computer!

__abstractmethods__ = frozenset({})
__init__(remote_path=None, **kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.data.remote.base'
_abc_impl = <_abc_data object>
_clean()[源代码]

Remove all content of the remote folder on the remote computer

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.remote.base.RemoteData (REPORT)>
_plugin_type_string = 'data.remote.RemoteData.'
_query_type_string = 'data.remote.'
_validate()[源代码]

Perform validation of the Data object.

注解

validation of data source checks license and requires attribution to be provided in field ‘description’ of source in the case of any CC-BY* license. If such requirement is too strict, one can remove/comment it out.

get_authinfo()[源代码]
get_computer_name()[源代码]

Get label of this node’s computer.

1.4.0 版后已移除: Will be removed in v2.0.0, use the self.computer.label property instead.

get_remote_path()[源代码]
getfile(relpath, destpath)[源代码]

Connects to the remote folder and retrieves the content of a file.

参数
  • relpath – The relative path of the file on the remote to retrieve.

  • destpath – The absolute path of where to store the file on the local machine.

property is_empty

Check if remote folder is empty

listdir(relpath='.')[源代码]

Connects to the remote folder and lists the directory content.

参数

relpath – If ‘relpath’ is specified, lists the content of the given subfolder.

返回

a flat list of file/directory names (as strings).

listdir_withattributes(path='.')[源代码]

Connects to the remote folder and lists the directory content.

参数

relpath – If ‘relpath’ is specified, lists the content of the given subfolder.

返回

a list of dictionaries, where the documentation is in :py:class:Transport.listdir_withattributes.

set_remote_path(val)[源代码]
class aiida.orm.RemoteStashData(stash_mode: aiida.common.datastructures.StashMode, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Data plugin that models an archived folder on a remote computer.

A stashed folder is essentially an instance of RemoteData that has been archived. Archiving in this context can simply mean copying the content of the folder to another location on the same or another filesystem as long as it is on the same machine. In addition, the folder may have been compressed into a single file for efficiency or even written to tape. The stash_mode attribute will distinguish how the folder was stashed which will allow the implementation to also unstash it and transform it back into a RemoteData such that it can be used as an input for new CalcJobs.

This class is a non-storable base class that merely registers the stash_mode attribute. Only its subclasses, that actually implement a certain stash mode, can be instantiated and therefore stored. The reason for this design is that because the behavior of the class can change significantly based on the mode employed to stash the files and implementing all these variants in the same class will lead to an unintuitive interface where certain properties or methods of the class will only be available or function properly based on the stash_mode.

__abstractmethods__ = frozenset({})
__init__(stash_mode: aiida.common.datastructures.StashMode, **kwargs)[源代码]

Construct a new instance

参数

stash_mode – the stashing mode with which the data was stashed on the remote.

__module__ = 'aiida.orm.nodes.data.remote.stash.base'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.remote.stash.base.RemoteStashData (REPORT)>
_plugin_type_string = 'data.remote.stash.RemoteStashData.'
_query_type_string = 'data.remote.stash.'
_storable = False
property stash_mode

Return the mode with which the data was stashed on the remote.

返回

the stash mode.

class aiida.orm.RemoteStashFolderData(stash_mode: aiida.common.datastructures.StashMode, target_basepath: str, source_list: List, **kwargs)[源代码]

基类:aiida.orm.nodes.data.remote.stash.base.RemoteStashData

Data plugin that models a folder with files of a completed calculation job that has been stashed through a copy.

This data plugin can and should be used to stash files if and only if the stash mode is StashMode.COPY.

__abstractmethods__ = frozenset({})
__init__(stash_mode: aiida.common.datastructures.StashMode, target_basepath: str, source_list: List, **kwargs)[源代码]

Construct a new instance

参数
  • stash_mode – the stashing mode with which the data was stashed on the remote.

  • target_basepath – the target basepath.

  • source_list – the list of source files.

__module__ = 'aiida.orm.nodes.data.remote.stash.folder'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.remote.stash.folder.RemoteStashFolderData (REPORT)>
_plugin_type_string = 'data.remote.stash.folder.RemoteStashFolderData.'
_query_type_string = 'data.remote.stash.folder.'
_storable = True
property source_list

Return the list of source files that were stashed.

返回

the list of source files.

property target_basepath

Return the target basepath.

返回

the target basepath.

class aiida.orm.SinglefileData(file, filename=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

Data class that can be used to store a single file in its repository.

DEFAULT_FILENAME = 'file.txt'
__abstractmethods__ = frozenset({})
__init__(file, filename=None, **kwargs)[源代码]

Construct a new instance and set the contents to that of the file.

参数
  • file – an absolute filepath or filelike object whose contents to copy. Hint: Pass io.BytesIO(b”my string”) to construct the SinglefileData directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

__module__ = 'aiida.orm.nodes.data.singlefile'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.singlefile.SinglefileData (REPORT)>
_plugin_type_string = 'data.singlefile.SinglefileData.'
_query_type_string = 'data.singlefile.'
_validate()[源代码]

Ensure that there is one object stored in the repository, whose key matches value set for filename attr.

property filename

Return the name of the file stored.

返回

the filename under which the file is stored in the repository

get_content()[源代码]

Return the content of the single file stored for this data node.

返回

the content of the file as a string

open(path=None, mode='r', key=None)[源代码]

Return an open file handle to the content of this data node.

1.4.0 版后已移除: Keyword key is deprecated and will be removed in v2.0.0. Use path instead.

1.4.0 版后已移除: Starting from v2.0.0 this will raise if not used in a context manager.

参数
  • path – the relative path of the object within the repository.

  • key – optional key within the repository, by default is the filename set in the attributes

  • mode – the mode with which to open the file handle (default: read mode)

返回

a file handle

set_file(file, filename=None)[源代码]

Store the content of the file in the node’s repository, deleting any other existing objects.

参数
  • file – an absolute filepath or filelike object whose contents to copy Hint: Pass io.BytesIO(b”my string”) to construct the file directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

class aiida.orm.Str(*args, **kwargs)[源代码]

基类:aiida.orm.nodes.data.base.BaseType

Data sub class to represent a string value.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.str'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.str.Str (REPORT)>
_plugin_type_string = 'data.str.Str.'
_query_type_string = 'data.str.'
_type

builtins.str 的别名

class aiida.orm.StructureData(cell=None, pbc=None, ase=None, pymatgen=None, pymatgen_structure=None, pymatgen_molecule=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.data.Data

This class contains the information about a given structure, i.e. a collection of sites together with a cell, the boundary conditions (whether they are periodic or not) and other related useful information.

__abstractmethods__ = frozenset({})
__init__(cell=None, pbc=None, ase=None, pymatgen=None, pymatgen_structure=None, pymatgen_molecule=None, **kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.data.structure'
_abc_impl = <_abc_data object>
_adjust_default_cell(vacuum_factor=1.0, vacuum_addition=10.0, pbc=False, False, False)[源代码]

If the structure was imported from an xyz file, it lacks a defined cell, and the default cell is taken ([[1,0,0], [0,1,0], [0,0,1]]), leading to an unphysical definition of the structure. This method will adjust the cell

_dimensionality_label = {0: '', 1: 'length', 2: 'surface', 3: 'volume'}
_get_object_ase()[源代码]

Converts StructureData to ase.Atoms

返回

an ase.Atoms object

_get_object_phonopyatoms()[源代码]

Converts StructureData to PhonopyAtoms

返回

a PhonopyAtoms object

_get_object_pymatgen(**kwargs)[源代码]

Converts StructureData to pymatgen object

返回

a pymatgen Structure for structures with periodic boundary conditions (in three dimensions) and Molecule otherwise

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

_get_object_pymatgen_molecule(**kwargs)[源代码]

Converts StructureData to pymatgen Molecule object

返回

a pymatgen Molecule object corresponding to this StructureData object.

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors)

_get_object_pymatgen_structure(**kwargs)[源代码]

Converts StructureData to pymatgen Structure object :param add_spin: True to add the spins to the pymatgen structure. Default is False (no spin added).

注解

The spins are set according to the following rule:

  • if the kind name ends with 1 -> spin=+1

  • if the kind name ends with 2 -> spin=-1

返回

a pymatgen Structure object corresponding to this StructureData object

引发

ValueError – if periodic boundary conditions does not hold in at least one dimension of real space; if there are partial occupancies together with spins (defined by kind names ending with ‘1’ or ‘2’).

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors)

_internal_kind_tags = None
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.structure.StructureData (REPORT)>
_parse_xyz(inputstring)[源代码]

Read the structure from a string of format XYZ.

_plugin_type_string = 'data.structure.StructureData.'
_prepare_chemdoodle(main_file_name='')[源代码]

Write the given structure to a string of format required by ChemDoodle.

_prepare_cif(main_file_name='')[源代码]

Write the given structure to a string of format CIF.

_prepare_xsf(main_file_name='')[源代码]

Write the given structure to a string of format XSF (for XCrySDen).

_prepare_xyz(main_file_name='')[源代码]

Write the given structure to a string of format XYZ.

_query_type_string = 'data.structure.'
_set_incompatibilities = [('ase', 'cell'), ('ase', 'pbc'), ('ase', 'pymatgen'), ('ase', 'pymatgen_molecule'), ('ase', 'pymatgen_structure'), ('cell', 'pymatgen'), ('cell', 'pymatgen_molecule'), ('cell', 'pymatgen_structure'), ('pbc', 'pymatgen'), ('pbc', 'pymatgen_molecule'), ('pbc', 'pymatgen_structure'), ('pymatgen', 'pymatgen_molecule'), ('pymatgen', 'pymatgen_structure'), ('pymatgen_molecule', 'pymatgen_structure')]
_validate()[源代码]

Performs some standard validation tests.

append_atom(**kwargs)[源代码]

Append an atom to the Structure, taking care of creating the corresponding kind.

参数
  • ase – the ase Atom object from which we want to create a new atom (if present, this must be the only parameter)

  • position – the position of the atom (three numbers in angstrom)

  • symbols – passed to the constructor of the Kind object.

  • weights – passed to the constructor of the Kind object.

  • name – passed to the constructor of the Kind object. See also the note below.

注解

Note on the ‘name’ parameter (that is, the name of the kind):

  • if specified, no checks are done on existing species. Simply, a new kind with that name is created. If there is a name clash, a check is done: if the kinds are identical, no error is issued; otherwise, an error is issued because you are trying to store two different kinds with the same name.

  • if not specified, the name is automatically generated. Before adding the kind, a check is done. If other species with the same properties already exist, no new kinds are created, but the site is added to the existing (identical) kind. (Actually, the first kind that is encountered). Otherwise, the name is made unique first, by adding to the string containing the list of chemical symbols a number starting from 1, until an unique name is found

注解

checks of equality of species are done using the compare_with() method.

append_kind(kind)[源代码]

Append a kind to the StructureData. It makes a copy of the kind.

参数

kind – the site to append, must be a Kind object.

append_site(site)[源代码]

Append a site to the StructureData. It makes a copy of the site.

参数

site – the site to append. It must be a Site object.

property cell

Returns the cell shape.

返回

a 3x3 list of lists.

property cell_angles

Get the angles between the cell lattice vectors in degrees.

property cell_lengths

Get the lengths of cell lattice vectors in angstroms.

clear_kinds()[源代码]

Removes all kinds for the StructureData object.

注解

Also clear all sites!

clear_sites()[源代码]

Removes all sites for the StructureData object.

get_ase()[源代码]

Get the ASE object. Requires to be able to import ase.

返回

an ASE object corresponding to this StructureData object.

注解

If any site is an alloy or has vacancies, a ValueError is raised (from the site.get_ase() routine).

get_cell_volume()[源代码]

Returns the cell volume in Angstrom^3.

返回

a float.

get_cif(converter='ase', store=False, **kwargs)[源代码]

Creates aiida.orm.nodes.data.cif.CifData.

1.0 新版功能: Renamed from _get_cif

参数
  • converter – specify the converter. Default ‘ase’.

  • store – If True, intermediate calculation gets stored in the AiiDA database for record. Default False.

返回

aiida.orm.nodes.data.cif.CifData node.

get_composition()[源代码]

Returns the chemical composition of this structure as a dictionary, where each key is the kind symbol (e.g. H, Li, Ba), and each value is the number of occurences of that element in this structure. For BaZrO3 it would return {‘Ba’:1, ‘Zr’:1, ‘O’:3}. No reduction with smallest common divisor!

返回

a dictionary with the composition

get_description()[源代码]

Returns a string with infos retrieved from StructureData node’s properties

参数

self – the StructureData node

返回

retsrt: the description string

get_dimensionality()[源代码]

This function checks the dimensionality of the structure and calculates its length/surface/volume :return: returns the dimensionality and length/surface/volume

get_formula(mode='hill', separator='')[源代码]

Return a string with the chemical formula.

参数
  • mode

    a string to specify how to generate the formula, can assume one of the following values:

    • ’hill’ (default): count the number of atoms of each species, then use Hill notation, i.e. alphabetical order with C and H first if one or several C atom(s) is (are) present, e.g. ['C','H','H','H','O','C','H','H','H'] will return 'C2H6O' ['S','O','O','H','O','H','O'] will return 'H2O4S' From E. A. Hill, J. Am. Chem. Soc., 22 (8), pp 478–494 (1900)

    • ’hill_compact’: same as hill but the number of atoms for each species is divided by the greatest common divisor of all of them, e.g. ['C','H','H','H','O','C','H','H','H','O','O','O'] will return 'CH3O2'

    • ’reduce’: group repeated symbols e.g. ['Ba', 'Ti', 'O', 'O', 'O', 'Ba', 'Ti', 'O', 'O', 'O', 'Ba', 'Ti', 'Ti', 'O', 'O', 'O'] will return 'BaTiO3BaTiO3BaTi2O3'

    • ’group’: will try to group as much as possible parts of the formula e.g. ['Ba', 'Ti', 'O', 'O', 'O', 'Ba', 'Ti', 'O', 'O', 'O', 'Ba', 'Ti', 'Ti', 'O', 'O', 'O'] will return '(BaTiO3)2BaTi2O3'

    • ’count’: same as hill (i.e. one just counts the number of atoms of each species) without the re-ordering (take the order of the atomic sites), e.g. ['Ba', 'Ti', 'O', 'O', 'O','Ba', 'Ti', 'O', 'O', 'O'] will return 'Ba2Ti2O6'

    • ’count_compact’: same as count but the number of atoms for each species is divided by the greatest common divisor of all of them, e.g. ['Ba', 'Ti', 'O', 'O', 'O','Ba', 'Ti', 'O', 'O', 'O'] will return 'BaTiO3'

  • separator – a string used to concatenate symbols. Default empty.

返回

a string with the formula

注解

in modes reduce, group, count and count_compact, the initial order in which the atoms were appended by the user is used to group and/or order the symbols in the formula

get_kind(kind_name)[源代码]

Return the kind object associated with the given kind name.

参数

kind_name – String, the name of the kind you want to get

返回

The Kind object associated with the given kind_name, if a Kind with the given name is present in the structure.

Raise

ValueError if the kind_name is not present.

get_kind_names()[源代码]

Return a list of kind names (in the same order of the self.kinds property, but return the names rather than Kind objects)

注解

This is NOT necessarily a list of chemical symbols! Use get_symbols_set for chemical symbols

返回

a list of strings.

get_pymatgen(**kwargs)[源代码]

Get pymatgen object. Returns Structure for structures with periodic boundary conditions (in three dimensions) and Molecule otherwise. :param add_spin: True to add the spins to the pymatgen structure. Default is False (no spin added).

注解

The spins are set according to the following rule:

  • if the kind name ends with 1 -> spin=+1

  • if the kind name ends with 2 -> spin=-1

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

get_pymatgen_molecule()[源代码]

Get the pymatgen Molecule object.

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

返回

a pymatgen Molecule object corresponding to this StructureData object.

get_pymatgen_structure(**kwargs)[源代码]

Get the pymatgen Structure object. :param add_spin: True to add the spins to the pymatgen structure. Default is False (no spin added).

注解

The spins are set according to the following rule:

  • if the kind name ends with 1 -> spin=+1

  • if the kind name ends with 2 -> spin=-1

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

返回

a pymatgen Structure object corresponding to this StructureData object.

引发

ValueError – if periodic boundary conditions do not hold in at least one dimension of real space.

get_site_kindnames()[源代码]

Return a list with length equal to the number of sites of this structure, where each element of the list is the kind name of the corresponding site.

注解

This is NOT necessarily a list of chemical symbols! Use [ self.get_kind(s.kind_name).get_symbols_string() for s in self.sites] for chemical symbols

返回

a list of strings

get_symbols_set()[源代码]

Return a set containing the names of all elements involved in this structure (i.e., for it joins the list of symbols for each kind k in the structure).

返回

a set of strings of element names.

property has_vacancies

Return whether the structure has vacancies in the structure.

返回

a boolean, True if at least one kind has a vacancy

property is_alloy

Return whether the structure contains any alloy kinds.

返回

a boolean, True if at least one kind is an alloy

property kinds

Returns a list of kinds.

property pbc

Get the periodic boundary conditions.

返回

a tuple of three booleans, each one tells if there are periodic boundary conditions for the i-th real-space direction (i=1,2,3)

reset_cell(new_cell)[源代码]

Reset the cell of a structure not yet stored to a new value.

参数

new_cell – list specifying the cell vectors

Raises

ModificationNotAllowed: if object is already stored

reset_sites_positions(new_positions, conserve_particle=True)[源代码]

Replace all the Site positions attached to the Structure

参数
  • new_positions – list of (3D) positions for every sites.

  • conserve_particle – if True, allows the possibility of removing a site. currently not implemented.

引发

注解

it is assumed that the order of the new_positions is given in the same order of the one it’s substituting, i.e. the kind of the site will not be checked.

set_ase(aseatoms)[源代码]

Load the structure from a ASE object

set_cell(value)[源代码]

Set the cell.

set_cell_angles(value)[源代码]
set_cell_lengths(value)[源代码]
set_pbc(value)[源代码]

Set the periodic boundary conditions.

set_pymatgen(obj, **kwargs)[源代码]

Load the structure from a pymatgen object.

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

set_pymatgen_molecule(mol, margin=5)[源代码]

Load the structure from a pymatgen Molecule object.

参数

margin – the margin to be added in all directions of the bounding box of the molecule.

注解

Requires the pymatgen module (version >= 3.0.13, usage of earlier versions may cause errors).

set_pymatgen_structure(struct)[源代码]

Load the structure from a pymatgen Structure object.

注解

periodic boundary conditions are set to True in all three directions.

注解

Requires the pymatgen module (version >= 3.3.5, usage of earlier versions may cause errors).

引发

ValueError – if there are partial occupancies together with spins.

property sites

Returns a list of sites.

class aiida.orm.TrajectoryData(structurelist=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.array.array.ArrayData

Stores a trajectory (a sequence of crystal structures with timestamps, and possibly with velocities).

__abstractmethods__ = frozenset({})
__init__(structurelist=None, **kwargs)[源代码]
参数

backend_entity (aiida.orm.implementation.entities.BackendEntity) – the backend model supporting this entity

__module__ = 'aiida.orm.nodes.data.array.trajectory'
_abc_impl = <_abc_data object>
_internal_validate(stepids, cells, symbols, positions, times, velocities)[源代码]

Internal function to validate the type and shape of the arrays. See the documentation of py:meth:.set_trajectory for a description of the valid shape and type of the parameters.

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.trajectory.TrajectoryData (REPORT)>
_parse_xyz_pos(inputstring)[源代码]

Load positions from a XYZ file.

注解

The steps and symbols must be set manually before calling this import function as a consistency measure. Even though the symbols and steps could be extracted from the XYZ file, the data present in the XYZ file may or may not be correct and the same logic would have to be present in the XYZ-velocities function. It was therefore decided not to implement it at all but require it to be set explicitly.

Usage:

from aiida.orm.nodes.data.array.trajectory import TrajectoryData

t = TrajectoryData()
# get sites and number of timesteps
t.set_array('steps', arange(ntimesteps))
t.set_array('symbols', array([site.kind for site in s.sites]))
t.importfile('some-calc/AIIDA-PROJECT-pos-1.xyz', 'xyz_pos')
_parse_xyz_vel(inputstring)[源代码]

Load velocities from a XYZ file.

注解

The steps and symbols must be set manually before calling this import function as a consistency measure. See also comment for _parse_xyz_pos()

_plugin_type_string = 'data.array.trajectory.TrajectoryData.'
_prepare_cif(trajectory_index=None, main_file_name='')[源代码]

Write the given trajectory to a string of format CIF.

_prepare_xsf(index=None, main_file_name='')[源代码]

Write the given trajectory to a string of format XSF (for XCrySDen).

_query_type_string = 'data.array.trajectory.'
_validate()[源代码]

Verify that the required arrays are present and that their type and dimension are correct.

get_cells()[源代码]

Return the array of cells, if it has already been set.

引发

KeyError – if the trajectory has not been set yet.

get_cif(index=None, **kwargs)[源代码]

Creates aiida.orm.nodes.data.cif.CifData

1.0 新版功能: Renamed from _get_cif

get_index_from_stepid(stepid)[源代码]

Given a value for the stepid (i.e., a value among those of the steps array), return the array index of that stepid, that can be used in other methods such as get_step_data() or get_step_structure().

0.7 新版功能: Renamed from get_step_index

注解

Note that this function returns the first index found (i.e. if multiple steps are present with the same value, only the index of the first one is returned).

引发

ValueError – if no step with the given value is found.

get_positions()[源代码]

Return the array of positions, if it has already been set.

引发

KeyError – if the trajectory has not been set yet.

get_step_data(index)[源代码]

Return a tuple with all information concerning the stepid with given index (0 is the first step, 1 the second step and so on). If you know only the step value, use the get_index_from_stepid() method to get the corresponding index.

If no velocities were specified, None is returned as the last element.

返回

A tuple in the format (stepid, time, cell, symbols, positions, velocities), where stepid is an integer, time is a float, cell is a \(3 \times 3\) matrix, symbols is an array of length n, positions is a \(n \times 3\) array, and velocities is either None or a \(n \times 3\) array

参数

index – The index of the step that you want to retrieve, from 0 to self.numsteps - 1.

引发
  • IndexError – if you require an index beyond the limits.

  • KeyError – if you did not store the trajectory yet.

get_step_structure(index, custom_kinds=None)[源代码]

Return an AiiDA aiida.orm.nodes.data.structure.StructureData node (not stored yet!) with the coordinates of the given step, identified by its index. If you know only the step value, use the get_index_from_stepid() method to get the corresponding index.

注解

The periodic boundary conditions are always set to True.

0.7 新版功能: Renamed from step_to_structure

参数
  • index – The index of the step that you want to retrieve, from 0 to self.numsteps- 1.

  • custom_kinds – (Optional) If passed must be a list of aiida.orm.nodes.data.structure.Kind objects. There must be one kind object for each different string in the symbols array, with kind.name set to this string. If this parameter is omitted, the automatic kind generation of AiiDA aiida.orm.nodes.data.structure.StructureData nodes is used, meaning that the strings in the symbols array must be valid chemical symbols.

get_stepids()[源代码]

Return the array of steps, if it has already been set.

0.7 新版功能: Renamed from get_steps

引发

KeyError – if the trajectory has not been set yet.

get_structure(store=False, **kwargs)[源代码]

Creates aiida.orm.nodes.data.structure.StructureData.

1.0 新版功能: Renamed from _get_aiida_structure

参数
  • converter – specify the converter. Default ‘ase’.

  • store – If True, intermediate calculation gets stored in the AiiDA database for record. Default False.

返回

aiida.orm.nodes.data.structure.StructureData node.

get_times()[源代码]

Return the array of times (in ps), if it has already been set.

引发

KeyError – if the trajectory has not been set yet.

get_velocities()[源代码]

Return the array of velocities, if it has already been set.

注解

This function (differently from all other get_* functions, will not raise an exception if the velocities are not set, but rather return None (both if no trajectory was not set yet, and if it the trajectory was set but no velocities were specified).

property numsites

Return the number of stored sites, or zero if nothing has been stored yet.

property numsteps

Return the number of stored steps, or zero if nothing has been stored yet.

set_structurelist(structurelist)[源代码]

Create trajectory from the list of aiida.orm.nodes.data.structure.StructureData instances.

参数

structurelist – a list of aiida.orm.nodes.data.structure.StructureData instances.

引发

ValueError – if symbol lists of supplied structures are different

set_trajectory(symbols, positions, stepids=None, cells=None, times=None, velocities=None)[源代码]

Store the whole trajectory, after checking that types and dimensions are correct.

Parameters stepids, cells and velocities are optional variables. If nothing is passed for cells or velocities nothing will be stored. However, if no input is given for stepids a consecutive sequence [0,1,2,…,len(positions)-1] will be assumed.

参数
  • symbols – string list with dimension n, where n is the number of atoms (i.e., sites) in the structure. The same list is used for each step. Normally, the string should be a valid chemical symbol, but actually any unique string works and can be used as the name of the atomic kind (see also the get_step_structure() method).

  • positions – float array with dimension \(s \times n \times 3\), where s is the length of the stepids array and n is the length of the symbols array. Units are angstrom. In particular, positions[i,j,k] is the k-th component of the j-th atom (or site) in the structure at the time step with index i (identified by step number step[i] and with timestamp times[i]).

  • stepids – integer array with dimension s, where s is the number of steps. Typically represents an internal counter within the code. For instance, if you want to store a trajectory with one step every 10, starting from step 65, the array will be [65,75,85,...]. No checks are done on duplicate elements or on the ordering, but anyway this array should be sorted in ascending order, without duplicate elements. (If not specified, stepids will be set to numpy.arange(s) by default) It is internally stored as an array named ‘steps’.

  • cells – if specified float array with dimension \(s \times 3 \times 3\), where s is the length of the stepids array. Units are angstrom. In particular, cells[i,j,k] is the k-th component of the j-th cell vector at the time step with index i (identified by step number stepid[i] and with timestamp times[i]).

  • times – if specified, float array with dimension s, where s is the length of the stepids array. Contains the timestamp of each step in picoseconds (ps).

  • velocities – if specified, must be a float array with the same dimensions of the positions array. The array contains the velocities in the atoms.

show_mpl_heatmap(**kwargs)[源代码]

Show a heatmap of the trajectory with matplotlib.

show_mpl_pos(**kwargs)[源代码]

Shows the positions as a function of time, separate for XYZ coordinates

参数
  • stepsize (int) – The stepsize for the trajectory, set higher than 1 to reduce number of points

  • mintime (int) – Time to start from

  • maxtime (int) – Maximum time

  • elements (list) – A list of atomic symbols that should be displayed. If not specified, all atoms are displayed.

  • indices (list) – A list of indices of that atoms that can be displayed. If not specified, all atoms of the correct species are displayed.

  • dont_block (bool) – If True, interpreter is not blocked when figure is displayed.

property symbols

Return the array of symbols, if it has already been set.

引发

KeyError – if the trajectory has not been set yet.

class aiida.orm.UpfData(file=None, filename=None, source=None, **kwargs)[源代码]

基类:aiida.orm.nodes.data.singlefile.SinglefileData

Data sub class to represent a pseudopotential single file in UPF format.

__abstractmethods__ = frozenset({})
__init__(file=None, filename=None, source=None, **kwargs)[源代码]

Create UpfData instance from pseudopotential file.

参数
  • file – filepath or filelike object of the UPF potential file to store. Hint: Pass io.BytesIO(b”my string”) to construct directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

  • source – Dictionary with information on source of the potential (see “.source” property).

__module__ = 'aiida.orm.nodes.data.upf'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.upf.UpfData (REPORT)>
_plugin_type_string = 'data.upf.UpfData.'
_prepare_json(main_file_name='')[源代码]

Returns UPF PP in json format.

_prepare_upf(main_file_name='')[源代码]

Return UPF content.

_query_type_string = 'data.upf.'
_validate()[源代码]

Validate the UPF potential file stored for this node.

property element

Return the element of the UPF pseudopotential.

返回

the element

classmethod from_md5(md5)[源代码]

Return a list of all UpfData that match the given md5 hash.

注解

assumes hash of stored UpfData nodes is stored in the md5 attribute

参数

md5 – the file hash

返回

list of existing UpfData nodes that have the same md5 hash

classmethod get_or_create(filepath, use_first=False, store_upf=True)[源代码]

Get the UpfData with the same md5 of the given file, or create it if it does not yet exist.

参数
  • filepath – an absolute filepath on disk

  • use_first – if False (default), raise an exception if more than one potential is found. If it is True, instead, use the first available pseudopotential.

  • store_upf – boolean, if false, the UpfData if created will not be stored.

返回

tuple of UpfData and boolean indicating whether it was created.

get_upf_family_names()[源代码]

Get the list of all upf family names to which the pseudo belongs.

classmethod get_upf_group(group_label)[源代码]

Return the UPF family group with the given label.

参数

group_label – the family group label

返回

the Group with the given label, if it exists

classmethod get_upf_groups(filter_elements=None, user=None)[源代码]

Return all names of groups of type UpfFamily, possibly with some filters.

参数
  • filter_elements – A string or a list of strings. If present, returns only the groups that contains one UPF for every element present in the list. The default is None, meaning that all families are returned.

  • user – if None (default), return the groups for all users. If defined, it should be either a User instance or the user email.

返回

list of Group entities of type UPF.

property md5sum

Return the md5 checksum of the UPF pseudopotential file.

返回

the md5 checksum

set_file(file, filename=None)[源代码]

Store the file in the repository and parse it to set the element and md5 attributes.

参数
  • file – filepath or filelike object of the UPF potential file to store. Hint: Pass io.BytesIO(b”my string”) to construct the file directly from a string.

  • filename – specify filename to use (defaults to name of provided file).

store(*args, **kwargs)[源代码]

Store the node, reparsing the file so that the md5 and the element are correctly reset.

class aiida.orm.UpfFamily(label=None, user=None, description='', type_string=None, backend=None)[源代码]

基类:aiida.orm.groups.Group

Group that represents a pseudo potential family containing UpfData nodes.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.groups'
_abc_impl = <_abc_data object>
_type_string = 'core.upf'
class aiida.orm.User(email, first_name='', last_name='', institution='', backend=None)[源代码]

基类:aiida.orm.entities.Entity

AiiDA User

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of users stored in a backend.

UNDEFINED = 'UNDEFINED'
__init__(*args, **kwargs)[源代码]

Construct a new entity collection.

参数
__module__ = 'aiida.orm.users'
__parameters__ = ()
_default_user: aiida.orm.User = None
get_default()[源代码]

Get the current default user

返回

The default user

返回类型

aiida.orm.User

get_or_create(email, **kwargs)[源代码]

Get the existing user with a given email address or create an unstored one

参数

kwargs – The properties of the user to get or create

返回

The corresponding user object

返回类型

aiida.orm.User

Raises

aiida.common.exceptions.MultipleObjectsError, aiida.common.exceptions.NotExistent

reset()[源代码]

Reset internal caches (default user).

REQUIRED_FIELDS = ['first_name', 'last_name', 'institution']
__init__(email, first_name='', last_name='', institution='', backend=None)[源代码]

Create a new User.

__module__ = 'aiida.orm.users'
__str__()[源代码]

Return str(self).

property email
property first_name
get_full_name()[源代码]

Return the user full name

返回

the user full name

static get_schema()[源代码]

Every node property contains:

  • display_name: display name of the property

  • help text: short help text of the property

  • is_foreign_key: is the property foreign key to other type of the node

  • type: type of the property. e.g. str, dict, int

返回

schema of the user

1.0.0 版后已移除: Will be removed in v2.0.0. Use get_projectable_properties() instead.

get_short_name()[源代码]

Return the user short name (typically, this returns the email)

返回

The short name

property institution
property last_name
static normalize_email(email)[源代码]

Normalize the address by lowercasing the domain part of the email address (taken from Django).

class aiida.orm.WorkChainNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.process.workflow.workflow.WorkflowNode

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

STEPPER_STATE_INFO_KEY = 'stepper_state_info'
__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.process.workflow.workchain'
_abc_impl = <_abc_data object>
_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.process.workflow.workchain.WorkChainNode (REPORT)>
_plugin_type_string = 'process.workflow.workchain.WorkChainNode.'
_query_type_string = 'process.workflow.workchain.'
_updatable_attributes: Tuple[str, ] = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status', 'stepper_state_info')
set_stepper_state_info(stepper_state_info: str)None[源代码]

Set the stepper state info

参数

state – string representation of the stepper state info

property stepper_state_info

Return the stepper state info

返回

string representation of the stepper state info

class aiida.orm.WorkFunctionNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.utils.mixins.FunctionCalculationMixin, aiida.orm.nodes.process.workflow.workflow.WorkflowNode

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

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

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

A workfunction cannot create Data, so if we receive an outgoing RETURN link to an unstored Data node, that means the user created a Data node within our function body and is trying to return it. This use case should be reserved for @calcfunctions, as they can have CREATE links.

参数
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

引发
  • 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.WorkflowNode(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.process.process.ProcessNode

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

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

Return an instance of NodeLinksManager to manage incoming INPUT_WORK links

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

返回

NodeLinksManager

property outputs

Return an instance of NodeLinksManager to manage outgoing RETURN links

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

返回

NodeLinksManager

validate_outgoing(target: Node, link_type: aiida.common.links.LinkType, link_label: str)None[源代码]

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

A workflow cannot ‘create’ Data, so if we receive an outgoing link to an unstored Data node, that means the user created a Data node within our function body and tries to attach it as an output. This is strictly forbidden and can cause provenance to be lost.

参数
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

引发
  • 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.XyData(backend: Optional[Backend] = None, user: Optional[aiida.orm.users.User] = None, computer: Optional[aiida.orm.computers.Computer] = None, **kwargs: Any)[源代码]

基类:aiida.orm.nodes.data.array.array.ArrayData

A subclass designed to handle arrays that have an “XY” relationship to each other. That is there is one array, the X array, and there are several Y arrays, which can be considered functions of X.

__abstractmethods__ = frozenset({})
__module__ = 'aiida.orm.nodes.data.array.xy'
_abc_impl = <_abc_data object>
static _arrayandname_validator(array, name, units)[源代码]

Validates that the array is an numpy.ndarray and that the name is of type str. Raises InputValidationError if this not the case.

_logger: Optional[logging.Logger] = <Logger aiida.orm.nodes.data.array.xy.XyData (REPORT)>
_plugin_type_string = 'data.array.xy.XyData.'
_query_type_string = 'data.array.xy.'
get_x()[源代码]

Tries to retrieve the x array and x name raises a NotExistent exception if no x array has been set yet. :return x_name: the name set for the x_array :return x_array: the x array set earlier :return x_units: the x units set earlier

get_y()[源代码]

Tries to retrieve the y arrays and the y names, raises a NotExistent exception if they have not been set yet, or cannot be retrieved :return y_names: list of strings naming the y_arrays :return y_arrays: list of y_arrays :return y_units: list of strings giving the units for the y_arrays

set_x(x_array, x_name, x_units)[源代码]

Sets the array and the name for the x values.

参数
  • x_array – A numpy.ndarray, containing only floats

  • x_name – a string for the x array name

  • x_units – the units of x

set_y(y_arrays, y_names, y_units)[源代码]

Set array(s) for the y part of the dataset. Also checks if the x_array has already been set, and that, the shape of the y_arrays agree with the x_array. :param y_arrays: A list of y_arrays, numpy.ndarray :param y_names: A list of strings giving the names of the y_arrays :param y_units: A list of strings giving the units of the y_arrays

aiida.orm.load_code(identifier=None, pk=None, uuid=None, label=None, sub_classes=None, query_with_dashes=True)[源代码]

Load a Code instance by one of its identifiers: pk, uuid or label

If the type of the identifier is unknown simply pass it without a keyword and the loader will attempt to automatically infer the type.

参数
  • identifier – pk (integer), uuid (string) or label (string) of a Code

  • pk – pk of a Code

  • uuid – uuid of a Code, or the beginning of the uuid

  • label – label of a Code

  • sub_classes – an optional tuple of orm classes to narrow the queryset. Each class should be a strict sub class of the ORM class of the given entity loader.

  • query_with_dashes (bool) – allow to query for a uuid with dashes

返回

the Code instance

引发
aiida.orm.load_computer(identifier=None, pk=None, uuid=None, label=None, sub_classes=None, query_with_dashes=True)[源代码]

Load a Computer instance by one of its identifiers: pk, uuid or label

If the type of the identifier is unknown simply pass it without a keyword and the loader will attempt to automatically infer the type.

参数
  • identifier – pk (integer), uuid (string) or label (string) of a Computer

  • pk – pk of a Computer

  • uuid – uuid of a Computer, or the beginning of the uuid

  • label – label of a Computer

  • sub_classes – an optional tuple of orm classes to narrow the queryset. Each class should be a strict sub class of the ORM class of the given entity loader.

  • query_with_dashes (bool) – allow to query for a uuid with dashes

返回

the Computer instance

引发
aiida.orm.load_group(identifier=None, pk=None, uuid=None, label=None, sub_classes=None, query_with_dashes=True)[源代码]

Load a Group instance by one of its identifiers: pk, uuid or label

If the type of the identifier is unknown simply pass it without a keyword and the loader will attempt to automatically infer the type.

参数
  • identifier – pk (integer), uuid (string) or label (string) of a Group

  • pk – pk of a Group

  • uuid – uuid of a Group, or the beginning of the uuid

  • label – label of a Group

  • sub_classes – an optional tuple of orm classes to narrow the queryset. Each class should be a strict sub class of the ORM class of the given entity loader.

  • query_with_dashes (bool) – allow to query for a uuid with dashes

返回

the Group instance

引发
aiida.orm.load_node(identifier=None, pk=None, uuid=None, label=None, sub_classes=None, query_with_dashes=True)[源代码]

Load a node by one of its identifiers: pk or uuid. If the type of the identifier is unknown simply pass it without a keyword and the loader will attempt to infer the type

参数
  • identifier – pk (integer) or uuid (string)

  • pk – pk of a node

  • uuid – uuid of a node, or the beginning of the uuid

  • label – label of a Node

  • sub_classes – an optional tuple of orm classes to narrow the queryset. Each class should be a strict sub class of the ORM class of the given entity loader.

  • query_with_dashes (bool) – allow to query for a uuid with dashes

返回

the node instance

引发
aiida.orm.to_aiida_type(value)[源代码]
aiida.orm.to_aiida_type(value: numpy.bool_)
aiida.orm.to_aiida_type(value: numpy.bool_)
aiida.orm.to_aiida_type(value: dict)
aiida.orm.to_aiida_type(value: numbers.Real)
aiida.orm.to_aiida_type(value: numbers.Integral)
aiida.orm.to_aiida_type(value: str)

Turns basic Python types (str, int, float, bool) into the corresponding AiiDA types.

Submodules

Module for the AuthInfo ORM class.

class aiida.orm.authinfos.AuthInfo(computer, user, backend=None)[源代码]

基类:aiida.orm.entities.Entity

ORM class that models the authorization information that allows a User to connect to a Computer.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of AuthInfo entries.

__module__ = 'aiida.orm.authinfos'
__parameters__ = ()
delete(pk)[源代码]

Delete an entry from the collection.

参数

pk – the pk of the entry to delete

PROPERTY_WORKDIR = 'workdir'
__init__(computer, user, backend=None)[源代码]

Create an AuthInfo instance for the given computer and user.

参数
返回类型

aiida.orm.authinfos.AuthInfo

__module__ = 'aiida.orm.authinfos'
__str__()[源代码]

Return str(self).

property computer

Return the computer associated with this instance.

返回类型

aiida.orm.computers.Computer

property enabled

Return whether this instance is enabled.

返回

True if enabled, False otherwise

返回类型

bool

get_auth_params()[源代码]

Return the dictionary of authentication parameters

返回

a dictionary with authentication parameters

返回类型

dict

get_metadata()[源代码]

Return the dictionary of metadata

返回

a dictionary with metadata

返回类型

dict

get_transport()[源代码]

Return a fully configured transport that can be used to connect to the computer set for this instance.

返回类型

aiida.transports.Transport

get_workdir()[源代码]

Return the working directory.

If no explicit work directory is set for this instance, the working directory of the computer will be returned.

返回

the working directory

返回类型

str

set_auth_params(auth_params)[源代码]

Set the dictionary of authentication parameters

参数

auth_params – a dictionary with authentication parameters

set_metadata(metadata)[源代码]

Set the dictionary of metadata

参数

metadata (dict) – a dictionary with metadata

property user

Return the user associated with this instance.

返回类型

aiida.orm.users.User

Module to manage the autogrouping functionality by verdi run.

class aiida.orm.autogroup.Autogroup[源代码]

基类:object

Class to create a new AutoGroup instance that will, while active, automatically contain all nodes being stored.

The autogrouping is checked by the Node.store() method which, if CURRENT_AUTOGROUP is not None the method Autogroup.is_to_be_grouped is called to decide whether to put the current node being stored in the current AutoGroup instance.

The exclude/include lists are lists of strings like: aiida.data:int, aiida.calculation:quantumespresso.pw, aiida.data:array.%, … i.e.: a string identifying the base class, followed a colona and by the path to the class as accepted by CalculationFactory/DataFactory. Each string can contain one or more wildcard characters %; in this case this is used in a like comparison with the QueryBuilder. Note that in this case you have to remember that _ means “any character” in the QueryBuilder, and you need to escape it if you mean a literal underscore.

Only one of the two (between exclude and include) can be set. If none of the two is set, everything is included.

__dict__ = mappingproxy({'__module__': 'aiida.orm.autogroup', '__doc__': 'Class to create a new `AutoGroup` instance that will, while active, automatically contain all nodes being stored.\n\n The autogrouping is checked by the `Node.store()` method which, if `CURRENT_AUTOGROUP is not None` the method\n `Autogroup.is_to_be_grouped` is called to decide whether to put the current node being stored in the current\n `AutoGroup` instance.\n\n The exclude/include lists are lists of strings like:\n ``aiida.data:int``, ``aiida.calculation:quantumespresso.pw``,\n ``aiida.data:array.%``, ...\n i.e.: a string identifying the base class, followed a colona and by the path to the class\n as accepted by CalculationFactory/DataFactory.\n Each string can contain one or more wildcard characters ``%``;\n in this case this is used in a ``like`` comparison with the QueryBuilder.\n Note that in this case you have to remember that ``_`` means "any character"\n in the QueryBuilder, and you need to escape it if you mean a literal underscore.\n\n Only one of the two (between exclude and include) can be set.\n If none of the two is set, everything is included.\n ', '__init__': <function Autogroup.__init__>, 'validate': <staticmethod object>, 'get_exclude': <function Autogroup.get_exclude>, 'get_include': <function Autogroup.get_include>, 'get_group_label_prefix': <function Autogroup.get_group_label_prefix>, 'get_group_name': <function Autogroup.get_group_name>, 'set_exclude': <function Autogroup.set_exclude>, 'set_include': <function Autogroup.set_include>, 'set_group_label_prefix': <function Autogroup.set_group_label_prefix>, 'set_group_name': <function Autogroup.set_group_name>, '_matches': <staticmethod object>, 'is_to_be_grouped': <function Autogroup.is_to_be_grouped>, 'clear_group_cache': <function Autogroup.clear_group_cache>, 'get_or_create_group': <function Autogroup.get_or_create_group>, '__dict__': <attribute '__dict__' of 'Autogroup' objects>, '__weakref__': <attribute '__weakref__' of 'Autogroup' objects>})
__init__()[源代码]

Initialize with defaults.

__module__ = 'aiida.orm.autogroup'
__weakref__

list of weak references to the object (if defined)

static _matches(string, filter_string)[源代码]

Check if ‘string’ matches the ‘filter_string’ (used for include and exclude filters).

If ‘filter_string’ does not contain any % sign, perform an exact match. Otherwise, match with a SQL-like query, where % means any character sequence, and _ means a single character (these caracters can be escaped with a backslash).

参数
  • string – the string to match.

  • filter_string – the filter string.

clear_group_cache()[源代码]

Clear the cache of the group name.

This is mostly used by tests when they reset the database.

get_exclude()[源代码]

Return the list of classes to exclude from autogrouping.

Returns None if no exclusion list has been set.

get_group_label_prefix()[源代码]

Get the prefix of the label of the group. If no group label prefix was set, it will set a default one by itself.

get_group_name()[源代码]

Get the label of the group. If no group label was set, it will set a default one by itself.

1.2.0 版后已移除: Will be removed in v2.0.0, use get_group_label_prefix() instead.

get_include()[源代码]

Return the list of classes to include in the autogrouping.

Returns None if no inclusion list has been set.

get_or_create_group()[源代码]

Return the current AutoGroup, or create one if None has been set yet.

This function implements a somewhat complex logic that is however needed to make sure that, even if verdi run is called at the same time multiple times, e.g. in a for loop in bash, there is never the risk that two verdi run Unix processes try to create the same group, with the same label, ending up in a crash of the code (see PR #3650).

Here, instead, we make sure that if this concurrency issue happens, one of the two will get a IntegrityError from the DB, and then recover trying to create a group with a different label (with a numeric suffix appended), until it manages to create it.

is_to_be_grouped(node)[源代码]

Return whether the given node has to be included in the autogroup according to include/exclude list

Return (bool)

True if node is to be included in the autogroup

set_exclude(exclude)[源代码]

Set the list of classes to exclude in the autogrouping.

参数

exclude – a list of valid entry point strings (might contain ‘%’ to be used as string to be matched using SQL’s LIKE pattern-making logic), or None to specify no include list.

set_group_label_prefix(label_prefix)[源代码]

Set the label of the group to be created

set_group_name(gname)[源代码]

Set the name of the group.

1.2.0 版后已移除: Will be removed in v2.0.0, use set_group_label_prefix() instead.

set_include(include)[源代码]

Set the list of classes to include in the autogrouping.

参数

include – a list of valid entry point strings (might contain ‘%’ to be used as string to be matched using SQL’s LIKE pattern-making logic), or None to specify no include list.

static validate(strings)[源代码]

Validate the list of strings passed to set_include and set_exclude.

Comment objects and functions

class aiida.orm.comments.Comment(node, user, content=None, backend=None)[源代码]

基类:aiida.orm.entities.Entity

Base class to map a DbComment that represents a comment attached to a certain Node.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of Comment entries.

__module__ = 'aiida.orm.comments'
__parameters__ = ()
delete(comment_id)[源代码]

Remove a Comment from the collection with the given id

参数

comment_id (int) – the id of the comment to delete

引发
  • TypeError – if comment_id is not an int

  • NotExistent – if Comment with ID comment_id is not found

delete_all()[源代码]

Delete all Comments from the Collection

引发

IntegrityError – if all Comments could not be deleted

delete_many(filters)[源代码]

Delete Comments from the Collection based on filters

参数

filters (dict) – similar to QueryBuilder filter

返回

(former) PK s of deleted Comments

返回类型

list

引发
__init__(node, user, content=None, backend=None)[源代码]

Create a Comment for a given node and user

参数
返回

a Comment object associated to the given node and user

返回类型

aiida.orm.Comment

__module__ = 'aiida.orm.comments'
__str__()[源代码]

Return str(self).

property content
property ctime
property mtime
property node
set_content(value)[源代码]
set_mtime(value)[源代码]
set_user(value)[源代码]
property user

Module for Computer entities

class aiida.orm.computers.Computer(label: str = None, hostname: str = None, description: str = '', transport_type: str = '', scheduler_type: str = '', workdir: str = None, backend: aiida.orm.implementation.backends.Backend = None, name: str = None)[源代码]

基类:aiida.orm.entities.Entity

Computer entity.

class Collection(*args, **kwds)[源代码]

基类:aiida.orm.entities.Collection

The collection of Computer entries.

__module__ = 'aiida.orm.computers'
__parameters__ = ()
delete(id)[源代码]

Delete the computer with the given id

get(**filters)[源代码]

Get a single collection entry that matches the filter criteria.

参数

filters (dict) – the filters identifying the object to get

返回

the entry

get_or_create(label=None, **kwargs)[源代码]

Try to retrieve a Computer from the DB with the given arguments; create (and store) a new Computer if such a Computer was not present yet.

参数

label (str) – computer label

返回

(computer, created) where computer is the computer (new or existing, in any case already stored) and created is a boolean saying

返回类型

(aiida.orm.Computer, bool)

list_labels()[源代码]

Return a list with all the labels of the computers in the DB.

list_names()[源代码]

Return a list with all the names of the computers in the DB.

1.4.0 版后已移除: Will be removed in v2.0.0, use list_labels instead.

PROPERTY_MINIMUM_SCHEDULER_POLL_INTERVAL = 'minimum_scheduler_poll_interval'
PROPERTY_MINIMUM_SCHEDULER_POLL_INTERVAL__DEFAULT = 10.0
PROPERTY_SHEBANG = 'shebang'
PROPERTY_WORKDIR = 'workdir'
__init__(label: str = None, hostname: str = None, description: str = '', transport_type: str = '', scheduler_type: str = '', workdir: str = None, backend: aiida.orm.implementation.backends.Backend = None, name: str = None)aiida.orm.computers.Computer[源代码]

Construct a new computer

1.4.0 版后已移除: The name keyword will be removed in v2.0.0, use label instead.

__module__ = 'aiida.orm.computers'
__repr__()[源代码]

Return repr(self).

__str__()[源代码]

Return str(self).

classmethod _append_text_validator(append_text)[源代码]

Validates the append text string.

classmethod _default_mpiprocs_per_machine_validator(def_cpus_per_machine)[源代码]

Validates the default number of CPUs per machine (node)

classmethod _description_validator(description)[源代码]