funkelab / motile

Multi-Object Tracker using Integer Linear Equations
https://funkelab.github.io/motile/
MIT License
22 stars 4 forks source link

refactor: keep ilpy usage inside of `Solver.solve` [demo] #61

Closed tlambert03 closed 6 months ago

tlambert03 commented 8 months ago

Here's a demo of what I was proposing in #60, where the only usage of ilpy is now in the Solver.solve method itself... limiting direct dependence on the business logic of ilpy (things like std::vector<Constraint>) while retaining the performance where it really matters (in the solving)

(most of the lines here are just due to the copying of ilpy.Expression into this library)

👀 - note there is also breaking change here, where motile.variables.Variable is renamed to motile.variables.Variables (note the plural). So as not to conflict with a single variable in an expression, and to better represent that it is in fact a dict of multiple Variable instsance

codecov[bot] commented 8 months ago

Codecov Report

Merging #61 (4a7a6f6) into main (37b6067) will increase coverage by 0.78%. The diff coverage is 97.08%.

@@            Coverage Diff             @@
##             main      #61      +/-   ##
==========================================
+ Coverage   92.65%   93.43%   +0.78%     
==========================================
  Files          32       33       +1     
  Lines         762      975     +213     
==========================================
+ Hits          706      911     +205     
- Misses         56       64       +8     
Files Coverage Δ
motile/constraints/constraint.py 100.00% <100.00%> (ø)
motile/constraints/expression.py 92.10% <100.00%> (-0.40%) :arrow_down:
motile/constraints/max_children.py 100.00% <100.00%> (ø)
motile/constraints/max_parents.py 100.00% <100.00%> (ø)
motile/costs/features.py 81.08% <100.00%> (ø)
motile/solver.py 97.16% <100.00%> (+0.20%) :arrow_up:
motile/ssvm.py 100.00% <ø> (ø)
motile/variables/__init__.py 100.00% <100.00%> (ø)
motile/variables/edge_selected.py 100.00% <100.00%> (ø)
motile/variables/node_appear.py 100.00% <100.00%> (ø)
... and 5 more