|
NCBI Home IEB Home C Toolkit docs C++ Toolkit source browser C Toolkit source browser (2) |
NCBI C Toolkit Cross ReferenceC/api/asn2ffg.h |
source navigation diff markup identifier search freetext search file search |
1 /* asn2ffg.h
2 * ===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information (NCBI)
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government do not place any restriction on its use or reproduction.
13 * We would, however, appreciate having the NCBI and the author cited in
14 * any work or product based on this material
15 *
16 * Although all reasonable efforts have been taken to ensure the accuracy
17 * and reliability of the software and data, the NLM and the U.S.
18 * Government do not and cannot warrant the performance or results that
19 * may be obtained by using this software or data. The NLM and the U.S.
20 * Government disclaim all warranties, express or implied, including
21 * warranties of performance, merchantability or fitness for any particular
22 * purpose.
23 *
24 * ===========================================================================
25 *
26 * File Name: asn2ffg.h
27 *
28 * Author: Karl Sirotkin, Tom Madden, Tatiana Tatusov
29 *
30 * Version Creation Date: 7/15/95
31 *
32 * $Revision: 6.19 $
33 * $Revision: 6.19 $
34 *
35 * File Description:
36 *
37 * Modifications:
38 * --------------------------------------------------------------------------
39 * Date Name Description of modification
40 * ------- ---------- -----------------------------------------------------
41 *
42 *
43 * ==========================================================================
44 */
45
46 /*************************************
47 *
48 * $Log: asn2ffg.h,v $
49 * Revision 6.19 2006/07/13 17:06:38 bollin
50 * use Uint4 instead of Uint2 for itemID values
51 * removed unused variables
52 * resolved compiler warnings
53 *
54 * Revision 6.18 2001/12/21 20:21:16 cavanaug
55 * old_locus_fmt now controls generated of *old* LOCUS line format
56 *
57 * Revision 6.17 2001/12/05 18:14:05 cavanaug
58 * Changes for new LOCUS line format
59 *
60 * Revision 6.16 2000/06/05 17:51:41 tatiana
61 * increase size of feature arrays to Int4
62 *
63 * Revision 6.15 2000/04/03 23:33:36 tatiana
64 * added showSeqLoc for GenBank region view
65 *
66 * Revision 6.14 2000/03/20 23:38:39 aleksey
67 * Finally submitted the changes which have been made by serge bazhin
68 * and been kept in my local directory.
69 *
70 * These changes allow to establish user callback functions
71 * in 'Asn2ffJobPtr' structure which are called within
72 * 'SeqEntryToFlatAjp' function call.
73 * The new members are:
74 * user_data - pointer to a user context for passing data
75 * ajp_count_index - user defined function
76 * ajp_print_data - user defined function
77 * ajp_print_index - user defined function
78 *
79 * Revision 6.13 2000/02/09 19:34:38 kans
80 * added forgbrel flag to Asn2ffJobPtr, currently used to suppress PUBMED line, which was not formally announced in release notes
81 *
82 * Revision 6.12 1999/11/05 14:54:04 tatiana
83 * EMBL_PREFNUM increased to 5
84 *
85 * Revision 6.11 1999/10/27 20:57:07 tatiana
86 * bankit added to ajp
87 *
88 * Revision 6.10 1999/09/23 18:06:04 tatiana
89 * contig_view added to ajp
90 *
91 * Revision 6.9 1999/04/02 16:33:15 tatiana
92 * added LinkStr struct and ByteStorePtr to ajp
93 *
94 * Revision 6.8 1999/03/11 19:04:31 tatiana
95 * version added
96 *
97 * Revision 6.7 1998/11/10 15:12:59 bazhin
98 * Macro NUM_OF_ESTIMATES and static array of integers "line_estimate"
99 * moved out to "asn2ff1.c".
100 *
101 * Revision 6.6 1998/09/24 17:46:00 kans
102 * fixed GetDBXrefFromGene problem (TT)
103 *
104 * Revision 6.5 1998/07/14 17:59:06 kans
105 * added useSeqMgrIndexes to OrganizeFeatPtr and Asn2ffJobPtr
106 *
107 * Revision 6.4 1998/03/09 21:41:03 tatiana
108 * accession length increased to 60
109 *
110 * Revision 6.3 1998/02/12 15:48:26 tatiana
111 * EMBL_PREFNUM increased to 4
112 *
113 * Revision 6.2 1998/01/13 21:10:50 tatiana
114 * added Biosrclist to organizefeat struct
115 *
116 * Revision 6.0 1997/08/25 18:05:13 madden
117 * Revision changed to 6.0
118 *
119 * Revision 5.16 1997/07/23 18:35:51 tatiana
120 * SeqIdPtr id_print added to Asn2ffJob structure
121 *
122 * Revision 5.14 1997/04/25 19:26:03 tatiana
123 * #define EMBL_PREFNUM 1 added
124 *
125 * Revision 5.13 1997/03/13 15:42:47 tatiana
126 * *** empty log message ***
127 *
128 * Revision 5.12 1997/01/27 18:33:51 tatiana
129 * hup added to ajp
130 *
131 * Revision 5.11 1996/12/17 22:45:55 tatiana
132 * added Boolean feat_free to SortStruct
133 *
134 * Revision 5.8 1996/10/25 22:22:44 tatiana
135 * defline added to GBEntry
136 *
137 * Revision 5.7 1996/09/03 19:54:01 tatiana
138 * extra_loc added
139 *
140 * Revision 5.6 1996/08/05 13:54:56 tatiana
141 * orgname added to ajp struct
142 *
143 * Revision 5.4 1996/07/30 13:37:37 tatiana
144 * 'show_gene' added to asn2ffJob
145 *
146 * Revision 5.3 1996/07/23 22:32:50 tatiana
147 * added format to orf struct
148 *
149 * Revision 5.2 1996/07/02 18:06:20 tatiana
150 * *** empty log message ***
151 *
152 * Revision 5.2 1996/07/02 18:06:20 tatiana
153 * *** empty log message ***
154 *
155 * Revision 5.1 1996/06/11 15:24:59 tatiana
156 * add embl ni to GBEntry struct
157 *
158 * Revision 4.13 1996/05/16 20:56:46 tatiana
159 * source_info added to GBEntry structure
160 *
161 * Revision 4.12 1996/04/29 18:54:26 tatiana
162 * multiple comments
163 *
164 * Revision 4.11 1996/04/12 03:41:44 tatiana
165 * added Booleans to GBEntry
166 *
167 * Revision 4.10 1996/04/09 14:03:50 tatiana
168 * DescrStructPtr and comms added to GBEntry
169 *
170 * Revision 4.9 1996/03/20 00:00:20 tatiana
171 * add activity to GeneStruct
172 *
173 * Revision 4.8 1996/03/04 17:11:20 ostell
174 * added support for ignore_top features
175 *
176 * Revision 4.7 1996/02/28 04:53:06 ostell
177 * changes to support segmented master seeuquences
178 *
179 * Revision 4.6 1996/02/18 21:17:17 tatiana
180 * number of pubs, feats and seqblocks added to GBEntry structure
181 *
182 * Revision 4.5 1996/02/15 15:57:11 tatiana
183 * SortStruct changed for sorting within one entity
184 *
185 * Revision 4.4 1996/01/29 22:44:00 tatiana
186 * genome_view added to Asn2ffJobPtr
187 *
188 * Revision 4.2 1995/12/13 16:35:02 tatiana
189 * itemID etc. added to FFPrintArray structure
190 *
191 * Revision 1.1 1995/07/17 19:24:04 kans
192 * Initial revision
193 *
194 *
195 **************************************/
196
197 #ifndef _ASN2FFG_
198 #define _ASN2FFG_
199
200 #include <asn.h>
201 #include <objall.h>
202 #include <objpubd.h>
203
204 #include <seqport.h>
205 #include <objsub.h>
206 #include <prtutil.h>
207 #include <gather.h>
208
209 #define LINKS 20
210 #define EMBL_AC "AFVXYZ" /* patent is "A" */ /* dbEST = "F" */
211 #define EMBL_PREFNUM 5 /* embl two-letter prefix {XX} see asn2ff4.c is_embl()*/
212
213 #define FF_REGULAR 0
214 #define FF_TOP_COMPLETE 1
215 #define FF_TOP_CONTIG 2
216
217 typedef struct _link_str {
218 CharPtr line;
219 struct _link_str PNTR next;
220 } LinkStr, PNTR LinkStrPtr;
221
222 typedef struct genestruct {
223 ValNodePtr gene;
224 ValNodePtr product;
225 ValNodePtr standard_name;
226 CharPtr PNTR map; /* only map[0] is used why we need PNTR? */
227 ValNodePtr ECNum;
228 ValNodePtr activity;
229 Int2 map_size, map_index; /* map_size is always 1 */
230 Boolean pseudo;
231 GeneRefPtr grp;
232 } GeneStruct, PNTR GeneStructPtr;
233
234 typedef struct notestruct {
235 CharPtr PNTR note;
236 Uint1 PNTR note_alloc;
237 CharPtr PNTR note_annot;
238 Int2 note_size, note_index;
239 } NoteStruct, PNTR NoteStructPtr;
240
241 typedef struct sortstruct {
242 BioseqPtr bsp;
243 BioseqPtr seg_bsp;
244 SeqFeatPtr sfp; /* would be NULL if gather tempload == TRUE */
245 SeqLocPtr slp; /*for converted locations, free if not NULL!*/
246 Uint2 entityID,
247 itemtype;
248 Uint4 itemID;
249 Int4 hash;
250 Boolean dup;
251 SeqLocPtr PNTR extra_loc;
252 Int2 extra_loc_cnt;
253 Boolean feat_free;
254 Boolean tempload;
255 GeneStructPtr gsp; /* information on Genes */
256 NoteStructPtr nsp; /* information on Notes. */
257 } SortStruct, PNTR SortStructPtr;
258
259 typedef struct descrstruct {
260 ValNodePtr vnp;
261 Uint2 entityID,
262 itemtype;
263 Uint4 itemID;
264 struct descrstruct PNTR next;
265 } DescrStruct, PNTR DescrStructPtr;
266
267 typedef struct comstruct {
268 CharPtr string;
269 Boolean gsdb_id;
270 Uint2 entityID,
271 itemtype;
272 Uint4 itemID;
273 struct comstruct PNTR next;
274 } ComStruct, PNTR ComStructPtr;
275
276 typedef struct organizeprot {
277 SortStructPtr list;
278 Int2 size;
279 } OrganizeProt, PNTR OrganizeProtPtr;
280
281 typedef struct organizefeat {
282 Boolean embl_feat;
283 BioseqPtr bsp;
284 BioseqPtr seg_bsp;
285 Int4 sfpListsize;
286 Int4 sortListsize;
287 SortStructPtr List; /* ptr's to "generic" features */
288 Int2 sfpCommsize; /* Number of comment features */
289 Int2 sortCommsize; /* Number of sorted comment features */
290 SortStructPtr Commlist;
291 Int4 sfpGenesize; /* Number of gene features */
292 Int4 sortGenesize; /* Number of sorted gene features */
293 SortStructPtr Genelist;
294 Int4 sfpOrgsize; /* Number of Organism features. */
295 Int4 sortOrgsize; /* Number of sorted Organism features. */
296 SortStructPtr Orglist;
297 Int4 sfpSitesize; /* Number of ImpFeat's with key "Site-ref" */
298 Int4 sortSitesize; /* Number of sorted ImpFeat's with key "Site-ref" */
299 SortStructPtr Siteslist;
300 Int4 sfpSourcesize; /* Number of ImpFeat's with key "source" */
301 Int4 sortSourcesize; /* Number of sorted ImpFeat's with key "source" */
302 SortStructPtr Sourcelist;
303 Int4 sfpXrefsize; /* Number of Seq's that go out as xref's */
304 SortStructPtr Xreflist;
305 Uint2 oldID; /* is used to sort within entity */
306 NoteStructPtr source_notes; /* Note for source feature */
307 Uint1 format; /* needed for ProtRef convertion */
308 Boolean show_gene; /* needed temporarely for 'gene' feature */
309 BioseqPtr lock_bsp;
310 Boolean non_strict;
311 Int2 biosrcsize; /* Number of sorted ImpFeat's with key "source" */
312 SortStructPtr Biosrclist;
313 Boolean useSeqMgrIndexes; /* new style indexing to eliminate nested gathers */
314 Boolean showSeqLoc; /* GenBank view for a region, skip truncated check */
315 } OrganizeFeat, PNTR OrganizeFeatPtr;
316
317 /*****************************************************************************
318 *
319 * GBEntry
320 * structure with info for a single GenBank record
321 *
322 *****************************************************************************/
323 typedef struct gbentry {
324 BioseqPtr bsp; /* the Bioseq for this record */
325 Uint2 entityID,
326 itemtype;
327 Uint4 itemID;
328 Char date[12];
329 CharPtr create_date;
330 CharPtr update_date;
331 CharPtr embl_rel;
332 Int2 embl_ver;
333 Int4 gi;
334 CharPtr ni;
335 CharPtr base_cnt_line;
336 Boolean xref_present;
337 Char div[4]; /* division */
338 Char locus[25]; /* locus */
339 Char accession[60]; /* primary accession */
340 Int2 num_seg; /* segment number if segmented */
341 Int4 length; /* length of entry */
342 SeqPortPtr spp; /* seqport on entry */
343 OrganizeFeatPtr feat; /* temporary struct with features */
344 ValNodePtr Pub;
345 DescrStructPtr descr; /* keeps entityID, itemID, itemtype for descr */
346 DescrStructPtr source_info; /* keeps org info if no source feature found */
347 Int4 feat_num; /* number of printed features */
348 Int2 comm_num; /* number of printed cooment blocks */
349 ComStructPtr comm; /* CharPtr in com.data.ptrvalue are comments */
350 Boolean map;
351 CharPtr defline;
352 struct gbentry PNTR next;
353 Char version[60]; /* accession.version */
354 } GBEntry, PNTR GBEntryPtr;
355
356 /*****************************************************************************
357 *
358 * Asn2ffWE
359 * asn2ff working environment. Keeps top level information about current
360 * unit under construction. Serves as head of chain of structs, one for
361 * GenBank record finally produced.
362 *
363 *****************************************************************************/
364 typedef struct asn2ffwe {
365 /* Working environment for data object */
366 SeqEntryPtr current_sep; /* current SeqEntry ???? Tatiana*/
367 BioseqPtr current_bsp; /* current Bioseq ???? Tatiana*/
368 BioseqSetPtr current_bssp;/* current BioseqSet ???? Tatiana*/
369 /* SeqSubmit Only */
370 ValNodePtr cit_sub; /* if a SeqSubmit, the Cit-sub for it */
371 /* Segmented Set Only */
372 Char base_name[25]; /* base LOCUS name if segmented set */
373 Int2 total_seg; /* number of segments in segmented set */
374 BioseqPtr seg; /* segmented Bioseq in segmented set */
375 BioseqSetPtr parts; /* parts set for segmented set */
376 Boolean only_one; /* only one segment of set being shown (current bsp) */
377 GBEntryPtr gbp; /* chain of data for each GB record */
378
379 } Asn2ffWE, PNTR Asn2ffWEPtr;
380
381 /*****************************************************************************
382 *
383 * Asn2ffJob
384 * top level job control structure to be filled in by caller
385 * sets global options and I/O information
386 * sets overall scope and target for formatting
387 * points to function working environment (added by function)
388 *
389 *****************************************************************************/
390 typedef struct asn2ff_job {
391 /* Set formatting options */
392 Boolean show_gene, /* show the gene feature */
393 show_seq, /* do not show the sequence */
394 show_gi, /* do not show the GI id */
395 error_msgs, /* do not show feature validator messages */
396 non_strict, /* only strict gene/protein binding allowed */
397 null_str, /* error msg if printing NULL string */
398 no_hold, /* if TRUE, do not use ObjMgrSetHold around asn2ff_print */
399 free_cache; /* if TRUE, ObjMgrFreeCache() after asn2ff_print */
400 Uint1 format, /* from _FMT above */
401 mode; /* from _MODE above */
402 FILE * fp; /* if not NULL, output goes to file */
403 StdPrintOptionsPtr Spop; /* for templates */
404
405 /* Specify the data to be formatted */
406 Uint2 entityID, /* could be a data object */
407 itemtype;
408 Uint4 itemID; /* specified by ID or by pointer */
409 Boolean only_one, /* show only one top-level bioseq */
410 ignore_top; /* do not show features from top-level bioseq */
411 SeqSubmitPtr ssp; /* alternative data object pointers */
412 SeqEntryPtr sep;
413 SeqLocPtr slp; /* or could be a location on a sequence */
414 Boolean gb_style; /* only complete features are shown e.g. join cds on the last segmented bioseq */
415 Boolean genome_view; /* not printing the sequence and features*/
416 Boolean map_view; /* not printing the sequence */
417 Boolean hup; /* for submissions */
418 /* taken directly from Biotable, used for printing and formatting */
419 Int4 pap_index;
420 Uint1 pap_last;
421 Boolean pseudo;
422 SeqFeatPtr sfp_out;
423 Int2 number_of_cds;
424 Boolean help;
425
426 /** this section filled in by function **************/
427 Asn2ffWEPtr asn2ffwep;
428 Boolean orgname; /* new algorithm for /organism in source feature*/
429 SeqIdPtr id_print;
430 Boolean useSeqMgrIndexes; /* new style indexing to eliminate nested gathers */
431 Boolean show_version;
432 ByteStorePtr byte_st;
433 Boolean contig_view; /* CONTIG line and features*/
434 Boolean bankit; /* show Bankit comments*/
435 Boolean forgbrel;
436 Pointer user_data;
437 Int4 (*ajp_print_data)(struct asn2ff_job *ajp, CharPtr str,
438 Pointer user_data);
439 Int4 (*ajp_print_index)(struct asn2ff_job *ajp, Pointer user_data);
440 Int4 (*ajp_count_index)(struct asn2ff_job *ajp, Int4 num, Pointer user_data);
441 Boolean old_locus_fmt; /* Set to TRUE in order to generate the old LOCUS-line format,
442 pre-dating 12/21/2001 */
443 } Asn2ffJob, PNTR Asn2ffJobPtr;
444
445
446
447 /*----------- Estimates for the number of lines returned for
448 each of the following------------------------------------------*/
449
450 #define NUM_SEQ_LINES 10
451
452 typedef void (* FFPapFct) PROTO ((Asn2ffJobPtr ajp, GBEntryPtr gbp));
453
454 typedef struct ffprintarray {
455 FFPapFct fct;
456 Asn2ffJobPtr ajp;
457 GBEntryPtr gbp;
458 Int4 index;
459 Uint1 last;
460 Uint1 printxx;
461 Int2 estimate;
462 DescrStructPtr descr; /* keeps entityID, itemID, itemtype for descr */
463 } FFPrintArray, PNTR FFPrintArrayPtr;
464 /*****************************************************************************
465 *
466 * Main asn2ff entry points
467 *
468 *****************************************************************************/
469
470 Boolean Asn2ff PROTO((Asn2ffJobPtr ajp));
471
472 #endif
473 |
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more information. |