# Post-transcriptional Base Modifications

Energy parameter corrections for modified bases.

Many RNAs are known to be (heavily) modified post-trasnciptionaly. The best known examples are tRNAs and rRNAs. To-date, more than 150 different modifications are listed in the MODOMICS database (http://genesilico.pl/modomics/) [Boccaletto et al., 2022].

Many of the modified bases change the pairing behavior compared to their unmodified version, affecting not only the pairing partner preference, but also the resulting stability of the loops the base pairs may form.

Here, we provide a simple soft constraints callback implementation to correct for some well known modified bases where energy parameters are available for. This mechanism also supports arbitrary new modified base energy parameters supplied in JSON format (see Modified Bases for details).

  Support of modified bases in secondary structure prediction.

  Defines

  VRNA_SC_MOD_CHECK_FALLBACK
    #include <ViennaRNA/constraints/soft_special.h>

    Check for sequence positions whether they resemble the fallback base.

    This flag can be used to enable a sanity check within the vrna_sc_mod*() functions to see whether a supposedly modified position actually resembles the fallback base as specified in the modification parameters

    See also

    vrna_sc_mod_json(), vrna_sc_mod_jsonfile(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine(), VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_DEFAULT

  VRNA_SC_MOD_CHECK_UNMOD
    #include <ViennaRNA/constraints/soft_special.h>

    Check for sequence positions whether they resemble the unmodified base.

    This flag can be used to enable a sanity check within the vrna_sc_mod*() functions to see whether a supposedly modified position actually resembles the unmodified base as specified in the modification parameters

    See also

    vrna_sc_mod_json(), vrna_sc_mod_jsonfile(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine(), VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_DEFAULT

  VRNA_SC_MOD_SILENT
    #include <ViennaRNA/constraints/soft_special.h>

    Do not produce any warnings within the vrna_sc_mod*() functions.

    See also

    vrna_sc_mod_json(), vrna_sc_mod_jsonfile(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine()

  VRNA_SC_MOD_DEFAULT
    #include <ViennaRNA/constraints/soft_special.h>

    Default settings for the vrna_sc_mod*() functions.

    See also

    vrna_sc_mod_json(), vrna_sc_mod_jsonfile(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine(), VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT

  Typedefs

  typedef struct vrna_sc_mod_param_s *vrna_sc_mod_param_t
    #include <ViennaRNA/constraints/soft_special.h>

    Modified base parameter data structure.

    See also

    vrna_sc_mod_read_from_jsonfile(), vrna_sc_mod_read_from_json(), vrna_sc_mod()

  Functions

  vrna_sc_mod_param_t vrna_sc_mod_read_from_jsonfile(const char *filename, vrna_md_t *md)
    #include <ViennaRNA/constraints/soft_special.h>

    Parse and extract energy parameters for a modified base from a JSON file.

    SWIG Wrapper Notes:

      This function is available as an overloaded function `sc_mod_read_from_jsonfile()` where the `md` parameter may be omitted and defaults to `NULL`. See, e.g. `RNA.sc_mod_read_from_jsonfile()` in the Python API .

    See also

    vrna_sc_mod_read_from_json(), vrna_sc_mod_parameters_free(), vrna_sc_mod(), modified-bases-params

    Parameters:

      - filename – The JSON file containing the specifications of the modified base

      - md – A model-details data structure (for look-up of canonical base pairs)

    Returns:

      Parameters of the modified base

  vrna_sc_mod_param_t vrna_sc_mod_read_from_json(const char *json, vrna_md_t *md)
    #include <ViennaRNA/constraints/soft_special.h>

    Parse and extract energy parameters for a modified base from a JSON string.

    SWIG Wrapper Notes:

      This function is available as an overloaded function `sc_mod_read_from_json()` where the `md` parameter may be omitted and defaults to `NULL`. See, e.g. `RNA.sc_mod_read_from_json()` in the Python API .

    See also

    vrna_sc_mod_read_from_jsonfile(), vrna_sc_mod_parameters_free(), vrna_sc_mod(), modified-bases-params

    Parameters:

      - filename – The JSON file containing the specifications of the modified base

      - md – A model-details data structure (for look-up of canonical base pairs)

    Returns:

      Parameters of the modified base

  void vrna_sc_mod_parameters_free(vrna_sc_mod_param_t params)
    #include <ViennaRNA/constraints/soft_special.h>

    Release memory occupied by a modified base parameter data structure.

    Properly free a vrna_sc_mod_param_t data structure

    Parameters:

      - params – The data structure to free

  int vrna_sc_mod_json(vrna_fold_compound_t *fc, const char *json, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Prepare soft constraint callbacks for modified base as specified in JSON string.

    This function prepares all requirements to acknowledge modified bases as specified in the provided `json` string. All subsequent predictions will treat each modification site special and adjust energy contributions if necessary.

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_json()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_json()` in the Python API .

    See also

    vrna_sc_mod_jsonfile(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine(), VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT, modified-bases-params

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - json – The JSON formatted string with the modified base parameters

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_jsonfile(vrna_fold_compound_t *fc, const char *json_file, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Prepare soft constraint callbacks for modified base as specified in JSON string.

    Similar to vrna_sc_mod_json(), this function prepares all requirements to acknowledge modified bases as specified in the provided `json` file. All subsequent predictions will treat each modification site special and adjust energy contributions if necessary.

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_jsonfile()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_jsonfile()` in the Python API .

    See also

    vrna_sc_mod_json(), vrna_sc_mod(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine(), VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT, modified-bases-params

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - json – The JSON formatted string with the modified base parameters

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod(vrna_fold_compound_t *fc, const vrna_sc_mod_param_t params, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Prepare soft constraint callbacks for modified base as specified in JSON string.

    This function takes a vrna_sc_mod_param_t data structure as obtained from vrna_sc_mod_read_from_json() or vrna_sc_mod_read_from_jsonfile() and prepares all requirements to acknowledge modified bases as specified in the provided `params` data structure. All subsequent predictions will treat each modification site special and adjust energy contributions if necessary.

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod()` in the Python API .

    See also

    vrna_sc_mod_read_from_json(), vrna_sc_mod_read_from_jsonfile(), vrna_sc_mod_json(), vrna_sc_mod_jsonfile(), vrna_sc_mod_m6A(), vrna_sc_mod_pseudouridine(), vrna_sc_mod_inosine(), vrna_sc_mod_7DA(), vrna_sc_mod_purine(), vrna_sc_mod_dihydrouridine() VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - json – The JSON formatted string with the modified base parameters

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_m6A(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for N6-methyl-adenosine (m6A)

    This is a convenience wrapper to add support for m6A using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Kierzek et al. [2022] .

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_m6A()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_m6A()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_pseudouridine(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for Pseudouridine.

    This is a convenience wrapper to add support for pseudouridine using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Hudson et al. [2013] .

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_pseudouridine()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_pseudouridine()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_inosine(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for Inosine.

    This is a convenience wrapper to add support for inosine using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Wright et al. [2007] and Wright et al. [2018] .

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_inosine()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_inosine()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_7DA(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for 7-deaza-adenosine (7DA)

    This is a convenience wrapper to add support for 7-deaza-adenosine using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Richardson and Znosko [2016] .

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_7DA()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_7DA()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_purine(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for Purine (a.k.a. nebularine)

    This is a convenience wrapper to add support for Purine using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Jolley and Znosko [2017] .

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_purine()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_purine()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for

  int vrna_sc_mod_dihydrouridine(vrna_fold_compound_t *fc, const unsigned int *modification_sites, unsigned int options)
    #include <ViennaRNA/constraints/soft_special.h>

    Add soft constraint callbacks for dihydrouridine.

    This is a convenience wrapper to add support for dihydrouridine using the soft constraint callback mechanism. Modification sites are provided as a list of sequence positions (1-based). Energy parameter corrections are derived from Rosetta/RECESS predictions.

    SWIG Wrapper Notes:

      This function is attached as overloaded method `sc_mod_dihydrouridine()` to objects of type `fold_compound` with default `options` = VRNA_SC_MOD_DEFAULT. See, e.g. `RNA.fold_compound.sc_mod_dihydrouridine()` in the Python API .

    See also

    VRNA_SC_MOD_CHECK_FALLBACK, VRNA_SC_MOD_CHECK_UNMOD, VRNA_SC_MOD_SILENT, VRNA_SC_MOD_DEFAULT

    Parameters:

      - fc – The fold_compound the corrections should be bound to

      - modification_sites – A list of modification site, i.e. positions that contain the modified base (1-based, last element in the list indicated by 0)

      - options – A bitvector of options how to handle the input, e.g. VRNA_SC_MOD_DEFAULT

    Returns:

      Number of sequence positions modified base parameters will be used for