Skip to content

Releases: mittinatten/freesasa

Reference to accepted paper. Bug-fixes in multithreading.

29 Feb 15:15
Compare
Choose a tag to compare

This release involves some cleanup, refactoring and added documentation. A reference to the final accepted paper has been added to the readme-file.

The only changes to the code that affect users are thread-related:

  • If thread-creation or joining fails, the program stops the calculation gracefully instead of aborting
  • If a user requests more threads than there are atoms, the number of threads is reduced to the number of atoms (instead of the program stalling) and a warning is printed.

State at the time of submission

27 Jan 13:10
Compare
Choose a tag to compare

This release only includes minor changes from 1.0, which don't affect the library functionality. It is released separately to show the state of the code at the moment the paper describing the project was submitted for publication. A preprint can be found at http://arxiv.org/abs/1601.06764.

Changes from 1.0:

  • README mentions preprint
  • example.c is slightly more elaborate
  • Cleanup of some code comments
  • Changed filename COPYING to LICENSE to help GitHub automatically detect the license.

Official release

20 Jan 09:49
Compare
Choose a tag to compare

This marks the official release of FreeSASA.

Changes from 0.6.2:

  • Output format has been updated, a few of the parameters have gotten shorter labels and the INPUT section now has a chains section to show which chains the results pertain to.
  • The function freesasa_log() is deprecated.

Improved output format and bug fixes

14 Jan 14:26
Compare
Choose a tag to compare
Pre-release
  • Output now doesn't repeat the parameters section if several calculations are made. Therefore the input section has been separated from parameters.
    • To make this possible the function freesasa_log() has been deprecated and replaced by freesasa_write_parameters() and freesasa_write_result().
  • A bug where unrecognized long-options caused seg-faults has been fixed.
  • Errors from fprintf() are now caught more consistently throughout the library.
  • CLI documentation has been expanded with a more elaborate example.

New defaults

11 Nov 17:31
Compare
Choose a tag to compare
New defaults Pre-release
Pre-release
  • Changes default to Lee and Richard's algorithm (hence minor release and not patch).
  • Fixes some ambiguities in the file nb.c, that didn't cause problems yet (but should have?).
  • Added option to configure script to turn off thread support, plus some extra tests and other minor fixes.

Final round of pre-releases

24 Oct 15:55
Compare
Choose a tag to compare
Pre-release

Versions 0.6.* marks the final round of pre-releases. No new features will be added, focus will be on bug-fixing, optimization and adding documentation.

Interface changes:

  • The output of the CLI has been updated. It should now be slightly clearer, and more consistent between options. The changes may however break tools relying on the output from older versions.
  • Atomic radii are now determined using the definitions by Tsai et al. ((JMB 1999, 290:
    253
    ). The old classifier is still available as the variable freesasa_oons_classifier.
  • Atomic radii are determined when a structure is read and stored with the structure. This means that they do not have to be calculated explicitly as before. It also means that the signature of a few of the central functions have changed. The default behavior is to guess the radius of unrecognized atoms, but the user can pass an option to specify that they should be skipped or that reading should halt when this happens.
  • When memory allocation fails, the library attempts to clean up as much memory as possible. When emulating this error in the file tests/broken_malloc.c Valgrind detects no memory leaks from within the library.
  • Two scripts have been added to facilitate generating classifiers, see the files for explanations of what they do.

Internal changes:

  • The default classifier is stored the same way as the classifiers generated from config-files. This reduces code size slightly, and makes configuring easier. The default classifier is stored statically in src/protor.c. This code has been generated automatically using the scripts added in this release.

Select atoms using Pymol syntax

09 Oct 16:55
Compare
Choose a tag to compare
Pre-release

This release adds a new feature that allows users to select atoms using a subset of the Pymol "select" command syntax (see http://freesasa.github.io/doxygen/Selection.html) using all three interfaces. The selections are parsed using Flex/Bison lexers/parsers, but the autogenerated code is included in the repo so that the users doesn't have to build them from scratch.

A few bug fixes were done, mainly removing memory leaks and adding error checking where it was missing.

This was the last major feature that was planned before a 1.0 release. Focus is now to extend testing to look for more bugs, clean up and simplify code where possible, improve documentation and look over the API one last time to see if any more refinements can be made to increase intuitivity, stability and modularity.

Faster S&R and changes to command-line options

27 Sep 17:16
Compare
Choose a tag to compare

Changes that affect calculation

Comparison with other SASA tools (primarily NACCESS) indicated that there was room for improvement in accuracy in both L&R and S&R. The program is now as fast and as accurate as NACCESS.

  • L&R is now parameterized by the number of slices per atom instead of the slice width. The previous implementation introduced a miniscule error that decreased with increased resolution and hence was not detected until comparisons were made with other implementations.
  • S&R uses Fibonacci spirals to generate test points instead of precalculated arrays, both made the calculation faster (factor 2 or so) and more accurate.

Bug fixes

  • Fixes a bug that made the CLI option --foreach-residue produce nonsense output.
  • Fixes a bug that broke the CLI option --chain-groups when more than two groups were requested in the same go.

Interface changes

  • Changed the names of the following options
    • --per-residue-type to --foreach-residue-type
    • --per-sqeuence to --foreach-residue
    • -n is now used to set the precision of both L&R and S&R (long form --resolution)
  • L&R precision is now parameterized by an integer instead of a double, affects both C and Python interfaces.

Other changes

A lot of work was done rearranging the documentation. CLI documentation was added to the Doxygen sources. The "manual" can be built to HTML via latexml to be included in the GitHub-pages. There is some overlap between the manual and Doxygen. This will be sorted out in later versions.

Out-of-memory error handling

18 Sep 16:29
Compare
Choose a tag to compare
Pre-release

Instead of checking failed malloc/realloc by asserts it is now done by returning error codes and printing error messages. Tested by compiling with broken malloc/realloc (see tests/broken-malloc.c). These errors are very unlikely to occur in a library of this type (relatively small memory footprint), but now the library can be integrated into other programs with a smaller risk of it causing a crash due to system problems.

Tweaking of S&R gave 5-10 % speed increase.

Added unit tests of some static functions in tests/test_static.c. More tests can/should be added eventually.

More options for CLI PDB handling.

11 Sep 18:39
Compare
Choose a tag to compare
Pre-release

Bumping major pre-release version number (3->4) because this release is partially backwards incompatible for the options -r, -R and -B.

There are no longer any optional arguments to CLI options. Instead the options -r -R and -B have variants that accept a file (see help message for description), making the original ones simple flags. If no file is specified output is printed to stdout.

When the program is run with a user-configuration for atomic radii and classification, it will abort when unknown atoms are found, instead of guessing its element as is done by the default classifier. The assumption is that users who care enough to use their own classification will want to add their own definitions for unknown atoms.