Comments (5)
I also discovered that I was indeed using the wrong config (0.85 NA of illumination instead of 0.52), while the problem still exists with lower NA, the overlap is smaller.
from waveorder.
It appears to be the same for a previous dataset: /hpc/projects/comp.micro/mantis/2023_08_09_HEK_PCNA_H2B/2-phase3D/pcna_rac1_virtual_staining_b1_redo_1/transfer-function.zarr
from waveorder.
Thanks for finding and flagging this @ziw-liu.
The raw data is sampled out to 1/(0.15 um) = 6.66 um^{-1} so I would not expect overlap since 2NA/lambda = 2(1.35)/(0.45 um) = 6 um^{-1}. Equivalently, we're correctly Nyquist sampling the underlying signals, and I think this is a waveorder bug.
from waveorder.
Details:
I made an error in my response above. I said that the data is sampled out to 1/(0.15 um) = 6.66 um^{-1}, but this is the frequency extent. The data is actually sampled out to 1/(2*0.15 um) = 3.33 um^{-1}.
I will also refine my estimate of the transverse cutoff frequency to (NA_ill + NA_det) / lambda, which is (1.35 + 0.52)/0.45 um = 4.16 um^{-1}.
These numbers are consistent with the overlap you've observed here @ziw-liu, where the transverse cutoff frequency is about 25% larger than the data's extent. In the current waveorder
implementation, this leads to wrapping behavior.
Summary and takeaways:
@ziw-liu @edyoshikun @ieivanov @mattersoflight this means that:
- the labelfree mantis arm is undersampling in the transverse direction by ~25%. It's completely up to us if this improvement is worth pursuing with an increased magnification.
- the current
waveorder
reconstruction has a bug that wraps the transfer functions for these undersampled datasets. This bug leads to oversuppression of the highest spatial frequencies, so I expect a (relatively small) improvement in resolution/contrast after I fix this bug.
Next steps:
@ziw-liu @edyoshikun and I chatted about a fix over lunch. I am planning to:
- begin my transfer function calculation with checks for undersampling
- if the data is undersampled, then I will compute the transfer function on a twice-as-large grid, then clip it afterwards
- this means that undersampled data will require more expensive transfer function calculations, but the transfer functions are precomputed so this is not a major issue.
from waveorder.
This issue might be related to the grid artifacts we see with the binned Zyla camera, which is under-sampling by a large margin. The wrap-arounds in the phase transfer function could be enhancing the fixed pattern noise.
Edit: add a 63x example:
![image](https://private-user-images.githubusercontent.com/67518483/341850258-a931f98d-d3a5-4032-ac33-a136f5048fc9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ2NjQxMjIsIm5iZiI6MTcyNDY2MzgyMiwicGF0aCI6Ii82NzUxODQ4My8zNDE4NTAyNTgtYTkzMWY5OGQtZDNhNS00MDMyLWFjMzMtYTEzNmY1MDQ4ZmM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI2VDA5MTcwMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTViODVlOTM1ODcxZTYyYmMwZjlmNGE0NmQ4YmM3OWU4ZTRlYTA5YmNmNTY4NGVmNTI5OGQ5YmI1NjA3OTNiMWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.70xGWmrsrbZbeEn7KI4WRtZ9HK7NrVE4xf4Hcccdyrc)
from waveorder.
Related Issues (20)
- Focus-finding features
- Make `torch` optional dependency? HOT 4
- waveorder changes matplotlib backend at import HOT 2
- torch meshgrid warning
- Torch warning about copying tensors HOT 1
- Divide by zero during phase normalization
- Move PTI reconstructions to `torch` and `models`
- Remove `waveorder_reconstructor` and `waveorder_simulator` files HOT 1
- Support GPUs via `torch` HOT 1
- Unused `pycromanager>=0.13.2` requirement
- Phase transfer function is numerically small HOT 3
- Tests fail on macbook with incomplete MPS support HOT 6
- 3D phase reconstruction should not use reflection padding HOT 2
- Non-negative fluorescence output? HOT 2
- Fluorescence deconvolution issues HOT 1
- Bump Python
- New release HOT 3
- Severe artifacts and blur in 2D phase reconstruction HOT 1
- Run CI on multiple platforms
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from waveorder.