1 /* @include ensqcsequence *****************************************************
2 **
3 ** Ensembl Quality Check Sequence functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.17 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2012/02/04 10:30:24 $ by $Author: mks $
10 ** @@
11 **
12 ** This library is free software; you can redistribute it and/or
13 ** modify it under the terms of the GNU Lesser General Public
14 ** License as published by the Free Software Foundation; either
15 ** version 2.1 of the License, or (at your option) any later version.
16 **
17 ** This library is distributed in the hope that it will be useful,
18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ** Lesser General Public License for more details.
21 **
22 ** You should have received a copy of the GNU Lesser General Public
23 ** License along with this library; if not, write to the Free Software
24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 ** MA  02110-1301,  USA.
26 **
27 ******************************************************************************/
28 
29 #ifndef ENSQCSEQUENCE_H
30 #define ENSQCSEQUENCE_H
31 
32 /* ========================================================================= */
33 /* ============================= include files ============================= */
34 /* ========================================================================= */
35 
36 #include "ensqcdatabase.h"
37 
38 AJ_BEGIN_DECLS
39 
40 
41 
42 
43 /* ========================================================================= */
44 /* =============================== constants =============================== */
45 /* ========================================================================= */
46 
47 
48 
49 
50 /* ========================================================================= */
51 /* ============================== public data ============================== */
52 /* ========================================================================= */
53 
54 /* @data EnsPQcsequenceadaptor ************************************************
55 **
56 ** Ensembl Quality Check Sequence Adaptor
57 **
58 ** @alias EnsSQcsequenceadaptor
59 ** @alias EnsOQcsequenceadaptor
60 **
61 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor
62 ** @attr CacheByIdentifier [AjPTable] Identifier cache
63 ** @attr CacheByName [AjPTable] Name cache
64 ** @@
65 ** TODO: Should this also have a CacheByAccessionVersion???
66 ******************************************************************************/
67 
68 typedef struct EnsSQcsequenceadaptor
69 {
70     EnsPBaseadaptor Adaptor;
71     AjPTable CacheByIdentifier;
72     AjPTable CacheByName;
73 } EnsOQcsequenceadaptor;
74 
75 #define EnsPQcsequenceadaptor EnsOQcsequenceadaptor*
76 
77 
78 
79 
80 /* @data EnsPQcsequence *******************************************************
81 **
82 ** Ensembl Quality Check Sequence
83 **
84 ** @alias EnsSQcsequence
85 ** @alias EnsOQcsequence
86 **
87 ** @attr Use [ajuint] Use counter
88 ** @cc Bio::EnsEMBL::Storable
89 ** @attr Identifier [ajuint] SQL database-internal identifier
90 ** @attr Adaptor [EnsPQcsequenceadaptor] Ensembl Sequence Adaptor
91 ** @cc Bio::EnsEMBL::QC::Sequence
92 ** @cc 'sequence' SQL table
93 ** @attr Qcdatabase [EnsPQcdatabase] Ensembl Quality Check Database
94 ** @attr Name [AjPStr] Name
95 ** @attr Accession [AjPStr] Accession
96 ** @attr Description [AjPStr] Description
97 ** @attr Type [AjPStr] Type
98 ** @attr Version [ajuint] Version
99 ** @attr Length [ajuint] Length
100 ** @attr CdsStart [ajuint] Coding sequence start
101 ** @attr CdsEnd [ajuint] Coding sequence end
102 ** @attr CdsStrand [ajint] Coding sequence strand
103 ** @attr Polya [ajuint] Poly A+ tail length
104 ** @@
105 ******************************************************************************/
106 
107 typedef struct EnsSQcsequence
108 {
109     ajuint Use;
110     ajuint Identifier;
111     EnsPQcsequenceadaptor Adaptor;
112     EnsPQcdatabase Qcdatabase;
113     AjPStr Name;
114     AjPStr Accession;
115     AjPStr Description;
116     AjPStr Type;
117     ajuint Version;
118     ajuint Length;
119     ajuint CdsStart;
120     ajuint CdsEnd;
121     ajint CdsStrand;
122     ajuint Polya;
123 } EnsOQcsequence;
124 
125 #define EnsPQcsequence EnsOQcsequence*
126 
127 
128 
129 
130 /* ========================================================================= */
131 /* =========================== public functions ============================ */
132 /* ========================================================================= */
133 
134 /*
135 ** Prototype definitions
136 */
137 
138 /* Ensembl Quality Check Sequence */
139 
140 EnsPQcsequence ensQcsequenceNewCpy(const EnsPQcsequence qcs);
141 
142 EnsPQcsequence ensQcsequenceNewIni(EnsPQcsequenceadaptor adaptor,
143                                    ajuint identifier,
144                                    EnsPQcdatabase qcdb,
145                                    AjPStr name,
146                                    AjPStr accession,
147                                    ajuint version,
148                                    AjPStr type,
149                                    ajuint length,
150                                    ajuint cdsstart,
151                                    ajuint cdsend,
152                                    ajint cdsstrand,
153                                    ajuint polya,
154                                    AjPStr description);
155 
156 EnsPQcsequence ensQcsequenceNewRef(EnsPQcsequence qcs);
157 
158 void ensQcsequenceDel(EnsPQcsequence *Pqcs);
159 
160 AjPStr ensQcsequenceGetAccession(const EnsPQcsequence qcs);
161 
162 EnsPQcsequenceadaptor ensQcsequenceGetAdaptor(const EnsPQcsequence qcs);
163 
164 ajuint ensQcsequenceGetCdsEnd(const EnsPQcsequence qcs);
165 
166 ajuint ensQcsequenceGetCdsStart(const EnsPQcsequence qcs);
167 
168 ajint ensQcsequenceGetCdsStrand(const EnsPQcsequence qcs);
169 
170 AjPStr ensQcsequenceGetDescription(const EnsPQcsequence qcs);
171 
172 ajuint ensQcsequenceGetIdentifier(const EnsPQcsequence qcs);
173 
174 ajuint ensQcsequenceGetLength(const EnsPQcsequence qcs);
175 
176 AjPStr ensQcsequenceGetName(const EnsPQcsequence qcs);
177 
178 ajuint ensQcsequenceGetPolya(const EnsPQcsequence qcs);
179 
180 EnsPQcdatabase ensQcsequenceGetQcdatabase(const EnsPQcsequence qcs);
181 
182 AjPStr ensQcsequenceGetType(const EnsPQcsequence qcs);
183 
184 ajuint ensQcsequenceGetVersion(const EnsPQcsequence qcs);
185 
186 AjBool ensQcsequenceSetAdaptor(EnsPQcsequence qcs, EnsPQcsequenceadaptor qcsa);
187 
188 AjBool ensQcsequenceSetIdentifier(EnsPQcsequence qcs, ajuint identifier);
189 
190 AjBool ensQcsequenceSetQcdatabase(EnsPQcsequence qcs, EnsPQcdatabase qcdb);
191 
192 AjBool ensQcsequenceSetName(EnsPQcsequence qcs, AjPStr name);
193 
194 AjBool ensQcsequenceSetAccession(EnsPQcsequence qcs, AjPStr accession);
195 
196 AjBool ensQcsequenceSetVersion(EnsPQcsequence qcs, ajuint version);
197 
198 AjBool ensQcsequenceSetType(EnsPQcsequence qcs, AjPStr type);
199 
200 AjBool ensQcsequenceSetLength(EnsPQcsequence qcs, ajuint length);
201 
202 AjBool ensQcsequenceSetCdsStart(EnsPQcsequence qcs, ajuint cdsstart);
203 
204 AjBool ensQcsequenceSetCdsEnd(EnsPQcsequence qcs, ajuint cdsend);
205 
206 AjBool ensQcsequenceSetCdsStrand(EnsPQcsequence qcs, ajint cdsstrand);
207 
208 AjBool ensQcsequenceSetPolya(EnsPQcsequence qcs, ajuint polya);
209 
210 AjBool ensQcsequenceSetDescription(EnsPQcsequence qcs, AjPStr description);
211 
212 AjBool ensQcsequenceTrace(const EnsPQcsequence qcs, ajuint level);
213 
214 size_t ensQcsequenceCalculateMemsize(const EnsPQcsequence qcs);
215 
216 ajuint ensQcsequenceGetQcdatabaseIdentifier(const EnsPQcsequence qcs);
217 
218 AjBool ensQcsequenceMatch(const EnsPQcsequence qcs1,
219                           const EnsPQcsequence qcs2);
220 
221 AjBool ensQcsequenceFetchAnchorExternal(const EnsPQcsequence qcs,
222                                         AjBool htmlid,
223                                         AjPStr *Pstr);
224 
225 AjBool ensQcsequenceFetchAnchorInternal(const EnsPQcsequence qcs,
226                                         AjPStr *Pstr);
227 
228 AjBool ensQcsequenceFetchUrlExternal(const EnsPQcsequence qcs, AjPStr *Pstr);
229 
230 AjBool ensHtmlEncodeEntities(AjPStr *Pstr);
231 
232 AjBool ensHtmlEncodeSgmlid(AjPStr *Pstr);
233 
234 /* Ensembl Quality Check Sequence Adaptor */
235 
236 EnsPQcsequenceadaptor ensRegistryGetQcsequenceadaptor(
237     EnsPDatabaseadaptor dba);
238 
239 EnsPQcsequenceadaptor ensQcsequenceadaptorNew(
240     EnsPDatabaseadaptor dba);
241 
242 void ensQcsequenceadaptorDel(EnsPQcsequenceadaptor *Pqcsa);
243 
244 EnsPBaseadaptor ensQcsequenceadaptorGetBaseadaptor(
245     EnsPQcsequenceadaptor qcsa);
246 
247 EnsPDatabaseadaptor ensQcsequenceadaptorGetDatabaseadaptor(
248     EnsPQcsequenceadaptor qcsa);
249 
250 AjBool ensQcsequenceadaptorFetchByAccession(EnsPQcsequenceadaptor qcsa,
251                                             ajuint qcdbid,
252                                             const AjPStr accession,
253                                             ajuint version,
254                                             EnsPQcsequence *Pqcs);
255 
256 AjBool ensQcsequenceadaptorFetchByIdentifier(EnsPQcsequenceadaptor adaptor,
257                                              ajuint identifier,
258                                              EnsPQcsequence *Pqcs);
259 
260 AjBool ensQcsequenceadaptorFetchByName(EnsPQcsequenceadaptor qcsa,
261                                        ajuint qcdbid,
262                                        const AjPStr name,
263                                        EnsPQcsequence *Pqcs);
264 
265 AjBool ensQcsequenceadaptorFetchAllbyQcdatabase(EnsPQcsequenceadaptor qcsa,
266                                                 const EnsPQcdatabase qcdb,
267                                                 AjPList qcss);
268 
269 AjBool ensQcsequenceadaptorStore(EnsPQcsequenceadaptor qcsa,
270                                  EnsPQcsequence qcs);
271 
272 AjBool ensQcsequenceadaptorDelete(EnsPQcsequenceadaptor qcsa,
273                                   EnsPQcsequence qcs);
274 
275 AjBool ensQcsequenceadaptorUpdate(EnsPQcsequenceadaptor qcsa,
276                                   const EnsPQcsequence qcs);
277 
278 
279 /*
280 ** End of prototype definitions
281 */
282 
283 
284 
285 
286 AJ_END_DECLS
287 
288 #endif /* !ENSQCSEQUENCE_H */
289