Python API¶
The pycoposit package launches the same exact command-line implementation used by standalone releases. Inputs are small
dataclasses and every result is an ordinary dictionary.
Public and research interfaces¶
Use pycoposit.check() in an application. It selects the production solver and the complete preprocessing pipeline. The other
execution functions require an explicit model name and are intended for controlled research comparisons.
Result dictionary¶
Every execution result contains these fields:
Field |
Meaning |
|---|---|
|
|
|
Requested classification: |
|
|
|
Model-specific research parameter, otherwise |
|
Optional signed 64-bit identifier copied from |
|
Integer |
|
Exact Boolean answer when requested and completed; otherwise |
|
Exact Boolean answer when requested and completed; otherwise |
|
Native execution duration in nanoseconds measured with a monotonic clock. |
|
Empty on success; otherwise a parser, execution, worker, or resource diagnostic. |
|
Captured textual diagnostics when requested. |
|
Model-specific certificate counters used for analysis and visualization. |
Core types¶
- class pycoposit.StatusCode(*values)¶
Status values returned by native matrix computation.
- class pycoposit.Matrix(matrix, matrix_id=None)¶
Matrix text or path with an optional correlation ID.
- Parameters:
matrix (str)
matrix_id (int | None)
- class pycoposit.MPConfig(workers=4, prefetch_per_worker=128, queue_maxsize=4096, start_method='spawn')¶
Process scheduling for
run_multiprocessing().- Parameters:
workers (int)
prefetch_per_worker (int)
queue_maxsize (int)
start_method (Literal['spawn', 'forkserver', 'fork'])
Sequential research execution¶
compute_matrix() is the single-matrix primitive. run() returns one dictionary for one pycoposit.Matrix, or a lazy
input-ordered iterator for an iterable.
- pycoposit.compute_matrix(algorithm, matrix, mode=None, preprocessing='both', diagnostics=False, collect_certificate_joint_distribution=False, model_parameter=None, *, _stream_diagnostics=False)¶
Run one matrix through an explicitly selected research model.
- Parameters:
algorithm (Literal['dutour_2018', 'danninger_1990', 'copomatrix_2011', 'adaptive_dutour_danninger', 'adaptive_dutour_copomatrix', 'adaptive_sponsel_copomatrix', 'adaptive_zischg_sponsel_copomatrix', 'hadeler_1983', 'dickinson_2019', 'dense_bitset_dickinson', 'interval_recursive_dickinson', 'bdd_dickinson', 'zdd_dickinson', 'cbdd_dickinson', 'cbdd_halfspace_dickinson', 'upper_endpoint_cbdd_dickinson', 'cbdd_dickinson_improved_1', 'wide_certificate_cbdd_dickinson', 'multithreaded_cbdd_dickinson', 'ceiling_pruned_dickinson', 'kernel_cone_dickinson', 'affine_companion_dickinson', 'layered_singular_lift_dickinson', 'breadth_first_singular_lift_dickinson', 'czdd_dickinson', 'sat_dickinson', 'sat_halfspace_dickinson', 'sat_halfspace_rays_dickinson', 'sat_b1', 'sat_b2', 'sat_b3', 'branch_n_prune_1', 'branch_n_prune_2', 'clasp_b3', 'bdd_b3', 'sat_b4', 'sat_b5', 'nbc_b6', 'nbc_b7', 'improved_nbc_b7', 'improved_nbc_x2', 'improved_nbc_x3', 'improved_nbc_x4', 'improved_nbc_x5', 'improved_nbc_x6', 'improved_nbc_x7', 'improved_nbc_x8', 'improved_nbc_x9', 'improved_nbc_x10', 'improved_nbc_x11', 'improved_nbc_x12', 'improved_nbc_x13', 'improved_nbc_x14', 'improved_nbc_x15', 'improved_nbc_x16', 'improved_nbc_x17', 'improved_nbc_x18', 'improved_nbc_x19', 'improved_nbc_x20', 'improved_nbc_x21', 'improved_nbc_x22', 'improved_nbc_x23', 'ccudd_x24', 'improved_nbc_x25', 'improved_nbc_x26', 'improved_nbc_x27', 'improved_nbc_x28', 'improved_nbc_x29', 'improved_nbc_x30', 'improved_nbc_x31', 'improved_nbc_x32', 'interval_supports_g3', 'minimal_sat_g4', 'cadical_x1', 'dual_frontier_nbc', 'dual_frontier_nbc_two', 'dual_frontier_nbc_three', 'dual_frontier_nbc_four', 'improved_nbc_b8', 'improved_nbc_b9', 'improved_nbc_g2', 'sat_c1', 'sat_c2', 'sat_c3', 'sat_c4', 'f1', 'f2', 'g1', 'milp_1', 'sat_a1', 'sat_a2', 'sat_a3', 'sat_a4', 'sat_a5', 'sat_halfspace_lp_dickinson', 'sat_halfspace_milp_dickinson', 'sat_halfspace_rays_lookahead_dickinson', 'sat_halfspace_rays_wide_dickinson', 'wide_certificate_sat_dickinson', 'xxx', 'xxx_two', 'clingo_dickinson', 'clingo_halfspace_dickinson', 'support_pruned_dickinson', 'nullity_support_pruned_dickinson', 'rhs_dickinson', 'frank_wolfe_dickinson', 'one_step_frank_wolfe_dickinson', 'pairwise_frank_wolfe_dickinson', 'support_polished_frank_wolfe_dickinson', 'safi_2021', 'bundfuss_2008', 'sponsel_2012', 'frank_wolfe_sponsel', 'fracessa', 'zischg_hadeler', 'zischg_dickinson', 'zischg_fracessa'])
matrix (Matrix)
mode (Literal['copositive', 'strictly_copositive', 'both'] | None)
preprocessing (Literal['none', 'both'])
diagnostics (bool)
collect_certificate_joint_distribution (bool)
model_parameter (str | None)
_stream_diagnostics (bool)
- Return type:
dict
- pycoposit.run(algorithm, matrices, mode=None, preprocessing='both', diagnostics=False, model_parameter=None)¶
Run one matrix immediately or lazily yield an iterable in input order.
- Parameters:
algorithm (Literal['dutour_2018', 'danninger_1990', 'copomatrix_2011', 'adaptive_dutour_danninger', 'adaptive_dutour_copomatrix', 'adaptive_sponsel_copomatrix', 'adaptive_zischg_sponsel_copomatrix', 'hadeler_1983', 'dickinson_2019', 'dense_bitset_dickinson', 'interval_recursive_dickinson', 'bdd_dickinson', 'zdd_dickinson', 'cbdd_dickinson', 'cbdd_halfspace_dickinson', 'upper_endpoint_cbdd_dickinson', 'cbdd_dickinson_improved_1', 'wide_certificate_cbdd_dickinson', 'multithreaded_cbdd_dickinson', 'ceiling_pruned_dickinson', 'kernel_cone_dickinson', 'affine_companion_dickinson', 'layered_singular_lift_dickinson', 'breadth_first_singular_lift_dickinson', 'czdd_dickinson', 'sat_dickinson', 'sat_halfspace_dickinson', 'sat_halfspace_rays_dickinson', 'sat_b1', 'sat_b2', 'sat_b3', 'branch_n_prune_1', 'branch_n_prune_2', 'clasp_b3', 'bdd_b3', 'sat_b4', 'sat_b5', 'nbc_b6', 'nbc_b7', 'improved_nbc_b7', 'improved_nbc_x2', 'improved_nbc_x3', 'improved_nbc_x4', 'improved_nbc_x5', 'improved_nbc_x6', 'improved_nbc_x7', 'improved_nbc_x8', 'improved_nbc_x9', 'improved_nbc_x10', 'improved_nbc_x11', 'improved_nbc_x12', 'improved_nbc_x13', 'improved_nbc_x14', 'improved_nbc_x15', 'improved_nbc_x16', 'improved_nbc_x17', 'improved_nbc_x18', 'improved_nbc_x19', 'improved_nbc_x20', 'improved_nbc_x21', 'improved_nbc_x22', 'improved_nbc_x23', 'ccudd_x24', 'improved_nbc_x25', 'improved_nbc_x26', 'improved_nbc_x27', 'improved_nbc_x28', 'improved_nbc_x29', 'improved_nbc_x30', 'improved_nbc_x31', 'improved_nbc_x32', 'interval_supports_g3', 'minimal_sat_g4', 'cadical_x1', 'dual_frontier_nbc', 'dual_frontier_nbc_two', 'dual_frontier_nbc_three', 'dual_frontier_nbc_four', 'improved_nbc_b8', 'improved_nbc_b9', 'improved_nbc_g2', 'sat_c1', 'sat_c2', 'sat_c3', 'sat_c4', 'f1', 'f2', 'g1', 'milp_1', 'sat_a1', 'sat_a2', 'sat_a3', 'sat_a4', 'sat_a5', 'sat_halfspace_lp_dickinson', 'sat_halfspace_milp_dickinson', 'sat_halfspace_rays_lookahead_dickinson', 'sat_halfspace_rays_wide_dickinson', 'wide_certificate_sat_dickinson', 'xxx', 'xxx_two', 'clingo_dickinson', 'clingo_halfspace_dickinson', 'support_pruned_dickinson', 'nullity_support_pruned_dickinson', 'rhs_dickinson', 'frank_wolfe_dickinson', 'one_step_frank_wolfe_dickinson', 'pairwise_frank_wolfe_dickinson', 'support_polished_frank_wolfe_dickinson', 'safi_2021', 'bundfuss_2008', 'sponsel_2012', 'frank_wolfe_sponsel', 'fracessa', 'zischg_hadeler', 'zischg_dickinson', 'zischg_fracessa'])
mode (Literal['copositive', 'strictly_copositive', 'both'] | None)
preprocessing (Literal['none', 'both'])
diagnostics (bool)
model_parameter (str | None)
- Return type:
dict | Iterator[dict]
Leaving mode unset selects both only for models that implement combined classification in one traversal. A model that does
not support that contract requires an explicit single-property mode. preprocessing="none" is for algorithm experiments; normal
use should keep preprocessing="both".
Multiprocessing¶
- pycoposit.run_multiprocessing(algorithm, matrices, mp_config=None, mode=None, preprocessing='both', model_parameter=None)¶
Run one matrix or an iterable across worker processes in completion order.
- Parameters:
algorithm (Literal['dutour_2018', 'danninger_1990', 'copomatrix_2011', 'adaptive_dutour_danninger', 'adaptive_dutour_copomatrix', 'adaptive_sponsel_copomatrix', 'adaptive_zischg_sponsel_copomatrix', 'hadeler_1983', 'dickinson_2019', 'dense_bitset_dickinson', 'interval_recursive_dickinson', 'bdd_dickinson', 'zdd_dickinson', 'cbdd_dickinson', 'cbdd_halfspace_dickinson', 'upper_endpoint_cbdd_dickinson', 'cbdd_dickinson_improved_1', 'wide_certificate_cbdd_dickinson', 'multithreaded_cbdd_dickinson', 'ceiling_pruned_dickinson', 'kernel_cone_dickinson', 'affine_companion_dickinson', 'layered_singular_lift_dickinson', 'breadth_first_singular_lift_dickinson', 'czdd_dickinson', 'sat_dickinson', 'sat_halfspace_dickinson', 'sat_halfspace_rays_dickinson', 'sat_b1', 'sat_b2', 'sat_b3', 'branch_n_prune_1', 'branch_n_prune_2', 'clasp_b3', 'bdd_b3', 'sat_b4', 'sat_b5', 'nbc_b6', 'nbc_b7', 'improved_nbc_b7', 'improved_nbc_x2', 'improved_nbc_x3', 'improved_nbc_x4', 'improved_nbc_x5', 'improved_nbc_x6', 'improved_nbc_x7', 'improved_nbc_x8', 'improved_nbc_x9', 'improved_nbc_x10', 'improved_nbc_x11', 'improved_nbc_x12', 'improved_nbc_x13', 'improved_nbc_x14', 'improved_nbc_x15', 'improved_nbc_x16', 'improved_nbc_x17', 'improved_nbc_x18', 'improved_nbc_x19', 'improved_nbc_x20', 'improved_nbc_x21', 'improved_nbc_x22', 'improved_nbc_x23', 'ccudd_x24', 'improved_nbc_x25', 'improved_nbc_x26', 'improved_nbc_x27', 'improved_nbc_x28', 'improved_nbc_x29', 'improved_nbc_x30', 'improved_nbc_x31', 'improved_nbc_x32', 'interval_supports_g3', 'minimal_sat_g4', 'cadical_x1', 'dual_frontier_nbc', 'dual_frontier_nbc_two', 'dual_frontier_nbc_three', 'dual_frontier_nbc_four', 'improved_nbc_b8', 'improved_nbc_b9', 'improved_nbc_g2', 'sat_c1', 'sat_c2', 'sat_c3', 'sat_c4', 'f1', 'f2', 'g1', 'milp_1', 'sat_a1', 'sat_a2', 'sat_a3', 'sat_a4', 'sat_a5', 'sat_halfspace_lp_dickinson', 'sat_halfspace_milp_dickinson', 'sat_halfspace_rays_lookahead_dickinson', 'sat_halfspace_rays_wide_dickinson', 'wide_certificate_sat_dickinson', 'xxx', 'xxx_two', 'clingo_dickinson', 'clingo_halfspace_dickinson', 'support_pruned_dickinson', 'nullity_support_pruned_dickinson', 'rhs_dickinson', 'frank_wolfe_dickinson', 'one_step_frank_wolfe_dickinson', 'pairwise_frank_wolfe_dickinson', 'support_polished_frank_wolfe_dickinson', 'safi_2021', 'bundfuss_2008', 'sponsel_2012', 'frank_wolfe_sponsel', 'fracessa', 'zischg_hadeler', 'zischg_dickinson', 'zischg_fracessa'])
mp_config (MPConfig | None)
mode (Literal['copositive', 'strictly_copositive', 'both'] | None)
preprocessing (Literal['none', 'both'])
model_parameter (str | None)
- Return type:
dict | Iterator[dict]
One worker analyzes one matrix at a time, and results are yielded in completion order. Submission is bounded by
min(queue_maxsize, workers * prefetch_per_worker) so a lazy input iterable does not become an unbounded in-memory queue. Closing
an unfinished iterator terminates its workers. Scripts using the default spawn method must protect their entry point:
if __name__ == "__main__":
main()
Input contract¶
pycoposit.Matrix stores compact matrix text, inline Matrix Market text, or a file path. Compact and Matrix Market formats
are described in Getting Started. matrix_id is correlation metadata only and does not affect the calculation.
The package locates coposit beside itself, in the standard source-build directories, or on PATH. Set the COPOSIT
environment variable to an explicit launcher path when embedding a custom research build.