ipyvasp 0.9.6__py2.py3-none-any.whl → 0.9.7__py2.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.
- ipyvasp/_version.py +1 -1
- ipyvasp/bsdos.py +29 -5
- ipyvasp/core/serializer.py +1 -0
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/METADATA +1 -1
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/RECORD +9 -9
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/LICENSE +0 -0
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/WHEEL +0 -0
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/entry_points.txt +0 -0
- {ipyvasp-0.9.6.dist-info → ipyvasp-0.9.7.dist-info}/top_level.txt +0 -0
ipyvasp/_version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.9.
|
|
1
|
+
__version__ = "0.9.7"
|
ipyvasp/bsdos.py
CHANGED
|
@@ -35,7 +35,8 @@ from ._enplots import (
|
|
|
35
35
|
def _format_input(projections, sys_info):
|
|
36
36
|
"""
|
|
37
37
|
Format input spins, atoms, orbs and labels according to selected `projections`.
|
|
38
|
-
For example: {'Ga-s':(0,[
|
|
38
|
+
For example: {'Ga-s':(0,[0]),'Ga-px+py':(0,[2,3]),'Ga-all':(0,'all')} #for Ga in GaAs, to pick Ga-1, use [0] instead of 0 at first place
|
|
39
|
+
or {'Ga-s':('Ga','s'),'Ga-px+py':(0,'px+py'),'all-d':('all','d')}
|
|
39
40
|
In case of 3 items in tuple, the first item is spin index, the second is atoms, the third is orbs.
|
|
40
41
|
"""
|
|
41
42
|
if not isinstance(projections, dict):
|
|
@@ -53,6 +54,11 @@ def _format_input(projections, sys_info):
|
|
|
53
54
|
) # will be error if two ranges there to compare for max
|
|
54
55
|
norbs = len(sys_info.orbs)
|
|
55
56
|
|
|
57
|
+
orbs_map = {} # total if components given
|
|
58
|
+
if 'px' in sys_info.orbs: orbs_map['p'] = range(1,4)
|
|
59
|
+
if 'dxy' in sys_info.orbs: orbs_map['d'] = range(4,9)
|
|
60
|
+
if 'f0' in sys_info.orbs: orbs_map['f'] = range(9,16)
|
|
61
|
+
|
|
56
62
|
# Set default values for different situations
|
|
57
63
|
spins, atoms, orbs, labels = [], [], [], []
|
|
58
64
|
|
|
@@ -78,6 +84,24 @@ def _format_input(projections, sys_info):
|
|
|
78
84
|
)
|
|
79
85
|
|
|
80
86
|
spins.append(S) # Only add spins if given
|
|
87
|
+
|
|
88
|
+
if isinstance(A,str):
|
|
89
|
+
if A.lower() == 'all':
|
|
90
|
+
A = range(max_ind + 1)
|
|
91
|
+
else:
|
|
92
|
+
if not A in sys_info.types.keys():
|
|
93
|
+
raise KeyError(f"type {A!r} not found. Available are {list(sys_info.types.keys())}, 'all', or indexing with integeres/list of intergers.")
|
|
94
|
+
A = sys_info.types[A]
|
|
95
|
+
|
|
96
|
+
if isinstance(B,str):
|
|
97
|
+
if B.lower() == 'all':
|
|
98
|
+
B = range(norbs)
|
|
99
|
+
else:
|
|
100
|
+
B = {b:[sys_info.orbs.index(b)] if b in sys_info.orbs else orbs_map.get(b,[]) for b in (a.strip() for a in B.split('+'))}
|
|
101
|
+
for key, value in B.items():
|
|
102
|
+
if not value:
|
|
103
|
+
raise KeyError(f"orbital {key!r} not found. Available are {sys_info.orbs}, 'all' or indexing with integers/list of intergers")
|
|
104
|
+
B = list(sorted(set([i for b in B.values() for i in b]))) # flatten
|
|
81
105
|
|
|
82
106
|
if not isinstance(A, (int, np.integer, list, tuple, range)):
|
|
83
107
|
raise TypeError(f"{A!r} is not an integer or list/tuple/range of integers.")
|
|
@@ -129,7 +153,7 @@ def _format_input(projections, sys_info):
|
|
|
129
153
|
|
|
130
154
|
if spins and len(atoms) != len(spins):
|
|
131
155
|
raise ValueError(
|
|
132
|
-
"You should provide spin for each projection or none at all. If not provided, spin is picked from corresponding eigenvalues (up/down) for all projections."
|
|
156
|
+
"You should provide spin for each projection or none at all. If not provided, spin is picked from corresponding eigenvalues (up/down) for all projections using 'spin' parameter explicity."
|
|
133
157
|
)
|
|
134
158
|
|
|
135
159
|
uatoms = np.unique(
|
|
@@ -139,7 +163,7 @@ def _format_input(projections, sys_info):
|
|
|
139
163
|
uorbs = tuple(uorbs) if len(uorbs) < norbs else -1 # -1 means all orbitals
|
|
140
164
|
uatoms = tuple(uatoms) if len(uatoms) == (max_ind + 1) else -1 # -1 means all atoms
|
|
141
165
|
uspins = tuple(spins)
|
|
142
|
-
|
|
166
|
+
|
|
143
167
|
return (spins, uspins), (atoms, uatoms), (orbs, uorbs), labels
|
|
144
168
|
|
|
145
169
|
|
|
@@ -154,8 +178,8 @@ bands : list/tuple
|
|
|
154
178
|
List of indices of bands. If given, this ovverides elim."""
|
|
155
179
|
_proj_doc = """projections : dict
|
|
156
180
|
Mapping from str -> [atoms, orbs]. Use dict to select specific projections,
|
|
157
|
-
e.g. {'Ga-s':
|
|
158
|
-
are callable, they must accept two arguments evals/tdos, occs/idos of from data and
|
|
181
|
+
e.g. {'Ga-s':(0,[0]),'Ga-px+py':(0,[2,3]),'Ga-all':(0,'all')} or {'Ga-s':('Ga','s'),'Ga-px+py':(0,'px+py'),'all-d':('all','d')}.
|
|
182
|
+
If values of the dict are callable, they must accept two arguments evals/tdos, occs/idos of from data and
|
|
159
183
|
should return array of shape[1:] (all but spin dimension)."""
|
|
160
184
|
|
|
161
185
|
|
ipyvasp/core/serializer.py
CHANGED
|
@@ -342,6 +342,7 @@ class PoscarData(Dict2Data):
|
|
|
342
342
|
|
|
343
343
|
def metric(self, points):
|
|
344
344
|
"""Shortcut for `np.linalg.norm(self.to_cartesian(points),axis=<1 or 0>)`. `points` are assumed as fractional coordinates in `self.basis`.
|
|
345
|
+
You can compute metric from any point other than origin by just subtracting that point, e.g. `points - 0.5` will get metric from center of cell (1/2,1/2,1/2).
|
|
345
346
|
"""
|
|
346
347
|
return np.linalg.norm(self.to_cartesian(points),axis=1 if np.ndim(points) == 2 else 0)
|
|
347
348
|
|
|
@@ -2,8 +2,8 @@ ipyvasp/__init__.py,sha256=rlorju9arMtHw1QRYPljday-PyZWJdSCxg4lw3g6t0Q,1409
|
|
|
2
2
|
ipyvasp/__main__.py,sha256=eJV1TZSiT8mC_VqAeksNnBI2I8mKMiPkEIlwikbtOjI,216
|
|
3
3
|
ipyvasp/_enplots.py,sha256=D38paN8zqZgluNAwmCwcocd7-_h_T0HTGolI1eBkDes,37484
|
|
4
4
|
ipyvasp/_lattice.py,sha256=GxG0C4lwVGvBYIy3jwR1kahWR7L6kJlqjIiQGgESjcM,104135
|
|
5
|
-
ipyvasp/_version.py,sha256=
|
|
6
|
-
ipyvasp/bsdos.py,sha256=
|
|
5
|
+
ipyvasp/_version.py,sha256=83qFJMFAgvdHV5e8Nh9ByUaQinNxBUPlTKjxfpge3xM,23
|
|
6
|
+
ipyvasp/bsdos.py,sha256=JvYvHLqMp3eVaJ0amD-9kxp7FehQIFq3WFUxsO5dj0Q,31794
|
|
7
7
|
ipyvasp/cli.py,sha256=aWFEVhNmnW8eSOp5uh95JaDwLQ9K9nlCQcbnOSuhWgw,6844
|
|
8
8
|
ipyvasp/evals_dataframe.py,sha256=-sqxK7LPV6sYDO_XXmZ80FznOaXTkVdbqJKKvTUtMak,20637
|
|
9
9
|
ipyvasp/lattice.py,sha256=t4s1qh6IJsoeXcCa9M9IhjAQp2s78lqiGhOfEkCW19s,30638
|
|
@@ -15,11 +15,11 @@ ipyvasp/widgets.py,sha256=hwCviQn5NmxFz15DTS2nKKJ0kdBq8taGude46KNDOtU,46605
|
|
|
15
15
|
ipyvasp/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
ipyvasp/core/parser.py,sha256=C3CaZsJbPME_ttYlYy4DXeOdL7dnkXs-cHRwFZL6bio,38058
|
|
17
17
|
ipyvasp/core/plot_toolkit.py,sha256=3RoPsND5gPssBSfS5H4TjoZ2Qz7B97vpxeKadc2cRRs,36046
|
|
18
|
-
ipyvasp/core/serializer.py,sha256=
|
|
18
|
+
ipyvasp/core/serializer.py,sha256=gghH1VK-LytzyRDast0Ko-ueBklWyp9mp6dkvPxI95g,37791
|
|
19
19
|
ipyvasp/core/spatial_toolkit.py,sha256=8DBYTiBFWJ7OBKuvOPw7UoEVCyNjJhSW0OcudjYZvAw,14748
|
|
20
|
-
ipyvasp-0.9.
|
|
21
|
-
ipyvasp-0.9.
|
|
22
|
-
ipyvasp-0.9.
|
|
23
|
-
ipyvasp-0.9.
|
|
24
|
-
ipyvasp-0.9.
|
|
25
|
-
ipyvasp-0.9.
|
|
20
|
+
ipyvasp-0.9.7.dist-info/LICENSE,sha256=F3SO5RiAZOMfmMGf1KOuk2g_c4ObvuBJhd9iBLDgXoQ,1263
|
|
21
|
+
ipyvasp-0.9.7.dist-info/METADATA,sha256=5qUCLJfVl_yy9LGkgFmKaEKHU6HMrkRvZ2leqAERUJE,2420
|
|
22
|
+
ipyvasp-0.9.7.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
|
|
23
|
+
ipyvasp-0.9.7.dist-info/entry_points.txt,sha256=C7m0Sjmr14wFjflCkWXLzr5N6-cQj8uJC9n82mUtzt8,44
|
|
24
|
+
ipyvasp-0.9.7.dist-info/top_level.txt,sha256=ftziWlMWu_1VpDP1sRTFrkfBnWxAi393HYDVu4wRhUk,8
|
|
25
|
+
ipyvasp-0.9.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|