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.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: functioneer
3
- Version: 0.4.0
4
- Summary: Effortlessly explore function behavior with automated batch analysis.
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
- **PyPI**: https://pypi.org/project/functioneer/
37
+ **GitHub**: https://github.com/qthedoc/functioneer/ \
38
+ **PyPI**: https://pypi.org/project/functioneer/
36
39
 
37
- Functioneer lets you effortlessly explore function behavior with automated batch analysis. With just a few lines of code, you can queue up thousands or even millions of function evaluations, with various parameter combinations and/or optimizations. Retrieve structured results in formats like pandas for seamless integration into your workflows. Perfect for parameter sweeps, engineering simulations, and digital twin optimization.
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 historical significance as an optimization benchmark.
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
- anal = fn.AnalysisModule() # Create new analysis
68
- anal.add.define({'a': 1, 'b': 100}) # define a and b
69
- anal.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
70
- anal.add.fork('y', (1, 10))
71
- anal.add.execute(func=rosenbrock) #
72
- results = anal.run()
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
- anal = fn.AnalysisModule({'x': 0, 'y': 0})
94
- anal.add.fork('a', (1, 2))
95
- anal.add.fork('b', (0, 100, 200))
96
- anal.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
97
- results = anal.run()
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
- - **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!
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 swap out optimization variables:** Most optimization libraries require your function to take in a list or array of values, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to change an optimization parameter!
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
- Thanks to God for incepting my mind with 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.
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
- **PyPI**: https://pypi.org/project/functioneer/
6
+ **GitHub**: https://github.com/qthedoc/functioneer/ \
7
+ **PyPI**: https://pypi.org/project/functioneer/
5
8
 
6
- Functioneer lets you effortlessly explore function behavior with automated batch analysis. With just a few lines of code, you can queue up thousands or even millions of function evaluations, with various parameter combinations and/or optimizations. Retrieve structured results in formats like pandas for seamless integration into your workflows. Perfect for parameter sweeps, engineering simulations, and digital twin optimization.
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 historical significance as an optimization benchmark.
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
- anal = fn.AnalysisModule() # Create new analysis
37
- anal.add.define({'a': 1, 'b': 100}) # define a and b
38
- anal.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
39
- anal.add.fork('y', (1, 10))
40
- anal.add.execute(func=rosenbrock) #
41
- results = anal.run()
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
- anal = fn.AnalysisModule({'x': 0, 'y': 0})
63
- anal.add.fork('a', (1, 2))
64
- anal.add.fork('b', (0, 100, 200))
65
- anal.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
66
- results = anal.run()
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
- - **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!
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 swap out optimization variables:** Most optimization libraries require your function to take in a list or array of values, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to change an optimization parameter!
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
- Thanks to God for incepting my mind with 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.
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.0"
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 automated batch analysis."
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,4 +1,4 @@
1
1
  # functioneer/__init__.py
2
- __version__ = "0.4.0"
2
+ __version__ = "0.4.2"
3
3
  from functioneer.analysis import AnalysisModule, AnalysisStep, Define, Fork, Execute, Optimize
4
4
  from functioneer.parameter import Parameter
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: functioneer
3
- Version: 0.4.0
4
- Summary: Effortlessly explore function behavior with automated batch analysis.
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
- **PyPI**: https://pypi.org/project/functioneer/
37
+ **GitHub**: https://github.com/qthedoc/functioneer/ \
38
+ **PyPI**: https://pypi.org/project/functioneer/
36
39
 
37
- Functioneer lets you effortlessly explore function behavior with automated batch analysis. With just a few lines of code, you can queue up thousands or even millions of function evaluations, with various parameter combinations and/or optimizations. Retrieve structured results in formats like pandas for seamless integration into your workflows. Perfect for parameter sweeps, engineering simulations, and digital twin optimization.
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 historical significance as an optimization benchmark.
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
- anal = fn.AnalysisModule() # Create new analysis
68
- anal.add.define({'a': 1, 'b': 100}) # define a and b
69
- anal.add.fork('x', (0, 1, 2)) # Fork analysis, create branches for x=0, x=1, x=2
70
- anal.add.fork('y', (1, 10))
71
- anal.add.execute(func=rosenbrock) #
72
- results = anal.run()
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
- anal = fn.AnalysisModule({'x': 0, 'y': 0})
94
- anal.add.fork('a', (1, 2))
95
- anal.add.fork('b', (0, 100, 200))
96
- anal.add.optimize(func=rosenbrock, opt_param_ids=('x', 'y'))
97
- results = anal.run()
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
- - **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!
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 swap out optimization variables:** Most optimization libraries require your function to take in a list or array of values, BUT this makes it very annoying to remap your parameters to and from the array each time you simple want to change an optimization parameter!
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
- Thanks to God for incepting my mind with 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.
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