Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Testing Framework for atomistic models

Live demo: Binder

The purpose of this repository is to aid the testing of a large number of interatomic potentials for a variety of systems (materials or molecules). It uses the Atomic Simulation Environment (ASE) to glue things together. Although the relevant tests might differ between different systems, there are a lot of commonalities, e.g. calculating response of various crystal phases to deformation, or the evaluation of a series of test configurations. Coding up the tests in a model-agnostic way ensures that exactly the same tests are being performed for different models.

Structure of the framework

The following subdirectories comprise the testing framework:

  • share : routines that are frequently used in many different tests, e.g. relaxation of geometry, calculation of E-V curves, energy and force evaluations for a series of configurations
  • scripts : top level scripts that are used to initiate tests
  • tests : this is where the actual test routines are specified, different systems (e.g. materials) each having their own subdirectory

Any interatomic potential that can be instantiated as an ASE calculator can be tested. The potential models (each in its own directory) are kept in a directory structure separate from the testing-framework structure above. Examples are given under the example_run_dir directory. Here the first level subdirectories specify the test-system, and under each are models and run_dir subdirectories, the former contains the different potentials, the latter is where the tests are actually run and the test results appear. The test-system is indicated to the test scripts using the -l option. The models directory can be kept elsewhere and its location specified via an option. The test-system label is used to generate unique file names and directories when the tests are run.

Running tests

The following is an example of how tests are run. Here the test-system is called CSiGe, the model is Tersoff and the test is bulk_Si_diamond.

cd testing-framework/example_run_dir/CSiGe/run_dir
../../../scripts/run-model-test.py -l CSiGe Tersoff bulk_Si_diamond

This will produce three things:

  • The result of the test, in CSiGe-model-Tersoff-test-bulk_Si_diamond-properties.json
  • The log of the standard output during the test in CSiGe-model-Tersoff-test-bulk_Si_diamond.txt
  • A directory called run_CSiGe-model-Tersoff-test-bulk_Si_diamond in which the intermediate files generated during the test are kept, to aid debugging

Running the same test again will first check to see if the .json file exists, and if it does, the corresponding test is skipped. Some tests are conditional on others (such as bulk tests) having been run already, if they exit with such an error, just rerun them again once the prerequisite tests have run.

The run-all.py script will find all tests and all models under a given system and run all those without .json files present in the run_dir.

Specification of a model

An interatomic potential model is specified by a model.py file, which has to instantiate an ASE Calculator with the variable calculator and give a label to it in the variable name.

Specification of a test

Every test has to be called test.py and has to create a dictionary in a variable properties, and can be as simple as one line, e.g.

properties = lattice.do_lattice(os.path.abspath(os.path.dirname(__file__)), 'cubic')

This one above is using the do_lattice function from the share directory. This routine loads up a file called bulk.xyz from the same test directory (this is why the full path name of the test.py script has to be passed as the first argument), and calculates the Energy-Volume curve of that structure, and also computes the elastic constants.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages