Software Open Access

FreeSASA 2.0

Simon Mitternacht

FreeSASA is an open source library and command line tool to calculate the solvent accessible surface areas of protein molecules. The library is as fast and accurate as existing tools, with the advantage of being open source and available as both a library, a command line tool and it has Python bindings.

Version 2.0 involves a large number of minor changes, mainly to the C API. The two most siginificant new featueres is a new tree interface for navigating the results, and the ability to export results to XML and JSON.



  • Classifier configuration files now have new name field


  • Classifier interface changed.
    • Pointer is now opaque and classification done via freesasa_classifier_class() instead of classifier->sasa_class().
    • Classifiers only classify polar/apolar/unknown. Arbitrary classes no longer allowed.
    • The static classifiers in freesasa.h have reference values for all residue types, allowing calculation of relative SASA for for example RSA output. At the moment no support for defining these values in classifier configuration file (TODO?).
    • Interface for classifying using string-value pairs has been removed (type freesasa_strvp and functions freesasa_result_classifiy() and freesasa_strvp_free()). The new tree-interface should be used instead.
  • Structure interface changed: A structure is initialized with a classifier and the relevant classifier values are stored directly in the structure. This assures that the structure and results are always analyzed with consistent parameters. One effect is that the function freesasa_calc_structure() no longer takes the atomic radii as an explicit parameters.
  • The logging functions freesasa_log(), freesasa_write_result(), freesasa_write_parameters(), freesasa_write_rsa(), freesasa_write_pdb(), freesasa_per_residue(), freesasa_per_residue_type() and freesasa_per_chain() have been removed from the interface. The same functionality can be achieved using freesasa_tree_export().


  • CLI output format is controlled by the option -f or --format. Options specifying files for specific outpt types have been removed, and the separate options controlling output format have been deprecated (see below). An option --deprecated can be used to list these. This has also made the option -l or --no-log obsolete.



  • New output formats
    • XML using libmxl2 (optional)
    • JSON using JSON-C (optional)
    • RSA (was present already in 1.1, but interface now consolidated)
  • To build FreeSASA 2.0 the libraries libxml2 and JSON-C need to be installed. These can be disabled by ./configure --disable-json --disable-xml to build a dependency-free version of the library.


  • New node interface. Results in tree form can be generated using freesasa_calc_tree() or freesasa_tree_init(). The feature was added to facilitate generation of XML and JSON output, but can be used directly to analyze results as well. The results of a calculation are to now best exported using freesasa_tree_export().


  • structure.c was refactored, hopefully code is slightly more transparent now
  • general bug cleaning, some minor memory leaks removed.
  • Memory error mocking is now more sophisticated: uses dlsym instead of macros, allowing more uniform test structure.



  • options -B, -r, -R, --rsa and -l are deprecated (use -f or --format instead)


  • Logging using structure and results now deprecated in favor of using tree interface
  • Function freesasa_select_area() is deprecated

Name Size
792.8 kB Download


Cite as