Updates
Check your installed version¶
When importing simmate and establishing a connection to the database, a warning message will be displayed if your version is not the most recent one. You can also verify this via the command-line:
simmate version
Upgrading to the Latest Version¶
We strongly advise installing simmate in a fresh conda environment instead of updating it within your current environment:
conda create -n my_env -c conda-forge python=3.11 simmate
Ensure that the expected version is installed:
simmate version
Update your database to be compatible with the new installation:
simmate database update
Warning
The command simmate database update
is only effective from v0.15.0
onwards. Earlier versions of simmate necessitate a complete database reset when updating versions. So, if your original database version is v0.14.0
or earlier, you must run simmate database reset
.
Understanding Version Numbers¶
Our releases follow semantic versioning. This implies that versions (e.g., v1.2.3
) correspond to MAJOR.MINOR.PATCH
. Each version number increases following these changes:
MAJOR
= incompatible API changesMINOR
= addition of new functionality (without API changes)PATCH
= bug fixes and documentation updates (without API changes)
There is one significant exception to the above rules -- MAJOR=0
releases. Any v0.x.y
release is considered developmental, where APIs are subject to change and are not deemed stable.
Upcoming Release¶
Tip
To view ongoing changes that haven't been finalized or merged yet, check our active pull-requests on GitHub
- no new changes have been merged into the
main
branch yet
v0.17.0 (2024.05.20)¶
Enhancements
- add api authentication via tokens for private Simmate servers
- add tips for docker installations & permissions
- allow custom django apps to be added to
INSTALLED_APPS
viaextra_django_apps
- allow override of django settings via
django_settings
- add several web UI components (e.g. select2 elements for forms)
- add "Table Info" page and utils for dynamically building database docs
badelf
app was reworked and now usespybader
for its core engine
Refactors
- update docs for creating new Simmate apps with URLs
Fixes
- fix
show_columns
bug when there are relations to basic django models (likeUser
) - catch incorrect use of
simmate database reset
when using the maintenance database - fix typo in setting email env vars
v0.16.0 (2024.01.27)¶
Enhancements
- added
dotdict
utility for easy dot-access with nested dictionary objects - all settings can be added via environment variables for cloud-based deployments
- add
@workflow
decorator for easily creating basic workflows - add
_incar_updates
toVaspWorkflow
s for cleaner inheritance & syntax - add Docker builds for Quantum Espresso to help new users
- add Docker builds for Bader to help new users
- add
simmate config
command to help inspect and update settings
Refactors
- Fully reimplemented how all settings are loaded
- Revised all documentation and tutorials
Fixes
- fix bug where user-provided
command
parameter is not properly loaded
0.16.1 (2024.01.28)
- fix bugs for Docker-QE runs
- fix typos in Getting Started tutorials
v0.15.0 (2024.01.04)¶
Enhancements
- Allow custom html templates and static files that override those shipped by default
- add
simmate engine
commands likestats-detail
andworkitems
that show details of workitems in the database - updated third-party archives (Materials Project, COD, JARVIS, OQMD)
- eased database updates between simmate versions by using django migrations
- added
bypass_nones
utility to help handle imperfect datasets where not all entries have a column - misc updates to the website interface, especially to the
data explorer
pages - add Microsoft allauth support to sign in use external account
- allow "login required" access to server via evironment variables (disabled by default)
- allow "internal only" access to server via evironment variables (disabled by default)
- add
django-simple-history
support to track user changes on specific models - add
@check_db_conn
decorator to help with database connection closures/timeouts - add
simmate engine start-schedules
which let's you configure periodic tasks for individual apps (e.g. check a table for updates every 5 minutes). Includes error handling and email alerts. (Note: this a quick alternative to full Prefect system) - add warren_lab app with Warren Lab preferred VASP settings
- add badelf app with class oriented tools for performing BadELF analyses
- add basic quantum espresso support
Refactors
- remove mamba support now that libmamba is default conda solver
- switch CI from mamba back to conda
Fixes
- fix bug where workers incorrectly grab substring tag matches (e.g. a worker submited with the tag
ex
would incorrectly grab jobs likeex-01
orex-02
)
0.15.1 (2024.01.11)
- refactor & fix bugs for
warren_lab
andbadelf
apps
v0.14.0 (2023.07.06)¶
Enhancements
- add
django-unicorn
to deps to enable dynamic fullstack web UIs - add ChemDoodle js/css to website headers for use elsewhere
- add "Example Scripts" section to doc website with several new scripts
- many updates to the web UI to accomodate molecular datasets and workflows
- add
simmate engine
commands to help with tags and different queues - add docs to help with simmate workers, clusters, and tagging
- add
simmate-vasp
command for common VASP utilities like testing config, plotting, and prepping inputs - add utilities to chunk larger than memory datafiles (csv, sdf, cifs, etc.)
Refactors
- VASP potcar references to "element mappings" is now standarized to "potcar mappings"
- refactor docs with new "Apps" section
- full refactor of
simmate engine
commands. many have been shortened/renamed - restrategized workflows that use output files from others. The
copy_previous_directory
input parameter has been removed and replaced with workflow attributes likeuse_previous_directory
andhas_prerequisite
, combined with an optionalprevious_directory
parameter.
Fixes
- fix bug where hyphens aren't allowed in the database name
- fix guide for DO database setup
- fix incorrect evolutionary search imports
- hide pymatgen POTCAR warnings
- fix github CI bug for MacOS being unstable
- fix bug for zombie jobs causing evolutionary search to hang
- fix premature triggering of frozen error
v0.13.0 (2023.03.06)¶
Enhancements
- add
relax_bulk
andrelax_endpoints
parameters to optionally turn off pre-relaxations in NEB - add CLEASE app for cluster expanison calculations (these workflows are highly experimental at the moment - so use with caution)
- update "bad-elf" workflow to accept an empty-atom template structure or a list of empty sites
- add python 3.11 support
simmate database reset
now supports Postgres (requires admin user)- docker images are now published to DockerHub and Github packages
Refactors
calculators
module is now theapps
module and terminology is changed throughout the repo- many dependencies are reworked to optional dependencies as all
apps
are now optional workflow_engine
module has been renamed toengine
to help shorten commands and import lines- rework CI to use mamba instead of conda
- pull out dependencies for some apps that are now optional
- reorganize
Incar
class and move some functionality to generalutilities
- NEB module is reorganized to help with building custom sets
Fixes
- fix site ordering in NEB supercell structures
- improve installation speed and guide users to conda alternatives like mamba
- clean up docs and fix several links
- apps are now registered to the web UI
Warning
The refactoring of simmate "apps" led to many breaking changes in the python API.
We strongly recommend clearing your ~/simmate/
directory, especially the
my_env-apps.yaml
file because app names have changed.
0.13.1 (2023.03.11)
- recover from
connection already closed
errors after long workflow runs - fix bug where
simmate database reset
fails when there is no databasepostgres
available - update django regression of
django.db.backends.postgresql_psycopg2
todjango.db.backends.postgresql
- fix bug where simmate cannot read vasp results due atypical number (e.g. -0.33328-312)
- fix bug where postgres cannot json serialize bs or dos results (int64 numbers)
- fix incorrect pointing of VASP potcars in matproj presets
- from
from_directory
method of theRelaxation
database class - fix HSE bandstructure and DOS kpoint file writing
0.13.2 (2023.03.20)
- fix pickling error for
workflow.run_cloud
command simmate.website.third_parties
module is now thedata_explorer
module. With this, you can now specify custom database tables to appear in the "Data" section for the web UI
v0.12.0 (2022.10.23)¶
Enhancements
- add structure creators for
ASE
,GASP
,PyXtal
,AIRSS
,CALYPSO
,USPEX
, andXtalOpt
as well as documentation for creators. - add
simmate version
command - changelog and update guide added to documentation website
- add
show-stats
,delete-finished
, anddelete-all
commands toworkflow-engine
- add
Cluster
base class + commands that allow submitting a steady-state cluster via subprocesses or slurm - add
started_at
,created_at
,total_time
, andqueue_time
columns toCalculation
tables - add
exlcude_from_archives
field to workflows to optionally delete files when compressing outputs to zip archives - various improvements added for evolutionary search workflows, such as parameter optimization, new output files, and website views
- add
Fingerprint
database table and integrate it withFingerprint
validator - support >2 element hull diargrams and complex chemical systems
Refactors
- optimize
get_series
method ofrelaxation.vasp.staged
- reorganize
selectors
module for evolutionary structure prediction
Fixes
- fix dynamic loading of toolkit structures from third-party databases
- fix race condition with workers and empty queues
- increases default query rate for
state.result()
to lessen database load
v0.11.0 (2022.09.10)¶
Enhancements
- REST API fields can now be specified directly with the
api_filters
attribute of anyDatabaseTable
class & fields from mix-ins are automatically added - add
archive_fields
attribute that sets the "raw data" for the database table & fields from mix-ins are automatically added - accept
TOML
input files in addition toYAML
- convergence plots and extras are now written for many workflow types (such as relaxations)
- when
use_database=True
, output files are automatically written and the workup method is directly paired with the database table. - NEB workflow now accepts parameters to tune how distinct pathways are determined, including the max pathway length and cutoffs at 1D percolation.
- add
MatplotlibFigure
andPlotlyFigure
classes to help with writing output files and also implementing these figures in the website UI - update website to include workflow calculator types and add API links
- custom projects and database tables are now registered with Simmate and a intro guide has been added
- continued updates for
structure-prediction
workflows - add inspection of methods for default input values and display them in metadata
Refactors
- the
website.core_components.filters
module has been absorbed into theDatabaseTable
class/module - yaml input for custom workflows now matches the python input format
- workup methods are largely depreciated and now database entries are returned when a workflow has
use_database=True
- several NEB input parameters have been renamed to accurate depict their meaning.
- customized workflow runs now save in the original database table under the "-custom" workflow name
structure_string
column renamed tostructure
to simplify api logic- clean up
toolkit.validators
module and establish fingerprint base class calculators
andworkflows
modules are now based on simmate apps
Fixes
- fix bug in windows dev env where
simmate run-server
fails to find python path - fix bug in
workflows explore
command where 'vasp' is the assumed calculator name - fix broken example code in custom workflow docs
- fix broken website links and workflow views
0.11.1 (2022.09.12)
- fix transaction error with workers on a PostGres backend
v0.10.0 (2022.08.29)¶
Enhancements
- add NEB base classes to inherit from for making new subflows
- improve formatting of logging and cli using
typer
andrich
- cli now supports auto-completion to help with long commands
- add
convergence_limit
parameter to evolutionary search that works alongsidelimit_best_survival
. This will absorb minor changes in energy with equivalent structures from prolonging the search. - add
ExtremeSymmetry
transformation to attempt symmetry reduction on disordered structure - account for structures in
fixed-composition
having fewer nsites than input becuase of symmetry reduction during relaxation. Also, addmin_structures_exact
parameter to ensure we have at least N structures with the expected number of sites - add experimental
variable-composition
(variable refers to nsites, not stoichiometry) andbinary-composition
evolutionary searches - allow custom workflows to run from yaml
- update MatProj data to new api, and add severl new columns for data (e.g. mag + band gap)
Refactors
- isolate optional dependencies so that our install is smaller
- remove click in favor of higher-level package (typer)
pre_standardize_structure
andpre_sanitize_structure
functionality is now merged in to astandardize_structure
parameter that accepts different mode.symmetry_tolerance
andangle_tolerance
parameters can also modify the symmetry analysis done.- metadata files are now numbered to allow multiple metadata files in the same directory
- refactor & clean up transformation module for readability
- remove
SimmateFuture
class and merge functionality intoWorkItem
- switch from pdoc to mkdocs for documentation and remove
get_doc_from_readme
. Code and doc organization are now decoupled. - rename run commands based on user preference. the
run
is nowrun-quick
.run-yaml
is nowrun
.run-cloud
now assumes a yaml input. - remove
tqdm
dependency in favor ofrich.progress
- refactor transformations to static methods
Fixes
- fix
module not found
error by adding ASE to dependencies - fix bug with postgres database trying to delete sqlite locally
- fix dask throwing errors with logging
- fix bug where
fixed-composition
searches fail to detect individuals that have been symmetrically reduced (and therefore have fewer nsites than expected) - fix evolutionary search failures when writing output files while files are opened/locked
- fix NEB workflows failing due to Walltime handler
- fix NEB workflows hints for
workup
failure due to missing start/end image folders
v0.9.0 (2022.08.17)¶
Enhancements
- improve the warning associated with workflow failure because of "command not found" issues
- workers now ignore and reset tasks that fail with "command not found". 2 workers failing with this error will result in the WorkItem being canceled
RandomWySites
can now generate wyckoff combinations lazily (or up front) depending on use case- add
simmate utilities
command group witharchive-old-runs
- add
start-cluster
command for starting many local workers - add
structure-prediction
workflows - add plotting/output utilities to
EvolutionarySearch
andrelaxation.vasp.staged
Refactors
- evolutionary search now delay creations, transformations, and validation until runtime (used to be at time of structure submission)
directory
,compress_ouput
, andrun_id
are now default input parameters for subclasses ofWorkflow
. If these are unused, therun_config
must include**kwargs
- add
isort
for organizing module imports throughout package
Fixes
- fixed when
source
is not being registered by several workflows - fix docker image for installing anaconda, blender, and simmate on ubuntu
v0.8.0 (2022.08.11)¶
Enhancements
- NEB workflows now accept parameters for changing supercell size and number of images used
- add HSE workflows for static energy, relaxation, and DOS/BS electronic states
- add NPT and MatProj molecular dynamics workflows
- add SCAN workflows for static energy and relaxation
- test files can be provided within zip files, fixing excessive line counts on git commits
- add simmate worker that can run "out-of-box" and requires no set up
- add logging for useful debugging and monitoring of workflows
- pinned dependencies to maximum versions and manage with dependabot
Refactors
- to simplify the creation of new workflows,
S3Task
is nowS3Workflow
and database tables are dynamically determined using the workflow name - workflows of a given type (e.g. relaxation or static-energy) now share database tables in order to simplify overall database architecture
- migrate from
os.path
topathlib.Path
throughout package - isolate prefect use to separate executors
- updated tutorials for new workflow engine and workers
- remove use of
setup.py
in favor ofpyproject.toml
v0.7.0 (2022.07.19)¶
Enhancements
- add guide for installing VASP v5 to Ubuntu v22.04 (@scott-materials, #183)
- add
simmate database load-remote-archives
command andload_remote_archives
utility that populates all tables fromdatabase.third_parties
- add
load_default_sqlite3_build
utility that downloads a pre-built database with all third-party data present. This is an alternative to callingload_all_remote_archives
if you are using sqlite3 and saves a significant amount of time for users. - standardize workflow naming. Note this breaks from python naming conventions for classes (#150)
- dynamically determine
register_kwargs
and rename property toparameters_to_register
- add full-run unittests that call workflows and vasp (without emulation)
- add walltime error handler that properly shuts down calculations when a SLURM job is about to expire
- add option to restart workflows from a checkpoint
- automatically build api documentation using github actions
Refactors
- refactor
start-worker
command to use prefect instead of the experimental django executor - remove experimental
workflow_engine.executor
- move contents of
configuration.django.database
todatabase.utilities
- upgraded to Prefect v2 ("Orion"). This involved the refactoring the entire
workflow_engine
module, and therefore the entire workflow library. (#185).
0.7.1 (2022.07.19)
- fix incorrect handling of prefect v2 futures by workflows
0.7.2 (2022.08.03)
- fix missing SVG files for web UI (#196).
0.7.3 (2022.08.04)
- fix incorrect passing of
source
in NEB all-paths workflow causing it to fail
v0.6.0 (2022.06.25)¶
Enhancements
- add
AflowPrototypes
to thedatabase.third_parties
module (only includes data distributed through pymatgen) - add new modules to
toolkit.structure_prediction
andtoolkit.creation
, including ones to provideknown
,substitution
, andprototype
based structures. - add
created_at
andupdated_at
columns to all database tables - check if there is a newer version of Simmate available and let the user know about the update
- add experimental
badelf
workflow for determining electride character - add
electronic-structure
workflow which carries out both DOS and BS calculations - add
database_obj
attribute to thetoolkit.Structure
base class that is dynamically set
Refactors
- standardize
database_table
attribute for workflows by mergingcalculation_table
andresult_table
attributes (#102) - removed use of
-s
,-c
, and-d
shortcuts from theworkflows
commands - refactor
relaxation/staged
workflow to run in single parent directory - refactor evolutionary search algorithm (alpha feature)
- condense where parsing/deserialization of workflow parameters occurs to the refactored the
load_input_and_register
task. Originally, this would occur in multiple places (e.g. in the CLI module before submission, in the workflow run_cloud method, in the LoadInputAndRegister task, etc.) and involved boilerplate code. (#173) - refactor experimental features
register_kwargs
andcustomized
workflows - refactor
LoadInputAndRegister
andSaveOutputTask
toload_input_and_register
andsave_result
Fixes
- fix import for
visualization.structure.blender
module (@bocklund, #180) - fix bug where
command
ordirectory
improperly passesNone
when they are not set in thesimmate workflows run
command - fix bug where
update_all_stabilities
grabs incomplete calculations (#177) - fix bug where SCF calculation is not completed before the non-SCF DOS or BS calculation and causes the workflows to fail (#171)
- fix bug for Bader workflow by registering the prebader workflow (#174)
- fix bug where
source
is not determined with yaml-file submissions (#172)
v0.5.0 (2022.05.30)¶
- update CI to test all OSs and pin pytest<7.1 as temporary fix for #162
- fix spelling typos in
keyword_modifiers
(@laurenmm, #165) - users can now apply their own unique keyword modifiers to Incars -- such as how we allow "__per_atom" or "__smart_ismear" tags on Incar settings. This change involved refactoring how
keyword_modifiers
are implemented for thevasp.inputs.Incar
class. Rather than static methods attached to the base class, modifiers are now dynamically applied using theadd_keyword_modifier
classmethod. - large update of
calculators.vasp.tasks
module where many new presets are reimplemented frompymatgen.io.vasp.sets
. This includes robust unit testing to confirm that generated inputs match between simmate and pymatgen (see #157 for a list of presets) - catch error with vasp freezing when
Brmix
handler switches to kerker mixing (@becca9835, #159)
v0.4.0 (2022.04.24)¶
- add
description_doc_short
+show_parameters
to workflows and use these to update the UI - add django-allauth dependency for account management and google/github sign-ins
- archive directory as
simmate_attempt_01.zip
whenever an error handler is triggered - depreciate the workflow parameter
use_prev_directory
in favor ofcopy_previous_directory
v0.3.0 (2022.04.19)¶
- add highly customizable VASP workflow
- add Bader analysis and ELF workflows
- update module readmes to warn of experimental features
- reorganize
toolkit
module
v0.2.0 (2022.04.15)¶
- start the CHANGELOG!
- refactor API views and add
SimmateAPIViewSet
class - refactor
simmate start-project
command and underlying methods - refactor
simmate workflow-engine run-cluster
command and underlying methods - continue outlining
file_converters
module
v0.1.4 (2022.04.12)¶
- web interface styling
- minor bug fixes
v0.0.0 (2022.03.28)¶
- initial release
- adding tests and docs