functioneer 0.4.0__tar.gz → 0.4.2__tar.gz
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.
- {functioneer-0.4.0/src/functioneer.egg-info → functioneer-0.4.2}/PKG-INFO +28 -22
- {functioneer-0.4.0 → functioneer-0.4.2}/README.md +26 -20
- {functioneer-0.4.0 → functioneer-0.4.2}/pyproject.toml +2 -2
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer/__init__.py +1 -1
- {functioneer-0.4.0 → functioneer-0.4.2/src/functioneer.egg-info}/PKG-INFO +28 -22
- {functioneer-0.4.0 → functioneer-0.4.2}/LICENSE +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/setup.cfg +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer/analysis.py +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer/parameter.py +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer/steps.py +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer/util.py +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer.egg-info/SOURCES.txt +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer.egg-info/dependency_links.txt +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer.egg-info/requires.txt +0 -0
- {functioneer-0.4.0 → functioneer-0.4.2}/src/functioneer.egg-info/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: functioneer
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: Effortlessly explore function behavior with
|
|
3
|
+
Version: 0.4.2
|
|
4
|
+
Summary: Effortlessly explore function behavior with the ultimate batch runner.
|
|
5
5
|
Author-email: Quinn Marsh <quinnmarsh@hotmail.com>
|
|
6
6
|
Maintainer-email: Quinn Marsh <quinnmarsh@hotmail.com>
|
|
7
7
|
License: MIT
|
|
@@ -31,23 +31,26 @@ Dynamic: license-file
|
|
|
31
31
|
|
|
32
32
|
# Functioneer
|
|
33
33
|
|
|
34
|
+
**Announcement:** Functioneer has just entered public testing and I'd love your feedback on anything: how you're using it, the API, the docs, requested features, etc. Please reach out, I'd love to hear from you. -Quinn
|
|
35
|
+
|
|
34
36
|
**Author**: Quinn Marsh\
|
|
35
|
-
**
|
|
37
|
+
**GitHub**: https://github.com/qthedoc/functioneer/ \
|
|
38
|
+
**PyPI**: https://pypi.org/project/functioneer/
|
|
36
39
|
|
|
37
|
-
Functioneer
|
|
40
|
+
Functioneer is the ultimate batch runner. Prepare to be an analysis ninja, effortlessly exploring your functions. In just a few lines of code, you can set up thousands or even millions of tests and optimizations on your function. Perfect for parameter sweeps, engineering simulations, digital twin optimization and much more.
|
|
38
41
|
|
|
39
42
|
## Quick Start
|
|
40
43
|
|
|
44
|
+
**Full set of examples**: [Examples.ipynb (nbviewer.org)](https://nbviewer.org/github/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
45
|
+
*This is currently the main form of documentation.
|
|
46
|
+
|
|
41
47
|
### Installation
|
|
42
48
|
```
|
|
43
49
|
pip install functioneer
|
|
44
50
|
```
|
|
45
51
|
|
|
46
|
-
Full set of examples: [Examples.ipynb](https://github.com/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
47
|
-
*This is currently the main form of documentation, lots of good stuff in there!
|
|
48
|
-
|
|
49
52
|
### Choose a Function to Analyze
|
|
50
|
-
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its
|
|
53
|
+
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its popular use as an optimization benchmark.
|
|
51
54
|
|
|
52
55
|
```
|
|
53
56
|
import functioneer as fn
|
|
@@ -64,12 +67,12 @@ def rosenbrock(x, y, a, b):
|
|
|
64
67
|
Note: forks for `x` and `y` create a 'grid' of values\
|
|
65
68
|
Note: Parameter IDs MUST match your function's args, function evals inside functioneer are fully keyword arg based.
|
|
66
69
|
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
results =
|
|
70
|
+
analysis = fn.AnalysisModule() # Create new analysis
|
|
71
|
+
analysis.add.define({'a': 1, 'b': 100}) # define a and b
|
|
72
|
+
analysis.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
|
|
73
|
+
analysis.add.fork('y', (1, 10))
|
|
74
|
+
analysis.add.execute(func=rosenbrock) #
|
|
75
|
+
results = analysis.run()
|
|
73
76
|
print('Example 1 Output:')
|
|
74
77
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
75
78
|
```
|
|
@@ -90,11 +93,11 @@ Example 1 Output:
|
|
|
90
93
|
|
|
91
94
|
Note: values for `x` and `y` before optimization are used as initial guesses
|
|
92
95
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
results =
|
|
96
|
+
analysis = fn.AnalysisModule({'x': 0, 'y': 0})
|
|
97
|
+
analysis.add.fork('a', (1, 2))
|
|
98
|
+
analysis.add.fork('b', (0, 100, 200))
|
|
99
|
+
analysis.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
|
|
100
|
+
results = analysis.run()
|
|
98
101
|
print('\nExample 2 Output:')
|
|
99
102
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
100
103
|
```
|
|
@@ -110,9 +113,9 @@ Example 2 Output:
|
|
|
110
113
|
```
|
|
111
114
|
## Key Features
|
|
112
115
|
|
|
113
|
-
- **
|
|
116
|
+
- **Quickly test variations of a parameter with a single line of code:** Avoid writing deeply nested loops. Typically varying *n* parameters requires *n* nested loops... not anymore!
|
|
114
117
|
|
|
115
|
-
- **Quickly
|
|
118
|
+
- **Quickly setup optimization:** Most optimization libraries require your function to take in and spit out a list or array, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to add/rm/swap an optimization parameter!
|
|
116
119
|
|
|
117
120
|
- **Get results in a consistent easy to use format:** No more questions, the results are presented in a nice clean pandas data frame every time.
|
|
118
121
|
|
|
@@ -170,7 +173,10 @@ Thanks to the amazing open source communities: Python, numpy, pandas, etc that m
|
|
|
170
173
|
|
|
171
174
|
Thanks to LightManufacturing, where I had the opportunity to develop advanced digital twins for solar thermal facilities... and then analyze them. It was here, where the seed for Functioneer was planted.
|
|
172
175
|
|
|
173
|
-
|
|
176
|
+
Thank you God for beaming down what seemed like the craziest idea at the time: to structure an analysis as a pipeline of *analysis steps* with the *parameters* flowing thru like water.
|
|
177
|
+
|
|
178
|
+
## Dev
|
|
179
|
+
If anyone wants to help develop Functioneer, there are issues on GitHub with planned features and a dev_notes folder containing possibly useful chicken scratch.
|
|
174
180
|
|
|
175
181
|
## License
|
|
176
182
|
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
# Functioneer
|
|
2
2
|
|
|
3
|
+
**Announcement:** Functioneer has just entered public testing and I'd love your feedback on anything: how you're using it, the API, the docs, requested features, etc. Please reach out, I'd love to hear from you. -Quinn
|
|
4
|
+
|
|
3
5
|
**Author**: Quinn Marsh\
|
|
4
|
-
**
|
|
6
|
+
**GitHub**: https://github.com/qthedoc/functioneer/ \
|
|
7
|
+
**PyPI**: https://pypi.org/project/functioneer/
|
|
5
8
|
|
|
6
|
-
Functioneer
|
|
9
|
+
Functioneer is the ultimate batch runner. Prepare to be an analysis ninja, effortlessly exploring your functions. In just a few lines of code, you can set up thousands or even millions of tests and optimizations on your function. Perfect for parameter sweeps, engineering simulations, digital twin optimization and much more.
|
|
7
10
|
|
|
8
11
|
## Quick Start
|
|
9
12
|
|
|
13
|
+
**Full set of examples**: [Examples.ipynb (nbviewer.org)](https://nbviewer.org/github/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
14
|
+
*This is currently the main form of documentation.
|
|
15
|
+
|
|
10
16
|
### Installation
|
|
11
17
|
```
|
|
12
18
|
pip install functioneer
|
|
13
19
|
```
|
|
14
20
|
|
|
15
|
-
Full set of examples: [Examples.ipynb](https://github.com/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
16
|
-
*This is currently the main form of documentation, lots of good stuff in there!
|
|
17
|
-
|
|
18
21
|
### Choose a Function to Analyze
|
|
19
|
-
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its
|
|
22
|
+
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its popular use as an optimization benchmark.
|
|
20
23
|
|
|
21
24
|
```
|
|
22
25
|
import functioneer as fn
|
|
@@ -33,12 +36,12 @@ def rosenbrock(x, y, a, b):
|
|
|
33
36
|
Note: forks for `x` and `y` create a 'grid' of values\
|
|
34
37
|
Note: Parameter IDs MUST match your function's args, function evals inside functioneer are fully keyword arg based.
|
|
35
38
|
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
results =
|
|
39
|
+
analysis = fn.AnalysisModule() # Create new analysis
|
|
40
|
+
analysis.add.define({'a': 1, 'b': 100}) # define a and b
|
|
41
|
+
analysis.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
|
|
42
|
+
analysis.add.fork('y', (1, 10))
|
|
43
|
+
analysis.add.execute(func=rosenbrock) #
|
|
44
|
+
results = analysis.run()
|
|
42
45
|
print('Example 1 Output:')
|
|
43
46
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
44
47
|
```
|
|
@@ -59,11 +62,11 @@ Example 1 Output:
|
|
|
59
62
|
|
|
60
63
|
Note: values for `x` and `y` before optimization are used as initial guesses
|
|
61
64
|
```
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
results =
|
|
65
|
+
analysis = fn.AnalysisModule({'x': 0, 'y': 0})
|
|
66
|
+
analysis.add.fork('a', (1, 2))
|
|
67
|
+
analysis.add.fork('b', (0, 100, 200))
|
|
68
|
+
analysis.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
|
|
69
|
+
results = analysis.run()
|
|
67
70
|
print('\nExample 2 Output:')
|
|
68
71
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
69
72
|
```
|
|
@@ -79,9 +82,9 @@ Example 2 Output:
|
|
|
79
82
|
```
|
|
80
83
|
## Key Features
|
|
81
84
|
|
|
82
|
-
- **
|
|
85
|
+
- **Quickly test variations of a parameter with a single line of code:** Avoid writing deeply nested loops. Typically varying *n* parameters requires *n* nested loops... not anymore!
|
|
83
86
|
|
|
84
|
-
- **Quickly
|
|
87
|
+
- **Quickly setup optimization:** Most optimization libraries require your function to take in and spit out a list or array, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to add/rm/swap an optimization parameter!
|
|
85
88
|
|
|
86
89
|
- **Get results in a consistent easy to use format:** No more questions, the results are presented in a nice clean pandas data frame every time.
|
|
87
90
|
|
|
@@ -139,7 +142,10 @@ Thanks to the amazing open source communities: Python, numpy, pandas, etc that m
|
|
|
139
142
|
|
|
140
143
|
Thanks to LightManufacturing, where I had the opportunity to develop advanced digital twins for solar thermal facilities... and then analyze them. It was here, where the seed for Functioneer was planted.
|
|
141
144
|
|
|
142
|
-
|
|
145
|
+
Thank you God for beaming down what seemed like the craziest idea at the time: to structure an analysis as a pipeline of *analysis steps* with the *parameters* flowing thru like water.
|
|
146
|
+
|
|
147
|
+
## Dev
|
|
148
|
+
If anyone wants to help develop Functioneer, there are issues on GitHub with planned features and a dev_notes folder containing possibly useful chicken scratch.
|
|
143
149
|
|
|
144
150
|
## License
|
|
145
151
|
|
|
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "functioneer"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.2"
|
|
8
8
|
authors = [{ name = "Quinn Marsh", email = "quinnmarsh@hotmail.com" }]
|
|
9
9
|
maintainers = [{ name = "Quinn Marsh", email = "quinnmarsh@hotmail.com" }]
|
|
10
|
-
description = "Effortlessly explore function behavior with
|
|
10
|
+
description = "Effortlessly explore function behavior with the ultimate batch runner."
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
license = { text = "MIT" }
|
|
13
13
|
keywords = ["functioneer", "analysis", "batch run", "batch runner", "automation", "autorun", "trade space", "digital twin"]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: functioneer
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: Effortlessly explore function behavior with
|
|
3
|
+
Version: 0.4.2
|
|
4
|
+
Summary: Effortlessly explore function behavior with the ultimate batch runner.
|
|
5
5
|
Author-email: Quinn Marsh <quinnmarsh@hotmail.com>
|
|
6
6
|
Maintainer-email: Quinn Marsh <quinnmarsh@hotmail.com>
|
|
7
7
|
License: MIT
|
|
@@ -31,23 +31,26 @@ Dynamic: license-file
|
|
|
31
31
|
|
|
32
32
|
# Functioneer
|
|
33
33
|
|
|
34
|
+
**Announcement:** Functioneer has just entered public testing and I'd love your feedback on anything: how you're using it, the API, the docs, requested features, etc. Please reach out, I'd love to hear from you. -Quinn
|
|
35
|
+
|
|
34
36
|
**Author**: Quinn Marsh\
|
|
35
|
-
**
|
|
37
|
+
**GitHub**: https://github.com/qthedoc/functioneer/ \
|
|
38
|
+
**PyPI**: https://pypi.org/project/functioneer/
|
|
36
39
|
|
|
37
|
-
Functioneer
|
|
40
|
+
Functioneer is the ultimate batch runner. Prepare to be an analysis ninja, effortlessly exploring your functions. In just a few lines of code, you can set up thousands or even millions of tests and optimizations on your function. Perfect for parameter sweeps, engineering simulations, digital twin optimization and much more.
|
|
38
41
|
|
|
39
42
|
## Quick Start
|
|
40
43
|
|
|
44
|
+
**Full set of examples**: [Examples.ipynb (nbviewer.org)](https://nbviewer.org/github/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
45
|
+
*This is currently the main form of documentation.
|
|
46
|
+
|
|
41
47
|
### Installation
|
|
42
48
|
```
|
|
43
49
|
pip install functioneer
|
|
44
50
|
```
|
|
45
51
|
|
|
46
|
-
Full set of examples: [Examples.ipynb](https://github.com/qthedoc/functioneer/blob/main/examples/Examples.ipynb)*\
|
|
47
|
-
*This is currently the main form of documentation, lots of good stuff in there!
|
|
48
|
-
|
|
49
52
|
### Choose a Function to Analyze
|
|
50
|
-
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its
|
|
53
|
+
Choose any function(s) you like. We use the [Rosenbrock Function](https://en.wikipedia.org/wiki/Rosenbrock_function) in these examples for its simplicity, many inputs and its popular use as an optimization benchmark.
|
|
51
54
|
|
|
52
55
|
```
|
|
53
56
|
import functioneer as fn
|
|
@@ -64,12 +67,12 @@ def rosenbrock(x, y, a, b):
|
|
|
64
67
|
Note: forks for `x` and `y` create a 'grid' of values\
|
|
65
68
|
Note: Parameter IDs MUST match your function's args, function evals inside functioneer are fully keyword arg based.
|
|
66
69
|
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
results =
|
|
70
|
+
analysis = fn.AnalysisModule() # Create new analysis
|
|
71
|
+
analysis.add.define({'a': 1, 'b': 100}) # define a and b
|
|
72
|
+
analysis.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
|
|
73
|
+
analysis.add.fork('y', (1, 10))
|
|
74
|
+
analysis.add.execute(func=rosenbrock) #
|
|
75
|
+
results = analysis.run()
|
|
73
76
|
print('Example 1 Output:')
|
|
74
77
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
75
78
|
```
|
|
@@ -90,11 +93,11 @@ Example 1 Output:
|
|
|
90
93
|
|
|
91
94
|
Note: values for `x` and `y` before optimization are used as initial guesses
|
|
92
95
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
results =
|
|
96
|
+
analysis = fn.AnalysisModule({'x': 0, 'y': 0})
|
|
97
|
+
analysis.add.fork('a', (1, 2))
|
|
98
|
+
analysis.add.fork('b', (0, 100, 200))
|
|
99
|
+
analysis.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
|
|
100
|
+
results = analysis.run()
|
|
98
101
|
print('\nExample 2 Output:')
|
|
99
102
|
print(results['df'][['a', 'b', 'x', 'y', 'rosenbrock']])
|
|
100
103
|
```
|
|
@@ -110,9 +113,9 @@ Example 2 Output:
|
|
|
110
113
|
```
|
|
111
114
|
## Key Features
|
|
112
115
|
|
|
113
|
-
- **
|
|
116
|
+
- **Quickly test variations of a parameter with a single line of code:** Avoid writing deeply nested loops. Typically varying *n* parameters requires *n* nested loops... not anymore!
|
|
114
117
|
|
|
115
|
-
- **Quickly
|
|
118
|
+
- **Quickly setup optimization:** Most optimization libraries require your function to take in and spit out a list or array, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to add/rm/swap an optimization parameter!
|
|
116
119
|
|
|
117
120
|
- **Get results in a consistent easy to use format:** No more questions, the results are presented in a nice clean pandas data frame every time.
|
|
118
121
|
|
|
@@ -170,7 +173,10 @@ Thanks to the amazing open source communities: Python, numpy, pandas, etc that m
|
|
|
170
173
|
|
|
171
174
|
Thanks to LightManufacturing, where I had the opportunity to develop advanced digital twins for solar thermal facilities... and then analyze them. It was here, where the seed for Functioneer was planted.
|
|
172
175
|
|
|
173
|
-
|
|
176
|
+
Thank you God for beaming down what seemed like the craziest idea at the time: to structure an analysis as a pipeline of *analysis steps* with the *parameters* flowing thru like water.
|
|
177
|
+
|
|
178
|
+
## Dev
|
|
179
|
+
If anyone wants to help develop Functioneer, there are issues on GitHub with planned features and a dev_notes folder containing possibly useful chicken scratch.
|
|
174
180
|
|
|
175
181
|
## License
|
|
176
182
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|