Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
660 commits
Select commit Hold shift + click to select a range
9b1195b
add parameter for UniformSample, instructing the generator to squash …
jlnav Jul 25, 2025
24df60f
making variables_mapping an explicit kwarg for a libensemble generator
jlnav Jul 31, 2025
715773b
bump pydantic - this should've been done in a previous PR
jlnav Jul 31, 2025
08ead4a
fix UniformSample LibensembleGenerator to use variables_mapping
jlnav Jul 31, 2025
22b69b4
just commenting out, but maybe we don't need this unit test now that …
jlnav Jul 31, 2025
f664e37
removing unnecessary GPCAM_Standard class; refactoring the other gpca…
jlnav Aug 6, 2025
99bc450
update regression test to (presumably) use classes that now use VOCS
jlnav Aug 6, 2025
423f0d6
... why was this test excluded?
jlnav Aug 6, 2025
56e59aa
lists instead of tuples...
jlnav Aug 6, 2025
145e09d
fix default value of test_points_file kwarg to be None
jlnav Aug 7, 2025
9a6f299
somehow this tell_numpy got missed
jlnav Aug 7, 2025
9c0e258
various fixes to building variables_mapping and extra.ci, still debug…
jlnav Aug 7, 2025
4a52e0b
temporary debugging print?
jlnav Aug 7, 2025
73bbf69
fix objective name
jlnav Aug 8, 2025
bf0d79e
batch_size fix to runners.py, add batch_size to gen_specs so the runn…
jlnav Aug 8, 2025
b3ce513
we still want to map {"f": ["energy"]), obviously
jlnav Aug 8, 2025
2428152
move StandardSample to test_asktell_sampling.py, to test as-though we…
jlnav Aug 8, 2025
0bcd7c9
various fixes from PR suggestions
jlnav Aug 13, 2025
bf9ed05
move gpcam superclass init to top of init, make UniformSample accept …
jlnav Aug 14, 2025
acc4811
gpcam asserts objectives, then a better description of variables_mapping
jlnav Aug 14, 2025
2a67724
move _validate_vocs call to superclass
jlnav Aug 15, 2025
8c9e313
Merge pull request #1572 from Libensemble/asktell/VOCS
jlnav Aug 18, 2025
6b54991
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Aug 19, 2025
a4ead36
Split finalize and export
shuds13 Aug 21, 2025
3622219
aposmm uses x mapping to set bounds and size
shuds13 Aug 21, 2025
c8d6a82
starting to populate the APOSMM class with common kwargs, for better …
jlnav Aug 21, 2025
1dce059
small fixes
jlnav Aug 22, 2025
77845a0
docstring for APOSMM class
jlnav Aug 22, 2025
9b3429b
Fix finalize and export functions
shuds13 Aug 22, 2025
a2c58fc
Option to export with user fields
shuds13 Aug 22, 2025
2635236
evaluate an APOSMM with only VOCS passed in
jlnav Aug 22, 2025
012227a
Add unit tests of unmap_numpy_array
shuds13 Aug 25, 2025
03420b3
Remove unneeded branch
shuds13 Aug 25, 2025
682425a
Add expected variables mapping for APOSMM
shuds13 Aug 25, 2025
b209901
Better example bounds
shuds13 Aug 25, 2025
fd630eb
Allow pass through of unmapped arrays
shuds13 Aug 25, 2025
57a8de9
Allow export as list of dictionaries
shuds13 Aug 25, 2025
050c22d
Add pass-through array to unmap test
shuds13 Aug 25, 2025
5d31b63
Add export unit tests and fix up unmap
shuds13 Aug 25, 2025
d1d4b76
Re-enable APOSMM unit tests
shuds13 Aug 25, 2025
b05762a
Add checks for x and x_on_cube
shuds13 Aug 25, 2025
0b8cdec
Add export tests and fixup
shuds13 Aug 25, 2025
4e73c93
replace completely-typed out gen_specs['user'] update from parameters…
jlnav Aug 26, 2025
4357173
coverage adjusts
jlnav Aug 27, 2025
1e52d99
Do not send local_min/pt to ingest
shuds13 Aug 27, 2025
3c21202
Autofill x and f variables_mapping separately
shuds13 Aug 28, 2025
1cb542f
Update asktell APOSMM regression test
shuds13 Aug 29, 2025
9798b3e
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Sep 5, 2025
585c521
Add fvec when components is present
shuds13 Sep 22, 2025
cf36e85
Send APOSMM errors as a string
shuds13 Sep 22, 2025
77efa2a
Formatting
shuds13 Oct 1, 2025
ed6604d
Blacken
shuds13 Oct 1, 2025
9cbca1e
Clarify comment
shuds13 Oct 1, 2025
ec773d4
Update generator_standard to gest_api
shuds13 Oct 1, 2025
5ea9b2b
Fix gest-api in pyproject
shuds13 Oct 1, 2025
b14b85d
Fix gest project name
shuds13 Oct 1, 2025
f8d1833
Fix _validate_vocs for gpCAM
shuds13 Oct 1, 2025
ad54abd
Remove misleading n
shuds13 Oct 2, 2025
a383dc0
Merge pull request #1582 from Libensemble/feature/update_finalize
shuds13 Oct 2, 2025
1353363
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/apo…
jlnav Oct 23, 2025
bb26e05
Merge branch 'develop' into asktell/aposmm_fixes
jlnav Oct 23, 2025
948c88b
this specific gen_specs['out'] assignment no longer needed, as confli…
jlnav Oct 23, 2025
047673d
adjust for finalize and export; plus now variables_mapping is required
jlnav Oct 23, 2025
b681398
don't need persis_info declared like this
jlnav Oct 23, 2025
b828cb4
fixes and refactors as suggested by shuds - *works on multistage lpa*
jlnav Oct 24, 2025
c040721
make initial_sample_size and max_active_runs required arguments for a…
jlnav Oct 29, 2025
cd776a1
Merge pull request #1583 from Libensemble/asktell/aposmm_fixes
jlnav Oct 29, 2025
7b22ab1
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Oct 29, 2025
4e37554
typo
jlnav Oct 29, 2025
41a4cbc
fix generator-standard package name in pyproject.toml
jlnav Oct 31, 2025
3e41b4b
also start running thread upon initial ingest
jlnav Nov 6, 2025
2303512
better docstrings. new "do_not_produce_sample_points" arg from shuds.…
jlnav Nov 7, 2025
802de9c
add kwarg where necessary, plus more test glue
jlnav Nov 7, 2025
fa254a0
unpack "x"s passed in into dtype-less array. so _on_cube conversion c…
jlnav Nov 7, 2025
1606ef3
TODOs, plus more
jlnav Nov 7, 2025
473487d
mostly just trying the current aposmm.py with Xopt in this commit...
jlnav Nov 11, 2025
b42e1ba
fix initial sample (within aposmm *class*) requiring sim_ids. we'll j…
jlnav Nov 12, 2025
a354339
aposmm gen_f : new loop undserneath do_not_produce_sample_points cond…
jlnav Nov 12, 2025
5dc5155
add unit test where APOSMM class ingests first
jlnav Nov 13, 2025
ed03ac1
make an internal method internal. implement _validate_vocs for aposmm…
jlnav Nov 14, 2025
b7a79c3
trying to account for, then test a large variety of conditions where …
jlnav Nov 14, 2025
1d335c8
adjusts send-conditions upon full sample being ingested. adjusts warn…
jlnav Nov 19, 2025
b23d13c
additional docs
jlnav Nov 19, 2025
c07611d
Add Xopt EI test
shuds13 Nov 19, 2025
f39b937
Restructure imports
shuds13 Nov 19, 2025
fb9b01d
Set batch size and fix nworkers
shuds13 Nov 19, 2025
e88088f
Make temp note on fixing nworkers
shuds13 Nov 19, 2025
57b466e
Restructure gen_specs
shuds13 Nov 19, 2025
da20d5a
Change sim to xopt test sim
shuds13 Nov 19, 2025
e5ff70d
Add vocs field to GenSpecs
shuds13 Nov 19, 2025
d060f2e
Add vocs field to SimSpecs
shuds13 Nov 19, 2025
d5e3c53
Get vocs field type
shuds13 Nov 19, 2025
42f772a
tentative refactor of do_not_produce_sample_points keyword to be the …
jlnav Nov 19, 2025
bc3a976
Add unit tests for set_fields_from_vocs
shuds13 Nov 19, 2025
12c0fe3
Test array type
shuds13 Nov 19, 2025
95bc6a0
doing "generate_sample_points". ensuring sim_id gets cast as int (for…
jlnav Nov 19, 2025
f399750
add onto n_s with the len of received presumptive_user_sample
jlnav Nov 20, 2025
cf9b1c1
Prevent gen from converting to dictionary
shuds13 Nov 20, 2025
fbf1288
Cleanup test_xopt_EI.py
shuds13 Nov 20, 2025
4ca2153
fix conditions for something_sent after initial_sample is ingested. a…
jlnav Nov 20, 2025
d28681d
Provide pre-evaluated initial sample
shuds13 Nov 20, 2025
635439d
internally, generate_sample_points is now set based on whether sugges…
jlnav Nov 20, 2025
c91a824
Remove automapping
shuds13 Nov 20, 2025
854a336
various fixes; sim_id warning no longer needed in gen_f. raise RunTim…
jlnav Nov 20, 2025
4dbfc42
always map _id to sim_id. add simple executor + UniformSample test. c…
jlnav Nov 21, 2025
f4f6b96
put the executor.comm adjustment back - and add a asktell aposmm + ex…
jlnav Nov 21, 2025
2c28939
other MPI processes attempting to finalize their gen is problematic
jlnav Nov 21, 2025
00bbebe
Add array dtype support
shuds13 Nov 21, 2025
379868d
Update vocs sampling tests
shuds13 Nov 21, 2025
1c1e996
Remove redundant line
shuds13 Nov 21, 2025
f6b2ce2
Remove another redundant line
shuds13 Nov 21, 2025
4ed9efd
Formatting
shuds13 Nov 21, 2025
a02e8d4
Add gest_api simulator wrapper
shuds13 Nov 22, 2025
104424e
Add version of xopt test that uses xopt simulator
shuds13 Nov 22, 2025
52d32a6
Fix naming
shuds13 Nov 22, 2025
561ba54
Fix test for array fields
shuds13 Nov 25, 2025
7f4a4ee
Disable awkward array test
shuds13 Nov 25, 2025
3de1de5
Give output assert to xopt tests
shuds13 Nov 25, 2025
3b21fe0
Fix formatting
shuds13 Nov 25, 2025
a11e04d
Merge pull request #1622 from Libensemble/examples/xopt_generators_re…
shuds13 Nov 25, 2025
5800c93
Add Optimas grid sample test
shuds13 Nov 25, 2025
253efea
Infer type of discrete vars
shuds13 Nov 26, 2025
4fda921
tweaks based on PR feedback
jlnav Dec 1, 2025
abdf4a6
Re-enamble model tests
shuds13 Dec 2, 2025
6ac2880
Add xopt sequential test
shuds13 Dec 2, 2025
6d649a3
Do not ingest None
shuds13 Dec 3, 2025
56db443
Simplify xopt nelder mead test and assert
shuds13 Dec 3, 2025
4a47d2f
Correct procs count for when use parse_args
shuds13 Dec 3, 2025
aabcf15
Add xopt and optimas to extra CI
shuds13 Dec 3, 2025
d345dce
Formatting
shuds13 Dec 3, 2025
fcb1af2
Fix install
shuds13 Dec 3, 2025
31f0778
Test xopt/optimas gens on basic tests
shuds13 Dec 3, 2025
548f580
doc/docstring additional tweaks and clarifications
jlnav Dec 3, 2025
aaac936
bump polling_loop interval for (perhaps) slower containers/VMs/system…
jlnav Dec 3, 2025
e9fa694
set the sim_ids of the ingest_buf right when we're about to send it t…
jlnav Dec 3, 2025
0b41dab
Fixing CI for xopt/optimas generator tests (#1626)
shuds13 Dec 4, 2025
9903266
Clean up
shuds13 Dec 4, 2025
1634579
Add xopt notebook
shuds13 Dec 4, 2025
7a76385
Add xopt example to docs
shuds13 Dec 4, 2025
55c346c
Add new tutorial to main toctree
shuds13 Dec 4, 2025
58f0d82
Rename example
shuds13 Dec 4, 2025
f4af3a6
Rename and add colab link
shuds13 Dec 4, 2025
cccd3bb
Improve layout
shuds13 Dec 4, 2025
63b2fdd
Add xopt/forces example
shuds13 Dec 8, 2025
3917e43
Enable gest-api simulator to use executor
shuds13 Dec 8, 2025
c8e6d62
Fix user_specs naming
shuds13 Dec 8, 2025
589d8fb
Formatting
shuds13 Dec 9, 2025
7288d08
Merge pull request #1620 from Libensemble/examples/xopt_generators
shuds13 Dec 9, 2025
d5fbe14
Merge branch 'develop' into asktell/nov_aposmm_refactor
jlnav Dec 9, 2025
68f1d4e
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/nov…
jlnav Dec 9, 2025
90fe2dc
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Dec 9, 2025
ba1e2f3
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/nov…
jlnav Dec 9, 2025
3daf0c1
Merge pull request #1616 from Libensemble/asktell/nov_aposmm_refactor
shuds13 Dec 9, 2025
97287d4
Ensure gens with _id return with sim_id
shuds13 Dec 10, 2025
d78856b
Add Optimas Ax test
shuds13 Dec 10, 2025
c60ad27
Add working multi-task test
shuds13 Dec 12, 2025
1e341b9
Target Optimas branch for testing
shuds13 Dec 12, 2025
a79eb56
Add tests with single/multi fidelity and multitask gens
shuds13 Dec 12, 2025
b4dbc7d
Remove old optimas test
shuds13 Dec 12, 2025
eeabf3f
Make _id to sim_id more robust
shuds13 Dec 12, 2025
5de0573
Handle empty dictionary
shuds13 Dec 12, 2025
04a0565
Formatting tests
shuds13 Dec 12, 2025
d847490
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Dec 12, 2025
1fd96dc
typo
jlnav Dec 12, 2025
7697ef7
Ingest initial H0 for gest-api generators
shuds13 Dec 16, 2025
cd15f07
Multitask test uses H0
shuds13 Dec 16, 2025
ea9c35c
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Dec 18, 2025
e7fef19
Fix test naming
shuds13 Jan 7, 2026
d12f53d
initial small changes to add returns_id attribute to APOSMM class
jlnav Jan 7, 2026
57ad733
adjust README intro sample to use standard gen, VOCS
jlnav Jan 7, 2026
c2bf534
de-emphasize the "user-functions" in favor of generators and simulato…
jlnav Jan 8, 2026
e3f2375
Merge pull request #1646 from Libensemble/asktell/aposmm_id_attr
jlnav Jan 8, 2026
10d0810
mention uv as an install approach. in README example vocs->variables_…
jlnav Jan 8, 2026
1ff10e1
remove sim_specs / gen_specs docs components that describe defining t…
jlnav Jan 8, 2026
cb05162
bump specifically-mentioned required pydantic version in advanced_ins…
jlnav Jan 9, 2026
67fa8e4
initial files and fixes for autodocing the gest-api adhering generators
jlnav Jan 9, 2026
1d1c1b6
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Jan 14, 2026
8e05686
Merge branch 'experimental/jlnav_plus_shuds_asktell' of https://githu…
jlnav Jan 14, 2026
ba9a9ef
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Jan 14, 2026
618c7cf
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/emp…
jlnav Jan 15, 2026
4039b6e
small fixes, plus display some ask/tell aposmm examples in the docs
jlnav Jan 15, 2026
fa9c9f6
list gpcam example
jlnav Jan 15, 2026
c6e56a9
monocasing, plus a clarification
jlnav Jan 16, 2026
c6c79bb
linenos
jlnav Jan 16, 2026
c1b5731
starting to rewrite the first tutorial for standardized gens
jlnav Jan 16, 2026
b34266b
remove some redundancy
jlnav Jan 16, 2026
b52eff8
link to xopt/optimas generators in docs - also try only doc'ing sugge…
jlnav Jan 21, 2026
5cbc999
note the third party gens are examples - adjust xopt file paths to ma…
jlnav Jan 28, 2026
d7d1e52
add gest-api pypi release as required dependency
jlnav Jan 28, 2026
4641d1c
Merge branch 'develop' into asktell/gest-api-release
jlnav Jan 28, 2026
54ddb6d
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Jan 28, 2026
04c6383
lock scipy version until pixi changes implemented into extra.yml
jlnav Jan 28, 2026
5fdf4b3
lock to version from a bit ago
jlnav Jan 28, 2026
b34c8b7
remove lock...?
jlnav Jan 28, 2026
3079721
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/emp…
jlnav Jan 29, 2026
5f51e56
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Jan 29, 2026
5436672
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/ges…
jlnav Jan 29, 2026
be014c7
fix psutil version on macos in lockfile
jlnav Jan 29, 2026
1b3165b
Merge pull request #1666 from Libensemble/asktell/gest-api-release
jlnav Jan 29, 2026
9b5cb8d
unbump ax
jlnav Jan 29, 2026
d714127
Merge branch 'develop' into asktell/emphasize_asktell_gens
jlnav Feb 4, 2026
14f2909
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/emp…
jlnav Feb 6, 2026
915d5af
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Feb 6, 2026
781780a
Add _id field when id producing gen
shuds13 Feb 9, 2026
98861c0
Handle _id as own field
shuds13 Feb 9, 2026
c4110ab
Make test_optimas_ax_multitask.py local only
shuds13 Feb 9, 2026
f6dc389
Merge from upstream
shuds13 Feb 10, 2026
7a7789d
Formatting update
shuds13 Feb 10, 2026
90b3e9c
Formatting
shuds13 Feb 10, 2026
c4c58f0
Update xopt branch
shuds13 Feb 10, 2026
46db6bf
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Feb 10, 2026
08a195c
Put back _id to sim_id fixup
shuds13 Feb 10, 2026
d338a98
Merge from upstream
shuds13 Feb 11, 2026
6cd49de
fix generator.vocs attribute to be lowercase throughout. fix bugged l…
jlnav Feb 11, 2026
9b1a78f
Merge branch 'experimental/jlnav_plus_shuds_asktell' into examples/op…
shuds13 Feb 11, 2026
2d97222
add optimas to all extra envs. add xopt to py3.11+ envs
jlnav Feb 11, 2026
87f14e5
since xopt and optimas now included in envs, remove xopt tests on pyt…
jlnav Feb 11, 2026
1508d7e
use main branch of optimas instead of release
jlnav Feb 11, 2026
86d7397
forgot an e
jlnav Feb 11, 2026
9f6e31e
grab develop's run-tests.py
jlnav Feb 11, 2026
9b93625
why are these tests complaining about reusing an ensemble dir
jlnav Feb 11, 2026
e264d0a
pass the instance, not the parent class that was included for typing …
jlnav Feb 11, 2026
0766e41
Exclude multitask
shuds13 Feb 11, 2026
b20961c
enabled / disabled tests adjustments
jlnav Feb 12, 2026
328ce64
move nlopt dep
jlnav Feb 12, 2026
38aa584
upstream optimas branch for asktell
jlnav Feb 12, 2026
a9b76ef
Merge branch 'experimental/jlnav_plus_shuds_asktell' into examples/op…
jlnav Feb 12, 2026
95b019e
some fixes (?), experimenting with calling only suggest on Libensembl…
jlnav Feb 12, 2026
7bf84a0
Merge remote-tracking branch 'remotes/origin/examples/optimas_ax_gene…
jlnav Feb 13, 2026
35fa55e
various fixes, adjustments, new functions. unmap aposmm's output nump…
jlnav Feb 13, 2026
dcf2ed9
history.py:
jlnav Feb 18, 2026
f47c685
exclude optimas ax tests on macos
jlnav Feb 19, 2026
0e7924a
remove optimas-ax tests from newer python extended tests
jlnav Feb 19, 2026
e89e62d
Merge pull request #1635 from Libensemble/examples/optimas_ax_generators
jlnav Feb 20, 2026
4f8c912
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/apo…
jlnav Feb 20, 2026
c5e5183
Merge branch 'develop' into experimental/jlnav_plus_shuds_asktell
jlnav Feb 20, 2026
37bc5d8
coverage fixes, plus adjustments for warning/handling when both the w…
jlnav Feb 20, 2026
ebce988
adjusts for MPI case
jlnav Feb 20, 2026
b17ffd6
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/apo…
jlnav Feb 25, 2026
2ecaba0
dependency and expected-error-condition tweaks
jlnav Feb 25, 2026
7bfabce
lock to previous petsc version
jlnav Feb 25, 2026
9ab4f93
Merge pull request #1679 from Libensemble/asktell/aposmm_reg_test_vocs
shuds13 Feb 27, 2026
eeddffa
Merge branch 'experimental/jlnav_plus_shuds_asktell' into asktell/emp…
jlnav Mar 2, 2026
718df76
Merge pull request #1656 from Libensemble/asktell/emphasize_asktell_gens
jlnav Mar 2, 2026
09a1b7f
open up ax-platform across extra-envs for compatiblity with xopt requ…
jlnav Mar 2, 2026
2070a93
fix tutorial code
jlnav Mar 3, 2026
2a2c20b
typo
jlnav Mar 3, 2026
c79bf4d
lock ax again, point to optimas branch
jlnav Mar 3, 2026
f1bb7ed
disable xopt install/tests for now
jlnav Mar 3, 2026
005647f
Merge pull request #1684 from Libensemble/asktell/ax
jlnav Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ ignore:
- "libensemble/tools/live_data/*"
- "libensemble/sim_funcs/executor_hworld.py"
- "libensemble/gen_funcs/persistent_tasmanian.py"
- "libensemble/gen_classes/gpCAM.py"
1 change: 1 addition & 0 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ per-file-ignores =

# Need to set something before the APOSMM import
libensemble/tests/regression_tests/test_persistent_aposmm*:E402
libensemble/tests/regression_tests/test_asktell_aposmm_nlopt.py:E402
libensemble/tests/regression_tests/test_persistent_gp_multitask_ax.py:E402
libensemble/tests/functionality_tests/test_uniform_sampling_then_persistent_localopt_runs.py:E402
libensemble/tests/functionality_tests/test_stats_output.py:E402
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,22 @@ jobs:
run: |
pixi run -e ${{ matrix.python-version }} pip install gpcam==8.1.13

- name: Remove xopt tests on old python
if: matrix.python-version == 'py310e'
run: |
rm ./libensemble/tests/regression_tests/test_xopt_EI_xopt_sim.py
rm ./libensemble/tests/regression_tests/test_xopt_EI.py
rm ./libensemble/tests/regression_tests/test_xopt_nelder_mead.py

- name: Remove test using octave, gpcam, globus-compute on Python 3.13
if: matrix.python-version == 'py313e' || matrix.python-version == 'py314e'
run: |
rm ./libensemble/tests/unit_tests/test_ufunc_runners.py # needs globus-compute
rm ./libensemble/tests/regression_tests/test_persistent_fd_param_finder.py # needs octave, which doesn't yet support 3.13
rm ./libensemble/tests/regression_tests/test_persistent_aposmm_external_localopt.py # needs octave, which doesn't yet support 3.13
rm ./libensemble/tests/regression_tests/test_gpCAM.py # needs gpcam, which doesn't build on 3.13
rm ./libensemble/tests/regression_tests/test_asktell_gpCAM.py # needs gpcam, which doesn't build on 3.13
rm ./libensemble/tests/regression_tests/test_persistent_gp_multitask_ax.py # needs ax-platform, which doesn't yet support 3.14
rm ./libensemble/tests/regression_tests/test_optimas_ax_mf.py # needs ax-platform, which doesn't yet support 3.14
rm ./libensemble/tests/regression_tests/test_optimas_ax_sf.py # needs ax-platform, which doesn't yet support 3.14

- name: Start Redis
if: matrix.os == 'ubuntu-latest'
Expand Down
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: end-of-file-fixer
exclude: ^(.*\.xml|.*\.svg)$
- id: trailing-whitespace
exclude: ^(.*\.xml|.*\.svg)$

- repo: https://github.com/pycqa/isort
rev: 6.0.0
rev: 7.0.0
hooks:
- id: isort
args: [--profile=black, --line-length=120]

- repo: https://github.com/psf/black
rev: 25.1.0
rev: 25.12.0
hooks:
- id: black
args: [--line-length=120]

- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
rev: 7.3.0
hooks:
- id: flake8
args: [--max-line-length=120]

- repo: https://github.com/asottile/blacken-docs
rev: 1.19.1
rev: 1.20.0
hooks:
- id: blacken-docs
additional_dependencies: [black==22.12.0]
Expand Down
38 changes: 22 additions & 16 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,46 +44,52 @@ and an exit condition. Run the following four-worker example via ``python this_f

import numpy as np

from gest_api.vocs import VOCS

from libensemble import Ensemble
from libensemble.gen_funcs.sampling import uniform_random_sample
from libensemble.gen_classes.sampling import UniformSample
from libensemble.sim_funcs.six_hump_camel import six_hump_camel
from libensemble.specs import ExitCriteria, GenSpecs, LibeSpecs, SimSpecs

if __name__ == "__main__":

libE_specs = LibeSpecs(nworkers=4)

variables_objectives = VOCS(
variables={
"x0": [-3, 3],
"x1": [-2, 2],
},
objectives={"f": "EXPLORE"},
)

generator = UniformSample(vocs=variables_objectives)

sim_specs = SimSpecs(
sim_f=six_hump_camel,
inputs=["x"],
outputs=[("f", float)],
vocs=variables_objectives,
)

gen_specs = GenSpecs(
gen_f=uniform_random_sample,
outputs=[("x", float, 2)],
user={
"gen_batch_size": 50,
"lb": np.array([-3, -2]),
"ub": np.array([3, 2]),
},
generator=generator,
vocs=variables_objectives,
)

exit_criteria = ExitCriteria(sim_max=100)

sampling = Ensemble(
ensemble = Ensemble(
libE_specs=libE_specs,
sim_specs=sim_specs,
gen_specs=gen_specs,
exit_criteria=exit_criteria,
)

sampling.add_random_streams()
sampling.run()
ensemble.add_random_streams()
ensemble.run()

if sampling.is_manager:
sampling.save_output(__file__)
print("Some output data:\n", sampling.H[["x", "f"]][:10])
if ensemble.is_manager:
ensemble.save_output(__file__)
print("Some output data:\n", ensemble.H[["x", "f"]][:10])

|Inline Example|

Expand Down
19 changes: 12 additions & 7 deletions docs/advanced_installation.rst
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
Advanced Installation
=====================

libEnsemble can be installed from ``pip``, ``Conda``, or ``Spack``.
libEnsemble can be installed from ``pip``, ``uv``, ``Conda``, or ``Spack``.

libEnsemble requires the following dependencies, which are typically
automatically installed alongside libEnsemble:

* Python_ ``>= 3.10``
* NumPy_ ``>= 1.21``
* psutil_ ``>= 5.9.4``
* `pydantic`_ ``>= 1.10.12``
* `pydantic`_ ``>= 2``
* pyyaml_ ``>= v6.0``
* tomli_ ``>= 1.2.1``
* gest-api_ ``>= 0.1,<0.2``

Given libEnsemble's compiled dependencies, the following installation
methods each offer a trade-off between convenience and the ability
to customize builds, including platform-specific optimizations.

We always recommend installing in a virtual environment from Conda or another source.
We recommend installing in a virtual environment from ``uv``, ``conda`` or another source.

Further recommendations for selected HPC systems are given in the
:ref:`HPC platform guides<platform-index>`.
Expand Down Expand Up @@ -53,6 +50,12 @@ Further recommendations for selected HPC systems are given in the

CC=mpicc MPICC=mpicc pip install mpi4py --no-binary mpi4py

.. tab-item:: uv

To install the latest PyPI_ release via uv_::

uv pip install libensemble

.. tab-item:: conda

Install libEnsemble with Conda_ from the conda-forge channel::
Expand Down Expand Up @@ -178,6 +181,7 @@ The following packages may be installed separately to enable additional features

.. _conda-forge: https://conda-forge.org/
.. _Conda: https://docs.conda.io/en/latest/
.. _gest-api: https://github.com/campa-consortium/gest-api
.. _GitHub: https://github.com/Libensemble/libensemble
.. _Globus Compute: https://www.globus.org/compute
.. _MPICH: https://www.mpich.org/
Expand All @@ -192,3 +196,4 @@ The following packages may be installed separately to enable additional features
.. _spack_libe: https://github.com/Libensemble/spack_libe
.. _tomli: https://pypi.org/project/tomli/
.. _tqdm: https://tqdm.github.io/
.. _uv: https://docs.astral.sh/uv/
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ class AxParameterWarning(Warning): # Ensure it's a real warning subclass

# sys.path.insert(0, os.path.abspath('.'))
sys.path.append(os.path.abspath("../libensemble"))
##sys.path.append(os.path.abspath('../libensemble'))
sys.path.append(os.path.abspath("../libensemble/alloc_funcs"))
sys.path.append(os.path.abspath("../libensemble/gen_funcs"))
sys.path.append(os.path.abspath("../libensemble/gen_classes"))
sys.path.append(os.path.abspath("../libensemble/sim_funcs"))
sys.path.append(os.path.abspath("../libensemble/comms"))
sys.path.append(os.path.abspath("../libensemble/utils"))
Expand Down
113 changes: 30 additions & 83 deletions docs/data_structures/gen_specs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,89 +3,36 @@
Generator Specs
===============

Used to specify the generator function, its inputs and outputs, and user data.

Can be constructed and passed to libEnsemble as a Python class or a dictionary.

.. tab-set::

.. tab-item:: class

.. code-block:: python
:linenos:

...
import numpy as np
from libensemble import GenSpecs
from generator import gen_random_sample

...

gen_specs = GenSpecs(
gen_f=gen_random_sample,
outputs=[("x", float, (1,))],
user={
"lower": np.array([-3]),
"upper": np.array([3]),
"gen_batch_size": 5,
},
)
...

.. autopydantic_model:: libensemble.specs.GenSpecs
:model-show-json: False
:model-show-config-member: False
:model-show-config-summary: False
:model-show-validator-members: False
:model-show-validator-summary: False
:field-list-validators: False

.. tab-item:: dict

.. code-block:: python
:linenos:

...
import numpy as np
from generator import gen_random_sample

...

gen_specs = {
"gen_f": gen_random_sample,
"out": [("x", float, (1,))],
"user": {
"lower": np.array([-3]),
"upper": np.array([3]),
"gen_batch_size": 5,
},
}

.. seealso::

.. _gen-specs-example1:

- test_uniform_sampling.py_:
the generator function ``uniform_random_sample`` in sampling.py_ will generate 500 random
points uniformly over the 2D domain defined by ``gen_specs["ub"]`` and
``gen_specs["lb"]``.

.. literalinclude:: ../../libensemble/tests/functionality_tests/test_uniform_sampling.py
:start-at: gen_specs
:end-before: end_gen_specs_rst_tag

.. seealso::

- test_persistent_aposmm_nlopt.py_ shows an example where ``gen_specs["in"]`` is empty, but
``gen_specs["persis_in"]`` specifies values to return to the persistent generator.

- test_persistent_aposmm_with_grad.py_ shows a similar example where an ``H0`` is used to
provide points from a previous run. In this case, ``gen_specs["in"]`` is populated to provide
the generator with data for the initial points.

- In some cases you might be able to give different (perhaps fewer) fields in ``"persis_in"``
than ``"in"``; you may not need to give ``x`` for example, as the persistent generator
already has ``x`` for those points. See `more example uses`_ of ``persis_in``.
Used to specify the generator, its inputs and outputs, and user data.

.. code-block:: python
:linenos:

...
import numpy as np
from libensemble import GenSpecs
from generator import gen_random_sample

...

gen_specs = GenSpecs(
gen_f=gen_random_sample,
outputs=[("x", float, (1,))],
user={
"lower": np.array([-3]),
"upper": np.array([3]),
"gen_batch_size": 5,
},
)
...

.. autopydantic_model:: libensemble.specs.GenSpecs
:model-show-json: False
:model-show-config-member: False
:model-show-config-summary: False
:model-show-validator-members: False
:model-show-validator-summary: False
:field-list-validators: False

.. note::

Expand Down
9 changes: 2 additions & 7 deletions docs/data_structures/libE_specs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,13 @@
LibE Specs
==========

libEnsemble is primarily customized by setting options within a ``LibeSpecs`` class or dictionary.
libEnsemble is primarily customized by setting options within a ``LibeSpecs`` instance.

.. code-block:: python

from libensemble.specs import LibeSpecs

specs = LibeSpecs(
gen_on_manager=True,
save_every_k_gens=100,
sim_dirs_make=True,
nworkers=4
)
specs = LibeSpecs(gen_on_manager=True, save_every_k_gens=100, sim_dirs_make=True, nworkers=4)

.. dropdown:: Settings by Category
:open:
Expand Down
Loading