Fixed an issue where the crystals version was not correctly interpolated when writing CIFs (#14).
Added file name to some parser warnings (#15).
Added support for spglib 2.0.
Added explicit testing for Python 3.10 and Python 3.11.
Fixed an issue where writing some crystal structures to CIF did not work correctly (#13).
Crystal.groupby()method to group unit cell atoms by site-symmetry (#12).
Added some typing information.
Supercell.scaled_lattice_vectorsproperty and associated documentation (#11).
Protein Data Bank downloads are now done through HTTPS rather than FTP, which is recommended by the RCSB data bank.
Fixed some documentation formatting.
Fixed an issue with the tag attribute of Atom not being propagated properly (#9).
Added the ability to read and write POSCAR files from the Vienna Ab initio Simulation Package (VASP). Contributed by Chenxing Luo (#8).
Releases are now automatically performed using Github Actions
Fixed an issue where uncertainties in atom site occupancy in CIF files would not be parsed correctly (#7).
Starting with this version,
crystalsis licensed under GPLv3.
General purpose single-crystal structure indexing with the DirAx algorithm has been added:
Lattice.miller_indices()now accept tables of reflections/scattering vectors. This calculation is vectorized using NumPy.
Migration of testing infrastructure to pytest.
The sorting of AtomicStructure objects is now stable.
Fixed an issue where checking the containership of atoms did not work properly.
Fixed an issue where downloading structures from the Materials Project failed on macOS/Linux.
Code snippets in documentation are now tested for correctness.
Tests are now included in the package itself.
Fixed deprecations that came with Python 3.9, involving comparison of crystal structures.
Added the ability to write crystal structures to CIF/XYZ files with the Crystal.to_cif and Crystal.to_xyz methods. Also, structures can be converted to ASE’s
Atomsclass with Crystal.to_ase. This can be used to convert crystal structures from one format to another!
Added the symmetry_reduction function, and associated method Crystal.asymmetric_cell(), to determine the smallest asymmetric cell that generates a unit cell.
The method Lattice.bounded_reflections now takes in an additional parameter, min_bound, to find reflections between a lower and upper bound.
Fixed an issue where in certain cases, atoms related by symmetry were not pruned appropriately (#5)
Official support for Python 3.9.
Atom site occupancies are now parsed from CIF files (#3).
Orbitalinstances are now orderable, i.e.
Orbital("1s") < Orbital("2p").
Elementclass can now be initialized from another
Element, and also from full atomic names (e.g.
"hydrogen"). This simplifies the normalization for input types.
ElectronicStructure.outer_shellmethod to quickly get the outermost shell.
Added the ability to describe the electronic structure of atoms using the
Added the ability to set a Materials Project API key as environment variable
Added the Materials Project constructor to the
Crystal.from_mpconstructor to create crystals through the Materials Project API.
Added the method
Crystal.indexed_by, which allows to index reflections of a crystal by using another lattice.
Crystalclass hierarchy to be more specific. This change should not affect anyone.
Added command-line utilities, including the crystals info script.
New algorithm to determine the lattice vectors from lattice parameters. Results should be the same except in edge cases.
Space-group and symmetry information has been inserted into immutable dictionaries
Fixed an issue where the parsing of CIF files without Hall symbol would fail because the International Table number was parsed as a string, not an integer.
Updated minimum dependency bound on PyCifRW to 4.4.1 because of potential issues with Python 3.7.
Refactoring of internal string handling to use f-strings.
Crystal.primitivewill now preserve subclasses.
Crystal.primitivewill now always return a new
Crystal, even if the
Crystalalready has a primitive cell.
Supercellis no longer a subclass of
Crystal. The only recommended way of building supercells is now
Lattice.miller_indicesnow work on single vectors of shape (3,).
Added the constructor
Crystal.from_pwscfto create crystal instances from output files generated by the Plane-Wave Self-Consistent Field (PWSCF) program.
Crystal.idealmethod to create idealized crystal structures.
Crystal.reciprocal_symmetry_operationsmethod to determine crystal symmetry operations in reciprocal basis.
Crystal.symmetry()and related methods now raises a
RuntimeErrorif symmetry-determination fails, rather than returning
Atom.tagproperty, which can be used to tag
Atominstances with extra information. This is for internal use. So far, it is used to label the order of Atoms from a PWSCF output file.
Crystal.symmetry_operationsmethod to determine crystal symmetry operations.
Fixed an issue where cache directories on MacOS could not be used.
CODParser will now try to download files from three Crystallography Open Database mirrors.
AtomicStructure and subclasses now support “truthiness”, i.e. they are considered False if empty, and True otherwise.
Added the AtomicStructure.satisfying method, to extract atoms satisfying a predicate from structures
Added the is_element function. It can be used to make AtomicStructure.satisfying more readable.