aiida.orm.data.array package¶
-
class
aiida.orm.data.array.
ArrayData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.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 theclear_internal_cache()
method.-
__abstractmethods__
= frozenset([])¶
-
__init__
(*args, **kwargs)[source]¶ Initialize the object Node.
Parameters: uuid – if present, the Node with given uuid is loaded from the database. (It is not possible to assign a uuid to a new Node.)
-
__module__
= 'aiida.orm.data.array'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 94¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_arraynames_from_files
()[source]¶ Return a list of all arrays stored in the node, listing the files (and not relying on the properties).
-
_arraynames_from_properties
()[source]¶ Return a list of all arrays stored in the node, listing the attributes starting with the correct prefix.
-
_logger
= <celery.utils.log.ProcessAwareLogger object>¶
-
_plugin_type_string
= 'data.array.ArrayData.'¶
-
_query_type_string
= 'data.array.'¶
-
_validate
()[source]¶ 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|'¶
-
arraynames
()[source]¶ Return a list of all arrays stored in the node, listing the files (and not relying on the properties).
Deprecated since version 0.7: Use
get_arraynames()
instead.
-
clear_internal_cache
()[source]¶ 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)[source]¶ Delete an array from the node. Can only be called before storing.
Parameters: name – The name of the array to delete from the node.
-
get_array
(name)[source]¶ Return an array stored in the node
Parameters: name – The name of the array to return.
-
get_arraynames
()[source]¶ Return a list of all arrays stored in the node, listing the files (and not relying on the properties).
New in version 0.7: Renamed from arraynames
-
Submodules¶
This module defines the classes related to band structures or dispersions in a Brillouin zone, and how to operate on them.
-
class
aiida.orm.data.array.bands.
BandsData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.data.array.kpoints.KpointsData
Class to handle bands data
-
__abstractmethods__
= frozenset([])¶
-
__module__
= 'aiida.orm.data.array.bands'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 119¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_custom_export_format_replacements
= {'dat': 'dat_multicolumn', 'gnu': 'gnuplot', 'pdf': 'mpl_pdf', 'png': 'mpl_png', 'py': 'mpl_singlefile'}¶
-
_get_bandplot_data
(cartesian, prettify_format=None, join_symbol=None, get_segments=False, y_origin=0.0)[source]¶ Get data to plot a band structure
Parameters: - 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
Returns: 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).
-
_logger
= <celery.utils.log.ProcessAwareLogger object>¶
-
_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)[source]¶ Prepare the data to send to the python-matplotlib plotting script.
Parameters: - 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)[source]¶ Prepare an xmgrace agr file.
Parameters: - 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)[source]¶ Prepare two files, data and batch, to be plot with xmgrace as: xmgrace -batch file.dat
Parameters: - 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_1
(*args, **kwargs)[source]¶ Output data in .dat format, using multiple columns for all y values associated to the same x.
Deprecated since version 0.8.1: Use ‘dat_multicolumn’ format instead
-
_prepare_dat_2
(*args, **kwargs)[source]¶ Output data in .dat format, using blocks.
Deprecated since version 0.8.1: Use ‘dat_block’ format instead
-
_prepare_dat_blocks
(main_file_name='', comments=True)[source]¶ 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.
Parameters: comments – if True, print comments (if it makes sense for the given format)
-
_prepare_dat_multicolumn
(main_file_name='', comments=True)[source]¶ 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).
Parameters: comments – if True, print comments (if it makes sense for the given format)
-
_prepare_gnuplot
(main_file_name='', title='', comments=True, prettify_format=None, y_max_lim=None, y_min_lim=None, y_origin=0.0)[source]¶ Prepare an gnuplot script to plot the bands, with the .dat file returned as an independent file.
Parameters: - 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)[source]¶ Prepare a json file in a format compatible with the AiiDA band visualizer
Parameters: comments – if True, print comments (if it makes sense for the given format)
-
_prepare_mpl_pdf
(main_file_name='', *args, **kwargs)[source]¶ 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)[source]¶ 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)[source]¶ 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)[source]¶ 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.'¶
-
_validate_bands_occupations
(bands, occupations=None, labels=None)[source]¶ 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.
-
array_labels
¶ Get the labels associated with the band arrays
-
get_bands
(also_occupations=False, also_labels=False)[source]¶ 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)[source]¶ 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)[source]¶ Load the kpoints from a kpoint object. :param kpointsdata: an instance of KpointsData class
-
show_mpl
(**kwargs)[source]¶ 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._exportstring.
-
units
¶ Units in which the data in bands were stored. A string
-
-
aiida.orm.data.array.bands.
find_bandgap
(bandsdata, number_electrons=None, fermi_energy=None)[source]¶ Tries to guess whether the bandsdata represent an insulator. This method is meant to be used only for electronic bands (not phonons) By default, it will try to use the occupations to guess the number of electrons and find the Fermi Energy, otherwise, it can be provided explicitely. Also, there is an implicit assumption that the kpoints grid is “sufficiently” dense, so that the bandsdata are not missing the intersection between valence and conduction band if present. Use this function with care!
Parameters: - number_electrons – (optional, float) number of electrons in the unit cell
- fermi_energy – (optional, float) value of the fermi energy.
Note: By default, the algorithm uses the occupations array to guess the number of electrons and the occupied bands. This is to be used with care, because the occupations could be smeared so at a non-zero temperature, with the unwanted effect that the conduction bands might be occupied in an insulator. Prefer to pass the number_of_electrons explicitly
Note: Only one between number_electrons and fermi_energy can be specified at the same time.
Returns: (is_insulator, gap), where is_insulator is a boolean, and gap a float. The gap is None in case of a metal, zero when the homo is equal to the lumo (e.g. in semi-metals).
-
class
aiida.orm.data.array.kpoints.
KpointsData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.data.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([])¶
-
__init__
(*args, **kwargs)[source]¶ Initialize the object Node.
Parameters: uuid – if present, the Node with given uuid is loaded from the database. (It is not possible to assign a uuid to a new Node.)
-
__module__
= 'aiida.orm.data.array.kpoints'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 94¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_change_reference
(kpoints, to_cartesian=True)[source]¶ 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
-
_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
-
_find_bravais_info
(epsilon_length=1e-05, epsilon_angle=1e-05)[source]¶ Finds the Bravais lattice of the cell passed in input to the Kpoint class :note: We assume that the cell given by the cell property is the primitive unit cell.
Deprecated since version 0.11: Use the methods inside the aiida.tools.data.array.kpoints module instead.
Returns: a dictionary, with keys short_name, extended_name, index (index of the Bravais lattice), and sometimes variation (name of the variation of the Bravais lattice) and extra (a dictionary with extra parameters used by the get_special_points method)
-
_get_or_create_bravais_lattice
(epsilon_length=1e-05, epsilon_angle=1e-05)[source]¶ Try to get the bravais_lattice info if stored already, otherwise analyze the cell with the default settings and save this in the attribute.
Deprecated since version 0.11: Use the methods inside the aiida.tools.data.array.kpoints module instead.
Parameters: - epsilon_length – threshold on lengths comparison, used to get the bravais lattice info
- epsilon_angle – threshold on angles comparison, used to get the bravais lattice info
Return bravais_lattice: the dictionary containing the symmetry info
-
_logger
= <celery.utils.log.ProcessAwareLogger object>¶
-
_plugin_type_string
= 'data.array.kpoints.KpointsData.'¶
-
_query_type_string
= 'data.array.kpoints.'¶
-
_set_bravais_lattice
(value)[source]¶ Validating function to set the bravais_lattice dictionary
Deprecated since version 0.11.
-
_set_cell
(value)[source]¶ Validate if ‘value’ is a allowed crystal unit cell :param value: something compatible with a 3x3 tuple of floats
-
_set_labels
(value)[source]¶ set label names. Must pass in input a list like:
[[0,'X'],[34,'L'],... ]
-
_set_reciprocal_cell
()[source]¶ Sets the reciprocal cell in units of 1/Angstrom from the internally set cell
-
_validate_kpoints_weights
(kpoints, weights)[source]¶ 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
-
bravais_lattice
¶ The dictionary containing informations about the cell symmetry
Deprecated since version 0.11.
-
cell
¶ The crystal unit cell. Rows are the crystal vectors in Angstroms. :return: a 3x3 numpy.array
-
find_bravais_lattice
(epsilon_length=1e-05, epsilon_angle=1e-05)[source]¶ Analyze the symmetry of the cell. Allows to relax or tighten the thresholds used to compare angles and lengths of the cell. Save the information of the cell used for later use (like getting special points). It has to be used if the user wants to be sure the right symmetries are recognized. Otherwise, this function is automatically called with the default values.
If the right symmetry is not found, be sure also you are providing cells with enough digits.
If node is already stored, just returns the symmetry found before storing (if any).
Deprecated since version 0.11: Use the methods inside the aiida.tools.data.array.kpoints module instead.
Return (str) lattice_name: the name of the bravais lattice and its eventual variation
-
get_desc
()[source]¶ Returns a string with infos retrieved from kpoints node’s properties. :param node: :return: retstr
-
get_kpoints
(also_weights=False, cartesian=False)[source]¶ Return the list of kpoints
Parameters: - 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)[source]¶ Get the mesh of kpoints.
Parameters: print_list – default=False. If True, prints the mesh of kpoints as a list Raises: 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()
-
get_special_points
(cartesian=False, epsilon_length=1e-05, epsilon_angle=1e-05)[source]¶ Get the special point and path of a given structure.
References:
- In 2D, coordinates are based on the paper: R. Ramirez and M. C. Bohm, Int. J. Quant. Chem., XXX, pp. 391-411 (1986)
- In 3D, coordinates are based on the paper: W. Setyawan, S. Curtarolo, Comp. Mat. Sci. 49, 299 (2010)
Deprecated since version 0.11: Use the methods inside the aiida.tools.data.array.kpoints module instead.
Parameters: - cartesian – If true, returns points in cartesian coordinates. Crystal coordinates otherwise. Default=False
- epsilon_length – threshold on lengths comparison, used to get the bravais lattice info
- epsilon_angle – threshold on angles comparison, used to get the bravais lattice info
Returns point_coords: a dictionary of point_name:point_coords key,values.
Returns path: the suggested path which goes through all high symmetry lines. A list of lists for all path segments. e.g. [(‘G’,’X’),(‘X’,’M’),…] It’s not necessarily a continuous line.
Note: We assume that the cell given by the cell property is the primitive unit cell
-
labels
¶ Labels associated with the list of kpoints. List of tuples with kpoint index and kpoint name:
[(0,'G'),(13,'M'),...]
-
pbc
¶ The periodic boundary conditions along the vectors a1,a2,a3.
Returns: 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)
-
set_cell
(cell, pbc=None)[source]¶ Set a cell to be used for symmetry analysis. To set a cell from an AiiDA structure, use “set_cell_from_structure”.
Parameters: - 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)[source]¶ 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”
Parameters: structuredata – an instance of StructureData
-
set_kpoints
(kpoints, cartesian=False, labels=None, weights=None, fill_values=0)[source]¶ Set the list of kpoints. If a mesh has already been stored, raise a ModificationNotAllowed
Parameters: - 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.
- kpoints –
-
set_kpoints_mesh
(mesh, offset=[0.0, 0.0, 0.0])[source]¶ Set KpointsData to represent a uniformily spaced mesh of kpoints in the Brillouin zone. This excludes the possibility of set/get kpoints
Parameters: - 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=[0.0, 0.0, 0.0], force_parity=False)[source]¶ Set a kpoints mesh using a kpoints density, expressed as the maximum distance between adjacent points along a reciprocal axis
Parameters: - distance – distance (in 1/Angstrom) between adjacent kpoints, i.e. the number of kpoints along each reciprocal axis i is where 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.
-
set_kpoints_path
(value=None, kpoint_distance=None, cartesian=False, epsilon_length=1e-05, epsilon_angle=1e-05)[source]¶ Set a path of kpoints in the Brillouin zone.
Deprecated since version 0.11: Use the methods inside the aiida.tools.data.array.kpoints module instead.
Parameters: - value –
description of the path, in various possible formats.
None: automatically sets all irreducible high symmetry paths. Requires that a cell was set
or
[(‘G’,’M’), (…), …] [(‘G’,’M’,30), (…), …] [(‘G’,(0,0,0),’M’,(1,1,1)), (…), …] [(‘G’,(0,0,0),’M’,(1,1,1),30), (…), …]
- cartesian (bool) – if set to true, reads the coordinates eventually passed in value as cartesian coordinates. Default: False.
- kpoint_distance (float) – parameter controlling the distance between kpoints. Distance is given in crystal coordinates, i.e. the distance is computed in the space of b1,b2,b3. The distance set will be the closest possible to this value, compatible with the requirement of putting equispaced points between two special points (since extrema are included).
- epsilon_length (float) – threshold on lengths comparison, used to get the bravais lattice info. It has to be used if the user wants to be sure the right symmetries are recognized.
- epsilon_angle (float) – threshold on angles comparison, used to get the bravais lattice info. It has to be used if the user wants to be sure the right symmetries are recognized.
- value –
-
-
class
aiida.orm.data.array.projection.
ProjectionData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.data.orbital.OrbitalData
,aiida.orm.data.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.data.array.projection'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 119¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_check_projections_bands
(projection_array)[source]¶ Checks to make sure that a reference bandsdata is already set, and that projection_array is of the same shape of the bands data
Parameters: 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)[source]¶ Finds all the orbitals and their indicies associated with kwargs essential for retrieving the other indexed array parameters
Parameters: kwargs – kwargs that can call orbitals as in get_orbitals() Returns: retrieve_indexes, list of indicicies of orbitals corresponding to the kwargs Returns: all_orbitals, list of orbitals to which the indexes correspond
-
_logger
= <celery.utils.log.ProcessAwareLogger object>¶
-
_plugin_type_string
= 'data.array.projection.ProjectionData.'¶
-
_query_type_string
= 'data.array.projection.'¶
-
get_pdos
(**kwargs)[source]¶ Retrieves all the pdos arrays corresponding to the input kwargs
Parameters: kwargs – inputs describing the orbitals associated with the pdos arrays Returns: a list of tuples containing the orbital, energy array and pdos array associated with all orbitals that correspond to kwargs
-
get_projections
(**kwargs)[source]¶ Retrieves all the pdos arrays corresponding to the input kwargs
Parameters: kwargs – inputs describing the orbitals associated with the pdos arrays Returns: a list of tuples containing the orbital, and projection arrays associated with all orbitals that correspond to kwargs
-
get_reference_bandsdata
()[source]¶ Returns the reference BandsData, using the set uuid via set_reference_bandsdata
Returns: a BandsData instance
Raises: - AttributeError – if the bandsdata has not been set yet
- NotExistent – if the bandsdata uuid did not retrieve bandsdata
-
set_orbitals
(**kwargs)[source]¶ 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)[source]¶ Stores the projwfc_array using the projwfc_label, after validating both.
Parameters: - 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)[source]¶ Sets a reference bandsdata, creates a uuid link between this data object and a bandsdata object, must be set before any projection arrays
Parameters: value – a BandsData instance, a uuid or a pk Raise: NotExistent if there was no BandsData associated with uuid or pk
-
-
class
aiida.orm.data.array.trajectory.
TrajectoryData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.data.array.ArrayData
Stores a trajectory (a sequence of crystal structures with timestamps, and possibly with velocities).
-
__abstractmethods__
= frozenset([])¶
-
__module__
= 'aiida.orm.data.array.trajectory'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 119¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_get_aiida_structure
(store=False, **kwargs)[source]¶ Creates
aiida.orm.data.structure.StructureData
.Parameters: - converter – specify the converter. Default ‘ase’.
- store – If True, intermediate calculation gets stored in the AiiDA database for record. Default False.
Returns:
-
_get_cif
(index=None, **kwargs)[source]¶ Creates
aiida.orm.data.cif.CifData
-
_internal_validate
(stepids, cells, symbols, positions, times, velocities)[source]¶ 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
= <celery.utils.log.ProcessAwareLogger object>¶
-
_parse_xyz_pos
(inputstring)[source]¶ Load positions from a XYZ file.
Note
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.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)[source]¶ Load velocities from a XYZ file.
Note
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='')[source]¶ Write the given trajectory to a string of format CIF.
-
_prepare_tcod
(main_file_name='', **kwargs)[source]¶ Write the given trajectory to a string of format TCOD CIF.
-
_prepare_xsf
(index=None, main_file_name='')[source]¶ Write the given trajectory to a string of format XSF (for XCrySDen).
-
_query_type_string
= 'data.array.trajectory.'¶
-
_validate
()[source]¶ Verify that the required arrays are present and that their type and dimension are correct.
-
get_cells
()[source]¶ Return the array of cells, if it has already been set.
Raises: KeyError – if the trajectory has not been set yet.
-
get_index_from_stepid
(stepid)[source]¶ 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 asget_step_data()
orget_step_structure()
.New in version 0.7: Renamed from get_step_index
Note
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).
Raises: ValueError – if no step with the given value is found.
-
get_positions
()[source]¶ Return the array of positions, if it has already been set.
Raises: KeyError – if the trajectory has not been set yet.
-
get_step_data
(index)[source]¶ 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.
Returns: A tuple in the format
(stepid, time, cell, symbols, positions, velocities)
, wherestepid
is an integer,time
is a float,cell
is a matrix,symbols
is an array of lengthn
, positions is a array, and velocities is eitherNone
or a arrayParameters: index – The index of the step that you want to retrieve, from 0 to
self.numsteps - 1
.Raises: - IndexError – if you require an index beyond the limits.
- KeyError – if you did not store the trajectory yet.
-
get_step_index
(step)[source]¶ Deprecated since version 0.7: Use
get_index_from_stepid()
instead.
-
get_step_structure
(index, custom_kinds=None)[source]¶ Return an AiiDA
aiida.orm.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 theget_index_from_stepid()
method to get the corresponding index.Note
The periodic boundary conditions are always set to True.
New in version 0.7: Renamed from step_to_structure
Parameters: - 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.data.structure.Kind
objects. There must be one kind object for each different string in thesymbols
array, withkind.name
set to this string. If this parameter is omitted, the automatic kind generation of AiiDAaiida.orm.data.structure.StructureData
nodes is used, meaning that the strings in thesymbols
array must be valid chemical symbols.
- index – The index of the step that you want to retrieve, from
0 to
-
get_stepids
()[source]¶ Return the array of steps, if it has already been set.
New in version 0.7: Renamed from get_steps
Raises: KeyError – if the trajectory has not been set yet.
-
get_steps
()[source]¶ Deprecated since version 0.7: Use
get_stepids()
instead.
-
get_symbols
()[source]¶ Return the array of symbols, if it has already been set.
Raises: KeyError – if the trajectory has not been set yet.
-
get_times
()[source]¶ Return the array of times (in ps), if it has already been set.
Raises: KeyError – if the trajectory has not been set yet.
-
get_velocities
()[source]¶ Return the array of velocities, if it has already been set.
Note
This function (differently from all other
get_*
functions, will not raise an exception if the velocities are not set, but rather returnNone
(both if no trajectory was not set yet, and if it the trajectory was set but no velocities were specified).
-
numsites
¶ Return the number of stored sites, or zero if nothing has been stored yet.
-
numsteps
¶ Return the number of stored steps, or zero if nothing has been stored yet.
-
set_structurelist
(structurelist)[source]¶ Create trajectory from the list of
aiida.orm.data.structure.StructureData
instances.Parameters: structurelist – a list of aiida.orm.data.structure.StructureData
instances.Raises: ValueError – if symbol lists of supplied structures are different
-
set_trajectory
(stepids, cells, symbols, positions, times=None, velocities=None)[source]¶ Store the whole trajectory, after checking that types and dimensions are correct. Velocities are optional, if they are not passed, nothing is stored.
Parameters: - stepids – integer array with dimension
s
, wheres
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 your code does not provide an internal counter, just provide for instancearange(s)
. It is internally stored as an array named ‘steps’. - cells – float array with dimension ,
where
s
is the length of thestepids
array. Units are angstrom. In particular,cells[i,j,k]
is thek
-th component of thej
-th cell vector at the time step with indexi
(identified by step numberstepid[i]
and with timestamptimes[i]
). - symbols – string array with dimension
n
, wheren
is the number of atoms (i.e., sites) in the structure. The same array 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 theget_step_structure()
method). - positions – float array with dimension ,
where
s
is the length of thestepids
array andn
is the length of thesymbols
array. Units are angstrom. In particular,positions[i,j,k]
is thek
-th component of thej
-th atom (or site) in the structure at the time step with indexi
(identified by step numberstep[i]
and with timestamptimes[i]
). - times – if specified, float array with dimension
s
, wheres
is the length of thestepids
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.
Todo
Choose suitable units for velocities
- stepids – integer array with dimension
-
show_mpl_pos
(**kwargs)[source]¶ Shows the positions as a function of time, separate for XYZ coordinates
Parameters: - 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.
Todo: save to file?
-
step_to_structure
(index, custom_kinds=None)[source]¶ Deprecated since version 0.7: Use
get_step_structure()
instead.
-
-
aiida.orm.data.array.trajectory.
plot_positions_XYZ
(times, positions, indices_to_show, color_list, label, positions_unit='A', times_unit='ps', dont_block=False, mintime=None, maxtime=None, label_sparsity=10)[source]¶
This module defines the classes related to Xy data. That is data that contains collections of y-arrays bound to a single x-array, and the methods to operate on them.
-
class
aiida.orm.data.array.xy.
XyData
(*args, **kwargs)[source]¶ Bases:
aiida.orm.data.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.data.array.xy'¶
-
_abc_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache
= <_weakrefset.WeakSet object>¶
-
_abc_negative_cache_version
= 119¶
-
_abc_registry
= <_weakrefset.WeakSet object>¶
-
_arrayandname_validator
(array, name, units)[source]¶ Validates that the array is an numpy.ndarray and that the name is of type basestring. Raises InputValidationError if this not the case.
-
_logger
= <celery.utils.log.ProcessAwareLogger object>¶
-
_plugin_type_string
= 'data.array.xy.XyData.'¶
-
_query_type_string
= 'data.array.xy.'¶
-
get_x
()[source]¶ 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
()[source]¶ 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)[source]¶ Sets the array and the name for the x values.
Parameters: - 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)[source]¶ 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.data.array.xy.
check_convert_single_to_tuple
(item)[source]¶ Checks if the item is a list or tuple, and converts it to a list if it is not already a list or tuple
Parameters: item – an object which may or may not be a list or tuple Returns: item_list: the input item unchanged if list or tuple and [item] otherwise