Skip to Content


Frealix [1] is a program for the refinement of helical filament reconstructions from cryo electron micrographs. It is primarily used to process images of amyloid fibrils, though it has also been tested on TMV and actin filaments.


  • 11-Aug-2014: version 1.1.0 released. Major changes since 1.0.0:
    • Micrograph & 3D model are resampled internally to match the requested range of frequencies to be used during alignment. This can save considerable processing time and memory.
    • Resolution of model 3D estimated automatically from previous round's FSC. This resolution estimate is used by masking routines.
    • New option boost_low_frequency_contrast to leave low frequencies intact rather than multiply by CTF
    • Fixed & improved filament polarity flipping & polarity checks
    • Fixed & improved transition from single-particle to full-filament processing
    • New output: unfiltered, unmasked reconstructions & FSC volumes
    • Accepts results from CTFFIND 4 as input
    • Improved wrapper script job monitoring on cluster
    • New script to convert from IHRSR a la Agard lab to Frealix
    • Numerous bug fixes
  • 11-Apr-2014: version 1.0.0 released
  • 5-Apr-2014: beta version available for download. Version 1.0.0, with better documentation, will be available later this month.


Static binaries for 64-bit linux are provided, as well as the source code. See download links at the bottom of this page. Frealix is subject to the Janelia Farm Research Campus Software Copyright 1.1.


Frealix can be compiled and/or installed as described in the installation page.

Documentation & tutorials

Tips & miscellaneous notes

  • Accessory scripts
    • The script flx_wrap.rb should be sufficient to get you started with using frealix. Try "flx_wrap.rb --help".
    • flx_wrap.rb will create one directory per refinement round, called frealix_round_???, with ??? starting at 000 (the 0th round, with no refinement)
    • flx_wrap.rb handles interaction with your cluster's SGE queuing system. To customize that interaction, study & edit lines ~16-33 of Sge.rb. Hopefully, the only thing you'll need to do is add another "location" and customise its qsub options. If you let me know the commands you usually use to submit jobs to the queue, I can customise this for you.
    • The current version of Frealix is extremely verbose. Its output is "nerd-readable", but difficult to navigate. A script is supplied to parse the output from frealix and present a human-readable summary as a PDF file. The syntax is "parse_flx.rb frealix_round_???".
    • The scripts require ruby >= 1.9.3 to run, as well as a few gems
  • Frealix follows Spider conventions for angles. This has the consequence that right-handed helices have a negative twist per subunit.
  • Internally, a filament's axis is modelled by polynomial splines, which often misbehave at their extremities. For this reason, I recommend adding extra first and last (FAL) waypoints (WPS) to the filaments and setting relevant flags (e.g. FAL_WPS_IN_SCORE F, FAL_WPS_IN_THREED F)
  • Regarding the startup, you'll have several options. Here are the main ones:
    • if you can pick crossovers manually, do so and tell frealix WPS_ARE_CROSSOVERS for the very first round. That way it'll know to assign PHI angles multiples of pi.
    • if you can't see crossovers, you can use options FRAGMENTED_PHI and FRAGMENTED_SUBUNIT_NUM. In effect, this will mean that the X,Y,Z,psi & theta parameters will be refined in full-filament mode, while the phi & subunit_num parameters will be refined independently for each waypoint.
  • Frealix can be very CPU-intensive. Here are some tips to save time:
    • start processing your data with binned pixels (say, pixel size ~ 4A). Move to less-binned data when you've converged.
  • Because of the lack of documentation, the best way to find out about parameters the user can set is by looking at the beginning of the output from frealix. There is a table which lists all the "runtime parameters", their values, and a description of their meaning. See for example Getting started with Frealix; computing an FSC
  • Internally, Frealix is in a state of transition towards fully object-oriented programming & modernised IO routines. As a consequence of this, only MRC image files are supported for now (Feb 2014)
  • The curvature restraint code may be slightly broken, with the consequence that the persistence length parameter supplied by the user may need to be tweaked to get optimal restraint of the scoring function. The overtwist and stretch restraints have not been tested, for lack of a suitable dataset.
  • Multi-reference refinement is not implemented yet.
  • A GUI for picking and manually editing filament coordinates is under development.

Outdated documentation


Please post questions and bug reports on the frealix forum.