Skip to content

How to handle private and public versions of geodesic attribute? #1

@billbrod

Description

@billbrod

In the other plenoptic synthesis methods, the public version of the to-be-optimized tensor is the same as the private (metamer / _metamer, _mad_image / mad_image), I just use @property to avoid users accidentally overwriting it. However, geodesic is the concatenation of image_a, _geodesic, image_b. The geodesics consist of N different images. Two of those are the endpoints (image_a, image_b), which are set by the user at initialization and never change. The remaining N-2 are stored as _geodesic, are the transition between those two endpoints and are what we change during optimization. geodesic, then, is a bit of a convenience variable here, because any time you visualize or compute a diagnostic, you want to make sure you're including the endpoints.

However, this has the consequence when you initialize the optimizer, it needs to be _geodesic, because if you used geodesic, you'd be changing the endpoints. That's not good, because we want users to avoid having to interact with private methods. This will remain as is for now, until Geodesic is more robust, but might require making two separate public attributes for the versions with and without endpoint or, if possible, just slicing correctly whenever we currently refer to _geodesic.

(Copying from @sjvenditto's comments in plenoptic-org/plenoptic#317)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions