Symforce

Latest version: v0.9.0

Safety actively analyzes 683322 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 2

0.3.0

:camera: Support for CameraCal types in C++ Values and optimizations

You can now use camera calibration objects directly as inputs to Factors for optimization, either as optimized variables or as constants.

- 1db2d85 camera cals in cc_sym.Values
- 73af9cc Add camera cals to python sym
- c230173 Auto-generate C++ cam cal constructors
- 523b5a1 Rework camera cal constructors
- f7987ee Add camera cal types to BY_TYPE_HELPER
- b26be84 Define template specializations of [Lie]GroupOps for camera cals in C++
- e43406e Register CameraCal with LieGroupOps in python
- 2509e29 Add all the camera cals to types_t and define TypeEnum

🐍 More support for dataclasses

We recently added some support for using [Dataclasses](https://docs.python.org/3/library/dataclasses.html) in various places, such as in `Values` and with `Ops`. We've now added more thorough support for them in more places:

- dd017bf Fixed size dataclass ops with sequences
- 184238d Added ops support for NoneTypes so that Dataclasses can have optional fields
- 4a079ce Added Group and Lie Group Ops for Dataclasses
- 05debd6 Added better support for indexing dataclasses stored in Values objects
- db4585f Added clearer error message for dynamically created dataclasses stored in Values objects

🎲 Lots more examples and benchmarks

- ea6c6a4 Examples and Benchmarks

⛸️ `std::complex` in generated C++ code

Generated C++ functions can now handle complex scalars! If the `support_complex` flag is true, generated functions will be allowed to contain complex constants and otherwise work correctly if instantiated with `Scalar = std::complex<T>`.

- 94d37e9 Add support for std::complex in C++ functions

⏱️ Code generation performance improvements

Some changes to speed up code generation by eliminating a lot of unnecessary work

- c26926d [SymEngine] Add `symbols` argument to CSE
- 45c4eb3 Cache generated residuals in Factor
- 2294616 Cache jinja environment
- d8563ed Speed up assert in Codegen construction
- 6a4fb41 Don't autoformat python, for real
- 3e13c3a Speed up symforce_py_optimizer_test.py
- d907c37 Lazily print code in Codegen
- 630e0d3 codegen exposes an option to disable autoformatting

🧮 Barrier functions for optimization

A set of functions with standard interfaces to make it easy to create soft constraints in optimization problems

- d8300cb Added min/max centering barrier function
- cd04ffd Added one-sided barrier functions
- 1149e8a Min/max barrier function
- 93a8727 Added symmetric barrier function

🎶 More noise models

- e48e590 Added pseudo huber noise model
- 48a42c7 Isotropic and diagonal noise models

✍🏼 Documentation

- 90bdf74 Add missing docstrings for cc_sym
- f93ae35 Add docstrings for cc_sym.Key
- d5c66f3 Add module-level docstring to cc_sym
- 958b098 Get cc_sym docs to generate correctly
- 8dba435 Fix custom jacobian func argument name, docstring
- f0d5922 Update comment on index_entry_t.offset

🎁 Misc other changes
- 1fabece ComputeKeysToOptimize defaults comparator to LexicalLessThan
- f89f60d add in databuffer + databuffer element to symengine
- efe830e fix bug w/ symengine floor + ceil
- 367beef Add omega property to ATANCameraCal
- e4834f0 Added "length" metadata reader to timestep sub problem
- d93c486 Tie tic tocs to log level
- 8d94d38 Enable setting c++ log level from python
- 9317314 Add property setters for DoubleSphereCC
- 38f89cc Consolidate version numbers
- c04b86a Pose2 tangent space matches Pose3
- 88192d9 count ops after sympy-ification
- 7d4f5c5 Replace sympy.count_ops w/ better impl
- 202affc Remove extra quote in CLASS.py.jinja
- ff98cd4 Wrap Optimizer.factors
- 6e879fa Wrap Factor.IsSparse in cc_sym
- 77e34c9 Add Rot2.from_angle
- 12f6025 Better variable naming in opt factor construction
- ccef9e6 Improve symengine.count_ops
- 8f645a9 Misc documentation and EAP fixes
- a2fa9ae Changed "assertNear" to "assertStorageNear"
- c5ee7aa compute_jacobians is a method of ResidualBlock
- 8484b2d Implemented group and lie group ops for ndarrays.
- e2049f9 Add custom jacobian support to OptimizationProblem
- 83a9be4 Add function to fetch variable position in problem ordering
- 3c9dc21 Update license to Apache 2.0
- faf77d2 Add option to prune the values object used for optimization.
- 93cb131 Added support for pickling and unpickling Values objects
- 3cf8854 change Matrix.dot to only support vector dot product
- 36ebdde Default C++ log level to warning
- 67f99e4 Downgrade METIS

👮🏼‍♀️ SkyMarshal
- 4b8b9f3 Move _computeHash into class declaration
- f5d2a13 Introduce cpp_display notation for structs with primitive types

Page 2 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.