physbo 2.0.0__cp310-cp310-macosx_12_0_arm64.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.
Files changed (61) hide show
  1. physbo/__init__.py +17 -0
  2. physbo/blm/__init__.py +17 -0
  3. physbo/blm/basis/__init__.py +8 -0
  4. physbo/blm/basis/fourier.py +148 -0
  5. physbo/blm/core/__init__.py +8 -0
  6. physbo/blm/core/model.py +257 -0
  7. physbo/blm/inf/__init__.py +8 -0
  8. physbo/blm/inf/exact.py +192 -0
  9. physbo/blm/lik/__init__.py +10 -0
  10. physbo/blm/lik/_src/__init__.py +8 -0
  11. physbo/blm/lik/_src/cov.py +113 -0
  12. physbo/blm/lik/gauss.py +136 -0
  13. physbo/blm/lik/linear.py +117 -0
  14. physbo/blm/predictor.py +238 -0
  15. physbo/blm/prior/__init__.py +8 -0
  16. physbo/blm/prior/gauss.py +215 -0
  17. physbo/gp/__init__.py +15 -0
  18. physbo/gp/core/__init__.py +11 -0
  19. physbo/gp/core/learning.py +364 -0
  20. physbo/gp/core/model.py +420 -0
  21. physbo/gp/core/prior.py +207 -0
  22. physbo/gp/cov/__init__.py +8 -0
  23. physbo/gp/cov/_src/__init__.py +1 -0
  24. physbo/gp/cov/_src/enhance_gauss.cpython-310-darwin.so +0 -0
  25. physbo/gp/cov/gauss.py +393 -0
  26. physbo/gp/inf/__init__.py +8 -0
  27. physbo/gp/inf/exact.py +231 -0
  28. physbo/gp/lik/__init__.py +8 -0
  29. physbo/gp/lik/gauss.py +179 -0
  30. physbo/gp/mean/__init__.py +9 -0
  31. physbo/gp/mean/const.py +150 -0
  32. physbo/gp/mean/zero.py +66 -0
  33. physbo/gp/predictor.py +170 -0
  34. physbo/misc/__init__.py +15 -0
  35. physbo/misc/_src/__init__.py +1 -0
  36. physbo/misc/_src/cholupdate.cpython-310-darwin.so +0 -0
  37. physbo/misc/_src/diagAB.cpython-310-darwin.so +0 -0
  38. physbo/misc/_src/logsumexp.cpython-310-darwin.so +0 -0
  39. physbo/misc/_src/traceAB.cpython-310-darwin.so +0 -0
  40. physbo/misc/centering.py +28 -0
  41. physbo/misc/gauss_elim.py +35 -0
  42. physbo/misc/set_config.py +299 -0
  43. physbo/opt/__init__.py +8 -0
  44. physbo/opt/adam.py +107 -0
  45. physbo/predictor.py +261 -0
  46. physbo/search/__init__.py +11 -0
  47. physbo/search/discrete/__init__.py +11 -0
  48. physbo/search/discrete/policy.py +804 -0
  49. physbo/search/discrete/results.py +192 -0
  50. physbo/search/discrete_multi/__init__.py +11 -0
  51. physbo/search/discrete_multi/policy.py +552 -0
  52. physbo/search/discrete_multi/results.py +128 -0
  53. physbo/search/pareto.py +206 -0
  54. physbo/search/score.py +155 -0
  55. physbo/search/score_multi.py +197 -0
  56. physbo/search/utility.py +101 -0
  57. physbo/variable.py +222 -0
  58. physbo-2.0.0.dist-info/METADATA +110 -0
  59. physbo-2.0.0.dist-info/RECORD +61 -0
  60. physbo-2.0.0.dist-info/WHEEL +5 -0
  61. physbo-2.0.0.dist-info/top_level.txt +1 -0
physbo/variable.py ADDED
@@ -0,0 +1,222 @@
1
+ # SPDX-License-Identifier: MPL-2.0
2
+ # Copyright (C) 2020- The University of Tokyo
3
+ #
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+
8
+ import numpy as np
9
+
10
+
11
+ class variable(object):
12
+ def __init__(self, X=None, t=None, Z=None):
13
+ """
14
+
15
+ Parameters
16
+ ----------
17
+ X: numpy array
18
+ N x d dimensional matrix. Each row of X denotes the d-dimensional feature vector of each search candidate.
19
+ t: numpy array
20
+ N dimensional array. The negative energy of each search candidate (value of the objective function to be optimized).
21
+ Z:
22
+
23
+ """
24
+ self.X = X
25
+ self.Z = Z
26
+ self.t = t
27
+
28
+ def get_subset(self, index):
29
+ """
30
+ Getting subset of variables.
31
+
32
+ Parameters
33
+ ----------
34
+ index: int or array of int
35
+ Index of selected action.
36
+ Returns
37
+ -------
38
+ variable: physbo.variable
39
+ """
40
+ temp_X = self.X[index, :] if self.X is not None else None
41
+ temp_t = self.t[index] if self.t is not None else None
42
+ temp_Z = self.Z[index, :] if self.Z is not None else None
43
+
44
+ return variable(X=temp_X, t=temp_t, Z=temp_Z)
45
+
46
+ def delete(self, num_row):
47
+ """
48
+ Deleting variables of X, t, Z whose indexes are specified by num_row.
49
+
50
+ Parameters
51
+ ----------
52
+ num_row: numpy array
53
+ Index array to be deleted.
54
+
55
+ Returns
56
+ -------
57
+
58
+ """
59
+ self.delete_X(num_row)
60
+ self.delete_t(num_row)
61
+ self.delete_Z(num_row)
62
+
63
+ def add(self, X=None, t=None, Z=None):
64
+ """
65
+ Adding variables of X, t, Z.
66
+
67
+ Parameters
68
+ ----------
69
+ X: numpy array
70
+ N x d dimensional matrix. Each row of X denotes the d-dimensional feature vector of each search candidate.
71
+ t: numpy array
72
+ N dimensional array. The negative energy of each search candidate (value of the objective function to be optimized).
73
+ Z
74
+
75
+ Returns
76
+ -------
77
+
78
+ """
79
+ self.add_X(X)
80
+ self.add_t(t)
81
+ self.add_Z(Z)
82
+
83
+ def delete_X(self, num_row):
84
+ """
85
+ Deleting variables of X whose indexes are specified by num_row.
86
+
87
+
88
+ Parameters
89
+ ----------
90
+ num_row: numpy array
91
+ Index array to be deleted.
92
+
93
+ Returns
94
+ -------
95
+
96
+ """
97
+ if self.X is not None:
98
+ self.X = np.delete(self.X, num_row, 0)
99
+
100
+ def delete_t(self, num_row):
101
+ """
102
+ Deleting variables of t whose indexes are specified by num_row.
103
+
104
+ Parameters
105
+ ----------
106
+ num_row: numpy array
107
+ Index array to be deleted.
108
+
109
+ Returns
110
+ -------
111
+
112
+ """
113
+ if self.t is not None:
114
+ self.t = np.delete(self.t, num_row)
115
+
116
+ def delete_Z(self, num_row):
117
+ """
118
+ Deleting variables of Z whose indexes are specified by num_row.
119
+
120
+ Parameters
121
+ ----------
122
+ num_row: numpy array
123
+ Index array to be deleted.
124
+
125
+ Returns
126
+ -------
127
+
128
+ """
129
+ if self.Z is not None:
130
+ self.Z = np.delete(self.Z, num_row, 0)
131
+
132
+ def add_X(self, X=None):
133
+ """
134
+ Adding variable X. If self.X is None, self.X is set as X.
135
+
136
+ Parameters
137
+ ----------
138
+ X: numpy array
139
+ N x d dimensional matrix. Each row of X denotes the d-dimensional feature vector of each search candidate.
140
+
141
+ Returns
142
+ -------
143
+
144
+ """
145
+ if X is not None:
146
+ if self.X is not None:
147
+ self.X = np.vstack((self.X, X))
148
+ else:
149
+ self.X = X
150
+
151
+ def add_t(self, t=None):
152
+ """
153
+ Adding variable t. If self.t is None, self.t is set as t.
154
+
155
+ Parameters
156
+ ----------
157
+ t: numpy array
158
+ N dimensional array. The negative energy of each search candidate (value of the objective function to be optimized).
159
+
160
+ Returns
161
+ -------
162
+
163
+ """
164
+ if not isinstance(t, np.ndarray):
165
+ t = np.array([t])
166
+
167
+ if t is not None:
168
+ if self.t is not None:
169
+ self.t = np.hstack((self.t, t))
170
+ else:
171
+ self.t = t
172
+
173
+ def add_Z(self, Z=None):
174
+ """
175
+ Adding variable Z. If self.Z is None, self.Z is set as Z.
176
+
177
+ Parameters
178
+ ----------
179
+ Z
180
+
181
+ Returns
182
+ -------
183
+
184
+ """
185
+ if Z is not None:
186
+ if self.Z is None:
187
+ self.Z = Z
188
+ else:
189
+ self.Z = np.vstack((self.Z, Z))
190
+
191
+ def save(self, file_name):
192
+ """
193
+ Saving variables X, t, Z to the file.
194
+
195
+ Parameters
196
+ ----------
197
+ file_name: str
198
+ A file name for saving variables X, t, Z using numpy.savez_compressed.
199
+
200
+ Returns
201
+ -------
202
+
203
+ """
204
+ np.savez_compressed(file_name, X=self.X, t=self.t, Z=self.Z)
205
+
206
+ def load(self, file_name):
207
+ """
208
+ Loading variables X, t, Z from the file.
209
+
210
+ Parameters
211
+ ----------
212
+ file_name: str
213
+ A file name for loading variables X, t, Z using numpy.load.
214
+
215
+ Returns
216
+ -------
217
+
218
+ """
219
+ data = np.load(file_name, allow_pickle=True)
220
+ self.X = data["X"]
221
+ self.t = data["t"]
222
+ self.Z = data["Z"]
@@ -0,0 +1,110 @@
1
+ Metadata-Version: 2.1
2
+ Name: physbo
3
+ Version: 2.0.0
4
+ Summary: optimization tool for PHYSics based on Bayesian Optimization
5
+ Home-page: https://github.com/issp-center-dev/PHYSBO
6
+ Author: PHYSBO developers
7
+ Author-email: physbo-dev@issp.u-tokyo.ac.jp
8
+ License: MPLv2
9
+ Requires-Python: >=3.6
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: numpy <2.0
12
+ Requires-Dist: scipy
13
+
14
+ # optimization tools for PHYsics based on Bayesian Optimization ( PHYSBO )
15
+
16
+ Bayesian optimization has been proven as an effective tool in accelerating scientific discovery.
17
+ A standard implementation (e.g., scikit-learn), however, can accommodate only small training data.
18
+ PHYSBO is highly scalable due to an efficient protocol that employs Thompson sampling, random feature maps, one-rank Cholesky update and automatic hyperparameter tuning. Technical features are described in [COMBO's document](https://github.com/tsudalab/combo/blob/master/docs/combo_document.pdf) and [PHYSBO's report](https://doi.org/10.1016/j.cpc.2022.108405) (open access).
19
+ PHYSBO was developed based on [COMBO](https://github.com/tsudalab/combo) for academic use.
20
+
21
+ ## Document
22
+
23
+ - Stable (master branch)
24
+ - [English](https://issp-center-dev.github.io/PHYSBO/manual/master/en/index.html)
25
+ - [日本語](https://issp-center-dev.github.io/PHYSBO/manual/master/ja/index.html)
26
+ - Latest (develop branch)
27
+ - [English](https://issp-center-dev.github.io/PHYSBO/manual/develop/en/index.html)
28
+ - [日本語](https://issp-center-dev.github.io/PHYSBO/manual/develop/ja/index.html)
29
+
30
+ ## Required Packages
31
+
32
+ - Python >= 3.6
33
+ - No longer tested with Python 3.6
34
+ - NumPy < 2.0.0
35
+ - SciPy
36
+
37
+ ## Install
38
+
39
+ - From PyPI (recommended)
40
+
41
+ ```bash
42
+ python3 -m pip install physbo
43
+ ```
44
+
45
+ - From source (for developers)
46
+ 1. Update pip (>= 19.0)
47
+
48
+ ```bash
49
+ python3 -m pip install -U pip
50
+ ```
51
+
52
+ 1. Download or clone the github repository
53
+
54
+ ```
55
+ git clone https://github.com/issp-center-dev/PHYSBO
56
+ ```
57
+
58
+ 1. Install via pip
59
+
60
+ ``` bash
61
+ # ./PHYSBO is the root directory of PHYSBO
62
+ # pip install options such as --user are avaiable
63
+
64
+ python3 -m pip install ./PHYSBO
65
+ ```
66
+
67
+ 1. Note: Do not `import physbo` at the root directory of the repository because `import physbo` does not try to import the installed PHYSBO but one in the repository, which includes Cython codes not compiled.
68
+
69
+ ## Uninstall
70
+
71
+ ```bash
72
+ python3 -m pip uninstall physbo
73
+ ```
74
+
75
+ ## Usage
76
+
77
+ ['examples/simple.py'](https://github.com/issp-center-dev/PHYSBO/examples/simple.py) is a simple example.
78
+
79
+ ## Data repository
80
+
81
+ A tutorial and a dataset of a paper about PHYSBO can be found in [PHYSBO Gallery](http://isspns-container.issp.u-tokyo.ac.jp/repo/12).
82
+
83
+ ## License
84
+
85
+ PHYSBO was developed based on [COMBO](https://github.com/tsudalab/COMBO) for academic use.
86
+ PHYSBO v2 is distributed under Mozilla Public License version 2.0 (MPL v2).
87
+ We hope that you cite the following reference when you publish the results using PHYSBO:
88
+
89
+ [“Bayesian optimization package: PHYSBO”, Yuichi Motoyama, Ryo Tamura, Kazuyoshi Yoshimi, Kei Terayama, Tsuyoshi Ueno, Koji Tsuda, Computer Physics Communications Volume 278, September 2022, 108405.](https://doi.org/10.1016/j.cpc.2022.108405)
90
+
91
+ Bibtex
92
+
93
+ ```
94
+ @misc{@article{MOTOYAMA2022108405,
95
+ title = {Bayesian optimization package: PHYSBO},
96
+ journal = {Computer Physics Communications},
97
+ volume = {278},
98
+ pages = {108405},
99
+ year = {2022},
100
+ issn = {0010-4655},
101
+ doi = {https://doi.org/10.1016/j.cpc.2022.108405},
102
+ author = {Yuichi Motoyama and Ryo Tamura and Kazuyoshi Yoshimi and Kei Terayama and Tsuyoshi Ueno and Koji Tsuda},
103
+ keywords = {Bayesian optimization, Multi-objective optimization, Materials screening, Effective model estimation}
104
+ }
105
+ ```
106
+
107
+ ### Copyright
108
+
109
+ © *2020- The University of Tokyo. All rights reserved.*
110
+ This software was developed with the support of \"*Project for advancement of software usability in materials science*\" of The Institute for Solid State Physics, The University of Tokyo.
@@ -0,0 +1,61 @@
1
+ physbo/__init__.py,sha256=6iIXH3SN7bw2Mpsfn-hKmEa9oRKbyPgAT6GTuOwC6L4,493
2
+ physbo/predictor.py,sha256=AYEll5sY9b9CFhv8Le6hb9U-5ebWH0Y1FJfUTI9DqPI,5228
3
+ physbo/variable.py,sha256=iodgnGVQdUxHTdXK9Ml9nORDehxbZVgOSthgOGdez84,5476
4
+ physbo/blm/__init__.py,sha256=HV1ACXsxvupCSoRG9xs1SmBC8pZlAk7XehpVbI8jz-w,449
5
+ physbo/blm/predictor.py,sha256=hpOLIjkzyERDrAiSZQbCZL5bh9n4O42MeZFic-Bae5k,6573
6
+ physbo/blm/basis/__init__.py,sha256=ZlCBjWxUPmJEBv6bKbzZpjjvRsBzoV6JRtECsfFfIhw,313
7
+ physbo/blm/basis/fourier.py,sha256=CuIM4jOWiFjK2PXuMGv1YhBF3AuSEE47K9bjHzclhlY,3675
8
+ physbo/blm/core/__init__.py,sha256=T6uYMvnMilVgOU2j7IWVmuGzwtjQClu1-K_MSdFsxJQ,309
9
+ physbo/blm/core/model.py,sha256=7pZDGrQFILJ_vOwI9nnzoxD4AZ9Bfb40a5J82F_rtyE,6204
10
+ physbo/blm/inf/__init__.py,sha256=6XuBj37sOz0Se5JROyw-7-J69fe9dsnJHCqAGFM_L6k,304
11
+ physbo/blm/inf/exact.py,sha256=tBV5IAwfebU6UHPlXwfHCmF8XxyCfq28yYVicPaRJyg,4239
12
+ physbo/blm/lik/__init__.py,sha256=gwxMia3xdij8VPYcZEWFhIXC5Wc7o6z5773aip2e6a4,358
13
+ physbo/blm/lik/gauss.py,sha256=i7enoDpN2PrShnp_ncRkC-KfhvuLCDcJAwiQdJTDrQs,2885
14
+ physbo/blm/lik/linear.py,sha256=YKaoACRtpdTNvDTwoB0SZx-SGhNdCepECcnyuGFZbug,2560
15
+ physbo/blm/lik/_src/__init__.py,sha256=RZRuuhCKRfnb-N-BncQfuae0ErYJ17egjVdmEdleBow,305
16
+ physbo/blm/lik/_src/cov.py,sha256=gPSvf5qaUVljqtgKsZXW9kdaq7MyAQ60Fmio17VKMo8,2613
17
+ physbo/blm/prior/__init__.py,sha256=uClqNGCpu7bJe2-8CDFhIg1kQIJYO4Zm0mhvCj43M8Q,309
18
+ physbo/blm/prior/gauss.py,sha256=xQJuHC4BB_NlTJFtFwPvfrmprPmi2q_rQHpzZoid7gE,4794
19
+ physbo/gp/__init__.py,sha256=oVFgR273TpRN_Lf-Msfr8BPiYh8e6asV0GLB_rmNcMU,448
20
+ physbo/gp/predictor.py,sha256=7Del2riGqtz29cez61_ZAsYCh6MjNGKrhC2UoeK9VbY,4343
21
+ physbo/gp/core/__init__.py,sha256=DawqEByvSx9TIwxkgeoivQMTPx4esvcfu1K0Fg_vUqc,369
22
+ physbo/gp/core/learning.py,sha256=mdioEv_WvIbyycWyaxItvvecL7m4CKFh_fNAWCsmLjE,11718
23
+ physbo/gp/core/model.py,sha256=4ReAf9p0cfPMs89XyroF8tieRc3G6AR_zfIUIQFbuyQ,11935
24
+ physbo/gp/core/prior.py,sha256=oCVZNrHWM4T49JJrMQyX9GFREw7SmjfkJYnRsFywWTA,5628
25
+ physbo/gp/cov/__init__.py,sha256=uClqNGCpu7bJe2-8CDFhIg1kQIJYO4Zm0mhvCj43M8Q,309
26
+ physbo/gp/cov/gauss.py,sha256=7aME2XGrV1Rq-FX4pBbo6faphQVGQtFNf2CPl-FnTEU,10761
27
+ physbo/gp/cov/_src/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
28
+ physbo/gp/cov/_src/enhance_gauss.cpython-310-darwin.so,sha256=xdKslumFY21J7kNGTAzZgQwWI9njQH5cnqXRjtrioGA,98272
29
+ physbo/gp/inf/__init__.py,sha256=6XuBj37sOz0Se5JROyw-7-J69fe9dsnJHCqAGFM_L6k,304
30
+ physbo/gp/inf/exact.py,sha256=swQqwzmOeDQBqKvquXoSPkLiiUzStcg3-DR2Vz6qBgQ,6436
31
+ physbo/gp/lik/__init__.py,sha256=uClqNGCpu7bJe2-8CDFhIg1kQIJYO4Zm0mhvCj43M8Q,309
32
+ physbo/gp/lik/gauss.py,sha256=wWXLzkWir69w2P50LsPvSPjyPr-5c1MONZ6jmmI7pfY,4891
33
+ physbo/gp/mean/__init__.py,sha256=YrA00lUuYDxAQOscSib6pAoYlhyglrFxXtWIi90QJRo,332
34
+ physbo/gp/mean/const.py,sha256=3rGHQFhUAW3Eoznb9dX21B1u3jqzUzpomZgunMQBWwI,3466
35
+ physbo/gp/mean/zero.py,sha256=1bB1V3_QQsSRlARynAv71Nyluz-x-NOAd01AC0qwBdI,1272
36
+ physbo/misc/__init__.py,sha256=SaYCret6YOuEmVcXR9Yyp4ylDoc6id5t5p13622HoC4,628
37
+ physbo/misc/centering.py,sha256=VSLtGSQQltNp19JiXuqEXNwQGxm0vxLoqEcaQn6A_GY,859
38
+ physbo/misc/gauss_elim.py,sha256=GSOeaGTMvoafQJrIfuaYHDz8I_1DiAgzrABcgKhX-pI,950
39
+ physbo/misc/set_config.py,sha256=7qFpR5vrK_XdP6hipG0i_pmWxGPvTyf1GiOljVxcClM,7680
40
+ physbo/misc/_src/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
41
+ physbo/misc/_src/cholupdate.cpython-310-darwin.so,sha256=5A_zFMz-nLfvH5k76tbSrJawBNebbNYpMIo6mFbqUwk,97664
42
+ physbo/misc/_src/diagAB.cpython-310-darwin.so,sha256=mCw4S5BImByBHQ9AgjD9sYPtNE9LrkvL5lNGwjFHMHg,97824
43
+ physbo/misc/_src/logsumexp.cpython-310-darwin.so,sha256=hnD0dGWVEDSyUoAE3EyO3XV0cC5pRoddq_YjB-Sr38E,98032
44
+ physbo/misc/_src/traceAB.cpython-310-darwin.so,sha256=q0KsCK18_VUnKuZYuwqGlk7Rpxm5JH3v7WaMw8d0U3c,98080
45
+ physbo/opt/__init__.py,sha256=TQNoxUuPSM5jNUU1h5JLO-J8zrAyVUP1KcNQ6t0gVTM,307
46
+ physbo/opt/adam.py,sha256=JPXbAWhHzBVEPwARdz8MnDJIVy7aayxvTCIogXftf6U,2897
47
+ physbo/search/__init__.py,sha256=rlyc3jJLULLpngdWwH7jksK8_xkQLNDYxmgBxdAnUJg,382
48
+ physbo/search/pareto.py,sha256=L39xo7OHyMYahAsq6qDX9IQBHP3yiAFSnZmhYsGflVs,7448
49
+ physbo/search/score.py,sha256=h-settPaZJMAvffTfCRaB_BVuFFBErMPvJgEXnoq5z4,4242
50
+ physbo/search/score_multi.py,sha256=cR3ZJ6K6LLr-zqe5Y1DAqA4kP_ChZ7PBqj6SoxsjO8E,6355
51
+ physbo/search/utility.py,sha256=Th9MKiYJGRUlq02dHLYUbpVvrVCwuMaOISOiZJZCjI8,2972
52
+ physbo/search/discrete/__init__.py,sha256=qZ_Y7AU_-XHy9c7Mc9vdsZphnrzQ9M5grmd93-S0yHQ,375
53
+ physbo/search/discrete/policy.py,sha256=4HeRi48nA2Pzg2kkuDlOdH6ykN0ivmDDArlc6Q9Gapo,27736
54
+ physbo/search/discrete/results.py,sha256=Bfz5b7dxMXU2n65J_q_aWc7DRUAmha0QKj8fI9yms3I,6220
55
+ physbo/search/discrete_multi/__init__.py,sha256=qZ_Y7AU_-XHy9c7Mc9vdsZphnrzQ9M5grmd93-S0yHQ,375
56
+ physbo/search/discrete_multi/policy.py,sha256=co_6-7CQwBF7rZVcorj2C3iB-JX0ee7gHMvrSe-Mycs,19824
57
+ physbo/search/discrete_multi/results.py,sha256=PrAWI2Aqcirud9HFOjXbUiNwoRFjn6DxyYWoiO--p8s,3988
58
+ physbo-2.0.0.dist-info/METADATA,sha256=nbWICnKikogFQZQlfqmnQ9xTXVsdycTytc2TLYwA1zI,3992
59
+ physbo-2.0.0.dist-info/WHEEL,sha256=RLE0xelBIkm6USNGYkfp_yS5MTpj2zaVFa3Rpj4ZXDg,110
60
+ physbo-2.0.0.dist-info/top_level.txt,sha256=etIcIOJXdEJxToI-x6fzrckcEn3013Uh3yVOCrmqTUQ,7
61
+ physbo-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.43.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp310-cp310-macosx_12_0_arm64
5
+
@@ -0,0 +1 @@
1
+ physbo