Changelog¶
Version 0.4.0¶
Enhancements:
The
strct.Structureandstrct.StructureOperationsnow implement the functioncreate_supercellwhich replicates the unit cell forming a supercell (PR #136).plots.simpleplot.import_bar_data_setadded new parameter y_error to add errors to height for backend matplotlib (PR #140).strct.StructureOperationsimplements now thepipelineproperty and therun_pipelinefunction used to apply a series of manipulation methods at once (PR #144).strct.Structureoffers now an interface to the openmm Python package (PR #145).io.read_fhiaims_proj_dosnow also supports spin-polarized pDOS output files (PR #152).aim2dat.aiida_workflows.utils:add_molecule,aim2dat.aiida_workflows.utils:find_equivalent_sites, andaim2dat.aiida_workflows.utils:rotate_moleculewere added as a calcfunction (PR #153).A workflow was added to calculate the adsorption energies [
cp2k-adsorption-mofs-*] (PR #153, PR #184).Hybrid functionals PBE0 and HSE06 with the ADMM method were implemented. As well as rVV10 and D3 dispersion corrections for R2SCAN and the hybrid functionals (PR #153).
aiida_workflows.cp2k.base_opt_work_chain._BaseOptimizationWorkChaincontains now the option to fix atomsoptimization_p.fixed_atomsand also to ignore scf convergence failureignore_convergence_failure(PR #153).aiida_workflows.MultipleWorkflowBuilderoffers the possibility withreturn_remote_runtimesto return only the sum of remote runtimes for each task (PR #155).aiida_workflows.cp2k.pdos_work_chain.PDOSWorkChaincontains now the option to print the local PDOS, projected on subsets of atoms given through listsldos(PR #158).Newly implemented function
strct.ext_analysis.calc_hydrogen_bondsto search for hydrogen bonds in astrct.Structureobject (PR #167)strct.ext_analysis.add_structure_coordgrid search is now improved by a grid search in a sphere around the host atoms. Additionally, rotate_guest allows to rotate the guest until minimum is found (PR #168, PR #176, PR #180, PR #181).plots.simple_plotadded new property edge_color and line_width to set the color and thickness of the edges for bar plots for backend matplotlib (PR #169).The
strct.Structureclass has the newfrom_strclassmethod to initialize an object from string, using pre-defined stored structures (PR #170).The
read_yaml_filefunction now has theread_structuredecorator to integrate into the io-interface of thestrct.Structureclass (PR #170).The
WorkflowBuilderandMultipleWorkflowBuildercan be imported directly via the__init__.pyfile of the sub-package (PR #174).aim2dat/aiida_workflows/chargemol/parsersandaim2dat/io/critic2retrievesruntimeof the calculation and includes it in theresult_dict(PR #174).The
strct.Structure.calc_coordinationnow allows to calculate the coordination environment for a subset of sites and has the option to omit the statistics; thestrct.Structure.calc_distancemethod withuse_supercell=Trueas well as thestrct.ext_manipulation.add_structure_coordfunctions are now faster for larger structures (PR #177).Newly implemented workchain
aiida_workflows.cp2k.interaction_energy_work_chainto calculate interaction energies including counter poise correction (PR #184)
Fixes:
The
strct.Structure.calculate_distancemethod was not always returning the smallest distance whenbackfold_positions=Truesince only the second site position was backfolded (PR #139).The
strct.Structureobject wouldn’t update the positions if a cell is added or altered after initialization (PR #141).The
strct.Structure.calculate_distancemethod was considering periodic images also ifpbcwas set toFalse(PR #141).The
strct.ext_manipulation.add_structure_coorddidn’t apply distance checks if distance constraints were applied (PR #147).The
io.read_cp2k_restart_structurefunction was wrongly taking the reference cell instead of the actual unitcell (PR #149).The
find_scf_parameterswere not restarted if the mixing parameters were not found (PR #153).The
aiida_workflows.cp2k.core_work_chain_handlers._resubmit_calculationfunction takes care of restarting CP2K calculations when walltime is hit or no output for CP2K was created due to connection issues (PR #157, PR #184).The
strct.ext_manipulation.add_structure_coordfunction threw an error when the host or guest indices were larger than the number of sites of the corresponding structure (PR #165).The read/write functions to hdf5-files of the
strct.StructureCollectionclass are finetuned to be more data-efficient (PR #170).The
aiida_workflows.cp2k.parsers._Cp2kBaseParser.parsetakes care of theexit_codesifWALLTIMEis hit by Slurm or CP2K, as well fixes the error that if calculation wasinterruptedanSCFerror arose instead (PR #171).The
aiida_workflows.protocols.*.yaml/chargemol.parameters->partial_chargeswas fixed since the values were taken as three key parameters instead of one whole key (PR #174).The
plots.simple_plotis fixed for bar plots including colors and alpha for the matplotlib backend (PR #175).The
elements.get_element_groupsnow returns the groups of all 118 elements of the periodic table, the missing entries for ‘Ce’, ‘Fr’ and ‘Ra’ were added (PR #179).The
aiida_workflows.cp2k.parameter_files.basis_setsSTANDARD basis sets and potentials were overwritten by UZH. Now, both options are implemented (PR #183).
Breaking Changes:
All functions of the
iosub-package have been renamed and are imported directly via the__init__.pyfile of the sub-package (PR #133)The creation of supercells for the calculation of coordination environments and other features has been sped up substantially (PR #136).
The
utils.element_properties.get_atomic_radiusfunction now relies entirely internal values taken from doi:10.1039/B801115J ('covalent'), doi:10.1039/C3DT50599E ('vdw'), doi:10.1039/C9RA07327B ('chen_manz'), and doi:10.26434/chemrxiv-2024-m3rtp-v2 ('vdw_charry_tkatchenko') instead of ase (PR #138).Support for the MP legacy interface via pymatgen is removed from the
strct.StructureImporterclass since it is no longer supported by pymatgen (PR #142).If a maximum value is given in
dist_thresholdof thestrct.ext_manipulation.add_structure_*functions, only one atom is considered for the criteria to be fulfilled (PR #151).The number of SCF iterations in the OT method for CP2K workflows were reduced from 40 to 25 and 50 to 25 (PR #153).
The BASIS_SET_FILE_NAME and POTENTIAL_FILE_NAME was changed from [BASIS_MOLOPT, BASIS_MOLOPT_UCL] to BASIS_MOLOPT_UZH and from GTH_POTENTIALS to POTENTIAL_UZH for CP2K workflows. Additionally, the PBE functional includes GGA in its BASIS_SET and POTENTIAL for each KIND. SCAN thus includes MGGA instead of SCAN. Shortrange SR for most metals become redundant by introducing BASIS_MOLOPT_UZH (PR #153).
The bond distance from the hydrogen molecule was reduced from 0.909862 to 0.74 (PR #153).
The Materials Project openAPI interface does not support ICSD IDs anymore, instead the new key theoretical is added (PR #154).
aiida_workflows.cp2k.pdos_work_chain.PDOSWorkChain.resolve_atomsresolves the atoms now via local PDOS instead of changing each atom in a separate kind (PR #158).The chem_formula, units and element_properties modules from the aim2dat.utils sup-package are moved to the new sub-packages: chem_f, units and elements to reduce the import paths; all element properties are now stored internally, instead of relying on the ase implementation (PR #159).
strct.Structure.attributesare now completely mutable for more straight-forward use (PR #170 and PR #173).The
strct.StructureCollectionio-function are now aligned with thestrct.Structureclass, replacing theStructureCollection.import_*andStructureCollection.store_*withStructureCollection.from_*andStructureCollection.to_*functions, respectively (PR #170).The interface of the
strct.StructureCollectiontowards pandas data frames now adds a column to the data frame containing thestrct.Structureobjects, thus, the interface is now circular and the newStructureCollection.from_pandas_dfmethod can be used initiate astrct.StructureCollectionobject from a data frame (PR #170).
Version 0.3.0¶
Enhancements:
A parser for xml output files of Quantum ESPRESSO is added (PR #102).
Added interface to MOFXDB (https://mof.tech.northwestern.edu/) to the
strct.StructureImporterclass (PR #94).The
strct.Structureclass checks now for duplicate positions upon initialization (PR #107).strct.ext_analysis.determine_molecular_fragmentsoffers additional parameters, allowing to exclude sites and restricting the size of the fragments (PR #111).Slight speed-up in distance based methods to calculate the coordination environment by sorting the pair-wise distances first.
Added
utils.element_properties.get_val_electronsfunction to return the number of valence electrons of the element (PR #113).Support CP2K versions 2025.1 (PR #114).
Implemented BSSE parsing to
io.cp2k.read_stdoutfunction (PR #115 and PR #116).Added more units and fundamental constants to
utils.units(PR #122).The
strct.Structure.calculate_angleandstrct.Structure.calculate_dihedral_anglenow supports lists andNoneas input (PR #126).Several new functions have been added to the
strct.ext_manipulationmodule, includingadd_structure_position,translate_structureorrotate_structure, each of the functions in this module now implement a commondist_thresholdparameter to control the inter-atomic distances of the altered structures (PR #105, PR #123, PR #129).The
strct.Structureclass has now the propertynumbersto get the atomic number related to the element (PR #130).
Fixes:
The
internalbackend ofstrct.Structurewas not properly identifying the correct function to parse the file in all cases. Additionally, theio.cif.read_filefunction now uses theio.utils.custom_openfunction, allowing to pass on a string instead of the file path (PR #99).io.cp2k.read_restart_structurefunction now supports parsing files with “” delimiters for string values (PR #100).Improve the interface of
strct.Structureto the aseAtomsclass by transferringattributestoinfoandsite_attributestoarrays(PR #103).Expose
strct.Structure.attributes,strct.Structure.site_attributesandstrct.Structure.extrastostrct.StructureCollection.append,strct.Structure.from_ase_atomsandstrct.Structure.from_pymatgen_structurefunctions (PR #103).Some str values were sometimes wrongly transformed into float numbers in the output parsers and cif parser checks more rigorously whether two atoms are occupying the same site (PR #104).
Fix positions returned from
strct.Structure.calculate_distancefunction (PR #106).io.cif.read_filewas not properly parsing string values in loops with delimiters (”” or ‘’) and without spaces (PR #118).Setting
strct.Structure.site_attributeswas not resetting the dictionary but instead adding the new key/value pairs (PR #125).The
strct.StructureOperations.compare_sites_via_coordination,strct.StructureOperations.find_eq_sites_via_coordination,strct.ext_analysis.decorator.external_analysis_methoddecorator now properly handles unset keyword arguments (PR #128).
Deprecations:
The
strct.Structure.import_methods,strct.Structure.export_methods,strct.Structure.analysis_methods,strct.Structure.manipulation_methods,strct.StructureOperations.analysis_methodsandstrct.StructureOperations.manipulation_methodsfunctions are now deprecated since Python dropped the support for class properties. The methods are replaced by thelist_*_methodsclass methods, making this Package compatible with Python 3.13 (PR #132).
Breaking Changes:
strct.ext_analysis.determine_molecular_fragmentsnow considers the same site multiple times if it is connected, returns a list ofstrct.Structureobjects and does not shift the position of the first atom to zero (PR #111).strct.ext_analysis.create_graphnow only outputs the graphviz graph if theget_graphviz_graphparameter is set toTrueand networkx is added to the core dependencies (PR #112).All units and constants now rely on an internal implementation which is based on CODATA 2022 instead of 2014 (PR #122).
The
strct.Structure.calculate_distance,strct.Structure.calculate_angleandstrct.Structure.calculate_dihedral_anglenow return all possible combinations from the given indices instead of pairwise tuples (PR #126).The
strct.ext_analysis.determine_molecular_fragments,strct.ext_analysis.create_graphandstrct.ext_manipulation.add_structure_coordfunctions now implement**cn_kwargsas container for the arguments forwarded to thestrct.Structure.calculate_coordinationfunction (PR #128).The default value for the
methodparameter of thestrct.Structure.calculate_coordinationis now set toatomic_radiusas this method seems more reliable and equally fast asminimum_distance(PR #128).The
aim2dat.strct.ext_manipulation.add_structure_randomfunction now uses the numpy random number generator and now offers more keyword arguments to control the used random numbers (PR #134).
Version 0.2.0¶
Enhancements:
All larger parser functions moved from
aiida_workflowstoiosuch that they can used outside of the AiiDA framework (PR #20).io.qe.read_total_density_of_statesparses now the Fermi energy as well (PR #20).plots.base_plotadded new property subplot_align_ylabels to adjust y labels in subplots for backend matplotlib (PR #23).strct.Structureadded new file formats .cssr, .v1 and .cuc to to_file for postprocessing in Zeo++ (PR #26).strct.StructureOperationsnow supports, in addition to astrct.StructureCollectionobject, a list ofStructureobjects upon initialization (PR #29).fct.smearingfunctions have a new parametersampling_widthto control the distance between x-values (PR #32).strct.Structure.to_dictreturns a dictionary of aStructureobject (PR #34).Structure manipulation methods maintain
kindsinformation andstrct.Structure.substitute_elementshas now the additionalremove_kindparameter (PR #34).utils.element_properties.get_atomic_radiussupports now the set of radii determined in doi:10.1039/C9RA07327B (PR #35).strct.Structure.calculate_coordinationsupports the calculation of the coordination environment based on the sum of the corresponding atomic radii (PR #35).strct.ext_manipulation.add_structure_coordreplaces thestrct.ext_manipulation.add_functional_groupfunction allowingStructureobjects as input and adding methods to define the orientation and position of the guest structure in more detail (PR #37, PR #65, PR #85).strct.Structurehas now site attributes which store site specific information (PR #39).utils.element_properties.get_atomic_radiussupports now Van der Waals radii determined in doi:10.26434/chemrxiv-2024-m3rtp-v2 (PR #44).An internal cif-parser is added to parse additional information (PR #47).
Support CP2K versions 2022.1-2024.1 (PR #51).
The newly implemented
strct.ext_manipulation.add_structure_randomfunction adds a guest structure at a random position and orientation (PR #53).strct.Structure.from_fileinterfaces functions from theiosub-package via the internal'backend'and adds more parameters to control the'ase'backend (PR #56).The methods to find duplicate structures of
strct.StructureOperationsare sped up by comparing the chemical formulas prior to more expensive checks (PR #61).H2 is added to the pre-defined structures (PR #65).
io.cp2k.read_atom_proj_density_of_statesnow also supports LDOS files (PR #76).strct.StructureOperations.compare_*functions can now be run in parallel (PR #78).Added
custom_hatchto allplotsclasses to allow plotting hatched bars using the matplotlib backend (PR #89).
Fixes:
utils.chem_formula.transform_str_to_dictsupports now recurring elements and nested brackets (PR #13).strct.Structure.calculate_voronoi_tessellationnow sorts the the neighbouring sites (PR #31).io.fhi_aims.read_atom_proj_density_of_statessupports now higher azimuth quantum numbers up to i (PR #33).External structure manipulation methods now share the same interface as their internal counterparts (PR #34).
A few smaller bug fixes in CP2K output parser (PR #36).
Fix interface to spglib to support version 2.5 and above (PR #54).
Small fixes to the Materials Project open-api interface (PR #58).
The optimade interface was not working as soon as one supplier could not be reached (PR #62).
strct.Structure.calculate_distancenow correctly backfolds positions into the unit cell (PR #63).strct.ext_manipulation.add_structure_coordorstrct.ext_manipulation.add_functional_groupwere not in all cases dealing correctly with planar coordination geometry (PR #64).Fixed error in
strct.StructureOperationswhen index slices were used (PR #71).Fixed bug in
plots.PartialChargesPlotoccurring when a data labels was part of another data label (PR #77).
Deprecations:
strct.ext_manipulation.add_functional_groupis replaced bystrct.ext_manipulation.add_structure_coord(PR #37).aim2dat.io.cp2k.read_optimized_structureis replaced byaim2dat.io.cp2k.read_restart_structure(PR #56).
Breaking Changes:
Moved
dict_*functions fromaiida_workflows.utilstoutils.dict_tools(PR #36).Space group and symmetry related keys now conform to the attributes returned by spglib (PR #54). As such, the keys
'sg_number','int_symbol','point_group_symbol','schoenflies_symbol'are replaced by'number','international','pointgroup','schoenflies', respectively.utils.chem_formula.reduce_formulatries now to find a formula only having natural numbers as quantities; this way utils.chem_formula.compare_formulas`` works for all use-cases (PR #60).Structure manipulation methods now in general maintain
kinds,attributesandsite_attributesif not otherwise noted (PR #63).The interface of``strct.StructureOperations`` was changed in order to be more consistent with
strct.Structure(PR #72).strct.Structure.kindsnow always returns a tuple instead ofNone(PR #73).io.critic2.read_stdoutnow returns the value of ‘version’ as string (PR #74).strct.Structure.calculate_distancetreatsr_maxas a cut-off value for the distance (PR #83, PR #90).
Version 0.1.0¶
First published version.