diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 89bc9d62..66cfa19c 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -29,39 +29,40 @@ jobs: python-version: 3.8 targets: ./applications ./assets ./executables ./methods ./models ./templates - run-py-tests: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.7, 3.8] - - steps: - - name: Checkout this repository - uses: actions/checkout@v2 - with: - lfs: true - - - name: Checkout actions repository - uses: actions/checkout@v2 - with: - repository: Exabyte-io/actions - token: ${{ secrets.BOT_GITHUB_TOKEN }} - path: actions - - - name: Run python tests - uses: ./actions/py/test - with: - python-version: ${{ matrix.python-version }} - unit-test-directory: test/pythonml +# TODO: Uncomment when python tests are ready/re-added from `dev-python-ml-in-fixtures +# run-py-tests: +# runs-on: ubuntu-latest +# strategy: +# matrix: +# python-version: [3.7, 3.8] +# +# steps: +# - name: Checkout this repository +# uses: actions/checkout@v2 +# with: +# lfs: true +# +# - name: Checkout actions repository +# uses: actions/checkout@v2 +# with: +# repository: Exabyte-io/actions +# token: ${{ secrets.BOT_GITHUB_TOKEN }} +# path: actions +# +# - name: Run python tests +# uses: ./actions/py/test +# with: +# python-version: ${{ matrix.python-version }} +# unit-test-directory: test/pythonml run-js-tests: runs-on: ubuntu-latest strategy: matrix: node-version: - - 12.x - 14.x - 16.x + - 18.x steps: - name: Checkout this repository @@ -82,7 +83,9 @@ jobs: node-version: ${{ matrix.node-version }} publish-js-package: - needs: [run-py-tests, run-js-tests] + needs: + - run-js-tests +# - run-py-tests runs-on: ubuntu-latest if: github.ref_name == 'dev' diff --git a/models/espresso/5.2.1.yml b/models/espresso/5.2.1.yml index 9866ab23..757fd559 100644 --- a/models/espresso/5.2.1.yml +++ b/models/espresso/5.2.1.yml @@ -4,20 +4,26 @@ Default: pw_scf: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol pw_scf_bands_hse: - path: /pb/qm/dft/ksdft/hybrid?functional=hse06 pw_esm: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol pw_esm_relax: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol pw_nscf: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol pw_relax: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol pw_vc-relax: - path: /pb/qm/dft/ksdft/lda?functional=pz - path: /pb/qm/dft/ksdft/gga?functional=pbe + - path: /pb/qm/dft/ksdft/gga?functional=pbesol diff --git a/package-lock.json b/package-lock.json index b6a0bc8e..33716025 100644 --- a/package-lock.json +++ b/package-lock.json @@ -302,9 +302,9 @@ } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { @@ -580,9 +580,9 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -869,9 +869,9 @@ } }, "@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -886,16 +886,16 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "dependencies": { "@babel/helper-annotate-as-pure": { @@ -908,12 +908,12 @@ } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-plugin-utils": { @@ -923,19 +923,19 @@ "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } } @@ -951,9 +951,9 @@ } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -976,19 +976,19 @@ "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } } @@ -1203,9 +1203,9 @@ } }, "@babel/runtime-corejs2": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.22.11.tgz", - "integrity": "sha512-6z+Y7otDbBpPbg+eXnYVnrR7J3bq5Xp31QiGf7bJzbBOYUXLDGXnCdmxzH3xGxczTvaSXV/oeXFV4PNq3f64Sg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.23.4.tgz", + "integrity": "sha512-w10wlnER4ZJ60UlxQWiDhaD1nxHrJ3YgGK2V5iws7a07Q1+vQw4eL54kdtuPIadE3LkeG/Xtg+TEI5zWgjYEjw==", "dev": true, "requires": { "core-js": "^2.6.12", @@ -1337,9 +1337,9 @@ } }, "@exabyte-io/code.js": { - "version": "2023.8.31-0", - "resolved": "https://registry.npmjs.org/@exabyte-io/code.js/-/code.js-2023.8.31-0.tgz", - "integrity": "sha512-fOL8Yq5xPIViCHrY4GZ6uPpEywX4dY2vzfyw+AnGJSB8es+IuJDKs+6WjFvf2liCqMWsYoGaQIpfXDQjNhalhA==", + "version": "2023.11.22-0", + "resolved": "https://registry.npmjs.org/@exabyte-io/code.js/-/code.js-2023.11.22-0.tgz", + "integrity": "sha512-FKS3gUHimr3QA6V1hOoux1s6fafvjgbfCN9s45Ol6Qa3zdZLkUECJ20r4uGpHvg1ClFpB3BUL+cJU1kwlHjzJg==", "dev": true, "requires": { "@babel/cli": "7.16.0", @@ -1350,7 +1350,7 @@ "@babel/preset-react": "7.16.7", "@babel/register": "^7.16.0", "@babel/runtime-corejs3": "7.16.8", - "@exabyte-io/esse.js": "2023.8.31-0", + "@exabyte-io/esse.js": "2023.11.22-1", "@types/chai": "^4.3.5", "@types/crypto-js": "^4.1.1", "@types/js-yaml": "^4.0.5", @@ -1441,9 +1441,9 @@ "dev": true }, "@exabyte-io/esse.js": { - "version": "2023.8.31-0", - "resolved": "https://registry.npmjs.org/@exabyte-io/esse.js/-/esse.js-2023.8.31-0.tgz", - "integrity": "sha512-thSlEJ7ToUJg/y5tMLtzfMAWPU7IQ7H1NcYt+Y86F/MYBF3N+20jFJeohafLJ+OJe432LqBZPP7F/IRr4kD6fA==", + "version": "2023.11.22-1", + "resolved": "https://registry.npmjs.org/@exabyte-io/esse.js/-/esse.js-2023.11.22-1.tgz", + "integrity": "sha512-G4D9u+srCZWEoG4o9rXDL9VFT6BR6an4m1RwVOE2KkLKIftCyGxCWrlUAfRHh51ZOcP6LMzg1m4MQwwN8J0OBA==", "dev": true, "requires": { "@babel/cli": "7.16.0", @@ -1652,15 +1652,15 @@ "dev": true }, "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true }, "@types/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.1.tgz", + "integrity": "sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==", "dev": true }, "@types/glob": { @@ -1674,15 +1674,15 @@ } }, "@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/json5": { @@ -1692,9 +1692,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.197", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", - "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", "dev": true }, "@types/minimatch": { @@ -1704,16 +1704,19 @@ "dev": true }, "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, "@types/node": { - "version": "20.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", - "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==", - "dev": true + "version": "20.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz", + "integrity": "sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/prettier": { "version": "2.7.3", @@ -1722,15 +1725,15 @@ "dev": true }, "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", "dev": true }, "@types/react": { - "version": "18.2.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", - "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "version": "18.2.38", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", + "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -1739,9 +1742,9 @@ } }, "@types/react-jsonschema-form": { - "version": "1.7.8", - "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.8.tgz", - "integrity": "sha512-oFyNOa8VDSt1jGN4r+prTFD2hojZBsqLoTkRfo+XvANR3taLUeMJlGhtOP+hpi/k19OxpEb24TZciMmQyPZ9TA==", + "version": "1.7.12", + "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.12.tgz", + "integrity": "sha512-AueIjMySdH2uI92bBJYVJ/n6Wmrtai+7/ce6Fn4ThrJz5XGG7Jc1c0agktPCYfoiBunEw2hV8oIZdIke3LJIRQ==", "dev": true, "requires": { "@types/json-schema": "*", @@ -1749,15 +1752,15 @@ } }, "@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", "dev": true }, "@types/underscore": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.9.tgz", - "integrity": "sha512-M63wKUdsjDFUfyFt1TCUZHGFk9KDAa5JP0adNUErbm0U45Lr06HtANdYRP+GyleEopEoZ4UyBcdAC5TnW4Uz2w==", + "version": "1.11.15", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.15.tgz", + "integrity": "sha512-HP38xE+GuWGlbSRq9WrZkousaQ7dragtZCruBVMi0oX1migFZavZ3OROKHSkNp/9ouq82zrWtZpg18jFnVN96g==", "dev": true }, "@ungap/promise-all-settled": { @@ -1785,9 +1788,9 @@ "dev": true }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", "dev": true }, "aggregate-error": { @@ -2450,9 +2453,9 @@ "dev": true }, "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", "dev": true }, "csstype": { @@ -2535,6 +2538,43 @@ } } }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -3510,6 +3550,41 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -3541,6 +3616,47 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", @@ -3573,6 +3689,23 @@ } } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + } + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3867,6 +4000,12 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4142,12 +4281,52 @@ "dev": true }, "json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", + "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", "dev": true, "requires": { - "jsonify": "^0.0.1" + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } } }, "json-stable-stringify-without-jsonify": { @@ -5544,6 +5723,44 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + } + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -5946,9 +6163,9 @@ }, "dependencies": { "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true }, "diff": { @@ -6062,6 +6279,12 @@ "util-deprecate": "^1.0.2" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", diff --git a/package.json b/package.json index e7b031ed..136b2392 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "homepage": "https://github.com/Exabyte-io/application-flavors", "devDependencies": { "@exabyte-io/eslint-config": "^2022.11.17-0", - "@exabyte-io/code.js": "2023.8.31-0", + "@exabyte-io/code.js": "2023.11.22-0", "chai": "^4.3.4", "eslint": "^7.32.0", "eslint-config-airbnb": "^19.0.2", diff --git a/src/js/data/filter_trees.js b/src/js/data/filter_trees.js index 94de6f46..ccd1d5df 100644 --- a/src/js/data/filter_trees.js +++ b/src/js/data/filter_trees.js @@ -1,2 +1,2 @@ /* eslint-disable */ -module.exports = {"models":{"espresso":{"5.2.1":{"Default":{"pw.x":{"pw_scf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"pw_scf_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"pw_esm":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"pw_esm_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"pw_nscf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"pw_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"pw_vc-relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}}}},"exabyteml":{"0.2.0":{"Default":{"train":{"train":[{"regex":"\\/st\\/det\\/ml\\/.*"}]},"score":{"score":[{"regex":"\\/st\\/det\\/ml\\/.*"}]}}}},"nwchem":{"6.6":{"Default":{"nwchem":{"nwchem_total_energy":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=b3lyp"}]}}}},"vasp":{"5.3.5":{"Default":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}}},"5.4.4":{"Default":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Gamma":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST-Gamma":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST-Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}}}}},"methods":{"espresso":{"5.2.1":{"Default":{"pw.x":{"pw_scf":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/smearing/gaussian"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/(nc|us|paw)"},{"path":"/linalg/diag/none/davidson/none"}],"pw_scf_bands_hse":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/smearing/gaussian"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/(nc|us|paw)"},{"path":"/linalg/diag/none/davidson/none"}]}}}},"exabyteml":{"0.2.0":{"Default":{"train":{"train":[{"path":"/none/none/none/linear/least_squares"},{"path":"/none/none/none/linear/ridge"},{"path":"/none/none/none/kernel_ridge/least_squares"}]},"score":{"score":[{"path":"/none/none/none/linear/least_squares"},{"path":"/none/none/none/linear/ridge"},{"path":"/none/none/none/kernel_ridge/least_squares"}]}}}},"nwchem":{"6.6":{"Default":{"nwchem":{"nwchem_total_energy":[{"path":"/qm/wf/none/ao/pople?basisSlug=6-31G"}]}}}},"vasp":{"5.3.5":{"Default":{"vasp":{"vasp":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/psp/paw"},{"path":"/qm/wf/none/smearing/gaussian"},{"path":"/linalg/diag/none/davidson/none"}]}}}}}} \ No newline at end of file +module.exports = {"models":{"espresso":{"5.2.1":{"Default":{"pw.x":{"pw_scf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}],"pw_scf_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"pw_esm":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}],"pw_esm_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}],"pw_nscf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}],"pw_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}],"pw_vc-relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbesol"}]}}}},"exabyteml":{"0.2.0":{"Default":{"train":{"train":[{"regex":"\\/st\\/det\\/ml\\/.*"}]},"score":{"score":[{"regex":"\\/st\\/det\\/ml\\/.*"}]}}}},"nwchem":{"6.6":{"Default":{"nwchem":{"nwchem_total_energy":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=b3lyp"}]}}}},"vasp":{"5.3.5":{"Default":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}}},"5.4.4":{"Default":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Gamma":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST-Gamma":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}},"VTST-Non-collinear":{"vasp":{"vasp":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_bands":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_ncsf":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_bands_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_nscf_hse":[{"path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"}],"vasp_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_zpe":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_kpt_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_vc_relax_conv":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_initial":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}],"vasp_neb_final":[{"path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"path":"/pb/qm/dft/ksdft/gga?functional=pbe"}]}}}}},"methods":{"espresso":{"5.2.1":{"Default":{"pw.x":{"pw_scf":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/smearing/gaussian"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/(nc|us|paw)"},{"path":"/linalg/diag/none/davidson/none"}],"pw_scf_bands_hse":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/smearing/gaussian"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/(nc|us|paw)"},{"path":"/linalg/diag/none/davidson/none"}]}}}},"exabyteml":{"0.2.0":{"Default":{"train":{"train":[{"path":"/none/none/none/linear/least_squares"},{"path":"/none/none/none/linear/ridge"},{"path":"/none/none/none/kernel_ridge/least_squares"}]},"score":{"score":[{"path":"/none/none/none/linear/least_squares"},{"path":"/none/none/none/linear/ridge"},{"path":"/none/none/none/kernel_ridge/least_squares"}]}}}},"nwchem":{"6.6":{"Default":{"nwchem":{"nwchem_total_energy":[{"path":"/qm/wf/none/ao/pople?basisSlug=6-31G"}]}}}},"vasp":{"5.3.5":{"Default":{"vasp":{"vasp":[{"path":"/qm/wf/none/pw/none"},{"path":"/qm/wf/none/psp/paw"},{"path":"/qm/wf/none/smearing/gaussian"},{"path":"/linalg/diag/none/davidson/none"}]}}}}}} \ No newline at end of file diff --git a/test/pythonml/.gitattributes b/test/pythonml/.gitattributes deleted file mode 100644 index b0a438a9..00000000 --- a/test/pythonml/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -fixtures/** filter=lfs diff=lfs merge=lfs -text diff --git a/test/pythonml/README.md b/test/pythonml/README.md deleted file mode 100644 index 74d3b7bb..00000000 --- a/test/pythonml/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# PythonML Unit Tests - -This set of tests is configured using the `integration_configuration.yaml` file, which contains information for which -units are to be present in a test, and the order they're to be run in. It also contains general settings, such as where -the test fixtures are located, and which files need to be cleaned up when a test job is complete. - -## Test Configuration - -Tests are configured inside of the `integration_configuration.yaml` file. The following variables are defined therein: - -### `asset_path` - -Path to the folder where the python flavors are defined - -### `fixtures` - -An object with the following attributes: - -- `path` - Path to the fixtures folder -- `settings` - Name of the pre-rendered settings file used by the test suite. - -- Three variables, named `regression`, `classification`, and `clustering`. These handle configuration for the - regression, classification, and clustering tests respectively. They each have the following two attributes: - - - `training_set_name` - Name of the training dataset for the particular problem category - - - `predict_set_name` - Name of the dataset to be used for test predictions - -### `files_to_remove` - -A list of files and directories to be removed at the end of every test - -### `extensions_to_remove` - -A list of file extensions, and any file with these extensions will be removed at the end of every test - -### `unit_shortnames` - -For convenience, we shorten the names of the flavors a bit to aid in defining the tests. For example, we might call " -pyml:data_input:read_csv:pandas.pyi" instead "IO_readCSV" for brevity. The shortnames are organized by category. See -commentary in this section of the YAML file for more information. - -### `tests` - -This section is where the test configurations are actually defined. Each test must have a unique name, and is generally -named after the units contained in it. The `category` attribute describes the type of problem it performs: regression, -classification, or clustering. The `units_to_run` list contains, in orde, the units that will be run during the -workflow. - -## Creating New Tests - -To create a new test, add a new entry to the `tests` variable in `integration_configuration.yaml`. The name of the test -should be unique. It must have a category, and at least one unit to run. Units should always start with an `IO_readCSV` -unit. - -### Adding New Units - -If creating a test for a new type of unit (for example, if we did not have LASSO, and the current PR was hoping to add -LASSO), the `unit_shortnames` object must first be updated. Inside, the keys represent a shorthand for referring to the -unit. We might named our LASSO unit `REG_lasso`. The value of the key must be the name of the flavor's asset file. If -LASSO existed in a file named `pyml:model:lasso_regression:sklearn.pyi`, the key for LASSO would be "pyml:model: -lasso_regression:sklearn.pyi". Note that double quotes are required if the unit name has a colon (because of the YAML -standard). - -When adding new units, we recommend creating several tests to check different usage scenarios. For example, if a new -MinMax Scaler was added, at least three unit tests should be created: testing the case of `regrssion`, `classification`, -and `clustering.` See the other tests in the YALM file for known-working configurations. diff --git a/test/pythonml/base.py b/test/pythonml/base.py deleted file mode 100644 index 111933f0..00000000 --- a/test/pythonml/base.py +++ /dev/null @@ -1,129 +0,0 @@ -import os -import sys -import yaml -import importlib -import subprocess as sp -from shutil import rmtree, copy -from tempfile import mkdtemp -from unittest import TestCase -from functools import lru_cache - -from parameterized import parameterized - - -@lru_cache(maxsize=1) -def load_manifest(): - dirname = os.path.abspath(os.path.dirname(__file__)) - path = os.path.join( - dirname, "integration_configuration.yaml" - ) - with open(path, "r") as f: - return yaml.safe_load(f) - - -class BaseTest(TestCase): - subdir = "fixtures" - asset_dir = "../../assets/python/ml" - settings_basename = "settings.py" - category = "regression" - data_type = "scaled_data" - needs_data = False - - @staticmethod - def get_func_name(testcase_func, param_num, params): - args, _ = params - try: - name = args[0]["name"] - except (KeyError, TypeError): - name = args[0] - return "%s_%s_%s" % ( - testcase_func.__name__, - parameterized.to_safe_name(name), - param_num - ) - - @staticmethod - def get_workflow_flavors(category: str): - manifest = load_manifest() - flavor_map = manifest["unit_shortnames"] - flavors = [ - ({ - "name": name, - "flavors": [ - flavor_map[unit] for unit in test["units_to_run"] - ], - **test - },) for name, test in manifest["tests"].items() - if test["category"] == category - ] - return flavors - - @staticmethod - def reload_settings(): - import settings - importlib.reload(settings) - return settings - - @staticmethod - def run_process(flavor: str): - proc = sp.Popen( - (sys.executable, flavor), stdout=sp.PIPE, stderr=sp.PIPE - ) - out, err = proc.communicate() - if proc.returncode: - raise Exception(f"out={out}, err={err}") - - def relpath(self, basename: str) -> str: - dirname = os.path.abspath(os.path.dirname(__file__)) - return os.path.join(dirname, self.subdir, basename) - - def tmppath(self, basename: str) -> str: - return os.path.join(self.tmpdir, basename) - - def assetpath(self, basename: str) -> str: - dirname = os.path.abspath(os.path.dirname(__file__)) - return os.path.join(dirname, self.asset_dir, basename) - - def copy_asset(self, flavor: str): - # This file is a Jinja template so copy a pre-rendered mock instead - if flavor == "pyml:data_input:train_test_split:sklearn.pyi": - copy(self.relpath("train_test_split.py"), self.tmppath(flavor)) - else: - copy(self.assetpath(flavor), self.tmppath(flavor)) - - def copy_data(self): - """ - Copy data files into tmpdir for processing. - """ - if self.category == "clustering": - training_file = "clustering_blobs.csv" - predict_file = "clustering_blobs.csv" - else: - training_file = f"{self.category}_training_data.csv" - predict_file = f"{self.category}_predict_data.csv" - copy(self.relpath(training_file), self.tmppath("data_to_train_with.csv")) - copy(self.relpath(predict_file), self.tmppath("data_to_predict_with.csv")) - - def setUp(self): - self.orig_dir = os.getcwd() - self.tmpdir = mkdtemp() - os.chdir(self.tmpdir) - sys.path.insert(0, self.tmpdir) - with open(self.relpath(self.settings_basename), 'r') as template, \ - open(self.tmppath(self.settings_basename), 'w') as settings: - settings.write( - template.read() - .replace("PROBLEM_CATEGORY_HERE", self.category) - .replace("BASE_DIR = None", f'BASE_DIR = "{self.tmpdir}"') - ) - settings = self.reload_settings() - self.context = settings.Context() - if self.needs_data: - self.copy_data() - - def tearDown(self): - del sys.modules["settings"] - sys.path.remove(self.tmpdir) - rmtree(self.tmpdir) - os.chdir(self.orig_dir) - diff --git a/test/pythonml/fixtures/classification_pkls/model_data/test_probabilities.pkl b/test/pythonml/fixtures/classification_pkls/model_data/test_probabilities.pkl deleted file mode 100644 index 66cd2bb6..00000000 --- a/test/pythonml/fixtures/classification_pkls/model_data/test_probabilities.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab072b659863c1fb60a8fcaf29332f72585f5f6a0b5484cdff9e9c747e3813f6 -size 32153 diff --git a/test/pythonml/fixtures/classification_pkls/model_data/test_target.pkl b/test/pythonml/fixtures/classification_pkls/model_data/test_target.pkl deleted file mode 100644 index b7d6771b..00000000 --- a/test/pythonml/fixtures/classification_pkls/model_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:105a6efbf17f4e1442c38cc71b0bf57ccfe7b85710daca8197cd277922344ebc -size 16153 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/descriptors.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/descriptors.pkl deleted file mode 100644 index 3dcc0cb9..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cbaf5e8babaa662b453a9aecfcd733c5e44567228ef33a6ce1bb7f674d8df96 -size 1600162 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/label_encoder.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/label_encoder.pkl deleted file mode 100644 index 961c4ba7..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/label_encoder.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9eb762c57e4acdc913c242fb5edcfdbd148eb6e8717e9fd6422e43591961b81d -size 258 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/test_descriptors.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/test_descriptors.pkl deleted file mode 100644 index 7c4b1b13..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/test_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a2f028c3a0663f9372d296581e69b182e6d2aef7576df497093e4efa70ddfcd2 -size 320162 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/test_target.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/test_target.pkl deleted file mode 100644 index f4a127b6..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f177529b7c27cd845a285c8f4bc70d4900814296ec56004018f85e5de4c6cca2 -size 16153 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/train_descriptors.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/train_descriptors.pkl deleted file mode 100644 index 6baa39be..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/train_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72e18eddf8aff6f8a04b539c463ef6cded3c2d94cdff2ce699241d03bb1e9b2d -size 1280162 diff --git a/test/pythonml/fixtures/classification_pkls/scaled_data/train_target.pkl b/test/pythonml/fixtures/classification_pkls/scaled_data/train_target.pkl deleted file mode 100644 index 133b3ca4..00000000 --- a/test/pythonml/fixtures/classification_pkls/scaled_data/train_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d0150ebc30821b3d49e034cacd4de9b3d18e96c58a9cd2db16856ec1248a5fa -size 64153 diff --git a/test/pythonml/fixtures/classification_predict_data.csv b/test/pythonml/fixtures/classification_predict_data.csv deleted file mode 100644 index 783d234f..00000000 --- a/test/pythonml/fixtures/classification_predict_data.csv +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d3e9cb9010f992dff390df7444e2d4c0b864bf24d3c74f47a379eb19fc66650 -size 5099144 diff --git a/test/pythonml/fixtures/classification_training_data.csv b/test/pythonml/fixtures/classification_training_data.csv deleted file mode 100644 index 1174c924..00000000 --- a/test/pythonml/fixtures/classification_training_data.csv +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c3980b9dc08e6e666bcb18404a21e57d19247166d70f57935e385f7f5235a04 -size 5349151 diff --git a/test/pythonml/fixtures/clustering_blobs.csv b/test/pythonml/fixtures/clustering_blobs.csv deleted file mode 100644 index e3dc1dfd..00000000 --- a/test/pythonml/fixtures/clustering_blobs.csv +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9766e07e9d9e1ac1d08f73d57265c6a171fd9afe1bdf9ce77b63e8bf59ca562c -size 102189 diff --git a/test/pythonml/fixtures/clustering_pkls/model_data/descriptor_scaler.pkl b/test/pythonml/fixtures/clustering_pkls/model_data/descriptor_scaler.pkl deleted file mode 100644 index d7d603fd..00000000 --- a/test/pythonml/fixtures/clustering_pkls/model_data/descriptor_scaler.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bd5f59f1bf0f08dd859237a4c37021bfcc40ab67d63f6dc00720de9b4b69d44 -size 546 diff --git a/test/pythonml/fixtures/clustering_pkls/model_data/test_descriptors.pkl b/test/pythonml/fixtures/clustering_pkls/model_data/test_descriptors.pkl deleted file mode 100644 index 6697806f..00000000 --- a/test/pythonml/fixtures/clustering_pkls/model_data/test_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:192ccbb38c5d7f938f2ea073a8f88d790ff745b12e104b6c5efb81e30dc71025 -size 6552 diff --git a/test/pythonml/fixtures/clustering_pkls/model_data/test_labels.pkl b/test/pythonml/fixtures/clustering_pkls/model_data/test_labels.pkl deleted file mode 100644 index 29b78b15..00000000 --- a/test/pythonml/fixtures/clustering_pkls/model_data/test_labels.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:613fc5c92c3b915adad87f801fe41d84af41047c0aad2b1d0b299843a8ff4b05 -size 950 diff --git a/test/pythonml/fixtures/clustering_pkls/model_data/train_descriptors.pkl b/test/pythonml/fixtures/clustering_pkls/model_data/train_descriptors.pkl deleted file mode 100644 index 71fed429..00000000 --- a/test/pythonml/fixtures/clustering_pkls/model_data/train_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:498429f9cb50aaac1cba6d3c45046a92921e6102aed377da21553663c2180b26 -size 25753 diff --git a/test/pythonml/fixtures/clustering_pkls/model_data/train_labels.pkl b/test/pythonml/fixtures/clustering_pkls/model_data/train_labels.pkl deleted file mode 100644 index bd9e785c..00000000 --- a/test/pythonml/fixtures/clustering_pkls/model_data/train_labels.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f17bfd4ec79b02cca2ce41882c0974b9e1b27c8f7b3c2e2227a9e28f54e31eed -size 3351 diff --git a/test/pythonml/fixtures/clustering_pkls/scaled_data/descriptors.pkl b/test/pythonml/fixtures/clustering_pkls/scaled_data/descriptors.pkl deleted file mode 100644 index 3d3d7a41..00000000 --- a/test/pythonml/fixtures/clustering_pkls/scaled_data/descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:666ed99822e8e6065eca3e6a24d264d0c249d11fd0482afa0806e8cfe8ad188d -size 32153 diff --git a/test/pythonml/fixtures/clustering_pkls/scaled_data/test_descriptors.pkl b/test/pythonml/fixtures/clustering_pkls/scaled_data/test_descriptors.pkl deleted file mode 100644 index 62f83105..00000000 --- a/test/pythonml/fixtures/clustering_pkls/scaled_data/test_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f461f4732e1632c1324646c689c31e6372f030873fab8f3876dbbc44208b0c39 -size 6552 diff --git a/test/pythonml/fixtures/clustering_pkls/scaled_data/test_target.pkl b/test/pythonml/fixtures/clustering_pkls/scaled_data/test_target.pkl deleted file mode 100644 index 10d33f32..00000000 --- a/test/pythonml/fixtures/clustering_pkls/scaled_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c3404ee37279b5b6b5735c58ddcf448453586998a5559f975303deb3976bafb -size 1752 diff --git a/test/pythonml/fixtures/clustering_pkls/scaled_data/train_descriptors.pkl b/test/pythonml/fixtures/clustering_pkls/scaled_data/train_descriptors.pkl deleted file mode 100644 index 7aaabcdf..00000000 --- a/test/pythonml/fixtures/clustering_pkls/scaled_data/train_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26c8ea0b5bbceb32c8e83180a66681b58fa2c07ab0f6e06ea7c85d6f4c2fadb5 -size 25753 diff --git a/test/pythonml/fixtures/clustering_pkls/scaled_data/train_target.pkl b/test/pythonml/fixtures/clustering_pkls/scaled_data/train_target.pkl deleted file mode 100644 index 8802d2b3..00000000 --- a/test/pythonml/fixtures/clustering_pkls/scaled_data/train_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31b48b15680c48b877bf578a23fb2f7674e4f953c4187af5e8416a314a7ae61b -size 6553 diff --git a/test/pythonml/fixtures/regression_pkls/model_data/target_scaler.pkl b/test/pythonml/fixtures/regression_pkls/model_data/target_scaler.pkl deleted file mode 100644 index 0f721e31..00000000 --- a/test/pythonml/fixtures/regression_pkls/model_data/target_scaler.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e491830d90f43b390f55236345166808a9d7647e5a0910665eb779fcf6a2254f -size 474 diff --git a/test/pythonml/fixtures/regression_pkls/model_data/test_predictions.pkl b/test/pythonml/fixtures/regression_pkls/model_data/test_predictions.pkl deleted file mode 100644 index b5524d69..00000000 --- a/test/pythonml/fixtures/regression_pkls/model_data/test_predictions.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:23b4ed354b75092cacb5fee4b650a1d1390fd7c8eac5c25b2b0c63f03ba0438b -size 16153 diff --git a/test/pythonml/fixtures/regression_pkls/model_data/test_target.pkl b/test/pythonml/fixtures/regression_pkls/model_data/test_target.pkl deleted file mode 100644 index c3977118..00000000 --- a/test/pythonml/fixtures/regression_pkls/model_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcab44124052d7c6ad4af6d0993caea4c23f296e45fe9f15aa0e8bafaf774349 -size 16153 diff --git a/test/pythonml/fixtures/regression_pkls/model_data/train_predictions.pkl b/test/pythonml/fixtures/regression_pkls/model_data/train_predictions.pkl deleted file mode 100644 index a7949709..00000000 --- a/test/pythonml/fixtures/regression_pkls/model_data/train_predictions.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12f347b4312c288dae7ed58798567934463bc31ba132e0ac1cbb93b6844a20c3 -size 64153 diff --git a/test/pythonml/fixtures/regression_pkls/model_data/train_target.pkl b/test/pythonml/fixtures/regression_pkls/model_data/train_target.pkl deleted file mode 100644 index 1fe35888..00000000 --- a/test/pythonml/fixtures/regression_pkls/model_data/train_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d83c7597ce0f356ed5141d9443dedcc334de5c598f211f83f6b1ca02eccf11e9 -size 64153 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/descriptor_scaler.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/descriptor_scaler.pkl deleted file mode 100644 index 7f562daa..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/descriptor_scaler.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd533ad9004207005eac1da19246ef49961aef7bf89aa82de002ffe086e0f49b -size 546 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/descriptors.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/descriptors.pkl deleted file mode 100644 index 02161df3..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dafefa9275401fba86a7d3ae977d219936c8ceb7ececafdbea96ad37b2440900 -size 320162 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/target_scaler.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/target_scaler.pkl deleted file mode 100644 index 0f721e31..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/target_scaler.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e491830d90f43b390f55236345166808a9d7647e5a0910665eb779fcf6a2254f -size 474 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/test_descriptors.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/test_descriptors.pkl deleted file mode 100644 index d82a62c9..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/test_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56d385ae36b1ba7b656485fd8b6650b23db20baa762ddc86120bc0b48da57250 -size 64153 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/test_target.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/test_target.pkl deleted file mode 100644 index 9febc640..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3dbf28d7ac39785eba4d4bfb2ec670aaf7575df2cab591a2d1b337fbf2668597 -size 16153 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/train_descriptors.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/train_descriptors.pkl deleted file mode 100644 index d73a4127..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/train_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cbf56b19704cfec99a60862a12bb51d52a209dc4e4c284fc4bf6d2d010512024 -size 256162 diff --git a/test/pythonml/fixtures/regression_pkls/scaled_data/train_target.pkl b/test/pythonml/fixtures/regression_pkls/scaled_data/train_target.pkl deleted file mode 100644 index 72279c4c..00000000 --- a/test/pythonml/fixtures/regression_pkls/scaled_data/train_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:027244baf62821532d5d275cf894ea844c44aec618065d7f02418353334cf1e1 -size 64153 diff --git a/test/pythonml/fixtures/regression_pkls/unscaled_data/descriptors.pkl b/test/pythonml/fixtures/regression_pkls/unscaled_data/descriptors.pkl deleted file mode 100644 index 59a402c7..00000000 --- a/test/pythonml/fixtures/regression_pkls/unscaled_data/descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6dd9457ac01a3a4e3e22ea0c23f556b0b6ebc9a0a8bd80db2758163460c1713d -size 320162 diff --git a/test/pythonml/fixtures/regression_pkls/unscaled_data/test_descriptors.pkl b/test/pythonml/fixtures/regression_pkls/unscaled_data/test_descriptors.pkl deleted file mode 100644 index 6689995f..00000000 --- a/test/pythonml/fixtures/regression_pkls/unscaled_data/test_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:106cca8ca5164d2241f3a1bb88459da9eb3abdca00c6813b2be02caa882becb5 -size 64153 diff --git a/test/pythonml/fixtures/regression_pkls/unscaled_data/test_target.pkl b/test/pythonml/fixtures/regression_pkls/unscaled_data/test_target.pkl deleted file mode 100644 index b6bbdab4..00000000 --- a/test/pythonml/fixtures/regression_pkls/unscaled_data/test_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8503348395bde305ddfbe1105d26bafc2845a3fe20532e85356848fa7b1e514 -size 16153 diff --git a/test/pythonml/fixtures/regression_pkls/unscaled_data/train_descriptors.pkl b/test/pythonml/fixtures/regression_pkls/unscaled_data/train_descriptors.pkl deleted file mode 100644 index d7b38359..00000000 --- a/test/pythonml/fixtures/regression_pkls/unscaled_data/train_descriptors.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e97ae63cc1d0ce105270548fb1a93254beb6b1d7ac1fef21cf9fd1391fa62d65 -size 256162 diff --git a/test/pythonml/fixtures/regression_pkls/unscaled_data/train_target.pkl b/test/pythonml/fixtures/regression_pkls/unscaled_data/train_target.pkl deleted file mode 100644 index f8f3d390..00000000 --- a/test/pythonml/fixtures/regression_pkls/unscaled_data/train_target.pkl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f503e0f756132b6881269b9a0c71e7eb83bdd4233de4a916bf339d26bda14c85 -size 64153 diff --git a/test/pythonml/fixtures/regression_predict_data.csv b/test/pythonml/fixtures/regression_predict_data.csv deleted file mode 100644 index a2d1c891..00000000 --- a/test/pythonml/fixtures/regression_predict_data.csv +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:91c10f368f397b8fc9fa20e9f40380f00e7e8d7fa8e651c61dbe87a7815f5549 -size 1019924 diff --git a/test/pythonml/fixtures/regression_training_data.csv b/test/pythonml/fixtures/regression_training_data.csv deleted file mode 100644 index 70b85e43..00000000 --- a/test/pythonml/fixtures/regression_training_data.csv +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf113164d91d9808d2b1a6b49f8bdb357f85345ff4e529e2967e173ce40b9360 -size 1274903 diff --git a/test/pythonml/fixtures/settings.py b/test/pythonml/fixtures/settings.py deleted file mode 100644 index 97abfbb8..00000000 --- a/test/pythonml/fixtures/settings.py +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6a4db78e2f8e423955256658319a5ec4781fa096062d9399641f98a282d09ec -size 7943 diff --git a/test/pythonml/fixtures/train_test_split.py b/test/pythonml/fixtures/train_test_split.py deleted file mode 100644 index cf2493ed..00000000 --- a/test/pythonml/fixtures/train_test_split.py +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:27ae9595f22a3c2978712e22edfac66d2a09b31d403ec7e72daa8758a1ee2b4a -size 2119 diff --git a/test/pythonml/flavor.py b/test/pythonml/flavor.py deleted file mode 100644 index 1da904cd..00000000 --- a/test/pythonml/flavor.py +++ /dev/null @@ -1,224 +0,0 @@ -import os -import operator - -import numpy as np -import pandas as pd - -from base import BaseTest - - -class BaseFlavorTest(BaseTest): - """ - This class performs unit tests for the model flavors - """ - needs_data = True - - def set_to_predict_phase(self): - with open(self.tmppath(self.settings_basename), "r") as settings: - contents = settings.read() - with open(self.tmppath(self.settings_basename), "w") as settings: - settings.write( - contents.replace( - "is_workflow_running_to_predict = False", - "is_workflow_running_to_predict = True", - ) - ) - - def assert_preprocessing_success(self, operation: str, data: np.ndarray): - if operation not in [ - "min_max_scaler", - "standardization", - "remove_missing", - "remove_duplicates", - ]: - print(f"scaler", operation, "not validated") - return - if operation == "min_max_scaler": - for col in data.T: - self.assertAlmostEqual(1.0, np.amax(col)) - self.assertAlmostEqual(0.0, np.amin(col)) - if operation == "standardization": - means = data.mean(axis=0) - for mean in means: - self.assertAlmostEqual(0.0, mean) - stdevs = data.std(axis=0) - for stdev in stdevs: - self.assertAlmostEqual(1.0, stdev) - if operation == "remove_missing": - df = pd.DataFrame(data) - self.assertFalse(df.isnull().values.any()) - if operation == "remove_duplicates": - df = pd.DataFrame(data) - self.assertFalse(df.duplicated().any()) - - def assert_training_success(self): - settings = self.reload_settings() - if self.category not in ["regression", "classification"]: - print(f"category {self.category} not validated") - return - if self.category == "regression": - compare = operator.le - threshold = 20 - result = "RMSE" - mutate = None - else: - compare = operator.ge - threshold = 0.6 - result = "confusion_matrix" - mutate = lambda val: (val.diagonal() / value.sum(axis=0)).all() - with settings.context as context: - value = context.load(result) - if mutate is not None: - value = mutate(value) - self.assertTrue(compare(value, threshold)) - - def assert_predicting_success(self): - self.assertTrue(os.path.isfile(self.tmppath("predictions.csv"))) - - def assert_postprocessing_success(self, pngs: list): - for png in pngs: - self.assertTrue(os.path.isfile(self.tmppath(png))) - - def get_pickle_file_names(self, data_type: str) -> list: - names = [ - "train_descriptors", - "test_descriptors", - "train_target", - "test_target", - "descriptors", - "label_encoder", - ] - return { - "model_data": { - "regression": [ - "train_predictions", - "test_predictions", - "train_target", - "test_target", - "target_scaler", - ], - "classification": [ - "test_target", - "test_probabilities", - ], - "clustering": [ - "train_descriptors", - "test_descriptors", - "train_labels", - "test_labels", - "descriptor_scaler", - ], - }, - "scaled_data": { - "regression": [ - "train_descriptors", - "test_descriptors", - "train_target", - "test_target", - "descriptors", - "target_scaler", - "descriptor_scaler" - ] - } - }.get(data_type, {}).get(self.category, names) - - def set_pickle_fixtures_path_in_context_object(self, data_type: str): - settings = self.reload_settings() - with settings.context as context: - pickle_files = self.get_pickle_file_names(data_type) - context.context_paths.update( - { - pickle_file: self.relpath( - "{}_pkls/{}/{}.pkl".format( - self.category, data_type, pickle_file - ) - ) - for pickle_file in pickle_files - } - ) - - def parameterized_setup(self, flavor: str): - if flavor.startswith("pyml:pre_processing:"): - data_type = "unscaled_data" - test_modes = ["preprocessing"] - elif flavor.startswith("pyml:model:"): - data_type = "scaled_data" - test_modes = ["training", "predicting"] - elif flavor.startswith("pyml:post_processing:"): - data_type = "model_data" - test_modes = ["postprocessing"] - # raise an UndefinedError if not recognized - self.set_pickle_fixtures_path_in_context_object(data_type) - self.copy_asset(flavor) - return test_modes - - def perturb_data(self, flavor: str): - settings = self.reload_settings() - data = None - if "remove_missing" in flavor: - data = pd.read_csv(settings.datafile) - data.loc[0, "x1"] = np.nan - data.loc[1, "target"] = np.nan - elif "remove_duplicates" in flavor: - data = pd.read_csv(settings.datafile) - data = data.append(data.tail(1), ignore_index=True) - if data is not None: - with settings.context as context: - context.save(data.iloc[:, -1], "train_target") - context.save(data.iloc[:, :-1], "train_descriptors") - context.save(data.iloc[:, -1], "test_target") - context.save(data.iloc[:, :-1], "test_descriptors") - - def load_train_test_targets_descriptors(self, operation: str): - settings = self.reload_settings() - if operation in ["min_max_scaler", "standardization"]: - return ( - settings.context.load("train_target"), - settings.context.load("train_descriptors"), - ) - return ( - settings.context.load("train_target"), - settings.context.load("train_descriptors"), - settings.context.load("test_target"), - settings.context.load("test_descriptors"), - ) - - def do_flavor(self, flavor, mode, kws): - """ - This function runs each flavor test whether in training or predict mode. - - Args: - flavor (str): name of the python model flavor file in assets - mode (str): one of ['training', 'predicting', 'preprocessing', 'postprocessing'] - kws (dict): keyword args to pass to assertion method - """ - self.perturb_data(flavor) - self.run_process(flavor) - assertion = getattr(self, f"assert_{mode}_success") - if mode == "preprocessing": - operation = flavor.split(":")[2] - all_data = self.load_train_test_targets_descriptors(operation) - for data in all_data: - kws.update({"data": data, "operation": operation}) - assertion(**kws) - else: - assertion(**kws) - - def run_flavor(self, flavor: str, kws = None): - test_modes = self.parameterized_setup(flavor) - for mode in test_modes: - if mode == "predicting": - self.set_to_predict_phase() - self.do_flavor(flavor, mode, kws or {}) - - def run_workflow(self, test_params): - for flavor in test_params["flavors"]: - self.copy_asset(flavor) - self.run_process(flavor) - if self.plot_unit in test_params["units_to_run"]: - self.assert_postprocessing_success([self.plot_name]) - self.assert_training_success() - self.set_to_predict_phase() - for flavor in test_params["flavors"]: - self.run_process(flavor) - self.assert_predicting_success() diff --git a/test/pythonml/integration_configuration.yaml b/test/pythonml/integration_configuration.yaml deleted file mode 100644 index 87cb92ac..00000000 --- a/test/pythonml/integration_configuration.yaml +++ /dev/null @@ -1,253 +0,0 @@ -# General test configuration options - -# Python files will be copied from this directory -asset_path: ../../assets/python/ml/ - -# Specific assets that are needed for the test (such as a pre-rendered settings.py) -fixtures: - path: "fixtures" - settings: settings.py - regression: - training_set_name: regression_training_data.csv - predict_set_name: regression_predict_data.csv - classification: - training_set_name: classification_training_data.csv - predict_set_name: classification_predict_data.csv - clustering: - training_set_name: clustering_blobs.csv - predict_set_name: clustering_blobs.csv - -# Specific files and directories to remove during test cleanup -files_to_remove: - - settings.py - - .job_context - -# Specific extensions to remove during test cleanup -extensions_to_remove: - - .csv - - .png - - .pyi - -# ============================================================================ -# Shorthand definitions for the various flavors we've made so far. Used in the "Test Cases" document below. -# Naming convention is _ -# -# Prefixes below: -# IO - I/O -# PRE - Pre-Processing -# REG - Regression -# CLS - Classification -# UNS - Unsupervised -# POS - Post-Processing -# -# The short strings for files are generally based on their name. For example: -# ttSplit = train_test_split -# minMaxScale = min_max_scaler -# kernelRidge = kernelized_ridge_regression -# gradBoostTree = gradboosted_trees_regression -unit_shortnames: - # I/O Units - IO_readCSV: "pyml:data_input:read_csv:pandas.pyi" - IO_ttSplit: "pyml:data_input:train_test_split:sklearn.pyi" - - # Pre-Processors - PRE_minMaxScale: "pyml:pre_processing:min_max_scaler:sklearn.pyi" - PRE_dropDupes: "pyml:pre_processing:remove_duplicates:pandas.pyi" - PRE_dropMissing: "pyml:pre_processing:remove_missing:pandas.pyi" - PRE_standScale: "pyml:pre_processing:standardization:sklearn.pyi" - - # Regressors - REG_adaBoostTree: "pyml:model:adaboosted_trees_regression:sklearn.pyi" - REG_bagTree: "pyml:model:bagged_trees_regression:sklearn.pyi" - REG_gradBoostTree: "pyml:model:gradboosted_trees_regression:sklearn.pyi" - REG_ExtremegradBoostTree: "pyml:model:extreme_gradboosted_trees_regression:sklearn.pyi" - REG_kernelRidge: "pyml:model:kernel_ridge_regression:sklearn.pyi" - REG_lasso: "pyml:model:lasso_regression:sklearn.pyi" - REG_mlp: "pyml:model:multilayer_perceptron_regression:sklearn.pyi" - REG_randomForest: "pyml:model:random_forest_regression:sklearn.pyi" - REG_RidgeReg: "pyml:model:ridge_regression:sklearn.pyi" - - # Classifiers - CLS_randomForest: "pyml:model:random_forest_classification:sklearn.pyi" - CLS_gradBoostTree: "pyml:model:gradboosted_trees_classification:sklearn.pyi" - CLS_ExtremegradBoostTree: "pyml:model:extreme_gradboosted_trees_classification:sklearn.pyi" - - # Unsupervised Learners - UNS_kMeans: "pyml:model:k_means_clustering:sklearn.pyi" - - # Post-Processors - POS_plotParity: "pyml:post_processing:parity_plot:matplotlib.pyi" - POS_plotClusters: "pyml:post_processing:pca_2d_clusters:matplotlib.pyi" - POS_plotROC: "pyml:post_processing:roc_curve:sklearn.pyi" - -# ============================================================================ -# Test cases -# Each key represents a different test name -# Each value underneath the key represents a shorthand for a file (see above) -# Scripts wil be executed in the exact sequence that they are given in - -tests: - # Regression - - Reg_ReadCSV_MinMax_RidgeReg_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_minMaxScale - - REG_RidgeReg - - POS_plotParity - - - Reg_ReadCSV_MinMax_RemoveDupes_RandomForest_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_minMaxScale - - PRE_dropDupes - - REG_randomForest - - POS_plotParity - - Reg_ReadCSV_MinMax_RemoveMissing_MLP_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_minMaxScale - - PRE_dropMissing - - REG_mlp - - POS_plotParity - - Reg_ReadCSV_Standardize_LASSO_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_standScale - - REG_lasso - - POS_plotParity - - Reg_ReadCSV_TrainTest_Standardize_KernelizedRidge_Parity: - category: regression - units_to_run: - - IO_readCSV - - IO_ttSplit - - PRE_standScale - - REG_kernelRidge - - POS_plotParity - - Reg_ReadCSV_Standardize_GradientBoostedTrees_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_standScale - - REG_gradBoostTree - - POS_plotParity - - Reg_ReadCSV_GradientBoostedTrees_Parity: - category: regression - units_to_run: - - IO_readCSV - - REG_gradBoostTree - - POS_plotParity - - Reg_ReadCSV_Standardize_ExtremeGradientBoostedTrees_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_standScale - - REG_ExtremegradBoostTree - - POS_plotParity - - Reg_ReadCSV_TrainTest_MinMax_BaggedTrees_Parity: - category: regression - units_to_run: - - IO_readCSV - - IO_ttSplit - - PRE_minMaxScale - - REG_bagTree - - POS_plotParity - - Reg_ReadCSV_MinMax_AdaptiveBoostedTrees_Parity: - category: regression - units_to_run: - - IO_readCSV - - PRE_minMaxScale - - REG_adaBoostTree - - POS_plotParity - - Reg_ReadCSV_TrainTest_MinMax_MLP_Parity: - category: regression - units_to_run: - - IO_readCSV - - IO_ttSplit - - PRE_minMaxScale - - REG_mlp - - POS_plotParity - - # Classification - Cls_ReadCSV_TrainTest_MinMax_RF_ROC: - category: classification - units_to_run: - - IO_readCSV - - IO_ttSplit - - PRE_minMaxScale - - CLS_randomForest - - POS_plotROC - - Cls_ReadCSV_DropDupes_MinMax_RF_ROC: - category: classification - units_to_run: - - IO_readCSV - - PRE_dropDupes - - PRE_minMaxScale - - CLS_randomForest - - POS_plotROC - - Cls_ReadCSV_StandScale_RF_ROC: - category: classification - units_to_run: - - IO_readCSV - - PRE_standScale - - CLS_randomForest - - POS_plotROC - - Cls_ReadCSV_StandScale_GradientBoostedClassifier_ROC: - category: classification - units_to_run: - - IO_readCSV - - PRE_standScale - - CLS_gradBoostTree - - POS_plotROC - - Cls_ReadCSV_StandScale_ExtremeGradientBoostedClassifier_ROC: - category: classification - units_to_run: - - IO_readCSV - - PRE_standScale - - CLS_ExtremegradBoostTree - - POS_plotROC - - # Clustering - Uns_ReadCSV_TrainTest_MinMax_KMeans_ClusterPlot: - category: clustering - units_to_run: - - IO_readCSV - - IO_ttSplit - - PRE_minMaxScale - - UNS_kMeans - - POS_plotClusters - - Uns_ReadCSV_DropDupes_MinMax_kMeans_ClusterPlot: - category: clustering - units_to_run: - - IO_readCSV - - PRE_dropDupes - - PRE_minMaxScale - - UNS_kMeans - - POS_plotClusters - - Uns_ReadCSV_StandScale_kMeans_ROC_ClusterPlot: - category: clustering - units_to_run: - - IO_readCSV - - PRE_standScale - - UNS_kMeans - - POS_plotClusters diff --git a/test/pythonml/test_classification_flavors.py b/test/pythonml/test_classification_flavors.py deleted file mode 100644 index cb7b932b..00000000 --- a/test/pythonml/test_classification_flavors.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python -from parameterized import parameterized - -from flavor import BaseFlavorTest - - -class TestClassificationFlavors(BaseFlavorTest): - category = "classification" - plot_name = "my_roc_curve.png" - plot_unit = "POS_plotROC" - - @parameterized.expand( - BaseFlavorTest.get_workflow_flavors(category), - name_func=BaseFlavorTest.get_func_name - ) - def test_workflows(self, test_params): - self.run_workflow(test_params) - - flavors = [ - ("pyml:model:random_forest_classification:sklearn.pyi",), - ("pyml:model:gradboosted_trees_classification:sklearn.pyi",), - ("pyml:model:extreme_gradboosted_trees_classification:sklearn.pyi",), - ("pyml:post_processing:roc_curve:sklearn.pyi", {"pngs": ["my_roc_curve.png"]}), - ] - - @parameterized.expand( - flavors, - name_func=BaseFlavorTest.get_func_name, - ) - def test_flavors(self, flavor, kws=None): - self.run_flavor(flavor, kws) diff --git a/test/pythonml/test_clustering_flavors.py b/test/pythonml/test_clustering_flavors.py deleted file mode 100644 index 5befcd94..00000000 --- a/test/pythonml/test_clustering_flavors.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -from parameterized import parameterized - -from flavor import BaseFlavorTest - - -class TestClusteringFlavors(BaseFlavorTest): - # TODO : we don't actually verify anything for clustering - category = "clustering" - plot_name = "train_clusters.png" - plot_unit = "POS_plotClust" - - @parameterized.expand( - BaseFlavorTest.get_workflow_flavors(category), - name_func=BaseFlavorTest.get_func_name, - ) - def test_workflows(self, test_params): - self.run_workflow(test_params) - - flavors = [ - ("pyml:model:k_means_clustering:sklearn.pyi",), - ( - "pyml:post_processing:pca_2d_clusters:matplotlib.pyi", - {"pngs": ["train_test_split.png", "train_clusters.png", "test_clusters.png"]}, - ), - ] - - @parameterized.expand( - flavors, - name_func=BaseFlavorTest.get_func_name, - ) - def test_flavors(self, flavor, kws=None): - self.run_flavor(flavor, kws) diff --git a/test/pythonml/test_context.py b/test/pythonml/test_context.py deleted file mode 100644 index df05d9d1..00000000 --- a/test/pythonml/test_context.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python -import os -from unittest import mock - -from base import BaseTest - - -class TestContext(BaseTest): - """ - Unit tests for the methods in the Context class defined in the settings.py module - """ - - @mock.patch('builtins.open', new_callable=mock.mock_open) - @mock.patch('pickle.dump') - def test_update_context(self, mock_pickle, mock_builtin_open): - """ - This function update_content is supposed to pickle .job_context/workflow_context_file_mapping as the key - _context_file. We check this by seeing if mock open is called with (self.context._context_file, "wb"). - Then, we see if pickle dump is actually dumping the correct mock object - """ - self.context._update_context() - builtin_open_calls = [mock.call(self.context._context_file, "wb")] - mock_builtin_open.assert_has_calls(builtin_open_calls) - mock_pickle_calls = [mock.call(self.context.context_paths, mock_builtin_open())] - mock_pickle.assert_has_calls(mock_pickle_calls) - - @mock.patch('builtins.open', new_callable=mock.mock_open) - @mock.patch('pickle.dump') - def test_save(self, mock_pickle, mock_builtin_open): - """ - The context_paths variable contains the key value pairs of the pickled files. - The save function pickles a file and saves it in the .job_context directory - - To test this, we first make a object, obj, in order to be able to call the save function. - The mock open will return a mock object. This is what would normally be the path of - where the object will be pickled. We assert that pickle dump pickles our object, obj, - to the correct path by asserting it pickles obj with the mock open object - """ - obj = object() - self.context.save(obj, 'fake_obj') - builtin_open_calls = [mock.call(os.path.join(self.context._context_dir_pathname, f"fake_obj.pkl"), "wb")] - mock_builtin_open.assert_has_calls(builtin_open_calls) - mock_pickle_calls = [mock.call(obj, mock_builtin_open())] - mock_pickle.assert_has_calls(mock_pickle_calls) - self.context.context_paths.pop('fake_obj', None) - - @mock.patch('builtins.open', new_callable=mock.mock_open) - @mock.patch('pickle.load') - def test_load(self, mock_pickle, mock_builtin_open): - """ - The load function return an object that has been pickled and stored in the - .job_context folder. It knows which pickled object to get by using a 'name' - parameter - - To test this function, we first set a path to a fake pickled object. Then, we pass - the key to the fake pickled object to load. When load is called, we have to assert - that the mock open object will be trying to open the fake pickled object. - We want the mock open object to be what is loaded by pickle, and we want what is - returned by mock pickle to be what is returned by load - """ - self.context.context_paths.update({'key_of_fake_obj': '.job_context/fake_obj.pkl'}) - obj = self.context.load('key_of_fake_obj') - builtin_open_calls = [mock.call('.job_context/fake_obj.pkl', "rb")] - mock_builtin_open.assert_has_calls(builtin_open_calls) - mock_pickle_calls = [mock.call(mock_builtin_open())] - mock_pickle.assert_has_calls(mock_pickle_calls) - assert mock_pickle() == obj diff --git a/test/pythonml/test_regression_flavors.py b/test/pythonml/test_regression_flavors.py deleted file mode 100644 index 4cf3a6fb..00000000 --- a/test/pythonml/test_regression_flavors.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -from parameterized import parameterized - -from flavor import BaseFlavorTest - - -class TestRegressionFlavors(BaseFlavorTest): - category = "regression" - plot_unit = "POS_plotParity" - plot_name = "my_parity_plot.png" - - @parameterized.expand( - BaseFlavorTest.get_workflow_flavors(category), - name_func=BaseFlavorTest.get_func_name - ) - def test_workflows(self, test_params): - self.run_workflow(test_params) - - flavors = [ - ('pyml:pre_processing:min_max_scaler:sklearn.pyi',), - ('pyml:model:adaboosted_trees_regression:sklearn.pyi',), - ('pyml:model:bagged_trees_regression:sklearn.pyi',), - ('pyml:model:gradboosted_trees_regression:sklearn.pyi',), - ('pyml:model:extreme_gradboosted_trees_regression:sklearn.pyi',), - ('pyml:model:kernel_ridge_regression:sklearn.pyi',), - ('pyml:model:lasso_regression:sklearn.pyi',), - ('pyml:model:multilayer_perceptron_regression:sklearn.pyi',), - ('pyml:model:random_forest_regression:sklearn.pyi',), - ('pyml:model:ridge_regression:sklearn.pyi',), - ('pyml:pre_processing:min_max_scaler:sklearn.pyi',), - ('pyml:pre_processing:standardization:sklearn.pyi',), - ('pyml:pre_processing:remove_duplicates:pandas.pyi',), - ('pyml:pre_processing:remove_missing:pandas.pyi',), - ('pyml:post_processing:parity_plot:matplotlib.pyi', {"pngs": ['my_parity_plot.png']}), - ] - - @parameterized.expand( - flavors, - name_func=BaseFlavorTest.get_func_name, - ) - def test_flavors(self, flavor, kws=None): - self.run_flavor(flavor, kws)