Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error in conversion of certain euler angles when loading star file #366

Closed
jojoelfe opened this issue Nov 30, 2023 · 6 comments
Closed

Error in conversion of certain euler angles when loading star file #366

jojoelfe opened this issue Nov 30, 2023 · 6 comments
Labels
bug Something isn't working

Comments

@jojoelfe
Copy link
Contributor

Describe the bug
Some eulerangles are not converting correctly into blender coordinate system. It might be related to this bug, alisterburt/eulerangles#8, in the eulerangles package used for the conversion.

This can be fixed when falling back to the previous conversion code from

target_metadata = ConversionMeta(name='output', 
                                   axes='xyz', 
                                    intrinsic=False,
                                    right_handed_rotation=True,
                                    active=True)
eulers = np.deg2rad(convert_eulers(euler_angles, 
                               source_meta='relion', 
                               target_meta=target_metadata))

to

eulers = R.from_euler(
        seq='ZYZ', angles=euler_angles, degrees=True
    ).inv().as_euler('xyz')

Happy to submit a PR, but noticed you are currently making the 4.0 transistion and refactoring a bit, so I can wait until this is more or less finished.

Thanks,

Johannes

To Reproduce
I pasted a diagnostic starfile below

Expected behavior
Currently this loads like this (notice incosnisten behaviour in central cross):

image

while it should look like this

image

Error Codes
Please include associated error codes that are shown in the python console when the error occurs.

To view the python console on Windows, Window -> Toggle System Console, on Mac you must start Blender from the terminal.

# paste error codes from python console here

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. Windows / MacOS / Linux]
  • Hardware: [e.g. Intel Mac, M1 Mac, x86 PC]
  • Blender Version:
  • MolecularNodes Version:

Additional context

# Created by the starfile Python package (version 0.5.1) at 10:44:33 on 30/11/2023


data_particles

loop_
_rlnCoordinateX #1
_rlnCoordinateY #2
_rlnCoordinateZ #3
_rlnOriginXAngst #4
_rlnOriginYAngst #5
_rlnOriginZAngst #6
_rlnAngleRot #7
_rlnAngleTilt #8
_rlnAnglePsi #9
_rlnImagePixelSize #10
_rlnMicrographName #11
_rlnOpticsGroup #12
_faVectorX #13
_faVectorY #14
_faVectorZ #15
0	0	0	0	0	0	0	0	0	1.000000	micrograph.mrc	1	0	0	0
0	0	100	0	0	0	0	10	0	1.000000	micrograph.mrc	1	0	0	0
0	0	200	0	0	0	0	20	0	1.000000	micrograph.mrc	1	0	0	0
0	0	300	0	0	0	0	30	0	1.000000	micrograph.mrc	1	0	0	0
0	0	400	0	0	0	0	40	0	1.000000	micrograph.mrc	1	0	0	0
0	0	500	0	0	0	0	50	0	1.000000	micrograph.mrc	1	0	0	0
0	0	600	0	0	0	0	60	0	1.000000	micrograph.mrc	1	0	0	0
0	0	700	0	0	0	0	70	0	1.000000	micrograph.mrc	1	0	0	0
0	0	800	0	0	0	0	80	0	1.000000	micrograph.mrc	1	0	0	0
0	0	900	0	0	0	0	90	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1000	0	0	0	0	100	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1100	0	0	0	0	110	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1200	0	0	0	0	120	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1300	0	0	0	0	130	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1400	0	0	0	0	140	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1500	0	0	0	0	150	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1600	0	0	0	0	160	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1700	0	0	0	0	170	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1800	0	0	0	0	180	0	1.000000	micrograph.mrc	1	0	0	0
0	0	1900	0	0	0	0	190	0	1.000000	micrograph.mrc	1	0	0	0
0	100	0	0	0	0	10	0	0	1.000000	micrograph.mrc	1	0	0	0
0	100	100	0	0	0	10	10	0	1.000000	micrograph.mrc	1	0	0	0
0	100	200	0	0	0	10	20	0	1.000000	micrograph.mrc	1	0	0	0
0	100	300	0	0	0	10	30	0	1.000000	micrograph.mrc	1	0	0	0
0	100	400	0	0	0	10	40	0	1.000000	micrograph.mrc	1	0	0	0
0	100	500	0	0	0	10	50	0	1.000000	micrograph.mrc	1	0	0	0
0	100	600	0	0	0	10	60	0	1.000000	micrograph.mrc	1	0	0	0
0	100	700	0	0	0	10	70	0	1.000000	micrograph.mrc	1	0	0	0
0	100	800	0	0	0	10	80	0	1.000000	micrograph.mrc	1	0	0	0
0	100	900	0	0	0	10	90	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1000	0	0	0	10	100	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1100	0	0	0	10	110	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1200	0	0	0	10	120	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1300	0	0	0	10	130	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1400	0	0	0	10	140	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1500	0	0	0	10	150	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1600	0	0	0	10	160	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1700	0	0	0	10	170	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1800	0	0	0	10	180	0	1.000000	micrograph.mrc	1	0	0	0
0	100	1900	0	0	0	10	190	0	1.000000	micrograph.mrc	1	0	0	0
0	200	0	0	0	0	20	0	0	1.000000	micrograph.mrc	1	0	0	0
0	200	100	0	0	0	20	10	0	1.000000	micrograph.mrc	1	0	0	0
0	200	200	0	0	0	20	20	0	1.000000	micrograph.mrc	1	0	0	0
0	200	300	0	0	0	20	30	0	1.000000	micrograph.mrc	1	0	0	0
0	200	400	0	0	0	20	40	0	1.000000	micrograph.mrc	1	0	0	0
0	200	500	0	0	0	20	50	0	1.000000	micrograph.mrc	1	0	0	0
0	200	600	0	0	0	20	60	0	1.000000	micrograph.mrc	1	0	0	0
0	200	700	0	0	0	20	70	0	1.000000	micrograph.mrc	1	0	0	0
0	200	800	0	0	0	20	80	0	1.000000	micrograph.mrc	1	0	0	0
0	200	900	0	0	0	20	90	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1000	0	0	0	20	100	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1100	0	0	0	20	110	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1200	0	0	0	20	120	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1300	0	0	0	20	130	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1400	0	0	0	20	140	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1500	0	0	0	20	150	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1600	0	0	0	20	160	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1700	0	0	0	20	170	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1800	0	0	0	20	180	0	1.000000	micrograph.mrc	1	0	0	0
0	200	1900	0	0	0	20	190	0	1.000000	micrograph.mrc	1	0	0	0
0	300	0	0	0	0	30	0	0	1.000000	micrograph.mrc	1	0	0	0
0	300	100	0	0	0	30	10	0	1.000000	micrograph.mrc	1	0	0	0
0	300	200	0	0	0	30	20	0	1.000000	micrograph.mrc	1	0	0	0
0	300	300	0	0	0	30	30	0	1.000000	micrograph.mrc	1	0	0	0
0	300	400	0	0	0	30	40	0	1.000000	micrograph.mrc	1	0	0	0
0	300	500	0	0	0	30	50	0	1.000000	micrograph.mrc	1	0	0	0
0	300	600	0	0	0	30	60	0	1.000000	micrograph.mrc	1	0	0	0
0	300	700	0	0	0	30	70	0	1.000000	micrograph.mrc	1	0	0	0
0	300	800	0	0	0	30	80	0	1.000000	micrograph.mrc	1	0	0	0
0	300	900	0	0	0	30	90	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1000	0	0	0	30	100	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1100	0	0	0	30	110	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1200	0	0	0	30	120	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1300	0	0	0	30	130	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1400	0	0	0	30	140	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1500	0	0	0	30	150	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1600	0	0	0	30	160	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1700	0	0	0	30	170	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1800	0	0	0	30	180	0	1.000000	micrograph.mrc	1	0	0	0
0	300	1900	0	0	0	30	190	0	1.000000	micrograph.mrc	1	0	0	0
0	400	0	0	0	0	40	0	0	1.000000	micrograph.mrc	1	0	0	0
0	400	100	0	0	0	40	10	0	1.000000	micrograph.mrc	1	0	0	0
0	400	200	0	0	0	40	20	0	1.000000	micrograph.mrc	1	0	0	0
0	400	300	0	0	0	40	30	0	1.000000	micrograph.mrc	1	0	0	0
0	400	400	0	0	0	40	40	0	1.000000	micrograph.mrc	1	0	0	0
0	400	500	0	0	0	40	50	0	1.000000	micrograph.mrc	1	0	0	0
0	400	600	0	0	0	40	60	0	1.000000	micrograph.mrc	1	0	0	0
0	400	700	0	0	0	40	70	0	1.000000	micrograph.mrc	1	0	0	0
0	400	800	0	0	0	40	80	0	1.000000	micrograph.mrc	1	0	0	0
0	400	900	0	0	0	40	90	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1000	0	0	0	40	100	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1100	0	0	0	40	110	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1200	0	0	0	40	120	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1300	0	0	0	40	130	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1400	0	0	0	40	140	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1500	0	0	0	40	150	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1600	0	0	0	40	160	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1700	0	0	0	40	170	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1800	0	0	0	40	180	0	1.000000	micrograph.mrc	1	0	0	0
0	400	1900	0	0	0	40	190	0	1.000000	micrograph.mrc	1	0	0	0
0	500	0	0	0	0	50	0	0	1.000000	micrograph.mrc	1	0	0	0
0	500	100	0	0	0	50	10	0	1.000000	micrograph.mrc	1	0	0	0
0	500	200	0	0	0	50	20	0	1.000000	micrograph.mrc	1	0	0	0
0	500	300	0	0	0	50	30	0	1.000000	micrograph.mrc	1	0	0	0
0	500	400	0	0	0	50	40	0	1.000000	micrograph.mrc	1	0	0	0
0	500	500	0	0	0	50	50	0	1.000000	micrograph.mrc	1	0	0	0
0	500	600	0	0	0	50	60	0	1.000000	micrograph.mrc	1	0	0	0
0	500	700	0	0	0	50	70	0	1.000000	micrograph.mrc	1	0	0	0
0	500	800	0	0	0	50	80	0	1.000000	micrograph.mrc	1	0	0	0
0	500	900	0	0	0	50	90	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1000	0	0	0	50	100	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1100	0	0	0	50	110	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1200	0	0	0	50	120	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1300	0	0	0	50	130	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1400	0	0	0	50	140	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1500	0	0	0	50	150	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1600	0	0	0	50	160	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1700	0	0	0	50	170	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1800	0	0	0	50	180	0	1.000000	micrograph.mrc	1	0	0	0
0	500	1900	0	0	0	50	190	0	1.000000	micrograph.mrc	1	0	0	0
0	600	0	0	0	0	60	0	0	1.000000	micrograph.mrc	1	0	0	0
0	600	100	0	0	0	60	10	0	1.000000	micrograph.mrc	1	0	0	0
0	600	200	0	0	0	60	20	0	1.000000	micrograph.mrc	1	0	0	0
0	600	300	0	0	0	60	30	0	1.000000	micrograph.mrc	1	0	0	0
0	600	400	0	0	0	60	40	0	1.000000	micrograph.mrc	1	0	0	0
0	600	500	0	0	0	60	50	0	1.000000	micrograph.mrc	1	0	0	0
0	600	600	0	0	0	60	60	0	1.000000	micrograph.mrc	1	0	0	0
0	600	700	0	0	0	60	70	0	1.000000	micrograph.mrc	1	0	0	0
0	600	800	0	0	0	60	80	0	1.000000	micrograph.mrc	1	0	0	0
0	600	900	0	0	0	60	90	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1000	0	0	0	60	100	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1100	0	0	0	60	110	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1200	0	0	0	60	120	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1300	0	0	0	60	130	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1400	0	0	0	60	140	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1500	0	0	0	60	150	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1600	0	0	0	60	160	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1700	0	0	0	60	170	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1800	0	0	0	60	180	0	1.000000	micrograph.mrc	1	0	0	0
0	600	1900	0	0	0	60	190	0	1.000000	micrograph.mrc	1	0	0	0
0	700	0	0	0	0	70	0	0	1.000000	micrograph.mrc	1	0	0	0
0	700	100	0	0	0	70	10	0	1.000000	micrograph.mrc	1	0	0	0
0	700	200	0	0	0	70	20	0	1.000000	micrograph.mrc	1	0	0	0
0	700	300	0	0	0	70	30	0	1.000000	micrograph.mrc	1	0	0	0
0	700	400	0	0	0	70	40	0	1.000000	micrograph.mrc	1	0	0	0
0	700	500	0	0	0	70	50	0	1.000000	micrograph.mrc	1	0	0	0
0	700	600	0	0	0	70	60	0	1.000000	micrograph.mrc	1	0	0	0
0	700	700	0	0	0	70	70	0	1.000000	micrograph.mrc	1	0	0	0
0	700	800	0	0	0	70	80	0	1.000000	micrograph.mrc	1	0	0	0
0	700	900	0	0	0	70	90	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1000	0	0	0	70	100	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1100	0	0	0	70	110	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1200	0	0	0	70	120	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1300	0	0	0	70	130	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1400	0	0	0	70	140	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1500	0	0	0	70	150	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1600	0	0	0	70	160	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1700	0	0	0	70	170	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1800	0	0	0	70	180	0	1.000000	micrograph.mrc	1	0	0	0
0	700	1900	0	0	0	70	190	0	1.000000	micrograph.mrc	1	0	0	0
0	800	0	0	0	0	80	0	0	1.000000	micrograph.mrc	1	0	0	0
0	800	100	0	0	0	80	10	0	1.000000	micrograph.mrc	1	0	0	0
0	800	200	0	0	0	80	20	0	1.000000	micrograph.mrc	1	0	0	0
0	800	300	0	0	0	80	30	0	1.000000	micrograph.mrc	1	0	0	0
0	800	400	0	0	0	80	40	0	1.000000	micrograph.mrc	1	0	0	0
0	800	500	0	0	0	80	50	0	1.000000	micrograph.mrc	1	0	0	0
0	800	600	0	0	0	80	60	0	1.000000	micrograph.mrc	1	0	0	0
0	800	700	0	0	0	80	70	0	1.000000	micrograph.mrc	1	0	0	0
0	800	800	0	0	0	80	80	0	1.000000	micrograph.mrc	1	0	0	0
0	800	900	0	0	0	80	90	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1000	0	0	0	80	100	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1100	0	0	0	80	110	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1200	0	0	0	80	120	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1300	0	0	0	80	130	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1400	0	0	0	80	140	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1500	0	0	0	80	150	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1600	0	0	0	80	160	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1700	0	0	0	80	170	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1800	0	0	0	80	180	0	1.000000	micrograph.mrc	1	0	0	0
0	800	1900	0	0	0	80	190	0	1.000000	micrograph.mrc	1	0	0	0
0	900	0	0	0	0	90	0	0	1.000000	micrograph.mrc	1	0	0	0
0	900	100	0	0	0	90	10	0	1.000000	micrograph.mrc	1	0	0	0
0	900	200	0	0	0	90	20	0	1.000000	micrograph.mrc	1	0	0	0
0	900	300	0	0	0	90	30	0	1.000000	micrograph.mrc	1	0	0	0
0	900	400	0	0	0	90	40	0	1.000000	micrograph.mrc	1	0	0	0
0	900	500	0	0	0	90	50	0	1.000000	micrograph.mrc	1	0	0	0
0	900	600	0	0	0	90	60	0	1.000000	micrograph.mrc	1	0	0	0
0	900	700	0	0	0	90	70	0	1.000000	micrograph.mrc	1	0	0	0
0	900	800	0	0	0	90	80	0	1.000000	micrograph.mrc	1	0	0	0
0	900	900	0	0	0	90	90	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1000	0	0	0	90	100	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1100	0	0	0	90	110	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1200	0	0	0	90	120	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1300	0	0	0	90	130	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1400	0	0	0	90	140	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1500	0	0	0	90	150	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1600	0	0	0	90	160	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1700	0	0	0	90	170	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1800	0	0	0	90	180	0	1.000000	micrograph.mrc	1	0	0	0
0	900	1900	0	0	0	90	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	0	0	0	0	100	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	100	0	0	0	100	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	200	0	0	0	100	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	300	0	0	0	100	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	400	0	0	0	100	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	500	0	0	0	100	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	600	0	0	0	100	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	700	0	0	0	100	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	800	0	0	0	100	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	900	0	0	0	100	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1000	0	0	0	100	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1100	0	0	0	100	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1200	0	0	0	100	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1300	0	0	0	100	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1400	0	0	0	100	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1500	0	0	0	100	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1600	0	0	0	100	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1700	0	0	0	100	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1800	0	0	0	100	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1000	1900	0	0	0	100	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	0	0	0	0	110	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	100	0	0	0	110	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	200	0	0	0	110	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	300	0	0	0	110	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	400	0	0	0	110	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	500	0	0	0	110	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	600	0	0	0	110	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	700	0	0	0	110	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	800	0	0	0	110	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	900	0	0	0	110	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1000	0	0	0	110	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1100	0	0	0	110	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1200	0	0	0	110	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1300	0	0	0	110	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1400	0	0	0	110	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1500	0	0	0	110	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1600	0	0	0	110	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1700	0	0	0	110	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1800	0	0	0	110	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1100	1900	0	0	0	110	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	0	0	0	0	120	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	100	0	0	0	120	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	200	0	0	0	120	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	300	0	0	0	120	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	400	0	0	0	120	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	500	0	0	0	120	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	600	0	0	0	120	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	700	0	0	0	120	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	800	0	0	0	120	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	900	0	0	0	120	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1000	0	0	0	120	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1100	0	0	0	120	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1200	0	0	0	120	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1300	0	0	0	120	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1400	0	0	0	120	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1500	0	0	0	120	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1600	0	0	0	120	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1700	0	0	0	120	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1800	0	0	0	120	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1200	1900	0	0	0	120	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	0	0	0	0	130	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	100	0	0	0	130	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	200	0	0	0	130	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	300	0	0	0	130	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	400	0	0	0	130	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	500	0	0	0	130	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	600	0	0	0	130	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	700	0	0	0	130	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	800	0	0	0	130	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	900	0	0	0	130	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1000	0	0	0	130	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1100	0	0	0	130	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1200	0	0	0	130	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1300	0	0	0	130	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1400	0	0	0	130	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1500	0	0	0	130	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1600	0	0	0	130	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1700	0	0	0	130	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1800	0	0	0	130	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1300	1900	0	0	0	130	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	0	0	0	0	140	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	100	0	0	0	140	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	200	0	0	0	140	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	300	0	0	0	140	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	400	0	0	0	140	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	500	0	0	0	140	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	600	0	0	0	140	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	700	0	0	0	140	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	800	0	0	0	140	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	900	0	0	0	140	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1000	0	0	0	140	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1100	0	0	0	140	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1200	0	0	0	140	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1300	0	0	0	140	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1400	0	0	0	140	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1500	0	0	0	140	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1600	0	0	0	140	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1700	0	0	0	140	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1800	0	0	0	140	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1400	1900	0	0	0	140	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	0	0	0	0	150	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	100	0	0	0	150	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	200	0	0	0	150	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	300	0	0	0	150	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	400	0	0	0	150	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	500	0	0	0	150	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	600	0	0	0	150	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	700	0	0	0	150	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	800	0	0	0	150	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	900	0	0	0	150	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1000	0	0	0	150	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1100	0	0	0	150	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1200	0	0	0	150	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1300	0	0	0	150	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1400	0	0	0	150	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1500	0	0	0	150	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1600	0	0	0	150	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1700	0	0	0	150	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1800	0	0	0	150	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1500	1900	0	0	0	150	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	0	0	0	0	160	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	100	0	0	0	160	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	200	0	0	0	160	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	300	0	0	0	160	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	400	0	0	0	160	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	500	0	0	0	160	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	600	0	0	0	160	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	700	0	0	0	160	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	800	0	0	0	160	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	900	0	0	0	160	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1000	0	0	0	160	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1100	0	0	0	160	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1200	0	0	0	160	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1300	0	0	0	160	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1400	0	0	0	160	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1500	0	0	0	160	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1600	0	0	0	160	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1700	0	0	0	160	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1800	0	0	0	160	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1600	1900	0	0	0	160	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	0	0	0	0	170	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	100	0	0	0	170	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	200	0	0	0	170	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	300	0	0	0	170	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	400	0	0	0	170	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	500	0	0	0	170	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	600	0	0	0	170	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	700	0	0	0	170	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	800	0	0	0	170	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	900	0	0	0	170	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1000	0	0	0	170	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1100	0	0	0	170	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1200	0	0	0	170	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1300	0	0	0	170	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1400	0	0	0	170	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1500	0	0	0	170	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1600	0	0	0	170	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1700	0	0	0	170	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1800	0	0	0	170	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1700	1900	0	0	0	170	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	0	0	0	0	180	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	100	0	0	0	180	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	200	0	0	0	180	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	300	0	0	0	180	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	400	0	0	0	180	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	500	0	0	0	180	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	600	0	0	0	180	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	700	0	0	0	180	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	800	0	0	0	180	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	900	0	0	0	180	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1000	0	0	0	180	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1100	0	0	0	180	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1200	0	0	0	180	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1300	0	0	0	180	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1400	0	0	0	180	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1500	0	0	0	180	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1600	0	0	0	180	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1700	0	0	0	180	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1800	0	0	0	180	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1800	1900	0	0	0	180	190	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	0	0	0	0	190	0	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	100	0	0	0	190	10	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	200	0	0	0	190	20	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	300	0	0	0	190	30	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	400	0	0	0	190	40	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	500	0	0	0	190	50	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	600	0	0	0	190	60	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	700	0	0	0	190	70	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	800	0	0	0	190	80	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	900	0	0	0	190	90	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1000	0	0	0	190	100	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1100	0	0	0	190	110	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1200	0	0	0	190	120	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1300	0	0	0	190	130	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1400	0	0	0	190	140	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1500	0	0	0	190	150	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1600	0	0	0	190	160	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1700	0	0	0	190	170	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1800	0	0	0	190	180	0	1.000000	micrograph.mrc	1	0	0	0
0	1900	1900	0	0	0	190	190	0	1.000000	micrograph.mrc	1	0	0	0


data_optics

loop_
_rlnOpticsGroup #1
1


@jojoelfe jojoelfe added the bug Something isn't working label Nov 30, 2023
@alisterburt
Copy link
Contributor

+1 on pushing this over to scipy - I'm not sure of the best way to handle these floating point errors in a general way within eulerangles and am no longer really using the package myself

@BradyAJohnston
Copy link
Owner

BradyAJohnston commented Nov 30, 2023

Oooh this is a funky one. We are in luck though, as of Blender 4.0, Geometry Nodes now explicitly supports quaternions. They were actually always using quaternions under the hood, and just exposing eulers to the user. Which means we should be able to use the QUATERNION attribute type, and then use the Quaternion to Rotation node for the Instance on Points. In Blender 4.1 they will be supporting direct Quaternion input into the rotation sockert of the IoP node.

CleanShot 2023-12-01 at 06 00 26@2x

This is actually a refactoring across all of MN that can be done, for the biological assembly and CellPack instancing as well can be changed to in theory, remove the necessity for scipy altogether.

The major refactoring I am now done with (I think), so hopefully it is clear how the package still works. If you'd like to open a PR for the starfile stuff, then I can add in the CellPack / biological assembly stuff as well (unless you wanted to have a crack at them as well).

@BradyAJohnston
Copy link
Owner

Actually looking in to the Blender mathutils submodule, there is a Matrix class which has .decompose() which we could be using instead of adding the scipy dependency.

@jojoelfe
Copy link
Contributor Author

jojoelfe commented Dec 1, 2023

Using quaternions is probably the way to go, especially when thinking about animations, but the problem then becomes converting the relion/frealign euler angle conventions into blenders quaternion convention.

Thinking about it a bit, probably the neatest approach would be to do this conversion inside Geometry Nodes using "Rotate around axis" nodes. This way this is completely exposed in the node tree and could be easily tinkered with. So in this scenario:

  • The Rot,Tilt,Psi values are being saved as attributed
  • There is a Nodegroup that called "Relion euler to quaternion" that converts these values to a quaternion
  • The quaternion goes into a "quaternion to rotation node" (which can go away in blender 4.1)
  • The rotation goes into the IoP node

I will look into this and create a PR for the starfile code first and we can go from there to assembly/cellpack (my impression was that assembly use a transformation matrix, right?)

@BradyAJohnston
Copy link
Owner

Yeah that's a good idea to just keep the raw ZYZ rotations from Relion, and then create a node group which converts it to a quaternion. You can store it as a vector or separate float attributes, up to you as to which would make more sense.

The assembly / cellpack uses rotation matrices, which is where I can replace the currently scipy usage with just storing the actual quaternions and using them inside of GN.

@BradyAJohnston
Copy link
Owner

BradyAJohnston commented Dec 5, 2023

This should now be fixed in the latest release after #374 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants