WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / doc / html / utils_8h.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <title>RNAlib-2.1.2: /home/mescalin/ronny/public_html/programs/ViennaRNA/H/utils.h File Reference</title>
7 <link href="tabs.css" rel="stylesheet" type="text/css"/>
8 <script type="text/javascript" src="jquery.js"></script>
9 <script type="text/javascript" src="dynsections.js"></script>
10 <link href="navtree.css" rel="stylesheet" type="text/css"/>
11 <script type="text/javascript" src="resize.js"></script>
12 <script type="text/javascript" src="navtree.js"></script>
13 <script type="text/javascript">
14   $(document).ready(initResizable);
15 </script>
16 <link href="doxygen.css" rel="stylesheet" type="text/css" />
17 </head>
18 <body>
19 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20 <div id="titlearea">
21 <table cellspacing="0" cellpadding="0">
22  <tbody>
23  <tr style="height: 56px;">
24   <td style="padding-left: 0.5em;">
25    <div id="projectname">RNAlib-2.1.2
26    </div>
27   </td>
28  </tr>
29  </tbody>
30 </table>
31 </div>
32 <!-- end header part -->
33 <!-- Generated by Doxygen 1.8.1.1 -->
34   <div id="navrow1" class="tabs">
35     <ul class="tablist">
36       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
37       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
38       <li><a href="modules.html"><span>Modules</span></a></li>
39       <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
40       <li class="current"><a href="files.html"><span>Files</span></a></li>
41     </ul>
42   </div>
43   <div id="navrow2" class="tabs2">
44     <ul class="tablist">
45       <li><a href="files.html"><span>File&#160;List</span></a></li>
46       <li><a href="globals.html"><span>Globals</span></a></li>
47     </ul>
48   </div>
49 </div><!-- top -->
50 <div id="side-nav" class="ui-resizable side-nav-resizable">
51   <div id="nav-tree">
52     <div id="nav-tree-contents">
53     </div>
54   </div>
55   <div id="splitbar" style="-moz-user-select:none;" 
56        class="ui-resizable-handle">
57   </div>
58 </div>
59 <script type="text/javascript">
60 $(document).ready(function(){initNavTree('utils_8h.html','');});
61 </script>
62 <div id="doc-content">
63 <div class="header">
64   <div class="summary">
65 <a href="#define-members">Macros</a> &#124;
66 <a href="#func-members">Functions</a> &#124;
67 <a href="#var-members">Variables</a>  </div>
68   <div class="headertitle">
69 <div class="title">utils.h File Reference</div>  </div>
70 </div><!--header-->
71 <div class="contents">
72
73 <p>Various utility- and helper-functions used throughout the Vienna RNA package.  
74 <a href="#details">More...</a></p>
75 <div class="textblock"><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
76   <img id="dynsection-0-trigger" src="closed.png" alt="+"/> This graph shows which files directly or indirectly include this file:</div>
77 <div id="dynsection-0-summary" class="dynsummary" style="display:block;">
78 </div>
79 <div id="dynsection-0-content" class="dyncontent" style="display:none;">
80 <div class="center"><img src="utils_8h__dep__incl.png" border="0" usemap="#_2home_2mescalin_2ronny_2public__html_2programs_2ViennaRNA_2H_2utils_8hdep" alt=""/></div>
81 <map name="_2home_2mescalin_2ronny_2public__html_2programs_2ViennaRNA_2H_2utils_8hdep" id="_2home_2mescalin_2ronny_2public__html_2programs_2ViennaRNA_2H_2utils_8hdep">
82 <area shape="rect" id="node3" href="pair__mat_8h_source.html" title="/home/mescalin/ronny\l/public_html/programs\l/ViennaRNA/H/pair_mat.h" alt="" coords="5,109,189,165"/></map>
83 </div>
84 </div>
85 <p><a href="utils_8h_source.html">Go to the source code of this file.</a></p>
86 <table class="memberdecls">
87 <tr class="heading"><td colspan="2"><h2><a name="define-members"></a>
88 Macros</h2></td></tr>
89 <tr class="memitem:ad403c9ea58f1836689404c2931419c8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad403c9ea58f1836689404c2931419c8c">VRNA_INPUT_ERROR</a>&#160;&#160;&#160;1U</td></tr>
90 <tr class="memitem:a72f3c6ca5c83d2b9baed2922d19c403d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a72f3c6ca5c83d2b9baed2922d19c403d">VRNA_INPUT_QUIT</a>&#160;&#160;&#160;2U</td></tr>
91 <tr class="memitem:a8e3241b321c9c1a78a69e59e2e019a71"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8e3241b321c9c1a78a69e59e2e019a71">VRNA_INPUT_MISC</a>&#160;&#160;&#160;4U</td></tr>
92 <tr class="memitem:a2f0d8069e93d3ac54d9320d6bdb8e7e7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a2f0d8069e93d3ac54d9320d6bdb8e7e7">VRNA_INPUT_FASTA_HEADER</a>&#160;&#160;&#160;8U</td></tr>
93 <tr class="memitem:a8566d6787972100e68b5a2a159b4cf45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8566d6787972100e68b5a2a159b4cf45">VRNA_INPUT_SEQUENCE</a>&#160;&#160;&#160;16U</td></tr>
94 <tr class="memitem:ac08a9df45b9721b97a47dbfe7a6e5f85"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ac08a9df45b9721b97a47dbfe7a6e5f85">VRNA_INPUT_CONSTRAINT</a>&#160;&#160;&#160;32U</td></tr>
95 <tr class="memitem:a086742158293217a46ae2f71bb296937"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a086742158293217a46ae2f71bb296937">VRNA_INPUT_NO_TRUNCATION</a>&#160;&#160;&#160;256U</td></tr>
96 <tr class="memitem:a7a2e8c50a0c7ce82e60da1016e1367fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a7a2e8c50a0c7ce82e60da1016e1367fd">VRNA_INPUT_NO_REST</a>&#160;&#160;&#160;512U</td></tr>
97 <tr class="memitem:a0de536599b881c787b0943a2671da476"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a0de536599b881c787b0943a2671da476">VRNA_INPUT_NO_SPAN</a>&#160;&#160;&#160;1024U</td></tr>
98 <tr class="memitem:ab4db885222b3b69608310d7c7e63e286"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab4db885222b3b69608310d7c7e63e286">VRNA_INPUT_NOSKIP_BLANK_LINES</a>&#160;&#160;&#160;2048U</td></tr>
99 <tr class="memitem:a305474b93ccb79ae4c7754016a8ddd84"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a305474b93ccb79ae4c7754016a8ddd84">VRNA_INPUT_BLANK_LINE</a>&#160;&#160;&#160;4096U</td></tr>
100 <tr class="memitem:a0f6311f11bed1842e3a527ab27b294c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a0f6311f11bed1842e3a527ab27b294c6">VRNA_INPUT_NOSKIP_COMMENTS</a>&#160;&#160;&#160;128U</td></tr>
101 <tr class="memitem:af2062e0eeefffd3ed639af460b3d4fab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#af2062e0eeefffd3ed639af460b3d4fab">VRNA_INPUT_COMMENT</a>&#160;&#160;&#160;8192U</td></tr>
102 <tr class="memitem:a4e8d7120619b21df0309af425acbc9a2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4e8d7120619b21df0309af425acbc9a2">VRNA_CONSTRAINT_PIPE</a>&#160;&#160;&#160;1U</td></tr>
103 <tr class="memitem:a55e1d16fd693ae9ec8e987b0750da804"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a55e1d16fd693ae9ec8e987b0750da804">VRNA_CONSTRAINT_DOT</a>&#160;&#160;&#160;2U</td></tr>
104 <tr class="memitem:a077c56550c915d4516d84a5ed8d051f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a077c56550c915d4516d84a5ed8d051f4">VRNA_CONSTRAINT_X</a>&#160;&#160;&#160;4U</td></tr>
105 <tr class="memitem:a0512d790f738742cbdcf3f7c87b46f48"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a0512d790f738742cbdcf3f7c87b46f48">VRNA_CONSTRAINT_ANG_BRACK</a>&#160;&#160;&#160;8U</td></tr>
106 <tr class="memitem:aa20bfca4bb2903c8548000a33d7bbb53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa20bfca4bb2903c8548000a33d7bbb53">VRNA_CONSTRAINT_RND_BRACK</a>&#160;&#160;&#160;16U</td></tr>
107 <tr class="memitem:a7d725ef525b29891abef3f1ed42599a4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a7d725ef525b29891abef3f1ed42599a4">VRNA_CONSTRAINT_MULTILINE</a>&#160;&#160;&#160;32U</td></tr>
108 <tr class="memitem:a08d12a9a846ea593b7171d277c9f033f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a08d12a9a846ea593b7171d277c9f033f">VRNA_CONSTRAINT_NO_HEADER</a>&#160;&#160;&#160;64U</td></tr>
109 <tr class="memitem:a0a697f77a6fbb10f34e16fa68ed9e655"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a0a697f77a6fbb10f34e16fa68ed9e655">VRNA_CONSTRAINT_ALL</a>&#160;&#160;&#160;128U</td></tr>
110 <tr class="memitem:a99dc6b23dc4080a76e2ed1a81c20e94d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a99dc6b23dc4080a76e2ed1a81c20e94d">VRNA_CONSTRAINT_G</a>&#160;&#160;&#160;256U</td></tr>
111 <tr class="memitem:abec89c09874528c6cb73140a4c3d86d7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abec89c09874528c6cb73140a4c3d86d7">VRNA_OPTION_MULTILINE</a>&#160;&#160;&#160;32U</td></tr>
112 <tr class="memitem:ae0b9cd0ce090bd69b951aa73e8fa4f7d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ae0b9cd0ce090bd69b951aa73e8fa4f7d">MIN2</a>(A, B)&#160;&#160;&#160;((A) &lt; (B) ? (A) : (B))</td></tr>
113 <tr class="memitem:a33297b3679c713b0c4d897cd0fe3b122"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a33297b3679c713b0c4d897cd0fe3b122">MAX2</a>(A, B)&#160;&#160;&#160;((A) &gt; (B) ? (A) : (B))</td></tr>
114 <tr class="memitem:a721b8d5f3abef17f10293f1f7f8c958e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a721b8d5f3abef17f10293f1f7f8c958e">MIN3</a>(A, B, C)&#160;&#160;&#160;(<a class="el" href="utils_8h.html#ae0b9cd0ce090bd69b951aa73e8fa4f7d">MIN2</a>(  (<a class="el" href="utils_8h.html#ae0b9cd0ce090bd69b951aa73e8fa4f7d">MIN2</a>((A),(B))) ,(C)))</td></tr>
115 <tr class="memitem:a8d577123d2e66d2b7d0bf9af6e172b93"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8d577123d2e66d2b7d0bf9af6e172b93">MAX3</a>(A, B, C)&#160;&#160;&#160;(<a class="el" href="utils_8h.html#a33297b3679c713b0c4d897cd0fe3b122">MAX2</a>(  (<a class="el" href="utils_8h.html#a33297b3679c713b0c4d897cd0fe3b122">MAX2</a>((A),(B))) ,(C)))</td></tr>
116 <tr class="memitem:a03943706e48069237cd57f2d35ca987e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a03943706e48069237cd57f2d35ca987e">XSTR</a>(s)&#160;&#160;&#160;<a class="el" href="utils_8h.html#a6388870e639eee9c0a69446876f1f8cc">STR</a>(s)</td></tr>
117 <tr class="memitem:a6388870e639eee9c0a69446876f1f8cc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6388870e639eee9c0a69446876f1f8cc">STR</a>(s)&#160;&#160;&#160;#s</td></tr>
118 <tr class="memitem:afb228174279df9486a5cb56ac0bc79a3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#afb228174279df9486a5cb56ac0bc79a3">FILENAME_MAX_LENGTH</a>&#160;&#160;&#160;80</td></tr>
119 <tr class="memdesc:afb228174279df9486a5cb56ac0bc79a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum length of filenames that are generated by our programs.  <a href="#afb228174279df9486a5cb56ac0bc79a3"></a><br/></td></tr>
120 <tr class="memitem:a33c3b1826b8e2739f09f111ec719ded5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a33c3b1826b8e2739f09f111ec719ded5">FILENAME_ID_LENGTH</a>&#160;&#160;&#160;42</td></tr>
121 <tr class="memdesc:a33c3b1826b8e2739f09f111ec719ded5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum length of id taken from fasta header for filename generation.  <a href="#a33c3b1826b8e2739f09f111ec719ded5"></a><br/></td></tr>
122 </table><table class="memberdecls">
123 <tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
124 Functions</h2></td></tr>
125 <tr class="memitem:ad7e1e137b3bf1f7108933d302a7f0177"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad7e1e137b3bf1f7108933d302a7f0177">space</a> (unsigned size)</td></tr>
126 <tr class="memdesc:ad7e1e137b3bf1f7108933d302a7f0177"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate space safely.  <a href="#ad7e1e137b3bf1f7108933d302a7f0177"></a><br/></td></tr>
127 <tr class="memitem:a9037ada838835b1b9db41581a021b0c8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9037ada838835b1b9db41581a021b0c8">xrealloc</a> (void *p, unsigned size)</td></tr>
128 <tr class="memdesc:a9037ada838835b1b9db41581a021b0c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reallocate space safely.  <a href="#a9037ada838835b1b9db41581a021b0c8"></a><br/></td></tr>
129 <tr class="memitem:a127ce946e56b5a5773781cabe68e38c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a127ce946e56b5a5773781cabe68e38c5">nrerror</a> (const char message[])</td></tr>
130 <tr class="memdesc:a127ce946e56b5a5773781cabe68e38c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Die with an error message.  <a href="#a127ce946e56b5a5773781cabe68e38c5"></a><br/></td></tr>
131 <tr class="memitem:af2355fa8746f2f30fbe71db65dea3d51"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#af2355fa8746f2f30fbe71db65dea3d51">warn_user</a> (const char message[])</td></tr>
132 <tr class="memdesc:af2355fa8746f2f30fbe71db65dea3d51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a warning message.  <a href="#af2355fa8746f2f30fbe71db65dea3d51"></a><br/></td></tr>
133 <tr class="memitem:a8aaa6d9be6f803f496d9b97375c371f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aaa6d9be6f803f496d9b97375c371f3"></a>
134 void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8aaa6d9be6f803f496d9b97375c371f3">init_rand</a> (void)</td></tr>
135 <tr class="memdesc:a8aaa6d9be6f803f496d9b97375c371f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make random number seeds. <br/></td></tr>
136 <tr class="memitem:aaa328491c84996e445d027fde9800f2e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aaa328491c84996e445d027fde9800f2e">urn</a> (void)</td></tr>
137 <tr class="memdesc:aaa328491c84996e445d027fde9800f2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">get a random number from [0..1]  <a href="#aaa328491c84996e445d027fde9800f2e"></a><br/></td></tr>
138 <tr class="memitem:a68ff0849d44f62fe491800378a5ffcb4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a68ff0849d44f62fe491800378a5ffcb4">int_urn</a> (int from, int to)</td></tr>
139 <tr class="memdesc:a68ff0849d44f62fe491800378a5ffcb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a pseudo random integer in a specified range.  <a href="#a68ff0849d44f62fe491800378a5ffcb4"></a><br/></td></tr>
140 <tr class="memitem:a7afeb906cb36e9d77379eabc6907ac46"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a7afeb906cb36e9d77379eabc6907ac46">time_stamp</a> (void)</td></tr>
141 <tr class="memdesc:a7afeb906cb36e9d77379eabc6907ac46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a timestamp.  <a href="#a7afeb906cb36e9d77379eabc6907ac46"></a><br/></td></tr>
142 <tr class="memitem:a1b95eac365a021572e1c37e5993a89be"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a1b95eac365a021572e1c37e5993a89be">random_string</a> (int l, const char symbols[])</td></tr>
143 <tr class="memdesc:a1b95eac365a021572e1c37e5993a89be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a random string using characters from a specified symbol set.  <a href="#a1b95eac365a021572e1c37e5993a89be"></a><br/></td></tr>
144 <tr class="memitem:ad9dc7bfc9aa664dc6698f17ce07fc7e7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad9dc7bfc9aa664dc6698f17ce07fc7e7">hamming</a> (const char *s1, const char *s2)</td></tr>
145 <tr class="memdesc:ad9dc7bfc9aa664dc6698f17ce07fc7e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate hamming distance between two sequences.  <a href="#ad9dc7bfc9aa664dc6698f17ce07fc7e7"></a><br/></td></tr>
146 <tr class="memitem:a96d3c36717d624514055ce201cab1542"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a96d3c36717d624514055ce201cab1542">hamming_bound</a> (const char *s1, const char *s2, int n)</td></tr>
147 <tr class="memdesc:a96d3c36717d624514055ce201cab1542"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate hamming distance between two sequences up to a specified length.  <a href="#a96d3c36717d624514055ce201cab1542"></a><br/></td></tr>
148 <tr class="memitem:abe51806d14cff0789a8c1df7dbc45b71"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abe51806d14cff0789a8c1df7dbc45b71">get_line</a> (FILE *fp)</td></tr>
149 <tr class="memdesc:abe51806d14cff0789a8c1df7dbc45b71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a line of arbitrary length from a stream.  <a href="#abe51806d14cff0789a8c1df7dbc45b71"></a><br/></td></tr>
150 <tr class="memitem:a8ef1835eb83f542396f59f0b205965e5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line</a> (char **string, unsigned int options)</td></tr>
151 <tr class="memitem:afd194a69af9d92b5b0412a7627ac1595"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595">read_record</a> (char **header, char **sequence, char ***rest, unsigned int options)</td></tr>
152 <tr class="memdesc:afd194a69af9d92b5b0412a7627ac1595"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a data record from stdin.  <a href="#afd194a69af9d92b5b0412a7627ac1595"></a><br/></td></tr>
153 <tr class="memitem:ac6dfa5e22928c087c6e09ff0054a7ced"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ac6dfa5e22928c087c6e09ff0054a7ced">pack_structure</a> (const char *struc)</td></tr>
154 <tr class="memdesc:ac6dfa5e22928c087c6e09ff0054a7ced"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pack secondary secondary structure, 5:1 compression using base 3 encoding.  <a href="#ac6dfa5e22928c087c6e09ff0054a7ced"></a><br/></td></tr>
155 <tr class="memitem:a071c6921efe1eb974f115ee6fefa3c39"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a071c6921efe1eb974f115ee6fefa3c39">unpack_structure</a> (const char *packed)</td></tr>
156 <tr class="memdesc:a071c6921efe1eb974f115ee6fefa3c39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unpack secondary structure previously packed with <a class="el" href="utils_8h.html#ac6dfa5e22928c087c6e09ff0054a7ced" title="Pack secondary secondary structure, 5:1 compression using base 3 encoding.">pack_structure()</a>  <a href="#a071c6921efe1eb974f115ee6fefa3c39"></a><br/></td></tr>
157 <tr class="memitem:a89c32307ee50a0026f4a3131fac0845a"><td class="memItemLeft" align="right" valign="top">short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a89c32307ee50a0026f4a3131fac0845a">make_pair_table</a> (const char *structure)</td></tr>
158 <tr class="memdesc:a89c32307ee50a0026f4a3131fac0845a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a pair table of a secondary structure.  <a href="#a89c32307ee50a0026f4a3131fac0845a"></a><br/></td></tr>
159 <tr class="memitem:afeaa6d68eef3a99d0a7aa08aa91c6601"><td class="memItemLeft" align="right" valign="top">short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#afeaa6d68eef3a99d0a7aa08aa91c6601">copy_pair_table</a> (const short *pt)</td></tr>
160 <tr class="memdesc:afeaa6d68eef3a99d0a7aa08aa91c6601"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an exact copy of a pair table.  <a href="#afeaa6d68eef3a99d0a7aa08aa91c6601"></a><br/></td></tr>
161 <tr class="memitem:a3c81b3967056c3888b8472b65fbb16f5"><td class="memItemLeft" align="right" valign="top">short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3c81b3967056c3888b8472b65fbb16f5">alimake_pair_table</a> (const char *structure)</td></tr>
162 <tr class="memitem:a9aa3bf3b4346bb7fb88efc154dd07a79"><td class="memItemLeft" align="right" valign="top">short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9aa3bf3b4346bb7fb88efc154dd07a79">make_pair_table_snoop</a> (const char *structure)</td></tr>
163 <tr class="memitem:a4358e89f64cc87a563b7ef3855f75bed"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4358e89f64cc87a563b7ef3855f75bed">make_loop_index_pt</a> (short *pt)</td></tr>
164 <tr class="memdesc:a4358e89f64cc87a563b7ef3855f75bed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the "base pair" distance between two secondary structures s1 and s2.  <a href="#a4358e89f64cc87a563b7ef3855f75bed"></a><br/></td></tr>
165 <tr class="memitem:a6bf778117d31b7fd90db435323f4ef74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6bf778117d31b7fd90db435323f4ef74">print_tty_input_seq</a> (void)</td></tr>
166 <tr class="memdesc:a6bf778117d31b7fd90db435323f4ef74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a line to <em>stdout</em> that asks for an input sequence.  <a href="#a6bf778117d31b7fd90db435323f4ef74"></a><br/></td></tr>
167 <tr class="memitem:ae4ef89b662a3e9b5b5f0781d9757aba0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ae4ef89b662a3e9b5b5f0781d9757aba0">print_tty_input_seq_str</a> (const char *s)</td></tr>
168 <tr class="memdesc:ae4ef89b662a3e9b5b5f0781d9757aba0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a line with a user defined string and a ruler to stdout.  <a href="#ae4ef89b662a3e9b5b5f0781d9757aba0"></a><br/></td></tr>
169 <tr class="memitem:ae8ae8a34962b9959be3f6c40f0a80ac1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8ae8a34962b9959be3f6c40f0a80ac1"></a>
170 void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ae8ae8a34962b9959be3f6c40f0a80ac1">print_tty_constraint_full</a> (void)</td></tr>
171 <tr class="memdesc:ae8ae8a34962b9959be3f6c40f0a80ac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print structure constraint characters to stdout (full constraint support) <br/></td></tr>
172 <tr class="memitem:a4d167deb70bb51723e44374dc981deb2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4d167deb70bb51723e44374dc981deb2">print_tty_constraint</a> (unsigned int option)</td></tr>
173 <tr class="memdesc:a4d167deb70bb51723e44374dc981deb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print structure constraint characters to stdout. (constraint support is specified by option parameter)  <a href="#a4d167deb70bb51723e44374dc981deb2"></a><br/></td></tr>
174 <tr class="memitem:ad3f18dd83f958f18b2f26ecb99305208"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad3f18dd83f958f18b2f26ecb99305208">str_DNA2RNA</a> (char *sequence)</td></tr>
175 <tr class="memdesc:ad3f18dd83f958f18b2f26ecb99305208"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a DNA input sequence to RNA alphabet.  <a href="#ad3f18dd83f958f18b2f26ecb99305208"></a><br/></td></tr>
176 <tr class="memitem:a17b796b806f96b70382077fb5bc519bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a17b796b806f96b70382077fb5bc519bb">str_uppercase</a> (char *sequence)</td></tr>
177 <tr class="memdesc:a17b796b806f96b70382077fb5bc519bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an input sequence to uppercase.  <a href="#a17b796b806f96b70382077fb5bc519bb"></a><br/></td></tr>
178 <tr class="memitem:a55c0f6b3b07b6adf2ee235ba901fe397"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a55c0f6b3b07b6adf2ee235ba901fe397">get_iindx</a> (unsigned int length)</td></tr>
179 <tr class="memdesc:a55c0f6b3b07b6adf2ee235ba901fe397"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function related functions.  <a href="#a55c0f6b3b07b6adf2ee235ba901fe397"></a><br/></td></tr>
180 <tr class="memitem:a4d9ee1572c1bfcd02d3d3f2db8a6530f"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4d9ee1572c1bfcd02d3d3f2db8a6530f">get_indx</a> (unsigned int length)</td></tr>
181 <tr class="memdesc:a4d9ee1572c1bfcd02d3d3f2db8a6530f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions.  <a href="#a4d9ee1572c1bfcd02d3d3f2db8a6530f"></a><br/></td></tr>
182 <tr class="memitem:a36c3a6c3218b041f992052767bc74549"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a36c3a6c3218b041f992052767bc74549">constrain_ptypes</a> (const char *constraint, unsigned int length, char *ptype, int *BP, int min_loop_size, unsigned int idx_type)</td></tr>
183 <tr class="memdesc:a36c3a6c3218b041f992052767bc74549"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert constraining pair types according to constraint structure string.  <a href="#a36c3a6c3218b041f992052767bc74549"></a><br/></td></tr>
184 </table><table class="memberdecls">
185 <tr class="heading"><td colspan="2"><h2><a name="var-members"></a>
186 Variables</h2></td></tr>
187 <tr class="memitem:af9a866c8417afda7368bbac939ab3c47"><td class="memItemLeft" align="right" valign="top">unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#af9a866c8417afda7368bbac939ab3c47">xsubi</a> [3]</td></tr>
188 <tr class="memdesc:af9a866c8417afda7368bbac939ab3c47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current 48 bit random number.  <a href="#af9a866c8417afda7368bbac939ab3c47"></a><br/></td></tr>
189 </table>
190 <hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
191 <div class="textblock"><p>Various utility- and helper-functions used throughout the Vienna RNA package. </p>
192 </div><hr/><h2>Macro Definition Documentation</h2>
193 <a class="anchor" id="ad403c9ea58f1836689404c2931419c8c"></a>
194 <div class="memitem">
195 <div class="memproto">
196       <table class="memname">
197         <tr>
198           <td class="memname">#define VRNA_INPUT_ERROR&#160;&#160;&#160;1U</td>
199         </tr>
200       </table>
201 </div><div class="memdoc">
202 <p>Output flag of <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>: "An ERROR has occured, maybe EOF" </p>
203
204 </div>
205 </div>
206 <a class="anchor" id="a72f3c6ca5c83d2b9baed2922d19c403d"></a>
207 <div class="memitem">
208 <div class="memproto">
209       <table class="memname">
210         <tr>
211           <td class="memname">#define VRNA_INPUT_QUIT&#160;&#160;&#160;2U</td>
212         </tr>
213       </table>
214 </div><div class="memdoc">
215 <p>Output flag of <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>: "the user requested quitting the program" </p>
216
217 </div>
218 </div>
219 <a class="anchor" id="a8e3241b321c9c1a78a69e59e2e019a71"></a>
220 <div class="memitem">
221 <div class="memproto">
222       <table class="memname">
223         <tr>
224           <td class="memname">#define VRNA_INPUT_MISC&#160;&#160;&#160;4U</td>
225         </tr>
226       </table>
227 </div><div class="memdoc">
228 <p>Output flag of <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>: "something was read" </p>
229
230 </div>
231 </div>
232 <a class="anchor" id="a2f0d8069e93d3ac54d9320d6bdb8e7e7"></a>
233 <div class="memitem">
234 <div class="memproto">
235       <table class="memname">
236         <tr>
237           <td class="memname">#define VRNA_INPUT_FASTA_HEADER&#160;&#160;&#160;8U</td>
238         </tr>
239       </table>
240 </div><div class="memdoc">
241 <p>Input/Output flag of <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>:<br/>
242  if used as input option this tells <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a> that the data to be read should comply with the FASTA format</p>
243 <p>the function will return this flag if a fasta header was read </p>
244
245 </div>
246 </div>
247 <a class="anchor" id="a8566d6787972100e68b5a2a159b4cf45"></a>
248 <div class="memitem">
249 <div class="memproto">
250       <table class="memname">
251         <tr>
252           <td class="memname">#define VRNA_INPUT_SEQUENCE&#160;&#160;&#160;16U</td>
253         </tr>
254       </table>
255 </div><div class="memdoc">
256 <p>Input flag for <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>:<br/>
257  Tell <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a> that we assume to read a nucleotide sequence </p>
258
259 </div>
260 </div>
261 <a class="anchor" id="ac08a9df45b9721b97a47dbfe7a6e5f85"></a>
262 <div class="memitem">
263 <div class="memproto">
264       <table class="memname">
265         <tr>
266           <td class="memname">#define VRNA_INPUT_CONSTRAINT&#160;&#160;&#160;32U</td>
267         </tr>
268       </table>
269 </div><div class="memdoc">
270 <p>Input flag for <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>:<br/>
271  Tell <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a> that we assume to read a structure constraint </p>
272
273 </div>
274 </div>
275 <a class="anchor" id="a086742158293217a46ae2f71bb296937"></a>
276 <div class="memitem">
277 <div class="memproto">
278       <table class="memname">
279         <tr>
280           <td class="memname">#define VRNA_INPUT_NO_TRUNCATION&#160;&#160;&#160;256U</td>
281         </tr>
282       </table>
283 </div><div class="memdoc">
284 <p>Input switch for <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>: "do not trunkate the line by eliminating white spaces at end of line" </p>
285
286 </div>
287 </div>
288 <a class="anchor" id="a7a2e8c50a0c7ce82e60da1016e1367fd"></a>
289 <div class="memitem">
290 <div class="memproto">
291       <table class="memname">
292         <tr>
293           <td class="memname">#define VRNA_INPUT_NO_REST&#160;&#160;&#160;512U</td>
294         </tr>
295       </table>
296 </div><div class="memdoc">
297 <p>Input switch for <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>: "do fill rest array" </p>
298
299 </div>
300 </div>
301 <a class="anchor" id="a0de536599b881c787b0943a2671da476"></a>
302 <div class="memitem">
303 <div class="memproto">
304       <table class="memname">
305         <tr>
306           <td class="memname">#define VRNA_INPUT_NO_SPAN&#160;&#160;&#160;1024U</td>
307         </tr>
308       </table>
309 </div><div class="memdoc">
310 <p>Input switch for <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>: "never allow data to span more than one line" </p>
311
312 </div>
313 </div>
314 <a class="anchor" id="ab4db885222b3b69608310d7c7e63e286"></a>
315 <div class="memitem">
316 <div class="memproto">
317       <table class="memname">
318         <tr>
319           <td class="memname">#define VRNA_INPUT_NOSKIP_BLANK_LINES&#160;&#160;&#160;2048U</td>
320         </tr>
321       </table>
322 </div><div class="memdoc">
323 <p>Input switch for <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>: "do not skip empty lines" </p>
324
325 </div>
326 </div>
327 <a class="anchor" id="a305474b93ccb79ae4c7754016a8ddd84"></a>
328 <div class="memitem">
329 <div class="memproto">
330       <table class="memname">
331         <tr>
332           <td class="memname">#define VRNA_INPUT_BLANK_LINE&#160;&#160;&#160;4096U</td>
333         </tr>
334       </table>
335 </div><div class="memdoc">
336 <p>Output flag for <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>: "read an empty line" </p>
337
338 </div>
339 </div>
340 <a class="anchor" id="a0f6311f11bed1842e3a527ab27b294c6"></a>
341 <div class="memitem">
342 <div class="memproto">
343       <table class="memname">
344         <tr>
345           <td class="memname">#define VRNA_INPUT_NOSKIP_COMMENTS&#160;&#160;&#160;128U</td>
346         </tr>
347       </table>
348 </div><div class="memdoc">
349 <p>Input switch for <a class="el" href="utils_8h.html#a8ef1835eb83f542396f59f0b205965e5">get_input_line()</a>: "do not skip comment lines" </p>
350
351 </div>
352 </div>
353 <a class="anchor" id="af2062e0eeefffd3ed639af460b3d4fab"></a>
354 <div class="memitem">
355 <div class="memproto">
356       <table class="memname">
357         <tr>
358           <td class="memname">#define VRNA_INPUT_COMMENT&#160;&#160;&#160;8192U</td>
359         </tr>
360       </table>
361 </div><div class="memdoc">
362 <p>Output flag for <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>: "read a comment" </p>
363
364 </div>
365 </div>
366 <a class="anchor" id="a4e8d7120619b21df0309af425acbc9a2"></a>
367 <div class="memitem">
368 <div class="memproto">
369       <table class="memname">
370         <tr>
371           <td class="memname">#define VRNA_CONSTRAINT_PIPE&#160;&#160;&#160;1U</td>
372         </tr>
373       </table>
374 </div><div class="memdoc">
375 <p>pipe sign '|' switch for structure constraints (paired with another base) </p>
376
377 </div>
378 </div>
379 <a class="anchor" id="a55e1d16fd693ae9ec8e987b0750da804"></a>
380 <div class="memitem">
381 <div class="memproto">
382       <table class="memname">
383         <tr>
384           <td class="memname">#define VRNA_CONSTRAINT_DOT&#160;&#160;&#160;2U</td>
385         </tr>
386       </table>
387 </div><div class="memdoc">
388 <p>dot '.' switch for structure constraints (no constraint at all) </p>
389
390 </div>
391 </div>
392 <a class="anchor" id="a077c56550c915d4516d84a5ed8d051f4"></a>
393 <div class="memitem">
394 <div class="memproto">
395       <table class="memname">
396         <tr>
397           <td class="memname">#define VRNA_CONSTRAINT_X&#160;&#160;&#160;4U</td>
398         </tr>
399       </table>
400 </div><div class="memdoc">
401 <p>'x' switch for structure constraint (base must not pair) </p>
402
403 </div>
404 </div>
405 <a class="anchor" id="a0512d790f738742cbdcf3f7c87b46f48"></a>
406 <div class="memitem">
407 <div class="memproto">
408       <table class="memname">
409         <tr>
410           <td class="memname">#define VRNA_CONSTRAINT_ANG_BRACK&#160;&#160;&#160;8U</td>
411         </tr>
412       </table>
413 </div><div class="memdoc">
414 <p>angle brackets '&lt;', '&gt;' switch for structure constraint (paired downstream/upstream) </p>
415
416 </div>
417 </div>
418 <a class="anchor" id="aa20bfca4bb2903c8548000a33d7bbb53"></a>
419 <div class="memitem">
420 <div class="memproto">
421       <table class="memname">
422         <tr>
423           <td class="memname">#define VRNA_CONSTRAINT_RND_BRACK&#160;&#160;&#160;16U</td>
424         </tr>
425       </table>
426 </div><div class="memdoc">
427 <p>round brackets '(',')' switch for structure constraint (base i pairs base j) </p>
428
429 </div>
430 </div>
431 <a class="anchor" id="a7d725ef525b29891abef3f1ed42599a4"></a>
432 <div class="memitem">
433 <div class="memproto">
434       <table class="memname">
435         <tr>
436           <td class="memname">#define VRNA_CONSTRAINT_MULTILINE&#160;&#160;&#160;32U</td>
437         </tr>
438       </table>
439 </div><div class="memdoc">
440 <p>constraint may span over several lines </p>
441
442 </div>
443 </div>
444 <a class="anchor" id="a08d12a9a846ea593b7171d277c9f033f"></a>
445 <div class="memitem">
446 <div class="memproto">
447       <table class="memname">
448         <tr>
449           <td class="memname">#define VRNA_CONSTRAINT_NO_HEADER&#160;&#160;&#160;64U</td>
450         </tr>
451       </table>
452 </div><div class="memdoc">
453 <p>do not print the header information line </p>
454
455 </div>
456 </div>
457 <a class="anchor" id="a0a697f77a6fbb10f34e16fa68ed9e655"></a>
458 <div class="memitem">
459 <div class="memproto">
460       <table class="memname">
461         <tr>
462           <td class="memname">#define VRNA_CONSTRAINT_ALL&#160;&#160;&#160;128U</td>
463         </tr>
464       </table>
465 </div><div class="memdoc">
466 <p>placeholder for all constraining characters </p>
467
468 </div>
469 </div>
470 <a class="anchor" id="a99dc6b23dc4080a76e2ed1a81c20e94d"></a>
471 <div class="memitem">
472 <div class="memproto">
473       <table class="memname">
474         <tr>
475           <td class="memname">#define VRNA_CONSTRAINT_G&#160;&#160;&#160;256U</td>
476         </tr>
477       </table>
478 </div><div class="memdoc">
479 <p>'+' switch for structure constraint (base is involved in a gquad) </p>
480
481 </div>
482 </div>
483 <a class="anchor" id="abec89c09874528c6cb73140a4c3d86d7"></a>
484 <div class="memitem">
485 <div class="memproto">
486       <table class="memname">
487         <tr>
488           <td class="memname">#define VRNA_OPTION_MULTILINE&#160;&#160;&#160;32U</td>
489         </tr>
490       </table>
491 </div><div class="memdoc">
492 <p>Tell a function that an input is assumed to span several lines if used as input-option A function might also be returning this state telling that it has read data from multiple lines.</p>
493 <dl class="section see"><dt>See also:</dt><dd>extract_record_rest_structure(), <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a>, getConstraint() </dd></dl>
494
495 </div>
496 </div>
497 <a class="anchor" id="ae0b9cd0ce090bd69b951aa73e8fa4f7d"></a>
498 <div class="memitem">
499 <div class="memproto">
500       <table class="memname">
501         <tr>
502           <td class="memname">#define MIN2</td>
503           <td>(</td>
504           <td class="paramtype">&#160;</td>
505           <td class="paramname">A, </td>
506         </tr>
507         <tr>
508           <td class="paramkey"></td>
509           <td></td>
510           <td class="paramtype">&#160;</td>
511           <td class="paramname">B&#160;</td>
512         </tr>
513         <tr>
514           <td></td>
515           <td>)</td>
516           <td></td><td>&#160;&#160;&#160;((A) &lt; (B) ? (A) : (B))</td>
517         </tr>
518       </table>
519 </div><div class="memdoc">
520 <p>Get the minimum of two comparable values </p>
521
522 </div>
523 </div>
524 <a class="anchor" id="a33297b3679c713b0c4d897cd0fe3b122"></a>
525 <div class="memitem">
526 <div class="memproto">
527       <table class="memname">
528         <tr>
529           <td class="memname">#define MAX2</td>
530           <td>(</td>
531           <td class="paramtype">&#160;</td>
532           <td class="paramname">A, </td>
533         </tr>
534         <tr>
535           <td class="paramkey"></td>
536           <td></td>
537           <td class="paramtype">&#160;</td>
538           <td class="paramname">B&#160;</td>
539         </tr>
540         <tr>
541           <td></td>
542           <td>)</td>
543           <td></td><td>&#160;&#160;&#160;((A) &gt; (B) ? (A) : (B))</td>
544         </tr>
545       </table>
546 </div><div class="memdoc">
547 <p>Get the maximum of two comparable values </p>
548
549 </div>
550 </div>
551 <a class="anchor" id="a721b8d5f3abef17f10293f1f7f8c958e"></a>
552 <div class="memitem">
553 <div class="memproto">
554       <table class="memname">
555         <tr>
556           <td class="memname">#define MIN3</td>
557           <td>(</td>
558           <td class="paramtype">&#160;</td>
559           <td class="paramname">A, </td>
560         </tr>
561         <tr>
562           <td class="paramkey"></td>
563           <td></td>
564           <td class="paramtype">&#160;</td>
565           <td class="paramname">B, </td>
566         </tr>
567         <tr>
568           <td class="paramkey"></td>
569           <td></td>
570           <td class="paramtype">&#160;</td>
571           <td class="paramname">C&#160;</td>
572         </tr>
573         <tr>
574           <td></td>
575           <td>)</td>
576           <td></td><td>&#160;&#160;&#160;(<a class="el" href="utils_8h.html#ae0b9cd0ce090bd69b951aa73e8fa4f7d">MIN2</a>(  (<a class="el" href="utils_8h.html#ae0b9cd0ce090bd69b951aa73e8fa4f7d">MIN2</a>((A),(B))) ,(C)))</td>
577         </tr>
578       </table>
579 </div><div class="memdoc">
580 <p>Get the minimum of three comparable values </p>
581
582 </div>
583 </div>
584 <a class="anchor" id="a8d577123d2e66d2b7d0bf9af6e172b93"></a>
585 <div class="memitem">
586 <div class="memproto">
587       <table class="memname">
588         <tr>
589           <td class="memname">#define MAX3</td>
590           <td>(</td>
591           <td class="paramtype">&#160;</td>
592           <td class="paramname">A, </td>
593         </tr>
594         <tr>
595           <td class="paramkey"></td>
596           <td></td>
597           <td class="paramtype">&#160;</td>
598           <td class="paramname">B, </td>
599         </tr>
600         <tr>
601           <td class="paramkey"></td>
602           <td></td>
603           <td class="paramtype">&#160;</td>
604           <td class="paramname">C&#160;</td>
605         </tr>
606         <tr>
607           <td></td>
608           <td>)</td>
609           <td></td><td>&#160;&#160;&#160;(<a class="el" href="utils_8h.html#a33297b3679c713b0c4d897cd0fe3b122">MAX2</a>(  (<a class="el" href="utils_8h.html#a33297b3679c713b0c4d897cd0fe3b122">MAX2</a>((A),(B))) ,(C)))</td>
610         </tr>
611       </table>
612 </div><div class="memdoc">
613 <p>Get the maximum of three comparable values </p>
614
615 </div>
616 </div>
617 <a class="anchor" id="a03943706e48069237cd57f2d35ca987e"></a>
618 <div class="memitem">
619 <div class="memproto">
620       <table class="memname">
621         <tr>
622           <td class="memname">#define XSTR</td>
623           <td>(</td>
624           <td class="paramtype">&#160;</td>
625           <td class="paramname">s</td><td>)</td>
626           <td>&#160;&#160;&#160;<a class="el" href="utils_8h.html#a6388870e639eee9c0a69446876f1f8cc">STR</a>(s)</td>
627         </tr>
628       </table>
629 </div><div class="memdoc">
630 <p>Stringify a macro after expansion </p>
631
632 </div>
633 </div>
634 <a class="anchor" id="a6388870e639eee9c0a69446876f1f8cc"></a>
635 <div class="memitem">
636 <div class="memproto">
637       <table class="memname">
638         <tr>
639           <td class="memname">#define STR</td>
640           <td>(</td>
641           <td class="paramtype">&#160;</td>
642           <td class="paramname">s</td><td>)</td>
643           <td>&#160;&#160;&#160;#s</td>
644         </tr>
645       </table>
646 </div><div class="memdoc">
647 <p>Stringify a macro argument </p>
648
649 </div>
650 </div>
651 <a class="anchor" id="afb228174279df9486a5cb56ac0bc79a3"></a>
652 <div class="memitem">
653 <div class="memproto">
654       <table class="memname">
655         <tr>
656           <td class="memname">#define FILENAME_MAX_LENGTH&#160;&#160;&#160;80</td>
657         </tr>
658       </table>
659 </div><div class="memdoc">
660
661 <p>Maximum length of filenames that are generated by our programs. </p>
662 <p>This definition should be used throughout the complete ViennaRNA package wherever a static array holding filenames of output files is declared. </p>
663
664 </div>
665 </div>
666 <a class="anchor" id="a33c3b1826b8e2739f09f111ec719ded5"></a>
667 <div class="memitem">
668 <div class="memproto">
669       <table class="memname">
670         <tr>
671           <td class="memname">#define FILENAME_ID_LENGTH&#160;&#160;&#160;42</td>
672         </tr>
673       </table>
674 </div><div class="memdoc">
675
676 <p>Maximum length of id taken from fasta header for filename generation. </p>
677 <p>this has to be smaller than FILENAME_MAX_LENGTH since in most cases, some suffix will be appended to the ID </p>
678
679 </div>
680 </div>
681 <hr/><h2>Function Documentation</h2>
682 <a class="anchor" id="ad7e1e137b3bf1f7108933d302a7f0177"></a>
683 <div class="memitem">
684 <div class="memproto">
685       <table class="memname">
686         <tr>
687           <td class="memname">void* space </td>
688           <td>(</td>
689           <td class="paramtype">unsigned&#160;</td>
690           <td class="paramname"><em>size</em></td><td>)</td>
691           <td></td>
692         </tr>
693       </table>
694 </div><div class="memdoc">
695
696 <p>Allocate space safely. </p>
697 <dl class="params"><dt>Parameters:</dt><dd>
698   <table class="params">
699     <tr><td class="paramname">size</td><td>The size of the memory to be allocated in bytes </td></tr>
700   </table>
701   </dd>
702 </dl>
703 <dl class="section return"><dt>Returns:</dt><dd>A pointer to the allocated memory </dd></dl>
704
705 </div>
706 </div>
707 <a class="anchor" id="a9037ada838835b1b9db41581a021b0c8"></a>
708 <div class="memitem">
709 <div class="memproto">
710       <table class="memname">
711         <tr>
712           <td class="memname">void* xrealloc </td>
713           <td>(</td>
714           <td class="paramtype">void *&#160;</td>
715           <td class="paramname"><em>p</em>, </td>
716         </tr>
717         <tr>
718           <td class="paramkey"></td>
719           <td></td>
720           <td class="paramtype">unsigned&#160;</td>
721           <td class="paramname"><em>size</em>&#160;</td>
722         </tr>
723         <tr>
724           <td></td>
725           <td>)</td>
726           <td></td><td></td>
727         </tr>
728       </table>
729 </div><div class="memdoc">
730
731 <p>Reallocate space safely. </p>
732 <dl class="params"><dt>Parameters:</dt><dd>
733   <table class="params">
734     <tr><td class="paramname">p</td><td>A pointer to the memory region to be reallocated </td></tr>
735     <tr><td class="paramname">size</td><td>The size of the memory to be allocated in bytes </td></tr>
736   </table>
737   </dd>
738 </dl>
739 <dl class="section return"><dt>Returns:</dt><dd>A pointer to the newly allocated memory </dd></dl>
740
741 </div>
742 </div>
743 <a class="anchor" id="a127ce946e56b5a5773781cabe68e38c5"></a>
744 <div class="memitem">
745 <div class="memproto">
746       <table class="memname">
747         <tr>
748           <td class="memname">void nrerror </td>
749           <td>(</td>
750           <td class="paramtype">const char&#160;</td>
751           <td class="paramname"><em>message</em>[]</td><td>)</td>
752           <td></td>
753         </tr>
754       </table>
755 </div><div class="memdoc">
756
757 <p>Die with an error message. </p>
758 <dl class="section see"><dt>See also:</dt><dd><a class="el" href="utils_8h.html#af2355fa8746f2f30fbe71db65dea3d51" title="Print a warning message.">warn_user()</a> </dd></dl>
759 <dl class="params"><dt>Parameters:</dt><dd>
760   <table class="params">
761     <tr><td class="paramname">message</td><td>The error message to be printed before exiting with 'FAILURE' </td></tr>
762   </table>
763   </dd>
764 </dl>
765
766 </div>
767 </div>
768 <a class="anchor" id="af2355fa8746f2f30fbe71db65dea3d51"></a>
769 <div class="memitem">
770 <div class="memproto">
771       <table class="memname">
772         <tr>
773           <td class="memname">void warn_user </td>
774           <td>(</td>
775           <td class="paramtype">const char&#160;</td>
776           <td class="paramname"><em>message</em>[]</td><td>)</td>
777           <td></td>
778         </tr>
779       </table>
780 </div><div class="memdoc">
781
782 <p>Print a warning message. </p>
783 <p>Print a warning message to <em>stderr</em> </p>
784 <dl class="params"><dt>Parameters:</dt><dd>
785   <table class="params">
786     <tr><td class="paramname">message</td><td>The warning message </td></tr>
787   </table>
788   </dd>
789 </dl>
790
791 </div>
792 </div>
793 <a class="anchor" id="aaa328491c84996e445d027fde9800f2e"></a>
794 <div class="memitem">
795 <div class="memproto">
796       <table class="memname">
797         <tr>
798           <td class="memname">double urn </td>
799           <td>(</td>
800           <td class="paramtype">void&#160;</td>
801           <td class="paramname"></td><td>)</td>
802           <td></td>
803         </tr>
804       </table>
805 </div><div class="memdoc">
806
807 <p>get a random number from [0..1] </p>
808 <dl class="section note"><dt>Note:</dt><dd>Usually implemented by calling <em>erand48()</em>. </dd></dl>
809 <dl class="section return"><dt>Returns:</dt><dd>A random number in range [0..1] </dd></dl>
810
811 </div>
812 </div>
813 <a class="anchor" id="a68ff0849d44f62fe491800378a5ffcb4"></a>
814 <div class="memitem">
815 <div class="memproto">
816       <table class="memname">
817         <tr>
818           <td class="memname">int int_urn </td>
819           <td>(</td>
820           <td class="paramtype">int&#160;</td>
821           <td class="paramname"><em>from</em>, </td>
822         </tr>
823         <tr>
824           <td class="paramkey"></td>
825           <td></td>
826           <td class="paramtype">int&#160;</td>
827           <td class="paramname"><em>to</em>&#160;</td>
828         </tr>
829         <tr>
830           <td></td>
831           <td>)</td>
832           <td></td><td></td>
833         </tr>
834       </table>
835 </div><div class="memdoc">
836
837 <p>Generates a pseudo random integer in a specified range. </p>
838 <dl class="params"><dt>Parameters:</dt><dd>
839   <table class="params">
840     <tr><td class="paramname">from</td><td>The first number in range </td></tr>
841     <tr><td class="paramname">to</td><td>The last number in range </td></tr>
842   </table>
843   </dd>
844 </dl>
845 <dl class="section return"><dt>Returns:</dt><dd>A pseudo random number in range [from, to] </dd></dl>
846
847 </div>
848 </div>
849 <a class="anchor" id="a7afeb906cb36e9d77379eabc6907ac46"></a>
850 <div class="memitem">
851 <div class="memproto">
852       <table class="memname">
853         <tr>
854           <td class="memname">char* time_stamp </td>
855           <td>(</td>
856           <td class="paramtype">void&#160;</td>
857           <td class="paramname"></td><td>)</td>
858           <td></td>
859         </tr>
860       </table>
861 </div><div class="memdoc">
862
863 <p>Get a timestamp. </p>
864 <p>Returns a string containing the current date in the format </p>
865 <pre class="fragment">Fri Mar 19 21:10:57 1993</pre><dl class="section return"><dt>Returns:</dt><dd>A string containing the timestamp </dd></dl>
866
867 </div>
868 </div>
869 <a class="anchor" id="a1b95eac365a021572e1c37e5993a89be"></a>
870 <div class="memitem">
871 <div class="memproto">
872       <table class="memname">
873         <tr>
874           <td class="memname">char* random_string </td>
875           <td>(</td>
876           <td class="paramtype">int&#160;</td>
877           <td class="paramname"><em>l</em>, </td>
878         </tr>
879         <tr>
880           <td class="paramkey"></td>
881           <td></td>
882           <td class="paramtype">const char&#160;</td>
883           <td class="paramname"><em>symbols</em>[]&#160;</td>
884         </tr>
885         <tr>
886           <td></td>
887           <td>)</td>
888           <td></td><td></td>
889         </tr>
890       </table>
891 </div><div class="memdoc">
892
893 <p>Create a random string using characters from a specified symbol set. </p>
894 <dl class="params"><dt>Parameters:</dt><dd>
895   <table class="params">
896     <tr><td class="paramname">l</td><td>The length of the sequence </td></tr>
897     <tr><td class="paramname">symbols</td><td>The symbol set </td></tr>
898   </table>
899   </dd>
900 </dl>
901 <dl class="section return"><dt>Returns:</dt><dd>A random string of length 'l' containing characters from the symbolset </dd></dl>
902
903 </div>
904 </div>
905 <a class="anchor" id="ad9dc7bfc9aa664dc6698f17ce07fc7e7"></a>
906 <div class="memitem">
907 <div class="memproto">
908       <table class="memname">
909         <tr>
910           <td class="memname">int hamming </td>
911           <td>(</td>
912           <td class="paramtype">const char *&#160;</td>
913           <td class="paramname"><em>s1</em>, </td>
914         </tr>
915         <tr>
916           <td class="paramkey"></td>
917           <td></td>
918           <td class="paramtype">const char *&#160;</td>
919           <td class="paramname"><em>s2</em>&#160;</td>
920         </tr>
921         <tr>
922           <td></td>
923           <td>)</td>
924           <td></td><td></td>
925         </tr>
926       </table>
927 </div><div class="memdoc">
928
929 <p>Calculate hamming distance between two sequences. </p>
930 <p>Calculate the number of positions in which </p>
931 <dl class="params"><dt>Parameters:</dt><dd>
932   <table class="params">
933     <tr><td class="paramname">s1</td><td>The first sequence </td></tr>
934     <tr><td class="paramname">s2</td><td>The second sequence </td></tr>
935   </table>
936   </dd>
937 </dl>
938 <dl class="section return"><dt>Returns:</dt><dd>The hamming distance between s1 and s2 </dd></dl>
939
940 </div>
941 </div>
942 <a class="anchor" id="a96d3c36717d624514055ce201cab1542"></a>
943 <div class="memitem">
944 <div class="memproto">
945       <table class="memname">
946         <tr>
947           <td class="memname">int hamming_bound </td>
948           <td>(</td>
949           <td class="paramtype">const char *&#160;</td>
950           <td class="paramname"><em>s1</em>, </td>
951         </tr>
952         <tr>
953           <td class="paramkey"></td>
954           <td></td>
955           <td class="paramtype">const char *&#160;</td>
956           <td class="paramname"><em>s2</em>, </td>
957         </tr>
958         <tr>
959           <td class="paramkey"></td>
960           <td></td>
961           <td class="paramtype">int&#160;</td>
962           <td class="paramname"><em>n</em>&#160;</td>
963         </tr>
964         <tr>
965           <td></td>
966           <td>)</td>
967           <td></td><td></td>
968         </tr>
969       </table>
970 </div><div class="memdoc">
971
972 <p>Calculate hamming distance between two sequences up to a specified length. </p>
973 <p>This function is similar to <a class="el" href="utils_8h.html#ad9dc7bfc9aa664dc6698f17ce07fc7e7" title="Calculate hamming distance between two sequences.">hamming()</a> but instead of comparing both sequences up to their actual length only the first 'n' characters are taken into account </p>
974 <dl class="params"><dt>Parameters:</dt><dd>
975   <table class="params">
976     <tr><td class="paramname">s1</td><td>The first sequence </td></tr>
977     <tr><td class="paramname">s2</td><td>The second sequence </td></tr>
978   </table>
979   </dd>
980 </dl>
981 <dl class="section return"><dt>Returns:</dt><dd>The hamming distance between s1 and s2 </dd></dl>
982
983 </div>
984 </div>
985 <a class="anchor" id="abe51806d14cff0789a8c1df7dbc45b71"></a>
986 <div class="memitem">
987 <div class="memproto">
988       <table class="memname">
989         <tr>
990           <td class="memname">char* get_line </td>
991           <td>(</td>
992           <td class="paramtype">FILE *&#160;</td>
993           <td class="paramname"><em>fp</em></td><td>)</td>
994           <td></td>
995         </tr>
996       </table>
997 </div><div class="memdoc">
998
999 <p>Read a line of arbitrary length from a stream. </p>
1000 <p>Returns a pointer to the resulting string. The necessary memory is allocated and should be released using <em>free()</em> when the string is no longer needed.</p>
1001 <dl class="params"><dt>Parameters:</dt><dd>
1002   <table class="params">
1003     <tr><td class="paramname">fp</td><td>A file pointer to the stream where the function should read from </td></tr>
1004   </table>
1005   </dd>
1006 </dl>
1007 <dl class="section return"><dt>Returns:</dt><dd>A pointer to the resulting string </dd></dl>
1008
1009 </div>
1010 </div>
1011 <a class="anchor" id="a8ef1835eb83f542396f59f0b205965e5"></a>
1012 <div class="memitem">
1013 <div class="memproto">
1014       <table class="memname">
1015         <tr>
1016           <td class="memname">unsigned int get_input_line </td>
1017           <td>(</td>
1018           <td class="paramtype">char **&#160;</td>
1019           <td class="paramname"><em>string</em>, </td>
1020         </tr>
1021         <tr>
1022           <td class="paramkey"></td>
1023           <td></td>
1024           <td class="paramtype">unsigned int&#160;</td>
1025           <td class="paramname"><em>options</em>&#160;</td>
1026         </tr>
1027         <tr>
1028           <td></td>
1029           <td>)</td>
1030           <td></td><td></td>
1031         </tr>
1032       </table>
1033 </div><div class="memdoc">
1034 <p>Retrieve a line from 'stdin' savely while skipping comment characters and other features This function returns the type of input it has read if recognized. An option argument allows to switch between different reading modes.<br/>
1035  Currently available options are:<br/>
1036  #VRNA_INPUT_NOPRINT_COMMENTS, <a class="el" href="utils_8h.html#a0f6311f11bed1842e3a527ab27b294c6">VRNA_INPUT_NOSKIP_COMMENTS</a>, #VRNA_INPUT_NOELIM_WS_SUFFIX</p>
1037 <p>pass a collection of options as one value like this: </p>
1038 <pre class="fragment">get_input_line(string, option_1 | option_2 | option_n) </pre><p>If the function recognizes the type of input, it will report it in the return value. It also reports if a user defined 'quit' command (@-sign on 'stdin') was given. Possible return values are:<br/>
1039  <a class="el" href="utils_8h.html#a2f0d8069e93d3ac54d9320d6bdb8e7e7">VRNA_INPUT_FASTA_HEADER</a>, <a class="el" href="utils_8h.html#ad403c9ea58f1836689404c2931419c8c">VRNA_INPUT_ERROR</a>, <a class="el" href="utils_8h.html#a8e3241b321c9c1a78a69e59e2e019a71">VRNA_INPUT_MISC</a>, <a class="el" href="utils_8h.html#a72f3c6ca5c83d2b9baed2922d19c403d">VRNA_INPUT_QUIT</a></p>
1040 <dl class="params"><dt>Parameters:</dt><dd>
1041   <table class="params">
1042     <tr><td class="paramname">string</td><td>A pointer to the character array that contains the line read </td></tr>
1043     <tr><td class="paramname">options</td><td>A collection of options for switching the functions behavior </td></tr>
1044   </table>
1045   </dd>
1046 </dl>
1047 <dl class="section return"><dt>Returns:</dt><dd>A flag with information about what has been read </dd></dl>
1048
1049 </div>
1050 </div>
1051 <a class="anchor" id="afd194a69af9d92b5b0412a7627ac1595"></a>
1052 <div class="memitem">
1053 <div class="memproto">
1054       <table class="memname">
1055         <tr>
1056           <td class="memname">unsigned int read_record </td>
1057           <td>(</td>
1058           <td class="paramtype">char **&#160;</td>
1059           <td class="paramname"><em>header</em>, </td>
1060         </tr>
1061         <tr>
1062           <td class="paramkey"></td>
1063           <td></td>
1064           <td class="paramtype">char **&#160;</td>
1065           <td class="paramname"><em>sequence</em>, </td>
1066         </tr>
1067         <tr>
1068           <td class="paramkey"></td>
1069           <td></td>
1070           <td class="paramtype">char ***&#160;</td>
1071           <td class="paramname"><em>rest</em>, </td>
1072         </tr>
1073         <tr>
1074           <td class="paramkey"></td>
1075           <td></td>
1076           <td class="paramtype">unsigned int&#160;</td>
1077           <td class="paramname"><em>options</em>&#160;</td>
1078         </tr>
1079         <tr>
1080           <td></td>
1081           <td>)</td>
1082           <td></td><td></td>
1083         </tr>
1084       </table>
1085 </div><div class="memdoc">
1086
1087 <p>Get a data record from stdin. </p>
1088 <pre class="fragment">This function may be used to obtain complete datasets from stdin. A dataset is always
1089 defined to contain at least a sequence. If data on stdin starts with a fasta header,
1090 i.e. a line like
1091 @verbatim &gt;some header info </pre><p> then <a class="el" href="utils_8h.html#afd194a69af9d92b5b0412a7627ac1595" title="Get a data record from stdin.">read_record()</a> will assume that the sequence that follows the header may span over several lines. To disable this behavior and to assign a single line to the argument 'sequence' one can pass VRNA_INPUT_NO_SPAN in the 'options' argument. If no fasta header is read in the beginning of a data block, a sequence must not span over multiple lines!<br/>
1092  Unless the options <a class="el" href="utils_8h.html#a0f6311f11bed1842e3a527ab27b294c6">VRNA_INPUT_NOSKIP_COMMENTS</a> or <a class="el" href="utils_8h.html#ab4db885222b3b69608310d7c7e63e286">VRNA_INPUT_NOSKIP_BLANK_LINES</a> are passed, a sequence may be interrupted by lines starting with a comment character or empty lines.<br/>
1093  A sequence is regarded as completely read if it was either assumed to not span over multiple lines, a secondary structure or structure constraint follows the sequence on the next line or a new header marks the beginning of a new sequence...<br/>
1094  All lines following the sequence (this includes comments) and not initiating a new dataset are available through the line-array 'rest'. Here one can usually find the structure constraint or other information belonging to the current dataset. Filling of 'rest' may be prevented by passing <a class="el" href="utils_8h.html#a7a2e8c50a0c7ce82e60da1016e1367fd">VRNA_INPUT_NO_REST</a> to the options argument.<br/>
1095 </p>
1096 <dl class="section note"><dt>Note:</dt><dd>This function will exit any program with an error message if no sequence could be read!</dd></dl>
1097 <p>The main purpose of this function is to be able to easily parse blocks of data from stdin in the header of a loop where all calculations for the appropriate data is done inside the loop. The loop may be then left on certain return values, e.g.: </p>
1098 <pre class="fragment"></pre><p> char *id, *seq, **rest; int i; while(!(read_record(&amp;id, &amp;seq, &amp;rest, 0) &amp; (VRNA_INPUT_ERROR | VRNA_INPUT_QUIT))){ if(id) printf("%s\n", id); printf("%s\n", seq); if(rest) for(i=0;rest[i];i++) printf("%s\n", rest[i]); }  </p>
1099 <pre class="fragment">In the example above, the while loop will be terminated when read_record() returns either an
1100 error or a user initiated quit request.\n
1101 As long as data is read from stdin, the id is printed if it is available for the current block
1102 of data. The sequence will be printed in any case and if some more lines belong to the current
1103 block of data each line will be printed as well.
1104
1105 \note Do not forget to free the memory occupied by header, sequence and rest!
1106
1107 \param  header    A pointer which will be set such that it points to the header of the record
1108 \param  sequence  A pointer which will be set such that it points to the sequence of the record
1109 \param  rest      A pointer which will be set such that it points to an array of lines which also belong to the record
1110 \param  options   Some options which may be passed to alter the behavior of the function, use 0 for no options
1111 \return           A flag with information about what the function actually did read</pre> 
1112 </div>
1113 </div>
1114 <a class="anchor" id="ac6dfa5e22928c087c6e09ff0054a7ced"></a>
1115 <div class="memitem">
1116 <div class="memproto">
1117       <table class="memname">
1118         <tr>
1119           <td class="memname">char* pack_structure </td>
1120           <td>(</td>
1121           <td class="paramtype">const char *&#160;</td>
1122           <td class="paramname"><em>struc</em></td><td>)</td>
1123           <td></td>
1124         </tr>
1125       </table>
1126 </div><div class="memdoc">
1127
1128 <p>Pack secondary secondary structure, 5:1 compression using base 3 encoding. </p>
1129 <p>Returns a binary string encoding of the secondary structure using a 5:1 compression scheme. The string is NULL terminated and can therefore be used with standard string functions such as strcmp(). Useful for programs that need to keep many structures in memory.</p>
1130 <dl class="params"><dt>Parameters:</dt><dd>
1131   <table class="params">
1132     <tr><td class="paramname">struc</td><td>The secondary structure in dot-bracket notation </td></tr>
1133   </table>
1134   </dd>
1135 </dl>
1136 <dl class="section return"><dt>Returns:</dt><dd>The binary encoded structure </dd></dl>
1137
1138 </div>
1139 </div>
1140 <a class="anchor" id="a071c6921efe1eb974f115ee6fefa3c39"></a>
1141 <div class="memitem">
1142 <div class="memproto">
1143       <table class="memname">
1144         <tr>
1145           <td class="memname">char* unpack_structure </td>
1146           <td>(</td>
1147           <td class="paramtype">const char *&#160;</td>
1148           <td class="paramname"><em>packed</em></td><td>)</td>
1149           <td></td>
1150         </tr>
1151       </table>
1152 </div><div class="memdoc">
1153
1154 <p>Unpack secondary structure previously packed with <a class="el" href="utils_8h.html#ac6dfa5e22928c087c6e09ff0054a7ced" title="Pack secondary secondary structure, 5:1 compression using base 3 encoding.">pack_structure()</a> </p>
1155 <p>Translate a compressed binary string produced by <a class="el" href="utils_8h.html#ac6dfa5e22928c087c6e09ff0054a7ced" title="Pack secondary secondary structure, 5:1 compression using base 3 encoding.">pack_structure()</a> back into the familiar dot-bracket notation.</p>
1156 <dl class="params"><dt>Parameters:</dt><dd>
1157   <table class="params">
1158     <tr><td class="paramname">packed</td><td>The binary encoded packed secondary structure </td></tr>
1159   </table>
1160   </dd>
1161 </dl>
1162 <dl class="section return"><dt>Returns:</dt><dd>The unpacked secondary structure in dot-bracket notation </dd></dl>
1163
1164 </div>
1165 </div>
1166 <a class="anchor" id="a89c32307ee50a0026f4a3131fac0845a"></a>
1167 <div class="memitem">
1168 <div class="memproto">
1169       <table class="memname">
1170         <tr>
1171           <td class="memname">short* make_pair_table </td>
1172           <td>(</td>
1173           <td class="paramtype">const char *&#160;</td>
1174           <td class="paramname"><em>structure</em></td><td>)</td>
1175           <td></td>
1176         </tr>
1177       </table>
1178 </div><div class="memdoc">
1179
1180 <p>Create a pair table of a secondary structure. </p>
1181 <p>Returns a newly allocated table, such that table[i]=j if (i.j) pair or 0 if i is unpaired, table[0] contains the length of the structure.</p>
1182 <dl class="params"><dt>Parameters:</dt><dd>
1183   <table class="params">
1184     <tr><td class="paramname">structure</td><td>The secondary structure in dot-bracket notation </td></tr>
1185   </table>
1186   </dd>
1187 </dl>
1188 <dl class="section return"><dt>Returns:</dt><dd>A pointer to the created pair_table </dd></dl>
1189
1190 </div>
1191 </div>
1192 <a class="anchor" id="afeaa6d68eef3a99d0a7aa08aa91c6601"></a>
1193 <div class="memitem">
1194 <div class="memproto">
1195       <table class="memname">
1196         <tr>
1197           <td class="memname">short* copy_pair_table </td>
1198           <td>(</td>
1199           <td class="paramtype">const short *&#160;</td>
1200           <td class="paramname"><em>pt</em></td><td>)</td>
1201           <td></td>
1202         </tr>
1203       </table>
1204 </div><div class="memdoc">
1205
1206 <p>Get an exact copy of a pair table. </p>
1207 <dl class="params"><dt>Parameters:</dt><dd>
1208   <table class="params">
1209     <tr><td class="paramname">pt</td><td>The pair table to be copied </td></tr>
1210   </table>
1211   </dd>
1212 </dl>
1213 <dl class="section return"><dt>Returns:</dt><dd>A pointer to the copy of 'pt' </dd></dl>
1214
1215 </div>
1216 </div>
1217 <a class="anchor" id="a3c81b3967056c3888b8472b65fbb16f5"></a>
1218 <div class="memitem">
1219 <div class="memproto">
1220       <table class="memname">
1221         <tr>
1222           <td class="memname">short* alimake_pair_table </td>
1223           <td>(</td>
1224           <td class="paramtype">const char *&#160;</td>
1225           <td class="paramname"><em>structure</em></td><td>)</td>
1226           <td></td>
1227         </tr>
1228       </table>
1229 </div><div class="memdoc">
1230 <p>***Pair table for snoop align </p>
1231
1232 </div>
1233 </div>
1234 <a class="anchor" id="a9aa3bf3b4346bb7fb88efc154dd07a79"></a>
1235 <div class="memitem">
1236 <div class="memproto">
1237       <table class="memname">
1238         <tr>
1239           <td class="memname">short* make_pair_table_snoop </td>
1240           <td>(</td>
1241           <td class="paramtype">const char *&#160;</td>
1242           <td class="paramname"><em>structure</em></td><td>)</td>
1243           <td></td>
1244         </tr>
1245       </table>
1246 </div><div class="memdoc">
1247 <p>returns a newly allocated table, such that: table[i]=j if (i.j) pair or 0 if i is unpaired, table[0] contains the length of the structure. The special pseudoknotted H/ACA-mRNA structure is taken into account. </p>
1248
1249 </div>
1250 </div>
1251 <a class="anchor" id="a4358e89f64cc87a563b7ef3855f75bed"></a>
1252 <div class="memitem">
1253 <div class="memproto">
1254       <table class="memname">
1255         <tr>
1256           <td class="memname">int* make_loop_index_pt </td>
1257           <td>(</td>
1258           <td class="paramtype">short *&#160;</td>
1259           <td class="paramname"><em>pt</em></td><td>)</td>
1260           <td></td>
1261         </tr>
1262       </table>
1263 </div><div class="memdoc">
1264
1265 <p>Compute the "base pair" distance between two secondary structures s1 and s2. </p>
1266 <p>The sequences should have the same length. dist = number of base pairs in one structure but not in the other same as edit distance with open-pair close-pair as move-set</p>
1267 <dl class="params"><dt>Parameters:</dt><dd>
1268   <table class="params">
1269     <tr><td class="paramname">str1</td><td>First structure in dot-bracket notation </td></tr>
1270     <tr><td class="paramname">str2</td><td>Second structure in dot-bracket notation </td></tr>
1271   </table>
1272   </dd>
1273 </dl>
1274 <dl class="section return"><dt>Returns:</dt><dd>The base pair distance between str1 and str2 </dd></dl>
1275
1276 </div>
1277 </div>
1278 <a class="anchor" id="a6bf778117d31b7fd90db435323f4ef74"></a>
1279 <div class="memitem">
1280 <div class="memproto">
1281       <table class="memname">
1282         <tr>
1283           <td class="memname">void print_tty_input_seq </td>
1284           <td>(</td>
1285           <td class="paramtype">void&#160;</td>
1286           <td class="paramname"></td><td>)</td>
1287           <td></td>
1288         </tr>
1289       </table>
1290 </div><div class="memdoc">
1291
1292 <p>Print a line to <em>stdout</em> that asks for an input sequence. </p>
1293 <p>There will also be a ruler (scale line) printed that helps orientation of the sequence positions </p>
1294
1295 </div>
1296 </div>
1297 <a class="anchor" id="ae4ef89b662a3e9b5b5f0781d9757aba0"></a>
1298 <div class="memitem">
1299 <div class="memproto">
1300       <table class="memname">
1301         <tr>
1302           <td class="memname">void print_tty_input_seq_str </td>
1303           <td>(</td>
1304           <td class="paramtype">const char *&#160;</td>
1305           <td class="paramname"><em>s</em></td><td>)</td>
1306           <td></td>
1307         </tr>
1308       </table>
1309 </div><div class="memdoc">
1310
1311 <p>Print a line with a user defined string and a ruler to stdout. </p>
1312 <p>(usually this is used to ask for user input) There will also be a ruler (scale line) printed that helps orientation of the sequence positions</p>
1313 <dl class="params"><dt>Parameters:</dt><dd>
1314   <table class="params">
1315     <tr><td class="paramname">s</td><td>A user defined string that will be printed to stdout </td></tr>
1316   </table>
1317   </dd>
1318 </dl>
1319
1320 </div>
1321 </div>
1322 <a class="anchor" id="a4d167deb70bb51723e44374dc981deb2"></a>
1323 <div class="memitem">
1324 <div class="memproto">
1325       <table class="memname">
1326         <tr>
1327           <td class="memname">void print_tty_constraint </td>
1328           <td>(</td>
1329           <td class="paramtype">unsigned int&#160;</td>
1330           <td class="paramname"><em>option</em></td><td>)</td>
1331           <td></td>
1332         </tr>
1333       </table>
1334 </div><div class="memdoc">
1335
1336 <p>Print structure constraint characters to stdout. (constraint support is specified by option parameter) </p>
1337 <p>Currently available options are:<br/>
1338  <a class="el" href="utils_8h.html#a4e8d7120619b21df0309af425acbc9a2">VRNA_CONSTRAINT_PIPE</a> (paired with another base)<br/>
1339  <a class="el" href="utils_8h.html#a55e1d16fd693ae9ec8e987b0750da804">VRNA_CONSTRAINT_DOT</a> (no constraint at all)<br/>
1340  <a class="el" href="utils_8h.html#a077c56550c915d4516d84a5ed8d051f4">VRNA_CONSTRAINT_X</a> (base must not pair)<br/>
1341  <a class="el" href="utils_8h.html#a0512d790f738742cbdcf3f7c87b46f48">VRNA_CONSTRAINT_ANG_BRACK</a> (paired downstream/upstream)<br/>
1342  <a class="el" href="utils_8h.html#aa20bfca4bb2903c8548000a33d7bbb53">VRNA_CONSTRAINT_RND_BRACK</a> (base i pairs base j)<br/>
1343 </p>
1344 <p>pass a collection of options as one value like this: </p>
1345 <pre class="fragment">print_tty_constraint(option_1 | option_2 | option_n) </pre><dl class="params"><dt>Parameters:</dt><dd>
1346   <table class="params">
1347     <tr><td class="paramname">option</td><td>Option switch that tells which constraint help will be printed </td></tr>
1348   </table>
1349   </dd>
1350 </dl>
1351
1352 </div>
1353 </div>
1354 <a class="anchor" id="ad3f18dd83f958f18b2f26ecb99305208"></a>
1355 <div class="memitem">
1356 <div class="memproto">
1357       <table class="memname">
1358         <tr>
1359           <td class="memname">void str_DNA2RNA </td>
1360           <td>(</td>
1361           <td class="paramtype">char *&#160;</td>
1362           <td class="paramname"><em>sequence</em></td><td>)</td>
1363           <td></td>
1364         </tr>
1365       </table>
1366 </div><div class="memdoc">
1367
1368 <p>Convert a DNA input sequence to RNA alphabet. </p>
1369 <p>This function substitudes <em>T</em> and <em>t</em> with <em>U</em> and <em>u</em>, respectively</p>
1370 <dl class="params"><dt>Parameters:</dt><dd>
1371   <table class="params">
1372     <tr><td class="paramname">sequence</td><td>The sequence to be converted </td></tr>
1373   </table>
1374   </dd>
1375 </dl>
1376
1377 </div>
1378 </div>
1379 <a class="anchor" id="a17b796b806f96b70382077fb5bc519bb"></a>
1380 <div class="memitem">
1381 <div class="memproto">
1382       <table class="memname">
1383         <tr>
1384           <td class="memname">void str_uppercase </td>
1385           <td>(</td>
1386           <td class="paramtype">char *&#160;</td>
1387           <td class="paramname"><em>sequence</em></td><td>)</td>
1388           <td></td>
1389         </tr>
1390       </table>
1391 </div><div class="memdoc">
1392
1393 <p>Convert an input sequence to uppercase. </p>
1394 <dl class="params"><dt>Parameters:</dt><dd>
1395   <table class="params">
1396     <tr><td class="paramname">sequence</td><td>The sequence to be converted </td></tr>
1397   </table>
1398   </dd>
1399 </dl>
1400
1401 </div>
1402 </div>
1403 <a class="anchor" id="a55c0f6b3b07b6adf2ee235ba901fe397"></a>
1404 <div class="memitem">
1405 <div class="memproto">
1406       <table class="memname">
1407         <tr>
1408           <td class="memname">int* get_iindx </td>
1409           <td>(</td>
1410           <td class="paramtype">unsigned int&#160;</td>
1411           <td class="paramname"><em>length</em></td><td>)</td>
1412           <td></td>
1413         </tr>
1414       </table>
1415 </div><div class="memdoc">
1416
1417 <p>Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function related functions. </p>
1418 <p>Access of a position "(i,j)" is then accomplished by using </p>
1419 <pre class="fragment">(i,j) ~ iindx[i]-j </pre><p> This function is necessary as most of the two-dimensional energy matrices are actually one-dimensional arrays throughout the ViennaRNAPackage</p>
1420 <p>Consult the implemented code to find out about the mapping formula ;)</p>
1421 <dl class="section see"><dt>See also:</dt><dd><a class="el" href="utils_8h.html#a4d9ee1572c1bfcd02d3d3f2db8a6530f" title="Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions...">get_indx()</a> </dd></dl>
1422 <dl class="params"><dt>Parameters:</dt><dd>
1423   <table class="params">
1424     <tr><td class="paramname">length</td><td>The length of the RNA sequence </td></tr>
1425   </table>
1426   </dd>
1427 </dl>
1428 <dl class="section return"><dt>Returns:</dt><dd>The mapper array </dd></dl>
1429
1430 </div>
1431 </div>
1432 <a class="anchor" id="a4d9ee1572c1bfcd02d3d3f2db8a6530f"></a>
1433 <div class="memitem">
1434 <div class="memproto">
1435       <table class="memname">
1436         <tr>
1437           <td class="memname">int* get_indx </td>
1438           <td>(</td>
1439           <td class="paramtype">unsigned int&#160;</td>
1440           <td class="paramname"><em>length</em></td><td>)</td>
1441           <td></td>
1442         </tr>
1443       </table>
1444 </div><div class="memdoc">
1445
1446 <p>Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions. </p>
1447 <p>Access of a position "(i,j)" is then accomplished by using </p>
1448 <pre class="fragment">(i,j) ~ indx[j]+i </pre><p> This function is necessary as most of the two-dimensional energy matrices are actually one-dimensional arrays throughout the ViennaRNAPackage</p>
1449 <p>Consult the implemented code to find out about the mapping formula ;)</p>
1450 <dl class="section see"><dt>See also:</dt><dd><a class="el" href="utils_8h.html#a55c0f6b3b07b6adf2ee235ba901fe397" title="Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function relat...">get_iindx()</a> </dd></dl>
1451 <dl class="params"><dt>Parameters:</dt><dd>
1452   <table class="params">
1453     <tr><td class="paramname">length</td><td>The length of the RNA sequence </td></tr>
1454   </table>
1455   </dd>
1456 </dl>
1457 <dl class="section return"><dt>Returns:</dt><dd>The mapper array </dd></dl>
1458
1459 </div>
1460 </div>
1461 <a class="anchor" id="a36c3a6c3218b041f992052767bc74549"></a>
1462 <div class="memitem">
1463 <div class="memproto">
1464       <table class="memname">
1465         <tr>
1466           <td class="memname">void constrain_ptypes </td>
1467           <td>(</td>
1468           <td class="paramtype">const char *&#160;</td>
1469           <td class="paramname"><em>constraint</em>, </td>
1470         </tr>
1471         <tr>
1472           <td class="paramkey"></td>
1473           <td></td>
1474           <td class="paramtype">unsigned int&#160;</td>
1475           <td class="paramname"><em>length</em>, </td>
1476         </tr>
1477         <tr>
1478           <td class="paramkey"></td>
1479           <td></td>
1480           <td class="paramtype">char *&#160;</td>
1481           <td class="paramname"><em>ptype</em>, </td>
1482         </tr>
1483         <tr>
1484           <td class="paramkey"></td>
1485           <td></td>
1486           <td class="paramtype">int *&#160;</td>
1487           <td class="paramname"><em>BP</em>, </td>
1488         </tr>
1489         <tr>
1490           <td class="paramkey"></td>
1491           <td></td>
1492           <td class="paramtype">int&#160;</td>
1493           <td class="paramname"><em>min_loop_size</em>, </td>
1494         </tr>
1495         <tr>
1496           <td class="paramkey"></td>
1497           <td></td>
1498           <td class="paramtype">unsigned int&#160;</td>
1499           <td class="paramname"><em>idx_type</em>&#160;</td>
1500         </tr>
1501         <tr>
1502           <td></td>
1503           <td>)</td>
1504           <td></td><td></td>
1505         </tr>
1506       </table>
1507 </div><div class="memdoc">
1508
1509 <p>Insert constraining pair types according to constraint structure string. </p>
1510 <dl class="section see"><dt>See also:</dt><dd><a class="el" href="utils_8h.html#a4d9ee1572c1bfcd02d3d3f2db8a6530f" title="Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions...">get_indx()</a>, <a class="el" href="utils_8h.html#a55c0f6b3b07b6adf2ee235ba901fe397" title="Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function relat...">get_iindx()</a></dd></dl>
1511 <dl class="params"><dt>Parameters:</dt><dd>
1512   <table class="params">
1513     <tr><td class="paramname">constraint</td><td>The structure constraint string </td></tr>
1514     <tr><td class="paramname">length</td><td>The actual length of the sequence (constraint may be shorter) </td></tr>
1515     <tr><td class="paramname">ptype</td><td>A pointer to the basepair type array </td></tr>
1516     <tr><td class="paramname">min_loop_size</td><td>The minimal loop size (usually <a class="el" href="energy__const_8h.html#ae646250fd59311356c7e5722a81c3a96">TURN</a> ) </td></tr>
1517     <tr><td class="paramname">idx_type</td><td>Define the access type for base pair type array (0 = indx, 1 = iindx) </td></tr>
1518   </table>
1519   </dd>
1520 </dl>
1521
1522 </div>
1523 </div>
1524 <hr/><h2>Variable Documentation</h2>
1525 <a class="anchor" id="af9a866c8417afda7368bbac939ab3c47"></a>
1526 <div class="memitem">
1527 <div class="memproto">
1528       <table class="memname">
1529         <tr>
1530           <td class="memname">unsigned short xsubi[3]</td>
1531         </tr>
1532       </table>
1533 </div><div class="memdoc">
1534
1535 <p>Current 48 bit random number. </p>
1536 <p>This variable is used by <a class="el" href="utils_8h.html#aaa328491c84996e445d027fde9800f2e" title="get a random number from [0..1]">urn()</a>. These should be set to some random number seeds before the first call to <a class="el" href="utils_8h.html#aaa328491c84996e445d027fde9800f2e" title="get a random number from [0..1]">urn()</a>.</p>
1537 <dl class="section see"><dt>See also:</dt><dd><a class="el" href="utils_8h.html#aaa328491c84996e445d027fde9800f2e" title="get a random number from [0..1]">urn()</a> </dd></dl>
1538
1539 </div>
1540 </div>
1541 </div><!-- contents -->
1542 </div><!-- doc-content -->
1543 <!-- start footer part -->
1544 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1545   <ul>
1546     <li class="navelem"><a class="el" href="dir_d72344b28b4f2089ce25682c4e6eba22.html">H</a></li><li class="navelem"><a class="el" href="utils_8h.html">utils.h</a></li>
1547     <li class="footer">Generated on Wed Jul 24 2013 13:38:59 for RNAlib-2.1.2 by
1548     <a href="http://www.doxygen.org/index.html">
1549     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
1550   </ul>
1551 </div>
1552 </body>
1553 </html>