BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. BiCrystal provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
-
-Download
-
The latest version of BiCrystal can be found on github:
BiCrystal is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
bicrystal - Bash script which runs the python program
-cifs/ - Directory with sample cif files
-examples/ - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal
-periodic_table.csv - Periodic table of elements
-program.py - Python program to be called from bicrystal script
-
-Installation
-
After downloading the files from the github repository to the directory of your choice (recommended: /usr/bin/), make bicrystal and program.py into executables:
-
chmod u+x bicrystal program.py
-
-
Next, add this directory to your $PATH variable. In Bash, adding the following lines to your .bashrc file:
Save, close then source your .bashrc file to activate the changes:
-
source ~/.bashrc
-
-
Restart your terminal window to start using bicrystal.
-
-Usage
-
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
-
bicrystal
-
-
The first thing you will be required to do is input your cif file, e.g. graphite.cif:
-
***Input cif file***
-graphite.cif
-
-
Next, enter input parameters m and n, and rotation angle in degrees (zero if you want both layers unperturbed).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
-
***Rotation parameters***
-Enter m 2
-Enter n 1
-Enter rotation_angle 0
-
-
After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
-
Intializing atoms...
-
-
-Initial TOP atoms..
-Atom No. 1 c [0. 0. 0.5]
-Atom No. 2 c [0.66667 0.33334 0.505 ]
-
-Initial BOTTOM atoms..
-Atom No. 3 c [0. 0. 0.]
-Atom No. 4 c [0.33333 0.66667 0.005 ]
-
-
For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.
-
Select zeroeth TOP atom
-Enter Atom No. 1
-
-Select zeroeth BOTTOM atom
-Enter Atom No. 3
-
-
-
Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
-
xcrysden --pwi graphite28.scf.in
-
-
-
Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, BiCrystal removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
-
The examples/ folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from bicrystal. Below are some examples.
-
-Graphite 364-atom unit cell
-
The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-Blue phosphorene 172-atom unit cell
-
The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
-
-
-Molybdenun Disulfide 546-atom unit cell
-
The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-Summary Table
-
All the examples in the examples folder can be summarized in the table below:
-
-
-References
-
For a detailed analysis of Moire patterns and angles:
-
Density functional calculations on the intricacies of Moiré patterns on graphite, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, Phys. Rev. B 75, 235449 – Published 28 June 2007
-
Crystals package authors:
-
L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.
Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
-
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
-
-
-
-
-
-
-
-
-
-
From 85fda7eb8541103d2b302db9bf2642a220149c21 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 12:30:36 -0300
Subject: [PATCH 14/87] Delete params.json
---
params.json | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 params.json
diff --git a/params.json b/params.json
deleted file mode 100644
index e0396a4..0000000
--- a/params.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. ","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on github:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Intializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n\r\n\r\n\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
From d19cc172b3bbfec7dcacd15fa231540c573ef51b Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 12:36:08 -0300
Subject: [PATCH 15/87] Create master branch via GitHub
---
images/bg_hr.png | Bin 0 -> 78 bytes
images/blacktocat.png | Bin 0 -> 463 bytes
images/icon_download.png | Bin 0 -> 216 bytes
images/sprite_download.png | Bin 0 -> 14832 bytes
index.html | 192 ++++++++++++++++
javascripts/main.js | 1 +
params.json | 1 +
stylesheets/github-light.css | 130 +++++++++++
stylesheets/stylesheet.css | 425 +++++++++++++++++++++++++++++++++++
9 files changed, 749 insertions(+)
create mode 100644 images/bg_hr.png
create mode 100644 images/blacktocat.png
create mode 100644 images/icon_download.png
create mode 100644 images/sprite_download.png
create mode 100644 index.html
create mode 100644 javascripts/main.js
create mode 100644 params.json
create mode 100644 stylesheets/github-light.css
create mode 100644 stylesheets/stylesheet.css
diff --git a/images/bg_hr.png b/images/bg_hr.png
new file mode 100644
index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707
GIT binary patch
literal 78
zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz
b1S7-U!)%xJ1CQbP0l+XkKg_jic
literal 0
HcmV?d00001
diff --git a/images/blacktocat.png b/images/blacktocat.png
new file mode 100644
index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c
GIT binary patch
literal 463
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI
z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$
zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F!
zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=;
zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9
zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z
Rq=4be;OXk;vd$@?2>`O9@hboT
literal 0
HcmV?d00001
diff --git a/images/icon_download.png b/images/icon_download.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf
GIT binary patch
literal 216
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|#
z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w=
zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn%
zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4
ODubu1pUXO@geCwMBTRk(
literal 0
HcmV?d00001
diff --git a/images/sprite_download.png b/images/sprite_download.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe
GIT binary patch
literal 14832
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
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file.
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. BiCrystal provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
+
+Download
+
The latest version of BiCrystal can be found on github:
BiCrystal is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
bicrystal - Bash script which runs the python program
+cifs/ - Directory with sample cif files
+examples/ - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal
+periodic_table.csv - Periodic table of elements
+program.py - Python program to be called from bicrystal script
+
+Installation
+
After downloading the files from the github repository to the directory of your choice (recommended: /usr/bin/), make bicrystal and program.py into executables:
+
chmod u+x bicrystal program.py
+
+
Next, add this directory to your $PATH variable. In Bash, adding the following lines to your .bashrc file:
Save, close then source your .bashrc file to activate the changes:
+
source ~/.bashrc
+
+
Restart your terminal window to start using bicrystal.
+
+Usage
+
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
+
bicrystal
+
+
The first thing you will be required to do is input your cif file, e.g. graphite.cif:
+
***Input cif file***
+graphite.cif
+
+
Next, enter input parameters m and n, and rotation angle in degrees (zero if you want both layers unperturbed).
+Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
+
***Rotation parameters***
+Enter m 2
+Enter n 1
+Enter rotation_angle 0
+
+
After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
+
Intializing atoms...
+
+
+Initial TOP atoms..
+Atom No. 1 c [0. 0. 0.5]
+Atom No. 2 c [0.66667 0.33334 0.505 ]
+
+Initial BOTTOM atoms..
+Atom No. 3 c [0. 0. 0.]
+Atom No. 4 c [0.33333 0.66667 0.005 ]
+
+
For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.
+
Select zeroeth TOP atom
+Enter Atom No. 1
+
+Select zeroeth BOTTOM atom
+Enter Atom No. 3
+
+
+
Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
+
xcrysden --pwi graphite28.scf.in
+
+
+
Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, BiCrystal removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
+
The examples/ folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from bicrystal. Below are some examples.
+
+Graphite 364-atom unit cell
+
The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+
+
+Blue phosphorene 172-atom unit cell
+
The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
+
+
+Molybdenun Disulfide 546-atom unit cell
+
The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+
+
+Summary Table
+
All the examples in the examples folder can be summarized in the table below:
+
+
+References
+
For a detailed analysis of Moire patterns and angles:
+
Density functional calculations on the intricacies of Moiré patterns on graphite, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, Phys. Rev. B 75, 235449 – Published 28 June 2007
+
Crystals package authors:
+
L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.
Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
+
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
+
+
+
+
+
+
+
+
+
+
diff --git a/javascripts/main.js b/javascripts/main.js
new file mode 100644
index 0000000..d8135d3
--- /dev/null
+++ b/javascripts/main.js
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
diff --git a/params.json b/params.json
new file mode 100644
index 0000000..50cb016
--- /dev/null
+++ b/params.json
@@ -0,0 +1 @@
+{"name":"Bicrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. ","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on github:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Intializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
diff --git a/stylesheets/github-light.css b/stylesheets/github-light.css
new file mode 100644
index 0000000..68b86c1
--- /dev/null
+++ b/stylesheets/github-light.css
@@ -0,0 +1,130 @@
+/*!
+ * GitHub Light v0.4.1
+ * Copyright (c) 2012 - 2017 GitHub, Inc.
+ * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
+ */
+
+.pl-c /* comment, punctuation.definition.comment, string.comment */ {
+ color: #6a737d;
+}
+
+.pl-c1 /* constant, entity.name.constant, variable.other.constant, variable.language, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header, meta.output */,
+.pl-s .pl-v /* string variable */ {
+ color: #005cc5;
+}
+
+.pl-e /* entity */,
+.pl-en /* entity.name */ {
+ color: #6f42c1;
+}
+
+.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
+.pl-s .pl-s1 /* string source */ {
+ color: #24292e;
+}
+
+.pl-ent /* entity.name.tag, markup.quote */ {
+ color: #22863a;
+}
+
+.pl-k /* keyword, storage, storage.type */ {
+ color: #d73a49;
+}
+
+.pl-s /* string */,
+.pl-pds /* punctuation.definition.string, source.regexp, string.regexp.character-class */,
+.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
+.pl-sr /* string.regexp */,
+.pl-sr .pl-cce /* string.regexp constant.character.escape */,
+.pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
+.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
+ color: #032f62;
+}
+
+.pl-v /* variable */,
+.pl-smw /* sublimelinter.mark.warning */ {
+ color: #e36209;
+}
+
+.pl-bu /* invalid.broken, invalid.deprecated, invalid.unimplemented, message.error, brackethighlighter.unmatched, sublimelinter.mark.error */ {
+ color: #b31d28;
+}
+
+.pl-ii /* invalid.illegal */ {
+ color: #fafbfc;
+ background-color: #b31d28;
+}
+
+.pl-c2 /* carriage-return */ {
+ color: #fafbfc;
+ background-color: #d73a49;
+}
+
+.pl-c2::before /* carriage-return */ {
+ content: "^M";
+}
+
+.pl-sr .pl-cce /* string.regexp constant.character.escape */ {
+ font-weight: bold;
+ color: #22863a;
+}
+
+.pl-ml /* markup.list */ {
+ color: #735c0f;
+}
+
+.pl-mh /* markup.heading */,
+.pl-mh .pl-en /* markup.heading entity.name */,
+.pl-ms /* meta.separator */ {
+ font-weight: bold;
+ color: #005cc5;
+}
+
+.pl-mi /* markup.italic */ {
+ font-style: italic;
+ color: #24292e;
+}
+
+.pl-mb /* markup.bold */ {
+ font-weight: bold;
+ color: #24292e;
+}
+
+.pl-md /* markup.deleted, meta.diff.header.from-file, punctuation.definition.deleted */ {
+ color: #b31d28;
+ background-color: #ffeef0;
+}
+
+.pl-mi1 /* markup.inserted, meta.diff.header.to-file, punctuation.definition.inserted */ {
+ color: #22863a;
+ background-color: #f0fff4;
+}
+
+.pl-mc /* markup.changed, punctuation.definition.changed */ {
+ color: #e36209;
+ background-color: #ffebda;
+}
+
+.pl-mi2 /* markup.ignored, markup.untracked */ {
+ color: #f6f8fa;
+ background-color: #005cc5;
+}
+
+.pl-mdr /* meta.diff.range */ {
+ font-weight: bold;
+ color: #6f42c1;
+}
+
+.pl-ba /* brackethighlighter.tag, brackethighlighter.curly, brackethighlighter.round, brackethighlighter.square, brackethighlighter.angle, brackethighlighter.quote */ {
+ color: #586069;
+}
+
+.pl-sg /* sublimelinter.gutter-mark */ {
+ color: #959da5;
+}
+
+.pl-corl /* constant.other.reference.link, string.other.link */ {
+ text-decoration: underline;
+ color: #032f62;
+}
+
diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css
new file mode 100644
index 0000000..3da3485
--- /dev/null
+++ b/stylesheets/stylesheet.css
@@ -0,0 +1,425 @@
+/*******************************************************************************
+Slate Theme for GitHub Pages
+by Jason Costello, @jsncostello
+*******************************************************************************/
+
+@import url(github-light.css);
+
+/*******************************************************************************
+MeyerWeb Reset
+*******************************************************************************/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+
+ol, ul {
+ list-style: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+/*******************************************************************************
+Theme Styles
+*******************************************************************************/
+
+body {
+ box-sizing: border-box;
+ color:#373737;
+ background: #212121;
+ font-size: 16px;
+ font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ -webkit-font-smoothing: antialiased;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 10px 0;
+ font-weight: 700;
+ color:#222222;
+ font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
+ letter-spacing: -1px;
+}
+
+h1 {
+ font-size: 36px;
+ font-weight: 700;
+}
+
+h2 {
+ padding-bottom: 10px;
+ font-size: 32px;
+ background: url('../images/bg_hr.png') repeat-x bottom;
+}
+
+h3 {
+ font-size: 24px;
+}
+
+h4 {
+ font-size: 21px;
+}
+
+h5 {
+ font-size: 18px;
+}
+
+h6 {
+ font-size: 16px;
+}
+
+p {
+ margin: 10px 0 15px 0;
+}
+
+footer p {
+ color: #f2f2f2;
+}
+
+a {
+ text-decoration: none;
+ color: #007edf;
+ text-shadow: none;
+
+ transition: color 0.5s ease;
+ transition: text-shadow 0.5s ease;
+ -webkit-transition: color 0.5s ease;
+ -webkit-transition: text-shadow 0.5s ease;
+ -moz-transition: color 0.5s ease;
+ -moz-transition: text-shadow 0.5s ease;
+ -o-transition: color 0.5s ease;
+ -o-transition: text-shadow 0.5s ease;
+ -ms-transition: color 0.5s ease;
+ -ms-transition: text-shadow 0.5s ease;
+}
+
+a:hover, a:focus {text-decoration: underline;}
+
+footer a {
+ color: #F2F2F2;
+ text-decoration: underline;
+}
+
+em {
+ font-style: italic;
+}
+
+strong {
+ font-weight: bold;
+}
+
+img {
+ position: relative;
+ margin: 0 auto;
+ max-width: 739px;
+ padding: 5px;
+ margin: 10px 0 10px 0;
+ border: 1px solid #ebebeb;
+
+ box-shadow: 0 0 5px #ebebeb;
+ -webkit-box-shadow: 0 0 5px #ebebeb;
+ -moz-box-shadow: 0 0 5px #ebebeb;
+ -o-box-shadow: 0 0 5px #ebebeb;
+ -ms-box-shadow: 0 0 5px #ebebeb;
+}
+
+p img {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ vertical-align: middle;
+ text-align: center;
+ border: none;
+}
+
+pre, code {
+ width: 100%;
+ color: #222;
+ background-color: #fff;
+
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ font-size: 14px;
+
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+
+pre {
+ width: 100%;
+ padding: 10px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+ overflow: auto;
+}
+
+code {
+ padding: 3px;
+ margin: 0 3px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+}
+
+pre code {
+ display: block;
+ box-shadow: none;
+}
+
+blockquote {
+ color: #666;
+ margin-bottom: 20px;
+ padding: 0 0 0 20px;
+ border-left: 3px solid #bbb;
+}
+
+
+ul, ol, dl {
+ margin-bottom: 15px
+}
+
+ul {
+ list-style-position: inside;
+ list-style: disc;
+ padding-left: 20px;
+}
+
+ol {
+ list-style-position: inside;
+ list-style: decimal;
+ padding-left: 20px;
+}
+
+dl dt {
+ font-weight: bold;
+}
+
+dl dd {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+dl p {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+hr {
+ height: 1px;
+ margin-bottom: 5px;
+ border: none;
+ background: url('../images/bg_hr.png') repeat-x center;
+}
+
+table {
+ border: 1px solid #373737;
+ margin-bottom: 20px;
+ text-align: left;
+ }
+
+th {
+ font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ padding: 10px;
+ background: #373737;
+ color: #fff;
+ }
+
+td {
+ padding: 10px;
+ border: 1px solid #373737;
+ }
+
+form {
+ background: #f2f2f2;
+ padding: 20px;
+}
+
+/*******************************************************************************
+Full-Width Styles
+*******************************************************************************/
+
+.outer {
+ width: 100%;
+}
+
+.inner {
+ position: relative;
+ max-width: 640px;
+ padding: 20px 10px;
+ margin: 0 auto;
+}
+
+#forkme_banner {
+ display: block;
+ position: absolute;
+ top:0;
+ right: 10px;
+ z-index: 10;
+ padding: 10px 50px 10px 10px;
+ color: #fff;
+ background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
+ font-weight: 700;
+ box-shadow: 0 0 10px rgba(0,0,0,.5);
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+
+#header_wrap {
+ background: #212121;
+ background: -moz-linear-gradient(top, #373737, #212121);
+ background: -webkit-linear-gradient(top, #373737, #212121);
+ background: -ms-linear-gradient(top, #373737, #212121);
+ background: -o-linear-gradient(top, #373737, #212121);
+ background: linear-gradient(top, #373737, #212121);
+}
+
+#header_wrap .inner {
+ padding: 50px 10px 30px 10px;
+}
+
+#project_title {
+ margin: 0;
+ color: #fff;
+ font-size: 42px;
+ font-weight: 700;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#project_tagline {
+ color: #fff;
+ font-size: 24px;
+ font-weight: 300;
+ background: none;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#downloads {
+ position: absolute;
+ width: 210px;
+ z-index: 10;
+ bottom: -40px;
+ right: 0;
+ height: 70px;
+ background: url('../images/icon_download.png') no-repeat 0% 90%;
+}
+
+.zip_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom left;
+}
+
+.tar_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom right;
+ margin-left: 10px;
+}
+
+.zip_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top left;
+}
+
+.tar_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top right;
+}
+
+#main_content_wrap {
+ background: #f2f2f2;
+ border-top: 1px solid #111;
+ border-bottom: 1px solid #111;
+}
+
+#main_content {
+ padding-top: 40px;
+}
+
+#footer_wrap {
+ background: #212121;
+}
+
+
+
+/*******************************************************************************
+Small Device Styles
+*******************************************************************************/
+
+@media screen and (max-width: 480px) {
+ body {
+ font-size:14px;
+ }
+
+ #downloads {
+ display: none;
+ }
+
+ .inner {
+ min-width: 320px;
+ max-width: 480px;
+ }
+
+ #project_title {
+ font-size: 32px;
+ }
+
+ h1 {
+ font-size: 28px;
+ }
+
+ h2 {
+ font-size: 24px;
+ }
+
+ h3 {
+ font-size: 21px;
+ }
+
+ h4 {
+ font-size: 18px;
+ }
+
+ h5 {
+ font-size: 14px;
+ }
+
+ h6 {
+ font-size: 12px;
+ }
+
+ code, pre {
+ min-width: 320px;
+ max-width: 480px;
+ font-size: 11px;
+ }
+
+}
From db7614ba952be59ae478f15bd86772f7e4c4385f Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 12:43:19 -0300
Subject: [PATCH 16/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0de7906..29fda9e 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal
+https://github.com/tilaskabengele/BiCrystal/tree/stable
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
From 0f075e1d3090d8898d31ec88533f640c810dd472 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 12:47:46 -0300
Subject: [PATCH 17/87] Create master branch via GitHub
---
index.html | 28 ++++++++++++++--------------
params.json | 2 +-
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/index.html b/index.html
index 8845d63..8149470 100644
--- a/index.html
+++ b/index.html
@@ -4,11 +4,11 @@
-
+
- Bicrystal
+ BiCrystal
@@ -18,7 +18,7 @@
View on GitHub
-
Bicrystal
+
BiCrystal
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file.
@@ -48,11 +48,11 @@
License
Overview
-
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. BiCrystal provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
+
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. BiCrystal provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.
Download
-
The latest version of BiCrystal can be found on github:
bicrystal - Bash script which runs the python program
@@ -75,7 +75,7 @@
program.py - Python program to be called from bicrystal script
Installation
-
After downloading the files from the github repository to the directory of your choice (recommended: /usr/bin/), make bicrystal and program.py into executables:
+
After downloading the files from the Github repository to the directory of your choice (recommended: /usr/bin/), make bicrystal and program.py into executables:
chmod u+x bicrystal program.py
Next, add this directory to your $PATH variable. In Bash, adding the following lines to your .bashrc file:
@@ -99,14 +99,14 @@
graphite.cif
Next, enter input parameters m and n, and rotation angle in degrees (zero if you want both layers unperturbed).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
+Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.
***Rotation parameters***
Enter m 2
Enter n 1
Enter rotation_angle 0
-
After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
-
Intializing atoms...
+
After that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
+
Initializing atoms...
Initial TOP atoms..
@@ -144,8 +144,8 @@
xcrysden --pwi graphite28.scf.in
-
Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, BiCrystal removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
-
The examples/ folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from bicrystal. Below are some examples.
+
Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, BiCrystal removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
+
The examples/ folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from bicrystal. Below are some examples.
Graphite 364-atom unit cell
The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
@@ -181,7 +181,7 @@
diff --git a/params.json b/params.json
index 50cb016..d9cc2bf 100644
--- a/params.json
+++ b/params.json
@@ -1 +1 @@
-{"name":"Bicrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. ","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on github:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Intializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
+{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. ","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
From 41f204bac19195562f0db8c69bc5f16127645760 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 12:54:43 -0300
Subject: [PATCH 18/87] Create master branch via GitHub
---
index.html | 4 ++--
params.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/index.html b/index.html
index 8149470..f59a826 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
-
+
@@ -19,7 +19,7 @@
View on GitHub
BiCrystal
-
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file.
+
BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.
Download this project as a .zip file
diff --git a/params.json b/params.json
index d9cc2bf..6ebbe4a 100644
--- a/params.json
+++ b/params.json
@@ -1 +1 @@
-{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. ","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
+{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
From 0d3125ad3cd46484e138a88d7d8107e1428e3b47 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 13:12:04 -0300
Subject: [PATCH 19/87] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..ddda2e3
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+aspap.org
\ No newline at end of file
From 298a0204f098ecb786acf77bfe59f15d3cbb6722 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 20 Jul 2020 13:12:32 -0300
Subject: [PATCH 20/87] Create master branch via GitHub
---
index.html | 63 ++--
stylesheets/normalize.css | 424 ++++++++++++++++++++++++
stylesheets/stylesheet.css | 638 +++++++++++++------------------------
3 files changed, 677 insertions(+), 448 deletions(-)
create mode 100644 stylesheets/normalize.css
diff --git a/index.html b/index.html
index f59a826..b3936ae 100644
--- a/index.html
+++ b/index.html
@@ -1,37 +1,25 @@
-
-
+
-
-
-
-
-
-
- BiCrystal
+
+ BiCrystal by tilaskabengele
+
+
+
+
+
-
-
-
-
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
@@ -175,18 +163,15 @@
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
@@ -163,15 +175,18 @@
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
@@ -175,18 +163,15 @@
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
@@ -163,15 +175,18 @@
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
***Rotation parameters***
Enter m 2
Enter n 1
-Enter rotation_angle 0
+Enter rotation_angle 21.29
After that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
Initializing atoms...
diff --git a/params.json b/params.json
index 6ebbe4a..f6522bd 100644
--- a/params.json
+++ b/params.json
@@ -1 +1 @@
-{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 0\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
+{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 21.29\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
From c09398870712798da482d0a698f39fa8f26b86de Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:18:14 -0300
Subject: [PATCH 28/87] Set theme jekyll-theme-slate and migrate Page Generator
content
---
_config.yml | 8 ++
images/bg_hr.png | Bin 78 -> 0 bytes
images/blacktocat.png | Bin 463 -> 0 bytes
images/icon_download.png | Bin 216 -> 0 bytes
images/sprite_download.png | Bin 14832 -> 0 bytes
index.html | 192 -------------------------------------
index.md | 174 +++++++++++++++++++++++++++++++++
javascripts/main.js | 1 -
params.json | 1 -
9 files changed, 182 insertions(+), 194 deletions(-)
create mode 100644 _config.yml
delete mode 100644 images/bg_hr.png
delete mode 100644 images/blacktocat.png
delete mode 100644 images/icon_download.png
delete mode 100644 images/sprite_download.png
delete mode 100644 index.html
create mode 100644 index.md
delete mode 100644 javascripts/main.js
delete mode 100644 params.json
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..3e78b92
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,8 @@
+title: BiCrystal
+description: BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.
+google_analytics:
+show_downloads: true
+theme: jekyll-theme-slate
+
+gems:
+ - jekyll-mentions
diff --git a/images/bg_hr.png b/images/bg_hr.png
deleted file mode 100644
index 514aee5056a320b059a4b92fc31385b01f3fd707..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 78
zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz
b1S7-U!)%xJ1CQbP0l+XkKg_jic
diff --git a/images/blacktocat.png b/images/blacktocat.png
deleted file mode 100644
index e160053a5bfc1f1891c5df1a04244b46132ed91c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 463
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI
z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$
zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F!
zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=;
zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9
zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z
Rq=4be;OXk;vd$@?2>`O9@hboT
diff --git a/images/icon_download.png b/images/icon_download.png
deleted file mode 100644
index 5a793f17688b22d0c98f8b32855f69daff65afaf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 216
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|#
z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w=
zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn%
zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4
ODubu1pUXO@geCwMBTRk(
diff --git a/images/sprite_download.png b/images/sprite_download.png
deleted file mode 100644
index f9f8de24c1c49ce421a44ce2a24ac22d045a39fe..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 14832
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
BiCrystal is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. BiCrystal provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.
-
-Download
-
The latest version of BiCrystal can be found on GitHub:
BiCrystal is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
bicrystal - Bash script which runs the python program
-cifs/ - Directory with sample cif files
-examples/ - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal
-periodic_table.csv - Periodic table of elements
-program.py - Python program to be called from bicrystal script
-
-Installation
-
After downloading the files from the Github repository to the directory of your choice (recommended: /usr/bin/), make bicrystal and program.py into executables:
-
chmod u+x bicrystal program.py
-
-
Next, add this directory to your $PATH variable. In Bash, adding the following lines to your .bashrc file:
Save, close then source your .bashrc file to activate the changes:
-
source ~/.bashrc
-
-
Restart your terminal window to start using bicrystal.
-
-Usage
-
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
-
bicrystal
-
-
The first thing you will be required to do is input your cif file, e.g. graphite.cif:
-
***Input cif file***
-graphite.cif
-
-
Next, enter input parameters m and n, and rotation angle in degrees (zero if you want both layers unperturbed).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.
-
***Rotation parameters***
-Enter m 2
-Enter n 1
-Enter rotation_angle 21.29
-
-
After that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
-
Initializing atoms...
-
-
-Initial TOP atoms..
-Atom No. 1 c [0. 0. 0.5]
-Atom No. 2 c [0.66667 0.33334 0.505 ]
-
-Initial BOTTOM atoms..
-Atom No. 3 c [0. 0. 0.]
-Atom No. 4 c [0.33333 0.66667 0.005 ]
-
-
For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.
-
Select zeroeth TOP atom
-Enter Atom No. 1
-
-Select zeroeth BOTTOM atom
-Enter Atom No. 3
-
-
-
Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
-
xcrysden --pwi graphite28.scf.in
-
-
-
Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, BiCrystal removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
-
The examples/ folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from bicrystal. Below are some examples.
-
-Graphite 364-atom unit cell
-
The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-Blue phosphorene 172-atom unit cell
-
The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
-
-
-Molybdenun Disulfide 546-atom unit cell
-
The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-Summary Table
-
All the examples in the examples folder can be summarized in the table below:
-
-
-References
-
For a detailed analysis of Moire patterns and angles:
-
Density functional calculations on the intricacies of Moiré patterns on graphite, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, Phys. Rev. B 75, 235449 – Published 28 June 2007
-
Crystals package authors:
-
L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.
Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
-
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
-
-
-
-
-
-
-
-
-
-
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..c135a17
--- /dev/null
+++ b/index.md
@@ -0,0 +1,174 @@
+# BiCrystal
+``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
+
+Contents
+==========
+**Overview** \
+**Download** \
+**Packages** \
+**Files** \
+**Installation** \
+**Usage** \
+**Examples** \
+**Summary Table** \
+**References** \
+**License**
+
+# Overview
+Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.
+
+# Download
+The latest version of ``BiCrystal`` can be found on GitHub:
+
+https://github.com/tilaskabengele/BiCrystal/tree/stable
+
+**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
+
+# Packages
+`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
+
+ pip install crystals
+or
+
+ conda install -c conda-forge crystals
+and
+
+ pip install shapely
+
+For more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
+
+ # Files
+
+**bicrystal** - Bash script which runs the python program \
+**cifs/** - Directory with sample cif files \
+**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
+**periodic_table.csv** - Periodic table of elements \
+**program.py** - Python program to be called from bicrystal script
+
+# Installation
+After downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
+
+ chmod u+x bicrystal program.py
+
+Next, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:
+
+ vi ~/.bashrc
+
+Add:
+
+ export PATH="$/path/to/your/directory/with/bicrysal/:$PATH"
+ export PYTHONPATH="${PYTHONPATH}:/path/to/your/directory/with/bicrysal/"
+
+Save, close then source your `.bashrc` file to activate the changes:
+
+ source ~/.bashrc
+
+Restart your terminal window to start using `bicrystal`.
+
+# Usage
+BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
+
+ bicrystal
+
+The first thing you will be required to do is input your cif file, e.g. graphite.cif:
+
+ ***Input cif file***
+ graphite.cif
+
+Next, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).
+Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.
+
+ ***Rotation parameters***
+ Enter m 2
+ Enter n 1
+ Enter rotation_angle 21.29
+
+After that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
+
+ Initializing atoms...
+
+
+ Initial TOP atoms..
+ Atom No. 1 c [0. 0. 0.5]
+ Atom No. 2 c [0.66667 0.33334 0.505 ]
+
+ Initial BOTTOM atoms..
+ Atom No. 3 c [0. 0. 0.]
+ Atom No. 4 c [0.33333 0.66667 0.005 ]
+
+ For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.
+
+ Select zeroeth TOP atom
+ Enter Atom No. 1
+
+ Select zeroeth BOTTOM atom
+ Enter Atom No. 3
+
+
+ 
+
+ Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
+
+ ********************* SUMMARY REPORT ***********************
+
+ Top atoms(rotated) = 14
+ Bottom atoms = 14
+
+ Total atoms
+ = 28
+
+ *************************** Done! **************************
+
+ Would you like to write Espresso file?[Y/n]
+
+ # Examples
+
+ Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
+
+ xcrysden --pwi graphite28.scf.in
+
+ 
+
+Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
+
+The **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.
+
+# Graphite 364-atom unit cell
+The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+
+
+
+# Blue phosphorene 172-atom unit cell
+The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
+
+
+
+# Molybdenun Disulfide 546-atom unit cell
+The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+
+
+
+# Summary Table
+All the examples in the examples folder can be summarized in the table below:
+
+
+
+ # References
+ For a detailed analysis of Moire patterns and angles:
+
+ **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_
+
+ Crystals package authors:
+
+ L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.
+
+ For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki
+
+ # License
+ Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
+
+BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
diff --git a/javascripts/main.js b/javascripts/main.js
deleted file mode 100644
index d8135d3..0000000
--- a/javascripts/main.js
+++ /dev/null
@@ -1 +0,0 @@
-console.log('This would be the main JS file.');
diff --git a/params.json b/params.json
deleted file mode 100644
index f6522bd..0000000
--- a/params.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"BiCrystal","tagline":"BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.","body":"# BiCrystal\r\n``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.\r\n\r\nContents\r\n==========\r\n**Overview** \\\r\n**Download** \\\r\n**Packages** \\\r\n**Files** \\\r\n**Installation** \\\r\n**Usage** \\\r\n**Examples** \\\r\n**Summary Table** \\\r\n**References** \\\r\n**License** \r\n\r\n# Overview\r\nBuilding unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.\r\n\r\n# Download\r\nThe latest version of ``BiCrystal`` can be found on GitHub:\r\n\r\nhttps://github.com/tilaskabengele/BiCrystal/tree/stable\r\n\r\n**Contact**: Tilas Kabengele tilas.kabengele@dal.ca\r\n\r\n# Packages\r\n`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:\r\n\r\n pip install crystals\r\nor\r\n\r\n conda install -c conda-forge crystals\r\nand\r\n\r\n pip install shapely\r\n \r\nFor more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.\r\n \r\n # Files\r\n\r\n**bicrystal** - Bash script which runs the python program \\\r\n**cifs/** - Directory with sample cif files \\\r\n**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \\\r\n**periodic_table.csv** - Periodic table of elements \\\r\n**program.py** - Python program to be called from bicrystal script\r\n\r\n# Installation\r\nAfter downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:\r\n\r\n chmod u+x bicrystal program.py\r\n\r\nNext, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:\r\n\r\n vi ~/.bashrc\r\n\r\nAdd:\r\n\r\n export PATH=\"$/path/to/your/directory/with/bicrysal/:$PATH\"\r\n export PYTHONPATH=\"${PYTHONPATH}:/path/to/your/directory/with/bicrysal/\"\r\n\r\nSave, close then source your `.bashrc` file to activate the changes:\r\n \r\n source ~/.bashrc\r\n\r\nRestart your terminal window to start using `bicrystal`.\r\n\r\n# Usage\r\nBiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:\r\n\r\n bicrystal\r\n \r\nThe first thing you will be required to do is input your cif file, e.g. graphite.cif:\r\n\r\n ***Input cif file***\r\n graphite.cif\r\n\r\nNext, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).\r\nParameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.\r\n \r\n ***Rotation parameters***\r\n Enter m 2\r\n Enter n 1\r\n Enter rotation_angle 21.29\r\n\r\nAfter that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors. \r\n\r\n Initializing atoms...\r\n\r\n\r\n Initial TOP atoms..\r\n Atom No. 1 c [0. 0. 0.5]\r\n Atom No. 2 c [0.66667 0.33334 0.505 ]\r\n\r\n Initial BOTTOM atoms..\r\n Atom No. 3 c [0. 0. 0.]\r\n Atom No. 4 c [0.33333 0.66667 0.005 ]\r\n \r\n For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.\r\n \r\n Select zeroeth TOP atom\r\n Enter Atom No. 1\r\n\r\n Select zeroeth BOTTOM atom\r\n Enter Atom No. 3\r\n\r\n \r\n \r\n \r\n Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.\r\n \r\n ********************* SUMMARY REPORT ***********************\r\n\r\n Top atoms(rotated) = 14\r\n Bottom atoms = 14\r\n\r\n Total atoms\r\n = 28\r\n\r\n *************************** Done! **************************\r\n\r\n Would you like to write Espresso file?[Y/n]\r\n\r\n # Examples\r\n \r\n Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.\r\n \r\n xcrysden --pwi graphite28.scf.in\r\n \r\n \r\n \r\nLooking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation. \r\n\r\nThe **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.\r\n\r\n# Graphite 364-atom unit cell\r\nThe unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Blue phosphorene 172-atom unit cell\r\nThe unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Molybdenun Disulfide 546-atom unit cell\r\nThe unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.\r\n\r\n\r\n\r\n# Summary Table\r\nAll the examples in the examples folder can be summarized in the table below:\r\n\r\n\r\n \r\n # References\r\n For a detailed analysis of Moire patterns and angles:\r\n \r\n **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_\r\n \r\n Crystals package authors:\r\n \r\n L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.\r\n \r\n For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki \r\n \r\n # License\r\n Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.\r\n\r\nBiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r\n\r\nBiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
From 446bd6c7f2b917ff364a507a5afdb8d9c6ad66a2 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:19:51 -0300
Subject: [PATCH 29/87] Update index.md
---
index.md | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/index.md b/index.md
index c135a17..d96754d 100644
--- a/index.md
+++ b/index.md
@@ -15,17 +15,17 @@ Contents
**License**
# Overview
-Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualization software such as Xcrysden, VESTA, or Avogadro provide very powerful tools for analyzing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.
+Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
# Download
-The latest version of ``BiCrystal`` can be found on GitHub:
+The latest version of ``BiCrystal`` can be found on github:
https://github.com/tilaskabengele/BiCrystal/tree/stable
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
+`BiCrystal` is a **python 3** program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which are not part of the standard Python packages, should be installed. i.e Install via pip or conda:
pip install crystals
or
@@ -35,7 +35,7 @@ and
pip install shapely
-For more information on crystals and shapely, visit https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
+For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
# Files
@@ -46,11 +46,11 @@ For more information on crystals and shapely, visit https://pypi.org/project/cry
**program.py** - Python program to be called from bicrystal script
# Installation
-After downloading the files from the Github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
+After downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
chmod u+x bicrystal program.py
-Next, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:
+Next, add this directory to your $PATH variable. In Bash, this is done by adding the following lines to your `.bashrc file`:
vi ~/.bashrc
@@ -76,16 +76,16 @@ The first thing you will be required to do is input your cif file, e.g. graphite
graphite.cif
Next, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1, and rotation angle 21.79 degrees.
+Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
***Rotation parameters***
Enter m 2
Enter n 1
- Enter rotation_angle 21.29
+ Enter rotation_angle 0
-After that, you will be required to pick a zeroeth atom from the top and bottom layers. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
+After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
- Initializing atoms...
+ Intializing atoms...
Initial TOP atoms..
@@ -129,9 +129,9 @@ After that, you will be required to pick a zeroeth atom from the top and bottom

-Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layers do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
+Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
-The **examples/** folder has over 30 examples of Moire patterns graphite, Molybdenum Disulfide, and blue Phosphorene generated from `bicrystal`. Below are some examples.
+The **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.
# Graphite 364-atom unit cell
The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
From ca6781e8f69010de2d37a5804e1b4d5346daae4f Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:31:05 -0300
Subject: [PATCH 30/87] Set theme jekyll-theme-slate
From 45a176a5b90461606b04fd980dfc50c186e428f5 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:31:31 -0300
Subject: [PATCH 31/87] Set theme jekyll-theme-slate
From b520bb120476ed8f5f38156458869e0f5a42f47d Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:32:12 -0300
Subject: [PATCH 32/87] Set theme jekyll-theme-slate
From d34a141947627a935823fc0f5f41d4fa1b0cc0bd Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 14:44:06 -0300
Subject: [PATCH 33/87] Set theme jekyll-theme-dinky
---
_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_config.yml b/_config.yml
index 3e78b92..aba8e5e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -2,7 +2,7 @@ title: BiCrystal
description: BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.
google_analytics:
show_downloads: true
-theme: jekyll-theme-slate
+theme: jekyll-theme-dinky
gems:
- jekyll-mentions
From 8d5278d78ffa6c089a0274a1cbbb7bbff1f79ada Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:03:43 -0300
Subject: [PATCH 34/87] Set theme jekyll-theme-dinky
From 9b6a9d73611467960aa9ed28b35604fc9d9038dd Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:10:09 -0300
Subject: [PATCH 35/87] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 29fda9e..bfab461 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ https://github.com/tilaskabengele/BiCrystal/tree/stable
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal package, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
+`BiCrystal` is a **python 3** program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which are not part of the standard Python packages, should be installed. i.e Install via pip or conda:
pip install crystals
or
@@ -50,7 +50,7 @@ After downloading the files from the github repository to the directory of your
chmod u+x bicrystal program.py
-Next, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:
+Next, add this directory to your $PATH variable. In Bash, this is done by adding the following lines to your `.bashrc file`:
vi ~/.bashrc
From 2921c288122b7e0dc51de755983cea462b9ae16d Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:17:37 -0300
Subject: [PATCH 36/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index bfab461..224f01c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# BiCrystal
-``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
+``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
Contents
==========
From 939b1f2eaae3ecafeb3b4e9a6d864cc15a20af39 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:20:52 -0300
Subject: [PATCH 37/87] Set theme jekyll-theme-dinky
From 5bea9672ab5e6858b7c5f618ed264bc46841d0be Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:24:27 -0300
Subject: [PATCH 38/87] Delete _config.yml
---
_config.yml | 8 --------
1 file changed, 8 deletions(-)
delete mode 100644 _config.yml
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index aba8e5e..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-title: BiCrystal
-description: BiCrystal is a Python program that builds commensurate and incommensurate unit cells of bilayer materials.
-google_analytics:
-show_downloads: true
-theme: jekyll-theme-dinky
-
-gems:
- - jekyll-mentions
From 0d989ee27ed10d068a9078bfc25b3f02ff53a5fd Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:25:41 -0300
Subject: [PATCH 39/87] Delete index.md
---
index.md | 174 -------------------------------------------------------
1 file changed, 174 deletions(-)
delete mode 100644 index.md
diff --git a/index.md b/index.md
deleted file mode 100644
index d96754d..0000000
--- a/index.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# BiCrystal
-``BiCrystal`` is a Python program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
-
-Contents
-==========
-**Overview** \
-**Download** \
-**Packages** \
-**Files** \
-**Installation** \
-**Usage** \
-**Examples** \
-**Summary Table** \
-**References** \
-**License**
-
-# Overview
-Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
-
-# Download
-The latest version of ``BiCrystal`` can be found on github:
-
-https://github.com/tilaskabengele/BiCrystal/tree/stable
-
-**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
-
-# Packages
-`BiCrystal` is a **python 3** program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which are not part of the standard Python packages, should be installed. i.e Install via pip or conda:
-
- pip install crystals
-or
-
- conda install -c conda-forge crystals
-and
-
- pip install shapely
-
-For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
-
- # Files
-
-**bicrystal** - Bash script which runs the python program \
-**cifs/** - Directory with sample cif files \
-**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
-**periodic_table.csv** - Periodic table of elements \
-**program.py** - Python program to be called from bicrystal script
-
-# Installation
-After downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
-
- chmod u+x bicrystal program.py
-
-Next, add this directory to your $PATH variable. In Bash, this is done by adding the following lines to your `.bashrc file`:
-
- vi ~/.bashrc
-
-Add:
-
- export PATH="$/path/to/your/directory/with/bicrysal/:$PATH"
- export PYTHONPATH="${PYTHONPATH}:/path/to/your/directory/with/bicrysal/"
-
-Save, close then source your `.bashrc` file to activate the changes:
-
- source ~/.bashrc
-
-Restart your terminal window to start using `bicrystal`.
-
-# Usage
-BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
-
- bicrystal
-
-The first thing you will be required to do is input your cif file, e.g. graphite.cif:
-
- ***Input cif file***
- graphite.cif
-
-Next, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
-
- ***Rotation parameters***
- Enter m 2
- Enter n 1
- Enter rotation_angle 0
-
-After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
-
- Intializing atoms...
-
-
- Initial TOP atoms..
- Atom No. 1 c [0. 0. 0.5]
- Atom No. 2 c [0.66667 0.33334 0.505 ]
-
- Initial BOTTOM atoms..
- Atom No. 3 c [0. 0. 0.]
- Atom No. 4 c [0.33333 0.66667 0.005 ]
-
- For a good symmetrical structure, always pick atoms such that the zeroeth TOP and BOTTOM atoms align. In this example, that would be Atom No. 1 and Atom No. 3. After picking your zeroeth atoms, a window with a simple 3D will then open.
-
- Select zeroeth TOP atom
- Enter Atom No. 1
-
- Select zeroeth BOTTOM atom
- Enter Atom No. 3
-
-
- 
-
- Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
-
- ********************* SUMMARY REPORT ***********************
-
- Top atoms(rotated) = 14
- Bottom atoms = 14
-
- Total atoms
- = 28
-
- *************************** Done! **************************
-
- Would you like to write Espresso file?[Y/n]
-
- # Examples
-
- Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
-
- xcrysden --pwi graphite28.scf.in
-
- 
-
-Looking from the top view, we can see that for this rotation, a Moire pattern was created. Really neat! This was not apparent from the simple 3D plot because BiCrystal plots cartesian coordinates of the atoms where the top and bottom layer do not necessarily align. Before writing the QUANTUM ESPRESSO file, `BiCrystal` removes symmetrically equivalent atoms and maps back those atoms that fell outside the unit cell due to rotation.
-
-The **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.
-
-# Graphite 364-atom unit cell
-The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-
-# Blue phosphorene 172-atom unit cell
-The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
-
-
-
-# Molybdenun Disulfide 546-atom unit cell
-The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
-
-
-
-# Summary Table
-All the examples in the examples folder can be summarized in the table below:
-
-
-
- # References
- For a detailed analysis of Moire patterns and angles:
-
- **Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_
-
- Crystals package authors:
-
- L. P. René de Cotret, M. R. Otto, M. J. Stern. and B. J. Siwick, An open-source software ecosystem for the interactive exploration of ultrafast electron scattering data, Advanced Structural and Chemical Imaging 4:11 (2018) DOI:10.1186/s40679-018-0060-y.
-
- For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki
-
- # License
- Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
-
-BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-BiCrystal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
From d4de72ee462576b904cfd8474e970338e598f0e0 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:25:56 -0300
Subject: [PATCH 40/87] Delete github-light.css
---
stylesheets/github-light.css | 130 -----------------------------------
1 file changed, 130 deletions(-)
delete mode 100644 stylesheets/github-light.css
diff --git a/stylesheets/github-light.css b/stylesheets/github-light.css
deleted file mode 100644
index 68b86c1..0000000
--- a/stylesheets/github-light.css
+++ /dev/null
@@ -1,130 +0,0 @@
-/*!
- * GitHub Light v0.4.1
- * Copyright (c) 2012 - 2017 GitHub, Inc.
- * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
- */
-
-.pl-c /* comment, punctuation.definition.comment, string.comment */ {
- color: #6a737d;
-}
-
-.pl-c1 /* constant, entity.name.constant, variable.other.constant, variable.language, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header, meta.output */,
-.pl-s .pl-v /* string variable */ {
- color: #005cc5;
-}
-
-.pl-e /* entity */,
-.pl-en /* entity.name */ {
- color: #6f42c1;
-}
-
-.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
-.pl-s .pl-s1 /* string source */ {
- color: #24292e;
-}
-
-.pl-ent /* entity.name.tag, markup.quote */ {
- color: #22863a;
-}
-
-.pl-k /* keyword, storage, storage.type */ {
- color: #d73a49;
-}
-
-.pl-s /* string */,
-.pl-pds /* punctuation.definition.string, source.regexp, string.regexp.character-class */,
-.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
-.pl-sr /* string.regexp */,
-.pl-sr .pl-cce /* string.regexp constant.character.escape */,
-.pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
-.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
- color: #032f62;
-}
-
-.pl-v /* variable */,
-.pl-smw /* sublimelinter.mark.warning */ {
- color: #e36209;
-}
-
-.pl-bu /* invalid.broken, invalid.deprecated, invalid.unimplemented, message.error, brackethighlighter.unmatched, sublimelinter.mark.error */ {
- color: #b31d28;
-}
-
-.pl-ii /* invalid.illegal */ {
- color: #fafbfc;
- background-color: #b31d28;
-}
-
-.pl-c2 /* carriage-return */ {
- color: #fafbfc;
- background-color: #d73a49;
-}
-
-.pl-c2::before /* carriage-return */ {
- content: "^M";
-}
-
-.pl-sr .pl-cce /* string.regexp constant.character.escape */ {
- font-weight: bold;
- color: #22863a;
-}
-
-.pl-ml /* markup.list */ {
- color: #735c0f;
-}
-
-.pl-mh /* markup.heading */,
-.pl-mh .pl-en /* markup.heading entity.name */,
-.pl-ms /* meta.separator */ {
- font-weight: bold;
- color: #005cc5;
-}
-
-.pl-mi /* markup.italic */ {
- font-style: italic;
- color: #24292e;
-}
-
-.pl-mb /* markup.bold */ {
- font-weight: bold;
- color: #24292e;
-}
-
-.pl-md /* markup.deleted, meta.diff.header.from-file, punctuation.definition.deleted */ {
- color: #b31d28;
- background-color: #ffeef0;
-}
-
-.pl-mi1 /* markup.inserted, meta.diff.header.to-file, punctuation.definition.inserted */ {
- color: #22863a;
- background-color: #f0fff4;
-}
-
-.pl-mc /* markup.changed, punctuation.definition.changed */ {
- color: #e36209;
- background-color: #ffebda;
-}
-
-.pl-mi2 /* markup.ignored, markup.untracked */ {
- color: #f6f8fa;
- background-color: #005cc5;
-}
-
-.pl-mdr /* meta.diff.range */ {
- font-weight: bold;
- color: #6f42c1;
-}
-
-.pl-ba /* brackethighlighter.tag, brackethighlighter.curly, brackethighlighter.round, brackethighlighter.square, brackethighlighter.angle, brackethighlighter.quote */ {
- color: #586069;
-}
-
-.pl-sg /* sublimelinter.gutter-mark */ {
- color: #959da5;
-}
-
-.pl-corl /* constant.other.reference.link, string.other.link */ {
- text-decoration: underline;
- color: #032f62;
-}
-
From 6a7408c580162afa57733ad102d69bc6fdc8eaef Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:26:04 -0300
Subject: [PATCH 41/87] Delete normalize.css
---
stylesheets/normalize.css | 424 --------------------------------------
1 file changed, 424 deletions(-)
delete mode 100644 stylesheets/normalize.css
diff --git a/stylesheets/normalize.css b/stylesheets/normalize.css
deleted file mode 100644
index 30366a6..0000000
--- a/stylesheets/normalize.css
+++ /dev/null
@@ -1,424 +0,0 @@
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined for any HTML5 element in IE 8/9.
- * Correct `block` display not defined for `details` or `summary` in IE 10/11
- * and Firefox.
- * Correct `block` display not defined for `main` in IE 11.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9/10.
- * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9/10.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow not hidden in IE 9/10/11.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
- overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- * Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; /* 1 */
- font: inherit; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10/11.
- */
-
-button {
- overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
- line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */ /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9/10/11.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9/10/11.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
- font-weight: bold;
-}
-
-/* Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
From 47d2299c4daf993b06c7150e796e44207ffd24ae Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:26:12 -0300
Subject: [PATCH 42/87] Delete stylesheet.css
---
stylesheets/stylesheet.css | 425 -------------------------------------
1 file changed, 425 deletions(-)
delete mode 100644 stylesheets/stylesheet.css
diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css
deleted file mode 100644
index 3da3485..0000000
--- a/stylesheets/stylesheet.css
+++ /dev/null
@@ -1,425 +0,0 @@
-/*******************************************************************************
-Slate Theme for GitHub Pages
-by Jason Costello, @jsncostello
-*******************************************************************************/
-
-@import url(github-light.css);
-
-/*******************************************************************************
-MeyerWeb Reset
-*******************************************************************************/
-
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td,
-article, aside, canvas, details, embed,
-figure, figcaption, footer, header, hgroup,
-menu, nav, output, ruby, section, summary,
-time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font: inherit;
- vertical-align: baseline;
-}
-
-/* HTML5 display-role reset for older browsers */
-article, aside, details, figcaption, figure,
-footer, header, hgroup, menu, nav, section {
- display: block;
-}
-
-ol, ul {
- list-style: none;
-}
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-/*******************************************************************************
-Theme Styles
-*******************************************************************************/
-
-body {
- box-sizing: border-box;
- color:#373737;
- background: #212121;
- font-size: 16px;
- font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- -webkit-font-smoothing: antialiased;
-}
-
-h1, h2, h3, h4, h5, h6 {
- margin: 10px 0;
- font-weight: 700;
- color:#222222;
- font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
- letter-spacing: -1px;
-}
-
-h1 {
- font-size: 36px;
- font-weight: 700;
-}
-
-h2 {
- padding-bottom: 10px;
- font-size: 32px;
- background: url('../images/bg_hr.png') repeat-x bottom;
-}
-
-h3 {
- font-size: 24px;
-}
-
-h4 {
- font-size: 21px;
-}
-
-h5 {
- font-size: 18px;
-}
-
-h6 {
- font-size: 16px;
-}
-
-p {
- margin: 10px 0 15px 0;
-}
-
-footer p {
- color: #f2f2f2;
-}
-
-a {
- text-decoration: none;
- color: #007edf;
- text-shadow: none;
-
- transition: color 0.5s ease;
- transition: text-shadow 0.5s ease;
- -webkit-transition: color 0.5s ease;
- -webkit-transition: text-shadow 0.5s ease;
- -moz-transition: color 0.5s ease;
- -moz-transition: text-shadow 0.5s ease;
- -o-transition: color 0.5s ease;
- -o-transition: text-shadow 0.5s ease;
- -ms-transition: color 0.5s ease;
- -ms-transition: text-shadow 0.5s ease;
-}
-
-a:hover, a:focus {text-decoration: underline;}
-
-footer a {
- color: #F2F2F2;
- text-decoration: underline;
-}
-
-em {
- font-style: italic;
-}
-
-strong {
- font-weight: bold;
-}
-
-img {
- position: relative;
- margin: 0 auto;
- max-width: 739px;
- padding: 5px;
- margin: 10px 0 10px 0;
- border: 1px solid #ebebeb;
-
- box-shadow: 0 0 5px #ebebeb;
- -webkit-box-shadow: 0 0 5px #ebebeb;
- -moz-box-shadow: 0 0 5px #ebebeb;
- -o-box-shadow: 0 0 5px #ebebeb;
- -ms-box-shadow: 0 0 5px #ebebeb;
-}
-
-p img {
- display: inline;
- margin: 0;
- padding: 0;
- vertical-align: middle;
- text-align: center;
- border: none;
-}
-
-pre, code {
- width: 100%;
- color: #222;
- background-color: #fff;
-
- font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
- font-size: 14px;
-
- border-radius: 2px;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
-}
-
-pre {
- width: 100%;
- padding: 10px;
- box-shadow: 0 0 10px rgba(0,0,0,.1);
- overflow: auto;
-}
-
-code {
- padding: 3px;
- margin: 0 3px;
- box-shadow: 0 0 10px rgba(0,0,0,.1);
-}
-
-pre code {
- display: block;
- box-shadow: none;
-}
-
-blockquote {
- color: #666;
- margin-bottom: 20px;
- padding: 0 0 0 20px;
- border-left: 3px solid #bbb;
-}
-
-
-ul, ol, dl {
- margin-bottom: 15px
-}
-
-ul {
- list-style-position: inside;
- list-style: disc;
- padding-left: 20px;
-}
-
-ol {
- list-style-position: inside;
- list-style: decimal;
- padding-left: 20px;
-}
-
-dl dt {
- font-weight: bold;
-}
-
-dl dd {
- padding-left: 20px;
- font-style: italic;
-}
-
-dl p {
- padding-left: 20px;
- font-style: italic;
-}
-
-hr {
- height: 1px;
- margin-bottom: 5px;
- border: none;
- background: url('../images/bg_hr.png') repeat-x center;
-}
-
-table {
- border: 1px solid #373737;
- margin-bottom: 20px;
- text-align: left;
- }
-
-th {
- font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
- padding: 10px;
- background: #373737;
- color: #fff;
- }
-
-td {
- padding: 10px;
- border: 1px solid #373737;
- }
-
-form {
- background: #f2f2f2;
- padding: 20px;
-}
-
-/*******************************************************************************
-Full-Width Styles
-*******************************************************************************/
-
-.outer {
- width: 100%;
-}
-
-.inner {
- position: relative;
- max-width: 640px;
- padding: 20px 10px;
- margin: 0 auto;
-}
-
-#forkme_banner {
- display: block;
- position: absolute;
- top:0;
- right: 10px;
- z-index: 10;
- padding: 10px 50px 10px 10px;
- color: #fff;
- background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
- font-weight: 700;
- box-shadow: 0 0 10px rgba(0,0,0,.5);
- border-bottom-left-radius: 2px;
- border-bottom-right-radius: 2px;
-}
-
-#header_wrap {
- background: #212121;
- background: -moz-linear-gradient(top, #373737, #212121);
- background: -webkit-linear-gradient(top, #373737, #212121);
- background: -ms-linear-gradient(top, #373737, #212121);
- background: -o-linear-gradient(top, #373737, #212121);
- background: linear-gradient(top, #373737, #212121);
-}
-
-#header_wrap .inner {
- padding: 50px 10px 30px 10px;
-}
-
-#project_title {
- margin: 0;
- color: #fff;
- font-size: 42px;
- font-weight: 700;
- text-shadow: #111 0px 0px 10px;
-}
-
-#project_tagline {
- color: #fff;
- font-size: 24px;
- font-weight: 300;
- background: none;
- text-shadow: #111 0px 0px 10px;
-}
-
-#downloads {
- position: absolute;
- width: 210px;
- z-index: 10;
- bottom: -40px;
- right: 0;
- height: 70px;
- background: url('../images/icon_download.png') no-repeat 0% 90%;
-}
-
-.zip_download_link {
- display: block;
- float: right;
- width: 90px;
- height:70px;
- text-indent: -5000px;
- overflow: hidden;
- background: url(../images/sprite_download.png) no-repeat bottom left;
-}
-
-.tar_download_link {
- display: block;
- float: right;
- width: 90px;
- height:70px;
- text-indent: -5000px;
- overflow: hidden;
- background: url(../images/sprite_download.png) no-repeat bottom right;
- margin-left: 10px;
-}
-
-.zip_download_link:hover {
- background: url(../images/sprite_download.png) no-repeat top left;
-}
-
-.tar_download_link:hover {
- background: url(../images/sprite_download.png) no-repeat top right;
-}
-
-#main_content_wrap {
- background: #f2f2f2;
- border-top: 1px solid #111;
- border-bottom: 1px solid #111;
-}
-
-#main_content {
- padding-top: 40px;
-}
-
-#footer_wrap {
- background: #212121;
-}
-
-
-
-/*******************************************************************************
-Small Device Styles
-*******************************************************************************/
-
-@media screen and (max-width: 480px) {
- body {
- font-size:14px;
- }
-
- #downloads {
- display: none;
- }
-
- .inner {
- min-width: 320px;
- max-width: 480px;
- }
-
- #project_title {
- font-size: 32px;
- }
-
- h1 {
- font-size: 28px;
- }
-
- h2 {
- font-size: 24px;
- }
-
- h3 {
- font-size: 21px;
- }
-
- h4 {
- font-size: 18px;
- }
-
- h5 {
- font-size: 14px;
- }
-
- h6 {
- font-size: 12px;
- }
-
- code, pre {
- min-width: 320px;
- max-width: 480px;
- font-size: 11px;
- }
-
-}
From 69e598bd493f18b1fb42033788dd608494da125d Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:33:01 -0300
Subject: [PATCH 43/87] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 224f01c..fdabda0 100644
--- a/README.md
+++ b/README.md
@@ -27,10 +27,12 @@ https://github.com/tilaskabengele/BiCrystal/tree/stable
# Packages
`BiCrystal` is a **python 3** program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which are not part of the standard Python packages, should be installed. i.e Install via pip or conda:
- pip install crystals
+ pip install crystals
+
or
conda install -c conda-forge crystals
+
and
pip install shapely
@@ -38,7 +40,6 @@ and
For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
# Files
-
**bicrystal** - Bash script which runs the python program \
**cifs/** - Directory with sample cif files \
**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
@@ -122,7 +123,6 @@ After that, you will be required to pick a zeroeth atom from the top and bottom
Would you like to write Espresso file?[Y/n]
# Examples
-
Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
xcrysden --pwi graphite28.scf.in
From b8479785a6fe635d086af9f04c9b03b47eba82cd Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:33:27 -0300
Subject: [PATCH 44/87] Set theme jekyll-theme-dinky
---
_config.yml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 _config.yml
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..9da9a02
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-dinky
\ No newline at end of file
From 61faa650c6159865c730fd900506d9d02349104b Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:36:54 -0300
Subject: [PATCH 45/87] Update README.md
---
README.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index fdabda0..c73a64c 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,7 @@
# BiCrystal
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
-Contents
-==========
+# Contents
**Overview** \
**Download** \
**Packages** \
@@ -82,7 +81,7 @@ Parameter m and n correspond to the scale of the lattice vectors along the x and
***Rotation parameters***
Enter m 2
Enter n 1
- Enter rotation_angle 0
+ Enter rotation_angle 21.79
After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
From 1e9c25b21a783c3f3f83e6dd93846b2c0e1fdbc9 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:37:11 -0300
Subject: [PATCH 46/87] Set theme jekyll-theme-dinky
From 57a0c5a49792c6886eaa2b79365f20705801a158 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:39:31 -0300
Subject: [PATCH 47/87] Update README.md
---
README.md | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index c73a64c..3545151 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,24 @@
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
# Contents
-**Overview** \
-**Download** \
-**Packages** \
-**Files** \
-**Installation** \
-**Usage** \
-**Examples** \
-**Summary Table** \
-**References** \
+**Overview**\\
+
+**Download**\\
+
+**Packages**\\
+
+**Files**\\
+
+**Installation**\\
+
+**Usage**\\
+
+**Examples**\\
+
+**Summary Table**\\
+
+**References**\\
+
**License**
# Overview
From 933a77c998131d36af2ee8fd9d953b12d282f3e5 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:40:06 -0300
Subject: [PATCH 48/87] Set theme jekyll-theme-dinky
From fa115cd28898ee4f988cd8844eb8ff5bbdad98c5 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:41:50 -0300
Subject: [PATCH 49/87] Update README.md
---
README.md | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/README.md b/README.md
index 3545151..8806ae1 100644
--- a/README.md
+++ b/README.md
@@ -2,24 +2,15 @@
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
# Contents
-**Overview**\\
-
-**Download**\\
-
-**Packages**\\
-
-**Files**\\
-
-**Installation**\\
-
-**Usage**\\
-
-**Examples**\\
-
-**Summary Table**\\
-
-**References**\\
-
+**Overview**\
+**Download**\
+**Packages**\
+**Files**\
+**Installation**\
+**Usage**\
+**Examples**\
+**Summary Table**\
+**References**\
**License**
# Overview
From 9365406e304178071b4e145546510bf4ff9e7dc8 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:42:03 -0300
Subject: [PATCH 50/87] Set theme jekyll-theme-dinky
From 7be51a3025cb227615b2935f2cc72c251f3c3f9d Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:43:51 -0300
Subject: [PATCH 51/87] Update README.md
---
README.md | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 8806ae1..0d0895c 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,25 @@
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
# Contents
-**Overview**\
-**Download**\
-**Packages**\
-**Files**\
-**Installation**\
-**Usage**\
-**Examples**\
-**Summary Table**\
-**References**\
+
+**Overview**
+
+**Download**
+
+**Packages**
+
+**Files**
+
+**Installation**
+
+**Usage**
+
+**Examples**
+
+**Summary Table**
+
+**References**
+
**License**
# Overview
From 2ac02cb07512a3f8c6661a9af1dfc940e1934040 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:44:10 -0300
Subject: [PATCH 52/87] Set theme jekyll-theme-dinky
From e8ace00d3eb9cd7b05fa673037c482f45fb2e6c7 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:47:06 -0300
Subject: [PATCH 53/87] Update README.md
---
README.md | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/README.md b/README.md
index 0d0895c..02289f1 100644
--- a/README.md
+++ b/README.md
@@ -2,25 +2,15 @@
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
# Contents
-
**Overview**
-
**Download**
-
**Packages**
-
**Files**
-
**Installation**
-
**Usage**
-
**Examples**
-
**Summary Table**
-
**References**
-
**License**
# Overview
From 587151c4f20595adc76c8fd3c014f271876ffb0f Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:47:25 -0300
Subject: [PATCH 54/87] Set theme jekyll-theme-dinky
From 29faa6c05860b6413a1186c798cd78ae1036da66 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:53:04 -0300
Subject: [PATCH 55/87] Update README.md
---
README.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 02289f1..c73a64c 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,15 @@
``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
# Contents
-**Overview**
-**Download**
-**Packages**
-**Files**
-**Installation**
-**Usage**
-**Examples**
-**Summary Table**
-**References**
+**Overview** \
+**Download** \
+**Packages** \
+**Files** \
+**Installation** \
+**Usage** \
+**Examples** \
+**Summary Table** \
+**References** \
**License**
# Overview
From cb3da10577bab9f04539f40c769a58dd93617c59 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:53:33 -0300
Subject: [PATCH 56/87] Set theme jekyll-theme-dinky
From d15c33b7f58535a050232361a871a57b9b24233e Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:54:54 -0300
Subject: [PATCH 57/87] Set theme jekyll-theme-slate
---
_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_config.yml b/_config.yml
index 9da9a02..c741881 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-dinky
\ No newline at end of file
+theme: jekyll-theme-slate
\ No newline at end of file
From 7c3e936338952884e4935e31ceab9ecb604a00be Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Sun, 26 Jul 2020 15:56:11 -0300
Subject: [PATCH 58/87] Set theme jekyll-theme-dinky
---
_config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_config.yml b/_config.yml
index c741881..9da9a02 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-slate
\ No newline at end of file
+theme: jekyll-theme-dinky
\ No newline at end of file
From b92a6f366a934e4742115a8803ca8b2fb04ab3a8 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:17:26 -0300
Subject: [PATCH 59/87] Update program.py
---
bicrystal/program.py | 215 +++++++++++++++++++++----------------------
1 file changed, 106 insertions(+), 109 deletions(-)
diff --git a/bicrystal/program.py b/bicrystal/program.py
index 2b5a463..a2044c4 100644
--- a/bicrystal/program.py
+++ b/bicrystal/program.py
@@ -1,8 +1,8 @@
-#!/bin/python
+#!/bin/python3
# PROGRAM: BiCRYSTAL
-# VERSION: 1.0.6
+# VERSION: 1.0.7
# DESCRIPTION: This program buildscommensurate and incommensurate crystal structures of layered materials. Current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file.
@@ -31,7 +31,6 @@
from sklearn.neighbors import KNeighborsRegressor
import numpy as np
import decimal
-from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
from matplotlib.collections import PolyCollection
@@ -47,21 +46,21 @@
# Description: Isolates the z-coordinates (fractional) from CRYSTAL and stores them in an array
# Inputs: Python CRYSTAL structure. i.e. don't use a supercell in SEPERATE
# Output: Array with z-coordinates of bottom layer atoms
-
+
def seperate(my_crystal):
- nat = 0
- z_frac = []
+ nat = 0
+ z_frac = []
+
+ for atm in my_crystal:
+ nat = nat + 1
+ z_frac.append(atm.coords_fractional[2])
- for atm in my_crystal:
- nat = nat + 1
- z_frac.append(atm.coords_fractional[2])
+ z_sorted = sorted(z_frac)
+ bottom_z = round(nat/2)
+ answer = z_sorted[0:bottom_z]
- z_sorted = sorted(z_frac)
- bottom_z = round(nat/2)
- answer = z_sorted[0:bottom_z]
-
- return answer
+ return answer
# ***********************************
@@ -109,21 +108,21 @@ def highest(my_crystal):
# Output: True if atom is from bottom layer; false if it isn't
def locate(test_atm,z_bot):
-
- z = []
-
- test_atm = round(test_atm,2)
- for atm in z_bot:
- z.append(round(atm,2))
+ z = []
+
+ test_atm = round(test_atm,2)
+
+ for atm in z_bot:
+ z.append(round(atm,2))
+
+ if test_atm in z:
+ answer = True
+ else:
+ answer = False
- if test_atm in z:
- answer = True
- else:
- answer = False
+ return answer
- return answer
-
#***********************************
# Function name: NEWCELL(MY_CRYSTAL,M,N)
# Description: This function creates lattice vectors of a rotated layer
@@ -131,19 +130,19 @@ def locate(test_atm,z_bot):
# Outputs: supercell lattice vectors new_a; new_b .i.e the c-vector remains unchanged
def newcell(my_crystal,atoms,m,n):
-
- a, b, c = my_crystal.lattice_vectors
- v1 = atoms[0] + (m+n)*a + (m+n)*b
- v2 = np.add(np.add(v1,(m+n)*a),n*b)
- v3 = np.add(np.add(v2,(m+n)*b),m*a)
- v4 = np.subtract(np.subtract(v3,(m+n)*a),n*b)
-
- new_a = v2 - v1
- new_b = v3 - v2
-
+
+ a, b, c = my_crystal.lattice_vectors
+ v1 = atoms[0] + (m+n)*a + (m+n)*b
+ v2 = np.add(np.add(v1,(m+n)*a),n*b)
+ v3 = np.add(np.add(v2,(m+n)*b),m*a)
+ v4 = np.subtract(np.subtract(v3,(m+n)*a),n*b)
+
+ new_a = v2 - v1
+ new_b = v3 - v2
+
# ang to bohr mytiply by 1.8897259886
- return new_a, new_b, v1, v2, v3, v4
+ return new_a, new_b, v1, v2, v3, v4
@@ -183,7 +182,7 @@ def poly(v1,v2,v3,v4):
coords = [(p1), (p2), (p3), (p4)]
ply = Polygon(coords)
-
+
return ply, p1, p2, p3, p4
@@ -214,9 +213,9 @@ def inpoly(atz,ply):
def central(ply):
- center = ply.centroid
+ center = ply.centroid
- return center
+ return center
#***************************************
@@ -226,17 +225,17 @@ def central(ply):
# Output: True if the rotation is correct, False if it isn't
def swaped(layer):
- pos_count = 0
- neg_count = 0
- for atm in layer:
- if atm >= 0:
- pos_count += 1
- else:
- neg_count += 1
- if pos_count > neg_count:
- return True
- else:
- return False
+ pos_count = 0
+ neg_count = 0
+ for atm in layer:
+ if atm >= 0:
+ pos_count += 1
+ else:
+ neg_count += 1
+ if pos_count > neg_count:
+ return True
+ else:
+ return False
#***************************************
@@ -246,10 +245,10 @@ def swaped(layer):
# Output: Number of atoms ---> Integer
def ntype(my_crystal):
- nat = 0
- for atm in my_crystal.chemical_composition:
- nat+=1
- return nat
+ nat = 0
+ for atm in my_crystal.chemical_composition:
+ nat+=1
+ return nat
@@ -260,26 +259,26 @@ def ntype(my_crystal):
# Output: top and bottom atoms ---> np arrays; chemical symbols for top and bottom atoms ---> lists
def bulk(my_crystal):
-
- atoms_bot = []
- atoms_top = []
- atmxyz = []
- ele_bot = []
- ele_top = []
- z_bot = seperate(my_crystal)
- for atm in my_crystal:
- atm_frac = atm.coords_fractional
- atm_cart = atm.coords_cartesian
- atmxyz = atm_cart[0], atm_cart[1], atm_cart[2]
- if locate(atm_frac[2],z_bot) == True:
- atoms_bot.append(atmxyz)
- ELE = str(atm).lower()
- ele_bot.append(ELE)
- else:
- atoms_top.append(atmxyz)
- ELE = str(atm).lower()
- ele_top.append(ELE)
- return np.array(atoms_top), np.array(atoms_bot), ele_top, ele_bot
+
+ atoms_bot = []
+ atoms_top = []
+ atmxyz = []
+ ele_bot = []
+ ele_top = []
+ z_bot = seperate(my_crystal)
+ for atm in my_crystal:
+ atm_frac = atm.coords_fractional
+ atm_cart = atm.coords_cartesian
+ atmxyz = atm_cart[0], atm_cart[1], atm_cart[2]
+ if locate(atm_frac[2],z_bot) == True:
+ atoms_bot.append(atmxyz)
+ ELE = str(atm).lower()
+ ele_bot.append(ELE)
+ else:
+ atoms_top.append(atmxyz)
+ ELE = str(atm).lower()
+ ele_top.append(ELE)
+ return np.array(atoms_top), np.array(atoms_bot), ele_top, ele_bot
@@ -297,7 +296,7 @@ def bulk(my_crystal):
print ('* BiCRYSTAL--', now,'\n\n')
print ('**************************************************************************\n \n')
-# reading csv with elements from workspace
+# reading csv with elements from workspace
# i.e. directory where you installed bicrystal
with open('workspace') as f:
line = f.readline()
@@ -316,19 +315,21 @@ def bulk(my_crystal):
print ('\n***Rotation parameters*** ')
m = int(input('Enter m '))
n = int(input('Enter n '))
-rotation_angle = float(input('Enter rotation_angle '))
-#rotation_angle = -180 + rotation_angle
+#rotation_angle = float(input('Enter rotation angle '))
+
+# lattice parameters
+a, b, c, alpha, beta, gamma = my_crystal.lattice_parameters
#### Initializing top and bottom layers ####
tt_top,tt_bot,elt_top,elt_bot = bulk(my_crystal)
-print ('\n\nIntializing atoms...\n\n')
-
# lattice vectors
a1, a2, a3 = my_crystal.lattice_vectors
uc = a1,a2,a3
uc = np.array(uc)
+print ('\n\nIntializing atoms...\n\n')
+
print ('Initial TOP atoms..')
for i in range(0,len(elt_top)):
s = np.array(tt_top[i])
@@ -350,33 +351,14 @@ def bulk(my_crystal):
# correct array indices for zeroeth atoms
idx1 = zeroeth1-1
idx2 = (zeroeth2-1)-len(elt_top)
-print ('\nZeroeth TOP (angstrom)', elt_top[idx1], tt_top[idx1])
+print ('\nZeroeth TOP (angstrom)', elt_top[idx1], tt_top[idx1])
print ('\nZeroeth BOTTOM (angstrom)', elt_bot[idx2], tt_bot[idx2])
-#idx1 = min(tt_top, key=lambda x: (x[0], -x[1]))
-#idx2 = min(tt_bot, key=lambda x: (x[0], -x[1]))
-#print ('\nZeroeth TOP (angstrom)', elt_top[idx1], tt_top[idx1])
-#print ('\nZeroeth BOTTOM (angstrom)', elt_bot[idx2], tt_bot[idx2])
-
-
# finding the bond length
lengths = pdist(tt_bot, 'euclidean')
bond_distance = round(min(lengths),3)
print ('\nBond distance = ', bond_distance)
-# Rotation matrix
-phi = np.deg2rad(rotation_angle)
-print ('\nRotation angle (radians) = ', phi)
-print ('\nRotation matrix')
-R = np.array([[np.cos(phi), -np.sin(phi), 0], [np.sin(phi), np.cos(phi), 0], [0, 0, 1]])
-#print (' ','{:12.6f}'.format(R[0]))
-#print (' ','{:12.6f}'.format(R[1]))
-#print (' ','{:12.6f}'.format(R[2]))
-print(R[0])
-print(R[1])
-print(R[2])
-
-
# lattice parameters
print ('\nLattice Vectors (Angstrom)')
print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(a1[0],a1[1],a1[2]))
@@ -388,11 +370,24 @@ def bulk(my_crystal):
print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(a2[0]*a2b,a2[1]*a2b,a2[2]*a2b))
print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(a3[0]*a2b,a3[1]*a2b,a3[2]*a2b))
+# rotation angle
+A = np.array([1,0,0])
+B = np.array([np.cos(np.deg2rad(60)),np.sin(np.deg2rad(60)),0])
+V = m*A + n*B
+rotation_angle = np.arccos((np.dot(A,V.T))/(np.linalg.norm(A)*np.linalg.norm(V)))
+rotation_angle = np.rad2deg(rotation_angle)
+
+# Rotation matrix
+theta = np.deg2rad(rotation_angle)
+phi = np.deg2rad(60) - 2*theta
+R = np.array([[np.cos(phi), -np.sin(phi), 0], [np.sin(phi), np.cos(phi), 0], [0, 0, 1]])
+print ('\nRotation angle theta (degrees) = ', rotation_angle)
+print ('\nMoire angle gamma (degrees) = ',np.rad2deg(phi))
print ("\n\nCALCULATING ATOMIC POSITIONS...")
for i in range(1,2):
- print ('\n\nPlease wait...\n\n')
- sys.stdout.flush()
+ print ('\n\nPlease wait...\n\n')
+ sys.stdout.flush()
print ("&control")
print ( " title='crystal',")
@@ -443,12 +438,12 @@ def bulk(my_crystal):
k = 0
for atm in tt1:
u = symb1[k]
- k = k + 1
+ k = k + 1
for i in range(1,(n+m)*15):
tty = atm + i*a2
tt2.append(tty)
symb2.append(u)
-symb_bot = symb1 + symb2
+symb_bot = symb1 + symb2
atoms_bot = list(tt1) + list (tt2)
#atoms_bot = np.array(atoms_bot)
@@ -538,7 +533,7 @@ def bulk(my_crystal):
i = 0
nat_bot=0
for atm in bot_frac:
- print ('{} {:12.6f} {:12.6f} {:12.6f}'.format(symbot[i], atm[0], atm[1], atm[2]))
+ print ('{:2} {:12.6f} {:12.6f} {:12.6f}'.format(symbot[i], atm[0], atm[1], atm[2]))
i+=1
nat_bot+=1
@@ -563,12 +558,12 @@ def bulk(my_crystal):
k = 0
for atm in tt1:
u = symb1[k]
- k = k + 1
+ k = k + 1
for i in range(1,(n+m)*15):
tty = atm + i*a2
tt2.append(tty)
symb2.append(u)
-symb_top = symb1 + symb2
+symb_top = symb1 + symb2
atoms_top = list(tt1) + list (tt2)
#atoms_top = np.array(atoms_top)
@@ -659,7 +654,7 @@ def bulk(my_crystal):
i = 0
nat_top=0
for atm in top_frac:
- print ('{} {:12.6f} {:12.6f} {:12.6f}'.format(symtop[i], atm[0], atm[1], atm[2]))
+ print ('{:2} {:12.6f} {:12.6f} {:12.6f}'.format(symtop[i], atm[0], atm[1], atm[2]))
i+=1
nat_top+=1
@@ -767,8 +762,10 @@ def bulk(my_crystal):
########################## SUMMARY REPORT ###############################
print ("\n********************* SUMMARY REPORT ***********************")
+print ('\nRotation angle (deg) = ', np.round(rotation_angle,3))
+print ('Relative Rotation (deg) = ',np.round(np.rad2deg(phi),3))
print ('\nTop atoms(rotated) = ',len(top_frac))
-print ('Bottom atoms = ',len(bot_frac))
+print ('Bottom atoms = ',len(bot_frac))
print ('\nTotal atoms \n=', len(bot_frac)+len(top_frac))
print ('\n*************************** Done! **************************\n')
From a8dc72b05b2f5cf6765890df423c22833d0d3124 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:37:37 -0300
Subject: [PATCH 60/87] Set theme jekyll-theme-dinky
From 76f4be00a85c729b6eeb18a13f11ae57efa74cbe Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:40:56 -0300
Subject: [PATCH 61/87] Delete _config.yml
---
_config.yml | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 _config.yml
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 9da9a02..0000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-dinky
\ No newline at end of file
From ef19b90ed259290af0a7019ca03ddfeed9f4162f Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:45:01 -0300
Subject: [PATCH 62/87] Update README.md
---
README.md | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index c73a64c..1b9e68c 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
# BiCrystal
-``BiCrystal`` is a **Python 3** program that builds commensurate and incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
+``BiCrystal`` is a Python program that builds incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
-# Contents
+Contents
+==========
**Overview** \
**Download** \
**Packages** \
@@ -19,19 +20,18 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal/tree/stable
+https://github.com/tilaskabengele/BiCrystal/
+
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-`BiCrystal` is a **python 3** program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which are not part of the standard Python packages, should be installed. i.e Install via pip or conda:
-
- pip install crystals
+`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
+ pip install crystals
or
conda install -c conda-forge crystals
-
and
pip install shapely
@@ -48,9 +48,9 @@ For more information on crystals and shapely, visit: https://pypi.org/project/cr
# Installation
After downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
- chmod u+x bicrystal program.py
+ chmod r+x bicrystal program.py
-Next, add this directory to your $PATH variable. In Bash, this is done by adding the following lines to your `.bashrc file`:
+Next, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:
vi ~/.bashrc
@@ -75,13 +75,11 @@ The first thing you will be required to do is input your cif file, e.g. graphite
***Input cif file***
graphite.cif
-Next, enter input parameters m and n, and rotation angle in degrees (_zero if you want both layers unperturbed_).
-Parameter m and n correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1 and rotation angle 21.79 degrees.
+Next, input scaling parameters m and n, which correspond to the scale of the lattice vectors along the x and y directions, respectively. As an example, let's take m = 2, n = 1. Bicrystal caculates the relative rotation angle for the given m and n. In this case, the rotation angle will be 21.79 degrees.
***Rotation parameters***
Enter m 2
Enter n 1
- Enter rotation_angle 21.79
After that, you will be required to pick a zeroeth atom from the top and bottom layer. If we were picking the atoms by hand using a visualization software such as Xcrysden, this would be the atom we start from when creating the new cell vectors.
@@ -110,7 +108,10 @@ After that, you will be required to pick a zeroeth atom from the top and bottom
Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
********************* SUMMARY REPORT ***********************
-
+
+ Rotation angle (deg) = 19.107
+ Relative Rotation (deg) = 21.787
+
Top atoms(rotated) = 14
Bottom atoms = 14
@@ -133,17 +134,17 @@ Looking from the top view, we can see that for this rotation, a Moire pattern wa
The **examples/** folder has over 30 examples of Moire patterns graphite, Molebdenum Disulfide and blue Phosphorene generated from `bicrystal`. Below are some examples.
# Graphite 364-atom unit cell
-The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+The unit cell of graphite with 364 atoms can be generated by using parameters: m = 6, n = 5. Shown below is the top view.

# Blue phosphorene 172-atom unit cell
-The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1, and rotation angle of 44.82 degrees. Shown below is the top view.
+The unit cell of blue phosphorene with 172 atoms can be generated by using parameters: m = 6, n = 1. Shown below is the top view.

# Molybdenun Disulfide 546-atom unit cell
-The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5, and rotation angle of 6.01 degrees. Shown below is the top view.
+The unit cell of MoS2 with 546 atoms atoms can be generated by using parameters: m = 6, n = 5. Shown below is the top view.

From 94b7a892c0a5103104bc85604418a03bd53b2e0a Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:47:12 -0300
Subject: [PATCH 63/87] Set theme jekyll-theme-dinky
---
_config.yml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 _config.yml
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..9da9a02
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-dinky
\ No newline at end of file
From f77c0942b2bd1b27f100d75850ff0ab7d2669a21 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:59:06 -0300
Subject: [PATCH 64/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1b9e68c..46f1d27 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal/
+https://github.com/tilaskabengele/BiCrystal/tree/stable
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
From 28a7b3f16390f14995ce214d312c647e6c49d748 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 14:59:28 -0300
Subject: [PATCH 65/87] Set theme jekyll-theme-dinky
From a6585c3e5f6203eef1329a27efa29c7d18c0683e Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:02:33 -0300
Subject: [PATCH 66/87] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 46f1d27..39b67f9 100644
--- a/README.md
+++ b/README.md
@@ -46,15 +46,15 @@ For more information on crystals and shapely, visit: https://pypi.org/project/cr
**program.py** - Python program to be called from bicrystal script
# Installation
-After downloading the files from the github repository to the directory of your choice (_recommended: /usr/bin/_), make `bicrystal` and `program.py` into executables:
+After downloading the files from the github repository and unzip to the directory of your choice. Next, make `bicrystal` and `program.py` into executables:
- chmod r+x bicrystal program.py
+ chmod u+x bicrystal program.py
-Next, add this directory to your $PATH variable. In Bash, adding the following lines to your `.bashrc file`:
+then add this directory to your $PATH variable. In Bash, this can be done by adding the following lines to your `.bashrc file` (open your ./bashrc file with any text editor of your choosing, e.g. vi, nano, gedit, etc.):
vi ~/.bashrc
-Add:
+Then add:
export PATH="$/path/to/your/directory/with/bicrysal/:$PATH"
export PYTHONPATH="${PYTHONPATH}:/path/to/your/directory/with/bicrysal/"
From 85020430c061bca84c8ddb3f1a393e5a55a21e3b Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:53:38 -0300
Subject: [PATCH 67/87] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 39b67f9..478d95e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# BiCrystal
-``BiCrystal`` is a Python program that builds incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
+``BiCrystal`` is a **Python 3** program that builds incommensurate crystal structures of layered materials. The current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file. The program also provides additional information such as the bond distance between atoms, lattice vectors in Bohr and Angstrom, and a simple 3D plot of each layer.
Contents
==========
@@ -20,7 +20,7 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal/tree/stable
+https://github.com/tilaskabengele/BiCrystal/
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
From dc638f1d84e6d6bb55649cb86bdabc354aeb5d5a Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:55:14 -0300
Subject: [PATCH 68/87] Set theme jekyll-theme-dinky
From 6931ca9fc65e2e5d76911e13febc733b4d3afd9b Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:55:37 -0300
Subject: [PATCH 69/87] Set theme jekyll-theme-dinky
From aec0b32debb5a49b9c3d7db6b9b150cffcc3c3f2 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:58:22 -0300
Subject: [PATCH 70/87] Set theme jekyll-theme-dinky
From 6bce8f7f264c80893408f1f88723611b35a70629 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:58:34 -0300
Subject: [PATCH 71/87] Set theme jekyll-theme-dinky
From 80f955718a0ec2925e9cd2c0766f952e160f2880 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 17:59:50 -0300
Subject: [PATCH 72/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 478d95e..a53b142 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal/
+https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
From b9cdec95ce1cd5c9f56e60b19dca1cb1fd8939c4 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 18:00:08 -0300
Subject: [PATCH 73/87] Set theme jekyll-theme-dinky
From 449800cff7e27515197c4361beafab45f1127cf7 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 18:10:53 -0300
Subject: [PATCH 74/87] Update README.md
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index a53b142..55fc2f8 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@ and
For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
- # Files
+# Files
**bicrystal** - Bash script which runs the python program \
**cifs/** - Directory with sample cif files \
**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
@@ -122,8 +122,8 @@ After that, you will be required to pick a zeroeth atom from the top and bottom
Would you like to write Espresso file?[Y/n]
- # Examples
- Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
+# Examples
+Let's say we saved our output in the example given above as graphite28.scf.in, we can visualize this with Xcrysden.
xcrysden --pwi graphite28.scf.in
@@ -153,7 +153,7 @@ All the examples in the examples folder can be summarized in the table below:

- # References
+# References
For a detailed analysis of Moire patterns and angles:
**Density functional calculations on the intricacies of Moiré patterns on graphite**, J. M. Campanera, G. Savini, I. Suarez-Martinez, and M. I. Heggie, _Phys. Rev. B 75, 235449 – Published 28 June 2007_
@@ -164,7 +164,7 @@ All the examples in the examples folder can be summarized in the table below:
For further reading and related projects, visit **Johnson Group wiki**: http://schooner.chem.dal.ca/wiki/Johnson_Group_Wiki
- # License
+# License
Copyright (c) 2020 Tilas Kabengele, Johnson Chemistry Group, Dalhousie University.
BiCrystal is a free program: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
From 6ac261283c4b56952c4c78e36b0b6d57c9e825f3 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Thu, 6 Aug 2020 18:11:09 -0300
Subject: [PATCH 75/87] Set theme jekyll-theme-dinky
From 391149fc6965a55ce83a7f94bc74cec2b4ab4556 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Wed, 17 Feb 2021 17:53:53 -0400
Subject: [PATCH 76/87] Update program.py
---
bicrystal/program.py | 161 ++++++++++++++++++++++++++++++++-----------
1 file changed, 119 insertions(+), 42 deletions(-)
diff --git a/bicrystal/program.py b/bicrystal/program.py
index a2044c4..b5ced85 100644
--- a/bicrystal/program.py
+++ b/bicrystal/program.py
@@ -2,7 +2,7 @@
# PROGRAM: BiCRYSTAL
-# VERSION: 1.0.7
+# VERSION: 1.0.8
# DESCRIPTION: This program buildscommensurate and incommensurate crystal structures of layered materials. Current version reads CIF files and writes the new structure to a QUANTUM ESPRESSO input file.
@@ -37,6 +37,7 @@
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from matplotlib import path
from datetime import date, datetime
+import time
# FUNCTIONS:
@@ -100,7 +101,6 @@ def highest(my_crystal):
return max(z_cart)
-
#**************************************
# Function name: LOCATE(TEST_ATM,Z_BOT)
# Description: Checks if a given atom is from the bottom or top layer
@@ -123,6 +123,28 @@ def locate(test_atm,z_bot):
return answer
+
+# ***********************************
+# Function Name: INTERLAYER(atm_top,atm_bottom)
+# Description: Finds the interlayer seperation bettwen the layers
+# Inputs: Python crystal
+# Output: Interlayer seperation in bohr
+
+def interlayer(my_crystal):
+
+ atmz = []
+ for atm in my_crystal:
+ atmz.append(atm.coords_cartesian[2])
+
+ z = sorted(atmz)
+ z_bot = z[:len(z)//2]
+ z_top = z[len(z)//2:]
+ seperation = min(z_top) - max(z_bot)
+
+ return seperation*0.529177249
+
+
+
#***********************************
# Function name: NEWCELL(MY_CRYSTAL,M,N)
# Description: This function creates lattice vectors of a rotated layer
@@ -131,14 +153,30 @@ def locate(test_atm,z_bot):
def newcell(my_crystal,atoms,m,n):
- a, b, c = my_crystal.lattice_vectors
- v1 = atoms[0] + (m+n)*a + (m+n)*b
- v2 = np.add(np.add(v1,(m+n)*a),n*b)
- v3 = np.add(np.add(v2,(m+n)*b),m*a)
- v4 = np.subtract(np.subtract(v3,(m+n)*a),n*b)
+# a, b, c = my_crystal.lattice_vectors
+ a1, a2, a3, alpha, beta, gamma = my_crystal.lattice_parameters
+# v1 = atoms[0] + (m+n)*a + (m+n)*b
+# v2 = np.add(np.add(v1,(m+n)*a),n*b)
+# v3 = np.add(np.add(v2,(m+n)*b),m*a)
+# v4 = np.subtract(np.subtract(v3,(m+n)*a),n*b)
+
+ old_a = np.array([0.5*a1*np.sqrt(3), -0.5*a2, 0])
+ old_b = np.array([0, a2, 0])
+
+ v1 = atoms[0] + (m+n)*old_a + (m+n)*old_b
+ v2 = np.add(np.add(v1,(m+n)*old_a),n*old_b)
+ v3 = np.add(np.add(v2,(m+n)*old_b),m*old_a)
+ v4 = np.subtract(np.subtract(v3,(m+n)*old_a),n*old_b)
+
+# old_a = np.array([a1*0.5*np.sqrt(3), -0.5*a2, 0])
+# old_b = np.array([0, a2, 0])
+# old_c = np.array([0, 0, a3])
+
+# new_a = n*old_b - m*old_a
+# new_b = m*old_b - n*old_a
- new_a = v2 - v1
- new_b = v3 - v2
+ new_a = v3 - v2
+ new_b = v2 - v1
# ang to bohr mytiply by 1.8897259886
@@ -320,9 +358,17 @@ def bulk(my_crystal):
# lattice parameters
a, b, c, alpha, beta, gamma = my_crystal.lattice_parameters
+# specify vacuum size in bohr
+#print('\n***Specify z-coordinate in cell parameter***')
+#print ('(Default = ', c*1.8897259886,' Bohr)')
+#vacuum = float(input('Enter z value [Bohr] '))
+
#### Initializing top and bottom layers ####
tt_top,tt_bot,elt_top,elt_bot = bulk(my_crystal)
+# Interlayer seperation #
+#d = interlayer(my_crystal)
+
# lattice vectors
a1, a2, a3 = my_crystal.lattice_vectors
uc = a1,a2,a3
@@ -422,6 +468,10 @@ def bulk(my_crystal):
################### loops for bottom layer ##################
#############################################################
+bt0 = time.time()
+bt1 = time.time()
+
+
tt1 = []
tt2 = []
atoms_bot = []
@@ -447,6 +497,7 @@ def bulk(my_crystal):
atoms_bot = list(tt1) + list (tt2)
#atoms_bot = np.array(atoms_bot)
+elbt1 = time.time() - bt1
### Initializing new unit cell ###
@@ -537,10 +588,13 @@ def bulk(my_crystal):
i+=1
nat_bot+=1
+elbt = time.time() - bt0
+#0.5-(atm[2]*c*1.8897259886)/vacuum
####################### loops for top layer ##################
##############################################################
+tp0 = time.time()
tt1 = []
tt2 = []
@@ -658,7 +712,8 @@ def bulk(my_crystal):
i+=1
nat_top+=1
-
+#0.5+(atm[2]*c*1.8897259886)/vacuum
+eltp = time.time() - tp0
########################################################
############## closing part of scf.in file #############
@@ -667,46 +722,62 @@ def bulk(my_crystal):
print ('\nK_POINTS automatic')
print ('8 8 1 1 1 1')
+#new_a = np.linalg.norm(newa1b)
+old_a = np.array([a*0.5*np.sqrt(3), -0.5*b, 0])
+old_b = np.array([0, b, 0])
+old_c = np.array([0, 0, c])
+
+newa1 = -m*old_a + n*old_b
+newa2 = -m*old_b + n*old_a
+
# cell parameters in bohr
-uc1 = np.around(newa1b*1.8897259886, decimals=8)
-uc2 = np.around(newa2b*1.8897259886, decimals=8)
-uc3 = np.around(a3*1.8897259886, decimals=8)
+uc1 = np.around(newa1b*1.8897259886, decimals=12)
+uc2 = np.around(newa2b*1.8897259886, decimals=12)
+uc3 = np.around(a3*1.8897259886, decimals=12)
uc1 = list(uc1)
uc2 = list(uc2)
uc3 = list(uc3)
#unit_cell = ' '.join([str(elem) for elem in uc])
print ('\nCELL_PARAMETERS bohr')
-print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(uc1[0],uc1[1],uc1[2]))
-print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(uc2[0],uc2[1],uc2[2]))
-print (' ','{:12.6f} {:12.6f} {:12.6f}'.format(uc3[0],uc3[1],uc3[2]))
-
+print (' ','{:17.12f} {:17.12f} {:17.12f}'.format(uc1[0],uc1[1],uc1[2]))
+print (' ','{:17.12f} {:17.12f} {:17.12f}'.format(uc2[0],uc2[1],uc2[2]))
+print (' ','{:17.12f} {:17.12f} {:17.12f}'.format(uc3[0],uc3[1],uc3[2]))
#############################################################
##################### PLOTTING RESULTS ######################
+pt1 = time.time()
## figure settings ##
fig = plt.figure(figsize = (8, 8))
ax = fig.add_subplot(111, projection='3d')
-fig.set_facecolor('black')
-ax.set_facecolor('black')
+fig.set_facecolor('white')
+ax.set_facecolor('white')
ax.grid(False)
-ax.w_xaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
-ax.w_yaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
-ax.w_zaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
+ax.set_xticks([])
+ax.set_yticks([])
+ax.set_zticks([])
+plt.axis('off')
+plt.grid(b=None)
+#ax.w_xaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
+#ax.w_yaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
+#ax.w_zaxis.set_pane_color((0.0, 0.0, 0.0, 0.0))
# Initializing bottom coordinates for new unitcell plotting
coord = [p1b, p2b, p3b, p4b]
coord.append(coord[0])
xb, yb = zip(*coord)
-plt.plot(xb,yb)
+
+# plotting boundary at lowest z position
+zb = lowest(my_crystal)
+plt.plot(xb,yb,zb)
# plotting bottom layer atoms
bot = bot.T
supx,supy,supz = list(bot)
-ax.scatter(supx, supy, supz, s=10*num, c='tab:green', alpha=0.4)
+ax.scatter(supx, supy, supz, s=5*num, c='tab:green', alpha=0.4)
ax.scatter(supx, supy, supz, c='tab:blue')
# Adding bonds to bottom layer
@@ -727,15 +798,18 @@ def bulk(my_crystal):
# Initializing TOP coordinates for new unitcell plotting
-#coord = [p1t, p2t, p3t, p4t]
-#coord.append(coord[0])
-#xt, yt = zip(*coord)
-#plt.plot(xt,yt)
+coord = [p1t, p2t, p3t, p4t]
+coord.append(coord[0])
+xt, yt = zip(*coord)
+
+# plotting the boundary at hiest z position
+zt = highest(my_crystal)
+plt.plot(xt,yt,zt)
# plotting TOP layer atoms
top = top.T
supx,supy,supz = list(top)
-ax.scatter(supx, supy, supz, s=10*num, c='tab:red', alpha=0.4)
+ax.scatter(supx, supy, supz, s=5*num, c='tab:red', alpha=0.4)
ax.scatter(supx, supy, supz, c='tab:blue')
# Adding bonds to TOP layer
@@ -758,23 +832,26 @@ def bulk(my_crystal):
plt.show()
+elplt = time.time() - pt1
+
+j2 = 90 + np.rad2deg(phi/2)
+mk = 1/(2*(np.abs(np.sin((phi/2)))))
########################## SUMMARY REPORT ###############################
print ("\n********************* SUMMARY REPORT ***********************")
-print ('\nRotation angle (deg) = ', np.round(rotation_angle,3))
-print ('Relative Rotation (deg) = ',np.round(np.rad2deg(phi),3))
+#print ('\nRotation angle (deg) = ', np.round(rotation_angle,3))
+#print ('Relative Rotation (deg) = ',np.round(np.rad2deg(phi),3))
+print ('\nHermann moire rotation = ', j2)
+print ('Hermann moire constant = ', mk)
print ('\nTop atoms(rotated) = ',len(top_frac))
print ('Bottom atoms = ',len(bot_frac))
print ('\nTotal atoms \n=', len(bot_frac)+len(top_frac))
-print ('\n*************************** Done! **************************\n')
-
-
-
-
-
-
-
-
-
-
+#print ('\n Gamma = ', j2 + np.round(rotation_angle,3))
+#print ( '\n lattice vectors = ',1.8897259886*a, 1.8897259886*b, 1.8897259886*c)
+#print ('\n Erin method lattice vectors = ',1.8897259886*old_a,1.8897259886*old_b)
+#print ('time for replication', elbt1)
+#print ('time for plotting', elplt)
+#print ('\ntotal time top layer',eltp)
+#print ('total time bottom layer',elbt)
+print ('\n*************************** Done!! **************************\n')
From abd3a63f88c7c4f454a6181909dc967137b3e8b9 Mon Sep 17 00:00:00 2001
From: Alan Bidart
Date: Tue, 18 Oct 2022 17:10:05 -0400
Subject: [PATCH 77/87] add poetry package management
---
.gitignore | 3 +++
pyproject.toml | 22 ++++++++++++++++++++++
2 files changed, 25 insertions(+)
create mode 100644 .gitignore
create mode 100644 pyproject.toml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ec43cfa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/bicrystal/outfile
+
+/bicrystal/workspace
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..2f6d34e
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,22 @@
+[tool.poetry]
+name = "bicrystal"
+version = "0.1.0"
+description = ""
+authors = ["Tilas Kabengele "]
+readme = "README.md"
+
+[tool.poetry.dependencies]
+python = "^3.8"
+pycifrw = "4.4.2"
+crystals = "^1.6.0"
+shapely = "^1.8.5.post1"
+pandas = "^1.5.0"
+scipy = "^1.9.2"
+scikit-learn = "^1.1.2"
+matplotlib = "^3.6.1"
+
+
+[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
+
From fd503013b48a498d1b4ea289435e20b40e78ce6c Mon Sep 17 00:00:00 2001
From: Alan Bidart
Date: Tue, 18 Oct 2022 17:10:47 -0400
Subject: [PATCH 78/87] add lockfile
---
poetry.lock | 858 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 858 insertions(+)
create mode 100644 poetry.lock
diff --git a/poetry.lock b/poetry.lock
new file mode 100644
index 0000000..ab6479c
--- /dev/null
+++ b/poetry.lock
@@ -0,0 +1,858 @@
+[[package]]
+name = "certifi"
+version = "2022.9.24"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "charset-normalizer"
+version = "2.1.1"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
+optional = false
+python-versions = ">=3.6.0"
+
+[package.extras]
+unicode-backport = ["unicodedata2"]
+
+[[package]]
+name = "contourpy"
+version = "1.0.5"
+description = "Python library for calculating contours of 2D quadrilateral grids"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+numpy = ">=1.16"
+
+[package.extras]
+bokeh = ["bokeh", "selenium"]
+docs = ["docutils (<0.18)", "sphinx", "sphinx-rtd-theme"]
+test = ["Pillow", "flake8", "isort", "matplotlib", "pytest"]
+test-minimal = ["pytest"]
+test-no-codebase = ["Pillow", "matplotlib", "pytest"]
+
+[[package]]
+name = "crystals"
+version = "1.6.0"
+description = "Data structures for crystallography"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+numpy = ">=1.20,<2"
+pycifrw = ">=4.4.1,<5"
+requests = ">=2,<3"
+spglib = ">=1.15,<2"
+
+[[package]]
+name = "cycler"
+version = "0.11.0"
+description = "Composable style cycles"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "fonttools"
+version = "4.37.4"
+description = "Tools to manipulate font files"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[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 = "idna"
+version = "3.4"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
+name = "joblib"
+version = "1.2.0"
+description = "Lightweight pipelining with Python functions"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[[package]]
+name = "kiwisolver"
+version = "1.4.4"
+description = "A fast implementation of the Cassowary constraint solver"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[[package]]
+name = "matplotlib"
+version = "3.6.1"
+description = "Python plotting package"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[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"
+setuptools_scm = ">=7"
+
+[[package]]
+name = "numpy"
+version = "1.23.4"
+description = "NumPy is the fundamental package for array computing with Python."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[[package]]
+name = "packaging"
+version = "21.3"
+description = "Core utilities for Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
+
+[[package]]
+name = "pandas"
+version = "1.5.0"
+description = "Powerful data structures for data analysis, time series, and statistics"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
+ {version = ">=1.20.3", markers = "python_version < \"3.10\""},
+]
+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.2.0"
+description = "Python Imaging Library (Fork)"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "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 = "pycifrw"
+version = "4.4.2"
+description = "CIF/STAR file support for Python"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[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"
+
+[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"
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "pytz"
+version = "2022.5"
+description = "World timezone definitions, modern and historical"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "requests"
+version = "2.28.1"
+description = "Python HTTP for Humans."
+category = "main"
+optional = false
+python-versions = ">=3.7, <4"
+
+[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 = "scikit-learn"
+version = "1.1.2"
+description = "A set of python modules for machine learning and data mining"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[package.dependencies]
+joblib = ">=1.0.0"
+numpy = ">=1.17.3"
+scipy = ">=1.3.2"
+threadpoolctl = ">=2.0.0"
+
+[package.extras]
+benchmark = ["matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
+docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
+examples = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
+tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.2)", "mypy (>=0.961)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pyamg (>=4.0.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.16.2)"]
+
+[[package]]
+name = "scipy"
+version = "1.9.2"
+description = "Fundamental algorithms for scientific computing in Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+
+[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.5.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[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)", "mock", "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-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 = "setuptools-scm"
+version = "7.0.5"
+description = "the blessed package to manage your versions by scm tags"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+packaging = ">=20.0"
+setuptools = "*"
+tomli = ">=1.0.0"
+typing-extensions = "*"
+
+[package.extras]
+test = ["pytest (>=6.2)", "virtualenv (>20)"]
+toml = ["setuptools (>=42)"]
+
+[[package]]
+name = "shapely"
+version = "1.8.5.post1"
+description = "Geometric objects, predicates, and operations"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+all = ["numpy", "pytest", "pytest-cov"]
+test = ["pytest", "pytest-cov"]
+vectorized = ["numpy"]
+
+[[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.*"
+
+[[package]]
+name = "spglib"
+version = "1.16.5"
+description = "This is the spglib module."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+numpy = "*"
+
+[[package]]
+name = "threadpoolctl"
+version = "3.1.0"
+description = "threadpoolctl"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[[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"
+
+[[package]]
+name = "urllib3"
+version = "1.26.12"
+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.*, <4"
+
+[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)"]
+
+[metadata]
+lock-version = "1.1"
+python-versions = "^3.8"
+content-hash = "4bbf17f45a03a46ecaad52832e2311cb1c902b2517c66984b63b45048df94a9b"
+
+[metadata.files]
+certifi = [
+ {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"},
+ {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"},
+]
+charset-normalizer = [
+ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
+ {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
+]
+contourpy = [
+ {file = "contourpy-1.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:87121b9428ac568fb84fae4af5e7852fc34f02eadc4e3e91f6c8989327692186"},
+ {file = "contourpy-1.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1fb782982c42cee667b892a0b0c52a9f6c7ecf1da5c5f4345845f04eaa862f93"},
+ {file = "contourpy-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:689d7d2a840619915d0abd1ecc6e399fee202f8ad315acda2807f4ca420d0802"},
+ {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d88814befbd1433152c5f6dd536905149ba028d795a22555b149ae0a36024d9e"},
+ {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df65f4b2b4e74977f0336bef12a88051ab24e6a16873cd9249f34d67cb3e345d"},
+ {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6b4c0c723664f65c2a47c8cb6ebbf660b0b2e2d936adf2e8503d4e93359465"},
+ {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bcc98d397c3dea45d5b262029564b29cb8e945f2607a38bee6163694c0a8b4ef"},
+ {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2bf5c846c257578b03d498b20f54f53551616a507d8e5463511c58bb58e9a9cf"},
+ {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdacddb18d55ffec42d1907079cdc04ec4fa8a990cdf5b9d9fe67d281fc0d12e"},
+ {file = "contourpy-1.0.5-cp310-cp310-win32.whl", hash = "sha256:434942fa2f9019b9ae525fb752dc523800c49a1a28fbd6d9240b0fa959573dcc"},
+ {file = "contourpy-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:3b3082ade8849130203d461b98c2a061b382c46074b43b4edd5cefd81af92b8a"},
+ {file = "contourpy-1.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:057114f698ffb9e54657e8fda6802e2f5c8fad609845cf6afaf31590ef6a33c0"},
+ {file = "contourpy-1.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:218722a29c5c26677d37c44f5f8a372daf6f07870aad793a97d47eb6ad6b3290"},
+ {file = "contourpy-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c02e22cf09996194bcb3a4784099975cf527d5c29caf759abadf29ebdb2fe27"},
+ {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0d5ee865b5fd16bf62d72122aadcc90aab296c30c1adb0a32b4b66bd843163e"},
+ {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45822b0a2a452327ab4f95efe368d234d5294bbf89a99968be27c7938a21108"},
+ {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dca5be83a6dfaf933a46e3bc2b9f2685e5ec61b22f6a38ad740aac9c16e9a0ff"},
+ {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c3f2f6b898a40207843ae01970e57e33d22a26b22f23c6a5e07b4716751085f"},
+ {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c2b4eab7c12f9cb460509bc34a3b086f9802f0dba27c89a63df4123819ad64af"},
+ {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09ed9b63f4df8a7591b7a4a26c1ad066dcaafda1f846250fdcb534074a411692"},
+ {file = "contourpy-1.0.5-cp311-cp311-win32.whl", hash = "sha256:f670686d99c867d0f24b28ce8c6f02429c6eef5e2674aab287850d0ee2d20437"},
+ {file = "contourpy-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:c51568e94f7f232296de30002f2a50f77a7bd346673da3e4f2aaf9d2b833f2e5"},
+ {file = "contourpy-1.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c9e99aac7b430f6a9f15eebf058c742097cea3369f23a2bfc5e64d374b67e3a"},
+ {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3210d93ad2af742b6a96cf39792f7181822edbb8fe11c3ef29d1583fe637a8d8"},
+ {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128bd7acf569f8443ad5b2227f30ac909e4f5399ed221727eeacf0c6476187e6"},
+ {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:813c2944e940ef8dccea71305bacc942d4b193a021140874b3e58933ec44f5b6"},
+ {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a74afd8d560eaafe0d9e3e1db8c06081282a05ca4de00ee416195085a79d7d3d"},
+ {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d0ad9a85f208473b1f3613c45756c7aa6fcc288266a8c7b873f896aaf741b6b"},
+ {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:60f37acd4e4227c5a29f737d9a85ca3145c529a8dd4bf70af7f0637c61b49222"},
+ {file = "contourpy-1.0.5-cp37-cp37m-win32.whl", hash = "sha256:b50e481a4317a8efcfffcfddcd4c9b36eacba440440e70cbe0256aeb6fd6abae"},
+ {file = "contourpy-1.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:0395ae71164bfeb2dedd136e03c71a2718a5aa9873a46f518f4133be0d63e1d2"},
+ {file = "contourpy-1.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3ca40d7844b391d90b864c6a6d1bb6b88b09035fb4d866d64d43c4d26fb0ab64"},
+ {file = "contourpy-1.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3109fa601d2a448cec4643abd3a31f972bf05b7c2f2e83df9d3429878f8c10ae"},
+ {file = "contourpy-1.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:06c4d1dde5ee4f909a8a95ba1eb04040c6c26946b4f3b5beaf10d45f14e940ee"},
+ {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f54dcc9bb9390fd0636301ead134d46d5229fe86da0db4d974c0fda349f560e"},
+ {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46b8e24813e2fb5a3e598c1f8b9ae403e1438cb846a80cc2b33cddf19dddd7f2"},
+ {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:061e1f066c419ffe25b615a1df031b4832ea1d7f2676937e69e8e00e24512005"},
+ {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:19ea64fa0cf389d2ebc10974616acfa1fdecbd73d1fd9c72215b782f3c40f561"},
+ {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dfe924e5a63861c82332a12adeeab955dc8c8009ddbbd80cc2fcca049ff89a49"},
+ {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bed3a2a823a041e8d249b1a7ec132933e1505299329b5cfe1b2b5ec689ec7675"},
+ {file = "contourpy-1.0.5-cp38-cp38-win32.whl", hash = "sha256:0389349875424aa8c5e61f757e894687916bc4e9616cc6afcbd8051aa2428952"},
+ {file = "contourpy-1.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:2b5e334330d82866923015b455260173cb3b9e3b4e297052d758abd262031289"},
+ {file = "contourpy-1.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:def9a01b73c9e27d70ea03b381fb3e7aadfac1f398dbd63751313c3a46747ef5"},
+ {file = "contourpy-1.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:59c827e536bb5e3ef58e06da0faba61fd89a14f30b68bcfeca41f43ca83a1942"},
+ {file = "contourpy-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f05d311c937da03b0cd26ac3e14cb991f6ff8fc94f98b3df9713537817539795"},
+ {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970a4be7ec84ccda7c27cb4ae74930bbbd477bc8d849ed55ea798084dd5fca8c"},
+ {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f7672148f8fca48e4efc16aba24a7455b40c22d4f8abe42475dec6a12b0bb9a"},
+ {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba62b7c21a33e72dd8adab2b92dd5610d8527f0b2ac28a8e0770e71b21a13f9"},
+ {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:dd084459ecdb224e617e4ab3f1d5ebe4d1c48facb41f24952b76aa6ba9712bb0"},
+ {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c5158616ab39d34b76c50f40c81552ee180598f7825dc7a66fd187d29958820f"},
+ {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f856652f9b533c6cd2b9ad6836a7fc0e43917d7ff15be46c5baf1350f8cdc5d9"},
+ {file = "contourpy-1.0.5-cp39-cp39-win32.whl", hash = "sha256:f1cc623fd6855b25da52b3275e0c9e51711b86a9dccc75f8c9ab4432fd8e42c7"},
+ {file = "contourpy-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:e67dcaa34dcd908fcccbf49194211d847c731b6ebaac661c1c889f1bf6af1e44"},
+ {file = "contourpy-1.0.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfd634cb9685161b2a51f73a7fc4736fd0d67a56632d52319317afaa27f08243"},
+ {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79908b9d02b1d6c1c71ff3b7ad127f3f82e14a8e091ab44b3c7e34b649fea733"},
+ {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4963cf08f4320d98ae72ec7694291b8ab85cb7da3b0cd824bc32701bc992edf"},
+ {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cfc067ddde78b76dcbc9684d82688b7d3c5158fa2254a085f9bcb9586c1e2d8"},
+ {file = "contourpy-1.0.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9939796abcadb2810a63dfb26ff8ca4595fe7dd70a3ceae7f607a2639b714307"},
+ {file = "contourpy-1.0.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d8150579bf30cdf896906baf256aa200cd50dbe6e565c17d6fd3d678e21ff5de"},
+ {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed9c91bf4ce614efed5388c3f989a7cfe08728ab871d995a486ea74ff88993db"},
+ {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46a04588ceb7cf132568e0e564a854627ef87a1ed3bf536234540a79ced44b0"},
+ {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b85553699862c09937a7a5ea14ee6229087971a7d51ae97d5f4b407f571a2c17"},
+ {file = "contourpy-1.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a8071e351b50827ad976b92ed91845fb614ac67a3c41109b24f3d8bd3afada"},
+ {file = "contourpy-1.0.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fb0458d74726937ead9e2effc91144aea5a58ecee9754242f8539a782bed685a"},
+ {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f89f0608a5aa8142ed0e53957916623791a88c7f5e5f07ae530c328beeb888f"},
+ {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce763369e646e59e4ca2c09735cd1bdd3048d909ad5f2bc116e83166a9352f3c"},
+ {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c16fa267740d67883899e054cccb4279e002f3f4872873b752c1ba15045ff49"},
+ {file = "contourpy-1.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a30e95274f5c0e007ccc759ec258aa5708c534ec058f153ee25ac700a2f1438b"},
+ {file = "contourpy-1.0.5.tar.gz", hash = "sha256:896631cd40222aef3697e4e51177d14c3709fda49d30983269d584f034acc8a4"},
+]
+crystals = [
+ {file = "crystals-1.6.0-py3-none-any.whl", hash = "sha256:79c1ebfef788e12e05a4121ba1f381b448b43aba54735d81490150a0592f3f52"},
+ {file = "crystals-1.6.0.tar.gz", hash = "sha256:1f289e22c3b1efba82bcbc9829a170cd702921dc8747186b0b755b5f4846785e"},
+]
+cycler = [
+ {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
+ {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
+]
+fonttools = [
+ {file = "fonttools-4.37.4-py3-none-any.whl", hash = "sha256:afae1b39555f9c3f0ad1f0f1daf678e5ad157e38c8842ecb567951bf1a9b9fd7"},
+ {file = "fonttools-4.37.4.zip", hash = "sha256:86918c150c6412798e15a0de6c3e0d061ddefddd00f97b4f7b43dfa867ad315e"},
+]
+idna = [
+ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
+ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
+]
+joblib = [
+ {file = "joblib-1.2.0-py3-none-any.whl", hash = "sha256:091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385"},
+ {file = "joblib-1.2.0.tar.gz", hash = "sha256:e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018"},
+]
+kiwisolver = [
+ {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"},
+]
+matplotlib = [
+ {file = "matplotlib-3.6.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:7730e60e751cfcfe7fcb223cf03c0b979e9a064c239783ad37929d340a364cef"},
+ {file = "matplotlib-3.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9dd40505ccc526acaf9a5db1b3029e237c64b58f1249983b28a291c2d6a1d0fa"},
+ {file = "matplotlib-3.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:85948b303534b69fd771126764cf883fde2af9b003eb5778cb60f3b46f93d3f6"},
+ {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71eced071825005011cdc64efbae2e2c76b8209c18aa487dedf69796fe4b1e40"},
+ {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:220314c2d6b9ca11570d7cd4b841c9f3137546f188336003b9fb8def4dcb804d"},
+ {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cc5d726d4d42865f909c5208a7841109d76584950dd0587b01a77cc279d4ab7"},
+ {file = "matplotlib-3.6.1-cp310-cp310-win32.whl", hash = "sha256:183bf3ac6a6023ee590aa4b677f391ceed65ec0d6b930901a8483c267bd12995"},
+ {file = "matplotlib-3.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:a68b91ac7e6bb26100a540a033f54c95fe06d9c0aa51312c2a52d07d1bde78f4"},
+ {file = "matplotlib-3.6.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:4648f0d79a87bf50ee740058305c91091ee5e1fbb71a7d2f5fe6707bfe328d1c"},
+ {file = "matplotlib-3.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9403764017d20ff570f7ce973a8b9637f08a6109118f4e0ce6c7493d8849a0d3"},
+ {file = "matplotlib-3.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4c8b5a243dd29d50289d694e931bd6cb6ae0b5bd654d12c647543d63862540c"},
+ {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1effccef0cea2d4da9feeed22079adf6786f92c800a7d0d2ef2104318a1c66c"},
+ {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dc25473319afabe49150267e54648ac559c33b0fc2a80c8caecfbbc2948a820"},
+ {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47cb088bbce82ae9fc2edf3c25e56a5c6142ce2553fea2b781679f960a70c207"},
+ {file = "matplotlib-3.6.1-cp311-cp311-win32.whl", hash = "sha256:4d3b0e0a4611bd22065bbf47e9b2f689ac9e575bcb850a9f0ae2bbed75cab956"},
+ {file = "matplotlib-3.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:e3c116e779fbbf421a9e4d3060db259a9bb486d98f4e3c5a0877c599bd173582"},
+ {file = "matplotlib-3.6.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:565f514dec81a41cbed10eb6011501879695087fc2787fb89423a466508abbbd"},
+ {file = "matplotlib-3.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:05e86446562063d6186ff6d700118c0dbd5dccc403a6187351ee526c48878f10"},
+ {file = "matplotlib-3.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8245e85fd793f58edf29b8a9e3be47e8ecf76ea1a1e8240545f2746181ca5787"},
+ {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e2c75d5d1ff6b7ef9870360bfa23bea076b8dc0945a60d19453d7619ed9ea8f"},
+ {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c9756a8e69f6e1f76d47eb42132175b6814da1fbeae0545304c6d0fc2aae252a"},
+ {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f5788168da2661b42f7468063b725cc73fdbeeb80f2704cb2d8c415e9a57c50"},
+ {file = "matplotlib-3.6.1-cp38-cp38-win32.whl", hash = "sha256:0bab7564aafd5902128d54b68dca04f5755413fb6b502100bb0235a545882c48"},
+ {file = "matplotlib-3.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3c53486278a0629fd892783271dc994b962fba8dfe207445d039e14f1928ea46"},
+ {file = "matplotlib-3.6.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:27337bcb38d5db7430c14f350924542d75416ec1546d5d9d9f39b362b71db3fb"},
+ {file = "matplotlib-3.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fad858519bd6d52dbfeebdbe04d00dd8e932ed436f1c535e61bcc970a96c11e4"},
+ {file = "matplotlib-3.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4a3d903588b519b38ed085d0ae762a1dcd4b70164617292175cfd91b90d6c415"},
+ {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bdbd37d0a41e025879863fe9b17bab15c0421313bc33e77e5e1aa54215c9c5"},
+ {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e632f66218811d4cf8b7a2a649e25ec15406c3c498f72d19e2bcf8377f38445d"},
+ {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ddd58324dc9a77e2e56d7b7aea7dbd0575b6f7cd1333c3ca9d388ac70978344"},
+ {file = "matplotlib-3.6.1-cp39-cp39-win32.whl", hash = "sha256:12ab21d0cad122f5b23688d453a0280676e7c42f634f0dbd093d15d42d142b1f"},
+ {file = "matplotlib-3.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:563896ba269324872ace436a57775dcc8322678a9496b28a8c25cdafa5ec2b92"},
+ {file = "matplotlib-3.6.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:52935b7d4ccbf0dbc9cf454dbb10ca99c11cbe8da9467596b96e5e21fd4dfc5c"},
+ {file = "matplotlib-3.6.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87027ff7b2edeb14476900261ef04d4beae949e1dfa0a3eb3ad6a6efbf9d0e1d"},
+ {file = "matplotlib-3.6.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4de03085afb3b80fab341afaf8e60dfe06ce439b6dfed55d657cf34a7bc3c40"},
+ {file = "matplotlib-3.6.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b53387d4e59432ff221540a4ffb5ee9669c69417805e4faf0148a00d701c61f9"},
+ {file = "matplotlib-3.6.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:02561141c434154f7bae8e5449909d152367cb40aa57bfb2a27f2748b9c5f95f"},
+ {file = "matplotlib-3.6.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0161ebf87518ecfe0980c942d5f0d5df0e080c1746ebaab2027a969967014b7"},
+ {file = "matplotlib-3.6.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2469f57e4c5cc0e85eddc7b30995ea9c404a78c0b1856da75d1a5887156ca350"},
+ {file = "matplotlib-3.6.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5f97141e05baf160c3ec125f06ceb2a44c9bb62f42fcb8ee1c05313c73e99432"},
+ {file = "matplotlib-3.6.1.tar.gz", hash = "sha256:e2d1b7225666f7e1bcc94c0bc9c587a82e3e8691da4757e357e5c2515222ee37"},
+]
+numpy = [
+ {file = "numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2"},
+ {file = "numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f"},
+ {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71"},
+ {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3"},
+ {file = "numpy-1.23.4-cp310-cp310-win32.whl", hash = "sha256:2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd"},
+ {file = "numpy-1.23.4-cp310-cp310-win_amd64.whl", hash = "sha256:d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329"},
+ {file = "numpy-1.23.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db"},
+ {file = "numpy-1.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f"},
+ {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0"},
+ {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488"},
+ {file = "numpy-1.23.4-cp311-cp311-win32.whl", hash = "sha256:5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79"},
+ {file = "numpy-1.23.4-cp311-cp311-win_amd64.whl", hash = "sha256:7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d"},
+ {file = "numpy-1.23.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5"},
+ {file = "numpy-1.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6"},
+ {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f"},
+ {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68"},
+ {file = "numpy-1.23.4-cp38-cp38-win32.whl", hash = "sha256:dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba"},
+ {file = "numpy-1.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8"},
+ {file = "numpy-1.23.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894"},
+ {file = "numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7"},
+ {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735"},
+ {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0"},
+ {file = "numpy-1.23.4-cp39-cp39-win32.whl", hash = "sha256:f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef"},
+ {file = "numpy-1.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e"},
+ {file = "numpy-1.23.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911"},
+ {file = "numpy-1.23.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810"},
+ {file = "numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962"},
+ {file = "numpy-1.23.4.tar.gz", hash = "sha256:ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c"},
+]
+packaging = [
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
+]
+pandas = [
+ {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0d8d7433d19bfa33f11c92ad9997f15a902bda4f5ad3a4814a21d2e910894484"},
+ {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cc47f2ebaa20ef96ae72ee082f9e101b3dfbf74f0e62c7a12c0b075a683f03c"},
+ {file = "pandas-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e8e5edf97d8793f51d258c07c629bd49d271d536ce15d66ac00ceda5c150eb3"},
+ {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41aec9f87455306496d4486df07c1b98c15569c714be2dd552a6124cd9fda88f"},
+ {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c76f1d104844c5360c21d2ef0e1a8b2ccf8b8ebb40788475e255b9462e32b2be"},
+ {file = "pandas-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:1642fc6138b4e45d57a12c1b464a01a6d868c0148996af23f72dde8d12486bbc"},
+ {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:171cef540bfcec52257077816a4dbbac152acdb8236ba11d3196ae02bf0959d8"},
+ {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a68a9b9754efff364b0c5ee5b0f18e15ca640c01afe605d12ba8b239ca304d6b"},
+ {file = "pandas-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:86d87279ebc5bc20848b4ceb619073490037323f80f515e0ec891c80abad958a"},
+ {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:207d63ac851e60ec57458814613ef4b3b6a5e9f0b33c57623ba2bf8126c311f8"},
+ {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e252a9e49b233ff96e2815c67c29702ac3a062098d80a170c506dff3470fd060"},
+ {file = "pandas-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:de34636e2dc04e8ac2136a8d3c2051fd56ebe9fd6cd185581259330649e73ca9"},
+ {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1d34b1f43d9e3f4aea056ba251f6e9b143055ebe101ed04c847b41bb0bb4a989"},
+ {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b82ccc7b093e0a93f8dffd97a542646a3e026817140e2c01266aaef5fdde11b"},
+ {file = "pandas-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e30a31039574d96f3d683df34ccb50bb435426ad65793e42a613786901f6761"},
+ {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62e61003411382e20d7c2aec1ee8d7c86c8b9cf46290993dd8a0a3be44daeb38"},
+ {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc987f7717e53d372f586323fff441263204128a1ead053c1b98d7288f836ac9"},
+ {file = "pandas-1.5.0-cp38-cp38-win32.whl", hash = "sha256:e178ce2d7e3b934cf8d01dc2d48d04d67cb0abfaffdcc8aa6271fd5a436f39c8"},
+ {file = "pandas-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:33a9d9e21ab2d91e2ab6e83598419ea6a664efd4c639606b299aae8097c1c94f"},
+ {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:73844e247a7b7dac2daa9df7339ecf1fcf1dfb8cbfd11e3ffe9819ae6c31c515"},
+ {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9c5049333c5bebf993033f4bf807d163e30e8fada06e1da7fa9db86e2392009"},
+ {file = "pandas-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85a516a7f6723ca1528f03f7851fa8d0360d1d6121cf15128b290cf79b8a7f6a"},
+ {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:947ed9f896ee61adbe61829a7ae1ade493c5a28c66366ec1de85c0642009faac"},
+ {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7f38d91f21937fe2bec9449570d7bf36ad7136227ef43b321194ec249e2149d"},
+ {file = "pandas-1.5.0-cp39-cp39-win32.whl", hash = "sha256:2504c032f221ef9e4a289f5e46a42b76f5e087ecb67d62e342ccbba95a32a488"},
+ {file = "pandas-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a4fc04838615bf0a8d3a03ed68197f358054f0df61f390bcc64fbe39e3d71ec"},
+ {file = "pandas-1.5.0.tar.gz", hash = "sha256:3ee61b881d2f64dd90c356eb4a4a4de75376586cd3c9341c6c0fcaae18d52977"},
+]
+pillow = [
+ {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"},
+ {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"},
+ {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"},
+ {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"},
+ {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"},
+ {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"},
+ {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"},
+ {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"},
+ {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"},
+ {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"},
+ {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"},
+ {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"},
+ {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"},
+ {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"},
+ {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"},
+ {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"},
+ {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"},
+ {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"},
+ {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"},
+ {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"},
+ {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"},
+ {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"},
+ {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"},
+ {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"},
+]
+pycifrw = [
+ {file = "PyCifRW-4.4.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:ebbb298655b291292feb2c5594c815de0366702a95437f7f102a57a090b6dd83"},
+ {file = "PyCifRW-4.4.2.tar.gz", hash = "sha256:a1b6ca0098c9c986b80a50f6cf05122ad65434a18b97a1120f83304ba485acc7"},
+]
+pyparsing = [
+ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
+ {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
+]
+python-dateutil = [
+ {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"},
+]
+pytz = [
+ {file = "pytz-2022.5-py2.py3-none-any.whl", hash = "sha256:335ab46900b1465e714b4fda4963d87363264eb662aab5e65da039c25f1f5b22"},
+ {file = "pytz-2022.5.tar.gz", hash = "sha256:c4d88f472f54d615e9cd582a5004d1e5f624854a6a27a6211591c251f22a6914"},
+]
+requests = [
+ {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
+ {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
+]
+scikit-learn = [
+ {file = "scikit-learn-1.1.2.tar.gz", hash = "sha256:7c22d1305b16f08d57751a4ea36071e2215efb4c09cb79183faa4e8e82a3dbf8"},
+ {file = "scikit_learn-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6c840f662b5d3377c4ccb8be1fc21bb52cb5d8b8790f8d6bf021739f84e543cf"},
+ {file = "scikit_learn-1.1.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2b8db962360c93554cab7bb3c096c4a24695da394dd4b3c3f13409f409b425bc"},
+ {file = "scikit_learn-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e7d1fc817867a350133f937aaebcafbc06192517cbdf0cf7e5774ad4d1adb9f"},
+ {file = "scikit_learn-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec3ea40d467966821843210c02117d82b097b54276fdcfb50f4dfb5c60dbe39"},
+ {file = "scikit_learn-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbef6ea1c012ff9f3e6f6e9ca006b8772d8383e177b898091e68fbd9b3f840f9"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a90ca42fe8242fd6ff56cda2fecc5fca586a88a24ab602d275d2d0dcc0b928fb"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a682ec0f82b6f30fb07486daed1c8001b6683cc66b51877644dfc532bece6a18"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c33e16e9a165af6012f5be530ccfbb672e2bc5f9b840238a05eb7f6694304e3f"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94c0146bad51daef919c402a3da8c1c6162619653e1c00c92baa168fda292f2"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-win32.whl", hash = "sha256:2f46c6e3ff1054a5ec701646dcfd61d43b8ecac4d416014daed8843cf4c33d4d"},
+ {file = "scikit_learn-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1e706deca9b2ad87ae27dafd5ac4e8eff01b6db492ed5c12cef4735ec5f21ea"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:567417dbbe6a6278399c3e6daf1654414a5a1a4d818d28f251fa7fc28730a1bf"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:d6f232779023c3b060b80b5c82e5823723bc424dcac1d1a148aa2492c54d245d"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:589d46f28460469f444b898223b13d99db9463e1038dc581ba698111f612264b"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76800652fb6d6bf527bce36ecc2cc25738b28fe1a17bd294a218fff8e8bd6d50"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-win32.whl", hash = "sha256:1c8fecb7c9984d9ec2ea48898229f98aad681a0873e0935f2b7f724fbce4a047"},
+ {file = "scikit_learn-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:407e9a1cb9e6ba458a539986a9bd25546a757088095b3aab91d465b79a760d37"},
+]
+scipy = [
+ {file = "scipy-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ee4ceed204f269da19f67f0115a85d3a2cd8547185037ad99a4025f9c61d02e9"},
+ {file = "scipy-1.9.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:17be1a7c68ec4c49d8cd4eb1655d55d14a54ab63012296bdd5921c92dc485acd"},
+ {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72297eb9702576bd8f626bb488fd32bb35349d3120fc4a5e733db137f06c9a6"},
+ {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa270cc6080c987929335c4cb94e8054fee9a6058cecff22276fa5dbab9856fc"},
+ {file = "scipy-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:22380e076a162e81b659d53d75b02e9c75ad14ea2d53d9c645a12543414e2150"},
+ {file = "scipy-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbed414fc25d64bd6d1613dc0286fbf91902219b8be63ad254525162235b67e9"},
+ {file = "scipy-1.9.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:885b7ac56d7460544b2ef89ab9feafa30f4264c9825d975ef690608d07e6cc55"},
+ {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5994a8232cc6510a8e85899661df2d11198bf362f0ffe6fbd5c0aca17ab46ce3"},
+ {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9c83dccac06f3b9aa02df69577f239758d5d0d0c069673fb0b47ecb971983d"},
+ {file = "scipy-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:92c5e627a0635ca02e6494bbbdb74f98d93ac8730416209d61de3b70c8a821be"},
+ {file = "scipy-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b6194da32e0ce9200b2eda4eb4edb89c5cb8b83d6deaf7c35f8ad3d5d7627d5c"},
+ {file = "scipy-1.9.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:148cb6f53d9d10dafde848e9aeb1226bf2809d16dc3221b2fa568130b6f2e586"},
+ {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:658fd31c6ad4eb9fa3fd460fcac779f70a6bc7480288a211b7658a25891cf01d"},
+ {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4012dbe540732311b8f4388b7e1482eb43a7cc0435bbf2b9916b3d6c38fb8d01"},
+ {file = "scipy-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d6cb1f92ded3fc48f7dbe94d20d7b9887e13b874e79043907de541c841563b4c"},
+ {file = "scipy-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1e3b23a82867018cd26255dc951789a7c567921622073e1113755866f1eae928"},
+ {file = "scipy-1.9.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:82e8bfb352aa9dce9a0ffe81f4c369a2c87c85533519441686f59f21d8c09697"},
+ {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b95283529712101bfb7c87faf94cb86ed9e64de079509edfe107e5cfa55733"},
+ {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8c29703202c39d699b0d6b164bde5501c212005f20abf46ae322b9307c8a41"},
+ {file = "scipy-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:7b2608b3141c257d01ae772e23b3de9e04d27344e6b68a890883795229cb7191"},
+ {file = "scipy-1.9.2.tar.gz", hash = "sha256:99e7720caefb8bca6ebf05c7d96078ed202881f61e0c68bd9e0f3e8097d6f794"},
+]
+setuptools = [
+ {file = "setuptools-65.5.0-py3-none-any.whl", hash = "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"},
+ {file = "setuptools-65.5.0.tar.gz", hash = "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17"},
+]
+setuptools-scm = [
+ {file = "setuptools_scm-7.0.5-py3-none-any.whl", hash = "sha256:7930f720905e03ccd1e1d821db521bff7ec2ac9cf0ceb6552dd73d24a45d3b02"},
+ {file = "setuptools_scm-7.0.5.tar.gz", hash = "sha256:031e13af771d6f892b941adb6ea04545bbf91ebc5ce68c78aaf3fff6e1fb4844"},
+]
+shapely = [
+ {file = "Shapely-1.8.5.post1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d048f93e42ba578b82758c15d8ae037d08e69d91d9872bca5a1895b118f4e2b0"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99ab0ddc05e44acabdbe657c599fdb9b2d82e86c5493bdae216c0c4018a82dee"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a2f0da0109e81e0c101a2b4cd8412f73f5f299e7b5b2deaf64cd2a100ac118"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6fe855e7d45685926b6ba00aaeb5eba5862611f7465775dacd527e081a8ced6d"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec14ceca36f67cb48b34d02d7f65a9acae15cd72b48e303531893ba4a960f3ea"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-win32.whl", hash = "sha256:21776184516a16bf82a0c3d6d6a312b3cd15a4cabafc61ee01cf2714a82e8396"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-win_amd64.whl", hash = "sha256:a354199219c8d836f280b88f2c5102c81bb044ccea45bd361dc38a79f3873714"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:783bad5f48e2708a0e2f695a34ed382e4162c795cb2f0368b39528ac1d6db7ed"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a23ef3882d6aa203dd3623a3d55d698f59bfbd9f8a3bfed52c2da05a7f0f8640"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab38f7b5196ace05725e407cb8cab9ff66edb8e6f7bb36a398e8f73f52a7aaa2"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d086591f744be483b34628b391d741e46f2645fe37594319e0a673cc2c26bcf"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4728666fff8cccc65a07448cae72c75a8773fea061c3f4f139c44adc429b18c3"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-win32.whl", hash = "sha256:84010db15eb364a52b74ea8804ef92a6a930dfc1981d17a369444b6ddec66efd"},
+ {file = "Shapely-1.8.5.post1-cp311-cp311-win_amd64.whl", hash = "sha256:48dcfffb9e225c0481120f4bdf622131c8c95f342b00b158cdbe220edbbe20b6"},
+ {file = "Shapely-1.8.5.post1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2fd15397638df291c427a53d641d3e6fd60458128029c8c4f487190473a69a91"},
+ {file = "Shapely-1.8.5.post1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a74631e511153366c6dbe3229fa93f877e3c87ea8369cd00f1d38c76b0ed9ace"},
+ {file = "Shapely-1.8.5.post1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:66bdac74fbd1d3458fa787191a90fa0ae610f09e2a5ec398c36f968cc0ed743f"},
+ {file = "Shapely-1.8.5.post1-cp36-cp36m-win32.whl", hash = "sha256:6d388c0c1bd878ed1af4583695690aa52234b02ed35f93a1c8486ff52a555838"},
+ {file = "Shapely-1.8.5.post1-cp36-cp36m-win_amd64.whl", hash = "sha256:be9423d5a3577ac2e92c7e758bd8a2b205f5e51a012177a590bc46fc51eb4834"},
+ {file = "Shapely-1.8.5.post1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5d7f85c2d35d39ff53c9216bc76b7641c52326f7e09aaad1789a3611a0f812f2"},
+ {file = "Shapely-1.8.5.post1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:adcf8a11b98af9375e32bff91de184f33a68dc48b9cb9becad4f132fa25cfa3c"},
+ {file = "Shapely-1.8.5.post1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:753ed0e21ab108bd4282405b9b659f2e985e8502b1a72b978eaa51d3496dee19"},
+ {file = "Shapely-1.8.5.post1-cp37-cp37m-win32.whl", hash = "sha256:65b21243d8f6bcd421210daf1fabb9de84de2c04353c5b026173b88d17c1a581"},
+ {file = "Shapely-1.8.5.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:370b574c78dc5af3a198a6da5d9b3d7c04654bd2ef7e80e80a3a0992dfb2d9cd"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:532a55ee2a6c52d23d6f7d1567c8f0473635f3b270262c44e1b0c88096827e22"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3480657460e939f45a7d359ef0e172a081f249312557fe9aa78c4fd3a362d993"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b65f5d530ba91e49ffc7c589255e878d2506a8b96ffce69d3b7c4500a9a9eaf8"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:147066da0be41b147a61f8eb805dea3b13709dbc873a431ccd7306e24d712bc0"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c2822111ddc5bcfb116e6c663e403579d0fe3f147d2a97426011a191c43a7458"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-win32.whl", hash = "sha256:2e0a8c2e55f1be1312b51c92b06462ea89e6bb703fab4b114e7a846d941cfc40"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-win_amd64.whl", hash = "sha256:0d885cb0cf670c1c834df3f371de8726efdf711f18e2a75da5cfa82843a7ab65"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0b4ee3132ee90f07d63db3aea316c4c065ed7a26231458dda0874414a09d6ba3"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:02dd5d7dc6e46515d88874134dc8fcdc65826bca93c3eecee59d1910c42c1b17"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c6a9a4a31cd6e86d0fbe8473ceed83d4fe760b19d949fb557ef668defafea0f6"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:38f0fbbcb8ca20c16451c966c1f527cc43968e121c8a048af19ed3e339a921cd"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:78fb9d929b8ee15cfd424b6c10879ce1907f24e05fb83310fc47d2cd27088e40"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-win32.whl", hash = "sha256:8e59817b0fe63d34baedaabba8c393c0090f061917d18fc0bcc2f621937a8f73"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-win_amd64.whl", hash = "sha256:e9c30b311de2513555ab02464ebb76115d242842b29c412f5a9aa0cac57be9f6"},
+ {file = "Shapely-1.8.5.post1.tar.gz", hash = "sha256:ef3be705c3eac282a28058e6c6e5503419b250f482320df2172abcbea642c831"},
+]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+spglib = [
+ {file = "spglib-1.16.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc87809dfb9932cd01b9daf03b2b2233d88dedf67fa6856870eb3491cc2ff60b"},
+ {file = "spglib-1.16.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb162a56deef2ae843ebbcdfdb59b5980a30843e34612fc2f73d2f9ebe6ed80e"},
+ {file = "spglib-1.16.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e9f50db87b60f0f20b18f3c2ab6d810a97b0f946b2fa475261ca37e6ce826622"},
+ {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a024bdd4ed731f548c23872d7883bdfac3ed8ff2e67f72d32d7fa10d15091d30"},
+ {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e901e2a9a73d133aab65e8c6a011cb438cd50d39912f08237d6c3e30990bf"},
+ {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0ef4c5cbd7cb8d1a5b3e289f7c5742bfb52264732301e54c658b0bd2aa0d4154"},
+ {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ba67c2d3a548c3baf849dd7762e4c350348d9a28c1039d21acdca6e17edd1b7"},
+ {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e90e31644ef8d9197e5a5d995421fc5903fa27a770e0c026db6fd44a414a62a"},
+ {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:77e135225fe5ddedaec5779539ac47891c7d347776055d8f244b15a11181ba88"},
+ {file = "spglib-1.16.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252d9e676409824286358c600abf8ead71b2fabc8865ae17a24e12631a8a48e2"},
+ {file = "spglib-1.16.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b8ce19acee0720ad9568f088251be13f767c1c6722f0fcfffe1c45bb6a0e852"},
+ {file = "spglib-1.16.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:17c2ae3ff10f3c112628f775fd3c24800e5f142c5be369ece45c3a73943b3bba"},
+ {file = "spglib-1.16.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519bf6aad8ab0cd9bd91dd006d618ea5f24b9d518f7d344498d0f47295e76f94"},
+ {file = "spglib-1.16.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10f724b1f464d3510f388a17a66f6ca65ef2ee9bbfe13e0bfd80dd0d5e1058e"},
+ {file = "spglib-1.16.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2aceb406538e11ca565d890a8ac8b38e650f1dc652d9acb020c8a1dae1fa9c02"},
+ {file = "spglib-1.16.5.tar.gz", hash = "sha256:2eacefd53cc644ba9a90c4681fd6c934b6bdd818c113d7f319904e078d5dab93"},
+]
+threadpoolctl = [
+ {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"},
+ {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"},
+]
+tomli = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+typing-extensions = [
+ {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
+ {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
+]
+urllib3 = [
+ {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"},
+ {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"},
+]
From f2fd9a9d990c898c5577cafdecf84260476309da Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 24 Oct 2022 11:33:24 -0400
Subject: [PATCH 79/87] Update README.md
---
README.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 55fc2f8..4253ccf 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@ https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-`BiCrystal` is a python-based program that uses Scipy and Shapely libraries. Additionally, the Crystal and shapely packages, which is not part of the standard Python packages, should be installed. i.e Install via pip or conda:
+`BiCrystal` is a python 3 program that uses Scipy and Shapely libraries. We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. BiCrystal uses the Crystal and shapely packages, which is not part of the standard Python packages. Although these can be installed via pip or conda as follows:
pip install crystals
or
@@ -36,7 +36,7 @@ and
pip install shapely
-For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
+We recommend installing BiCrystal and all its dependencies via poetry using the .lock and .toml files provided. These files contain all the dependencies of BiCrsytal with the appropriate versions used. You can learn more about poetry from the official website: https://python-poetry.org/. For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
# Files
**bicrystal** - Bash script which runs the python program \
@@ -65,6 +65,8 @@ Save, close then source your `.bashrc` file to activate the changes:
Restart your terminal window to start using `bicrystal`.
+Alternatively, with poetry, you can simply dwonload the repository by cloning it to your local machine. Then, create a python virtual environment using the .lock and .toml files provided. This will ensure that the correct versions of packages are installed.
+
# Usage
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
From e0d6c5770e7669ec08817bdae8437417f08a6436 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 24 Oct 2022 11:35:54 -0400
Subject: [PATCH 80/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4253ccf..7fad300 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ Save, close then source your `.bashrc` file to activate the changes:
Restart your terminal window to start using `bicrystal`.
-Alternatively, with poetry, you can simply dwonload the repository by cloning it to your local machine. Then, create a python virtual environment using the .lock and .toml files provided. This will ensure that the correct versions of packages are installed.
+Alternatively, with poetry, you can simply dwonload the repository by cloning it to your local machine. Then, create a python virtual environment using the .lock and .toml files provided. This will ensure that the correct versions of packages are installed. Note, if you are installing via poetry, you do not need to seperately install the Sharpely or Crystals packages. Poetry does all that for you.
# Usage
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
From 124ed73f44f5f242af4286854a52edd188a97e39 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 24 Oct 2022 12:06:53 -0400
Subject: [PATCH 81/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 7fad300..93eeb05 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@ https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-`BiCrystal` is a python 3 program that uses Scipy and Shapely libraries. We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. BiCrystal uses the Crystal and shapely packages, which is not part of the standard Python packages. Although these can be installed via pip or conda as follows:
+We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. BiCrystal uses the crystals and shapely packages, which are not part of the standard Python library. Although these can be installed via pip or conda as follows:
pip install crystals
or
From 4fb2913a48a621362a99401fdab827645cfa63bd Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Mon, 24 Oct 2022 15:13:24 -0400
Subject: [PATCH 82/87] Update README.md
---
README.md | 44 ++++++++++----------------------------------
1 file changed, 10 insertions(+), 34 deletions(-)
diff --git a/README.md b/README.md
index 93eeb05..2f88334 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,6 @@ Contents
**Download** \
**Packages** \
**Files** \
-**Installation** \
**Usage** \
**Examples** \
**Summary Table** \
@@ -17,7 +16,7 @@ Contents
# Overview
Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
-# Download
+# Download and Installation
The latest version of ``BiCrystal`` can be found on github:
https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
@@ -26,46 +25,23 @@ https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
# Packages
-We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. BiCrystal uses the crystals and shapely packages, which are not part of the standard Python library. Although these can be installed via pip or conda as follows:
+We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. Aditionally, we recommend installing BiCrystal and all its dependencies via poetry using the .lock and .toml files provided. These files contain all the dependencies of BiCrsytal with the appropriate versions used. You can learn more about poetry from the official website: https://python-poetry.org/. For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
- pip install crystals
-or
+After you have installed poetry on your machine, cd into the source folder of the cloned repository and run
- conda install -c conda-forge crystals
-and
-
- pip install shapely
-
-We recommend installing BiCrystal and all its dependencies via poetry using the .lock and .toml files provided. These files contain all the dependencies of BiCrsytal with the appropriate versions used. You can learn more about poetry from the official website: https://python-poetry.org/. For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
-
-# Files
+ poetry install
+
+This will create a virtual environment for BiCrystal. To activate the virtual environment and use BiCrystal, run
+
+ poetry shell
+
+# BiCrystal files
**bicrystal** - Bash script which runs the python program \
**cifs/** - Directory with sample cif files \
**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
**periodic_table.csv** - Periodic table of elements \
**program.py** - Python program to be called from bicrystal script
-# Installation
-After downloading the files from the github repository and unzip to the directory of your choice. Next, make `bicrystal` and `program.py` into executables:
-
- chmod u+x bicrystal program.py
-
-then add this directory to your $PATH variable. In Bash, this can be done by adding the following lines to your `.bashrc file` (open your ./bashrc file with any text editor of your choosing, e.g. vi, nano, gedit, etc.):
-
- vi ~/.bashrc
-
-Then add:
-
- export PATH="$/path/to/your/directory/with/bicrysal/:$PATH"
- export PYTHONPATH="${PYTHONPATH}:/path/to/your/directory/with/bicrysal/"
-
-Save, close then source your `.bashrc` file to activate the changes:
-
- source ~/.bashrc
-
-Restart your terminal window to start using `bicrystal`.
-
-Alternatively, with poetry, you can simply dwonload the repository by cloning it to your local machine. Then, create a python virtual environment using the .lock and .toml files provided. This will ensure that the correct versions of packages are installed. Note, if you are installing via poetry, you do not need to seperately install the Sharpely or Crystals packages. Poetry does all that for you.
# Usage
BiCrystal is an interactive program that instructs the user every step of the way. To start BiCrystal, in the terminal type:
From b41c6673a0b6eeee60522f203fe36063e5672fb7 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Tue, 25 Oct 2022 08:44:44 -0400
Subject: [PATCH 83/87] Update README.md
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2f88334..f95362d 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,9 @@ This will create a virtual environment for BiCrystal. To activate the virtual en
**cifs/** - Directory with sample cif files \
**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
**periodic_table.csv** - Periodic table of elements \
-**program.py** - Python program to be called from bicrystal script
+**program.py** - Python program to be called from bicrystal script \
+**poetry.lock** - Poetry file which contains summarized list of packages used \
+**pyproject.toml** - Poetry file which contains detailed description of all packages used and their dependancies
# Usage
From 472fba1e9b4932a087e70f7657cb6c5eb97c9fe4 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Tue, 25 Oct 2022 14:17:23 -0400
Subject: [PATCH 84/87] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index f95362d..4c79307 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ The latest version of ``BiCrystal`` can be found on github:
https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
-**Contact**: Tilas Kabengele tilas.kabengele@dal.ca
+**Contact**: Tilas Kabengele at tilas.kabengele@dal.ca or tilas_kabengele@brown.edu
# Packages
We recommend running BiCrystal in python 3.8.x, where it has been thoroughly tested. Aditionally, we recommend installing BiCrystal and all its dependencies via poetry using the .lock and .toml files provided. These files contain all the dependencies of BiCrsytal with the appropriate versions used. You can learn more about poetry from the official website: https://python-poetry.org/. For more information on crystals and shapely, visit: https://pypi.org/project/crystals/ and https://pypi.org/project/Shapely/ respectively.
@@ -41,8 +41,8 @@ This will create a virtual environment for BiCrystal. To activate the virtual en
**examples/** - Directory with 33 examples of QUANTUM ESPRESSO input files generated by BiCrystal \
**periodic_table.csv** - Periodic table of elements \
**program.py** - Python program to be called from bicrystal script \
-**poetry.lock** - Poetry file which contains summarized list of packages used \
-**pyproject.toml** - Poetry file which contains detailed description of all packages used and their dependancies
+**pyproject.toml** - Poetry file which contains summarized list of packages used \
+**poetry.lock* - Poetry file which contains detailed description of all packages used and their dependancies
# Usage
From e81122b2f29b2bcbace5e6f3ed1a2f390f0850cb Mon Sep 17 00:00:00 2001
From: Tilas Kabengele <62076249+tilaskabengele@users.noreply.github.com>
Date: Tue, 25 Oct 2022 14:20:29 -0400
Subject: [PATCH 85/87] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4c79307..a5eb2c5 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Contents
**License**
# Overview
-Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convinient and easy way of creating new crystal structures of arbitrary size from CIF files.
+Building unit cells of arbitrary size is often an inevitable task when studying the physical and mechanical properties of layered materials such as graphene, hexagonal Boron Nitride, transition metal dichalcogenides. Although most visualzation software such as Xcrysden, VESTA or Avogadro provide very powerful tools for analysing and manipulating periodic crystal structures, constructing large unit cells in bilayers with one of the layers perturbed can be very daunting. ``BiCrystal`` provides a convenient and easy way of creating new crystal structures of arbitrary size from CIF files.
# Download and Installation
The latest version of ``BiCrystal`` can be found on github:
From 7283232126e74397cbf7426d0c6601d729d2b383 Mon Sep 17 00:00:00 2001
From: Tilas Kabengele
Date: Fri, 2 Jun 2023 18:42:09 -0400
Subject: [PATCH 86/87] removed path requirement to program.py,
periodic_table.csv
---
bicrystal/.bicrystal.swp | Bin 0 -> 12288 bytes
bicrystal/.program.py.swp | Bin 0 -> 36864 bytes
bicrystal/bicrystal | 8 +-
bicrystal/program.py | 12 +-
poetry.lock | 1219 +++++++++++++++++++------------------
5 files changed, 643 insertions(+), 596 deletions(-)
create mode 100644 bicrystal/.bicrystal.swp
create mode 100644 bicrystal/.program.py.swp
mode change 100644 => 100755 bicrystal/bicrystal
diff --git a/bicrystal/.bicrystal.swp b/bicrystal/.bicrystal.swp
new file mode 100644
index 0000000000000000000000000000000000000000..612d1b2f63a42832e4801392bb48e87e36ca7090
GIT binary patch
literal 12288
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 workspace
-python $t1 2>&1 | tee outfile
-rm -f workspace
+# execute python script for bicrystal
+python program.py 2>&1 | tee outfile
+# postprocess the results and prepare output file
echo "Would you like to write Espresso file?[Y/n]"
read reply
diff --git a/bicrystal/program.py b/bicrystal/program.py
index b5ced85..afc2908 100644
--- a/bicrystal/program.py
+++ b/bicrystal/program.py
@@ -1,5 +1,3 @@
-#!/bin/python3
-
# PROGRAM: BiCRYSTAL
# VERSION: 1.0.8
@@ -8,11 +6,6 @@
# AUTHOR: T. Kabengele, Johnson Chemistry Group, Dalhousie University
-# REQUIREMENTS:
-# Python "crystals" package must be installed on your system
-# Install via: pip install crystals
-# Alternative install: conda install -c conda-forge crystals
-
#********************************************************************************************************
# INITIALIZATION
@@ -336,12 +329,11 @@ def bulk(my_crystal):
# reading csv with elements from workspace
# i.e. directory where you installed bicrystal
-with open('workspace') as f:
+with open('program.py') as f:
line = f.readline()
program_directory = str(line).rstrip("\n")
-dir1 = os.path.join("" +program_directory+"", 'periodic_table.csv')
colnames = ['number', 'symbol']
-periodic_table = pandas.read_csv(dir1, usecols=colnames)
+periodic_table = pandas.read_csv('periodic_table.csv', usecols=colnames)
number = periodic_table.number.tolist()
symbol = periodic_table.symbol.tolist()
diff --git a/poetry.lock b/poetry.lock
index ab6479c..d8da855 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,53 +1,194 @@
+# This file is automatically @generated by Poetry and should not be changed by hand.
+
[[package]]
name = "certifi"
-version = "2022.9.24"
+version = "2023.5.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
+files = [
+ {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"},
+ {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"},
+]
[[package]]
name = "charset-normalizer"
-version = "2.1.1"
+version = "3.1.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
-python-versions = ">=3.6.0"
-
-[package.extras]
-unicode-backport = ["unicodedata2"]
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"},
+ {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"},
+ {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"},
+ {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"},
+ {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"},
+ {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"},
+ {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"},
+]
[[package]]
name = "contourpy"
-version = "1.0.5"
+version = "1.0.7"
description = "Python library for calculating contours of 2D quadrilateral grids"
category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
+files = [
+ {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"},
+ {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"},
+ {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"},
+ {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"},
+ {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"},
+ {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"},
+ {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"},
+ {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"},
+ {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"},
+ {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"},
+ {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"},
+ {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"},
+ {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"},
+ {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"},
+ {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"},
+ {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"},
+ {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"},
+ {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"},
+ {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"},
+ {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"},
+ {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"},
+ {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"},
+ {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"},
+ {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"},
+ {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"},
+ {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"},
+ {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"},
+ {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"},
+ {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"},
+ {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"},
+ {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"},
+ {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"},
+ {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"},
+ {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"},
+ {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"},
+ {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"},
+ {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"},
+ {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"},
+ {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"},
+ {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"},
+ {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"},
+ {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"},
+ {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"},
+ {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"},
+ {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"},
+ {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"},
+ {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"},
+ {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"},
+ {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"},
+ {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"},
+ {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"},
+ {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"},
+ {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"},
+ {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"},
+ {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"},
+]
[package.dependencies]
numpy = ">=1.16"
[package.extras]
-bokeh = ["bokeh", "selenium"]
-docs = ["docutils (<0.18)", "sphinx", "sphinx-rtd-theme"]
-test = ["Pillow", "flake8", "isort", "matplotlib", "pytest"]
-test-minimal = ["pytest"]
-test-no-codebase = ["Pillow", "matplotlib", "pytest"]
+bokeh = ["bokeh", "chromedriver", "selenium"]
+docs = ["furo", "sphinx-copybutton"]
+mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"]
+test = ["Pillow", "matplotlib", "pytest"]
+test-no-images = ["pytest"]
[[package]]
name = "crystals"
-version = "1.6.0"
+version = "1.6.2"
description = "Data structures for crystallography"
category = "main"
optional = false
python-versions = ">=3.7"
+files = [
+ {file = "crystals-1.6.2-py3-none-any.whl", hash = "sha256:2a9263f67cb441431026465f38da9d6e70f107b1228cf9c45c13d7e473a81868"},
+ {file = "crystals-1.6.2.tar.gz", hash = "sha256:0c5a95e56af35be8f1660128344a3160bce7faaca268213a9c835b667f10366a"},
+]
[package.dependencies]
numpy = ">=1.20,<2"
pycifrw = ">=4.4.1,<5"
requests = ">=2,<3"
-spglib = ">=1.15,<2"
+spglib = ">=1.15,<3"
[[package]]
name = "cycler"
@@ -56,17 +197,25 @@ description = "Composable style cycles"
category = "main"
optional = false
python-versions = ">=3.6"
+files = [
+ {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
+ {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
+]
[[package]]
name = "fonttools"
-version = "4.37.4"
+version = "4.39.4"
description = "Tools to manipulate font files"
category = "main"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
+files = [
+ {file = "fonttools-4.39.4-py3-none-any.whl", hash = "sha256:106caf6167c4597556b31a8d9175a3fdc0356fdcd70ab19973c3b0d4c893c461"},
+ {file = "fonttools-4.39.4.zip", hash = "sha256:dba8d7cdb8e2bac1b3da28c5ed5960de09e59a2fe7e63bb73f5a59e57b0430d2"},
+]
[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)"]
+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 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"]
graphite = ["lz4 (>=1.7.4.2)"]
interpolatable = ["munkres", "scipy"]
lxml = ["lxml (>=4.0,<5)"]
@@ -76,7 +225,7 @@ repacker = ["uharfbuzz (>=0.23.0)"]
symfont = ["sympy"]
type1 = ["xattr"]
ufo = ["fs (>=2.2.0,<3)"]
-unicode = ["unicodedata2 (>=14.0.0)"]
+unicode = ["unicodedata2 (>=15.0.0)"]
woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
[[package]]
@@ -86,6 +235,29 @@ 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 = "importlib-resources"
+version = "5.12.0"
+description = "Read resources from Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"},
+ {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[[package]]
name = "joblib"
@@ -94,6 +266,10 @@ description = "Lightweight pipelining with Python functions"
category = "main"
optional = false
python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.2.0-py3-none-any.whl", hash = "sha256:091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385"},
+ {file = "joblib-1.2.0.tar.gz", hash = "sha256:e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018"},
+]
[[package]]
name = "kiwisolver"
@@ -102,58 +278,232 @@ 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 = "matplotlib"
-version = "3.6.1"
+version = "3.7.1"
description = "Python plotting package"
category = "main"
optional = false
python-versions = ">=3.8"
+files = [
+ {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"},
+ {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"},
+ {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"},
+ {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"},
+ {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"},
+ {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"},
+ {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"},
+ {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"},
+ {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"},
+ {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"},
+ {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"},
+ {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"},
+ {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"},
+ {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"},
+ {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"},
+ {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"},
+ {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"},
+ {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"},
+ {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"},
+ {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"},
+ {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"},
+ {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"},
+ {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"},
+ {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"},
+ {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"},
+ {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"},
+ {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"},
+ {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"},
+ {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"},
+ {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"},
+ {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"},
+ {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"},
+ {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"},
+ {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"},
+ {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"},
+ {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"},
+ {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"},
+ {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"},
+ {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"},
+ {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"},
+ {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"},
+]
[package.dependencies]
contourpy = ">=1.0.1"
cycler = ">=0.10"
fonttools = ">=4.22.0"
+importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""}
kiwisolver = ">=1.0.1"
-numpy = ">=1.19"
+numpy = ">=1.20"
packaging = ">=20.0"
pillow = ">=6.2.0"
-pyparsing = ">=2.2.1"
+pyparsing = ">=2.3.1"
python-dateutil = ">=2.7"
-setuptools_scm = ">=7"
[[package]]
name = "numpy"
-version = "1.23.4"
-description = "NumPy is the fundamental package for array computing with Python."
+version = "1.24.3"
+description = "Fundamental package for array computing in Python"
category = "main"
optional = false
python-versions = ">=3.8"
+files = [
+ {file = "numpy-1.24.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570"},
+ {file = "numpy-1.24.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7"},
+ {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463"},
+ {file = "numpy-1.24.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6"},
+ {file = "numpy-1.24.3-cp310-cp310-win32.whl", hash = "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b"},
+ {file = "numpy-1.24.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7"},
+ {file = "numpy-1.24.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3"},
+ {file = "numpy-1.24.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf"},
+ {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385"},
+ {file = "numpy-1.24.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950"},
+ {file = "numpy-1.24.3-cp311-cp311-win32.whl", hash = "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096"},
+ {file = "numpy-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80"},
+ {file = "numpy-1.24.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078"},
+ {file = "numpy-1.24.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c"},
+ {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c"},
+ {file = "numpy-1.24.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f"},
+ {file = "numpy-1.24.3-cp38-cp38-win32.whl", hash = "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4"},
+ {file = "numpy-1.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289"},
+ {file = "numpy-1.24.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4"},
+ {file = "numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187"},
+ {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02"},
+ {file = "numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4"},
+ {file = "numpy-1.24.3-cp39-cp39-win32.whl", hash = "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c"},
+ {file = "numpy-1.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17"},
+ {file = "numpy-1.24.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0"},
+ {file = "numpy-1.24.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812"},
+ {file = "numpy-1.24.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4"},
+ {file = "numpy-1.24.3.tar.gz", hash = "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155"},
+]
[[package]]
name = "packaging"
-version = "21.3"
+version = "23.1"
description = "Core utilities for Python packages"
category = "main"
optional = false
-python-versions = ">=3.6"
-
-[package.dependencies]
-pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
+ {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
+]
[[package]]
name = "pandas"
-version = "1.5.0"
+version = "1.5.3"
description = "Powerful data structures for data analysis, time series, and statistics"
category = "main"
optional = false
python-versions = ">=3.8"
+files = [
+ {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"},
+ {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"},
+ {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"},
+ {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"},
+ {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"},
+ {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"},
+ {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"},
+ {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"},
+ {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"},
+ {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"},
+ {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"},
+ {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"},
+ {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"},
+ {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"},
+ {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"},
+ {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"},
+ {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"},
+ {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"},
+]
[package.dependencies]
numpy = [
- {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
{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"
@@ -163,14 +513,82 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"]
[[package]]
name = "pillow"
-version = "9.2.0"
+version = "9.5.0"
description = "Python Imaging Library (Fork)"
category = "main"
optional = false
python-versions = ">=3.7"
+files = [
+ {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"},
+ {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"},
+ {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"},
+ {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"},
+ {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"},
+ {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"},
+ {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"},
+ {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"},
+ {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"},
+ {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"},
+ {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"},
+ {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"},
+ {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"},
+ {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"},
+ {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"},
+ {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"},
+ {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"},
+ {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"},
+ {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"},
+ {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"},
+ {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"},
+ {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"},
+ {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"},
+ {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"},
+ {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"},
+ {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"},
+ {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"},
+ {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"},
+ {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"},
+ {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"},
+ {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"},
+ {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"},
+ {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"},
+ {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"},
+ {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"},
+ {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"},
+ {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"},
+ {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"},
+ {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"},
+ {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"},
+ {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"},
+ {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"},
+ {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"},
+ {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"},
+ {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"},
+ {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"},
+ {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"},
+ {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"},
+ {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"},
+ {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"},
+ {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"},
+ {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"},
+ {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"},
+ {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"},
+ {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"},
+ {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"},
+ {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"},
+ {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"},
+ {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"},
+ {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"},
+ {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"},
+ {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"},
+ {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"},
+ {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"},
+ {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"},
+ {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"},
+]
[package.extras]
-docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
[[package]]
@@ -180,6 +598,10 @@ description = "CIF/STAR file support for Python"
category = "main"
optional = false
python-versions = "*"
+files = [
+ {file = "PyCifRW-4.4.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:ebbb298655b291292feb2c5594c815de0366702a95437f7f102a57a090b6dd83"},
+ {file = "PyCifRW-4.4.2.tar.gz", hash = "sha256:a1b6ca0098c9c986b80a50f6cf05122ad65434a18b97a1120f83304ba485acc7"},
+]
[[package]]
name = "pyparsing"
@@ -188,6 +610,10 @@ description = "pyparsing module - Classes and methods to define and execute pars
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"]
@@ -199,31 +625,43 @@ 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.5"
+version = "2023.3"
description = "World timezone definitions, modern and historical"
category = "main"
optional = false
python-versions = "*"
+files = [
+ {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"},
+ {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"},
+]
[[package]]
name = "requests"
-version = "2.28.1"
+version = "2.31.0"
description = "Python HTTP for Humans."
category = "main"
optional = false
-python-versions = ">=3.7, <4"
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
[package.dependencies]
certifi = ">=2017.4.17"
-charset-normalizer = ">=2,<3"
+charset-normalizer = ">=2,<4"
idna = ">=2.5,<4"
-urllib3 = ">=1.21.1,<1.27"
+urllib3 = ">=1.21.1,<3"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
@@ -231,31 +669,77 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "scikit-learn"
-version = "1.1.2"
+version = "1.2.2"
description = "A set of python modules for machine learning and data mining"
category = "main"
optional = false
python-versions = ">=3.8"
+files = [
+ {file = "scikit-learn-1.2.2.tar.gz", hash = "sha256:8429aea30ec24e7a8c7ed8a3fa6213adf3814a6efbea09e16e0a0c71e1a1a3d7"},
+ {file = "scikit_learn-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99cc01184e347de485bf253d19fcb3b1a3fb0ee4cea5ee3c43ec0cc429b6d29f"},
+ {file = "scikit_learn-1.2.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e6e574db9914afcb4e11ade84fab084536a895ca60aadea3041e85b8ac963edb"},
+ {file = "scikit_learn-1.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fe83b676f407f00afa388dd1fdd49e5c6612e551ed84f3b1b182858f09e987d"},
+ {file = "scikit_learn-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e2642baa0ad1e8f8188917423dd73994bf25429f8893ddbe115be3ca3183584"},
+ {file = "scikit_learn-1.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ad66c3848c0a1ec13464b2a95d0a484fd5b02ce74268eaa7e0c697b904f31d6c"},
+ {file = "scikit_learn-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfeaf8be72117eb61a164ea6fc8afb6dfe08c6f90365bde2dc16456e4bc8e45f"},
+ {file = "scikit_learn-1.2.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:fe0aa1a7029ed3e1dcbf4a5bc675aa3b1bc468d9012ecf6c6f081251ca47f590"},
+ {file = "scikit_learn-1.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:065e9673e24e0dc5113e2dd2b4ca30c9d8aa2fa90f4c0597241c93b63130d233"},
+ {file = "scikit_learn-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf036ea7ef66115e0d49655f16febfa547886deba20149555a41d28f56fd6d3c"},
+ {file = "scikit_learn-1.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:8b0670d4224a3c2d596fd572fb4fa673b2a0ccfb07152688ebd2ea0b8c61025c"},
+ {file = "scikit_learn-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9c710ff9f9936ba8a3b74a455ccf0dcf59b230caa1e9ba0223773c490cab1e51"},
+ {file = "scikit_learn-1.2.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:2dd3ffd3950e3d6c0c0ef9033a9b9b32d910c61bd06cb8206303fb4514b88a49"},
+ {file = "scikit_learn-1.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44b47a305190c28dd8dd73fc9445f802b6ea716669cfc22ab1eb97b335d238b1"},
+ {file = "scikit_learn-1.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:953236889928d104c2ef14027539f5f2609a47ebf716b8cbe4437e85dce42744"},
+ {file = "scikit_learn-1.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:7f69313884e8eb311460cc2f28676d5e400bd929841a2c8eb8742ae78ebf7c20"},
+ {file = "scikit_learn-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8156db41e1c39c69aa2d8599ab7577af53e9e5e7a57b0504e116cc73c39138dd"},
+ {file = "scikit_learn-1.2.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fe175ee1dab589d2e1033657c5b6bec92a8a3b69103e3dd361b58014729975c3"},
+ {file = "scikit_learn-1.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d5312d9674bed14f73773d2acf15a3272639b981e60b72c9b190a0cffed5bad"},
+ {file = "scikit_learn-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea061bf0283bf9a9f36ea3c5d3231ba2176221bbd430abd2603b1c3b2ed85c89"},
+ {file = "scikit_learn-1.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:6477eed40dbce190f9f9e9d0d37e020815825b300121307942ec2110302b66a3"},
+]
[package.dependencies]
-joblib = ">=1.0.0"
+joblib = ">=1.1.1"
numpy = ">=1.17.3"
scipy = ">=1.3.2"
threadpoolctl = ">=2.0.0"
[package.extras]
-benchmark = ["matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
-docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
-examples = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
-tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.2)", "mypy (>=0.961)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pyamg (>=4.0.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.16.2)"]
+benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
+docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.10.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
+examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.10.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
+tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.3)", "mypy (>=0.961)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=5.3.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.16.2)"]
[[package]]
name = "scipy"
-version = "1.9.2"
+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"
@@ -265,37 +749,6 @@ 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.5.0"
-description = "Easily download, build, install, upgrade, and uninstall Python packages"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[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)", "mock", "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-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 = "setuptools-scm"
-version = "7.0.5"
-description = "the blessed package to manage your versions by scm tags"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[package.dependencies]
-packaging = ">=20.0"
-setuptools = "*"
-tomli = ">=1.0.0"
-typing-extensions = "*"
-
-[package.extras]
-test = ["pytest (>=6.2)", "virtualenv (>20)"]
-toml = ["setuptools (>=42)"]
-
[[package]]
name = "shapely"
version = "1.8.5.post1"
@@ -303,486 +756,13 @@ description = "Geometric objects, predicates, and operations"
category = "main"
optional = false
python-versions = ">=3.6"
-
-[package.extras]
-all = ["numpy", "pytest", "pytest-cov"]
-test = ["pytest", "pytest-cov"]
-vectorized = ["numpy"]
-
-[[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.*"
-
-[[package]]
-name = "spglib"
-version = "1.16.5"
-description = "This is the spglib module."
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-numpy = "*"
-
-[[package]]
-name = "threadpoolctl"
-version = "3.1.0"
-description = "threadpoolctl"
-category = "main"
-optional = false
-python-versions = ">=3.6"
-
-[[package]]
-name = "tomli"
-version = "2.0.1"
-description = "A lil' TOML parser"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[[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"
-
-[[package]]
-name = "urllib3"
-version = "1.26.12"
-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.*, <4"
-
-[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)"]
-
-[metadata]
-lock-version = "1.1"
-python-versions = "^3.8"
-content-hash = "4bbf17f45a03a46ecaad52832e2311cb1c902b2517c66984b63b45048df94a9b"
-
-[metadata.files]
-certifi = [
- {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"},
- {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"},
-]
-charset-normalizer = [
- {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
- {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
-]
-contourpy = [
- {file = "contourpy-1.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:87121b9428ac568fb84fae4af5e7852fc34f02eadc4e3e91f6c8989327692186"},
- {file = "contourpy-1.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1fb782982c42cee667b892a0b0c52a9f6c7ecf1da5c5f4345845f04eaa862f93"},
- {file = "contourpy-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:689d7d2a840619915d0abd1ecc6e399fee202f8ad315acda2807f4ca420d0802"},
- {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d88814befbd1433152c5f6dd536905149ba028d795a22555b149ae0a36024d9e"},
- {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df65f4b2b4e74977f0336bef12a88051ab24e6a16873cd9249f34d67cb3e345d"},
- {file = "contourpy-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6b4c0c723664f65c2a47c8cb6ebbf660b0b2e2d936adf2e8503d4e93359465"},
- {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bcc98d397c3dea45d5b262029564b29cb8e945f2607a38bee6163694c0a8b4ef"},
- {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2bf5c846c257578b03d498b20f54f53551616a507d8e5463511c58bb58e9a9cf"},
- {file = "contourpy-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdacddb18d55ffec42d1907079cdc04ec4fa8a990cdf5b9d9fe67d281fc0d12e"},
- {file = "contourpy-1.0.5-cp310-cp310-win32.whl", hash = "sha256:434942fa2f9019b9ae525fb752dc523800c49a1a28fbd6d9240b0fa959573dcc"},
- {file = "contourpy-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:3b3082ade8849130203d461b98c2a061b382c46074b43b4edd5cefd81af92b8a"},
- {file = "contourpy-1.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:057114f698ffb9e54657e8fda6802e2f5c8fad609845cf6afaf31590ef6a33c0"},
- {file = "contourpy-1.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:218722a29c5c26677d37c44f5f8a372daf6f07870aad793a97d47eb6ad6b3290"},
- {file = "contourpy-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c02e22cf09996194bcb3a4784099975cf527d5c29caf759abadf29ebdb2fe27"},
- {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0d5ee865b5fd16bf62d72122aadcc90aab296c30c1adb0a32b4b66bd843163e"},
- {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45822b0a2a452327ab4f95efe368d234d5294bbf89a99968be27c7938a21108"},
- {file = "contourpy-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dca5be83a6dfaf933a46e3bc2b9f2685e5ec61b22f6a38ad740aac9c16e9a0ff"},
- {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c3f2f6b898a40207843ae01970e57e33d22a26b22f23c6a5e07b4716751085f"},
- {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c2b4eab7c12f9cb460509bc34a3b086f9802f0dba27c89a63df4123819ad64af"},
- {file = "contourpy-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09ed9b63f4df8a7591b7a4a26c1ad066dcaafda1f846250fdcb534074a411692"},
- {file = "contourpy-1.0.5-cp311-cp311-win32.whl", hash = "sha256:f670686d99c867d0f24b28ce8c6f02429c6eef5e2674aab287850d0ee2d20437"},
- {file = "contourpy-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:c51568e94f7f232296de30002f2a50f77a7bd346673da3e4f2aaf9d2b833f2e5"},
- {file = "contourpy-1.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7c9e99aac7b430f6a9f15eebf058c742097cea3369f23a2bfc5e64d374b67e3a"},
- {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3210d93ad2af742b6a96cf39792f7181822edbb8fe11c3ef29d1583fe637a8d8"},
- {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128bd7acf569f8443ad5b2227f30ac909e4f5399ed221727eeacf0c6476187e6"},
- {file = "contourpy-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:813c2944e940ef8dccea71305bacc942d4b193a021140874b3e58933ec44f5b6"},
- {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a74afd8d560eaafe0d9e3e1db8c06081282a05ca4de00ee416195085a79d7d3d"},
- {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d0ad9a85f208473b1f3613c45756c7aa6fcc288266a8c7b873f896aaf741b6b"},
- {file = "contourpy-1.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:60f37acd4e4227c5a29f737d9a85ca3145c529a8dd4bf70af7f0637c61b49222"},
- {file = "contourpy-1.0.5-cp37-cp37m-win32.whl", hash = "sha256:b50e481a4317a8efcfffcfddcd4c9b36eacba440440e70cbe0256aeb6fd6abae"},
- {file = "contourpy-1.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:0395ae71164bfeb2dedd136e03c71a2718a5aa9873a46f518f4133be0d63e1d2"},
- {file = "contourpy-1.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3ca40d7844b391d90b864c6a6d1bb6b88b09035fb4d866d64d43c4d26fb0ab64"},
- {file = "contourpy-1.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3109fa601d2a448cec4643abd3a31f972bf05b7c2f2e83df9d3429878f8c10ae"},
- {file = "contourpy-1.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:06c4d1dde5ee4f909a8a95ba1eb04040c6c26946b4f3b5beaf10d45f14e940ee"},
- {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f54dcc9bb9390fd0636301ead134d46d5229fe86da0db4d974c0fda349f560e"},
- {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46b8e24813e2fb5a3e598c1f8b9ae403e1438cb846a80cc2b33cddf19dddd7f2"},
- {file = "contourpy-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:061e1f066c419ffe25b615a1df031b4832ea1d7f2676937e69e8e00e24512005"},
- {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:19ea64fa0cf389d2ebc10974616acfa1fdecbd73d1fd9c72215b782f3c40f561"},
- {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dfe924e5a63861c82332a12adeeab955dc8c8009ddbbd80cc2fcca049ff89a49"},
- {file = "contourpy-1.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bed3a2a823a041e8d249b1a7ec132933e1505299329b5cfe1b2b5ec689ec7675"},
- {file = "contourpy-1.0.5-cp38-cp38-win32.whl", hash = "sha256:0389349875424aa8c5e61f757e894687916bc4e9616cc6afcbd8051aa2428952"},
- {file = "contourpy-1.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:2b5e334330d82866923015b455260173cb3b9e3b4e297052d758abd262031289"},
- {file = "contourpy-1.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:def9a01b73c9e27d70ea03b381fb3e7aadfac1f398dbd63751313c3a46747ef5"},
- {file = "contourpy-1.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:59c827e536bb5e3ef58e06da0faba61fd89a14f30b68bcfeca41f43ca83a1942"},
- {file = "contourpy-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f05d311c937da03b0cd26ac3e14cb991f6ff8fc94f98b3df9713537817539795"},
- {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970a4be7ec84ccda7c27cb4ae74930bbbd477bc8d849ed55ea798084dd5fca8c"},
- {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f7672148f8fca48e4efc16aba24a7455b40c22d4f8abe42475dec6a12b0bb9a"},
- {file = "contourpy-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eba62b7c21a33e72dd8adab2b92dd5610d8527f0b2ac28a8e0770e71b21a13f9"},
- {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:dd084459ecdb224e617e4ab3f1d5ebe4d1c48facb41f24952b76aa6ba9712bb0"},
- {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c5158616ab39d34b76c50f40c81552ee180598f7825dc7a66fd187d29958820f"},
- {file = "contourpy-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f856652f9b533c6cd2b9ad6836a7fc0e43917d7ff15be46c5baf1350f8cdc5d9"},
- {file = "contourpy-1.0.5-cp39-cp39-win32.whl", hash = "sha256:f1cc623fd6855b25da52b3275e0c9e51711b86a9dccc75f8c9ab4432fd8e42c7"},
- {file = "contourpy-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:e67dcaa34dcd908fcccbf49194211d847c731b6ebaac661c1c889f1bf6af1e44"},
- {file = "contourpy-1.0.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfd634cb9685161b2a51f73a7fc4736fd0d67a56632d52319317afaa27f08243"},
- {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79908b9d02b1d6c1c71ff3b7ad127f3f82e14a8e091ab44b3c7e34b649fea733"},
- {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4963cf08f4320d98ae72ec7694291b8ab85cb7da3b0cd824bc32701bc992edf"},
- {file = "contourpy-1.0.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cfc067ddde78b76dcbc9684d82688b7d3c5158fa2254a085f9bcb9586c1e2d8"},
- {file = "contourpy-1.0.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9939796abcadb2810a63dfb26ff8ca4595fe7dd70a3ceae7f607a2639b714307"},
- {file = "contourpy-1.0.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d8150579bf30cdf896906baf256aa200cd50dbe6e565c17d6fd3d678e21ff5de"},
- {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed9c91bf4ce614efed5388c3f989a7cfe08728ab871d995a486ea74ff88993db"},
- {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46a04588ceb7cf132568e0e564a854627ef87a1ed3bf536234540a79ced44b0"},
- {file = "contourpy-1.0.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b85553699862c09937a7a5ea14ee6229087971a7d51ae97d5f4b407f571a2c17"},
- {file = "contourpy-1.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a8071e351b50827ad976b92ed91845fb614ac67a3c41109b24f3d8bd3afada"},
- {file = "contourpy-1.0.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fb0458d74726937ead9e2effc91144aea5a58ecee9754242f8539a782bed685a"},
- {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f89f0608a5aa8142ed0e53957916623791a88c7f5e5f07ae530c328beeb888f"},
- {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce763369e646e59e4ca2c09735cd1bdd3048d909ad5f2bc116e83166a9352f3c"},
- {file = "contourpy-1.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c16fa267740d67883899e054cccb4279e002f3f4872873b752c1ba15045ff49"},
- {file = "contourpy-1.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a30e95274f5c0e007ccc759ec258aa5708c534ec058f153ee25ac700a2f1438b"},
- {file = "contourpy-1.0.5.tar.gz", hash = "sha256:896631cd40222aef3697e4e51177d14c3709fda49d30983269d584f034acc8a4"},
-]
-crystals = [
- {file = "crystals-1.6.0-py3-none-any.whl", hash = "sha256:79c1ebfef788e12e05a4121ba1f381b448b43aba54735d81490150a0592f3f52"},
- {file = "crystals-1.6.0.tar.gz", hash = "sha256:1f289e22c3b1efba82bcbc9829a170cd702921dc8747186b0b755b5f4846785e"},
-]
-cycler = [
- {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
- {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
-]
-fonttools = [
- {file = "fonttools-4.37.4-py3-none-any.whl", hash = "sha256:afae1b39555f9c3f0ad1f0f1daf678e5ad157e38c8842ecb567951bf1a9b9fd7"},
- {file = "fonttools-4.37.4.zip", hash = "sha256:86918c150c6412798e15a0de6c3e0d061ddefddd00f97b4f7b43dfa867ad315e"},
-]
-idna = [
- {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
- {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
-]
-joblib = [
- {file = "joblib-1.2.0-py3-none-any.whl", hash = "sha256:091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385"},
- {file = "joblib-1.2.0.tar.gz", hash = "sha256:e1cee4a79e4af22881164f218d4311f60074197fb707e082e803b61f6d137018"},
-]
-kiwisolver = [
- {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"},
-]
-matplotlib = [
- {file = "matplotlib-3.6.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:7730e60e751cfcfe7fcb223cf03c0b979e9a064c239783ad37929d340a364cef"},
- {file = "matplotlib-3.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9dd40505ccc526acaf9a5db1b3029e237c64b58f1249983b28a291c2d6a1d0fa"},
- {file = "matplotlib-3.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:85948b303534b69fd771126764cf883fde2af9b003eb5778cb60f3b46f93d3f6"},
- {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71eced071825005011cdc64efbae2e2c76b8209c18aa487dedf69796fe4b1e40"},
- {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:220314c2d6b9ca11570d7cd4b841c9f3137546f188336003b9fb8def4dcb804d"},
- {file = "matplotlib-3.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cc5d726d4d42865f909c5208a7841109d76584950dd0587b01a77cc279d4ab7"},
- {file = "matplotlib-3.6.1-cp310-cp310-win32.whl", hash = "sha256:183bf3ac6a6023ee590aa4b677f391ceed65ec0d6b930901a8483c267bd12995"},
- {file = "matplotlib-3.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:a68b91ac7e6bb26100a540a033f54c95fe06d9c0aa51312c2a52d07d1bde78f4"},
- {file = "matplotlib-3.6.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:4648f0d79a87bf50ee740058305c91091ee5e1fbb71a7d2f5fe6707bfe328d1c"},
- {file = "matplotlib-3.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9403764017d20ff570f7ce973a8b9637f08a6109118f4e0ce6c7493d8849a0d3"},
- {file = "matplotlib-3.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4c8b5a243dd29d50289d694e931bd6cb6ae0b5bd654d12c647543d63862540c"},
- {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1effccef0cea2d4da9feeed22079adf6786f92c800a7d0d2ef2104318a1c66c"},
- {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dc25473319afabe49150267e54648ac559c33b0fc2a80c8caecfbbc2948a820"},
- {file = "matplotlib-3.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47cb088bbce82ae9fc2edf3c25e56a5c6142ce2553fea2b781679f960a70c207"},
- {file = "matplotlib-3.6.1-cp311-cp311-win32.whl", hash = "sha256:4d3b0e0a4611bd22065bbf47e9b2f689ac9e575bcb850a9f0ae2bbed75cab956"},
- {file = "matplotlib-3.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:e3c116e779fbbf421a9e4d3060db259a9bb486d98f4e3c5a0877c599bd173582"},
- {file = "matplotlib-3.6.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:565f514dec81a41cbed10eb6011501879695087fc2787fb89423a466508abbbd"},
- {file = "matplotlib-3.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:05e86446562063d6186ff6d700118c0dbd5dccc403a6187351ee526c48878f10"},
- {file = "matplotlib-3.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8245e85fd793f58edf29b8a9e3be47e8ecf76ea1a1e8240545f2746181ca5787"},
- {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e2c75d5d1ff6b7ef9870360bfa23bea076b8dc0945a60d19453d7619ed9ea8f"},
- {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c9756a8e69f6e1f76d47eb42132175b6814da1fbeae0545304c6d0fc2aae252a"},
- {file = "matplotlib-3.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f5788168da2661b42f7468063b725cc73fdbeeb80f2704cb2d8c415e9a57c50"},
- {file = "matplotlib-3.6.1-cp38-cp38-win32.whl", hash = "sha256:0bab7564aafd5902128d54b68dca04f5755413fb6b502100bb0235a545882c48"},
- {file = "matplotlib-3.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3c53486278a0629fd892783271dc994b962fba8dfe207445d039e14f1928ea46"},
- {file = "matplotlib-3.6.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:27337bcb38d5db7430c14f350924542d75416ec1546d5d9d9f39b362b71db3fb"},
- {file = "matplotlib-3.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fad858519bd6d52dbfeebdbe04d00dd8e932ed436f1c535e61bcc970a96c11e4"},
- {file = "matplotlib-3.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4a3d903588b519b38ed085d0ae762a1dcd4b70164617292175cfd91b90d6c415"},
- {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bdbd37d0a41e025879863fe9b17bab15c0421313bc33e77e5e1aa54215c9c5"},
- {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e632f66218811d4cf8b7a2a649e25ec15406c3c498f72d19e2bcf8377f38445d"},
- {file = "matplotlib-3.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ddd58324dc9a77e2e56d7b7aea7dbd0575b6f7cd1333c3ca9d388ac70978344"},
- {file = "matplotlib-3.6.1-cp39-cp39-win32.whl", hash = "sha256:12ab21d0cad122f5b23688d453a0280676e7c42f634f0dbd093d15d42d142b1f"},
- {file = "matplotlib-3.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:563896ba269324872ace436a57775dcc8322678a9496b28a8c25cdafa5ec2b92"},
- {file = "matplotlib-3.6.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:52935b7d4ccbf0dbc9cf454dbb10ca99c11cbe8da9467596b96e5e21fd4dfc5c"},
- {file = "matplotlib-3.6.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87027ff7b2edeb14476900261ef04d4beae949e1dfa0a3eb3ad6a6efbf9d0e1d"},
- {file = "matplotlib-3.6.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4de03085afb3b80fab341afaf8e60dfe06ce439b6dfed55d657cf34a7bc3c40"},
- {file = "matplotlib-3.6.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b53387d4e59432ff221540a4ffb5ee9669c69417805e4faf0148a00d701c61f9"},
- {file = "matplotlib-3.6.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:02561141c434154f7bae8e5449909d152367cb40aa57bfb2a27f2748b9c5f95f"},
- {file = "matplotlib-3.6.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0161ebf87518ecfe0980c942d5f0d5df0e080c1746ebaab2027a969967014b7"},
- {file = "matplotlib-3.6.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2469f57e4c5cc0e85eddc7b30995ea9c404a78c0b1856da75d1a5887156ca350"},
- {file = "matplotlib-3.6.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5f97141e05baf160c3ec125f06ceb2a44c9bb62f42fcb8ee1c05313c73e99432"},
- {file = "matplotlib-3.6.1.tar.gz", hash = "sha256:e2d1b7225666f7e1bcc94c0bc9c587a82e3e8691da4757e357e5c2515222ee37"},
-]
-numpy = [
- {file = "numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2"},
- {file = "numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f"},
- {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71"},
- {file = "numpy-1.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3"},
- {file = "numpy-1.23.4-cp310-cp310-win32.whl", hash = "sha256:2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd"},
- {file = "numpy-1.23.4-cp310-cp310-win_amd64.whl", hash = "sha256:d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329"},
- {file = "numpy-1.23.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db"},
- {file = "numpy-1.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f"},
- {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0"},
- {file = "numpy-1.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488"},
- {file = "numpy-1.23.4-cp311-cp311-win32.whl", hash = "sha256:5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79"},
- {file = "numpy-1.23.4-cp311-cp311-win_amd64.whl", hash = "sha256:7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d"},
- {file = "numpy-1.23.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5"},
- {file = "numpy-1.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6"},
- {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f"},
- {file = "numpy-1.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68"},
- {file = "numpy-1.23.4-cp38-cp38-win32.whl", hash = "sha256:dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba"},
- {file = "numpy-1.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8"},
- {file = "numpy-1.23.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894"},
- {file = "numpy-1.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7"},
- {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735"},
- {file = "numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0"},
- {file = "numpy-1.23.4-cp39-cp39-win32.whl", hash = "sha256:f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef"},
- {file = "numpy-1.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e"},
- {file = "numpy-1.23.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911"},
- {file = "numpy-1.23.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810"},
- {file = "numpy-1.23.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962"},
- {file = "numpy-1.23.4.tar.gz", hash = "sha256:ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c"},
-]
-packaging = [
- {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
- {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
-]
-pandas = [
- {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0d8d7433d19bfa33f11c92ad9997f15a902bda4f5ad3a4814a21d2e910894484"},
- {file = "pandas-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cc47f2ebaa20ef96ae72ee082f9e101b3dfbf74f0e62c7a12c0b075a683f03c"},
- {file = "pandas-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e8e5edf97d8793f51d258c07c629bd49d271d536ce15d66ac00ceda5c150eb3"},
- {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41aec9f87455306496d4486df07c1b98c15569c714be2dd552a6124cd9fda88f"},
- {file = "pandas-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c76f1d104844c5360c21d2ef0e1a8b2ccf8b8ebb40788475e255b9462e32b2be"},
- {file = "pandas-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:1642fc6138b4e45d57a12c1b464a01a6d868c0148996af23f72dde8d12486bbc"},
- {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:171cef540bfcec52257077816a4dbbac152acdb8236ba11d3196ae02bf0959d8"},
- {file = "pandas-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a68a9b9754efff364b0c5ee5b0f18e15ca640c01afe605d12ba8b239ca304d6b"},
- {file = "pandas-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:86d87279ebc5bc20848b4ceb619073490037323f80f515e0ec891c80abad958a"},
- {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:207d63ac851e60ec57458814613ef4b3b6a5e9f0b33c57623ba2bf8126c311f8"},
- {file = "pandas-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e252a9e49b233ff96e2815c67c29702ac3a062098d80a170c506dff3470fd060"},
- {file = "pandas-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:de34636e2dc04e8ac2136a8d3c2051fd56ebe9fd6cd185581259330649e73ca9"},
- {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1d34b1f43d9e3f4aea056ba251f6e9b143055ebe101ed04c847b41bb0bb4a989"},
- {file = "pandas-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b82ccc7b093e0a93f8dffd97a542646a3e026817140e2c01266aaef5fdde11b"},
- {file = "pandas-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e30a31039574d96f3d683df34ccb50bb435426ad65793e42a613786901f6761"},
- {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62e61003411382e20d7c2aec1ee8d7c86c8b9cf46290993dd8a0a3be44daeb38"},
- {file = "pandas-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc987f7717e53d372f586323fff441263204128a1ead053c1b98d7288f836ac9"},
- {file = "pandas-1.5.0-cp38-cp38-win32.whl", hash = "sha256:e178ce2d7e3b934cf8d01dc2d48d04d67cb0abfaffdcc8aa6271fd5a436f39c8"},
- {file = "pandas-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:33a9d9e21ab2d91e2ab6e83598419ea6a664efd4c639606b299aae8097c1c94f"},
- {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:73844e247a7b7dac2daa9df7339ecf1fcf1dfb8cbfd11e3ffe9819ae6c31c515"},
- {file = "pandas-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9c5049333c5bebf993033f4bf807d163e30e8fada06e1da7fa9db86e2392009"},
- {file = "pandas-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85a516a7f6723ca1528f03f7851fa8d0360d1d6121cf15128b290cf79b8a7f6a"},
- {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:947ed9f896ee61adbe61829a7ae1ade493c5a28c66366ec1de85c0642009faac"},
- {file = "pandas-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7f38d91f21937fe2bec9449570d7bf36ad7136227ef43b321194ec249e2149d"},
- {file = "pandas-1.5.0-cp39-cp39-win32.whl", hash = "sha256:2504c032f221ef9e4a289f5e46a42b76f5e087ecb67d62e342ccbba95a32a488"},
- {file = "pandas-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a4fc04838615bf0a8d3a03ed68197f358054f0df61f390bcc64fbe39e3d71ec"},
- {file = "pandas-1.5.0.tar.gz", hash = "sha256:3ee61b881d2f64dd90c356eb4a4a4de75376586cd3c9341c6c0fcaae18d52977"},
-]
-pillow = [
- {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"},
- {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"},
- {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"},
- {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"},
- {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"},
- {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"},
- {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"},
- {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"},
- {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"},
- {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"},
- {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"},
- {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"},
- {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"},
- {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"},
- {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"},
- {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"},
- {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"},
- {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"},
- {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"},
- {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"},
- {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"},
- {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"},
- {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"},
- {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"},
- {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"},
- {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"},
- {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"},
- {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"},
- {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"},
- {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"},
- {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"},
- {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"},
- {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"},
- {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"},
- {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"},
- {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"},
- {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"},
- {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"},
- {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"},
- {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"},
- {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"},
- {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"},
- {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"},
- {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"},
- {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"},
- {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"},
- {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"},
- {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"},
- {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"},
- {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"},
- {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"},
- {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"},
- {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"},
- {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"},
- {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"},
- {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"},
- {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"},
- {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"},
-]
-pycifrw = [
- {file = "PyCifRW-4.4.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:ebbb298655b291292feb2c5594c815de0366702a95437f7f102a57a090b6dd83"},
- {file = "PyCifRW-4.4.2.tar.gz", hash = "sha256:a1b6ca0098c9c986b80a50f6cf05122ad65434a18b97a1120f83304ba485acc7"},
-]
-pyparsing = [
- {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
- {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
-]
-python-dateutil = [
- {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"},
-]
-pytz = [
- {file = "pytz-2022.5-py2.py3-none-any.whl", hash = "sha256:335ab46900b1465e714b4fda4963d87363264eb662aab5e65da039c25f1f5b22"},
- {file = "pytz-2022.5.tar.gz", hash = "sha256:c4d88f472f54d615e9cd582a5004d1e5f624854a6a27a6211591c251f22a6914"},
-]
-requests = [
- {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
- {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
-]
-scikit-learn = [
- {file = "scikit-learn-1.1.2.tar.gz", hash = "sha256:7c22d1305b16f08d57751a4ea36071e2215efb4c09cb79183faa4e8e82a3dbf8"},
- {file = "scikit_learn-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6c840f662b5d3377c4ccb8be1fc21bb52cb5d8b8790f8d6bf021739f84e543cf"},
- {file = "scikit_learn-1.1.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:2b8db962360c93554cab7bb3c096c4a24695da394dd4b3c3f13409f409b425bc"},
- {file = "scikit_learn-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e7d1fc817867a350133f937aaebcafbc06192517cbdf0cf7e5774ad4d1adb9f"},
- {file = "scikit_learn-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec3ea40d467966821843210c02117d82b097b54276fdcfb50f4dfb5c60dbe39"},
- {file = "scikit_learn-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbef6ea1c012ff9f3e6f6e9ca006b8772d8383e177b898091e68fbd9b3f840f9"},
- {file = "scikit_learn-1.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a90ca42fe8242fd6ff56cda2fecc5fca586a88a24ab602d275d2d0dcc0b928fb"},
- {file = "scikit_learn-1.1.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a682ec0f82b6f30fb07486daed1c8001b6683cc66b51877644dfc532bece6a18"},
- {file = "scikit_learn-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c33e16e9a165af6012f5be530ccfbb672e2bc5f9b840238a05eb7f6694304e3f"},
- {file = "scikit_learn-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94c0146bad51daef919c402a3da8c1c6162619653e1c00c92baa168fda292f2"},
- {file = "scikit_learn-1.1.2-cp38-cp38-win32.whl", hash = "sha256:2f46c6e3ff1054a5ec701646dcfd61d43b8ecac4d416014daed8843cf4c33d4d"},
- {file = "scikit_learn-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1e706deca9b2ad87ae27dafd5ac4e8eff01b6db492ed5c12cef4735ec5f21ea"},
- {file = "scikit_learn-1.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:567417dbbe6a6278399c3e6daf1654414a5a1a4d818d28f251fa7fc28730a1bf"},
- {file = "scikit_learn-1.1.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:d6f232779023c3b060b80b5c82e5823723bc424dcac1d1a148aa2492c54d245d"},
- {file = "scikit_learn-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:589d46f28460469f444b898223b13d99db9463e1038dc581ba698111f612264b"},
- {file = "scikit_learn-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76800652fb6d6bf527bce36ecc2cc25738b28fe1a17bd294a218fff8e8bd6d50"},
- {file = "scikit_learn-1.1.2-cp39-cp39-win32.whl", hash = "sha256:1c8fecb7c9984d9ec2ea48898229f98aad681a0873e0935f2b7f724fbce4a047"},
- {file = "scikit_learn-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:407e9a1cb9e6ba458a539986a9bd25546a757088095b3aab91d465b79a760d37"},
-]
-scipy = [
- {file = "scipy-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ee4ceed204f269da19f67f0115a85d3a2cd8547185037ad99a4025f9c61d02e9"},
- {file = "scipy-1.9.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:17be1a7c68ec4c49d8cd4eb1655d55d14a54ab63012296bdd5921c92dc485acd"},
- {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72297eb9702576bd8f626bb488fd32bb35349d3120fc4a5e733db137f06c9a6"},
- {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa270cc6080c987929335c4cb94e8054fee9a6058cecff22276fa5dbab9856fc"},
- {file = "scipy-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:22380e076a162e81b659d53d75b02e9c75ad14ea2d53d9c645a12543414e2150"},
- {file = "scipy-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbed414fc25d64bd6d1613dc0286fbf91902219b8be63ad254525162235b67e9"},
- {file = "scipy-1.9.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:885b7ac56d7460544b2ef89ab9feafa30f4264c9825d975ef690608d07e6cc55"},
- {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5994a8232cc6510a8e85899661df2d11198bf362f0ffe6fbd5c0aca17ab46ce3"},
- {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9c83dccac06f3b9aa02df69577f239758d5d0d0c069673fb0b47ecb971983d"},
- {file = "scipy-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:92c5e627a0635ca02e6494bbbdb74f98d93ac8730416209d61de3b70c8a821be"},
- {file = "scipy-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b6194da32e0ce9200b2eda4eb4edb89c5cb8b83d6deaf7c35f8ad3d5d7627d5c"},
- {file = "scipy-1.9.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:148cb6f53d9d10dafde848e9aeb1226bf2809d16dc3221b2fa568130b6f2e586"},
- {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:658fd31c6ad4eb9fa3fd460fcac779f70a6bc7480288a211b7658a25891cf01d"},
- {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4012dbe540732311b8f4388b7e1482eb43a7cc0435bbf2b9916b3d6c38fb8d01"},
- {file = "scipy-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d6cb1f92ded3fc48f7dbe94d20d7b9887e13b874e79043907de541c841563b4c"},
- {file = "scipy-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1e3b23a82867018cd26255dc951789a7c567921622073e1113755866f1eae928"},
- {file = "scipy-1.9.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:82e8bfb352aa9dce9a0ffe81f4c369a2c87c85533519441686f59f21d8c09697"},
- {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b95283529712101bfb7c87faf94cb86ed9e64de079509edfe107e5cfa55733"},
- {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8c29703202c39d699b0d6b164bde5501c212005f20abf46ae322b9307c8a41"},
- {file = "scipy-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:7b2608b3141c257d01ae772e23b3de9e04d27344e6b68a890883795229cb7191"},
- {file = "scipy-1.9.2.tar.gz", hash = "sha256:99e7720caefb8bca6ebf05c7d96078ed202881f61e0c68bd9e0f3e8097d6f794"},
-]
-setuptools = [
- {file = "setuptools-65.5.0-py3-none-any.whl", hash = "sha256:f62ea9da9ed6289bfe868cd6845968a2c854d1427f8548d52cae02a42b4f0356"},
- {file = "setuptools-65.5.0.tar.gz", hash = "sha256:512e5536220e38146176efb833d4a62aa726b7bbff82cfbc8ba9eaa3996e0b17"},
-]
-setuptools-scm = [
- {file = "setuptools_scm-7.0.5-py3-none-any.whl", hash = "sha256:7930f720905e03ccd1e1d821db521bff7ec2ac9cf0ceb6552dd73d24a45d3b02"},
- {file = "setuptools_scm-7.0.5.tar.gz", hash = "sha256:031e13af771d6f892b941adb6ea04545bbf91ebc5ce68c78aaf3fff6e1fb4844"},
-]
-shapely = [
+files = [
{file = "Shapely-1.8.5.post1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d048f93e42ba578b82758c15d8ae037d08e69d91d9872bca5a1895b118f4e2b0"},
{file = "Shapely-1.8.5.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99ab0ddc05e44acabdbe657c599fdb9b2d82e86c5493bdae216c0c4018a82dee"},
{file = "Shapely-1.8.5.post1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a2f0da0109e81e0c101a2b4cd8412f73f5f299e7b5b2deaf64cd2a100ac118"},
{file = "Shapely-1.8.5.post1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6fe855e7d45685926b6ba00aaeb5eba5862611f7465775dacd527e081a8ced6d"},
{file = "Shapely-1.8.5.post1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec14ceca36f67cb48b34d02d7f65a9acae15cd72b48e303531893ba4a960f3ea"},
+ {file = "Shapely-1.8.5.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a2b2a65fa7f97115c1cd989fe9d6f39281ca2a8a014f1d4904c1a6e34d7f25"},
{file = "Shapely-1.8.5.post1-cp310-cp310-win32.whl", hash = "sha256:21776184516a16bf82a0c3d6d6a312b3cd15a4cabafc61ee01cf2714a82e8396"},
{file = "Shapely-1.8.5.post1-cp310-cp310-win_amd64.whl", hash = "sha256:a354199219c8d836f280b88f2c5102c81bb044ccea45bd361dc38a79f3873714"},
{file = "Shapely-1.8.5.post1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:783bad5f48e2708a0e2f695a34ed382e4162c795cb2f0368b39528ac1d6db7ed"},
@@ -807,6 +787,7 @@ shapely = [
{file = "Shapely-1.8.5.post1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b65f5d530ba91e49ffc7c589255e878d2506a8b96ffce69d3b7c4500a9a9eaf8"},
{file = "Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:147066da0be41b147a61f8eb805dea3b13709dbc873a431ccd7306e24d712bc0"},
{file = "Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c2822111ddc5bcfb116e6c663e403579d0fe3f147d2a97426011a191c43a7458"},
+ {file = "Shapely-1.8.5.post1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b47bb6f9369e8bf3e6dbd33e6a25a47ee02b2874792a529fe04a49bf8bc0df6"},
{file = "Shapely-1.8.5.post1-cp38-cp38-win32.whl", hash = "sha256:2e0a8c2e55f1be1312b51c92b06462ea89e6bb703fab4b114e7a846d941cfc40"},
{file = "Shapely-1.8.5.post1-cp38-cp38-win_amd64.whl", hash = "sha256:0d885cb0cf670c1c834df3f371de8726efdf711f18e2a75da5cfa82843a7ab65"},
{file = "Shapely-1.8.5.post1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0b4ee3132ee90f07d63db3aea316c4c065ed7a26231458dda0874414a09d6ba3"},
@@ -814,45 +795,121 @@ shapely = [
{file = "Shapely-1.8.5.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c6a9a4a31cd6e86d0fbe8473ceed83d4fe760b19d949fb557ef668defafea0f6"},
{file = "Shapely-1.8.5.post1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:38f0fbbcb8ca20c16451c966c1f527cc43968e121c8a048af19ed3e339a921cd"},
{file = "Shapely-1.8.5.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:78fb9d929b8ee15cfd424b6c10879ce1907f24e05fb83310fc47d2cd27088e40"},
+ {file = "Shapely-1.8.5.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89164e7a9776a19e29f01369a98529321994e2e4d852b92b7e01d4d9804c55bf"},
{file = "Shapely-1.8.5.post1-cp39-cp39-win32.whl", hash = "sha256:8e59817b0fe63d34baedaabba8c393c0090f061917d18fc0bcc2f621937a8f73"},
{file = "Shapely-1.8.5.post1-cp39-cp39-win_amd64.whl", hash = "sha256:e9c30b311de2513555ab02464ebb76115d242842b29c412f5a9aa0cac57be9f6"},
{file = "Shapely-1.8.5.post1.tar.gz", hash = "sha256:ef3be705c3eac282a28058e6c6e5503419b250f482320df2172abcbea642c831"},
]
-six = [
+
+[package.extras]
+all = ["numpy", "pytest", "pytest-cov"]
+test = ["pytest", "pytest-cov"]
+vectorized = ["numpy"]
+
+[[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"},
]
-spglib = [
- {file = "spglib-1.16.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc87809dfb9932cd01b9daf03b2b2233d88dedf67fa6856870eb3491cc2ff60b"},
- {file = "spglib-1.16.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb162a56deef2ae843ebbcdfdb59b5980a30843e34612fc2f73d2f9ebe6ed80e"},
- {file = "spglib-1.16.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e9f50db87b60f0f20b18f3c2ab6d810a97b0f946b2fa475261ca37e6ce826622"},
- {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a024bdd4ed731f548c23872d7883bdfac3ed8ff2e67f72d32d7fa10d15091d30"},
- {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e901e2a9a73d133aab65e8c6a011cb438cd50d39912f08237d6c3e30990bf"},
- {file = "spglib-1.16.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0ef4c5cbd7cb8d1a5b3e289f7c5742bfb52264732301e54c658b0bd2aa0d4154"},
- {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ba67c2d3a548c3baf849dd7762e4c350348d9a28c1039d21acdca6e17edd1b7"},
- {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e90e31644ef8d9197e5a5d995421fc5903fa27a770e0c026db6fd44a414a62a"},
- {file = "spglib-1.16.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:77e135225fe5ddedaec5779539ac47891c7d347776055d8f244b15a11181ba88"},
- {file = "spglib-1.16.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252d9e676409824286358c600abf8ead71b2fabc8865ae17a24e12631a8a48e2"},
- {file = "spglib-1.16.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b8ce19acee0720ad9568f088251be13f767c1c6722f0fcfffe1c45bb6a0e852"},
- {file = "spglib-1.16.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:17c2ae3ff10f3c112628f775fd3c24800e5f142c5be369ece45c3a73943b3bba"},
- {file = "spglib-1.16.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519bf6aad8ab0cd9bd91dd006d618ea5f24b9d518f7d344498d0f47295e76f94"},
- {file = "spglib-1.16.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10f724b1f464d3510f388a17a66f6ca65ef2ee9bbfe13e0bfd80dd0d5e1058e"},
- {file = "spglib-1.16.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2aceb406538e11ca565d890a8ac8b38e650f1dc652d9acb020c8a1dae1fa9c02"},
- {file = "spglib-1.16.5.tar.gz", hash = "sha256:2eacefd53cc644ba9a90c4681fd6c934b6bdd818c113d7f319904e078d5dab93"},
+
+[[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"},
]
-threadpoolctl = [
+
+[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 = "threadpoolctl"
+version = "3.1.0"
+description = "threadpoolctl"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
{file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"},
{file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"},
]
-tomli = [
- {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
- {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
-]
-typing-extensions = [
- {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 = "urllib3"
+version = "2.0.2"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"},
+ {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"},
]
-urllib3 = [
- {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"},
- {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"},
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "zipp"
+version = "3.15.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
+ {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "^3.8"
+content-hash = "4bbf17f45a03a46ecaad52832e2311cb1c902b2517c66984b63b45048df94a9b"
From 7eb3827576ac8c9e276634eabe6fb50c5e52c73c Mon Sep 17 00:00:00 2001
From: Tilas Kabengele
Date: Sun, 4 Jun 2023 15:36:53 -0400
Subject: [PATCH 87/87] modified README.md, added more package dependencies;
ase, pymatgen, pyvista
---
README.md | 4 +-
__pycache__/helpers_bicrystal.cpython-38.pyc | Bin 0 -> 3661 bytes
bicrystal/.bicrystal.swp | Bin 12288 -> 0 bytes
bicrystal/.program.py.swp | Bin 36864 -> 0 bytes
bicrystal/__pycache__/ase.cpython-38.pyc | Bin 0 -> 802 bytes
.../helpers_bicrystal.cpython-38.pyc | Bin 0 -> 3985 bytes
bicrystal/atomic_plotting_data.json | 1 +
bicrystal/bicrystal | 59 +-
bicrystal/cifs/mos.cif | 88 ---
bicrystal/cifs/mos2.cif | 37 +
bicrystal/examples/blue_phosphorene/pp.scf.in | 42 -
.../examples/blue_phosphorene/pp124.scf.in | 161 ----
.../examples/blue_phosphorene/pp148.scf.in | 185 -----
.../examples/blue_phosphorene/pp172.scf.in | 209 -----
.../examples/blue_phosphorene/pp196.scf.in | 233 ------
.../examples/blue_phosphorene/pp244.scf.in | 281 -------
.../examples/blue_phosphorene/pp268.scf.in | 305 -------
.../examples/blue_phosphorene/pp28.scf.in | 65 --
.../examples/blue_phosphorene/pp316.scf.in | 353 ---------
.../examples/blue_phosphorene/pp364.scf.in | 401 ----------
.../examples/blue_phosphorene/pp52.scf.in | 89 ---
.../examples/blue_phosphorene/pp76.scf.in | 113 ---
bicrystal/examples/cc28.scf.in | 63 ++
bicrystal/examples/graphite/cc124.scf.in | 161 ----
bicrystal/examples/graphite/cc148.scf.in | 185 -----
bicrystal/examples/graphite/cc172.scf.in | 209 -----
bicrystal/examples/graphite/cc196.scf.in | 233 ------
bicrystal/examples/graphite/cc244.scf.in | 281 -------
bicrystal/examples/graphite/cc268.scf.in | 305 -------
bicrystal/examples/graphite/cc28.scf.in | 65 --
bicrystal/examples/graphite/cc316.scf.in | 353 ---------
bicrystal/examples/graphite/cc364.scf.in | 401 ----------
bicrystal/examples/graphite/cc52.scf.in | 89 ---
bicrystal/examples/graphite/cc76.scf.in | 113 ---
bicrystal/examples/mos2/mos114.scf.in | 152 ----
bicrystal/examples/mos2/mos186.scf.in | 224 ------
bicrystal/examples/mos2/mos186b.scf.in | 224 ------
bicrystal/examples/mos2/mos222.scf.in | 260 ------
bicrystal/examples/mos2/mos258.scf.in | 296 -------
bicrystal/examples/mos2/mos294.scf.in | 332 --------
bicrystal/examples/mos2/mos294b.scf.in | 332 --------
bicrystal/examples/mos2/mos366.scf.in | 404 ----------
bicrystal/examples/mos2/mos402.scf.in | 440 -----------
bicrystal/examples/mos2/mos42.scf.in | 80 --
bicrystal/examples/mos2/mos42b.scf.in | 80 --
bicrystal/examples/mos2/mos474.scf.in | 512 ------------
bicrystal/examples/mos2/mos546.scf.in | 584 --------------
bicrystal/examples/mos42.scf.in | 78 ++
bicrystal/examples/pp28.scf.in | 63 ++
bicrystal/helpers_bicrystal.py | 285 +++++++
.../other_plotting/plotting_bicrystal.py.cp | 122 +++
.../other_plotting/plotting_bicrystal.py.cp2 | 98 +++
.../plotting_bicrystal.py.cp3_works_but_slow | 104 +++
.../plotting_bicrystal.py.cp4_browser_plot | 127 +++
...g_bicrystal.py.cp5_small_scatters_but_fast | 92 +++
bicrystal/plotting_bicrystal.py | 92 +++
bicrystal/program.py | 589 ++++----------
poetry.lock | 744 +++++++++++++++++-
pyproject.toml | 4 +
59 files changed, 2085 insertions(+), 9317 deletions(-)
create mode 100644 __pycache__/helpers_bicrystal.cpython-38.pyc
delete mode 100644 bicrystal/.bicrystal.swp
delete mode 100644 bicrystal/.program.py.swp
create mode 100644 bicrystal/__pycache__/ase.cpython-38.pyc
create mode 100644 bicrystal/__pycache__/helpers_bicrystal.cpython-38.pyc
create mode 100644 bicrystal/atomic_plotting_data.json
delete mode 100644 bicrystal/cifs/mos.cif
create mode 100644 bicrystal/cifs/mos2.cif
delete mode 100644 bicrystal/examples/blue_phosphorene/pp.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp124.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp148.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp172.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp196.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp244.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp268.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp28.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp316.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp364.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp52.scf.in
delete mode 100644 bicrystal/examples/blue_phosphorene/pp76.scf.in
create mode 100644 bicrystal/examples/cc28.scf.in
delete mode 100644 bicrystal/examples/graphite/cc124.scf.in
delete mode 100644 bicrystal/examples/graphite/cc148.scf.in
delete mode 100644 bicrystal/examples/graphite/cc172.scf.in
delete mode 100644 bicrystal/examples/graphite/cc196.scf.in
delete mode 100644 bicrystal/examples/graphite/cc244.scf.in
delete mode 100644 bicrystal/examples/graphite/cc268.scf.in
delete mode 100644 bicrystal/examples/graphite/cc28.scf.in
delete mode 100644 bicrystal/examples/graphite/cc316.scf.in
delete mode 100644 bicrystal/examples/graphite/cc364.scf.in
delete mode 100644 bicrystal/examples/graphite/cc52.scf.in
delete mode 100644 bicrystal/examples/graphite/cc76.scf.in
delete mode 100644 bicrystal/examples/mos2/mos114.scf.in
delete mode 100644 bicrystal/examples/mos2/mos186.scf.in
delete mode 100644 bicrystal/examples/mos2/mos186b.scf.in
delete mode 100644 bicrystal/examples/mos2/mos222.scf.in
delete mode 100644 bicrystal/examples/mos2/mos258.scf.in
delete mode 100644 bicrystal/examples/mos2/mos294.scf.in
delete mode 100644 bicrystal/examples/mos2/mos294b.scf.in
delete mode 100644 bicrystal/examples/mos2/mos366.scf.in
delete mode 100644 bicrystal/examples/mos2/mos402.scf.in
delete mode 100644 bicrystal/examples/mos2/mos42.scf.in
delete mode 100644 bicrystal/examples/mos2/mos42b.scf.in
delete mode 100644 bicrystal/examples/mos2/mos474.scf.in
delete mode 100644 bicrystal/examples/mos2/mos546.scf.in
create mode 100644 bicrystal/examples/mos42.scf.in
create mode 100644 bicrystal/examples/pp28.scf.in
create mode 100644 bicrystal/helpers_bicrystal.py
create mode 100644 bicrystal/other_plotting/plotting_bicrystal.py.cp
create mode 100644 bicrystal/other_plotting/plotting_bicrystal.py.cp2
create mode 100644 bicrystal/other_plotting/plotting_bicrystal.py.cp3_works_but_slow
create mode 100644 bicrystal/other_plotting/plotting_bicrystal.py.cp4_browser_plot
create mode 100644 bicrystal/other_plotting/plotting_bicrystal.py.cp5_small_scatters_but_fast
create mode 100644 bicrystal/plotting_bicrystal.py
diff --git a/README.md b/README.md
index a5eb2c5..f32549c 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ Building unit cells of arbitrary size is often an inevitable task when studying
# Download and Installation
The latest version of ``BiCrystal`` can be found on github:
-https://github.com/tilaskabengele/BiCrystal/releases/tag/v1.0.7
+https://github.com/tilaskabengele/BiCrystal
**Contact**: Tilas Kabengele at tilas.kabengele@dal.ca or tilas_kabengele@brown.edu
@@ -85,7 +85,7 @@ After that, you will be required to pick a zeroeth atom from the top and bottom

- Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with Xcrysden for a more sophisticated look.
+ Finally, you can save your output as a QUANTUM ESPRESSO file and visualize with VESTA or Xcrysden for a more sophisticated look.
********************* SUMMARY REPORT ***********************
diff --git a/__pycache__/helpers_bicrystal.cpython-38.pyc b/__pycache__/helpers_bicrystal.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7628b5e640f01a733edd31f4fe4089e50de75ad6
GIT binary patch
literal 3661
zcmcIm&u<&Y6`q-$T`nn7qG;N(9H(`HA^ppy>|PcLh$Ux5(OT}V
zXIEB8%mM|J9t#vb^(Y+;^w@jbf1$^{G(datsfXTr%J*hT$&%ee4_#vBy_q-MeecbC
z-+RC6bXpA0?|-{czk8jrf6(H^M_};3%aH@RS&eSuBkp~M_pGpK-bllx(T|Ww$&}r
zu6j+~2HjNrAsf8@9Gb8P15vr3r_-dU8lR`}e3B+(PJ-pr0Ch1w#K<3DQoQ67Rtm#D
zVqe`Z9mAE_VkI}?lo{tSSI#y&bIIl7Au91ox_cvmjm7eh)vS;#v
zrq4aM6FF%hD=*BlC{fksI8C+6hx1?>b+mrk_($ARQz~}z+&dxzPi*|~`a1nA^N9^d@#M
zxl>}}+?~5v{IBkO$TYoU;Apy;s=IX2ID}jBX_!>bY??fidJR(D#zYPwsqWAYnOsk#
zcICzCag-NtfzRpiizevnSpPqj*W@(l8-A_(;I8V{IG9cjpxlokds(?HQjX$f^^jLR
z3>&ET!BCJE%)rAZqGX06T>A)Damuml(5?;Bo?%8DdiotDN|{LIl+s9~2Lh8`_vn*>
z(3INN-vc-B;pbwA;Huok5J6S(MeW*kI`p!C#|V*MK$Mfi;a|~0a8Q7F;Pox+UGnjz
zeA|Z_ZnR5c!EoSpe8s}n1)q8FsjeEii(ACK7+YVZSLgPfBE!|`>$``8+g`Wdq=tnJt`-T5`7JvzJY1bupt&mcw*^*ZIa!@
z6u>h@ngy+8iXe5bI;I7{iF6#!BR#@DR?b=GPM`OASLoZ2j49ez4+RW4$lmck!5H?K
zed(35bW5*nlz!PP_^ANI$UXz-DBN)$uxeb)a^jrvvSm-e4a@Z!z)5byt;X46rqySd
zYkrORvW@eShG}1%Il~D9`I#s?=km_Q{~#CiF38s*cWIdQSN?wk`yE_G*K|x9bklUr
zCcf3d{>DBaa^OCg)DHOez2^?N)#}d{IR{?Vi^HOrj-z1~>Tnjpv3Vtuta3xG!+9n1
zC%OP0Dh1Fw8Wn`5gPy%U904fi6`xf+sYG}eV;5r&f;c+}D>;gauyQBiYzC6XYPck$
zN<78sr#Ss|5940oCeiUQtjXx=eK#N+M{#@%{d3B8=JdQbamjbM{Sjtb
z#G?SP7ycy}B&&pzkj|E(>R3wGLHka@PLVCfh2uTTquPLPSYBA(w>&}u`%UAShVe~v
zA1VKgqZsP%<13Y;(qhokJK*&XX}U`j;dSMudODdV75^e|p6a_a?b5VI)4iAM)@ea@
z{{erkiv&Wv{-HqBMdDq^E`>Q+eO@FeJqW}QqUaX3**;*3;0tSnw_UpiAx|N^Tzd#<
zTB9;sdBY&w$2IntPb9M}hr
zyx|-Qy=$C@hz`r&CkR)BYs>z^+Vu!klS)SA9Z!n`++mGEIhA`LJ35Ai{wd@Z&jW9K
z5RDJ-F6r)7)4XXy#{CuNm&WyY3qPMr4E;0gUjlaeFnQR9GTks?7oZ)jn7)VQfLH!F
zN(!A$6~d78fNQZ4>8qb^*mGh0H=M~WJ_=9hkFdJ*MUv1x+AqEjhI$Q*x^?@WEgJmL
z)o)Uu{0O={0m4~MfJ15>O8u^aQ`O3u?h8Tk=o70J+BMh0c-73(d^kp1Rs_u?n$+y8
zyN>)g%p&!7sI<%pG)^`vTEaR|=uaWLWDFT{ZVVL$GKO4;vfif3xHO?<9ZEd|9NNbf
z&ZgrqhB7m#H>EBTL2%w2y;40lDdt)9Z@eP+F)`>y7ps2`{*q4gn)5vU6BbmfsqMgU
zFeHXcF^qik3~9P38>aD?mp*1fpQg>zCgmx3bk6$@Fw8MN@y0t5N+PlssQZX=YFALX
z8z=nKJ7ZKl|pOOZD~1WBle@^X>+b;~no+QwCr^>qV4
zZA#s6I(eaS<7gYTg-U$~qQP2SO`5iv*sf^FQXAl*MfiHY2pUlwk*sDQvCTrAY(CD|
zzCExUHLR8M@n;`j4ShK}iVxujmj3|Xwe2ddXB9pk_xKG?c}U&2ow@!cDcGyrR{8a%7AX1=+C5Y
zjr(D^oQ#b1BDWj*d+!d)$!ko23A_Y>)b{EZPl$!a{9NWW<4n_AZ+`R=0oarYFaajO
z1egF5U;<2l2{3`fPQb=T#MfxzXwgXiae(_H#k?GgDGyA52`~XBzyz286JP>NfC(@G
zCcp%kz#$~y1wy>`x)A?B+5i8`@Bhaqg?I#g58Z-d=rVK(It@L113u6L=uhZA^b>R&
zx&?g+rBDF1q4%I!=xyk~6GHq8J%Ijzet~|3?m>5;U1%CQ2K|0qi0_~!Xc{^W{e4V`
z-=H6$PoYidG3tK=JuG_p3*$ZLF2olTU;<2l2`~XBzyz4UAtsOvsoo=v<7{DsymH0MymNsLVtI=>?(cmt#kHmd449POJ=y
z%sZV}hsqiud>9l?x$$$&ib^N5HmR1iro5pPMg~+@bjDp?xpJj*b?MsD>Pma%+J^h?
z>|A`Ns;yat5z-%MYBs5=qY81kb9KG7*3NwApYp9tOW(;#MK+=O4qZ@1yG?p}y)1F5
zy}sI7Mv{$IyS2WCJZ_b8BHu1qFO0ITW*fAd6Urv_1~tbC@}?c*E{>;e?QBMJ&kmn+
z`%Xz0juV`pF!QytiH=amGo?+`Q#p^(IknVx5V3p+MCvcr&Q=hg-G_yVSi9uwC>^33
zi`L3M7jT~kkc76byOdq7b54{7^$XQbJ^?b1BK9;bdZCz-H$#ixY@3}8t7E5}wA2kR
z3Ij*T$Vd`-mWiL-ubkU~RIm$sw6#S}Es=3Fa%gdpoHd8Gw-0uv{k>K0JvEi!kA%(g8~ZSIIqW=)X>Paeh
zZLWHy%`Aqn2RIo90%1vToDC1)!2`ss0|~^01I7j~5QfE&u-HQYlY}_|+w=W*c}ta~
zmfI#XOjLb7RlWP}z3;xe{{Mgf_d4HuaAd!;CzDI?d3qvoLuIvi+v`4>$i4c6gn!h{
zd)0YQPHprlHr)AIwdvQY8%KSK&2VSEQM<+~_|2UcmxdZEP2Vl=%$Ex07boW%ZY5J+
z+32EM=eBBKs|Ge-11*29XU}PgzFf9f5_N4m+d1PI2R5I6E9O=WY}LS44Q$oGRt;>`
zz*Y@x)xcH_Y}LT8eGT~aQxh-cE>19a@?!J-gtqS|n&VfR@0YZlKgk@=n(q@$1~#9Q
zO?cCM7uwFBV#42OzVB%}f2s+;-h3BLfo=XLn(&(W{`s|L1eV5I6zkCwm@BrKk_rPDmAAk#2!-eo%_}>^Zeh&A+
zx8Ymx5qJyCz<+}KF*f`V?u0wwQ}AB+ukd=P!g;V8egmEZ&xW($K@1sRgg3zyIPg3;
z1x|*4#t?EJd>cLuH$oYX!UT-N7@PwSV^p~nu7cly=fJ}lIv#?5gdf4@;5K+4yb4|k
zM`1s_033K8JPDo%r^0=-^#`B^2O$H}{%P3w)8&k}{CdmpcSfqd*C@LyUc+g6b+6(2
zrCQY~Rh@iop^@m~Jkgr{&cuqpzzO5q!HKCaM1sj$`l&a13u
z+Jm>#TAEGe;7MqBrN1YX#T$
zQbD{`$+4R(!^W24I~3ccMx9dAnQQQ^E7(!Za)C1^)gf_8J~66EpX9a=Ow+!rJ%w7W
zQ7l!tmQy1u$8VI}vdZ!TYTI!e4R^&^D)|esxJ`*1y_8BJ-5}PHh8DcS(WWY+GhbSy
z%f!kmJ-6o?7X+HV8!^y7ICn_tmX1ql@
zhQ63?_jpeDgGfJED9ta>EmL9YcqdqOA}vV2b*uADUpfK}WYVfik2Jg){6mw6rlto+
z9iq1ij4m(ZlrsD&*61fri+BTQ-~`>_t|cdaYTq^NloZIJ*SRspp1E
zNA_JxQ>OMGnl**k{DctHteFuirRuLsQ$J>%R>94jS%{3lHJC2TDdA!YN`}#Wb
zdN7}_&Ngce-z(1a_UoBqcJ)Zm1#AezN6)H^zMV{{HglVp^EwxL%3Q-OtU2iA#2SNM
zf~8Zt<;Qi@OST(~db4kj+DM>{XuS^szjzpRH-!xO`kOv3FG!AP@KX7SMCLUcK4
zI;pVky7l5@ryRFhWZJ1UbTYNx+O;M+`Rm!jUio;Y3s#Z?V?)y;<6~1yx`|SyPH%Gj
zQpHQC)v`#@<;XE-{AG
ziZ<>j>!+}>NLXt$9k=OJ^v{Gz9u^p9T`7~q
zsh53wzUUQ76}M~;tF20XMWR&ex^T^-WzTI?GgXhZCok798DBnTLngg>8jnF0OJU;$
z31eqF^Bdzb%!om*Ci;R~_sT1oT0OXMRY#ny*APgXCR(9XU&%CS3j~%-v4p#FwGcF9
zK?2fFUB1?cZ%b;E#jiZ?)heFfSh2AtbRMy5vwM@Oz2lyN}F=A@>_9!oAhcwqX{@yUK?I^$ff-PX$tu*+%-
z)h7A}@?nJrqNevTf!EW{UbnnZYc)%rbD)a6*g&Ab-5jZMcxq^JWI}F$ycQ64jXS!N
zZf-Amr^wrWEv=xb(8?Bgk-PiFkn0pdz%?&sMToDRF1kfC2V*u
zs?gBLCC*%_%ycDrFEvVb!mD~qVV+2^h)h=;7#y2Eu-_S;nwT7(ni{7l=v*p!MsDTc
z@Z^-bjclejvqwTECdco?g%msyzJ=cZx9~xD8#G`Xdf*Xs{)gcq_$B-l
zeggNv-EbG&3jYO0;8J)5-T#yDBAA5j@UQ6pcf#A?YB(J}jxPTexE3yhZ6NJ<_c8T&
z-Nyg_{;fBdN1asiaCL*p#o5aPD`%g*fqmd`HHp4pGxKXar=pg0t4pe3olJY>JnCH#
z?{GB|Gtf09nqQAZQ__HF^0ILHrRsb#?RaHY&$Z$-yn4BWp3b_iqUHT;B--JsGt3=3
ztR)MzBDyX4u|h2(2*{#3;3U)8%$_~xpO-uL{5^YiZ?Bb$vuW-a{n|5OP
z=G%^ue~kv>SCz)OCWrD`t!K0}-JoXW)@IQunYH^cb=XQjT%A_cF6w;KIb0p!
z_RC&1g+#6;>>YAME$gE&;l;}Sqpbywx@as}7*VcJ*YPm7P!O-!9mHQF<4e6p#jR4=
zwNeAsQyzSB>1p))^?y)Peo`2PY3Xlfx6^lhf-Bm2KUuF6(~UGg&vHK9Q
zrHZmUQ@QOa?%B;Z<*SMIE%%MqC7%QxXuvtY*Yu*WUPLRyx-8>}2r|Yp@+Z~p^f+}t
z%R*N6GtGtCQcB_l3Y;i%az@5tYS~Y(_~})|sANy0mQ1_l`hq*afRkAEgD}elnk$w3
zEI-BUI8zE0Mu|l>4*58%Qj*nDJ+^$Eao+rAT7tvk1YN^$n4FvSmjJiQ7KeU1-OpEi(%gUZybEd~9jEOJdE@zs|oCsbij7-aEF*U8I
zzpF^E14-Y__vgzkkEwpcsLg?Mx6{%=nub?o#OuD%o7vT!P`Rtj`6Cuq+oatIZjxjE
zW~M2uo$$j_>gh*!&R7@hPN?3qhHWmIk2Y`Wb|ov!aVR@ZXkTH=MfF9>p!%UQ#%1s-c*0IeNl~&&5Sov)pPQvPyX!6cZ@f41DhRkU9`s1?5ew5YG#_AKZ`o=%_4Hd8aK
z7Sg2%S?LH_j)kaP)wW!aWX>&k`gW5`3+U2hKUbPpxvg=^mE}*)V*r_Lw(@Ew&StYT
zg??Tg5p^KhSJb%>SBg%2b~I9aHA|}=fvG)dXOC26m*mAcHb|9x-*mdVnBx5`ks^Z0
zI--*^F*-gyJu+==2n+*ZOQAc&!z^EllbEFJN-MR~+fl|E>T2{pk32!AId;
zun1Sf`EVxu0^R;ca0h$|Zihbw(f==o?QkNT01u$oe;xiDeh*#@FM{h}6|R7t@BsS#
zSD*?NxDv!i;02I^XTl@s_xHnR;m@E2!*B}Rfo}gtP=~#cfrp+%+2D`ig>WStgaa@Q
z_oKi65WWUqg?r%(@C|hL7aJXXp6?;}Av*UD;1lphsKX1P2Tp^}pnty;d}u-ey5Mwp
z8hiu2{KN1LxE?NreUO8Hq5l6Fq#bTF&?55ba+-AvsdFpNqFZPocB+nsgr~OJ6DVO!
z76mgia^U%H`gqbf^F}`lcK|a+m1N@JjSL<#l~w-81fib
z*YZekBg(=SFA;TZat^DYI}!e-K*r#j5u^SrjbaPV71hRvLzptbNfE?;5SGH22I(6p
z4Ye|vQL0j{SSrjSgO=U`ub9a}R6{nc8Vxqv8OdY^%o
zLJPps&1%WWD=bLcY7GUGw${l)7!;(5~)EtXgm#=;>ZDC0rnr5
zKKk}5?LzzyJeSKT0aV;mu&>u-$zCiKy<$dMz!_{|8AD@p@+<
z%WgAc-g;B^E-JF$Q*enwB=!ob^MOB8U*^2bZb_^9Gdp$-w}H~t?=Wgay9{^6B$D1Q
z;p#dfMKE)LShSo}p_?MqR~qQezLV?CA(xH12o6}4CNj>XSN-evI7N>*KAYH*VnmMx
zXR+k=JM~iC4vrvO)9Y;ilEV!;y>sR8=+OB7VYIoh3$JJEk$hBzY!Bo1Q?`w}=q9&C
zOl?RVJi4tLZK-vpe0H`nnT%RB_YaPY1zR3W?Hkm<<9bTgY&HMM9BAAQ#Hb=0>6l=!
zV=CJV6GS`^*}hv$z@D7eKL`qPlH8&n6VdAL!=uA-%TP2fC(TqX2AGT}EDa{0Xq4#h
zppZ6mQZ28v*{&qP+HP+)D=8s&U^99AOBl&~y%Mq-8wWRHC>t@}6>06`7Po%cQp>l_
zjVhBwvRjH_gxSX)WTOYU(Dr7tun~0z9bR1t8_#}AeB-CVPa8jUY6ucU>}H`<68asg
z+meRX9+@$xjvx=yZ-^GL8k(kx2T~SVy*3U9<$E%}Z@5qe(?>5&>07V$6)%_tc1NgvVV5ksV|Y
zSB9lpINLJTMPeOV$HPoyCU#N}j9wo17un=oveqQwc8+!&jdlzi!^j~8!zYgsi
z7xoJ6FW9Tvr0TEKW8EU==Q*YYPI1pv+bya+MiAZSafRJ%wTdUEgMpnju!^?_8I=lJ
zgJD;@jvI!oYgDThhdX>Q$EFWW3?FZu+974X&HTF=Z(S3$-B*_irCwVUn!f4H>)&DR
z+6&q5Ad0htU5tbcw%;4inBle7Ow44)m~<{2aC*Z6MCJq~0flG6qL3gcNq7wjmHmIz
z7MECzB{64$}7NG@Wupf4U_yGJ2-TroX
zC#=9B7=W|jYv}Y}1=;g|AG{W>hV$X+a60@0y8Tz+7HGgu$iOq<#}xi=;a%`fcr{!N
zzX^Ybe*ac@1;}#%&w#&1xA&n5c^HMK!o%qM?}h8(rBH#(UPKJ}<7qqFg>rbU^gOBga)){lZuPjmG2A*I$nXsr)
zD)0BUg*-+>Q=8#Q4q2JS^-4OhSq8KS-x<{^=CY$dI6c09WN3C`d(#|$DK)0nUZj)UrH4mn@IosH@_tMGCfr(3!X;#&NZAP_~
z*paAI)v#7PQzYol$f;n!5hCYDhdbo1xL6k56$@AQbtZSKJ8m=8F*PwfG%`Fz@yuOq
zLv5@s&id$3%tOVVJ%_714_D7YDQoIqVh-U~B*i(Dw17)@wHXO?mW!2HH#d;Y?AqPe
zmyV~+=`MsJi6srHZ?j4dyf<=K(`pkGOxp~2Ci1EaY4VV>3<&D2CC@hZq|SH()`!l`T92-do2
zi`Er7cwiuCl$Ke~j7c;wn^FYp<`F;Fy=GjuQIOjc7l|US3xnx{nd$ECopOxD%`MMk
zYid+dgWcQPLJo=-#X)YUvVBmzD7IgmxHwjG#Fv~Uggjvv1fn@R&(n*PqR0cF(=o>G+Y%&<&}kl-q~)wcTZ3j9=N{S5EzkbeGL$mkYAX
z1=;1$3gr^VkzF>(E*oT*?ac0Qb<~)+4jQ+tlo+_WnH;$;H5c`y3WmUD?@6jiSC9PV
zsiANbZ8i(3mb5EXB7cu73#p2V_B?m`-5iPmMU0#Qz4uPF2=DVv>hs6tC&lO
z?D$4JM5s>fStbwd;P*A}FEqttDq((eUO8;1d|xaS*toq`p^UlERUUsB@T
z>Cr|dg_s&h9~^ZjBvZ6<>
z0c}j?c@s@9lkCTtT*;tg?`2Rl^|4x}Z3|{fi48$Urb1-drD1I;jz2%C9g`WmTIyP2
z@sE|;QO{WTJM-EIEJ_Rlnq&KqEqF2=t*9N>>|kp*$@sACbq$p*$83d2a^vkJ^D2(+
z%y?!-Emap&tpYdCms12<<4|LJlH6-ElcDY;
z`_5Y^MN6&v#p6(FosTYcWaSS_O@wHvZJBN3=mH1RmdFU$4FWeIb5B;jNVMdUBq~(b
z8g;2d+$>WM6Ig;D4!<0?k9ZMT*z6L_8qe0qv|&RMT}9p1%+twH0~FE4n9=#zau+(G
z8a!#;fT}}q$F^gTW4kd+X+v>eC=x_XT1uCZJ%8Et?=oArYi^6KvayQ;nlmE{!VxvP
z>^@{Nwbz?-c^rfyFtHT2M^}k-Qtgqb`BU{1%k9pxCKo?J2T%
z&2Vwi7e)VnBVY3QDSH0*;OlTV$nyXf@1pa69&UlR!^_~e
zVE~>F+u&??m%b);x7>DP;v*9W5W9$H*hqu8Y7=cS+5Ppmu;Qg=y%P$ZqeG-H`jrR2KUX4K3n
z(e&XO#v8xhZmH?CpFEn7_3S(mYmF3V15-_J=G-3fH5MT_K4W$7)bpTtXy;{4icMb+kwNT<@4BA=>nC80`dnhrx;
zwGV@jq%OcfZ$fmw-oP&;NfeQSRI^wUwvu1zm8zIs(m#W8K5nJ#iWd`CiH!qMhrGxN;E>R!-R7kJx^|lUTk!@f+y6mkXc#=c6*rXY3>gJDev0igA
z71w6G!PSEJ(aYhtp4;5z?7eOFazXs)z7nMy9w;B86!t4>*
zH9=#M8@8dr>F4*V(^-{$L`u!3W&UL+%cd~B3Avq+v=cFgDAC>cri%fjiwMM)zdcS3
z4~$Y(a?u&+Cgo816N|$ZzoQm5nOtn6O0U;SAHu&BUp|rZ@`#uUlVG`kc%?1l$F3el
zSg}7=t!F#U9Xz!mTdrg!ajf659Je(LR%^0V<>04D&|X(sqSvd6WFgho`Q$=y9{1_s
zH<^dOgW3v4JMBt_MB+!=Qv&QyvL`5=0xw)~2oeUT*nslWLm*#~
zC9l)E+a)eG;ugm)rEF%Zty{@3++_^sJoRV}rLv8rlZsw#8i`+~&T8chYO%MhCdQy4
zrOc6@rfbhOwNzfTy6wHoHnbGaluBRJc%-T7Dx;uA8!}zb=F{T%Eq>p)eUp)TUS~1e
zNH6A~4|X-W6Kw&+!?q@d{M2GLzuj9Vw*KnVU%S+o?$_zbJjPMUJ5am=>u4{IC)PG9
zzh$AcmQgt-h1ddvQxU7ECl$zZRbBcj9ANfK_a=hF@M`wqdU@)-$s(LtCTH`&eGrE8
zlvoX8;Zo+PdCEneJCQw&Znn3>BNBwq&>No{>FtzC9#JZ=1>JDV%ns&R
zD0L1i3E}iCX}8TbP+qE>27+DGFAw+V$MqTdI&ahg`z%bP=4}{?Z{)1E
z@H%)ch%bN#<8U(k06kvb0U+-M{2;s(UIKNP2Jrz99siT?es~}J8T=s}ffOV`p8Xdc
z|8|gf1ilhp0pbfFdj38*8GeaQ{}cE){1N;iybG=a7sNNl`8^01!8!0x=Im^aRdl+;GTEHoy=ngyC}FLF+MSRuA+tdx-3DyVG=`FadlDH*y|P!h6y#j;|L
zb9i)gc4CnCWeoFz!6_#6g@$N)GCj_!nG}zvk
zhHX>Km}>sxr`S40&o{?Rfm}R1<}qU(U(Khoh_C?`H~X>hsrTwM2eK-)N3}*t0eULxwE}tO@2Y;mfL^}BQ*Ll7&wECA1wqUR
zJfmd_sW3Sgms2>$dM9#$dUb&L%6G=t_O#CjYW7gFPq8p-8
zOIa4|z+}D0+2dsOKU&%L^TXB4@igHTlen3*Sj-SM3QFBSYF`n=Dj54Xg)$y^Y*4Vy
zDk-p8m_xEu&x9yra1gsKVGw@I9~e)35su@=6YM~VF7ABCu}m+rsEU09D~{DK18vpb
z_oFbdkd0Da#ISNK0}F8@1{RJw4J-s2{lL0Gi1fneF<4iQS;VMyg~*-Om9SK6m{#PZ
z8c#*Wy*8~76t|Vg9S~^UeCe(xvJH$!j~O3grj?B@7MMyld9@&Z^m1|2%0`z9OeLGV
zTo6Bcxh>Pm+NKrTFE%o*gmKzUEB4Hc{Sh~<*wEngu}mxSq*bN1DDxU#rObl7tVDUN
zN1sF%!xN9$;7){hkG$!MBi^=$qF}FQh6#olLe@3R$SXb)UBr+%j=zDeK?kXYOQwDf
z)vFc6GQ;nfWrky`Gbjy%V`iz)1QR*$M=Ue`aad+_)}dvFAPk8OdTJ%M9lO
z%M8E6Y86wLHd|@cOET)IDZ3U6
zGuK4!T`8lRHrJ34bB&L=26!z7Z^fYcAHBK8*XA1i)u+F9sW07J=}Effq~txBPyE^#
zS)`iRGqR|2>ls-#tX3Z*3sBpOyQr0oj4XjHEE9yat%#It%q;4>$bP=Iv-sj}poBpT
z#Y%MMdr@9|BA3L@B7am9b5exhh(m$cStz%0(|N3R7Hdr*M?Id~$FZ@d=<`Z@V1sil
zYl@DsIctjO|EQ&j^U(W5|9_>?_x>K;{=0A|+yb)ae?7?a03)yi9v0mm;D99gzMp@a0NUWzJ)%23y7{i2K(U*_($~jAHl~!{y%^zcovAi|JTsj
z|2w<^UJvqKze`{kdf-{`O!ywU`#-=(;8yrc_%M73eh&)pRQNi2`~QGXg4OG<<@aIO
z2fgrYH~}7@qV9(;!R_!x_yXJr^4!2)I2%rfr@_zB=l=!134a6chu?>{z){!_qtFd0
zNWwYrTkuPC`@e&?!?iFBdtoPJ;K?BGBlrxw2YwgoAbb2*zy$mj`~uzn^Kb(!f;>|o
zdVe1F!VvU88g{@5@Ll@CP4F7H94-UtAG^VPwfjhhm35meqil%F02bRx0Y3tE(d{
z&YX!?l{rCi?c4FyhDKn6rS#@$wu4>+NX6=x8bl+;>SwRKtpWE(Pi?NK%cvLc
zM-#Nw%h2%H^yJ`ZN?v?_Fq=M@OCRh@AKbP1DvG@UUsqLFS<+siRhNcSVg~bZ^c7?_
zQM8sNq23XcP@51FMtee=AswcI%FX@rh65kpZz??@Y2~9LiTy(&>FuX@1j0G1-oA?_
zy=rvYRcu$?x-Elkxz%(>b52hl7*4DIh5%!MJd0kc(%T0|r-mi4%J$)7Z%;Bps+K_^
zTWC$Yht}C2+M0J{j91DWqIIuIPmGTq+I+LBF|TVcXin~&*W$>lad6YC_rb1kAaGJu
zp?Yy~N_A~EXlxGpmI{C*oadqb}kGy_Cpn%4T2@>#a*GgrgD~y7yH@*CELYZTcBjRm<2T#R4`Z~oqk8-Eoc+&c
z@3F8KicZ<#>np-Z+6auDO*}b1Eym?kq?Oa-lOy{^#x^%5*BXypj90o!SDTfc
zK?WxEMa7Hs8jhzfc~}lzSsAl&to2JWRP!tGhYwVjkj7KF*``_y=U{a)+pdc_S^CY#
zrm)7~p1>F!i=qs$MdR6DZ268_8xp>#*C$Bpl?lrkz;ahV^47rbug8jI(Q-jBV0{
zy&F2S8Z5jEjQ!$*FWPnRo4VD0f9e7}7^CkeoagBE+R9!mDz%(1+9XVq?@pULkEAgJ
zjyI46X|jrNnr)$gGLX1&v6ozH@})!YHj-USms_N9Uj}1
zG2EFC-lr9~tIH(EplR1EmB^bGl`@kC1yW7CDk8oD;?IJI1utgeKh#+7|LTd)m<6>C
z;^)&=QZcmzv$fJ5I;Y67;Vab?8UDvT>HX@J$mx!lYQd;M~gA!Yp$g1oug&i#PA(Xth7-l{t>?mhZ@3uKoqwm_g1Bof;qgn(^%MIab~qRIH~#KH4m?1&_yqs~7h
zC4azg&>^=}`2{MjlVOFWd+)igWBa^mwE}|Y$FHyKr$xwbll*^bm^?<40VRYHMg>V}
zXi$Ahtsn9B`S#+?5r2V6AH#LJ3$?pLwjdqKLh9eM7sHpXl9Hh*2XYf>+4k=x6I~M{b)nh
zH>w_TF|@1RP1dNkZ?R^D%zT%%s_dAxD|E8|&HA>9j1Eb!vo$I`?@{fP5V57JRG(+d
z2FRiWDf9b0!=87UmuaN5b=-t^=MGGc~&8
z0(4#eW5IXv1lhC`%|Yr`0%}y`lAD)F?M5n3r9Lv%cmgSpBQcVTbes#ReGrgBrlhu)
zyg&k+)wQaqYch_Mf>Jwk!Bg$TAcS@n2HQy-=|Cdq64P_0z4`vz-eMoC-cAZvafL7T
z1SF6#?Z`>~8TyifVOF1`}SWeZRex_
literal 0
HcmV?d00001
diff --git a/bicrystal/__pycache__/helpers_bicrystal.cpython-38.pyc b/bicrystal/__pycache__/helpers_bicrystal.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5f46fd32505c05d305c4912149a7513e60beae93
GIT binary patch
literal 3985
zcmcInOK%&=5$^7Jk|HIFq9x0AZ0#Zs@Un^|V|NoIUT2>Ouy7V@?`5z7F`6Dxw1zWu
z&qy+r9w30S{~$n+n{@Ocx7-utFXT2S1IfjwTyomee$_)smaIMG5E9*0-PP>ws;>H~
z_*J{zWcX}+^E>&cyNvyd2Cshv1`pBlKcbUN@`MF7<$=IhB-Ypt?6DI#oJmXCe_(+t
z9qEF4(vv=@FB`H6+K_Xy1=^HtIS)D~7i0&tB^PBEv@Mrp4|HDMkjtP8az)+*?Z{Pm
z3v^N5mUlqA@(1!R=#u1*S^wTE+>AZyi^};T8>L0%eUT;8VU|Xm1hbC^>Y#mumOnx#
zdC7;Y6q4e>nQ6-gkX_G&^B^H%=z8$_M8&?@XqZpU0RCi+Bf?8t&q9KZoqi
z%dODm$aBs=t>lm_I%tV^4t&161
z&pCyyonu}gB9Hk^6OB^z7}T|Db%($I`)6y;e_npjca6g4jZ_2osH`MT)e<ht?@Cn`Q;fFdNSS
zrtDRiRa+}eH+u|y&Cd~Ewy@r&rdtZK7>KkW6;N%HEEP
zuyTgscnp#yaxf#?l{moa1FSySLc1S0X?!>cYqEXyy*&t{I7y!4{y9ZEv%2ovc;q#1
zz66`L+QNK9QFr#Cz#|7R5B@b61gi}rA)F0G{xOuEgXXP*ogiAY1H-$9N8SPN8D1FP
zH#}Sd^9}84Py4#DgOGp0krvfGoKjgbEBZ~f4qp9~x((_GuPZlGqv0s6_?Llopf;%6
zq;8A4`)}y2vV!#fGk#hp3AlLuMS`f4#QTt4a&yx9JV|V0Kp+MeMg6eKb^ucZUl_x^
z&Dha!d2->|*o8~e7&+R=Jq>p!O^0>~?X?fYXz0e-?2ZH75&x8o6`kAXiu~+*3?L?W
z_sM1;CR=FtE4NNTl{HDGSJk&CC@%hjy>dcFCOX`FMT`4F5lFuQ;peaYA*3~YpJ@&l
zM_A!~Il`EL9M}hrtYPg5wW+Pg@D9U2APAR)YqLtj==B6ylTt?I9*&A#ykU((IVFA|
zJ8Fj`^-IVNo(FEU8%KK^GrD
z1!zZ6rtV|d=anDDX`!-_gd5U5U|LMX>gv&+Sr;b%#G2gTqi}`#7^6!kl7!yTocIt7
z)f#AZ5qH-l4Zi27x5-i7!(E;M;S49hA++{v^}d8r<(V;^*PP_Zr{-EH+#CbrRb!In
zg9rs$5j4_xShLqx9r