genfire-em / genfire-em.github.io

MIT License
0 stars 0 forks source link

Poor reconstructions while using .mrc projection files #2

Open hdevyldere opened 6 years ago

hdevyldere commented 6 years ago

While trying to reconstruct a data set I found that if I save my projection sets as .mrc's and try to reconstruct them using Genfire I get a really weird output reconstruction that doesn't resemble the data at all. mrc mrc2

But if I run the exact same reconstruction (same angles, constraints, gridding etc.) with the same projections saved as a .mat file I get this: mrc3

(this matches the input projections really well).

I would think it was the .mrc writer I am using but I haven't had any issues with it yet and Tomviz reads in all the .mrc's just fine.

I've attached a link to the .mat/.mrc projection files I used for the example above, along with the Euler angles, a screenshot of the parameters used, and the result files I got from both reconstructions.

(https://drive.google.com/drive/folders/1aJcgPtJ0Anej4gY6ESHlKCl05tMdPF1w?usp=sharing)

apryor6 commented 6 years ago

This is due to difference in the order of data being written (i.e. column-major vs row-major). MATLAB uses column major, whereas C++ conventions generally use row-major. The order parameter in genfire.fileio.writeMRC can be adjusted to change this. This need to write/read MRC files using the same convention in order for the results to be consistent is not limited to GENFIRE -- if you are familiar with programs like IMOD there is often an option to "permute input dimensions" or similar setting to account for differences in row/column major ordering conventions.

hdevyldere commented 6 years ago

I see - that's good to know!