1 /*   a2fstruc.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:  a2fstruc.h
27 *
28 * Author:  Karl Sirotkin, Tom Madden, Tatiana Tatusov
29 *
30 * Version Creation Date:   7/15/95
31 *
32 * $Revision: 6.0 $
33 *
34 * File Description:
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date     Name        Description of modification
39 * -------  ----------  -----------------------------------------------------
40 *
41 *
42 * ==========================================================================
43 */
44 
45 /*********************************************************************
46 *
47 *	Structures for asn2ff and makerpt
48 *
49 **********************************************************************/
50 
51 /*************************************
52 *
53 * $Log: a2fstruc.h,v $
54 * Revision 6.0  1997/08/25 18:04:30  madden
55 * Revision changed to 6.0
56 *
57 * Revision 5.0  1996/05/28 13:23:23  ostell
58 * Set to revision 5.0
59 *
60  * Revision 4.0  1995/07/26  13:49:01  ostell
61  * force revision to 4.0
62  *
63  * Revision 1.11  1995/07/17  19:33:20  kans
64  * parameters combined into Asn2ffJobPtr structure
65  *
66  * Revision 1.10  1995/06/19  21:40:02  kans
67  * Tatiana's first major reorganization, moving printing, adding HTML
68  *
69  * Revision 1.9  1995/05/15  21:46:05  ostell
70  * added Log line
71  *
72 *
73 *************************************/
74 
75 #ifndef _A2FSTRUC_
76 #define _A2FSTRUC_
77 
78 #include <asn.h>
79 #include <objall.h>
80 #include <objpubd.h>
81 #include <objsub.h>
82 #include <prtutil.h>
83 #include <asn2ffg.h>
84 
85 #define LINKS 20
86 
87 
88 /*--------------the structure for information on Genes-----*/
89 
90 typedef struct genestruct {
91 	ValNodePtr gene;
92 	ValNodePtr product;
93 	ValNodePtr standard_name;
94 	CharPtr PNTR map;         /* only map[0] is used why we need PNTR? */
95 	ValNodePtr ECNum;
96 	Int2 map_size, map_index;   /* map_size is always 1 */
97 	Int2 matchlist_size;
98 	Int2Ptr genes_matched;
99 	Boolean pseudo;
100 } GeneStruct, PNTR GeneStructPtr;
101 
102 /*--------------the structure for the composition of notes-----*/
103 
104 typedef struct notestruct {
105 	CharPtr PNTR note;
106 	Uint1 PNTR note_alloc;
107 	CharPtr PNTR note_annot;
108 	Int2 	note_size, note_index;
109 } NoteStruct, PNTR NoteStructPtr;
110 
111 /* ---------------The Biotable Structure ------------*/
112 
113 typedef struct biotable {
114 	SeqEntryPtr sep;	/* the SeqEntryPtr passed to asn2ff_setup */
115 	SeqEntryPtr PNTR sepp;	/* An array of SeqEntryPtr's, used by makerpt */
116 	BioseqPtr PNTR bsp;	/* This array lists the (valid) entries to be
117 					formatted */
118 	BioseqPtr PNTR table;	/* This array lists the BioseqPtr's with repr
119 				"seg" in a segmented set.  If the entry is not
120 				segmented, this is NULL */
121 	BioseqContextPtr PNTR bcp;	/* The BioseqContextPtr for each
122 					BioseqPtr */
123 	BioseqContextPtr PNTR bcp_na;	/* BioseqContextPtr of a nucleotide
124 				sequence, used for an amino acid sequence;
125 				set in EstablishProteinLink */
126 	Uint1 PNTR bcp_na_alloc;	/* flag that says whether the bcp is
127 					allocated */
128 	SeqFeatPtr PNTR cds;	/* Used by genPept to determine which CDS
129 				a protein comes from, set in
130 				EstablishProteinLink */
131 	Int2 FlatLoc_context;
132 	GeneStructPtr PNTR PNTR gspp;	/* information on Genes */
133 	NoteStructPtr PNTR PNTR nspp;	/* information on Notes. */
134 	NoteStructPtr source_notes;	/* Note for source feature */
135 	SeqFeatPtr sfp_out;	/* ImpFeat used to hole SeqFeat info while
136 				they're being formatted */
137 /* The next several variables, all starting with "sfp", are set in
138 OrganizeSeqFeat */
139 	Int2Ptr sfpListsize;	/* Number of "generic" (i.e., not in any
140 				category below) features/entry */
141 	SeqFeatPtr PNTR PNTR sfpList;	/* ptr's to "generic" features */
142 	Int2Ptr sfpCommsize;	/* Number of comment features */
143 	SeqFeatPtr PNTR PNTR sfpCommlist;	/* ptr's to comment features */
144 	Int2Ptr sfpGenesize;	/* Number of gene features */
145 	SeqFeatPtr PNTR PNTR sfpGenelist;	/* Ptr's to gene features */
146 	Int2Ptr sfpOrgsize;	/* Number of Organism features. */
147 	SeqFeatPtr PNTR PNTR sfpOrglist;	/* ptr's to Org features. */
148 	Int2Ptr sfpSitesize;	/* Number of ImpFeat's with key "Site-ref" */
149 	SeqFeatPtr PNTR PNTR sfpSitelist; /* ptr's to ImpFeat's with key "Site-ref" */
150 	Int2Ptr sfpSourcesize;	/* Number of ImpFeat's with key "source" */
151 	SeqFeatPtr PNTR PNTR sfpSourcelist; /* ptr's to ImpFeat's with key "source" */
152 	Int2Ptr sfpXrefsize;	/* Number of Seq's that go out as xref's */
153 	SeqFeatPtr PNTR PNTR sfpXreflist;/* ptr's to Seq's that are xref's */
154 	ValNodePtr PNTR Pub;	/* Linked list of references */
155 	CharPtr PNTR base_cnt_line;
156 	CharPtr PNTR access;
157 	CharPtr PNTR locus;
158 	CharPtr PNTR division;
159 	CharPtr PNTR date;
160 	CharPtr PNTR create_date;
161 	CharPtr PNTR update_date;
162 	CharPtr PNTR embl_rel;
163 	Int2Ptr embl_ver;
164 	Int4Ptr gi;
165 	Int2 count;
166 	Int2Ptr seg_num;
167 	Int2Ptr seg_total;
168 	Int4 pap_index;
169 	Uint1 pap_last;
170 	Char  newline;
171 	Boolean pseudo;
172 	Uint1 gene_binding;
173 	Int2 number_of_cds;
174 	SeqPortPtr spp;
175         Int4 count_set;
176         Boolean found_match;
177 	struct biotable PNTR btp_other;
178 } Biotable, PNTR BiotablePtr;
179 
180 /*----------- Estimates for the number of lines returned for
181 each of the following------------------------------------------*/
182 
183 #define NUM_OF_ESTIMATES 20
184 #define NUM_SEQ_LINES 10
185 
186 static Int2 line_estimate[NUM_OF_ESTIMATES] = {
187 1, /* 0; Locus, Segment, Base Count, Origin, Feature Header lines */
188 1, /* 1; Definition line(s) */
189 1, /* 2; Accession line(s) */
190 1, /* 3; Keyword line(s) */
191 2, /* 4; Source lines */
192 6, /* 5; Reference (pub) lines */
193 10, /* 6; GBComAndFH */
194 11, /* 7; GBComAndXref */
195 6, /* 8; Features */
196 NUM_SEQ_LINES, /* 9; Sequence lines */
197 2, /* 10; EMBL Date lines */
198 2, /* 11; EMBL Organism lines */
199 4, /* 12; DBSOURCE field */
200 };
201 
202 
203 
204 typedef void (* FFPapFct) PROTO ((Asn2ffJobPtr ajp, BiotablePtr btp, Int2 count));
205 
206 typedef struct ffprintarray {
207 	FFPapFct fct;
208 	Asn2ffJobPtr ajp;
209 	BiotablePtr btp;
210 	Int2 count;
211 	Int4 index;
212 	Uint1 last;
213 	Uint1 printxx;
214 	Int2 estimate;
215 	SeqFeatPtr sfp;
216 	ValNodePtr pub;
217 	ValNodePtr descr;
218 } FFPrintArray, PNTR FFPrintArrayPtr;
219 
220 #endif
221