SPARX to FREALIGN

Forums

After running a 3D projection matching refinement using SPARX, I am trying to convert my data into FREALIGN to do the final amplitude correction. I have seen the script posted in the FREALIGN download page describing how to convert FREALIGN parameters to SPARX parameters, but when I apply the inverse transformations (described below) I keep getting a ball.

Transforming data from SPARX to FREALIGN:

Phi (SPARX) = Psi (FREALIGN)
Theta (SPARX) = Theta (FREALIGN)
Psi (SPARX) = Phi (FREALIGN)

SHx (SPARX) = -SHx (FREALIGN)
SHy (SPARX) = -SHy (FREALIGN)

Information on data processing:

CTF: I've manually estimated the CTF of defocus groups using e2ctf.py and then transferred the per-particle defocus to FREALIGN format. Unfortunately, saving CTF parameters in e2ctf does not allow any astigmatism to be saved, so each particle has the angle of astigmatism = 0.

Particles: .hdf particles were converted to IMAGIC format with e2proc2d.py and then made into a 3D object using em2em (where particles were reversed in order before creating the 3D spider file).

FREALIGN version: v.9.02

I'm not sure what I'm missing and I would appreciate your feedback.

Thank you,
Michael Cianfrocco

________
Nogales Lab

Hi Michael,

One piece of information missing from your problem description is whether you are trying to reconstruct with symmetry. Some symmetry groups are trickier than others when it comes to conventions & conversions.

I have no experience converting between SPARX and Frealign, but I have spent some time trying to get the Imagic-Frealign conversion right.

Here are a few general comments:
- in general, I would always test conversions with a test dataset first. Generate projections from a test 3D object in SPARX, and see if you can reconstruct it from the projections with Frealign. Do not impose any shifts, so that you don't have to worry about that conversion initially. Also don't worry about the CTF initially. Oh, and start with an asymmetric test case. Then try a C symmetry, then a D, and only then an I.
- it may be valuable even to try a reconstruction from a single image (which will look like the image stretched in the (back)projection direction). Do it with SPARX and Frealign and compare the results in Chimera or the like. Starts with all angles at 0.0, then just vary one angle at a time to check all aspects of the conversion.

Once you have figured it out, please share the information here so that others don't have to go through this painful process again :)

HTH
Alexis

In reply to by Alexis

Hi Alexis,

Thank you for your suggestions. I'm running this conversion on the 10,000 particle ribosome test dataset. It's not quite as basic as you suggested, but it is a sturdy sample nonetheless.

I'll keep trying,
Mike

In reply to by mcianfrocco

Hi Mike,

Not much help but... if it's a ribosome test dataset, I would assume that your problem lies with the angles conversion mainly. I think if you were getting the angles right, an error in your conversion of the shifts would give you a very low resolution ribosome, not just a ball.

Good luck!
Alexis

try

spider(phi) = -frealign(psi)
spider(theta) = -frealign(theta)
spider(psi) = -frealign(phi)

maybe it works.

After talking to a number of people, I've found the conversion from SPARX to FREALIGN.

Instead of dealing with SPARX euler angles, I take the angles out of the header file as EMAN angles instead of SPARX angles. These EMAN euler angles (az, alt, phi) are then converted into FREALIGN angles (psi, theta, phi) using the transform functionality in EMAN2 :

def Eman2Freali(az,alt,phi):

t1 = Transform({"type":"eman","az":az,"alt":alt,"phi":phi,"mirror":False})

t_conv = Transform({"type":"eman","alt":31.717474411458415,"az":90,"phi":-90,"mirror":False})

t2 = t1*t_conv.inverse()

d = t2.get_params("eman")

psi = d["phi"]+90

if psi >360:

psi = psi-360

theta= d["alt"]

phi = d["az"]-90

return psi,theta,phi

Hi,

I was wondering if a solution to this conversion has been achieved?

Thanks.

In reply to by rkman

rkman,

We now have a conversion that works, see my post below laying out the python code for the conversion. Essentially, I read the euler angles from the .hdf header as 'EMAN' angles instead of 'SPARX' angles. Then I use the transformation matrix laid out below to convert from EMAN to FREALIGN.

Let me know if you have any more questions,
Mike