Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Sorting designed SiDB gates #552

Open
wants to merge 165 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
e2846f7
:bug: the `AFTER_FIRST_SOLUTION` mode now actually terminates after t…
wlambooy Oct 28, 2024
108bb40
:zap: operational status assessment can now return the simulation res…
wlambooy Oct 28, 2024
3424cec
:pencil2: typo
wlambooy Oct 28, 2024
8ec3abd
:sparkles: Exhaustive SiDB design can now sort on ground state isolation
wlambooy Oct 29, 2024
a07c6a0
Merge branch 'main' into designed_gates_sorting
wlambooy Oct 30, 2024
d914aa0
:white_check_mark: Removed redundant test
wlambooy Oct 30, 2024
32db7bc
:memo: Update pyfiction docstrings
actions-user Oct 30, 2024
1a4c2d0
:sparkles: Added average ground state isolation as tie-breaker
wlambooy Oct 30, 2024
92045d6
:white_check_mark: Added test
wlambooy Oct 30, 2024
1a8cecd
:memo: Update pyfiction docstrings
actions-user Oct 30, 2024
19ec6a7
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Oct 30, 2024
805aa23
:bug: forgotten deref
wlambooy Nov 12, 2024
ef68da7
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Nov 12, 2024
9a09663
:bug: forgotten deref
wlambooy Nov 12, 2024
54c078e
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Nov 12, 2024
34c4093
:bug: forgotten deref
wlambooy Nov 12, 2024
c109e6c
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Nov 12, 2024
eed0cd4
:bug: forgotten deref
wlambooy Nov 13, 2024
019be95
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Nov 13, 2024
65049a8
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 3, 2025
f8fae78
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 3, 2025
9213881
:memo: Update pyfiction docstrings
actions-user Feb 3, 2025
2e9181c
:art: Post-fix `&&`
wlambooy Feb 3, 2025
73c0786
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 3, 2025
de1982a
:snake: Adjusted bindings for `is_operational`
wlambooy Feb 3, 2025
b0efb10
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 3, 2025
9bbfc83
:snake: Fixed bindings for `is_operational`
wlambooy Feb 3, 2025
ca25236
:adhesive_bandage: Changed the way `set_simulation_results_retention_…
wlambooy Feb 3, 2025
3fa58ab
:memo: Update pyfiction docstrings
actions-user Feb 3, 2025
d5866a4
:adhesive_bandage: Renaming artifact
wlambooy Feb 3, 2025
dfc364c
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 3, 2025
1feeb56
:adhesive_bandage: Removed duplicate definitions
wlambooy Feb 3, 2025
f0bf4ff
:snake: Added missing identifiers to `__init__.py`
wlambooy Feb 3, 2025
617cde2
:art: Missing import
wlambooy Feb 3, 2025
98ddfae
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 3, 2025
8f171d2
:art: Renamed return value
wlambooy Feb 3, 2025
1b4fefb
:adhesive_bandage: Added forgotten parameter
wlambooy Feb 3, 2025
b70565c
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 3, 2025
e80df55
:white_check_mark: Increased test coverage
wlambooy Feb 3, 2025
46d6884
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 3, 2025
40822a6
:snake: Different lattice instantiations get different identifiers in…
wlambooy Feb 3, 2025
d7967a2
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 4, 2025
756f523
:sparkles: Generic framework for comparing SiDB gates
wlambooy Feb 5, 2025
469bcae
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 5, 2025
ecec062
:memo: Update pyfiction docstrings
actions-user Feb 5, 2025
eb1367d
:art: Removed duplicate `namespace py = pybind11`
wlambooy Feb 6, 2025
42f8113
:rotating_light: Fixed compiler warning (unused `this` in Release)
wlambooy Feb 6, 2025
fd8cdd1
:memo: Cleaned up docstring
wlambooy Feb 6, 2025
d8294ac
:bug: Fixed a case where `|determine_all_combinations_of_distributing…
wlambooy Feb 6, 2025
0fd5669
:art: Removed `inline` specifier where Clang-Tidy suggested to do so
wlambooy Feb 6, 2025
e756bdb
:recycle: Refactor/Clean-up of `design_sidb_gates.hpp`
wlambooy Feb 6, 2025
6945649
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 6, 2025
9a06c96
:memo: Update pyfiction docstrings
actions-user Feb 6, 2025
bfb10c0
:sparkles: Extendable framework for comparing designed SiDB gates
wlambooy Feb 7, 2025
0b7b6da
:safety_vest: Fixed `assert`
wlambooy Feb 7, 2025
2c0396d
:sparkles: Added the `ALL_INPUT_COMBINATIONS_ASSESSED` (non-default) …
wlambooy Feb 7, 2025
c5f8479
:memo: Update pyfiction docstrings
actions-user Feb 7, 2025
dd4b476
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 7, 2025
9b8abbb
:bug: Simulation results can now be retained for operational gates wi…
wlambooy Feb 10, 2025
f28ffbf
:art: Updated `design_sidb_gates` to work with the new changes to `is…
wlambooy Feb 10, 2025
7b3125f
:art: Format
wlambooy Feb 10, 2025
1a31304
:rotating_light: Fixed some compiler warnings and one-click Clang-Tid…
wlambooy Feb 10, 2025
7db9661
:adhesive_bandage: Compatibility fixes w.r.t. the changes to `design_…
wlambooy Feb 10, 2025
ac9663a
:snake: Adjusted Python bindings for `is_operational`
wlambooy Feb 10, 2025
46e86a9
:truck: Shortened `automatic_exhaustive_gate_designer` to `exhaustive…
wlambooy Feb 10, 2025
4f7c1fe
:snake: Added read-only access to member variables of `design_sidb_ga…
wlambooy Feb 10, 2025
063d7a6
:bug: Fixed wrong CMake message
wlambooy Feb 10, 2025
d002690
:snake: Adjusted bindings for `design_sidb_gates`
wlambooy Feb 10, 2025
9192c83
:art: Missing import
wlambooy Feb 10, 2025
37484b0
:art: Change nested enum naming scheme to option (2)
wlambooy Feb 10, 2025
6e26b08
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 10, 2025
3527432
:snake: Adjusted Python bindings test for `is_operational`
wlambooy Feb 10, 2025
8d53a92
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 10, 2025
8dbf313
:memo: Update pyfiction docstrings
actions-user Feb 10, 2025
50337f9
:rotating_light: Fixed compiler warning
wlambooy Feb 10, 2025
bb3c512
:art: Adjust template argument that is passed to `design_sidb_gates_p…
wlambooy Feb 10, 2025
d37aa97
:art: Removed unused imports
wlambooy Feb 10, 2025
a87c6c5
:memo: Missing docstrings
wlambooy Feb 10, 2025
65d113a
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 10, 2025
528d79e
:memo: Missing docstrings
wlambooy Feb 10, 2025
6903e15
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 10, 2025
1dd2771
:bug: Fixed a mistake in `__init__.py`
wlambooy Feb 10, 2025
87e670b
:adhesive_bandage: Adjusted the usage of the return type of a `is_ope…
wlambooy Feb 10, 2025
1171966
:art: Reformat
wlambooy Feb 12, 2025
247e5db
:pencil2: Fixed typo
wlambooy Feb 12, 2025
368a521
:adhesive_bandage: Fixed template errors
wlambooy Feb 12, 2025
1314879
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
479ab7c
:snake: Fixed missing lattice postfix
wlambooy Feb 12, 2025
4479f15
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 12, 2025
94a7f18
:memo: Fixed python docstrings
wlambooy Feb 12, 2025
9328c15
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
d091501
:memo: Fixed python docstrings
wlambooy Feb 12, 2025
6aab3f7
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
1905e66
:green_heart: Do not run pyfiction docstring generator upon edits to …
wlambooy Feb 12, 2025
4e3c86e
:memo: Fixed pyfiction docstrings
wlambooy Feb 12, 2025
17c7f9f
:art: Clang-Tidy suggestions
wlambooy Feb 12, 2025
2735012
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
30e4b7c
:memo: Fixed pyfiction docstrings
wlambooy Feb 12, 2025
155ab73
:memo: Added a docstring to `order_designed_sidb_gates`
wlambooy Feb 12, 2025
9dcfd48
:snake: Fixed duplicate definition of nested enum definitions
wlambooy Feb 12, 2025
414dfd6
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 12, 2025
3f3fa84
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
145084b
:memo: Fixed pyfiction docstrings
wlambooy Feb 12, 2025
c4de4d8
:art: Renamed to `designed_sidb_gate_comparator`
wlambooy Feb 12, 2025
495beb6
:memo: Added some docstrings
wlambooy Feb 12, 2025
4f27b59
:snake: Dangling identifier in `__init__.py`
wlambooy Feb 12, 2025
7ba74b1
Revert ":green_heart: Do not run pyfiction docstring generator upon e…
wlambooy Feb 12, 2025
dab05b8
:memo: Added `_overridden` pyfiction docstrings
wlambooy Feb 12, 2025
8ee0c69
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 12, 2025
7361029
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
6b52427
:memo: Finished the docstrings for `compare_designed_sidb_gates.hpp`
wlambooy Feb 12, 2025
9ae9997
:memo: Update pyfiction docstrings
actions-user Feb 12, 2025
fe26104
:art: Added `noexcept`
wlambooy Feb 12, 2025
1e81996
:snake: Made selector types lattice-specific.
wlambooy Feb 13, 2025
52a4107
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 13, 2025
77ee78d
:art: Make the `params` member variable `const`
wlambooy Feb 13, 2025
8aaf1d2
:adhesive_bandage: Forgotten template argument adjustments
wlambooy Feb 13, 2025
a6889b4
:memo: Update pyfiction docstrings
actions-user Feb 13, 2025
9e02436
:art: reformat
wlambooy Feb 13, 2025
a27a132
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 13, 2025
377c5ff
:snake: Forgot to adjust a test after changing the return type of `is…
wlambooy Feb 13, 2025
34323b5
:art: Removed extra semicolon
wlambooy Feb 13, 2025
de6b494
:sparkles: Added `operational_condition_positive_charges`
wlambooy Feb 13, 2025
8c4e2ec
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
0ca3566
:memo: Update pyfiction docstrings
actions-user Feb 13, 2025
f916cef
:adhesive_bandage: Renaming artifacts
wlambooy Feb 13, 2025
2c44699
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
e6ad6a1
:adhesive_bandage: Renaming artifacts
wlambooy Feb 13, 2025
f46772f
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
693096d
:snake: Forgotton postfix
wlambooy Feb 13, 2025
9dc0093
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
1a5af50
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
252a2b8
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
8a1e61b
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
d675a0d
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
dc6ff04
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
a34e291
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
c448c4b
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
c2d3c15
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
dd2e286
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
812f523
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
81879ac
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
f5e3cac
:adhesive_bandage: Renaming artifact
wlambooy Feb 13, 2025
6f6e59d
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 13, 2025
d7c14bd
:adhesive_bandage: Renaming artifact
wlambooy Feb 14, 2025
f044060
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 14, 2025
a553d91
:adhesive_bandage: Renaming artifact
wlambooy Feb 14, 2025
a785c36
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 14, 2025
8777bf1
:adhesive_bandage: Renaming artifact
wlambooy Feb 14, 2025
007aa9e
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 14, 2025
9212f4c
:adhesive_bandage: Forgot to put `op_condition_positive_charges` check
wlambooy Feb 14, 2025
a25ccf3
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 14, 2025
930ba6b
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 17, 2025
74e3ece
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 17, 2025
a2dd43e
:alembic: Added benchmark for `is_operational`
wlambooy Feb 19, 2025
f9ac5d7
:alembic: Added benchmark results (slight improvement for `design_sid…
wlambooy Feb 19, 2025
132f4c3
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Feb 19, 2025
8bcf169
:alembic: Added different options of `strategy_to_analyze_operational…
wlambooy Feb 24, 2025
42c6dc0
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Feb 24, 2025
c398b45
Merge branch 'main' into designed_gates_sorting
wlambooy Feb 24, 2025
36db237
Merge remote-tracking branch 'origin/main' into designed_gates_sorting
wlambooy Mar 1, 2025
2d86cdc
:art: Implemented some of Jan's comments
wlambooy Mar 1, 2025
582964e
Merge remote-tracking branch 'fork/designed_gates_sorting' into desig…
wlambooy Mar 1, 2025
178f90a
🎨 Incorporated pre-commit fixes
pre-commit-ci[bot] Mar 1, 2025
439bb02
:memo: Update pyfiction docstrings
actions-user Mar 1, 2025
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
34 changes: 28 additions & 6 deletions bindings/mnt/pyfiction/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,12 @@
defect_extent,
dependent_cell_mode,
design_sidb_gates,
design_sidb_gates_mode,
design_sidb_gates_params,
design_sidb_gates_mode_100,
design_sidb_gates_mode_111,
design_sidb_gates_params_100,
design_sidb_gates_params_111,
design_sidb_gates_params_termination_condition_100,
design_sidb_gates_params_termination_condition_111,
detect_bdl_pairs,
detect_bdl_pairs_params,
detect_bdl_wires_100,
Expand Down Expand Up @@ -190,6 +194,7 @@
is_neutrally_charged_defect,
is_operational,
is_operational_params,
is_operational_params_termination_condition,
is_positively_charged_defect,
kink_induced_non_operational_input_patterns,
manhattan_distance,
Expand All @@ -207,7 +212,12 @@
offset_coordinate,
offset_volume,
operational_analysis_strategy,
operational_condition,
operational_assessment_100,
operational_assessment_111,
operational_assessment_for_input_100,
operational_assessment_for_input_111,
operational_condition_kinks,
operational_condition_positive_charges,
operational_domain,
operational_domain_contour_tracing,
operational_domain_flood_fill,
Expand Down Expand Up @@ -279,6 +289,7 @@
sign_to_charge_state,
### logic
simulate,
simulation_results_mode,
siqad_area,
siqad_coordinate,
siqad_volume,
Expand Down Expand Up @@ -432,8 +443,12 @@
"defect_extent",
"dependent_cell_mode",
"design_sidb_gates",
"design_sidb_gates_mode",
"design_sidb_gates_params",
"design_sidb_gates_mode_100",
"design_sidb_gates_mode_111",
"design_sidb_gates_params_100",
"design_sidb_gates_params_111",
"design_sidb_gates_params_termination_condition_100",
"design_sidb_gates_params_termination_condition_111",
"detect_bdl_pairs",
"detect_bdl_pairs_params",
"detect_bdl_wires_100",
Expand Down Expand Up @@ -506,6 +521,7 @@
"is_neutrally_charged_defect",
"is_operational",
"is_operational_params",
"is_operational_params_termination_condition",
"is_positively_charged_defect",
"kink_induced_non_operational_input_patterns",
"manhattan_distance",
Expand All @@ -523,7 +539,12 @@
"offset_coordinate",
"offset_volume",
"operational_analysis_strategy",
"operational_condition",
"operational_assessment_100",
"operational_assessment_111",
"operational_assessment_for_input_100",
"operational_assessment_for_input_111",
"operational_condition_kinks",
"operational_condition_positive_charges",
"operational_domain",
"operational_domain_contour_tracing",
"operational_domain_flood_fill",
Expand Down Expand Up @@ -595,6 +616,7 @@
"sign_to_charge_state",
### logic
"simulate",
"simulation_results_mode",
"siqad_area",
"siqad_coordinate",
"siqad_volume",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
#include <fiction/algorithms/physical_design/design_sidb_gates.hpp>
#include <fiction/types.hpp>

#include <fmt/format.h>
#include <pybind11/pybind11.h>

#include <string>

namespace pyfiction
{

Expand All @@ -24,57 +27,101 @@ void design_sidb_gates(pybind11::module& m)
namespace py = pybind11;

m.def("design_sidb_gates", &fiction::design_sidb_gates<Lyt, py_tt>, py::arg("skeleton"), py::arg("spec"),
py::arg("params") = fiction::design_sidb_gates_params<fiction::cell<Lyt>>{}, py::arg("stats") = nullptr,
py::arg("params") = fiction::design_sidb_gates_params<Lyt>{}, py::arg("stats") = nullptr,
DOC(fiction_design_sidb_gates));
}

} // namespace detail

inline void design_sidb_gates(pybind11::module& m)
template <typename Lyt>
void design_sidb_gates_params(pybind11::module& m, const std::string& lattice = "")
{
namespace py = pybind11;

py::class_<fiction::design_sidb_gates_stats>(m, "design_sidb_gates_stats", DOC(fiction_design_sidb_gates_stats))
.def(py::init<>())
.def("__repr__",
[](const fiction::design_sidb_gates_stats& stats)
{
std::stringstream stream{};
stats.report(stream);
return stream.str();
});
// TODO: it seems unnecessary to define these selector types for each lattice

/**
* Design approach selector type.
*/
pybind11::enum_<typename fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode>(
m, "design_sidb_gates_mode", DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode))
.value("QUICKCELL",
fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode::QUICKCELL,
py::enum_<typename fiction::design_sidb_gates_params<Lyt>::design_sidb_gates_mode>(
m, fmt::format("design_sidb_gates_mode{}", lattice).c_str(),
DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode))
.value("QUICKCELL", fiction::design_sidb_gates_params<Lyt>::design_sidb_gates_mode::QUICKCELL,
DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode_QUICKCELL))
.value("AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER",
fiction::design_sidb_gates_params<
fiction::offset::ucoord_t>::design_sidb_gates_mode::AUTOMATIC_EXHAUSTIVE_GATE_DESIGNER,
.value("EXHAUSTIVE_GATE_DESIGNER",
fiction::design_sidb_gates_params<Lyt>::design_sidb_gates_mode::EXHAUSTIVE_GATE_DESIGNER,
DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode_QUICKCELL))
.value("RANDOM", fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_sidb_gates_mode::RANDOM,
.value("RANDOM", fiction::design_sidb_gates_params<Lyt>::design_sidb_gates_mode::RANDOM,
DOC(fiction_design_sidb_gates_params_design_sidb_gates_mode_RANDOM));

/**
* Termination condition selector type.
*/
py::enum_<typename fiction::design_sidb_gates_params<Lyt>::termination_condition>(
m, fmt::format("design_sidb_gates_params_termination_condition{}", lattice).c_str(),
DOC(fiction_design_sidb_gates_params_termination_condition))
.value("AFTER_FIRST_SOLUTION",
fiction::design_sidb_gates_params<Lyt>::termination_condition::AFTER_FIRST_SOLUTION,
DOC(fiction_design_sidb_gates_params_termination_condition_AFTER_FIRST_SOLUTION))
.value("ALL_COMBINATIONS_ENUMERATED",
fiction::design_sidb_gates_params<Lyt>::termination_condition::ALL_COMBINATIONS_ENUMERATED,
DOC(fiction_design_sidb_gates_params_termination_condition_ALL_COMBINATIONS_ENUMERATED));

/**
* Parameters.
*/
py::class_<fiction::design_sidb_gates_params<fiction::offset::ucoord_t>>(m, "design_sidb_gates_params",
DOC(fiction_design_sidb_gates_params))
py::class_<fiction::design_sidb_gates_params<Lyt>>(m, fmt::format("design_sidb_gates_params{}", lattice).c_str(),
DOC(fiction_design_sidb_gates_params))
.def(py::init<>())
.def_readwrite("operational_params",
&fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::operational_params,
.def_readwrite("operational_params", &fiction::design_sidb_gates_params<Lyt>::operational_params,
DOC(fiction_design_sidb_gates_params_operational_params))
.def_readwrite("design_mode", &fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::design_mode,
.def_readwrite("design_mode", &fiction::design_sidb_gates_params<Lyt>::design_mode,
DOC(fiction_design_sidb_gates_params_design_mode))
.def_readwrite("canvas", &fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::canvas,
DOC(fiction_design_sidb_gates_params_canvas))
.def_readwrite("number_of_sidbs",
&fiction::design_sidb_gates_params<fiction::offset::ucoord_t>::number_of_sidbs,
DOC(fiction_design_sidb_gates_params_number_of_sidbs));
.def_readwrite("canvas", &fiction::design_sidb_gates_params<Lyt>::canvas,
DOC(fiction_design_sidb_gates_params_canvas_overridden))
.def_readwrite("number_of_sidbs", &fiction::design_sidb_gates_params<Lyt>::number_of_sidbs,
DOC(fiction_design_sidb_gates_params_number_of_sidbs))
.def_readwrite("termination_cond", &fiction::design_sidb_gates_params<Lyt>::termination_cond,
DOC(fiction_design_sidb_gates_params_termination_cond))
.def_readwrite("post_design_process", &fiction::design_sidb_gates_params<Lyt>::post_design_process,
DOC(fiction_design_sidb_gates_params_post_design_process));
}

} // namespace detail

inline void design_sidb_gates(pybind11::module& m)
{
namespace py = pybind11;

// stats are defined to be read-only

py::class_<fiction::design_sidb_gates_stats>(m, "design_sidb_gates_stats", DOC(fiction_design_sidb_gates_stats))
.def(py::init<>())
.def_readonly("time_total", &fiction::design_sidb_gates_stats::time_total,
DOC(fiction_design_sidb_gates_stats_time_total_overridden))
.def_readonly("pruning_total", &fiction::design_sidb_gates_stats::pruning_total,
DOC(fiction_design_sidb_gates_stats_pruning_total_overridden))
.def_readonly("sim_engine", &fiction::design_sidb_gates_stats::sim_engine,
DOC(fiction_design_sidb_gates_stats_sim_engine))
.def_readonly("number_of_layouts", &fiction::design_sidb_gates_stats::number_of_layouts,
DOC(fiction_design_sidb_gates_stats_number_of_layouts))
.def_readonly("number_of_layouts_after_first_pruning",
&fiction::design_sidb_gates_stats::number_of_layouts_after_first_pruning,
DOC(fiction_design_sidb_gates_stats_number_of_layouts_after_first_pruning))
.def_readonly("number_of_layouts_after_second_pruning",
&fiction::design_sidb_gates_stats::number_of_layouts_after_second_pruning,
DOC(fiction_design_sidb_gates_stats_number_of_layouts_after_second_pruning))
.def_readonly("number_of_layouts_after_third_pruning",
&fiction::design_sidb_gates_stats::number_of_layouts_after_third_pruning,
DOC(fiction_design_sidb_gates_stats_number_of_layouts_after_third_pruning))
.def("__repr__",
[](const fiction::design_sidb_gates_stats& stats)
{
std::stringstream stream{};
stats.report(stream);
return stream.str();
});

detail::design_sidb_gates_params<py_sidb_100_lattice>(m, "_100");
detail::design_sidb_gates_params<py_sidb_111_lattice>(m, "_111");

detail::design_sidb_gates<py_sidb_100_lattice>(m);
detail::design_sidb_gates<py_sidb_111_lattice>(m);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ namespace pyfiction
inline void exact(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

py::enum_<fiction::technology_constraints>(m, "technology_constraints", DOC(fiction_technology_constraints))
.value("NONE", fiction::technology_constraints::NONE, DOC(fiction_technology_constraints_NONE))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ namespace pyfiction
inline void graph_oriented_layout_design(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

py::enum_<fiction::graph_oriented_layout_design_params::effort_mode>(
m, "gold_effort_mode", DOC(fiction_graph_oriented_layout_design_params_effort_mode))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ namespace pyfiction
inline void orthogonal(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

py::class_<fiction::orthogonal_physical_design_params>(m, "orthogonal_params",
DOC(fiction_orthogonal_physical_design_params))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ namespace pyfiction
inline void post_layout_optimization(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

py::class_<fiction::post_layout_optimization_params>(m, "post_layout_optimization_params",
DOC(fiction_post_layout_optimization_params))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ namespace pyfiction
inline void wiring_reduction(pybind11::module& m)
{
namespace py = pybind11;
namespace py = pybind11;

py::class_<fiction::wiring_reduction_params>(m, "wiring_reduction_params", DOC(fiction_wiring_reduction_params))
.def(py::init<>())
Expand Down
Loading