Skip to content

Commit

Permalink
alg-dev branch merge to main (#121)
Browse files Browse the repository at this point in the history
* New Stokes and Mueller module (#110)

* Initial fwd and inv w/ tests

* Add A-matrix and mueller-from-projection functions

* Debug AR_mueller

* Add convenience functions

* Make 4d transposes nd with moveaxis

* Add documentation

* Improve module docstring

* Change `KeyError` to `ValueError`

* Improved docs

* Remove unnecessary test

* Removed "float" from docs

* Revert "Removed "float" from docs"

This reverts commit d9dd7e3.

* Use `assert_almost_equal`

* fixed couple of  typos

* `A` -> `I2S` & new `S2I`

* comprehensive renaming

* copy `s0` <-> `tra`

* `np.array(s0)` so that it always has `.copy()`

* Set default to "inverse"

---------

Co-authored-by: Shalin Mehta <[email protected]>

* PR docs (#111)

* Add .git-blame-ignore-revs (#109)

* Add #110 pr doc

* Phase 2D + 3D refactor (#117)

* black formatting

* move 2D-to-3D phase recon to phase.py

* convert gen_HZ_stack to ZYX

* keep existing gpu handling

* add 3D_to_3D phase OTF

* improve naming consistency in phase_2D_to_3D_OTF

* Add kwargs to recon params

* change axes for 2D recon preparation

* simplify 2D_to_3D recon with kwargs

* handle padding and simplify OTFs

* add 3D_to_3D recon with kwargs

* temporarily remove docs for rewriting

* first dependence on torch

* move gen_Hz_stack to torch

* convert 2d wotf to torch

* move gen_Greens_function_z to torch

* move important utils to torch

* phase3Dto3D complete overhaul

* refactor

* optics.py to torch

* high-level tests

* splitt phase.py into models

* clean up 3D script

* cleaning and notes

* phase2Dto3D placeholders

* clean tests

* use napari in tests

* better skipping

* reduce dependencies

* update tests

* maintiain PTI simulation's compatibility revised optics functions

* drop pdb

* Preserve birefringence recon

* fix transpose bug

* transpose bug

* phase2Dto3D.py example

* support padding

* empty model for planaraniso

* improved names

* broad renaming of phase2D_3D and phase3D_3D

* updated 2D phase and absorption recon

Return the 2D absorption along with phase. Viewing OTFs in napari is very nice. I changed the axis order to be able to compare phase and absorption OTFs at focal plane.

* display OTFs with Z-axis as a slider

* changes to 2D phase/absorption simulation

I suggest changing this example to be simulation and reconstruction of 2D specimens, thinner than the depth of field of the microscope.

* rename models to <object-type>_<object-thickness>_<data_shape>

* fix isotropic_thin_3d example, include absorption

* 2D -> 2d, 3D -> 3d

---------

Co-authored-by: Shalin Mehta <[email protected]>

* Prepare polarization algorithms for integration with `recOrder` (#118)

* black formatting

* move 2D-to-3D phase recon to phase.py

* convert gen_HZ_stack to ZYX

* keep existing gpu handling

* add 3D_to_3D phase OTF

* improve naming consistency in phase_2D_to_3D_OTF

* Add kwargs to recon params

* change axes for 2D recon preparation

* simplify 2D_to_3D recon with kwargs

* handle padding and simplify OTFs

* add 3D_to_3D recon with kwargs

* temporarily remove docs for rewriting

* first dependence on torch

* move gen_Hz_stack to torch

* convert 2d wotf to torch

* move gen_Greens_function_z to torch

* move important utils to torch

* phase3Dto3D complete overhaul

* refactor

* optics.py to torch

* high-level tests

* splitt phase.py into models

* clean up 3D script

* cleaning and notes

* phase2Dto3D placeholders

* clean tests

* use napari in tests

* better skipping

* reduce dependencies

* update tests

* maintiain PTI simulation's compatibility revised optics functions

* drop pdb

* Preserve birefringence recon

* fix transpose bug

* transpose bug

* phase2Dto3D.py example

* support padding

* empty model for planaraniso

* improved names

* broad renaming of phase2D_3D and phase3D_3D

* Rename variables in `stokes.py`.

* updated 2D phase and absorption recon

Return the 2D absorption along with phase. Viewing OTFs in napari is very nice. I changed the axis order to be able to compare phase and absorption OTFs at focal plane.

* display OTFs with Z-axis as a slider

* changes to 2D phase/absorption simulation

I suggest changing this example to be simulation and reconstruction of 2D specimens, thinner than the depth of field of the microscope.

* convert stokes to torch

* initial draft of planaraniso model

* rename models to <object-type>_<object-thickness>_<data_shape>

* fix isotropic_thin_3d example, include absorption

* 2D -> 2d, 3D -> 3d

* calculate background corrections with transfer function

* rearrange examples folder

* rearrange examples folder

* rearrange `isotropic` and `phase` examples

* add `inplane_anisotropic` model and example

* fix inplane tests

* fix maintenance scripts

* remove deprecated

* use `np.meshgrid` for consistency

* minor bug

* integration changes

---------

Co-authored-by: Shalin Mehta <[email protected]>

* Remove kwargs from reconstructions (#119)

* remove kwargs

* fix estimated background bug

* `illumination_wavelength` -> `wavelength_illumination` (#123)

* Remove duplicate test (#125)

remove duplicate test

* Add option for axial flip of `phase_thick_3d` transfer function (#124)

* `illumination_wavelength` -> `wavelength_illumination`

* add option for axial flip of transfer function

* test axial flip

---------

Co-authored-by: Ziwen Liu <[email protected]>

* Rename model from `anisotropic_thin` to `oriented_thick` (#127)

`anisotropic_thin` -> `oriented_thick`

* `isotropic_fluorescent_thick_3d` model (#128)

* typo

* model outline

* prototype transfer function

* 3d phantom + visualize transfer function

* refactor apply_transfer_function

* typo

* refactor padding (with gpt docs + tests)

* complete example

* test apply_inverse_transfer_function

* TV reconstructions raise NotImplementedError

* `pad_zyx` -> `pad_zyx_along_z`

* Simplify `data += 10`

* Update tests/test_util.py

Co-authored-by: Ziwen Liu <[email protected]>

---------

Co-authored-by: Ziwen Liu <[email protected]>

* Match parameters to simplify `recOrder`-`waveorder` interface (#131)

* add axial_flip to `isotropic_thin_3d`

* `illumination` -> `emission` for fluorescence

* simplify parameters for usage with recOrder

* fix test

* pin torch>=2.0.0

* `z_position_list` should accept a list

---------

Co-authored-by: Shalin Mehta <[email protected]>
Co-authored-by: Ziwen Liu <[email protected]>
  • Loading branch information
3 people authored Jul 25, 2023
1 parent 4473462 commit 43aace8
Show file tree
Hide file tree
Showing 49 changed files with 2,621 additions and 1,422 deletions.
308 changes: 308 additions & 0 deletions docs/valuable-prs/2023-02-27.110.pr.open.md

Large diffs are not rendered by default.

175 changes: 0 additions & 175 deletions examples/3D_PODT_phase_simulation/3D_PODT_Phase_forward.py

This file was deleted.

121 changes: 0 additions & 121 deletions examples/3D_PODT_phase_simulation/3D_PODT_Phase_recon.py

This file was deleted.

15 changes: 5 additions & 10 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
This folder of examples consists of:
`waveorder` is undergoing a significant refactor, and this `examples/` folder serves as a good place to understand the current state of the repository.

1) A set of simulations that will run as is. Any of the files in these folders
can be run with `python <script-name>.py`, and these files are included in
`waveorder`'s automated testing.
- `/2D_QLIPP_simulation/`
- `/3D_PODT_Phase_simulation/`
- `/PTI_simulation/`
The `models/` folder demonstrates the latest functionality of `waveorder`. These scripts will run as is in an environment with `waveorder` and `napari` installed. Each script demonstrates a simulation and reconstruction with a **model**: a specific set of assumptions about the sample and the data being acquired.

2) A set of data-dependent reconstructions in `/experimental_reconstructions/`.
These files serve as a form of documentation for the types of reconstructions
that `waveorder` can perform.
The `maintenance/` folder demonstrates the functionality of `waveorder` that we plan to move to `models/`. These scripts can be run as is, and they are being maintained with tests.

The `documentation/` folder consists of examples that demonstrate reconstruction with real data. These examples require access to the complete datasets, so they are not being actively maintained and serve primarily as documentation.
1 change: 1 addition & 0 deletions examples/documentation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This folder of `documentation` examples consists of a set of data-dependent reconstructions in `/experimental_reconstructions/`.
Loading

0 comments on commit 43aace8

Please sign in to comment.