bandu 1.1.0__py3-none-any.whl → 1.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bandu-1.1.0.dist-info → bandu-1.1.1.dist-info}/METADATA +59 -9
- {bandu-1.1.0.dist-info → bandu-1.1.1.dist-info}/RECORD +5 -5
- {bandu-1.1.0.dist-info → bandu-1.1.1.dist-info}/WHEEL +0 -0
- {bandu-1.1.0.dist-info → bandu-1.1.1.dist-info}/licenses/LICENSE +0 -0
- {bandu-1.1.0.dist-info → bandu-1.1.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bandu
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: The BandU program constructs a rank ordered series of crystal orbitals using principal component analysis. These principal orbital components can then be projected on the Fermi surface and visualized
|
|
5
5
|
Author-email: Patrick Cross <pcross@wisc.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/pcross0405/BandU
|
|
@@ -31,6 +31,8 @@ BandU projections, if provided with the necessary k-point and eigenvalue data.</
|
|
|
31
31
|
-------------------------------------------------------------------------------------------------------
|
|
32
32
|
<h1><p align="center">INSTALLATION INSTRUCTIONS</p></h1>
|
|
33
33
|
|
|
34
|
+
<h2><p align="center">THROUGH GITHUB</p></h2>
|
|
35
|
+
|
|
34
36
|
1) Inside that directory type on the command line
|
|
35
37
|
"git clone https://github.com/pcross0405/BandU.git"
|
|
36
38
|
|
|
@@ -46,6 +48,10 @@ BandU projections, if provided with the necessary k-point and eigenvalue data.</
|
|
|
46
48
|
|
|
47
49
|
6) On the command line type
|
|
48
50
|
"pip install dist/*.whl"
|
|
51
|
+
|
|
52
|
+
<h2><p align="center">THROUGH PIP</p></h2>
|
|
53
|
+
|
|
54
|
+
pip install bandu
|
|
49
55
|
|
|
50
56
|
-------------------------------------------------------------------------------------------------------
|
|
51
57
|
<h1><p align="center">DEPENDENCIES</p></h1>
|
|
@@ -93,9 +99,19 @@ xsf_path = f'path\to\XSF\file\{root_name}_bandu_{xsf_number}'
|
|
|
93
99
|
bandu_name = f'{root_name}_bandu'
|
|
94
100
|
|
|
95
101
|
def main(
|
|
96
|
-
|
|
102
|
+
principal_orbital_components:bool,
|
|
103
|
+
fermi_surface:bool,
|
|
104
|
+
fermi_surface_projection:bool,
|
|
105
|
+
load_fermi_surface:bool
|
|
97
106
|
)->None:
|
|
98
|
-
|
|
107
|
+
# this option will generate the principal orbital components 1 through 10
|
|
108
|
+
# to generate more or less, adjust the range of the "nums" keyword in the ToXSF() function
|
|
109
|
+
# the energy sampled can be set, relative to the Fermi energy, by changing the the "energy_level" global variable
|
|
110
|
+
# states are included in the analysis if they are within +/- 1/2*width of the set energy_level
|
|
111
|
+
# to get fewer or more states, decrease or increase, respectively, the "width" global variable
|
|
112
|
+
# by default, the prinicipal orbital components are generated from an irreducible wedge of the Brillouin Zone
|
|
113
|
+
# to generate from the full BZ, change the "sym" attribute in the BandU class from "False" to "True"
|
|
114
|
+
if principal_orbital_components:
|
|
99
115
|
wfk_gen = AbinitWFK(wfk_path).ReadWFK(
|
|
100
116
|
energy_level = energy_level,
|
|
101
117
|
width=width
|
|
@@ -104,13 +120,39 @@ def main(
|
|
|
104
120
|
wfks = wfk_gen,
|
|
105
121
|
energy_level = energy_level,
|
|
106
122
|
width = width,
|
|
107
|
-
sym =
|
|
123
|
+
sym = False
|
|
108
124
|
)
|
|
109
125
|
wfk.ToXSF(
|
|
110
126
|
xsf_name = bandu_name,
|
|
111
127
|
nums = [1,10]
|
|
112
128
|
)
|
|
113
|
-
|
|
129
|
+
# this option will only generate an energy isosurface and will not project principal component overlap onto the surface
|
|
130
|
+
# the "energy_level" global variable is the energy at which the isosurface will be be generated, relative to the Fermi energy
|
|
131
|
+
# so energy_level = 0.0 will generate the Fermi surface
|
|
132
|
+
# the "width" global variable determines how many states are included in the generation of the isosurface
|
|
133
|
+
# a small width (~10 meV or ~0.5 mHa) is best here as larger widths may introduce bands that do not cross the Fermi energy
|
|
134
|
+
# the color of the surface can be changed to any string compatible with the matplotlib colors
|
|
135
|
+
# see named colors here: https://matplotlib.org/stable/gallery/color/named_colors.html
|
|
136
|
+
# the Plot function has many other keywords to customize the visuals to the users liking, see the docstring for more
|
|
137
|
+
elif fermi_surface:
|
|
138
|
+
contours = Isosurface(
|
|
139
|
+
wfk_name = wfk_path,
|
|
140
|
+
energy_level = energy_level,
|
|
141
|
+
width = width
|
|
142
|
+
)
|
|
143
|
+
contours.Contour() # make contours
|
|
144
|
+
plot = Plotter(
|
|
145
|
+
isosurface = contours,
|
|
146
|
+
save_file=f'{root_name}_bandu_{xsf_number}_fermi_surf.pkl'
|
|
147
|
+
) # create plotter object
|
|
148
|
+
plot.Plot(
|
|
149
|
+
color = 'silver',
|
|
150
|
+
) # plot contours
|
|
151
|
+
# this option will generate an energy isosurface as well as project the overlap of a principal orbital component onto the surface
|
|
152
|
+
# everything remains the same as the previous option, except now the principal orbtial component XSF file is needed
|
|
153
|
+
# also the color of the surface is done with the Colors module by default
|
|
154
|
+
# other colors can be made with the Colors module, also any matplotlib colormap works
|
|
155
|
+
elif fermi_surface_projection:
|
|
114
156
|
contours = Isosurface(
|
|
115
157
|
wfk_name = wfk_path,
|
|
116
158
|
energy_level = energy_level,
|
|
@@ -129,14 +171,22 @@ def main(
|
|
|
129
171
|
surface_vals = overlap_vals,
|
|
130
172
|
colormap = Colors().blues,
|
|
131
173
|
) # plot contours
|
|
132
|
-
|
|
174
|
+
# this option will load a previously generated and saved fermi surface file
|
|
175
|
+
# update the "save_path" keyword to match the path and name of your save file
|
|
176
|
+
elif load_fermi_surface:
|
|
133
177
|
Plotter().Load(
|
|
134
178
|
save_path='{root_name}_bandu_{xsf_number}_fermi_surf.pkl',
|
|
135
179
|
)
|
|
180
|
+
# to run any of the options above, make sure to set that option to "True"
|
|
181
|
+
# also be sure that the other options (or at least all options that come before) are set to "False"
|
|
182
|
+
# the main function will only run which ever option is the first found to be "True" in top to bottom order
|
|
183
|
+
# in other words, the priority follows as most to least in the order:
|
|
184
|
+
# principal_orbital_components -> fermi_surface -> fermi_surface_projection -> load_fermi_surface
|
|
136
185
|
if __name__ == '__main__':
|
|
137
186
|
main(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
187
|
+
principal_orbital_components=True,
|
|
188
|
+
fermi_surface=True,
|
|
189
|
+
fermi_surface_projection=True,
|
|
190
|
+
load_fermi_surface=True
|
|
141
191
|
)
|
|
142
192
|
<pre>
|
|
@@ -7,8 +7,8 @@ bandu/plotter.py,sha256=wSIA1TpwhioPUHpBe4_gc14e8K98fv3q0LwwD5NLboo,27725
|
|
|
7
7
|
bandu/translate.py,sha256=YGTkwne4bdrw649OjRKBio7IBsCNVoa__rjkFZK6uRI,2217
|
|
8
8
|
bandu/wfk_class.py,sha256=zsgC17OcWTLan4riaGW2ObBvFHICmZqbizClJV8hsmI,26158
|
|
9
9
|
bandu/xsf_reader.py,sha256=gfv7LsTofWw4PrcOeqltOREJD6RLDq8CeFSsnlfohEw,4778
|
|
10
|
-
bandu-1.1.
|
|
11
|
-
bandu-1.1.
|
|
12
|
-
bandu-1.1.
|
|
13
|
-
bandu-1.1.
|
|
14
|
-
bandu-1.1.
|
|
10
|
+
bandu-1.1.1.dist-info/licenses/LICENSE,sha256=jk_B-WYDiyH9RtxC45pO6JUtBxmfX5i240dVzv1okCg,1088
|
|
11
|
+
bandu-1.1.1.dist-info/METADATA,sha256=hLKKV7kP7l0lo6CKnUvHxHXH1_MozcRGG7ck98O1NDw,8945
|
|
12
|
+
bandu-1.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
13
|
+
bandu-1.1.1.dist-info/top_level.txt,sha256=AxbMFU3BRdjCr75K9gAdblwlBMQ3qr9-AaCC-IS8OWs,6
|
|
14
|
+
bandu-1.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|