<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.15.0" xml:lang="en-US">
  <compounddef id="group__data__utils" kind="group">
    <compoundname>data_utils</compoundname>
    <title>Handling and Manipulation of Data</title>
    <innerfile refid="transform_8h">transform.h</innerfile>
    <sectiondef kind="func">
      <memberdef kind="function" id="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>double *</type>
        <definition>double * vrna_data_lin_transform</definition>
        <argsstring>(const double *data, size_t data_size, vrna_math_fun_dbl_f transform_cb, vrna_math_fun_dbl_opt_t transform_opt, double domain[4], double oob_value, unsigned int options)</argsstring>
        <name>vrna_data_lin_transform</name>
        <param>
          <type>const double *</type>
          <declname>data</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>data_size</declname>
        </param>
        <param>
          <type><ref refid="group__math__scalar_1ga868f4010e57fb868ce11804b77f04c2f" kindref="member">vrna_math_fun_dbl_f</ref></type>
          <declname>transform_cb</declname>
        </param>
        <param>
          <type><ref refid="group__math__scalar_1ga486680b7d43688e2bcbec959a547ffee" kindref="member">vrna_math_fun_dbl_opt_t</ref></type>
          <declname>transform_opt</declname>
        </param>
        <param>
          <type>double</type>
          <declname>domain</declname>
          <array>[4]</array>
        </param>
        <param>
          <type>double</type>
          <declname>oob_value</declname>
        </param>
        <param>
          <type>unsigned int</type>
          <declname>options</declname>
        </param>
        <briefdescription>
<para>Transform an array of linear data. </para>
        </briefdescription>
        <detaileddescription>
<para>This function transforms an array of linear data (<computeroutput>source</computeroutput>) into another array of linear data of the same size (<computeroutput>target</computeroutput>). For that purpose, it utilizes a callback mechanism that transforms each single value.</para>
<para>During data transform, the callback function (<computeroutput>transform_cb</computeroutput>) will be executed for each value of the linear data (<computeroutput>data</computeroutput>) and is responsible to actually transform the data value. The <computeroutput>transform_opt</computeroutput> parameter will be simply passed-through to the callback function as second argument. The callback function has to return the transformed value.</para>
<para>This transformation function may enforce source and target domain limits if the corresponding flag (<ref refid="group__data__utils_1ga9330be06bc6e577d4c4e3d334aba0f66" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAINS</ref>) is provided to the <computeroutput>options</computeroutput> argument. This means that one has complete control over the accepted values of the source and target domains. The limits can be provided to this function through the <computeroutput>domain</computeroutput> argument. Here, the order of the limits follows: <formula id="63">\[ x_\text{min}, x_\text{max}, y_\text{min}, y_\text{max}. \]</formula></para>
<para>If <computeroutput>NULL</computeroutput> is passed instead of an actual domain array, domain enforcement is deactivated and any value will pass. In case a domain enforcing is active and a source or target value doesn&apos;t meet the respective limits, the function assigns it the out-of-bounds value <computeroutput>oob_value</computeroutput>. This behavior can be changed to a mapping of out-of-bounds values to the respetive domain limits. For that purpose, the <computeroutput>options</computeroutput> argument requires the flag <ref refid="group__data__utils_1gabd1089d2cbdcfdae45587dd4b06774b2" kindref="member">VRNA_TRANSFORM_MAP</ref>.</para>
<para><simplesect kind="note"><para>Individual control for mapping out-of-bounds values to the four domain limits, i.e. low and high values of source and target can be gained by providing the <computeroutput>options</computeroutput> argument the <ref refid="group__data__utils_1ga65b5e5dfe172ccf5e947dbc19624947b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_LOW</ref>, <ref refid="group__data__utils_1ga0be990162372438311640b8cf980bf7b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_HIGH</ref>, <ref refid="group__data__utils_1ga784a9ec67dd752ca94c038ba52507565" kindref="member">VRNA_TRANSFORM_MAP_TARGET_LOW</ref>, and <ref refid="group__data__utils_1ga3d280c9e33c2aec8c9752f75c29f73a5" kindref="member">VRNA_TRANSFORM_MAP_TARGET_HIGH</ref> flags. </para>
</simplesect>
<simplesect kind="note"><para>When <computeroutput>data</computeroutput> is <computeroutput>NULL</computeroutput> or <computeroutput>data_size</computeroutput> equals <computeroutput>0</computeroutput>, the function returns <computeroutput>NULL</computeroutput>. Moreover, the function simply provides a copy of the linear data if the transformation callback <computeroutput>transform_cb</computeroutput> is not provided, i.e. if it is <computeroutput>NULL</computeroutput>. In this case, domain limits will still be enforced if the corresponding options are set.</para>
</simplesect>
<simplesect kind="see"><para><ref refid="group__math__scalar_1ga868f4010e57fb868ce11804b77f04c2f" kindref="member">vrna_math_fun_dbl_f</ref>, <ref refid="group__math__scalar_1ga486680b7d43688e2bcbec959a547ffee" kindref="member">vrna_math_fun_dbl_opt_t</ref>, <ref refid="group__data__utils_1gaf307a8f442a2544f12c3e92495a67a6a" kindref="member">VRNA_TRANSFORM_DEFAULT</ref>, <ref refid="group__data__utils_1ga9330be06bc6e577d4c4e3d334aba0f66" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAINS</ref>, <ref refid="group__data__utils_1ga36f0a5b889aafd5fe7ae0f662ea6198c" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAIN_SOURCE</ref>, <ref refid="group__data__utils_1gab611a93f10a243918c91829800444e7f" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAIN_TARGET</ref>, <ref refid="group__data__utils_1gabd1089d2cbdcfdae45587dd4b06774b2" kindref="member">VRNA_TRANSFORM_MAP</ref>, <ref refid="group__data__utils_1ga527175a47181c235777a20e7e8f36639" kindref="member">VRNA_TRANSFORM_MAP_SOURCE</ref>, <ref refid="group__data__utils_1gab090386263e09cd72cbf288a88e98c17" kindref="member">VRNA_TRANSFORM_MAP_TARGET</ref>, <ref refid="group__data__utils_1ga65b5e5dfe172ccf5e947dbc19624947b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_LOW</ref>, <ref refid="group__data__utils_1ga0be990162372438311640b8cf980bf7b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_HIGH</ref>, <ref refid="group__data__utils_1ga784a9ec67dd752ca94c038ba52507565" kindref="member">VRNA_TRANSFORM_MAP_TARGET_LOW</ref>, <ref refid="group__data__utils_1ga3d280c9e33c2aec8c9752f75c29f73a5" kindref="member">VRNA_TRANSFORM_MAP_TARGET_HIGH</ref>, <ref refid="group__math__scalar_1ga962c58ab7c8ebd6864715d91ee40667e" kindref="member">vrna_math_fun_dbl_bin_opt()</ref>, <ref refid="group__math__scalar_1ga675b6bb517cfc29f92eca8942904f3e3" kindref="member">vrna_math_fun_dbl_linear_opt()</ref>, <ref refid="group__math__scalar_1gae358be702661407cbbaaa3762ca89eb8" kindref="member">vrna_math_fun_dbl_log_opt()</ref>, <ref refid="group__math__scalar_1gaf841692e31e5fd2433b760b5ed14a483" kindref="member">vrna_math_fun_dbl_logistic_opt()</ref>, <ref refid="group__math__scalar_1ga33634f12b5bfe5f101941a5f013e7ac9" kindref="member">vrna_math_fun_dbl_gaussian_opt()</ref>, <ref refid="group__math__scalar_1gaa46fd02f82386a7472b02e4960c63bb0" kindref="member">vrna_math_fun_dbl_kde_opt()</ref></para>
</simplesect>
<parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data</parametername>
</parameternamelist>
<parameterdescription>
<para>A pointer to an array of linear data </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>data_size</parametername>
</parameternamelist>
<parameterdescription>
<para>The size of the array <computeroutput>data</computeroutput> is pointing to </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>transform_cb</parametername>
</parameternamelist>
<parameterdescription>
<para>The data transformation callback (maybe <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>transform_opt</parametername>
</parameternamelist>
<parameterdescription>
<para>The options that need to be passed through to the transformation callback <computeroutput>transform_cb</computeroutput> (maybe <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>domain</parametername>
</parameternamelist>
<parameterdescription>
<para>The domain limits (maybe <computeroutput>NULL</computeroutput>) </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>oob_value</parametername>
</parameternamelist>
<parameterdescription>
<para>Out-of-bound value </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>options</parametername>
</parameternamelist>
<parameterdescription>
<para>Additional options that change the behavior of the transformation function </para>
</parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>A pointer to an array of transformed linear data (or <computeroutput>NULL</computeroutput> on any error) </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="154" column="1" declfile="ViennaRNA/data/transform.h" declline="154" declcolumn="1"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="define">
      <memberdef kind="define" id="group__data__utils_1ga36f0a5b889aafd5fe7ae0f662ea6198c" prot="public" static="no">
        <name>VRNA_TRANSFORM_ENFORCE_DOMAIN_SOURCE</name>
        <initializer>(1 &lt;&lt; 1)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to enforce source domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="23" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="23" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1gab611a93f10a243918c91829800444e7f" prot="public" static="no">
        <name>VRNA_TRANSFORM_ENFORCE_DOMAIN_TARGET</name>
        <initializer>(1 &lt;&lt; 2)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to enforce target domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="30" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="30" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga9330be06bc6e577d4c4e3d334aba0f66" prot="public" static="no">
        <name>VRNA_TRANSFORM_ENFORCE_DOMAINS</name>
        <initializer>(<ref refid="group__data__utils_1ga36f0a5b889aafd5fe7ae0f662ea6198c" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAIN_SOURCE</ref> | <ref refid="group__data__utils_1gab611a93f10a243918c91829800444e7f" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAIN_TARGET</ref>)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to enforce source and target domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="37" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="37" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga65b5e5dfe172ccf5e947dbc19624947b" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_SOURCE_LOW</name>
        <initializer>(1 &lt;&lt; 3)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map source values below the domain limit to the lower domain limit. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="44" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="44" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga0be990162372438311640b8cf980bf7b" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_SOURCE_HIGH</name>
        <initializer>(1 &lt;&lt; 4)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map source values above the domain limit to the upper domain limit. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="51" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="51" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga527175a47181c235777a20e7e8f36639" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_SOURCE</name>
        <initializer>(<ref refid="group__data__utils_1ga65b5e5dfe172ccf5e947dbc19624947b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_LOW</ref> | <ref refid="group__data__utils_1ga0be990162372438311640b8cf980bf7b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_HIGH</ref>)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map source values below and above the domain limits to the domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="58" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="58" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga784a9ec67dd752ca94c038ba52507565" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_TARGET_LOW</name>
        <initializer>(1 &lt;&lt; 5)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map target values below the domain limit to the lower domain limit. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="65" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="65" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1ga3d280c9e33c2aec8c9752f75c29f73a5" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_TARGET_HIGH</name>
        <initializer>(1 &lt;&lt; 6)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map target values above the domain limit to the upper domain limit. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="72" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="72" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1gab090386263e09cd72cbf288a88e98c17" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP_TARGET</name>
        <initializer>(<ref refid="group__data__utils_1ga784a9ec67dd752ca94c038ba52507565" kindref="member">VRNA_TRANSFORM_MAP_TARGET_LOW</ref> | <ref refid="group__data__utils_1ga3d280c9e33c2aec8c9752f75c29f73a5" kindref="member">VRNA_TRANSFORM_MAP_TARGET_HIGH</ref>)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map target values below and above the domain limits to the domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="79" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="79" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1gabd1089d2cbdcfdae45587dd4b06774b2" prot="public" static="no">
        <name>VRNA_TRANSFORM_MAP</name>
        <initializer>(<ref refid="group__data__utils_1ga65b5e5dfe172ccf5e947dbc19624947b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_LOW</ref> | <ref refid="group__data__utils_1ga0be990162372438311640b8cf980bf7b" kindref="member">VRNA_TRANSFORM_MAP_SOURCE_HIGH</ref> | <ref refid="group__data__utils_1ga784a9ec67dd752ca94c038ba52507565" kindref="member">VRNA_TRANSFORM_MAP_TARGET_LOW</ref> | <ref refid="group__data__utils_1ga3d280c9e33c2aec8c9752f75c29f73a5" kindref="member">VRNA_TRANSFORM_MAP_TARGET_HIGH</ref>)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data to map source and target values below and above the domain limits to the respective domain limits. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="86" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="86" bodyend="-1"/>
      </memberdef>
      <memberdef kind="define" id="group__data__utils_1gaf307a8f442a2544f12c3e92495a67a6a" prot="public" static="no">
        <name>VRNA_TRANSFORM_DEFAULT</name>
        <initializer>(<ref refid="group__data__utils_1ga9330be06bc6e577d4c4e3d334aba0f66" kindref="member">VRNA_TRANSFORM_ENFORCE_DOMAINS</ref> | <ref refid="group__data__utils_1gabd1089d2cbdcfdae45587dd4b06774b2" kindref="member">VRNA_TRANSFORM_MAP</ref>)</initializer>
        <briefdescription>
<para>Options flag for transforming linear data that indicates default settings. </para>
        </briefdescription>
        <detaileddescription>
<para><simplesect kind="see"><para><ref refid="group__data__utils_1ga5d49c7cddf8e50aec0b0921bb735fff0" kindref="member">vrna_data_lin_transform()</ref> </para>
</simplesect>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="ViennaRNA/data/transform.h" line="93" column="9" bodyfile="ViennaRNA/data/transform.h" bodystart="93" bodyend="-1"/>
      </memberdef>
    </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
  </compounddef>
</doxygen>
