From 1f685bd25b6deaa76aaa31bc970b94f9feb555e7 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Sun, 1 Jan 2023 18:20:42 -0500 Subject: [PATCH 01/27] changes README: selected rewote --- .gitignore | 2 ++ README.md | 71 ++++++++++++++---------------------------------------- 2 files changed, 20 insertions(+), 53 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..81e79884 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +old + diff --git a/README.md b/README.md index 414438d3..2ccb5adc 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,31 @@ -# ReWoTes +# ML Band Gaps (Materials) -REal WOrld TEstS +> Ideal candidate: skilled ML data scientist with solid knowledge of materials science. -## Overview +# Overview -This repository contains example test assignments used during our hiring process. +The aim of this task is to create a python package that implements automatic prediction of electronic band gaps for a set of materials based on training data. -We find that regular job interview questions can often be misleading and so use more engaged "real-world" examples instead. +# User story -Each file represents an assignment similar to what one would get when hired. +As a user of this software I can predict the value of an electronic band gap after passing training data and structural information about the target material. -| Focus | ReWote | Keywords | -| ---------------| --------------------------| ------------------------------- | -| Comp. Science | [Convergence Tracker](Convergence-Tracker.md) | Python, OOD, DFT, Planewaves | -| Comp. Science | [Basis Set Selector](Basis-Set-Selector.md) | Python, OOD, DFT, Local-orbital | -| Data. Science | [ML Property Predict](ML-Band-Gaps.md) | Python, ML Models, Scikit, Featurization | -| Front-End / UX | [Materials Designer](Materials-Designer.md) | ReactJS / UX Design, ThreeJS | -| Front-End / UX | [Flowchart Designer](Flowchart-Designer.md) | ReactJS / UX Design, DAG | -| Back-End / Ops | [Parallel Uploader](Parallel-File-Uploader.md) | Python, OOD, Threading, Objectstore | -| CI/CD, DevOps | [End-to-End Tests](End-To-End-Tests.md) | BDD tests, CI/CD workflows, Cypress | -| HPC, Cloud Inf | [Cloud HPC Bench.](Cloud-Infrastructure.md) | HPC Cluster, Linpack, Benchmarks | -| HPC, Containers| [Containerized HPC](Containerization-HPC.md) | HPC Cluster, Containers, Benchmarks | +# Requirements -## Usage +- suggest the bandgap values for a set of materials designated by their crystallographic and stoichiometric properties +- the code shall be written in a way that can facilitate easy addition of other characteristics extracted from simulations (forces, pressures, phonon frequencies etc) -We suggest the following flow: +# Expectations -1. [Fork](https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/fork-a-repo) this repository on GitHub -2. Create a branch using your GitHub username as a branch name -3. Create a subfolder with your GitHub username -4. Copy one of the ReWoTe suggestions (`.md` files) to `README.md` in that subfolder and modify the content of the ReWoTe as necessary -5. Introduce any changes under the subfolder -6. Submit a [pull request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork) into the `dev` branch of this repository +- the code shall be able to suggest realistic values for slightly modified geometry sets - eg. trained on Si and Ge it should suggest the value of bandgap for Si49Ge51 to be between those of Si and Ge +- modular and object-oriented implementation +- commit early and often - at least once per 24 hours -See [dev branch](https://github.com/Exabyte-io/rewotes/tree/dev) also. +# Timeline -## Notes +We leave exact timing to the candidate. Must fit Within 5 days total. -Examples listed here are only meant as guidelines and do not necessarily reflect on the type of work to be performed at the company. Modifications to the individual assignments with an advance notice are encouraged. +# Notes -We will screen for the ability to (1) pick up new concepts quickly, (2) implement a working proof-of-concept solution, and (3) outline how the PoC can become more mature. We value attention to details and modularity. - - -## Hiring process - -Our hiring process in more details: - -| Stage | Target Duration | Topic | -| ----------------- | ----------------- | ------------------------------ | -| 0. Email screen | | why mat3ra.com / exabyte.io | -| 1. Phone screen | 15-20 min | career goals, basic skillset | -| 2. ReWoTe | 1-2h x 2-5 days | real-world work/thought process| -| 3. On-site meet | 3-4 x 30 min | personality fit | -| 4. Discuss offer | 30 min | cash/equity/benefits | -| 5. References | 2 x 15 min | sanity check | -| 6. Decision | | when to start | - -TOTAL: ~2 weeks tentative. - - -## Contact info - -With any questions about this repository or our hiring process please contact us at info@mat3ra.com. - -© 2022 Exabyte Inc. +- use a designated github repository for version control +- suggested source of training data: materialsproject.org From 3e206d53f9077bddc35c8cf25e72e706689f4ad9 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Sun, 1 Jan 2023 20:10:23 -0500 Subject: [PATCH 02/27] setup pipenv as a package manager tohelp with the dependency / compatibility issues of mp_api (consider using poetry library later on) --- .gitignore | 3 +- Pipfile | 12 + Pipfile.lock | 845 ++++++++++++++++++++++++++++++++++++++++++++++++ mlbands/file.py | 13 + notes.txt | 4 + 5 files changed, 876 insertions(+), 1 deletion(-) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 mlbands/file.py create mode 100644 notes.txt diff --git a/.gitignore b/.gitignore index 81e79884..a9ae60bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ old - +deploy-notes +venv diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..32b8d325 --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +mp-api = "*" + +[dev-packages] + +[requires] +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..c9c05c80 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,845 @@ +{ + "_meta": { + "hash": { + "sha256": "c4013e831ca02d87f686fc8bbb18b5945cc65da13a5352ccfab41e38e81ea42a" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "certifi": { + "hashes": [ + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + ], + "markers": "python_version >= '3.6'", + "version": "==2022.12.7" + }, + "charset-normalizer": { + "hashes": [ + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" + ], + "markers": "python_full_version >= '3.6.0'", + "version": "==2.1.1" + }, + "contourpy": { + "hashes": [ + "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17", + "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d", + "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c", + "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e", + "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1", + "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd", + "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf", + "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b", + "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b", + "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41", + "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72", + "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2", + "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa", + "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb", + "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768", + "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183", + "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa", + "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278", + "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2", + "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3", + "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc", + "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9", + "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30", + "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0", + "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3", + "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7", + "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e", + "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6", + "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142", + "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5", + "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de", + "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b", + "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb", + "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea", + "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a", + "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832", + "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a", + "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512", + "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675", + "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1", + "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95", + "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db", + "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563", + "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8", + "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9", + "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9", + "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036", + "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b", + "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0", + "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f", + "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b", + "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f", + "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe", + "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45", + "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd", + "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c", + "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee", + "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da", + "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a", + "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340", + "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769", + "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109", + "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4", + "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f", + "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf", + "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621", + "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3", + "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48", + "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.6" + }, + "cycler": { + "hashes": [ + "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3", + "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f" + ], + "markers": "python_version >= '3.6'", + "version": "==0.11.0" + }, + "emmet-core": { + "hashes": [ + "sha256:155bf361fb86ed9feba891324b3263ff70c3a89a7ba6af885f32e867a297fdbe", + "sha256:1e2d7a834892f9b204e5c20b10483638f46ed004c9a2a02e672e0d147bf24b60" + ], + "markers": "python_version >= '3.8'", + "version": "==0.39.6" + }, + "fonttools": { + "hashes": [ + "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1", + "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb" + ], + "markers": "python_version >= '3.7'", + "version": "==4.38.0" + }, + "future": { + "hashes": [ + "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.18.2" + }, + "idna": { + "hashes": [ + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + ], + "markers": "python_version >= '3.5'", + "version": "==3.4" + }, + "kiwisolver": { + "hashes": [ + "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", + "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166", + "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c", + "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c", + "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0", + "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4", + "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9", + "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286", + "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767", + "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c", + "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6", + "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b", + "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004", + "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf", + "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494", + "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac", + "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626", + "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766", + "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514", + "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6", + "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f", + "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d", + "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191", + "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d", + "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51", + "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f", + "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8", + "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454", + "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb", + "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da", + "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8", + "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de", + "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a", + "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9", + "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008", + "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3", + "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32", + "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938", + "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1", + "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9", + "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d", + "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824", + "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b", + "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd", + "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2", + "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5", + "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69", + "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3", + "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae", + "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597", + "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e", + "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955", + "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca", + "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a", + "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea", + "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede", + "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4", + "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6", + "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686", + "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408", + "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871", + "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29", + "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750", + "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897", + "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0", + "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2", + "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09", + "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c" + ], + "markers": "python_version >= '3.7'", + "version": "==1.4.4" + }, + "latexcodec": { + "hashes": [ + "sha256:2aa2551c373261cefe2ad3a8953a6d6533e68238d180eb4bb91d7964adb3fe9a", + "sha256:c277a193638dc7683c4c30f6684e3db728a06efb0dc9cf346db8bd0aa6c5d271" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.0.1" + }, + "matplotlib": { + "hashes": [ + "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a", + "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2", + "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501", + "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95", + "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c", + "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267", + "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428", + "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb", + "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83", + "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17", + "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1", + "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73", + "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0", + "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812", + "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a", + "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b", + "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f", + "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f", + "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee", + "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33", + "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028", + "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c", + "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae", + "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc", + "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558", + "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5", + "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc", + "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab", + "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990", + "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27", + "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136", + "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa", + "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6", + "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c", + "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b", + "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617", + "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1", + "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3", + "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4", + "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0", + "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec" + ], + "markers": "python_version >= '3.8'", + "version": "==3.6.2" + }, + "monty": { + "hashes": [ + "sha256:6cca8f14a18a2030b243a1377dfd59049a1ccce007b34f810a8f5eece72b9ceb", + "sha256:f9624c90687486cfebcc1e80a0b1da201a0ea14213fd1f392960cd47d3171907" + ], + "markers": "python_version >= '3.5'", + "version": "==2022.9.9" + }, + "mp-api": { + "hashes": [ + "sha256:58e3a2d539f68e0610177af9d2482655cbe38b16650227776d26ff614edc17bb", + "sha256:e28033fd801be3e781dcc18420a13cdfe9aa0f6098f2056b0a1126bf7acdf027" + ], + "index": "pypi", + "version": "==0.30.5" + }, + "mpmath": { + "hashes": [ + "sha256:604bc21bd22d2322a177c73bdb573994ef76e62edd595d17e00aff24b0667e5c", + "sha256:79ffb45cf9f4b101a807595bcb3e72e0396202e0b1d25d689134b48c4216a81a" + ], + "version": "==1.2.1" + }, + "msgpack": { + "hashes": [ + "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", + "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", + "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", + "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", + "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", + "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", + "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", + "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", + "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", + "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", + "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", + "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", + "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", + "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", + "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", + "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", + "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", + "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", + "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", + "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", + "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", + "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", + "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", + "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", + "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", + "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", + "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", + "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", + "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", + "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", + "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", + "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", + "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", + "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", + "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", + "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", + "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", + "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", + "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", + "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", + "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", + "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", + "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", + "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", + "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", + "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", + "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", + "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", + "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", + "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", + "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", + "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" + ], + "version": "==1.0.4" + }, + "networkx": { + "hashes": [ + "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e", + "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524" + ], + "markers": "python_version >= '3.8'", + "version": "==2.8.8" + }, + "numpy": { + "hashes": [ + "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9", + "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398", + "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7", + "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2", + "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954", + "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6", + "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032", + "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36", + "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c", + "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8", + "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7", + "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f", + "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700", + "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086", + "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7", + "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2", + "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9", + "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407", + "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2", + "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36", + "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566", + "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1", + "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e", + "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51", + "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1", + "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d", + "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf", + "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7" + ], + "markers": "python_version >= '3.8'", + "version": "==1.24.1" + }, + "packaging": { + "hashes": [ + "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3", + "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3" + ], + "markers": "python_version >= '3.7'", + "version": "==22.0" + }, + "palettable": { + "hashes": [ + "sha256:72feca71cf7d79830cd6d9181b02edf227b867d503bec953cf9fa91bf44896bd", + "sha256:c3bf3f548fc228e86bd3d16928bbf8d621c1d1098791ceab446d0e3a5e1298d1" + ], + "version": "==3.3.0" + }, + "pandas": { + "hashes": [ + "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883", + "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028", + "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b", + "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824", + "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe", + "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e", + "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261", + "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b", + "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f", + "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5", + "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0", + "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a", + "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc", + "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39", + "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5", + "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702", + "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f", + "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3", + "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519", + "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f", + "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc", + "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72", + "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb", + "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789", + "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090", + "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273", + "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2" + ], + "markers": "python_version >= '3.8'", + "version": "==1.5.2" + }, + "pillow": { + "hashes": [ + "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", + "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", + "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", + "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", + "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", + "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", + "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", + "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", + "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", + "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", + "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", + "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", + "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", + "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", + "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", + "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", + "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", + "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", + "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", + "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", + "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", + "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", + "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", + "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", + "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", + "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", + "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", + "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", + "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", + "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", + "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", + "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", + "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", + "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", + "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", + "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", + "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", + "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", + "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", + "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", + "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", + "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", + "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", + "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", + "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", + "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", + "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", + "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", + "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", + "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", + "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", + "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", + "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", + "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", + "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", + "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", + "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", + "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", + "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", + "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", + "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" + ], + "markers": "python_version >= '3.7'", + "version": "==9.3.0" + }, + "plotly": { + "hashes": [ + "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787", + "sha256:52fd74b08aa4fd5a55b9d3034a30dbb746e572d7ed84897422f927fdf687ea5f" + ], + "markers": "python_version >= '3.6'", + "version": "==5.11.0" + }, + "pybtex": { + "hashes": [ + "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755", + "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.24.0" + }, + "pydantic": { + "hashes": [ + "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72", + "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423", + "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f", + "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c", + "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06", + "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53", + "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774", + "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6", + "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c", + "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f", + "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6", + "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3", + "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817", + "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903", + "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a", + "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e", + "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d", + "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85", + "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00", + "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28", + "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3", + "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024", + "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4", + "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e", + "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d", + "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa", + "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854", + "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15", + "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648", + "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8", + "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c", + "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857", + "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f", + "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416", + "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978", + "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d" + ], + "markers": "python_version >= '3.7'", + "version": "==1.10.4" + }, + "pymatgen": { + "hashes": [ + "sha256:107544fd1fe48aa97d932b7897b46f0db56903c23e44ae971ebf7c3af0b38e99", + "sha256:2baaa93dda35e5aa0b4c4521c809a0f5dfd6405293dfcedbd9dc7a7f0a9f007a", + "sha256:345965e4ef56014d1f16827dfd56477807eab0079ed7da608e321ca6d2ebcb45", + "sha256:3c104b53850fd6fb9891d5095ca1a2459cf8a2f071bfe03cd687fce67f4a70ff", + "sha256:8119ad5179002669d201a858b646c886a5775b6b478b64669b24a7c8c2e04404", + "sha256:c9ccd4be777a376897ba150826e3f0b9ac9ebf369fb9478cb79a35e042817c25", + "sha256:e30ed85c480df491b576b08cc5a2900027da3896351fbf9045bdeddf31aab651" + ], + "markers": "python_version >= '3.8'", + "version": "==2022.11.7" + }, + "pyparsing": { + "hashes": [ + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + ], + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "pytz": { + "hashes": [ + "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a", + "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd" + ], + "version": "==2022.7" + }, + "pyyaml": { + "hashes": [ + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0" + }, + "requests": { + "hashes": [ + "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", + "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" + ], + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.28.1" + }, + "ruamel.yaml": { + "hashes": [ + "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7", + "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af" + ], + "markers": "python_version >= '3'", + "version": "==0.17.21" + }, + "ruamel.yaml.clib": { + "hashes": [ + "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e", + "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3", + "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5", + "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497", + "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f", + "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac", + "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697", + "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763", + "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282", + "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94", + "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1", + "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072", + "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9", + "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5", + "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231", + "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93", + "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b", + "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb", + "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f", + "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307", + "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8", + "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b", + "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b", + "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640", + "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7", + "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a", + "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71", + "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8", + "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7", + "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80", + "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e", + "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab", + "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0", + "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646" + ], + "markers": "python_version < '3.11' and platform_python_implementation == 'CPython'", + "version": "==0.2.7" + }, + "scipy": { + "hashes": [ + "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31", + "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108", + "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0", + "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b", + "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e", + "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e", + "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5", + "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840", + "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58", + "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523", + "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd", + "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab", + "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c", + "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb", + "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096", + "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0", + "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc", + "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9", + "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c", + "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95", + "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027" + ], + "markers": "python_version >= '3.8'", + "version": "==1.9.3" + }, + "setuptools": { + "hashes": [ + "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54", + "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75" + ], + "markers": "python_version >= '3.7'", + "version": "==65.6.3" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "spglib": { + "hashes": [ + "sha256:0352429063f0f174d5b763a4a119ff972fa8f951762719eb930f2db8d462df22", + "sha256:04fd1899d69456259e3667aa4cace8e4e6f3b8a369714ed01f349b4734263df1", + "sha256:07fa12e0fba754ddf9daa126f82a3b6ed21d4ef5ff7d8f7747e26f55b67c153c", + "sha256:184f4045a6691be5012d75296874e1c7468ebdec3284161724c000efd78558d7", + "sha256:19d1a793515711c3196126f4f6da32b1ebb4e6f3c418671692430191b6bb5c75", + "sha256:1d081ec22da4ab4fc3198e9445ddad6dec2261c43927831151d93e39422610aa", + "sha256:2f76c1a5e9699479c847a577e3d7974c676a030048ca4f9ae1b89008ef8b3db7", + "sha256:4a58ecdd553a9c1603e9bd8124170e97cea0d0ee3be76e5efc2f952a6d463f35", + "sha256:4d026e4ffd4801b1c0bf6784cb7547032db4a1d0806993060dd95f5caa547c77", + "sha256:50dfd569aa2f8a1393c9784449c1631b73ef3b4035670a905a959656a8af2bc5", + "sha256:57ffbc725c7c22410dbf19f276762d81448843e35bdca55d00480e30dfac61e8", + "sha256:64e6731f5921c55521efe53cd9eead26a624124b04547216a8e90bc654638664", + "sha256:778306dcccd5c3946357d64435593d80d22758abd94d2d0fc9ec8ee3f75c33a3", + "sha256:791cd3d525a33142f874facb4a0371a744deb6c63cbfa8d8eec2cc2977f54691", + "sha256:8916019d201e107d3dc02367ad36f96913e2a42dc9226578e5608b835dec3ad4", + "sha256:8b09b79309bd599947d1007ec7598182f193aa291fc50cd5f19b2c73aa643641", + "sha256:98ff97079e331cc707cc1836bfe6c632eb496ffff76fd534bd28faa1221124bd", + "sha256:9f904e8a1420e3c07a0815f698c464d9a3ea5b5419276ae002f765c5d06f7bee", + "sha256:a54dbc8954ffef86895c29416274b23b562dcdd23f8d3d4e61b47b43eabe65aa", + "sha256:b515b688b595590181a763586d9b2bf28e1c5c49dadc90825963ee5c8d63ff69", + "sha256:b57e9cbe6ce271a9a2ff403e236e07adaf6c263acbf4dbe007632e189f4108e7", + "sha256:b7440b220cd100c31ee72a33dcb1ee8544ff9b0c0cd69aeee78c081eea654cd3", + "sha256:b9ab53e531f4083ef61f349fe662f40c1f86bc1e313d76f838a54317acb74865", + "sha256:c5c23bd8ee8941cb679ba941f8b49cae306fa62a92085d84a451ae86332dc440", + "sha256:c6dafee1c21ef378df002802a7a74f92b6a8b54170fe12ebab7f563c8333aae3", + "sha256:d0d17316837825c67723ab2bc6d9cdee0a8252673c7e4e12f8a9264732865bef", + "sha256:d2132751f1151f6875b45c9e4b9053fee1d2ef376aa85c8a53f058c71f492a9e", + "sha256:d9f63b3f1b00a49d1a409b47e66beb6ea3eaed2131749be8668fce3cb01ec753", + "sha256:da956b941a377c6af450b252ee4ef03040dd2f80b5b77c56d043a5aa3b7e0aca" + ], + "version": "==2.0.2" + }, + "sympy": { + "hashes": [ + "sha256:938f984ee2b1e8eae8a07b884c8b7a1146010040fccddc6539c54f401c8f6fcf", + "sha256:e32380dce63cb7c0108ed525570092fd45168bdae2faa17e528221ef72e88658" + ], + "markers": "python_version >= '3.8'", + "version": "==1.11.1" + }, + "tabulate": { + "hashes": [ + "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", + "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f" + ], + "markers": "python_version >= '3.7'", + "version": "==0.9.0" + }, + "tenacity": { + "hashes": [ + "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac", + "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445" + ], + "markers": "python_version >= '3.6'", + "version": "==8.1.0" + }, + "tqdm": { + "hashes": [ + "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4", + "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==4.64.1" + }, + "typing-extensions": { + "hashes": [ + "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", + "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" + ], + "markers": "python_version >= '3.7'", + "version": "==4.4.0" + }, + "uncertainties": { + "hashes": [ + "sha256:4040ec64d298215531922a68fa1506dc6b1cb86cd7cca8eca848fcfe0f987151", + "sha256:80111e0839f239c5b233cb4772017b483a0b7a1573a581b92ab7746a35e6faab" + ], + "version": "==3.1.7" + }, + "urllib3": { + "hashes": [ + "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", + "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.13" + } + }, + "develop": {} +} diff --git a/mlbands/file.py b/mlbands/file.py new file mode 100644 index 00000000..ba14ad36 --- /dev/null +++ b/mlbands/file.py @@ -0,0 +1,13 @@ +from mp_api.client import MPRester + + +with MPRester(api_key='') as mpr: + + # for a single material + thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') + + # for many materials, it's much faster to use + # the `search` method, where additional material_ids can + # be added to this list + thermo_docs = mpr.thermo.search(material_ids=['mp-1103503']) + diff --git a/notes.txt b/notes.txt new file mode 100644 index 00000000..0b1c5280 --- /dev/null +++ b/notes.txt @@ -0,0 +1,4 @@ +https://medium.com/dsckiit/managing-dependencies-in-python-a580ded4f67 + +To start environment, run: +pipenv shell \ No newline at end of file From e576f89fb8eed05ed39559b9f88a51a162c5d782 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Sun, 1 Jan 2023 20:13:31 -0500 Subject: [PATCH 03/27] git mv rewotes --- Basis-Set-Selector.md => all-rewotes/Basis-Set-Selector.md | 0 Cloud-Infrastructure.md => all-rewotes/Cloud-Infrastructure.md | 0 Containerization-HPC.md => all-rewotes/Containerization-HPC.md | 0 Convergence-Tracker.md => all-rewotes/Convergence-Tracker.md | 0 End-to-End-Tests.md => all-rewotes/End-to-End-Tests.md | 0 Flowchart-Designer.md => all-rewotes/Flowchart-Designer.md | 0 ML-Band-Gaps.md => all-rewotes/ML-Band-Gaps.md | 0 Materials-Designer.md => all-rewotes/Materials-Designer.md | 0 .../Parallel-File-Uploader.md | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename Basis-Set-Selector.md => all-rewotes/Basis-Set-Selector.md (100%) rename Cloud-Infrastructure.md => all-rewotes/Cloud-Infrastructure.md (100%) rename Containerization-HPC.md => all-rewotes/Containerization-HPC.md (100%) rename Convergence-Tracker.md => all-rewotes/Convergence-Tracker.md (100%) rename End-to-End-Tests.md => all-rewotes/End-to-End-Tests.md (100%) rename Flowchart-Designer.md => all-rewotes/Flowchart-Designer.md (100%) rename ML-Band-Gaps.md => all-rewotes/ML-Band-Gaps.md (100%) rename Materials-Designer.md => all-rewotes/Materials-Designer.md (100%) rename Parallel-File-Uploader.md => all-rewotes/Parallel-File-Uploader.md (100%) diff --git a/Basis-Set-Selector.md b/all-rewotes/Basis-Set-Selector.md similarity index 100% rename from Basis-Set-Selector.md rename to all-rewotes/Basis-Set-Selector.md diff --git a/Cloud-Infrastructure.md b/all-rewotes/Cloud-Infrastructure.md similarity index 100% rename from Cloud-Infrastructure.md rename to all-rewotes/Cloud-Infrastructure.md diff --git a/Containerization-HPC.md b/all-rewotes/Containerization-HPC.md similarity index 100% rename from Containerization-HPC.md rename to all-rewotes/Containerization-HPC.md diff --git a/Convergence-Tracker.md b/all-rewotes/Convergence-Tracker.md similarity index 100% rename from Convergence-Tracker.md rename to all-rewotes/Convergence-Tracker.md diff --git a/End-to-End-Tests.md b/all-rewotes/End-to-End-Tests.md similarity index 100% rename from End-to-End-Tests.md rename to all-rewotes/End-to-End-Tests.md diff --git a/Flowchart-Designer.md b/all-rewotes/Flowchart-Designer.md similarity index 100% rename from Flowchart-Designer.md rename to all-rewotes/Flowchart-Designer.md diff --git a/ML-Band-Gaps.md b/all-rewotes/ML-Band-Gaps.md similarity index 100% rename from ML-Band-Gaps.md rename to all-rewotes/ML-Band-Gaps.md diff --git a/Materials-Designer.md b/all-rewotes/Materials-Designer.md similarity index 100% rename from Materials-Designer.md rename to all-rewotes/Materials-Designer.md diff --git a/Parallel-File-Uploader.md b/all-rewotes/Parallel-File-Uploader.md similarity index 100% rename from Parallel-File-Uploader.md rename to all-rewotes/Parallel-File-Uploader.md From 9ba0fdd94135670ff6ea4c9862a30bcf40552c02 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Sun, 1 Jan 2023 20:52:28 -0500 Subject: [PATCH 04/27] pass notes.txt to readme in mlbands dir; diff-patterns example; create secret.py with API_KEY from Materials Project (registered through github) --- .gitignore | 1 + Pipfile | 1 + Pipfile.lock | 591 +++++++++++++++++++++++++++++++- mlbands/README.md | 10 + mlbands/diffraction-patterns.py | 20 ++ mlbands/{file.py => thermo.py} | 4 +- notes.txt | 4 - 7 files changed, 624 insertions(+), 7 deletions(-) create mode 100644 mlbands/README.md create mode 100644 mlbands/diffraction-patterns.py rename mlbands/{file.py => thermo.py} (84%) delete mode 100644 notes.txt diff --git a/.gitignore b/.gitignore index a9ae60bf..a50d50a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ old deploy-notes venv +secret.py \ No newline at end of file diff --git a/Pipfile b/Pipfile index 32b8d325..139911fe 100644 --- a/Pipfile +++ b/Pipfile @@ -5,6 +5,7 @@ name = "pypi" [packages] mp-api = "*" +mpcontribs-client = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index c9c05c80..7b0e5844 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c4013e831ca02d87f686fc8bbb18b5945cc65da13a5352ccfab41e38e81ea42a" + "sha256": "f6818e8497b025f4e6ed6dde0eddcc1fdcb22170c304fc6fd2bebc9a99e0141f" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,59 @@ ] }, "default": { + "arrow": { + "hashes": [ + "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1", + "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.3" + }, + "asttokens": { + "hashes": [ + "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3", + "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c" + ], + "version": "==2.2.1" + }, + "attrs": { + "hashes": [ + "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", + "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" + ], + "markers": "python_version >= '3.6'", + "version": "==22.2.0" + }, + "backcall": { + "hashes": [ + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" + ], + "version": "==0.2.0" + }, + "boltons": { + "hashes": [ + "sha256:65e70a79a731a7fe6e98592ecfb5ccf2115873d01dbc576079874629e5c90f13", + "sha256:b9bb7b58b2b420bbe11a6025fdef6d3e5edc9f76a42fb467afe7ca212ef9948b" + ], + "version": "==21.0.0" + }, + "bravado": { + "hashes": [ + "sha256:1bb6ef75d84140c851fffe6420baaee5037d840070cfe11d60913be6ab8e0530", + "sha256:8ac8bbb645e49607917a5c07808116c708521f51e80d9c29bc4a168ff4dd22c6" + ], + "markers": "python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version != '3.5.0'", + "version": "==11.0.3" + }, + "bravado-core": { + "hashes": [ + "sha256:0da9c6f3814734622a55db3f62d08db6e188b25f3ebd087de370c91afb66a7f4", + "sha256:e231567cdc471337d23dfc950c45c5914ade8a78cde7ccf2ebb9433fcda29f40" + ], + "markers": "python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version != '3.5.0'", + "version": "==5.17.1" + }, "certifi": { "hashes": [ "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", @@ -115,6 +168,22 @@ "markers": "python_version >= '3.6'", "version": "==0.11.0" }, + "decorator": { + "hashes": [ + "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", + "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" + ], + "markers": "python_version >= '3.5'", + "version": "==5.1.1" + }, + "dnspython": { + "hashes": [ + "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e", + "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f" + ], + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==2.2.1" + }, "emmet-core": { "hashes": [ "sha256:155bf361fb86ed9feba891324b3263ff70c3a89a7ba6af885f32e867a297fdbe", @@ -123,6 +192,28 @@ "markers": "python_version >= '3.8'", "version": "==0.39.6" }, + "executing": { + "hashes": [ + "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", + "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" + ], + "version": "==1.2.0" + }, + "filetype": { + "hashes": [ + "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", + "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25" + ], + "version": "==1.2.0" + }, + "flatten-dict": { + "hashes": [ + "sha256:506a96b6e6f805b81ae46a0f9f31290beb5fa79ded9d80dbe1b7fa236ab43076", + "sha256:7e245b20c4c718981212210eec4284a330c9f713e632e98765560e05421e48ad" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.4.2" + }, "fonttools": { "hashes": [ "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1", @@ -131,6 +222,13 @@ "markers": "python_version >= '3.7'", "version": "==4.38.0" }, + "fqdn": { + "hashes": [ + "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", + "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014" + ], + "version": "==1.5.1" + }, "future": { "hashes": [ "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" @@ -146,6 +244,66 @@ "markers": "python_version >= '3.5'", "version": "==3.4" }, + "importlib-resources": { + "hashes": [ + "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6", + "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484" + ], + "markers": "python_version < '3.9'", + "version": "==5.10.2" + }, + "ipython": { + "hashes": [ + "sha256:352042ddcb019f7c04e48171b4dd78e4c4bb67bf97030d170e154aac42b656d9", + "sha256:882899fe78d5417a0aa07f995db298fa28b58faeba2112d2e3a4c95fe14bb738" + ], + "markers": "python_version >= '3.8'", + "version": "==8.7.0" + }, + "isoduration": { + "hashes": [ + "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", + "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042" + ], + "version": "==20.11.0" + }, + "jedi": { + "hashes": [ + "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e", + "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612" + ], + "markers": "python_version >= '3.6'", + "version": "==0.18.2" + }, + "json2html": { + "hashes": [ + "sha256:8951a53662ae9cfd812685facdba693fc950ffc1c1fd1a8a2d3cf4c34600689c" + ], + "version": "==1.3.0" + }, + "jsonpointer": { + "hashes": [ + "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9", + "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a" + ], + "version": "==2.3" + }, + "jsonref": { + "hashes": [ + "sha256:010ca2752546309d8646cd743c64819c3e37bf710c07929bf9c1b409ee9ec6dd", + "sha256:51d3e18b83ca7170ff51286a0e1a6719d8b7fcc7abdb16b189395a8536996b97" + ], + "markers": "python_version >= '3.3' and python_version < '4.0'", + "version": "==1.0.1" + }, + "jsonschema": { + "hashes": [ + "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", + "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" + ], + "markers": "python_version >= '3.7'", + "version": "==4.17.3" + }, "kiwisolver": { "hashes": [ "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", @@ -275,6 +433,21 @@ "markers": "python_version >= '3.8'", "version": "==3.6.2" }, + "matplotlib-inline": { + "hashes": [ + "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", + "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" + ], + "markers": "python_version >= '3.5'", + "version": "==0.1.6" + }, + "monotonic": { + "hashes": [ + "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7", + "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c" + ], + "version": "==1.6" + }, "monty": { "hashes": [ "sha256:6cca8f14a18a2030b243a1377dfd59049a1ccce007b34f810a8f5eece72b9ceb", @@ -291,6 +464,14 @@ "index": "pypi", "version": "==0.30.5" }, + "mpcontribs-client": { + "hashes": [ + "sha256:2a099170e6397c71ab7b2673c228b0911e2993af8404a1f908e683f25eb78851", + "sha256:88de27267d1834c694f4643a896143156563bf700897d11ac5075138dc782eb9" + ], + "index": "pypi", + "version": "==5.0.6" + }, "mpmath": { "hashes": [ "sha256:604bc21bd22d2322a177c73bdb573994ef76e62edd595d17e00aff24b0667e5c", @@ -445,6 +626,29 @@ "markers": "python_version >= '3.8'", "version": "==1.5.2" }, + "parso": { + "hashes": [ + "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", + "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" + ], + "markers": "python_version >= '3.6'", + "version": "==0.8.3" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, "pillow": { "hashes": [ "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", @@ -512,6 +716,21 @@ "markers": "python_version >= '3.7'", "version": "==9.3.0" }, + "pint": { + "hashes": [ + "sha256:e1d4989ff510b378dad64f91711e7bdabe5ca78d75b06a18569ac454678c4baf" + ], + "markers": "python_version >= '3.8'", + "version": "==0.19.2" + }, + "pkgutil-resolve-name": { + "hashes": [ + "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", + "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e" + ], + "markers": "python_version < '3.9'", + "version": "==1.3.10" + }, "plotly": { "hashes": [ "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787", @@ -520,6 +739,28 @@ "markers": "python_version >= '3.6'", "version": "==5.11.0" }, + "prompt-toolkit": { + "hashes": [ + "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63", + "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305" + ], + "markers": "python_full_version >= '3.6.2'", + "version": "==3.0.36" + }, + "ptyprocess": { + "hashes": [ + "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", + "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" + ], + "version": "==0.7.0" + }, + "pure-eval": { + "hashes": [ + "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350", + "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3" + ], + "version": "==0.2.2" + }, "pybtex": { "hashes": [ "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755", @@ -570,6 +811,22 @@ "markers": "python_version >= '3.7'", "version": "==1.10.4" }, + "pygments": { + "hashes": [ + "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", + "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" + ], + "markers": "python_version >= '3.6'", + "version": "==2.14.0" + }, + "pyisemail": { + "hashes": [ + "sha256:3d2bebd159f436673219d024a3f02bed1b468c793df9a5fa08d72b7d4b4f6cb4", + "sha256:daf4b3fb2150a38f406b0aaba729e19fcd638a6d1c0549c25ff54c7b804618f8" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.1" + }, "pymatgen": { "hashes": [ "sha256:107544fd1fe48aa97d932b7897b46f0db56903c23e44ae971ebf7c3af0b38e99", @@ -583,6 +840,86 @@ "markers": "python_version >= '3.8'", "version": "==2022.11.7" }, + "pymongo": { + "hashes": [ + "sha256:016c412118e1c23fef3a1eada4f83ae6e8844fd91986b2e066fc1b0013cdd9ae", + "sha256:01f7cbe88d22440b6594c955e37312d932fd632ffed1a86d0c361503ca82cc9d", + "sha256:08fc250b5552ee97ceeae0f52d8b04f360291285fc7437f13daa516ce38fdbc6", + "sha256:0c466710871d0026c190fc4141e810cf9d9affbf4935e1d273fbdc7d7cda6143", + "sha256:1074f1a6f23e28b983c96142f2d45be03ec55d93035b471c26889a7ad2365db3", + "sha256:12f3621a46cdc7a9ba8080422262398a91762a581d27e0647746588d3f995c88", + "sha256:2c2fdc855149efe7cdcc2a01ca02bfa24761c640203ea94df467f3baf19078be", + "sha256:316498b642c00401370b2156b5233b256f9b33799e0a8d9d0b8a7da217a20fca", + "sha256:341221e2f2866a5960e6f8610f4cbac0bb13097f3b1a289aa55aba984fc0d969", + "sha256:34b040e095e1671df0c095ec0b04fc4ebb19c4c160f87c2b55c079b16b1a6b00", + "sha256:34e95ffb0a68bffbc3b437f2d1f25fc916fef3df5cdeed0992da5f42fae9b807", + "sha256:39b03045c71f761aee96a12ebfbc2f4be89e724ff6f5e31c2574c1a0e2add8bd", + "sha256:3b93043b14ba7eb08c57afca19751658ece1cfa2f0b7b1fb5c7a41452fbb8482", + "sha256:47f7aa217b25833cd6f0e72b0d224be55393c2692b4f5e0561cb3beeb10296e9", + "sha256:49210feb0be8051a64d71691f0acbfbedc33e149f0a5d6e271fddf6a12493fed", + "sha256:4d00b91c77ceb064c9b0459f0d6ea5bfdbc53ea9e17cf75731e151ef25a830c7", + "sha256:4ed00f96e147f40b565fe7530d1da0b0f3ab803d5dd5b683834500fa5d195ec4", + "sha256:5134d33286c045393c7beb51be29754647cec5ebc051cf82799c5ce9820a2ca2", + "sha256:524d78673518dcd352a91541ecd2839c65af92dc883321c2109ef6e5cd22ef23", + "sha256:52896e22115c97f1c829db32aa2760b0d61839cfe08b168c2b1d82f31dbc5f55", + "sha256:54c377893f2cbbffe39abcff5ff2e917b082c364521fa079305f6f064e1a24a9", + "sha256:55b6163dac53ef1e5d834297810c178050bd0548a4136cd4e0f56402185916ca", + "sha256:599d3f6fbef31933b96e2d906b0f169b3371ff79ea6aaf6ecd76c947a3508a3d", + "sha256:5effd87c7d363890259eac16c56a4e8da307286012c076223997f8cc4a8c435b", + "sha256:66413c50d510e5bcb0afc79880d1693a2185bcea003600ed898ada31338c004e", + "sha256:695939036a320f4329ccf1627edefbbb67cc7892b8222d297b0dd2313742bfee", + "sha256:6c2216d8b6a6d019c6f4b1ad55f890e5e77eb089309ffc05b6911c09349e7474", + "sha256:6dd1cf2995fdbd64fc0802313e8323f5fa18994d51af059b5b8862b73b5e53f0", + "sha256:6fcfbf435eebf8a1765c6d1f46821740ebe9f54f815a05c8fc30d789ef43cb12", + "sha256:704d939656e21b073bfcddd7228b29e0e8a93dd27b54240eaafc0b9a631629a6", + "sha256:711bc52cb98e7892c03e9b669bebd89c0a890a90dbc6d5bb2c47f30239bac6e9", + "sha256:74731c9e423c93cbe791f60c27030b6af6a948cef67deca079da6cd1bb583a8e", + "sha256:7761cacb8745093062695b11574effea69db636c2fd0a9269a1f0183712927b4", + "sha256:7b16250238de8dafca225647608dddc7bbb5dce3dd53b4d8e63c1cc287394c2f", + "sha256:7c051fe37c96b9878f37fa58906cb53ecd13dcb7341d3a85f1e2e2f6b10782d9", + "sha256:7d43ac9c7eeda5100fb0a7152fab7099c9cf9e5abd3bb36928eb98c7d7a339c6", + "sha256:81d1a7303bd02ca1c5be4aacd4db73593f573ba8e0c543c04c6da6275fd7a47e", + "sha256:8a06a0c02f5606330e8f2e2f3b7949877ca7e4024fa2bff5a4506bec66c49ec7", + "sha256:8fd6e191b92a10310f5a6cfe10d6f839d79d192fb02480bda325286bd1c7b385", + "sha256:943f208840777f34312c103a2d1caab02d780c4e9be26b3714acf6c4715ba7e1", + "sha256:9b87b23570565a6ddaa9244d87811c2ee9cffb02a753c8a2da9c077283d85845", + "sha256:a6cd6f1db75eb07332bd3710f58f5fce4967eadbf751bad653842750a61bda62", + "sha256:a966d5304b7d90c45c404914e06bbf02c5bf7e99685c6c12f0047ef2aa837142", + "sha256:a9c2885b4a8e6e39db5662d8b02ca6dcec796a45e48c2de12552841f061692ba", + "sha256:b0cfe925610f2fd59555bb7fc37bd739e4b197d33f2a8b2fae7b9c0c6640318c", + "sha256:b38a96b3eed8edc515b38257f03216f382c4389d022a8834667e2bc63c0c0c31", + "sha256:b8a03af1ce79b902a43f5f694c4ca8d92c2a4195db0966f08f266549e2fc49bc", + "sha256:bb869707d8e30645ed6766e44098600ca6cdf7989c22a3ea2b7966bb1d98d4b2", + "sha256:be1d2ce7e269215c3ee9a215e296b7a744aff4f39233486d2c4d77f5f0c561a6", + "sha256:c0640b4e9d008e13956b004d1971a23377b3d45491f87082161c92efb1e6c0d6", + "sha256:c09956606c08c4a7c6178a04ba2dd9388fcc5db32002ade9c9bc865ab156ab6d", + "sha256:c184ec5be465c0319440734491e1aa4709b5f3ba75fdfc9dbbc2ae715a7f6829", + "sha256:c1a70c51da9fa95bd75c167edb2eb3f3c4d27bc4ddd29e588f21649d014ec0b7", + "sha256:c29e758f0e734e1e90357ae01ec9c6daf19ff60a051192fe110d8fb25c62600e", + "sha256:c6258a3663780ae47ba73d43eb63c79c40ffddfb764e09b56df33be2f9479837", + "sha256:cafa52873ae12baa512a8721afc20de67a36886baae6a5f394ddef0ce9391f91", + "sha256:cd6a4afb20fb3c26a7bfd4611a0bbb24d93cbd746f5eb881f114b5e38fd55501", + "sha256:cdb87309de97c63cb9a69132e1cb16be470e58cffdfbad68fdd1dc292b22a840", + "sha256:d07d06dba5b5f7d80f9cc45501456e440f759fe79f9895922ed486237ac378a8", + "sha256:d3a51901066696c4af38c6c63a1f0aeffd5e282367ff475de8c191ec9609b56d", + "sha256:d5571b6978750601f783cea07fb6b666837010ca57e5cefa389c1d456f6222e2", + "sha256:d86c35d94b5499689354ccbc48438a79f449481ee6300f3e905748edceed78e7", + "sha256:dc0cff74cd36d7e1edba91baa09622c35a8a57025f2f2b7a41e3f83b1db73186", + "sha256:dc24d245026a72d9b4953729d31813edd4bd4e5c13622d96e27c284942d33f24", + "sha256:dca34367a4e77fcab0693e603a959878eaf2351585e7d752cac544bc6b2dee46", + "sha256:e2961b05f9c04a53da8bfc72f1910b6aec7205fcf3ac9c036d24619979bbee4b", + "sha256:e7fac06a539daef4fcf5d8288d0d21b412f9b750454cd5a3cf90484665db442a", + "sha256:eac0a143ef4f28f49670bf89cb15847eb80b375d55eba401ca2f777cd425f338", + "sha256:ef888f48eb9203ee1e04b9fb27429017b290fb916f1e7826c2f7808c88798394", + "sha256:f3055510fdfdb1775bc8baa359783022f70bb553f2d46e153c094dfcb08578ff", + "sha256:fa7e202feb683dad74f00dea066690448d0cfa310f8a277db06ec8eb466601b5", + "sha256:fc28e8d85d392a06434e9a934908d97e2cf453d69488d2bcd0bfb881497fd975", + "sha256:fd7bb378d82b88387dc10227cfd964f6273eb083e05299e9b97cbe075da12d11", + "sha256:ffcc8394123ea8d43fff8e5d000095fe7741ce3f8988366c5c919c4f5eb179d3" + ], + "markers": "python_version >= '3.7'", + "version": "==4.3.3" + }, "pyparsing": { "hashes": [ "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", @@ -591,6 +928,39 @@ "markers": "python_full_version >= '3.6.8'", "version": "==3.0.9" }, + "pyrsistent": { + "hashes": [ + "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", + "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", + "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", + "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", + "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", + "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", + "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", + "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", + "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", + "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", + "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", + "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", + "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", + "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", + "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", + "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", + "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", + "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", + "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", + "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", + "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", + "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", + "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", + "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", + "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", + "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", + "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" + ], + "markers": "python_version >= '3.7'", + "version": "==0.19.3" + }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", @@ -660,6 +1030,27 @@ "markers": "python_version >= '3.7' and python_version < '4'", "version": "==2.28.1" }, + "requests-futures": { + "hashes": [ + "sha256:35547502bf1958044716a03a2f47092a89efe8f9789ab0c4c528d9c9c30bc148", + "sha256:633804c773b960cef009efe2a5585483443c6eac3c39cc64beba2884013bcdd9" + ], + "version": "==1.0.0" + }, + "rfc3339-validator": { + "hashes": [ + "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", + "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa" + ], + "version": "==0.1.4" + }, + "rfc3987": { + "hashes": [ + "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53", + "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733" + ], + "version": "==1.3.8" + }, "ruamel.yaml": { "hashes": [ "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7", @@ -735,6 +1126,14 @@ "markers": "python_version >= '3.8'", "version": "==1.9.3" }, + "semantic-version": { + "hashes": [ + "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", + "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" + ], + "markers": "python_version >= '2.7'", + "version": "==2.10.0" + }, "setuptools": { "hashes": [ "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54", @@ -743,6 +1142,73 @@ "markers": "python_version >= '3.7'", "version": "==65.6.3" }, + "simplejson": { + "hashes": [ + "sha256:002f069c7bb9a86826616a78f1214fea5b993435720990eecb0bf10955b9cd0e", + "sha256:00b673f0b3caf37a3d993bccf30a97290da6313b6ecc7d66937e9cd906d8f840", + "sha256:07e408222931b1a2aab71e60e5f169fa7c0d74cacd4e0a6a0199716cb18dad76", + "sha256:0de746c8f76355c79fd15eccd7ecde0b137cd911bdcdc463fc5c36ec3d8b98ea", + "sha256:0f33d16fa7b5e2ed6ea85d7b31bc84cf8c73c40cc2c9f87071e0fffcd52f5342", + "sha256:0f49858b5fc802081b71269f4a3aa5c5500ec6553637c9a0630f30a2a6541ea7", + "sha256:17dbc7f71fa5b7e4a2acef38cf0be30461ae6659456a978ce7eeebeb5bdf9e1a", + "sha256:17ec5e408fb6615250c1f18fb4eac3b2b99a85e8613bfc2dfa54827d0bf7f3e1", + "sha256:1b4085151e00ab7ca66f269aff7153f0ec18589cb22e7ceb8b365709c723fdd0", + "sha256:1f169402069f8cf93e359f607725b1d920c4dbe5bda4c520025d5fad8d20c1b7", + "sha256:1fbacdbba3cf5a471c67a9ca6cd270bba9578d5bc22aef6028faebbdb98bbb15", + "sha256:252f7cc5524bb5507a08377a4a75aa7ff4645f3dfca814d38bdbcf0f3c34d1ce", + "sha256:2aeed35db00cdf5d49ff1e7d878afd38c86a5fead0f1d364d539ad4d7a869e0e", + "sha256:2cc76435569e6c19574a8e913cfccbed832249b2b3b360caee9a4caf8ff866bf", + "sha256:448ab14fa67b3ac235a8445d14ec6d56268c3dabbce78720f9efa6d698466710", + "sha256:4609feb2ae66c132c6dcbe01dbfd4f6431afb4ff17303e37ca128fb6297cebd2", + "sha256:46bafa7e794f0e91fde850d906b0dc29a624c726b27e75d23bc8c3e35a48f28b", + "sha256:4a6199d302ec7d889e1aa6b493aa8e40b4dfa4bd85708f8c8f0c64ce5b8e0986", + "sha256:4d8d016f70d241f82189bc9f6d1eb8558b3599861f2c501b3f32da7fdf4e92ac", + "sha256:503da91993cc671fe7ebbf120c3ce868278de8226f158336afde874f7b7aa871", + "sha256:54c63cc7857f16a20aa170ffda9ebce45a3b7ba764b67a5a95bfe7ae613a2710", + "sha256:58a429d2c2fa80834115b923ff689622de8f214cf0dc4afa9f59e824b444ab31", + "sha256:599e9c53d3203bc36ef68efec138ca76d201da7ac06a114fae78536a8c10e35b", + "sha256:5f3dd31309ae5cc9f2df51d2d5cac89722dac3c853042ebefcaf7ad06ca19387", + "sha256:6187cbea7fdede732fe0347ad08cd920ebd9faa30b6c48782cee494051ca97c6", + "sha256:622cf0e1f870f189a0757fdcad7998a0c1dd46b0e53aeac9960556c141319c83", + "sha256:638bdd2deaccd3b8e02b1783280bd82341df5e1faa59c4f0276f03f16eec13ea", + "sha256:6804ad50aaf581df5c982fc101b0d932638066fe191074ded783602eb1c8982a", + "sha256:7a4d9b266ae6db578719f1255c742e76ee4676593087f4f6b79a2bbae2b1dcc5", + "sha256:7a9476dcd72aeba7d55c4800b9cd2204201af3539894b8512d74597e35a3033a", + "sha256:7b95c5cf71c16e4fdaa724719aaf8ccbed533e2df57a20bcff825ceeead27688", + "sha256:8493d2c1a940471b07d7c9c356a3f4eee780df073da2917418d0fe8669b54f99", + "sha256:875cfb43b622672218045dc927a86fc7c4c8111264c1d303aca5de33d5df479e", + "sha256:8d762267c4af617e1798bd0151f626105d06a88f214e3874b77eb89106f899fe", + "sha256:94c17d01e4c65e63deec46c984bb810de5e3a1259eb6bacdca63f3efc9c4c673", + "sha256:96979ff7f0daf47422d5f95d2d006da3210e0490a166bce2529f59f55047fc67", + "sha256:97139bf5134d713710665a6edb9500d69b93642c4b6b44b20800232dbd0f5b39", + "sha256:989b31d586954e65170ad3ec597218a6790c401b82da6193e8a897a06aa7946e", + "sha256:98b4c824f15436f1b22fe6d73c42ffacb246f7efc4d9dbbee542dd72355ecc43", + "sha256:9aff3c24017a7819c76b2f177d4fe8334b3d4cb6f702a2d7c666b3d57c36ffb4", + "sha256:9db78e18624f94d7b5642bf487244f803dab844e771d92e83f85f22da21ffe2d", + "sha256:a0e6dd5a0b8c76fb7522470789f1af793d39d6edbd4e40853e7be550ad49c430", + "sha256:a2f70d8170c7e02166a4c91462581e6ae5f35e3351a6b6c5142adcb04c7153ac", + "sha256:a814227fa08cae435ac7a42dcd2a04a7ec4a3cee23b7f83f9544cd26f452dcc4", + "sha256:aa9ecdd1d7ecbc7d1066c37cfbe52f65adf64b11b22d481a98fe1d3675dfff4b", + "sha256:b2b19d7aa4e9a1e7bf8caaf5f478a790190c60136314f45bb7702cb5a9337266", + "sha256:b4997bd8332cef3923402a07351571788f552f55ea1394ffbfccd4d203a8a05f", + "sha256:b71fef8ee41d59509c7f4afac7f627ed143c9e6db9eb08cfbba85e4c4dc5e67b", + "sha256:bd67d6fad7f4cd7c9cb7fad32d78ce32862fdb574b898447987a5de22fd37d73", + "sha256:ca22993a1a00440392c6c76f39addab8d97c706d2a8bcc2c9b2b6cb2cd7f41df", + "sha256:ce1c0580372d3c9bfa151bd0721a9bd5647b9b2245d0588d813fdbd2eb5d6f22", + "sha256:d522f28f7b252454df86ac3db5a0e1fe5ae03c8fc0cd1592c912b07c9fad6c29", + "sha256:d5d25cc5dad31a10d7a8196125515cc3aa68187c8953459fcaf127c2c8410f51", + "sha256:d9f7a692c11de20cb8ec680584815315e03d1404a6e299d36489b0fb6447d98d", + "sha256:d9fa2ad4cabb5054faa8d4a44b84134b0ec9d1421f5e9264d057d6be4d13c7fa", + "sha256:db53a85f4db0dbd9e5f6277d9153bcaa2ccb87b0d672c6a35f19432b3f2301a3", + "sha256:db9d36c4c7997c2a2513a5d218fd90b53bfeaf7e727f94aaf3576973378b3bce", + "sha256:e80f02e68d25c222471fcc5d1933275b8eb396e5e40b7863e4e0a43b3c810059", + "sha256:e84bd1c29e83ec74a95de070473742eb52d08502f2428eff5751671081e0a0a6", + "sha256:f0e12bdafdf7e32c5ad4a073e325ea0d659d4277af8b3d8eccf3101c56879619", + "sha256:fd56a9e0c63a1f9c37621fe298c77795aefd2a26dca80dcae27688586c40b4bb" + ], + "markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==3.18.0" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -785,6 +1251,21 @@ ], "version": "==2.0.2" }, + "stack-data": { + "hashes": [ + "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", + "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8" + ], + "version": "==0.6.2" + }, + "swagger-spec-validator": { + "hashes": [ + "sha256:16a5ce08c772824a77b1a4a05efc047d72eef1ed53fb969dfe0a18f437ac30a8", + "sha256:174b5de4ab0899df9a57d35c880aaa515511c4b8b578d9d519b09a9596537055" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.3" + }, "sympy": { "hashes": [ "sha256:938f984ee2b1e8eae8a07b884c8b7a1146010040fccddc6539c54f401c8f6fcf", @@ -817,6 +1298,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==4.64.1" }, + "traitlets": { + "hashes": [ + "sha256:6cc57d6dc28c85d5365961726ffd19b538739347749e13ebe34e03323a0e8f84", + "sha256:c864831efa0ba6576d09b44884b34e41defc18c0d7e720b4a2d6698c842cab3e" + ], + "markers": "python_version >= '3.7'", + "version": "==5.8.0" + }, "typing-extensions": { "hashes": [ "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", @@ -825,6 +1314,77 @@ "markers": "python_version >= '3.7'", "version": "==4.4.0" }, + "ujson": { + "hashes": [ + "sha256:0f0f21157d1a84ad5fb54388f31767cde9c1a48fb29de7ef91d8887fdc2ca92b", + "sha256:1217326ba80eab1ff3f644f9eee065bd4fcc4e0c068a2f86f851cafd05737169", + "sha256:169b3fbd1188647c6ce00cb690915526aff86997c89a94c1b50432010ad7ae0f", + "sha256:1a7e4023c79d9a053c0c6b7c6ec50ea0af78381539ab27412e6af8d9410ae555", + "sha256:20d929a27822cb79e034cc5e0bb62daa0257ab197247cb6f35d5149f2f438983", + "sha256:213e41dc501b4a6d029873039da3e45ba7766b9f9eba97ecc4287c371f5403cc", + "sha256:23051f062bb257a87f3e55ea5a055ea98d56f08185fd415b34313268fa4d814e", + "sha256:24d40e01accbf4f0ba5181c4db1bac83749fdc1a5413466da582529f2a096085", + "sha256:2a24b9a96364f943a4754fa00b47855d0a01b84ac4b8b11ebf058c8fb68c1f77", + "sha256:2cb7a4bd91de97b4c8e57fb5289d1e5f3f019723b59d01d79e2df83783dce5a6", + "sha256:31288f85db6295ec63e128daff7285bb0bc220935e1b5107bd2d67e2dc687b7e", + "sha256:35423460954d0c61602da734697724e8dd5326a8aa7900123e584b935116203e", + "sha256:355ef5311854936b9edc7f1ce638f8257cb45fb6b9873f6b2d16a715eafc9570", + "sha256:3a68a204386648ec92ae9b526c1ffca528f38221eca70f98b4709390c3204275", + "sha256:3ad74eb53ee07e76c82f9ef8e7256c33873b81bd1f97a274fdb65ed87c2801f6", + "sha256:3b49a1014d396b962cb1d6c5f867f88b2c9aa9224c3860ee6ff63b2837a2965b", + "sha256:3f00dff3bf26bbb96791ceaf51ca95a3f34e2a21985748da855a650c38633b99", + "sha256:3f8b9e8c0420ce3dcc193ab6dd5628840ba79ad1b76e1816ac7ca6752c6bf035", + "sha256:52f536712d16a1f4e0f9d084982c28e11b7e70c397a1059069e4d28d53b3f522", + "sha256:551408a5c4306839b4a4f91503c96069204dbef2c7ed91a9dab08874ac1ed679", + "sha256:57904e5b49ffe93189349229dcd83f73862ef9bb8517e8f1e62d0ff73f313847", + "sha256:5e5715b0e2767b1987ceed0066980fc0a53421dd2f197b4f88460d474d6aef4c", + "sha256:61fdf24f7bddc402ce06b25e4bed7bf5ee4f03e23028a0a09116835c21d54888", + "sha256:6d0a60c5f065737a81249c819475d001a86da9a41900d888287e34619c9b4851", + "sha256:6ea9024749a41864bffb12da15aace4a3193c03ea97e77b069557aefa342811f", + "sha256:7174e81c137d480abe2f8036e9fb69157e509f2db0bfdee4488eb61dc3f0ff6b", + "sha256:72fa6e850831280a46704032721c75155fd41b839ddadabb6068ab218c56a37a", + "sha256:74671d1bde8c03daeb92abdbd972960978347b1a1d432c4c1b3c9284ce4094cf", + "sha256:798116b88158f13ed687417526100ef353ba4692e0aef8afbc622bd4bf7e9057", + "sha256:7a66c5a75b46545361271b4cf55560d9ad8bad794dd054a14b3fbb031407948e", + "sha256:7bde16cb18b95a8f68cc48715e4652b394b4fee68cb3f9fee0fd7d26b29a53b6", + "sha256:82bf24ea72a73c7d77402a7adc954931243e7ec4241d5738ae74894b53944458", + "sha256:87578ccfc35461c77e73660fb7d89bc577732f671364f442bda9e2c58b571765", + "sha256:91000612a2c30f50c6a009e6459a677e5c1972e51b59ecefd6063543dc47a4e9", + "sha256:9cf04fcc958bb52a6b6c301b780cb9afab3ec68713b17ca5aa423e1f99c2c1cf", + "sha256:9f4efcac06f45183b6ed8e2321554739a964a02d8aa3089ec343253d86bf2804", + "sha256:a51cbe614acb5ea8e2006e4fd80b4e8ea7c51ae51e42c75290012f4925a9d6ab", + "sha256:a8795de7ceadf84bcef88f947f91900d647eda234a2c6cc89912c25048cc0490", + "sha256:ae723b8308ac17a591bb8be9478b58c2c26fada23fd2211fc323796801ad7ff5", + "sha256:aff708a1b9e2d4979f74375ade0bff978be72c8bd90422a756d24d8a46d78059", + "sha256:b2aece7a92dffc9c78787f5f36e47e24b95495812270c27abc2fa430435a931d", + "sha256:b4420bfff18ca6aa39cfb22fe35d8aba3811fa1190c4f4e1ad816b0aad72f7e3", + "sha256:b64d2ac99503a9a5846157631addacc9f74e23f64d5a886fe910e9662660fa10", + "sha256:b72d4d948749e9c6afcd3d7af9ecc780fccde84e26d275c97273dd83c68a488b", + "sha256:b74396a655ac8a5299dcb765b4a17ba706e45c0df95818bcc6c13c4645a1c38e", + "sha256:b9e9d26600020cf635a4e58763959f5a59f8c70f75d72ebf26ceae94c2efac74", + "sha256:bca074d08f0677f05df8170b25ce6e61db3bcdfda78062444972fa6508dc825f", + "sha256:bca3c06c3f10ce03fa80b1301dce53765815c2578a24bd141ce4e5769bb7b709", + "sha256:bfb1fdf61763fafc0f8a20becf9cc4287c14fc41c0e14111d28c0d0dfda9ba56", + "sha256:c169e12642f0edf1dde607fb264721b88787b55a6da5fb3824302a9cac6f9405", + "sha256:c4277f6b1d24be30b7f87ec5346a87693cbc1e55bbc5877f573381b2250c4dd6", + "sha256:ceee5aef3e234c7e998fdb52e5236c41e50cdedc116360f7f1874a04829f6490", + "sha256:d1b5e233e42f53bbbc6961caeb492986e9f3aeacd30be811467583203873bad2", + "sha256:d6f4be832d97836d62ac0c148026ec021f9f36481f38e455b51538fcd949ed2a", + "sha256:dd5ccc036b0f4721b98e1c03ccc604e7f3e1db53866ccc92b2add40ace1782f7", + "sha256:dde59d2f06297fc4e70b2bae6e4a6b3ce89ca89697ab2c41e641abae3be96b0c", + "sha256:e4be7d865cb5161824e12db71cee83290ab72b3523566371a30d6ba1bd63402a", + "sha256:e97af10b6f13a498de197fb852e9242064217c25dfca79ebe7ad0cf2b0dd0cb7", + "sha256:f2d70b7f0b485f85141bbc518d0581ae96b912d9f8b070eaf68a9beef8eb1e60", + "sha256:f3e651f04b7510fae7d4706a4600cd43457f015df08702ece82a71339fc15c3d", + "sha256:f63535d51e039a984b2fb67ff87057ffe4216d4757c3cedf2fc846af88253cb7", + "sha256:f881e2d8a022e9285aa2eab6ba8674358dbcb2b57fa68618d88d62937ac3ff04", + "sha256:fadebaddd3eb71a5c986f0bdc7bb28b072bfc585c141eef37474fc66d1830b0a", + "sha256:fb1632b27e12c0b0df62f924c362206daf246a42c0080e959dd465810dc3482e", + "sha256:fecf83b2ef3cbce4f5cc573df6f6ded565e5e27c1af84038bae5ade306686d82" + ], + "markers": "python_version >= '3.7'", + "version": "==5.6.0" + }, "uncertainties": { "hashes": [ "sha256:4040ec64d298215531922a68fa1506dc6b1cb86cd7cca8eca848fcfe0f987151", @@ -832,6 +1392,13 @@ ], "version": "==3.1.7" }, + "uri-template": { + "hashes": [ + "sha256:934e4d09d108b70eb8a24410af8615294d09d279ce0e7cbcdaef1bd21f932b06", + "sha256:f1699c77b73b925cf4937eae31ab282a86dc885c333f2e942513f08f691fc7db" + ], + "version": "==1.2.0" + }, "urllib3": { "hashes": [ "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", @@ -839,6 +1406,28 @@ ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.26.13" + }, + "wcwidth": { + "hashes": [ + "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", + "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + ], + "version": "==0.2.5" + }, + "webcolors": { + "hashes": [ + "sha256:16d043d3a08fd6a1b1b7e3e9e62640d09790dce80d2bdd4792a175b35fe794a9", + "sha256:d98743d81d498a2d3eaf165196e65481f0d2ea85281463d856b1e51b09f62dce" + ], + "version": "==1.12" + }, + "zipp": { + "hashes": [ + "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", + "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" + ], + "markers": "python_version < '3.10'", + "version": "==3.11.0" } }, "develop": {} diff --git a/mlbands/README.md b/mlbands/README.md new file mode 100644 index 00000000..79e78ea3 --- /dev/null +++ b/mlbands/README.md @@ -0,0 +1,10 @@ +# in development + +Currently running tests with data from https://materialsproject.org/materials/mp-1103503 +GdSnPd +mp-1103503 + +## running package manager (pipenv) +https://medium.com/dsckiit/managing-dependencies-in-python-a580ded4f67 + +To start environment, run `pipenv shell` diff --git a/mlbands/diffraction-patterns.py b/mlbands/diffraction-patterns.py new file mode 100644 index 00000000..d5a1bd4b --- /dev/null +++ b/mlbands/diffraction-patterns.py @@ -0,0 +1,20 @@ +from mp_api.client import MPRester +from pymatgen.analysis.diffraction.xrd import XRDCalculator +from pymatgen.symmetry.analyzer import SpacegroupAnalyzer +import secret + +with MPRester(api_key=secret.API_KEY) as mpr: + # first retrieve the relevant structure + structure = mpr.get_structure_by_material_id('mp-1103503') + +# important to use the conventional structure to ensure +# that peaks are labelled with the conventional Miller indices +sga = SpacegroupAnalyzer(structure) +conventional_structure = sga.get_conventional_standard_structure() + +# this example shows how to obtain an XRD diffraction pattern +# these patterns are calculated on-the-fly from the structure +calculator = XRDCalculator(wavelength='CuKa') +pattern = calculator.get_pattern(conventional_structure) + +print(pattern) \ No newline at end of file diff --git a/mlbands/file.py b/mlbands/thermo.py similarity index 84% rename from mlbands/file.py rename to mlbands/thermo.py index ba14ad36..6c85267c 100644 --- a/mlbands/file.py +++ b/mlbands/thermo.py @@ -1,7 +1,7 @@ from mp_api.client import MPRester +import secret - -with MPRester(api_key='') as mpr: +with MPRester(api_key=secret.API_KEY) as mpr: # for a single material thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') diff --git a/notes.txt b/notes.txt deleted file mode 100644 index 0b1c5280..00000000 --- a/notes.txt +++ /dev/null @@ -1,4 +0,0 @@ -https://medium.com/dsckiit/managing-dependencies-in-python-a580ded4f67 - -To start environment, run: -pipenv shell \ No newline at end of file From 7b58b8ca7e42e09c82b72dc0c9a88640986991b8 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Mon, 2 Jan 2023 22:16:39 -0500 Subject: [PATCH 05/27] thermo: make sure it works (single mat get_data does not work, but collective get_data does (why)) --- mlbands/thermo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mlbands/thermo.py b/mlbands/thermo.py index 6c85267c..1c2bbf96 100644 --- a/mlbands/thermo.py +++ b/mlbands/thermo.py @@ -4,10 +4,11 @@ with MPRester(api_key=secret.API_KEY) as mpr: # for a single material - thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') + # thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') # DOES NOT WORK (WHY?) # for many materials, it's much faster to use # the `search` method, where additional material_ids can # be added to this list thermo_docs = mpr.thermo.search(material_ids=['mp-1103503']) - + + print(thermo_docs) From 868103a0f89643f1a197d420324fb9a2ed658182 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Mon, 2 Jan 2023 22:18:01 -0500 Subject: [PATCH 06/27] wget on mp-1103503; figure out a way to export cif / structural info automatically and/or in bulk --- mlbands/mp-1103503 | 239 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 mlbands/mp-1103503 diff --git a/mlbands/mp-1103503 b/mlbands/mp-1103503 new file mode 100644 index 00000000..523e6cf7 --- /dev/null +++ b/mlbands/mp-1103503 @@ -0,0 +1,239 @@ + + + + + + + + + + + + mp-1103503: GdSnPd (Orthorhombic, Pnma, 62) + + + + + +
+
+ Loading... +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file From 5d9dff8f9860835688c0975104c0e385f4555042 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Mon, 2 Jan 2023 22:56:33 -0500 Subject: [PATCH 07/27] this is how you get crystal structures (a b c data) --- mlbands/diffraction-patterns.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mlbands/diffraction-patterns.py b/mlbands/diffraction-patterns.py index d5a1bd4b..8ee873fe 100644 --- a/mlbands/diffraction-patterns.py +++ b/mlbands/diffraction-patterns.py @@ -12,9 +12,12 @@ sga = SpacegroupAnalyzer(structure) conventional_structure = sga.get_conventional_standard_structure() +print('\nstructure:\n{}\n\nsga:\n{}\n\nconventional structure:\n{}'.\ + format(structure,sga,conventional_structure)) + # this example shows how to obtain an XRD diffraction pattern # these patterns are calculated on-the-fly from the structure calculator = XRDCalculator(wavelength='CuKa') pattern = calculator.get_pattern(conventional_structure) -print(pattern) \ No newline at end of file +print('\npattern:\n',pattern) \ No newline at end of file From 25de7f61cd400a7192eba8313e124a97ce851869 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Mon, 2 Jan 2023 23:54:15 -0500 Subject: [PATCH 08/27] cif and json for example : --- mlbands/GdSnPd.cif | 38 +++++++++++++ mlbands/GdSnPd.json | 129 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 mlbands/GdSnPd.cif create mode 100644 mlbands/GdSnPd.json diff --git a/mlbands/GdSnPd.cif b/mlbands/GdSnPd.cif new file mode 100644 index 00000000..6d7ad1a7 --- /dev/null +++ b/mlbands/GdSnPd.cif @@ -0,0 +1,38 @@ +# generated using pymatgen +data_GdSnPd +_symmetry_space_group_name_H-M 'P 1' +_cell_length_a 4.65008947 +_cell_length_b 7.31311105 +_cell_length_c 7.95465153 +_cell_angle_alpha 90.00000000 +_cell_angle_beta 90.00000000 +_cell_angle_gamma 90.00000000 +_symmetry_Int_Tables_number 1 +_chemical_formula_structural GdSnPd +_chemical_formula_sum 'Gd4 Sn4 Pd4' +_cell_volume 270.51081729 +_cell_formula_units_Z 4 +loop_ + _symmetry_equiv_pos_site_id + _symmetry_equiv_pos_as_xyz + 1 'x, y, z' +loop_ + _atom_site_type_symbol + _atom_site_label + _atom_site_symmetry_multiplicity + _atom_site_fract_x + _atom_site_fract_y + _atom_site_fract_z + _atom_site_occupancy + Gd Gd0 1 0.25000000 0.51062534 0.20448969 1 + Gd Gd1 1 0.25000000 0.01062534 0.29551031 1 + Gd Gd2 1 0.75000000 0.48937466 0.79551031 1 + Gd Gd3 1 0.75000000 0.98937466 0.70448969 1 + Sn Sn4 1 0.25000000 0.69150951 0.58737792 1 + Sn Sn5 1 0.25000000 0.19150951 0.91262208 1 + Sn Sn6 1 0.75000000 0.30849049 0.41262208 1 + Sn Sn7 1 0.75000000 0.80849049 0.08737792 1 + Pd Pd8 1 0.25000000 0.79706757 0.91570644 1 + Pd Pd9 1 0.25000000 0.29706757 0.58429356 1 + Pd Pd10 1 0.75000000 0.20293243 0.08429356 1 + Pd Pd11 1 0.75000000 0.70293243 0.41570644 1 diff --git a/mlbands/GdSnPd.json b/mlbands/GdSnPd.json new file mode 100644 index 00000000..743ec76f --- /dev/null +++ b/mlbands/GdSnPd.json @@ -0,0 +1,129 @@ +{ + "@module": "pymatgen.core.structure", + "@class": "Structure", + "charge": 0, + "lattice": { + "matrix": [ + [4.65008947, 0.0, 2.847358592592156e-16], + [1.1760379519337024e-15, 7.31311105014398, 4.477989019683982e-16], + [0.0, 0.0, 7.954651530160617] + ], + "pbc": [true, true, true], + "a": 4.65008947, + "b": 7.31311105014398, + "c": 7.954651530160617, + "alpha": 90.0, + "beta": 90.0, + "gamma": 90.0, + "volume": 270.51081728514777 + }, + "sites": [{ + "species": [{ + "element": "Gd", + "occu": 1 + }], + "abc": [0.25, 0.51062534, 0.2044896850000001], + "xyz": [1.1625223675000007, 3.734259816437527, 1.6266441856873135], + "label": "Gd", + "properties": {} + }, { + "species": [{ + "element": "Gd", + "occu": 1 + }], + "abc": [0.25, 0.010625340000000039, 0.2955103149999999], + "xyz": [1.1625223675, 0.07770429136553712, 2.350681579392995], + "label": "Gd", + "properties": {} + }, { + "species": [{ + "element": "Gd", + "occu": 1 + }], + "abc": [0.75, 0.48937465999999996, 0.7955103149999999], + "xyz": [3.4875671025000003, 3.5788512337064526, 6.328007344473304], + "label": "Gd", + "properties": {} + }, { + "species": [{ + "element": "Gd", + "occu": 1 + }], + "abc": [0.75, 0.98937466, 0.7044896850000001], + "xyz": [3.4875671025000012, 7.235406758778443, 5.603969950767622], + "label": "Gd", + "properties": {} + }, { + "species": [{ + "element": "Sn", + "occu": 1 + }], + "abc": [0.25, 0.69150951, 0.5873779150000001], + "xyz": [1.162522367500001, 5.057085838860649, 4.672386630337304], + "label": "Sn", + "properties": {} + }, { + "species": [{ + "element": "Sn", + "occu": 1 + }], + "abc": [0.25, 0.19150950999999994, 0.9126220849999999], + "xyz": [1.1625223675000003, 1.4005303137886584, 7.259590664903621], + "label": "Sn", + "properties": {} + }, { + "species": [{ + "element": "Sn", + "occu": 1 + }], + "abc": [0.75, 0.30849048999999995, 0.41262208499999986], + "xyz": [3.4875671025000003, 2.2560252112833306, 3.2822648998233133], + "label": "Sn", + "properties": {} + }, { + "species": [{ + "element": "Sn", + "occu": 1 + }], + "abc": [0.75, 0.80849049, 0.08737791500000025], + "xyz": [3.487567102500001, 5.91258073635532, 0.6950608652569968], + "label": "Sn", + "properties": {} + }, { + "species": [{ + "element": "Pd", + "occu": 1 + }], + "abc": [0.25, 0.79706757, 0.915706435], + "xyz": [1.162522367500001, 5.82904365387841, 7.284125594350674], + "label": "Pd", + "properties": {} + }, { + "species": [{ + "element": "Pd", + "occu": 1 + }], + "abc": [0.25, 0.29706756999999984, 0.584293565], + "xyz": [1.1625223675000005, 2.172488128806419, 4.647851700890252], + "label": "Pd", + "properties": {} + }, { + "species": [{ + "element": "Pd", + "occu": 1 + }], + "abc": [0.75, 0.20293243000000005, 0.08429356499999996], + "xyz": [3.4875671025000003, 1.4840673962655702, 0.6705259358099435], + "label": "Pd", + "properties": {} + }, { + "species": [{ + "element": "Pd", + "occu": 1 + }], + "abc": [0.75, 0.70293243, 0.41570643500000015], + "xyz": [3.487567102500001, 5.14062292133756, 3.306799829270367], + "label": "Pd", + "properties": {} + }] +} From 95772a2f12c89ae4e58b1fd8e7f4c4b94360d0cd Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 01:19:21 -0500 Subject: [PATCH 09/27] pymatgen.core.sites.PeriodicSites features --- mlbands/diffraction-patterns.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/mlbands/diffraction-patterns.py b/mlbands/diffraction-patterns.py index 8ee873fe..e0179f71 100644 --- a/mlbands/diffraction-patterns.py +++ b/mlbands/diffraction-patterns.py @@ -12,12 +12,26 @@ sga = SpacegroupAnalyzer(structure) conventional_structure = sga.get_conventional_standard_structure() -print('\nstructure:\n{}\n\nsga:\n{}\n\nconventional structure:\n{}'.\ - format(structure,sga,conventional_structure)) - # this example shows how to obtain an XRD diffraction pattern # these patterns are calculated on-the-fly from the structure calculator = XRDCalculator(wavelength='CuKa') pattern = calculator.get_pattern(conventional_structure) -print('\npattern:\n',pattern) \ No newline at end of file +# print('\nstructure:\n{}\n\nsga:\n{}\n\nconventional structure:\n{}'.\ +# format(structure,sga,conventional_structure)) + +# print('\npattern:\n',pattern) + + +# print(conventional_structure) + +print(conventional_structure.lattice) +print(conventional_structure.sites) #https://pymatgen.org/pymatgen.core.sites.html?highlight=periodicsite#pymatgen.core.sites.PeriodicSite + +Nsites = len(conventional_structure.sites) +for i in range(Nsites): + print('\n\n') + # print(conventional_structure.sites[i]) + print(conventional_structure.sites[i].species) + print(conventional_structure.sites[i].coords) + print(conventional_structure.sites[i].frac_coords) From f05190f44b10aff999bbfed47a05585fdb104101 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 12:43:31 -0500 Subject: [PATCH 10/27] pass all these initial files to new draft folder --- {mlbands => draft}/GdSnPd.cif | 0 {mlbands => draft}/GdSnPd.json | 0 {mlbands => draft}/README.md | 0 {mlbands => draft}/diffraction-patterns.py | 0 {mlbands => draft}/mp-1103503 | 0 {mlbands => draft}/thermo.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {mlbands => draft}/GdSnPd.cif (100%) rename {mlbands => draft}/GdSnPd.json (100%) rename {mlbands => draft}/README.md (100%) rename {mlbands => draft}/diffraction-patterns.py (100%) rename {mlbands => draft}/mp-1103503 (100%) rename {mlbands => draft}/thermo.py (100%) diff --git a/mlbands/GdSnPd.cif b/draft/GdSnPd.cif similarity index 100% rename from mlbands/GdSnPd.cif rename to draft/GdSnPd.cif diff --git a/mlbands/GdSnPd.json b/draft/GdSnPd.json similarity index 100% rename from mlbands/GdSnPd.json rename to draft/GdSnPd.json diff --git a/mlbands/README.md b/draft/README.md similarity index 100% rename from mlbands/README.md rename to draft/README.md diff --git a/mlbands/diffraction-patterns.py b/draft/diffraction-patterns.py similarity index 100% rename from mlbands/diffraction-patterns.py rename to draft/diffraction-patterns.py diff --git a/mlbands/mp-1103503 b/draft/mp-1103503 similarity index 100% rename from mlbands/mp-1103503 rename to draft/mp-1103503 diff --git a/mlbands/thermo.py b/draft/thermo.py similarity index 100% rename from mlbands/thermo.py rename to draft/thermo.py From fa9838806d269140b11fa4687333941880aa6c6e Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 12:44:09 -0500 Subject: [PATCH 11/27] start transcribing material so far into modular format for package generation --- .gitignore | 5 ++- mlbands/__init__.py | 2 ++ mlbands/main.py | 77 ++++++++++++++++++++++++++++++++++++++++++++ setup.py | 41 +++++++++++++++++++++++ tests/__init__.py | 0 tests/test_module.py | 13 ++++++++ 6 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 mlbands/__init__.py create mode 100644 mlbands/main.py create mode 100644 setup.py create mode 100644 tests/__init__.py create mode 100644 tests/test_module.py diff --git a/.gitignore b/.gitignore index a50d50a6..6faa1f2d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +__pycache__ +*.egg-info/ + old deploy-notes venv -secret.py \ No newline at end of file +secret.py diff --git a/mlbands/__init__.py b/mlbands/__init__.py new file mode 100644 index 00000000..4b043126 --- /dev/null +++ b/mlbands/__init__.py @@ -0,0 +1,2 @@ +from mlbands.secret import * +from mlbands.main import * \ No newline at end of file diff --git a/mlbands/main.py b/mlbands/main.py new file mode 100644 index 00000000..a93bd493 --- /dev/null +++ b/mlbands/main.py @@ -0,0 +1,77 @@ +from mp_api.client import MPRester +from pymatgen.analysis.diffraction.xrd import XRDCalculator +from pymatgen.symmetry.analyzer import SpacegroupAnalyzer + + +class Material: + def __init__(self): + self.API_KEY = '' + self.structure_ID = 'mp-1103503' + + + def load_structure(self, api_key, conventional=True): + with MPRester(api_key) as mpr: + # first retrieve the relevant structure + structure = mpr.get_structure_by_material_id(self.structure_ID) + + # important to use the conventional structure to ensure + # that peaks are labelled with the conventional Miller indices + sga = SpacegroupAnalyzer(structure) + conventional_structure = sga.get_conventional_standard_structure() + + if conventional: + structure = conventional_structure + + return structure + + + def structural(self): + + # with MPRester(api_key=self.API_KEY) as mpr: + # # first retrieve the relevant structure + # structure = mpr.get_structure_by_material_id(self.structure_ID) + + conventional_structure = Material().load_structure(self.API_KEY) + + + # print('\nstructure:\n{}\n\nsga:\n{}\n\nconventional structure:\n{}'.\ + # format(structure,sga,conventional_structure)) + + # print(conventional_structure) + + print(conventional_structure.lattice) + print(conventional_structure.sites) #https://pymatgen.org/pymatgen.core.sites.html?highlight=periodicsite#pymatgen.core.sites.PeriodicSite + + Nsites = len(conventional_structure.sites) + for i in range(Nsites): + print('\n\n') + # print(conventional_structure.sites[i]) + print(conventional_structure.sites[i].species) + print(conventional_structure.sites[i].coords) + print(conventional_structure.sites[i].frac_coords) + + def XRD(self): + + conventional_structure = Material().load_structure(self.API_KEY) + + # this example shows how to obtain an XRD diffraction pattern + # these patterns are calculated on-the-fly from the structure + calculator = XRDCalculator(wavelength='CuKa') + pattern = calculator.get_pattern(conventional_structure) + + print('\npattern:\n',pattern) + + + def thermo(self): + + with MPRester(api_key=self.API_KEY) as mpr: + + # for a single material + # thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') # DOES NOT WORK (WHY?) + + # for many materials, it's much faster to use + # the `search` method, where additional material_ids can + # be added to this list + thermo_docs = mpr.thermo.search(material_ids=[self.structure_ID]) + + print(thermo_docs) diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..9cc5f0f2 --- /dev/null +++ b/setup.py @@ -0,0 +1,41 @@ +# Always prefer setuptools over distutils +from setuptools import setup, find_packages + +# To use a consistent encoding +from codecs import open +from os import path + +# The directory containing this file +HERE = path.abspath(path.dirname(__file__)) + +# Get the long description from the README file +with open(path.join(HERE, 'README.md'), encoding='utf-8') as f: + long_description = f.read() + +# This call to setup() does all the work +setup( + name="mlbands", + version="1.0.0", + description="A Python package that implements automatic prediction of electronic band gaps for a set of materials based on training data", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/andrewrgarcia/rewotes/tree/andrewrgarcia", + author="Andrew Garcia, PhD", + license="MIT", + classifiers=[ + "Intended Audience :: Information Technology", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Operating System :: OS Independent" + ], + packages=["mlbands"], + include_package_data=True, + install_requires=["numpy"] +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_module.py b/tests/test_module.py new file mode 100644 index 00000000..a8dddf4b --- /dev/null +++ b/tests/test_module.py @@ -0,0 +1,13 @@ +import mlbands + +def test_general(): + material = mlbands.Material() + material.API_KEY = mlbands.SECRET_KEY + + material.structural() + material.XRD() + material.thermo() + + + +test_general() From b1a44b7869f3fb8a02ec2704b8ce00f53c61b7d2 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 13:37:07 -0500 Subject: [PATCH 12/27] MPRester takes a while to retrieve ElectronicStructureDoc [single] document; must find a way to speed up retrieval --- mlbands/main.py | 12 +++++++++++- tests/test_module.py | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mlbands/main.py b/mlbands/main.py index a93bd493..3b9c90c6 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -8,7 +8,17 @@ def __init__(self): self.API_KEY = '' self.structure_ID = 'mp-1103503' - + def bands(self): + with MPRester(api_key=self.API_KEY) as mpr: + bandstructure = mpr.get_bandstructure_by_material_id(self.structure_ID) + + band_gap = bandstructure.get_band_gap() + + print('Band Gap: {} eV\nDirect Gap: {}\nMetallic: {}'.\ + format(band_gap['energy'],\ + 'Yes' if band_gap['direct'] else 'No',\ + 'No' if band_gap['transition'] else 'Yes')) + def load_structure(self, api_key, conventional=True): with MPRester(api_key) as mpr: # first retrieve the relevant structure diff --git a/tests/test_module.py b/tests/test_module.py index a8dddf4b..fa4e642f 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -9,5 +9,11 @@ def test_general(): material.thermo() +def test_bands(): + material = mlbands.Material() + material.API_KEY = mlbands.SECRET_KEY + + material.bands() test_general() +test_bands() \ No newline at end of file From 13741b0df05ca3f94afcf76845b5636e7c8fd2b0 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 17:15:07 -0500 Subject: [PATCH 13/27] develop bulk band_gap download algorithm; consider parallel processing integration (pathos python package) --- mlbands/main.py | 20 +++++++++++++------- tests/test_module.py | 8 +++++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/mlbands/main.py b/mlbands/main.py index 3b9c90c6..5e3f421f 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -10,14 +10,20 @@ def __init__(self): def bands(self): with MPRester(api_key=self.API_KEY) as mpr: - bandstructure = mpr.get_bandstructure_by_material_id(self.structure_ID) + #adapted from https://matsci.org/t/obtain-large-numbers-of-band-structures/3780 + bandstructure = None + try: + bandstructure = mpr.get_bandstructure_by_material_id(self.structure_ID,line_mode=False) + except: + pass + if bandstructure: + band_gap = bandstructure.get_band_gap() + + print('Band Gap: {} eV\nDirect Gap: {}\nMetallic: {}'.\ + format(band_gap['energy'],\ + 'Yes' if band_gap['direct'] else 'No',\ + 'No' if band_gap['transition'] else 'Yes')) - band_gap = bandstructure.get_band_gap() - - print('Band Gap: {} eV\nDirect Gap: {}\nMetallic: {}'.\ - format(band_gap['energy'],\ - 'Yes' if band_gap['direct'] else 'No',\ - 'No' if band_gap['transition'] else 'Yes')) def load_structure(self, api_key, conventional=True): with MPRester(api_key) as mpr: diff --git a/tests/test_module.py b/tests/test_module.py index fa4e642f..42c11f4d 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -10,10 +10,12 @@ def test_general(): def test_bands(): - material = mlbands.Material() - material.API_KEY = mlbands.SECRET_KEY - material.bands() + for i in range(1,50): + material = mlbands.Material() + material.API_KEY = mlbands.SECRET_KEY + material.structure_ID = 'mp-'+str(i) + material.bands() test_general() test_bands() \ No newline at end of file From 2082e8d6626eb09fedff81d7888aa6f71b0bf422 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 22:27:21 -0500 Subject: [PATCH 14/27] script for extra functions; current functions make axes on all 3D of equal scale --- mlbands/misc.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 mlbands/misc.py diff --git a/mlbands/misc.py b/mlbands/misc.py new file mode 100644 index 00000000..bd1e96ba --- /dev/null +++ b/mlbands/misc.py @@ -0,0 +1,25 @@ +import numpy as np + +def set_axes_radius(ax, origin, radius): + '''set_axes_radius and set_axes_equal * * * Credit: + Mateen Ulhaq (answered Jun 3 '18 at 7:55) + https://stackoverflow.com/questions/13685386/matplotlib-equal-unit-length-with-equal-aspect-ratio-z-axis-is-not-equal-to''' + ax.set_xlim3d([origin[0] - radius, origin[0] + radius]) + ax.set_ylim3d([origin[1] - radius, origin[1] + radius]) + ax.set_zlim3d([origin[2] - radius, origin[2] + radius]) +def set_axes_equal(ax): + '''Make axes of 3D plot have equal scale so that spheres appear as spheres, + cubes as cubes, etc.. This is one possible solution to Matplotlib's + ax.set_aspect('equal') and ax.axis('equal') not working for 3D. + Input + ax: a matplotlib axis, e.g., as output from plt.gca(). + ''' + limits = np.array([ + ax.get_xlim3d(), + ax.get_ylim3d(), + ax.get_zlim3d(), + ]) + + origin = np.mean(limits, axis=1) + radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0])) + set_axes_radius(ax, origin, radius) \ No newline at end of file From 2c493cb9f8b63a5304b740f3f6ae37570377faf1 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 22:28:59 -0500 Subject: [PATCH 15/27] transformation of coordinate crystal data to xyz / box arrays --- Pipfile | 2 + Pipfile.lock | 461 ++++++++++++++++++++++++++++--------------- mlbands/__init__.py | 3 +- mlbands/main.py | 95 +++++++-- tests/test_module.py | 23 ++- 5 files changed, 405 insertions(+), 179 deletions(-) diff --git a/Pipfile b/Pipfile index 139911fe..cb1eaee8 100644 --- a/Pipfile +++ b/Pipfile @@ -6,6 +6,8 @@ name = "pypi" [packages] mp-api = "*" mpcontribs-client = "*" +mendeleev = "*" +numpy = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 7b0e5844..14a4cab8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f6818e8497b025f4e6ed6dde0eddcc1fdcb22170c304fc6fd2bebc9a99e0141f" + "sha256": "95fffd4403cfe84095601c56a5f1cb22cb69eebd2d9b27012dcd13633b415e6d" }, "pipfile-spec": 6, "requires": { @@ -85,6 +85,14 @@ "markers": "python_full_version >= '3.6.0'", "version": "==2.1.1" }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==0.4.6" + }, "contourpy": { "hashes": [ "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17", @@ -236,6 +244,72 @@ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.18.2" }, + "greenlet": { + "hashes": [ + "sha256:0109af1138afbfb8ae647e31a2b1ab030f58b21dd8528c27beaeb0093b7938a9", + "sha256:0459d94f73265744fee4c2d5ec44c6f34aa8a31017e6e9de770f7bcf29710be9", + "sha256:04957dc96669be041e0c260964cfef4c77287f07c40452e61abe19d647505581", + "sha256:0722c9be0797f544a3ed212569ca3fe3d9d1a1b13942d10dd6f0e8601e484d26", + "sha256:097e3dae69321e9100202fc62977f687454cd0ea147d0fd5a766e57450c569fd", + "sha256:0b493db84d124805865adc587532ebad30efa68f79ad68f11b336e0a51ec86c2", + "sha256:13ba6e8e326e2116c954074c994da14954982ba2795aebb881c07ac5d093a58a", + "sha256:13ebf93c343dd8bd010cd98e617cb4c1c1f352a0cf2524c82d3814154116aa82", + "sha256:1407fe45246632d0ffb7a3f4a520ba4e6051fc2cbd61ba1f806900c27f47706a", + "sha256:1bf633a50cc93ed17e494015897361010fc08700d92676c87931d3ea464123ce", + "sha256:2d0bac0385d2b43a7bd1d651621a4e0f1380abc63d6fb1012213a401cbd5bf8f", + "sha256:3001d00eba6bbf084ae60ec7f4bb8ed375748f53aeaefaf2a37d9f0370558524", + "sha256:356e4519d4dfa766d50ecc498544b44c0249b6de66426041d7f8b751de4d6b48", + "sha256:38255a3f1e8942573b067510f9611fc9e38196077b0c8eb7a8c795e105f9ce77", + "sha256:3d75b8d013086b08e801fbbb896f7d5c9e6ccd44f13a9241d2bf7c0df9eda928", + "sha256:41b825d65f31e394b523c84db84f9383a2f7eefc13d987f308f4663794d2687e", + "sha256:42e602564460da0e8ee67cb6d7236363ee5e131aa15943b6670e44e5c2ed0f67", + "sha256:4aeaebcd91d9fee9aa768c1b39cb12214b30bf36d2b7370505a9f2165fedd8d9", + "sha256:4c8b1c43e75c42a6cafcc71defa9e01ead39ae80bd733a2608b297412beede68", + "sha256:4d37990425b4687ade27810e3b1a1c37825d242ebc275066cfee8cb6b8829ccd", + "sha256:4f09b0010e55bec3239278f642a8a506b91034f03a4fb28289a7d448a67f1515", + "sha256:505138d4fa69462447a562a7c2ef723c6025ba12ac04478bc1ce2fcc279a2db5", + "sha256:5067920de254f1a2dee8d3d9d7e4e03718e8fd2d2d9db962c8c9fa781ae82a39", + "sha256:56961cfca7da2fdd178f95ca407fa330c64f33289e1804b592a77d5593d9bd94", + "sha256:5a8e05057fab2a365c81abc696cb753da7549d20266e8511eb6c9d9f72fe3e92", + "sha256:659f167f419a4609bc0516fb18ea69ed39dbb25594934bd2dd4d0401660e8a1e", + "sha256:662e8f7cad915ba75d8017b3e601afc01ef20deeeabf281bd00369de196d7726", + "sha256:6f61d71bbc9b4a3de768371b210d906726535d6ca43506737682caa754b956cd", + "sha256:72b00a8e7c25dcea5946692a2485b1a0c0661ed93ecfedfa9b6687bd89a24ef5", + "sha256:811e1d37d60b47cb8126e0a929b58c046251f28117cb16fcd371eed61f66b764", + "sha256:81b0ea3715bf6a848d6f7149d25bf018fd24554a4be01fcbbe3fdc78e890b955", + "sha256:88c8d517e78acdf7df8a2134a3c4b964415b575d2840a2746ddb1cc6175f8608", + "sha256:8dca09dedf1bd8684767bc736cc20c97c29bc0c04c413e3276e0962cd7aeb148", + "sha256:974a39bdb8c90a85982cdb78a103a32e0b1be986d411303064b28a80611f6e51", + "sha256:9e112e03d37987d7b90c1e98ba5e1b59e1645226d78d73282f45b326f7bddcb9", + "sha256:9e9744c657d896c7b580455e739899e492a4a452e2dd4d2b3e459f6b244a638d", + "sha256:9ed358312e63bf683b9ef22c8e442ef6c5c02973f0c2a939ec1d7b50c974015c", + "sha256:9f2c221eecb7ead00b8e3ddb913c67f75cba078fd1d326053225a3f59d850d72", + "sha256:a20d33124935d27b80e6fdacbd34205732660e0a1d35d8b10b3328179a2b51a1", + "sha256:a4c0757db9bd08470ff8277791795e70d0bf035a011a528ee9a5ce9454b6cba2", + "sha256:afe07421c969e259e9403c3bb658968702bc3b78ec0b6fde3ae1e73440529c23", + "sha256:b1992ba9d4780d9af9726bbcef6a1db12d9ab1ccc35e5773685a24b7fb2758eb", + "sha256:b23d2a46d53210b498e5b701a1913697671988f4bf8e10f935433f6e7c332fb6", + "sha256:b5e83e4de81dcc9425598d9469a624826a0b1211380ac444c7c791d4a2137c19", + "sha256:be35822f35f99dcc48152c9839d0171a06186f2d71ef76dc57fa556cc9bf6b45", + "sha256:be9e0fb2ada7e5124f5282d6381903183ecc73ea019568d6d63d33f25b2a9000", + "sha256:c140e7eb5ce47249668056edf3b7e9900c6a2e22fb0eaf0513f18a1b2c14e1da", + "sha256:c6a08799e9e88052221adca55741bf106ec7ea0710bca635c208b751f0d5b617", + "sha256:cb242fc2cda5a307a7698c93173d3627a2a90d00507bccf5bc228851e8304963", + "sha256:cce1e90dd302f45716a7715517c6aa0468af0bf38e814ad4eab58e88fc09f7f7", + "sha256:cd4ccc364cf75d1422e66e247e52a93da6a9b73cefa8cad696f3cbbb75af179d", + "sha256:d21681f09e297a5adaa73060737e3aa1279a13ecdcfcc6ef66c292cb25125b2d", + "sha256:d38ffd0e81ba8ef347d2be0772e899c289b59ff150ebbbbe05dc61b1246eb4e0", + "sha256:d566b82e92ff2e09dd6342df7e0eb4ff6275a3f08db284888dcd98134dbd4243", + "sha256:d5b0ff9878333823226d270417f24f4d06f235cb3e54d1103b71ea537a6a86ce", + "sha256:d6ee1aa7ab36475035eb48c01efae87d37936a8173fc4d7b10bb02c2d75dd8f6", + "sha256:db38f80540083ea33bdab614a9d28bcec4b54daa5aff1668d7827a9fc769ae0a", + "sha256:ea688d11707d30e212e0110a1aac7f7f3f542a259235d396f88be68b649e47d1", + "sha256:f6327b6907b4cb72f650a5b7b1be23a2aab395017aa6f1adb13069d66360eb3f", + "sha256:fb412b7db83fe56847df9c47b6fe3f13911b06339c2aa02dcc09dce8bbf582cd" + ], + "markers": "python_version >= '3' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", + "version": "==2.0.1" + }, "idna": { "hashes": [ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", @@ -254,11 +328,11 @@ }, "ipython": { "hashes": [ - "sha256:352042ddcb019f7c04e48171b4dd78e4c4bb67bf97030d170e154aac42b656d9", - "sha256:882899fe78d5417a0aa07f995db298fa28b58faeba2112d2e3a4c95fe14bb738" + "sha256:da01e6df1501e6e7c32b5084212ddadd4ee2471602e2cf3e0190f4de6b0ea481", + "sha256:f3bf2c08505ad2c3f4ed5c46ae0331a8547d36bf4b21a451e8ae80c0791db95b" ], "markers": "python_version >= '3.8'", - "version": "==8.7.0" + "version": "==8.8.0" }, "isoduration": { "hashes": [ @@ -441,6 +515,14 @@ "markers": "python_version >= '3.5'", "version": "==0.1.6" }, + "mendeleev": { + "hashes": [ + "sha256:6aec55166046813d92e7253498fe5c8f040bc920afc0893c80feda8ab6e0064e", + "sha256:d3fada5e72f3b0fc90e83d7f95dac3cb312303dd17abf3fd3c16992febddad32" + ], + "index": "pypi", + "version": "==0.12.1" + }, "monotonic": { "hashes": [ "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7", @@ -466,11 +548,11 @@ }, "mpcontribs-client": { "hashes": [ - "sha256:2a099170e6397c71ab7b2673c228b0911e2993af8404a1f908e683f25eb78851", - "sha256:88de27267d1834c694f4643a896143156563bf700897d11ac5075138dc782eb9" + "sha256:468aec08addfb00921af389287994786bf203fa9078a367a01e5cbbfbaa95aee", + "sha256:9a939f3ec4d2415904db1830c088b2f3fe7bb49f4f8f7db69ce0403ea91c7d76" ], "index": "pypi", - "version": "==5.0.6" + "version": "==5.0.7" }, "mpmath": { "hashes": [ @@ -575,7 +657,7 @@ "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf", "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7" ], - "markers": "python_version >= '3.8'", + "index": "pypi", "version": "==1.24.1" }, "packaging": { @@ -651,70 +733,72 @@ }, "pillow": { "hashes": [ - "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040", - "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8", - "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65", - "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2", - "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627", - "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07", - "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef", - "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535", - "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c", - "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc", - "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3", - "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1", - "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c", - "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa", - "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32", - "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502", - "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4", - "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f", - "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812", - "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636", - "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20", - "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c", - "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91", - "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe", - "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b", - "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad", - "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9", - "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72", - "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4", - "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de", - "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29", - "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee", - "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c", - "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7", - "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11", - "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c", - "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c", - "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448", - "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b", - "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20", - "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228", - "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd", - "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699", - "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b", - "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2", - "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4", - "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c", - "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f", - "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2", - "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c", - "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3", - "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193", - "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48", - "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02", - "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8", - "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e", - "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f", - "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b", - "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74", - "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb", - "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0" + "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b", + "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e", + "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35", + "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153", + "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9", + "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569", + "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57", + "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8", + "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264", + "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157", + "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133", + "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab", + "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6", + "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5", + "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df", + "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503", + "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b", + "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa", + "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327", + "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493", + "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d", + "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4", + "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4", + "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35", + "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2", + "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c", + "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011", + "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a", + "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e", + "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f", + "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57", + "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9", + "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5", + "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d", + "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e", + "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815", + "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0", + "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b", + "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd", + "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c", + "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3", + "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5", + "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee", + "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343", + "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb", + "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47", + "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed", + "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837", + "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286", + "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28", + "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628", + "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df", + "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d", + "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d", + "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a", + "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6", + "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336", + "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132", + "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070", + "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe", + "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a", + "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391", + "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a" ], "markers": "python_version >= '3.7'", - "version": "==9.3.0" + "version": "==9.4.0" }, "pint": { "hashes": [ @@ -811,6 +895,13 @@ "markers": "python_version >= '3.7'", "version": "==1.10.4" }, + "pyfiglet": { + "hashes": [ + "sha256:c6c2321755d09267b438ec7b936825a4910fec696292139e664ca8670e103639", + "sha256:d555bcea17fbeaf70eaefa48bb119352487e629c9b56f30f383e2c62dd67a01c" + ], + "version": "==0.8.post1" + }, "pygments": { "hashes": [ "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", @@ -1101,30 +1192,30 @@ }, "scipy": { "hashes": [ - "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31", - "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108", - "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0", - "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b", - "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e", - "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e", - "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5", - "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840", - "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58", - "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523", - "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd", - "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab", - "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c", - "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb", - "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096", - "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0", - "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc", - "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9", - "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c", - "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95", - "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027" - ], - "markers": "python_version >= '3.8'", - "version": "==1.9.3" + "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a", + "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728", + "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809", + "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be", + "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2", + "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2", + "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3", + "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210", + "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8", + "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4", + "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143", + "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c", + "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694", + "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48", + "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7", + "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f", + "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54", + "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686", + "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd", + "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540", + "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8" + ], + "markers": "python_version < '3.12' and python_version >= '3.8'", + "version": "==1.10.0" }, "semantic-version": { "hashes": [ @@ -1144,70 +1235,81 @@ }, "simplejson": { "hashes": [ - "sha256:002f069c7bb9a86826616a78f1214fea5b993435720990eecb0bf10955b9cd0e", - "sha256:00b673f0b3caf37a3d993bccf30a97290da6313b6ecc7d66937e9cd906d8f840", - "sha256:07e408222931b1a2aab71e60e5f169fa7c0d74cacd4e0a6a0199716cb18dad76", - "sha256:0de746c8f76355c79fd15eccd7ecde0b137cd911bdcdc463fc5c36ec3d8b98ea", - "sha256:0f33d16fa7b5e2ed6ea85d7b31bc84cf8c73c40cc2c9f87071e0fffcd52f5342", - "sha256:0f49858b5fc802081b71269f4a3aa5c5500ec6553637c9a0630f30a2a6541ea7", - "sha256:17dbc7f71fa5b7e4a2acef38cf0be30461ae6659456a978ce7eeebeb5bdf9e1a", - "sha256:17ec5e408fb6615250c1f18fb4eac3b2b99a85e8613bfc2dfa54827d0bf7f3e1", - "sha256:1b4085151e00ab7ca66f269aff7153f0ec18589cb22e7ceb8b365709c723fdd0", - "sha256:1f169402069f8cf93e359f607725b1d920c4dbe5bda4c520025d5fad8d20c1b7", - "sha256:1fbacdbba3cf5a471c67a9ca6cd270bba9578d5bc22aef6028faebbdb98bbb15", - "sha256:252f7cc5524bb5507a08377a4a75aa7ff4645f3dfca814d38bdbcf0f3c34d1ce", - "sha256:2aeed35db00cdf5d49ff1e7d878afd38c86a5fead0f1d364d539ad4d7a869e0e", - "sha256:2cc76435569e6c19574a8e913cfccbed832249b2b3b360caee9a4caf8ff866bf", - "sha256:448ab14fa67b3ac235a8445d14ec6d56268c3dabbce78720f9efa6d698466710", - "sha256:4609feb2ae66c132c6dcbe01dbfd4f6431afb4ff17303e37ca128fb6297cebd2", - "sha256:46bafa7e794f0e91fde850d906b0dc29a624c726b27e75d23bc8c3e35a48f28b", - "sha256:4a6199d302ec7d889e1aa6b493aa8e40b4dfa4bd85708f8c8f0c64ce5b8e0986", - "sha256:4d8d016f70d241f82189bc9f6d1eb8558b3599861f2c501b3f32da7fdf4e92ac", - "sha256:503da91993cc671fe7ebbf120c3ce868278de8226f158336afde874f7b7aa871", - "sha256:54c63cc7857f16a20aa170ffda9ebce45a3b7ba764b67a5a95bfe7ae613a2710", - "sha256:58a429d2c2fa80834115b923ff689622de8f214cf0dc4afa9f59e824b444ab31", - "sha256:599e9c53d3203bc36ef68efec138ca76d201da7ac06a114fae78536a8c10e35b", - "sha256:5f3dd31309ae5cc9f2df51d2d5cac89722dac3c853042ebefcaf7ad06ca19387", - "sha256:6187cbea7fdede732fe0347ad08cd920ebd9faa30b6c48782cee494051ca97c6", - "sha256:622cf0e1f870f189a0757fdcad7998a0c1dd46b0e53aeac9960556c141319c83", - "sha256:638bdd2deaccd3b8e02b1783280bd82341df5e1faa59c4f0276f03f16eec13ea", - "sha256:6804ad50aaf581df5c982fc101b0d932638066fe191074ded783602eb1c8982a", - "sha256:7a4d9b266ae6db578719f1255c742e76ee4676593087f4f6b79a2bbae2b1dcc5", - "sha256:7a9476dcd72aeba7d55c4800b9cd2204201af3539894b8512d74597e35a3033a", - "sha256:7b95c5cf71c16e4fdaa724719aaf8ccbed533e2df57a20bcff825ceeead27688", - "sha256:8493d2c1a940471b07d7c9c356a3f4eee780df073da2917418d0fe8669b54f99", - "sha256:875cfb43b622672218045dc927a86fc7c4c8111264c1d303aca5de33d5df479e", - "sha256:8d762267c4af617e1798bd0151f626105d06a88f214e3874b77eb89106f899fe", - "sha256:94c17d01e4c65e63deec46c984bb810de5e3a1259eb6bacdca63f3efc9c4c673", - "sha256:96979ff7f0daf47422d5f95d2d006da3210e0490a166bce2529f59f55047fc67", - "sha256:97139bf5134d713710665a6edb9500d69b93642c4b6b44b20800232dbd0f5b39", - "sha256:989b31d586954e65170ad3ec597218a6790c401b82da6193e8a897a06aa7946e", - "sha256:98b4c824f15436f1b22fe6d73c42ffacb246f7efc4d9dbbee542dd72355ecc43", - "sha256:9aff3c24017a7819c76b2f177d4fe8334b3d4cb6f702a2d7c666b3d57c36ffb4", - "sha256:9db78e18624f94d7b5642bf487244f803dab844e771d92e83f85f22da21ffe2d", - "sha256:a0e6dd5a0b8c76fb7522470789f1af793d39d6edbd4e40853e7be550ad49c430", - "sha256:a2f70d8170c7e02166a4c91462581e6ae5f35e3351a6b6c5142adcb04c7153ac", - "sha256:a814227fa08cae435ac7a42dcd2a04a7ec4a3cee23b7f83f9544cd26f452dcc4", - "sha256:aa9ecdd1d7ecbc7d1066c37cfbe52f65adf64b11b22d481a98fe1d3675dfff4b", - "sha256:b2b19d7aa4e9a1e7bf8caaf5f478a790190c60136314f45bb7702cb5a9337266", - "sha256:b4997bd8332cef3923402a07351571788f552f55ea1394ffbfccd4d203a8a05f", - "sha256:b71fef8ee41d59509c7f4afac7f627ed143c9e6db9eb08cfbba85e4c4dc5e67b", - "sha256:bd67d6fad7f4cd7c9cb7fad32d78ce32862fdb574b898447987a5de22fd37d73", - "sha256:ca22993a1a00440392c6c76f39addab8d97c706d2a8bcc2c9b2b6cb2cd7f41df", - "sha256:ce1c0580372d3c9bfa151bd0721a9bd5647b9b2245d0588d813fdbd2eb5d6f22", - "sha256:d522f28f7b252454df86ac3db5a0e1fe5ae03c8fc0cd1592c912b07c9fad6c29", - "sha256:d5d25cc5dad31a10d7a8196125515cc3aa68187c8953459fcaf127c2c8410f51", - "sha256:d9f7a692c11de20cb8ec680584815315e03d1404a6e299d36489b0fb6447d98d", - "sha256:d9fa2ad4cabb5054faa8d4a44b84134b0ec9d1421f5e9264d057d6be4d13c7fa", - "sha256:db53a85f4db0dbd9e5f6277d9153bcaa2ccb87b0d672c6a35f19432b3f2301a3", - "sha256:db9d36c4c7997c2a2513a5d218fd90b53bfeaf7e727f94aaf3576973378b3bce", - "sha256:e80f02e68d25c222471fcc5d1933275b8eb396e5e40b7863e4e0a43b3c810059", - "sha256:e84bd1c29e83ec74a95de070473742eb52d08502f2428eff5751671081e0a0a6", - "sha256:f0e12bdafdf7e32c5ad4a073e325ea0d659d4277af8b3d8eccf3101c56879619", - "sha256:fd56a9e0c63a1f9c37621fe298c77795aefd2a26dca80dcae27688586c40b4bb" + "sha256:039b27f5a02b0919bea8af92bef1929ffd84ec98381f4fd72b6d29dd4742f7ee", + "sha256:04dddf0661b5e90110010d949421b2a34e2ee3aebb507c9a6a9847b8b0123223", + "sha256:05b907cdf2bfd5e8d24696f5b4ec7dcf98303ea0d2ca2e1544beabfdc1a60dcb", + "sha256:081a1e525bef7954d7e22b981aaed7af25866c6cd2213109319d007f8653ac18", + "sha256:0bc11f3957035b74b8c02cdcd8501bb04e0c03600d6407089171195e3f8ab311", + "sha256:0c1773f2eee5e8a4d74475caed96cb6364fbebeeafb5a915af7d93d9c0ac28af", + "sha256:0fd04f41446062c5b2f73d7fb95f26622329d7e4c676ed9b26133149ac110435", + "sha256:128b931ff9ef86ac252e7c2503fbdd951d2985874fcf7b69ed267ddaa5a17b58", + "sha256:188d3e1a20d11507af0606eed14accb72e629c0e28830feb487c6b0e134be625", + "sha256:1ae965e2906209a529f519edb1d101aa53c77208845973bc80343ae9cfb92297", + "sha256:1ba2f1e29b4c3bb1fb6a120df971e65380695149882c7edf90cfaf099998c9d9", + "sha256:1e8da2f4f87cc71f61e35ee7c1b8a7a6c8ff3ecdeac2e00abe4e49bf8a5a9cae", + "sha256:2869ae5d90655fd2f817411a54008107c3aca0a199cf978b60f8eea082ac5ca0", + "sha256:28908114288372941a8bf9cd98795bd9db527bcb4f6a782e73e18c410909f3d0", + "sha256:2b1eae836e388851d3d95260c113df66aeeedb1dd20e60dbc4439aa2b346903c", + "sha256:2d4646c075da38dd668177e192cd5a6fd42f06bdf722cc1622b768e26ed97611", + "sha256:2dec2152af65fffc469b49bab6b27898a8e0669b49fd1ade23fcaa2f98e0d4f8", + "sha256:32252907f6638f5781b182bda1326f63f53bfe549307eeba70c2ba5fafa9e5dd", + "sha256:3d2fbcd446bcdf7792dc53bde5b68091b69f1b94856db1fc35d904907b8fba96", + "sha256:44fb979ea0790c2818e36c739b401734930aeeb4df51d5b04a02ce4c18103326", + "sha256:487462150adf9fdbd2212b8cf04ad573a927e32a7a777b920a66cc5b2667bfce", + "sha256:4d9c6e9404a4508f929feb50fbe6ea50345fc72470a2bb748ebf0319180a4559", + "sha256:4f2bca68f02c2ca66cb97860307dd5abad405417a6f100f167d37b126a6bae93", + "sha256:4fa6b86bb10bec92b4ac566ef403d2bf31cccf89687556200086b6d3028a1b4f", + "sha256:5010b2657e03ea230766f789369708a5dff2aa0a29d54a5c92fdf851f6aae37b", + "sha256:514bd993830a2f975d2841607a1dae755c0417374fe9716f2d468a9fa98272ab", + "sha256:5627dd758ac5e3a2260b4d63f0ae1276c215e968dc73a77ff8cb99b814f04741", + "sha256:57b6ccc4f6676977901f65e6fb576e3d24e534e2066799669d528591b49ad405", + "sha256:5b06af5e5932f01922137e196708658284aa9333c753ac81d4dbe394bf15879c", + "sha256:64a3b477359ab66674e3b56e04c9c370e8df19161ecce260b94f7c8555adb8bf", + "sha256:652e2c36f6b186e52ff7e59a3e3cfedd9585fd19f133ec57c5b3e93fd2a633c1", + "sha256:66dae3897156b3654214e48cc807f66ed100d884b3fa1ac93fea34ff5998dfc9", + "sha256:6adb7667764d583f7c76eec446f07d337bbfd37edc9e79b702bd45f2a9b7d42d", + "sha256:70b92cd8a476b1ecefa3867669eac06fde3fff354a8cb9f91c45cd3ff706c0ee", + "sha256:746086e3ef6d74b53599df31b491d88a355abf2e31c837137dd90f8c4561cafa", + "sha256:766314378ba1eda1d5c2779ca7a79b16e7f438e266cdfff5e748e585d322643f", + "sha256:77742d20075fc5cb492c807616be100e725fc791c0ce116a3fe439e17035efed", + "sha256:78f4feb838b35035a01ece5e473797db0dd7df5fbc14ee7dd00f76b98160fb14", + "sha256:7a6479f76f10546faa2af5cba80855345822eaa2b294a48851086f4be2189bdb", + "sha256:7b76e623fd8553379a37e97219e51f66b0fca6bb9d6ed13da07bdb768f29d966", + "sha256:7e50ddacae67d9423309cc3eb04bda8161b2c5c49432b4a32c83575f603e78cc", + "sha256:802dfb04449be795f6ba8e082c3f3de14ea63fc10d6b699567632b6e457147d3", + "sha256:8061f5f4c1fbd1a6cb2174eb3ecd63e287a21ef59c4a1465f84315d541eaecc1", + "sha256:86e8cdb5136ac816a7237cba5e738ff28b6976fa0a0e0fef93ae31a097c1bf8b", + "sha256:876b8a1ac493342ac88ebcd6fbdf7442d4c8209d0fe01a8637840ae1e0e7ef32", + "sha256:884c1aa219cc0c7de2e82566f429eb8550b40c09a7de008acdc6fc2b99913eab", + "sha256:8c390830b16aecb53b1afb0c863aa4084e965731c2b08419c9e4e79667627b35", + "sha256:8e913e3a0818b178138658a84969b6d1f057be41a0eabdb0caf49ff4a577e060", + "sha256:91ed1b72edd36c68ec76e94ee4511048b2bd0b066963c1696c42a7a59a585a93", + "sha256:9608b83e2c3d0d86b618e1d8c18b12572b0c688f8d08c6cbc7f8639c731e8e0b", + "sha256:9bac4575a64bfc97890d10b6953800c397cda1d8c241eff9b4dbcb382a337532", + "sha256:9cb5c93c967189909723ee73e01df78cda868af868f824e4620483db52d2c028", + "sha256:a39ff00d2ba06c05b0130ee7b3a431e8a81356bf3a0008b98c41cf1bef3662ee", + "sha256:a63816ddad1fd3788cfdb31dacd4ee187205d9501a3c093560e2d50952ff5367", + "sha256:a8f6523a69a0fee56f65749487fd47b11489a98f1a913f35f3be778fefa45ff4", + "sha256:aaa8d8e799eb1fd1b985d7b13954908ecc861b26b11b9e047320caad0adb4476", + "sha256:affb755fda33d2db93c05674ef5a50ee0395fa0ae2d9d0156820cf57273a5f48", + "sha256:b0f9b98010145cab76d1d61ccd753e7f558128375cd63926d0d28718847f13fd", + "sha256:b34081b9b39e27fb7c8189a0b78ef8d9e1bb8a2238d8ab1cf7c5a17d517cad95", + "sha256:ba6ff90fc11a23236dd4ac3745dd58fa9673470ec1ac79df218ae0946acf702a", + "sha256:c4d899d2080cb91c9319a086852ec8d7bd0e4fb87fa9055f6200009fb247213b", + "sha256:c70b314b5ffc3b97239cf491b4b4f65c5882c9653359791914995d78aeb4791d", + "sha256:cac4b2af2b52585eb0c1c8fa5baff09856040a3e5575f93b3ce65136ca7840cc", + "sha256:cbb77592448dbd1641cedc2de4b374c45ac9db463c9ba467ef9960e8d5cd4c63", + "sha256:cd7b2e53f2fd34048b73f49e81c540f0735d7bd34518b36b47ecc770eb28eda5", + "sha256:d2b0ea9020454c6b9725289282ff8df0e38ef7d9e44613cb62c044cfde518b7f", + "sha256:dc534f8ca83b672774bca72850022fa8ae9e34e2f6fe401a655be823873fd14c", + "sha256:e153cd584d63aa9c70db25b7c094e15ec2dae804ab78291a1a8709be768dcaa2", + "sha256:eb7755521d3a6501e6a435430f5594f8c409b80525a5a027fd1e0d388d5170ee", + "sha256:ec3e189915167ac4c0f49f7916dde3387ad8dba74680342232c88baf68aa37fc", + "sha256:ee8a49e42fed15e53ea4bf584ade744de1be251f26e9d8d25af856ab7b6d50b7", + "sha256:fdf064e57bcaadf7df7402bce22101103b9c7ff4f9615c8fa5e9027828abaa1d" ], "markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==3.18.0" + "version": "==3.18.1" }, "six": { "hashes": [ @@ -1251,6 +1353,53 @@ ], "version": "==2.0.2" }, + "sqlalchemy": { + "hashes": [ + "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e", + "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420", + "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0", + "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466", + "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be", + "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd", + "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718", + "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618", + "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e", + "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053", + "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0", + "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1", + "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120", + "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6", + "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30", + "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d", + "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d", + "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34", + "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe", + "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2", + "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96", + "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0", + "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5", + "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32", + "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23", + "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3", + "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad", + "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5", + "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92", + "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f", + "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857", + "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854", + "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6", + "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a", + "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf", + "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2", + "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa", + "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86", + "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a", + "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df", + "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.4.46" + }, "stack-data": { "hashes": [ "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", diff --git a/mlbands/__init__.py b/mlbands/__init__.py index 4b043126..252a3167 100644 --- a/mlbands/__init__.py +++ b/mlbands/__init__.py @@ -1,2 +1,3 @@ from mlbands.secret import * -from mlbands.main import * \ No newline at end of file +from mlbands.main import * +from mlbands.misc import * \ No newline at end of file diff --git a/mlbands/main.py b/mlbands/main.py index 5e3f421f..68e85b67 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -2,6 +2,12 @@ from pymatgen.analysis.diffraction.xrd import XRDCalculator from pymatgen.symmetry.analyzer import SpacegroupAnalyzer +from mendeleev import element + +from mlbands.misc import * + +import numpy as np +import matplotlib.pyplot as plt class Material: def __init__(self): @@ -43,37 +49,90 @@ def load_structure(self, api_key, conventional=True): def structural(self): - # with MPRester(api_key=self.API_KEY) as mpr: - # # first retrieve the relevant structure - # structure = mpr.get_structure_by_material_id(self.structure_ID) + structure = Material().load_structure(self.API_KEY) - conventional_structure = Material().load_structure(self.API_KEY) + print(structure.lattice) + print(structure.sites) #https://pymatgen.org/pymatgen.core.sites.html?highlight=periodicsite#pymatgen.core.sites.PeriodicSite - # print('\nstructure:\n{}\n\nsga:\n{}\n\nconventional structure:\n{}'.\ - # format(structure,sga,conventional_structure)) + Nsites = len(structure.sites) + for i in range(Nsites): + print('\n\n') + # print(structure.sites[i]) + print(structure.sites[i].species) + print(structure.sites[i].coords) + print(structure.sites[i].frac_coords) + + def load_xyz(self, api_key, fractional=False): + structure = Material().load_structure(api_key, conventional=True) + Nsites = len(structure.sites) - # print(conventional_structure) + xyz_array = np.zeros((Nsites,4)) - print(conventional_structure.lattice) - print(conventional_structure.sites) #https://pymatgen.org/pymatgen.core.sites.html?highlight=periodicsite#pymatgen.core.sites.PeriodicSite + if not fractional: + for i in range(Nsites): + atom_num = element(str(structure.sites[i].specie)).atomic_number # specie is not a typo + xyz_array[i] = [atom_num,*structure.sites[i].coords] + else: + for i in range(Nsites): + atom_num = element(str(structure.sites[i].specie)).atomic_number + xyz_array[i] = [atom_num,*structure.sites[i].frac_coords] + + return xyz_array + + def to_xyz(self,fractional=False): + + return Material().load_xyz(self.API_KEY, fractional) + + def to_box(self, fractional=False): + + xyz_array = Material().load_xyz(self.API_KEY, fractional) + + coords = xyz_array[:,1:] + MAX = np.ceil(np.max(coords)).astype('int') + MIN = np.floor(np.min(coords)).astype('int') + + xyz_array[:,1:] -= MIN + + L = (MAX-MIN+1) + + box = np.zeros((L,L,L)) + for i in xyz_array: + print(i) + + atom,x,y,z = i.astype('int') + box[z,y,x] = atom + + return box + + def visual(self, spacing = 1, fractional=False): + + xyz_array = Material().load_xyz(self.API_KEY, fractional) + + xyz_array[:,1:]*=spacing + + ax = plt.axes(projection='3d') + + colors = np.linspace(0,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) + + for i in xyz_array: + atom,*xyz = i.astype('int') + ax.scatter3D(*xyz, s=100, color="#"+hex(colors[atom])[2:]) + + set_axes_equal(ax) + + plt.axis('off') + plt.show() - Nsites = len(conventional_structure.sites) - for i in range(Nsites): - print('\n\n') - # print(conventional_structure.sites[i]) - print(conventional_structure.sites[i].species) - print(conventional_structure.sites[i].coords) - print(conventional_structure.sites[i].frac_coords) def XRD(self): - conventional_structure = Material().load_structure(self.API_KEY) + structure = Material().load_structure(self.API_KEY) # this example shows how to obtain an XRD diffraction pattern # these patterns are calculated on-the-fly from the structure calculator = XRDCalculator(wavelength='CuKa') - pattern = calculator.get_pattern(conventional_structure) + pattern = calculator.get_pattern(structure) print('\npattern:\n',pattern) diff --git a/tests/test_module.py b/tests/test_module.py index 42c11f4d..0dd4115e 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -5,8 +5,8 @@ def test_general(): material.API_KEY = mlbands.SECRET_KEY material.structural() - material.XRD() - material.thermo() + # material.XRD() + # material.thermo() def test_bands(): @@ -17,5 +17,20 @@ def test_bands(): material.structure_ID = 'mp-'+str(i) material.bands() -test_general() -test_bands() \ No newline at end of file +def test_xyz(): + material = mlbands.Material() + material.API_KEY = mlbands.SECRET_KEY + # a=material.to_xyz() + # b=material.to_xyz(True) + # print(a,b) + + box = material.to_box(True) + material.visual(10,True) + + + box = material.to_box() + material.visual() + +# test_general() +# test_bands() +test_xyz() \ No newline at end of file From 326c5efdd1537bc8743e51561bb4452fffaa63ab Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 23:07:41 -0500 Subject: [PATCH 16/27] make material_ID instance variable as direct input to Material constructor --- mlbands/main.py | 36 +++++++++++++++++++++++------------- tests/test_module.py | 18 +++++++----------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/mlbands/main.py b/mlbands/main.py index 68e85b67..a67afa05 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -10,16 +10,17 @@ import matplotlib.pyplot as plt class Material: - def __init__(self): + def __init__( self, material_ID = 'mp-1103503'): + self.API_KEY = '' - self.structure_ID = 'mp-1103503' + self.material_ID = material_ID def bands(self): with MPRester(api_key=self.API_KEY) as mpr: #adapted from https://matsci.org/t/obtain-large-numbers-of-band-structures/3780 bandstructure = None try: - bandstructure = mpr.get_bandstructure_by_material_id(self.structure_ID,line_mode=False) + bandstructure = mpr.get_bandstructure_by_material_id(self.material_ID,line_mode=False) except: pass if bandstructure: @@ -29,12 +30,15 @@ def bands(self): format(band_gap['energy'],\ 'Yes' if band_gap['direct'] else 'No',\ 'No' if band_gap['transition'] else 'Yes')) + return band_gap + else: + return 0 def load_structure(self, api_key, conventional=True): with MPRester(api_key) as mpr: # first retrieve the relevant structure - structure = mpr.get_structure_by_material_id(self.structure_ID) + structure = mpr.get_structure_by_material_id(self.material_ID) # important to use the conventional structure to ensure # that peaks are labelled with the conventional Miller indices @@ -49,7 +53,7 @@ def load_structure(self, api_key, conventional=True): def structural(self): - structure = Material().load_structure(self.API_KEY) + structure = Material(self.material_ID).load_structure(self.API_KEY) print(structure.lattice) @@ -64,7 +68,7 @@ def structural(self): print(structure.sites[i].frac_coords) def load_xyz(self, api_key, fractional=False): - structure = Material().load_structure(api_key, conventional=True) + structure = Material(self.material_ID).load_structure(api_key, conventional=True) Nsites = len(structure.sites) xyz_array = np.zeros((Nsites,4)) @@ -82,11 +86,11 @@ def load_xyz(self, api_key, fractional=False): def to_xyz(self,fractional=False): - return Material().load_xyz(self.API_KEY, fractional) + return Material(self.material_ID).load_xyz(self.API_KEY, fractional) def to_box(self, fractional=False): - xyz_array = Material().load_xyz(self.API_KEY, fractional) + xyz_array = Material(self.material_ID).load_xyz(self.API_KEY, fractional) coords = xyz_array[:,1:] MAX = np.ceil(np.max(coords)).astype('int') @@ -107,17 +111,17 @@ def to_box(self, fractional=False): def visual(self, spacing = 1, fractional=False): - xyz_array = Material().load_xyz(self.API_KEY, fractional) + xyz_array = Material(self.material_ID).load_xyz(self.API_KEY, fractional) xyz_array[:,1:]*=spacing ax = plt.axes(projection='3d') - colors = np.linspace(0,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) + colors = np.linspace(2**20,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) for i in xyz_array: atom,*xyz = i.astype('int') - ax.scatter3D(*xyz, s=100, color="#"+hex(colors[atom])[2:]) + ax.scatter3D(*xyz, s=100, c="#"+hex(colors[atom])[2:]) set_axes_equal(ax) @@ -127,7 +131,7 @@ def visual(self, spacing = 1, fractional=False): def XRD(self): - structure = Material().load_structure(self.API_KEY) + structure = Material(self.material_ID).load_structure(self.API_KEY) # this example shows how to obtain an XRD diffraction pattern # these patterns are calculated on-the-fly from the structure @@ -147,6 +151,12 @@ def thermo(self): # for many materials, it's much faster to use # the `search` method, where additional material_ids can # be added to this list - thermo_docs = mpr.thermo.search(material_ids=[self.structure_ID]) + thermo_docs = mpr.thermo.search(material_ids=[self.material_ID]) print(thermo_docs) + + +class Group: + def __init__(self): + self.list = [] + diff --git a/tests/test_module.py b/tests/test_module.py index 0dd4115e..6f1a47e1 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -1,33 +1,29 @@ import mlbands def test_general(): - material = mlbands.Material() + material = mlbands.Material('mp-1103503') material.API_KEY = mlbands.SECRET_KEY material.structural() - # material.XRD() - # material.thermo() + material.XRD() + material.thermo() def test_bands(): - for i in range(1,50): - material = mlbands.Material() + for i in range(1,10): + material = mlbands.Material('mp-1103503') material.API_KEY = mlbands.SECRET_KEY - material.structure_ID = 'mp-'+str(i) + material.material_ID = 'mp-'+str(i) material.bands() def test_xyz(): - material = mlbands.Material() + material = mlbands.Material('mp-1103502') material.API_KEY = mlbands.SECRET_KEY - # a=material.to_xyz() - # b=material.to_xyz(True) - # print(a,b) box = material.to_box(True) material.visual(10,True) - box = material.to_box() material.visual() From 50343fac02b1c918830948ad6a6b236036c5413b Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Tue, 3 Jan 2023 23:52:47 -0500 Subject: [PATCH 17/27] simplify input calls for Material methods; develop method to load band/structure data --- mlbands/main.py | 45 ++++++++++++++++++++++++++++---------------- tests/test_module.py | 39 +++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/mlbands/main.py b/mlbands/main.py index a67afa05..d8359547 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -10,9 +10,9 @@ import matplotlib.pyplot as plt class Material: - def __init__( self, material_ID = 'mp-1103503'): + def __init__( self, api_key, material_ID = 'mp-1103503'): - self.API_KEY = '' + self.API_KEY = api_key self.material_ID = material_ID def bands(self): @@ -30,13 +30,15 @@ def bands(self): format(band_gap['energy'],\ 'Yes' if band_gap['direct'] else 'No',\ 'No' if band_gap['transition'] else 'Yes')) + return band_gap else: return 0 + def load_structure(self, conventional=True): + + with MPRester(self.API_KEY) as mpr: - def load_structure(self, api_key, conventional=True): - with MPRester(api_key) as mpr: # first retrieve the relevant structure structure = mpr.get_structure_by_material_id(self.material_ID) @@ -53,8 +55,7 @@ def load_structure(self, api_key, conventional=True): def structural(self): - structure = Material(self.material_ID).load_structure(self.API_KEY) - + structure = Material(self.API_KEY, self.material_ID).load_structure() print(structure.lattice) print(structure.sites) #https://pymatgen.org/pymatgen.core.sites.html?highlight=periodicsite#pymatgen.core.sites.PeriodicSite @@ -67,8 +68,11 @@ def structural(self): print(structure.sites[i].coords) print(structure.sites[i].frac_coords) - def load_xyz(self, api_key, fractional=False): - structure = Material(self.material_ID).load_structure(api_key, conventional=True) + + def to_xyz(self, fractional=False): + + structure = Material(self.API_KEY, self.material_ID).load_structure(conventional=True) + Nsites = len(structure.sites) xyz_array = np.zeros((Nsites,4)) @@ -84,13 +88,10 @@ def load_xyz(self, api_key, fractional=False): return xyz_array - def to_xyz(self,fractional=False): - - return Material(self.material_ID).load_xyz(self.API_KEY, fractional) def to_box(self, fractional=False): - xyz_array = Material(self.material_ID).load_xyz(self.API_KEY, fractional) + xyz_array = Material(self.API_KEY, self.material_ID).to_xyz(fractional) coords = xyz_array[:,1:] MAX = np.ceil(np.max(coords)).astype('int') @@ -111,7 +112,7 @@ def to_box(self, fractional=False): def visual(self, spacing = 1, fractional=False): - xyz_array = Material(self.material_ID).load_xyz(self.API_KEY, fractional) + xyz_array = Material(self.API_KEY, self.material_ID).to_xyz(fractional) xyz_array[:,1:]*=spacing @@ -131,7 +132,7 @@ def visual(self, spacing = 1, fractional=False): def XRD(self): - structure = Material(self.material_ID).load_structure(self.API_KEY) + structure = Material(self.API_KEY, self.material_ID).load_structure(self.API_KEY) # this example shows how to obtain an XRD diffraction pattern # these patterns are calculated on-the-fly from the structure @@ -157,6 +158,18 @@ def thermo(self): class Group: - def __init__(self): - self.list = [] + def __init__(self,api_key): + self.API_KEY = api_key + + def make_data(self): + + X,Y = [],[] + for i in range(1,10): + material = Material(self.API_KEY, 'mp-'+str(i)) + BG = material.bands() + if BG: + Y.append(BG['energy']) + X.append(material.to_box()) + + return X,Y diff --git a/tests/test_module.py b/tests/test_module.py index 6f1a47e1..a4341445 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -1,32 +1,33 @@ import mlbands -def test_general(): - material = mlbands.Material('mp-1103503') - material.API_KEY = mlbands.SECRET_KEY +def test_material(): + material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103503') material.structural() material.XRD() material.thermo() -def test_bands(): - - for i in range(1,10): - material = mlbands.Material('mp-1103503') - material.API_KEY = mlbands.SECRET_KEY - material.material_ID = 'mp-'+str(i) - material.bands() - -def test_xyz(): - material = mlbands.Material('mp-1103502') - material.API_KEY = mlbands.SECRET_KEY - +def test_visuals(): + material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103502') box = material.to_box(True) material.visual(10,True) - box = material.to_box() material.visual() -# test_general() -# test_bands() -test_xyz() \ No newline at end of file + material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103506') + box = material.to_box(True) + material.visual(10,True) + + + +def test_bands(): + + group = mlbands.Group(mlbands.SECRET_KEY) + data = group.make_data() + + print(data) + +test_material() +test_visuals() +test_bands() \ No newline at end of file From 1b39dd3d4cfc68933dfbc4e931bd965b79094903 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Wed, 4 Jan 2023 20:10:49 -0500 Subject: [PATCH 18/27] integrate a neural network to package and test (LeNet5) --- .gitignore | 3 + Pipfile | 2 + mlbands/ML.py | 136 ++++++++++++++++++++++++++++++++++++ mlbands/__init__.py | 3 +- mlbands/nn/__init__.py | 1 + mlbands/nn/neuralnetwork.py | 32 +++++++++ tests/test_module.py | 12 +++- 7 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 mlbands/ML.py create mode 100644 mlbands/nn/__init__.py create mode 100644 mlbands/nn/neuralnetwork.py diff --git a/.gitignore b/.gitignore index 6faa1f2d..18223571 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ __pycache__ *.egg-info/ +#neuralnetwork-generated +data + old deploy-notes venv diff --git a/Pipfile b/Pipfile index cb1eaee8..928ad170 100644 --- a/Pipfile +++ b/Pipfile @@ -8,6 +8,8 @@ mp-api = "*" mpcontribs-client = "*" mendeleev = "*" numpy = "*" +torch = "*" +torchvision = "*" [dev-packages] diff --git a/mlbands/ML.py b/mlbands/ML.py new file mode 100644 index 00000000..4baa6ca4 --- /dev/null +++ b/mlbands/ML.py @@ -0,0 +1,136 @@ +# Load in relevant libraries, and alias where appropriate +import torch +import torch.nn as nn +import torchvision +import torchvision.transforms as transforms + +from mlbands.nn import LeNet5 + + +def ML_run(): + # Define relevant variables for the ML task + batch_size = 64 + num_classes = 10 + learning_rate = 0.001 + num_epochs = 10 + + # Device will determine whether to run the training on GPU or CPU. + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + + + #Loading the dataset and preprocessing + train_dataset = torchvision.datasets.MNIST(root = './data', + train = True, + transform = transforms.Compose([ + transforms.Resize((32,32)), + transforms.ToTensor(), + transforms.Normalize(mean = (0.1307,), std = (0.3081,))]), + download = True) + + + test_dataset = torchvision.datasets.MNIST(root = './data', + train = False, + transform = transforms.Compose([ + transforms.Resize((32,32)), + transforms.ToTensor(), + transforms.Normalize(mean = (0.1325,), std = (0.3105,))]), + download=True) + + + train_loader = torch.utils.data.DataLoader(dataset = train_dataset, + batch_size = batch_size, + shuffle = True) + + + test_loader = torch.utils.data.DataLoader(dataset = test_dataset, + batch_size = batch_size, + shuffle = True) + + + # #Defining the convolutional neural network + # class LeNet5(nn.Module): + # def __init__(self, num_classes): + # super(LeNet5, self).__init__() + # self.layer1 = nn.Sequential( + # nn.Conv2d(1, 6, kernel_size=5, stride=1, padding=0), + # nn.BatchNorm2d(6), + # nn.ReLU(), + # nn.MaxPool2d(kernel_size = 2, stride = 2)) + # self.layer2 = nn.Sequential( + # nn.Conv2d(6, 16, kernel_size=5, stride=1, padding=0), + # nn.BatchNorm2d(16), + # nn.ReLU(), + # nn.MaxPool2d(kernel_size = 2, stride = 2)) + # self.fc = nn.Linear(400, 120) + # self.relu = nn.ReLU() + # self.fc1 = nn.Linear(120, 84) + # self.relu1 = nn.ReLU() + # self.fc2 = nn.Linear(84, num_classes) + + # def forward(self, x): + # out = self.layer1(x) + # out = self.layer2(out) + # out = out.reshape(out.size(0), -1) + # out = self.fc(out) + # out = self.relu(out) + # out = self.fc1(out) + # out = self.relu1(out) + # out = self.fc2(out) + # return out + + + model = LeNet5(num_classes).to(device) + + #Setting the loss function + cost = nn.CrossEntropyLoss() + + #Setting the optimizer with the model parameters and learning rate + optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) + + #this is defined to print how many steps are remaining when training + total_step = len(train_loader) + + + # Training the model + + total_step = len(train_loader) + for epoch in range(num_epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.to(device) + labels = labels.to(device) + + #Forward pass + outputs = model(images) + loss = cost(outputs, labels) + + # Backward and optimize + optimizer.zero_grad() + loss.backward() + optimizer.step() + + if (i+1) % 400 == 0: + print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' + .format(epoch+1, num_epochs, i+1, total_step, loss.item())) + + + + + # Test the model + # In test phase, we don't need to compute gradients (for memory efficiency) + + with torch.no_grad(): + correct = 0 + total = 0 + for images, labels in test_loader: + images = images.to(device) + labels = labels.to(device) + outputs = model(images) + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + print('Accuracy of the network on the 10000 test images: {} %'.format(100 * correct / total)) + + +ML_run() \ No newline at end of file diff --git a/mlbands/__init__.py b/mlbands/__init__.py index 252a3167..9ab9f138 100644 --- a/mlbands/__init__.py +++ b/mlbands/__init__.py @@ -1,3 +1,4 @@ from mlbands.secret import * from mlbands.main import * -from mlbands.misc import * \ No newline at end of file +from mlbands.misc import * +from mlbands.ML import * \ No newline at end of file diff --git a/mlbands/nn/__init__.py b/mlbands/nn/__init__.py new file mode 100644 index 00000000..1f291686 --- /dev/null +++ b/mlbands/nn/__init__.py @@ -0,0 +1 @@ +from .neuralnetwork import LeNet5 \ No newline at end of file diff --git a/mlbands/nn/neuralnetwork.py b/mlbands/nn/neuralnetwork.py new file mode 100644 index 00000000..3d1a4d9c --- /dev/null +++ b/mlbands/nn/neuralnetwork.py @@ -0,0 +1,32 @@ +import torch.nn as nn + +#Defining the convolutional neural network +class LeNet5(nn.Module): + def __init__(self, num_classes): + super(LeNet5, self).__init__() + self.layer1 = nn.Sequential( + nn.Conv2d(1, 6, kernel_size=5, stride=1, padding=0), + nn.BatchNorm2d(6), + nn.ReLU(), + nn.MaxPool2d(kernel_size = 2, stride = 2)) + self.layer2 = nn.Sequential( + nn.Conv2d(6, 16, kernel_size=5, stride=1, padding=0), + nn.BatchNorm2d(16), + nn.ReLU(), + nn.MaxPool2d(kernel_size = 2, stride = 2)) + self.fc = nn.Linear(400, 120) + self.relu = nn.ReLU() + self.fc1 = nn.Linear(120, 84) + self.relu1 = nn.ReLU() + self.fc2 = nn.Linear(84, num_classes) + + def forward(self, x): + out = self.layer1(x) + out = self.layer2(out) + out = out.reshape(out.size(0), -1) + out = self.fc(out) + out = self.relu(out) + out = self.fc1(out) + out = self.relu1(out) + out = self.fc2(out) + return out \ No newline at end of file diff --git a/tests/test_module.py b/tests/test_module.py index a4341445..e99d532b 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -27,7 +27,13 @@ def test_bands(): data = group.make_data() print(data) + + +def test_mlrun(): + + mlbands.ML_run() -test_material() -test_visuals() -test_bands() \ No newline at end of file +# test_material() +# test_visuals() +# test_bands() +test_mlrun() \ No newline at end of file From 2fe1b749c099f8e767742622f5241836df23bce6 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Wed, 4 Jan 2023 20:20:12 -0500 Subject: [PATCH 19/27] add lenet3d --> from fork --- mlbands/nn/__init__.py | 3 +- mlbands/nn/lenet3d.py | 48 ++++++++++++++++++++++ mlbands/nn/{neuralnetwork.py => lenet5.py} | 0 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 mlbands/nn/lenet3d.py rename mlbands/nn/{neuralnetwork.py => lenet5.py} (100%) diff --git a/mlbands/nn/__init__.py b/mlbands/nn/__init__.py index 1f291686..ce8a2e94 100644 --- a/mlbands/nn/__init__.py +++ b/mlbands/nn/__init__.py @@ -1 +1,2 @@ -from .neuralnetwork import LeNet5 \ No newline at end of file +# from .lenet5 import LeNet5 +from .lenet3d import LeNet3D diff --git a/mlbands/nn/lenet3d.py b/mlbands/nn/lenet3d.py new file mode 100644 index 00000000..ea72c5c0 --- /dev/null +++ b/mlbands/nn/lenet3d.py @@ -0,0 +1,48 @@ +# https://github.com/andrewrgarcia/3D-LeNet-with-PyTorch +from torch.autograd import Variable +import torch +import torch.nn as nn +import torch.nn.functional as F + + +# input: (N = batch_size, C = 1, L = 32, L = 32, L = 32) +# output: (N, num_classes) +L =32 +num_classes = 5 + + +class LeNet3D(nn.Module): + def __init__(self): + super(LeNet3D, self).__init__() + + self.conv1 = nn.Conv3d(1, 6, kernel_size=(5, 5, 5)) + self.pool = nn.MaxPool3d(2, 2) + self.conv2 = nn.Conv3d(6, (L//2), kernel_size=(5, 5, 5)) + self.fc1 = nn.Linear((L//2) * 5 * 5 * 5, 120) + self.fc2 = nn.Linear(120, 84) + self.fc3 = nn.Linear(84, num_classes) + + def forward(self, x): + x = self.pool(F.relu(self.conv1(x))) + print(x.size()) + x = self.pool(F.relu(self.conv2(x))) + print(x.size()) + x = x.view(-1, (L//2) * 5 * 5 * 5) + # x = x.view(x.size(0), -1) + print(x.size()) + x = F.relu(self.fc1(x)) + x = F.relu(self.fc2(x)) + x = self.fc3(x) + return x + + +model = LeNet3D() + +# Test the model: +x = Variable(torch.randn(10, 1, L, L, L)) # (N_samples,C_channels,D=L,H=L,W=L) +print(x) +y = model(x) +print(y) + + + diff --git a/mlbands/nn/neuralnetwork.py b/mlbands/nn/lenet5.py similarity index 100% rename from mlbands/nn/neuralnetwork.py rename to mlbands/nn/lenet5.py From f4099b8901ea5b6bc15acb0ae1838ec0410b3463 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Wed, 4 Jan 2023 20:34:54 -0500 Subject: [PATCH 20/27] fix neuralnetwork import error: rename nn to neuralnets dir --- mlbands/ML.py | 4 ++-- mlbands/__init__.py | 2 +- mlbands/neuralnet/__init__.py | 2 ++ mlbands/{nn => neuralnet}/lenet3d.py | 12 ++++++------ mlbands/{nn => neuralnet}/lenet5.py | 0 mlbands/nn/__init__.py | 2 -- 6 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 mlbands/neuralnet/__init__.py rename mlbands/{nn => neuralnet}/lenet3d.py (86%) rename mlbands/{nn => neuralnet}/lenet5.py (100%) delete mode 100644 mlbands/nn/__init__.py diff --git a/mlbands/ML.py b/mlbands/ML.py index 4baa6ca4..1ea7aee0 100644 --- a/mlbands/ML.py +++ b/mlbands/ML.py @@ -4,7 +4,7 @@ import torchvision import torchvision.transforms as transforms -from mlbands.nn import LeNet5 +from mlbands.neuralnet import LeNet5 def ML_run(): @@ -133,4 +133,4 @@ def ML_run(): print('Accuracy of the network on the 10000 test images: {} %'.format(100 * correct / total)) -ML_run() \ No newline at end of file +# ML_run() \ No newline at end of file diff --git a/mlbands/__init__.py b/mlbands/__init__.py index 9ab9f138..0a4ef74d 100644 --- a/mlbands/__init__.py +++ b/mlbands/__init__.py @@ -1,4 +1,4 @@ from mlbands.secret import * from mlbands.main import * from mlbands.misc import * -from mlbands.ML import * \ No newline at end of file +from mlbands.ML import * diff --git a/mlbands/neuralnet/__init__.py b/mlbands/neuralnet/__init__.py new file mode 100644 index 00000000..409c63bb --- /dev/null +++ b/mlbands/neuralnet/__init__.py @@ -0,0 +1,2 @@ +from .lenet5 import LeNet5 +# from .lenet3d import LeNet3D diff --git a/mlbands/nn/lenet3d.py b/mlbands/neuralnet/lenet3d.py similarity index 86% rename from mlbands/nn/lenet3d.py rename to mlbands/neuralnet/lenet3d.py index ea72c5c0..855c745e 100644 --- a/mlbands/nn/lenet3d.py +++ b/mlbands/neuralnet/lenet3d.py @@ -36,13 +36,13 @@ def forward(self, x): return x -model = LeNet3D() +# model = LeNet3D() -# Test the model: -x = Variable(torch.randn(10, 1, L, L, L)) # (N_samples,C_channels,D=L,H=L,W=L) -print(x) -y = model(x) -print(y) +# # Test the model: +# x = Variable(torch.randn(10, 1, L, L, L)) # (N_samples,C_channels,D=L,H=L,W=L) +# print(x) +# y = model(x) +# print(y) diff --git a/mlbands/nn/lenet5.py b/mlbands/neuralnet/lenet5.py similarity index 100% rename from mlbands/nn/lenet5.py rename to mlbands/neuralnet/lenet5.py diff --git a/mlbands/nn/__init__.py b/mlbands/nn/__init__.py deleted file mode 100644 index ce8a2e94..00000000 --- a/mlbands/nn/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# from .lenet5 import LeNet5 -from .lenet3d import LeNet3D From 7b19bab9561ec6211194fd87d4dee5d5aa67cda8 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Wed, 4 Jan 2023 22:09:17 -0500 Subject: [PATCH 21/27] introduce load/save modules for data and option to visualize loaded data with Materials().visual method --- .gitignore | 1 + mlbands/ML.py => draft/ML_LeNet5-example.py | 0 mlbands/main.py | 60 ++++++++++++++++----- mlbands/misc.py | 12 ++++- tests/test_module.py | 20 ++++--- 5 files changed, 72 insertions(+), 21 deletions(-) rename mlbands/ML.py => draft/ML_LeNet5-example.py (100%) diff --git a/.gitignore b/.gitignore index 18223571..43d19df0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ __pycache__ *.egg-info/ +materials.file #neuralnetwork-generated data diff --git a/mlbands/ML.py b/draft/ML_LeNet5-example.py similarity index 100% rename from mlbands/ML.py rename to draft/ML_LeNet5-example.py diff --git a/mlbands/main.py b/mlbands/main.py index d8359547..6a379685 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -10,10 +10,11 @@ import matplotlib.pyplot as plt class Material: - def __init__( self, api_key, material_ID = 'mp-1103503'): + def __init__( self, api_key, material_ID = 'mp-1103503', box_array = None): self.API_KEY = api_key self.material_ID = material_ID + self.box_array = box_array # material already transformed to box data form (optional) def bands(self): with MPRester(api_key=self.API_KEY) as mpr: @@ -112,17 +113,25 @@ def to_box(self, fractional=False): def visual(self, spacing = 1, fractional=False): - xyz_array = Material(self.API_KEY, self.material_ID).to_xyz(fractional) + ax = plt.axes(projection='3d') + colors = np.linspace(2**20,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) - xyz_array[:,1:]*=spacing - ax = plt.axes(projection='3d') + if self.box_array is not None: + #presence of box_array supplants material_ID + for i in np.argwhere(self.box_array): + x,y,z = i + atom = int(self.box_array[tuple(i)]) + ax.scatter3D(x,y,z, s=100, c="#"+hex(colors[atom])[2:]) - colors = np.linspace(2**20,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) + else: + xyz_array = Material(self.API_KEY, self.material_ID).to_xyz(fractional) + xyz_array[:,1:]*=spacing + + for i in xyz_array: + atom,*xyz = i.astype('int') + ax.scatter3D(*xyz, s=100, c="#"+hex(colors[atom])[2:]) - for i in xyz_array: - atom,*xyz = i.astype('int') - ax.scatter3D(*xyz, s=100, c="#"+hex(colors[atom])[2:]) set_axes_equal(ax) @@ -160,16 +169,39 @@ def thermo(self): class Group: def __init__(self,api_key): self.API_KEY = api_key + self.max_length = 0 + self.X = [] + self.Y = [] + self.X_lengths = [] + + def make_data(self, ID_list = range(1,10) ): - def make_data(self): + # X,Y, box_lengths = [],[], [] - X,Y = [],[] - for i in range(1,10): + for i in ID_list: material = Material(self.API_KEY, 'mp-'+str(i)) BG = material.bands() if BG: - Y.append(BG['energy']) - X.append(material.to_box()) + self.Y.append(BG['energy']) + box = material.to_box() + self.X.append(box) + self.X_lengths.append(box.shape[0]) + + + # return X,Y + + def resize(self, L=32): + + max_length = np.max(self.X_lengths) + + if L >= max_length: + + + self.X = np.array([ np.pad(self.X[i],\ + ( (0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]) ) + ) for i in range(len(self.X)) ]) + + + print(self.X.shape) - return X,Y diff --git a/mlbands/misc.py b/mlbands/misc.py index bd1e96ba..ec573cb8 100644 --- a/mlbands/misc.py +++ b/mlbands/misc.py @@ -22,4 +22,14 @@ def set_axes_equal(ax): origin = np.mean(limits, axis=1) radius = 0.5 * np.max(np.abs(limits[:, 1] - limits[:, 0])) - set_axes_radius(ax, origin, radius) \ No newline at end of file + set_axes_radius(ax, origin, radius) + + +# adapted from https://stackoverflow.com/a/47381855/14460178 +import pickle + +def save(data, filename = 'file.mat3r'): + with open(filename, 'wb') as handle: pickle.dump(data, handle) + +def load(filename = 'file.mat3r'): + with open(filename, 'rb') as handle: return pickle.load(handle) diff --git a/tests/test_module.py b/tests/test_module.py index e99d532b..a189c3b3 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -24,16 +24,24 @@ def test_visuals(): def test_bands(): group = mlbands.Group(mlbands.SECRET_KEY) - data = group.make_data() + group.make_data(range(1,6)) + group.resize() + mlbands.save(group.X, 'materials.file') - print(data) +def test_loadvisual(): + xdata = mlbands.load('materials.file') + print(xdata) + mlbands.Material(mlbands.SECRET_KEY, box_array = xdata[3]).visual() + mlbands.Material(mlbands.SECRET_KEY).visual() -def test_mlrun(): - mlbands.ML_run() + +# def test_mlrun(): + +# mlbands.ML_run() # test_material() # test_visuals() -# test_bands() -test_mlrun() \ No newline at end of file +test_bands() +# test_mlrun() \ No newline at end of file From 9b2090aacd28adc5b5c0bf8d2395f1f985a981cf Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 01:38:54 -0500 Subject: [PATCH 22/27] add machinelearning code (3d neural network) --- .gitignore | 2 +- mlbands/ML.py | 124 ++++++++++++++++++++++++++++++++++ mlbands/main.py | 23 ++++--- mlbands/neuralnet/__init__.py | 4 +- mlbands/neuralnet/lenet3d.py | 16 ++--- mlbands/neuralnet/lenet5.py | 1 + tests/test_module.py | 37 ++++++---- 7 files changed, 170 insertions(+), 37 deletions(-) create mode 100644 mlbands/ML.py diff --git a/.gitignore b/.gitignore index 43d19df0..69c08300 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ __pycache__ *.egg-info/ -materials.file +*.data #neuralnetwork-generated data diff --git a/mlbands/ML.py b/mlbands/ML.py new file mode 100644 index 00000000..b6900795 --- /dev/null +++ b/mlbands/ML.py @@ -0,0 +1,124 @@ +# Load in relevant libraries, and alias where appropriate +import torch +import torch.nn as nn +import torchvision +import torchvision.transforms as transforms + +from mlbands.neuralnet import LeNet3D +import numpy as np + +from torch.utils.data import Dataset, DataLoader +class Data(Dataset): + def __init__(self,X_train,Y_train): + self.X=torch.from_numpy(X_train).float() + self.Y=torch.from_numpy(Y_train).float() + self.len=self.X.shape[0] + def __getitem__(self,index): + return self.X[index], self.Y[index] + def __len__(self): + return self.len + + +def reshapeX(array,channels=1): + return array.reshape((array.shape[0],1,*array.shape[1:])) + +def reshapeY(array): + if len(array.shape)==1: + return array.reshape(-1,1) + else: + return array + +def reshapeXY(data,channels=1): + + X,Y = data + # return [reshapeX(X,channels=1),Y] + return [reshapeX(X,channels=1),reshapeY(Y)] + + +# Device will determine whether to run the training on GPU or CPU. +device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + + +class Machine: + def __init__(self, batch_size=1, num_classes=1, learning_rate=0.001, num_epochs=10 ): + self.batch_size = batch_size + self.num_classes = num_classes + self.learning_rate = learning_rate + self.num_epochs = num_epochs + + self.neuralnet = LeNet3D + self.cost = nn.MSELoss() + self.input_channels = 1 + + + def learn(self, trainset, testset): + + # Train the model + trainset = reshapeXY(trainset,channels=self.input_channels) + train_dataset=Data(*trainset) + + train_loader = torch.utils.data.DataLoader(dataset = train_dataset, + batch_size = self.batch_size, + shuffle = True) + + model = self.neuralnet(self.num_classes).to(device) + + #Setting the loss function + # cost = nn.CrossEntropyLoss() + # cost = nn.MSELoss() + + #Setting the optimizer with the model parameters and learning rate + optimizer = torch.optim.Adam(model.parameters(), lr=self.learning_rate) + + #this is defined to print how many steps are remaining when training + total_step = len(train_loader) + + + # Training the model + for epoch in range(self.num_epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.to(device) + labels = labels.to(device) + + #Forward pass + outputs = model(images) + loss = self.cost(outputs, labels) + + # Backward and optimize + optimizer.zero_grad() + loss.backward() + optimizer.step() + + if (i+1) % 400 == 0: + print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' + .format(epoch+1, self.num_epochs, i+1, total_step, loss.item())) + + + # Test the model + # In test phase, we don't need to compute gradients (for memory efficiency) + + testset = reshapeXY(testset,channels=self.input_channels) + + test_dataset=Data(*testset) + + test_loader = torch.utils.data.DataLoader(dataset = test_dataset, + batch_size = self.batch_size, + shuffle = True) + + + with torch.no_grad(): + correct = 0 + total = 0 + for images, labels in test_loader: + images = images.to(device) + labels = labels.to(device) + outputs = model(images) + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + print('predicted: {} ground-truth: {}'.format(predicted,labels )) + + print('Accuracy of the network on the 10000 test images: {} %'.format(100 * correct / total)) + diff --git a/mlbands/main.py b/mlbands/main.py index 6a379685..db274068 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -16,7 +16,7 @@ def __init__( self, api_key, material_ID = 'mp-1103503', box_array = None): self.material_ID = material_ID self.box_array = box_array # material already transformed to box data form (optional) - def bands(self): + def bands(self,nonzero_gap=False): with MPRester(api_key=self.API_KEY) as mpr: #adapted from https://matsci.org/t/obtain-large-numbers-of-band-structures/3780 bandstructure = None @@ -26,13 +26,15 @@ def bands(self): pass if bandstructure: band_gap = bandstructure.get_band_gap() - print('Band Gap: {} eV\nDirect Gap: {}\nMetallic: {}'.\ format(band_gap['energy'],\ 'Yes' if band_gap['direct'] else 'No',\ 'No' if band_gap['transition'] else 'Yes')) - - return band_gap + + if nonzero_gap: + if band_gap['energy']: return band_gap + else: return 0 + else: return band_gap else: return 0 @@ -174,21 +176,21 @@ def __init__(self,api_key): self.Y = [] self.X_lengths = [] - def make_data(self, ID_list = range(1,10) ): + def make_data(self, ID_list = range(1,10), nonzero_gap=False ): # X,Y, box_lengths = [],[], [] for i in ID_list: material = Material(self.API_KEY, 'mp-'+str(i)) - BG = material.bands() + BG = material.bands(nonzero_gap) if BG: self.Y.append(BG['energy']) box = material.to_box() self.X.append(box) self.X_lengths.append(box.shape[0]) - + + self.Y = np.array(self.Y) - # return X,Y def resize(self, L=32): @@ -201,7 +203,8 @@ def resize(self, L=32): ( (0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]) ) ) for i in range(len(self.X)) ]) - - print(self.X.shape) + # print(self.X.shape) + + diff --git a/mlbands/neuralnet/__init__.py b/mlbands/neuralnet/__init__.py index 409c63bb..ce8a2e94 100644 --- a/mlbands/neuralnet/__init__.py +++ b/mlbands/neuralnet/__init__.py @@ -1,2 +1,2 @@ -from .lenet5 import LeNet5 -# from .lenet3d import LeNet3D +# from .lenet5 import LeNet5 +from .lenet3d import LeNet3D diff --git a/mlbands/neuralnet/lenet3d.py b/mlbands/neuralnet/lenet3d.py index 855c745e..0f6102c5 100644 --- a/mlbands/neuralnet/lenet3d.py +++ b/mlbands/neuralnet/lenet3d.py @@ -12,7 +12,7 @@ class LeNet3D(nn.Module): - def __init__(self): + def __init__(self, num_classes): super(LeNet3D, self).__init__() self.conv1 = nn.Conv3d(1, 6, kernel_size=(5, 5, 5)) @@ -24,25 +24,17 @@ def __init__(self): def forward(self, x): x = self.pool(F.relu(self.conv1(x))) - print(x.size()) + # print(x.size()) x = self.pool(F.relu(self.conv2(x))) - print(x.size()) + # print(x.size()) x = x.view(-1, (L//2) * 5 * 5 * 5) - # x = x.view(x.size(0), -1) - print(x.size()) + # print(x.size()) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x -# model = LeNet3D() - -# # Test the model: -# x = Variable(torch.randn(10, 1, L, L, L)) # (N_samples,C_channels,D=L,H=L,W=L) -# print(x) -# y = model(x) -# print(y) diff --git a/mlbands/neuralnet/lenet5.py b/mlbands/neuralnet/lenet5.py index 3d1a4d9c..3acaa5aa 100644 --- a/mlbands/neuralnet/lenet5.py +++ b/mlbands/neuralnet/lenet5.py @@ -1,3 +1,4 @@ +# LeNet5 from Paperspace blog https://blog.paperspace.com/writing-lenet5-from-scratch-in-python/ import torch.nn as nn #Defining the convolutional neural network diff --git a/tests/test_module.py b/tests/test_module.py index a189c3b3..aa51322d 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -19,29 +19,42 @@ def test_visuals(): box = material.to_box(True) material.visual(10,True) +def test_loadvisual(): + xdata = mlbands.load('materials.data') + print(xdata) + + mlbands.Material(mlbands.SECRET_KEY, box_array = xdata[3]).visual() + mlbands.Material(mlbands.SECRET_KEY).visual() def test_bands(): - group = mlbands.Group(mlbands.SECRET_KEY) - group.make_data(range(1,6)) - group.resize() - mlbands.save(group.X, 'materials.file') + training = mlbands.Group(mlbands.SECRET_KEY) + training.make_data(range(1,30),True) + training.resize() -def test_loadvisual(): - xdata = mlbands.load('materials.file') - print(xdata) + testing = mlbands.Group(mlbands.SECRET_KEY) + testing.make_data(range(300,314),True) + testing.resize() + + machine = mlbands.Machine() + machine.learn([training.X,training.Y],[testing.X,testing.Y]) - mlbands.Material(mlbands.SECRET_KEY, box_array = xdata[3]).visual() - mlbands.Material(mlbands.SECRET_KEY).visual() + # mlbands.save([training.X,training.Y], 'train.data') + # mlbands.save([testing.X,testing.Y], 'test.data') + +def test_bands_load(): + train = mlbands.load('train.data') + test = mlbands.load('test.data') + machine = mlbands.Machine() + machine.learn(train,test) -# def test_mlrun(): -# mlbands.ML_run() # test_material() # test_visuals() +# test_loadvisual() test_bands() -# test_mlrun() \ No newline at end of file +# test_bands_load() \ No newline at end of file From 8a4db2ce447e09f533501dc51e5702e1df51d057 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 11:00:32 -0500 Subject: [PATCH 23/27] add option to extend data to other properties (characteristics) --- mlbands/ML.py | 16 +++---- mlbands/main.py | 48 +++++++++++++++---- mlbands/{neuralnet => neuralnets}/__init__.py | 2 +- mlbands/{neuralnet => neuralnets}/lenet3d.py | 19 +++++--- mlbands/{neuralnet => neuralnets}/lenet5.py | 0 5 files changed, 58 insertions(+), 27 deletions(-) rename mlbands/{neuralnet => neuralnets}/__init__.py (50%) rename mlbands/{neuralnet => neuralnets}/lenet3d.py (73%) rename mlbands/{neuralnet => neuralnets}/lenet5.py (100%) diff --git a/mlbands/ML.py b/mlbands/ML.py index b6900795..6d483f9e 100644 --- a/mlbands/ML.py +++ b/mlbands/ML.py @@ -4,9 +4,6 @@ import torchvision import torchvision.transforms as transforms -from mlbands.neuralnet import LeNet3D -import numpy as np - from torch.utils.data import Dataset, DataLoader class Data(Dataset): def __init__(self,X_train,Y_train): @@ -18,6 +15,8 @@ def __getitem__(self,index): def __len__(self): return self.len +from mlbands.neuralnets import LeNet3D, LeNet5 + def reshapeX(array,channels=1): return array.reshape((array.shape[0],1,*array.shape[1:])) @@ -33,13 +32,12 @@ def reshapeXY(data,channels=1): X,Y = data # return [reshapeX(X,channels=1),Y] return [reshapeX(X,channels=1),reshapeY(Y)] - + # Device will determine whether to run the training on GPU or CPU. device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - class Machine: def __init__(self, batch_size=1, num_classes=1, learning_rate=0.001, num_epochs=10 ): self.batch_size = batch_size @@ -48,7 +46,8 @@ def __init__(self, batch_size=1, num_classes=1, learning_rate=0.001, num_epochs= self.num_epochs = num_epochs self.neuralnet = LeNet3D - self.cost = nn.MSELoss() + self.cost = nn.MSELoss() # the loss function + # self.cost = nn.CrossEntropyLoss() self.input_channels = 1 @@ -64,9 +63,6 @@ def learn(self, trainset, testset): model = self.neuralnet(self.num_classes).to(device) - #Setting the loss function - # cost = nn.CrossEntropyLoss() - # cost = nn.MSELoss() #Setting the optimizer with the model parameters and learning rate optimizer = torch.optim.Adam(model.parameters(), lr=self.learning_rate) @@ -120,5 +116,5 @@ def learn(self, trainset, testset): print('predicted: {} ground-truth: {}'.format(predicted,labels )) - print('Accuracy of the network on the 10000 test images: {} %'.format(100 * correct / total)) + print('Accuracy of the network on the test data: {} %'.format(100 * correct / total)) diff --git a/mlbands/main.py b/mlbands/main.py index db274068..53170704 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -171,11 +171,14 @@ def thermo(self): class Group: def __init__(self,api_key): self.API_KEY = api_key + self.X = [] # quantitative predictors ("X-value") + self.Y = [] # quantitative response ("Y-value","label") + self.materials = [] # material IDs (materials found in ID_list; see make_data inputs) + self.box_lengths = [] # length scale of boxes (3-D Tensors of material chemical env.) self.max_length = 0 - self.X = [] - self.Y = [] - self.X_lengths = [] + + # def make_data(self, ID_list = range(1,10), nonzero_gap=False, *extra_properties ): def make_data(self, ID_list = range(1,10), nonzero_gap=False ): # X,Y, box_lengths = [],[], [] @@ -183,24 +186,49 @@ def make_data(self, ID_list = range(1,10), nonzero_gap=False ): for i in ID_list: material = Material(self.API_KEY, 'mp-'+str(i)) BG = material.bands(nonzero_gap) - if BG: - self.Y.append(BG['energy']) + if BG: # if material with material_ID exists + self.materials.append('mp-'+str(i)) + + # quantitative response ("Y-value","label") + self.Y.append(BG['energy']) # append band gap energy ( eV ) + box = material.to_box() - self.X.append(box) - self.X_lengths.append(box.shape[0]) - + self.box_lengths.append(box.shape[0]) + # quantitative predictors ("X-value") + self.X.append(box) # append 3-D Tensor representing material chemical env. + # for extra_x in features: + # self.X.append(extra_x) + self.Y = np.array(self.Y) + def expand_data(self,boxes=True,*property_funcs): + + boxes = self.X + self.X = [] + # load a property for all materials + for i in self.materials: + material = Material(self.API_KEY, 'mp-'+str(i)) + + k=0 + material_props = [] + material_props.append(boxes[k]) if boxes else None + for func in property_funcs: + material_props.append(func(material)) + + self.X.append(material_props) + k+=1 + + def resize(self, L=32): - max_length = np.max(self.X_lengths) + max_length = np.max(self.box_lengths) if L >= max_length: self.X = np.array([ np.pad(self.X[i],\ - ( (0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]),(0,L-self.X_lengths[i]) ) + ( (0,L-self.box_lengths[i]),(0,L-self.box_lengths[i]),(0,L-self.box_lengths[i]) ) ) for i in range(len(self.X)) ]) # print(self.X.shape) diff --git a/mlbands/neuralnet/__init__.py b/mlbands/neuralnets/__init__.py similarity index 50% rename from mlbands/neuralnet/__init__.py rename to mlbands/neuralnets/__init__.py index ce8a2e94..8a3063ec 100644 --- a/mlbands/neuralnet/__init__.py +++ b/mlbands/neuralnets/__init__.py @@ -1,2 +1,2 @@ -# from .lenet5 import LeNet5 +from .lenet5 import LeNet5 from .lenet3d import LeNet3D diff --git a/mlbands/neuralnet/lenet3d.py b/mlbands/neuralnets/lenet3d.py similarity index 73% rename from mlbands/neuralnet/lenet3d.py rename to mlbands/neuralnets/lenet3d.py index 0f6102c5..2f549f58 100644 --- a/mlbands/neuralnet/lenet3d.py +++ b/mlbands/neuralnets/lenet3d.py @@ -4,12 +4,7 @@ import torch.nn as nn import torch.nn.functional as F - -# input: (N = batch_size, C = 1, L = 32, L = 32, L = 32) -# output: (N, num_classes) -L =32 -num_classes = 5 - +L=32 # length scale of cubes (default: 32 x 32 x 32) class LeNet3D(nn.Module): def __init__(self, num_classes): @@ -35,6 +30,18 @@ def forward(self, x): return x +# # input: (N = batch_size, C = 1, L = 32, L = 32, L = 32) +# # output: (N, num_classes) + +# # Test the model: +# num_classes = 1 + +# model = LeNet3D(num_classes) + +# x = Variable(torch.randn(10, 1, L, L, L)) # (N_samples,C_channels,D=L,H=L,W=L) +# print(x) +# y = model(x) +# print(y) diff --git a/mlbands/neuralnet/lenet5.py b/mlbands/neuralnets/lenet5.py similarity index 100% rename from mlbands/neuralnet/lenet5.py rename to mlbands/neuralnets/lenet5.py From d6c2594fe494e66b968543cae1d838db7c0de98f Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 12:17:41 -0500 Subject: [PATCH 24/27] add comments / descriptions to code --- mlbands/main.py | 107 +++++++++++++++++++++++++++++++++++-------- tests/test_module.py | 49 ++++++++++++++------ 2 files changed, 124 insertions(+), 32 deletions(-) diff --git a/mlbands/main.py b/mlbands/main.py index 53170704..db86a3ca 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -11,12 +11,29 @@ class Material: def __init__( self, api_key, material_ID = 'mp-1103503', box_array = None): - + '''Material class. To store and process material data + + Parameters + ---------- + API_KEY : str + secret API KEY used to run MPRester data requests + material_ID : int + ID of selected material (without "mp-" prefix) + box_array : (float, float, float) + 3-D Tensor representing material chemical env. + ''' self.API_KEY = api_key self.material_ID = material_ID self.box_array = box_array # material already transformed to box data form (optional) def bands(self,nonzero_gap=False): + '''obtain band gap information for requested Material + + Parameters + ---------- + nonzero_gap: bool + if True, only returns nonzero band gaps + ''' with MPRester(api_key=self.API_KEY) as mpr: #adapted from https://matsci.org/t/obtain-large-numbers-of-band-structures/3780 bandstructure = None @@ -39,7 +56,13 @@ def bands(self,nonzero_gap=False): return 0 def load_structure(self, conventional=True): + '''helper function to load structural information of Material + Parameters + ---------- + conventional: bool + if True, returns conventional standard structure else returns primitive + ''' with MPRester(self.API_KEY) as mpr: # first retrieve the relevant structure @@ -57,7 +80,8 @@ def load_structure(self, conventional=True): def structural(self): - + '''prints structural information + ''' structure = Material(self.API_KEY, self.material_ID).load_structure() print(structure.lattice) @@ -73,7 +97,14 @@ def structural(self): def to_xyz(self, fractional=False): - + '''processes the material structure as an array with an xyz coordinate format + i.e. [atom_numbers, x_coord, y_coord, z_coord] + + Parameters + ---------- + fractional: bool + if False, returns xyz coordinates else returns fractional (a,b,c) coordinates + ''' structure = Material(self.API_KEY, self.material_ID).load_structure(conventional=True) Nsites = len(structure.sites) @@ -93,7 +124,15 @@ def to_xyz(self, fractional=False): def to_box(self, fractional=False): - + '''processes the material structure as a sparse, 3-D Tensor "Box" with atom_numbers as the + non-zero entries + i.e. box = Tensor((z_coord, y_coord, x_coord)) + + Parameters + ---------- + fractional: bool + if False, returns tensor space from xyz coordinates else from fractional (a,b,c) coordinates + ''' xyz_array = Material(self.API_KEY, self.material_ID).to_xyz(fractional) coords = xyz_array[:,1:] @@ -114,7 +153,15 @@ def to_box(self, fractional=False): return box def visual(self, spacing = 1, fractional=False): - + '''simple visualization tool for Material (plot) + + Parameters + ---------- + spacing: float + increases spacing by multiplying coordinate distance + fractional: bool + if False, returns tensor space from xyz coordinates else from fractional (a,b,c) coordinates + ''' ax = plt.axes(projection='3d') colors = np.linspace(2**20,2**24,118,dtype='int') #divide color range into 118 colors (for the 118 chemical elements) @@ -142,7 +189,8 @@ def visual(self, spacing = 1, fractional=False): def XRD(self): - + '''XRD pattern data for Material + ''' structure = Material(self.API_KEY, self.material_ID).load_structure(self.API_KEY) # this example shows how to obtain an XRD diffraction pattern @@ -154,32 +202,56 @@ def XRD(self): def thermo(self): - + '''thermodynamic data for Material + ''' with MPRester(api_key=self.API_KEY) as mpr: # for a single material - # thermo_doc = mpr.thermo.get_data_by_id('mp-1103503') # DOES NOT WORK (WHY?) - + # thermo_docs = mpr.thermo.get_data_by_id(self.material_ID) # DOES NOT WORK msg(Item with thermo_id = mp-1103503 not found) + # for many materials, it's much faster to use # the `search` method, where additional material_ids can # be added to this list thermo_docs = mpr.thermo.search(material_ids=[self.material_ID]) - - print(thermo_docs) + # print(thermo_docs[0].energy_per_atom) + return thermo_docs + + def magnetism(self): + '''magnetic properties data for Material + ''' + with MPRester(api_key=self.API_KEY) as mpr: + magnetism_doc = mpr.magnetism.get_data_by_id('mp-1103503') + + # print(magnetism_doc.total_magnetization) + return magnetism_doc class Group: def __init__(self,api_key): + '''Group class for bulk calculations + + Parameters + ---------- + API_KEY : str + secret API KEY used to run MPRester data requests + materials : int + IDs of selected material (with "mp-" prefix) + + ''' self.API_KEY = api_key self.X = [] # quantitative predictors ("X-value") self.Y = [] # quantitative response ("Y-value","label") - self.materials = [] # material IDs (materials found in ID_list; see make_data inputs) + self.materials = [] # material IDs (materials found in ID_list; see data_make inputs) self.box_lengths = [] # length scale of boxes (3-D Tensors of material chemical env.) self.max_length = 0 + def transfer(self, loaded_data): + self.X = loaded_data.X + self.Y = loaded_data.Y + self.materials = loaded_data.materials - # def make_data(self, ID_list = range(1,10), nonzero_gap=False, *extra_properties ): - def make_data(self, ID_list = range(1,10), nonzero_gap=False ): + # def data_make(self, ID_list = range(1,10), nonzero_gap=False, *extra_properties ): + def data_make(self, ID_list = range(1,10), nonzero_gap=False ): # X,Y, box_lengths = [],[], [] @@ -201,7 +273,7 @@ def make_data(self, ID_list = range(1,10), nonzero_gap=False ): self.Y = np.array(self.Y) - def expand_data(self,boxes=True,*property_funcs): + def data_expand(self,boxes=True,*property_funcs): boxes = self.X self.X = [] @@ -213,14 +285,13 @@ def expand_data(self,boxes=True,*property_funcs): material_props = [] material_props.append(boxes[k]) if boxes else None for func in property_funcs: - material_props.append(func(material)) + material_props.append(material.func) self.X.append(material_props) k+=1 - - def resize(self, L=32): + def resize_boxes(self, L=32): max_length = np.max(self.box_lengths) diff --git a/tests/test_module.py b/tests/test_module.py index aa51322d..286cd0d2 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -1,12 +1,13 @@ import mlbands -def test_material(): +def test_materialprops(): material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103503') material.structural() material.XRD() material.thermo() - + totalmag = material.magnetism().total_magnetization + print(totalmag) def test_visuals(): material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103502') @@ -30,31 +31,51 @@ def test_loadvisual(): def test_bands(): training = mlbands.Group(mlbands.SECRET_KEY) - training.make_data(range(1,30),True) - training.resize() + training.data_make(range(1,30)) + # training.data_make(range(1,30),True) + training.resize_boxes() testing = mlbands.Group(mlbands.SECRET_KEY) - testing.make_data(range(300,314),True) - testing.resize() + testing.data_make(range(300,314)) + # testing.data_make(range(300,314),True) + testing.resize_boxes() machine = mlbands.Machine() machine.learn([training.X,training.Y],[testing.X,testing.Y]) - # mlbands.save([training.X,training.Y], 'train.data') - # mlbands.save([testing.X,testing.Y], 'test.data') + mlbands.save(training, 'train.data') + mlbands.save(testing, 'test.data') def test_bands_load(): - train = mlbands.load('train.data') - test = mlbands.load('test.data') + training = mlbands.load('train.data') + trainXY = [training.X,training.Y] + testing = mlbands.load('test.data') + testXY = [testing.X,testing.Y] + machine = mlbands.Machine() - machine.learn(train,test) + machine.learn(trainXY,testXY) + +def test_dataexpand(): + + training = mlbands.Group(mlbands.SECRET_KEY) + traindata = mlbands.load('train.data') + training.transfer(traindata) + + testing = mlbands.load('test.data') + testdata = mlbands.load('train.data') + testing.transfer(testdata) + + print(training.X) + print(testing.materials) + # formation_energy_per_atom -# test_material() +test_materialprops() # test_visuals() # test_loadvisual() -test_bands() -# test_bands_load() \ No newline at end of file +# test_bands() +# test_bands_load() +# test_dataexpand() From 7a41b149d21022894ee63feb1106d52356afb0d5 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 13:35:33 -0500 Subject: [PATCH 25/27] add final descriptions (text) --- Pipfile | 1 + mlbands/ML.py | 135 ++++++++++++++++++++++++++----------------- mlbands/main.py | 45 +++++++++++++-- tests/test_module.py | 12 ++-- 4 files changed, 127 insertions(+), 66 deletions(-) diff --git a/Pipfile b/Pipfile index 928ad170..c20c60d2 100644 --- a/Pipfile +++ b/Pipfile @@ -12,6 +12,7 @@ torch = "*" torchvision = "*" [dev-packages] +pipenv-setup = "*" [requires] python_version = "3.8" diff --git a/mlbands/ML.py b/mlbands/ML.py index 6d483f9e..a1633443 100644 --- a/mlbands/ML.py +++ b/mlbands/ML.py @@ -40,6 +40,25 @@ def reshapeXY(data,channels=1): class Machine: def __init__(self, batch_size=1, num_classes=1, learning_rate=0.001, num_epochs=10 ): + '''Machine [ learning ] class for bulk calculations + + Parameters + ---------- + batch_size : int + batch size + num_classes : int + number of output ("Y") classes + learning_rate : float + learning rate for optimizer + num_epochs : int + number of training epochs + neuralnet: < neuralnets.neural_network Class> + neural network model (default: LeNet3D) + cost : + cost / loss function for training default: MSELoss + input_channels : int + number of input channels to neural network for (3-D structure, band_gap) (X,Y) combination, it is =1 + ''' self.batch_size = batch_size self.num_classes = num_classes self.learning_rate = learning_rate @@ -52,69 +71,77 @@ def __init__(self, batch_size=1, num_classes=1, learning_rate=0.001, num_epochs= def learn(self, trainset, testset): - - # Train the model - trainset = reshapeXY(trainset,channels=self.input_channels) - train_dataset=Data(*trainset) - - train_loader = torch.utils.data.DataLoader(dataset = train_dataset, - batch_size = self.batch_size, - shuffle = True) - - model = self.neuralnet(self.num_classes).to(device) - - - #Setting the optimizer with the model parameters and learning rate - optimizer = torch.optim.Adam(model.parameters(), lr=self.learning_rate) - - #this is defined to print how many steps are remaining when training - total_step = len(train_loader) - - - # Training the model - for epoch in range(self.num_epochs): - for i, (images, labels) in enumerate(train_loader): - images = images.to(device) - labels = labels.to(device) + '''neural network training and testing (validation) + + Parameters + ---------- + trainset : < Group.X, Group.y > + training set of x and y values + testset : < Group.X, Group.y > + testing set of x and y values + ''' + # Train the model + trainset = reshapeXY(trainset,channels=self.input_channels) + train_dataset=Data(*trainset) + + train_loader = torch.utils.data.DataLoader(dataset = train_dataset, + batch_size = self.batch_size, + shuffle = True) + + model = self.neuralnet(self.num_classes).to(device) + + + #Setting the optimizer with the model parameters and learning rate + optimizer = torch.optim.Adam(model.parameters(), lr=self.learning_rate) + + #this is defined to print how many steps are remaining when training + total_step = len(train_loader) + + + # Training the model + for epoch in range(self.num_epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.to(device) + labels = labels.to(device) + + #Forward pass + outputs = model(images) + loss = self.cost(outputs, labels) - #Forward pass - outputs = model(images) - loss = self.cost(outputs, labels) + # Backward and optimize + optimizer.zero_grad() + loss.backward() + optimizer.step() - # Backward and optimize - optimizer.zero_grad() - loss.backward() - optimizer.step() - - if (i+1) % 400 == 0: - print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' - .format(epoch+1, self.num_epochs, i+1, total_step, loss.item())) + if (i+1) % 400 == 0: + print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' + .format(epoch+1, self.num_epochs, i+1, total_step, loss.item())) - # Test the model - # In test phase, we don't need to compute gradients (for memory efficiency) + # Test the model + # In test phase, we don't need to compute gradients (for memory efficiency) - testset = reshapeXY(testset,channels=self.input_channels) + testset = reshapeXY(testset,channels=self.input_channels) - test_dataset=Data(*testset) + test_dataset=Data(*testset) - test_loader = torch.utils.data.DataLoader(dataset = test_dataset, - batch_size = self.batch_size, - shuffle = True) + test_loader = torch.utils.data.DataLoader(dataset = test_dataset, + batch_size = self.batch_size, + shuffle = True) - with torch.no_grad(): - correct = 0 - total = 0 - for images, labels in test_loader: - images = images.to(device) - labels = labels.to(device) - outputs = model(images) - _, predicted = torch.max(outputs.data, 1) - total += labels.size(0) - correct += (predicted == labels).sum().item() + with torch.no_grad(): + correct = 0 + total = 0 + for images, labels in test_loader: + images = images.to(device) + labels = labels.to(device) + outputs = model(images) + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() - print('predicted: {} ground-truth: {}'.format(predicted,labels )) + print('predicted: {} ground-truth: {}'.format(predicted,labels )) - print('Accuracy of the network on the test data: {} %'.format(100 * correct / total)) + print('Accuracy of the network on the test data: {} %'.format(100 * correct / total)) diff --git a/mlbands/main.py b/mlbands/main.py index db86a3ca..a2f32998 100644 --- a/mlbands/main.py +++ b/mlbands/main.py @@ -236,25 +236,41 @@ def __init__(self,api_key): secret API KEY used to run MPRester data requests materials : int IDs of selected material (with "mp-" prefix) - + X : [varies] (float,float,float); ((float,float,float), *float); (*float) + quantitative predictors ("X-value") + Y : float + band gap (eV) quantitative response ("Y-value","label") ''' self.API_KEY = api_key + self.materials = [] # material IDs (materials found in ID_list; see data_make inputs) self.X = [] # quantitative predictors ("X-value") self.Y = [] # quantitative response ("Y-value","label") - self.materials = [] # material IDs (materials found in ID_list; see data_make inputs) + self.box_lengths = [] # length scale of boxes (3-D Tensors of material chemical env.) self.max_length = 0 def transfer(self, loaded_data): + '''transfer constructor variable information to Group class from loaded data + + Parameters + ---------- + loaded data : <"Group" class object> + file containing processed Materials in a Group container + ''' self.X = loaded_data.X self.Y = loaded_data.Y self.materials = loaded_data.materials - # def data_make(self, ID_list = range(1,10), nonzero_gap=False, *extra_properties ): def data_make(self, ID_list = range(1,10), nonzero_gap=False ): + '''generate Group data for selected ID_list numbers [ for materials which exist with such IDs ] - # X,Y, box_lengths = [],[], [] - + Parameters + ---------- + ID_list : list[int] + list of material_ID numbers (i.e. without "mp-" prefix) + nonzero_gap: bool + if True, only returns nonzero band gaps + ''' for i in ID_list: material = Material(self.API_KEY, 'mp-'+str(i)) BG = material.bands(nonzero_gap) @@ -274,7 +290,18 @@ def data_make(self, ID_list = range(1,10), nonzero_gap=False ): self.Y = np.array(self.Y) def data_expand(self,boxes=True,*property_funcs): - + '''expand "X-values" data to other chemical characteristics + + e.g. data_expand(True, thermo, magnetic) appends "thermo" and "magnetic" characteristics to X in addition to 3-D Tensors + e.g. data_expand(False, thermo, magnetic) creates a new X-value object and appends "thermo" and "magnetic" characteristics alone + + Parameters + ---------- + boxes : bool + removes 3-D tensors to X variable if False, + *property_funcs: , ..., + operates functions on Materials which extract additional properties and appends them to X + ''' boxes = self.X self.X = [] # load a property for all materials @@ -292,7 +319,13 @@ def data_expand(self,boxes=True,*property_funcs): def resize_boxes(self, L=32): + '''resize 3-D tensor boxes to fit neural network architecture (32x32x32) + Parameters + ---------- + L: int + length-scale of boxes (3-D Tensors representing material chemical env.) + ''' max_length = np.max(self.box_lengths) if L >= max_length: diff --git a/tests/test_module.py b/tests/test_module.py index 286cd0d2..04a12518 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -31,12 +31,12 @@ def test_loadvisual(): def test_bands(): training = mlbands.Group(mlbands.SECRET_KEY) - training.data_make(range(1,30)) + training.data_make(range(1,100)) # training.data_make(range(1,30),True) training.resize_boxes() testing = mlbands.Group(mlbands.SECRET_KEY) - testing.data_make(range(300,314)) + testing.data_make(range(300,350)) # testing.data_make(range(300,314),True) testing.resize_boxes() @@ -74,8 +74,8 @@ def test_dataexpand(): test_materialprops() -# test_visuals() -# test_loadvisual() +test_visuals() +test_loadvisual() # test_bands() -# test_bands_load() -# test_dataexpand() +test_bands_load() +test_dataexpand() From 7b851138af8c16efab31713993d82e6f8c72ffcd Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 14:55:18 -0500 Subject: [PATCH 26/27] deploy v1.0 with poetry --- .gitignore | 1 + Pipfile | 18 - Pipfile.lock | 1583 --------------------------- dist/mlbands-1.0.0-py3-none-any.whl | Bin 0 -> 10060 bytes dist/mlbands-1.0.0.tar.gz | Bin 0 -> 9426 bytes mlbands/main.py | 16 +- poetry.lock | 1397 +++++++++++++++++++++++ pyproject.toml | 17 + setup.py | 41 - tests/test_module.py | 6 +- 10 files changed, 1429 insertions(+), 1650 deletions(-) delete mode 100644 Pipfile delete mode 100644 Pipfile.lock create mode 100644 dist/mlbands-1.0.0-py3-none-any.whl create mode 100644 dist/mlbands-1.0.0.tar.gz create mode 100644 poetry.lock create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.gitignore b/.gitignore index 69c08300..fc0d998c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ __pycache__ *.egg-info/ +*.eggs/ *.data #neuralnetwork-generated diff --git a/Pipfile b/Pipfile deleted file mode 100644 index c20c60d2..00000000 --- a/Pipfile +++ /dev/null @@ -1,18 +0,0 @@ -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -mp-api = "*" -mpcontribs-client = "*" -mendeleev = "*" -numpy = "*" -torch = "*" -torchvision = "*" - -[dev-packages] -pipenv-setup = "*" - -[requires] -python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index 14a4cab8..00000000 --- a/Pipfile.lock +++ /dev/null @@ -1,1583 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "95fffd4403cfe84095601c56a5f1cb22cb69eebd2d9b27012dcd13633b415e6d" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "arrow": { - "hashes": [ - "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1", - "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2" - ], - "markers": "python_version >= '3.6'", - "version": "==1.2.3" - }, - "asttokens": { - "hashes": [ - "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3", - "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c" - ], - "version": "==2.2.1" - }, - "attrs": { - "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" - ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" - }, - "backcall": { - "hashes": [ - "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", - "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" - ], - "version": "==0.2.0" - }, - "boltons": { - "hashes": [ - "sha256:65e70a79a731a7fe6e98592ecfb5ccf2115873d01dbc576079874629e5c90f13", - "sha256:b9bb7b58b2b420bbe11a6025fdef6d3e5edc9f76a42fb467afe7ca212ef9948b" - ], - "version": "==21.0.0" - }, - "bravado": { - "hashes": [ - "sha256:1bb6ef75d84140c851fffe6420baaee5037d840070cfe11d60913be6ab8e0530", - "sha256:8ac8bbb645e49607917a5c07808116c708521f51e80d9c29bc4a168ff4dd22c6" - ], - "markers": "python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version != '3.5.0'", - "version": "==11.0.3" - }, - "bravado-core": { - "hashes": [ - "sha256:0da9c6f3814734622a55db3f62d08db6e188b25f3ebd087de370c91afb66a7f4", - "sha256:e231567cdc471337d23dfc950c45c5914ade8a78cde7ccf2ebb9433fcda29f40" - ], - "markers": "python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_full_version != '3.5.0'", - "version": "==5.17.1" - }, - "certifi": { - "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" - ], - "markers": "python_version >= '3.6'", - "version": "==2022.12.7" - }, - "charset-normalizer": { - "hashes": [ - "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", - "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" - ], - "markers": "python_full_version >= '3.6.0'", - "version": "==2.1.1" - }, - "colorama": { - "hashes": [ - "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", - "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", - "version": "==0.4.6" - }, - "contourpy": { - "hashes": [ - "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17", - "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d", - "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c", - "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e", - "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1", - "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd", - "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf", - "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b", - "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b", - "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41", - "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72", - "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2", - "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa", - "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb", - "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768", - "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183", - "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa", - "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278", - "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2", - "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3", - "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc", - "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9", - "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30", - "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0", - "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3", - "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7", - "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e", - "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6", - "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142", - "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5", - "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de", - "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b", - "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb", - "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea", - "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a", - "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832", - "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a", - "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512", - "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675", - "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1", - "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95", - "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db", - "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563", - "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8", - "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9", - "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9", - "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036", - "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b", - "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0", - "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f", - "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b", - "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f", - "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe", - "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45", - "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd", - "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c", - "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee", - "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da", - "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a", - "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340", - "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769", - "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109", - "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4", - "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f", - "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf", - "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621", - "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3", - "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48", - "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc" - ], - "markers": "python_version >= '3.7'", - "version": "==1.0.6" - }, - "cycler": { - "hashes": [ - "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3", - "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f" - ], - "markers": "python_version >= '3.6'", - "version": "==0.11.0" - }, - "decorator": { - "hashes": [ - "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", - "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" - ], - "markers": "python_version >= '3.5'", - "version": "==5.1.1" - }, - "dnspython": { - "hashes": [ - "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e", - "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f" - ], - "markers": "python_version >= '3.6' and python_version < '4.0'", - "version": "==2.2.1" - }, - "emmet-core": { - "hashes": [ - "sha256:155bf361fb86ed9feba891324b3263ff70c3a89a7ba6af885f32e867a297fdbe", - "sha256:1e2d7a834892f9b204e5c20b10483638f46ed004c9a2a02e672e0d147bf24b60" - ], - "markers": "python_version >= '3.8'", - "version": "==0.39.6" - }, - "executing": { - "hashes": [ - "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", - "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" - ], - "version": "==1.2.0" - }, - "filetype": { - "hashes": [ - "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", - "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25" - ], - "version": "==1.2.0" - }, - "flatten-dict": { - "hashes": [ - "sha256:506a96b6e6f805b81ae46a0f9f31290beb5fa79ded9d80dbe1b7fa236ab43076", - "sha256:7e245b20c4c718981212210eec4284a330c9f713e632e98765560e05421e48ad" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.4.2" - }, - "fonttools": { - "hashes": [ - "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1", - "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb" - ], - "markers": "python_version >= '3.7'", - "version": "==4.38.0" - }, - "fqdn": { - "hashes": [ - "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", - "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014" - ], - "version": "==1.5.1" - }, - "future": { - "hashes": [ - "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.18.2" - }, - "greenlet": { - "hashes": [ - "sha256:0109af1138afbfb8ae647e31a2b1ab030f58b21dd8528c27beaeb0093b7938a9", - "sha256:0459d94f73265744fee4c2d5ec44c6f34aa8a31017e6e9de770f7bcf29710be9", - "sha256:04957dc96669be041e0c260964cfef4c77287f07c40452e61abe19d647505581", - "sha256:0722c9be0797f544a3ed212569ca3fe3d9d1a1b13942d10dd6f0e8601e484d26", - "sha256:097e3dae69321e9100202fc62977f687454cd0ea147d0fd5a766e57450c569fd", - "sha256:0b493db84d124805865adc587532ebad30efa68f79ad68f11b336e0a51ec86c2", - "sha256:13ba6e8e326e2116c954074c994da14954982ba2795aebb881c07ac5d093a58a", - "sha256:13ebf93c343dd8bd010cd98e617cb4c1c1f352a0cf2524c82d3814154116aa82", - "sha256:1407fe45246632d0ffb7a3f4a520ba4e6051fc2cbd61ba1f806900c27f47706a", - "sha256:1bf633a50cc93ed17e494015897361010fc08700d92676c87931d3ea464123ce", - "sha256:2d0bac0385d2b43a7bd1d651621a4e0f1380abc63d6fb1012213a401cbd5bf8f", - "sha256:3001d00eba6bbf084ae60ec7f4bb8ed375748f53aeaefaf2a37d9f0370558524", - "sha256:356e4519d4dfa766d50ecc498544b44c0249b6de66426041d7f8b751de4d6b48", - "sha256:38255a3f1e8942573b067510f9611fc9e38196077b0c8eb7a8c795e105f9ce77", - "sha256:3d75b8d013086b08e801fbbb896f7d5c9e6ccd44f13a9241d2bf7c0df9eda928", - "sha256:41b825d65f31e394b523c84db84f9383a2f7eefc13d987f308f4663794d2687e", - "sha256:42e602564460da0e8ee67cb6d7236363ee5e131aa15943b6670e44e5c2ed0f67", - "sha256:4aeaebcd91d9fee9aa768c1b39cb12214b30bf36d2b7370505a9f2165fedd8d9", - "sha256:4c8b1c43e75c42a6cafcc71defa9e01ead39ae80bd733a2608b297412beede68", - "sha256:4d37990425b4687ade27810e3b1a1c37825d242ebc275066cfee8cb6b8829ccd", - "sha256:4f09b0010e55bec3239278f642a8a506b91034f03a4fb28289a7d448a67f1515", - "sha256:505138d4fa69462447a562a7c2ef723c6025ba12ac04478bc1ce2fcc279a2db5", - "sha256:5067920de254f1a2dee8d3d9d7e4e03718e8fd2d2d9db962c8c9fa781ae82a39", - "sha256:56961cfca7da2fdd178f95ca407fa330c64f33289e1804b592a77d5593d9bd94", - "sha256:5a8e05057fab2a365c81abc696cb753da7549d20266e8511eb6c9d9f72fe3e92", - "sha256:659f167f419a4609bc0516fb18ea69ed39dbb25594934bd2dd4d0401660e8a1e", - "sha256:662e8f7cad915ba75d8017b3e601afc01ef20deeeabf281bd00369de196d7726", - "sha256:6f61d71bbc9b4a3de768371b210d906726535d6ca43506737682caa754b956cd", - "sha256:72b00a8e7c25dcea5946692a2485b1a0c0661ed93ecfedfa9b6687bd89a24ef5", - "sha256:811e1d37d60b47cb8126e0a929b58c046251f28117cb16fcd371eed61f66b764", - "sha256:81b0ea3715bf6a848d6f7149d25bf018fd24554a4be01fcbbe3fdc78e890b955", - "sha256:88c8d517e78acdf7df8a2134a3c4b964415b575d2840a2746ddb1cc6175f8608", - "sha256:8dca09dedf1bd8684767bc736cc20c97c29bc0c04c413e3276e0962cd7aeb148", - "sha256:974a39bdb8c90a85982cdb78a103a32e0b1be986d411303064b28a80611f6e51", - "sha256:9e112e03d37987d7b90c1e98ba5e1b59e1645226d78d73282f45b326f7bddcb9", - "sha256:9e9744c657d896c7b580455e739899e492a4a452e2dd4d2b3e459f6b244a638d", - "sha256:9ed358312e63bf683b9ef22c8e442ef6c5c02973f0c2a939ec1d7b50c974015c", - "sha256:9f2c221eecb7ead00b8e3ddb913c67f75cba078fd1d326053225a3f59d850d72", - "sha256:a20d33124935d27b80e6fdacbd34205732660e0a1d35d8b10b3328179a2b51a1", - "sha256:a4c0757db9bd08470ff8277791795e70d0bf035a011a528ee9a5ce9454b6cba2", - "sha256:afe07421c969e259e9403c3bb658968702bc3b78ec0b6fde3ae1e73440529c23", - "sha256:b1992ba9d4780d9af9726bbcef6a1db12d9ab1ccc35e5773685a24b7fb2758eb", - "sha256:b23d2a46d53210b498e5b701a1913697671988f4bf8e10f935433f6e7c332fb6", - "sha256:b5e83e4de81dcc9425598d9469a624826a0b1211380ac444c7c791d4a2137c19", - "sha256:be35822f35f99dcc48152c9839d0171a06186f2d71ef76dc57fa556cc9bf6b45", - "sha256:be9e0fb2ada7e5124f5282d6381903183ecc73ea019568d6d63d33f25b2a9000", - "sha256:c140e7eb5ce47249668056edf3b7e9900c6a2e22fb0eaf0513f18a1b2c14e1da", - "sha256:c6a08799e9e88052221adca55741bf106ec7ea0710bca635c208b751f0d5b617", - "sha256:cb242fc2cda5a307a7698c93173d3627a2a90d00507bccf5bc228851e8304963", - "sha256:cce1e90dd302f45716a7715517c6aa0468af0bf38e814ad4eab58e88fc09f7f7", - "sha256:cd4ccc364cf75d1422e66e247e52a93da6a9b73cefa8cad696f3cbbb75af179d", - "sha256:d21681f09e297a5adaa73060737e3aa1279a13ecdcfcc6ef66c292cb25125b2d", - "sha256:d38ffd0e81ba8ef347d2be0772e899c289b59ff150ebbbbe05dc61b1246eb4e0", - "sha256:d566b82e92ff2e09dd6342df7e0eb4ff6275a3f08db284888dcd98134dbd4243", - "sha256:d5b0ff9878333823226d270417f24f4d06f235cb3e54d1103b71ea537a6a86ce", - "sha256:d6ee1aa7ab36475035eb48c01efae87d37936a8173fc4d7b10bb02c2d75dd8f6", - "sha256:db38f80540083ea33bdab614a9d28bcec4b54daa5aff1668d7827a9fc769ae0a", - "sha256:ea688d11707d30e212e0110a1aac7f7f3f542a259235d396f88be68b649e47d1", - "sha256:f6327b6907b4cb72f650a5b7b1be23a2aab395017aa6f1adb13069d66360eb3f", - "sha256:fb412b7db83fe56847df9c47b6fe3f13911b06339c2aa02dcc09dce8bbf582cd" - ], - "markers": "python_version >= '3' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", - "version": "==2.0.1" - }, - "idna": { - "hashes": [ - "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", - "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" - ], - "markers": "python_version >= '3.5'", - "version": "==3.4" - }, - "importlib-resources": { - "hashes": [ - "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6", - "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484" - ], - "markers": "python_version < '3.9'", - "version": "==5.10.2" - }, - "ipython": { - "hashes": [ - "sha256:da01e6df1501e6e7c32b5084212ddadd4ee2471602e2cf3e0190f4de6b0ea481", - "sha256:f3bf2c08505ad2c3f4ed5c46ae0331a8547d36bf4b21a451e8ae80c0791db95b" - ], - "markers": "python_version >= '3.8'", - "version": "==8.8.0" - }, - "isoduration": { - "hashes": [ - "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", - "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042" - ], - "version": "==20.11.0" - }, - "jedi": { - "hashes": [ - "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e", - "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612" - ], - "markers": "python_version >= '3.6'", - "version": "==0.18.2" - }, - "json2html": { - "hashes": [ - "sha256:8951a53662ae9cfd812685facdba693fc950ffc1c1fd1a8a2d3cf4c34600689c" - ], - "version": "==1.3.0" - }, - "jsonpointer": { - "hashes": [ - "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9", - "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a" - ], - "version": "==2.3" - }, - "jsonref": { - "hashes": [ - "sha256:010ca2752546309d8646cd743c64819c3e37bf710c07929bf9c1b409ee9ec6dd", - "sha256:51d3e18b83ca7170ff51286a0e1a6719d8b7fcc7abdb16b189395a8536996b97" - ], - "markers": "python_version >= '3.3' and python_version < '4.0'", - "version": "==1.0.1" - }, - "jsonschema": { - "hashes": [ - "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", - "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" - ], - "markers": "python_version >= '3.7'", - "version": "==4.17.3" - }, - "kiwisolver": { - "hashes": [ - "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", - "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166", - "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c", - "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c", - "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0", - "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4", - "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9", - "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286", - "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767", - "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c", - "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6", - "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b", - "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004", - "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf", - "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494", - "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac", - "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626", - "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766", - "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514", - "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6", - "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f", - "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d", - "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191", - "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d", - "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51", - "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f", - "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8", - "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454", - "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb", - "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da", - "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8", - "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de", - "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a", - "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9", - "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008", - "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3", - "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32", - "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938", - "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1", - "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9", - "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d", - "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824", - "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b", - "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd", - "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2", - "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5", - "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69", - "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3", - "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae", - "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597", - "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e", - "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955", - "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca", - "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a", - "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea", - "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede", - "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4", - "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6", - "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686", - "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408", - "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871", - "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29", - "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750", - "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897", - "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0", - "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2", - "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09", - "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c" - ], - "markers": "python_version >= '3.7'", - "version": "==1.4.4" - }, - "latexcodec": { - "hashes": [ - "sha256:2aa2551c373261cefe2ad3a8953a6d6533e68238d180eb4bb91d7964adb3fe9a", - "sha256:c277a193638dc7683c4c30f6684e3db728a06efb0dc9cf346db8bd0aa6c5d271" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.0.1" - }, - "matplotlib": { - "hashes": [ - "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a", - "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2", - "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501", - "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95", - "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c", - "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267", - "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428", - "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb", - "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83", - "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17", - "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1", - "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73", - "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0", - "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812", - "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a", - "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b", - "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f", - "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f", - "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee", - "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33", - "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028", - "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c", - "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae", - "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc", - "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558", - "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5", - "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc", - "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab", - "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990", - "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27", - "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136", - "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa", - "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6", - "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c", - "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b", - "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617", - "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1", - "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3", - "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4", - "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0", - "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec" - ], - "markers": "python_version >= '3.8'", - "version": "==3.6.2" - }, - "matplotlib-inline": { - "hashes": [ - "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", - "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" - ], - "markers": "python_version >= '3.5'", - "version": "==0.1.6" - }, - "mendeleev": { - "hashes": [ - "sha256:6aec55166046813d92e7253498fe5c8f040bc920afc0893c80feda8ab6e0064e", - "sha256:d3fada5e72f3b0fc90e83d7f95dac3cb312303dd17abf3fd3c16992febddad32" - ], - "index": "pypi", - "version": "==0.12.1" - }, - "monotonic": { - "hashes": [ - "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7", - "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c" - ], - "version": "==1.6" - }, - "monty": { - "hashes": [ - "sha256:6cca8f14a18a2030b243a1377dfd59049a1ccce007b34f810a8f5eece72b9ceb", - "sha256:f9624c90687486cfebcc1e80a0b1da201a0ea14213fd1f392960cd47d3171907" - ], - "markers": "python_version >= '3.5'", - "version": "==2022.9.9" - }, - "mp-api": { - "hashes": [ - "sha256:58e3a2d539f68e0610177af9d2482655cbe38b16650227776d26ff614edc17bb", - "sha256:e28033fd801be3e781dcc18420a13cdfe9aa0f6098f2056b0a1126bf7acdf027" - ], - "index": "pypi", - "version": "==0.30.5" - }, - "mpcontribs-client": { - "hashes": [ - "sha256:468aec08addfb00921af389287994786bf203fa9078a367a01e5cbbfbaa95aee", - "sha256:9a939f3ec4d2415904db1830c088b2f3fe7bb49f4f8f7db69ce0403ea91c7d76" - ], - "index": "pypi", - "version": "==5.0.7" - }, - "mpmath": { - "hashes": [ - "sha256:604bc21bd22d2322a177c73bdb573994ef76e62edd595d17e00aff24b0667e5c", - "sha256:79ffb45cf9f4b101a807595bcb3e72e0396202e0b1d25d689134b48c4216a81a" - ], - "version": "==1.2.1" - }, - "msgpack": { - "hashes": [ - "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", - "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", - "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", - "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", - "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", - "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", - "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", - "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", - "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", - "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", - "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", - "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", - "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", - "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", - "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", - "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", - "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", - "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", - "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", - "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", - "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", - "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", - "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", - "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", - "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", - "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", - "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", - "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", - "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", - "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", - "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", - "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", - "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", - "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", - "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", - "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", - "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", - "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", - "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", - "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", - "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", - "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", - "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", - "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", - "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", - "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", - "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", - "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", - "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", - "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", - "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", - "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" - ], - "version": "==1.0.4" - }, - "networkx": { - "hashes": [ - "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e", - "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524" - ], - "markers": "python_version >= '3.8'", - "version": "==2.8.8" - }, - "numpy": { - "hashes": [ - "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9", - "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398", - "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7", - "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2", - "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954", - "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6", - "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032", - "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36", - "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c", - "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8", - "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7", - "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f", - "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700", - "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086", - "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7", - "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2", - "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9", - "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407", - "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2", - "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36", - "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566", - "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1", - "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e", - "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51", - "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1", - "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d", - "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf", - "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7" - ], - "index": "pypi", - "version": "==1.24.1" - }, - "packaging": { - "hashes": [ - "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3", - "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3" - ], - "markers": "python_version >= '3.7'", - "version": "==22.0" - }, - "palettable": { - "hashes": [ - "sha256:72feca71cf7d79830cd6d9181b02edf227b867d503bec953cf9fa91bf44896bd", - "sha256:c3bf3f548fc228e86bd3d16928bbf8d621c1d1098791ceab446d0e3a5e1298d1" - ], - "version": "==3.3.0" - }, - "pandas": { - "hashes": [ - "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883", - "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028", - "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b", - "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824", - "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe", - "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e", - "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261", - "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b", - "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f", - "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5", - "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0", - "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a", - "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc", - "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39", - "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5", - "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702", - "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f", - "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3", - "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519", - "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f", - "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc", - "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72", - "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb", - "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789", - "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090", - "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273", - "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2" - ], - "markers": "python_version >= '3.8'", - "version": "==1.5.2" - }, - "parso": { - "hashes": [ - "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", - "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" - ], - "markers": "python_version >= '3.6'", - "version": "==0.8.3" - }, - "pexpect": { - "hashes": [ - "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", - "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" - ], - "markers": "sys_platform != 'win32'", - "version": "==4.8.0" - }, - "pickleshare": { - "hashes": [ - "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", - "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" - ], - "version": "==0.7.5" - }, - "pillow": { - "hashes": [ - "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b", - "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e", - "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35", - "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153", - "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9", - "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569", - "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57", - "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8", - "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264", - "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157", - "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133", - "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab", - "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6", - "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5", - "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df", - "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503", - "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b", - "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa", - "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327", - "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493", - "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d", - "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4", - "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4", - "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35", - "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2", - "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c", - "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011", - "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a", - "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e", - "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f", - "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57", - "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9", - "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5", - "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d", - "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e", - "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815", - "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0", - "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b", - "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd", - "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c", - "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3", - "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5", - "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee", - "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343", - "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb", - "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47", - "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed", - "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837", - "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286", - "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28", - "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628", - "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df", - "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d", - "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d", - "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a", - "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6", - "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336", - "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132", - "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070", - "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe", - "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a", - "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391", - "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a" - ], - "markers": "python_version >= '3.7'", - "version": "==9.4.0" - }, - "pint": { - "hashes": [ - "sha256:e1d4989ff510b378dad64f91711e7bdabe5ca78d75b06a18569ac454678c4baf" - ], - "markers": "python_version >= '3.8'", - "version": "==0.19.2" - }, - "pkgutil-resolve-name": { - "hashes": [ - "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", - "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e" - ], - "markers": "python_version < '3.9'", - "version": "==1.3.10" - }, - "plotly": { - "hashes": [ - "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787", - "sha256:52fd74b08aa4fd5a55b9d3034a30dbb746e572d7ed84897422f927fdf687ea5f" - ], - "markers": "python_version >= '3.6'", - "version": "==5.11.0" - }, - "prompt-toolkit": { - "hashes": [ - "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63", - "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305" - ], - "markers": "python_full_version >= '3.6.2'", - "version": "==3.0.36" - }, - "ptyprocess": { - "hashes": [ - "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", - "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" - ], - "version": "==0.7.0" - }, - "pure-eval": { - "hashes": [ - "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350", - "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3" - ], - "version": "==0.2.2" - }, - "pybtex": { - "hashes": [ - "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755", - "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.24.0" - }, - "pydantic": { - "hashes": [ - "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72", - "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423", - "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f", - "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c", - "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06", - "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53", - "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774", - "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6", - "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c", - "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f", - "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6", - "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3", - "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817", - "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903", - "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a", - "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e", - "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d", - "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85", - "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00", - "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28", - "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3", - "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024", - "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4", - "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e", - "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d", - "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa", - "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854", - "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15", - "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648", - "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8", - "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c", - "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857", - "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f", - "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416", - "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978", - "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d" - ], - "markers": "python_version >= '3.7'", - "version": "==1.10.4" - }, - "pyfiglet": { - "hashes": [ - "sha256:c6c2321755d09267b438ec7b936825a4910fec696292139e664ca8670e103639", - "sha256:d555bcea17fbeaf70eaefa48bb119352487e629c9b56f30f383e2c62dd67a01c" - ], - "version": "==0.8.post1" - }, - "pygments": { - "hashes": [ - "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", - "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" - ], - "markers": "python_version >= '3.6'", - "version": "==2.14.0" - }, - "pyisemail": { - "hashes": [ - "sha256:3d2bebd159f436673219d024a3f02bed1b468c793df9a5fa08d72b7d4b4f6cb4", - "sha256:daf4b3fb2150a38f406b0aaba729e19fcd638a6d1c0549c25ff54c7b804618f8" - ], - "markers": "python_version >= '3.7'", - "version": "==2.0.1" - }, - "pymatgen": { - "hashes": [ - "sha256:107544fd1fe48aa97d932b7897b46f0db56903c23e44ae971ebf7c3af0b38e99", - "sha256:2baaa93dda35e5aa0b4c4521c809a0f5dfd6405293dfcedbd9dc7a7f0a9f007a", - "sha256:345965e4ef56014d1f16827dfd56477807eab0079ed7da608e321ca6d2ebcb45", - "sha256:3c104b53850fd6fb9891d5095ca1a2459cf8a2f071bfe03cd687fce67f4a70ff", - "sha256:8119ad5179002669d201a858b646c886a5775b6b478b64669b24a7c8c2e04404", - "sha256:c9ccd4be777a376897ba150826e3f0b9ac9ebf369fb9478cb79a35e042817c25", - "sha256:e30ed85c480df491b576b08cc5a2900027da3896351fbf9045bdeddf31aab651" - ], - "markers": "python_version >= '3.8'", - "version": "==2022.11.7" - }, - "pymongo": { - "hashes": [ - "sha256:016c412118e1c23fef3a1eada4f83ae6e8844fd91986b2e066fc1b0013cdd9ae", - "sha256:01f7cbe88d22440b6594c955e37312d932fd632ffed1a86d0c361503ca82cc9d", - "sha256:08fc250b5552ee97ceeae0f52d8b04f360291285fc7437f13daa516ce38fdbc6", - "sha256:0c466710871d0026c190fc4141e810cf9d9affbf4935e1d273fbdc7d7cda6143", - "sha256:1074f1a6f23e28b983c96142f2d45be03ec55d93035b471c26889a7ad2365db3", - "sha256:12f3621a46cdc7a9ba8080422262398a91762a581d27e0647746588d3f995c88", - "sha256:2c2fdc855149efe7cdcc2a01ca02bfa24761c640203ea94df467f3baf19078be", - "sha256:316498b642c00401370b2156b5233b256f9b33799e0a8d9d0b8a7da217a20fca", - "sha256:341221e2f2866a5960e6f8610f4cbac0bb13097f3b1a289aa55aba984fc0d969", - "sha256:34b040e095e1671df0c095ec0b04fc4ebb19c4c160f87c2b55c079b16b1a6b00", - "sha256:34e95ffb0a68bffbc3b437f2d1f25fc916fef3df5cdeed0992da5f42fae9b807", - "sha256:39b03045c71f761aee96a12ebfbc2f4be89e724ff6f5e31c2574c1a0e2add8bd", - "sha256:3b93043b14ba7eb08c57afca19751658ece1cfa2f0b7b1fb5c7a41452fbb8482", - "sha256:47f7aa217b25833cd6f0e72b0d224be55393c2692b4f5e0561cb3beeb10296e9", - "sha256:49210feb0be8051a64d71691f0acbfbedc33e149f0a5d6e271fddf6a12493fed", - "sha256:4d00b91c77ceb064c9b0459f0d6ea5bfdbc53ea9e17cf75731e151ef25a830c7", - "sha256:4ed00f96e147f40b565fe7530d1da0b0f3ab803d5dd5b683834500fa5d195ec4", - "sha256:5134d33286c045393c7beb51be29754647cec5ebc051cf82799c5ce9820a2ca2", - "sha256:524d78673518dcd352a91541ecd2839c65af92dc883321c2109ef6e5cd22ef23", - "sha256:52896e22115c97f1c829db32aa2760b0d61839cfe08b168c2b1d82f31dbc5f55", - "sha256:54c377893f2cbbffe39abcff5ff2e917b082c364521fa079305f6f064e1a24a9", - "sha256:55b6163dac53ef1e5d834297810c178050bd0548a4136cd4e0f56402185916ca", - "sha256:599d3f6fbef31933b96e2d906b0f169b3371ff79ea6aaf6ecd76c947a3508a3d", - "sha256:5effd87c7d363890259eac16c56a4e8da307286012c076223997f8cc4a8c435b", - "sha256:66413c50d510e5bcb0afc79880d1693a2185bcea003600ed898ada31338c004e", - "sha256:695939036a320f4329ccf1627edefbbb67cc7892b8222d297b0dd2313742bfee", - "sha256:6c2216d8b6a6d019c6f4b1ad55f890e5e77eb089309ffc05b6911c09349e7474", - "sha256:6dd1cf2995fdbd64fc0802313e8323f5fa18994d51af059b5b8862b73b5e53f0", - "sha256:6fcfbf435eebf8a1765c6d1f46821740ebe9f54f815a05c8fc30d789ef43cb12", - "sha256:704d939656e21b073bfcddd7228b29e0e8a93dd27b54240eaafc0b9a631629a6", - "sha256:711bc52cb98e7892c03e9b669bebd89c0a890a90dbc6d5bb2c47f30239bac6e9", - "sha256:74731c9e423c93cbe791f60c27030b6af6a948cef67deca079da6cd1bb583a8e", - "sha256:7761cacb8745093062695b11574effea69db636c2fd0a9269a1f0183712927b4", - "sha256:7b16250238de8dafca225647608dddc7bbb5dce3dd53b4d8e63c1cc287394c2f", - "sha256:7c051fe37c96b9878f37fa58906cb53ecd13dcb7341d3a85f1e2e2f6b10782d9", - "sha256:7d43ac9c7eeda5100fb0a7152fab7099c9cf9e5abd3bb36928eb98c7d7a339c6", - "sha256:81d1a7303bd02ca1c5be4aacd4db73593f573ba8e0c543c04c6da6275fd7a47e", - "sha256:8a06a0c02f5606330e8f2e2f3b7949877ca7e4024fa2bff5a4506bec66c49ec7", - "sha256:8fd6e191b92a10310f5a6cfe10d6f839d79d192fb02480bda325286bd1c7b385", - "sha256:943f208840777f34312c103a2d1caab02d780c4e9be26b3714acf6c4715ba7e1", - "sha256:9b87b23570565a6ddaa9244d87811c2ee9cffb02a753c8a2da9c077283d85845", - "sha256:a6cd6f1db75eb07332bd3710f58f5fce4967eadbf751bad653842750a61bda62", - "sha256:a966d5304b7d90c45c404914e06bbf02c5bf7e99685c6c12f0047ef2aa837142", - "sha256:a9c2885b4a8e6e39db5662d8b02ca6dcec796a45e48c2de12552841f061692ba", - "sha256:b0cfe925610f2fd59555bb7fc37bd739e4b197d33f2a8b2fae7b9c0c6640318c", - "sha256:b38a96b3eed8edc515b38257f03216f382c4389d022a8834667e2bc63c0c0c31", - "sha256:b8a03af1ce79b902a43f5f694c4ca8d92c2a4195db0966f08f266549e2fc49bc", - "sha256:bb869707d8e30645ed6766e44098600ca6cdf7989c22a3ea2b7966bb1d98d4b2", - "sha256:be1d2ce7e269215c3ee9a215e296b7a744aff4f39233486d2c4d77f5f0c561a6", - "sha256:c0640b4e9d008e13956b004d1971a23377b3d45491f87082161c92efb1e6c0d6", - "sha256:c09956606c08c4a7c6178a04ba2dd9388fcc5db32002ade9c9bc865ab156ab6d", - "sha256:c184ec5be465c0319440734491e1aa4709b5f3ba75fdfc9dbbc2ae715a7f6829", - "sha256:c1a70c51da9fa95bd75c167edb2eb3f3c4d27bc4ddd29e588f21649d014ec0b7", - "sha256:c29e758f0e734e1e90357ae01ec9c6daf19ff60a051192fe110d8fb25c62600e", - "sha256:c6258a3663780ae47ba73d43eb63c79c40ffddfb764e09b56df33be2f9479837", - "sha256:cafa52873ae12baa512a8721afc20de67a36886baae6a5f394ddef0ce9391f91", - "sha256:cd6a4afb20fb3c26a7bfd4611a0bbb24d93cbd746f5eb881f114b5e38fd55501", - "sha256:cdb87309de97c63cb9a69132e1cb16be470e58cffdfbad68fdd1dc292b22a840", - "sha256:d07d06dba5b5f7d80f9cc45501456e440f759fe79f9895922ed486237ac378a8", - "sha256:d3a51901066696c4af38c6c63a1f0aeffd5e282367ff475de8c191ec9609b56d", - "sha256:d5571b6978750601f783cea07fb6b666837010ca57e5cefa389c1d456f6222e2", - "sha256:d86c35d94b5499689354ccbc48438a79f449481ee6300f3e905748edceed78e7", - "sha256:dc0cff74cd36d7e1edba91baa09622c35a8a57025f2f2b7a41e3f83b1db73186", - "sha256:dc24d245026a72d9b4953729d31813edd4bd4e5c13622d96e27c284942d33f24", - "sha256:dca34367a4e77fcab0693e603a959878eaf2351585e7d752cac544bc6b2dee46", - "sha256:e2961b05f9c04a53da8bfc72f1910b6aec7205fcf3ac9c036d24619979bbee4b", - "sha256:e7fac06a539daef4fcf5d8288d0d21b412f9b750454cd5a3cf90484665db442a", - "sha256:eac0a143ef4f28f49670bf89cb15847eb80b375d55eba401ca2f777cd425f338", - "sha256:ef888f48eb9203ee1e04b9fb27429017b290fb916f1e7826c2f7808c88798394", - "sha256:f3055510fdfdb1775bc8baa359783022f70bb553f2d46e153c094dfcb08578ff", - "sha256:fa7e202feb683dad74f00dea066690448d0cfa310f8a277db06ec8eb466601b5", - "sha256:fc28e8d85d392a06434e9a934908d97e2cf453d69488d2bcd0bfb881497fd975", - "sha256:fd7bb378d82b88387dc10227cfd964f6273eb083e05299e9b97cbe075da12d11", - "sha256:ffcc8394123ea8d43fff8e5d000095fe7741ce3f8988366c5c919c4f5eb179d3" - ], - "markers": "python_version >= '3.7'", - "version": "==4.3.3" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "pyrsistent": { - "hashes": [ - "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", - "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", - "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", - "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", - "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", - "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", - "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", - "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", - "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", - "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", - "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", - "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", - "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", - "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", - "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", - "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", - "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", - "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", - "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", - "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", - "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", - "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", - "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", - "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", - "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", - "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", - "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" - ], - "markers": "python_version >= '3.7'", - "version": "==0.19.3" - }, - "python-dateutil": { - "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" - }, - "pytz": { - "hashes": [ - "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a", - "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd" - ], - "version": "==2022.7" - }, - "pyyaml": { - "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "markers": "python_version >= '3.6'", - "version": "==6.0" - }, - "requests": { - "hashes": [ - "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", - "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" - ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.1" - }, - "requests-futures": { - "hashes": [ - "sha256:35547502bf1958044716a03a2f47092a89efe8f9789ab0c4c528d9c9c30bc148", - "sha256:633804c773b960cef009efe2a5585483443c6eac3c39cc64beba2884013bcdd9" - ], - "version": "==1.0.0" - }, - "rfc3339-validator": { - "hashes": [ - "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", - "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa" - ], - "version": "==0.1.4" - }, - "rfc3987": { - "hashes": [ - "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53", - "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733" - ], - "version": "==1.3.8" - }, - "ruamel.yaml": { - "hashes": [ - "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7", - "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af" - ], - "markers": "python_version >= '3'", - "version": "==0.17.21" - }, - "ruamel.yaml.clib": { - "hashes": [ - "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e", - "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3", - "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5", - "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497", - "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f", - "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac", - "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697", - "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763", - "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282", - "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94", - "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1", - "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072", - "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9", - "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5", - "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231", - "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93", - "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b", - "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb", - "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f", - "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307", - "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8", - "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b", - "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b", - "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640", - "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7", - "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a", - "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71", - "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8", - "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7", - "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80", - "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e", - "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab", - "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0", - "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646" - ], - "markers": "python_version < '3.11' and platform_python_implementation == 'CPython'", - "version": "==0.2.7" - }, - "scipy": { - "hashes": [ - "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a", - "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728", - "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809", - "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be", - "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2", - "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2", - "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3", - "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210", - "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8", - "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4", - "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143", - "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c", - "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694", - "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48", - "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7", - "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f", - "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54", - "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686", - "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd", - "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540", - "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8" - ], - "markers": "python_version < '3.12' and python_version >= '3.8'", - "version": "==1.10.0" - }, - "semantic-version": { - "hashes": [ - "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", - "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" - ], - "markers": "python_version >= '2.7'", - "version": "==2.10.0" - }, - "setuptools": { - "hashes": [ - "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54", - "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75" - ], - "markers": "python_version >= '3.7'", - "version": "==65.6.3" - }, - "simplejson": { - "hashes": [ - "sha256:039b27f5a02b0919bea8af92bef1929ffd84ec98381f4fd72b6d29dd4742f7ee", - "sha256:04dddf0661b5e90110010d949421b2a34e2ee3aebb507c9a6a9847b8b0123223", - "sha256:05b907cdf2bfd5e8d24696f5b4ec7dcf98303ea0d2ca2e1544beabfdc1a60dcb", - "sha256:081a1e525bef7954d7e22b981aaed7af25866c6cd2213109319d007f8653ac18", - "sha256:0bc11f3957035b74b8c02cdcd8501bb04e0c03600d6407089171195e3f8ab311", - "sha256:0c1773f2eee5e8a4d74475caed96cb6364fbebeeafb5a915af7d93d9c0ac28af", - "sha256:0fd04f41446062c5b2f73d7fb95f26622329d7e4c676ed9b26133149ac110435", - "sha256:128b931ff9ef86ac252e7c2503fbdd951d2985874fcf7b69ed267ddaa5a17b58", - "sha256:188d3e1a20d11507af0606eed14accb72e629c0e28830feb487c6b0e134be625", - "sha256:1ae965e2906209a529f519edb1d101aa53c77208845973bc80343ae9cfb92297", - "sha256:1ba2f1e29b4c3bb1fb6a120df971e65380695149882c7edf90cfaf099998c9d9", - "sha256:1e8da2f4f87cc71f61e35ee7c1b8a7a6c8ff3ecdeac2e00abe4e49bf8a5a9cae", - "sha256:2869ae5d90655fd2f817411a54008107c3aca0a199cf978b60f8eea082ac5ca0", - "sha256:28908114288372941a8bf9cd98795bd9db527bcb4f6a782e73e18c410909f3d0", - "sha256:2b1eae836e388851d3d95260c113df66aeeedb1dd20e60dbc4439aa2b346903c", - "sha256:2d4646c075da38dd668177e192cd5a6fd42f06bdf722cc1622b768e26ed97611", - "sha256:2dec2152af65fffc469b49bab6b27898a8e0669b49fd1ade23fcaa2f98e0d4f8", - "sha256:32252907f6638f5781b182bda1326f63f53bfe549307eeba70c2ba5fafa9e5dd", - "sha256:3d2fbcd446bcdf7792dc53bde5b68091b69f1b94856db1fc35d904907b8fba96", - "sha256:44fb979ea0790c2818e36c739b401734930aeeb4df51d5b04a02ce4c18103326", - "sha256:487462150adf9fdbd2212b8cf04ad573a927e32a7a777b920a66cc5b2667bfce", - "sha256:4d9c6e9404a4508f929feb50fbe6ea50345fc72470a2bb748ebf0319180a4559", - "sha256:4f2bca68f02c2ca66cb97860307dd5abad405417a6f100f167d37b126a6bae93", - "sha256:4fa6b86bb10bec92b4ac566ef403d2bf31cccf89687556200086b6d3028a1b4f", - "sha256:5010b2657e03ea230766f789369708a5dff2aa0a29d54a5c92fdf851f6aae37b", - "sha256:514bd993830a2f975d2841607a1dae755c0417374fe9716f2d468a9fa98272ab", - "sha256:5627dd758ac5e3a2260b4d63f0ae1276c215e968dc73a77ff8cb99b814f04741", - "sha256:57b6ccc4f6676977901f65e6fb576e3d24e534e2066799669d528591b49ad405", - "sha256:5b06af5e5932f01922137e196708658284aa9333c753ac81d4dbe394bf15879c", - "sha256:64a3b477359ab66674e3b56e04c9c370e8df19161ecce260b94f7c8555adb8bf", - "sha256:652e2c36f6b186e52ff7e59a3e3cfedd9585fd19f133ec57c5b3e93fd2a633c1", - "sha256:66dae3897156b3654214e48cc807f66ed100d884b3fa1ac93fea34ff5998dfc9", - "sha256:6adb7667764d583f7c76eec446f07d337bbfd37edc9e79b702bd45f2a9b7d42d", - "sha256:70b92cd8a476b1ecefa3867669eac06fde3fff354a8cb9f91c45cd3ff706c0ee", - "sha256:746086e3ef6d74b53599df31b491d88a355abf2e31c837137dd90f8c4561cafa", - "sha256:766314378ba1eda1d5c2779ca7a79b16e7f438e266cdfff5e748e585d322643f", - "sha256:77742d20075fc5cb492c807616be100e725fc791c0ce116a3fe439e17035efed", - "sha256:78f4feb838b35035a01ece5e473797db0dd7df5fbc14ee7dd00f76b98160fb14", - "sha256:7a6479f76f10546faa2af5cba80855345822eaa2b294a48851086f4be2189bdb", - "sha256:7b76e623fd8553379a37e97219e51f66b0fca6bb9d6ed13da07bdb768f29d966", - "sha256:7e50ddacae67d9423309cc3eb04bda8161b2c5c49432b4a32c83575f603e78cc", - "sha256:802dfb04449be795f6ba8e082c3f3de14ea63fc10d6b699567632b6e457147d3", - "sha256:8061f5f4c1fbd1a6cb2174eb3ecd63e287a21ef59c4a1465f84315d541eaecc1", - "sha256:86e8cdb5136ac816a7237cba5e738ff28b6976fa0a0e0fef93ae31a097c1bf8b", - "sha256:876b8a1ac493342ac88ebcd6fbdf7442d4c8209d0fe01a8637840ae1e0e7ef32", - "sha256:884c1aa219cc0c7de2e82566f429eb8550b40c09a7de008acdc6fc2b99913eab", - "sha256:8c390830b16aecb53b1afb0c863aa4084e965731c2b08419c9e4e79667627b35", - "sha256:8e913e3a0818b178138658a84969b6d1f057be41a0eabdb0caf49ff4a577e060", - "sha256:91ed1b72edd36c68ec76e94ee4511048b2bd0b066963c1696c42a7a59a585a93", - "sha256:9608b83e2c3d0d86b618e1d8c18b12572b0c688f8d08c6cbc7f8639c731e8e0b", - "sha256:9bac4575a64bfc97890d10b6953800c397cda1d8c241eff9b4dbcb382a337532", - "sha256:9cb5c93c967189909723ee73e01df78cda868af868f824e4620483db52d2c028", - "sha256:a39ff00d2ba06c05b0130ee7b3a431e8a81356bf3a0008b98c41cf1bef3662ee", - "sha256:a63816ddad1fd3788cfdb31dacd4ee187205d9501a3c093560e2d50952ff5367", - "sha256:a8f6523a69a0fee56f65749487fd47b11489a98f1a913f35f3be778fefa45ff4", - "sha256:aaa8d8e799eb1fd1b985d7b13954908ecc861b26b11b9e047320caad0adb4476", - "sha256:affb755fda33d2db93c05674ef5a50ee0395fa0ae2d9d0156820cf57273a5f48", - "sha256:b0f9b98010145cab76d1d61ccd753e7f558128375cd63926d0d28718847f13fd", - "sha256:b34081b9b39e27fb7c8189a0b78ef8d9e1bb8a2238d8ab1cf7c5a17d517cad95", - "sha256:ba6ff90fc11a23236dd4ac3745dd58fa9673470ec1ac79df218ae0946acf702a", - "sha256:c4d899d2080cb91c9319a086852ec8d7bd0e4fb87fa9055f6200009fb247213b", - "sha256:c70b314b5ffc3b97239cf491b4b4f65c5882c9653359791914995d78aeb4791d", - "sha256:cac4b2af2b52585eb0c1c8fa5baff09856040a3e5575f93b3ce65136ca7840cc", - "sha256:cbb77592448dbd1641cedc2de4b374c45ac9db463c9ba467ef9960e8d5cd4c63", - "sha256:cd7b2e53f2fd34048b73f49e81c540f0735d7bd34518b36b47ecc770eb28eda5", - "sha256:d2b0ea9020454c6b9725289282ff8df0e38ef7d9e44613cb62c044cfde518b7f", - "sha256:dc534f8ca83b672774bca72850022fa8ae9e34e2f6fe401a655be823873fd14c", - "sha256:e153cd584d63aa9c70db25b7c094e15ec2dae804ab78291a1a8709be768dcaa2", - "sha256:eb7755521d3a6501e6a435430f5594f8c409b80525a5a027fd1e0d388d5170ee", - "sha256:ec3e189915167ac4c0f49f7916dde3387ad8dba74680342232c88baf68aa37fc", - "sha256:ee8a49e42fed15e53ea4bf584ade744de1be251f26e9d8d25af856ab7b6d50b7", - "sha256:fdf064e57bcaadf7df7402bce22101103b9c7ff4f9615c8fa5e9027828abaa1d" - ], - "markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==3.18.1" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "spglib": { - "hashes": [ - "sha256:0352429063f0f174d5b763a4a119ff972fa8f951762719eb930f2db8d462df22", - "sha256:04fd1899d69456259e3667aa4cace8e4e6f3b8a369714ed01f349b4734263df1", - "sha256:07fa12e0fba754ddf9daa126f82a3b6ed21d4ef5ff7d8f7747e26f55b67c153c", - "sha256:184f4045a6691be5012d75296874e1c7468ebdec3284161724c000efd78558d7", - "sha256:19d1a793515711c3196126f4f6da32b1ebb4e6f3c418671692430191b6bb5c75", - "sha256:1d081ec22da4ab4fc3198e9445ddad6dec2261c43927831151d93e39422610aa", - "sha256:2f76c1a5e9699479c847a577e3d7974c676a030048ca4f9ae1b89008ef8b3db7", - "sha256:4a58ecdd553a9c1603e9bd8124170e97cea0d0ee3be76e5efc2f952a6d463f35", - "sha256:4d026e4ffd4801b1c0bf6784cb7547032db4a1d0806993060dd95f5caa547c77", - "sha256:50dfd569aa2f8a1393c9784449c1631b73ef3b4035670a905a959656a8af2bc5", - "sha256:57ffbc725c7c22410dbf19f276762d81448843e35bdca55d00480e30dfac61e8", - "sha256:64e6731f5921c55521efe53cd9eead26a624124b04547216a8e90bc654638664", - "sha256:778306dcccd5c3946357d64435593d80d22758abd94d2d0fc9ec8ee3f75c33a3", - "sha256:791cd3d525a33142f874facb4a0371a744deb6c63cbfa8d8eec2cc2977f54691", - "sha256:8916019d201e107d3dc02367ad36f96913e2a42dc9226578e5608b835dec3ad4", - "sha256:8b09b79309bd599947d1007ec7598182f193aa291fc50cd5f19b2c73aa643641", - "sha256:98ff97079e331cc707cc1836bfe6c632eb496ffff76fd534bd28faa1221124bd", - "sha256:9f904e8a1420e3c07a0815f698c464d9a3ea5b5419276ae002f765c5d06f7bee", - "sha256:a54dbc8954ffef86895c29416274b23b562dcdd23f8d3d4e61b47b43eabe65aa", - "sha256:b515b688b595590181a763586d9b2bf28e1c5c49dadc90825963ee5c8d63ff69", - "sha256:b57e9cbe6ce271a9a2ff403e236e07adaf6c263acbf4dbe007632e189f4108e7", - "sha256:b7440b220cd100c31ee72a33dcb1ee8544ff9b0c0cd69aeee78c081eea654cd3", - "sha256:b9ab53e531f4083ef61f349fe662f40c1f86bc1e313d76f838a54317acb74865", - "sha256:c5c23bd8ee8941cb679ba941f8b49cae306fa62a92085d84a451ae86332dc440", - "sha256:c6dafee1c21ef378df002802a7a74f92b6a8b54170fe12ebab7f563c8333aae3", - "sha256:d0d17316837825c67723ab2bc6d9cdee0a8252673c7e4e12f8a9264732865bef", - "sha256:d2132751f1151f6875b45c9e4b9053fee1d2ef376aa85c8a53f058c71f492a9e", - "sha256:d9f63b3f1b00a49d1a409b47e66beb6ea3eaed2131749be8668fce3cb01ec753", - "sha256:da956b941a377c6af450b252ee4ef03040dd2f80b5b77c56d043a5aa3b7e0aca" - ], - "version": "==2.0.2" - }, - "sqlalchemy": { - "hashes": [ - "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e", - "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420", - "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0", - "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466", - "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be", - "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd", - "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718", - "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618", - "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e", - "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053", - "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0", - "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1", - "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120", - "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6", - "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30", - "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d", - "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d", - "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34", - "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe", - "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2", - "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96", - "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0", - "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5", - "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32", - "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23", - "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3", - "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad", - "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5", - "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92", - "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f", - "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857", - "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854", - "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6", - "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a", - "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf", - "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2", - "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa", - "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86", - "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a", - "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df", - "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.4.46" - }, - "stack-data": { - "hashes": [ - "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", - "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8" - ], - "version": "==0.6.2" - }, - "swagger-spec-validator": { - "hashes": [ - "sha256:16a5ce08c772824a77b1a4a05efc047d72eef1ed53fb969dfe0a18f437ac30a8", - "sha256:174b5de4ab0899df9a57d35c880aaa515511c4b8b578d9d519b09a9596537055" - ], - "markers": "python_version >= '3.7'", - "version": "==3.0.3" - }, - "sympy": { - "hashes": [ - "sha256:938f984ee2b1e8eae8a07b884c8b7a1146010040fccddc6539c54f401c8f6fcf", - "sha256:e32380dce63cb7c0108ed525570092fd45168bdae2faa17e528221ef72e88658" - ], - "markers": "python_version >= '3.8'", - "version": "==1.11.1" - }, - "tabulate": { - "hashes": [ - "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", - "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f" - ], - "markers": "python_version >= '3.7'", - "version": "==0.9.0" - }, - "tenacity": { - "hashes": [ - "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac", - "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445" - ], - "markers": "python_version >= '3.6'", - "version": "==8.1.0" - }, - "tqdm": { - "hashes": [ - "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4", - "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==4.64.1" - }, - "traitlets": { - "hashes": [ - "sha256:6cc57d6dc28c85d5365961726ffd19b538739347749e13ebe34e03323a0e8f84", - "sha256:c864831efa0ba6576d09b44884b34e41defc18c0d7e720b4a2d6698c842cab3e" - ], - "markers": "python_version >= '3.7'", - "version": "==5.8.0" - }, - "typing-extensions": { - "hashes": [ - "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", - "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" - ], - "markers": "python_version >= '3.7'", - "version": "==4.4.0" - }, - "ujson": { - "hashes": [ - "sha256:0f0f21157d1a84ad5fb54388f31767cde9c1a48fb29de7ef91d8887fdc2ca92b", - "sha256:1217326ba80eab1ff3f644f9eee065bd4fcc4e0c068a2f86f851cafd05737169", - "sha256:169b3fbd1188647c6ce00cb690915526aff86997c89a94c1b50432010ad7ae0f", - "sha256:1a7e4023c79d9a053c0c6b7c6ec50ea0af78381539ab27412e6af8d9410ae555", - "sha256:20d929a27822cb79e034cc5e0bb62daa0257ab197247cb6f35d5149f2f438983", - "sha256:213e41dc501b4a6d029873039da3e45ba7766b9f9eba97ecc4287c371f5403cc", - "sha256:23051f062bb257a87f3e55ea5a055ea98d56f08185fd415b34313268fa4d814e", - "sha256:24d40e01accbf4f0ba5181c4db1bac83749fdc1a5413466da582529f2a096085", - "sha256:2a24b9a96364f943a4754fa00b47855d0a01b84ac4b8b11ebf058c8fb68c1f77", - "sha256:2cb7a4bd91de97b4c8e57fb5289d1e5f3f019723b59d01d79e2df83783dce5a6", - "sha256:31288f85db6295ec63e128daff7285bb0bc220935e1b5107bd2d67e2dc687b7e", - "sha256:35423460954d0c61602da734697724e8dd5326a8aa7900123e584b935116203e", - "sha256:355ef5311854936b9edc7f1ce638f8257cb45fb6b9873f6b2d16a715eafc9570", - "sha256:3a68a204386648ec92ae9b526c1ffca528f38221eca70f98b4709390c3204275", - "sha256:3ad74eb53ee07e76c82f9ef8e7256c33873b81bd1f97a274fdb65ed87c2801f6", - "sha256:3b49a1014d396b962cb1d6c5f867f88b2c9aa9224c3860ee6ff63b2837a2965b", - "sha256:3f00dff3bf26bbb96791ceaf51ca95a3f34e2a21985748da855a650c38633b99", - "sha256:3f8b9e8c0420ce3dcc193ab6dd5628840ba79ad1b76e1816ac7ca6752c6bf035", - "sha256:52f536712d16a1f4e0f9d084982c28e11b7e70c397a1059069e4d28d53b3f522", - "sha256:551408a5c4306839b4a4f91503c96069204dbef2c7ed91a9dab08874ac1ed679", - "sha256:57904e5b49ffe93189349229dcd83f73862ef9bb8517e8f1e62d0ff73f313847", - "sha256:5e5715b0e2767b1987ceed0066980fc0a53421dd2f197b4f88460d474d6aef4c", - "sha256:61fdf24f7bddc402ce06b25e4bed7bf5ee4f03e23028a0a09116835c21d54888", - "sha256:6d0a60c5f065737a81249c819475d001a86da9a41900d888287e34619c9b4851", - "sha256:6ea9024749a41864bffb12da15aace4a3193c03ea97e77b069557aefa342811f", - "sha256:7174e81c137d480abe2f8036e9fb69157e509f2db0bfdee4488eb61dc3f0ff6b", - "sha256:72fa6e850831280a46704032721c75155fd41b839ddadabb6068ab218c56a37a", - "sha256:74671d1bde8c03daeb92abdbd972960978347b1a1d432c4c1b3c9284ce4094cf", - "sha256:798116b88158f13ed687417526100ef353ba4692e0aef8afbc622bd4bf7e9057", - "sha256:7a66c5a75b46545361271b4cf55560d9ad8bad794dd054a14b3fbb031407948e", - "sha256:7bde16cb18b95a8f68cc48715e4652b394b4fee68cb3f9fee0fd7d26b29a53b6", - "sha256:82bf24ea72a73c7d77402a7adc954931243e7ec4241d5738ae74894b53944458", - "sha256:87578ccfc35461c77e73660fb7d89bc577732f671364f442bda9e2c58b571765", - "sha256:91000612a2c30f50c6a009e6459a677e5c1972e51b59ecefd6063543dc47a4e9", - "sha256:9cf04fcc958bb52a6b6c301b780cb9afab3ec68713b17ca5aa423e1f99c2c1cf", - "sha256:9f4efcac06f45183b6ed8e2321554739a964a02d8aa3089ec343253d86bf2804", - "sha256:a51cbe614acb5ea8e2006e4fd80b4e8ea7c51ae51e42c75290012f4925a9d6ab", - "sha256:a8795de7ceadf84bcef88f947f91900d647eda234a2c6cc89912c25048cc0490", - "sha256:ae723b8308ac17a591bb8be9478b58c2c26fada23fd2211fc323796801ad7ff5", - "sha256:aff708a1b9e2d4979f74375ade0bff978be72c8bd90422a756d24d8a46d78059", - "sha256:b2aece7a92dffc9c78787f5f36e47e24b95495812270c27abc2fa430435a931d", - "sha256:b4420bfff18ca6aa39cfb22fe35d8aba3811fa1190c4f4e1ad816b0aad72f7e3", - "sha256:b64d2ac99503a9a5846157631addacc9f74e23f64d5a886fe910e9662660fa10", - "sha256:b72d4d948749e9c6afcd3d7af9ecc780fccde84e26d275c97273dd83c68a488b", - "sha256:b74396a655ac8a5299dcb765b4a17ba706e45c0df95818bcc6c13c4645a1c38e", - "sha256:b9e9d26600020cf635a4e58763959f5a59f8c70f75d72ebf26ceae94c2efac74", - "sha256:bca074d08f0677f05df8170b25ce6e61db3bcdfda78062444972fa6508dc825f", - "sha256:bca3c06c3f10ce03fa80b1301dce53765815c2578a24bd141ce4e5769bb7b709", - "sha256:bfb1fdf61763fafc0f8a20becf9cc4287c14fc41c0e14111d28c0d0dfda9ba56", - "sha256:c169e12642f0edf1dde607fb264721b88787b55a6da5fb3824302a9cac6f9405", - "sha256:c4277f6b1d24be30b7f87ec5346a87693cbc1e55bbc5877f573381b2250c4dd6", - "sha256:ceee5aef3e234c7e998fdb52e5236c41e50cdedc116360f7f1874a04829f6490", - "sha256:d1b5e233e42f53bbbc6961caeb492986e9f3aeacd30be811467583203873bad2", - "sha256:d6f4be832d97836d62ac0c148026ec021f9f36481f38e455b51538fcd949ed2a", - "sha256:dd5ccc036b0f4721b98e1c03ccc604e7f3e1db53866ccc92b2add40ace1782f7", - "sha256:dde59d2f06297fc4e70b2bae6e4a6b3ce89ca89697ab2c41e641abae3be96b0c", - "sha256:e4be7d865cb5161824e12db71cee83290ab72b3523566371a30d6ba1bd63402a", - "sha256:e97af10b6f13a498de197fb852e9242064217c25dfca79ebe7ad0cf2b0dd0cb7", - "sha256:f2d70b7f0b485f85141bbc518d0581ae96b912d9f8b070eaf68a9beef8eb1e60", - "sha256:f3e651f04b7510fae7d4706a4600cd43457f015df08702ece82a71339fc15c3d", - "sha256:f63535d51e039a984b2fb67ff87057ffe4216d4757c3cedf2fc846af88253cb7", - "sha256:f881e2d8a022e9285aa2eab6ba8674358dbcb2b57fa68618d88d62937ac3ff04", - "sha256:fadebaddd3eb71a5c986f0bdc7bb28b072bfc585c141eef37474fc66d1830b0a", - "sha256:fb1632b27e12c0b0df62f924c362206daf246a42c0080e959dd465810dc3482e", - "sha256:fecf83b2ef3cbce4f5cc573df6f6ded565e5e27c1af84038bae5ade306686d82" - ], - "markers": "python_version >= '3.7'", - "version": "==5.6.0" - }, - "uncertainties": { - "hashes": [ - "sha256:4040ec64d298215531922a68fa1506dc6b1cb86cd7cca8eca848fcfe0f987151", - "sha256:80111e0839f239c5b233cb4772017b483a0b7a1573a581b92ab7746a35e6faab" - ], - "version": "==3.1.7" - }, - "uri-template": { - "hashes": [ - "sha256:934e4d09d108b70eb8a24410af8615294d09d279ce0e7cbcdaef1bd21f932b06", - "sha256:f1699c77b73b925cf4937eae31ab282a86dc885c333f2e942513f08f691fc7db" - ], - "version": "==1.2.0" - }, - "urllib3": { - "hashes": [ - "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", - "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.13" - }, - "wcwidth": { - "hashes": [ - "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", - "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" - ], - "version": "==0.2.5" - }, - "webcolors": { - "hashes": [ - "sha256:16d043d3a08fd6a1b1b7e3e9e62640d09790dce80d2bdd4792a175b35fe794a9", - "sha256:d98743d81d498a2d3eaf165196e65481f0d2ea85281463d856b1e51b09f62dce" - ], - "version": "==1.12" - }, - "zipp": { - "hashes": [ - "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", - "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" - ], - "markers": "python_version < '3.10'", - "version": "==3.11.0" - } - }, - "develop": {} -} diff --git a/dist/mlbands-1.0.0-py3-none-any.whl b/dist/mlbands-1.0.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..54f0e188aedd040e63e36d2ab1b459be651c6cd2 GIT binary patch literal 10060 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.0.3)", "pymatgen-analysis-diffusion (>=2022.1.15)", "robocrys (>=0.2.7)", "seekpath (>=2.0.1)"] +docs = ["jinja2", "livereload", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-markdownextradata-plugin", "mkdocs-material (<8.3)", "mkdocs-material-extensions", "mkdocs-minify-plugin", "mkdocstrings", "mkdocstrings[python]"] +test = ["flake8", "maggma", "mypy", "mypy-extensions", "openbabel", "pre-commit", "pycodestyle", "pydocstyle", "pytest", "pytest-cov", "types-requests", "types-setuptools", "wincertstore"] + +[[package]] +name = "fonttools" +version = "4.38.0" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"}, + {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "scipy"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "kiwisolver" +version = "1.4.4" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, + {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, +] + +[[package]] +name = "latexcodec" +version = "2.0.1" +description = "A lexer and codec to work with LaTeX code in Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "latexcodec-2.0.1-py2.py3-none-any.whl", hash = "sha256:c277a193638dc7683c4c30f6684e3db728a06efb0dc9cf346db8bd0aa6c5d271"}, + {file = "latexcodec-2.0.1.tar.gz", hash = "sha256:2aa2551c373261cefe2ad3a8953a6d6533e68238d180eb4bb91d7964adb3fe9a"}, +] + +[package.dependencies] +six = ">=1.4.1" + +[[package]] +name = "matplotlib" +version = "3.6.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5"}, + {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267"}, + {file = "matplotlib-3.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee"}, + {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc"}, + {file = "matplotlib-3.6.2-cp310-cp310-win32.whl", hash = "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617"}, + {file = "matplotlib-3.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab"}, + {file = "matplotlib-3.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa"}, + {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428"}, + {file = "matplotlib-3.6.2-cp311-cp311-win32.whl", hash = "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73"}, + {file = "matplotlib-3.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb"}, + {file = "matplotlib-3.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f"}, + {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec"}, + {file = "matplotlib-3.6.2-cp38-cp38-win32.whl", hash = "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6"}, + {file = "matplotlib-3.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83"}, + {file = "matplotlib-3.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c"}, + {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33"}, + {file = "matplotlib-3.6.2-cp39-cp39-win32.whl", hash = "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c"}, + {file = "matplotlib-3.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4"}, + {file = "matplotlib-3.6.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27"}, + {file = "matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1"}, + {file = "matplotlib-3.6.2.tar.gz", hash = "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990"}, +] + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.19" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" + +[[package]] +name = "monty" +version = "2022.9.9" +description = "Monty is the missing complement to Python." +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "monty-2022.9.9-py3-none-any.whl", hash = "sha256:f9624c90687486cfebcc1e80a0b1da201a0ea14213fd1f392960cd47d3171907"}, + {file = "monty-2022.9.9.tar.gz", hash = "sha256:6cca8f14a18a2030b243a1377dfd59049a1ccce007b34f810a8f5eece72b9ceb"}, +] + +[package.extras] +yaml = ["ruamel.yaml"] + +[[package]] +name = "mp-api" +version = "0.30.5" +description = "API Server for the Materials Project" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mp-api-0.30.5.tar.gz", hash = "sha256:e28033fd801be3e781dcc18420a13cdfe9aa0f6098f2056b0a1126bf7acdf027"}, + {file = "mp_api-0.30.5-py3-none-any.whl", hash = "sha256:58e3a2d539f68e0610177af9d2482655cbe38b16650227776d26ff614edc17bb"}, +] + +[package.dependencies] +emmet-core = ">=0.36.4" +monty = ">=2021.3.12" +msgpack = "*" +pymatgen = ">=2022.3.7" +requests = ">=2.23.0" +setuptools = "*" +typing-extensions = ">=3.7.4.1" + +[package.extras] +all = ["boto3", "custodian", "emmet-core[all] (>=0.36.4)", "mpcontribs-client"] + +[[package]] +name = "mpmath" +version = "1.2.1" +description = "Python library for arbitrary-precision floating-point arithmetic" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "mpmath-1.2.1-py3-none-any.whl", hash = "sha256:604bc21bd22d2322a177c73bdb573994ef76e62edd595d17e00aff24b0667e5c"}, + {file = "mpmath-1.2.1.tar.gz", hash = "sha256:79ffb45cf9f4b101a807595bcb3e72e0396202e0b1d25d689134b48c4216a81a"}, +] + +[package.extras] +develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] +tests = ["pytest (>=4.6)"] + +[[package]] +name = "msgpack" +version = "1.0.4" +description = "MessagePack serializer" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250"}, + {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88"}, + {file = "msgpack-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa"}, + {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e"}, + {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db"}, + {file = "msgpack-1.0.4-cp310-cp310-win32.whl", hash = "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef"}, + {file = "msgpack-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075"}, + {file = "msgpack-1.0.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9"}, + {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6"}, + {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae"}, + {file = "msgpack-1.0.4-cp36-cp36m-win32.whl", hash = "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6"}, + {file = "msgpack-1.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661"}, + {file = "msgpack-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227"}, + {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e"}, + {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236"}, + {file = "msgpack-1.0.4-cp37-cp37m-win32.whl", hash = "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44"}, + {file = "msgpack-1.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab"}, + {file = "msgpack-1.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e"}, + {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43"}, + {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243"}, + {file = "msgpack-1.0.4-cp38-cp38-win32.whl", hash = "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2"}, + {file = "msgpack-1.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55"}, + {file = "msgpack-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92"}, + {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8"}, + {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae"}, + {file = "msgpack-1.0.4-cp39-cp39-win32.whl", hash = "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c"}, + {file = "msgpack-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce"}, + {file = "msgpack-1.0.4.tar.gz", hash = "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f"}, +] + +[[package]] +name = "networkx" +version = "2.8.8" +description = "Python package for creating and manipulating graphs and networks" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, + {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, +] + +[package.extras] +default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] + +[[package]] +name = "numpy" +version = "1.24.1" +description = "Fundamental package for array computing in Python" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7"}, + {file = "numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9"}, + {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7"}, + {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398"}, + {file = "numpy-1.24.1-cp310-cp310-win32.whl", hash = "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2"}, + {file = "numpy-1.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2"}, + {file = "numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8"}, + {file = "numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032"}, + {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1"}, + {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9"}, + {file = "numpy-1.24.1-cp311-cp311-win32.whl", hash = "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36"}, + {file = "numpy-1.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51"}, + {file = "numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407"}, + {file = "numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954"}, + {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36"}, + {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7"}, + {file = "numpy-1.24.1-cp38-cp38-win32.whl", hash = "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1"}, + {file = "numpy-1.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c"}, + {file = "numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6"}, + {file = "numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7"}, + {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700"}, + {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf"}, + {file = "numpy-1.24.1-cp39-cp39-win32.whl", hash = "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f"}, + {file = "numpy-1.24.1-cp39-cp39-win_amd64.whl", hash = "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566"}, + {file = "numpy-1.24.1.tar.gz", hash = "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2"}, +] + +[[package]] +name = "nvidia-cublas-cu11" +version = "11.10.3.66" +description = "CUBLAS native runtime libraries" +category = "main" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cublas_cu11-11.10.3.66-py3-none-manylinux1_x86_64.whl", hash = "sha256:d32e4d75f94ddfb93ea0a5dda08389bcc65d8916a25cb9f37ac89edaeed3bded"}, + {file = "nvidia_cublas_cu11-11.10.3.66-py3-none-win_amd64.whl", hash = "sha256:8ac17ba6ade3ed56ab898a036f9ae0756f1e81052a317bf98f8c6d18dc3ae49e"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cuda-nvrtc-cu11" +version = "11.7.99" +description = "NVRTC native runtime libraries" +category = "main" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-2-py3-none-manylinux1_x86_64.whl", hash = "sha256:9f1562822ea264b7e34ed5930567e89242d266448e936b85bc97a3370feabb03"}, + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-py3-none-manylinux1_x86_64.whl", hash = "sha256:f7d9610d9b7c331fa0da2d1b2858a4a8315e6d49765091d28711c8946e7425e7"}, + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-py3-none-win_amd64.whl", hash = "sha256:f2effeb1309bdd1b3854fc9b17eaf997808f8b25968ce0c7070945c4265d64a3"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cuda-runtime-cu11" +version = "11.7.99" +description = "CUDA Runtime native Libraries" +category = "main" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_runtime_cu11-11.7.99-py3-none-manylinux1_x86_64.whl", hash = "sha256:cc768314ae58d2641f07eac350f40f99dcb35719c4faff4bc458a7cd2b119e31"}, + {file = "nvidia_cuda_runtime_cu11-11.7.99-py3-none-win_amd64.whl", hash = "sha256:bc77fa59a7679310df9d5c70ab13c4e34c64ae2124dd1efd7e5474b71be125c7"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cudnn-cu11" +version = "8.5.0.96" +description = "cuDNN runtime libraries" +category = "main" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cudnn_cu11-8.5.0.96-2-py3-none-manylinux1_x86_64.whl", hash = "sha256:402f40adfc6f418f9dae9ab402e773cfed9beae52333f6d86ae3107a1b9527e7"}, + {file = "nvidia_cudnn_cu11-8.5.0.96-py3-none-manylinux1_x86_64.whl", hash = "sha256:71f8111eb830879ff2836db3cccf03bbd735df9b0d17cd93761732ac50a8a108"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "packaging" +version = "22.0" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, + {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, +] + +[[package]] +name = "palettable" +version = "3.3.0" +description = "Color palettes for Python" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "palettable-3.3.0-py2.py3-none-any.whl", hash = "sha256:c3bf3f548fc228e86bd3d16928bbf8d621c1d1098791ceab446d0e3a5e1298d1"}, + {file = "palettable-3.3.0.tar.gz", hash = "sha256:72feca71cf7d79830cd6d9181b02edf227b867d503bec953cf9fa91bf44896bd"}, +] + +[[package]] +name = "pandas" +version = "1.5.2" +description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273"}, + {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789"}, + {file = "pandas-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824"}, + {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028"}, + {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72"}, + {file = "pandas-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f"}, + {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261"}, + {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc"}, + {file = "pandas-1.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3"}, + {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39"}, + {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2"}, + {file = "pandas-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5"}, + {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b"}, + {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519"}, + {file = "pandas-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a"}, + {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f"}, + {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0"}, + {file = "pandas-1.5.2-cp38-cp38-win32.whl", hash = "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5"}, + {file = "pandas-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc"}, + {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702"}, + {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe"}, + {file = "pandas-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb"}, + {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883"}, + {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e"}, + {file = "pandas-1.5.2-cp39-cp39-win32.whl", hash = "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090"}, + {file = "pandas-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f"}, + {file = "pandas-1.5.2.tar.gz", hash = "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, +] +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" + +[package.extras] +test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] + +[[package]] +name = "pillow" +version = "9.4.0" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "plotly" +version = "5.11.0" +description = "An open-source, interactive data visualization library for Python" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "plotly-5.11.0-py2.py3-none-any.whl", hash = "sha256:52fd74b08aa4fd5a55b9d3034a30dbb746e572d7ed84897422f927fdf687ea5f"}, + {file = "plotly-5.11.0.tar.gz", hash = "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787"}, +] + +[package.dependencies] +tenacity = ">=6.2.0" + +[[package]] +name = "pybtex" +version = "0.24.0" +description = "A BibTeX-compatible bibliography processor in Python" +category = "main" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*" +files = [ + {file = "pybtex-0.24.0-py2.py3-none-any.whl", hash = "sha256:e1e0c8c69998452fea90e9179aa2a98ab103f3eed894405b7264e517cc2fcc0f"}, + {file = "pybtex-0.24.0.tar.gz", hash = "sha256:818eae35b61733e5c007c3fcd2cfb75ed1bc8b4173c1f70b56cc4c0802d34755"}, +] + +[package.dependencies] +latexcodec = ">=1.0.4" +PyYAML = ">=3.01" +six = "*" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "pydantic" +version = "1.10.4" +description = "Data validation and settings management using python type hints" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854"}, + {file = "pydantic-1.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817"}, + {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c"}, + {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e"}, + {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85"}, + {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6"}, + {file = "pydantic-1.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d"}, + {file = "pydantic-1.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53"}, + {file = "pydantic-1.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3"}, + {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a"}, + {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d"}, + {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72"}, + {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857"}, + {file = "pydantic-1.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3"}, + {file = "pydantic-1.10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00"}, + {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978"}, + {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e"}, + {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa"}, + {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8"}, + {file = "pydantic-1.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903"}, + {file = "pydantic-1.10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423"}, + {file = "pydantic-1.10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f"}, + {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06"}, + {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15"}, + {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c"}, + {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416"}, + {file = "pydantic-1.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6"}, + {file = "pydantic-1.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d"}, + {file = "pydantic-1.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f"}, + {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024"}, + {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c"}, + {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28"}, + {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f"}, + {file = "pydantic-1.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4"}, + {file = "pydantic-1.10.4-py3-none-any.whl", hash = "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774"}, + {file = "pydantic-1.10.4.tar.gz", hash = "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pymatgen" +version = "2022.11.7" +description = "Python Materials Genomics is a robust materials analysis code that defines core object representations for structures and molecules with support for many electronic structure codes. It is currently the core analysis code powering the Materials Project (https://materialsproject.org)." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymatgen-2022.11.7-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:107544fd1fe48aa97d932b7897b46f0db56903c23e44ae971ebf7c3af0b38e99"}, + {file = "pymatgen-2022.11.7-cp310-cp310-win_amd64.whl", hash = "sha256:8119ad5179002669d201a858b646c886a5775b6b478b64669b24a7c8c2e04404"}, + {file = "pymatgen-2022.11.7-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:3c104b53850fd6fb9891d5095ca1a2459cf8a2f071bfe03cd687fce67f4a70ff"}, + {file = "pymatgen-2022.11.7-cp38-cp38-win_amd64.whl", hash = "sha256:345965e4ef56014d1f16827dfd56477807eab0079ed7da608e321ca6d2ebcb45"}, + {file = "pymatgen-2022.11.7-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:2baaa93dda35e5aa0b4c4521c809a0f5dfd6405293dfcedbd9dc7a7f0a9f007a"}, + {file = "pymatgen-2022.11.7-cp39-cp39-win_amd64.whl", hash = "sha256:c9ccd4be777a376897ba150826e3f0b9ac9ebf369fb9478cb79a35e042817c25"}, + {file = "pymatgen-2022.11.7.tar.gz", hash = "sha256:e30ed85c480df491b576b08cc5a2900027da3896351fbf9045bdeddf31aab651"}, +] + +[package.dependencies] +matplotlib = ">=1.5" +monty = ">=3.0.2" +mp-api = ">=0.27.3" +networkx = ">=2.2" +numpy = ">=1.20.1" +palettable = ">=3.1.1" +pandas = "*" +plotly = ">=4.5.0" +pybtex = "*" +requests = "*" +"ruamel.yaml" = ">=0.17.0" +scipy = ">=1.5.0" +spglib = ">=2.0.2" +sympy = "*" +tabulate = "*" +tqdm = "*" +uncertainties = ">=3.1.4" + +[package.extras] +abinit = ["netcdf4"] +ase = ["ase (>=3.3)"] +dev = ["black", "coverage", "coveralls", "doc2dash", "flake8", "mypy (==0.982)", "pre-commit", "pydocstyle", "pylint", "pytest", "pytest-cov", "pytest-split", "sphinx", "sphinx-rtd-theme"] +optional = ["BoltzTraP2 (>=22.3.2)", "ase (>=3.22.1)", "chemview (>=0.6)", "f90nml (>=1.1.2)", "fdint (>=2.0.2)", "galore (>=0.6.1)", "h5py (==3.6.0)", "jarvis-tools (>=2020.7.14)", "netCDF4 (>=1.5.8)", "phonopy (>=2.4.2)", "seekpath (>=1.9.4)"] +relaxation = ["m3gnet"] +vis = ["vtk (>=6.0.0)"] + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2022.7" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"}, + {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"}, +] + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] + +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "ruamel-yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" +optional = false +python-versions = ">=3" +files = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.7" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, + {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, +] + +[[package]] +name = "scipy" +version = "1.9.3" +description = "Fundamental algorithms for scientific computing in Python" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, + {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, + {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, + {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, + {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, + {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, + {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, +] + +[package.dependencies] +numpy = ">=1.18.5,<1.26.0" + +[package.extras] +dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] +test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "setuptools" +version = "65.6.3" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, + {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "spglib" +version = "2.0.2" +description = "This is the spglib module." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "spglib-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54dbc8954ffef86895c29416274b23b562dcdd23f8d3d4e61b47b43eabe65aa"}, + {file = "spglib-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da956b941a377c6af450b252ee4ef03040dd2f80b5b77c56d043a5aa3b7e0aca"}, + {file = "spglib-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:791cd3d525a33142f874facb4a0371a744deb6c63cbfa8d8eec2cc2977f54691"}, + {file = "spglib-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f76c1a5e9699479c847a577e3d7974c676a030048ca4f9ae1b89008ef8b3db7"}, + {file = "spglib-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:19d1a793515711c3196126f4f6da32b1ebb4e6f3c418671692430191b6bb5c75"}, + {file = "spglib-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6dafee1c21ef378df002802a7a74f92b6a8b54170fe12ebab7f563c8333aae3"}, + {file = "spglib-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b515b688b595590181a763586d9b2bf28e1c5c49dadc90825963ee5c8d63ff69"}, + {file = "spglib-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57ffbc725c7c22410dbf19f276762d81448843e35bdca55d00480e30dfac61e8"}, + {file = "spglib-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b57e9cbe6ce271a9a2ff403e236e07adaf6c263acbf4dbe007632e189f4108e7"}, + {file = "spglib-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:778306dcccd5c3946357d64435593d80d22758abd94d2d0fc9ec8ee3f75c33a3"}, + {file = "spglib-2.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4a58ecdd553a9c1603e9bd8124170e97cea0d0ee3be76e5efc2f952a6d463f35"}, + {file = "spglib-2.0.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:184f4045a6691be5012d75296874e1c7468ebdec3284161724c000efd78558d7"}, + {file = "spglib-2.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04fd1899d69456259e3667aa4cace8e4e6f3b8a369714ed01f349b4734263df1"}, + {file = "spglib-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4d026e4ffd4801b1c0bf6784cb7547032db4a1d0806993060dd95f5caa547c77"}, + {file = "spglib-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:98ff97079e331cc707cc1836bfe6c632eb496ffff76fd534bd28faa1221124bd"}, + {file = "spglib-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7440b220cd100c31ee72a33dcb1ee8544ff9b0c0cd69aeee78c081eea654cd3"}, + {file = "spglib-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0352429063f0f174d5b763a4a119ff972fa8f951762719eb930f2db8d462df22"}, + {file = "spglib-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:64e6731f5921c55521efe53cd9eead26a624124b04547216a8e90bc654638664"}, + {file = "spglib-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d0d17316837825c67723ab2bc6d9cdee0a8252673c7e4e12f8a9264732865bef"}, + {file = "spglib-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50dfd569aa2f8a1393c9784449c1631b73ef3b4035670a905a959656a8af2bc5"}, + {file = "spglib-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8916019d201e107d3dc02367ad36f96913e2a42dc9226578e5608b835dec3ad4"}, + {file = "spglib-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07fa12e0fba754ddf9daa126f82a3b6ed21d4ef5ff7d8f7747e26f55b67c153c"}, + {file = "spglib-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:d2132751f1151f6875b45c9e4b9053fee1d2ef376aa85c8a53f058c71f492a9e"}, + {file = "spglib-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c5c23bd8ee8941cb679ba941f8b49cae306fa62a92085d84a451ae86332dc440"}, + {file = "spglib-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b09b79309bd599947d1007ec7598182f193aa291fc50cd5f19b2c73aa643641"}, + {file = "spglib-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9f63b3f1b00a49d1a409b47e66beb6ea3eaed2131749be8668fce3cb01ec753"}, + {file = "spglib-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9ab53e531f4083ef61f349fe662f40c1f86bc1e313d76f838a54317acb74865"}, + {file = "spglib-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:9f904e8a1420e3c07a0815f698c464d9a3ea5b5419276ae002f765c5d06f7bee"}, + {file = "spglib-2.0.2.tar.gz", hash = "sha256:1d081ec22da4ab4fc3198e9445ddad6dec2261c43927831151d93e39422610aa"}, +] + +[package.dependencies] +numpy = "*" + +[package.extras] +doc = ["Sphinx (==4.5.0)", "myst-parser (==0.18.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-book-theme (==0.3.3)", "sphinxcontrib-bibtex (==2.4.2)"] + +[[package]] +name = "sympy" +version = "1.11.1" +description = "Computer algebra system (CAS) in Python" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sympy-1.11.1-py3-none-any.whl", hash = "sha256:938f984ee2b1e8eae8a07b884c8b7a1146010040fccddc6539c54f401c8f6fcf"}, + {file = "sympy-1.11.1.tar.gz", hash = "sha256:e32380dce63cb7c0108ed525570092fd45168bdae2faa17e528221ef72e88658"}, +] + +[package.dependencies] +mpmath = ">=0.19" + +[[package]] +name = "tabulate" +version = "0.9.0" +description = "Pretty-print tabular data" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, + {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, +] + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "tenacity" +version = "8.1.0" +description = "Retry code until it succeeds" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, + {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "torch" +version = "1.13.1" +description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" +category = "main" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "torch-1.13.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:fd12043868a34a8da7d490bf6db66991108b00ffbeecb034228bfcbbd4197143"}, + {file = "torch-1.13.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d9fe785d375f2e26a5d5eba5de91f89e6a3be5d11efb497e76705fdf93fa3c2e"}, + {file = "torch-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:98124598cdff4c287dbf50f53fb455f0c1e3a88022b39648102957f3445e9b76"}, + {file = "torch-1.13.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:393a6273c832e047581063fb74335ff50b4c566217019cc6ace318cd79eb0566"}, + {file = "torch-1.13.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:0122806b111b949d21fa1a5f9764d1fd2fcc4a47cb7f8ff914204fd4fc752ed5"}, + {file = "torch-1.13.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:22128502fd8f5b25ac1cd849ecb64a418382ae81dd4ce2b5cebaa09ab15b0d9b"}, + {file = "torch-1.13.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:76024be052b659ac1304ab8475ab03ea0a12124c3e7626282c9c86798ac7bc11"}, + {file = "torch-1.13.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:ea8dda84d796094eb8709df0fcd6b56dc20b58fdd6bc4e8d7109930dafc8e419"}, + {file = "torch-1.13.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2ee7b81e9c457252bddd7d3da66fb1f619a5d12c24d7074de91c4ddafb832c93"}, + {file = "torch-1.13.1-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:0d9b8061048cfb78e675b9d2ea8503bfe30db43d583599ae8626b1263a0c1380"}, + {file = "torch-1.13.1-cp37-none-macosx_11_0_arm64.whl", hash = "sha256:f402ca80b66e9fbd661ed4287d7553f7f3899d9ab54bf5c67faada1555abde28"}, + {file = "torch-1.13.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:727dbf00e2cf858052364c0e2a496684b9cb5aa01dc8a8bc8bbb7c54502bdcdd"}, + {file = "torch-1.13.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:df8434b0695e9ceb8cc70650afc1310d8ba949e6db2a0525ddd9c3b2b181e5fe"}, + {file = "torch-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:5e1e722a41f52a3f26f0c4fcec227e02c6c42f7c094f32e49d4beef7d1e213ea"}, + {file = "torch-1.13.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:33e67eea526e0bbb9151263e65417a9ef2d8fa53cbe628e87310060c9dcfa312"}, + {file = "torch-1.13.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:eeeb204d30fd40af6a2d80879b46a7efbe3cf43cdbeb8838dd4f3d126cc90b2b"}, + {file = "torch-1.13.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:50ff5e76d70074f6653d191fe4f6a42fdbe0cf942fbe2a3af0b75eaa414ac038"}, + {file = "torch-1.13.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2c3581a3fd81eb1f0f22997cddffea569fea53bafa372b2c0471db373b26aafc"}, + {file = "torch-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:0aa46f0ac95050c604bcf9ef71da9f1172e5037fdf2ebe051962d47b123848e7"}, + {file = "torch-1.13.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:6930791efa8757cb6974af73d4996b6b50c592882a324b8fb0589c6a9ba2ddaf"}, + {file = "torch-1.13.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:e0df902a7c7dd6c795698532ee5970ce898672625635d885eade9976e5a04949"}, +] + +[package.dependencies] +nvidia-cublas-cu11 = {version = "11.10.3.66", markers = "platform_system == \"Linux\""} +nvidia-cuda-nvrtc-cu11 = {version = "11.7.99", markers = "platform_system == \"Linux\""} +nvidia-cuda-runtime-cu11 = {version = "11.7.99", markers = "platform_system == \"Linux\""} +nvidia-cudnn-cu11 = {version = "8.5.0.96", markers = "platform_system == \"Linux\""} +typing-extensions = "*" + +[package.extras] +opt-einsum = ["opt-einsum (>=3.3)"] + +[[package]] +name = "torchvision" +version = "0.14.1" +description = "image and video datasets and models for torch deep learning" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "torchvision-0.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb05dd9dd3af5428fee525400759daf8da8e4caec45ddd6908cfb36571f6433"}, + {file = "torchvision-0.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d0766ea92affa7af248e327dd85f7c9cfdf51a57530b43212d4e1858548e9d7"}, + {file = "torchvision-0.14.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:6d7b35653113664ea3fdcb71f515cfbf29d2fe393000fd8aaff27a1284de6908"}, + {file = "torchvision-0.14.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:8a9eb773a2fa8f516e404ac09c059fb14e6882c48fdbb9c946327d2ce5dba6cd"}, + {file = "torchvision-0.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:13986f0c15377ff23039e1401012ccb6ecf71024ce53def27139e4eac5a57592"}, + {file = "torchvision-0.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb7a793fd33ce1abec24b42778419a3fb1e3159d7dfcb274a3ca8fb8cbc408dc"}, + {file = "torchvision-0.14.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:89fb0419780ec9a9eb9f7856a0149f6ac9f956b28f44b0c0080c6b5b48044db7"}, + {file = "torchvision-0.14.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a2d4237d3c9705d7729eb4534e4eb06f1d6be7ff1df391204dfb51586d9b0ecb"}, + {file = "torchvision-0.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:92a324712a87957443cc34223274298ae9496853f115c252f8fc02b931f2340e"}, + {file = "torchvision-0.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68ed03359dcd3da9cd21b8ab94da21158df8a6a0c5bad0bf4a42f0e448d28cb3"}, + {file = "torchvision-0.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:30fcf0e9fe57d4ac4ce6426659a57dce199637ccb6c70be1128670f177692624"}, + {file = "torchvision-0.14.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0ed02aefd09bf1114d35f1aa7dce55aa61c2c7e57f9aa02dce362860be654e85"}, + {file = "torchvision-0.14.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a541e49fc3c4e90e49e6988428ab047415ed52ea97d0c0bfd147d8bacb8f4df8"}, + {file = "torchvision-0.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:6099b3191dc2516099a32ae38a5fb349b42e863872a13545ab1a524b6567be60"}, + {file = "torchvision-0.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c5e744f56e5f5b452deb5fc0f3f2ba4d2f00612d14d8da0dbefea8f09ac7690b"}, + {file = "torchvision-0.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:758b20d079e810b4740bd60d1eb16e49da830e3360f9be379eb177ee221fa5d4"}, + {file = "torchvision-0.14.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:83045507ef8d3c015d4df6be79491375b2f901352cfca6e72b4723e9c4f9a55d"}, + {file = "torchvision-0.14.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:eaed58cf454323ed9222d4e0dd5fb897064f454b400696e03a5200e65d3a1e76"}, + {file = "torchvision-0.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:b337e1245ca4353623dd563c03cd8f020c2496a7c5d12bba4d2e381999c766e0"}, +] + +[package.dependencies] +numpy = "*" +pillow = ">=5.3.0,<8.3.0 || >=8.4.0" +requests = "*" +torch = "1.13.1" +typing-extensions = "*" + +[package.extras] +scipy = ["scipy"] + +[[package]] +name = "tqdm" +version = "4.64.1" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"}, + {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] + +[[package]] +name = "uncertainties" +version = "3.1.7" +description = "Transparent calculations with uncertainties on the quantities involved (aka error propagation); fast calculation of derivatives" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "uncertainties-3.1.7-py2.py3-none-any.whl", hash = "sha256:4040ec64d298215531922a68fa1506dc6b1cb86cd7cca8eca848fcfe0f987151"}, + {file = "uncertainties-3.1.7.tar.gz", hash = "sha256:80111e0839f239c5b233cb4772017b483a0b7a1573a581b92ab7746a35e6faab"}, +] + +[package.dependencies] +future = "*" + +[package.extras] +all = ["nose", "numpy", "sphinx"] +docs = ["sphinx"] +optional = ["numpy"] +tests = ["nose", "numpy"] + +[[package]] +name = "urllib3" +version = "1.26.13" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, + {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "wheel" +version = "0.38.4" +description = "A built-package format for Python" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "wheel-0.38.4-py3-none-any.whl", hash = "sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8"}, + {file = "wheel-0.38.4.tar.gz", hash = "sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac"}, +] + +[package.extras] +test = ["pytest (>=3.0.0)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.8" +content-hash = "de06fb1b24d43e992e4909946393a3652ffda2b34025054cb8bdb65a4989a619" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..c948d3fa --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,17 @@ +[tool.poetry] +name = "mlbands" +version = "1.0.0" +description = "A Python package that implements automatic prediction of electronic band gaps for a set of materials based on training data" +authors = ["Andrew R. Garcia"] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.8" +mp-api = "^0.30.5" +torch = "^1.13.1" +torchvision = "^0.14.1" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/setup.py b/setup.py deleted file mode 100644 index 9cc5f0f2..00000000 --- a/setup.py +++ /dev/null @@ -1,41 +0,0 @@ -# Always prefer setuptools over distutils -from setuptools import setup, find_packages - -# To use a consistent encoding -from codecs import open -from os import path - -# The directory containing this file -HERE = path.abspath(path.dirname(__file__)) - -# Get the long description from the README file -with open(path.join(HERE, 'README.md'), encoding='utf-8') as f: - long_description = f.read() - -# This call to setup() does all the work -setup( - name="mlbands", - version="1.0.0", - description="A Python package that implements automatic prediction of electronic band gaps for a set of materials based on training data", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/andrewrgarcia/rewotes/tree/andrewrgarcia", - author="Andrew Garcia, PhD", - license="MIT", - classifiers=[ - "Intended Audience :: Information Technology", - "Intended Audience :: Developers", - "Intended Audience :: Science/Research", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Operating System :: OS Independent" - ], - packages=["mlbands"], - include_package_data=True, - install_requires=["numpy"] -) diff --git a/tests/test_module.py b/tests/test_module.py index 04a12518..93de7c24 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -69,13 +69,11 @@ def test_dataexpand(): print(training.X) print(testing.materials) - # formation_energy_per_atom - test_materialprops() test_visuals() test_loadvisual() -# test_bands() -test_bands_load() test_dataexpand() +test_bands() +test_bands_load() From ad3a52e6a95930ecd87b63a2ad5a30550dad9d29 Mon Sep 17 00:00:00 2001 From: andrewrgarcia Date: Thu, 5 Jan 2023 15:47:12 -0500 Subject: [PATCH 27/27] deploy patch for v1.0 and update README with a user-friendly Jupyter notebook link (Google Colab) --- README.md | 18 ++++++++++++++++++ dist/mlbands-1.0.1-py3-none-any.whl | Bin 0 -> 10082 bytes dist/mlbands-1.0.1.tar.gz | Bin 0 -> 9439 bytes mlbands/__init__.py | 2 +- pyproject.toml | 2 +- tests/test_module.py | 21 ++++++++++++--------- 6 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 dist/mlbands-1.0.1-py3-none-any.whl create mode 100644 dist/mlbands-1.0.1.tar.gz diff --git a/README.md b/README.md index 2ccb5adc..c5d3f305 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,21 @@ +# mlbands + +A python package that implements automatic prediction of electronic band gaps for a set of materials based on training data. + + +## Installation + +```ruby +pip install --upgrade mlbands +``` + +## Documentation and Usage on Google Colab (click below) + + + + + + # ML Band Gaps (Materials) > Ideal candidate: skilled ML data scientist with solid knowledge of materials science. diff --git a/dist/mlbands-1.0.1-py3-none-any.whl b/dist/mlbands-1.0.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..693d4cf4c2b1ed18522a9e9cfdee765c126272da GIT binary patch literal 10082 zcmaKS1yo#3wsqs~uE909yIZ4;YjC&V?!nz5xVyW%1SeQ<3lQ90@-y?^yl=kDdw=(; zzI}VGy-%&aM|PbmC0PhaOaK4?`#wkkQ--k``p^J?8wLP?^!|&jjgg_9i4&8&9OGw? zCJo!zId0Uq4Skk;QF#&q?LMEfQ5nMVyu>YJxVUERDl#sI7D4n9$4ou=mEXR*sobv0 zci4y3;I=yxQ3reJ<|jOz*3xiMLAh96q`IO*&4I9ztB|lv0jg1rpF2td!FdS9olv8s zd5v%L(9liDBYZ9r9Fa@=JZe1$v==kAfkh;p>m2!Z$txF}8K>eZIvH6eY8ffw=(SW+ zmu*F?vnX`1bY>C~E9y+*cTSzzU~j^+NTMTglr}0sbEOymghNzEaOhL&AD~EQKZYsq2Aw4 zUA8HXLMRt&4GTm4nTF}r&r`KxW9nAl@vEi`D<-NIK~RfQ@g;fTi7p1>nxMeYww@?= zpgW#>Ts?8LUtn7O+t@tVdcm;_U6V8J9F=k@g7J4NoNv&qN*`{IJ6jwM>m9bODKqGW zaD);Z>+E*uC(a0`4w2|-*6PdqMS*ly!(~TO;SAyHVEMcL)46@a4;<`-8@>;S(f&&x z1WRzEIOCQTSZikUe*x>2wAjawI81F7>|iTKoAW`HPLPp1GYqw;&21ZrMzP2*rBw#9 zCUw&~chP1QkhN%zRZ=>)+90x|$Tnf#sX3bT0jP{iZ3iz-}X&Cd=}pzXmHM+3k6IOvP`xQu@irpCND#*X}c zl6&|wFA-H>g+HQ?j(e5_$wKm4%wSZaf>O0~QluVV04;!?%KqMS$H348=C-?K>B7HV- zYBZhg2!fgdQS0@l?Zw+}h8xZPJl=@vfe*%d1|kEz0%nIfX4DFcr>`q=6{cQ577(k@ zBV9jH4Dm+=!AElyd%PuoS$`P=1{3-ZO{BA4xZ~cv!ODWQ^#HTox@}`>ggSN(ORxkF zi}dKir|$)E40<%V^g+<>Rv57pTd(_Hy#w1PL+r^BYM{otw$T;Qq>Sm-tX0Pl)f>`{ z@rlZd@S@=b-Y9MNn19(qNvgTvD#PFxdh3cNpNPngJXXY8zOTp5*h z+8MjKJeINVm#sppxB*Q@7i=4(BEz(et|%*apHfHZfYQ$1E+*fc9pHSY0~d&G}OzYSq_C>XKKcaQ+*aL@bLR{gQk$v6Ij+poeiD@H`q z)N7=E!ouVZjWiyUy8Kt9XeNVOP17>4T0^s6$8MT}FRbySAEwBIJ_S&s)_v8jutv(Z z$Mj9+m7pvaMb^{uDmi&GZ=7|w-b!`+XvL|-auoV3PK|KAN#GzW9)5dgmRV6Fs6jKw zOU+q`K};h!1^pCVnUC;BaaS_cYhU<~zYa<}p5<_<2-S=Do$;a_$I5$(d6&cDzVmD# zA@cJ}FUsqnvCUw1wUIj_Q;O^;t7f&L6~QmbNG^P#)Xnp3pPm7}IVmWa`(mm&{O+1L zoQ{qm=Y~rrwI#LAEz1)DJ<8p~$WX{8UVkB$bS0clni#28DLbKnN1m5Hj`IP-Sh=)b zhT!^bgmAVgcFJsEZ7-(k8Qxx4y!3W=u?u;Oup6KHmZQTB+;U8&|I_4353`?v(Zq`@ zN$eNjlzV{z6zZejA!pR==j=$78BR7R*Qgc}0s z9%dLW>szz^mPQ{o4Hemmn5HkJneMF&XIm;UWNoT<;$^JQ)IeKuOfgTQ!IR4$J`#A{ zsz;ZREp-UE?rV%nDC&w&%OTHW{{|@itrF2BuX@P5SD>i(@m`GnrxNMwTiRJV>+8SQ zBNcUN`mt%X(McKLge>hMy@EU=kO4G0!7$212bxg^K$r&S&#%4It3n}_x?6!jzVU%n zI1!6$gA@F%lI&#@J0^t6-GZ=ie^{QXf7+Nv0RWOX0D$+)|5&y)w6uG-I;m~#wA#Ax zruzyX^(s=Bs_rejQ@Y@a&esxt>Tct9+!-SkOe<|9AOBH?N7?nR=bj&i1TLacpKtwC zwWE#%oO`;juWj3ZmpwaNi#17R=6XO_q7BweCUbx1;YQB14ajGVD3ijLuBbYn7>}5$ z6?ZGy=bi}^LfI*8k(L^29B&wazt*<5euIp|a#x{FITc zV6J!ZGd)6*PW7l7S61kkmcnasa(KYQEmu@*crGki{Fp_4rmel#bMk6Qj1U%ijobj7 zF0&Ix=n^~6FU;2<{f-aqK6R(zXD|}cL{@}Q^FNA)3HX=Ag1U3&?!kO|a?dfId}TIs z4!v@^H)rqZ`A5E-GBi?XlX&rqAUNxXS_EA1pf-yGrXZ~*vU$6limshx?k_fQW{8+FsPK|&|zqC4puzSEN z)S%bI`W}ag#U=g&o-B+-NAJTRgF)tcE>x70FLV@>1v4b^XB*!88nLJ=?cJ0$cp*Yc!Nm1}3!B!Qkrnoa+)nl9 zo}2|Aw5EayLy6lJBw@_;eD>#tIuRt<5SF+DbAXq;54glvy$f)Fragz)C1U=^x8gfI z2);IyD1?(udTcCDeXw173&0MANF-_RJbj2i9q2MiKw7Ov&W<;-Tyy5Tj*nQbJlWyoda7F??_c>|x(R=C>T%nV_^pCvX&=KRsN zuOvHEOcAuTO+ChuW==wPZE%eRe0Jccq8P@p`QfL(7tvOdr}_!-qU$$4j=uDh+Bx$U zV@;ZWQy!HQm$?k%w?`lLz+JmZpw#}Q(BC$Futl+cE=STkNdLxBz8jIcZGYQIIL=ChMUNyR!M;~RL zIc8jV65z0h&J4aD$SnHZMWtjtiZCfqPhXj9GiT()yb!R;azbx%jO$^9`Z`s zNi*U@UzD~3Pc8?M;UtT(^nvFtENM5MlEBX;#M{Ly>niI);SO@D7UEVJN(3_+;q05s{Frx!h|)_V_v04V%1@$u?Lb>PR{WnrM5{YbxwXMB+cst z8A>ap4$bDe5Gqj<2^4^Y)8(*OsS~j0`B!);n^)V1#B_+ozwFhq3ZIu1)iW58bd_38 zb+OvR)Z8unkZmYw%mE&F_#K7xXR~#TFs`UzN4E7_SdATUe8+BSF&eNN>Tz99EOSMM<%H$WlhD*3#&1Of5U- zS1l_0Gc^ORDkvz+aUPg1rs#OQYMsBZ^vinQMFX+XrAec&X;n0jr#zK%48_KmnDBJO zf!FiIU_LR#OtQ!zIb&*f+vst<^&tO2e5#F-kG%vwfoh^@LY97#?3|K3k4=-)`blCC zY5)dJp4o7PwKV%EoIZV|Ay1})zi#Hm(@2ZG`*`?PrOUf1+x5eAWM!sz)>7r!JiT^* z{6_Ra$K4O1iT$r=*LCfB$OWd!Qc*OAq)nrQ1-l#B*3m!L$XkZg6Mq<2Lgu)DY-mWa zU4)t4d(JxSP@KRwOTlJmh{#6MsA;cE(YbQ9{i}(g+q+|(gIsC3zRKUoGTd^Waf}@& zNVCa5*#pnr;^+Km(8jNIxxn>h%2b>roYP)kb0SoXyi@lfJ*>nNoK-@DhI^hMyem>4Pg@tmwQGpCaaY3FJAJBL z)z2xYjhv`W!1$*P*WW9jOnDw2Zi`$syWvGcyUiW9)1)Pzvg2pzN@NYEBZfylDBff` zNJDriqrUnjem&;UwM7=LHToT9!8f=_CGcvws-3zRI@Ut$ag(!}@F@w_woGDckpUV0 zh@rFSo(PBTp4on@rhBdxDhj;;e_xW^iVc|2fl%MJtQva@TT}~XXHCr68x;eQ$2u2u z{+)1XCvHhwJ(Ms>D#r#YB(|GzbHSG6N`=z!0jhyZmL((9BkqgrOQT~n$iHwy<9ER# zWgeSM+Wk*aQ)G`uKRPOwUuQAxcPvyqBt7UtT^ua(3PSBV(ZQ-FKolK;{{=$Pz zHbvf`M^P307=g+Um?}_lqP>bK9W<7eZ0<+-0*;kD2wI2eF*QNzCQ8{3J9U$v`Kgc2 zQJ}-Kyn)7VWYFH5+bD~ROTJ&}9zKM{LTom9HO=)jCw1Um`7yz)09E+Pq61jID0GOQ zUvdX0bt3(`88|BObEza#p zOS;JqQpF}mioZ!|v=xnkmdn%#Jor#l6IxJ%QL1FxLp|HGPcacLLWQ4o37l$f*qe>X z5v$crExb1J0mh)tmG-m4u?J?*A*wI*9qH9;LU&S&g42}urZOdH39Vvpjv){rzSwg}m?dzzl+wa-pemg?&F z+BGE&FlQy_ZJFH^q8e`K=A*|ut}9Q+Z(7_8iUM^Y zSNld?BNfExE0WY!6TnZJ3nzu+MMkc36K)Ob1$Wrebm>&L&X}j6s<{FR#=KJ{@zcn> z{VIp9jr^yArETWhilbihb$hW+1&$~ILe{j{P_fn+Aq=9S4#^|W$SBVA19hw<5aaPY zeNqW*6s?a3W|35QxdLumDRLbLs1o5-N$D#VHXJ(-b_w05+PkKn;;m}+r2ZLXM+Rv#R#a(7$ zBV631ue#GtL2>pmaU$Cf8kiyFT$rrC;y$*{ldF055Q_zW?7Lyi@HBMuYtx@RHQc*? z&lGB$9fmiVR4M1$cJbsEo%N*7a`hU_B83C-8a4HZl0_AC7C3v=^ohin6TTVHNtmTj z!?kSVaTL8|Il4|vxle=_HKXC5mRzIw7$kW@k4UIkS ziP2F#I)w5n@hjIJdOYmAAm-Vwb^16OT{N&_oO?chd6H;lptR7lqL;9=8onpd>2BT% zAf6Rbriwrx+^;Nwiojni3f`(#=BRj?b(^LWRRT4U{N~pc28{r(BBg9wVCAPK#9QW^ zEp^>x_LQw}aNLIE%Opez3W=~rD7z!BIOU)_33rmCD~ZK#2tlI^I&;2oFrO$k7PMc> z1_M$l;y~(IS{c=ziJzjuY*%^h?;{51-J-qO>WVuS9~efP^8Kp7MC5cGb(s(F_-nyW zUlG&L4HF@fC_(5+WXhXgv>M>FCMH$1k_-vUN_h3N*cu;(R3~@%j{3=*66I@A%S%5k z3XO-;ugZe8xwDzKzBW*Mc4eCj@RmuLO_+pZLeTh2sjD)ID#WO*!pI)0nvO>gavG=T z=(T)$=%w+tR<_9c@=!#kMZ$2aB~&@psKrJxuXo^wjc1i;52I5x7_y~M5{7c4qabCf z(ehJ0h|KBd4tqpnbU%qJq_y_)MhJ>!D4h?JnSfGY>2o%3)l=hY4)p3Ij=^XZ)aF7Q zjslAT6}xk|t+J6^ zl9s(`Jp8_l*b9AHsP}L}X~y3;N_~*pISAmW+B|GLi8{Tlfm{h^FDf6e*vh-7BHFg` zkjkjw-}1pZhw(%`I1h5vsF{3JgV~>TkA9n{@i1%K!-5&0>$eaz2aq|CC}o4wiLh}q)4p0|#Ygnj1) ze;RannZj0T#NqcMt_!Vsd)8}6S@ri4A5Zfa@(G=e%Vma<)PCTAPZQH+0ApBNij+92 z;5mK^}VLVKVGUE2lMio)YA@-2 z$ACFS)B;dtU7KY8K@AUa+qXls?+VcB$}WO}#0VO*bq52T^6GgQ70dWnWdsLj+{-O8 z%?g`Fic3F^AZ%{&?r!nDuEFm1;k_jCm_l$nneW29pcP;o5w1UMtw0fVGs8NkLwi9> z2A+mN7x3WD57pzF%e+Vzem{?aR8LibKzy|ox{BJ10`x-!)6$HPJqBreT18x9%s`hePvX?-bk_&dF&fj_cn zefX9fw1cLn8K|X)#2q;&NCa)xP;tL1&fZmK>*6rzX(cY@%7`_7GRk;SBz$FzF>{^Y zA)M+EfO$gryJwo_@GDckccZx92l2mkrR+>y91U&kOr4#W{;f48`;W%h%(%>?ECY+$ ze|N+#WNsm@TEC+z57W{(4m0Zh(f0ayvrUEf?)p2B007bdZotO$-42_{dmtpM%G(z( zqjo)OL?uOPq5Tl2;)7KPX_cA`6b2eV7j_aMMW~xKD<{CgxKmLq529_=0s8i4Qw&(CxJ$w7 z?|PADGI1)gT#>?#tGQz1$SKaC*qanzNK*!?4V1&)BOV7vJi0;k0d^`j+ zL4JX?ydAuwL&GzAyh)}cL6$6(4L6JtK2=<#yy<}b{GtzM-={JrEWo0x3ybu&_T{M4 zr%m&J#~%jXN96o+bm8!{TGWszCfcI@d@J-#%I&eDCk=Omqopck22B)OvpYdPk|5v= z&DVgF{yBJS0NeOPpihc$U9c;=T$}H+y-?bCw?mLu<4>iE%t($Hd1i&Rz9&NH-IR`a zhs4%5{9mR6)-Q9??fuC=S2{AYL!k}@IV$ZSx!yP@fm9A^1b!_tFFEe78x+;YeYW?W zlBeBol$|D1nkjL9e|K7{VRQ2sz2_(g`tfz?w4QO1{gW<8Q1E$U<|Ampq7ug5 zW)4T3gb0=L+mPD{W*xD2>ZU`r$(ar%YSOYC4t-p}Y{qbtY)b z6}I9&4eM!C(Xh2nY@spaRcAc~jcfMmEbJuIftnc(bf@M{er#FuSLztUxVCvCZSEeG zxOe%GbGZ#$ES@aTJLW(={@TFImU`?&W{DKkj7aMF`x8E&SJ3i@ z007cq005G|o-hLoBQqllqlu-HGlQj_nLU%dgsOX^QMm!n7RZGbkrT&WU4#M=aj64WJ4b}Hye&sO;W6Hwe1R0 z*Bc{eP3~BP=|+y1iW-WYEbrlZ5?a7moy1vSkZA!kIl#3Dhn~Lp4|0$)Nzr%RAkpeN z3FJFLhIGetmM~$h|M)fdmFZ=gCVtLnxH-R~#eCs-cl`Qju=AReav7HV(g{(%QLh9` zXr&v^#ed<58GU2w6TW_zufuQ#j`>G@e#s_X!MdwY$|3aw{m7y<)f?HW=F|&Amz3E` z_rH1qc*K{i*6OwMXD;_>KVBr(W|hkB=Z`xf4PT2EY&toDpp*SB8E^3RHP;j&KBhd9 z{)XqWJ+3{Eehjt~`fhI(PS7-1u^NOF6V;ZF!l9#xJOYkF!e=|=)e0eF1rJnE!Vj}x zYAeF*oNqiGAQs8pORoV|?gBI3>ULW(HVB+HS+x$?*;^85RvRgOpdI7m5hIa*rye3K z3SmeANxWJ2@z*WpQD8c0ZLT&Xi&4hrz`&-`To+@5A-sQsVb>ElkEqsSKM7dN;U_v0 z>JgJu#1Xf;NRl)jGfyGaMbTKk5rRtr=RposS;b@x7G5C1H(Y{)4^XxhL)O+#Qx zyvnc;SyOEoY?wSNRB|7n!0YP&b!@II;CYan?%I}k&Bf(ir^+qdyx(cg9I+=&c~?gR z4Tky|eLS@GjX;c1blz0r_sBY}6ZsFQHFLZZsVF5@PP&D_+_+Gx&#;`SBurV^7&F6# zKi6ePh%xZ4lR4~Qz&=#A>yO>SrUg$Ayn<#=!?Xz+pCXRI61}6)HZPa-KZ;NWEgi~ z<@>kkNRv(k=`FsOi;H&|@^2dFKc=HBA*QG-?lRk!k}nJh-tNqSvWdtt0EbL!>cblU zGO&WFObMHRabwJUirY9l+3j@p=#Vu?aV#j{wiu!H*G&UcHJ}qUDc8-$LXsQ=s;3qUr;R9sh$imTNl>em6d|gwC0sIuCjzPXkg`#}UNNLy6ec zF=e&P#&1tHe)^c7&rzEbNPGUs1MqVtw5TH!xb0^h3wwu-o7pSm3bZ0GNLAM(pO+&K zFRWCpv(&hKc~NwoNb%MOEAO0E$33AI-P2drW~-&U3IO!X_G;Tu0+fe!)jBZumZW!2 zQ_1tP%`ai?Fu87p zWr#46M4$6OM2~I2QXyd0fnz0IVx1=f7W>E>`w{H7XV?+%rHJlUl!_jF*B5+9OKKa_ zr|uTpy}&{lTQ`vC6Y~Tq3!rJWe66dICiRaoZ!d9_WWm5OA^z_ZN$;Ne&sSlo1xAC)J;N?k_6EcX{`(Kjh!0^-rpQ zsJlOz{?rYBF|oWy{(m$5N8tZUMf}P3XCC{D?VR-gX8UJW`-AE~a?t-!f%%gC-&FsV Yk(6Yi-W>}7fPa5?zUQzwihtbwKjkYijQ{`u literal 0 HcmV?d00001 diff --git a/dist/mlbands-1.0.1.tar.gz b/dist/mlbands-1.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7944ac017232f48693ad393b55d9024872842273 GIT binary patch literal 9439 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 literal 0 HcmV?d00001 diff --git a/mlbands/__init__.py b/mlbands/__init__.py index 0a4ef74d..e7d486ae 100644 --- a/mlbands/__init__.py +++ b/mlbands/__init__.py @@ -1,4 +1,4 @@ -from mlbands.secret import * +# from mlbands.secret import * # remove (import error ) from mlbands.main import * from mlbands.misc import * from mlbands.ML import * diff --git a/pyproject.toml b/pyproject.toml index c948d3fa..3a49fbd2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "mlbands" -version = "1.0.0" +version = "1.0.1" description = "A Python package that implements automatic prediction of electronic band gaps for a set of materials based on training data" authors = ["Andrew R. Garcia"] readme = "README.md" diff --git a/tests/test_module.py b/tests/test_module.py index 93de7c24..2a32c751 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -1,7 +1,10 @@ import mlbands +# replace below line with API key [ in string form ] from Materials Project site (https://materialsproject.org/api#api-key) +SECRET_KEY = '' + def test_materialprops(): - material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103503') + material = mlbands.Material(SECRET_KEY, 'mp-1103503') material.structural() material.XRD() @@ -10,13 +13,13 @@ def test_materialprops(): print(totalmag) def test_visuals(): - material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103502') + material = mlbands.Material(SECRET_KEY, 'mp-1103502') box = material.to_box(True) material.visual(10,True) box = material.to_box() material.visual() - material = mlbands.Material(mlbands.SECRET_KEY, 'mp-1103506') + material = mlbands.Material(SECRET_KEY, 'mp-1103506') box = material.to_box(True) material.visual(10,True) @@ -24,18 +27,18 @@ def test_loadvisual(): xdata = mlbands.load('materials.data') print(xdata) - mlbands.Material(mlbands.SECRET_KEY, box_array = xdata[3]).visual() - mlbands.Material(mlbands.SECRET_KEY).visual() + mlbands.Material(SECRET_KEY, box_array = xdata[3]).visual() + mlbands.Material(SECRET_KEY).visual() def test_bands(): - training = mlbands.Group(mlbands.SECRET_KEY) + training = mlbands.Group(SECRET_KEY) training.data_make(range(1,100)) # training.data_make(range(1,30),True) training.resize_boxes() - testing = mlbands.Group(mlbands.SECRET_KEY) + testing = mlbands.Group(SECRET_KEY) testing.data_make(range(300,350)) # testing.data_make(range(300,314),True) testing.resize_boxes() @@ -58,7 +61,7 @@ def test_bands_load(): def test_dataexpand(): - training = mlbands.Group(mlbands.SECRET_KEY) + training = mlbands.Group(SECRET_KEY) traindata = mlbands.load('train.data') training.transfer(traindata) @@ -75,5 +78,5 @@ def test_dataexpand(): test_visuals() test_loadvisual() test_dataexpand() -test_bands() +# test_bands() test_bands_load()