Changelog

Below, you’ll find a list of notable changes for each version of the ViennaRNA Package.

Version 2.6.x

Unreleased

Version 2.6.4

Programs

  • Fix C++17 compilation issue with kinwalker

  • Fix potential compilation issues with C++20 in RNAforester frontend

  • Refactor and correct spelling issues in man pages for several executable programs

Library

  • API: Add shift move support to vrna_move_neighbor_diff*() functions

  • API: Fix char array initialization in snoop.c

  • API: Fix potentially leaking file pointer in vrna_file_msa_read()

  • API: Fix potentially leaking memory in rnaplot_EPS()

  • API: Fix potential use of uninitialized variable in vrna_rotational_symmetry_db_pos()

  • API: Fix soft constraints issue in external loop of vrna_subopt*()

  • SWIG: Add swig class output parameter typemap for Python

  • SWIG: Add __hash__() and __eq__() methods for wrapped _vrna_move_t in Python

  • SWIG: Return var_array<vrna_move_t> objects in Python wrapped vrna_neighbors() and vrna_move_neighbor_diff()

  • SWIG: Refactor file handle wrapping between Python 3 and C

  • SWIG: Fix var_array Python slices and associated memory leak

  • SWIG: Fix bogus delete/free() calls in swig interface

  • Add requirements to build RNAlib with MSVC for Windows

  • Remove unused code in RNApuzzler

Package

  • DOC: Transition reference manual from doxygen to sphinx via breathe bridge

  • DOC: Merge documentation of C-API and Python API

  • DOC: Merge parts of tutorial into reference manual

  • AUTOCONF: Refactor autoconf checks for capability to build reference manual

  • AUTOCONF: Deactivate build of RNAxplorer if lapack requirements are not met

Version 2.6.3

Library

  • Make JSON parser integral part of ViennaRNA library

  • API: Move modified energy parameters into ‘modified_base’ object in JSON file(s)

  • SWIG: Enable stand-alone build of Python interface (for PyPI)

Package

  • Add enthalpy and terminal end values for predicted stacks with dihydrouridine

  • TESTS: Allow for using pytest to test the Python 3 interface

Version 2.6.2 (Release date: 2023-06-21)

Programs

  • Fix preparation of input sequences for modified base support in RNAcofold

Library

  • Fix energy corrections for modified base support when unmodified base is not the same as fallback base, e.g. in the case of inosine

  • Add soft constraints to multifold external loop decomposition

  • Add soft constraints preparation stage callback

  • SWIG: Fix fc.sc_add_bp() propagation of constraint values

  • SWIG: Wrap energy parameter file strings

Package

  • TESTS: Add modified base tests on duplex data with I-C and A-Psi pairs from publications

Version 2.6.1 (Release date: 2023-06-12)

Programs

  • Fix double free corruption in RNAdos

  • Fix compilation issues due to use of uint instead of unsigned int for RNAxplorer

  • Fix compilation issues for RNAxplorer when OpenMP is unavailable

Package

  • AUTOCONF: Update autoconf macros

  • Update Debian-based packaging rules

Version 2.6.0 (Release date: 2023-06-09)

Programs

  • Add modified base input support to RNAfold

  • Add modified base input support to RNAplfold

  • Add modified base input support to RNALfold

  • Add modified base input support to RNAcofold

  • Add modified base input support to RNAsubopt

  • Fix missing strand separators in RNAsubopt when applied to multiple interacting sequences

  • Fix sorted output in RNAsubopt with --gquad option

  • Allow for only -Fp in RNAinverse instead of always activating -Fm

  • Fix default value of RNAinverse -R option in manpage

  • Restructure --*help output and man pages for most executable programs

  • Allow for cation concentration (Na+) changes in most executable programs (default 1.021M)

  • Allow for at least as many threads as CPUs are configured if maximum thread number detection fails

  • Fix alignment input parsing in refold.pl

  • Add RNAxplorer program to the distribution

Library

  • API: Extend model_details to allow for salt concentration changes

  • API: Add functions for salt concentration change derived energy corrections in ViennaRNA/params/salt.h

  • API: Add arbitrary modified base support (vrna_sc_mod()) via soft constraints mechanism and JSON input data

  • API: Add Pseuoduridine-A parameters via soft constraints callback

  • API: Add Dihydrouridine parameters via soft constraints callback

  • API: Add inosine-U and inosine-C parameters via soft constraints callback

  • API: Add m6A parameters via soft constraints callback mechanism

  • API: Add 7DA modification support via soft constraints

  • API: Add Purine (nebularine) modification support

  • API: Add new soft constraints multi-callback dispatcher

  • API: Add dynamic array data structure utilities

  • API: Add string data structure utilities

  • API: Add vrna_strchr() function

  • API: Fix potential problems in free_dp_matrices() of LPfold.c

  • API: Fix z-score initialization in vrna_Lfoldz() amd vrna_mfe_window_zscore_cb()

  • API: Fix file close issue in vrna_file_commands_read()

  • API: Fix backtracking issue in Zuker subopt

  • API: Fix missing soft constraints callback execution in Zuker subopt

  • API: Fix enumeration of G-quadruplexes in vrna_subopt() and vrna_subopt_cb()

  • API: Fix constraints bug for exterior loop in boltzmann sampling

  • API: Allow for enforcing ‘must pair’ constraint (|) in dot-bracket constraints strings

  • API: Fix discrepancy between global and local folding in how hard constraints for unpaired bases and non-specific pairing are applied

  • API: Refactor function typdefs to make them actual function pointer typedefs

  • SWIG: Fix Python 3 wrapper suffix issue

  • SWIG: Fix Perl 5 wrapper for vrna_ud_prob_get()

  • SWIG: Only accept upper triangular part of matrix input in fc.sc_bp_add()

  • SWIG: Use var_array instead of tuples for Python RNA.ptable()

  • SWIG: Add Python wrapper for vrna_move_neighbor_diff()

  • SWIG: Add Python docstrings generated from doxygen documentation of C-library

Package

  • Update libsvm to version 3.31

  • Update dlib to version 19.24

  • Adapt Debian dependencies

  • Fix compilation issues with RNAforester

  • AUTOCONF: Fix requirement checks when SVM support is deactivated and swig is missing

  • AUTOMAKE: Add auto parameters for -flto compile/link flags

  • AUTOCONF: Require C++17 due to dependencies to compile DLIB

  • AUTOCONF: Deactivate Python 2 bindings by default

Version 2.5.x

Version 2.5.1 (Release date: 2022-06-02)

Programs

  • Refactor ct2db program to allow for pseudoknots in output structure

Library

  • API: Fix MEA computation for G-quadruplex predictions

  • API: Fix memory leak in hard constraints container

  • API: Fix RNApuzzler edge-case that resulted in segmentation faults

  • API: Fix invalid memory access in vrna_strjoin()

  • API: Revisit generic soft constraints for sliding-window base pair probability computations

  • API: Enable to overwrite automatic unpaired probability determination in MEA computation

  • API: Add #VRNA_PLIST_TYPE_UNPAIRED and #VRNA_PLIST_TYPE_TRIPLE identifiers for vrna_ep_t

  • API: Add vrna_init_rand_seed() to initialize RNG with seed

  • API: Add vrna_zsc_compute_raw() to obtain mean and sd for Z-score computation

  • API: Add vrna_file_connect_read_record() function to parse connectivity table (*.ct) files

  • API: Add vrna_strtrim() function

  • API: Update sanity checks for input in vrna_pbacktrack_sub*()

  • API: Allow for pseudo-knots in vrna_db_from_ptable()

  • API: Do not use min_loop_size = 0 for multi strand interaction prediction

  • API: Remove unnecessary uses of min_loop_size at multiple locations

  • API: Deprecate cutpoint member of vrna_fold_compound_t and prepare for 5’/3’ encoding

  • API: Refactor sequence addition/preparation for vrna_fold_compound_t

  • DOC: Update documentation

  • SWIG: Add simple dot-plot file wrapper plot_dp_EPS()

  • SWIG: Add sequence, sequence_encoding and sequence_encoding2 attributes to fold_compound objects

  • SWIG: Fix RNG wrapping and initialize RNG upon module load and update associated functions

  • SWIG: Add more access to member variable arrays for various objects used throughout the library

  • SWIG: Add memory efficient wrapper for dynamically allocated arrays and matrices

  • SWIG: Shadow pair table data structure for efficient interactions between C and target languages

  • SWIG: Expose hard constraints members in fold_compound objects

  • SWIG: Add exp_E_ext_stem() method (vrna_exp_E_ext_stem()) to fold_compound objects

  • SWIG: Expose DP matrices within fold_compound objects

  • SWIG: Fix memory leak in wrapper for vrna_db_from_ptable()

Package

  • Update dlib to version 19.23

  • DOC: Update doxygen.conf for version 1.9.2

  • AUTOCONF: Factor-out Naview layout algorithm to allow for deactivating the Naview layout algorithm at configure-time

  • AUTOCONF: Make LaTeX checks more portable and update LaTeX package checks

  • AUTOCONF: Check whether we can build the swig interface when SVM support is deactivated

  • AUTOCONF: Fix condition check for CLA build

Version 2.5.0 (Release date: 2021-11-08)

Programs

  • Add RNAmultifold program to compute secondary structures for multiple interacting RNAs

  • Add multistrand capabilities to RNAeval

  • Add multistrand capabilities to RNAsubopt

  • Replace RNAcofold with a wrapper to RNAmultifold

  • Fix computation of BB homodimer base pair probabilities in RNAcofold

Library

  • API: Fix use of undefined values in deprecated function PS_dot_plot()

  • API: Fix probability computations for unstructured domains within multibranch loops

  • API: Fix index error in ensemble defect computations

  • API: Fix hard constraints behavior on non-specific base pairing

  • API: Fix segmentation fault for short input sequences in vrna_hx_from_ptable()

  • API: Fix memory leak in static rna_layout() function

  • API: Fix corner-case in covariance score computation on sequence alignments that determines which alignment columns may pair and which don’t

  • API: Add MFE computations for multiple interacting strands

  • API: Add partition function computations for multiple interacting strands

  • API: Add base pair probability computations for multiple interacting strands

  • API: Add suboptimal structure prediction for multiple interacting strands

  • API: Add multistrand capabilities to vrna_eval*() functions

  • API: Add new function vrna_equilibrium_conc() fir concentration dependency computations of multiple interacting strands with dlib backend

  • API: Add vrna_equilibrium_constants() function to obtain equilibrium constants for different complexes of multiple interacting strands

  • API: Add function vrna_pf_add() to add ensemble free energies of two ensembles

  • API: Add function vrna_pf_substrands() to get ensemble free energies for complexes up to a specific number of interacting strands

  • API: Add function vrna_n_multichoose_k() to obtain a list of k-combinations with repetition

  • API: Add vrna_cstr_discard() function to allow for discarding char streams prior to flushing

  • API: Add vrna_bp_distance_pt() function to allow for base pair distance computation with pseudo-knots

  • API: Add functions vrna_pbacktrack_sub*() to allow for stochastic backtracing within arbitrary sequence intervals

  • API: Add functions vrna_boustrophedon() and vrna_boustrophedon_pos() to generate lists of or obtain values from sequences of Boustrophedon distributed integer numbers

  • API: Add vrna_pscore() and vrna_pscore_freq() functions to obtain covariance score for particular alignment columns

  • API: Rewrite Zuker suboptimals implementation

  • API: Remove old cofold implementations

  • API: Make type attribute of vrna_mx_mfe_t and vrna_mx_pf_t a constant

  • API: Guard more functions in utils/structure_utils.c against NULL input

  • API: Rename vrna_E_ext_loop() to vrna_eval_ext_stem()

  • API: Use v3 typedefs in dot-plot function declarations

  • SWIG: Fix Python 3 file handle as optional argument in eval* functions and methods

  • SWIG: Add wrapper for vrna_pf_add()

  • SWIG: Add wrapper for vrna_hx_from_ptable()

  • SWIG: Add wrapper for vrna_db_from_probs()

Package

  • Update libsvm to version 3.25

  • Make Python 3.x the default Python for the scripting languange interfaces

  • Add Python3 capability for Mac OS X installer builds

  • TESTS: Create TAP driver output for all unit tests (library, executables, SWIG interfaces)

  • Remove compile-time switch to deactivate Boustrophedon backtracing scheme (this is the status-quo now)

  • Add Contributors License Agreement (CLA) to the Package in doc/CLA/

Version 2.4.x

Version 2.4.18 (Release date: 2021-04-22)

Programs

  • Fix and refactor RNApkplex program

  • Fix occasional backtracing errors in RNALalifold

  • Restrict available dangling end models in RNALalifold to 0 and 2

  • Prevent segmentation faults upon bogus input data in RNAfold, RNAalifold, RNAcofold, RNAheat, and RNAeval

  • Free MFE DP matrices in RNAsubopt Boltzmann sampling when not required anymore

Library

  • API: Add vrna_abstract_shapes() and vrna_abstract_shapes_pt() functions to convert secondary structures into their respective abstract shape notation ala Giegerich et al. 2004

  • API: Add functions vrna_seq_reverse() and vrna_DNA_complement() to create reverse complements of a sequence

  • API: Add more soft constraint handling to comparative structure prediction

  • API: Add generic soft constraints for sliding window comparative MFE backtracing

  • API: Add vrna_ensemble_defect_pt() that accepts pair table input instead of dot-bracket string to allow for non-nested reference structures

  • API: Add failure/success return values to generic soft constraints application functions

  • API: Refactor RNAPKplex implementation by better using constraints framework and moving out many parts from RNAPKplex.c into RNAlib as separate re-usable functions

  • API: Fix energy contributions used in RNAPKplex implementations

  • API: Fix energy evaluation for cofolding with dangle model 1

  • API: Fix wrong arithmetic usage for PF variant of combined generic and simple soft constraints applied to external loops

  • API: Fix memory size in #vrna_fold_compound_t initialization

  • API: Fix bogus memory access for comparative prediction when preparing hard constraints

  • API: Fix wrong index usage in hard constraints for comparative base pair probability computations of internal loops

  • API: Fix G-Quadruplex contributions as part of multibranch loops in single sequence base pair probability computations

  • API: Fix multibranch loop MFE decomposition step for multiple strand cases

  • API: Fix external loop generic hard constraint index updating for partition function computations

  • API: Fix memory allocation for auxiliary grammar data structure

  • API: Fix incorporation of auxiliary grammar contrib for closing pairs in sliding-window MFE computation

  • API: Fix DP matrix intitialization in sliding window MFE computations (fixes occasional backtracing issues in comparative sliding-window MFE computations)

  • API: Make vrna_sc_t.type attribute a constant

  • API: Remove upper-triangular hard constraint matrix in favor of full matrix

  • API: Always ensure sane base pair span settings after vrna_fold_compound_prepare()

  • API: Return INF on predictions of vrna_mfe_dimer() that fail due to unsatisfiable constraints

  • API: Rename internally used hard and soft constraints API symbols

  • API: Fix header file inclusions to prevent #include cycles

  • SWIG: Add wrapper for vrna_file_fasta_read_record()

  • SWIG: Fix memory leak in wrapper for vrna_probs_window()

  • SWIG: Refactor and therefore fix soft constraint binding functions for use in comparative structure predictions

  • SWIG: Fix typo that prevented properly wrapping vrna_params_load_RNA_Andronescu2007()

  • SWIG: Unify wrappers for vrna_ptable() and vrna_ptable_from_string()

Package

  • REFMAN: Refactored structure annotation documentation

  • REFMAN: Update Mac OS X install section

  • Replace DEF placeholders in energy parameter files with their value of -50

  • Update RNAlocmin subpackage to properly compile with more stringent C++ compilers

  • Update RNAforester subpackage to properly compile with more stringent C++ compilers

  • Update autotools framework, e.g. checks for pthreads

  • Update universal binary build instructions for Mac OS X builds to enable ARM compilation for M1 CPUs

Version 2.4.17 (Release date: 2020-11-25)

Programs

  • Fix RNAup -b mode with shorter sequence first

  • Add --backtrack-global option to RNALfold (currently only available for dangles == 2 | 0)

  • Add --zscore-pre-filter and --zscore-report-subsumed options to RNALfold

Library

  • API: Fix multiloop backtracing with soft constraints for unpaired positions in vrna_subopt() and vrna_subopt_cb()

  • API: Fix parameter parse in vrna_params_load_from_string()

  • API: Add vrna_heat_capacity() and vrna_head_capacity_cb() functions to RNAlib

  • API: Add backtracing function vrna_backtrack_window() for global MFE structure to sliding-window predictions

  • API: Add SVG support for RNApuzzler structure layouts

  • API: Make vrna_md_t argument to vrna_fold_compound() a constant pointer

  • API: Remove missing symbols from header file ViennaRNA/params/default.h

  • API: Refactor z-score threshold filter handling for sliding-window MFE prediction

  • SWIG: Fix typo in interface functions to load DNA parameters

  • SWIG: Add python-3.9 autoconf checks

  • SWIG: Add vrna_head_capacity*() wrappers

  • SWIG: Add access to raw energy parameters

  • SWIG: Add alias and pair attribute to objects of type md

  • SWIG: Add out/varout typemaps for 2-dimensional int-like arrays

  • SWIG: Add all data fields to objects of type ‘param’ and ‘exp_param’

Package

  • Fix Debian and Windows installer files

Version 2.4.16 (Release date: 2020-10-09)

Programs

  • Fix backtracing errors in RNALalifold for alignments with more than 32768 columns

  • Fix backtracing errors in RNAalifold and RNALalifold for rare cases when two alignment columns may pair due to covariance score threshold but still yield infinite energies due to energy model

  • Refactored manpages/help options for RNAplfold, RNAplot, RNApvmin, RNAsubopt, and RNAup

Library

  • API: Fix undefined behavior due to short int overflows when accessing alignment lengths with alignments larger than 32768 columns. This fixes occasional backtracing errors in RNALalifold and vrna_mfe_window()

  • API: Fix adding pscore to base pairs that yield INF energy in comparative global and local MFE prediction

  • API: Add vrna_convert_kcal_to_dcal() and vice-versa function for safely converting integer to float representations of energy values

  • SWIG: Add a reasonable Python interface for objects of type vrna_path_t

  • SWIG: Add a wrapper for vrna_seq_encode()

Package

  • Move units.h include file to ViennaRNA/utils/units.h

Version 2.4.15 (Release date: 2020-08-18)

Programs

  • Fix compilation of Kinfold with GCC 10

  • Add --en-only flag to RNAsubopt to allow for sorting by energy only

  • Prevent RNAcofold to process input with more than two strands

  • Add cutpoint marker to dot-plots created with RNAcofold -a

  • Update Kinfold to version 1.4

Library

  • API: Fix removal of strand delimiter in vrna_plot_dp_PS_list()

  • API: Fix vrna_enumerate_necklaces()

  • API: Fix bogus backtracing for co-folded structures in vrna_subopt() and vrna_subopt_cb()

  • API: Fix storing co-folded structures for sorted output in vrna_subopt()

  • API: Fix multibranch loop component hard constraints for multi-strand cases

  • API: Prevent adding internal loop energy contributions to enclosed parts with energy=INF

  • API: Adapt vrna_db_pack()/vrna_db_unpack() functions to produce comparable strings

  • API: Add sorting modes VRNA_UNSORTED, VRNA_SORT_BY_ENERGY_LEXICOGRAPHIC_ASC, and VRNA_SORT_BY_ENERGY_ASC to vrna_subopt()

  • API: Add vrna_strjoin() function

  • API: Add missing case to external loop hard constraints

  • API: Make hard constrains strand-aware

  • SWIG: Fix invalid memory access when using MEA_from_plist() in Perl 5 or Python

  • SWIG: Enable keyword argument features in Python interface of constructors for fold_compound, md, move, param, and exp_param objects

  • SWIG: Enable autodoc feature for Python interface of constructors for fold_compound, md, and move objects

  • SWIG: Enable toString conversion for Python interface for objects of type fold_compound, md, move, params, exp_params, and subopt_solution

  • SWIG: Add (read-only) attributes type, length, strands, params, and exp_params to objects of type fold_compound

  • SWIG: Make attributes of objects of type param and exp_param read-only

  • Add array of strand nicks to EPS dot plot files instead of single cutpoint

  • Draw separator line for each strand nick in EPS dot-plots

  • Update libsvm to version 3.24

Package

  • Disable Link-Time-Optimization (LTO) for third-party programs linking against RNAlib using pkg-config

  • TESTS: Fix results dir path for out-of-tree builds

  • TESTS: Set default timeout for library tests to 20s

Version 2.4.14 (Release date: 2019-08-13)

Programs

  • Fix RNApvmin pertubation vector computation

  • Add non-redundant sampling option to RNApvmin

  • Add RNAdos program to compute density of states

  • Add -P DNA convenience command line parameter to most programs to quickly load DNA parameters without any input file

  • MAN: Add example section to man-page of RNAalifold

Library

  • API: Fix memory leak in vrna_path_gradient()

  • API: Fix release of memory fir vrna_sequence_remove_all()

  • API: Fix soft-constraints application in vrna_sc_minimize_pertubation() that prevented proper computation of the pertubation vector

  • API: Add 5’ and 3’ neighbor nucleotide encoding arrays and name string to vrna_seq_t

  • API: Add new data structure for multiple sequence alignments

  • API: Add vrna_sequence_order_update() function

  • API: Add non-redundant sampling mode to vrna_sc_minimize_pertubation() through passing negative sample-sizes

  • API: Add v3.0 API functions for maximum expected accuracy (MEA) computation

  • API: Include energy parameter sets into RNAlib and provide functions to load them at runtime

  • API: Prepare sequence data in vrna_fold_compound_t with vrna_sequence_add()

  • API: Use vrna_pbacktrack_num() instead of vrna_pbacktrack() in vrna_sc_minimize_pertubation() to speed-up sample generation

  • Reduce use of global variable cut_point in RNAlib

  • SWIG: Use importlib in favor of imp to determine Python 3 tag extension

  • SWIG: Update various wrapper functions

  • SWIG: Add wrappers for MEA computation with vrna_MEA() and vrna_MEA_from_plist

  • SWIG: Add wrappers for vrna_pr_structure() and vrna_pr_energy()

Package

  • REFMAN: Fix LaTeX code in units.h that prevented proper compilation with pdflatex

  • Add an R script to create 2D landscape plots from RNA2Dfold output

  • Add gengetopt to configure-time requirements to build man-pages

  • Add new energy parameter file rna_misc_special_hairpins.par with additional UV-melting derived parameters for Tri- and Tetra-loops

  • Update RNA Tutorial

  • Colorize final configure script message

  • REFMAN: Always use pdflatex to compile reference manual and tutorial

  • EXAMPLES: Add Python script that performs computations equivalent to RNAfold -p --MEA

Version 2.4.13 (Release date: 2019-05-30)

Programs

  • Fix centroid structure prediction for RNAcofold

  • Fix --noLP option for RNALalifold

Library

  • API: Refactor and fix collision handling in vrna_hash_table_t

  • API: Fix one access using wrong index for odd dangles in loops/external.c

  • API: Add two missing MLbase contributions for MFE prediction in loops/multibranch.c

  • API: Refactor multiloop MFE backtracking for odd dangles

  • API: Add function vrna_backtrack5() to allow for MFE backtracking of sub-sequences starting at the 5’-end

  • API: Reduce usage of global macro TURN by replacing it with min_loop_size field of vrna_md_t

  • API: Add functions vrna_path_direct() and vrna_path_direct_ub() that may also return move lists instead of dot-bracket lists

  • API: Add functions vrna_pt_pk_remove() and vrna_db_pk_remove() that remove pseudoknots from an input structure

  • API: Fix invalid memory access for lonely pair mode (--noLP) in comparative sliding-window MFE prediction

  • SWIG: Fix access to global variable pf_smooth and pf_smooth attribute in model_details object

  • SWIG: Fix Python reference counting for Py_None in interfaces/findpath.i wrapper

  • SWIG: Refactor reference counting for all Python2 and Python3 wrappers

  • REFMAN: Larger updates and restructuring of reference manual

Package

  • Install example scripts and source code files, e.g. to $prefix/share/ViennaRNA/examples

  • Properly pass GSL, PTHREADS, and MPFR flags to sub-projects

  • Fix RNApuzzler header file installation

  • SWIG: Include Python 3.7 and 3.8 in list of autoconf-probed python interpreters

  • SWIG: Fix wrapper building for swig >= 4.0.0

Version 2.4.12 (Release date: 2019-04-16)

Programs

  • Add non-redundant stochastic backtracing option for RNAalifold

  • Add --noDP option to suppress dot-plot output in RNAfold and RNAalifold

  • Add RNApuzzler (4) and RNAturtle (3) secondary structure layout algorithm options to RNAfold and RNAplot

  • Update help/man page of RNALfold

  • Allow for multiple input files and parallel input processing in RNAheat

Library

  • API: Fix declaration of vrna_move_apply_db()

  • API: Fix vrna_path() lexicographical ordering in gradient walks

  • API: Enable non-redundant stochastic backtracing for comparative structure prediction

  • API: Enable stochastic backtracing for circular comparative structure prediction

  • API: Enable stochastic backtracing of subsequences (5’ prefixes) for comparative structure prediction

  • API: Add pf_smooth attribute to vrna_md_t data stucture to allow for disabling Boltzmann factor energy smoothing

  • API: Add functions to allow for resuming non-redundant stochastic backtracing

  • API: Add functions to retrieve multiple stochastically backtraced structures (list and callback variants)

  • API: Add vrna_positional_entropy to compute vector of positional entropies

  • API: Add RNApuzzler and RNAturtle secondary structure layout algorithm (Wiegreffe et al. 2018)

  • API: Add v3.0 API for secondary structure layout/coordinate algorithms

  • API: Add more helper/utility functions for vrna_move_t data structures

  • API: Add callback-based neighborhood update function for (subsequent) vrna_move_t application

  • API: Add abstract heap data structure available as <ViennaRNA/datastructures/heap.h>

  • API: Refactor and speed-up gradient walk implementation available as vrna_path_gradient()

  • API: Substitute vrna_file_PS_aln_sub() alignment plot function by vrna_file_PS_aln_slice() that actually slices out a sub-alignment

  • API: Rename vrna_annotate_covar_struct() to vrna_annotate_covar_db() and add new function vrna_annotate_covar_db_extended() to support more bracket types

  • API: Calling vrna_params_reset() now implies a call to vrna_exp_params_reset() as well

  • API: Move landscape implementations into separate directory, thus headers should be included as <ViennaRNA/landscape/move.h>, <ViennaRNA/landscape/neighbor.h>, etc.

  • Ensure proper rescaling of energy parameters upon temperature changes

  • Refactor soft constraints implementation in stochastic backtracing

  • SWIG: Wrap all non-redundant stochastic backtracing functions to scripting language interface(s)

  • SWIG: Refactor stochastic backtracing interface(s)

  • SWIG: Add proper constructor for objects of type vrna_ep_t

  • SWIG: Sanitize alignment plot function interface(s)

Package

  • Update Ubuntu/Debian and OpenSUSE build instructions

  • Reduce intra-package dependency on non-v3.0 API

Version 2.4.11 (Release date: 2018-12-17)

Programs

  • Add --commands option to RNAsubopt

  • Add non-redundant Boltzmann sampling mode for RNAsubopt

Library

  • API: Fix wrong access to base pair soft constraints in equilibrium probability computations

  • API: Fix behavior of vrna_nucleotide_encode() with lowercase characters in sequence

  • API: Fix behavior of encode_char() with lowercase characters in sequence

  • API: Fix forbidden GU pairs behavior in pscore computation for comparative folding

  • API: Fix potential errors due to uninitialized next pointers in vrna_move_t of vrna_eval_move_shift_pt

  • API: Add AVX 512 optimized version of MFE multibranch loop decomposition

  • API: Add functions for CPU SIMD feature detection

  • API: Add dispatcher to automatically delegate exterior-/multibranch loop MFE decomposition to supported SIMD optimized implementation

  • API: Add function vrna_dist_mountain() to compute mountain distance between two structures

  • API: Add function vrna_ensemble_defect() to compute ensemble defect given a target structure

  • API: Add non-redundant Boltzmann sampling

  • API: Change behavior of vrna_cstr_free() and vrna_cstr_close() to always flush output before unregistering the stream

  • SWIG: Add interface for vrna_loopidx_from_ptable()

Package

  • Activate compilation for compile-time supported SIMD optimized implementations by default

  • Replace --enable-sse configure script option with --disable-simd

Version 2.4.10 (Release date: 2018-09-26)

Programs

  • Fix wrong output filename for binary opening energies in RNAplfold

  • Enable G-Quadruplex support for partition function computation in RNAalifold

Library

  • Fix broken SSE4.1 support for multibranch loop MFE computation that resulted in increased run times

  • Fix redundant output issue in subopt backtracking with unusually high delta energies (>=INF)

  • Restore default behavior of ‘|’ symbol in dot-bracket hard constraint strings that got lost with version 2.2.0

  • Add faster (cache-optimized) version of Nussinov Maximum Matching algorithm

  • Change default linker- and loop length computations for G-Quadruplex predictions in comparative prediction modes

  • Add hard constraints warning for base pairs that violate the min_loop_size of the model

  • Update libsvm to version 3.23

  • API: Add functions to set auxiliary grammar extension rules

  • API: Replace upper-triangular hard constraints matrix with full matrix for cache-optimized access

  • API: Add G-Quadruplex prediction support for comparative partition function

  • API: Remove VRNA_GQUAD_MISMATCH_PENALTY and VRNA_GQUAD_MISMATCH_NUM_ALI macros

  • SWIG: Fix invalid memory access in subopt() method of fold_compound object when writing to file

  • SWIG: Add wrapper for Nussinov Maximum Matching algorithm

Package

  • Add -ftree-vectorize compile flag by default if supported

Version 2.4.9 (Release date: 2018-07-11)

Programs

  • Fix interactive mode behavior for multiple sequence alignment input in RNAalifold, RNALalifold

  • Allow for Stockholm formatted multiple sequence alignment input in RNAeval and RNAplot

  • Allow for multiple input files in RNAeval and RNAplot

  • Allow for parallel processing of input batch jobs in RNAeval and RNAplot

  • Add -g option to activate G-Quadruplex support in RNAheat

  • Warn on unsatisfiable hard constraints from dot-bracket string input in RNAfold, RNAcofold, and RNAalifold

Library

  • Fix parameter order bug in vrna_path_findpath* functions that resulted in too large search widths

  • Fix wrong application of base pair soft constraints in partition function computations

  • Fix position ruler string in EPS alignment output files

  • Fix MFE backtracking errors that might appear under specific hard constrained base pair patterns

  • Refrain from reading anything other than #=GC SS_cons to retrieve structures when parsing Stockholm 1.0 format

  • Complete soft constraints additions to Boltzmann sampling implementation for single sequences

  • Allow for disabling alignment wrapping in vrna_file_PS_aln* functions

  • Do not remove G-Quadruplex annotation from WUSS formatted structure strings upon calls to vrna_db_from_WUSS

  • Enable G-Quadruplex related average loop energy correction terms in verbose output of vrna_eval_* functions

  • Speed-up backward compatibility layer for energy evaluation functions that unnecessarily slowed down third-party tools using the old API

  • Allow for passing dot-bracket strings with '&' strand-end identifier to simple vrna_eval_* functions

  • Remove implicit exit() calls from global MFE backtracking implementation.

Version 2.4.8 (Release date: 2018-06-23)

Programs

  • Fix compilation of RNAforester with C++17 standard

  • Fix tty input detection in RNAcofold

  • Fix bad memory access with RNAcofold -p

Library

  • API: Fix incorrect unpaired probability computations in vrna_probs_window()

  • API: Fix potential out-of-bounds access situations (for circular RNA folding) in eval.c

  • API: Fix comparative exterior internal loop partition function computation for circfold

  • SWIG: Fix false-positive use of uninitialized value in Python3/file_py3.i

Package

  • TESTS: Add tests for special features in RNAalifold

  • TESTS: Add test case for RNAcofold -p

Version 2.4.7 (Release date: 2018-06-13)

  • Allow for parallel processing across multiple input files in RNAfold

  • Allow for arbitrary number of input files in RNAalifold

  • Allow for parallel processing of input data in RNAalifold

  • Allow for arbitrary number of input files in RNAcofold

  • Allow for parallel processing of input data in RNAcofold

  • Enable parallel processing in RNAfold, RNAcofold, RNAalifold for MS Windows build

  • Add centroid and MEA structure computation to RNAcofold

  • Add configure time check for LTO capabilities of the linker

  • Include ligand binding energies in centroid and MEA structure output of RNAfold

  • Refactor ct2db program to process multiple structures from single .ct file

  • API: Enable processing of comparative fold_compound with vrna_pr_*() functions

  • API: Refactor vrna_ostream_t to enable NULL input in vrna_ostream_provide()

  • API: Major refactoring in loop energy evaluations (MFE and PF)

  • API: Make vrna_mx_pf_aux_el_t and vrna_mx_pf_aux_ml_s opaque pointers

  • API: Make fold_compound field type a const attribute

  • API: Refactor MFE post-processing for circular RNAs

  • API: Add motif name/id support for unstructured domains

  • API: Remove major part of implicit exit() calls in RNAlib

  • API: Add implementations of Boyer-Moore-Horspool search algorithm

  • API: Add implementations to determine number of rotational symmetry for strings (of objects)

  • API: Make vrna_cmd_t an opaque pointer

  • API: Move headers for constraints, datastructures, io, loop energy evaluation, energy parameters, plotting, search, and utilities into separate subdirectories (backward compatibility is maintained)

  • API: Add hash table data structure

  • API: Fix discrepancy between comparative and single sequence –noLP predictions

  • API: Add functions to replace ‘old API’ interface of RNAstruct.h

  • API: Add functions to replace ‘old API’ interface of aln_util.h

  • API: Add generic soft constraints support to suboptimal structure prediction sensu Wuchty et al.

  • SWIG: Refactor callback execution for Python 2 / 3 interface to reduce overhead

  • SWIG: Fix configure-time check for Python 3 interface build

  • SWIG: Fix Python 3 IO file stream to C FILE * conversion

  • Cosmetic changes in final configure notice

  • Major changes in source tree structure of the library

  • Add autoconf checks for maintainer tools

  • Generate C strings from static PostScript files at configure time (for structure- and dot plots)

  • REFMAN: Large updates in API documentation and structure of reference manual

Version 2.4.6 (Release date: 2018-04-19)

  • Stabilize rounding of free energy output in RNAalifold

  • API: Fix potential rounding errors for comparative free energies in eval.c and mfe.c

  • API: Fix regression in exterior loop dangling end contributions for comparative base pair probabilities and Boltzmann sampling (introduced with v2.4.4)

  • API: Fix regression with hard constrained base pairs for comparative structure prediction (introduced with v2.4.4)

  • TESTS: Add basic tests for RNAalifold executable

  • TESTS: Ignore ‘frequency of MFE structure’ in RNAcofold partition function checks

Version 2.4.5 (Release date: 2018-04-17)

  • Allow for arbitrary number of input files in RNAfold

  • Allow for parallel processing of input data in RNAfold (UNIX only, no Windows support yet)

  • Add SHAPE reactivity support through commandline options for RNAplfold

  • Fix unstructured domain motif detection in MFE, centroid, and MEA structures computed by RNAfold

  • Limit allowed set of commands in command file for RNAcofold to hard and soft constraints

  • API: Add functions to compute equilibrium probability of particular secondary structures

  • API: Add dynamic string stream data type and associated functions

  • API: Add priority-queue like data structure with unordered fill capability and ordered output callback execution

  • API: Add functions to detect unstructured domain motifs in MFE, centroid, and MEA structures

  • API: Fix bug in sliding-window partition function computation with SHAPE reactivity and Deigan et al. conversion method

  • API: Fix application of ‘<’ and ‘>’ constraint symbols in dot-bracket provided constraints (was broken since v2.4.2)

  • API: Fix MEA structure computation in the presence of unstructured domains

  • API: Stabilize order of probability entries in EPS dot-plot files

  • Fix compiler warnings on wrong type of printf() in naview.c

  • Define VRNA_VERSION macro as string literal and add macros for major, minor, and patch numbers

  • Stabilize parallel make of Mac OS X installer

  • Add energy parameter set from Langdon et al. 2018

  • Add autoconf checks for POSIX threads compiler/linker support

  • SWIG: Fix ‘next’ is a perl keyword warnings for Perl5 wrapper

  • SWIG: Catch errors and throw execptions whenever scripting language provided callback functions are not applicable or fail

  • SWIG: Add keyword arguments and autodoc feature for Python/Python3 wrappers

Version 2.4.4 (Release date: 2018-03-06)

  • Change verbose output for soft-constraints derived ligand binding motifs in RNAfold

  • Allow for lowercase letters in ct2db input

  • Fix bug in interior-like G-Quadruplex MFE computation for single sequences

  • Fix autoconf switch to enable deprecation warnings

  • Fix bug in eval_int_loop() that prevented propagation of energy evaluation for loops with nick in strands

  • Fix several bugs for SHAPE reactivity related comparative partition function computations

  • Fix annotation of PostScript output for soft-constraint derived ligand binding motifs in RNAfold

  • Fix constraint indices for multibranch loops in unpaired probability computations of LPfold.c

  • Fix dangling end contributions in comparative partition function for exterior loops

  • API: Add simplified interface for vrna_pf_dimer()

  • API: Move concentraton dependent implementation for co-folding to separate compile unit

  • API: Add new API functions for exterior loop evaluations

  • API: Add simplified interfaces for energy evaluation with G-Quadruplexes and circular RNAs

  • API: Add findpath functions that allow for specification of an upper bound for the saddle point

  • Add configure-time linker check for Python3 interface

  • Add automatic CPP suggestions for deprecated function substitutes

  • Major restucturing and constraints feature additions in loop type dependent energy evaluation functions

  • Major restructuring in MFE implementations

  • Major restructuring in PF implementations

  • Minor fixes in Boltzmann sampling implementation

  • SWIG: Fix wrappers for findpath() implementation

  • SWIG: Add tons of energy evaluation wrappers

  • SWIG: Fix configure-time check of Perl5 interface build capabilities

  • SWIG: Wrap functions from walk.c and neighbor.c

  • DOC: Add some missing references to manpages of executable programs

  • REFMAN: Heavy re-ordering of the RNAlib reference manual

Version 2.4.3 (Release date: 2017-11-14)

  • Fix handling of dangling end contribution at sequence boundaries for sliding window base pair probability computations

  • Fix handling of base pair hard constraints in sliding-window implementations

  • Fix sliding-window pair probability computations with multibranch-loop unpaired constraints

  • Fix sliding-window non-specific base pair hard constraint implementation

  • Fix probability computation for stochastic backtracking in RNAsubopt –stochBT_en output

  • Fix regression in comparative structure prediction for circular RNAs

  • Fix LDFLAGS for scripting language interfaces in corresponding Makefiles

  • Stabilize partition function scaling by always using sfact scaling factor from model details

  • Add –pf_scale commandling parameter to RNAplfold

  • Add constraint framework for single sequence circular RNA structure prediction

  • Add RNAfold test suite to check for working implementation of constraints for circular RNAs

  • Add a brief contribution guideline CONTRIBUTING.md

  • Prevent RNAplfold from creating inf/-inf output when solution set is empty with particular hard constraints

  • Include RNAforester v2.0.1

Version 2.4.2 (Release date: 2017-10-13)

  • Fix G-Quadruplex energy corrections in comparative structure energy evaluations

  • Fix discrepancy in comparative exterior loop dangling end contribution of eval vs. MFE predictions

  • Fix regression in RNAup unstructuredness and interaction energy computations

  • Fix sequence length confusions when FASTA input contains carriage returns

  • Fix build problems of RNAlocmin with older compilers

  • Fix sliding-window hard constraints where single nucleotides are prohibited from pairing

  • Fix dot-bracket output string length in sliding-window MFE with G-Quadruplexes

  • Fix unpaired probability computations for separate individual loop types in LPfold.c

  • Fix bad memory access in RNAsubopt with dot-bracket constraint

  • Add full WUSS support for –SS_cons constraint option in RNAalifold

  • Add commandline option to RNALalifold that enables splitting of energy contributions into separate parts

  • Add missing hard constraint cases to sliding-window partition function implementation

  • Add CSV output option to RNAcofold

  • Use the same model details for SCI computations in RNAalifold

  • Abort computations in vrna_eval_structure_v() if structure has unexpected length

  • Use original MSA in all output generated by RNAalifold and RNALalifold

  • API: Add new functions to convert dot-bracket like structure annotations

  • API: Add various new utility functions for alignment handling and comparative structure predictions

  • API: Add function vrna_strsplit() to split string into tokens

  • API: Do not convert sequences of input MSA to uppercase letters in vrna_file_msa_read_record()

  • API: Rename vrna_annotate_bp_covar() and vrna_annotate_pr_covar()

  • API: Add new noLP neighbor generation

  • SWIG: Add wrapper for functions in file_utils_msa.h

  • SWIG: Add wrappers for vrna_pbacktrack() and vrna_pbacktrack5()

  • SWIG: Add vrna_db_to_element_string() to scripting language interface

  • REFMAN: Fix formula to image conversion in HTML output

Version 2.4.1 (Release date: 2017-08-23)

  • Fix memory leak in fold_compound methods of SWIG interface

  • Fix memory leaks in double ** returning functions of SWIG Perl5 interface

  • Fix memory leak in vrna_ep_t to-string() function of SWIG interface

  • Regression: Fix reverting pf_scale to defaults after vrna_exp_params_rescale()

  • Regression: Fix homo-dimer partition function computation in RNAcofold

  • Add unit tests for RNAcofold executable

  • Add SHAPE reactivity support to RNAcofold

  • Add SHAPE reactivity support to RNALalifold

Version 2.4.0 (Release date: 2017-08-01)

  • Bump libsvm to version 3.22

  • Print G-Quadruplex corrections in verbose mode of RNAeval

  • Change behavior of RNAfold –outfile option to something more predictable

  • Unify max_bp_span usage among sliding window prediction algorithms: RNAplfold, RNALfold, and RNALalifold now consider any base pair (i,j) with (j - i + 1) <= max_bp_span

  • Add SHAPE reactivity data support to RNALfold

  • Add commands-file support for RNALfold, RNAplfold (hard/soft constraints)

  • Add RNAlocmin - Calculate local minima from structures via gradient walks

  • Add RNA Bioinformatics tutorial (PDF version)

  • Add hard constraints to sliding-window MFE implementations (RNALfold, RNALalifold)

  • Add hard constraints to sliding-window PF implementations (RNAplfold)

  • Add soft constraints to sliding-window MFE implementation for single sequences (RNALfold)

  • Add soft constraints to sliding-window PF implementations (RNAplfold)

  • Add SWIG interfaces for sliding-window MFE/PF implementations

  • Add proper SWIG interface for alignment and structure plotting functions

  • Add proper SWIG interface for duplexfold, duplex_subopt, and its comparative variants

  • Add SWIG wrapper for vrna_exp_params_rescale()

  • Add explicit destructor for SWIG generated vrna_md_t objects

  • Add SWIG perl5 typemap for simple nested STL vectors

  • Add dummy field in vrna_structured_domains_s

  • Add note about SSE optimized code in reference manual

  • Add SWIG interface for findpath implementation

  • Add prepare() functions for ptypes-arrays and vrna_(exp_)param_t

  • Add warnings for ignored commands in function vrna_commands_apply()

  • Add callback featured functions for sliding window MFE and PF implementations

  • Change default behavior of adding soft constraints to a vrna_fold_compound_t (store only)

  • Several fixes with respect to G-Quadruplex prediction in sliding-window MFE recursions (single sequence and comparative implementation)

  • Replace comparative sliding-window MFE recursions (All hits are reported to callback and can be filtered in a post-processing step)

  • API: Remove E_mb_loop_stack() and introduce new function vrna_E_mb_loop_stack() as a replacement

  • API: change data type of all constraint bit-flags from char to unsigned char

  • API: change data type of a2s array in comparative structure prediction from unsigned short to unsigned int

  • API: Change function parameter order in vrna_probs_window() to follow the style of other callback-aware functions in RNAlib

  • Move sliding-window MFE implementations to new file mfe_window.c

  • Fix building PDF Reference manual with non-standard executable paths

  • Fix redefinition of macro ON_SAME_STRAND() in subopt.c

  • Fix dangling end issues in sliding-window MFE implementations

  • Fix regression for –canonicalBPonly switch in RNAfold/RNAcofold/RNAsubopt

  • Fix building sliding-window MFE implementation without SVM support

  • Fix parsing of STOCKHOLM 1.0 MSA files that contain MSA spanning multiple blocks

  • Fix Alidot link in RNAalifold manpage

  • Fix wrong pre-processor flags when enabling single-precision PF computations

  • Fix unit testing perl5 interface by including builddir/tests in PERL5LIB path

  • Fix buffer overflow in hairpin loop sequence motif extraction for circular RNAs

  • Fix out-of-bounds memory access in neighbor.c

  • Restore capability to compile stand-alone findpath utility

  • Restore capability to use non-standard alphabets for structure prediction

  • Restore old-API random number functions in SWIG interface

  • Allow additional control characters in MAF MSA input that do not end a block

  • Improve reference manual

  • Make functions in pair_mat.h static inline

  • Prevent users from adding out-of-range base pair soft constraints

  • Inline print functions in color_output.inc

  • Start documenting callback features in reference manual

  • Re-write large portions of sliding-window PF implementation

  • Introduce soft-constraint state flag

  • Clean-up SWIG unit test framework

  • Remove obsolete scripts ct2b.pl and colorrna.pl from src/Utils directory

  • Remove old RNAfold tutorial

Version 2.3.x

Version 2.3.5 (Release date: 2017-04-14)

  • Fix duplication of output filename prefix in RNAfold

  • Add V3.0 API for sliding window partition function (a.k.a. RNAPLfold)

  • Add G-Quadruplex prediction to RNALalifold

  • Add SWIG wrappers for callback-based sliding window comparative MFE prediction

  • Add SSE4.1 multiloop decomposition for single sequence MFE prediction

  • Enable RNAfold unit tests to run in paralllel

  • Enable users to turn-off base pair probability computations in RNAcofold with -a option

  • Split move set in neighbor.c

Version 2.3.4 (Release date: 2017-03-10)

  • Fix G-Quadruplex probability computation for single sequences

  • Fix double-free when using SHAPE reactivity data in RNAalifold

  • Fix out-of-bounds access in strand_number array

  • Fix weighting of SHAPE reactivity data in consensus structure prediction when fewer data than sequences are present

  • Fix z-score output in RNALfold

  • Substitute field name ‘A0’/’B0’ in data structure vrna_dimer_conc_s by ‘Ac_start’/’Bc_start’ to avoid clashes with termios.h (Mac OSX Python wrapper bug)

  • Minimize usage of ‘unsafe’ sprintf() calls

  • Enhance auto-id feature in executable programs

  • Always sanitize output file names to avoid problems due to strange FASTA headers

  • Lift restrictions of FASTA header length in RNAfold, RNAcofold, and RNAeval

  • Add ViennaRNA/config.h with pre-processor definitions of configure time choices

  • Add test-suite for RNAfold

  • Add functions to procude colored EPS structure alignments

  • Add function to write Stockholm 1.0 formatted alignments

  • Add function to sanitize file names

  • Add callback based implementation for sliding-window MFE prediction (single sequences, comparative structure prediction)

  • Add fast API 3.0 implementations to generate structural neighbors and perform steepest descent / random walks (Thanks to Gregor!)

  • Add parameter option to RNALalifold for colored EPS structure alignment and structure plot output

  • Add parameter option to RNALalifold to write hits into Stockholm file

  • Add parameter option to RNAalifold to write Stockholm 1.0 formatted output

  • Add parameter option to RNAalifold to suppress stderr spam

  • Add auto-id feature to RNAplot, RNALfold, RNAsubopt, RNAplfold, RNAheat

  • Add SHAPE reactivity derived pseudo-energies as separate output in RNAalifold

  • Add colored output to RNA2Dfold, RNALalifold, RNALfold, RNAduplex, RNAheat, RNAinverse, RNAplfold, and RNAsubopt

  • Add command line parameters to RNAsubopt to allow for specification of input/output files

Version 2.3.3 (Release date: 2017-01-24)

  • Fix multiloop contributions for comparative partition function

  • Fix building python2 extension module for OSX

Version 2.3.2 (Release date: 2017-01-18)

  • Fix pair probability plist creation with G-Quadruplexes

  • Allow for specification of python2/3-config at configure time

  • Fix init of vrna_md_t data structure after call to set_model_details()

  • Fix bug in consensus partition function with hard constraints that force nucleotides to be paired

  • Fix compilation of functions that use ellipsis/va_list

  • Enable generic hard constraints by default

  • Fix init of partition function DP matrices for unusually short RNAs

  • Fix behavior of RNAplfold for unusually short RNAs

  • Report SCI of 0 in RNAalifold when sum of single sequence MFEs is 0

  • Avoid multiple includes of pair_mat.h

  • Add configure flag to build entirely static executables

Version 2.3.1 (Release date: 2016-11-15)

  • Add description for how to use unstructured domains through command files to reference manual and RNAfold manpage

  • Fix compilation issue for Windows platforms with MingW

  • Add missing newline in non-TTY-color output of vrna_message_info()

  • Fix regression in vrna_md_update() that resulted in incomplete init of reverse-basepair type array

  • Extend coverage of generic hard constraints for partition function computations

  • Fix scaling of secondary structure in EPS plot such that it always fits into bounding box

  • Several fixes and improvements for SWIG generated scripting language interface(s)

Version 2.3.0 (Release date: 2016-11-01)

  • Add grammar extension with structured and unstructured domains

  • Add default implementation for unstructured domains to allow for ligand/protein binding to unpaired structure segments (MFE and PF for single sequences)

  • Introduced command files that subsume constraint definition files (currently used in RNAfold and RNAcofold)

  • Replace explicit calls to asprintf() with portable equivalent functions in the library

  • Fix configure script to deal with situations where Perl module can’t be build

  • Fix bug in doc/Makefile.am that prevented HTML installation due to long argument list

  • Added utility functions that deal with conversion between different units

  • Bugfix in SWIG wrapped generic soft constraint feature

  • Add subopt() and subopt_zuker() methods to SWIG wrapped fold_compound objects

  • Bugfix multiloop decomposition in MFE for circular RNAs

  • Add separate function to compute pscore for alignments

  • Renamed VRNA_VC_TYPE_* macros to VRNA_FC_TYPE_*

  • Bugfix regression that prevented programs to fail on too long input sequences

  • Extend EPS dot-plot in RNAfold to include motif/binding probabilities from unstructured domains

  • Add variadic functions for error/warning/info message

  • Add ID manipulation feature to RNAeval

  • Extend API for soft constraint feature for more fine-grained control

  • Add section on SWIG wrapped functions in reference manual

  • Fix bug in interior loop computations when hard constraints result in non-canonical base pairs

Version 2.2.x

Version 2.2.10 (Release date: 2016-09-06)

  • Do not ‘forget’ subopt results when output is not written to file handle and sorting is switched off

  • Fix bad memory access in vrna_subopt() with sorted output

  • Add SWIG wrappers for vrna_subopt_cb()

  • Correctly show if C11 features are activated in configure status

  • Fix autoconf checks to allow for cross compilation again

Version 2.2.9 (Release date: 2016-09-01)

  • Fix bug in partition function scaling for backward compatibility of ali_pf_fold()

  • Stabilize v3.0 API when building RNAlib and third party program linking against it with compilers that use different C/C++ standards

  • Add details on how to link against RNAlib to the reference manual

  • Fix RNAlib2.pc

  • Fix bug for temperature setting in RNAplfold

  • Use -fflat-lto-objects for static RNAlib library to allow linking without LTO

  • Fix interpretation of ‘P’ hard constraint for single nucleotides in constraint definition files

  • Add ‘A’ command for hard constraints

  • Fix several hard constraint corner-cases in MFE and partition function computation when nucleotides must not be unpaired

  • Fix order of hard constraints when read from input file

  • Allow for non-canonical base pairs in MFE and partition function computations if hard constraints demand it

  • Fix behavior of –without-swig configure script option

  • Fix bug in hard constraints usage of exterior loop MFE prediction with odd dangles

  • Add parsers for Clustal, Stockholm, FASTA, and MAF formatted alignment files

  • Enable RNAalifold to use Clustal, Stockholm, FASTA, or MAF alignments as input

  • Lift restriction of sequence number in alignments for RNAalifold

  • Enable ANSI colors for TTY output in RNAfold, RNAcofold, RNAalifold, RNAsubopt, and warnings/errors issued by RNAlib

  • Add various new commandline options to manipulate sequence/alignment IDs in RNAfold, RNAcofold and RNAalifold

Version 2.2.8 (Release date: 2016-08-01)

  • Fix bad memory access in RNAalifold

  • Fix regression in RNAalifold to restore covariance contribution ratio determination for circular RNA alignments

  • Changed output of RNAsubopt in energy-band enumeration mode to print MFE and energy range in kcal/mol instead of 10cal/mol

  • Include latest Kinfold sources that make use of v3.0 API, therefore speeding up runtime substantially

  • Re-activate warnings in RNAeval when non-canonical base pairs are encountered

  • Fix syntactic incompatibilities that potentially prevented compilation with compilers other than gcc

  • dd function to compare nucleotides encoded in IUPAC format

  • Fix regression in energy evaluation for circular RNA sequences

  • Fix regression in suboptimal structure enumeration for circular RNAs

  • Allow for P i-j k-l commands in constraint definition files

  • Make free energy evaluation functions polymorphic

  • Add free energy evaluation functions that allow for specifying verbosity level

  • Secure functions in alphabet.c against NULL pointer arguments

  • Fix incompatibility with swig >= 3.0.9

  • Fix memory leak in swig-generated scripting language interface(s) for user-provided target language soft-constraint callbacks

  • Expose additional functions to swig-generated scripting language interface(s)

  • Build Python3 interface by default

  • Start of more comprehensive scripting language interface documentation

  • Fix linking of python2/python3 interfaces when libpython is in non-standard directory

  • Restructured viennarna.spec for RPM based distributions

  • Several syntactic changes in the implementation to minimize compiler warnings

  • Fix –with-/–without- and –enable-/–disable- configure script behavior

Version 2.2.7 (Release date: 2016-06-30)

  • Fix partition function scaling for long sequences in RNAfold, RNAalifold, and RNAup

  • Fix backtracking issue in RNAcofold when –noLP option is activated

  • Fix hard constraints issue for circular RNAs in generating suboptimal structures

  • Rebuild reference manual only when actually required

Version 2.2.6 (Release date: 2016-06-19)

  • Plugged memory leak in RNAcofold

  • Fixed partition function rescaling bug in RNAup

  • Fixed bug in RNALfold with window sizes larger than sequence length

  • Re-added SCI parameter for RNAalifold

  • Fixed backtracking issue for large G-quadruplexes in RNAalifold

  • Fixed missing FASTA id in RNAeval output

  • Added option to RNAalifold that allows to specify prefix for output files

  • Several fixes and additional functions/methods in scripting language interface(s)

  • Added version information for scripting language interface(s)

  • Some changes to allow for compilation with newer compilers, such as gcc 6.1

Version 2.2.5 (Release date: 2016-04-09)

  • Fixed regression in RNAcofold that prohibited output of concentration computations

  • Fixed behavior of RNAfold and RNAcofold when hard constraints create empty solution set (programs now abort with error message)

  • Added optional Python 3 interface

  • Added RNA::Params Perl 5 sub-package

  • Update RNA::Design Perl 5 sub-package

  • Simplified usage of v3.0 API with default options

  • Wrap more functions of v3.0 API in SWIG generated scripting language interfaces

  • Plugged some memory leaks in SWIG generated scripting language interfaces

  • Changed parameters of recursion status callback in vrna_fold_compound_t

  • Enable definition and binding of callback functions from within SWIG target language

  • Added optional subpackage Kinwalker

  • Added several configure options to ease building and packaging under MacOS X

  • Added new utility script RNAdesign.pl

Version 2.2.4 (Release date: 2016-02-19)

  • Fixed bug in RNAsubopt that occasionally produced cofolded structures twice

  • Removed debugging output in preparations of consensus structure prediction datastructures

Version 2.2.3 (Release date: 2016-02-13)

  • Added postscipt annotations for found ligand motifs in RNAfold

  • Added more documentation for the constraints features in RNAfold and RNAalifold

  • Restore backward compatibility of get_alipf_arrays()

Version 2.2.2 (Release date: 2016-02-08)

  • Fix regression bug that occasionally prevented backtracking with RNAcofold –noLP

Version 2.2.1 (Release date: 2016-02-06)

  • Fix regression bug that made RNAcofold -a unusable

  • Fix regression bug that prohibited RNAfold to compute the MEA structure when G-Quadruplex support was switched on

  • Fix bug in Kinfold to enable loading energy parameters from file

  • Fix potential use of uninitialized value in RNApdist

  • Add manpage for ct2db

  • Fix MEA computation when G-Quadruplex support is activated

  • Allow for vendor installation of the perl interface using INSTALLDIRS=vendor at configure time

  • Install architecture dependent and independent files of the perl and python interface to their correct file system locations

Version 2.2.0 (Release date: 2016-01-25)

  • RNAforester is now of version 2.0

  • New program RNApvmin to compute pseudo-energy pertubation vector that minimizes discrepancy between observed and predicted pairing probabilities

  • SHAPE reactivity support for RNAfold, RNAsubopt, and RNAalifold

  • Ligand binding to hairpin- and interior-loop motif support in RNAfold

  • New commandline option to limit maximum base pair span for RNAfold, RNAsubopt, RNAcofold, and RNAalifold

  • Bugfix in RNAheat to remove numerical instabilities

  • Bugfix in RNAplex to allow for computation of interactions without length limitation

  • Bugfix in RNAplot for simple layouts and hairpins of size 0

  • (generic) hard- and soft-constraints for MFE, partition function, base pair probabilities, stochastic backtracking, and suboptimal secondary structures of single sequences, sequence alignments, and sequence dimers

  • libsvm version as required for z-scoring in RNALfold is now 3.20

  • Stochastic backtracking for single sequences is faster due to usage of Boustrophedon scheme

  • First polymorphic functions vrna_mfe(), vrna_pf(), and vrna_pbacktrack().

  • The FLT_OR_DBL macro is now a typedef

  • New functions to convert between different secondary structure representations, such as helix lists, and RNAshapes abstractions

  • First object-oriented interface for new API functions in the scripting language interfaces

  • new ViennaRNA-perl submodule that augments the Perl interface to RNAlib

  • Ligand binding to hairpin- and interior-loop motif support in C-library and scripting language interfaces.

  • Libraries are generated using libtool

  • Linking of libraries and executables defaults to use Link Time Optimization (LTO)

  • Large changes in directory structure of the source code files

Version 2.1.x

Version 2.1.9

  • Fixed integer underflow bug in RNALfold

  • Added Sequence Conservation index (SCI) option to RNAalifold

  • Fixed bug in energy evaluation of dangling ends / terminal mismatches of exterior loops and multibranch loops

  • Fixed bug in alifold partition function for circular RNAs

  • Fixed bug in alifold that scrambled backtracing with activated G-Quadruplex support

  • Fixed bug in alifold backtracking for larger G-Quadruplexes

Version 2.1.8

  • Repaired incorporation of RNAinverse user provided alphabet

  • Fix missing FASTA ID in RNAeval output

  • prevent race condition in parallel calls of Lfold()

  • Fixed memory bug in Lfold() that occured using long sequences and activated G-Quad support

  • Added latest version of switch.pl

Version 2.1.7

  • Fixed bug in RNALfold -z

  • Python and Perl interface are compiling again under MacOSX

  • Fixed handling of C arrays in Python interface

  • Added latest version of switch.pl

  • Make relplot.pl work with RNAcofold output

Version 2.1.6

  • New commandline switches allow for elimination of non-canonical base pairs from constraint structures in RNAfold, RNAalifold and RNAsubopt

  • updated moveset functions

  • final fix for discrepancy of tri-loop evaluation between partition function and mfe

  • pkg-config file now includes the OpenMP linker flag if necessary

  • New program ct2db allows for conversion of .ct files into dot-bracket notation (incl. pseudo-knot removal)

Version 2.1.5

  • Fix for discrepancy between special hairpin loop evaluation in partition functions and MFE

Version 2.1.4

  • Fix of G-quadruplex support in subopt()

  • Fix for discrepancy between special hairpin loop evaluation in partition functions and MFE

Version 2.1.3

  • RNAfold: Bugfix for ignoring user specified energy parameter files

  • RNAcofold: Bugfix for crashing upon constrained folding without specifying a constraint structure

  • RNAsubopt: Added G-quadruplex support

  • RNAalifold: Added parameter option to specify base pair probability threshold in dotplot

  • Fix of several G-quadruplex related bugs

  • Added G-quadruplex support in subopt()

Version 2.1.2

  • RNAfold: Bugfix for randomly missing probabilities in dot-plot during batch job execution

  • RNAeval: Bugfix for misinterpreted G-quadruplex containing sequences where the quadruplex starts at nucleotide 1

  • RNAsubopt: Slight changes to the output of stochastic backtracking and zuker subopt

  • Fix of some memory leaks

  • Bugfixes in zukersubopt(), assign_plist_from_pr()

  • New threadsafe variants of putoutpU_prob*() for LPfold()

  • Provision of python2 interface support.

Version 2.1.1

  • Bugfix to restore backward compatibility with ViennaRNA Package 1.8.x API (this bug also affected proper usage of the the perl interface)

Version 2.1.0

  • G-Quadruplex support in RNAfold, RNAcofold, RNALfold, RNAalifold, RNAeval and RNAplot

  • LPfold got a new option to output its computations in split-mode

  • several G-Quadruplex related functions were introduced with this release

  • several functions for moves in an RNA landscape were introduced

  • new function in alipfold.c now enables access to the partition function matrices of alipf_fold()

  • different numeric approach was implement for concentration dependend co-folding to avoid instabilities which occured under certain circumstances

Version 2.0.x

Version 2.0.7

  • Bugfix for RNAplfold where segfault happened upon usage of -O option

  • Corrected misbehavior of RNAeval and RNAplot in tty mode

Version 2.0.6

  • Bugfix for bad type casting with gcc under MacOSX (resulted in accidental “sequence too long” errors)

  • Bugfix for disappearing tri-/hexaloop contributions when read in from certain parameter files

  • Bugfix for RNALfold that segfaulted on short strange sequences like AT+ repeats

  • Change of RNA2Dfold output format for stochastic backtracking

Version 2.0.5

  • Restored z-score computation capabilities in RNALfold

Version 2.0.4

  • Bugfix for RNAcofold partition function

  • Perl wrapper compatibility to changed RNAlib has been restored

  • Backward compatibility for partition function calls has been restored

Version 2.0.3

  • Bugfix for RNAalifold partition function and base pair probabilities in v2.0.3b

  • Added Boltzmann factor scaling in RNAsubopt, RNAalifold, RNAplfold and RNAcofold

  • Bugfix for alipfold() in v2.0.3b

  • Restored threadsafety of folding matrix access in LPfold.c, alipfold.c, part_func.c, part_func_co.c and part_func_up.c

  • Added several new functions regarding threadsafe function calls in terms of concurrently changing the model details

  • Added pkg-config file in the distribution to allow easy checks for certain RNAlib2 versions, compiler flags and linker flags.

Version 2.0.2

  • added support for Boltzmann factor scaling in RNAfold

  • fixed fastaheader to filename bug

  • plugged some memory leaks

Version 2.0.1

  • First official release of version 2.0

  • included latest bugfixes

History

2011-03-10 Ronny Lorenz mailto:ronny@tbi.univie.ac.at

  • new naming scheme for all shipped energy parameter files

  • fixed bugs that appear while compiling with gcc under MacOS X

  • fixed bug in RNAup –interaction-first where the longer of the first two sequences was taken as target

  • added full FASTA input support to RNAfold, RNAcofold, RNAheat, RNAplfold RNALfoldz, RNAsubopt and RNALfold

2010-11-24 Ronny Lorenz mailto:ronny@tbi.univie.ac.at

  • first full pre-release of version 2.0

2009-11-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Fix memory corruption in PS_color_aln()

2009-09-09 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Fix bug in RNAplfold when -u and -L parameters are equal

  • Fix double call to free_arrays() in RNAfold.c

  • Improve drawing of cofolded structures

2009-05-14 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Fix occasional segfault in RNAalifold’s print_aliout()

2009-02-24 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Add -MEA options to RNAfold and RNAalifold

  • change energy_of_alistruct to return float not void

2009-02-24 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • RNAfold will draw structures unless -noPS is used (no more “structure too long” messages)

  • Restore the “alifold.out” output from RNAalifold -p

  • RNAalifold -circ did not work due to wrong return type

  • Accessibility calculation with RNAplfold would give wrong results for u<=30

2008-12-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Add zuker style suboptimals to RNAsubopt (-z)

  • get_line() should be much faster when reading huge sequences (e.g. whole chromosomes for RNALfold)

2008-08-12 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Add Ribosum matrices for covariance scoring in RNAalifold

2008-06-27 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Change RNAalifold to used berni’s new energy evaluation w/o gaps

  • Add stochastic backtracking in RNAalifold

2008-07-04 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • modify output of RNAup (again). Program reading RNAup output will have to updated!

2008-07-02 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • RNAplfold now computes accessibilities for all regions up to a max length simultaneously. Slightly slower when only 1 value is needed, but much faster if all of them are wanted. This entails a new output format. Programs reading accessibility output from RNAplfold need to be updated!

2008-03-31 Stephan Bernhart mailto:berni@tbi.univie.ac.at

  • add cofolding to RNAsubopt

2008-01-08 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • ensure circfold works even for open chain

2007-12-13 Ulli Mueckstein mailto:ulli@tbi.univie.ac.at

  • upate RNAup related files RNAup can now include the intramolecular structure of both molecules and handles constraints.

2007-12-05 Ronny Lorenz mailto:ronny@tbi.univie.ac.at

  • add circfold variants in part_func.c alipfold.c subopt.c

2007-09-19 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • compute the controid structure of the ensemble in RNAfold -p

  • fix a missing factor 2 in mean_bp_dist(). CAUTION ensemble diversities returned by RNAfold -p are now twice as large as in earlier versions.

2007-09-04 Ivo Hofacker mailto:ivo@blini.tbi.univie.ac.at

  • fix a bug in Lfold() where base number n-max-4 would never pair

2007-08-26 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add RNAaliduplex the alignment version of RNAduplex

  • introduce a minimal distance between hits produced by duplex_subopt()

2007-07-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add a loop_energy() function to compute energy of a single loop

2007-06-23 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add aliLfold() and RNALalifold, alignment variant of Lfold()

2007-04-30 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add RNAup to distribution

2007-04-15 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix segfault in colorps output (thanks to Andres Varon)

2007-03-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • avoid unnormalized doubles in scale[], big speedup for pf_fold() on very long sequences

2007-02-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • RNAalifold can now produce colored structure plots and alignment plots

2007-02-01 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Fix segfault in RNAplfold because of missing prototype

2006-12-01 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • RNAduplex would segfault when no structure base pairs are possible

2006-08-22 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add computation stacking probabilities using RNAfold -p2

  • add -noPS option for NRAfold to supress drawing structures

2006-08-09 Stephan Bernhart mailto:berni@tbi.univie.ac.at

  • RNAplfold can now compute probabilites of unpaired regions (scanning version of RNAup)

2006-06-14 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • compile library with -fpic (if available) for use as shared library in the Perl module.

  • fix another bug when calling Lfold() repeatedly

  • fix switch cmdline parsing in RNAalifold (-mis implied -4)

  • fix bug in cofold() with dangles=0

2006-05-08 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix segfault in Lfold() when calling repeatedly

  • fix structure parsing in RNAstruct.c (thanks to Michael Pheasant for reporting both bugs)

  • add duplexfold() and alifold() to Perl module

  • distinguish window size and max pair span in LPfold

2006-04-05 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix performance bug in co_pf_fold()

  • use relative error for termination of Newton iteration

2006-03-02 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add circular folding in alifold()

2006-01-18 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • cleanup berni partition cofold code, including several bug fixes

2006-01-16 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • update RNAplfold to working version

  • add PS_dot_plot_turn() in PS_dot.c

2005-11-07 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add new utilities colorna and coloraln

2005-10-11 Christoph Flamm mailto:xtof@tbi.univie.ac.at

  • adapt PS_rna_plot() for drawing co-folded structures

2005-07-24 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix a few memory problems in structure comparison routines

2005-04-30 Ivo Hofacker mailto:ivo@blini.tbi.univie.ac.at

  • add folding of circular RNAs

2005-03-11 Ivo Hofacker mailto:ivo@blini.tbi.univie.ac.at

  • add -mis option to RNAalifold to give “most informative sequence” as consensus

2005-02-10 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • move alifold() into the library

2004-12-22 Stephan Bernhart mailto:berni@tbi.univie.ac.at

  • add partition function version of RNAcofold

2004-12-23 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add RNApaln for fast structural alignments (RNApdist improvement)

2004-08-12 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix constrained folding in stochastic backtracking

2004-07-21 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add RNAduplex, to compute hybrid structures without intra-molecular pairs

2004-02-09 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • fix bug in fold that caused segfaults when using Intel compiler

  • add computation of ensemble diversity to RNAfold

2003-09-10 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add annotation options to RNAplot

2003-08-04 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • stochastic backtracking finally works. Try e.g. RNAsubopt -p 10

2003-07-18 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add relplot.pl and rotate_ss.pl utilities for reliability annotation and rotation of rna structure plots

2003-01-29 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add RNALfold program to compute locally optimal structures with maximum pair span.

  • add RNAcofold for computing hybrid structure

2002-11-07 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • change Make_bp_profile() and profile_edit_distance() to use simple (float *) arrays; makes Perl access much easier. RNApdist -B now works again

2002-10-28 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Improved Perl module with pod documentation; allow to write things like (\(structure, \)energy) = RNA::fold($seq); Compatibility warning: the ptrvalue() and related functions are gone, see the pod documentation for alternatives.

2002-10-29 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • added svg structure plots in PS_dot.c and RNAplot

2002-08-15 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • Improve reading of clustal files (alifold)

  • add a sample alifold.cgi script

2001-09-18 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • moved suboptimal folding into the library, thus it’s now accessible from the Perl module

2001-08-31 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • added co-folding support in energy_of_struct(), and thus RNAeval

2001-04-30 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • switch from handcrafted makefiles to automake and autoconf

2001-04-05 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • added PS_rna_plot_a to produce structure plots with annotation

2001-03-03 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add alifold; predict consensus structures from alignment

2000-09-28 Ivo Hofacker mailto:ivo@tbi.univie.ac.at

  • add -d3 option to RNAfold for co-axial stacking