1 /* @include ajseq *************************************************************
2 **
3 ** AJAX SEQ (sequence) functions
4 **
5 ** These functions control all aspects of AJAX sequence
6 ** reading and writing and include simple utilities.
7 **
8 ** @author Copyright (C) 1998 Peter Rice
9 ** @version $Revision: 1.85 $
10 ** @modified Jun 25 pmr First version
11 ** @modified $Date: 2013/06/29 22:32:55 $ by $Author: rice $
12 ** @@
13 **
14 ** This library is free software; you can redistribute it and/or
15 ** modify it under the terms of the GNU Lesser General Public
16 ** License as published by the Free Software Foundation; either
17 ** version 2.1 of the License, or (at your option) any later version.
18 **
19 ** This library is distributed in the hope that it will be useful,
20 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22 ** Lesser General Public License for more details.
23 **
24 ** You should have received a copy of the GNU Lesser General Public
25 ** License along with this library; if not, write to the Free Software
26 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
27 ** MA  02110-1301,  USA.
28 **
29 ******************************************************************************/
30 
31 #ifndef AJSEQ_H
32 #define AJSEQ_H
33 
34 /* ========================================================================= */
35 /* ============================= include files ============================= */
36 /* ========================================================================= */
37 
38 #include "ajseqdata.h"
39 #include "ajrefseq.h"
40 
41 AJ_BEGIN_DECLS
42 
43 
44 
45 
46 /* ========================================================================= */
47 /* =============================== constants =============================== */
48 /* ========================================================================= */
49 
50 
51 
52 
53 /* ========================================================================= */
54 /* ============================== public data ============================== */
55 /* ========================================================================= */
56 
57 
58 
59 
60 /* @data AjPSeqCvt ************************************************************
61 **
62 ** Sequence conversion data. Used to convert a sequence to binary.
63 **
64 ** @new ajSeqCvtNew Creates from a character string of valid bases.
65 ** @new ajSeqCvtNewText Creates from a character string of valid bases.
66 ** @new ajSeqCvtNewZero Creates from a character string of valid bases.
67 ** @new ajSeqCvtNewZeroS Creates from an array of strings of valid bases.
68 ** @new ajSeqCvtNewZeroSS Creates from an array of strings of valid bases.
69 ** @output ajSeqCvtTrace Reports on contents for debugging
70 *
71 ** @alias AjSSeqCvt
72 ** @alias AjOSeqCvt
73 **
74 ** @attr size [ajint] Number of characters in table, usually
75 **                    all possible characters.
76 ** @attr len [ajint] Number of characters defined
77 ** @attr missing [ajint] Index of the missing character value
78 ** @attr nrlabels [ajint] Number of row labels
79 ** @attr bases [AjPStr] The bases which can be converted
80 ** @attr rlabels [AjPStr*] Row labels
81 ** @attr clabels [AjPStr*] Column labels
82 ** @attr table [char*] Binary character value for each character in bases
83 ** @attr nclabels [ajint] Number of column labels
84 ** @attr Padding [char[4]] Padding to alignment boundary
85 ** @@
86 ******************************************************************************/
87 
88 typedef struct AjSSeqCvt
89 {
90     ajint size;
91     ajint len;
92     ajint missing;
93     ajint nrlabels;
94     AjPStr bases;
95     AjPStr* rlabels;
96     AjPStr* clabels;
97     char *table;
98     ajint nclabels;
99     char Padding[4];
100 } AjOSeqCvt;
101 
102 #define AjPSeqCvt AjOSeqCvt*
103 
104 
105 
106 
107 /* ========================================================================= */
108 /* =========================== public functions ============================ */
109 /* ========================================================================= */
110 
111 
112 
113 
114 /*
115 ** Prototype definitions
116 */
117 
118 AjBool       ajSeqtestIsAccession(const AjPStr accnum);
119 const AjPStr ajSeqtestIsSeqversion(const AjPStr sv);
120 
121 void         ajSeqallDel(AjPSeqall *thys);
122 ajlong       ajSeqallGetCount(const AjPSeqall seq);
123 const AjPStr ajSeqallGetFilename(const AjPSeqall thys);
124 const AjPStr ajSeqallGetseqName(const AjPSeqall thys);
125 ajint        ajSeqallGetseqBegin(const AjPSeqall seq);
126 ajint        ajSeqallGetseqEnd(const AjPSeqall seq);
127 ajint        ajSeqallGetseqLen(const AjPSeqall seqall);
128 const AjPStr ajSeqallGetName(const AjPSeqall seq);
129 ajint        ajSeqallGetseqRange(const AjPSeqall thys,
130                                  ajint* begin, ajint* end);
131 ajlong       ajSeqallGetTotlength(const AjPSeqall seq);
132 const AjPStr ajSeqallGetUsa(const AjPSeqall thys);
133 AjPSeqall    ajSeqallNew(void);
134 void         ajSeqallClear(AjPSeqall thys);
135 void         ajSeqallClearStats(AjPSeqall thys);
136 AjBool       ajSeqallNext(AjPSeqall seqall, AjPSeq* retseq);
137 void         ajSeqallSetRange(AjPSeqall seq, ajint ibegin, ajint iend);
138 void         ajSeqallSetRangeRev(AjPSeqall seq, ajint ibegin, ajint iend);
139 void         ajSeqAddCmt(AjPSeq thys, AjPStr str);
140 void         ajSeqAddGene(AjPSeq thys, AjPSeqGene gene);
141 void         ajSeqAddHost(AjPSeq thys, AjPStr str);
142 void         ajSeqAddKey(AjPSeq thys, AjPStr str);
143 void         ajSeqAddRef(AjPSeq thys, AjPSeqRef ref);
144 void         ajSeqAddXref(AjPSeq thys, AjPSeqXref xref);
145 void         ajSeqAssignAccC(AjPSeq seq, const char* text);
146 void         ajSeqAssignAccS(AjPSeq seq, const AjPStr str);
147 void         ajSeqAssignDescC(AjPSeq seq, const char* text);
148 void         ajSeqAssignDescS(AjPSeq seq, const AjPStr str);
149 void         ajSeqAssignEntryC(AjPSeq seq, const char* text);
150 void         ajSeqAssignEntryS(AjPSeq seq, const AjPStr str);
151 void         ajSeqAssignFileC(AjPSeq seq, const char* text);
152 void         ajSeqAssignFileS(AjPSeq seq, const AjPStr str);
153 void         ajSeqAssignFullC(AjPSeq seq, const char* text);
154 void         ajSeqAssignFullS(AjPSeq seq, const AjPStr str);
155 void         ajSeqAssignGiC(AjPSeq seq, const char* text);
156 void         ajSeqAssignGiS(AjPSeq
157                             seq, const AjPStr str);
158 void         ajSeqAssignNameC(AjPSeq seq, const char* txt);
159 void         ajSeqAssignNameS(AjPSeq seq, const AjPStr str);
160 void         ajSeqAssignQualLen(AjPSeq seq, const float* qual, ajuint len);
161 void         ajSeqAssignSeqC(AjPSeq seq, const char* text);
162 void         ajSeqAssignSeqLenC(AjPSeq seq, const char* txt, ajuint len);
163 void         ajSeqAssignSeqS(AjPSeq seq, const AjPStr str);
164 void         ajSeqAssignSvC(AjPSeq seq, const char* text);
165 void         ajSeqAssignSvS(AjPSeq seq, const AjPStr str);
166 void         ajSeqAssignUfoC(AjPSeq seq, const char* text);
167 void         ajSeqAssignUfoS(AjPSeq seq, const AjPStr str);
168 void         ajSeqAssignUsaC(AjPSeq seq, const char* text);
169 void         ajSeqAssignUsaS(AjPSeq seq, const AjPStr str);
170 ajuint       ajSeqGetBegin(const AjPSeq seq);
171 const float* ajSeqGetQual(const AjPSeq seq);
172 const char*  ajSeqGetSeqC(const AjPSeq thys);
173 const AjPStr ajSeqGetSeqS(const AjPSeq seq);
174 char*        ajSeqGetSeqCopyC(const AjPSeq seq);
175 AjPStr       ajSeqGetSeqCopyS(const AjPSeq seq);
176 ajint        ajSeqCalcCheckgcg(const AjPSeq thys);
177 void         ajSeqClear(AjPSeq thys);
178 void         ajSeqComplement(AjPSeq thys);
179 void         ajSeqstrComplement(AjPStr* thys);
180 AjBool       ajSeqstrConvertNum(const AjPStr seq, const AjPSeqCvt cvt,
181                                 AjPStr* Pnumseq);
182 AjPFeattable ajSeqGetFeatCopy(const AjPSeq thys);
183 void         ajSeqCalcCount(const AjPSeq thys, ajint *b);
184 ajuint       ajSeqstrCountGaps(const AjPStr str);
185 void         ajSeqcvtDel(AjPSeqCvt* thys);
186 ajint        ajSeqcvtGetCodeK(const AjPSeqCvt thys, char ch);
187 ajint        ajSeqcvtGetCodeS(const AjPSeqCvt thys, const AjPStr ch);
188 ajint        ajSeqcvtGetCodeAsymS(const AjPSeqCvt cvt, const AjPStr str);
189 ajint        ajSeqcvtGetCodeAsymrowS(const AjPSeqCvt cvt, const AjPStr str);
190 ajuint       ajSeqcvtGetLen(const AjPSeqCvt thys);
191 AjPSeqCvt    ajSeqcvtNewC(const char* bases);
192 AjPSeqCvt    ajSeqcvtNewNumberC(const char* bases);
193 AjPSeqCvt    ajSeqcvtNewEndC(const char* bases);
194 AjPSeqCvt    ajSeqcvtNewStr(const AjPPStr bases, ajint n);
195 AjPSeqCvt    ajSeqcvtNewStrAsym(const AjPPStr bases, ajint n,
196                                 const AjPPStr rbases, ajint rn);
197 void         ajSeqcvtTrace(const AjPSeqCvt cvt);
198 AjPSeqDate   ajSeqdateNew(void);
199 AjPSeqDate   ajSeqdateNewDate(const AjPSeqDate date);
200 AjBool       ajSeqdateSetCreateS(AjPSeqDate date, const AjPStr datestr);
201 AjBool       ajSeqdateSetModifyS(AjPSeqDate date, const AjPStr datestr);
202 AjBool       ajSeqdateSetModseqS(AjPSeqDate date, const AjPStr datestr);
203 void         ajSeqdateClear(AjPSeqDate date);
204 void         ajSeqdateDel(AjPSeqDate*);
205 AjBool       ajSeqdateExists(const AjPSeqDate thys);
206 AjPSeqDesc   ajSeqdescNew(void);
207 AjPSeqDesc   ajSeqdescNewDesc(const AjPSeqDesc);
208 void         ajSeqdescClear(AjPSeqDesc desc);
209 void         ajSeqdescDel(AjPSeqDesc*);
210 AjBool       ajSeqdesclistClone(const AjPList src, AjPList dest);
211 AjPSeqSubdesc ajSeqsubdescNew(void);
212 AjPSeqSubdesc ajSeqsubdescNewSubdesc(const AjPSeqSubdesc);
213 void         ajSeqsubdescClear(AjPSeqSubdesc desc);
214 void         ajSeqsubdescDel(AjPSeqSubdesc*);
215 AjBool       ajSeqsubdesclistClone(const AjPList src, AjPList dest);
216 AjPSeqGene   ajSeqgeneNew(void);
217 AjPSeqGene   ajSeqgeneNewGene(const AjPSeqGene gene);
218 AjPSeqGene   ajSeqgeneNewName(const AjPStr str);
219 void         ajSeqgeneDel(AjPSeqGene*);
220 AjPSeqRange  ajSeqrangeNew(void);
221 AjPSeqRange  ajSeqrangeNewRange(const AjPSeqRange range);
222 AjPSeqRange  ajSeqrangeNewValues(ajulong pos, ajulong len, const AjPStr qry);
223 void         ajSeqrangeDel(AjPSeqRange* Prange);
224 AjBool       ajSeqrangeSetQuery(AjPSeqRange range, const AjPStr qry);
225 AjBool       ajSeqrangeSetRange(AjPSeqRange range, ajulong pos, ajulong len);
226 AjPSeqRef    ajSeqrefNew(void);
227 AjPSeqRef    ajSeqrefNewRef(const AjPSeqRef);
228 void         ajSeqrefDel(AjPSeqRef*);
229 AjPSeqXref   ajSeqxrefNew(void);
230 AjPSeqXref   ajSeqxrefNewDbC(const AjPStr id, const char* db, ajuint reftype);
231 AjPSeqXref   ajSeqxrefNewDbS(const AjPStr id, const AjPStr db, ajuint reftype);
232 AjPSeqXref   ajSeqxrefNewRef(const AjPSeqXref);
233 void         ajSeqxrefDel(AjPSeqXref*);
234 AjBool       ajSeqdescAppendName(AjPSeqDesc desc, const AjPStr str);
235 AjBool       ajSeqdescSetName(AjPSeqDesc desc, const AjPStr str);
236 AjBool       ajSeqsubdescAppendName(AjPSeqSubdesc desc, const AjPStr str);
237 AjBool       ajSeqsubdescSetName(AjPSeqSubdesc desc, const AjPStr str);
238 AjBool       ajSeqgeneAppendName(AjPSeqGene gene, const AjPStr str);
239 AjBool       ajSeqgeneAppendSynonyms(AjPSeqGene gene, const AjPStr str);
240 AjBool       ajSeqgeneAppendOrf(AjPSeqGene gene, const AjPStr str);
241 AjBool       ajSeqgeneAppendOln(AjPSeqGene gene, const AjPStr str);
242 AjBool       ajSeqgeneSetName(AjPSeqGene gene, const AjPStr str);
243 AjBool       ajSeqgeneSetSynonyms(AjPSeqGene gene, const AjPStr str);
244 AjBool       ajSeqgeneSetOrf(AjPSeqGene gene, const AjPStr str);
245 AjBool       ajSeqgeneSetOln(AjPSeqGene gene, const AjPStr str);
246 AjBool       ajSeqgenelistClone(const AjPList src, AjPList dest);
247 AjBool       ajSeqrefAppendAuthors(AjPSeqRef ref, const AjPStr str);
248 AjBool       ajSeqrefAppendComment(AjPSeqRef ref, const AjPStr str);
249 AjBool       ajSeqrefAppendGroupname(AjPSeqRef ref, const AjPStr str);
250 AjBool       ajSeqrefAppendLocation(AjPSeqRef ref, const AjPStr str);
251 AjBool       ajSeqrefAppendPosition(AjPSeqRef ref, const AjPStr str);
252 AjBool       ajSeqrefAppendTitle(AjPSeqRef ref, const AjPStr str);
253 AjBool       ajSeqrefAppendXref(AjPSeqRef ref, const AjPStr str);
254 AjBool       ajSeqrefFmtAuthorsEmbl(const AjPSeqRef ref, AjPStr* Pdest);
255 AjBool       ajSeqrefFmtAuthorsGb(const AjPSeqRef ref, AjPStr* Pdest);
256 AjBool       ajSeqrefFmtLocationEmbl(const AjPSeqRef ref, AjPStr* Pdest);
257 AjBool       ajSeqrefFmtLocationGb(const AjPSeqRef ref, AjPStr* Pdest);
258 AjBool       ajSeqrefFmtTitleGb(const AjPSeqRef ref, AjPStr* Pdest);
259 AjBool       ajSeqreflistClone(const AjPList src, AjPList dest);
260 ajuint       ajSeqreflistGetXrefs(const AjPList src, AjPList *Plist);
261 AjBool       ajSeqrefSetAuthors(AjPSeqRef ref, const AjPStr str);
262 AjBool       ajSeqrefSetComment(AjPSeqRef ref, const AjPStr str);
263 AjBool       ajSeqrefSetGroupname(AjPSeqRef ref, const AjPStr str);
264 AjBool       ajSeqrefSetLocation(AjPSeqRef ref, const AjPStr str);
265 AjBool       ajSeqrefSetLoctype(AjPSeqRef ref, const AjPStr str);
266 AjBool       ajSeqrefSetnumNumber(AjPSeqRef ref, ajuint num);
267 AjBool       ajSeqrefSetPosition(AjPSeqRef ref, const AjPStr str);
268 AjBool       ajSeqrefSetTitle(AjPSeqRef ref, const AjPStr str);
269 AjBool       ajSeqrefSetXref(AjPSeqRef ref, const AjPStr str);
270 AjBool       ajSeqrefStandard(AjPSeqRef ref);
271 AjBool       ajSeqxreflistClone(const AjPList src, AjPList dest);
272 AjBool       ajSeqxreflistSort(AjPList list);
273 void         ajSeqSetCircular(AjPSeq seq);
274 void         ajSeqSetName(AjPSeq thys, const AjPStr setname);
275 void         ajSeqSetNameMulti(AjPSeq thys, const AjPStr setname);
276 void         ajSeqDel(AjPSeq* pthis);
277 void         ajSeqDelarray(AjPSeq **PPseq);
278 ajuint       ajSeqGetEnd(const AjPSeq seq);
279 void         ajSeqExit(void);
280 void         ajSeqGapFill(AjPSeq seq, ajuint len);
281 ajuint       ajSeqCountGaps(const AjPSeq seq);
282 void         ajSeqGapStandard(AjPSeq thys, char gapch);
283 const char*  ajSeqGetAccC(const AjPSeq thys);
284 const AjPStr ajSeqGetAccS(const AjPSeq thys);
285 const char*  ajSeqGetDbC(const AjPSeq thys);
286 const AjPStr ajSeqGetDbS(const AjPSeq thys);
287 const char*  ajSeqGetDescC(const AjPSeq thys);
288 const AjPStr ajSeqGetDescS(const AjPSeq thys);
289 const char*  ajSeqGetEntryC(const AjPSeq thys);
290 const AjPStr ajSeqGetEntryS(const AjPSeq thys);
291 const AjPFeattable ajSeqGetFeat(const AjPSeq thys);
292 const char*  ajSeqGetGiC(const AjPSeq thys);
293 const AjPStr ajSeqGetGiS(const AjPSeq thys);
294 const char*  ajSeqGetNameC(const AjPSeq thys);
295 const AjPStr ajSeqGetNameS(const AjPSeq thys);
296 ajuint       ajSeqGetOffend(const AjPSeq seq);
297 ajuint       ajSeqGetOffset(const AjPSeq seq);
298 ajuint       ajSeqGetRange(const AjPSeq thys, ajint* begin, ajint* end);
299 AjBool       ajSeqGetRev(const AjPSeq thys);
300 const char*  ajSeqGetSvC(const AjPSeq thys);
301 const AjPStr ajSeqGetSvS(const AjPSeq thys);
302 const char*  ajSeqGetTaxC(const AjPSeq thys);
303 const AjPStr ajSeqGetTaxS(const AjPSeq thys);
304 ajuint       ajSeqGetTaxid(const AjPSeq seq);
305 const char*  ajSeqGetUsaC(const AjPSeq thys);
306 const AjPStr ajSeqGetUsaS(const AjPSeq thys);
307 ajuint       ajSeqGetXrefs(const AjPSeq thys, AjPList list);
308 AjBool       ajSeqIsCircular(const AjPSeq thys);
309 AjBool       ajSeqIsNuc(const AjPSeq thys);
310 AjBool       ajSeqIsProt(const AjPSeq thys);
311 ajuint       ajSeqGetLen(const AjPSeq seq);
312 ajuint       ajSeqGetLenTrimmed(const AjPSeq seq);
313 ajuint       ajSeqGetLenUngapped(const AjPSeq seq);
314 const char*  ajSeqclsGetEmbl(const AjPStr cls);
315 const char*  ajSeqclsGetGb(const AjPStr cls);
316 AjBool       ajSeqclsSetEmbl(AjPStr *cls, const AjPStr clsembl);
317 AjBool       ajSeqclsSetGb(AjPStr *cls, const AjPStr clsembl);
318 const char*  ajSeqdivGetEmbl(const AjPStr divi);
319 const char*  ajSeqdivGetGb(const AjPStr divi);
320 AjBool       ajSeqdivSetEmbl(AjPStr *Pdivi, const AjPStr divembl);
321 AjBool       ajSeqdivSetGb(AjPStr *Pdivi, const AjPStr divembl);
322 const char*  ajSeqmolGetEmbl(const AjPStr mol);
323 const char*  ajSeqmolGetGb(const AjPStr mol);
324 AjBool       ajSeqmolSetEmbl(AjPStr *mol, const AjPStr molembl);
325 AjBool       ajSeqmolSetGb(AjPStr *mol, const AjPStr molgb);
326 void         ajSeqSetUnique(AjPSeq seq);
327 float        ajSeqCalcMolwt(const AjPSeq seq);
328 float        ajSeqstrCalcMolwt(const AjPStr seq);
329 AjPSeq       ajSeqNew(void);
330 AjPSeq       ajSeqNewNameC(const char* txt, const char* name);
331 AjPSeq       ajSeqNewNameS(const AjPStr str, const AjPStr name);
332 AjPSeq       ajSeqNewRefseq(const AjPRefseq refseq);
333 AjPSeq       ajSeqNewRes(size_t size);
334 AjPSeq       ajSeqNewSeq(const AjPSeq seq);
335 AjPSeq       ajSeqNewRangeC(const char* txt,
336                             ajint offset, ajint offend, AjBool rev);
337 AjPSeq       ajSeqNewRangeS(const AjPStr str,
338                             ajint offset, ajint offend, AjBool rev);
339 AjBool       ajSeqConvertNum(const AjPSeq thys, const AjPSeqCvt cvt,
340                              AjPStr *numseq);
341 AjBool       ajSeqIsReversedTrue(const AjPSeq seq);
342 AjBool       ajSeqIsReversed(const AjPSeq thys);
343 AjBool       ajSeqIsSpeciesBsubtilis(const AjPSeq seq);
344 AjBool       ajSeqIsSpeciesHuman(const AjPSeq seq);
345 AjBool       ajSeqIsSpeciesMouse(const AjPSeq seq);
346 AjBool       ajSeqIsSpeciesYeast(const AjPSeq seq);
347 AjBool       ajSeqIsTaxon(const AjPSeq seq, ajuint taxid);
348 AjBool       ajSeqIsTrimmed(const AjPSeq thys);
349 void         ajSeqReverseDo(AjPSeq thys);
350 void         ajSeqReverseForce(AjPSeq thys);
351 void         ajSeqstrReverse(AjPStr* thys);
352 void         ajSeqReverseOnly(AjPSeq thys);
353 ajuint       ajSeqsetGetBegin(const AjPSeqset seq);
354 void         ajSeqsetClear(AjPSeqset seq);
355 void         ajSeqsetDel(AjPSeqset *thys);
356 void         ajSeqsetDelarray(AjPSeqset **thys);
357 ajuint       ajSeqsetGetEnd(const AjPSeqset seq);
358 ajint        ajSeqsetFill(AjPSeqset seq);
359 const AjPStr ajSeqsetGetFormat(const AjPSeqset thys);
360 const char*  ajSeqsetGetNameC(const AjPSeqset thys);
361 const AjPStr ajSeqsetGetNameS(const AjPSeqset thys);
362 ajint        ajSeqsetGetOffend(const AjPSeqset seq);
363 ajint        ajSeqsetGetOffset(const AjPSeqset seq);
364 ajint        ajSeqsetGetRange(const AjPSeqset thys, ajint* begin, ajint* end);
365 const AjPSeq ajSeqsetGetseqSeq(const AjPSeqset thys, ajuint i);
366 const char*  ajSeqsetGetseqSeqC(const AjPSeqset thys, ajuint i);
367 const AjPStr ajSeqsetGetseqSeqS(const AjPSeqset thys, ajuint i);
368 AjPSeq*      ajSeqsetGetSeqarray(const AjPSeqset thys);
369 ajint        ajSeqsetGetTotlength(const AjPSeqset seq);
370 const AjPStr ajSeqsetGetUsa(const AjPSeqset thys);
371 const AjPStr ajSeqsetGetFilename(const AjPSeqset thys);
372 AjBool       ajSeqsetIsDna(const AjPSeqset thys);
373 AjBool       ajSeqsetIsNuc(const AjPSeqset thys);
374 AjBool       ajSeqsetIsProt(const AjPSeqset thys);
375 AjBool       ajSeqsetIsRna(const AjPSeqset thys);
376 ajuint       ajSeqsetGetLen(const AjPSeqset seq);
377 const char*  ajSeqsetGetseqAccC(const AjPSeqset seq, ajuint i);
378 const AjPStr ajSeqsetGetseqAccS(const AjPSeqset seq, ajuint i);
379 const char*  ajSeqsetGetseqNameC(const AjPSeqset seq, ajuint i);
380 const AjPStr ajSeqsetGetseqNameS(const AjPSeqset seq, ajuint i);
381 AjPSeqset    ajSeqsetNew(void);
382 void         ajSeqSetOffsets(AjPSeq seq, ajint ioff, ajint ioriglen);
383 void         ajSeqSetRange(AjPSeq seq, ajint ibegin, ajint iend);
384 void         ajSeqSetRangeRev(AjPSeq seq, ajint ibegin, ajint iend);
385 void         ajSeqsetReverse(AjPSeqset thys);
386 void         ajSeqsetSetRange(AjPSeqset seq, ajint ibegin, ajint iend);
387 ajuint       ajSeqsetGetSize(const AjPSeqset seq);
388 void         ajSeqsetFmtLower(AjPSeqset seq);
389 void         ajSeqsetFmtUpper(AjPSeqset seq);
390 float        ajSeqsetGetTotweight(const AjPSeqset seq);
391 void         ajSeqsetSortLen(AjPSeqset seq);
392 void         ajSeqsetTrim(AjPSeqset thys);
393 float        ajSeqsetGetseqWeight(const AjPSeqset seq, ajuint i);
394 void         ajSeqFmtLower(AjPSeq thys);
395 void         ajSeqFmtUpper(AjPSeq thys);
396 void         ajSeqTagRev(AjPSeq seq);
397 void         ajSeqTrace(const AjPSeq seq);
398 void         ajSeqTraceTitle(const AjPSeq seq, const char* title);
399 void         ajSeqTrim(AjPSeq thys);
400 ajuint       ajSeqGetBeginTrue(const AjPSeq seq);
401 ajuint       ajSeqGetEndTrue(const AjPSeq seq);
402 ajuint       ajSeqGetLenTrue(const AjPSeq seq);
403 ajint        ajSeqCalcTruepos(const AjPSeq thys, ajint ipos);
404 ajint        ajSeqCalcTrueposMin(const AjPSeq thys, ajint imin, ajint ipos);
405 
406 /*
407 ** End of prototype definitions
408 */
409 
410 /*
411 **  These prototypes do not have any corresponding .c code so cannot
412 **  go into the block above, otherwise the VC compilation will fail
413 */
414 
415 const char*  ajSeqdivGetDdbj(const AjPStr divi);
416 AjBool       ajSeqdivSetDdbj(AjPStr *Pdivi, const AjPStr divembl);
417 const char*  ajSeqmolGetDdbj(const AjPStr mol);
418 AjBool       ajSeqmolSetDdbj(AjPStr *mol, const AjPStr molddbj);
419 
420 /* End of prototypes without C code */
421 
422 
423 
424 
425 #ifdef AJ_COMPILE_DEPRECATED_BOOK
426 #endif /* AJ_COMPILE_DEPRECATED_BOOK */
427 
428 #ifdef AJ_COMPILE_DEPRECATED
429 
430 __deprecated ajint ajSeqallBegin(const AjPSeqall seq);
431 __deprecated ajint ajSeqallEnd(const AjPSeqall seq);
432 __deprecated ajint ajSeqallGetRange(const AjPSeqall seq,
433                                     ajint* begin, ajint* end);
434 __deprecated void ajSeqsetToLower(AjPSeqset seqset);
435 __deprecated void ajSeqsetToUpper(AjPSeqset seqset);
436 
437 __deprecated AjPSeq       ajSeqNewC(const char* seq, const char* name);
438 __deprecated AjPSeq       ajSeqNewStr(const AjPStr str);
439 __deprecated AjPSeq       ajSeqNewRange(const AjPStr seq,
440                                         ajint offset, ajint offend,
441                                         AjBool rev);
442 __deprecated AjPSeq       ajSeqNewRangeCI(const char* seq, ajint len,
443                                           ajint offset, ajint offend,
444                                           AjBool rev);
445 __deprecated AjPSeq       ajSeqNewL(size_t size);
446 __deprecated AjPSeq       ajSeqNewS(const AjPSeq seq);
447 
448 __deprecated void         ajSeqAssAcc(AjPSeq thys, const AjPStr str);
449 __deprecated void         ajSeqAssAccC(AjPSeq thys, const char* text);
450 __deprecated void         ajSeqAssDesc(AjPSeq thys, const AjPStr str);
451 __deprecated void         ajSeqAssDescC(AjPSeq thys, const char* text);
452 __deprecated void         ajSeqAssEntry(AjPSeq thys, const AjPStr str);
453 __deprecated void         ajSeqAssEntryC(AjPSeq thys, const char* text);
454 __deprecated void          ajSeqAssFile(AjPSeq thys, const AjPStr str);
455 __deprecated void          ajSeqAssFileC(AjPSeq thys, const char* text);
456 __deprecated void          ajSeqAssFull(AjPSeq thys, const AjPStr str);
457 __deprecated void          ajSeqAssFullC(AjPSeq thys, const char* text);
458 __deprecated void          ajSeqAssGi(AjPSeq thys, const AjPStr str);
459 __deprecated void          ajSeqAssGiC(AjPSeq thys, const char* text);
460 __deprecated void          ajSeqAssName(AjPSeq thys, const AjPStr str);
461 __deprecated void          ajSeqAssNameC(AjPSeq thys, const char* text);
462 __deprecated void          ajSeqAssSeq(AjPSeq seq, const AjPStr str);
463 __deprecated void          ajSeqAssSeqC(AjPSeq thys, const char* text);
464 __deprecated void          ajSeqAssSeqCI(AjPSeq thys, const char* text,
465                                          ajint ilen);
466 __deprecated void          ajSeqAssSvC(AjPSeq thys, const char* text);
467 __deprecated void          ajSeqAssSv(AjPSeq thys, const AjPStr str);
468 __deprecated void          ajSeqAssUfo(AjPSeq thys, const AjPStr str);
469 __deprecated void          ajSeqAssUfoC(AjPSeq thys, const char* text);
470 __deprecated void          ajSeqAssUsa(AjPSeq thys, const AjPStr str);
471 __deprecated void          ajSeqAssUsaC(AjPSeq thys, const char* text);
472 
473 __deprecated void          ajSeqSetRangeDir(AjPSeq seq,
474                                             ajint ibegin, ajint iend,
475                                             AjBool rev);
476 __deprecated void          ajSeqReplace(AjPSeq thys, const AjPStr seq);
477 __deprecated void          ajSeqReplaceC(AjPSeq thys, const char* seq);
478 __deprecated void          ajSeqMakeUsa(AjPSeq thys, const AjPSeqin seqin);
479 __deprecated void          ajSeqMakeUsaS(const AjPSeq thys,
480                                          const AjPSeqin seqin, AjPStr* usa);
481 __deprecated void          ajSeqCompOnly(AjPSeq thys);
482 __deprecated void          ajSeqToLower(AjPSeq thys);
483 __deprecated void          ajSeqToUpper(AjPSeq thys);
484 __deprecated void          ajSeqRevOnly(AjPSeq thys);
485 __deprecated AjBool        ajSeqReverse(AjPSeq thys);
486 
487 __deprecated const AjPStr  ajSeqGetAcc(const AjPSeq thys);
488 __deprecated ajint         ajSeqBegin(const AjPSeq seq);
489 __deprecated ajint         ajSeqTrueBegin(const AjPSeq seq);
490 __deprecated const AjPStr  ajSeqGetDesc(const AjPSeq thys);
491 __deprecated ajint         ajSeqEnd(const AjPSeq seq);
492 __deprecated ajint         ajSeqTrueEnd(const AjPSeq seq);
493 __deprecated const AjPStr  ajSeqGetEntry(const AjPSeq thys);
494 __deprecated AjPFeattable  ajSeqCopyFeat(const AjPSeq thys);
495 __deprecated const AjPStr  ajSeqGetGi(const AjPSeq thys);
496 __deprecated ajint         ajSeqLen(const AjPSeq seq);
497 __deprecated ajint         ajSeqTrueLen(const AjPSeq seq);
498 __deprecated const char*   ajSeqName(const AjPSeq seq);
499 __deprecated const AjPStr  ajSeqGetName(const AjPSeq thys);
500 __deprecated ajint         ajSeqOffend(const AjPSeq seq);
501 __deprecated ajint         ajSeqOffset(const AjPSeq seq);
502 __deprecated AjBool        ajSeqGetReverse(const AjPSeq thys);
503 __deprecated AjBool        ajSeqGetReversed(const AjPSeq thys);
504 
505 __deprecated const AjPStr  ajSeqStr(const AjPSeq thys);
506 __deprecated const char*   ajSeqChar(const AjPSeq thys);
507 __deprecated AjPStr        ajSeqStrCopy(const AjPSeq thys);
508 __deprecated char*         ajSeqCharCopy(const AjPSeq seq);
509 __deprecated char*         ajSeqCharCopyL(const AjPSeq seq, size_t size);
510 __deprecated const AjPStr  ajSeqGetSv(const AjPSeq thys);
511 __deprecated const AjPStr  ajSeqGetTax(const AjPSeq thys);
512 __deprecated const AjPStr  ajSeqGetUsa(const AjPSeq thys);
513 
514 __deprecated AjBool        ajSeqRev(const AjPSeq thys);
515 __deprecated ajint         ajSeqCheckGcg(const AjPSeq thys);
516 __deprecated void          ajSeqCount(const AjPSeq thys, ajint *b);
517 
518 __deprecated ajint         ajSeqPos(const AjPSeq thys, ajint ipos);
519 __deprecated ajint         ajSeqPosI(const AjPSeq thys,
520                                      ajint imin, ajint ipos);
521 __deprecated ajint         ajSeqPosII(ajint ilen, ajint imin, ajint ipos);
522 
523 __deprecated ajint         ajSeqTruePos(const AjPSeq thys, ajint ipos);
524 __deprecated ajint         ajSeqTruePosI(const AjPSeq thys, ajint imin,
525                                          ajint ipos);
526 __deprecated ajint         ajSeqTruePosII(ajint ilen, ajint imin, ajint ipos);
527 
528 __deprecated void          ajSeqallReverse(AjPSeqall thys);
529 __deprecated void          ajSeqallToLower(AjPSeqall seqall);
530 __deprecated void          ajSeqallToUpper(AjPSeqall seqall);
531 __deprecated void          ajSeqReverseStr(AjPStr* thys);
532 __deprecated void          ajSeqCompOnlyStr(AjPStr* thys);
533 
534 __deprecated float         ajSeqMW(const AjPStr seq);
535 __deprecated ajuint        ajSeqCrc(const AjPStr seq);
536 
537 __deprecated void         ajSeqCvtDel(AjPSeqCvt* thys);
538 __deprecated ajint        ajSeqCvtK(const AjPSeqCvt thys, char ch);
539 __deprecated ajint        ajSeqCvtKS(const AjPSeqCvt thys, const AjPStr ch);
540 __deprecated ajint        ajSeqCvtKSRow(const AjPSeqCvt thys,
541                                         const AjPStr ch);
542 __deprecated ajint        ajSeqCvtKSColumn(const AjPSeqCvt thys,
543                                            const AjPStr ch);
544 __deprecated ajint        ajSeqCvtLen(const AjPSeqCvt thys);
545 __deprecated AjPSeqCvt    ajSeqCvtNew(const char* bases);
546 __deprecated AjPSeqCvt    ajSeqCvtNewText(const char* bases);
547 __deprecated AjPSeqCvt    ajSeqCvtNewZero(const char* bases);
548 __deprecated AjPSeqCvt    ajSeqCvtNewZeroS(const AjPPStr bases, ajint n);
549 __deprecated AjPSeqCvt    ajSeqCvtNewZeroSS(const AjPPStr bases, ajint n,
550                                             const AjPPStr rbases, ajint rn);
551 __deprecated void         ajSeqCvtTrace(const AjPSeqCvt cvt);
552 
553 __deprecated AjBool       ajIsAccession(const AjPStr accnum);
554 __deprecated const AjPStr ajIsSeqversion(const AjPStr sv);
555 __deprecated ajint        ajSeqallLen(const AjPSeqall seqall);
556 __deprecated const AjPStr ajSeqallGetNameSeq(const AjPSeqall thys);
557 __deprecated void         ajSeqComplementOnly(AjPSeq pthis);
558 __deprecated void         ajSeqstrComplementOnly(AjPStr* thys);
559 __deprecated ajuint       ajSeqCalcCrc(const AjPSeq seq);
560 __deprecated void         ajSeqDefName(AjPSeq thys, const AjPStr setname,
561                                        AjBool multi);
562 __deprecated ajint        ajSeqFill(AjPSeq seq, ajint len);
563 __deprecated ajint        ajSeqGapCount(const AjPSeq thys);
564 __deprecated ajint        ajSeqGapCountS(const AjPStr str);
565 __deprecated void         ajSeqGapStandardS(AjPStr thys, char gapch);
566 __deprecated void         ajSeqMod(AjPSeq thys);
567 __deprecated AjBool       ajSeqNum(const AjPSeq thys, const AjPSeqCvt cvt,
568                                    AjPStr *numseq);
569 __deprecated AjBool       ajSeqNumS(const AjPStr thys, const AjPSeqCvt cvt,
570                                     AjPStr *numseq);
571 __deprecated ajint        ajSeqsetBegin(const AjPSeqset seq);
572 __deprecated ajint        ajSeqsetEnd(const AjPSeqset seq);
573 __deprecated const AjPStr ajSeqsetGetName(const AjPSeqset thys);
574 __deprecated const AjPSeq ajSeqsetGetSeq(const AjPSeqset thys, ajint i);
575 __deprecated AjPSeq*      ajSeqsetGetSeqArray(const AjPSeqset thys);
576 __deprecated ajint        ajSeqsetLen(const AjPSeqset seq);
577 __deprecated const AjPStr ajSeqsetName(const AjPSeqset seq, ajint i);
578 __deprecated const AjPStr ajSeqsetAcc(const AjPSeqset seq, ajint i);
579 __deprecated const char*  ajSeqsetSeq(const AjPSeqset seq, ajint i);
580 __deprecated ajint        ajSeqsetSize(const AjPSeqset seq);
581 __deprecated float        ajSeqsetTotweight(const AjPSeqset seq);
582 __deprecated float        ajSeqsetWeight(const AjPSeqset seq, ajint i);
583 __deprecated void         ajSeqTraceT(const AjPSeq seq, const char* title);
584 
585 #endif /* AJ_COMPILE_DEPRECATED */
586 
587 
588 
589 
590 AJ_END_DECLS
591 
592 #endif /* !AJSEQ_H */
593