spacetelescope / poppy

Physical Optics Propagation in Python
https://poppy-optics.readthedocs.io
BSD 3-Clause "New" or "Revised" License
212 stars 69 forks source link

New subaperture optic ---NOT READY TO MERGE.--- #185

Closed mperrin closed 6 years ago

mperrin commented 6 years ago

Issue by douglase Saturday Sep 10, 2016 at 16:48 GMT Originally opened as https://github.com/mperrin/poppy/pull/185


Here's my first draft of a Shack-Hartmann simulator. Not a finished product, just getting it out there for feedback early.

I've tried to keep it general and make it a "sub_aperture" class which could feed into an IFS or other instrument that samples a wavefront via a regular grid.

Here's a demo notebook showing sampling a wavefront, generating an array of PSFs and a modal retrieval of the input wavefront (this is my first foray into SH wavefront sensing, so it's not at all optimized but it does seem to recover the right Zernikes): https://gist.github.com/douglase/9f70aaffbd683f3af5edf805847a444e

Things needed before merging:

Things that raise a Not Implemented:

Community questions:

  1. What else is missing?
  2. How does the structure seem?
  3. Should it be stored in separate file (as it is here) or just another class within optic.py (or something else?)

douglase included the following code: https://github.com/mperrin/poppy/pull/185/commits

mperrin commented 6 years ago

Comment by josePhoenix Sunday Sep 11, 2016 at 20:04 GMT


What else is missing?

From a software-engineering perspective rather than an optics perspective, I would say documentation and testing. In particular, an example optical system in a notebook would be nice to play with (or just look at) for evaluating the ergonomics of the API. Also, since this models a physical system, a test case that, e.g., shows it really does recover the right Zernikes (to some precision) when used as a SH sensor would be a useful sanity check.

How does the structure seem?

See my line comments for things that stood out.

Should it be stored in separate file (as it is here) or just another class within optic.py (or something else?)

Hmm. optics.py is already almost 2000 lines, so I think it should be its own file. The existing optics in POPPY are exposed in the main namespace through judicious use of __all__ and from .modulename import * (see https://github.com/mperrin/poppy/blob/master/poppy/__init__.py#L97-L101 for example) so you'll probably want to add a few lines to ensure poppy.Subapertures is a valid identifier.

(It's possible there's a sensible way to split up optics.py into a package with submodules too, but that would probably be a separate PR.)

mperrin commented 6 years ago

Comment by douglase Monday Sep 12, 2016 at 17:45 GMT


@josePhoenix, thanks for feedback. Yes, I thinking refactoring into some helper functions is a good idea. I have to think about the mutable arguments, thanks for the warning.

you mentioned wanting to see a notebook, do you want to see something beyond the notebook linked above? I put it in the gist because I didn't want to clog up the poppy git history with lots of iterations of notebook graphics.

mperrin commented 6 years ago

Comment by josePhoenix Monday Sep 12, 2016 at 18:09 GMT


Hahah, I totally overlooked that link. (Maybe I was using my phone?)

That's great!

mperrin commented 6 years ago

Comment by coveralls Tuesday Sep 20, 2016 at 17:41 GMT


Coverage Status

Coverage decreased (-0.09%) to 64.429% when pulling b50253d8f52d9ae1a18e33574e6c44c6f589dd29 on douglase:new_lenslet_optic into b3852afcd4393d8463a3c0d7d23cd16d3c2a460c on mperrin:master.

mperrin commented 6 years ago

Comment by coveralls Wednesday Nov 09, 2016 at 00:20 GMT


Coverage Status

Coverage decreased (-0.04%) to 64.475% when pulling a977db8991ea45e17fbab2a7f6f9b4a154033f25 on douglase:new_lenslet_optic into b3852afcd4393d8463a3c0d7d23cd16d3c2a460c on mperrin:master.

mperrin commented 6 years ago

Comment by coveralls Monday Nov 14, 2016 at 15:49 GMT


Coverage Status

Coverage decreased (-0.09%) to 64.475% when pulling 6bd713b1b83b786b55e2b6cfad2e8ebafd6395b9 on douglase:new_lenslet_optic into 5df300a7c8ae481b306429e0c174f1be1b7b477a on mperrin:master.

mperrin commented 6 years ago

Comment by coveralls Monday Nov 14, 2016 at 16:43 GMT


Coverage Status

Coverage decreased (-0.2%) to 64.399% when pulling 559f5e317d30131b284779cf046a931ce125ef6f on douglase:new_lenslet_optic into 5df300a7c8ae481b306429e0c174f1be1b7b477a on mperrin:master.

mperrin commented 6 years ago

Comment by coveralls Monday Jan 16, 2017 at 15:28 GMT


Coverage Status

Coverage decreased (-0.2%) to 64.399% when pulling 4f24c2cd68958c4efe1fe86dc2b80403e67a26b1 on douglase:new_lenslet_optic into 802a249c6e03ffec760a7bfbc960c73be1c6bc2c on mperrin:master.

mperrin commented 6 years ago

Comment by coveralls Monday Jan 23, 2017 at 20:46 GMT


Coverage Status

Coverage decreased (-0.2%) to 64.399% when pulling 15459c38ccbc8a362b300fca9f781bf2425e20e4 on douglase:new_lenslet_optic into 802a249c6e03ffec760a7bfbc960c73be1c6bc2c on mperrin:master.

mperrin commented 6 years ago

Comment by mperrin Monday Jul 10, 2017 at 23:04 GMT


@douglase is this optic still not ready to merge? I'm hoping to get a poppy release out soon, and my default plan is to leave this out unless you tell me you'd prefer otherwise. In which case, I see there is now a merge conflict with more recent edits in poppy_core that would need to get resolved...

mperrin commented 6 years ago

Comment by douglase Tuesday Jul 11, 2017 at 00:40 GMT


I am still working on test cases for this, please leave it out. If you prefer to not have the clutter I can close the PR.

On Mon, Jul 10, 2017 at 17:05 Marshall Perrin notifications@github.com wrote:

@douglase https://github.com/douglase is this optic still not ready to merge? I'm hoping to get a poppy release out soon, and my default plan is to leave this out unless you tell me you'd prefer otherwise. In which case, I see there is now a merge conflict with more recent edits in poppy_core that would need to get resolved...

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/mperrin/poppy/pull/185#issuecomment-314274513, or mute the thread https://github.com/notifications/unsubscribe-auth/AA-nn6fUciKG7UPJSje-HkR8ogaLBbGdks5sMq4cgaJpZM4J5w6w .

mperrin commented 6 years ago

Comment by mperrin Tuesday Jul 11, 2017 at 00:41 GMT


No bother about the "clutter" at all! I'm perfectly happy to leave the PR open as-is. Just wanted to ask you to make sure that was the right thing to do. Thanks!