piegy 1.1.2__py3-none-any.whl → 1.1.4__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.
- piegy/__init__.py +4 -4
- piegy/__version__.py +3 -1
- piegy/analysis.py +58 -58
- piegy/data_tools.py +35 -35
- piegy/figures.py +80 -80
- piegy/{model.py → simulation.py} +109 -109
- piegy/test_var.py +25 -25
- piegy/tools/figure_tools.py +3 -3
- piegy/videos.py +21 -18
- {piegy-1.1.2.dist-info → piegy-1.1.4.dist-info}/METADATA +10 -7
- piegy-1.1.4.dist-info/RECORD +16 -0
- piegy-1.1.2.dist-info/RECORD +0 -16
- {piegy-1.1.2.dist-info → piegy-1.1.4.dist-info}/WHEEL +0 -0
- {piegy-1.1.2.dist-info → piegy-1.1.4.dist-info}/licenses/LICENSE.txt +0 -0
- {piegy-1.1.2.dist-info → piegy-1.1.4.dist-info}/top_level.txt +0 -0
piegy/test_var.py
CHANGED
@@ -31,7 +31,7 @@ Additional tools (can be called directly):
|
|
31
31
|
- var_convergence2: Find the simulatoin results of test_var2 that diverge.
|
32
32
|
'''
|
33
33
|
|
34
|
-
from . import
|
34
|
+
from . import simulation
|
35
35
|
from .tools import figure_tools as figure_t
|
36
36
|
from . import analysis as analysis
|
37
37
|
from . import data_tools as data_t
|
@@ -45,7 +45,7 @@ import numpy as np
|
|
45
45
|
# can be 'o-', 'x-', ...
|
46
46
|
DOTTED_CURVE_TYPE = 'o-'
|
47
47
|
|
48
|
-
# map patch_var name to index in the patch class (in
|
48
|
+
# map patch_var name to index in the patch class (in simulation.py)
|
49
49
|
PATCH_VAR_DICT = {'mu1': 0, 'mu2': 1, 'w1': 2, 'w2': 3, 'kappa1': 4, 'kappa2': 5}
|
50
50
|
|
51
51
|
# display name (in latex)
|
@@ -54,16 +54,16 @@ PATCH_VAR_DISP = {'mu1': r'$\mu_U$', 'mu2': r'$\mu_V$', 'w1': r'$w_U$', 'w2': r'
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
def test_var1(
|
57
|
+
def test_var1(mod, var, values, dirs, compress_itv = None, predict_runtime = False):
|
58
58
|
'''
|
59
59
|
Test the influence of one patch variable on simulation results.
|
60
60
|
|
61
61
|
Inputs::
|
62
|
-
- sim: a simulation object. All tests will use parameters of
|
62
|
+
- sim: a simulation.model object. All tests will use parameters of mod, except for the variable to test.
|
63
63
|
- var: str, which patch variable to test. e.g. var can be 'mu1', 'w2', 'kappa2', ...
|
64
64
|
- values: 1D np.array or list, what values of var to test.
|
65
65
|
- dirs: str, where to save data.
|
66
|
-
- compress_itv: int, whether to reduce data size (if not 1), passed to model.
|
66
|
+
- compress_itv: int, whether to reduce data size (if not 1), passed to simulation.model.compress_data function.
|
67
67
|
- predict_runtime: bool, whether to predict how much time left for each test.
|
68
68
|
|
69
69
|
Returns::
|
@@ -79,16 +79,16 @@ def test_var1(sim, var, values, dirs, compress_itv = None, predict_runtime = Fal
|
|
79
79
|
var_dirs = []
|
80
80
|
|
81
81
|
for k in range(len(values)):
|
82
|
-
sim2 =
|
82
|
+
sim2 = mod.copy(copy_data = False)
|
83
83
|
current_var_str = var + '=' + str(values[k]) # e.g., 'mu1=0.1'
|
84
84
|
var_dirs.append(dirs + '/' + current_var_str)
|
85
85
|
|
86
|
-
for i in range(
|
87
|
-
for j in range(
|
86
|
+
for i in range(mod.N):
|
87
|
+
for j in range(mod.M):
|
88
88
|
sim2.P[i][j][PATCH_VAR_DICT[var]] = values[k]
|
89
89
|
|
90
90
|
try:
|
91
|
-
|
91
|
+
simulation.run(sim2, predict_runtime, message = current_var_str + ', ')
|
92
92
|
if compress_itv != None:
|
93
93
|
sim2.compress_data(compress_itv)
|
94
94
|
data_t.save_data(sim2, var_dirs[k], print_msg = False)
|
@@ -100,12 +100,12 @@ def test_var1(sim, var, values, dirs, compress_itv = None, predict_runtime = Fal
|
|
100
100
|
|
101
101
|
|
102
102
|
|
103
|
-
def test_var2(
|
103
|
+
def test_var2(mod, var1, var2, values1, values2, dirs, compress_itv = None, predict_runtime = False):
|
104
104
|
'''
|
105
105
|
Two-variable version of test_var1. Test the influence of two varibles on simulation results.
|
106
106
|
|
107
107
|
Inputs:
|
108
|
-
- sim: a simulation object. All tests will use the parameters of
|
108
|
+
- sim: a simulation.model object. All tests will use the parameters of mod, except for the two vars to be tested.
|
109
109
|
- var1: str, the first variable to test.
|
110
110
|
- var2: str, the second variable to test.
|
111
111
|
- values1: 1D list or np.array, values for var1.
|
@@ -125,17 +125,17 @@ def test_var2(sim, var1, var2, values1, values2, dirs, compress_itv = None, pred
|
|
125
125
|
|
126
126
|
for k1 in range(len(values1)):
|
127
127
|
for k2 in range(len(values2)):
|
128
|
-
sim2 =
|
128
|
+
sim2 = mod.copy(copy_data = False)
|
129
129
|
current_var_str = var1 + '=' + str(values1[k1]) + ', ' + var2 + '=' + str(values2[k2]) # e.g., mu1=0.1, mu2=0.2
|
130
130
|
var_dirs[k1].append(dirs + '/' + current_var_str)
|
131
131
|
|
132
|
-
for i in range(
|
133
|
-
for j in range(
|
132
|
+
for i in range(mod.N):
|
133
|
+
for j in range(mod.M):
|
134
134
|
sim2.P[i][j][PATCH_VAR_DICT[var1]] = values1[k1]
|
135
135
|
sim2.P[i][j][PATCH_VAR_DICT[var2]] = values2[k2]
|
136
136
|
|
137
137
|
try:
|
138
|
-
|
138
|
+
simulation.run(sim2, predict_runtime, message = current_var_str + ', ')
|
139
139
|
if compress_itv != None:
|
140
140
|
sim2.compress_data(compress_itv)
|
141
141
|
data_t.save_data(sim2, var_dirs[k1][k2], print_msg = False)
|
@@ -488,11 +488,11 @@ def var_convergence1(var_dirs, interval = 20, start = 0.8, fluc = 0.07):
|
|
488
488
|
|
489
489
|
Inputs:
|
490
490
|
- var_dirs: Return value of test_var1
|
491
|
-
- interval: int. One of the inputs of
|
491
|
+
- interval: int. One of the inputs of analysis.check_convergence.
|
492
492
|
The size of interval to take average over.
|
493
|
-
- start: (0,1) float. One of the inputs of
|
493
|
+
- start: (0,1) float. One of the inputs of analysis.check_convergence.
|
494
494
|
Convergence is expected to start from at least this point.
|
495
|
-
- fluc: (0,1) float. One of the inputs of
|
495
|
+
- fluc: (0,1) float. One of the inputs of analysis.check_convergence.
|
496
496
|
Expect the difference between any two small intervals (a quotient-form difference) should be less than fluc.
|
497
497
|
|
498
498
|
Returns:
|
@@ -503,11 +503,11 @@ def var_convergence1(var_dirs, interval = 20, start = 0.8, fluc = 0.07):
|
|
503
503
|
|
504
504
|
for dirs in var_dirs:
|
505
505
|
try:
|
506
|
-
|
506
|
+
mod = data_t.read_data(dirs)
|
507
507
|
except FileNotFoundError:
|
508
508
|
print(dirs + ' data not found, skipped')
|
509
509
|
continue
|
510
|
-
if not analysis.check_convergence(
|
510
|
+
if not analysis.check_convergence(mod, interval, start, fluc):
|
511
511
|
diverge_list.append(dirs)
|
512
512
|
|
513
513
|
return diverge_list
|
@@ -554,11 +554,11 @@ def var_convergence2(var_dirs, interval = 20, start = 0.8, fluc = 0.07):
|
|
554
554
|
|
555
555
|
Inputs:
|
556
556
|
- var_dirs: Return value of test_var2
|
557
|
-
- interval: int. One of the inputs of
|
557
|
+
- interval: int. One of the inputs of analysis.check_convergence.
|
558
558
|
The size of interval to take average over.
|
559
|
-
- start: (0,1) float. One of the inputs of
|
559
|
+
- start: (0,1) float. One of the inputs of analysis.check_convergence.
|
560
560
|
Convergence is expected to start from at least this point.
|
561
|
-
- fluc: (0,1) float. One of the inputs of
|
561
|
+
- fluc: (0,1) float. One of the inputs of analysis.check_convergence.
|
562
562
|
Expect the difference between any two small intervals (a quotient-form difference) should be less than fluc.
|
563
563
|
|
564
564
|
Returns:
|
@@ -570,11 +570,11 @@ def var_convergence2(var_dirs, interval = 20, start = 0.8, fluc = 0.07):
|
|
570
570
|
for sublist in var_dirs:
|
571
571
|
for dirs in sublist:
|
572
572
|
try:
|
573
|
-
|
573
|
+
mod = data_t.read_data(dirs)
|
574
574
|
except FileNotFoundError:
|
575
575
|
print(dirs + ' data not found, skipped')
|
576
576
|
continue
|
577
|
-
if not analysis.check_convergence(
|
577
|
+
if not analysis.check_convergence(mod, interval, start, fluc):
|
578
578
|
diverge_list.append(dirs)
|
579
579
|
|
580
580
|
return diverge_list
|
piegy/tools/figure_tools.py
CHANGED
@@ -7,7 +7,7 @@ Functions:
|
|
7
7
|
- scatter: Make a scatter plot. Sets title, text ... as well.
|
8
8
|
- gen_title: Generates a title when the plot is about an interval of time.
|
9
9
|
- gen_text: Generates a text about standard deviation info.
|
10
|
-
- scale_interval: scale interval if
|
10
|
+
- scale_interval: scale interval if mod's data was already reduced.
|
11
11
|
- ave_interval: Calculates average value of data over a time interval.
|
12
12
|
- ave_interval_1D: Return in a 1D format.
|
13
13
|
- config_mpl: Configure Matplotlib parameters in a nice format
|
@@ -201,13 +201,13 @@ def ave_interval_1D(data, start_index, end_index):
|
|
201
201
|
|
202
202
|
|
203
203
|
def scale_interval(interval, compress_itv):
|
204
|
-
# scale interval if
|
204
|
+
# scale interval if mod's data was already reduced.
|
205
205
|
if compress_itv < 1:
|
206
206
|
raise ValueError('figures.scale_interval has compress_itv < 1:', compress_itv)
|
207
207
|
|
208
208
|
interval = int(interval / compress_itv)
|
209
209
|
if interval == 0:
|
210
|
-
print('Warning: data already smoothed by an interval:
|
210
|
+
print('Warning: data already smoothed by an interval: mod.compress_itv =', compress_itv, 'which is coarser than your', interval)
|
211
211
|
interval = 1
|
212
212
|
|
213
213
|
return interval
|
piegy/videos.py
CHANGED
@@ -106,12 +106,12 @@ def get_max_lim(lims):
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
def frame_lim(
|
109
|
+
def frame_lim(mod, func, frames):
|
110
110
|
'''
|
111
111
|
Find a large enough xlim and ylim for frames, if not heatmaps.
|
112
112
|
|
113
113
|
Inputs:
|
114
|
-
|
114
|
+
mod: A simulation.model object, the simulation results.
|
115
115
|
frames: How many frame to make for the video.
|
116
116
|
|
117
117
|
Returns:
|
@@ -125,15 +125,17 @@ def frame_lim(sim, func, frames):
|
|
125
125
|
V_ylist = []
|
126
126
|
|
127
127
|
for i in range(10):
|
128
|
-
|
128
|
+
fig_U, ax_U = plt.subplots()
|
129
|
+
fig_V, ax_V = plt.subplots()
|
130
|
+
ax_U, ax_V = func(mod, ax_U = ax_U, ax_V = ax_V, start = i / 10, end = (i / 10 + 1 / frames))
|
129
131
|
|
130
|
-
U_xlist.append(
|
131
|
-
U_ylist.append(
|
132
|
-
V_xlist.append(
|
133
|
-
V_ylist.append(
|
132
|
+
U_xlist.append(ax_U.get_xlim())
|
133
|
+
U_ylist.append(ax_U.get_ylim())
|
134
|
+
V_xlist.append(ax_V.get_xlim())
|
135
|
+
V_ylist.append(ax_V.get_ylim())
|
134
136
|
|
135
|
-
plt.close(
|
136
|
-
plt.close(
|
137
|
+
plt.close(fig_U)
|
138
|
+
plt.close(fig_V)
|
137
139
|
|
138
140
|
# get the largest 'range' based on the lists
|
139
141
|
U_xlim = get_max_lim(U_xlist)
|
@@ -146,12 +148,12 @@ def frame_lim(sim, func, frames):
|
|
146
148
|
|
147
149
|
|
148
150
|
|
149
|
-
def frame_heatmap_lim(
|
151
|
+
def frame_heatmap_lim(mod, func, frames):
|
150
152
|
'''
|
151
153
|
Find a large enough color bar lim for frames, if heatmaps.
|
152
154
|
|
153
155
|
Inputs:
|
154
|
-
|
156
|
+
mod: A simulation.model object, the simulation results.
|
155
157
|
frames: How many frame to make for the video.
|
156
158
|
|
157
159
|
Returns:
|
@@ -164,7 +166,7 @@ def frame_heatmap_lim(sim, func, frames):
|
|
164
166
|
for i in range(10):
|
165
167
|
fig_U, ax_U = plt.subplots()
|
166
168
|
fig_V, ax_V = plt.subplots()
|
167
|
-
ax_U, ax_V = func(
|
169
|
+
ax_U, ax_V = func(mod, ax_U = ax_U, ax_V = ax_V, start = i / 10, end = (i / 10 + 1 / frames))
|
168
170
|
|
169
171
|
U_list.append(ax_U.collections[0].get_clim())
|
170
172
|
V_list.append(ax_V.collections[0].get_clim())
|
@@ -201,14 +203,15 @@ def make_mp4(video_dir, frame_dir, fps):
|
|
201
203
|
|
202
204
|
|
203
205
|
|
204
|
-
def make_video(
|
206
|
+
def make_video(mod, func_name = 'UV_heatmap', frames = 100, dpi = 200, fps = 30, U_color = 'Greens', V_color = 'Purples', annot = False, fmt = '.3g', del_frames = False, dirs = 'videos'):
|
205
207
|
'''
|
206
208
|
Make a mp4 video based on simulation results.
|
207
209
|
|
208
210
|
Inputs:
|
209
|
-
-
|
211
|
+
- mod: a simulation.model object, the simulation results.
|
210
212
|
- func_name: what function to use to make the frames. Should be one of the functions in figures.py
|
211
213
|
- frames: how many frames to make. Use more frames for more smooth evolutions.
|
214
|
+
- dpi: dots per inch.
|
212
215
|
- fps: frames per second.
|
213
216
|
- U_color: color for U's videos. Color maps or regular colors, based on what function you use.
|
214
217
|
- V_color: color for V's videos.
|
@@ -231,10 +234,10 @@ def make_video(sim, func_name = 'UV_heatmap', frames = 100, dpi = 200, fps = 30,
|
|
231
234
|
|
232
235
|
if 'heatmap' in func_name:
|
233
236
|
# make sure a fixed color bar for all frames
|
234
|
-
U_clim, V_clim = frame_heatmap_lim(
|
237
|
+
U_clim, V_clim = frame_heatmap_lim(mod, func, frames)
|
235
238
|
else:
|
236
239
|
# make sure y axis not changing if not making heatmaps
|
237
|
-
U_xlim, U_ylim, V_xlim, V_ylim = frame_lim(
|
240
|
+
U_xlim, U_ylim, V_xlim, V_ylim = frame_lim(mod, func, frames)
|
238
241
|
|
239
242
|
|
240
243
|
U_frame_dirs = dirs + '/U-' + func_name
|
@@ -258,9 +261,9 @@ def make_video(sim, func_name = 'UV_heatmap', frames = 100, dpi = 200, fps = 30,
|
|
258
261
|
fig_V, ax_V = plt.subplots(figsize = (6.4, 4.8))#, constrained_layout = True)
|
259
262
|
|
260
263
|
if 'heatmap' in func_name:
|
261
|
-
ax_U, ax_V = func(
|
264
|
+
ax_U, ax_V = func(mod, ax_U = ax_U, ax_V = ax_V, U_color = U_color, V_color = V_color, start = i / frames, end = (i + 1) / frames, annot = annot, fmt = fmt)
|
262
265
|
else:
|
263
|
-
ax_U, ax_V = func(
|
266
|
+
ax_U, ax_V = func(mod, ax_U = ax_U, ax_V = ax_V, U_color = U_color, V_color = V_color, start = i / frames, end = (i + 1) / frames)
|
264
267
|
|
265
268
|
if 'heatmap' in func_name:
|
266
269
|
ax_U.collections[0].set_clim(U_clim)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: piegy
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.4
|
4
4
|
Summary: Payoff-Driven Stochastic Spatial Model for Evolutionary Game Theory
|
5
5
|
Author-email: Chenning Xu <cxu7@caltech.edu>
|
6
6
|
License: BSD 3-Clause License
|
@@ -55,7 +55,7 @@ Dynamic: license-file
|
|
55
55
|
|
56
56
|
# piegy
|
57
57
|
|
58
|
-
The package full name is: Payoff-Driven Stochastic Spatial Model for Evolutionary Game Theory
|
58
|
+
The package full name is: Payoff-Driven Stochastic Spatial Model for Evolutionary Game Theory. "pi" refers to "payoff, and "egy" are taken from "Evolutionary Game Theory".
|
59
59
|
|
60
60
|
Provides a stochastic spatial model for simulating the interaction and evolution of two species in either 1D or 2D space, as well as analytic tools.
|
61
61
|
|
@@ -69,7 +69,7 @@ pip install piegy
|
|
69
69
|
|
70
70
|
## Documentation and Source
|
71
71
|
|
72
|
-
See source code at: [piegy GitHub
|
72
|
+
See source code at: [piegy GitHub-repo](https://github.com/Chenning04/piegy.git).
|
73
73
|
The *piegy* documentation at: [piegy Documentation](https://piegy.readthedocs.io/en/).
|
74
74
|
|
75
75
|
## How the Model Works
|
@@ -80,7 +80,7 @@ We use the Gillepie algorithm as the fundamental event-selection algorithm. At e
|
|
80
80
|
|
81
81
|
## Analytic Tools
|
82
82
|
|
83
|
-
The *piegy* package also provides a wide range of analytic and supportive tools alongside the main model, such as plotting, numerical tools, data saving & reading, etc. We also provide the *piegy.videos* module for more direct visualizations
|
83
|
+
The *piegy* package also provides a wide range of analytic and supportive tools alongside the main model, such as plotting, numerical tools, data saving & reading, etc. We also provide the *piegy.videos* module for more direct visualizations such as how population distribution change over time.
|
84
84
|
|
85
85
|
## Examples
|
86
86
|
|
@@ -88,15 +88,18 @@ To get started, simply get our demo model and run simulation:
|
|
88
88
|
|
89
89
|
```python
|
90
90
|
from piegy import model, figures
|
91
|
+
import matplotlib.pyplot as plt
|
91
92
|
|
92
93
|
sim = model.demo_model()
|
93
94
|
model.run(sim)
|
94
95
|
|
95
|
-
|
96
|
-
|
96
|
+
fig1, ax1 = plt.subplots()
|
97
|
+
figures.UV_dyna(sim, ax1)
|
98
|
+
fig2, ax2 = plt.subplots(1, 2, figsize = (12.8, 4.8))
|
99
|
+
U_hmap, V_hmap = figures.UV_heatmap(sim, ax2[0], ax2[1])
|
97
100
|
```
|
98
101
|
|
99
|
-
The figures reveal
|
102
|
+
The figures reveal population dynamics and steady state population distribution.
|
100
103
|
|
101
104
|
|
102
105
|
## Acknowledgments
|
@@ -0,0 +1,16 @@
|
|
1
|
+
piegy/__init__.py,sha256=plq8y9IE9ilaKtEFIblJ_QexipAvPBXoalXhXLbs71Q,3244
|
2
|
+
piegy/__version__.py,sha256=p8vZzyuX_tcu2qlBukCqdCu3SozzbpVqCUOaVaEe8rE,856
|
3
|
+
piegy/analysis.py,sha256=5X6cpEAgFlHiRoaVmqYALlUvkep_LmrqpJHLCtQrd9Q,8727
|
4
|
+
piegy/data_tools.py,sha256=Rw1fzeCGbxAB8MqTxZNZnOkVn7FmoUGoRz21scTAvF0,3550
|
5
|
+
piegy/figures.py,sha256=bMHS7gTYtWdixUMW_wokBD6NSj_WOjQtnWp0R8VXChw,19059
|
6
|
+
piegy/simulation.py,sha256=ngyLGzXAePYlyrcRznxWA7FEvGl9Gad976Sh1gHT0hU,45178
|
7
|
+
piegy/test_var.py,sha256=g6BS_G_sewLn-8urUdTnlaVd8LYt_5GDvQQr_4bmNDU,23604
|
8
|
+
piegy/videos.py,sha256=QfSpOdwfaDsrQYRoiHmZ6gowzRQHom3m8kx1P65_8sM,10218
|
9
|
+
piegy/tools/__init__.py,sha256=eYOl_HJHDonYexfrmKh3koOlxvtSo46vH6jHvCEEB4k,300
|
10
|
+
piegy/tools/figure_tools.py,sha256=54vJSJMReXidFnSPE_xFvedtgnJU3d55zQDPNBLGs98,6975
|
11
|
+
piegy/tools/file_tools.py,sha256=ncxFWeHfIE-GYLQlOrahFlhBgqPyuY3R5_93fpQeCEs,630
|
12
|
+
piegy-1.1.4.dist-info/licenses/LICENSE.txt,sha256=wfzEht_CxOcfGGmg3f3at4mWJb9rTBjA51mXLl_3O3g,1498
|
13
|
+
piegy-1.1.4.dist-info/METADATA,sha256=R3zSrrCR85dtpvtQBmfMTikrnuqSPSJveHjOtIcUr-E,5291
|
14
|
+
piegy-1.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
15
|
+
piegy-1.1.4.dist-info/top_level.txt,sha256=k4QLYL8PqdqDuy95-4NZD_FVLqJDsmq67tpKkBn4vMw,6
|
16
|
+
piegy-1.1.4.dist-info/RECORD,,
|
piegy-1.1.2.dist-info/RECORD
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
piegy/__init__.py,sha256=Lrh6NegSvo6LOCXg_tBTu804eicnHpQY2zmE0FchjKE,3241
|
2
|
-
piegy/__version__.py,sha256=Trj_0I_674hSVhRFZKrxgEPKLEDrFFGr_p7rby3iR5w,701
|
3
|
-
piegy/analysis.py,sha256=1cF06igQMGJGVjLiyhtgepGk8fYhzvL0orI48tOK1qY,8713
|
4
|
-
piegy/data_tools.py,sha256=lNFOX4H0o_WfRSNQoC9QGCK66-IdrZ0zCnz12N-Ael4,3599
|
5
|
-
piegy/figures.py,sha256=xXvr9LcGGhpeVibWTnIiDQlc_kBPibT8qYU5ALKS-zw,19063
|
6
|
-
piegy/model.py,sha256=iTC0Ybp4qtrCcX_NcmEEk4bbqIXqUh470eF0CPbeEK0,45311
|
7
|
-
piegy/test_var.py,sha256=HpdJf8i90iWteoJaVnYt37NJo1it2cf9srCsuYtwc7k,23628
|
8
|
-
piegy/videos.py,sha256=yzZPMvU2wTrBQLnqoQGHuxOWVu-Dxyes7w4UuEB_N6c,10176
|
9
|
-
piegy/tools/__init__.py,sha256=eYOl_HJHDonYexfrmKh3koOlxvtSo46vH6jHvCEEB4k,300
|
10
|
-
piegy/tools/figure_tools.py,sha256=IWxMF_Yali37l2knzKLAcvrE8ndAQhCixfUu1_sWEf0,6975
|
11
|
-
piegy/tools/file_tools.py,sha256=ncxFWeHfIE-GYLQlOrahFlhBgqPyuY3R5_93fpQeCEs,630
|
12
|
-
piegy-1.1.2.dist-info/licenses/LICENSE.txt,sha256=wfzEht_CxOcfGGmg3f3at4mWJb9rTBjA51mXLl_3O3g,1498
|
13
|
-
piegy-1.1.2.dist-info/METADATA,sha256=VCEwbAo25BkpLu_-b8nmsbisD-cFPy7lwovmG5PKNa0,5097
|
14
|
-
piegy-1.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
15
|
-
piegy-1.1.2.dist-info/top_level.txt,sha256=k4QLYL8PqdqDuy95-4NZD_FVLqJDsmq67tpKkBn4vMw,6
|
16
|
-
piegy-1.1.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|