2
Copyright (c) 2007 David Schmitz-Huebsch <dschmitz@zbh.uni-hamburg.de>
3
Copyright (c) 2007 Center for Bioinformatics, University of Hamburg
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.
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.
18
#ifndef METAGENOMETHREADER_H
19
#define METAGENOMETHREADER_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"
32
#include "core/option_api.h"
34
#include "core/str_array.h"
35
#include "core/versionfunc.h"
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
45
#define MGTH_MEMORY_SIZE 250
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
59
/* Strukturdefinition fuer die Eintraege in der Combined-Score-Matrix */
65
} CombinedScoreMatrixEntry;
67
/* Struktur zur Speicherung der Bereichsgrenzen kodierender Abschnitte */
74
/* Strukturdefinition fuer die Struktur zur Speicherung ausschliesslich
75
der Hit-Informationen, die zu einem syn-Score beitragen */
85
/* Strukturdefinition fuer die Eintraege in die Path-Matrix */
89
unsigned short path_frame;
92
/* Strukturdefinition, die zur Aufnahme der Kommandozeilenargumente
96
double synonomic_value,
106
*outputtextfile_name,
108
int outputfile_format,
114
unsigned long min_as;
115
} MetagenomeThreaderArguments;
117
/* Typdefinition der Struktur zur Aufnahme von Informationen aus dem
118
XML-File und den DNA-Informationen von Query und Hit */
121
GtArray *query_frame,
127
GtStrArray *hit_gi_nr,
139
/* Struktur fuer den Statistikbereich */
142
GtStrArray *hits_statistic;
143
unsigned long *hitsnum,
149
/* Struktur fuer Variablen in der mg_xmlparser-Datei */
152
unsigned short query_array_index_start,
153
hit_array_index_start,
154
hit_hsp_array_index_start,
155
query_array_index_end,
157
hit_hsp_array_index_end;
158
unsigned long hit_counter;
161
/* Struktur fuer Variablen in der mg_compute_gene_prediction-Datei */
169
unsigned long noncodingcounter,
171
} GenePrediction_static;
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 */
179
GtStrArray *query_array,
197
GtFile *fp_outputfile,
200
GtHashtable *queryhash,
206
unsigned short def_flag,
212
unsigned long xml_linenumber,
216
MatrixMemory matrix_info;
217
MetagenomeThreaderArguments metagenomethreader_arguments;
218
HitsStatistic hits_statistics;
219
XMLparser_static xmlparser_static;
220
GenePrediction_static geneprediction_static;
223
/* specific access mode of queryhash */
224
DECLARE_HASHMAP(char *, gt_cstr_nofree, unsigned long *, ulp,,)
225
DECLARE_SAFE_DEREF(unsigned long *, ulp)
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 *);
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 *);
238
/* Funktion zum Auslesen der Query-DNA Sequenz zu einem GI-Def Eintrag des
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,
245
int mg_curl(ParseStruct *, unsigned long, GtError *);
247
/* Funktion zur Berechnung der Combined-Scores
248
Parameter: Zeiger auf die Parsestruct; Anzahl der Hits zur betrachteten
249
Hit-GI-Nr; GtError-Variable
251
int mg_combinedscore(ParseStruct *, unsigned long, GtError *);
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
258
void mg_outputwriter(ParseStruct *,
259
CombinedScoreMatrixEntry **,
260
HitInformation *, RegionStruct **, char, GtError *);
262
/* Funktion zur Bestimmung der zu einem Lesereahmen gehoerigen Matrix-Zeile
263
Parameter: aktueller Leserahmen
264
Returnwert: Matrixzeile */
265
short get_matrix_row(long);
267
/* Funktion zur Bestimmung des Leserahmens zu einer Matrix-Zeile
268
Parameter: Matrixzeile
269
Returnwert: Leserahmen */
270
short get_current_frame(long);
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 *);