1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>pairwise: pairwise.c File Reference</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
6 <!-- Generated by Doxygen 1.3.2 -->
7 <div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
8 <h1>pairwise.c File Reference</h1><code>#include <stdio.h></code><br>
9 <code>#include <stdlib.h></code><br>
10 <code>#include <errno.h></code><br>
11 <code>#include <string.h></code><br>
12 <code>#include "<a class="el" href="pairwise_8h-source.html">pairwise.h</a>"</code><br>
15 Include dependency graph for pairwise.c:<p><center><img src="pairwise_8c__incl.png" border="0" usemap="#pairwise.c_map" alt="Include dependency graph"></center>
16 <map name="pairwise.c_map">
17 <area href="pairwise_8h.html" shape="rect" coords="135,86,207,105" alt="">
21 <a href="pairwise_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
23 <tr><td colspan=2><br><h2>Defines</h2></td></tr>
24 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a0">ARRAY</a> 50</td></tr>
26 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a1">FILEBUF</a> 1000</td></tr>
28 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a2">MAX</a>(A, B) ((A) > (B) ? (A) : (B))</td></tr>
30 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a3">MIN</a>(A, B) ((A) < (B) ? (A) : (B))</td></tr>
32 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a4">MALLOC</a>(PTR, SIZE) do { PTR = malloc(SIZE); if (PTR == NULL) fatal_sys_error("malloc returned NULL"); } while (0)</td></tr>
34 <tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a5">REALLOC</a>(PTR, SIZE) do { PTR = realloc(PTR, SIZE); if (PTR == NULL && SIZE != 0) fatal_sys_error("realloc returned NULL"); } while (0)</td></tr>
36 <tr><td colspan=2><br><h2>Functions</h2></td></tr>
37 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a6">fatal_error</a> (char *message)</td></tr>
39 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a7">fatal_sys_error</a> (char *message)</td></tr>
41 <tr><td class="memItemLeft" nowrap align=right valign=top>FILE * </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a8">xfopen</a> (const char *path, const char *mode)</td></tr>
43 <tr><td class="memItemLeft" nowrap align=right valign=top>void * </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a9">xmalloc</a> (size_t size)</td></tr>
45 <tr><td class="memItemLeft" nowrap align=right valign=top>void * </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a10">xrealloc</a> (void *ptr, size_t size)</td></tr>
47 <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a11">diff</a> (char a, char b)</td></tr>
49 <tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a12">pairwise</a> (struct <a class="el" href="structfasta.html">fasta</a> *a, struct <a class="el" href="structfasta.html">fasta</a> *b)</td></tr>
51 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a13">populate</a> (struct <a class="el" href="structfasta.html">fasta</a> *a)</td></tr>
53 <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a14">check_length</a> (struct <a class="el" href="structfasta.html">fasta</a> **array)</td></tr>
55 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="structfasta.html">fasta</a> ** </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a15">read_fasta</a> (FILE *fh)</td></tr>
57 <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="pairwise_8c.html#a16">main</a> (int argc, char **argv)</td></tr>
60 <hr><h2>Define Documentation</h2>
61 <a name="a0" doxytag="pairwise.c::ARRAY"></a><p>
62 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
65 <table cellpadding="0" cellspacing="0" border="0">
67 <td class="md" nowrap valign="top"> #define ARRAY 50
72 <table cellspacing=5 cellpadding=0 border=0>
82 Definition at line <a class="el" href="pairwise_8c-source.html#l00029">29</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
84 Referenced by <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>. </td>
87 <a name="a1" doxytag="pairwise.c::FILEBUF"></a><p>
88 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
91 <table cellpadding="0" cellspacing="0" border="0">
93 <td class="md" nowrap valign="top"> #define FILEBUF 1000
98 <table cellspacing=5 cellpadding=0 border=0>
108 Definition at line <a class="el" href="pairwise_8c-source.html#l00030">30</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
110 Referenced by <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>. </td>
113 <a name="a4" doxytag="pairwise.c::MALLOC"></a><p>
114 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
117 <table cellpadding="0" cellspacing="0" border="0">
119 <td class="md" nowrap valign="top"> #define MALLOC</td>
120 <td class="md" valign="top">( </td>
121 <td class="md" nowrap valign="top">PTR, <tr>
124 <td class="md" nowrap>SIZE </td>
125 <td class="mdname1" valign="top" nowrap> </td>
126 <td class="md" valign="top"> ) </td>
127 <td class="md" nowrap> do { PTR = malloc(SIZE); if (PTR == NULL) fatal_sys_error("malloc returned NULL"); } while (0)
132 <table cellspacing=5 cellpadding=0 border=0>
142 Definition at line <a class="el" href="pairwise_8c-source.html#l00045">45</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>. </td>
145 <a name="a2" doxytag="pairwise.c::MAX"></a><p>
146 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
149 <table cellpadding="0" cellspacing="0" border="0">
151 <td class="md" nowrap valign="top"> #define MAX</td>
152 <td class="md" valign="top">( </td>
153 <td class="md" nowrap valign="top">A, <tr>
156 <td class="md" nowrap>B </td>
157 <td class="mdname1" valign="top" nowrap> </td>
158 <td class="md" valign="top"> ) </td>
159 <td class="md" nowrap> ((A) > (B) ? (A) : (B))
164 <table cellspacing=5 cellpadding=0 border=0>
174 Definition at line <a class="el" href="pairwise_8c-source.html#l00035">35</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
176 Referenced by <a class="el" href="pairwise_8c-source.html#l00106">pairwise()</a>. </td>
179 <a name="a3" doxytag="pairwise.c::MIN"></a><p>
180 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
183 <table cellpadding="0" cellspacing="0" border="0">
185 <td class="md" nowrap valign="top"> #define MIN</td>
186 <td class="md" valign="top">( </td>
187 <td class="md" nowrap valign="top">A, <tr>
190 <td class="md" nowrap>B </td>
191 <td class="mdname1" valign="top" nowrap> </td>
192 <td class="md" valign="top"> ) </td>
193 <td class="md" nowrap> ((A) < (B) ? (A) : (B))
198 <table cellspacing=5 cellpadding=0 border=0>
208 Definition at line <a class="el" href="pairwise_8c-source.html#l00039">39</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
210 Referenced by <a class="el" href="pairwise_8c-source.html#l00106">pairwise()</a>. </td>
213 <a name="a5" doxytag="pairwise.c::REALLOC"></a><p>
214 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
217 <table cellpadding="0" cellspacing="0" border="0">
219 <td class="md" nowrap valign="top"> #define REALLOC</td>
220 <td class="md" valign="top">( </td>
221 <td class="md" nowrap valign="top">PTR, <tr>
224 <td class="md" nowrap>SIZE </td>
225 <td class="mdname1" valign="top" nowrap> </td>
226 <td class="md" valign="top"> ) </td>
227 <td class="md" nowrap> do { PTR = realloc(PTR, SIZE); if (PTR == NULL && SIZE != 0) fatal_sys_error("realloc returned NULL"); } while (0)
232 <table cellspacing=5 cellpadding=0 border=0>
242 Definition at line <a class="el" href="pairwise_8c-source.html#l00049">49</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>. </td>
245 <hr><h2>Function Documentation</h2>
246 <a name="a14" doxytag="pairwise.c::check_length"></a><p>
247 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
250 <table cellpadding="0" cellspacing="0" border="0">
252 <td class="md" nowrap valign="top"> void check_length </td>
253 <td class="md" valign="top">( </td>
254 <td class="md" nowrap valign="top">struct <a class="el" href="structfasta.html">fasta</a> ** </td>
255 <td class="mdname1" valign="top" nowrap> <em>array</em> </td>
256 <td class="md" valign="top"> ) </td>
257 <td class="md" nowrap></td>
264 <table cellspacing=5 cellpadding=0 border=0>
274 Definition at line <a class="el" href="pairwise_8c-source.html#l00160">160</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
276 References <a class="el" href="pairwise_8c-source.html#l00053">fatal_error()</a>.
278 Referenced by <a class="el" href="pairwise_8c-source.html#l00253">main()</a>.
280 <div class="fragment"><pre>00160 {
281 00161 <span class="keywordtype">int</span> i, length;
283 00163 <span class="keywordflow">if</span> (array[0] != NULL)
284 00164 length = strlen(array[0]->seq);
285 00165 <span class="keywordflow">else</span> {
286 00166 fprintf(stderr, <span class="stringliteral">"check_length() not passed an array of fasta structs\n"</span>);
287 00167 <span class="keywordflow">return</span>;
290 00170 <span class="keywordflow">for</span> (i = 0; array[i] != NULL; i++) {
291 00171 <span class="keywordflow">if</span> (length != strlen(array[i]->seq)) {
292 00172 <a class="code" href="pairwise_8c.html#a6">fatal_error</a>(<span class="stringliteral">"Not all of the sequences are the same length\n"</span>);
301 Here is the call graph for this function:<p><center><img src="pairwise_8c_a14_cgraph.png" border="0" usemap="#pairwise_8c_a14_cgraph_map" alt=""></center>
302 <map name="pairwise_8c_a14_cgraph_map">
303 <area href="pairwise_8h.html#a0" shape="rect" coords="160,5,235,23" alt="">
305 <a name="a11" doxytag="pairwise.c::diff"></a><p>
306 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
309 <table cellpadding="0" cellspacing="0" border="0">
311 <td class="md" nowrap valign="top"> int diff </td>
312 <td class="md" valign="top">( </td>
313 <td class="md" nowrap valign="top">char </td>
314 <td class="mdname" nowrap> <em>a</em>, </td>
319 <td class="md" nowrap>char </td>
320 <td class="mdname" nowrap> <em>b</em></td>
324 <td class="md">) </td>
325 <td class="md" colspan="2"></td>
332 <table cellspacing=5 cellpadding=0 border=0>
342 Definition at line <a class="el" href="pairwise_8c-source.html#l00092">92</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
344 Referenced by <a class="el" href="pairwise_8c-source.html#l00106">pairwise()</a>.
346 <div class="fragment"><pre>00092 {
347 00093 <span class="keywordflow">if</span> (a == b && a == <span class="charliteral">'-'</span>)
348 00094 <span class="keywordflow">return</span> 0;
349 00095 <span class="keywordflow">if</span> (a == b)
350 00096 <span class="keywordflow">return</span> 1;
351 00097 <span class="keywordflow">return</span> 0;
356 <a name="a6" doxytag="pairwise.c::fatal_error"></a><p>
357 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
360 <table cellpadding="0" cellspacing="0" border="0">
362 <td class="md" nowrap valign="top"> void fatal_error </td>
363 <td class="md" valign="top">( </td>
364 <td class="md" nowrap valign="top">char * </td>
365 <td class="mdname1" valign="top" nowrap> <em>message</em> </td>
366 <td class="md" valign="top"> ) </td>
367 <td class="md" nowrap></td>
374 <table cellspacing=5 cellpadding=0 border=0>
384 Definition at line <a class="el" href="pairwise_8c-source.html#l00053">53</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
386 Referenced by <a class="el" href="pairwise_8c-source.html#l00160">check_length()</a>.
388 <div class="fragment"><pre>00053 {
389 00054 printf(message);
390 00055 exit(EXIT_FAILURE);
395 <a name="a7" doxytag="pairwise.c::fatal_sys_error"></a><p>
396 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
399 <table cellpadding="0" cellspacing="0" border="0">
401 <td class="md" nowrap valign="top"> void fatal_sys_error </td>
402 <td class="md" valign="top">( </td>
403 <td class="md" nowrap valign="top">char * </td>
404 <td class="mdname1" valign="top" nowrap> <em>message</em> </td>
405 <td class="md" valign="top"> ) </td>
406 <td class="md" nowrap></td>
413 <table cellspacing=5 cellpadding=0 border=0>
423 Definition at line <a class="el" href="pairwise_8c-source.html#l00059">59</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
425 Referenced by <a class="el" href="pairwise_8c-source.html#l00065">xfopen()</a>, <a class="el" href="pairwise_8c-source.html#l00074">xmalloc()</a>, and <a class="el" href="pairwise_8c-source.html#l00083">xrealloc()</a>.
427 <div class="fragment"><pre>00059 {
428 00060 perror(message);
429 00061 exit(EXIT_FAILURE);
434 <a name="a16" doxytag="pairwise.c::main"></a><p>
435 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
438 <table cellpadding="0" cellspacing="0" border="0">
440 <td class="md" nowrap valign="top"> int main </td>
441 <td class="md" valign="top">( </td>
442 <td class="md" nowrap valign="top">int </td>
443 <td class="mdname" nowrap> <em>argc</em>, </td>
448 <td class="md" nowrap>char ** </td>
449 <td class="mdname" nowrap> <em>argv</em></td>
453 <td class="md">) </td>
454 <td class="md" colspan="2"></td>
461 <table cellspacing=5 cellpadding=0 border=0>
471 Definition at line <a class="el" href="pairwise_8c-source.html#l00253">253</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
473 References <a class="el" href="pairwise_8c-source.html#l00160">check_length()</a>, <a class="el" href="pairwise_8c-source.html#l00106">pairwise()</a>, <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>, and <a class="el" href="pairwise_8c-source.html#l00065">xfopen()</a>.
475 <div class="fragment"><pre>00253 {
477 00255 <span class="keyword">struct </span><a class="code" href="structfasta.html">fasta</a> **array;
478 00256 <span class="keywordtype">int</span> i = 0, j;
480 00258 <span class="comment">/* Read in the FASTA file */</span>
481 00259 <span class="keywordflow">if</span> (argc == 2)
482 00260 fh = <a class="code" href="pairwise_8c.html#a8">xfopen</a>(argv[1], <span class="stringliteral">"r"</span>);
483 00261 <span class="keywordflow">else</span>
486 00264 array = <a class="code" href="pairwise_8c.html#a15">read_fasta</a>(fh);
489 00267 <a class="code" href="pairwise_8c.html#a14">check_length</a>(array);
491 00269 <span class="comment">/* start the OC output */</span>
492 00270 <span class="keywordflow">while</span> (array[i] != NULL)
495 00273 fprintf(stdout, <span class="stringliteral">"%i\n"</span>, i);
497 00275 <span class="keywordflow">for</span> (i = 0; array[i] != NULL; i++)
498 00276 fprintf(stdout, <span class="stringliteral">"%s\n"</span>, array[i]->id);
500 00278 <span class="comment">/* do the pairwise comparison */</span>
501 00279 <span class="keywordflow">for</span> (i = 0; array[i] != NULL; i++) {
502 00280 <span class="keywordflow">for</span> (j = i + 1; array[j] != NULL; j++) {
503 00281 printf(<span class="stringliteral">"%f\n"</span>, <a class="code" href="pairwise_8c.html#a12">pairwise</a>(array[i], array[j]));
507 00285 <span class="keywordflow">return</span> EXIT_SUCCESS;
514 Here is the call graph for this function:<p><center><img src="pairwise_8c_a16_cgraph.png" border="0" usemap="#pairwise_8c_a16_cgraph_map" alt=""></center>
515 <map name="pairwise_8c_a16_cgraph_map">
516 <area href="pairwise_8h.html#a7" shape="rect" coords="108,5,201,24" alt="">
517 <area href="pairwise_8h.html#a5" shape="rect" coords="124,48,185,67" alt="">
518 <area href="pairwise_8h.html#a8" shape="rect" coords="116,209,193,228" alt="">
519 <area href="pairwise_8h.html#a1" shape="rect" coords="263,92,316,111" alt="">
520 <area href="pairwise_8h.html#a0" shape="rect" coords="252,5,327,24" alt="">
521 <area href="pairwise_8h.html#a4" shape="rect" coords="271,48,308,67" alt="">
522 <area href="pairwise_8h.html#a6" shape="rect" coords="377,153,444,172" alt="">
523 <area href="pairwise_8c.html#a15" shape="rect" coords="251,209,328,228" alt="">
524 <area href="pairwise_8c.html#a9" shape="rect" coords="381,252,440,271" alt="">
525 <area href="pairwise_8h.html#a3" shape="rect" coords="380,209,441,228" alt="">
526 <area href="pairwise_8c.html#a7" shape="rect" coords="492,209,596,228" alt="">
528 <a name="a12" doxytag="pairwise.c::pairwise"></a><p>
529 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
532 <table cellpadding="0" cellspacing="0" border="0">
534 <td class="md" nowrap valign="top"> float pairwise </td>
535 <td class="md" valign="top">( </td>
536 <td class="md" nowrap valign="top">struct <a class="el" href="structfasta.html">fasta</a> * </td>
537 <td class="mdname" nowrap> <em>a</em>, </td>
542 <td class="md" nowrap>struct <a class="el" href="structfasta.html">fasta</a> * </td>
543 <td class="mdname" nowrap> <em>b</em></td>
547 <td class="md">) </td>
548 <td class="md" colspan="2"></td>
555 <table cellspacing=5 cellpadding=0 border=0>
565 Definition at line <a class="el" href="pairwise_8c-source.html#l00106">106</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
567 References <a class="el" href="pairwise_8c-source.html#l00092">diff()</a>, <a class="el" href="pairwise_8h-source.html#l00007">fasta::end</a>, <a class="el" href="pairwise_8c-source.html#l00035">MAX</a>, <a class="el" href="pairwise_8c-source.html#l00039">MIN</a>, <a class="el" href="pairwise_8h-source.html#l00008">fasta::numres</a>, <a class="el" href="pairwise_8h-source.html#l00005">fasta::seq</a>, and <a class="el" href="pairwise_8h-source.html#l00006">fasta::start</a>.
569 Referenced by <a class="el" href="pairwise_8c-source.html#l00253">main()</a>.
571 <div class="fragment"><pre>00106 {
572 00107 <span class="keywordtype">float</span> result;
573 00108 <span class="keywordtype">int</span> start, end, numres, i, id = 0;
575 00110 <span class="comment">/* If the sequences don't overlap then the seq ID is 0 */</span>
576 00111 <span class="keywordflow">if</span> (a-><a class="code" href="structfasta.html#o3">end</a> < b-><a class="code" href="structfasta.html#o2">start</a> || a-><a class="code" href="structfasta.html#o2">start</a> > b-><a class="code" href="structfasta.html#o3">end</a>)
577 00112 <span class="keywordflow">return</span> 0;
579 00114 start = <a class="code" href="pairwise_8c.html#a3">MIN</a>( a-><a class="code" href="structfasta.html#o2">start</a>, b-><a class="code" href="structfasta.html#o2">start</a> );
580 00115 end = <a class="code" href="pairwise_8c.html#a2">MAX</a>( a-><a class="code" href="structfasta.html#o3">end</a>, b-><a class="code" href="structfasta.html#o3">end</a> );
581 00116 numres = <a class="code" href="pairwise_8c.html#a2">MAX</a>( a-><a class="code" href="structfasta.html#o4">numres</a>, b-><a class="code" href="structfasta.html#o4">numres</a> );
583 00118 <span class="keywordflow">for</span> (i = start; i < end; i++)
584 00119 id += <a class="code" href="pairwise_8c.html#a11">diff</a>(a-><a class="code" href="structfasta.html#o1">seq</a>[i], b-><a class="code" href="structfasta.html#o1">seq</a>[i]);
586 00121 result = 100 * (<span class="keywordtype">float</span>) id / (<span class="keywordtype">float</span>) numres;
588 00123 <span class="keywordflow">return</span> result;
595 Here is the call graph for this function:<p><center><img src="pairwise_8c_a12_cgraph.png" border="0" usemap="#pairwise_8c_a12_cgraph_map" alt=""></center>
596 <map name="pairwise_8c_a12_cgraph_map">
597 <area href="pairwise_8h.html#a4" shape="rect" coords="131,5,168,23" alt="">
599 <a name="a13" doxytag="pairwise.c::populate"></a><p>
600 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
603 <table cellpadding="0" cellspacing="0" border="0">
605 <td class="md" nowrap valign="top"> void populate </td>
606 <td class="md" valign="top">( </td>
607 <td class="md" nowrap valign="top">struct <a class="el" href="structfasta.html">fasta</a> * </td>
608 <td class="mdname1" valign="top" nowrap> <em>a</em> </td>
609 <td class="md" valign="top"> ) </td>
610 <td class="md" nowrap></td>
617 <table cellspacing=5 cellpadding=0 border=0>
627 Definition at line <a class="el" href="pairwise_8c-source.html#l00133">133</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
629 References <a class="el" href="pairwise_8h-source.html#l00007">fasta::end</a>, <a class="el" href="pairwise_8h-source.html#l00008">fasta::numres</a>, <a class="el" href="pairwise_8h-source.html#l00005">fasta::seq</a>, and <a class="el" href="pairwise_8h-source.html#l00006">fasta::start</a>.
631 Referenced by <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>.
633 <div class="fragment"><pre>00133 {
634 00134 <span class="keywordtype">int</span> i;
635 00135 <span class="keywordtype">int</span> len = strlen(a-><a class="code" href="structfasta.html#o1">seq</a>);
637 00137 a-><a class="code" href="structfasta.html#o4">numres</a> = 0;
639 00139 <span class="keywordflow">for</span> (i = 0; i <= len; i++) {
640 00140 <span class="keywordflow">if</span> (a-><a class="code" href="structfasta.html#o1">seq</a>[i] != <span class="charliteral">'-'</span>) {
641 00141 a-><a class="code" href="structfasta.html#o2">start</a> = i;
642 00142 <span class="keywordflow">break</span>;
645 00145 <span class="keywordflow">for</span> (i = len; i > 0; i--) {
646 00146 <span class="keywordflow">if</span> (a-><a class="code" href="structfasta.html#o1">seq</a>[i] != <span class="charliteral">'-'</span>) {
647 00147 a-><a class="code" href="structfasta.html#o3">end</a> = i;
648 00148 <span class="keywordflow">break</span>;
651 00151 <span class="keywordflow">for</span> (i = a-><a class="code" href="structfasta.html#o2">start</a>; i < a-><a class="code" href="structfasta.html#o3">end</a>; i++) {
652 00152 <span class="keywordflow">if</span> (a-><a class="code" href="structfasta.html#o1">seq</a>[i] != <span class="charliteral">'-'</span>) {
653 00153 a-><a class="code" href="structfasta.html#o4">numres</a>++;
660 <a name="a15" doxytag="pairwise.c::read_fasta"></a><p>
661 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
664 <table cellpadding="0" cellspacing="0" border="0">
666 <td class="md" nowrap valign="top"> struct <a class="el" href="structfasta.html">fasta</a>** read_fasta </td>
667 <td class="md" valign="top">( </td>
668 <td class="md" nowrap valign="top">FILE * </td>
669 <td class="mdname1" valign="top" nowrap> <em>fh</em> </td>
670 <td class="md" valign="top"> ) </td>
671 <td class="md" nowrap></td>
678 <table cellspacing=5 cellpadding=0 border=0>
688 Definition at line <a class="el" href="pairwise_8c-source.html#l00179">179</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
690 References <a class="el" href="pairwise_8c-source.html#l00029">ARRAY</a>, <a class="el" href="pairwise_8c-source.html#l00030">FILEBUF</a>, <a class="el" href="pairwise_8h-source.html#l00004">fasta::id</a>, <a class="el" href="pairwise_8h-source.html#l00008">fasta::numres</a>, <a class="el" href="pairwise_8c-source.html#l00133">populate()</a>, <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>, <a class="el" href="pairwise_8h-source.html#l00005">fasta::seq</a>, <a class="el" href="pairwise_8c-source.html#l00074">xmalloc()</a>, and <a class="el" href="pairwise_8c-source.html#l00083">xrealloc()</a>.
692 Referenced by <a class="el" href="pairwise_8c-source.html#l00253">main()</a>, and <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>.
694 <div class="fragment"><pre>00179 {
695 00180 <span class="keywordtype">int</span> i, j, k, c, filesize = 1;
696 00181 <span class="keywordtype">char</span> *file;
697 00182 <span class="keyword">struct </span><a class="code" href="structfasta.html">fasta</a> **array;
699 00184 array = (<span class="keyword">struct </span><a class="code" href="structfasta.html">fasta</a> **) <a class="code" href="pairwise_8c.html#a9">xmalloc</a>(<a class="code" href="pairwise_8c.html#a0">ARRAY</a> * sizeof(struct fasta *));
700 00185 file = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a9">xmalloc</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
702 00187 <span class="comment">/* Allocate initial space for the file */</span>
703 00188 file = <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(file, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * filesize);
704 00189 file[filesize] = <span class="charliteral">'\0'</span>;
706 00191 <span class="comment">/* Read in the file */</span>
707 00192 <span class="keywordflow">while</span> ((c = getc(fh)) != EOF) {
708 00193 <span class="keywordflow">if</span> (filesize % <a class="code" href="pairwise_8c.html#a1">FILEBUF</a>)
709 00194 file = <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(file, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (FILEBUF + filesize));
711 00196 file[filesize] = c;
715 00200 <span class="comment">/* Parse the FASTA file into an array of structures */</span>
716 00201 <span class="keywordflow">for</span> (i = 0, j = 0, k = 0; i < filesize; i++) {
717 00202 <span class="keywordflow">if</span> (file[i] == <span class="charliteral">'>'</span>) {
718 00203 <span class="keywordflow">if</span> (j % <a class="code" href="pairwise_8c.html#a0">ARRAY</a> == 0)
719 00204 array = (<span class="keyword">struct </span>fasta **) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array, sizeof(struct fasta *) * (j + <a class="code" href="pairwise_8c.html#a0">ARRAY</a>));
721 00206 array[j] = (<span class="keyword">struct </span>fasta *) <a class="code" href="pairwise_8c.html#a9">xmalloc</a>(sizeof(struct fasta));
722 00207 array[j]-><a class="code" href="structfasta.html#o0">id</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a9">xmalloc</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
723 00208 array[j]-><a class="code" href="structfasta.html#o1">seq</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a9">xmalloc</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));
724 00209 array[j]-><a class="code" href="structfasta.html#o4">numres</a> = 0;
727 00212 <span class="keywordflow">while</span> (file[i] != <span class="charliteral">'\0'</span> && file[i] != <span class="charliteral">'\n'</span>) {
728 00213 <span class="keywordflow">if</span> (k % <a class="code" href="pairwise_8c.html#a0">ARRAY</a> == 0)
729 00214 array[j]-><a class="code" href="structfasta.html#o0">id</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array[j]->id, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (ARRAY + k));
730 00215 array[j]-><a class="code" href="structfasta.html#o0">id</a>[k] = file[i];
733 00218 array[j]-><a class="code" href="structfasta.html#o0">id</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array[j]->id, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (ARRAY + k));
734 00219 array[j]-><a class="code" href="structfasta.html#o0">id</a>[k] = <span class="charliteral">'\0'</span>;
737 00222 <span class="keywordflow">while</span> (file[i] != <span class="charliteral">'\0'</span> && file[i] != <span class="charliteral">'>'</span>) {
738 00223 <span class="keywordflow">if</span> (file[i] == <span class="charliteral">'\n'</span>) {
740 00225 <span class="keywordflow">continue</span>;
742 00227 <span class="keywordflow">if</span> (k % <a class="code" href="pairwise_8c.html#a0">ARRAY</a> == 0)
743 00228 array[j]-><a class="code" href="structfasta.html#o1">seq</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array[j]->seq, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (ARRAY + k));
744 00229 array[j]-><a class="code" href="structfasta.html#o1">seq</a>[k] = file[i];
747 00232 array[j]-><a class="code" href="structfasta.html#o1">seq</a> = (<span class="keywordtype">char</span> *) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array[j]->seq, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (ARRAY + k));
748 00233 array[j]-><a class="code" href="structfasta.html#o1">seq</a>[k] = <span class="charliteral">'\0'</span>;
756 00241 array = (<span class="keyword">struct </span>fasta **) <a class="code" href="pairwise_8c.html#a10">xrealloc</a>(array, sizeof(struct fasta *) * j);
757 00242 array[j] = NULL;
759 00244 <span class="comment">/* find the start and end points for the alignments */</span>
760 00245 <span class="keywordflow">for</span> (i = 0; array[i] != NULL; i++) {
761 00246 <a class="code" href="pairwise_8c.html#a13">populate</a>(array[i]);
764 00249 <span class="keywordflow">return</span> array;
771 Here is the call graph for this function:<p><center><img src="pairwise_8c_a15_cgraph.png" border="0" usemap="#pairwise_8c_a15_cgraph_map" alt=""></center>
772 <map name="pairwise_8c_a15_cgraph_map">
773 <area href="pairwise_8h.html#a6" shape="rect" coords="145,5,212,24" alt="">
774 <area href="pairwise_8c.html#a9" shape="rect" coords="149,48,208,67" alt="">
775 <area href="pairwise_8h.html#a3" shape="rect" coords="148,91,209,109" alt="">
776 <area href="pairwise_8c.html#a7" shape="rect" coords="260,69,364,88" alt="">
778 <a name="a8" doxytag="pairwise.c::xfopen"></a><p>
779 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
782 <table cellpadding="0" cellspacing="0" border="0">
784 <td class="md" nowrap valign="top"> FILE* xfopen </td>
785 <td class="md" valign="top">( </td>
786 <td class="md" nowrap valign="top">const char * </td>
787 <td class="mdname" nowrap> <em>path</em>, </td>
792 <td class="md" nowrap>const char * </td>
793 <td class="mdname" nowrap> <em>mode</em></td>
797 <td class="md">) </td>
798 <td class="md" colspan="2"></td>
805 <table cellspacing=5 cellpadding=0 border=0>
815 Definition at line <a class="el" href="pairwise_8c-source.html#l00065">65</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
817 References <a class="el" href="pairwise_8c-source.html#l00059">fatal_sys_error()</a>.
819 Referenced by <a class="el" href="pairwise_8c-source.html#l00253">main()</a>.
821 <div class="fragment"><pre>00065 {
823 00067 fh = fopen(path, mode);
824 00068 <span class="keywordflow">if</span> (fh == NULL)
825 00069 <a class="code" href="pairwise_8c.html#a7">fatal_sys_error</a>(<span class="stringliteral">"fopen returned NULL"</span>);
826 00070 <span class="keywordflow">return</span> fh;
833 Here is the call graph for this function:<p><center><img src="pairwise_8c_a8_cgraph.png" border="0" usemap="#pairwise_8c_a8_cgraph_map" alt=""></center>
834 <map name="pairwise_8c_a8_cgraph_map">
835 <area href="pairwise_8c.html#a7" shape="rect" coords="121,5,225,23" alt="">
837 <a name="a9" doxytag="pairwise.c::xmalloc"></a><p>
838 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
841 <table cellpadding="0" cellspacing="0" border="0">
843 <td class="md" nowrap valign="top"> void* xmalloc </td>
844 <td class="md" valign="top">( </td>
845 <td class="md" nowrap valign="top">size_t </td>
846 <td class="mdname1" valign="top" nowrap> <em>size</em> </td>
847 <td class="md" valign="top"> ) </td>
848 <td class="md" nowrap></td>
855 <table cellspacing=5 cellpadding=0 border=0>
865 Definition at line <a class="el" href="pairwise_8c-source.html#l00074">74</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
867 References <a class="el" href="pairwise_8c-source.html#l00059">fatal_sys_error()</a>.
869 Referenced by <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>.
871 <div class="fragment"><pre>00074 {
872 00075 <span class="keywordtype">void</span> *ptr;
873 00076 ptr = (<span class="keywordtype">void</span> *) malloc(size);
874 00077 <span class="keywordflow">if</span> (ptr == NULL)
875 00078 <a class="code" href="pairwise_8c.html#a7">fatal_sys_error</a>(<span class="stringliteral">"malloc returned NULL"</span>);
876 00079 <span class="keywordflow">return</span> ptr;
883 Here is the call graph for this function:<p><center><img src="pairwise_8c_a9_cgraph.png" border="0" usemap="#pairwise_8c_a9_cgraph_map" alt=""></center>
884 <map name="pairwise_8c_a9_cgraph_map">
885 <area href="pairwise_8c.html#a7" shape="rect" coords="127,5,231,23" alt="">
887 <a name="a10" doxytag="pairwise.c::xrealloc"></a><p>
888 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
891 <table cellpadding="0" cellspacing="0" border="0">
893 <td class="md" nowrap valign="top"> void* xrealloc </td>
894 <td class="md" valign="top">( </td>
895 <td class="md" nowrap valign="top">void * </td>
896 <td class="mdname" nowrap> <em>ptr</em>, </td>
901 <td class="md" nowrap>size_t </td>
902 <td class="mdname" nowrap> <em>size</em></td>
906 <td class="md">) </td>
907 <td class="md" colspan="2"></td>
914 <table cellspacing=5 cellpadding=0 border=0>
924 Definition at line <a class="el" href="pairwise_8c-source.html#l00083">83</a> of file <a class="el" href="pairwise_8c-source.html">pairwise.c</a>.
926 References <a class="el" href="pairwise_8c-source.html#l00059">fatal_sys_error()</a>.
928 Referenced by <a class="el" href="pairwise_8c-source.html#l00179">read_fasta()</a>.
930 <div class="fragment"><pre>00083 {
931 00084 ptr = (<span class="keywordtype">void</span> *) realloc(ptr, size);
932 00085 <span class="keywordflow">if</span> (ptr == NULL && size != 0)
933 00086 <a class="code" href="pairwise_8c.html#a7">fatal_sys_error</a>(<span class="stringliteral">"realloc returned NULL"</span>);
934 00087 <span class="keywordflow">return</span> ptr;
941 Here is the call graph for this function:<p><center><img src="pairwise_8c_a10_cgraph.png" border="0" usemap="#pairwise_8c_a10_cgraph_map" alt=""></center>
942 <map name="pairwise_8c_a10_cgraph_map">
943 <area href="pairwise_8c.html#a7" shape="rect" coords="127,5,231,23" alt="">
945 <hr size="1"><address style="align: right;"><small>Generated on Thu Jul 24 12:17:51 2003 for pairwise by
946 <a href="http://www.doxygen.org/index.html">
947 <img src="doxygen.png" alt="doxygen" align="middle" border=0 >
948 </a>1.3.2 </small></address>