flexcode 0.2.1__tar.gz → 0.2.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.
Files changed (50) hide show
  1. {flexcode-0.2.1 → flexcode-0.2.2}/.github/workflows/smoke-test.yml +1 -1
  2. {flexcode-0.2.1 → flexcode-0.2.2}/.github/workflows/testing-and-coverage.yml +2 -2
  3. {flexcode-0.2.1 → flexcode-0.2.2}/PKG-INFO +21 -3
  4. {flexcode-0.2.1 → flexcode-0.2.2}/pyproject.toml +3 -3
  5. flexcode-0.2.2/src/flexcode/_version.py +21 -0
  6. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/regression_models.py +29 -14
  7. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode.egg-info/PKG-INFO +21 -3
  8. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode.egg-info/requires.txt +3 -3
  9. flexcode-0.2.1/src/flexcode/_version.py +0 -4
  10. {flexcode-0.2.1 → flexcode-0.2.2}/.copier-answers.yml +0 -0
  11. {flexcode-0.2.1 → flexcode-0.2.2}/.github/workflows/linting.yml +0 -0
  12. {flexcode-0.2.1 → flexcode-0.2.2}/.github/workflows/publish-to-pypi.yml +0 -0
  13. {flexcode-0.2.1 → flexcode-0.2.2}/.gitignore +0 -0
  14. {flexcode-0.2.1 → flexcode-0.2.2}/.pre-commit-config.yaml +0 -0
  15. {flexcode-0.2.1 → flexcode-0.2.2}/.readthedocs.yml +0 -0
  16. {flexcode-0.2.1 → flexcode-0.2.2}/.travis.yml +0 -0
  17. {flexcode-0.2.1 → flexcode-0.2.2}/LICENSE +0 -0
  18. {flexcode-0.2.1 → flexcode-0.2.2}/README.md +0 -0
  19. {flexcode-0.2.1 → flexcode-0.2.2}/archive/README.md +0 -0
  20. {flexcode-0.2.1 → flexcode-0.2.2}/archive/x_setup.cfg +0 -0
  21. {flexcode-0.2.1 → flexcode-0.2.2}/archive/x_setup.py +0 -0
  22. {flexcode-0.2.1 → flexcode-0.2.2}/archive/x_tox.ini +0 -0
  23. {flexcode-0.2.1 → flexcode-0.2.2}/docs/Makefile +0 -0
  24. {flexcode-0.2.1 → flexcode-0.2.2}/docs/conf.py +0 -0
  25. {flexcode-0.2.1 → flexcode-0.2.2}/docs/index.rst +0 -0
  26. {flexcode-0.2.1 → flexcode-0.2.2}/docs/notebooks/README.md +0 -0
  27. {flexcode-0.2.1 → flexcode-0.2.2}/docs/notebooks/intro_notebook.ipynb +0 -0
  28. {flexcode-0.2.1 → flexcode-0.2.2}/docs/notebooks.rst +0 -0
  29. {flexcode-0.2.1 → flexcode-0.2.2}/docs/requirements.txt +0 -0
  30. {flexcode-0.2.1 → flexcode-0.2.2}/setup.cfg +0 -0
  31. {flexcode-0.2.1 → flexcode-0.2.2}/src/.pylintrc +0 -0
  32. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/__init__.py +0 -0
  33. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/basis_functions.py +0 -0
  34. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/core.py +0 -0
  35. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/helpers.py +0 -0
  36. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/loss_functions.py +0 -0
  37. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode/post_processing.py +0 -0
  38. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode.egg-info/SOURCES.txt +0 -0
  39. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode.egg-info/dependency_links.txt +0 -0
  40. {flexcode-0.2.1 → flexcode-0.2.2}/src/flexcode.egg-info/top_level.txt +0 -0
  41. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/.pylintrc +0 -0
  42. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/conftest.py +0 -0
  43. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/context.py +0 -0
  44. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/test_cv_optim.py +0 -0
  45. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/test_models_fit.py +0 -0
  46. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/test_params_handling.py +0 -0
  47. {flexcode-0.2.1 → flexcode-0.2.2}/tests/flexcode/test_post_processing.py +0 -0
  48. {flexcode-0.2.1 → flexcode-0.2.2}/tutorial/Flexcode-tutorial-teddy.ipynb +0 -0
  49. {flexcode-0.2.1 → flexcode-0.2.2}/vignettes/Custom Class.ipynb +0 -0
  50. {flexcode-0.2.1 → flexcode-0.2.2}/vignettes/Model Save and Bumps Removal - Flexcode.ipynb +0 -0
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  strategy:
15
15
  matrix:
16
- python-version: ['3.8', '3.9', '3.10']
16
+ python-version: ['3.10', '3.11', '3.12']
17
17
 
18
18
  steps:
19
19
  - uses: actions/checkout@v3
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  strategy:
17
17
  matrix:
18
- python-version: ['3.8', '3.9', '3.10']
18
+ python-version: ['3.10', '3.11', '3.12']
19
19
 
20
20
  steps:
21
21
  - uses: actions/checkout@v3
@@ -40,4 +40,4 @@ jobs:
40
40
  sudo apt-get install pandoc
41
41
  - name: Build docs
42
42
  run: |
43
- sphinx-build -T -E -b html -d docs/build/doctrees ./docs docs/build/html
43
+ sphinx-build -T -E -b html -d docs/build/doctrees ./docs docs/build/html
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: flexcode
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Author-email: Ann Lee <annlee@andrew.cmu.edu>
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 2, June 1991
@@ -349,8 +349,26 @@ Classifier: Intended Audience :: Science/Research
349
349
  Classifier: Operating System :: OS Independent
350
350
  Classifier: Programming Language :: Python
351
351
  Description-Content-Type: text/markdown
352
- Provides-Extra: dev
353
352
  License-File: LICENSE
353
+ Requires-Dist: deprecated
354
+ Requires-Dist: ipykernel
355
+ Requires-Dist: pywavelets
356
+ Requires-Dist: scikit-learn>=0.18
357
+ Requires-Dist: xgboost
358
+ Provides-Extra: dev
359
+ Requires-Dist: pytest; extra == "dev"
360
+ Requires-Dist: pytest-cov; extra == "dev"
361
+ Requires-Dist: pre-commit; extra == "dev"
362
+ Requires-Dist: sphinx; extra == "dev"
363
+ Requires-Dist: sphinx_rtd_theme; extra == "dev"
364
+ Requires-Dist: sphinx-autoapi; extra == "dev"
365
+ Requires-Dist: black; extra == "dev"
366
+ Requires-Dist: nbconvert; extra == "dev"
367
+ Requires-Dist: nbsphinx; extra == "dev"
368
+ Requires-Dist: ipython; extra == "dev"
369
+ Requires-Dist: matplotlib; extra == "dev"
370
+ Requires-Dist: numpy; extra == "dev"
371
+ Dynamic: license-file
354
372
 
355
373
  Implementation of Flexible Conditional Density Estimator (FlexCode) in Python. See Izbicki, R.; Lee, A.B. [Converting High-Dimensional Regression to High-Dimensional Conditional Density Estimation](https://projecteuclid.org/euclid.ejs/1499133755). Electronic Journal of Statistics, 2017 for details. Port of the original [R package](https://github.com/rizbicki/FlexCoDE).
356
374
 
@@ -27,9 +27,9 @@ dev = [
27
27
  "pytest",
28
28
  "pytest-cov", # Used to report total code coverage
29
29
  "pre-commit", # Used to run checks before finalizing a git commit
30
- "sphinx==6.1.3", # Used to automatically generate documentation
31
- "sphinx_rtd_theme==1.2.0", # Used to render documentation
32
- "sphinx-autoapi==2.0.1", # Used to automatically generate api documentation
30
+ "sphinx", # Used to automatically generate documentation
31
+ "sphinx_rtd_theme", # Used to render documentation
32
+ "sphinx-autoapi", # Used to automatically generate api documentation
33
33
  "black", # Used for static linting of files
34
34
  "nbconvert", # Needed for pre-commit check to clear output from Python notebooks
35
35
  "nbsphinx", # Used to itegrate Python notebooks into Sphinx documentation
@@ -0,0 +1,21 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
6
+ TYPE_CHECKING = False
7
+ if TYPE_CHECKING:
8
+ from typing import Tuple
9
+ from typing import Union
10
+
11
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
12
+ else:
13
+ VERSION_TUPLE = object
14
+
15
+ version: str
16
+ __version__: str
17
+ __version_tuple__: VERSION_TUPLE
18
+ version_tuple: VERSION_TUPLE
19
+
20
+ __version__ = version = '0.2.2'
21
+ __version_tuple__ = version_tuple = (0, 2, 2)
@@ -38,6 +38,7 @@ class NN(FlexCodeRegression):
38
38
  raise Exception("NN requires scikit-learn to be installed")
39
39
 
40
40
  super(NN, self).__init__(max_basis)
41
+ self.n_jobs = kwargs.get("n_jobs", -1)
41
42
 
42
43
  # Historically, we have used 'k' to indicate the number of neighbors, so
43
44
  # this just puts the right notation for KNeighborsRegressor
@@ -50,7 +51,7 @@ class NN(FlexCodeRegression):
50
51
  None
51
52
  if opt_flag
52
53
  else sklearn.multioutput.MultiOutputRegressor(
53
- sklearn.neighbors.KNeighborsRegressor(**self.params), n_jobs=-1
54
+ sklearn.neighbors.KNeighborsRegressor(**self.params), n_jobs=self.n_jobs
54
55
  )
55
56
  )
56
57
 
@@ -64,7 +65,9 @@ class NN(FlexCodeRegression):
64
65
  self.models.fit(x_train, z_basis)
65
66
 
66
67
  def cv_optim(self, x_train, z_basis):
67
- nn_obj = sklearn.multioutput.MultiOutputRegressor(sklearn.neighbors.KNeighborsRegressor(), n_jobs=-1)
68
+ nn_obj = sklearn.multioutput.MultiOutputRegressor(
69
+ sklearn.neighbors.KNeighborsRegressor(), n_jobs=self.n_jobs
70
+ )
68
71
  clf = sklearn.model_selection.GridSearchCV(
69
72
  nn_obj, self.params, cv=5, scoring="neg_mean_squared_error", verbose=2
70
73
  )
@@ -72,7 +75,7 @@ class NN(FlexCodeRegression):
72
75
 
73
76
  self.params = params_name_format(clf.best_params_, str_rem="estimator__")
74
77
  self.models = sklearn.multioutput.MultiOutputRegressor(
75
- sklearn.neighbors.KNeighborsRegressor(**self.params), n_jobs=-1
78
+ sklearn.neighbors.KNeighborsRegressor(**self.params), n_jobs=self.n_jobs
76
79
  )
77
80
 
78
81
  def predict(self, x_test):
@@ -86,6 +89,7 @@ class RandomForest(FlexCodeRegression):
86
89
  raise Exception("RandomForest requires scikit-learn to be installed")
87
90
 
88
91
  super(RandomForest, self).__init__(max_basis)
92
+ self.n_jobs = kwargs.get("n_jobs", -1)
89
93
 
90
94
  params_opt, opt_flag = params_dict_optim_decision(params, multi_output=True)
91
95
  self.params = params_opt
@@ -93,7 +97,7 @@ class RandomForest(FlexCodeRegression):
93
97
  None
94
98
  if opt_flag
95
99
  else sklearn.multioutput.MultiOutputRegressor(
96
- sklearn.ensemble.RandomForestRegressor(**self.params), n_jobs=-1
100
+ sklearn.ensemble.RandomForestRegressor(**self.params), n_jobs=self.n_jobs
97
101
  )
98
102
  )
99
103
 
@@ -104,7 +108,9 @@ class RandomForest(FlexCodeRegression):
104
108
  self.models.fit(x_train, z_basis, sample_weight=weight)
105
109
 
106
110
  def cv_optim(self, x_train, z_basis, weight=None):
107
- rf_obj = sklearn.multioutput.MultiOutputRegressor(sklearn.ensemble.RandomForestRegressor(), n_jobs=-1)
111
+ rf_obj = sklearn.multioutput.MultiOutputRegressor(
112
+ sklearn.ensemble.RandomForestRegressor(), n_jobs=self.n_jobs
113
+ )
108
114
  clf = sklearn.model_selection.GridSearchCV(
109
115
  rf_obj, self.params, cv=5, scoring="neg_mean_squared_error", verbose=2
110
116
  )
@@ -112,7 +118,7 @@ class RandomForest(FlexCodeRegression):
112
118
 
113
119
  self.params = params_name_format(clf.best_params_, str_rem="estimator__")
114
120
  self.models = sklearn.multioutput.MultiOutputRegressor(
115
- sklearn.ensemble.RandomForestRegressor(**self.params), n_jobs=-1
121
+ sklearn.ensemble.RandomForestRegressor(**self.params), n_jobs=self.n_jobs
116
122
  )
117
123
 
118
124
  def predict(self, x_test):
@@ -125,6 +131,7 @@ class XGBoost(FlexCodeRegression):
125
131
  if not XGBOOST_AVAILABLE:
126
132
  raise Exception("XGBoost requires xgboost to be installed")
127
133
  super(XGBoost, self).__init__(max_basis)
134
+ self.n_jobs = kwargs.get("n_jobs", -1)
128
135
 
129
136
  # Historically, people have used `eta` for `learning_rate` - taking that
130
137
  # into account
@@ -143,7 +150,7 @@ class XGBoost(FlexCodeRegression):
143
150
  self.models = (
144
151
  None
145
152
  if opt_flag
146
- else sklearn.multioutput.MultiOutputRegressor(xgb.XGBRegressor(**self.params), n_jobs=-1)
153
+ else sklearn.multioutput.MultiOutputRegressor(xgb.XGBRegressor(**self.params), n_jobs=self.n_jobs)
147
154
  )
148
155
 
149
156
  def fit(self, x_train, z_basis, weight=None):
@@ -153,14 +160,16 @@ class XGBoost(FlexCodeRegression):
153
160
  self.models.fit(x_train, z_basis, sample_weight=weight)
154
161
 
155
162
  def cv_optim(self, x_train, z_basis, weight=None):
156
- xgb_obj = sklearn.multioutput.MultiOutputRegressor(xgb.XGBRegressor(), n_jobs=-1)
163
+ xgb_obj = sklearn.multioutput.MultiOutputRegressor(xgb.XGBRegressor(), n_jobs=self.n_jobs)
157
164
  clf = sklearn.model_selection.GridSearchCV(
158
165
  xgb_obj, self.params, cv=5, scoring="neg_mean_squared_error", verbose=2
159
166
  )
160
167
  clf.fit(x_train, z_basis, sample_weight=weight)
161
168
 
162
169
  self.params = params_name_format(clf.best_params_, str_rem="estimator__")
163
- self.models = sklearn.multioutput.MultiOutputRegressor(xgb.XGBRegressor(**self.params), n_jobs=-1)
170
+ self.models = sklearn.multioutput.MultiOutputRegressor(
171
+ xgb.XGBRegressor(**self.params), n_jobs=self.n_jobs
172
+ )
164
173
 
165
174
  def predict(self, x_test):
166
175
  coefs = self.models.predict(x_test)
@@ -172,6 +181,7 @@ class Lasso(FlexCodeRegression):
172
181
  if not SKLEARN_AVAILABLE:
173
182
  raise Exception("Lasso requires scikit-learn to be installed")
174
183
  super(Lasso, self).__init__(max_basis)
184
+ self.n_jobs = kwargs.get("n_jobs", -1)
175
185
 
176
186
  # Also, set the default values if not passed
177
187
  params["alpha"] = params.get("alpha", 1.0)
@@ -183,7 +193,7 @@ class Lasso(FlexCodeRegression):
183
193
  None
184
194
  if opt_flag
185
195
  else sklearn.multioutput.MultiOutputRegressor(
186
- sklearn.linear_model.ElasticNet(**self.params), n_jobs=-1
196
+ sklearn.linear_model.ElasticNet(**self.params), n_jobs=self.n_jobs
187
197
  )
188
198
  )
189
199
 
@@ -199,7 +209,9 @@ class Lasso(FlexCodeRegression):
199
209
  self.models.fit(x_train, z_basis)
200
210
 
201
211
  def cv_optim(self, x_train, z_basis):
202
- lasso_obj = sklearn.multioutput.MultiOutputRegressor(sklearn.linear_model.ElasticNet(), n_jobs=-1)
212
+ lasso_obj = sklearn.multioutput.MultiOutputRegressor(
213
+ sklearn.linear_model.ElasticNet(), n_jobs=self.n_jobs
214
+ )
203
215
  clf = sklearn.model_selection.GridSearchCV(
204
216
  lasso_obj, self.params, cv=5, scoring="neg_mean_squared_error", verbose=2
205
217
  )
@@ -220,6 +232,7 @@ class CustomModel(FlexCodeRegression):
220
232
  if not SKLEARN_AVAILABLE:
221
233
  raise Exception("Custom class requires scikit-learn to be installed")
222
234
  super(CustomModel, self).__init__(max_basis)
235
+ self.n_jobs = kwargs.get("n_jobs", -1)
223
236
 
224
237
  params_opt, opt_flag = params_dict_optim_decision(params, multi_output=True)
225
238
  self.params = params_opt
@@ -227,7 +240,7 @@ class CustomModel(FlexCodeRegression):
227
240
  self.models = (
228
241
  None
229
242
  if opt_flag
230
- else sklearn.multioutput.MultiOutputRegressor(self.base_model(**self.params), n_jobs=-1)
243
+ else sklearn.multioutput.MultiOutputRegressor(self.base_model(**self.params), n_jobs=self.n_jobs)
231
244
  )
232
245
 
233
246
  def fit(self, x_train, z_basis, weight=None):
@@ -242,14 +255,16 @@ class CustomModel(FlexCodeRegression):
242
255
  self.models.fit(x_train, z_basis)
243
256
 
244
257
  def cv_optim(self, x_train, z_basis):
245
- custom_obj = sklearn.multioutput.MultiOutputRegressor(self.base_model(), n_jobs=-1)
258
+ custom_obj = sklearn.multioutput.MultiOutputRegressor(self.base_model(), n_jobs=self.n_jobs)
246
259
  clf = sklearn.model_selection.GridSearchCV(
247
260
  custom_obj, self.params, cv=5, scoring="neg_mean_squared_error", verbose=2
248
261
  )
249
262
  clf.fit(x_train, z_basis)
250
263
 
251
264
  self.params = params_name_format(clf.best_params_, str_rem="estimator__")
252
- self.models = sklearn.multioutput.MultiOutputRegressor(self.base_model(**self.params), n_jobs=-1)
265
+ self.models = sklearn.multioutput.MultiOutputRegressor(
266
+ self.base_model(**self.params), n_jobs=self.n_jobs
267
+ )
253
268
 
254
269
  def predict(self, x_test):
255
270
  coefs = self.models.predict(x_test)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: flexcode
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Author-email: Ann Lee <annlee@andrew.cmu.edu>
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 2, June 1991
@@ -349,8 +349,26 @@ Classifier: Intended Audience :: Science/Research
349
349
  Classifier: Operating System :: OS Independent
350
350
  Classifier: Programming Language :: Python
351
351
  Description-Content-Type: text/markdown
352
- Provides-Extra: dev
353
352
  License-File: LICENSE
353
+ Requires-Dist: deprecated
354
+ Requires-Dist: ipykernel
355
+ Requires-Dist: pywavelets
356
+ Requires-Dist: scikit-learn>=0.18
357
+ Requires-Dist: xgboost
358
+ Provides-Extra: dev
359
+ Requires-Dist: pytest; extra == "dev"
360
+ Requires-Dist: pytest-cov; extra == "dev"
361
+ Requires-Dist: pre-commit; extra == "dev"
362
+ Requires-Dist: sphinx; extra == "dev"
363
+ Requires-Dist: sphinx_rtd_theme; extra == "dev"
364
+ Requires-Dist: sphinx-autoapi; extra == "dev"
365
+ Requires-Dist: black; extra == "dev"
366
+ Requires-Dist: nbconvert; extra == "dev"
367
+ Requires-Dist: nbsphinx; extra == "dev"
368
+ Requires-Dist: ipython; extra == "dev"
369
+ Requires-Dist: matplotlib; extra == "dev"
370
+ Requires-Dist: numpy; extra == "dev"
371
+ Dynamic: license-file
354
372
 
355
373
  Implementation of Flexible Conditional Density Estimator (FlexCode) in Python. See Izbicki, R.; Lee, A.B. [Converting High-Dimensional Regression to High-Dimensional Conditional Density Estimation](https://projecteuclid.org/euclid.ejs/1499133755). Electronic Journal of Statistics, 2017 for details. Port of the original [R package](https://github.com/rizbicki/FlexCoDE).
356
374
 
@@ -8,9 +8,9 @@ xgboost
8
8
  pytest
9
9
  pytest-cov
10
10
  pre-commit
11
- sphinx==6.1.3
12
- sphinx_rtd_theme==1.2.0
13
- sphinx-autoapi==2.0.1
11
+ sphinx
12
+ sphinx_rtd_theme
13
+ sphinx-autoapi
14
14
  black
15
15
  nbconvert
16
16
  nbsphinx
@@ -1,4 +0,0 @@
1
- # file generated by setuptools_scm
2
- # don't change, don't track in version control
3
- __version__ = version = '0.2.1'
4
- __version_tuple__ = version_tuple = (0, 2, 1)
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes