Normalizaation in Reconstruction and Projection

108 views
Skip to first unread message

xt...@rice.edu

unread,
May 4, 2021, 2:40:43 PM5/4/21
to EMAN2
Hi,

I am recently experimenting different methods of reconstruction and projection. Once we have the orientation of each image and recover the volume by fourier reconstructor, I find that the numerical values of the projections of reconstructed volume and the original image differs by some magnitudes.

My question is, after we insert the image by their orientation into the volume and go through the reconstructor algorithm, will the volume be subjective to the number of images inserted? Is there a reconstructor method such that the estimated volume could be normalized with respect to the number of images inserted, and the volume's projection can also numerically match the images.

Thanks,
Xin

Ludtke, Steven J.

unread,
May 4, 2021, 3:58:39 PM5/4/21
to em...@googlegroups.com
If you are using the Fourier space reconstructors, normalization is part of the process. That is, the value in each Fourier voxel is the weighted average of the contributions of all of the 2-D slices being inserted, not the sum of the values. However, clearly if you are not completely filling Fourier space with value, some regions will be left at zero. There is also the issue of overall normalization of the 2-D vs 3-D transforms.  If you don't invert the 3-D transform, and extract slices from the Fourier volume, the slice amplitudes should be comparable to the values present in the FT of the inserted images. Keep in mind that there is typically some pre-processing performed in 2-D prior to insertion.

--------------------------------------------------------------------------------------
Steven Ludtke, Ph.D. <slu...@bcm.edu>                      Baylor College of Medicine 
Charles C. Bell Jr., Professor of Structural Biology
Dept. of Biochemistry and Molecular Biology                      (www.bcm.edu/biochem)
Academic Director, CryoEM Core                                        (cryoem.bcm.edu)
Co-Director CIBR Center                                    (www.bcm.edu/research/cibr)




--
--
----------------------------------------------------------------------------------------------
You received this message because you are subscribed to the Google
Groups "EMAN2" group.
To post to this group, send email to em...@googlegroups.com
To unsubscribe from this group, send email to eman2+un...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/eman2

---
You received this message because you are subscribed to the Google Groups "EMAN2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eman2+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/eman2/48b07418-000e-4538-ac60-a91e9aba8c29n%40googlegroups.com.

Xin Tan

unread,
May 5, 2021, 3:48:46 PM5/5/21
to em...@googlegroups.com
Thanks. I read the manual and got the idea of fourier reconstruction procedures such as gridding and interpolation. After trying out different fourier space and real space projector/reconstructors, I still find the projection ('standard') of reconstruction is quite different from the magnitude of the data, from which the volume reconstructs.  I understand that comparators are not influenced by this. Are there any ways I can have a reconstruction, whose real-space projections have similar value to the data?

You received this message because you are subscribed to a topic in the Google Groups "EMAN2" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/eman2/gD29fdZTxjY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to eman2+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/eman2/C101FA55-3CF2-46FE-937B-EFDFD9DF0FF1%40bcm.edu.


--
Xin Tan
Rice University Class of 2021
Statistics
xt...@rice.edu | 281-236-0935

Ludtke, Steven J.

unread,
May 5, 2021, 10:03:07 PM5/5/21
to em...@googlegroups.com
Yes, this should happen by default in simplistic cases. Please see the attached Jupyter notebook. In the attached example:
1- a random volume is generated, 
2- projections are made with a spacing of 7.5 deg
3- the projections are reconstructed
4- the reconstruction is reprojected at the same angles

You will find the projections in step 2 and step 4 have basically the same scaling. They are, of course, not identical due to interpolation. If you pad in Fourier space, as is normally done, this will add additional differences. Overall, however, the scaling of the data should be reasonably preserved.

(note that to use the e3display() method in the attached notebook you will need to have a current EMAN2 snapshot and be running
e2display.py --server
in the background.)

--------------------------------------------------------------------------------------
Steven Ludtke, Ph.D. <slu...@bcm.edu>                      Baylor College of Medicine 
Charles C. Bell Jr., Professor of Structural Biology
Dept. of Biochemistry and Molecular Biology                      (www.bcm.edu/biochem)
Academic Director, CryoEM Core                                        (cryoem.bcm.edu)
Co-Director CIBR Center                                    (www.bcm.edu/research/cibr)



project_reconstruct.ipynb

xt...@rice.edu

unread,
Jul 19, 2021, 12:08:39 PM7/19/21
to EMAN2
Thanks. I found that it's the 'edge mean normalization' that causes the reconstructed volume's projection to have different levels of magnitude. I also tried your code, and compare the original image with the projection at the same angle. I found that there are some 'systematic' errors between the original data and projection.

eg: The picture on the left is the original data, the picture in the middle is the projection of the reconstructed volume at the same angle. The picture on the right is their difference. If the projection-reconstruction-projection process is error-free, the picture on the right should nearly be random noise. Despite having a very small magnitude, the pictures on the right have a very clear structure and 'noise structure' in the background. Is there a way to explain this problem and solve it?


image (1).pngScreenshot 2021-07-20 000237.png
Screenshot 2021-07-19 235822.pngScreenshot 2021-07-20 000123.png

Muyuan Chen

unread,
Jul 19, 2021, 12:48:31 PM7/19/21
to em...@googlegroups.com
I guess the issue you have here comes from insufficient padding during reconstruction and slightly different filtration of the volumes. I just did a test and this works reasonably well.
e2proc3d.py r3d_14/threed_09.hdf m3dtest/ref.hdf --meanshrink 2 --process filter.lowpass.tophat:cutoff_abs=.45 --process normalize.edgemean
e2project3d.py m3dtest/ref.hdf --outfile m3dtest/ref_projs.hdf --orientgen=eman:delta=3 --sym=c1 --projector=standard --parallel thread:12
e2make3dpar.py --input m3dtest/ref_projs.hdf --output m3dtest/ref_recon.hdf --threads 12 --keep 1 --mode trilinear --pad 240 --outsize 120 --no_wt --sym c1
e2proc3d.py m3dtest/ref.hdf m3dtest/ref.hdf --calcsf m3dtest/ref_sf.txt
e2proc3d.py m3dtest/ref_recon.hdf m3dtest/ref_recon_norm.hdf --setsf m3dtest/ref_sf.txt  --process normalize.edgemean
image.png



Xin Tan

unread,
Jul 20, 2021, 11:21:15 AM7/20/21
to em...@googlegroups.com
Thanks! I increased the padding to 240 and used a .45 low pass filter on the volume when generating data and after the reconstruction. It's getting better, but I still find some clear patterns in their 'difference' plot. I find the reconstructed volumes have very different histograms from the original volume. Do you think the histogram difference caused the difference between the before & after projection?
 Screenshot 2021-07-20 224517.png
Screenshot 2021-07-20 225855.png
Screenshot 2021-07-20 224658.png

Muyuan Chen

unread,
Jul 20, 2021, 11:30:12 AM7/20/21
to em...@googlegroups.com
Are you on the latest version and using the same command I used in the previous email?

Xin Tan

unread,
Jul 20, 2021, 11:39:55 AM7/20/21
to em...@googlegroups.com
image.png
This is the version I am using. I am actually writing the python code and did not use edge-normalization. Do you think I need to call the function.py instead of adapting the code?

image.png


Muyuan Chen

unread,
Jul 20, 2021, 11:43:27 AM7/20/21
to em...@googlegroups.com
Please update to a later version of the program, and make sure it produces the same result with the same command I ran. The script you use is probably not wrong but it is better to make sure the default way works before altering things. 

Xin Tan

unread,
Jul 20, 2021, 11:44:42 AM7/20/21
to em...@googlegroups.com

Steve Ludtke

unread,
Jul 20, 2021, 12:07:50 PM7/20/21
to em...@googlegroups.com
Hi Xin,
sorry, I wasn't really following since Muyuan seemed to be answering your questions. Reconstruction takes place in Fourier space which involves Fourier interploation. Largely this will produce the "correct" results, but in places where the Fourier intensity is varying rapidly the local interpolation will not be perfect, and this will produce artifacts in real-space. In structural biology these artifacts are largely unimportant. There are other reconstruction algorithms, such as SIRT which can produce fewer real-space artifacts, but there is always a tradeoff, and the result is significant Fourier artifacts instead. Since the data is being sampled in 2D, and the 2-D samples do not fall directly on grid points it is impossible to get a "perfect" solution, and even approaching "perfect" requires very fine angular sampling, much finer than we normally can or need to achieve.

That is to say, yes, you will _always_ see some amount of structure in difference maps and projections of difference maps. Normally the only differences with significant amplitude are at very low resolution, and inconsequential. High resolution differences will normally have very low amplitude. It isn't that it's impossible to improve this, and further reduce the amplitude of the artifacts, just that it is quite computationally (and often data) intensive to do so, and doesn't produce any change in interpretation of the results, so in our field this is not considered desirable. 

The low resolution artifacts you are encountering can largely be corrected by performing a matching filter on the reconstruction prior to subtraction. This applies a radial filter to one volume to make it match the radial power spectrum of the other map. 

Try 

e2proc3d.py reconstruction.hdf recon_filt.hdf --matchto original.hdf
then try computing the difference between recon_filt.hdf and original.hdf

this process is aggregated in the --diffmap option in e2proc3d (which I haven't tested in a long time).

You may find this a useful read:
Penczek PA. Fundamentals of three-dimensional reconstruction from projections. Methods Enzymol. 2010; 482 1-33. doi:10.1016/S0076-6879(10)82001-4. PubMed PMID: 20888956.  




-----------------------------------------
Steven Ludtke, slud...@gmail.com 


On Jul 20, 2021, at 10:44 AM, Xin Tan <xt...@rice.edu> wrote:

Thanks very much!

On Tue, Jul 20, 2021 at 11:43 PM Muyuan Chen <g5v...@gmail.com> wrote:
Please update to a later version of the program, and make sure it produces the same result with the same command I ran. The script you use is probably not wrong but it is better to make sure the default way works before altering things. 

On Tue, Jul 20, 2021 at 10:39 AM Xin Tan <xt...@rice.edu> wrote:
<image.png>
This is the version I am using. I am actually writing the python code and did not use edge-normalization. Do you think I need to call the function.py instead of adapting the code?

<image.png>


On Tue, Jul 20, 2021 at 11:30 PM Muyuan Chen <g5v...@gmail.com> wrote:
Are you on the latest version and using the same command I used in the previous email?

On Tue, Jul 20, 2021 at 10:21 AM Xin Tan <xt...@rice.edu> wrote:
Thanks! I increased the padding to 240 and used a .45 low pass filter on the volume when generating data and after the reconstruction. It's getting better, but I still find some clear patterns in their 'difference' plot. I find the reconstructed volumes have very different histograms from the original volume. Do you think the histogram difference caused the difference between the before & after projection?
 <Screenshot 2021-07-20 224517.png>
<Screenshot 2021-07-20 225855.png>
<Screenshot 2021-07-20 224658.png>

On Tue, Jul 20, 2021 at 12:48 AM Muyuan Chen <g5v...@gmail.com> wrote:
I guess the issue you have here comes from insufficient padding during reconstruction and slightly different filtration of the volumes. I just did a test and this works reasonably well.
e2proc3d.py r3d_14/threed_09.hdf m3dtest/ref.hdf --meanshrink 2 --process filter.lowpass.tophat:cutoff_abs=.45 --process normalize.edgemean
e2project3d.py m3dtest/ref.hdf --outfile m3dtest/ref_projs.hdf --orientgen=eman:delta=3 --sym=c1 --projector=standard --parallel thread:12
e2make3dpar.py --input m3dtest/ref_projs.hdf --output m3dtest/ref_recon.hdf --threads 12 --keep 1 --mode trilinear --pad 240 --outsize 120 --no_wt --sym c1
e2proc3d.py m3dtest/ref.hdf m3dtest/ref.hdf --calcsf m3dtest/ref_sf.txt
e2proc3d.py m3dtest/ref_recon.hdf m3dtest/ref_recon_norm.hdf --setsf m3dtest/ref_sf.txt  --process normalize.edgemean
<image.png>



On Mon, Jul 19, 2021 at 11:08 AM xt...@rice.edu <xt...@rice.edu> wrote:
Thanks. I found that it's the 'edge mean normalization' that causes the reconstructed volume's projection to have different levels of magnitude. I also tried your code, and compare the original image with the projection at the same angle. I found that there are some 'systematic' errors between the original data and projection.

eg: The picture on the left is the original data, the picture in the middle is the projection of the reconstructed volume at the same angle. The picture on the right is their difference. If the projection-reconstruction-projection process is error-free, the picture on the right should nearly be random noise. Despite having a very small magnitude, the pictures on the right have a very clear structure and 'noise structure' in the background. Is there a way to explain this problem and solve it?


<image (1).png><Screenshot 2021-07-20 000237.png>
<Screenshot 2021-07-19 235822.png><Screenshot 2021-07-20 000123.png>
Reply all
Reply to author
Forward
0 new messages