~ubuntu-branches/ubuntu/quantal/genometools/quantal-backports

« back to all changes in this revision

Viewing changes to src/mgth/metagenomethreader.h

  • Committer: Package Import Robot
  • Author(s): Sascha Steinbiss
  • Date: 2012-07-09 14:10:23 UTC
  • Revision ID: package-import@ubuntu.com-20120709141023-juuu4spm6chqsf9o
Tags: upstream-1.4.1
ImportĀ upstreamĀ versionĀ 1.4.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
  Copyright (c) 2007 David Schmitz-Huebsch <dschmitz@zbh.uni-hamburg.de>
 
3
  Copyright (c) 2007 Center for Bioinformatics, University of Hamburg
 
4
 
 
5
  Permission to use, copy, modify, and distribute this software for any
 
6
  purpose with or without fee is hereby granted, provided that the above
 
7
  copyright notice and this permission notice appear in all copies.
 
8
 
 
9
  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 
10
  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 
11
  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 
12
  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 
13
  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 
14
  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 
15
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
16
*/
 
17
 
 
18
#ifndef METAGENOMETHREADER_H
 
19
#define METAGENOMETHREADER_H
 
20
 
 
21
#include <stdio.h>
 
22
#include <stdlib.h>
 
23
#include <string.h>
 
24
#include <time.h>
 
25
#include "core/array.h"
 
26
#include "core/array2dim_api.h"
 
27
#include "core/bioseq.h"
 
28
#include "core/dlist_api.h"
 
29
#include "core/error.h"
 
30
#include "core/hashmap-generic.h"
 
31
#include "core/ma.h"
 
32
#include "core/option_api.h"
 
33
#include "core/str.h"
 
34
#include "core/str_array.h"
 
35
#include "core/versionfunc.h"
 
36
 
 
37
/* jeweils die Anzahl der zu betrachtenden XML-Tags; Definitionen werden auch
 
38
 * in Schleifenkoepfen verwendet */
 
39
#define MGTH_QUERY_SIZE           1
 
40
#define MGTH_HIT_SIZE             3
 
41
#define MGTH_HIT_TO_QUERY_SIZE    9
 
42
 
 
43
#define MGTH_SET             1
 
44
#define MGTH_UNSET           0
 
45
#define MGTH_MEMORY_SIZE     250
 
46
 
 
47
/* Makros zum Zugriff auf die Parsestruct-Strukturen und Substrukturen */
 
48
#define ARGUMENTS(PATH)\
 
49
             parsestruct.metagenomethreader_arguments.PATH
 
50
#define ARGUMENTSSTRUCT(PATH)\
 
51
             parsestruct_ptr->metagenomethreader_arguments.PATH
 
52
#define MATRIXSTRUCT(PATH)      parsestruct_ptr->matrix_info.PATH
 
53
#define XMLPARSERSTRUCT(PATH)   parsestruct_ptr->xmlparser_static.PATH
 
54
#define HITSTRUCT(PATH)         parsestruct_ptr->hits_statistics.PATH
 
55
#define FILEPOINTEROUT          parsestruct_ptr->fp_outputfile
 
56
#define HITFILEOUT              parsestruct_ptr->fp_giexp_file
 
57
#define PARSESTRUCT(PATH)       parsestruct_ptr->PATH
 
58
 
 
59
/* Strukturdefinition fuer die Eintraege in der Combined-Score-Matrix */
 
60
typedef struct
 
61
{
 
62
  double matrix_score;
 
63
  unsigned long count;
 
64
  GtArray *hit_number;
 
65
} CombinedScoreMatrixEntry;
 
66
 
 
67
/* Struktur zur Speicherung der Bereichsgrenzen kodierender Abschnitte */
 
68
typedef struct
 
69
{
 
70
  GtArray *from;
 
71
  GtArray *to;
 
72
} RegionStruct;
 
73
 
 
74
/* Strukturdefinition fuer die Struktur zur Speicherung ausschliesslich
 
75
   der Hit-Informationen, die zu einem syn-Score beitragen */
 
76
typedef struct
 
77
{
 
78
  GtStrArray *hit_gi,
 
79
   *hit_def,
 
80
   *hit_hsp_nr,
 
81
   *hit_from,
 
82
   *hit_to;
 
83
} HitInformation;
 
84
 
 
85
/* Strukturdefinition fuer die Eintraege in die Path-Matrix */
 
86
typedef struct
 
87
{
 
88
  double score;
 
89
  unsigned short path_frame;
 
90
} PathMatrixEntry;
 
91
 
 
92
/* Strukturdefinition, die zur Aufnahme der Kommandozeilenargumente
 
93
   dient */
 
94
typedef struct
 
95
{
 
96
  double synonomic_value,
 
97
    nonsynonomic_value,
 
98
    blasthit_end_value,
 
99
    stopcodon_queryseq,
 
100
    stopcodon_hitseq,
 
101
    frameshift_span,
 
102
    prediction_span,
 
103
    leavegene_value,
 
104
    percent_value;
 
105
  GtStr *curl_fcgi_db,
 
106
   *outputtextfile_name,
 
107
   *giexpfile_name;
 
108
  int outputfile_format,
 
109
    codon_mode;
 
110
  bool hitfile_bool,
 
111
    homology_mode,
 
112
    extended_mode,
 
113
    testmodus_mode;
 
114
  unsigned long min_as;
 
115
} MetagenomeThreaderArguments;
 
116
 
 
117
/* Typdefinition der Struktur zur Aufnahme von Informationen aus dem
 
118
   XML-File und den DNA-Informationen von Query und Hit */
 
119
typedef struct
 
120
{
 
121
  GtArray *query_frame,
 
122
   *hit_frame,
 
123
   *query_from,
 
124
   *query_to;
 
125
  GtStr *query_dna,
 
126
   *query_def;
 
127
  GtStrArray *hit_gi_nr,
 
128
   *hit_num,
 
129
   *hit_gi_def,
 
130
   *hit_acc,
 
131
   *fasta_row,
 
132
   *hit_from,
 
133
   *hit_to,
 
134
   *hit_dna,
 
135
   *hsp_qseq,
 
136
   *hsp_hseq;
 
137
} MatrixMemory;
 
138
 
 
139
/* Struktur fuer den Statistikbereich */
 
140
typedef struct
 
141
{
 
142
  GtStrArray *hits_statistic;
 
143
  unsigned long *hitsnum,
 
144
   *memory,
 
145
    hitsnumber,
 
146
    stat_pos;
 
147
} HitsStatistic;
 
148
 
 
149
/* Struktur fuer Variablen in der mg_xmlparser-Datei */
 
150
typedef struct
 
151
{
 
152
  unsigned short query_array_index_start,
 
153
    hit_array_index_start,
 
154
    hit_hsp_array_index_start,
 
155
    query_array_index_end,
 
156
    hit_array_index_end,
 
157
    hit_hsp_array_index_end;
 
158
  unsigned long hit_counter;
 
159
} XMLparser_static;
 
160
 
 
161
/* Struktur fuer Variablen in der mg_compute_gene_prediction-Datei */
 
162
typedef struct
 
163
{
 
164
  double matrixscore,
 
165
    matrixscore_before;
 
166
  short current_frame,
 
167
    frame_before,
 
168
    function_stop;
 
169
  unsigned long noncodingcounter,
 
170
    codingcounter;
 
171
} GenePrediction_static;
 
172
 
 
173
/* Typdefinition der Struktur, die als Data an die Expat-Funktionen
 
174
   uebergeben werden kann Hauptstruktur, die auch an die wesentlichen
 
175
   anderen Funktionen uebergeben wird */
 
176
 
 
177
typedef struct
 
178
{
 
179
  GtStrArray *query_array,
 
180
   *hit_array,
 
181
   *hit_hsp_array,
 
182
   *query_frame_tmp,
 
183
   *hit_frame_tmp,
 
184
   *key_tmp;
 
185
  GtStr *xml_tag,
 
186
   *buf_ptr,
 
187
   *hit_fastafile,
 
188
   *xmlfile,
 
189
   *gi_def_tmp,
 
190
   *gi_acc_tmp,
 
191
   *hit_gi_nr_tmp,
 
192
   *fasta_row,
 
193
   *result_hits;
 
194
  GtArray *value_tmp;
 
195
  GtBioseq *queryseq,
 
196
   *hitseq;
 
197
  GtFile *fp_outputfile,
 
198
   *fp_blasthit_file,
 
199
   *fp_giexp_file;
 
200
  GtHashtable *queryhash,
 
201
   *hithash,
 
202
   *resulthits;
 
203
  GtDlist *outlist;
 
204
  GtError *err;
 
205
  int had_err;
 
206
  unsigned short def_flag,
 
207
    hit_flag,
 
208
    hit_hsp_flag,
 
209
    xml_tag_flag,
 
210
    giexp_flag,
 
211
    gi_flag;
 
212
  unsigned long xml_linenumber,
 
213
    hits_memory;
 
214
  double syn,
 
215
    non_syn;
 
216
  MatrixMemory matrix_info;
 
217
  MetagenomeThreaderArguments metagenomethreader_arguments;
 
218
  HitsStatistic hits_statistics;
 
219
  XMLparser_static xmlparser_static;
 
220
  GenePrediction_static geneprediction_static;
 
221
} ParseStruct;
 
222
 
 
223
/* specific access mode of queryhash */
 
224
DECLARE_HASHMAP(char *, gt_cstr_nofree, unsigned long *, ulp,,)
 
225
DECLARE_SAFE_DEREF(unsigned long *, ulp)
 
226
 
 
227
/* Funktion, mit der der Metagenomethreader gestartet wird
 
228
   Parameter: Anzahl der Kommandozeilenargumente, Zeiger auf die
 
229
              Kommandozeilenargumente, GtError-Variable
 
230
   Returnwert: Fehlercode */
 
231
int gt_metagenomethreader(int argc, const char **argv, GtError *);
 
232
 
 
233
/* Funktion zur Ueberpruefung auf ein Stop-Codon
 
234
   Parameter:  Zeiger auf ein Triplet von Zeichen
 
235
   Returnwert: 0 = kein Stop-Codon, 1 = Stop-Codon */
 
236
short gt_check_stopcodon(char *);
 
237
 
 
238
/* Funktion zum Auslesen der Query-DNA Sequenz zu einem GI-Def Eintrag des
 
239
   XML-Files
 
240
   Parameter:  Zeiger auf StringArray (Sequenzen der Treffer zu einer
 
241
               Hit-GI-Nr), String-Zeiger auf die Hit-GI-Nr, String-Zeiger
 
242
               auf Hit-From und String-Zeiger auf den Hit-To String,
 
243
               GtError-Variable
 
244
   Returnwert: void */
 
245
int mg_curl(ParseStruct *, unsigned long, GtError *);
 
246
 
 
247
/* Funktion zur Berechnung der Combined-Scores
 
248
   Parameter: Zeiger auf die Parsestruct; Anzahl der Hits zur betrachteten
 
249
              Hit-GI-Nr; GtError-Variable
 
250
   Returnwert: void */
 
251
int mg_combinedscore(ParseStruct *, unsigned long, GtError *);
 
252
 
 
253
/* Funktion zur Ausgabe der berechneten Ergebnisse
 
254
   Parameter:  Zeiger auf ParseStruct-Struktur, CombinedScore-Matrix,
 
255
               die HitInformation-Struktur, die RegionStruct-Struktur,
 
256
               das Char-Zeichen, um welchen Bereich es sich handelt
 
257
   Returnwert: void */
 
258
void mg_outputwriter(ParseStruct *,
 
259
                     CombinedScoreMatrixEntry **,
 
260
                     HitInformation *, RegionStruct **, char, GtError *);
 
261
 
 
262
/* Funktion zur Bestimmung der zu einem Lesereahmen gehoerigen Matrix-Zeile
 
263
   Parameter: aktueller Leserahmen
 
264
   Returnwert: Matrixzeile */
 
265
short get_matrix_row(long);
 
266
 
 
267
/* Funktion zur Bestimmung des Leserahmens zu einer Matrix-Zeile
 
268
   Parameter: Matrixzeile
 
269
   Returnwert: Leserahmen */
 
270
short get_current_frame(long);
 
271
 
 
272
/* Funktion zur Berechnung des reversen Komplements
 
273
   Parameter: Zeiger auf eine Seq., Seq-Laenge, GtError-Variable
 
274
   Returnwert: had_err */
 
275
int mg_reverse_complement(char *, unsigned long, GtError *);
 
276
 
 
277
#endif