Observed since 20 Oct, 17:11 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A learned prior over the optical glass manifold for realistic glass selection in lens design.
AbbeFlow is a differentiable, normalizing-flow-based learned prior over the optical glass catalog manifold. Trained on approximately 1,700 real glasses from major manufacturers (including Schott, Ohara, Hoya, and others), AbbeFlow models the distribution of physical glasses in a 4D Buchdahl dispersion coefficient space. It enables continuous, gradient-based lens optimization while ensuring that glass choices remain on or near the realizable manifold.
For details on the mathematical modeling and formulation, see the Theoretical Background documentation.
Install AbbeFlow via pip:
pip install abbeflow
AbbeFlow supports two main paradigms for continuous glass optimization:
AbbeFlow provides a pretrained GlassFlow model ready for inference:
from abbeflow import GlassFlow
# Load the pretrained model
gf = GlassFlow.pretrained()
# Compute the log-probability of a glass (manifold prior penalty)
logp = gf.log_prob(nd=1.517, vd=64.2)
print(f"Log probability: {logp.item():.4f}")
# Encode to and decode from the latent space
z = gf.encode(nd=1.517, vd=64.2)
glass = gf.decode(z)
print(f"Decoded glass: nd={glass.nd:.4f}, vd={glass.vd:.2f}")
# Snap to the nearest real catalog glasses
matches = gf.nearest_real(nd=1.517, vd=64.2, k=3)
print("\nNearest catalog glasses:")
for match in matches:
print(f" - {match.manufacturer} {match.name} (Distance: {match.distance:.4f})")
The following examples are located in the examples/ directory and demonstrate how to integrate AbbeFlow into various workflows:
A detailed overview of all modules, classes, and methods is available in the API Reference documentation.
AbbeFlow is released under the MIT License.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 2 Jul 2026 | 6 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:11 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:590c02342a9e9fcf19a7ed36fc0f6711c1fc995604ef7cc81de7bb58b96426a3