All notable changes to this project will be documented in this file.
v0.5.1 (2023-08-15)
- Edit default openmp num threads behavior (use OMP_NUM_THREADS when set). #404 @lbluque
v0.5.0 (2023-08-15)
SQSGenerator.from_processorsto create a generator from a list of processors. #398 @lbluque- Periodic ground state solver (upper-bound problem formulation) #343 @qchempku2017
v0.4.1 (2023-07-21)
- Fix #386 by making cython extension classes pickleable. #387 @lbluque
- Fix #385 data type issues on Windows. #392 @qchempku2017
v0.4.0 (2023-06-09)
- openmp parallelization when computing correlation and cluster interaction vectors. #338 @lbluque
- stochastic SQS generation functionality. #344 @lbluque
- enumeration of symmetrically distinct supercell matrices. #344 @lbluque
- Fix #334 getting subclasses of non-abstract classes. #335 @lbluque
- Fix #353 appending in
Sublattice.restricted_sitesproperty. #355 @qchempku2017 - Use jsanitize to serialize dicts/lists of msonables. #354 @lbluque
- Use site_mappings in
StructureWrangler.process_entry. #363 @lbluque
v0.3.1 (2023-02-07)
- Save ensemble as attributed in
SampleContaineraddget_sampled_structures. #326 @lbluque
ClusterExpansion.cluster_interaction_tensorsas a cached property and reset when pruning. #330 @lbluque- Fix flakey unit tests. #328 @lbluque & @qchempku2017
v0.3.0 (2023-01-13)
- Cluster decomposition analysis and sampling functionality. #306 @lbluque
- Keep ensemble as attribute in
MCKernels. #304 @lbluque - Change default processor into ClusterDecompositionProcessor when initializing Ensemble. #309 @qchempku2017
- Use -mcpu=native compile option to build successfully on newer macs. #310 @lbluque
- Add
polytopeandcvxpyto test requirements. #304 @lbluque
v0.2.0 (2022-12-11)
WangLandaukernel class for density of states sampling. #294 @qchempku2017 & @lbluqueMetadataclass to record specifications of MC simulations. #297 @lbluque
- Remove size key when all orbits of a certain size have been removed. #292 @lbluque
v0.1.0 (2022-10-20)
- Charge neutral semi grand canonical sampling. #271 @qchempku2017
MultiStepandCompositemcushers for more flexible sampling. #279 @lbluque
v0.0.7 (2022-09-26)
- Additional tests to ensure correlation vectors are consistent across equivalent supercell matrices. #262 @qchempku2017
- Unit-test updates. #269 @lbluque
- Improved orbit alias detection. #262 @qchempku2017
v0.0.6 (2022-09-02)
- Include number of corr functions when sorting orbits. #256 @lbluque
- Use max distance of centroid to sites in unit cell in cluster search. #256 @lbluque
- Fixed search of clusters by correctly using centroid of unit cell. #255 @kamronald
- Removed CanonicalEnsemble and SemigrandEnsemble. #257 @lbluque
v0.0.5 (2022-08-10)
- Data centering example notebook. #238 @kamronald
- Single sampler multiple kernels. #245 @qchempku2017
- Fix returning all sub_orbit_mappings. #249 @lbluque
v0.0.4 (2022-06-23)
- Allow streaming to h5 in simulated annealing. #216 @lbluque
- Fix recording sampled traces for nwalkers > 1. #219 @lbluque
- Fix minor error in ClusterSubspace.str #226 @lbluque
v0.0.3 (2022-06-03)
- Developing section of docs. #215 @lbluque
- Single
Ensembleclass for canonical and semi-grand canonical sampling. #210 @lbluque
- Package name properly
smolinstead ofstatmech-on-lattices.
- Fixed #213 metadata serialization for saving of
SampleContainers. #214 @lbluque
SemiGrandEnsembleandCanonicalEnsemble. UseEnsemblewith or without setting chemical potentials instead. #210 @lbluque
v0.0.2 (2022-05-22)
- version dunder with pypi project rename.
- use of np.random.default_rng for reproducibility. #206 (lbluque)
- Fix passing seed explicitly in Sampler.from_ensemble
v0.0.1 (2022-04-26)
- Method to detect and identify orbit degeneracies based on supercell shape. #184 (kamronald)
- Automatic github release.
- PyPi install as
statmech-on-lattices(arghhh)
- Moved cython code for computing correlations to smol/correlations.pyx and imports as smol.correlations #190 (lbluque)
- Fix importing numpy in setup.py
v0.0.0 (2022-04-13)
Clusteraspymatgen.SiteCollection, str and repr methods for Cluster, Orbit, ClusterSubspace and ClusterExpansion akin to pymatgen, and functionality to render Clusters with crystal-toolkit. #181 (lbluque)- Sublattice splitting. #179 (qchempku2017)
StructureWrangler.get_similarity_matrixto get similarity fractions between correlation vectors of training set. #153 (kamronald)ClusterSubspacewith no point terms using{1: None}. #158 (lbluque)MCBiasimplementation for biased sampling,Traceobjects for general state saving during sampling. #154 (lbluque)- Active and inactive sublattices for MC sampling. #152 (lbluque)
SamplerContainer.to_hdf5to save MC sample containers #151 (lbluque)PottsSubspaceclass to generate redundant frame expansions. #146 (lbluque)- Methods
is_suborbitandsub_orbit_mappingsinOrbitand relatedfunction_hierarchyandorbit_hierarchyinClusterSubspace. #141 (lbluque) UniformlyRandomKernelfor high temperature/random limit sampling.ThermalKernelABC class for all temperature based MC Kernels. #134 (lbluque)cofe.wrangling.selectstructure selection functions. #133 (lbluque)RegressionDatadataclass to save regression details inClusterExpansions#132 (lbluque)rotatemethod in SiteBasis class. #130 (lbluque)
StructureWranglerbased on pymatgenComputedStructureEntry. #189 (lbluque)- unittests for
smol.cofeusingpytest. #159 (lbluque) - New
corr_from_occupancyanddelta_corrfaster and cleaner implementations. And renamedCEProcessortoClusterExpansionProcessor#156 (lbluque) - Dropped "er" endings for
MCUshernames. RenamedMuSemigrandEnsembletoSemigrandEnsemble. #154 (lbluque) - Changed
ClusterSubspace.supercell_orbit_mappingsto only include cluster site indices. #145 (lbluque) - Enable setting cluster cutoffs for duplicate searching. #142 (lbluque)
- Methods
orbits_from_cutoffsandfunction_inds_from_cutoffsnow allow a dictionary as input to pick out orbits with different cluster diameter cutoffs. #135 (lbluque)
- Allow Ewald only MC. #141 (kamronald)
- Fix 141 corrected implementation of correlation function hierarchy. #141 (lbluque)
- Fix 129
saving bit_combos in
Orbit.as_dictwhen pruning has been done. #130 (qchempku2017) - Fix orbit generation to play nicely with changes in pymatgen
Structure.sites_in_spherereturn value. #125 (lbluque) - Fix cluster searching issue #104 when generating orbits from cutoffs. #138 (qchempku2017)
optimize_indicatorinClusterExpansionProcessorand corresponding cython function. #156 (lbluque)FuSemiGrandEnsemblenowFugacityBias. #154 (lbluque)- Numerical conversion of coefficients between bases
ClusterExpansion.convert_coefs#149 (lbluque)
alpha1.0.1 (2021-03-03)
- Method in
StructureWranglerto get structure matching duplicates #122 (lbluque) - Include tolerance when detecting duplicate correlation vectors. #121 (lbluque)
- Convenience method to get feature matrix orbit ranks. #117 (lbluque)
- bit combo hierarchy in
ClusterSubspacefor fitting hierarchy constraints. #106 (qchempku2017) - data indices in
StructureWranglerto keep track of training/test splits, duplicate sets, etc. #108 (lbluque) ClusterSubspace.cutoffsproperty to obtain tight cutoffs of included orbits. #108 (lbluque)- Added properties to get orbit and ordering multiplicities of corr functions.
#102
(lbluque)
function_ordering_multiplicities,function_total_multiplicities
- Added helpful methods/properties to
ClusterSubspaceto get corr function indices based on cluster diameter cutoffs and/or cluster sizes. #102 (lbluque)orbits_by_cutoffs,function_inds_by_cutoffs,function_inds_by_size.
- Allow using external term values when detecting duplicate corr vectors. #124 (lbluque)
- Warn instead of printing when structure matching fails. #124 (lbluque)
- filter functions in
smol.wranglingreplaced with functions returning indices corresponding to structures to keep. This can be used saving indices withStructureWrangler.add_data_indices. #102 (lbluque) - Cleanup of sites, active sites and restricted sites in
Sublattice#95 (juliayang) - Make feature matrix optional when creating a
ClusterExpansionconstruction. #102 (lbluque) - Renamed
ncorr_functions_per_orbit->num_functions_per_orbitinClusterSubspaceandClusterExpansion.convert_eci->ClusterExpansion.convert_coefs#102 (lbluque) - Changed orthonormalization of site basis to use
np.linalg.qr. #102 (lbluque) - Changed cython corr functions to reduce Python interaction in loop (~1.5x faster) #102 (lbluque)
- Raise error in
StructureWrangler.append_data_itemswhen item properties are missing keys already included. #117 (lbluque) - Correctly recreate coefs in
CompositeProcessor.from_dict#116 (lbluque) - Disallow setting chemical potentials/fugacities with duplicate string/species in dictionary. #114 (lbluque)
- Fixed loading
ClusterSubspacewith polynomial basis from dict. #112 (lbluque) - Fixed
Sublatticeserialization, saving/loadingSiteSpaces. #96 (lbluque) - Fix json serialization when saving
ClusterSubspaceswith orthonormal basis sets. #90 (lbluque)
alpha1.0.0 (2020-10-27)
- Completely new
smol.mocamodule. Design based generally up as follows:Processorclasses used to compute features, properties and their local changes from site flips for fixed supercell sizes.ClusterExpansionProcessorto handle cluster expansions.EwaldProcessorto handle Ewald electrostatic energy.CompositeProcessorto mix energy models. Currently only the ones above.
Ensembleclasses to represent the corresponding statistical ensemble (probability space). These classes no longer run monte carlo, they only compute the corresponding relative Boltzman probabilities.CanonicalEnsemblefor fixed compositions.MuSemigrandEnsemblefor fixed chemical potentials.FuSemigrandEnsemblefor fixed fugacity fractions.
Sublatticeclass to encapsulate previous implementation using dictionaries.Samplerclass to run MCMC trajectories based on the given kernel using a specific ensemble. #80 (lbluque)MCKernelclasses used to implement specific MCMC algorithms.Metropoliscurrently only kernel implemented to run single site Metropolis random walk.MCUsherclasses to handle specific MCMC step proposals (i.e. single swaps, to preserve composition, single flips, single constrained flips, multisite flips, local flips, etc).SampleContainerclass to hold MCMC samples and pertinent information for post-processing and analysis (improvement on previous implementation using lists).
smol.mocaunit-tests all now usingpyteststinstead ofunittest.Vacancyclass, inherits frompymatgen.DummySpecie.SiteSpaceclass to encapsulate prior site space implementation using OrderedDicts.get_speciesfunction to mimicget_el_spfrom pymatgen but correctly handleVacancy.- MCMC sample streaming functionality using hdf5 files. #84 (lbluque)
- Initial Sphinx code documentation, currently hosted here.
StructureWranglerwarning when adding structures with duplicate correlation vectors. #85 (lbluque)
Ensembleclasses are temperature agnostic. Temperature is set when sampling. #83 (lbluque)- Refactored
smol.cofe.configspace->smol.cofe.space - A few method name changes in
ClusterSubspaceto be more precise and appropriate. Most notablyfrom_radiiclassmethod nowfrom_cutoffs(since the distances used, max distance between 2 pts, are more like a diameter rather than a radius.) - filtering functions no longer methods in
StructureWrangler, now defined as functions incofe.wrangling.filter. #85 (lbluque) - Species in site spaces and occupancy strings are now pymatgen
Specieor inherited classes instead of string names. (This is to allow keeping additional properties for species, such as oxidation state, magnetization, the sky is the limit.) - Single
StandardBasissite basis class that is constructed using a basis function iterator for specific basis sets. - Example notebooks updated accordingly.
smol.learnand all regression estimators have been removed.
- Proper calculation of ECIs in
ClusterExpansionusing both random crystallographic symmetry multiplicity and function decoration multiplicity. (credits to qchempku2017 for pointing this out.) - Fixed MSONable serialization of cluster subspaces with orthonormal basis sets
by making
StandardBasisMSONable and saving corresponding arrays. #90
alpha0.0.0 (2020-10-8)
Initial relatively stable version of the code.