View | Details | Raw Unified | Return to bug 93053 | Differences between
and this patch

Collapse All | Expand All

(-)emboss/Makefile (-12 / +11 lines)
Lines 6-18 Link Here
6
#
6
#
7
7
8
PORTNAME=	emboss
8
PORTNAME=	emboss
9
PORTVERSION=	2.10.0
9
PORTVERSION=	3.0.0
10
CATEGORIES=	biology
10
CATEGORIES=	biology
11
MASTER_SITES=	ftp://ftp.uk.embnet.org/pub/EMBOSS/ \
11
MASTER_SITES=	ftp://emboss.open-bio.org/pub/EMBOSS/ \
12
		ftp://ftp.uk.embnet.org/pub/EMBOSS/ \
12
		ftp://ftp.es.embnet.org/pub/software/emboss/EMBOSS/ \
13
		ftp://ftp.es.embnet.org/pub/software/emboss/EMBOSS/ \
13
		ftp://ftp.ebi.ac.uk/pub/software/unix/EMBOSS/
14
		ftp://ftp.ebi.ac.uk/pub/software/unix/EMBOSS/
14
DISTNAME=	${PORTNAME:U}-${PORTVERSION}
15
DISTNAME=	${PORTNAME:U}-${PORTVERSION}
15
DISTFILES=	${PORTNAME:U}-${PORTVERSION}${EXTRACT_SUFX}
16
DISTFILES=	${PORTNAME:U}-${PORTVERSION}${EXTRACT_SUFX}
17
DIST_SUBDIR=	${PORTNAME}
16
18
17
MAINTAINER=	fernan@iib.unsam.edu.ar
19
MAINTAINER=	fernan@iib.unsam.edu.ar
18
COMMENT=	A collection of open source tools for genetic sequence analysis
20
COMMENT=	A collection of open source tools for genetic sequence analysis
Lines 31-38 Link Here
31
INSTALLS_SHLIB=	yes
33
INSTALLS_SHLIB=	yes
32
USE_XLIB=	yes
34
USE_XLIB=	yes
33
USE_MOTIF=	yes
35
USE_MOTIF=	yes
34
USE_REINPLACE=	yes
36
SUB_FILES=	pkg-message
35
PKGMESSAGE=	${WRKDIR}/pkg-message
37
SUB_LIST=	PREFIX=${PREFIX} DATADIR=${DATADIR}
36
38
37
DOCSDIR=	${PREFIX}/share/doc/${PORTNAME:U}
39
DOCSDIR=	${PREFIX}/share/doc/${PORTNAME:U}
38
DATADIR=	${PREFIX}/share/${PORTNAME:U}
40
DATADIR=	${PREFIX}/share/${PORTNAME:U}
Lines 43-62 Link Here
43
post-patch:
45
post-patch:
44
.if !defined(NOPORTDOCS)
46
.if !defined(NOPORTDOCS)
45
.for DIR in ${DOC_DIRS}
47
.for DIR in ${DOC_DIRS}
46
	${REINPLACE_CMD} -e \
48
	@ ${REINPLACE_CMD} -e \
47
	  's#$$(prefix)/share/$$(PACKAGE)/doc#$$(datadir)/doc/$$(PACKAGE)#' \
49
	  's#$$(prefix)/share/$$(PACKAGE)/doc#$$(datadir)/doc/$$(PACKAGE)#' \
48
	  ${WRKSRC}/${DIR}/Makefile.in
50
	  ${WRKSRC}/${DIR}/Makefile.in
49
.endfor
51
.endfor
50
.endif
52
.endif
51
53
54
pre-install:
55
	@ ${REINPLACE_CMD} -e 's#%%DATADIR%%#${DATADIR}#' ${CONFIG_FILE}
56
52
post-install:
57
post-install:
53
	@ cd ${WRKSRC} && \
58
	${CHOWN} ${SHAREOWN}:${SHAREGRP} ${DATADIR}/emboss.default.template
54
	${SED} -e 's#%%PREFIX%%#${PREFIX}#' \
55
	${CONFIG_FILE} > ${PREFIX}/etc/emboss.default.sample && \
56
	${CHOWN} ${SHAREOWN}:${SHAREGRP} ${PREFIX}/etc/emboss.default.sample
57
	@ ${SED} -e 's#%%PREFIX%%#${PREFIX}#' ${.CURDIR}/pkg-message > ${PKGMESSAGE}
58
.if !defined(BATCH)
59
	@ ${CAT} ${PKGMESSAGE}
59
	@ ${CAT} ${PKGMESSAGE}
60
.endif
61
60
62
.include <bsd.port.mk>
61
.include <bsd.port.mk>
(-)emboss/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
MD5 (EMBOSS-2.10.0.tar.gz) = 4a48388ced7021a8ffece5166c40a364
1
MD5 (emboss/EMBOSS-3.0.0.tar.gz) = fa72feded9ab9272e3e731c09f545dcc
2
SHA256 (EMBOSS-2.10.0.tar.gz) = 1d3a8d84ff9c4f77d81b88c9e7c33517a232e7797eb2b761729f97898aa34a8f
2
SHA256 (emboss/EMBOSS-3.0.0.tar.gz) = 47a51ba7aeb9f6e7f4cd23c28cffad7c6d28432e92f37d6f08121791ef894dea
3
SIZE (EMBOSS-2.10.0.tar.gz) = 16262124
3
SIZE (emboss/EMBOSS-3.0.0.tar.gz) = 16257908
(-)emboss/files/patch-ajindex.c (+5134 lines)
Line 0 Link Here
1
--- ajax/ajindex.c.orig	Mon Jan 23 12:17:02 2006
2
+++ ajax/ajindex.c	Thu Dec 22 13:12:27 2005
3
@@ -22,7 +22,6 @@
4
 
5
 
6
 
7
-
8
 static AjPBtpage  btreeCacheLocate(const AjPBtcache cache, ajlong page);
9
 static AjPBtpage  btreeCacheLruUnlink(AjPBtcache cache);
10
 static void       btreeCacheUnlink(AjPBtcache cache, AjPBtpage cpage);
11
@@ -35,10 +34,14 @@
12
 				    AjBool isread);
13
 static AjPBtpage  btreeFindINode(AjPBtcache cache, AjPBtpage page,
14
 				 const char *item);
15
+static AjPBtpage  btreeSecFindINode(AjPBtcache cache, AjPBtpage page,
16
+				    const char *item);
17
 
18
 
19
 static AjPBtpage  btreePageFromKey(AjPBtcache cache, unsigned char *buf,
20
 				   const char *item);
21
+static AjPBtpage  btreeSecPageFromKey(AjPBtcache cache, unsigned char *buf,
22
+				      const char *item);
23
 static ajint      btreeNumInBucket(AjPBtcache cache, ajlong pageno);
24
 static AjPBucket  btreeReadBucket(AjPBtcache cache, ajlong pageno);
25
 static void       btreeWriteBucket(AjPBtcache cache, const AjPBucket bucket,
26
@@ -55,6 +58,7 @@
27
 				 AjPStr const *keys, const ajlong *ptrs,
28
 				 ajint nkeys);
29
 static AjBool     btreeNodeIsFull(const AjPBtcache cache, AjPBtpage page);
30
+static AjBool     btreeNodeIsFullSec(const AjPBtcache cache, AjPBtpage page);
31
 static void       btreeInsertNonFull(AjPBtcache cache, AjPBtpage page,
32
 				     const AjPStr key, ajlong less,
33
 				     ajlong greater);
34
@@ -87,6 +91,8 @@
35
 
36
 
37
 
38
+
39
+
40
 #if 0
41
 static AjPBtpage  btreeTraverseLeaves(AjPBtcache cache, AjPBtpage thys);
42
 static void       btreeJoinLeaves(AjPBtcache cache);
43
@@ -168,6 +174,63 @@
44
 static ajint         btreeDbnoCompare(const void *a, const void *b);
45
 
46
 
47
+static AjPBtMem      btreeAllocPriArray(AjPBtcache cache);
48
+static void          btreeDeallocPriArray(AjPBtcache cache, AjPBtMem node);
49
+static AjPBtMem      btreeAllocSecArray(AjPBtcache cache);
50
+static void          btreeDeallocSecArray(AjPBtcache cache, AjPBtMem node);
51
+
52
+
53
+
54
+static void          btreeAddToHybBucket(AjPBtcache cache, ajlong pageno,
55
+					 const AjPBtHybrid id);
56
+static AjPBtpage     btreeHybFindINode(AjPBtcache cache, AjPBtpage page,
57
+				       const char *item);
58
+static AjPBtpage     btreeHybPageFromKey(AjPBtcache cache,
59
+					 unsigned char *buf, const char *key);
60
+static ajlong        btreeHybInsertShift(AjPBtcache cache, AjPBtpage *retpage,
61
+					 const char *key);
62
+static AjBool        btreeHybReorderBuckets(AjPBtcache cache, AjPBtpage leaf);
63
+static AjPBtpage     btreeHybSplitLeaf(AjPBtcache cache, AjPBtpage spage);
64
+static void          btreeHybInsertKey(AjPBtcache cache, AjPBtpage page,
65
+				       const AjPStr key, ajlong less,
66
+				       ajlong greater);
67
+static void          btreeHybSplitRoot(AjPBtcache cache);
68
+static void          btreeHybDupInsert(AjPBtcache cache, AjPBtHybrid hyb,
69
+				       AjPBtId btid);
70
+static void          btreeGetNumKeys(AjPBtcache cache, unsigned char *buf,
71
+				     ajlong **keys, ajlong **ptrs);
72
+static void          btreeWriteNumNode(AjPBtcache cache, AjPBtpage spage,
73
+				       const ajlong *keys, const ajlong *ptrs,
74
+				       ajint nkeys);
75
+static AjPNumBucket  btreeReadNumBucket(AjPBtcache cache, ajlong pageno);
76
+static void          btreeNumBucketDel(AjPNumBucket *thys);
77
+static void          btreeAddToNumBucket(AjPBtcache cache, ajlong pageno,
78
+					 const AjPBtNumId num);
79
+static AjPBtpage     btreeNumFindINode(AjPBtcache cache, AjPBtpage page,
80
+				       const ajlong item);
81
+static AjPBtpage     btreeNumPageFromKey(AjPBtcache cache, unsigned char *buf,
82
+					 const ajlong key);
83
+static ajint         btreeNumInNumBucket(AjPBtcache cache, ajlong pageno);
84
+static AjBool        btreeReorderNumBuckets(AjPBtcache cache, AjPBtpage leaf);
85
+static AjPNumBucket  btreeNumBucketNew(ajint n);
86
+static ajint         btreeNumIdCompare(const void *a, const void *b);
87
+static AjBool        btreeNumNodeIsFull(const AjPBtcache cache,
88
+					AjPBtpage page);
89
+static void          btreeNumInsertNonFull(AjPBtcache cache, AjPBtpage page,
90
+					   const ajlong key, ajlong less,
91
+					   ajlong greater);
92
+static void          btreeNumInsertKey(AjPBtcache cache, AjPBtpage page,
93
+				       const ajlong key, ajlong less,
94
+				       ajlong greater);
95
+static void          btreeNumSplitRoot(AjPBtcache cache);
96
+static void          btreeNumKeyShift(AjPBtcache cache, AjPBtpage tpage);
97
+static ajlong        btreeNumInsertShift(AjPBtcache cache, AjPBtpage *retpage,
98
+					 ajlong key);
99
+static AjPBtpage     btreeNumSplitLeaf(AjPBtcache cache, AjPBtpage spage);
100
+
101
+
102
+
103
+
104
 
105
 
106
 
107
@@ -196,11 +259,14 @@
108
 {
109
     FILE *fp;
110
     AjPBtcache cache = NULL;
111
+#if 0
112
 #if defined (HAVE64) && !defined(_OSF_SOURCE) && !defined(_AIX) && !defined(__hpux) && !defined(__ppc__) && !defined(__FreeBSD__)
113
     struct stat64 buf;
114
 #else
115
     struct stat buf;
116
 #endif
117
+#endif
118
+
119
     ajlong filelen = 0L;
120
 
121
     AjPStr fn = NULL;
122
@@ -213,12 +279,18 @@
123
 	return NULL;
124
 
125
 
126
+    /* Commented out pending database updating */
127
+#if 0
128
+    if(strcmp(mode,"r"))
129
+    {
130
 #if defined (HAVE64) && !defined(_OSF_SOURCE) && !defined(_AIX) && !defined(__hpux) && !defined(__ppc__) && !defined(__FreeBSD__)
131
-    if(!stat64(file, &buf))
132
+	if(!stat64(fn->Ptr, &buf))
133
 #else
134
-    if(!stat(file, &buf))
135
+	    if(!stat(fn->Ptr, &buf))
136
 #endif
137
-	filelen = buf.st_size;
138
+		filelen = buf.st_size;
139
+    }
140
+#endif    
141
 
142
     AJNEW0(cache);
143
 
144
@@ -244,6 +316,13 @@
145
     cache->totsize    = filelen;
146
     cache->cachesize  = cachesize;
147
 
148
+    cache->bmem = NULL;
149
+    cache->tmem = NULL;
150
+
151
+    cache->bsmem = NULL;
152
+    cache->tsmem = NULL;
153
+
154
+
155
     /* Add slevel, sorder and snperbucket ???? */
156
 
157
     ajStrDel(&fn);
158
@@ -808,7 +887,7 @@
159
     root = btreeCacheLocate(cache,0L);
160
 
161
     if(!root)
162
-	ajFatal("Something has unlocked the PRI root cache page\n");
163
+	ajFatal("The PRI root cache page has been unlocked\n");
164
     
165
     if(!cache->level)
166
 	return root;
167
@@ -863,6 +942,48 @@
168
 
169
 
170
 
171
+/* @funcstatic btreeSecFindINode *************************************************
172
+**
173
+** Recursive search for insert node in a secondary tree
174
+**
175
+** @param [u] cache [AjPBtcache] cache
176
+** @param [u] page [AjPBtpage] page
177
+** @param [r] item [const char*] key to search for 
178
+**
179
+** @return [AjPBtpage] leaf node where item should be inserted
180
+** @@
181
+******************************************************************************/
182
+
183
+static AjPBtpage btreeSecFindINode(AjPBtcache cache, AjPBtpage page,
184
+				 const char *item)
185
+{
186
+    AjPBtpage ret = NULL;
187
+    AjPBtpage pg  = NULL;
188
+
189
+    unsigned char *buf = NULL;
190
+    ajint status       = 0;
191
+    ajint ival         = 0;
192
+
193
+    /* ajDebug("In btreeSecFindINode\n"); */
194
+    
195
+    ret = page;
196
+    buf = page->buf;
197
+    GBT_NODETYPE(buf,&ival);
198
+    if(ival != BT_LEAF)
199
+    {
200
+	status = ret->dirty;
201
+	ret->dirty = BT_LOCK;	/* Lock in case of lots of overflow pages */
202
+	pg = btreeSecPageFromKey(cache,buf,item);
203
+	ret->dirty = status;
204
+	ret = btreeSecFindINode(cache,pg,item);
205
+    }
206
+    
207
+    return ret;
208
+}
209
+
210
+
211
+
212
+
213
 /* @funcstatic btreePageFromKey *******************************************
214
 **
215
 ** Return next lower index page given a key
216
@@ -928,6 +1049,71 @@
217
 
218
 
219
 
220
+/* @funcstatic btreeSecPageFromKey *******************************************
221
+**
222
+** Return next lower index page given a key in a secondary tree
223
+**
224
+** @param [u] cache [AjPBtcache] cache
225
+** @param [u] buf [unsigned char *] page buffer
226
+** @param [r] key [const char *] key to search for 
227
+**
228
+** @return [AjPBtpage] pointer to a page
229
+** @@
230
+******************************************************************************/
231
+
232
+static AjPBtpage btreeSecPageFromKey(AjPBtcache cache, unsigned char *buf,
233
+				     const char *key)
234
+{
235
+    unsigned char *rootbuf = NULL;
236
+    ajint nkeys = 0;
237
+    ajint order = 0;
238
+    ajint i;
239
+    
240
+    ajlong blockno = 0L;
241
+    AjPStr *karray = NULL;
242
+    ajlong *parray = NULL;
243
+    AjPBtpage page = NULL;
244
+    
245
+    /* ajDebug("In btreePageFromKey\n"); */
246
+    
247
+    rootbuf = buf;
248
+
249
+
250
+    GBT_NKEYS(rootbuf,&nkeys);
251
+    order = cache->sorder;
252
+
253
+    AJCNEW0(karray,order);
254
+    AJCNEW0(parray,order);
255
+    for(i=0;i<order;++i)
256
+	karray[i] = ajStrNew();
257
+
258
+    btreeGetKeys(cache,rootbuf,&karray,&parray);
259
+    i = 0;
260
+    while(i!=nkeys && strcmp(key,karray[i]->Ptr)>=0)
261
+	++i;
262
+    if(i==nkeys)
263
+    {
264
+	if(strcmp(key,karray[i-1]->Ptr)<0)
265
+	    blockno = parray[i-1];
266
+	else
267
+	    blockno = parray[i];
268
+    }
269
+    else
270
+	blockno = parray[i];
271
+
272
+    for(i=0;i<order;++i)
273
+	ajStrDel(&karray[i]);
274
+    AJFREE(karray);
275
+    AJFREE(parray);
276
+
277
+    page =  ajBtreeCacheRead(cache,blockno);
278
+
279
+    return page;
280
+}
281
+
282
+
283
+
284
+
285
 /* @func ajBtreeIdNew *********************************************
286
 **
287
 ** Constructor for index bucket ID informationn
288
@@ -1617,6 +1803,36 @@
289
 
290
 
291
 
292
+/* @funcstatic btreeNodeIsFullSec *****************************************
293
+**
294
+** Tests whether a secondary node is full of keys
295
+**
296
+** @param [r] cache [const AjPBtcache] cache
297
+** @param [u] page [AjPBtpage] original page
298
+**
299
+** @return [AjBool] true if full
300
+** @@
301
+******************************************************************************/
302
+
303
+static AjBool btreeNodeIsFullSec(const AjPBtcache cache, AjPBtpage page)
304
+{
305
+    unsigned char *buf = NULL;
306
+    ajint nkeys = 0;
307
+
308
+    /* ajDebug("In btreeNodeIsFull\n"); */
309
+
310
+    buf = page->buf;
311
+    GBT_NKEYS(buf,&nkeys);
312
+
313
+    if(nkeys == cache->sorder - 1)
314
+	return ajTrue;
315
+
316
+    return ajFalse;
317
+}
318
+
319
+
320
+
321
+
322
 /* @funcstatic btreeInsertNonFull *****************************************
323
 **
324
 ** Insert a key into a non-full node
325
@@ -2289,6 +2505,25 @@
326
 
327
 
328
 
329
+/* @funcstatic btreeNumIdCompare *******************************************
330
+**
331
+** Comparison function for ajListSort
332
+**
333
+** @param [r] a [const void*] ID 1
334
+** @param [r] b [const void*] ID 2
335
+**
336
+** @return [ajint] 0 = bases match
337
+** @@
338
+******************************************************************************/
339
+
340
+static ajint btreeNumIdCompare(const void *a, const void *b)
341
+{
342
+    return (*(AjPBtNumId*)a)->offset - (*(AjPBtNumId*)b)->offset;
343
+}
344
+
345
+
346
+
347
+
348
 /* @funcstatic btreeWriteNode *******************************************
349
 **
350
 ** Write an internal node
351
@@ -2999,8 +3234,7 @@
352
     rno = totalkeys - lno;
353
 
354
     maxnperbucket = nperbucket >> 1;
355
-    if(!maxnperbucket)
356
-	++maxnperbucket;
357
+    ++maxnperbucket;
358
 
359
     cbucket = btreeBucketNew(maxnperbucket);
360
 
361
@@ -5729,7 +5963,17 @@
362
     {
363
 	bentries = buckets[i]->Nentries;
364
 	for(j=0;j<bentries;++j)
365
-	    ajListPush(list,(void *)buckets[i]->Ids[j]);
366
+	{
367
+	    if(!buckets[i]->Ids[j]->dups)
368
+		ajListPush(list,(void *)buckets[i]->Ids[j]);
369
+	    else
370
+	    {
371
+		ajBtreeHybLeafList(cache,buckets[i]->Ids[j]->offset,
372
+				   buckets[i]->Ids[j]->id,list);
373
+		ajBtreeIdDel(&buckets[i]->Ids[j]);
374
+	    }
375
+	}
376
+	
377
 	AJFREE(buckets[i]->keylen);
378
 	AJFREE(buckets[i]->Ids);
379
 	AJFREE(buckets[i]);
380
@@ -6273,6 +6517,7 @@
381
 **
382
 ** @param [r] filename [const char*] file name
383
 ** @param [r] indexdir [const char*] index file directory
384
+** @param [r] directory [const char*] file directory
385
 ** @param [w] seqfiles [AjPStr**] sequence file names
386
 ** @param [w] reffiles [AjPStr**] reference file names (if any)
387
 
388
@@ -6282,6 +6527,7 @@
389
 ******************************************************************************/
390
 
391
 ajint ajBtreeReadEntries(const char *filename, const char *indexdir,
392
+			 const char *directory,
393
 			 AjPStr **seqfiles, AjPStr **reffiles)
394
 {
395
     AjPStr line = NULL;
396
@@ -6292,6 +6538,8 @@
397
 
398
     AjPStr seqname = NULL;
399
     AjPStr refname = NULL;
400
+    AjPStr tseqname = NULL;
401
+    AjPStr trefname = NULL;
402
     
403
     AjPFile inf   = NULL;
404
     char p;
405
@@ -6303,6 +6551,9 @@
406
     line    = ajStrNew();
407
     list    = ajListNew();
408
     reflist = ajListNew();
409
+
410
+    tseqname = ajStrNew();
411
+    trefname = ajStrNew();
412
     
413
     fn = ajStrNew();
414
     ajFmtPrintS(&fn,"%s/%s",indexdir,filename);
415
@@ -6329,7 +6580,8 @@
416
 	while(ajFileReadLine(inf, &line))
417
 	{
418
 	    seqname = ajStrNew();
419
-	    ajFmtScanS(line,"%S",&seqname);
420
+	    ajFmtScanS(line,"%S",&tseqname);
421
+	    ajFmtPrintS(&seqname,"%s/%S",directory,tseqname);
422
 	    ajListPushApp(list,(void *)seqname);
423
 	}
424
 
425
@@ -6342,7 +6594,9 @@
426
 	{
427
 	    seqname = ajStrNew();
428
 	    refname = ajStrNew();
429
-	    ajFmtScanS(line,"%S%S",&seqname,&refname);
430
+	    ajFmtScanS(line,"%S%S",&tseqname,&trefname);
431
+	    ajFmtPrintS(&seqname,"%s/%S",directory,tseqname);
432
+	    ajFmtPrintS(&refname,"%s/%S",directory,trefname);
433
 	    ajListPushApp(list,(void *)seqname);
434
 	    ajListPushApp(reflist,(void *)refname);
435
 	}
436
@@ -6357,6 +6611,11 @@
437
     ajListDel(&reflist);
438
     ajStrDel(&line);
439
     ajStrDel(&fn);
440
+
441
+    ajStrDel(&tseqname);
442
+    ajStrDel(&trefname);
443
+    
444
+
445
     ajFileClose(&inf);
446
 
447
     return entries;
448
@@ -6967,7 +7226,7 @@
449
 	pripage = btreeCacheLocate(cache,0L);
450
 	pripage->dirty = BT_LOCK;
451
 
452
-	ajDebug("Created secondary tree at block %d\n",(ajint)secrootpage);
453
+	/* ajDebug("Created 2ry tree at block %d\n",(ajint)secrootpage); */
454
     }
455
     else
456
     {
457
@@ -7776,8 +8035,7 @@
458
     rno = totalkeys - lno;
459
 
460
     maxnperbucket = nperbucket >> 1;
461
-    if(!maxnperbucket)
462
-	++maxnperbucket;
463
+    ++maxnperbucket;
464
 
465
     cbucket = btreePriBucketNew(maxnperbucket);
466
 
467
@@ -8230,11 +8488,13 @@
468
 {
469
     FILE *fp;
470
     AjPBtcache cache = NULL;
471
+#if 0
472
 #if defined (HAVE64) && !defined(_OSF_SOURCE) && !defined(_AIX) && !defined(__hpux) && !defined(__ppc__) && !defined(__FreeBSD__)
473
     struct stat64 buf;
474
 #else
475
     struct stat buf;
476
 #endif
477
+#endif
478
     ajlong filelen = 0L;
479
 
480
     AjPStr fn = NULL;
481
@@ -8246,13 +8506,18 @@
482
     if(!fp)
483
 	return NULL;
484
 
485
-
486
+    /* Commented out pending database updating */
487
+#if 0
488
+    if(strcmp(mode,"r"))
489
+    {
490
 #if defined (HAVE64) && !defined(_OSF_SOURCE) && !defined(_AIX) && !defined(__hpux) && !defined(__ppc__) && !defined(__FreeBSD__)
491
-    if(!stat64(file, &buf))
492
+	if(!stat64(fn->Ptr, &buf))
493
 #else
494
-    if(!stat(file, &buf))
495
+	    if(!stat(fn->Ptr, &buf))
496
+#endif
497
+		filelen = buf.st_size;
498
+    }
499
 #endif
500
-	filelen = buf.st_size;
501
 
502
     AJNEW0(cache);
503
 
504
@@ -8283,6 +8548,12 @@
505
     cache->snperbucket = sfill;
506
     cache->count = count;
507
     cache->kwlimit = kwlimit;
508
+
509
+    cache->bmem = NULL;
510
+    cache->tmem = NULL;
511
+
512
+    cache->bsmem = NULL;
513
+    cache->tsmem = NULL;
514
     
515
     ajStrDel(&fn);
516
     
517
@@ -8456,8 +8727,7 @@
518
     rno = totalkeys - lno;
519
 
520
     maxnperbucket = nperbucket >> 1;
521
-    if(!maxnperbucket)
522
-	++maxnperbucket;
523
+    ++maxnperbucket;
524
 
525
     cbucket = btreeSecBucketNew(maxnperbucket);
526
 
527
@@ -9070,7 +9340,7 @@
528
     if(!cache->slevel)
529
 	return root;
530
     
531
-    ret = btreeFindINode(cache,root,key);
532
+    ret = btreeSecFindINode(cache,root,key);
533
 
534
     return ret;
535
 }
536
@@ -9694,7 +9964,7 @@
537
     
538
     /* ajDebug("In btreeInsertKeySec\n"); */
539
 
540
-    if(!btreeNodeIsFull(cache,page))
541
+    if(!btreeNodeIsFullSec(cache,page))
542
     {
543
 	btreeInsertNonFullSec(cache,page,key,less,greater);
544
 	return;
545
@@ -10572,7 +10842,7 @@
546
 
547
     list = ajListNew();
548
 
549
-    order = cache->order;
550
+    order = cache->sorder;
551
 
552
     AJCNEW0(karray,order);
553
     AJCNEW0(parray,order);
554
@@ -11724,3 +11994,4580 @@
555
     return (*(AjPBtId*)a)->dbno -
556
 		  (*(AjPBtId*)b)->dbno;
557
 }
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+/* @func ajBtreeHybNew *********************************************
567
+**
568
+** Constructor for index bucket ID informationn
569
+**
570
+**
571
+** @return [AjPBtHybrid] Index ID object
572
+** @@
573
+******************************************************************************/
574
+
575
+AjPBtHybrid ajBtreeHybNew(void)
576
+{
577
+    AjPBtHybrid Id = NULL;
578
+
579
+    /* ajDebug("In ajBtreeHybNew\n"); */
580
+
581
+    AJNEW0(Id);
582
+    Id->key1 = ajStrNew();
583
+    Id->dbno = 0;
584
+    Id->dups = 0;
585
+    Id->offset = 0L;
586
+    Id->refoffset = 0L;
587
+    Id->treeblock = 0L;    
588
+
589
+    return Id;
590
+}
591
+
592
+
593
+
594
+
595
+/* @func ajBtreeHybDel *********************************************
596
+**
597
+** Destructor for index bucket ID information
598
+**
599
+** @param [w] thys [AjPBtHybrid*] index ID object
600
+**
601
+** @return [void]
602
+** @@
603
+******************************************************************************/
604
+
605
+void ajBtreeHybDel(AjPBtHybrid *thys)
606
+{
607
+    AjPBtHybrid Id = NULL;
608
+
609
+    /* ajDebug("In ajBtreeIdDel\n"); */
610
+
611
+    if(!thys || !*thys)
612
+	return;
613
+    Id = *thys;
614
+    
615
+    ajStrDel(&Id->key1);
616
+    AJFREE(Id);
617
+    *thys = NULL;
618
+
619
+    return;
620
+}
621
+
622
+
623
+
624
+
625
+/* @funcstatic btreeAllocPriArray *******************************************
626
+**
627
+** Allocate karray and parray arrays for a primary key
628
+**
629
+** @param [rw] cache [AjPBtcache] cache
630
+**
631
+** @return [AjPBtMem] memory node
632
+** @@
633
+******************************************************************************/
634
+
635
+static AjPBtMem btreeAllocPriArray(AjPBtcache cache)
636
+{
637
+    AjPBtMem node = NULL;
638
+    ajint i;
639
+    ajint limit;
640
+    AjPBtMem p = NULL;
641
+
642
+    limit = cache->order;
643
+    if(!cache->bmem)
644
+    {
645
+        AJNEW0(node);
646
+        cache->bmem = node;
647
+        cache->tmem = node;
648
+        node->prev = NULL;
649
+        node->next = NULL;
650
+        node->used = ajTrue;
651
+        AJCNEW0(node->karray,limit);
652
+        AJCNEW0(node->parray,limit);
653
+        AJCNEW0(node->overflows,limit);
654
+        for(i=0;i<limit;++i)
655
+            node->karray[i] = ajStrNew();
656
+
657
+        return node;
658
+    }
659
+
660
+    if(!cache->bmem->used)
661
+    {
662
+        cache->bmem->used = ajTrue;
663
+
664
+        if(cache->bmem->next)
665
+        {
666
+            p = cache->bmem->next;
667
+
668
+            cache->tmem->next = cache->bmem;
669
+            cache->bmem->next = NULL;
670
+
671
+            cache->bmem->prev = cache->tmem;
672
+
673
+            cache->tmem = cache->bmem;
674
+
675
+            cache->bmem = p;
676
+            cache->bmem->prev = NULL;
677
+
678
+	    memset(cache->tmem->parray,0,sizeof(ajlong)*limit);
679
+	    
680
+	    return cache->tmem;
681
+        }
682
+
683
+	memset(cache->bmem->parray,0,sizeof(ajlong)*limit);
684
+	
685
+        return cache->bmem;
686
+    }
687
+
688
+
689
+    AJNEW0(node);
690
+    node->used = ajTrue;
691
+    node->next = NULL;
692
+    node->prev = cache->tmem;
693
+    cache->tmem->next = node;
694
+    cache->tmem = node;
695
+
696
+    AJCNEW0(node->karray,limit);
697
+    AJCNEW0(node->parray,limit);
698
+    AJCNEW0(node->overflows,limit);
699
+    for(i=0;i<limit;++i)
700
+        node->karray[i] = ajStrNew();
701
+
702
+    return node;
703
+}
704
+
705
+
706
+
707
+
708
+/* @funcstatic btreeDeallocPriArray *******************************************
709
+**
710
+** Deallocate karray and parray arrays for a primary key
711
+**
712
+** @param [rw] cache [AjPBtcache] cache
713
+** @param [rw] node [AjPBtMem] node
714
+**
715
+** @return [void]
716
+** @@
717
+******************************************************************************/
718
+
719
+static void btreeDeallocPriArray(AjPBtcache cache, AjPBtMem node)
720
+{
721
+    node->used = ajFalse;
722
+    if(!node->prev)
723
+        return;
724
+
725
+    node->prev->next = node->next;
726
+    if(node->next)
727
+        node->next->prev = node->prev;
728
+    else
729
+        cache->tmem = node->prev;
730
+
731
+    node->next = cache->bmem;
732
+    cache->bmem->prev = node;
733
+    cache->bmem = node;
734
+    node->prev = NULL;
735
+
736
+    return;
737
+}
738
+
739
+
740
+
741
+
742
+
743
+/* @funcstatic btreeAllocSecArray *******************************************
744
+**
745
+** Allocate karray and parray arrays for a primary key
746
+**
747
+** @param [rw] cache [AjPBtcache] cache
748
+**
749
+** @return [AjPBtMem] memory node
750
+** @@
751
+******************************************************************************/
752
+
753
+static AjPBtMem btreeAllocSecArray(AjPBtcache cache)
754
+{
755
+    AjPBtMem node = NULL;
756
+    ajint i;
757
+    ajint limit;
758
+    AjPBtMem p = NULL;
759
+
760
+    limit = cache->sorder;
761
+    if(!cache->bsmem)
762
+    {
763
+        AJNEW0(node);
764
+        cache->bsmem = node;
765
+        cache->tsmem = node;
766
+        node->prev = NULL;
767
+        node->next = NULL;
768
+        node->used = ajTrue;
769
+        AJCNEW0(node->karray,limit);
770
+        AJCNEW0(node->parray,limit);
771
+        AJCNEW0(node->overflows,limit);
772
+        for(i=0;i<limit;++i)
773
+            node->karray[i] = ajStrNew();
774
+
775
+        return node;
776
+    }
777
+
778
+    if(!cache->bsmem->used)
779
+    {
780
+        cache->bsmem->used = ajTrue;
781
+
782
+        if(cache->bsmem->next)
783
+        {
784
+            p = cache->bsmem->next;
785
+
786
+            cache->tsmem->next = cache->bsmem;
787
+            cache->bsmem->next = NULL;
788
+
789
+            cache->bsmem->prev = cache->tsmem;
790
+
791
+            cache->tsmem = cache->bsmem;
792
+
793
+            cache->bsmem = p;
794
+            cache->bsmem->prev = NULL;
795
+
796
+	    memset(cache->tsmem->parray,0,sizeof(ajlong)*limit);
797
+	    return cache->tsmem;
798
+        }
799
+
800
+	memset(cache->bsmem->parray,0,sizeof(ajlong)*limit);
801
+        return cache->bsmem;
802
+    }
803
+
804
+    AJNEW0(node);
805
+    node->used = ajTrue;
806
+    node->next = NULL;
807
+    node->prev = cache->tsmem;
808
+    cache->tsmem->next = node;
809
+    cache->tsmem = node;
810
+
811
+    AJCNEW0(node->karray,limit);
812
+    AJCNEW0(node->parray,limit);
813
+    AJCNEW0(node->overflows,limit);
814
+    for(i=0;i<limit;++i)
815
+        node->karray[i] = ajStrNew();
816
+
817
+    return node;
818
+}
819
+
820
+
821
+
822
+
823
+/* @funcstatic btreeDeallocSecArray *******************************************
824
+**
825
+** Deallocate karray and parray arrays for a primary key
826
+**
827
+** @param [rw] cache [AjPBtcache] cache
828
+** @param [rw] node [AjPBtMem] node
829
+**
830
+** @return [void]
831
+** @@
832
+******************************************************************************/
833
+
834
+static void btreeDeallocSecArray(AjPBtcache cache, AjPBtMem node)
835
+{
836
+    node->used = ajFalse;
837
+    if(!node->prev)
838
+        return;
839
+
840
+    node->prev->next = node->next;
841
+    if(node->next)
842
+        node->next->prev = node->prev;
843
+    else
844
+        cache->tsmem = node->prev;
845
+
846
+    node->next = cache->bsmem;
847
+    cache->bsmem->prev = node;
848
+    cache->bsmem = node;
849
+    node->prev = NULL;
850
+
851
+    return;
852
+}
853
+
854
+
855
+
856
+
857
+/* @funcstatic btreeAddToHybBucket *******************************************
858
+**
859
+** Add an ID to a bucket
860
+** Only called if there is room in the bucket
861
+**
862
+** @param [u] cache [AjPBtcache] cache
863
+** @param [r] pageno [ajlong] page number of bucket
864
+** @param [r] id [const AjPBtId] ID info
865
+**
866
+** @return [void]
867
+** @@
868
+******************************************************************************/
869
+
870
+static void btreeAddToHybBucket(AjPBtcache cache, ajlong pageno,
871
+				const AjPBtHybrid hyb)
872
+{
873
+    AjPBucket bucket = NULL;
874
+    AjPBtId   destid = NULL;
875
+    
876
+    ajint nentries;
877
+    
878
+    /* ajDebug("In btreeAddToHybBucket\n"); */
879
+
880
+    bucket   = btreeReadBucket(cache,pageno);
881
+    nentries = bucket->Nentries;
882
+
883
+
884
+    /* Reading a bucket always gives one extra ID position */
885
+    bucket->Ids[nentries] = ajBtreeIdNew();
886
+    destid = bucket->Ids[nentries];
887
+
888
+    ajStrAssS(&destid->id,hyb->key1);
889
+    destid->dbno      = hyb->dbno;
890
+    destid->offset    = hyb->offset;
891
+    destid->refoffset = hyb->refoffset;
892
+    destid->dups      = hyb->dups;
893
+    
894
+    ++bucket->Nentries;
895
+
896
+    btreeWriteBucket(cache,bucket,pageno);
897
+
898
+    btreeBucketDel(&bucket);
899
+    
900
+    return;
901
+}
902
+
903
+
904
+
905
+
906
+/* @func ajBtreeHybFindInsert ***********************************************
907
+**
908
+** Find the node that should contain a new key for insertion
909
+**
910
+** @param [u] cache [AjPBtcache] cache
911
+** @param [r] key [const char*] key to search for 
912
+**
913
+** @return [AjPBtpage] leaf node where item should be inserted
914
+** @@
915
+******************************************************************************/
916
+
917
+AjPBtpage ajBtreeHybFindInsert(AjPBtcache cache, const char *key)
918
+{
919
+    AjPBtpage root = NULL;
920
+    AjPBtpage ret  = NULL;
921
+
922
+    /* ajDebug("In ajBtreeHybFindInsert\n"); */
923
+
924
+    /* The root node should always be in the cache (BT_LOCKed) */
925
+    root = btreeCacheLocate(cache,0L);
926
+
927
+    if(!root)
928
+	ajFatal("The PRI root cache page has been unlocked\n");
929
+    
930
+    if(!cache->level)
931
+	return root;
932
+    
933
+    ret = btreeHybFindINode(cache,root,key);
934
+    
935
+    return ret;
936
+}
937
+
938
+
939
+
940
+
941
+/* @funcstatic btreeHybFindINode *********************************************
942
+**
943
+** Recursive search for insert node
944
+**
945
+** @param [u] cache [AjPBtcache] cache
946
+** @param [u] page [AjPBtpage] page
947
+** @param [r] item [const char*] key to search for 
948
+**
949
+** @return [AjPBtpage] leaf node where item should be inserted
950
+** @@
951
+******************************************************************************/
952
+
953
+static AjPBtpage btreeHybFindINode(AjPBtcache cache, AjPBtpage page,
954
+				 const char *item)
955
+{
956
+    AjPBtpage ret = NULL;
957
+    AjPBtpage pg  = NULL;
958
+
959
+    unsigned char *buf = NULL;
960
+    ajint status       = 0;
961
+    ajint ival         = 0;
962
+
963
+    /* ajDebug("In btreeHybFindINode\n"); */
964
+    
965
+    ret = page;
966
+    buf = page->buf;
967
+    GBT_NODETYPE(buf,&ival);
968
+    if(ival != BT_LEAF)
969
+    {
970
+	status = ret->dirty;
971
+	ret->dirty = BT_LOCK;	/* Lock in case of lots of overflow pages */
972
+	pg = btreeHybPageFromKey(cache,buf,item);
973
+	ret->dirty = status;
974
+	ret = btreeHybFindINode(cache,pg,item);
975
+    }
976
+    
977
+    return ret;
978
+}
979
+
980
+
981
+
982
+
983
+/* @funcstatic btreeHybPageFromKey *******************************************
984
+**
985
+** Return next lower index page given a key
986
+**
987
+** @param [u] cache [AjPBtcache] cache
988
+** @param [u] buf [unsigned char *] page buffer
989
+** @param [r] key [const char *] key to search for 
990
+**
991
+** @return [AjPBtpage] pointer to a page
992
+** @@
993
+******************************************************************************/
994
+
995
+static AjPBtpage btreeHybPageFromKey(AjPBtcache cache, unsigned char *buf,
996
+				     const char *key)
997
+{
998
+    unsigned char *rootbuf = NULL;
999
+    ajint nkeys = 0;
1000
+    ajint order = 0;
1001
+    ajint i;
1002
+    
1003
+    ajlong blockno = 0L;
1004
+    AjPStr *karray = NULL;
1005
+    ajlong *parray = NULL;
1006
+    AjPBtpage page = NULL;
1007
+    AjPBtMem arrays = NULL;
1008
+    
1009
+    /* ajDebug("In btreeHybPageFromKey\n"); */
1010
+    
1011
+    rootbuf = buf;
1012
+
1013
+
1014
+    GBT_NKEYS(rootbuf,&nkeys);
1015
+    order = cache->order;
1016
+
1017
+    arrays = btreeAllocPriArray(cache);
1018
+    karray = arrays->karray;
1019
+    parray = arrays->parray;
1020
+
1021
+    btreeGetKeys(cache,rootbuf,&karray,&parray);
1022
+    i = 0;
1023
+    while(i!=nkeys && strcmp(key,karray[i]->Ptr)>=0)
1024
+	++i;
1025
+    if(i==nkeys)
1026
+    {
1027
+	if(strcmp(key,karray[i-1]->Ptr)<0)
1028
+	    blockno = parray[i-1];
1029
+	else
1030
+	    blockno = parray[i];
1031
+    }
1032
+    else
1033
+	blockno = parray[i];
1034
+
1035
+    btreeDeallocPriArray(cache,arrays);
1036
+
1037
+    page =  ajBtreeCacheRead(cache,blockno);
1038
+
1039
+    return page;
1040
+}
1041
+
1042
+
1043
+
1044
+
1045
+/* @funcstatic btreeHybInsertShift ********************************************
1046
+**
1047
+** Rebalance buckets on insertion
1048
+**
1049
+** @param [u] cache [AjPBtcache] cache
1050
+** @param [u] retpage [AjPBtpage*] page
1051
+** @param [r] key [const char *] key
1052
+**
1053
+** @return [ajlong] bucket block or 0L if shift not posible 
1054
+** @@
1055
+******************************************************************************/
1056
+
1057
+static ajlong btreeHybInsertShift(AjPBtcache cache, AjPBtpage *retpage,
1058
+				  const char *key)
1059
+{
1060
+    unsigned char *tbuf = NULL;
1061
+    unsigned char *pbuf = NULL;
1062
+    unsigned char *sbuf = NULL;
1063
+
1064
+    AjPBtpage ppage = NULL;
1065
+    AjPBtpage spage = NULL;
1066
+    AjPBtpage tpage = NULL;
1067
+
1068
+    ajint tkeys = 0;
1069
+    ajint pkeys = 0;
1070
+    ajint skeys = 0;
1071
+    ajint order = 0;
1072
+    
1073
+    ajint i;
1074
+    ajint n;
1075
+    
1076
+    ajlong parent  = 0L;
1077
+    ajlong blockno = 0L;
1078
+    
1079
+    AjPStr *kTarray = NULL;
1080
+    AjPStr *kParray = NULL;
1081
+    AjPStr *kSarray = NULL;
1082
+    ajlong *pTarray = NULL;
1083
+    ajlong *pParray = NULL;
1084
+    ajlong *pSarray = NULL;
1085
+
1086
+    AjPStr *karray = NULL;
1087
+    ajlong *parray = NULL;
1088
+
1089
+    ajint ppos    = 0;
1090
+    ajint pkeypos = 0;
1091
+    ajint minsize = 0;
1092
+
1093
+    AjPBtMem arrays1 = NULL;
1094
+    AjPBtMem arrays2 = NULL;
1095
+    AjPBtMem arrays3 = NULL;
1096
+    
1097
+    /* ajDebug("In btreeHybInsertShift\n"); */
1098
+
1099
+
1100
+    tpage = *retpage;
1101
+
1102
+    tbuf = tpage->buf;
1103
+
1104
+    GBT_PREV(tbuf,&parent);
1105
+    GBT_NKEYS(tbuf,&tkeys);
1106
+
1107
+    order = cache->order;
1108
+    minsize = order / 2;
1109
+    if(order % 2)
1110
+	++minsize;
1111
+
1112
+    if(tkeys <= minsize)
1113
+	return 0L;
1114
+
1115
+    ppage = ajBtreeCacheRead(cache,parent);
1116
+    
1117
+    pbuf = ppage->buf;
1118
+    GBT_NKEYS(pbuf,&pkeys);
1119
+    
1120
+
1121
+    arrays1 = btreeAllocPriArray(cache);
1122
+    kParray = arrays1->karray;
1123
+    pParray = arrays1->parray;
1124
+
1125
+    arrays2 = btreeAllocPriArray(cache);
1126
+    kSarray = arrays2->karray;
1127
+    pSarray = arrays2->parray;
1128
+
1129
+    arrays3 = btreeAllocPriArray(cache);
1130
+    kTarray = arrays3->karray;
1131
+    pTarray = arrays3->parray;
1132
+    
1133
+
1134
+    btreeGetKeys(cache,pbuf,&kParray,&pParray);
1135
+
1136
+    i=0;
1137
+    while(i!=pkeys && strcmp(key,kParray[i]->Ptr)>=0)
1138
+	++i;
1139
+    pkeypos = i;
1140
+    
1141
+    if(i==pkeys)
1142
+    {
1143
+	if(strcmp(key,kParray[i-1]->Ptr)<0)
1144
+	    ppos = i-1;
1145
+	else
1146
+	    ppos = i;
1147
+    }
1148
+    else
1149
+	ppos = i;
1150
+
1151
+    
1152
+    if(ppos) /* There is another leaf to the left */
1153
+    {
1154
+	spage = ajBtreeCacheRead(cache,pParray[ppos-1]);
1155
+	sbuf = spage->buf;
1156
+	GBT_NKEYS(sbuf,&skeys);
1157
+    }
1158
+
1159
+    if(i && skeys != order-1) /* There is space in the left leaf */
1160
+    {
1161
+	/* ajDebug("Left shift\n"); */
1162
+	btreeGetKeys(cache,tbuf,&kTarray,&pTarray);
1163
+	if(skeys)
1164
+	    btreeGetKeys(cache,sbuf,&kSarray,&pSarray);
1165
+
1166
+	i = 0;
1167
+	while(pParray[i] != tpage->pageno)
1168
+	    ++i;
1169
+	--i;
1170
+
1171
+	pkeypos = i;
1172
+
1173
+	ajStrAssS(&kSarray[skeys],kParray[pkeypos]);
1174
+	pSarray[skeys+1] = pTarray[0];
1175
+	++skeys;
1176
+	--tkeys;
1177
+	ajStrAssS(&kParray[pkeypos],kTarray[0]);
1178
+	for(i=0;i<tkeys;++i)
1179
+	{
1180
+	    ajStrAssS(&kTarray[i],kTarray[i+1]);
1181
+	    pTarray[i] = pTarray[i+1];
1182
+	}
1183
+	pTarray[i] = pTarray[i+1];
1184
+	pTarray[i+1] = 0L;
1185
+	
1186
+	btreeWriteNode(cache,spage,kSarray,pSarray,skeys);
1187
+	btreeWriteNode(cache,tpage,kTarray,pTarray,tkeys);
1188
+	btreeWriteNode(cache,ppage,kParray,pParray,pkeys);
1189
+	if(!ppage->pageno)
1190
+	    ppage->dirty = BT_LOCK;
1191
+
1192
+	i = 0;
1193
+	while(i!=pkeys && strcmp(key,kParray[i]->Ptr)>=0)
1194
+	    ++i;
1195
+	if(i==pkeys)
1196
+	{
1197
+	    if(strcmp(key,kParray[i-1]->Ptr)<0)
1198
+		blockno = pParray[i-1];
1199
+	    else
1200
+		blockno = pParray[i];
1201
+	}
1202
+	else
1203
+	    blockno = pParray[i];
1204
+
1205
+	if(blockno == spage->pageno)
1206
+	{
1207
+	    *retpage = spage;
1208
+	    karray = kSarray;
1209
+	    parray = pSarray;
1210
+	    n = skeys;
1211
+	}
1212
+	else
1213
+	{
1214
+	    karray = kTarray;
1215
+	    parray = pTarray;
1216
+	    n = tkeys;
1217
+	}
1218
+	
1219
+
1220
+	i = 0;
1221
+	while(i!=n && strcmp(key,karray[i]->Ptr)>=0)
1222
+	    ++i;
1223
+	if(i==n)
1224
+	{
1225
+	    if(strcmp(key,karray[i-1]->Ptr)<0)
1226
+		blockno = parray[i-1];
1227
+	    else
1228
+		blockno = parray[i];
1229
+	}
1230
+	else
1231
+	    blockno = parray[i];
1232
+
1233
+	btreeDeallocPriArray(cache,arrays1);
1234
+	btreeDeallocPriArray(cache,arrays2);
1235
+	btreeDeallocPriArray(cache,arrays3);
1236
+
1237
+	/* ajDebug("... returns blockno (a) %Ld\n",blockno); */
1238
+
1239
+	return blockno;
1240
+    }
1241
+    
1242
+
1243
+    if(ppos != pkeys)	/* There is a right node */
1244
+    {
1245
+	spage = ajBtreeCacheRead(cache,pParray[ppos+1]);
1246
+	sbuf = spage->buf;
1247
+	GBT_NKEYS(sbuf,&skeys);
1248
+    }
1249
+
1250
+
1251
+    /* Space in the right leaf */
1252
+    if(ppos != pkeys && skeys != order-1)
1253
+    {
1254
+	/* ajDebug("Right shift\n"); */
1255
+	btreeGetKeys(cache,tbuf,&kTarray,&pTarray);
1256
+	btreeGetKeys(cache,sbuf,&kSarray,&pSarray);
1257
+
1258
+	i = 0;
1259
+	while(pParray[i] != tpage->pageno)
1260
+	    ++i;
1261
+	pkeypos = i;
1262
+	
1263
+	pSarray[skeys+1] = pSarray[skeys];
1264
+	for(i=skeys-1;i>-1;--i)
1265
+	{
1266
+	    ajStrAssS(&kSarray[i+1],kSarray[i]);
1267
+	    pSarray[i+1] = pSarray[i];
1268
+	}
1269
+	ajStrAssS(&kSarray[0],kParray[pkeypos]);
1270
+	pSarray[0] = pTarray[tkeys];
1271
+	ajStrAssS(&kParray[pkeypos],kTarray[tkeys-1]);
1272
+	++skeys;
1273
+	--tkeys;
1274
+	pTarray[tkeys+1] = 0L;
1275
+	
1276
+	btreeWriteNode(cache,spage,kSarray,pSarray,skeys);
1277
+	btreeWriteNode(cache,tpage,kTarray,pTarray,tkeys);
1278
+	btreeWriteNode(cache,ppage,kParray,pParray,pkeys);
1279
+	if(!ppage->pageno)
1280
+	    ppage->dirty = BT_LOCK;
1281
+
1282
+	i = 0;
1283
+	while(i!=pkeys && strcmp(key,kParray[i]->Ptr)>=0)
1284
+	    ++i;
1285
+	if(i==pkeys)
1286
+	{
1287
+	    if(strcmp(key,kParray[i-1]->Ptr)<0)
1288
+		blockno = pParray[i-1];
1289
+	    else
1290
+		blockno = pParray[i];
1291
+	}
1292
+	else
1293
+	    blockno = pParray[i];
1294
+
1295
+	if(blockno == spage->pageno)
1296
+	{
1297
+	    *retpage = spage;
1298
+	    karray = kSarray;
1299
+	    parray = pSarray;
1300
+	    n = skeys;
1301
+	}
1302
+	else
1303
+	{
1304
+	    karray = kTarray;
1305
+	    parray = pTarray;
1306
+	    n = tkeys;
1307
+	}
1308
+	
1309
+	i = 0;
1310
+	while(i!=n && strcmp(key,karray[i]->Ptr)>=0)
1311
+	    ++i;
1312
+	if(i==n)
1313
+	{
1314
+	    if(strcmp(key,karray[i-1]->Ptr)<0)
1315
+		blockno = parray[i-1];
1316
+	    else
1317
+		blockno = parray[i];
1318
+	}
1319
+	else
1320
+	    blockno = parray[i];
1321
+
1322
+	btreeDeallocPriArray(cache,arrays1);
1323
+	btreeDeallocPriArray(cache,arrays2);
1324
+	btreeDeallocPriArray(cache,arrays3);
1325
+
1326
+	/* ajDebug("... returns blockno (b) %Ld\n",blockno); */
1327
+	
1328
+	return blockno;
1329
+    }
1330
+
1331
+
1332
+    btreeDeallocPriArray(cache,arrays1);
1333
+    btreeDeallocPriArray(cache,arrays2);
1334
+    btreeDeallocPriArray(cache,arrays3);
1335
+
1336
+    /* ajDebug("... returns 0L\n"); */
1337
+
1338
+    return 0L;
1339
+}
1340
+
1341
+
1342
+
1343
+
1344
+/* @funcstatic btreeHybReorderBuckets *****************************************
1345
+**
1346
+** Re-order leaf buckets
1347
+** Must only be called if one of the buckets is full
1348
+**
1349
+** @param [u] cache [AjPBtcache] cache
1350
+** @param [u] leaf [AjPBtpage] leaf page
1351
+**
1352
+** @return [AjBool] true if reorder was successful i.e. leaf not full
1353
+** @@
1354
+******************************************************************************/
1355
+
1356
+static AjBool btreeHybReorderBuckets(AjPBtcache cache, AjPBtpage leaf)
1357
+{
1358
+    ajint nkeys = 0;
1359
+    unsigned char *lbuf = NULL;
1360
+    AjPBucket *buckets  = NULL;
1361
+    AjPStr *keys        = NULL;
1362
+    ajlong *ptrs        = NULL;
1363
+    ajlong *overflows   = NULL;
1364
+    AjPBtMem arrays     = NULL;
1365
+
1366
+    ajint i = 0;
1367
+    ajint j = 0;
1368
+    
1369
+    ajint order;
1370
+    ajint bentries      = 0;
1371
+    ajint totalkeys     = 0;
1372
+    ajint nperbucket    = 0;
1373
+    ajint maxnperbucket = 0;
1374
+    ajint count         = 0;
1375
+    ajint totkeylen     = 0;
1376
+    ajint keylimit      = 0;
1377
+    ajint bucketn       = 0;
1378
+    ajint bucketlimit   = 0;
1379
+    ajint nodetype      = 0;
1380
+    
1381
+    AjPList idlist    = NULL;
1382
+    ajint   dirtysave = 0;
1383
+    AjPBtId bid       = NULL;
1384
+    AjPBucket cbucket = NULL;
1385
+    AjPBtId cid       = NULL;
1386
+
1387
+    ajint   v = 0;
1388
+    
1389
+    /* ajDebug("In btreeHybReorderBuckets\n"); */
1390
+
1391
+    dirtysave = leaf->dirty;
1392
+
1393
+    leaf->dirty = BT_LOCK;
1394
+    lbuf = leaf->buf;
1395
+
1396
+    GBT_NODETYPE(lbuf,&nodetype);
1397
+
1398
+    order = cache->order;
1399
+    nperbucket = cache->nperbucket;
1400
+    
1401
+
1402
+    /* Read keys/ptrs */
1403
+    arrays    = btreeAllocPriArray(cache);
1404
+    keys      = arrays->karray;
1405
+    ptrs      = arrays->parray;
1406
+    overflows = arrays->overflows;
1407
+
1408
+    btreeGetKeys(cache,lbuf,&keys,&ptrs);
1409
+
1410
+    GBT_NKEYS(lbuf,&nkeys);
1411
+
1412
+
1413
+    if(!nkeys)
1414
+	ajFatal("BucketReorder: Attempt to reorder empty leaf");
1415
+
1416
+    for(i=0;i<nkeys;++i)
1417
+	totalkeys += btreeNumInBucket(cache,ptrs[i]);
1418
+    totalkeys += btreeNumInBucket(cache,ptrs[i]);
1419
+
1420
+    /* Set the number of entries per bucket to approximately half full */
1421
+    maxnperbucket = nperbucket >> 1;
1422
+
1423
+    if(!maxnperbucket)
1424
+	++maxnperbucket;
1425
+
1426
+    /* Work out the number of new buckets needed */
1427
+    bucketn = (totalkeys / maxnperbucket);
1428
+    if(totalkeys % maxnperbucket)
1429
+	++bucketn;
1430
+    
1431
+    if(bucketn > order)
1432
+    {
1433
+	btreeDeallocPriArray(cache,arrays);
1434
+
1435
+	leaf->dirty = dirtysave;
1436
+	return ajFalse;
1437
+    }
1438
+    
1439
+
1440
+    /* Read buckets */
1441
+    AJCNEW0(buckets,nkeys+1);
1442
+    keylimit = nkeys + 1;
1443
+    
1444
+    for(i=0;i<keylimit;++i)
1445
+	buckets[i] = btreeReadBucket(cache,ptrs[i]);
1446
+
1447
+
1448
+    /* Read IDs from all buckets and push to list and sort (increasing id) */
1449
+    idlist  = ajListNew();
1450
+    
1451
+    for(i=0;i<keylimit;++i)
1452
+    {
1453
+	overflows[i] = buckets[i]->Overflow;
1454
+	bentries = buckets[i]->Nentries;
1455
+	for(j=0;j<bentries;++j)
1456
+	    ajListPush(idlist,(void *)buckets[i]->Ids[j]);
1457
+	
1458
+	AJFREE(buckets[i]->keylen);
1459
+	AJFREE(buckets[i]->Ids);
1460
+	AJFREE(buckets[i]);
1461
+    }
1462
+    ajListSort(idlist,btreeIdCompare);
1463
+    AJFREE(buckets);
1464
+
1465
+    cbucket = btreeBucketNew(maxnperbucket);
1466
+    bucketlimit = bucketn - 1;
1467
+    
1468
+    for(i=0;i<bucketlimit;++i)
1469
+    {
1470
+	cbucket->Overflow = overflows[i];
1471
+	cbucket->Nentries = 0;
1472
+
1473
+	count = 0;
1474
+	while(count!=maxnperbucket)
1475
+	{
1476
+	    ajListPop(idlist,(void **)&bid);
1477
+	    
1478
+	    cid = cbucket->Ids[count];
1479
+	    ajStrAssS(&cid->id,bid->id);
1480
+	    cid->dbno = bid->dbno;
1481
+	    cid->dups = bid->dups;
1482
+	    cid->offset = bid->offset;
1483
+	    cid->refoffset = bid->refoffset;
1484
+	    
1485
+	    cbucket->keylen[count] = BT_BUCKIDLEN(bid->id);
1486
+	    ++cbucket->Nentries;
1487
+	    ++count;
1488
+	    ajBtreeIdDel(&bid);
1489
+	}
1490
+
1491
+
1492
+	ajListPeek(idlist,(void **)&bid);
1493
+	ajStrAssS(&keys[i],bid->id);
1494
+
1495
+	totkeylen += ajStrLen(bid->id);
1496
+
1497
+	if(!ptrs[i])
1498
+	    ptrs[i] = cache->totsize;
1499
+	btreeWriteBucket(cache,cbucket,ptrs[i]);
1500
+    }
1501
+
1502
+
1503
+    /* Deal with greater-than bucket */
1504
+
1505
+    cbucket->Overflow = overflows[i];
1506
+    cbucket->Nentries = 0;
1507
+
1508
+    count = 0;
1509
+    while(ajListPop(idlist,(void **)&bid))
1510
+    {
1511
+	cid = cbucket->Ids[count];
1512
+	ajStrAssS(&cid->id,bid->id);
1513
+	cid->dbno = bid->dbno;
1514
+	cid->dups = bid->dups;
1515
+	cid->offset = bid->offset;
1516
+	cid->refoffset = bid->refoffset;
1517
+	
1518
+	++cbucket->Nentries;
1519
+	++count;
1520
+	ajBtreeIdDel(&bid);
1521
+    }
1522
+    
1523
+    
1524
+    if(!ptrs[i])
1525
+	ptrs[i] = cache->totsize;
1526
+    btreeWriteBucket(cache,cbucket,ptrs[i]);
1527
+
1528
+    cbucket->Nentries = maxnperbucket;
1529
+    btreeBucketDel(&cbucket);
1530
+
1531
+    /* Now write out a modified leaf with new keys/ptrs */
1532
+
1533
+    nkeys = bucketn - 1;
1534
+    v = nkeys;
1535
+    SBT_NKEYS(lbuf,v);
1536
+    v = totkeylen;
1537
+    SBT_TOTLEN(lbuf,v);
1538
+
1539
+    btreeWriteNode(cache,leaf,keys,ptrs,nkeys);
1540
+
1541
+    leaf->dirty = BT_DIRTY;
1542
+    if(nodetype == BT_ROOT)
1543
+	leaf->dirty = BT_LOCK;
1544
+
1545
+    btreeDeallocPriArray(cache,arrays);
1546
+    
1547
+    btreeBucketDel(&cbucket);
1548
+    ajListDel(&idlist);
1549
+
1550
+    return ajTrue;
1551
+}
1552
+
1553
+
1554
+
1555
+
1556
+/* @funcstatic btreeHybSplitLeaf *********************************************
1557
+**
1558
+** Split a leaf and propagate up if necessary
1559
+**
1560
+** @param [u] cache [AjPBtcache] cache
1561
+** @param [u] spage [AjPBtpage] page
1562
+**
1563
+** @return [AjPBtpage] pointer to a parent page
1564
+** @@
1565
+******************************************************************************/
1566
+
1567
+static AjPBtpage btreeHybSplitLeaf(AjPBtcache cache, AjPBtpage spage)
1568
+{
1569
+    ajint nkeys     = 0;
1570
+    ajint order     = 0;
1571
+    ajint totalkeys = 0;
1572
+    ajint bentries  = 0;
1573
+    ajint keylimit  = 0;
1574
+    ajint nodetype  = 0;
1575
+
1576
+    ajint rootnodetype  = 0;
1577
+    
1578
+    ajint i;
1579
+    ajint j;
1580
+    
1581
+    AjPBtpage lpage = NULL;
1582
+    AjPBtpage rpage = NULL;
1583
+    AjPBtpage page  = NULL;
1584
+    
1585
+    AjPStr mediankey  = NULL;
1586
+    ajlong mediangtr  = 0L;
1587
+    ajlong medianless = 0L;
1588
+    
1589
+
1590
+    AjPBtId bid = NULL;
1591
+    AjPBtId cid = NULL;
1592
+
1593
+    unsigned char *buf  = NULL;
1594
+    unsigned char *lbuf = NULL;
1595
+    unsigned char *rbuf = NULL;
1596
+
1597
+    AjPList idlist = NULL;
1598
+
1599
+    AjPBucket *buckets = NULL;
1600
+    AjPBucket cbucket  = NULL;
1601
+    
1602
+    AjPStr *karray = NULL;
1603
+    ajlong *parray = NULL;
1604
+    AjPBtMem arrays     = NULL;
1605
+    
1606
+    ajint keypos = 0;
1607
+    ajint lno    = 0;
1608
+    ajint rno    = 0;
1609
+
1610
+    ajint bucketlimit   = 0;
1611
+    ajint maxnperbucket = 0;
1612
+    ajint nperbucket    = 0;
1613
+    ajint bucketn       = 0;
1614
+    ajint count         = 0;
1615
+    ajint totkeylen     = 0;
1616
+    
1617
+    ajlong lblockno = 0L;
1618
+    ajlong rblockno = 0L;
1619
+    ajlong prev     = 0L;
1620
+    ajlong overflow = 0L;
1621
+    ajlong prevsave = 0L;
1622
+
1623
+    ajlong zero = 0L;
1624
+    ajlong join = 0L;
1625
+    
1626
+    ajlong lv = 0L;
1627
+    ajint  v  = 0;
1628
+    
1629
+    /* ajDebug("In btreeHybSplitLeaf\n"); */
1630
+
1631
+    order = cache->order;
1632
+    nperbucket = cache->nperbucket;
1633
+
1634
+    mediankey = ajStrNew();
1635
+
1636
+    arrays    = btreeAllocPriArray(cache);
1637
+    karray    = arrays->karray;
1638
+    parray    = arrays->parray;
1639
+
1640
+
1641
+    buf = spage->buf;
1642
+    lbuf = buf;
1643
+
1644
+    GBT_NKEYS(buf,&nkeys);
1645
+
1646
+    for(i=nkeys+1; i<order; ++i)
1647
+	parray[i] = 0L;
1648
+
1649
+    GBT_NODETYPE(buf,&rootnodetype);
1650
+
1651
+    if(rootnodetype == BT_ROOT)
1652
+    {
1653
+	/* ajDebug("Splitting root node\n"); */
1654
+	lblockno = cache->totsize;
1655
+	lpage = ajBtreeCacheWrite(cache,lblockno);
1656
+	lpage->pageno = cache->totsize;
1657
+	cache->totsize += cache->pagesize;
1658
+	lbuf = lpage->buf;
1659
+	lv = prev;
1660
+	SBT_PREV(lbuf,lv);
1661
+    }
1662
+    else
1663
+    {
1664
+	lblockno = spage->pageno;
1665
+	lpage = spage;
1666
+    }
1667
+
1668
+    lpage->dirty = BT_LOCK;
1669
+
1670
+
1671
+    rblockno = cache->totsize;
1672
+    rpage = ajBtreeCacheWrite(cache,rblockno);
1673
+    rpage->pageno = cache->totsize;
1674
+    rpage->dirty = BT_LOCK;
1675
+    cache->totsize += cache->pagesize;
1676
+    rbuf = rpage->buf;
1677
+
1678
+
1679
+    if(rootnodetype == BT_ROOT)
1680
+    {
1681
+	lv = zero;
1682
+	SBT_RIGHT(rbuf,lv);
1683
+	lv = zero;
1684
+	SBT_LEFT(lbuf,lv);
1685
+    }
1686
+    else
1687
+    {
1688
+	GBT_RIGHT(lbuf,&join);
1689
+	lv = join;
1690
+	SBT_RIGHT(rbuf,lv);
1691
+    }
1692
+    lv = lblockno;
1693
+    SBT_LEFT(rbuf,lv);
1694
+    lv = rblockno;
1695
+    SBT_RIGHT(lbuf,lv);
1696
+
1697
+
1698
+    btreeGetKeys(cache,buf,&karray,&parray);
1699
+
1700
+
1701
+    keylimit = nkeys+1;
1702
+    AJCNEW0(buckets,keylimit);
1703
+    for(i=0;i<keylimit;++i)
1704
+	buckets[i] = btreeReadBucket(cache,parray[i]);
1705
+
1706
+    idlist = ajListNew();
1707
+    for(i=0;i<keylimit;++i)
1708
+    {
1709
+	bentries = buckets[i]->Nentries;
1710
+	for(j=0;j<bentries;++j)
1711
+	    ajListPush(idlist,(void *)buckets[i]->Ids[j]);
1712
+	AJFREE(buckets[i]->keylen);
1713
+	AJFREE(buckets[i]->Ids);
1714
+	AJFREE(buckets[i]);
1715
+    }
1716
+    ajListSort(idlist,btreeIdCompare);
1717
+    AJFREE(buckets);
1718
+
1719
+
1720
+    totalkeys = ajListLength(idlist);
1721
+
1722
+    keypos = totalkeys / 2;
1723
+
1724
+    lno = keypos;
1725
+    rno = totalkeys - lno;
1726
+
1727
+    maxnperbucket = nperbucket >> 1;
1728
+    ++maxnperbucket;
1729
+
1730
+    cbucket = btreeBucketNew(maxnperbucket);
1731
+
1732
+    bucketn = lno / maxnperbucket;
1733
+    if(lno % maxnperbucket)
1734
+	++bucketn;
1735
+    bucketlimit = bucketn - 1;
1736
+
1737
+
1738
+    totkeylen = 0;
1739
+    count = 0;
1740
+    for(i=0;i<bucketlimit;++i)
1741
+    {
1742
+	cbucket->Nentries = 0;
1743
+	for(j=0;j<maxnperbucket;++j)
1744
+	{
1745
+	    ajListPop(idlist,(void **)&bid);
1746
+	    
1747
+	    cid = cbucket->Ids[j];
1748
+	    ajStrAssS(&cid->id,bid->id);
1749
+	    cid->dbno = bid->dbno;
1750
+	    cid->dups = bid->dups;
1751
+	    cid->offset = bid->offset;
1752
+	    cid->refoffset = bid->refoffset;
1753
+	    
1754
+	    cbucket->keylen[j] = BT_BUCKIDLEN(bid->id);
1755
+	    ++count;
1756
+	    ++cbucket->Nentries;
1757
+	    ajBtreeIdDel(&bid);
1758
+	}
1759
+	ajListPeek(idlist,(void **)&bid);
1760
+	
1761
+	ajStrAssS(&karray[i],bid->id);
1762
+	totkeylen += ajStrLen(bid->id);
1763
+
1764
+	if(!parray[i])
1765
+	    parray[i] = cache->totsize;
1766
+	btreeWriteBucket(cache,cbucket,parray[i]);
1767
+    }
1768
+
1769
+    cbucket->Nentries = 0;
1770
+
1771
+    j = 0;
1772
+    while(count != lno)
1773
+    {
1774
+	ajListPop(idlist,(void **)&bid);
1775
+	cid = cbucket->Ids[j];
1776
+	++j;
1777
+	++count;
1778
+
1779
+	ajStrAssS(&cid->id,bid->id);
1780
+	cid->dbno = bid->dbno;
1781
+	cid->dups = bid->dups;
1782
+	cid->offset = bid->offset;
1783
+	cid->refoffset = bid->refoffset;
1784
+	
1785
+	++cbucket->Nentries;
1786
+	ajBtreeIdDel(&bid);
1787
+    }
1788
+
1789
+    if(!parray[i])
1790
+	parray[i] = cache->totsize;
1791
+    btreeWriteBucket(cache,cbucket,parray[i]);
1792
+
1793
+    nkeys = bucketn - 1;
1794
+    v = nkeys;
1795
+    SBT_NKEYS(lbuf,v);
1796
+    v = totkeylen;
1797
+    SBT_TOTLEN(lbuf,v);
1798
+    nodetype = BT_LEAF;
1799
+    v = nodetype;
1800
+    SBT_NODETYPE(lbuf,v);
1801
+    lpage->dirty = BT_DIRTY;
1802
+
1803
+    GBT_PREV(lbuf,&prevsave);
1804
+
1805
+    btreeWriteNode(cache,lpage,karray,parray,nkeys);
1806
+
1807
+    ajListPeek(idlist,(void **)&bid);
1808
+    ajStrAssS(&mediankey,bid->id);
1809
+
1810
+    totkeylen = 0;
1811
+    bucketn = rno / maxnperbucket;
1812
+    if(rno % maxnperbucket)
1813
+	++bucketn;
1814
+    bucketlimit = bucketn - 1;
1815
+
1816
+    for(i=0;i<bucketlimit;++i)
1817
+    {
1818
+	cbucket->Nentries = 0;
1819
+	for(j=0;j<maxnperbucket;++j)
1820
+	{
1821
+	    ajListPop(idlist,(void **)&bid);
1822
+	    
1823
+	    cid = cbucket->Ids[j];
1824
+	    ajStrAssS(&cid->id,bid->id);
1825
+	    cid->dbno = bid->dbno;
1826
+	    cid->dups = bid->dups;
1827
+	    cid->offset = bid->offset;
1828
+	    cid->refoffset = bid->refoffset;
1829
+	    
1830
+	    cbucket->keylen[j] = BT_BUCKIDLEN(bid->id);
1831
+	    ++cbucket->Nentries;
1832
+	    ajBtreeIdDel(&bid);
1833
+	}
1834
+
1835
+	ajListPeek(idlist,(void **)&bid);
1836
+	ajStrAssS(&karray[i],bid->id);
1837
+	totkeylen += ajStrLen(bid->id);
1838
+
1839
+	parray[i] = cache->totsize;
1840
+	btreeWriteBucket(cache,cbucket,parray[i]);
1841
+    }
1842
+
1843
+    cbucket->Nentries = 0;
1844
+
1845
+    j = 0;
1846
+    while(ajListPop(idlist,(void**)&bid))
1847
+    {
1848
+	cid = cbucket->Ids[j];
1849
+	++j;
1850
+
1851
+	ajStrAssS(&cid->id,bid->id);
1852
+	cid->dbno = bid->dbno;
1853
+	cid->dups = bid->dups;
1854
+	cid->offset = bid->offset;
1855
+	cid->refoffset = bid->refoffset;
1856
+	
1857
+	++cbucket->Nentries;
1858
+	ajBtreeIdDel(&bid);
1859
+    }
1860
+    
1861
+    parray[i] = cache->totsize;
1862
+    btreeWriteBucket(cache,cbucket,parray[i]);
1863
+
1864
+    nkeys = bucketn - 1;
1865
+
1866
+    v = nkeys;
1867
+    SBT_NKEYS(rbuf,v);
1868
+    v = totkeylen;
1869
+    SBT_TOTLEN(rbuf,v);
1870
+    nodetype = BT_LEAF;
1871
+    v = nodetype;
1872
+    SBT_NODETYPE(rbuf,v);
1873
+    lv = prevsave;
1874
+    SBT_PREV(rbuf,lv);
1875
+    lv = overflow;
1876
+    SBT_OVERFLOW(rbuf,lv);
1877
+
1878
+    btreeWriteNode(cache,rpage,karray,parray,nkeys);
1879
+    rpage->dirty = BT_DIRTY;
1880
+
1881
+    cbucket->Nentries = maxnperbucket;
1882
+    btreeBucketDel(&cbucket);
1883
+    ajListDel(&idlist);
1884
+
1885
+
1886
+
1887
+    medianless = lblockno;
1888
+    mediangtr  = rblockno;
1889
+
1890
+
1891
+    if(rootnodetype == BT_ROOT)
1892
+    {
1893
+	ajStrAssS(&karray[0],mediankey);
1894
+	parray[0]=lblockno;
1895
+	parray[1]=rblockno;
1896
+	nkeys = 1;
1897
+	btreeWriteNode(cache,spage,karray,parray,nkeys);	
1898
+	spage->dirty = BT_LOCK;
1899
+
1900
+	btreeDeallocPriArray(cache,arrays);
1901
+
1902
+	ajStrDel(&mediankey);
1903
+	++cache->level;
1904
+	return spage;
1905
+    }
1906
+
1907
+
1908
+    btreeDeallocPriArray(cache,arrays);
1909
+
1910
+    page = ajBtreeCacheRead(cache,prevsave);
1911
+    btreeHybInsertKey(cache,page,mediankey,medianless,mediangtr);
1912
+    ajStrDel(&mediankey);
1913
+
1914
+    page = ajBtreeCacheRead(cache,prevsave);
1915
+
1916
+    return page;
1917
+}
1918
+
1919
+
1920
+
1921
+
1922
+/* @funcstatic btreeHybInsertKey *****************************************
1923
+**
1924
+** Insert a key into a potentially full node
1925
+**
1926
+** @param [u] cache [AjPBtcache] cache
1927
+** @param [u] page [AjPBtpage] original page
1928
+** @param [r] key [const AjPStr] key to insert
1929
+** @param [r] less [ajlong] less-than pointer
1930
+** @param [r] greater [ajlong] greater-than pointer
1931
+**
1932
+** @return [void]
1933
+** @@
1934
+******************************************************************************/
1935
+
1936
+static void btreeHybInsertKey(AjPBtcache cache, AjPBtpage page,
1937
+			      const AjPStr key, ajlong less, ajlong greater)
1938
+{
1939
+    unsigned char *lbuf = NULL;
1940
+    unsigned char *rbuf = NULL;
1941
+    unsigned char *tbuf = NULL;
1942
+    AjPStr *karray      = NULL;
1943
+    ajlong *parray      = NULL;
1944
+    AjPStr *tkarray     = NULL;
1945
+    ajlong *tparray     = NULL;
1946
+
1947
+    AjPBtMem arrays1    = NULL;
1948
+    AjPBtMem arrays2    = NULL;
1949
+
1950
+    ajint nkeys    = 0;
1951
+    ajint order    = 0;
1952
+    ajint keypos   = 0;
1953
+    ajint rkeyno   = 0;
1954
+    
1955
+    ajint i = 0;
1956
+    ajint n = 0;
1957
+    
1958
+    ajint nodetype  = 0;
1959
+    AjPBtpage ipage = NULL;
1960
+    AjPBtpage lpage = NULL;
1961
+    AjPBtpage rpage = NULL;
1962
+    AjPBtpage tpage = NULL;
1963
+
1964
+    ajlong blockno  = 0L;
1965
+    ajlong rblockno = 0L;
1966
+    ajlong lblockno = 0L;
1967
+    AjPStr mediankey  = NULL;
1968
+    ajlong medianless = 0L;
1969
+    ajlong mediangtr  = 0L;
1970
+    ajlong overflow   = 0L;
1971
+    ajlong prev       = 0L;
1972
+    ajint  totlen     = 0;
1973
+    
1974
+    ajlong lv = 0L;
1975
+    ajint  v  = 0;
1976
+    
1977
+    /* ajDebug("In btreeHybInsertKey\n"); */
1978
+
1979
+    if(!btreeNodeIsFull(cache,page))
1980
+    {
1981
+	btreeInsertNonFull(cache,page,key,less,greater);
1982
+	return;
1983
+    }
1984
+    
1985
+    order = cache->order;
1986
+    lbuf = page->buf;
1987
+    GBT_NODETYPE(lbuf,&nodetype);
1988
+    page->dirty = BT_LOCK;
1989
+
1990
+    if(nodetype == BT_ROOT)
1991
+    {
1992
+	arrays1   = btreeAllocPriArray(cache);
1993
+	karray    = arrays1->karray;
1994
+	parray    = arrays1->parray;
1995
+
1996
+	btreeHybSplitRoot(cache);
1997
+
1998
+	if(page->pageno)
1999
+	    page->dirty = BT_DIRTY;
2000
+	btreeGetKeys(cache,lbuf,&karray,&parray);
2001
+
2002
+	if(strcmp(key->Ptr,karray[0]->Ptr)<0)
2003
+	    blockno = parray[0];
2004
+	else
2005
+	    blockno = parray[1];
2006
+	ipage = ajBtreeCacheRead(cache,blockno);
2007
+	btreeInsertNonFull(cache,ipage,key,less,greater);
2008
+
2009
+	btreeDeallocPriArray(cache,arrays1);
2010
+	return;
2011
+    }
2012
+
2013
+
2014
+    arrays1   = btreeAllocPriArray(cache);
2015
+    karray    = arrays1->karray;
2016
+    parray    = arrays1->parray;
2017
+
2018
+    arrays2   = btreeAllocPriArray(cache);
2019
+    tkarray   = arrays2->karray;
2020
+    tparray   = arrays2->parray;
2021
+
2022
+    mediankey = ajStrNew();
2023
+    
2024
+    lpage = page;
2025
+    lbuf = lpage->buf;
2026
+    
2027
+    btreeGetKeys(cache,lbuf,&karray,&parray);
2028
+
2029
+    GBT_BLOCKNUMBER(lbuf,&lblockno);
2030
+    rblockno = cache->totsize;
2031
+    rpage = ajBtreeCacheWrite(cache,rblockno);
2032
+    rpage->dirty = BT_LOCK;
2033
+    rpage->pageno = cache->totsize;
2034
+    cache->totsize += cache->pagesize;
2035
+    rbuf = rpage->buf;
2036
+    lv = rblockno;
2037
+    SBT_BLOCKNUMBER(rbuf,lv);
2038
+
2039
+    
2040
+    GBT_PREV(lbuf,&prev);
2041
+    lv = prev;
2042
+    SBT_PREV(rbuf,lv);
2043
+
2044
+    nkeys = order - 1;
2045
+    keypos = nkeys / 2;
2046
+    if(!(nkeys % 2))
2047
+	--keypos;
2048
+
2049
+    ajStrAssS(&mediankey,karray[keypos]);
2050
+    medianless = lblockno;
2051
+    mediangtr  = rblockno;
2052
+
2053
+
2054
+    GBT_NODETYPE(lbuf,&nodetype);
2055
+    v = nodetype;
2056
+    SBT_NODETYPE(rbuf,v);
2057
+    lv = overflow;
2058
+    SBT_OVERFLOW(rbuf,lv);
2059
+
2060
+
2061
+    totlen = 0;
2062
+    for(i=0;i<keypos;++i)
2063
+    {
2064
+	ajStrAssS(&tkarray[i],karray[i]);
2065
+	totlen += ajStrLen(karray[i]);
2066
+	tparray[i] = parray[i];
2067
+    }
2068
+    tparray[i] = parray[i];
2069
+    v = totlen;
2070
+    SBT_TOTLEN(lbuf,v);
2071
+    n = i;
2072
+    v = n;
2073
+    SBT_NKEYS(lbuf,v);
2074
+    btreeWriteNode(cache,lpage,tkarray,tparray,i);
2075
+
2076
+
2077
+
2078
+    for(i=0;i<n+1;++i)
2079
+    {
2080
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
2081
+	tbuf = tpage->buf;
2082
+	lv = lblockno;
2083
+	SBT_PREV(tbuf,lv);
2084
+	tpage->dirty = BT_DIRTY;
2085
+    }
2086
+
2087
+
2088
+    totlen = 0;
2089
+    for(i=keypos+1;i<nkeys;++i)
2090
+    {
2091
+	ajStrAssS(&tkarray[i-(keypos+1)],karray[i]);
2092
+	totlen += ajStrLen(karray[i]);
2093
+	tparray[i-(keypos+1)] = parray[i];
2094
+    }
2095
+    tparray[i-(keypos+1)] = parray[i];
2096
+    v = totlen;
2097
+    SBT_TOTLEN(rbuf,v);
2098
+    rkeyno = (nkeys-keypos) - 1;
2099
+    v = rkeyno;
2100
+    SBT_NKEYS(rbuf,v);
2101
+    rpage->dirty = BT_DIRTY;
2102
+    btreeWriteNode(cache,rpage,tkarray,tparray,rkeyno);
2103
+
2104
+
2105
+    for(i=0;i<rkeyno+1;++i)
2106
+    {
2107
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
2108
+	tbuf = tpage->buf;
2109
+	lv = rblockno;
2110
+	SBT_PREV(tbuf,lv);
2111
+	tpage->dirty = BT_DIRTY;
2112
+    }
2113
+
2114
+
2115
+    ipage = rpage;
2116
+    if(strcmp(key->Ptr,mediankey->Ptr)<0)
2117
+	ipage = lpage;
2118
+
2119
+    btreeInsertNonFull(cache,ipage,key,less,greater);
2120
+
2121
+
2122
+    btreeDeallocPriArray(cache,arrays1);
2123
+    btreeDeallocPriArray(cache,arrays2);
2124
+
2125
+    ipage = ajBtreeCacheRead(cache,prev);
2126
+
2127
+    btreeHybInsertKey(cache,ipage,mediankey,medianless,mediangtr);
2128
+    ajStrDel(&mediankey);
2129
+
2130
+    return;
2131
+}
2132
+
2133
+
2134
+
2135
+
2136
+/* @funcstatic btreeHybSplitRoot *****************************************
2137
+**
2138
+** Split the root node
2139
+**
2140
+** @param [u] cache [AjPBtcache] cache
2141
+**
2142
+** @return [void]
2143
+** @@
2144
+******************************************************************************/
2145
+
2146
+static void btreeHybSplitRoot(AjPBtcache cache)
2147
+{
2148
+    AjPBtpage rootpage = NULL;
2149
+    AjPBtpage rpage    = NULL;
2150
+    AjPBtpage lpage    = NULL;
2151
+    AjPBtpage tpage    = NULL;
2152
+
2153
+    AjPStr *karray     = NULL;
2154
+    AjPStr *tkarray    = NULL;
2155
+    ajlong *parray     = NULL;
2156
+    ajlong *tparray    = NULL;
2157
+    AjPBtMem arrays1   = NULL;
2158
+    AjPBtMem arrays2   = NULL;
2159
+
2160
+    ajint order     = 0;
2161
+    ajint nkeys     = 0;
2162
+    ajint keypos    = 0;
2163
+    
2164
+    ajlong rblockno = 0L;
2165
+    ajlong lblockno = 0L;
2166
+    
2167
+    AjPStr key = NULL;
2168
+    ajint  i;
2169
+
2170
+    unsigned char *rootbuf = NULL;
2171
+    unsigned char *rbuf    = NULL;
2172
+    unsigned char *lbuf    = NULL;
2173
+    unsigned char *tbuf    = NULL;
2174
+    
2175
+    ajint nodetype  = 0;
2176
+    ajlong overflow = 0L;
2177
+    ajlong zero     = 0L;
2178
+    ajint totlen    = 0;
2179
+    ajint rkeyno    = 0;
2180
+    ajint n         = 0;
2181
+
2182
+    ajlong lv = 0L;
2183
+    ajint  v  = 0;
2184
+    
2185
+    
2186
+    /* ajDebug("In btreeHybSplitRoot\n"); */
2187
+
2188
+    order = cache->order;
2189
+
2190
+    arrays1   = btreeAllocPriArray(cache);
2191
+    karray    = arrays1->karray;
2192
+    parray    = arrays1->parray;
2193
+
2194
+    arrays2   = btreeAllocPriArray(cache);
2195
+    tkarray   = arrays2->karray;
2196
+    tparray   = arrays2->parray;
2197
+
2198
+    key = ajStrNew();
2199
+
2200
+    rootpage = btreeCacheLocate(cache,0L);
2201
+    if(!rootpage)
2202
+	ajFatal("Root page has been unlocked 1");
2203
+    
2204
+    rootbuf = rootpage->buf;
2205
+
2206
+    nkeys = order - 1;
2207
+
2208
+    keypos = nkeys / 2;
2209
+    if(!(nkeys % 2))
2210
+	--keypos;
2211
+
2212
+
2213
+    rblockno = cache->totsize;
2214
+    rpage = ajBtreeCacheWrite(cache,rblockno);
2215
+    rpage->dirty = BT_LOCK;
2216
+    rpage->pageno = cache->totsize;
2217
+    cache->totsize += cache->pagesize;
2218
+
2219
+    lblockno = cache->totsize;
2220
+    lpage = ajBtreeCacheWrite(cache,lblockno);
2221
+    lpage->pageno = cache->totsize;
2222
+    cache->totsize += cache->pagesize;
2223
+
2224
+    lv = rblockno;
2225
+    SBT_BLOCKNUMBER(rpage->buf,lv);
2226
+    lv = lblockno;
2227
+    SBT_BLOCKNUMBER(lpage->buf,lv);
2228
+
2229
+    if(!cache->level)
2230
+    {
2231
+	lv = zero;
2232
+	SBT_LEFT(lpage->buf,lv);
2233
+	lv = rblockno;
2234
+	SBT_RIGHT(lpage->buf,lv);
2235
+	lv = lblockno;
2236
+	SBT_LEFT(rpage->buf,lv);
2237
+	lv = zero;
2238
+	SBT_RIGHT(rpage->buf,lv);
2239
+    }
2240
+
2241
+    btreeGetKeys(cache,rootbuf,&karray,&parray);
2242
+
2243
+    /* Get key for root node and write new root node */
2244
+    ajStrAssS(&tkarray[0],karray[keypos]);
2245
+    tparray[0] = lblockno;
2246
+    tparray[1] = rblockno;
2247
+    
2248
+
2249
+    n = 1;
2250
+    v = n;
2251
+    SBT_NKEYS(rootbuf,v);
2252
+    btreeWriteNode(cache,rootpage,tkarray,tparray,1);
2253
+    rootpage->dirty = BT_LOCK;
2254
+
2255
+    rbuf = rpage->buf;
2256
+    lbuf = lpage->buf;
2257
+    
2258
+    if(cache->level)
2259
+	nodetype = BT_INTERNAL;
2260
+    else
2261
+	nodetype = BT_LEAF;
2262
+
2263
+    v = nodetype;
2264
+    SBT_NODETYPE(rbuf,v);
2265
+    v = nodetype;
2266
+    SBT_NODETYPE(lbuf,v);
2267
+    lv = overflow;
2268
+    SBT_OVERFLOW(rbuf,lv);
2269
+    lv = overflow;
2270
+    SBT_PREV(rbuf,lv);
2271
+    lv = overflow;
2272
+    SBT_OVERFLOW(lbuf,lv);
2273
+    lv = overflow;
2274
+    SBT_PREV(lbuf,lv);
2275
+
2276
+    totlen = 0;
2277
+    for(i=0;i<keypos;++i)
2278
+    {
2279
+	ajStrAssS(&tkarray[i],karray[i]);
2280
+	totlen += ajStrLen(karray[i]);
2281
+	tparray[i] = parray[i];
2282
+    }
2283
+    tparray[i] = parray[i];
2284
+    v = totlen;
2285
+    SBT_TOTLEN(lbuf,v);
2286
+    n = i;
2287
+    v = n;
2288
+    SBT_NKEYS(lbuf,v);
2289
+    btreeWriteNode(cache,lpage,tkarray,tparray,i);
2290
+
2291
+    for(i=0;i<n+1;++i)
2292
+    {
2293
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
2294
+	tbuf = tpage->buf;
2295
+	lv = lblockno;
2296
+	SBT_PREV(tbuf,lv);
2297
+	tpage->dirty = BT_DIRTY;
2298
+    }
2299
+
2300
+    totlen = 0;
2301
+    for(i=keypos+1;i<nkeys;++i)
2302
+    {
2303
+	ajStrAssS(&tkarray[i-(keypos+1)],karray[i]);
2304
+	totlen += ajStrLen(karray[i]);
2305
+	tparray[i-(keypos+1)] = parray[i];
2306
+    }
2307
+    tparray[i-(keypos+1)] = parray[i];
2308
+    v = totlen;
2309
+    SBT_TOTLEN(rbuf,v);
2310
+    rkeyno = (nkeys-keypos) - 1;
2311
+    v = rkeyno;
2312
+    SBT_NKEYS(rbuf,v);
2313
+    rpage->dirty = BT_DIRTY;
2314
+    btreeWriteNode(cache,rpage,tkarray,tparray,rkeyno);
2315
+
2316
+    for(i=0;i<rkeyno+1;++i)
2317
+    {
2318
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
2319
+	tbuf = tpage->buf;
2320
+	lv = rblockno;
2321
+	SBT_PREV(tbuf,lv);
2322
+	tpage->dirty = BT_DIRTY;
2323
+    }
2324
+
2325
+
2326
+    btreeDeallocPriArray(cache,arrays1);
2327
+    btreeDeallocPriArray(cache,arrays2);
2328
+
2329
+    ++cache->level;
2330
+
2331
+    ajStrDel(&key);
2332
+    
2333
+    return;
2334
+}
2335
+
2336
+
2337
+
2338
+
2339
+/* @func ajBtreeHybInsertId *********************************************
2340
+**
2341
+** Insert an ID structure into the tree
2342
+**
2343
+** @param [u] cache [AjPBtcache] cache
2344
+** @param [r] id [const AjPBtId] Id object
2345
+**
2346
+** @return [void] pointer to a page
2347
+** @@
2348
+******************************************************************************/
2349
+
2350
+void ajBtreeHybInsertId(AjPBtcache cache, AjPBtHybrid hyb)
2351
+{
2352
+    AjPBtpage spage   = NULL;
2353
+    AjPBtpage parent  = NULL;
2354
+    AjPStr key        = NULL;
2355
+    const char *ckey  = NULL;
2356
+    AjPBucket lbucket = NULL;
2357
+    AjPBucket rbucket = NULL;
2358
+    AjPBucket bucket  = NULL;
2359
+    ajlong lblockno = 0L;
2360
+    ajlong rblockno = 0L;
2361
+    ajlong blockno  = 0L;
2362
+    ajlong shift    = 0L;
2363
+
2364
+    ajint nkeys = 0;
2365
+    ajint order = 0;
2366
+
2367
+    ajint nodetype = 0;
2368
+    ajint nentries = 0;
2369
+    
2370
+    AjPStr *karray = NULL;
2371
+    ajlong *parray = NULL;
2372
+    AjPBtMem arrays = NULL;
2373
+    AjBool found = ajFalse;
2374
+    AjPBtId btid = NULL;
2375
+    
2376
+    ajint i;
2377
+    ajint n;
2378
+    
2379
+    unsigned char *buf = NULL;
2380
+
2381
+    /* ajDebug("In ajBtreeHybInsertId\n"); */
2382
+
2383
+    key = ajStrNew();
2384
+    
2385
+
2386
+    ajStrAssS(&key,hyb->key1);
2387
+    if(!ajStrLen(key))
2388
+    {
2389
+	ajStrDel(&key);
2390
+	return;
2391
+    }
2392
+
2393
+    ckey = ajStrStr(key);
2394
+    spage = ajBtreeHybFindInsert(cache,ckey);
2395
+    buf = spage->buf;
2396
+
2397
+    GBT_NKEYS(buf,&nkeys);
2398
+    GBT_NODETYPE(buf,&nodetype);
2399
+    
2400
+    order = cache->order;
2401
+
2402
+    arrays = btreeAllocPriArray(cache);
2403
+    karray = arrays->karray;
2404
+    parray = arrays->parray;
2405
+    
2406
+    if(!nkeys)
2407
+    {
2408
+	lbucket  = btreeBucketNew(0);
2409
+	rbucket  = btreeBucketNew(0);
2410
+
2411
+	lblockno = cache->totsize;
2412
+	btreeWriteBucket(cache,lbucket,lblockno);
2413
+
2414
+	rblockno = cache->totsize;
2415
+	btreeWriteBucket(cache,rbucket,rblockno);	
2416
+
2417
+	parray[0] = lblockno;
2418
+	parray[1] = rblockno;
2419
+	ajStrAssS(karray,key);
2420
+	
2421
+	btreeWriteNode(cache,spage,karray,parray,1);
2422
+
2423
+	btreeBucketDel(&lbucket);
2424
+	btreeBucketDel(&rbucket);
2425
+
2426
+	btreeAddToHybBucket(cache,rblockno,hyb);
2427
+
2428
+	btreeDeallocPriArray(cache,arrays);
2429
+
2430
+	ajStrDel(&key);
2431
+
2432
+	return;
2433
+    }
2434
+
2435
+
2436
+    /* Search to see whether entry exists */
2437
+    
2438
+    btreeGetKeys(cache,buf,&karray,&parray);
2439
+
2440
+    i=0;
2441
+    while(i!=nkeys && strcmp(key->Ptr,karray[i]->Ptr)>=0)
2442
+	++i;
2443
+    if(i==nkeys)
2444
+    {
2445
+	if(strcmp(key->Ptr,karray[i-1]->Ptr)<0)
2446
+	    blockno = parray[i-1];
2447
+	else
2448
+	    blockno = parray[i];
2449
+    }
2450
+    else
2451
+	blockno = parray[i];
2452
+
2453
+
2454
+    bucket = btreeReadBucket(cache,blockno);
2455
+    
2456
+    nentries = bucket->Nentries;
2457
+    
2458
+    found = ajFalse;
2459
+
2460
+    for(i=0;i<nentries;++i)
2461
+	if(!strcmp(hyb->key1->Ptr,bucket->Ids[i]->id->Ptr))
2462
+	{
2463
+	    found = ajTrue;
2464
+	    break;
2465
+	}
2466
+    
2467
+
2468
+    if(found)
2469
+    {
2470
+	btid = bucket->Ids[i];
2471
+
2472
+	btreeHybDupInsert(cache,hyb,btid);
2473
+
2474
+	btreeWriteBucket(cache,bucket,blockno);
2475
+	btreeBucketDel(&bucket);
2476
+
2477
+	btreeDeallocPriArray(cache,arrays);
2478
+
2479
+	ajStrDel(&key);
2480
+	
2481
+	return;
2482
+    }
2483
+    else
2484
+	btreeBucketDel(&bucket);
2485
+
2486
+    if(nodetype != BT_ROOT)
2487
+	if((shift = btreeHybInsertShift(cache,&spage,key->Ptr)))
2488
+	    blockno = shift;
2489
+
2490
+    buf = spage->buf;
2491
+
2492
+    n = btreeNumInBucket(cache,blockno);
2493
+
2494
+    if(n == cache->nperbucket)
2495
+    {
2496
+	if(btreeHybReorderBuckets(cache,spage))
2497
+	{
2498
+	    GBT_NKEYS(buf,&nkeys);	    
2499
+	    btreeGetKeys(cache,buf,&karray,&parray);
2500
+
2501
+	    i=0;
2502
+	    while(i!=nkeys && strcmp(key->Ptr,karray[i]->Ptr)>=0)
2503
+		++i;
2504
+
2505
+	    if(i==nkeys)
2506
+	    {
2507
+		if(strcmp(key->Ptr,karray[i-1]->Ptr)<0)
2508
+		    blockno = parray[i-1];
2509
+		else
2510
+		    blockno = parray[i];
2511
+	    }
2512
+	    else
2513
+		blockno = parray[i];
2514
+	}
2515
+	else
2516
+	{
2517
+	    parent = btreeHybSplitLeaf(cache,spage);
2518
+	    spage  = ajBtreeHybFindInsert(cache,ckey);
2519
+	    buf = spage->buf;
2520
+
2521
+	    btreeGetKeys(cache,buf,&karray,&parray);
2522
+
2523
+	    GBT_NKEYS(buf,&nkeys);
2524
+	    i=0;
2525
+	    while(i!=nkeys && strcmp(key->Ptr,karray[i]->Ptr)>=0)
2526
+		++i;
2527
+
2528
+	    if(i==nkeys)
2529
+	    {
2530
+		if(strcmp(key->Ptr,karray[i-1]->Ptr)<0)
2531
+		    blockno = parray[i-1];
2532
+		else
2533
+		    blockno = parray[i];
2534
+	    }
2535
+	    else
2536
+		blockno = parray[i];
2537
+
2538
+	}
2539
+    }
2540
+
2541
+
2542
+    btreeAddToHybBucket(cache,blockno,hyb);
2543
+
2544
+    ++cache->count;
2545
+
2546
+    btreeDeallocPriArray(cache,arrays);
2547
+
2548
+    ajStrDel(&key);
2549
+
2550
+    return;
2551
+}
2552
+
2553
+
2554
+
2555
+
2556
+static void btreeHybDupInsert(AjPBtcache cache, AjPBtHybrid hyb,
2557
+			      AjPBtId btid)
2558
+{
2559
+    AjPBtpage page;
2560
+    AjPBtpage rpage;
2561
+    ajlong secrootpage = 0L;
2562
+    unsigned char *buf;
2563
+    ajlong right = 0L;
2564
+    AjPBtNumId num = NULL;
2565
+
2566
+    /* ajDebug("In btreeHybDupInsert\n"); */
2567
+
2568
+    if(!btid->dups)
2569
+    {
2570
+	btid->dups = 1;
2571
+	AJNEW0(num);
2572
+	
2573
+	num->offset    = btid->offset;
2574
+	num->refoffset = btid->refoffset;
2575
+	num->dbno      = btid->dbno;
2576
+
2577
+	secrootpage = cache->totsize;
2578
+
2579
+	btid->offset = secrootpage;
2580
+
2581
+	ajBtreeCreateRootNode(cache,secrootpage);
2582
+	cache->secrootblock = secrootpage;
2583
+	page = ajBtreeCacheWrite(cache,secrootpage);
2584
+	page->dirty = BT_DIRTY;
2585
+	ajBtreeCacheSync(cache,secrootpage);
2586
+	page->dirty = BT_LOCK;
2587
+	
2588
+	rpage = btreeCacheLocate(cache, 0L);
2589
+	rpage->dirty = BT_LOCK;
2590
+
2591
+	cache->slevel = 0;
2592
+
2593
+	ajBtreeInsertNum(cache,num,page);
2594
+
2595
+	num->offset    = hyb->offset;
2596
+	num->refoffset = hyb->refoffset;
2597
+	num->dbno      = hyb->dbno;
2598
+
2599
+	ajBtreeInsertNum(cache,num,page);
2600
+	++btid->dups;
2601
+
2602
+	AJFREE(num);
2603
+
2604
+	return;
2605
+    }
2606
+    else
2607
+    {
2608
+	cache->secrootblock = btid->offset;
2609
+	page = ajBtreeCacheWrite(cache,cache->secrootblock);
2610
+	page->dirty = BT_LOCK;
2611
+	buf = page->buf;
2612
+	GBT_RIGHT(buf,&right);
2613
+	cache->slevel = (ajint) right;
2614
+
2615
+	AJNEW0(num);
2616
+	
2617
+	num->offset    = hyb->offset;
2618
+	num->refoffset = hyb->refoffset;
2619
+	num->dbno      = hyb->dbno;
2620
+	
2621
+	ajBtreeInsertNum(cache,num,page);
2622
+
2623
+	AJFREE(num);
2624
+	
2625
+	++btid->dups;
2626
+    }
2627
+    
2628
+
2629
+    page->dirty = BT_DIRTY;
2630
+
2631
+    return;
2632
+}
2633
+
2634
+
2635
+
2636
+
2637
+/* @funcstatic btreeGetNumKeys *********************************************
2638
+**
2639
+** Get Keys and Pointers from an internal node
2640
+**
2641
+** @param [u] cache [AjPBtcache] cache
2642
+** @param [u] buf [unsigned char *] page buffer
2643
+** @param [w] keys [ajlong **] keys
2644
+** @param [w] ptrs [ajlong**] ptrs
2645
+**
2646
+** @return [void]
2647
+** @@
2648
+******************************************************************************/
2649
+
2650
+static void btreeGetNumKeys(AjPBtcache cache, unsigned char *buf,
2651
+			    ajlong **keys, ajlong **ptrs)
2652
+{
2653
+    ajlong *karray = NULL;
2654
+    ajlong *parray = NULL;
2655
+    
2656
+    ajint nkeys = 0;
2657
+    unsigned char *pptr = NULL;
2658
+    ajint    i;
2659
+
2660
+    /* ajDebug("In btreeGetNumKeys\n"); */
2661
+
2662
+
2663
+    karray = *keys;
2664
+    parray = *ptrs;
2665
+
2666
+    pptr = PBT_KEYLEN(buf);
2667
+    GBT_NKEYS(buf,&nkeys);
2668
+    if(!nkeys)
2669
+	ajFatal("GetNumKeys: No keys in node");
2670
+
2671
+    for(i=0;i<nkeys;++i)
2672
+    {
2673
+	BT_GETAJLONG(pptr,&karray[i]);
2674
+	pptr += sizeof(ajlong);
2675
+    }
2676
+
2677
+    for(i=0;i<nkeys;++i)
2678
+    {
2679
+	BT_GETAJLONG(pptr,&parray[i]);
2680
+	pptr += sizeof(ajlong);
2681
+    }
2682
+    
2683
+    BT_GETAJLONG(pptr,&parray[i]);
2684
+
2685
+    return;
2686
+}
2687
+
2688
+
2689
+
2690
+
2691
+/* @funcstatic btreeWriteNumNode *******************************************
2692
+**
2693
+** Write an internal node
2694
+**
2695
+** @param [u] cache [AjPBtcache] cache
2696
+** @param [u] spage [AjPBtpage] buffer
2697
+** @param [r] keys [AjPStr const *] keys
2698
+** @param [r] ptrs [const ajlong*] page pointers
2699
+** @param [r] nkeys [ajint] number of keys
2700
+
2701
+**
2702
+** @return [void]
2703
+** @@
2704
+******************************************************************************/
2705
+
2706
+static void btreeWriteNumNode(AjPBtcache cache, AjPBtpage spage,
2707
+			      const ajlong *keys, const ajlong *ptrs,
2708
+			      ajint nkeys)
2709
+{
2710
+    unsigned char *pptr   = NULL;
2711
+    unsigned char *buf;
2712
+    
2713
+    ajint tnkeys = 0;
2714
+
2715
+    ajlong aspace   = 0L;
2716
+    ajlong lv       = 0L;
2717
+    ajlong overflow = 0L;
2718
+    ajint i;
2719
+
2720
+
2721
+    /* ajDebug("In btreeWriteNumNode\n"); */
2722
+
2723
+    buf = spage->buf;
2724
+
2725
+    tnkeys = nkeys;
2726
+    SBT_NKEYS(buf,tnkeys);
2727
+
2728
+    pptr = PBT_KEYLEN(buf);
2729
+    aspace = 2 * nkeys * sizeof(ajlong) + sizeof(ajlong);
2730
+    if((pptr+aspace)-buf > cache->pagesize)
2731
+	ajFatal("WriteNumNode: too many keys for available pagesize");
2732
+
2733
+    for(i=0;i<nkeys;++i)
2734
+    {
2735
+	lv = keys[i];
2736
+	BT_SETAJLONG(pptr,lv);
2737
+	pptr += sizeof(ajlong);
2738
+    }
2739
+
2740
+    for(i=0;i<nkeys;++i)
2741
+    {
2742
+	lv = ptrs[i];
2743
+	BT_SETAJLONG(pptr,lv);
2744
+	pptr += sizeof(ajlong);
2745
+    }
2746
+    
2747
+    lv = ptrs[i];
2748
+    BT_SETAJLONG(pptr,lv);
2749
+
2750
+    spage->dirty = BT_DIRTY;
2751
+
2752
+    overflow = 0L;
2753
+    SBT_OVERFLOW(buf,overflow);
2754
+
2755
+
2756
+    return;
2757
+}
2758
+
2759
+
2760
+
2761
+
2762
+/* @funcstatic btreeWriteNumBucket *******************************************
2763
+**
2764
+** Write index bucket object to the cache given a disc page number
2765
+**
2766
+** @param [u] cache [AjPBtcache] cache
2767
+** @param [r] bucket [const AjPBucket] bucket
2768
+** @param [r] pageno [ajlong] page number
2769
+**
2770
+** @return [void]
2771
+** @@
2772
+******************************************************************************/
2773
+
2774
+static void btreeWriteNumBucket(AjPBtcache cache, const AjPNumBucket bucket,
2775
+			     ajlong pageno)
2776
+{
2777
+    AjPBtpage page      = NULL;
2778
+    unsigned char *buf  = NULL;
2779
+    unsigned char *pptr = NULL;
2780
+
2781
+    ajint   v   = 0;
2782
+    ajint   i   = 0;
2783
+    ajlong lv   = 0L;
2784
+    ajint  nentries = 0;
2785
+    ajlong overflow = 0L;
2786
+
2787
+    /* ajDebug("In btreeWriteNumBucket\n"); */
2788
+
2789
+    if(pageno == cache->totsize)
2790
+    {
2791
+	page = ajBtreeCacheWrite(cache,pageno);
2792
+	page->pageno = cache->totsize;
2793
+	cache->totsize += cache->pagesize;
2794
+	buf = page->buf;
2795
+	overflow = 0L;
2796
+	lv = overflow;
2797
+	SBT_BUCKOVERFLOW(buf,lv);
2798
+    }
2799
+    else
2800
+    {
2801
+	page = ajBtreeCacheRead(cache,pageno);
2802
+	buf = page->buf;
2803
+	GBT_BUCKOVERFLOW(buf,&overflow);
2804
+    }
2805
+
2806
+    v = BT_BUCKET;
2807
+    SBT_BUCKNODETYPE(buf,v);
2808
+    page->dirty = BT_LOCK;
2809
+
2810
+    nentries = bucket->Nentries;
2811
+    v = nentries;
2812
+    SBT_BUCKNENTRIES(buf,v);
2813
+    
2814
+    pptr = PBT_BUCKKEYLEN(buf);
2815
+
2816
+    for(i=0;i<nentries;++i)
2817
+    {
2818
+	lv = bucket->NumId[i]->offset;
2819
+	BT_SETAJLONG(pptr,lv);
2820
+	pptr += sizeof(ajlong);
2821
+	lv = bucket->NumId[i]->refoffset;
2822
+	BT_SETAJLONG(pptr,lv);
2823
+	pptr += sizeof(ajlong);
2824
+	v = bucket->NumId[i]->dbno;
2825
+	BT_SETAJINT(pptr,v);
2826
+	pptr += sizeof(ajint);
2827
+    }
2828
+    
2829
+    lv = 0L;
2830
+    SBT_BUCKOVERFLOW(buf,lv);
2831
+    page->dirty = BT_DIRTY;
2832
+
2833
+    return;
2834
+}
2835
+
2836
+
2837
+
2838
+
2839
+/* @funcstatic btreeReadNumBucket *********************************************
2840
+**
2841
+** Constructor for index bucket given a disc page number
2842
+** Creates one empty key slot for possible addition
2843
+**
2844
+** @param [u] cache [AjPBtcache] cache
2845
+** @param [r] pageno [ajlong] page number
2846
+**
2847
+** @return [AjPNumBucket] bucket
2848
+** @@
2849
+******************************************************************************/
2850
+
2851
+static AjPNumBucket btreeReadNumBucket(AjPBtcache cache, ajlong pageno)
2852
+{
2853
+    AjPNumBucket bucket    = NULL;
2854
+    AjPBtpage page      = NULL;
2855
+    unsigned char *buf  = NULL;
2856
+    unsigned char *pptr = NULL;
2857
+    ajint  nodetype  = 0;
2858
+    ajint  nentries  = 0;
2859
+    ajlong overflow  = 0L;
2860
+    ajint  dirtysave = 0;
2861
+    
2862
+    ajint  i;
2863
+    
2864
+    /* ajDebug("In btreeReadNumBucket\n"); */
2865
+
2866
+    if(pageno == cache->secrootblock)
2867
+	ajFatal("ReadNumBucket: cannot read bucket from a root page");
2868
+
2869
+    page = ajBtreeCacheRead(cache,pageno);
2870
+    dirtysave = page->dirty;
2871
+    page->dirty = BT_LOCK;
2872
+    buf = page->buf;
2873
+
2874
+    GBT_BUCKNODETYPE(buf,&nodetype);
2875
+    if(nodetype != BT_BUCKET)
2876
+	ajFatal("ReadNumBucket: Nodetype mismatch. Not bucket (%d)",nodetype);
2877
+
2878
+    GBT_BUCKNENTRIES(buf,&nentries);
2879
+    if(nentries > cache->snperbucket)
2880
+	ajFatal("ReadNumBucket: Bucket too full");
2881
+
2882
+    GBT_BUCKOVERFLOW(buf,&overflow);
2883
+
2884
+    AJNEW0(bucket);
2885
+    bucket->NodeType = nodetype;
2886
+    bucket->Nentries = nentries;
2887
+    bucket->Overflow = overflow;
2888
+
2889
+    AJCNEW0(bucket->NumId,nentries+1);
2890
+    for(i=0;i<nentries;++i)
2891
+	AJNEW0(bucket->NumId[i]);
2892
+    
2893
+
2894
+    pptr = PBT_BUCKKEYLEN(buf);
2895
+
2896
+    for(i=0;i<nentries;++i)
2897
+    {
2898
+	BT_GETAJLONG(pptr,&bucket->NumId[i]->offset);
2899
+	pptr += sizeof(ajlong);
2900
+	BT_GETAJLONG(pptr,&bucket->NumId[i]->refoffset);
2901
+	pptr += sizeof(ajlong);
2902
+	BT_GETAJINT(pptr,&bucket->NumId[i]->dbno);
2903
+	pptr += sizeof(ajint);
2904
+    }
2905
+    
2906
+    page->dirty = dirtysave;
2907
+
2908
+    return bucket;
2909
+}
2910
+
2911
+
2912
+
2913
+
2914
+/* @funcstatic btreeNumBucketDel *********************************************
2915
+**
2916
+** Delete a bucket object
2917
+**
2918
+** @param [w] thys [AjPNumBucket*] bucket
2919
+**
2920
+** @return [void]
2921
+** @@
2922
+******************************************************************************/
2923
+
2924
+static void btreeNumBucketDel(AjPNumBucket *thys)
2925
+{
2926
+    AjPNumBucket pthis = NULL;
2927
+    int i;
2928
+    
2929
+    
2930
+    /* ajDebug("In btreeNumBucketDel\n"); */
2931
+
2932
+    if(!thys || !*thys)
2933
+	return;
2934
+
2935
+    pthis = *thys;
2936
+
2937
+    if(pthis->Nentries)
2938
+    {
2939
+	for(i=0;i<pthis->Nentries;++i)
2940
+	    AJFREE(pthis->NumId[i]);
2941
+    
2942
+	AJFREE(pthis->NumId);
2943
+    }
2944
+    
2945
+    
2946
+    AJFREE(pthis);
2947
+
2948
+    *thys = NULL;
2949
+
2950
+    return;
2951
+}
2952
+
2953
+
2954
+
2955
+
2956
+/* @func ajBtreeNumFindInsert ***********************************************
2957
+**
2958
+** Find the node that should contain a new key for insertion
2959
+**
2960
+** @param [u] cache [AjPBtcache] cache
2961
+** @param [r] key [const ajlong] key to search for 
2962
+**
2963
+** @return [AjPBtpage] leaf node where item should be inserted
2964
+** @@
2965
+******************************************************************************/
2966
+
2967
+AjPBtpage ajBtreeNumFindInsert(AjPBtcache cache, const ajlong key)
2968
+{
2969
+    AjPBtpage root = NULL;
2970
+    AjPBtpage ret  = NULL;
2971
+
2972
+    /* ajDebug("In ajBtreeNumFindInsert\n"); */
2973
+
2974
+    /* The root node should always be in the cache (BT_LOCKed) */
2975
+    root = btreeCacheLocate(cache,cache->secrootblock);
2976
+
2977
+    /* ajDebug("cache->slevel = %d root=%d\n",cache->slevel,(ajint)root); */
2978
+    
2979
+
2980
+    if(!cache->slevel)
2981
+	return root;
2982
+    
2983
+    ret = btreeNumFindINode(cache,root,key);
2984
+
2985
+    return ret;
2986
+}
2987
+
2988
+
2989
+
2990
+
2991
+/* @funcstatic btreeNumFindINode **********************************************
2992
+**
2993
+** Recursive search for insert node in a secondary tree
2994
+**
2995
+** @param [u] cache [AjPBtcache] cache
2996
+** @param [u] page [AjPBtpage] page
2997
+** @param [r] item [const ajlong] key to search for 
2998
+**
2999
+** @return [AjPBtpage] leaf node where item should be inserted
3000
+** @@
3001
+******************************************************************************/
3002
+
3003
+static AjPBtpage btreeNumFindINode(AjPBtcache cache, AjPBtpage page,
3004
+				   const ajlong item)
3005
+{
3006
+    AjPBtpage ret = NULL;
3007
+    AjPBtpage pg  = NULL;
3008
+
3009
+    unsigned char *buf = NULL;
3010
+    ajint status       = 0;
3011
+    ajint ival         = 0;
3012
+
3013
+    /* ajDebug("In btreeNumFindINode\n"); */
3014
+    
3015
+    ret = page;
3016
+    buf = page->buf;
3017
+    GBT_NODETYPE(buf,&ival);
3018
+    if(ival != BT_LEAF)
3019
+    {
3020
+	status = ret->dirty;
3021
+	ret->dirty = BT_LOCK;	/* Lock in case of lots of overflow pages */
3022
+	pg = btreeNumPageFromKey(cache,buf,item);
3023
+	ret->dirty = status;
3024
+	ret = btreeNumFindINode(cache,pg,item);
3025
+    }
3026
+    
3027
+    return ret;
3028
+}
3029
+
3030
+
3031
+
3032
+
3033
+/* @funcstatic btreeNumPageFromKey *******************************************
3034
+**
3035
+** Return next lower index page given a key in a secondary tree
3036
+**
3037
+** @param [u] cache [AjPBtcache] cache
3038
+** @param [u] buf [unsigned char *] page buffer
3039
+** @param [r] key [const ajlong] key to search for 
3040
+**
3041
+** @return [AjPBtpage] pointer to a page
3042
+** @@
3043
+******************************************************************************/
3044
+
3045
+static AjPBtpage btreeNumPageFromKey(AjPBtcache cache, unsigned char *buf,
3046
+				     const ajlong key)
3047
+{
3048
+    unsigned char *rootbuf = NULL;
3049
+    ajint nkeys = 0;
3050
+    ajint order = 0;
3051
+    ajint i;
3052
+    
3053
+    ajlong blockno = 0L;
3054
+    ajlong *karray = NULL;
3055
+    ajlong *parray = NULL;
3056
+    AjPBtpage page = NULL;
3057
+    AjPBtMem array = NULL;
3058
+
3059
+    /* ajDebug("In btreeNumPageFromKey\n"); */
3060
+    
3061
+    rootbuf = buf;
3062
+
3063
+
3064
+    GBT_NKEYS(rootbuf,&nkeys);
3065
+    order = cache->sorder;
3066
+
3067
+    array = btreeAllocSecArray(cache);
3068
+    karray = array->overflows;
3069
+    parray = array->parray;
3070
+    
3071
+    btreeGetNumKeys(cache,rootbuf,&karray,&parray);
3072
+    i = 0;
3073
+    while(i!=nkeys && key >= karray[i])
3074
+	++i;
3075
+    if(i==nkeys)
3076
+    {
3077
+	if(key < karray[i-1])
3078
+	    blockno = parray[i-1];
3079
+	else
3080
+	    blockno = parray[i];
3081
+    }
3082
+    else
3083
+	blockno = parray[i];
3084
+
3085
+    btreeDeallocSecArray(cache,array);
3086
+
3087
+    page =  ajBtreeCacheRead(cache,blockno);
3088
+
3089
+    return page;
3090
+}
3091
+
3092
+
3093
+
3094
+
3095
+/* @funcstatic btreeAddToNumBucket *******************************************
3096
+**
3097
+** Add offset info to a bucket
3098
+** Only called if there is room in the bucket
3099
+**
3100
+** @param [u] cache [AjPBtcache] cache
3101
+** @param [r] pageno [ajlong] page number of bucket
3102
+** @param [r] num [const AjPBtNumId] ID info
3103
+**
3104
+** @return [void]
3105
+** @@
3106
+******************************************************************************/
3107
+
3108
+static void btreeAddToNumBucket(AjPBtcache cache, ajlong pageno,
3109
+				const AjPBtNumId num)
3110
+{
3111
+    AjPNumBucket bucket = NULL;
3112
+    ajint nentries;
3113
+    
3114
+    /* ajDebug("In btreeAddToNumBucket\n"); */
3115
+
3116
+    bucket   = btreeReadNumBucket(cache,pageno);
3117
+
3118
+    nentries = bucket->Nentries;
3119
+
3120
+    /* Reading a bucket always gives one extra ID position */
3121
+
3122
+    AJNEW0(bucket->NumId[nentries]);
3123
+    bucket->NumId[nentries]->offset    = num->offset;
3124
+    bucket->NumId[nentries]->refoffset = num->refoffset;
3125
+    bucket->NumId[nentries]->dbno      = num->dbno;
3126
+
3127
+    
3128
+    ++bucket->Nentries;
3129
+
3130
+    btreeWriteNumBucket(cache,bucket,pageno);
3131
+
3132
+    btreeNumBucketDel(&bucket);
3133
+    
3134
+    return;
3135
+}
3136
+
3137
+
3138
+
3139
+
3140
+/* @funcstatic btreeNumInNumBucket *******************************************
3141
+**
3142
+** Return number of entries in a bucket
3143
+**
3144
+** @param [u] cache [AjPBtcache] cache
3145
+** @param [r] pageno [ajlong] page number
3146
+**
3147
+** @return [ajint] Number of entries in bucket
3148
+** @@
3149
+******************************************************************************/
3150
+
3151
+static ajint btreeNumInNumBucket(AjPBtcache cache, ajlong pageno)
3152
+{
3153
+    AjPBtpage page     = NULL;
3154
+    unsigned char *buf = NULL;
3155
+    ajint  nodetype    = 0;
3156
+    ajint  nentries    = 0;
3157
+    
3158
+    /* ajDebug("In btreeNumInNumBucket\n"); */
3159
+    
3160
+    if(pageno == cache->secrootblock)
3161
+	ajFatal("NumInNumBucket: Attempt to read bucket from root page\n");
3162
+
3163
+    page  = ajBtreeCacheRead(cache,pageno);
3164
+
3165
+    buf = page->buf;
3166
+
3167
+    GBT_BUCKNODETYPE(buf,&nodetype);
3168
+    if(nodetype != BT_BUCKET)
3169
+	ajFatal("NumInNumBucket: NodeType mismatch. Not bucket (%d)",
3170
+		nodetype);
3171
+    
3172
+    GBT_BUCKNENTRIES(buf,&nentries);
3173
+
3174
+    return nentries;
3175
+}
3176
+
3177
+
3178
+
3179
+
3180
+/* @funcstatic btreeNumBucketNew *********************************************
3181
+**
3182
+** Construct a bucket object
3183
+**
3184
+** @param [r] n [ajint] Number of IDs
3185
+**
3186
+** @return [AjPBucket] initialised disc block cache structure
3187
+** @@
3188
+******************************************************************************/
3189
+
3190
+static AjPNumBucket btreeNumBucketNew(ajint n)
3191
+{
3192
+    AjPNumBucket bucket = NULL;
3193
+    ajint i;
3194
+
3195
+    /* ajDebug("In btreeNumBucketNew\n"); */
3196
+    
3197
+    AJNEW0(bucket);
3198
+
3199
+    if(n)
3200
+    {
3201
+	AJCNEW0(bucket->NumId,n);
3202
+	for(i=0;i<n;++i)
3203
+	    AJNEW0(bucket->NumId[i]);
3204
+    }
3205
+
3206
+    bucket->NodeType = BT_BUCKET;
3207
+    bucket->Nentries = n;
3208
+    bucket->Overflow = 0L;
3209
+    
3210
+    return bucket;
3211
+}
3212
+
3213
+
3214
+
3215
+
3216
+/* @funcstatic btreeReorderNumBuckets *****************************************
3217
+**
3218
+** Re-order leaf buckets
3219
+** Must only be called if one of the buckets is full
3220
+**
3221
+** @param [u] cache [AjPBtcache] cache
3222
+** @param [u] leaf [AjPBtpage] leaf page
3223
+**
3224
+** @return [AjBool] true if reorder was successful i.e. leaf not full
3225
+** @@
3226
+******************************************************************************/
3227
+
3228
+static AjBool btreeReorderNumBuckets(AjPBtcache cache, AjPBtpage leaf)
3229
+{
3230
+    ajint nkeys = 0;
3231
+    unsigned char *lbuf = NULL;
3232
+
3233
+    ajlong *keys        = NULL;
3234
+    ajlong *ptrs        = NULL;
3235
+
3236
+    AjPNumBucket *buckets  = NULL;
3237
+    
3238
+    ajint i = 0;
3239
+    ajint j = 0;
3240
+    
3241
+    ajint order;
3242
+    ajint bentries      = 0;
3243
+    ajint totalkeys     = 0;
3244
+    ajint nperbucket    = 0;
3245
+    ajint maxnperbucket = 0;
3246
+    ajint count         = 0;
3247
+    ajint keylimit      = 0;
3248
+    ajint bucketn       = 0;
3249
+    ajint bucketlimit   = 0;
3250
+    ajint nodetype      = 0;
3251
+    
3252
+    AjPList idlist    = NULL;
3253
+    ajint   dirtysave = 0;
3254
+    AjPBtNumId bid       = NULL;
3255
+    AjPNumBucket cbucket = NULL;
3256
+    AjPBtNumId cid       = NULL;
3257
+
3258
+    ajint   v = 0;
3259
+    AjPBtMem array = NULL;
3260
+    
3261
+    /* ajDebug("In btreeReorderNumBuckets\n"); */
3262
+
3263
+    dirtysave = leaf->dirty;
3264
+
3265
+    leaf->dirty = BT_LOCK;
3266
+    lbuf = leaf->buf;
3267
+
3268
+    GBT_NODETYPE(lbuf,&nodetype);
3269
+
3270
+    order = cache->sorder;
3271
+    nperbucket = cache->snperbucket;
3272
+    
3273
+
3274
+    array = btreeAllocSecArray(cache);
3275
+    keys  = array->overflows;
3276
+    ptrs  = array->parray;
3277
+
3278
+    /* Read keys/ptrs */
3279
+
3280
+    btreeGetNumKeys(cache,lbuf,&keys,&ptrs);
3281
+
3282
+    GBT_NKEYS(lbuf,&nkeys);
3283
+
3284
+
3285
+    if(!nkeys)
3286
+	ajFatal("NumBucketReorder: Attempt to reorder empty leaf");
3287
+
3288
+    for(i=0;i<nkeys;++i)
3289
+	totalkeys += btreeNumInNumBucket(cache,ptrs[i]);
3290
+    totalkeys += btreeNumInNumBucket(cache,ptrs[i]);
3291
+
3292
+    /* Set the number of entries per bucket to approximately half full */
3293
+    maxnperbucket = nperbucket >> 1;
3294
+
3295
+    if(!maxnperbucket)
3296
+	++maxnperbucket;
3297
+
3298
+    /* Work out the number of new buckets needed */
3299
+    bucketn = (totalkeys / maxnperbucket);
3300
+    if(totalkeys % maxnperbucket)
3301
+	++bucketn;
3302
+    
3303
+    if(bucketn > order)
3304
+    {
3305
+	btreeDeallocSecArray(cache,array);
3306
+	
3307
+	leaf->dirty = dirtysave;
3308
+	return ajFalse;
3309
+    }
3310
+    
3311
+
3312
+    /* Read buckets */
3313
+    AJCNEW0(buckets,nkeys+1);
3314
+    keylimit = nkeys + 1;
3315
+    
3316
+    for(i=0;i<keylimit;++i)
3317
+	buckets[i] = btreeReadNumBucket(cache,ptrs[i]);
3318
+
3319
+
3320
+    /* Read IDs from all buckets and push to list and sort (increasing id) */
3321
+    idlist  = ajListNew();
3322
+    
3323
+    for(i=0;i<keylimit;++i)
3324
+    {
3325
+	bentries = buckets[i]->Nentries;
3326
+	for(j=0;j<bentries;++j)
3327
+	    ajListPush(idlist,(void *)buckets[i]->NumId[j]);
3328
+	
3329
+	AJFREE(buckets[i]->NumId);
3330
+	AJFREE(buckets[i]);
3331
+    }
3332
+    ajListSort(idlist,btreeNumIdCompare);
3333
+    AJFREE(buckets);
3334
+
3335
+    cbucket = btreeNumBucketNew(maxnperbucket);
3336
+    bucketlimit = bucketn - 1;
3337
+    
3338
+    for(i=0;i<bucketlimit;++i)
3339
+    {
3340
+	cbucket->Nentries = 0;
3341
+
3342
+	count = 0;
3343
+	while(count!=maxnperbucket)
3344
+	{
3345
+	    ajListPop(idlist,(void **)&bid);
3346
+	    
3347
+	    cid = cbucket->NumId[count];
3348
+	    cid->dbno = bid->dbno;
3349
+	    cid->offset = bid->offset;
3350
+	    cid->refoffset = bid->refoffset;
3351
+	    
3352
+	    ++cbucket->Nentries;
3353
+	    ++count;
3354
+	    AJFREE(bid);
3355
+	}
3356
+
3357
+
3358
+	ajListPeek(idlist,(void **)&bid);
3359
+	keys[i] = bid->offset;
3360
+
3361
+	if(!ptrs[i])
3362
+	    ptrs[i] = cache->totsize;
3363
+	btreeWriteNumBucket(cache,cbucket,ptrs[i]);
3364
+    }
3365
+
3366
+
3367
+    /* Deal with greater-than bucket */
3368
+
3369
+    cbucket->Nentries = 0;
3370
+
3371
+    count = 0;
3372
+    while(ajListPop(idlist,(void **)&bid))
3373
+    {
3374
+	cid = cbucket->NumId[count];
3375
+	cid->dbno = bid->dbno;
3376
+	cid->offset = bid->offset;
3377
+	cid->refoffset = bid->refoffset;
3378
+	
3379
+	++cbucket->Nentries;
3380
+	++count;
3381
+	AJFREE(bid);
3382
+    }
3383
+    
3384
+    
3385
+    if(!ptrs[i])
3386
+	ptrs[i] = cache->totsize;
3387
+    btreeWriteNumBucket(cache,cbucket,ptrs[i]);
3388
+
3389
+    cbucket->Nentries = maxnperbucket;
3390
+    btreeNumBucketDel(&cbucket);
3391
+
3392
+    /* Now write out a modified leaf with new keys/ptrs */
3393
+
3394
+    nkeys = bucketn - 1;
3395
+    v = nkeys;
3396
+    SBT_NKEYS(lbuf,v);
3397
+
3398
+    btreeWriteNumNode(cache,leaf,keys,ptrs,nkeys);
3399
+
3400
+    leaf->dirty = BT_DIRTY;
3401
+    if(nodetype == BT_ROOT)
3402
+	leaf->dirty = BT_LOCK;
3403
+    
3404
+    btreeDeallocSecArray(cache,array);
3405
+
3406
+    ajListDel(&idlist);
3407
+
3408
+    return ajTrue;
3409
+}
3410
+
3411
+
3412
+
3413
+
3414
+/* @funcstatic btreeNumNodeIsFull *****************************************
3415
+**
3416
+** Tests whether a node is full of keys
3417
+**
3418
+** @param [r] cache [const AjPBtcache] cache
3419
+** @param [u] page [AjPBtpage] original page
3420
+**
3421
+** @return [AjBool] true if full
3422
+** @@
3423
+******************************************************************************/
3424
+
3425
+static AjBool btreeNumNodeIsFull(const AjPBtcache cache, AjPBtpage page)
3426
+{
3427
+    unsigned char *buf = NULL;
3428
+    ajint nkeys = 0;
3429
+
3430
+    /* ajDebug("In btreeNumNodeIsFull\n"); */
3431
+
3432
+    buf = page->buf;
3433
+    GBT_NKEYS(buf,&nkeys);
3434
+
3435
+    if(nkeys == cache->sorder - 1)
3436
+	return ajTrue;
3437
+
3438
+    return ajFalse;
3439
+}
3440
+
3441
+
3442
+
3443
+
3444
+/* @funcstatic btreeNumInsertNonFull *****************************************
3445
+**
3446
+** Insert a key into a non-full node
3447
+**
3448
+** @param [u] cache [AjPBtcache] cache
3449
+** @param [u] page [AjPBtpage] original page
3450
+** @param [r] key [const ajlong] key to insert
3451
+** @param [r] less [ajlong] less-than pointer
3452
+** @param [r] greater [ajlong] greater-than pointer
3453
+**
3454
+** @return [void]
3455
+** @@
3456
+******************************************************************************/
3457
+
3458
+static void btreeNumInsertNonFull(AjPBtcache cache, AjPBtpage page,
3459
+				  const ajlong key, ajlong less,
3460
+				  ajlong greater)
3461
+{
3462
+    unsigned char *buf = NULL;
3463
+    ajlong *karray     = NULL;
3464
+    ajlong *parray     = NULL;
3465
+    ajint nkeys  = 0;
3466
+    ajint order  = 0;
3467
+    ajint ipos   = 0;
3468
+    ajint i;
3469
+    ajint count  = 0;
3470
+
3471
+    ajlong lv = 0L;
3472
+    ajint  v  = 0;
3473
+    AjPBtMem array = NULL;    
3474
+
3475
+    AjPBtpage ppage = NULL;
3476
+    ajlong pageno   = 0L;
3477
+
3478
+    ajint nodetype = 0;
3479
+    
3480
+    /* ajDebug("In btreeNumInsertNonFull\n"); */
3481
+
3482
+    order = cache->sorder;
3483
+
3484
+    array = btreeAllocSecArray(cache);
3485
+    karray  = array->overflows;
3486
+    parray  = array->parray;
3487
+
3488
+
3489
+    buf = page->buf;
3490
+    GBT_NKEYS(buf,&nkeys);
3491
+    GBT_NODETYPE(buf,&nodetype);
3492
+    
3493
+    btreeGetNumKeys(cache,buf,&karray,&parray);
3494
+
3495
+    i = 0;
3496
+    while(i!=nkeys && key >= karray[i])
3497
+	++i;
3498
+
3499
+    ipos = i;
3500
+
3501
+    count = nkeys - ipos;
3502
+    
3503
+
3504
+    if(ipos == nkeys)
3505
+    {
3506
+	karray[ipos] = key;
3507
+	parray[ipos+1] = greater;
3508
+	parray[ipos]   = less;
3509
+    }
3510
+    else
3511
+    {
3512
+	parray[nkeys+1] = parray[nkeys];
3513
+
3514
+	for(i=nkeys-1; count>0; --count, --i)
3515
+	{
3516
+	    karray[i+1] = karray[i];
3517
+	    parray[i+1] = parray[i];
3518
+	}
3519
+
3520
+	karray[ipos] = key;
3521
+	parray[ipos] = less;
3522
+	parray[ipos+1] = greater;
3523
+    }
3524
+
3525
+    ++nkeys;
3526
+    v = nkeys;
3527
+    SBT_NKEYS(buf,v);
3528
+
3529
+    btreeWriteNumNode(cache,page,karray,parray,nkeys);
3530
+    if(nodetype == BT_ROOT)
3531
+	page->dirty = BT_LOCK;
3532
+
3533
+    pageno = page->pageno;
3534
+    ppage = ajBtreeCacheRead(cache,less);
3535
+    lv = pageno;
3536
+    SBT_PREV(ppage->buf,lv);
3537
+    ppage->dirty = BT_DIRTY;
3538
+    ppage = ajBtreeCacheRead(cache,greater);
3539
+    lv = pageno;
3540
+    SBT_PREV(ppage->buf,lv);
3541
+    ppage->dirty = BT_DIRTY;
3542
+    
3543
+
3544
+    btreeDeallocSecArray(cache,array);
3545
+
3546
+    if(nodetype != BT_ROOT)
3547
+	btreeNumKeyShift(cache,page);
3548
+
3549
+    return;
3550
+}
3551
+
3552
+
3553
+
3554
+
3555
+/* @funcstatic btreeNumInsertKey **********************************************
3556
+**
3557
+** Insert a key into a potentially full node
3558
+**
3559
+** @param [u] cache [AjPBtcache] cache
3560
+** @param [u] page [AjPBtpage] original page
3561
+** @param [r] key [const ajlong] key to insert
3562
+** @param [r] less [ajlong] less-than pointer
3563
+** @param [r] greater [ajlong] greater-than pointer
3564
+**
3565
+** @return [void]
3566
+** @@
3567
+******************************************************************************/
3568
+
3569
+static void btreeNumInsertKey(AjPBtcache cache, AjPBtpage page,
3570
+			      const ajlong key, ajlong less, ajlong greater)
3571
+{
3572
+    unsigned char *lbuf = NULL;
3573
+    unsigned char *rbuf = NULL;
3574
+    unsigned char *tbuf = NULL;
3575
+    ajlong *karray      = NULL;
3576
+    ajlong *parray      = NULL;
3577
+    ajlong *tkarray     = NULL;
3578
+    ajlong *tparray     = NULL;
3579
+    ajint nkeys    = 0;
3580
+    ajint order    = 0;
3581
+    ajint keypos   = 0;
3582
+    ajint rkeyno   = 0;
3583
+    
3584
+    ajint i = 0;
3585
+    ajint n = 0;
3586
+    
3587
+    ajint nodetype  = 0;
3588
+    AjPBtpage ipage = NULL;
3589
+    AjPBtpage lpage = NULL;
3590
+    AjPBtpage rpage = NULL;
3591
+    AjPBtpage tpage = NULL;
3592
+
3593
+    ajlong blockno  = 0L;
3594
+    ajlong rblockno = 0L;
3595
+    ajlong lblockno = 0L;
3596
+    ajlong mediankey  = 0L;
3597
+    ajlong medianless = 0L;
3598
+    ajlong mediangtr  = 0L;
3599
+    ajlong overflow   = 0L;
3600
+    ajlong prev       = 0L;
3601
+    ajint  totlen     = 0;
3602
+    
3603
+    ajlong lv = 0L;
3604
+    ajint  v  = 0;
3605
+    AjPBtMem array  = NULL;    
3606
+    AjPBtMem array2 = NULL;    
3607
+    
3608
+    /* ajDebug("In btreeNumInsertKey\n"); */
3609
+
3610
+    if(!btreeNumNodeIsFull(cache,page))
3611
+    {
3612
+	btreeNumInsertNonFull(cache,page,key,less,greater);
3613
+	return;
3614
+    }
3615
+    
3616
+    order = cache->sorder;
3617
+    lbuf = page->buf;
3618
+    GBT_NODETYPE(lbuf,&nodetype);
3619
+    page->dirty = BT_LOCK;
3620
+
3621
+    if(nodetype == BT_ROOT)
3622
+    {
3623
+	array = btreeAllocSecArray(cache);
3624
+	karray  = array->overflows;
3625
+	parray  = array->parray;
3626
+
3627
+	btreeNumSplitRoot(cache);
3628
+
3629
+	if(page->pageno)
3630
+	    page->dirty = BT_DIRTY;
3631
+	btreeGetNumKeys(cache,lbuf,&karray,&parray);
3632
+
3633
+	if(key < karray[0])
3634
+	    blockno = parray[0];
3635
+	else
3636
+	    blockno = parray[1];
3637
+	ipage = ajBtreeCacheRead(cache,blockno);
3638
+	btreeNumInsertNonFull(cache,ipage,key,less,greater);
3639
+
3640
+	btreeDeallocSecArray(cache,array);
3641
+	return;
3642
+    }
3643
+
3644
+
3645
+    array = btreeAllocSecArray(cache);
3646
+    karray  = array->overflows;
3647
+    parray  = array->parray;
3648
+    
3649
+    array2 = btreeAllocSecArray(cache);
3650
+    tkarray  = array2->overflows;
3651
+    tparray  = array2->parray;
3652
+
3653
+    
3654
+    lpage = page;
3655
+    lbuf = lpage->buf;
3656
+    
3657
+    btreeGetNumKeys(cache,lbuf,&karray,&parray);
3658
+
3659
+    GBT_BLOCKNUMBER(lbuf,&lblockno);
3660
+    rblockno = cache->totsize;
3661
+    rpage = ajBtreeCacheWrite(cache,rblockno);
3662
+    rpage->dirty = BT_LOCK;
3663
+    rpage->pageno = cache->totsize;
3664
+    cache->totsize += cache->pagesize;
3665
+    rbuf = rpage->buf;
3666
+    lv = rblockno;
3667
+    SBT_BLOCKNUMBER(rbuf,lv);
3668
+
3669
+    
3670
+    GBT_PREV(lbuf,&prev);
3671
+    lv = prev;
3672
+    SBT_PREV(rbuf,lv);
3673
+
3674
+    nkeys = order - 1;
3675
+    keypos = nkeys / 2;
3676
+    if(!(nkeys % 2))
3677
+	--keypos;
3678
+
3679
+    mediankey = karray[keypos];
3680
+    medianless = lblockno;
3681
+    mediangtr  = rblockno;
3682
+
3683
+
3684
+    GBT_NODETYPE(lbuf,&nodetype);
3685
+    v = nodetype;
3686
+    SBT_NODETYPE(rbuf,v);
3687
+    lv = overflow;
3688
+    SBT_OVERFLOW(rbuf,lv);
3689
+
3690
+
3691
+    totlen = 0;
3692
+    for(i=0;i<keypos;++i)
3693
+    {
3694
+	tkarray[i] = karray[i];
3695
+	tparray[i] = parray[i];
3696
+    }
3697
+    tparray[i] = parray[i];
3698
+
3699
+    n = i;
3700
+    v = n;
3701
+    SBT_NKEYS(lbuf,v);
3702
+    btreeWriteNumNode(cache,lpage,tkarray,tparray,i);
3703
+
3704
+
3705
+
3706
+    for(i=0;i<n+1;++i)
3707
+    {
3708
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
3709
+	tbuf = tpage->buf;
3710
+	lv = lblockno;
3711
+	SBT_PREV(tbuf,lv);
3712
+	tpage->dirty = BT_DIRTY;
3713
+    }
3714
+
3715
+
3716
+    totlen = 0;
3717
+    for(i=keypos+1;i<nkeys;++i)
3718
+    {
3719
+	tkarray[i-(keypos+1)] = karray[i];
3720
+	tparray[i-(keypos+1)] = parray[i];
3721
+    }
3722
+    tparray[i-(keypos+1)] = parray[i];
3723
+
3724
+    rkeyno = (nkeys-keypos) - 1;
3725
+    v = rkeyno;
3726
+    SBT_NKEYS(rbuf,v);
3727
+    rpage->dirty = BT_DIRTY;
3728
+    btreeWriteNumNode(cache,rpage,tkarray,tparray,rkeyno);
3729
+
3730
+
3731
+    for(i=0;i<rkeyno+1;++i)
3732
+    {
3733
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
3734
+	tbuf = tpage->buf;
3735
+	lv = rblockno;
3736
+	SBT_PREV(tbuf,lv);
3737
+	tpage->dirty = BT_DIRTY;
3738
+    }
3739
+
3740
+
3741
+    ipage = rpage;
3742
+    if(key < mediankey)
3743
+	ipage = lpage;
3744
+
3745
+    btreeNumInsertNonFull(cache,ipage,key,less,greater);
3746
+
3747
+
3748
+    btreeDeallocSecArray(cache,array);
3749
+    btreeDeallocSecArray(cache,array2);
3750
+
3751
+    ipage = ajBtreeCacheRead(cache,prev);
3752
+
3753
+    btreeNumInsertKey(cache,ipage,mediankey,medianless,mediangtr);
3754
+
3755
+    return;
3756
+}
3757
+
3758
+
3759
+
3760
+
3761
+/* @funcstatic btreeNumSplitRoot *****************************************
3762
+**
3763
+** Split s secondary root node
3764
+**
3765
+** @param [u] cache [AjPBtcache] cache
3766
+**
3767
+** @return [void]
3768
+** @@
3769
+******************************************************************************/
3770
+
3771
+static void btreeNumSplitRoot(AjPBtcache cache)
3772
+{
3773
+    AjPBtpage rootpage = NULL;
3774
+    AjPBtpage rpage    = NULL;
3775
+    AjPBtpage lpage    = NULL;
3776
+    AjPBtpage tpage    = NULL;
3777
+
3778
+    ajlong *karray  = NULL;
3779
+    ajlong *tkarray = NULL;
3780
+    ajlong *parray  = NULL;
3781
+    ajlong *tparray = NULL;
3782
+
3783
+    ajint order  = 0;
3784
+    ajint nkeys  = 0;
3785
+    ajint keypos = 0;
3786
+    
3787
+    ajlong rblockno = 0L;
3788
+    ajlong lblockno = 0L;
3789
+
3790
+    ajlong right;
3791
+    
3792
+    ajint  i;
3793
+
3794
+    unsigned char *rootbuf = NULL;
3795
+    unsigned char *rbuf    = NULL;
3796
+    unsigned char *lbuf    = NULL;
3797
+    unsigned char *tbuf    = NULL;
3798
+    
3799
+    ajint nodetype  = 0;
3800
+    ajlong overflow = 0L;
3801
+    ajlong zero     = 0L;
3802
+    ajint rkeyno    = 0;
3803
+    ajint n         = 0;
3804
+
3805
+    ajlong lv = 0L;
3806
+    ajint  v  = 0;
3807
+
3808
+    AjPBtMem array  = NULL;    
3809
+    AjPBtMem array2 = NULL;    
3810
+    
3811
+    
3812
+    /* ajDebug("In btreeNumSplitRoot\n"); */
3813
+
3814
+    order = cache->sorder;
3815
+
3816
+    array = btreeAllocSecArray(cache);
3817
+    karray  = array->overflows;
3818
+    parray  = array->parray;
3819
+    
3820
+    array2 = btreeAllocSecArray(cache);
3821
+    tkarray  = array2->overflows;
3822
+    tparray  = array2->parray;
3823
+
3824
+
3825
+    rootpage = btreeCacheLocate(cache,cache->secrootblock);
3826
+    rootbuf = rootpage->buf;
3827
+
3828
+    nkeys = order - 1;
3829
+
3830
+    keypos = nkeys / 2;
3831
+    if(!(nkeys % 2))
3832
+	--keypos;
3833
+
3834
+
3835
+    rblockno = cache->totsize;
3836
+    rpage = ajBtreeCacheWrite(cache,rblockno);
3837
+    rpage->pageno = cache->totsize;
3838
+    cache->totsize += cache->pagesize;
3839
+    rpage->dirty = BT_LOCK;
3840
+    
3841
+    lblockno = cache->totsize;
3842
+    lpage = ajBtreeCacheWrite(cache,lblockno);
3843
+    lpage->pageno = cache->totsize;
3844
+    cache->totsize += cache->pagesize;
3845
+
3846
+    lv = rblockno;
3847
+    SBT_BLOCKNUMBER(rpage->buf,lv);
3848
+    lv = lblockno;
3849
+    SBT_BLOCKNUMBER(lpage->buf,lv);
3850
+
3851
+    /* Comment this next block out after the beta test */
3852
+    if(!cache->slevel)
3853
+    {
3854
+	fprintf(stderr,"btreeSplitRootSec: Shouldn't get here\n");
3855
+	exit(0);
3856
+	lv = zero;
3857
+	SBT_LEFT(lpage->buf,lv);
3858
+	lv = rblockno;
3859
+	SBT_RIGHT(lpage->buf,lv);
3860
+	lv = lblockno;
3861
+	SBT_LEFT(rpage->buf,lv);
3862
+	lv = zero;
3863
+	SBT_RIGHT(rpage->buf,lv);
3864
+    }
3865
+
3866
+    btreeGetNumKeys(cache,rootbuf,&karray,&parray);
3867
+
3868
+    /* Get key for root node and write new root node */
3869
+    tkarray[0] = karray[keypos];
3870
+    tparray[0] = lblockno;
3871
+    tparray[1] = rblockno;
3872
+    
3873
+
3874
+    n = 1;
3875
+    v = n;
3876
+    SBT_NKEYS(rootbuf,v);
3877
+    btreeWriteNumNode(cache,rootpage,tkarray,tparray,1);
3878
+    right = (ajlong)(cache->slevel + 1);
3879
+    SBT_RIGHT(rootbuf,right);
3880
+
3881
+    rootpage->dirty = BT_LOCK;
3882
+
3883
+    rbuf = rpage->buf;
3884
+    lbuf = lpage->buf;
3885
+    
3886
+    if(cache->slevel)
3887
+	nodetype = BT_INTERNAL;
3888
+    else
3889
+	nodetype = BT_LEAF;
3890
+
3891
+    v = nodetype;
3892
+    SBT_NODETYPE(rbuf,v);
3893
+    v = nodetype;
3894
+    SBT_NODETYPE(lbuf,v);
3895
+    lv = overflow;
3896
+    SBT_OVERFLOW(rbuf,lv);
3897
+    lv = cache->secrootblock;
3898
+    SBT_PREV(rbuf,lv);
3899
+    lv = overflow;
3900
+    SBT_OVERFLOW(lbuf,lv);
3901
+    lv = cache->secrootblock;
3902
+    SBT_PREV(lbuf,lv);
3903
+
3904
+    for(i=0;i<keypos;++i)
3905
+    {
3906
+	tkarray[i] = karray[i];
3907
+	tparray[i] = parray[i];
3908
+    }
3909
+    tparray[i] = parray[i];
3910
+
3911
+    n = i;
3912
+    v = n;
3913
+    SBT_NKEYS(lbuf,v);
3914
+    btreeWriteNumNode(cache,lpage,tkarray,tparray,i);
3915
+
3916
+    for(i=0;i<n+1;++i)
3917
+    {
3918
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
3919
+	tbuf = tpage->buf;
3920
+	lv = lblockno;
3921
+	SBT_PREV(tbuf,lv);
3922
+	tpage->dirty = BT_DIRTY;
3923
+    }
3924
+
3925
+    for(i=keypos+1;i<nkeys;++i)
3926
+    {
3927
+	tkarray[i-(keypos+1)] = karray[i];
3928
+	tparray[i-(keypos+1)] = parray[i];
3929
+    }
3930
+    tparray[i-(keypos+1)] = parray[i];
3931
+
3932
+    rkeyno = (nkeys-keypos) - 1;
3933
+    v = rkeyno;
3934
+    SBT_NKEYS(rbuf,v);
3935
+    rpage->dirty = BT_DIRTY;
3936
+    btreeWriteNumNode(cache,rpage,tkarray,tparray,rkeyno);
3937
+
3938
+    for(i=0;i<rkeyno+1;++i)
3939
+    {
3940
+	tpage = ajBtreeCacheRead(cache,tparray[i]);
3941
+	tbuf = tpage->buf;
3942
+	lv = rblockno;
3943
+	SBT_PREV(tbuf,lv);
3944
+	tpage->dirty = BT_DIRTY;
3945
+    }
3946
+
3947
+
3948
+    ++cache->slevel;
3949
+
3950
+    btreeDeallocSecArray(cache,array);
3951
+    btreeDeallocSecArray(cache,array2);
3952
+    
3953
+    return;
3954
+}
3955
+
3956
+
3957
+
3958
+
3959
+/* @funcstatic btreeNumKeyShift ********************************************
3960
+**
3961
+** Rebalance Nodes on insertion
3962
+**
3963
+** @param [u] cache [AjPBtcache] cache
3964
+** @param [u] tpage [AjPBtpage] page
3965
+**
3966
+** @return [void]
3967
+** @@
3968
+******************************************************************************/
3969
+
3970
+static void btreeNumKeyShift(AjPBtcache cache, AjPBtpage tpage)
3971
+{
3972
+    unsigned char *tbuf = NULL;
3973
+    unsigned char *pbuf = NULL;
3974
+    unsigned char *sbuf = NULL;
3975
+    unsigned char *buf  = NULL;
3976
+
3977
+    AjPBtpage ppage = NULL;
3978
+    AjPBtpage spage = NULL;
3979
+    AjPBtpage page  = NULL;
3980
+
3981
+    ajint tkeys = 0;
3982
+    ajint pkeys = 0;
3983
+    ajint skeys = 0;
3984
+    ajint order = 0;
3985
+    
3986
+    ajint i;
3987
+    
3988
+    ajlong parent  = 0L;
3989
+    
3990
+    ajlong *kTarray = NULL;
3991
+    ajlong *kParray = NULL;
3992
+    ajlong *kSarray = NULL;
3993
+    ajlong *pTarray = NULL;
3994
+    ajlong *pParray = NULL;
3995
+    ajlong *pSarray = NULL;
3996
+
3997
+    ajint pkeypos = 0;
3998
+    ajint minsize = 0;
3999
+
4000
+    ajlong lv = 0L;
4001
+
4002
+    AjPBtMem array  = NULL;    
4003
+    AjPBtMem array2 = NULL;    
4004
+    AjPBtMem array3 = NULL;    
4005
+    
4006
+    /* ajDebug("In btreeNumKeyShift\n"); */
4007
+    
4008
+    tbuf = tpage->buf;
4009
+
4010
+    GBT_PREV(tbuf,&parent);
4011
+    GBT_NKEYS(tbuf,&tkeys);
4012
+
4013
+    order = cache->sorder;
4014
+    minsize = order / 2;
4015
+    if(order % 2)
4016
+	++minsize;
4017
+
4018
+    if(tkeys <= minsize)
4019
+	return;
4020
+
4021
+    
4022
+    ppage = ajBtreeCacheRead(cache,parent);
4023
+    pbuf = ppage->buf;
4024
+    GBT_NKEYS(pbuf,&pkeys);
4025
+    
4026
+    array = btreeAllocSecArray(cache);
4027
+    kParray  = array->overflows;
4028
+    pParray  = array->parray;
4029
+    
4030
+    array2 = btreeAllocSecArray(cache);
4031
+    kSarray  = array2->overflows;
4032
+    pSarray  = array2->parray;
4033
+
4034
+    array3 = btreeAllocSecArray(cache);
4035
+    kTarray  = array3->overflows;
4036
+    pTarray  = array3->parray;
4037
+
4038
+
4039
+    btreeGetNumKeys(cache,tbuf,&kTarray,&pTarray);
4040
+    GBT_NKEYS(tbuf,&tkeys);
4041
+
4042
+
4043
+    btreeGetNumKeys(cache,pbuf,&kParray,&pParray);
4044
+    i=0;
4045
+    while(pParray[i] != tpage->pageno)
4046
+	++i;
4047
+
4048
+    if(i) /* There is another leaf to the left */
4049
+    {
4050
+	pkeypos = i-1;
4051
+	spage = ajBtreeCacheRead(cache,pParray[pkeypos]);
4052
+	sbuf = spage->buf;
4053
+	GBT_NKEYS(sbuf,&skeys);
4054
+	
4055
+    }
4056
+
4057
+    if(i && skeys != order-1) /* There is space in the left leaf */
4058
+    {
4059
+	if(skeys)
4060
+	    btreeGetNumKeys(cache,sbuf,&kSarray,&pSarray);
4061
+
4062
+	kSarray[skeys] = kParray[pkeypos];
4063
+	pSarray[skeys+1] = pTarray[0];
4064
+	++skeys;
4065
+	--tkeys;
4066
+	kParray[pkeypos] = kTarray[0];
4067
+	for(i=0;i<tkeys;++i)
4068
+	{
4069
+	    kTarray[i] = kTarray[i+1];
4070
+	    pTarray[i] = pTarray[i+1];
4071
+	}
4072
+	pTarray[i] = pTarray[i+1];
4073
+	pTarray[i+1] = 0L;
4074
+	
4075
+	btreeWriteNumNode(cache,spage,kSarray,pSarray,skeys);
4076
+	btreeWriteNumNode(cache,tpage,kTarray,pTarray,tkeys);
4077
+	btreeWriteNumNode(cache,ppage,kParray,pParray,pkeys);
4078
+	if(!ppage->pageno)
4079
+	    ppage->dirty = BT_LOCK;
4080
+
4081
+	page = ajBtreeCacheRead(cache,pSarray[skeys]);
4082
+	buf = page->buf;
4083
+	lv = spage->pageno;
4084
+	SBT_PREV(buf,lv);
4085
+	page->dirty = BT_DIRTY;
4086
+
4087
+
4088
+	btreeDeallocSecArray(cache,array);
4089
+	btreeDeallocSecArray(cache,array2);
4090
+	btreeDeallocSecArray(cache,array3);
4091
+
4092
+	return;
4093
+    }
4094
+
4095
+
4096
+
4097
+    if(i != pkeys)	/* There is a right node */
4098
+    {
4099
+	pkeypos = i;
4100
+	spage = ajBtreeCacheRead(cache,pParray[pkeypos+1]);
4101
+	sbuf = spage->buf;
4102
+	GBT_NKEYS(sbuf,&skeys);
4103
+    }
4104
+
4105
+
4106
+    if(i != pkeys && skeys != order-1) /* Space in the right node */
4107
+    {
4108
+	if(skeys)
4109
+	    btreeGetNumKeys(cache,sbuf,&kSarray,&pSarray);
4110
+
4111
+	pSarray[skeys+1] = pSarray[skeys];
4112
+	for(i=skeys-1;i>-1;--i)
4113
+	{
4114
+	    kSarray[i+1] = kSarray[i];
4115
+	    pSarray[i+1] = pSarray[i];
4116
+	}
4117
+	kSarray[0] = kParray[pkeypos];
4118
+	pSarray[0] = pTarray[tkeys];
4119
+	kParray[pkeypos] = kTarray[tkeys-1];
4120
+	++skeys;
4121
+	--tkeys;
4122
+	pTarray[tkeys+1] = 0L;
4123
+	
4124
+	btreeWriteNumNode(cache,spage,kSarray,pSarray,skeys);
4125
+	btreeWriteNumNode(cache,tpage,kTarray,pTarray,tkeys);
4126
+	btreeWriteNumNode(cache,ppage,kParray,pParray,pkeys);
4127
+	if(!ppage->pageno)
4128
+	    ppage->dirty = BT_LOCK;
4129
+
4130
+	page = ajBtreeCacheRead(cache,pSarray[0]);
4131
+	buf = page->buf;
4132
+	lv = spage->pageno;
4133
+	SBT_PREV(buf,lv);
4134
+	page->dirty = BT_DIRTY;
4135
+
4136
+	btreeDeallocSecArray(cache,array);
4137
+	btreeDeallocSecArray(cache,array2);
4138
+	btreeDeallocSecArray(cache,array3);
4139
+
4140
+	return;
4141
+    }
4142
+
4143
+
4144
+    btreeDeallocSecArray(cache,array);
4145
+    btreeDeallocSecArray(cache,array2);
4146
+    btreeDeallocSecArray(cache,array3);
4147
+
4148
+    return;
4149
+}
4150
+
4151
+
4152
+
4153
+
4154
+/* @funcstatic btreeNumInsertShift ********************************************
4155
+**
4156
+** Rebalance buckets on insertion
4157
+**
4158
+** @param [u] cache [AjPBtcache] cache
4159
+** @param [u] retpage [AjPBtpage*] page
4160
+** @param [r] key [const ajlong] key
4161
+**
4162
+** @return [ajlong] bucket block or 0L if shift not posible 
4163
+** @@
4164
+******************************************************************************/
4165
+
4166
+static ajlong btreeNumInsertShift(AjPBtcache cache, AjPBtpage *retpage,
4167
+				  ajlong key)
4168
+{
4169
+    unsigned char *tbuf = NULL;
4170
+    unsigned char *pbuf = NULL;
4171
+    unsigned char *sbuf = NULL;
4172
+
4173
+    AjPBtpage ppage = NULL;
4174
+    AjPBtpage spage = NULL;
4175
+    AjPBtpage tpage = NULL;
4176
+
4177
+    ajint tkeys = 0;
4178
+    ajint pkeys = 0;
4179
+    ajint skeys = 0;
4180
+    ajint order = 0;
4181
+    
4182
+    ajint i;
4183
+    ajint n;
4184
+    
4185
+    ajlong parent  = 0L;
4186
+    ajlong blockno = 0L;
4187
+    
4188
+    ajlong *kTarray = NULL;
4189
+    ajlong *kParray = NULL;
4190
+    ajlong *kSarray = NULL;
4191
+    ajlong *pTarray = NULL;
4192
+    ajlong *pParray = NULL;
4193
+    ajlong *pSarray = NULL;
4194
+
4195
+    ajlong *karray = NULL;
4196
+    ajlong *parray = NULL;
4197
+
4198
+    ajint ppos    = 0;
4199
+    ajint pkeypos = 0;
4200
+    ajint minsize = 0;
4201
+
4202
+    AjPBtMem array  = NULL;    
4203
+    AjPBtMem array2 = NULL;    
4204
+    AjPBtMem array3 = NULL;    
4205
+
4206
+
4207
+    
4208
+    /* ajDebug("In btreeNumInsertShift\n"); */
4209
+
4210
+
4211
+    tpage = *retpage;
4212
+
4213
+    tbuf = tpage->buf;
4214
+
4215
+    GBT_PREV(tbuf,&parent);
4216
+    GBT_NKEYS(tbuf,&tkeys);
4217
+
4218
+
4219
+    order = cache->sorder;
4220
+    minsize = order / 2;
4221
+    if(order % 2)
4222
+	++minsize;
4223
+
4224
+    if(tkeys <= minsize)
4225
+	return 0L;
4226
+
4227
+    ppage = ajBtreeCacheRead(cache,parent);
4228
+
4229
+
4230
+    
4231
+    pbuf = ppage->buf;
4232
+    GBT_NKEYS(pbuf,&pkeys);
4233
+
4234
+    
4235
+    array = btreeAllocSecArray(cache);
4236
+    kParray  = array->overflows;
4237
+    pParray  = array->parray;
4238
+    
4239
+    array2 = btreeAllocSecArray(cache);
4240
+    kSarray  = array2->overflows;
4241
+    pSarray  = array2->parray;
4242
+
4243
+    array3 = btreeAllocSecArray(cache);
4244
+    kTarray  = array3->overflows;
4245
+    pTarray  = array3->parray;
4246
+
4247
+
4248
+    btreeGetNumKeys(cache,pbuf,&kParray,&pParray);
4249
+
4250
+    i=0;
4251
+    while(i!=pkeys && key >= kParray[i])
4252
+	++i;
4253
+    pkeypos = i;
4254
+    
4255
+    if(i==pkeys)
4256
+    {
4257
+	if(key < kParray[i-1])
4258
+	    ppos = i-1;
4259
+	else
4260
+	    ppos = i;
4261
+    }
4262
+    else
4263
+	ppos = i;
4264
+
4265
+    
4266
+    if(ppos) /* There is another leaf to the left */
4267
+    {
4268
+	spage = ajBtreeCacheRead(cache,pParray[ppos-1]);
4269
+	sbuf = spage->buf;
4270
+	GBT_NKEYS(sbuf,&skeys);
4271
+    }
4272
+
4273
+    if(i && skeys != order-1) /* There is space in the left leaf */
4274
+    {
4275
+	/* ajDebug("Left shift\n"); */
4276
+	btreeGetNumKeys(cache,tbuf,&kTarray,&pTarray);
4277
+	if(skeys)
4278
+	    btreeGetNumKeys(cache,sbuf,&kSarray,&pSarray);
4279
+
4280
+	i = 0;
4281
+	while(pParray[i] != tpage->pageno)
4282
+	    ++i;
4283
+	--i;
4284
+
4285
+	pkeypos = i;
4286
+
4287
+	kSarray[skeys] = kParray[pkeypos];
4288
+	pSarray[skeys+1] = pTarray[0];
4289
+	++skeys;
4290
+	--tkeys;
4291
+	kParray[pkeypos] = kTarray[0];
4292
+	for(i=0;i<tkeys;++i)
4293
+	{
4294
+	    kTarray[i] = kTarray[i+1];
4295
+	    pTarray[i] = pTarray[i+1];
4296
+	}
4297
+	pTarray[i] = pTarray[i+1];
4298
+	pTarray[i+1] = 0L;
4299
+	
4300
+	btreeWriteNumNode(cache,spage,kSarray,pSarray,skeys);
4301
+	btreeWriteNumNode(cache,tpage,kTarray,pTarray,tkeys);
4302
+	btreeWriteNumNode(cache,ppage,kParray,pParray,pkeys);
4303
+	if(!ppage->pageno)
4304
+	    ppage->dirty = BT_LOCK;
4305
+
4306
+	i = 0;
4307
+	while(i!=pkeys && key >= kParray[i])
4308
+	    ++i;
4309
+	if(i==pkeys)
4310
+	{
4311
+	    if(key < kParray[i-1])
4312
+		blockno = pParray[i-1];
4313
+	    else
4314
+		blockno = pParray[i];
4315
+	}
4316
+	else
4317
+	    blockno = pParray[i];
4318
+
4319
+	if(blockno == spage->pageno)
4320
+	{
4321
+	    *retpage = spage;
4322
+	    karray = kSarray;
4323
+	    parray = pSarray;
4324
+	    n = skeys;
4325
+	}
4326
+	else
4327
+	{
4328
+	    karray = kTarray;
4329
+	    parray = pTarray;
4330
+	    n = tkeys;
4331
+	}
4332
+	
4333
+
4334
+	i = 0;
4335
+	while(i!=n && key >= karray[i])
4336
+	    ++i;
4337
+	if(i==n)
4338
+	{
4339
+	    if(key < karray[i-1])
4340
+		blockno = parray[i-1];
4341
+	    else
4342
+		blockno = parray[i];
4343
+	}
4344
+	else
4345
+	    blockno = parray[i];
4346
+
4347
+	btreeDeallocSecArray(cache,array);
4348
+	btreeDeallocSecArray(cache,array2);
4349
+	btreeDeallocSecArray(cache,array3);
4350
+
4351
+	/* ajDebug("... returns blockno (a) %Ld\n",blockno); */
4352
+
4353
+	return blockno;
4354
+    }
4355
+    
4356
+
4357
+    if(ppos != pkeys)	/* There is a right node */
4358
+    {
4359
+	spage = ajBtreeCacheRead(cache,pParray[ppos+1]);
4360
+	sbuf = spage->buf;
4361
+	GBT_NKEYS(sbuf,&skeys);
4362
+    }
4363
+
4364
+
4365
+    /* Space in the right leaf */
4366
+    if(ppos != pkeys && skeys != order-1)
4367
+    {
4368
+	/* ajDebug("Right shift\n"); */
4369
+	btreeGetNumKeys(cache,tbuf,&kTarray,&pTarray);
4370
+	btreeGetNumKeys(cache,sbuf,&kSarray,&pSarray);
4371
+
4372
+	i = 0;
4373
+	while(pParray[i] != tpage->pageno)
4374
+	    ++i;
4375
+	pkeypos = i;
4376
+	
4377
+	pSarray[skeys+1] = pSarray[skeys];
4378
+	for(i=skeys-1;i>-1;--i)
4379
+	{
4380
+	    kSarray[i+1] = kSarray[i];
4381
+	    pSarray[i+1] = pSarray[i];
4382
+	}
4383
+	kSarray[0] = kParray[pkeypos];
4384
+	pSarray[0] = pTarray[tkeys];
4385
+	kParray[pkeypos] = kTarray[tkeys-1];
4386
+	++skeys;
4387
+	--tkeys;
4388
+	pTarray[tkeys+1] = 0L;
4389
+	
4390
+	btreeWriteNumNode(cache,spage,kSarray,pSarray,skeys);
4391
+	btreeWriteNumNode(cache,tpage,kTarray,pTarray,tkeys);
4392
+	btreeWriteNumNode(cache,ppage,kParray,pParray,pkeys);
4393
+	if(!ppage->pageno)
4394
+	    ppage->dirty = BT_LOCK;
4395
+
4396
+	i = 0;
4397
+	while(i!=pkeys && key >= kParray[i])
4398
+	    ++i;
4399
+	if(i==pkeys)
4400
+	{
4401
+	    if(key < kParray[i-1])
4402
+		blockno = pParray[i-1];
4403
+	    else
4404
+		blockno = pParray[i];
4405
+	}
4406
+	else
4407
+	    blockno = pParray[i];
4408
+
4409
+	if(blockno == spage->pageno)
4410
+	{
4411
+	    *retpage = spage;
4412
+	    karray = kSarray;
4413
+	    parray = pSarray;
4414
+	    n = skeys;
4415
+	}
4416
+	else
4417
+	{
4418
+	    karray = kTarray;
4419
+	    parray = pTarray;
4420
+	    n = tkeys;
4421
+	}
4422
+	
4423
+	i = 0;
4424
+	while(i!=n && key >= karray[i])
4425
+	    ++i;
4426
+	if(i==n)
4427
+	{
4428
+	    if(key < karray[i-1])
4429
+		blockno = parray[i-1];
4430
+	    else
4431
+		blockno = parray[i];
4432
+	}
4433
+	else
4434
+	    blockno = parray[i];
4435
+
4436
+	btreeDeallocSecArray(cache,array);
4437
+	btreeDeallocSecArray(cache,array2);
4438
+	btreeDeallocSecArray(cache,array3);
4439
+
4440
+	/* ajDebug("... returns blockno (b) %Ld\n",blockno); */
4441
+	
4442
+	return blockno;
4443
+    }
4444
+
4445
+
4446
+    btreeDeallocSecArray(cache,array);
4447
+    btreeDeallocSecArray(cache,array2);
4448
+    btreeDeallocSecArray(cache,array3);
4449
+
4450
+    /* ajDebug("... returns 0L\n"); */
4451
+
4452
+    return 0L;
4453
+}
4454
+
4455
+
4456
+
4457
+
4458
+void ajBtreeInsertNum(AjPBtcache cache, AjPBtNumId num, AjPBtpage page)
4459
+{
4460
+    unsigned char *buf = NULL;
4461
+    ajint order;
4462
+    AjPBtMem array = NULL;
4463
+    ajlong key;
4464
+    AjPBtpage spage  = NULL;
4465
+    AjPBtpage parent = NULL;
4466
+    ajint nkeys = 0;
4467
+    ajint nodetype = 0;
4468
+    ajlong *karray = NULL;
4469
+    ajlong *parray = NULL;
4470
+    AjPNumBucket lbucket = NULL;
4471
+    AjPNumBucket rbucket = NULL;
4472
+    ajlong lblockno;
4473
+    ajlong rblockno;
4474
+    ajlong blockno;
4475
+    ajlong shift;
4476
+    ajint n;
4477
+    ajint i;
4478
+
4479
+    /* ajDebug("In ajBtreeInsertNum\n"); */
4480
+
4481
+    key = num->offset;
4482
+
4483
+    spage = ajBtreeNumFindInsert(cache,key);
4484
+    buf = spage->buf;
4485
+
4486
+    GBT_NKEYS(buf,&nkeys);
4487
+    GBT_NODETYPE(buf,&nodetype);
4488
+
4489
+    order = cache->sorder;
4490
+
4491
+    array = btreeAllocSecArray(cache);
4492
+    karray = array->overflows;
4493
+    parray = array->parray;
4494
+
4495
+    if(!nkeys)
4496
+    {
4497
+	lbucket = btreeNumBucketNew(0);
4498
+	rbucket = btreeNumBucketNew(0);
4499
+
4500
+	lblockno = cache->totsize;
4501
+	btreeWriteNumBucket(cache,lbucket,lblockno);
4502
+	rblockno = cache->totsize;
4503
+	btreeWriteNumBucket(cache,rbucket,rblockno);
4504
+
4505
+	parray[0] = lblockno;
4506
+	parray[1] = rblockno;
4507
+	karray[0] = key;
4508
+
4509
+	btreeWriteNumNode(cache,spage,karray,parray,1);
4510
+
4511
+	btreeNumBucketDel(&lbucket);
4512
+	btreeNumBucketDel(&rbucket);
4513
+
4514
+	btreeAddToNumBucket(cache,rblockno,num);
4515
+
4516
+	btreeDeallocSecArray(cache,array);
4517
+
4518
+	return;
4519
+    }
4520
+
4521
+
4522
+    btreeGetNumKeys(cache,buf,&karray,&parray);
4523
+    i=0;
4524
+    while(i != nkeys && key >= karray[i])
4525
+	++i;
4526
+    if(i==nkeys)
4527
+    {
4528
+	if(key < karray[i-1])
4529
+	    blockno = parray[i-1];
4530
+	else
4531
+	    blockno = parray[i];
4532
+    }
4533
+    else
4534
+	blockno = parray[i];
4535
+
4536
+    if(nodetype != BT_ROOT)
4537
+	if((shift = btreeNumInsertShift(cache,&spage,key)))
4538
+	    blockno = shift;
4539
+
4540
+
4541
+    buf = spage->buf;
4542
+    n = btreeNumInNumBucket(cache,blockno);
4543
+
4544
+    if(n == cache->snperbucket)
4545
+    {
4546
+	if(btreeReorderNumBuckets(cache,spage))
4547
+	{
4548
+	    GBT_NKEYS(buf,&nkeys);
4549
+	    btreeGetNumKeys(cache,buf,&karray,&parray);
4550
+	    i=0;
4551
+	    while(i != nkeys && key >= karray[i])
4552
+		++i;
4553
+	    if(i==nkeys)
4554
+	    {
4555
+		if(key < karray[i-1])
4556
+		    blockno = parray[i-1];
4557
+		else
4558
+		    blockno = parray[i];
4559
+	    }
4560
+	    else
4561
+		blockno = parray[i];
4562
+	}
4563
+	else
4564
+	{
4565
+	    parent = btreeNumSplitLeaf(cache,spage);
4566
+	    spage = ajBtreeNumFindInsert(cache,key);
4567
+	    buf = spage->buf;
4568
+
4569
+	    btreeGetNumKeys(cache,buf,&karray,&parray);
4570
+	    GBT_NKEYS(buf,&nkeys);
4571
+	
4572
+	    i=0;
4573
+	    while(i != nkeys && key >= karray[i])
4574
+		++i;
4575
+	    if(i==nkeys)
4576
+	    {
4577
+		if(key < karray[i-1])
4578
+		    blockno = parray[i-1];
4579
+		else
4580
+		    blockno = parray[i];
4581
+	    }
4582
+	    else
4583
+		blockno = parray[i];
4584
+	}
4585
+    }
4586
+
4587
+    btreeAddToNumBucket(cache,blockno,num);
4588
+
4589
+    btreeDeallocSecArray(cache,array);
4590
+
4591
+    ++cache->count;
4592
+
4593
+    return;
4594
+}
4595
+
4596
+
4597
+
4598
+
4599
+/* @funcstatic btreeNumSplitLeaf *********************************************
4600
+**
4601
+** Split a leaf and propagate up if necessary
4602
+**
4603
+** @param [u] cache [AjPBtcache] cache
4604
+** @param [u] spage [AjPBtpage] page
4605
+**
4606
+** @return [AjPBtpage] pointer to a parent page
4607
+** @@
4608
+******************************************************************************/
4609
+
4610
+static AjPBtpage btreeNumSplitLeaf(AjPBtcache cache, AjPBtpage spage)
4611
+{
4612
+    ajint nkeys     = 0;
4613
+    ajint order     = 0;
4614
+    ajint totalkeys = 0;
4615
+    ajint bentries  = 0;
4616
+    ajint keylimit  = 0;
4617
+    ajint nodetype  = 0;
4618
+
4619
+    ajint rootnodetype = 0;
4620
+    
4621
+    ajint i;
4622
+    ajint j;
4623
+    
4624
+    AjPBtpage lpage = NULL;
4625
+    AjPBtpage rpage = NULL;
4626
+    AjPBtpage page  = NULL;
4627
+    
4628
+    ajlong mediankey  = 0L;
4629
+    ajlong mediangtr  = 0L;
4630
+    ajlong medianless = 0L;
4631
+
4632
+    AjPBtNumId bid = NULL;
4633
+
4634
+    unsigned char *buf  = NULL;
4635
+    unsigned char *lbuf = NULL;
4636
+    unsigned char *rbuf = NULL;
4637
+
4638
+    AjPList idlist = NULL;
4639
+
4640
+    AjPNumBucket *buckets = NULL;
4641
+    AjPNumBucket cbucket  = NULL;
4642
+    
4643
+    ajlong *karray = NULL;
4644
+    ajlong *parray = NULL;
4645
+    
4646
+    ajint keypos = 0;
4647
+    ajint lno    = 0;
4648
+    ajint rno    = 0;
4649
+
4650
+    ajint bucketlimit   = 0;
4651
+    ajint maxnperbucket = 0;
4652
+    ajint nperbucket    = 0;
4653
+    ajint bucketn       = 0;
4654
+    ajint count         = 0;
4655
+    
4656
+    ajlong lblockno = 0L;
4657
+    ajlong rblockno = 0L;
4658
+    ajlong overflow = 0L;
4659
+    ajlong prevsave = 0L;
4660
+    
4661
+    ajlong zero = 0L;
4662
+    ajlong join = 0L;
4663
+    
4664
+    ajlong lv = 0L;
4665
+    ajint  v  = 0;
4666
+
4667
+    AjPBtMem array = NULL;
4668
+    
4669
+    
4670
+    /* ajDebug("In btreeNumSplitLeaf\n"); */
4671
+
4672
+    order = cache->sorder;
4673
+    nperbucket = cache->snperbucket;
4674
+
4675
+    array = btreeAllocSecArray(cache);
4676
+    karray = array->overflows;
4677
+    parray = array->parray;
4678
+
4679
+    buf = spage->buf;
4680
+    lbuf = buf;
4681
+
4682
+    GBT_NKEYS(buf,&nkeys);
4683
+    GBT_NODETYPE(buf,&rootnodetype);
4684
+
4685
+    if(rootnodetype == BT_ROOT)
4686
+    {
4687
+	/* ajDebug("Root leaf splitting\n"); */
4688
+	lblockno = cache->totsize;
4689
+	lpage = ajBtreeCacheWrite(cache,lblockno);
4690
+	lpage->pageno = cache->totsize;
4691
+	cache->totsize += cache->pagesize;
4692
+	lbuf = lpage->buf;
4693
+	lv = cache->secrootblock;
4694
+	SBT_PREV(lbuf,lv);
4695
+    }
4696
+    else
4697
+    {
4698
+	lblockno = spage->pageno;
4699
+	lpage = spage;
4700
+    }
4701
+
4702
+    lpage->dirty = BT_LOCK;
4703
+
4704
+    rblockno = cache->totsize;
4705
+    rpage = ajBtreeCacheWrite(cache,rblockno);
4706
+    rpage->pageno = cache->totsize;
4707
+    cache->totsize += cache->pagesize;
4708
+    rbuf = rpage->buf;
4709
+    rpage->dirty = BT_LOCK;
4710
+
4711
+    if(rootnodetype == BT_ROOT)
4712
+    {
4713
+	lv = zero;
4714
+	SBT_RIGHT(rbuf,lv);
4715
+	lv = zero;
4716
+	SBT_LEFT(lbuf,lv);
4717
+    }
4718
+    else
4719
+    {
4720
+	GBT_RIGHT(lbuf,&join);
4721
+	lv = join;
4722
+	SBT_RIGHT(rbuf,lv);
4723
+    }
4724
+    lv = lblockno;
4725
+    SBT_LEFT(rbuf,lv);
4726
+    lv = rblockno;
4727
+    SBT_RIGHT(lbuf,lv);
4728
+
4729
+
4730
+    btreeGetNumKeys(cache,buf,&karray,&parray);
4731
+
4732
+
4733
+    keylimit = nkeys+1;
4734
+    AJCNEW0(buckets,keylimit);
4735
+    for(i=0;i<keylimit;++i)
4736
+	buckets[i] = btreeReadNumBucket(cache,parray[i]);
4737
+
4738
+    idlist = ajListNew();
4739
+    for(i=0;i<keylimit;++i)
4740
+    {
4741
+	bentries = buckets[i]->Nentries;
4742
+	for(j=0;j<bentries;++j)
4743
+	    ajListPush(idlist,(void *)buckets[i]->NumId[j]);
4744
+	AJFREE(buckets[i]->NumId);
4745
+	AJFREE(buckets[i]);
4746
+    }
4747
+
4748
+
4749
+
4750
+    ajListSort(idlist,btreeNumIdCompare);
4751
+    AJFREE(buckets);
4752
+
4753
+    totalkeys = ajListLength(idlist);
4754
+
4755
+    keypos = totalkeys / 2;
4756
+
4757
+    lno = keypos;
4758
+    rno = totalkeys - lno;
4759
+
4760
+    maxnperbucket = nperbucket >> 1;
4761
+    ++maxnperbucket;
4762
+
4763
+    cbucket = btreeNumBucketNew(maxnperbucket);
4764
+
4765
+    bucketn = lno / maxnperbucket;
4766
+    if(lno % maxnperbucket)
4767
+	++bucketn;
4768
+    bucketlimit = bucketn - 1;
4769
+
4770
+
4771
+    count = 0;
4772
+    for(i=0;i<bucketlimit;++i)
4773
+    {
4774
+	cbucket->Nentries = 0;
4775
+	for(j=0;j<maxnperbucket;++j)
4776
+	{
4777
+	    ajListPop(idlist,(void **)&bid);
4778
+
4779
+	    cbucket->NumId[j]->offset    = bid->offset;
4780
+	    cbucket->NumId[j]->refoffset = bid->refoffset;
4781
+	    cbucket->NumId[j]->dbno      = bid->dbno;
4782
+	    
4783
+	    ++count;
4784
+	    ++cbucket->Nentries;
4785
+	    AJFREE(bid);
4786
+	}
4787
+	ajListPeek(idlist,(void **)&bid);
4788
+
4789
+	karray[i] = bid->offset;
4790
+
4791
+	if(!parray[i])
4792
+	    parray[i] = cache->totsize;
4793
+	btreeWriteNumBucket(cache,cbucket,parray[i]);
4794
+    }
4795
+
4796
+    cbucket->Nentries = 0;
4797
+
4798
+    j = 0;
4799
+    while(count != lno)
4800
+    {
4801
+	ajListPop(idlist,(void **)&bid);
4802
+
4803
+	cbucket->NumId[j]->offset    = bid->offset;
4804
+	cbucket->NumId[j]->refoffset = bid->refoffset;
4805
+	cbucket->NumId[j]->dbno      = bid->dbno;
4806
+
4807
+	++j;
4808
+	++count;
4809
+
4810
+
4811
+	++cbucket->Nentries;
4812
+	AJFREE(bid);
4813
+    }
4814
+
4815
+    if(!parray[i])
4816
+	parray[i] = cache->totsize;
4817
+    btreeWriteNumBucket(cache,cbucket,parray[i]);
4818
+
4819
+    nkeys = bucketn - 1;
4820
+    v = nkeys;
4821
+    SBT_NKEYS(lbuf,v);
4822
+    nodetype = BT_LEAF;
4823
+    v = nodetype;
4824
+    SBT_NODETYPE(lbuf,v);
4825
+    GBT_PREV(lbuf,&prevsave);
4826
+    lpage->dirty = BT_DIRTY;
4827
+    btreeWriteNumNode(cache,lpage,karray,parray,nkeys);
4828
+
4829
+    ajListPeek(idlist,(void **)&bid);
4830
+    mediankey = bid->offset;
4831
+
4832
+    bucketn = rno / maxnperbucket;
4833
+    if(rno % maxnperbucket)
4834
+	++bucketn;
4835
+    bucketlimit = bucketn - 1;
4836
+
4837
+    for(i=0;i<bucketlimit;++i)
4838
+    {
4839
+	cbucket->Nentries = 0;
4840
+	for(j=0;j<maxnperbucket;++j)
4841
+	{
4842
+	    ajListPop(idlist,(void **)&bid);
4843
+	    
4844
+	    cbucket->NumId[j]->offset    = bid->offset;
4845
+	    cbucket->NumId[j]->refoffset = bid->refoffset;
4846
+	    cbucket->NumId[j]->dbno      = bid->dbno;
4847
+	    
4848
+	    ++cbucket->Nentries;
4849
+	    AJFREE(bid);
4850
+	}
4851
+
4852
+	ajListPeek(idlist,(void **)&bid);
4853
+	karray[i] = bid->offset;
4854
+
4855
+	parray[i] = cache->totsize;
4856
+	btreeWriteNumBucket(cache,cbucket,parray[i]);
4857
+    }
4858
+
4859
+    cbucket->Nentries = 0;
4860
+
4861
+    j = 0;
4862
+    while(ajListPop(idlist,(void**)&bid))
4863
+    {
4864
+	cbucket->NumId[j]->offset    = bid->offset;
4865
+	cbucket->NumId[j]->refoffset = bid->refoffset;
4866
+	cbucket->NumId[j]->dbno      = bid->dbno;
4867
+	++j;
4868
+
4869
+
4870
+	++cbucket->Nentries;
4871
+	AJFREE(bid);
4872
+    }
4873
+    
4874
+    parray[i] = cache->totsize;
4875
+    btreeWriteNumBucket(cache,cbucket,parray[i]);
4876
+
4877
+    nkeys = bucketn - 1;
4878
+
4879
+    v = nkeys;
4880
+    SBT_NKEYS(rbuf,v);
4881
+    nodetype = BT_LEAF;
4882
+    v = nodetype;
4883
+    SBT_NODETYPE(rbuf,v);
4884
+    lv = prevsave;
4885
+    SBT_PREV(rbuf,lv);
4886
+    lv = overflow;
4887
+    SBT_OVERFLOW(rbuf,lv);
4888
+    
4889
+    btreeWriteNumNode(cache,rpage,karray,parray,nkeys);
4890
+    rpage->dirty = BT_DIRTY;
4891
+
4892
+    cbucket->Nentries = maxnperbucket;
4893
+    btreeNumBucketDel(&cbucket);
4894
+    ajListDel(&idlist);
4895
+
4896
+
4897
+
4898
+    medianless = lblockno;
4899
+    mediangtr  = rblockno;
4900
+
4901
+
4902
+    if(rootnodetype == BT_ROOT)
4903
+    {
4904
+	karray[0] = mediankey;
4905
+	parray[0]=lblockno;
4906
+	parray[1]=rblockno;
4907
+	nkeys = 1;
4908
+	spage->dirty = BT_DIRTY;
4909
+	btreeWriteNumNode(cache,spage,karray,parray,nkeys);	
4910
+
4911
+	++cache->slevel;
4912
+	lv = cache->slevel;
4913
+	SBT_RIGHT(buf,lv);
4914
+	spage->dirty = BT_LOCK;
4915
+
4916
+	btreeDeallocSecArray(cache,array);
4917
+
4918
+	return spage;
4919
+    }
4920
+
4921
+    btreeDeallocSecArray(cache,array);
4922
+
4923
+
4924
+    page = ajBtreeCacheRead(cache,prevsave);
4925
+    btreeNumInsertKey(cache,page,mediankey,medianless,mediangtr);
4926
+
4927
+
4928
+    page = ajBtreeCacheRead(cache,prevsave);
4929
+
4930
+    return page;
4931
+}
4932
+
4933
+
4934
+
4935
+
4936
+/* @func ajBtreeFreePriArray *******************************************
4937
+**
4938
+** Free karray and parray arrays for a primary key
4939
+**
4940
+** @param [rw] cache [AjPBtcache] cache
4941
+**
4942
+** @return [void]
4943
+** @@
4944
+******************************************************************************/
4945
+
4946
+void ajBtreeFreePriArray(AjPBtcache cache)
4947
+{
4948
+    AjPBtMem p;
4949
+    AjPBtMem next;
4950
+    ajint i;
4951
+
4952
+    /* ajDebug("In ajBtreeFreePriArray\n"); */
4953
+    
4954
+    if(!cache->bmem)
4955
+	return;
4956
+
4957
+    p = cache->bmem;
4958
+    next = p->next;
4959
+    
4960
+    while(next)
4961
+    {
4962
+	AJFREE(p->parray);
4963
+	AJFREE(p->overflows);
4964
+	for(i=0;i<cache->order;++i)
4965
+	    ajStrDel(&p->karray[i]);
4966
+	AJFREE(p->karray);
4967
+	AJFREE(p);
4968
+	p = next;
4969
+	next = p->next;
4970
+    }
4971
+    
4972
+
4973
+    AJFREE(p->parray);
4974
+    AJFREE(p->overflows);
4975
+    for(i=0;i<cache->order;++i)
4976
+	ajStrDel(&p->karray[i]);
4977
+    AJFREE(p->karray);
4978
+    AJFREE(p);
4979
+    
4980
+    cache->bmem = NULL;
4981
+    cache->tmem = NULL;
4982
+
4983
+    return;
4984
+}
4985
+
4986
+
4987
+
4988
+
4989
+/* @func ajBtreeFreeSecArray *******************************************
4990
+**
4991
+** Free karray and parray arrays for a secondary key
4992
+**
4993
+** @param [rw] cache [AjPBtcache] cache
4994
+**
4995
+** @return [void]
4996
+** @@
4997
+******************************************************************************/
4998
+
4999
+void ajBtreeFreeSecArray(AjPBtcache cache)
5000
+{
5001
+    AjPBtMem p;
5002
+    AjPBtMem next;
5003
+    ajint i;
5004
+
5005
+    /* ajDebug("In ajBtreeFreeSecArray\n"); */
5006
+    
5007
+    if(!cache->bsmem)
5008
+	return;
5009
+
5010
+    p = cache->bsmem;
5011
+    next = p->next;
5012
+    
5013
+    while(next)
5014
+    {
5015
+	AJFREE(p->parray);
5016
+	AJFREE(p->overflows);
5017
+	for(i=0;i<cache->sorder;++i)
5018
+	    ajStrDel(&p->karray[i]);
5019
+	AJFREE(p->karray);
5020
+	AJFREE(p);
5021
+	
5022
+	p = next;
5023
+	next = p->next;
5024
+    }
5025
+    
5026
+
5027
+    AJFREE(p->parray);
5028
+    AJFREE(p->overflows);
5029
+    for(i=0;i<cache->sorder;++i)
5030
+	ajStrDel(&p->karray[i]);
5031
+    AJFREE(p->karray);
5032
+    AJFREE(p);
5033
+
5034
+    cache->bsmem = NULL;
5035
+    cache->tsmem = NULL;
5036
+
5037
+    return;
5038
+}
5039
+
5040
+
5041
+
5042
+
5043
+/* @func ajBtreeHybLeafList ********************************************
5044
+**
5045
+** Read the leaves of a secondary hybrid tree
5046
+**
5047
+** @param [u] cache [AjPBtcache] cache
5048
+** @param [r] rootblock [ajlong] root page of secondary tree
5049
+** @param [r] idname [AjPStr] id name
5050
+** @param [r] list [AjPList] list to add BtIDs to
5051
+**
5052
+** @return [void]
5053
+** @@
5054
+******************************************************************************/
5055
+
5056
+void ajBtreeHybLeafList(AjPBtcache cache, ajlong rootblock, AjPStr idname,
5057
+			AjPList list)
5058
+{
5059
+    AjPBtId id = NULL;
5060
+    
5061
+    ajint order;
5062
+    ajlong *karray;
5063
+    ajlong *parray;
5064
+    AjPBtpage page;
5065
+    unsigned char *buf;
5066
+    ajint nodetype;
5067
+    ajint i;
5068
+    ajint j;
5069
+    ajlong level = 0L;
5070
+    
5071
+    AjPNumBucket bucket;
5072
+    ajint nkeys;
5073
+    ajlong right;
5074
+    AjPBtMem array = NULL;
5075
+
5076
+    order = cache->sorder;
5077
+
5078
+    array = btreeAllocSecArray(cache);
5079
+    karray = array->overflows;
5080
+    parray = array->parray;
5081
+
5082
+    page = ajBtreeCacheRead(cache, rootblock);
5083
+    buf = page->buf;
5084
+
5085
+    GBT_RIGHT(buf,&level);
5086
+    cache->slevel = (ajint) level;
5087
+
5088
+    btreeGetNumKeys(cache,buf,&karray,&parray);
5089
+    GBT_NODETYPE(buf,&nodetype);
5090
+
5091
+    while(nodetype != BT_LEAF && cache->slevel != 0)
5092
+    {
5093
+	page = ajBtreeCacheRead(cache,parray[0]);
5094
+	buf = page->buf;
5095
+	btreeGetNumKeys(cache,buf,&karray,&parray);
5096
+	GBT_NODETYPE(buf,&nodetype);
5097
+    }
5098
+
5099
+    do
5100
+    {
5101
+	GBT_NKEYS(buf,&nkeys);
5102
+	for(i=0;i<nkeys+1;++i)
5103
+	{
5104
+	    bucket = btreeReadNumBucket(cache,parray[i]);
5105
+	    for(j=0;j<bucket->Nentries;++j)
5106
+	    {
5107
+		id = ajBtreeIdNew();
5108
+		ajStrAssS(&id->id,idname);
5109
+		id->offset = bucket->NumId[j]->offset;
5110
+		id->refoffset = bucket->NumId[j]->refoffset;
5111
+		id->dbno = bucket->NumId[j]->dbno;
5112
+		ajListPush(list, (void*)id);
5113
+	    }
5114
+	    btreeNumBucketDel(&bucket);
5115
+	}
5116
+
5117
+	right = 0L;
5118
+	if(cache->slevel)
5119
+	{
5120
+	    GBT_RIGHT(buf,&right);
5121
+	    if(right)
5122
+	    {
5123
+		page = ajBtreeCacheRead(cache,right);
5124
+		buf = page->buf;
5125
+		btreeGetNumKeys(cache,buf,&karray,&parray);
5126
+	    }
5127
+	}
5128
+    } while(right);
5129
+
5130
+    btreeDeallocSecArray(cache,array);
5131
+
5132
+    return;
5133
+}
5134
+
(-)emboss/files/patch-ajindex.h (+170 lines)
Line 0 Link Here
1
--- ajax/ajindex.h.orig	Mon Jan 23 12:17:10 2006
2
+++ ajax/ajindex.h	Thu Dec 22 13:12:32 2005
3
@@ -67,6 +67,23 @@
4
 } AjOBtNode;
5
 #define AjPBtNode AjOBtNode*
6
 
7
+
8
+
9
+
10
+typedef struct AjSBtMem
11
+{
12
+    struct AjSBtMem *next;
13
+    struct AjSBtMem *prev;
14
+    AjPStr *karray;
15
+    ajlong *parray;
16
+    ajlong *overflows;
17
+    AjBool used;
18
+} AjOBtMem;
19
+#define AjPBtMem AjOBtMem*
20
+
21
+
22
+
23
+
24
 /* @data AjPBtId ***************************************************
25
 **
26
 ** Btree ID
27
@@ -137,6 +154,54 @@
28
 
29
 
30
 
31
+/* @data AjPBtNumId ***************************************************
32
+**
33
+** Btree ID
34
+**
35
+** @attr id [AjPStr] Unique ID
36
+** @attr dbno [ajint] Database file number
37
+** @attr dups [ajint] Duplicates
38
+** @attr offset [ajlong] Offset within database file (ftello)
39
+** @attr refoffset [ajlong] Offset within reference database file (ftello)
40
+******************************************************************************/
41
+
42
+typedef struct AjSBtNumId
43
+{
44
+    ajint  dbno;
45
+    ajlong offset;
46
+    ajlong refoffset;
47
+} AjOBtNumId;
48
+#define AjPBtNumId AjOBtNumId*
49
+
50
+
51
+
52
+
53
+/* @data AjPNumBucket ***************************************************
54
+**
55
+** Offset bucket structure on disc
56
+**
57
+** Key, filenumber, ftell ID, subkey page (char*, ajint, ajlong, ajlong)
58
+**
59
+** @attr NodeType [ajint] Node type
60
+** @attr Nentries [ajint] Number of entries
61
+** @attr Overflow [ajlong] Offset to overflow block
62
+** @attr offset [ajlong*] file offsets
63
+** @attr refoffset [ajlong*] ref file offsets
64
+** @attr offset [ajint*] database numbers
65
+******************************************************************************/
66
+
67
+typedef struct AjSNumBucket
68
+{
69
+    ajint    NodeType;
70
+    ajint    Nentries;
71
+    ajlong   Overflow;
72
+    AjPBtNumId *NumId;
73
+} AjONumBucket;
74
+#define AjPNumBucket AjONumBucket*
75
+
76
+
77
+
78
+
79
 /* Database file name structure
80
 **
81
 ** ajint        order			Order of B+tree
82
@@ -387,6 +452,10 @@
83
 ** @attr snperbucket [ajint] Undocumented
84
 ** @attr secrootblock [ajlong] secondary tree root block
85
 ** @attr kwlimit [ajint] Max length of secondary key
86
+** @attr bmem [AjPBtMem] primary memory allocation MRU bottom
87
+** @attr bsmem [AjPBtMem] secondary memory allocation MRU bottom
88
+** @attr tmem [AjPBtMem] primary memory allocation MRU top
89
+** @attr tsmem [AjPBtMem] secondary memory allocation MRU top
90
 ******************************************************************************/
91
 
92
 typedef struct AjSBtCache
93
@@ -409,6 +478,12 @@
94
     ajint snperbucket;
95
     ajlong secrootblock;
96
     ajint  kwlimit;
97
+
98
+    AjPBtMem bmem;
99
+    AjPBtMem tmem;
100
+    AjPBtMem bsmem;
101
+    AjPBtMem tsmem;
102
+
103
 } AjOBtcache;
104
 #define AjPBtcache AjOBtcache*
105
 
106
@@ -511,6 +586,32 @@
107
 
108
 
109
 
110
+/* @data AjPBtHybrid ***************************************************
111
+**
112
+** Btree ID
113
+**
114
+** @attr key1 [AjPStr] Unique ID
115
+** @attr dbno [ajint] Database file number
116
+** @attr dups [ajint] Duplicates
117
+** @attr offset [ajlong] Offset within database file (ftello)** @attr refoffset [ajlong] Offset within reference database file (ftello)
118
+** @attr refoffset [ajlong] Offset within reference database file (ftello)
119
+** @attr treeblock [ajlong] Secondary tree root page
120
+******************************************************************************/
121
+
122
+typedef struct AjSBtHybrid
123
+{
124
+    AjPStr key1;
125
+    ajint  dbno;
126
+    ajint  dups;
127
+    ajlong offset;
128
+    ajlong refoffset;
129
+    ajlong treeblock;
130
+} AjOBtHybrid;
131
+#define AjPBtHybrid AjOBtHybrid*
132
+
133
+
134
+
135
+
136
 AjPBtcache ajBtreeCacheNewC(const char *file, const char *ext,
137
 			    const char *idir, const char *mode,
138
 			    ajint pagesize, ajint order, ajint fill,
139
@@ -553,7 +654,8 @@
140
 AjBool     ajBtreeReplaceId(AjPBtcache cache, const AjPBtId rid);
141
 
142
 ajint      ajBtreeReadEntries(const char *filename, const char *indexdir,
143
-		   	      AjPStr **seqfiles, AjPStr **reffiles);
144
+			      const char *directory,
145
+			      AjPStr **seqfiles, AjPStr **reffiles);
146
 void       ajBtreeInsertDupId(AjPBtcache cache, AjPBtId id);
147
 AjPList    ajBtreeDupFromKey(AjPBtcache cache, const char *key);
148
 
149
@@ -580,6 +682,21 @@
150
 void       ajBtreeInsertKeyword(AjPBtcache cache, const AjPBtPri pri);
151
 
152
 void       ajBtreeLockTest(AjPBtcache cache);
153
+
154
+
155
+
156
+AjPBtpage   ajBtreeHybFindInsert(AjPBtcache cache, const char *key);
157
+AjPBtpage   ajBtreeNumFindInsert(AjPBtcache cache, const ajlong key);
158
+
159
+void        ajBtreeInsertNum(AjPBtcache cache, AjPBtNumId num, AjPBtpage page);
160
+void        ajBtreeHybInsertId(AjPBtcache cache, AjPBtHybrid hyb);
161
+AjPBtHybrid ajBtreeHybNew(void);
162
+void        ajBtreeHybDel(AjPBtHybrid *thys);
163
+void        ajBtreeFreePriArray(AjPBtcache cache);
164
+void        ajBtreeFreeSecArray(AjPBtcache cache);
165
+void 	    ajBtreeHybLeafList(AjPBtcache cache, ajlong rootblock,
166
+			       AjPStr idname, AjPList list);
167
+
168
 
169
 #endif
170
 
(-)emboss/files/patch-ajpdb.c (+67 lines)
Line 0 Link Here
1
--- ajax/ajpdb.c.orig	Mon Jan 23 12:19:22 2006
2
+++ ajax/ajpdb.c	Fri Aug 19 13:49:12 2005
3
@@ -1198,7 +1198,7 @@
4
     osstr = ajStrNew();
5
     xstr  = ajStrNew();
6
 
7
-    /* Start of main application loop */
8
+    /* Start of main loop */
9
     while(ajFileReadLine(inf,&line))
10
     {
11
 	if(ajStrPrefixC(line,"XX"))
12
@@ -1313,6 +1313,8 @@
13
 	    
14
 	    (ret)->Nchn = ncha;
15
 	    (ret)->Ngp  = ngrp;
16
+
17
+	    continue;
18
 	}
19
 	
20
 
21
@@ -1382,7 +1384,11 @@
22
 	    ajStrToken(&token,&handle,NULL);
23
 	    ajStrToInt(token,&mod);
24
 	    if((mode == 0) && (mod!=1))
25
-		break;
26
+	      {
27
+		/* break; */
28
+		/* Discard remaining AT lines */
29
+		while(ajFileReadLine(inf,&line) && ajStrPrefixC(line,"AT"));
30
+	      }
31
 
32
 	    /* Chain number */
33
 	    ajStrToken(&token,&handle,NULL);
34
@@ -1463,7 +1469,10 @@
35
 			    "jison@hgmp.mrc.ac.uk");
36
 	    }
37
 	    else
38
+	      {
39
 		ajListPushApp((ret)->Chains[chn-1]->Atoms,(void *)atom);
40
+	      }
41
+	    continue;
42
 	}
43
 	
44
 	/* Parse residue line */
45
@@ -1479,8 +1488,11 @@
46
 	    ajStrToken(&token,&handle,NULL);
47
 	    ajStrToInt(token,&mod);
48
 	    if((mode == 0) && (mod!=1))
49
-		break;
50
-
51
+	      {
52
+		/* break;*/
53
+		/* Discard remaining RE lines */
54
+		while(ajFileReadLine(inf,&line) && ajStrPrefixC(line,"RE"));
55
+	      }
56
 	    /* Chain number */
57
 	    ajStrToken(&token,&handle,NULL);
58
 	    ajStrToInt(token,&chn);
59
@@ -1585,6 +1597,8 @@
60
             ajStrToFloat(token,&residue->pol_rel);
61
 
62
 	    ajListPushApp((ret)->Chains[chn-1]->Residues,(void *)residue);  
63
+
64
+	    continue;
65
 	}
66
     }
67
     /* End of main application loop */
(-)emboss/files/patch-ajseqdb.c (+195 lines)
Line 0 Link Here
1
--- ajax/ajseqdb.c.orig	Mon Jan 23 12:20:25 2006
2
+++ ajax/ajseqdb.c	Thu Dec 22 13:12:57 2005
3
@@ -27,8 +27,7 @@
4
 ******************************************************************************/
5
 
6
 #include "ajax.h"
7
-#include "ajmem.h"
8
-#include "ajfile.h"
9
+
10
 #include "limits.h"
11
 #include <stdarg.h>
12
 #include <sys/types.h>
13
@@ -3055,13 +3054,13 @@
14
 
15
 
16
     if(qryd->do_id)
17
-        seqEmbossOpenCache(qry,ID_EXTENSION,&qryd->idcache);
18
+        seqEmbossOpenSecCache(qry,ID_EXTENSION,&qryd->idcache);
19
 
20
     if(qryd->do_ac)
21
-	seqEmbossOpenCache(qry,AC_EXTENSION,&qryd->accache);
22
+	seqEmbossOpenSecCache(qry,AC_EXTENSION,&qryd->accache);
23
 
24
     if(qryd->do_sv)
25
-	seqEmbossOpenCache(qry,SV_EXTENSION,&qryd->svcache);
26
+	seqEmbossOpenSecCache(qry,SV_EXTENSION,&qryd->svcache);
27
 
28
     if(qryd->do_kw)
29
     {
30
@@ -3073,14 +3072,14 @@
31
     if(qryd->do_de)
32
     {
33
 	if(!qryd->idcache)
34
-	    seqEmbossOpenCache(qry,ID_EXTENSION,&qryd->idcache);	
35
+	    seqEmbossOpenSecCache(qry,ID_EXTENSION,&qryd->idcache);	
36
 	seqEmbossOpenSecCache(qry,DE_EXTENSION,&qryd->decache);
37
     }
38
 
39
     if(qryd->do_tx)
40
     {
41
 	if(!qryd->idcache)
42
-	    seqEmbossOpenCache(qry,ID_EXTENSION,&qryd->idcache);	
43
+	    seqEmbossOpenSecCache(qry,ID_EXTENSION,&qryd->idcache);	
44
 	seqEmbossOpenSecCache(qry,TX_EXTENSION,&qryd->txcache);
45
     }
46
 
47
@@ -3149,6 +3148,7 @@
48
     if(qryd->nentries == -1)
49
 	qryd->nentries = ajBtreeReadEntries(ajStrStr(qry->DbAlias),
50
 					    ajStrStr(qry->IndexDir),
51
+					    ajStrStr(qry->Directory),
52
 					    &qryd->files,&qryd->reffiles);
53
 
54
     *cache = ajBtreeCacheNewC(ajStrStr(qry->DbAlias),ext,
55
@@ -3209,6 +3209,7 @@
56
     if(qryd->nentries == -1)
57
 	qryd->nentries = ajBtreeReadEntries(ajStrStr(qry->DbAlias),
58
 					    ajStrStr(qry->IndexDir),
59
+					    ajStrStr(qry->Directory),
60
 					    &qryd->files,&qryd->reffiles);
61
     
62
     
63
@@ -3270,6 +3271,7 @@
64
 
65
 
66
     n = ajBtreeReadEntries(qry->DbAlias->Ptr,qry->IndexDir->Ptr,
67
+			   qry->Directory->Ptr,
68
 			   &filestrings,&reffilestrings);
69
 
70
 
71
@@ -3365,7 +3367,13 @@
72
     {
73
 	    entry = ajBtreeIdFromKey(qryd->idcache,ajStrStr(qry->Id));
74
 	    if(entry)
75
-		ajListPushApp(qryd->List,(void *)entry);
76
+	    {
77
+		if(!entry->dups)
78
+		    ajListPushApp(qryd->List,(void *)entry);
79
+		else
80
+		    ajBtreeHybLeafList(qryd->idcache,entry->offset,
81
+				       entry->id,qryd->List);
82
+	    }
83
     }
84
     
85
 
86
@@ -3373,14 +3381,26 @@
87
     {
88
 	    entry = ajBtreeIdFromKey(qryd->accache,ajStrStr(qry->Acc));
89
 	    if(entry)
90
-		ajListPushApp(qryd->List,(void *)entry);
91
+	    {
92
+		if(!entry->dups)
93
+		    ajListPushApp(qryd->List,(void *)entry);
94
+		else
95
+		    ajBtreeHybLeafList(qryd->accache,entry->offset,
96
+				       entry->id,qryd->List);
97
+	    }
98
     }
99
 
100
     if((qryd->do_sv && !entry) && (qryd->do_sv && qryd->svcache))
101
     {
102
 	    entry = ajBtreeIdFromKey(qryd->svcache,ajStrStr(qry->Gi));
103
 	    if(entry)
104
-		ajListPushApp(qryd->List,(void *)entry);
105
+	    {
106
+		if(!entry->dups)
107
+		    ajListPushApp(qryd->List,(void *)entry);
108
+		else
109
+		    ajBtreeHybLeafList(qryd->svcache,entry->offset,
110
+				       entry->id,qryd->List);
111
+	    }
112
     }
113
 
114
     if(!ajListLength(qryd->List))
115
@@ -3512,13 +3532,25 @@
116
     qryd = qry->QryData;
117
 
118
     if(qryd->do_id && qryd->idcache)
119
+    {
120
+	ajBtreeFreeSecArray(qryd->idcache);
121
 	ajBtreeCacheDel(&qryd->idcache);
122
+    }
123
+    
124
 
125
     if(qryd->do_ac && qryd->accache)
126
+    {
127
+	ajBtreeFreeSecArray(qryd->accache);	
128
 	ajBtreeCacheDel(&qryd->accache);
129
+    }
130
+    
131
 
132
     if(qryd->do_sv && qryd->svcache)
133
+    {
134
+	ajBtreeFreeSecArray(qryd->svcache);	
135
 	ajBtreeCacheDel(&qryd->svcache);
136
+    }
137
+
138
 
139
     if(qryd->do_kw && qryd->kwcache)
140
 	ajBtreeCacheDel(&qryd->kwcache);
141
@@ -3608,7 +3640,14 @@
142
 		    ajStrToLower(&kwid);
143
 		    id = ajBtreeIdFromKey(qryd->idcache,ajStrStr(kwid));
144
 		    if(id)
145
-			ajListPushApp(qryd->List,(void *)id);
146
+		    {
147
+			if(!id->dups)
148
+			    ajListPushApp(qryd->List,(void *)id);
149
+			else
150
+			    ajBtreeHybLeafList(qryd->idcache,id->offset,
151
+					       id->id,qryd->List);
152
+		    }
153
+		    ajStrDel(&kwid);
154
 		}
155
 		ajListDel(&tlist);
156
 		ajBtreePriDel(&pri);
157
@@ -3637,7 +3676,13 @@
158
 		    ajStrToLower(&kwid);
159
 		    id = ajBtreeIdFromKey(qryd->idcache,ajStrStr(kwid));
160
 		    if(id)
161
-			ajListPushApp(qryd->List,(void *)id);
162
+		    {
163
+			if(!id->dups)
164
+			    ajListPushApp(qryd->List,(void *)id);
165
+			else
166
+			    ajBtreeHybLeafList(qryd->idcache,id->offset,
167
+					       id->id,qryd->List);
168
+		    }
169
 		    ajStrDel(&kwid);
170
 		}
171
 		ajListDel(&tlist);
172
@@ -3667,7 +3712,14 @@
173
 		    ajStrToLower(&kwid);
174
 		    id = ajBtreeIdFromKey(qryd->idcache,ajStrStr(kwid));
175
 		    if(id)
176
-			ajListPushApp(qryd->List,(void *)id);
177
+		    {
178
+			if(!id->dups)
179
+			    ajListPushApp(qryd->List,(void *)id);
180
+			else
181
+			    ajBtreeHybLeafList(qryd->idcache,id->offset,
182
+					       id->id,qryd->List);
183
+		    }
184
+		    ajStrDel(&kwid);
185
 		}
186
 		ajListDel(&tlist);
187
 		ajBtreePriDel(&pri);
188
@@ -3832,6 +3884,7 @@
189
 	qryd = qry->QryData;
190
 	i = -1;
191
 	ajBtreeReadEntries(qry->DbAlias->Ptr,qry->IndexDir->Ptr,
192
+			   qry->Directory->Ptr,
193
 			   &qryd->files,&qryd->reffiles);
194
 
195
 	seqin->Single = ajTrue;
(-)emboss/files/patch-dbxfasta.c (+89 lines)
Line 0 Link Here
1
--- emboss/dbxfasta.c.orig	Mon Jan 23 12:22:12 2006
2
+++ emboss/dbxfasta.c	Wed Jan  4 16:31:37 2006
3
@@ -2,7 +2,7 @@
4
 **
5
 ** Index flatfile databases
6
 **
7
-** @author: Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
8
+** @author Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
9
 ** @@
10
 **
11
 ** This program is free software; you can redistribute it and/or
12
@@ -77,6 +77,7 @@
13
     
14
     AjPBtId  idobj  = NULL;
15
     AjPBtPri priobj = NULL;
16
+    AjPBtHybrid hyb = NULL;
17
     
18
 
19
     AjPRegexp typeexp = NULL;
20
@@ -102,7 +103,8 @@
21
     
22
     idobj   = ajBtreeIdNew();
23
     priobj  = ajBtreePriNew();
24
-
25
+    hyb     = ajBtreeHybNew();
26
+    
27
 
28
     nfields = embBtreeSetFields(entry,fieldarray);
29
     embBtreeSetDbInfo(entry,dbname,dbrs,datestr,release,dbtype,directory,
30
@@ -134,22 +136,22 @@
31
 	    if(entry->do_id)
32
 	    {
33
 		ajStrToLower(&entry->id);
34
-		ajStrAssS(&idobj->id,entry->id);
35
-		idobj->dbno = i;
36
-		idobj->offset = entry->fpos;
37
-		idobj->dups = 0;
38
-		ajBtreeInsertId(entry->idcache,idobj);
39
+		ajStrAssS(&hyb->key1,entry->id);
40
+		hyb->dbno = i;
41
+		hyb->offset = entry->fpos;
42
+		hyb->dups = 0;
43
+		ajBtreeHybInsertId(entry->idcache,hyb);
44
 	    }
45
 
46
 	    if(entry->do_accession)
47
                 while(ajListPop(entry->ac,(void **)&word))
48
                 {
49
 		    ajStrToLower(&word);
50
-                    ajStrAssS(&idobj->id,word);
51
-                    idobj->dbno = i;
52
-		    idobj->offset = entry->fpos;
53
-		    idobj->dups = 0;
54
-		    ajBtreeInsertId(entry->accache,idobj);
55
+                    ajStrAssS(&hyb->key1,word);
56
+                    hyb->dbno = i;
57
+		    hyb->offset = entry->fpos;
58
+		    hyb->dups = 0;
59
+		    ajBtreeHybInsertId(entry->accache,hyb);
60
 		    ajStrDel(&word);
61
                 }
62
 
63
@@ -157,11 +159,11 @@
64
                 while(ajListPop(entry->sv,(void **)&word))
65
                 {
66
 		    ajStrToLower(&word);
67
-                    ajStrAssS(&idobj->id,word);
68
-                    idobj->dbno = i;
69
-		    idobj->offset = entry->fpos;
70
-		    idobj->dups = 0;
71
-		    ajBtreeInsertId(entry->svcache,idobj);
72
+                    ajStrAssS(&hyb->key1,word);
73
+                    hyb->dbno = i;
74
+		    hyb->offset = entry->fpos;
75
+		    hyb->dups = 0;
76
+		    ajBtreeHybInsertId(entry->svcache,hyb);
77
 		    ajStrDel(&word);
78
                 }
79
 
80
@@ -197,7 +199,8 @@
81
 
82
     ajBtreeIdDel(&idobj);
83
     ajBtreePriDel(&priobj);
84
-
85
+    ajBtreeHybDel(&hyb);
86
+    
87
     ajExit();
88
 
89
     return 0;
(-)emboss/files/patch-dbxflat.c (+146 lines)
Line 0 Link Here
1
--- emboss/dbxflat.c.orig	Mon Jan 23 12:22:23 2006
2
+++ emboss/dbxflat.c	Sun Jan  1 07:29:09 2006
3
@@ -2,7 +2,7 @@
4
 **
5
 ** Index flatfile databases
6
 **
7
-** @author: Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
8
+** @author Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
9
 ** @@
10
 **
11
 ** This program is free software; you can redistribute it and/or
12
@@ -106,6 +106,7 @@
13
     
14
     AjPBtId  idobj  = NULL;
15
     AjPBtPri priobj = NULL;
16
+    AjPBtHybrid hyb = NULL;
17
     
18
 
19
     embInit("dbxflat", argc, argv);
20
@@ -126,7 +127,8 @@
21
     
22
     idobj   = ajBtreeIdNew();
23
     priobj  = ajBtreePriNew();
24
-
25
+    hyb     = ajBtreeHybNew();
26
+    
27
 
28
     nfields = embBtreeSetFields(entry,fieldarray);
29
     embBtreeSetDbInfo(entry,dbname,dbrs,datestr,release,dbtype,directory,
30
@@ -156,11 +158,11 @@
31
 	    if(entry->do_id)
32
 	    {
33
 		ajStrToLower(&entry->id);
34
-		ajStrAssS(&idobj->id,entry->id);
35
-		idobj->dbno = i;
36
-		idobj->offset = entry->fpos;
37
-		idobj->dups = 0;
38
-		ajBtreeInsertId(entry->idcache,idobj);
39
+		ajStrAssS(&hyb->key1,entry->id);
40
+		hyb->dbno = i;
41
+		hyb->offset = entry->fpos;
42
+		hyb->dups = 0;
43
+		ajBtreeHybInsertId(entry->idcache,hyb);
44
 	    }
45
 
46
 	    if(entry->do_accession)
47
@@ -168,11 +170,11 @@
48
                 while(ajListPop(entry->ac,(void **)&word))
49
                 {
50
 		    ajStrToLower(&word);
51
-                    ajStrAssS(&idobj->id,word);
52
-                    idobj->dbno = i;
53
-		    idobj->offset = entry->fpos;
54
-		    idobj->dups = 0;
55
-		    ajBtreeInsertId(entry->accache,idobj);
56
+                    ajStrAssS(&hyb->key1,word);
57
+                    hyb->dbno = i;
58
+		    hyb->offset = entry->fpos;
59
+		    hyb->dups = 0;
60
+		    ajBtreeHybInsertId(entry->accache,hyb);
61
 		    ajStrDel(&word);
62
                 }
63
 	    }
64
@@ -182,11 +184,11 @@
65
                 while(ajListPop(entry->sv,(void **)&word))
66
                 {
67
 		    ajStrToLower(&word);
68
-                    ajStrAssS(&idobj->id,word);
69
-                    idobj->dbno = i;
70
-		    idobj->offset = entry->fpos;
71
-		    idobj->dups = 0;
72
-		    ajBtreeInsertId(entry->svcache,idobj);
73
+                    ajStrAssS(&hyb->key1,word);
74
+                    hyb->dbno = i;
75
+		    hyb->offset = entry->fpos;
76
+		    hyb->dups = 0;
77
+		    ajBtreeHybInsertId(entry->svcache,hyb);
78
 		    ajStrDel(&word);
79
                 }
80
 	    }
81
@@ -231,15 +233,11 @@
82
 	    }
83
 	}
84
 	
85
-
86
-
87
-
88
-
89
-
90
 	ajFileClose(&inf);
91
     }
92
     
93
 
94
+
95
     embBtreeDumpParameters(entry);
96
     embBtreeCloseCaches(entry);
97
     
98
@@ -256,7 +254,8 @@
99
 
100
     ajBtreeIdDel(&idobj);
101
     ajBtreePriDel(&priobj);
102
-
103
+    ajBtreeHybDel(&hyb);
104
+    
105
     ajExit();
106
 
107
     return 0;
108
@@ -306,11 +305,13 @@
109
 	}
110
 
111
 	if(entry->do_sv)
112
-	    if(ajStrPrefixC(line,"SV"))
113
+	    if(ajStrPrefixC(line,"SV") ||
114
+	       ajStrPrefixC(line,"IV"))	/* emblcds database format */
115
 		embBtreeEmblAC(line,entry->sv);
116
 
117
 	if(entry->do_accession)
118
-	    if(ajStrPrefixC(line,"AC"))
119
+	    if(ajStrPrefixC(line,"AC") ||
120
+	       ajStrPrefixC(line,"PA"))	/* emblcds database format */
121
 		embBtreeEmblAC(line,entry->ac);
122
 	
123
 	if(entry->do_keyword)
124
@@ -356,12 +357,10 @@
125
     
126
     line = ajStrNewC("");
127
     sumline = ajStrNew();
128
+
129
     
130
     while(!ajStrPrefixC(line,"//") && ret)
131
     {
132
-	pos = ajFileTell(inf);
133
-	
134
-	
135
 	if(ajStrPrefixC(line,"LOCUS"))
136
 	{
137
 	    entry->fpos = pos;
138
@@ -423,7 +422,7 @@
139
 	    }
140
 	
141
 
142
-
143
+	pos = ajFileTell(inf);
144
 
145
 	if(!ajFileReadLine(inf,&line))
146
 	    ret = ajFalse;
(-)emboss/files/patch-dbxgcg.c (+96 lines)
Line 0 Link Here
1
--- emboss/dbxgcg.c.orig	Mon Jan 23 12:22:30 2006
2
+++ emboss/dbxgcg.c	Thu Dec 22 13:13:18 2005
3
@@ -2,7 +2,7 @@
4
 **
5
 ** Index flatfile databases
6
 **
7
-** @author: Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
8
+** @author Copyright (C) Alan Bleasby (ableasby@hgmp.mrc.ac.uk)
9
 ** @@
10
 **
11
 ** This program is free software; you can redistribute it and/or
12
@@ -136,6 +136,7 @@
13
     
14
     AjPBtId  idobj  = NULL;
15
     AjPBtPri priobj = NULL;
16
+    AjPBtHybrid hyb = NULL;
17
     
18
 
19
     embInit("dbxgcg", argc, argv);
20
@@ -156,7 +157,8 @@
21
     
22
     idobj   = ajBtreeIdNew();
23
     priobj  = ajBtreePriNew();
24
-
25
+    hyb     = ajBtreeHybNew();
26
+    
27
 
28
     nfields = embBtreeSetFields(entry,fieldarray);
29
     embBtreeSetDbInfo(entry,dbname,dbrs,datestr,release,dbtype,directory,
30
@@ -204,12 +206,12 @@
31
 	    if(entry->do_id)
32
 	    {
33
 		ajStrToLower(&entry->id);
34
-		ajStrAssS(&idobj->id,entry->id);
35
-		idobj->dbno = i;
36
-		idobj->offset = entry->fpos;
37
-		idobj->refoffset = entry->reffpos;
38
-		idobj->dups = 0;
39
-		ajBtreeInsertId(entry->idcache,idobj);
40
+		ajStrAssS(&hyb->key1,entry->id);
41
+		hyb->dbno = i;
42
+		hyb->offset = entry->fpos;
43
+		hyb->refoffset = entry->reffpos;
44
+		hyb->dups = 0;
45
+		ajBtreeHybInsertId(entry->idcache,hyb);
46
 	    }
47
 
48
 	    if(entry->do_accession)
49
@@ -217,12 +219,12 @@
50
                 while(ajListPop(entry->ac,(void **)&word))
51
                 {
52
 		    ajStrToLower(&word);
53
-                    ajStrAssS(&idobj->id,word);
54
-                    idobj->dbno = i;
55
-		    idobj->offset = entry->fpos;
56
-		    idobj->refoffset = entry->reffpos;
57
-		    idobj->dups = 0;
58
-		    ajBtreeInsertId(entry->accache,idobj);
59
+                    ajStrAssS(&hyb->key1,word);
60
+                    hyb->dbno = i;
61
+		    hyb->offset = entry->fpos;
62
+		    hyb->refoffset = entry->reffpos;
63
+		    hyb->dups = 0;
64
+		    ajBtreeHybInsertId(entry->accache,hyb);
65
 		    ajStrDel(&word);
66
                 }
67
 	    }
68
@@ -232,12 +234,12 @@
69
                 while(ajListPop(entry->sv,(void **)&word))
70
                 {
71
 		    ajStrToLower(&word);
72
-                    ajStrAssS(&idobj->id,word);
73
-                    idobj->dbno = i;
74
-		    idobj->offset = entry->fpos;
75
-		    idobj->refoffset = entry->reffpos;
76
-		    idobj->dups = 0;
77
-		    ajBtreeInsertId(entry->svcache,idobj);
78
+                    ajStrAssS(&hyb->key1,word);
79
+                    hyb->dbno = i;
80
+		    hyb->offset = entry->fpos;
81
+		    hyb->refoffset = entry->reffpos;
82
+		    hyb->dups = 0;
83
+		    ajBtreeHybInsertId(entry->svcache,hyb);
84
 		    ajStrDel(&word);
85
                 }
86
 	    }
87
@@ -303,7 +305,8 @@
88
 
89
     ajBtreeIdDel(&idobj);
90
     ajBtreePriDel(&priobj);
91
-
92
+    ajBtreeHybDel(&hyb);
93
+    
94
     ajExit();
95
 
96
     return 0;
(-)emboss/files/patch-embindex.c (+115 lines)
Line 0 Link Here
1
--- nucleus/embindex.c.orig	Mon Jan 23 12:24:54 2006
2
+++ nucleus/embindex.c	Thu Dec 22 13:12:38 2005
3
@@ -973,15 +973,14 @@
4
 	if(!do_ref)
5
 	{
6
 	    ajListPop(entry->files,(void **)&tmpstr);
7
-	    ajFmtPrintF(entfile,"%S%S\n",entry->directory,tmpstr);
8
+	    ajFmtPrintF(entfile,"%S\n",tmpstr);
9
 	    ajListPushApp(entry->files,(void *)tmpstr);
10
 	}
11
 	else
12
 	{
13
 	    ajListPop(entry->files,(void **)&tmpstr);
14
 	    ajListPop(entry->reffiles,(void **)&refstr);
15
-	    ajFmtPrintF(entfile,"%S%S %S%S\n",entry->directory,tmpstr,
16
-			entry->directory,refstr);
17
+	    ajFmtPrintF(entfile,"%S %S\n",tmpstr, refstr);
18
 	    ajListPushApp(entry->files,(void *)tmpstr);
19
 	    ajListPushApp(entry->reffiles,(void *)refstr);
20
 	}
21
@@ -1150,7 +1149,15 @@
22
     entry->desecfill  = (entry->pagesize - 16) / (entry->idlen + 4);
23
     entry->txsecfill  = (entry->pagesize - 16) / (entry->idlen + 4);
24
 
25
+    entry->idsecorder = (entry->pagesize - 60) / 24;
26
+    entry->idsecfill  = (entry->pagesize - 60) / 20;
27
 
28
+    entry->acsecorder = (entry->pagesize - 60) / 24;
29
+    entry->acsecfill  = (entry->pagesize - 60) / 20;
30
+
31
+    entry->svsecorder = (entry->pagesize - 60) / 24;
32
+    entry->svsecfill  = (entry->pagesize - 60) / 20;
33
+    
34
     ajStrDel(&value);
35
 
36
     return;
37
@@ -1183,28 +1190,38 @@
38
 
39
     if(entry->do_id)
40
     {
41
-	entry->idcache = ajBtreeCacheNewC(basenam,ID_EXTENSION,idir,"w+",
42
-					  entry->pagesize, entry->idorder,
43
-					  entry->idfill, level,
44
-					  entry->cachesize);
45
+	entry->idcache = ajBtreeSecCacheNewC(basenam,ID_EXTENSION,idir,"w+",
46
+					     entry->pagesize, entry->idorder,
47
+					     entry->idfill, level,
48
+					     entry->cachesize,
49
+					     entry->idsecorder, slevel,
50
+					     entry->idsecfill, count,
51
+					     entry->kwlen);
52
 	ajBtreeCreateRootNode(entry->idcache,0L);
53
     }
54
 
55
     if(entry->do_accession)
56
     {
57
-	entry->accache = ajBtreeCacheNewC(basenam,AC_EXTENSION,idir,"w+",
58
-					  entry->pagesize, entry->acorder,
59
-					  entry->acfill, level,
60
-					  entry->cachesize);
61
+	entry->accache = ajBtreeSecCacheNewC(basenam,AC_EXTENSION,idir,"w+",
62
+					     entry->pagesize,
63
+					     entry->acorder, entry->acfill,
64
+					     level,
65
+					     entry->cachesize,
66
+					     entry->acsecorder, slevel,
67
+					     entry->acsecfill, count,
68
+					     entry->kwlen);
69
 	ajBtreeCreateRootNode(entry->accache,0L);
70
     }
71
 
72
     if(entry->do_sv)
73
     {
74
-	entry->svcache = ajBtreeCacheNewC(basenam,SV_EXTENSION,idir,"w+",
75
-					  entry->pagesize, entry->svorder,
76
-					  entry->svfill, level,
77
-					  entry->cachesize);
78
+	entry->svcache = ajBtreeSecCacheNewC(basenam,SV_EXTENSION,idir,"w+",
79
+					     entry->pagesize, entry->svorder,
80
+					     entry->svfill, level,
81
+					     entry->cachesize,
82
+					     entry->svsecorder, slevel,
83
+					     entry->svsecfill, count,
84
+					     entry->kwlen);
85
 	ajBtreeCreateRootNode(entry->svcache,0L);
86
     }
87
 
88
@@ -1270,18 +1287,27 @@
89
 
90
     if(entry->do_id)
91
     {
92
+	ajBtreeFreePriArray(entry->idcache);
93
+	ajBtreeFreeSecArray(entry->idcache);
94
+
95
 	ajBtreeCacheSync(entry->idcache,0L);
96
 	ajBtreeCacheDel(&entry->idcache);
97
     }
98
 
99
     if(entry->do_accession)
100
     {
101
+	ajBtreeFreePriArray(entry->accache);
102
+	ajBtreeFreeSecArray(entry->accache);
103
+
104
 	ajBtreeCacheSync(entry->accache,0L);
105
 	ajBtreeCacheDel(&entry->accache);
106
     }
107
 
108
     if(entry->do_sv)
109
     {
110
+	ajBtreeFreePriArray(entry->svcache);
111
+	ajBtreeFreeSecArray(entry->svcache);
112
+
113
 	ajBtreeCacheSync(entry->svcache,0L);
114
 	ajBtreeCacheDel(&entry->svcache);
115
     }
(-)emboss/files/patch-embindex.h (+96 lines)
Line 0 Link Here
1
--- nucleus/embindex.h.orig	Mon Jan 23 12:24:46 2006
2
+++ nucleus/embindex.h	Thu Dec 22 13:12:44 2005
3
@@ -16,6 +16,76 @@
4
 #define BTREE_DEF_CACHESIZE 100
5
 #define BTREE_DEF_PAGESIZE  2048
6
 
7
+/* @data EmbPBtreeEntry *******************************************************
8
+**
9
+** Index tree entries
10
+**
11
+** @alias EmbSBtreeEntry
12
+**
13
+** @attr do_id [AjBool] Undocumented
14
+** @attr do_accession [AjBool] Undocumented
15
+** @attr do_sv [AjBool] Undocumented
16
+** @attr do_description [AjBool] Undocumented
17
+** @attr do_keyword [AjBool] Undocumented
18
+** @attr do_taxonomy [AjBool] Undocumented
19
+** @attr dbname [AjPStr] Undocumented
20
+** @attr dbrs [AjPStr] Undocumented
21
+** @attr release [AjPStr] Undocumented
22
+** @attr date [AjPStr] Undocumented
23
+** @attr dbtype [AjPStr] Undocumented
24
+** @attr directory [AjPStr] Undocumented
25
+** @attr idirectory [AjPStr] Undocumented
26
+** @attr files [AjPList] Undocumented
27
+** @attr reffiles [AjPList] Undocumented
28
+** @attr nfiles [ajint] Undocumented
29
+** @attr cachesize [ajint] Undocumented
30
+** @attr pagesize [ajint] Undocumented
31
+** @attr idlen [ajint] Undocumented
32
+** @attr aclen [ajint] Undocumented
33
+** @attr svlen [ajint] Undocumented
34
+** @attr kwlen [ajint] Undocumented
35
+** @attr delen [ajint] Undocumented
36
+** @attr txlen [ajint] Undocumented
37
+** @attr idorder [ajint] Undocumented
38
+** @attr idfill [ajint] Undocumented
39
+** @attr idsecorder [ajint] Undocumented
40
+** @attr idsecfill [ajint] Undocumented
41
+** @attr acorder [ajint] Undocumented
42
+** @attr acfill [ajint] Undocumented
43
+** @attr acsecorder [ajint] Undocumented
44
+** @attr acsecfill [ajint] Undocumented
45
+** @attr svorder [ajint] Undocumented
46
+** @attr svfill [ajint] Undocumented
47
+** @attr svsecorder [ajint] Undocumented
48
+** @attr svsecfill [ajint] Undocumented
49
+** @attr kworder [ajint] Undocumented
50
+** @attr kwfill [ajint] Undocumented
51
+** @attr kwsecorder [ajint] Undocumented
52
+** @attr kwsecfill [ajint] Undocumented
53
+** @attr deorder [ajint] Undocumented
54
+** @attr defill [ajint] Undocumented
55
+** @attr desecorder [ajint] Undocumented
56
+** @attr desecfill [ajint] Undocumented
57
+** @attr txorder [ajint] Undocumented
58
+** @attr txfill [ajint] Undocumented
59
+** @attr txsecorder [ajint] Undocumented
60
+** @attr txsecfill [ajint] Undocumented
61
+** @attr idcache [AjPBtcache] Undocumented
62
+** @attr accache [AjPBtcache] Undocumented
63
+** @attr svcache [AjPBtcache] Undocumented
64
+** @attr kwcache [AjPBtcache] Undocumented
65
+** @attr decache [AjPBtcache] Undocumented
66
+** @attr txcache [AjPBtcache] Undocumented
67
+** @attr fpos [ajlong] Undocumented
68
+** @attr reffpos [ajlong] Undocumented
69
+** @attr id [AjPStr] Undocumented
70
+** @attr ac [AjPList] Undocumented
71
+** @attr sv [AjPList] Undocumented
72
+** @attr tx [AjPList] Undocumented
73
+** @attr kw [AjPList] Undocumented
74
+** @attr de [AjPList] Undocumented
75
+******************************************************************************/
76
+
77
 typedef struct EmbSBtreeEntry
78
 {
79
     AjBool do_id;
80
@@ -48,10 +118,16 @@
81
 
82
     ajint idorder;
83
     ajint idfill;
84
+    ajint idsecorder;
85
+    ajint idsecfill;
86
     ajint acorder;
87
     ajint acfill;
88
+    ajint acsecorder;
89
+    ajint acsecfill;
90
     ajint svorder;
91
     ajint svfill;
92
+    ajint svsecorder;
93
+    ajint svsecfill;
94
 
95
     ajint kworder;
96
     ajint kwfill;
(-)emboss/files/patch-emboss.default.template (+20 lines)
Line 0 Link Here
1
--- emboss/emboss.default.template.orig	Wed Feb  8 00:43:42 2006
2
+++ emboss/emboss.default.template	Wed Feb  8 00:40:34 2006
3
@@ -4,7 +4,7 @@
4
 # By default this is /usr/local/share/EMBOSS/test but the directory can
5
 # be changed with --prefix when you configure EMBOSS.
6
 
7
-# SET emboss_tempdata path_to_directory_$EMBOSS/test
8
+# SET emboss_tempdata %%DATADIR%%/test
9
 
10
 # Proxy - set this if any databases are accessed through a proxy web server.
11
 # Turn off in the DB definition with proxy: ":" for any
12
@@ -15,7 +15,7 @@
13
 # Logfile - set this to a file that any user can append to
14
 # and EMBOSS applications will automatically write log information
15
 
16
-# SET emboss_logfile /packages/emboss/emboss/log
17
+# SET emboss_logfile /var/log/emboss.log
18
 
19
 # Pagesize - this is the size of disc page blocks and is
20
 # required by the 'dbx' indexing programs and 'method: emboss'
(-)emboss/files/patch-marscan.c (+72 lines)
Line 0 Link Here
1
--- emboss/marscan.c.orig	Mon Jan 23 11:36:36 2006
2
+++ emboss/marscan.c	Mon Jan 23 08:56:35 2006
3
@@ -1,7 +1,7 @@
4
 /* @source marscan application
5
 **
6
 ** Finds MAR/SAR sites in nucleic sequences
7
-** @author: Copyright (C) Gary Williams (gwilliam@hgmp.mrc.ac.uk)
8
+** @author Copyright (C) Gary Williams (gwilliam@hgmp.mrc.ac.uk)
9
 ** @@
10
 **
11
 ** This program is free software; you can redistribute it and/or
12
@@ -249,33 +249,41 @@
13
 			 amino8rev, carboxyl8rev, buf8rev, off8rev,
14
 			 sotable8rev, solimit8rev, regexp8rev, skipm8rev,
15
 			 &hits8rev, m8rev, &tidy8rev);
16
+	ajDebug("Marscan '%S' hits %d:%d %d:%d\n", seqname,
17
+		hits16, hits16rev,
18
+		hits8, hits8rev);
19
+
20
+	/* initialise the output feature table */
21
+	tab = ajFeattableNewDna(seqname);
22
+
23
+	/*
24
+	**  append reverse lists to forward lists and sort them by match
25
+	**  position
26
+	*/
27
 
28
-	if((hits16 || hits16rev) && (hits8 || hits8rev))
29
+	if(hits8 || hits8rev)
30
 	{
31
-	    /*
32
-	    **  append reverse lists to forward lists and sort them by match
33
-	    **  position
34
-	    */
35
 	    ajListPushList(l8, &l8rev);
36
 	    ajListSort(l8, embPatRestrictStartCompare);
37
-
38
+	}
39
+	if((hits16 || hits16rev))
40
+	{
41
 	    ajListPushList(l16, &l16rev);
42
 	    ajListSort(l16, embPatRestrictStartCompare);
43
 
44
-	    /* initialise the output feature table */
45
-	    if(!tab)
46
-		tab = ajFeattableNewDna(seqname);
47
-
48
-	    /*
49
-	    **  find pairs of hits within the required distance and output
50
-	    **  the results
51
-	    */
52
-	    marscan_stepdown(l16, l8, &tab);
53
-
54
-	    /* write features and tidy up */
55
-	    ajReportWrite(report, tab, seq);
56
-	    ajFeattableDel(&tab);
57
 	}
58
+
59
+
60
+	/*
61
+	**  find pairs of hits within the required distance and output
62
+	**  the results
63
+	*/
64
+	marscan_stepdown(l16, l8, &tab);
65
+
66
+	ajDebug("Marscan reportwrite '%S'\n", seqname);
67
+	/* write features and tidy up */
68
+	ajReportWrite(report, tab, seq);
69
+	ajFeattableDel(&tab);
70
 
71
         while(ajListPop(l16,(void **)&aptr))
72
             embMatMatchDel(&aptr);
(-)emboss/files/pkg-message.in (+27 lines)
Line 0 Link Here
1
=============================================================================
2
3
 The EMBOSS suite has been successfully installed under
4
 %%PREFIX%%
5
6
 To run EMBOSS programs make sure that %%PREFIX%%/bin is in your PATH.
7
8
 In order to see graphical output from some EMBOSS programs, you will 
9
 need to set the following environment variable in your shell:
10
11
 set PLPLOT_LIB to: "%%PREFIX%%/share/EMBOSS"
12
13
 A sample configuration file has been installed in
14
 %%DATADIR%%/emboss.default.template
15
16
 This must be renamed to emboss.default and edited to suit your site 
17
 and requirements.
18
19
 A .embossrc file in a user's home directory overrides settings in the
20
 system-wide emboss.default.
21
22
 Additional third party applications for EMBOSS can be installed from the
23
 biology/embassy port. Remember, though that if you installed EMBOSS in a 
24
 PREFIX other than the default, you will have to install EMBASSY into this 
25
 same PREFIX.
26
27
=============================================================================
(-)emboss/files/pre-install.in (+21 lines)
Line 0 Link Here
1
===============================================================================
2
3
 ATENTION!!!
4
5
 The EMBOSS port is currently affected by a CONFLICTS condition.
6
 If you install the port in the default prefix
7
 PREFIX = LOCALBASE = %%LOCALBASE%%
8
 it will conflict with other ports that install applications with the 
9
 same name, in the same places. 
10
11
 It is highly recommended that you install EMBOSS to a different prefix,
12
 for example PREFIX=%%LOCALBASE%%/emboss
13
 In this case, all of the documentation and examples will be installed 
14
 within this PREFIX. 
15
16
 If you still choose to install EMBOSS on the default prefix, do note 
17
 that documentation, examples and shared data will not be installed 
18
 in the usual places for a FreeBSD port (i.e. docs in
19
 PREFIX/share/EMBOSS/doc instead of in PREFIX/share/doc/EMBOSS).
20
21
===============================================================================
(-)emboss/pkg-message (-22 lines)
Lines 1-22 Link Here
1
--------------------------------------------------------------------------
2
3
The EMBOSS suite has been successfully installed.
4
5
In order to see graphical output from some EMBOSS programs, you will need to
6
set the following environment variable in your shell startup file:
7
8
- set PLPLOT_LIB to:     "%%PREFIX%%/share/EMBOSS"
9
10
NB:  A sample configuration file has been installed to %%PREFIX%%/etc as
11
emboss.default.sample.  This must be renamed to emboss.default and edited
12
to suit your site and its requirements.
13
14
A .embossrc in a user's home directory overrides settings in the
15
system-wide emboss.default.
16
17
Online EMBOSS documentation is available at:
18
	http://www.uk.embnet.org/Software/EMBOSS/userdoc.html
19
	http://www.uk.embnet.org/Software/EMBOSS/Doc/
20
  http://emboss.sourceforge.net/docs/
21
22
--------------------------------------------------------------------------
(-)emboss/pkg-plist (-1387 / +1468 lines)
Lines 17-22 Link Here
17
bin/chips
17
bin/chips
18
bin/cirdna
18
bin/cirdna
19
bin/codcmp
19
bin/codcmp
20
bin/codcopy
20
bin/coderet
21
bin/coderet
21
bin/compseq
22
bin/compseq
22
bin/cons
23
bin/cons
Lines 24-35 Link Here
24
bin/cpgreport
25
bin/cpgreport
25
bin/cusp
26
bin/cusp
26
bin/cutgextract
27
bin/cutgextract
27
bin/cutseq
28
bin/dan
28
bin/dan
29
bin/cutseq
29
bin/dbiblast
30
bin/dbiblast
30
bin/dbifasta
31
bin/dbifasta
31
bin/dbiflat
32
bin/dbiflat
32
bin/dbigcg
33
bin/dbigcg
34
bin/dbxfasta
35
bin/dbxflat
36
bin/dbxgcg
33
bin/degapseq
37
bin/degapseq
34
bin/descseq
38
bin/descseq
35
bin/diffseq
39
bin/diffseq
Lines 119-125 Link Here
119
bin/restover
123
bin/restover
120
bin/restrict
124
bin/restrict
121
bin/revseq
125
bin/revseq
122
bin/runJemboss.csh
123
bin/seealso
126
bin/seealso
124
bin/seqmatchall
127
bin/seqmatchall
125
bin/seqret
128
bin/seqret
Lines 135-145 Link Here
135
bin/sirna
138
bin/sirna
136
bin/sixpack
139
bin/sixpack
137
bin/skipseq
140
bin/skipseq
141
bin/syco
138
bin/splitter
142
bin/splitter
139
bin/stretcher
143
bin/stretcher
140
bin/stssearch
144
bin/stssearch
141
bin/supermatcher
145
bin/supermatcher
142
bin/syco
143
bin/tcode
146
bin/tcode
144
bin/textsearch
147
bin/textsearch
145
bin/tfextract
148
bin/tfextract
Lines 160-177 Link Here
160
bin/wordmatch
163
bin/wordmatch
161
bin/wossname
164
bin/wossname
162
bin/yank
165
bin/yank
166
bin/runJemboss.csh
163
etc/emboss.default.sample
167
etc/emboss.default.sample
168
include/drivers.h
169
include/pdf.h
170
include/plcore.h
171
include/plevent.h
172
include/plplotP.h
173
include/plxwd.h
174
include/metadefs.h
175
include/plConfig.h
176
include/pldebug.h
177
include/plplot.h
178
include/plstrm.h
179
include/plDevs.h
180
include/ajax.h
181
include/ajarch.h
182
include/ajdefine.h
164
include/ajacd.h
183
include/ajacd.h
165
include/ajalign.h
184
include/ajalign.h
166
include/ajarch.h
167
include/ajarr.h
185
include/ajarr.h
168
include/ajassert.h
186
include/ajassert.h
169
include/ajax.h
170
include/ajbase.h
187
include/ajbase.h
171
include/ajcall.h
188
include/ajcall.h
172
include/ajcod.h
189
include/ajcod.h
173
include/ajdan.h
190
include/ajdan.h
174
include/ajdefine.h
175
include/ajdmx.h
191
include/ajdmx.h
176
include/ajdomain.h
192
include/ajdomain.h
177
include/ajexcept.h
193
include/ajexcept.h
Lines 180-187 Link Here
180
include/ajfile.h
196
include/ajfile.h
181
include/ajfmt.h
197
include/ajfmt.h
182
include/ajgraph.h
198
include/ajgraph.h
183
include/ajgraphstruct.h
184
include/ajgraphxml.h
199
include/ajgraphxml.h
200
include/ajgraphstruct.h
185
include/ajhist.h
201
include/ajhist.h
186
include/ajindex.h
202
include/ajindex.h
187
include/ajjava.h
203
include/ajjava.h
Lines 214-220 Link Here
214
include/ajtree.h
230
include/ajtree.h
215
include/ajutil.h
231
include/ajutil.h
216
include/ajvector.h
232
include/ajvector.h
217
include/drivers.h
233
include/pcre.h
234
include/pcre_chartables.c
235
include/pcre_config.h
236
include/pcre_get.c
237
include/pcre_printint.c
238
include/pcre_internal.h
239
include/pcreposix.h
240
include/emboss.h
218
include/embaln.h
241
include/embaln.h
219
include/embcom.h
242
include/embcom.h
220
include/embcons.h
243
include/embcons.h
Lines 232-1226 Link Here
232
include/embmisc.h
255
include/embmisc.h
233
include/embmol.h
256
include/embmol.h
234
include/embnmer.h
257
include/embnmer.h
235
include/emboss.h
236
include/embpat.h
258
include/embpat.h
237
include/embpdb.h
238
include/embprop.h
259
include/embprop.h
260
include/embpdb.h
239
include/embread.h
261
include/embread.h
240
include/embshow.h
241
include/embsig.h
262
include/embsig.h
263
include/embshow.h
242
include/embword.h
264
include/embword.h
243
include/metadefs.h
265
lib/libplplot.so.5
244
include/pcre.h
266
lib/libplplot.so
245
include/pcre_chartables.c
267
lib/libplplot.a
246
include/pcre_config.h
268
lib/libajax.so.3
247
include/pcre_get.c
248
include/pcre_internal.h
249
include/pcre_printint.c
250
include/pcreposix.h
251
include/pdf.h
252
include/plConfig.h
253
include/plDevs.h
254
include/plcore.h
255
include/pldebug.h
256
include/plevent.h
257
include/plplot.h
258
include/plplotP.h
259
include/plstrm.h
260
include/plxwd.h
261
lib/libajax.a
262
lib/libajax.so
269
lib/libajax.so
263
lib/libajax.so.1
270
lib/libajax.a
264
lib/libajaxg.a
271
lib/libajaxg.so.3
265
lib/libajaxg.so
272
lib/libajaxg.so
266
lib/libajaxg.so.1
273
lib/libajaxg.a
267
lib/libnucleus.a
274
lib/libnucleus.so.3
268
lib/libnucleus.so
275
lib/libnucleus.so
269
lib/libnucleus.so.1
276
lib/libnucleus.a
270
lib/libplplot.a
277
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.sty
271
lib/libplplot.so
278
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.tex
272
lib/libplplot.so.5
273
%%DATADIR%%/acd/aaindexextract.acd
274
%%DATADIR%%/acd/abiview.acd
275
%%DATADIR%%/acd/acdc.acd
276
%%DATADIR%%/acd/acdlog.acd
277
%%DATADIR%%/acd/acdpretty.acd
278
%%DATADIR%%/acd/acdtable.acd
279
%%DATADIR%%/acd/acdtrace.acd
280
%%DATADIR%%/acd/acdvalid.acd
281
%%DATADIR%%/acd/ajbad.acd
282
%%DATADIR%%/acd/ajfeatest.acd
283
%%DATADIR%%/acd/ajtest.acd
284
%%DATADIR%%/acd/antigenic.acd
285
%%DATADIR%%/acd/backtranseq.acd
286
%%DATADIR%%/acd/banana.acd
287
%%DATADIR%%/acd/biosed.acd
288
%%DATADIR%%/acd/btwisted.acd
289
%%DATADIR%%/acd/cai.acd
290
%%DATADIR%%/acd/chaos.acd
291
%%DATADIR%%/acd/charge.acd
292
%%DATADIR%%/acd/checktrans.acd
293
%%DATADIR%%/acd/chips.acd
294
%%DATADIR%%/acd/cirdna.acd
295
%%DATADIR%%/acd/codcmp.acd
296
%%DATADIR%%/acd/coderet.acd
297
%%DATADIR%%/acd/codes.english
298
%%DATADIR%%/acd/complex.acd
299
%%DATADIR%%/acd/compseq.acd
300
%%DATADIR%%/acd/cons.acd
301
%%DATADIR%%/acd/corbatest.acd
302
%%DATADIR%%/acd/cpgplot.acd
303
%%DATADIR%%/acd/cpgreport.acd
304
%%DATADIR%%/acd/cusp.acd
305
%%DATADIR%%/acd/cutgextract.acd
306
%%DATADIR%%/acd/cutseq.acd
307
%%DATADIR%%/acd/dan.acd
308
%%DATADIR%%/acd/dbiblast.acd
309
%%DATADIR%%/acd/dbifasta.acd
310
%%DATADIR%%/acd/dbiflat.acd
311
%%DATADIR%%/acd/dbigcg.acd
312
%%DATADIR%%/acd/degapseq.acd
313
%%DATADIR%%/acd/demoalign.acd
314
%%DATADIR%%/acd/demofeatures.acd
315
%%DATADIR%%/acd/demolist.acd
316
%%DATADIR%%/acd/demoreport.acd
317
%%DATADIR%%/acd/demosequence.acd
318
%%DATADIR%%/acd/demostring.acd
319
%%DATADIR%%/acd/demotable.acd
320
%%DATADIR%%/acd/descseq.acd
321
%%DATADIR%%/acd/diffseq.acd
322
%%DATADIR%%/acd/digest.acd
323
%%DATADIR%%/acd/distmat.acd
324
%%DATADIR%%/acd/dotmatcher.acd
325
%%DATADIR%%/acd/dotpath.acd
326
%%DATADIR%%/acd/dottup.acd
327
%%DATADIR%%/acd/dreg.acd
328
%%DATADIR%%/acd/einverted.acd
329
%%DATADIR%%/acd/embossdata.acd
330
%%DATADIR%%/acd/embossversion.acd
331
%%DATADIR%%/acd/emma.acd
332
%%DATADIR%%/acd/emowse.acd
333
%%DATADIR%%/acd/entrails.acd
334
%%DATADIR%%/acd/entret.acd
335
%%DATADIR%%/acd/epestfind.acd
336
%%DATADIR%%/acd/eprimer3.acd
337
%%DATADIR%%/acd/equicktandem.acd
338
%%DATADIR%%/acd/est2genome.acd
339
%%DATADIR%%/acd/etandem.acd
340
%%DATADIR%%/acd/extractfeat.acd
341
%%DATADIR%%/acd/extractseq.acd
342
%%DATADIR%%/acd/findkm.acd
343
%%DATADIR%%/acd/freak.acd
344
%%DATADIR%%/acd/fuzznuc.acd
345
%%DATADIR%%/acd/fuzzpro.acd
346
%%DATADIR%%/acd/fuzztran.acd
347
%%DATADIR%%/acd/garnier.acd
348
%%DATADIR%%/acd/geecee.acd
349
%%DATADIR%%/acd/getorf.acd
350
%%DATADIR%%/acd/giep.acd
351
%%DATADIR%%/acd/groups.standard
352
%%DATADIR%%/acd/helixturnhelix.acd
353
%%DATADIR%%/acd/histogramtest.acd
354
%%DATADIR%%/acd/hmoment.acd
355
%%DATADIR%%/acd/iep.acd
356
%%DATADIR%%/acd/infoalign.acd
357
%%DATADIR%%/acd/infoseq.acd
358
%%DATADIR%%/acd/intconv.acd
359
%%DATADIR%%/acd/isochore.acd
360
%%DATADIR%%/acd/kmrsplitter.acd
361
%%DATADIR%%/acd/kmrunion.acd
362
%%DATADIR%%/acd/knowntypes.standard
363
%%DATADIR%%/acd/lindna.acd
364
%%DATADIR%%/acd/listor.acd
365
%%DATADIR%%/acd/marscan.acd
366
%%DATADIR%%/acd/maskfeat.acd
367
%%DATADIR%%/acd/maskseq.acd
368
%%DATADIR%%/acd/matcher.acd
369
%%DATADIR%%/acd/megamerger.acd
370
%%DATADIR%%/acd/merger.acd
371
%%DATADIR%%/acd/msbar.acd
372
%%DATADIR%%/acd/mwcontam.acd
373
%%DATADIR%%/acd/mwfilter.acd
374
%%DATADIR%%/acd/needle.acd
375
%%DATADIR%%/acd/newcoils.acd
376
%%DATADIR%%/acd/newcpgreport.acd
377
%%DATADIR%%/acd/newcpgseek.acd
378
%%DATADIR%%/acd/newseq.acd
379
%%DATADIR%%/acd/noreturn.acd
380
%%DATADIR%%/acd/notseq.acd
381
%%DATADIR%%/acd/nthseq.acd
382
%%DATADIR%%/acd/octanol.acd
383
%%DATADIR%%/acd/oddcomp.acd
384
%%DATADIR%%/acd/palindrome.acd
385
%%DATADIR%%/acd/pasteseq.acd
386
%%DATADIR%%/acd/patmatdb.acd
387
%%DATADIR%%/acd/patmatmotifs.acd
388
%%DATADIR%%/acd/patmattest.acd
389
%%DATADIR%%/acd/pepcoil.acd
390
%%DATADIR%%/acd/pepinfo.acd
391
%%DATADIR%%/acd/pepnet.acd
392
%%DATADIR%%/acd/pepstats.acd
393
%%DATADIR%%/acd/pepwheel.acd
394
%%DATADIR%%/acd/pepwindow.acd
395
%%DATADIR%%/acd/pepwindowall.acd
396
%%DATADIR%%/acd/plotcon.acd
397
%%DATADIR%%/acd/plotorf.acd
398
%%DATADIR%%/acd/polydot.acd
399
%%DATADIR%%/acd/preg.acd
400
%%DATADIR%%/acd/prettyplot.acd
401
%%DATADIR%%/acd/prettyseq.acd
402
%%DATADIR%%/acd/prima.acd
403
%%DATADIR%%/acd/primers.acd
404
%%DATADIR%%/acd/primersearch.acd
405
%%DATADIR%%/acd/printsextract.acd
406
%%DATADIR%%/acd/profit.acd
407
%%DATADIR%%/acd/prophecy.acd
408
%%DATADIR%%/acd/prophet.acd
409
%%DATADIR%%/acd/prosextract.acd
410
%%DATADIR%%/acd/pscan.acd
411
%%DATADIR%%/acd/psiphi.acd
412
%%DATADIR%%/acd/rebaseextract.acd
413
%%DATADIR%%/acd/recoder.acd
414
%%DATADIR%%/acd/redata.acd
415
%%DATADIR%%/acd/remap.acd
416
%%DATADIR%%/acd/restover.acd
417
%%DATADIR%%/acd/restrict.acd
418
%%DATADIR%%/acd/revseq.acd
419
%%DATADIR%%/acd/sections.standard
420
%%DATADIR%%/acd/seealso.acd
421
%%DATADIR%%/acd/seqinfo.acd
422
%%DATADIR%%/acd/seqmatchall.acd
423
%%DATADIR%%/acd/seqret.acd
424
%%DATADIR%%/acd/seqretall.acd
425
%%DATADIR%%/acd/seqretallfeat.acd
426
%%DATADIR%%/acd/seqretset.acd
427
%%DATADIR%%/acd/seqretsingle.acd
428
%%DATADIR%%/acd/seqretsplit.acd
429
%%DATADIR%%/acd/seqrettype.acd
430
%%DATADIR%%/acd/showalign.acd
431
%%DATADIR%%/acd/showdb.acd
432
%%DATADIR%%/acd/showfeat.acd
433
%%DATADIR%%/acd/showorf.acd
434
%%DATADIR%%/acd/showseq.acd
435
%%DATADIR%%/acd/shuffleseq.acd
436
%%DATADIR%%/acd/sigcleave.acd
437
%%DATADIR%%/acd/silent.acd
438
%%DATADIR%%/acd/sirna.acd
439
%%DATADIR%%/acd/sixpack.acd
440
%%DATADIR%%/acd/skipseq.acd
441
%%DATADIR%%/acd/splitter.acd
442
%%DATADIR%%/acd/stretcher.acd
443
%%DATADIR%%/acd/stssearch.acd
444
%%DATADIR%%/acd/supermatcher.acd
445
%%DATADIR%%/acd/syco.acd
446
%%DATADIR%%/acd/tcode.acd
447
%%DATADIR%%/acd/testplot.acd
448
%%DATADIR%%/acd/textsearch.acd
449
%%DATADIR%%/acd/tfextract.acd
450
%%DATADIR%%/acd/tfm.acd
451
%%DATADIR%%/acd/tfscan.acd
452
%%DATADIR%%/acd/tmap.acd
453
%%DATADIR%%/acd/tranalign.acd
454
%%DATADIR%%/acd/transeq.acd
455
%%DATADIR%%/acd/treetypedisplay.acd
456
%%DATADIR%%/acd/trimest.acd
457
%%DATADIR%%/acd/trimseq.acd
458
%%DATADIR%%/acd/twofeat.acd
459
%%DATADIR%%/acd/union.acd
460
%%DATADIR%%/acd/variables.standard
461
%%DATADIR%%/acd/vectorstrip.acd
462
%%DATADIR%%/acd/water.acd
463
%%DATADIR%%/acd/whichdb.acd
464
%%DATADIR%%/acd/wobble.acd
465
%%DATADIR%%/acd/wordcount.acd
466
%%DATADIR%%/acd/wordmatch.acd
467
%%DATADIR%%/acd/wossname.acd
468
%%DATADIR%%/acd/yank.acd
469
%%DATADIR%%/data/AAINDEX/dummyfile
470
%%DATADIR%%/data/CODONS/Eacc.cut
471
%%DATADIR%%/data/CODONS/Eadenovirus5.cut
472
%%DATADIR%%/data/CODONS/Eadenovirus7.cut
473
%%DATADIR%%/data/CODONS/Eaidlav.cut
474
%%DATADIR%%/data/CODONS/Eanasp.cut
475
%%DATADIR%%/data/CODONS/Eani.cut
476
%%DATADIR%%/data/CODONS/Eani_h.cut
477
%%DATADIR%%/data/CODONS/Eanidmit.cut
478
%%DATADIR%%/data/CODONS/Easn.cut
479
%%DATADIR%%/data/CODONS/Eath.cut
480
%%DATADIR%%/data/CODONS/Eatu.cut
481
%%DATADIR%%/data/CODONS/Eavi.cut
482
%%DATADIR%%/data/CODONS/Ebja.cut
483
%%DATADIR%%/data/CODONS/Ebly.cut
484
%%DATADIR%%/data/CODONS/Ebme.cut
485
%%DATADIR%%/data/CODONS/Ebmo.cut
486
%%DATADIR%%/data/CODONS/Ebna.cut
487
%%DATADIR%%/data/CODONS/Ebov.cut
488
%%DATADIR%%/data/CODONS/Ebovsp.cut
489
%%DATADIR%%/data/CODONS/Ebst.cut
490
%%DATADIR%%/data/CODONS/Ebsu.cut
491
%%DATADIR%%/data/CODONS/Ebsu_h.cut
492
%%DATADIR%%/data/CODONS/Ecac.cut
493
%%DATADIR%%/data/CODONS/Ecal.cut
494
%%DATADIR%%/data/CODONS/Eccr.cut
495
%%DATADIR%%/data/CODONS/Ecel.cut
496
%%DATADIR%%/data/CODONS/Echi.cut
497
%%DATADIR%%/data/CODONS/Echicken.cut
498
%%DATADIR%%/data/CODONS/Echisp.cut
499
%%DATADIR%%/data/CODONS/Echk.cut
500
%%DATADIR%%/data/CODONS/Echmp.cut
501
%%DATADIR%%/data/CODONS/Echnt.cut
502
%%DATADIR%%/data/CODONS/Echos.cut
503
%%DATADIR%%/data/CODONS/Echzm.cut
504
%%DATADIR%%/data/CODONS/Echzmrubp.cut
505
%%DATADIR%%/data/CODONS/Ecpx.cut
506
%%DATADIR%%/data/CODONS/Ecre.cut
507
%%DATADIR%%/data/CODONS/Ecrisp.cut
508
%%DATADIR%%/data/CODONS/Ectr.cut
509
%%DATADIR%%/data/CODONS/Edayhoff.cut
510
%%DATADIR%%/data/CODONS/Eddi.cut
511
%%DATADIR%%/data/CODONS/Eddi_h.cut
512
%%DATADIR%%/data/CODONS/Edog.cut
513
%%DATADIR%%/data/CODONS/Edro.cut
514
%%DATADIR%%/data/CODONS/Edro_h.cut
515
%%DATADIR%%/data/CODONS/Edrosophila.cut
516
%%DATADIR%%/data/CODONS/Eeca.cut
517
%%DATADIR%%/data/CODONS/Eeco.cut
518
%%DATADIR%%/data/CODONS/Eeco_h.cut
519
%%DATADIR%%/data/CODONS/Eecoli.cut
520
%%DATADIR%%/data/CODONS/Ef1.cut
521
%%DATADIR%%/data/CODONS/Efish.cut
522
%%DATADIR%%/data/CODONS/Efmdvpolyp.cut
523
%%DATADIR%%/data/CODONS/Eham.cut
524
%%DATADIR%%/data/CODONS/Ehha.cut
525
%%DATADIR%%/data/CODONS/Ehin.cut
526
%%DATADIR%%/data/CODONS/Ehma.cut
527
%%DATADIR%%/data/CODONS/Ehum.cut
528
%%DATADIR%%/data/CODONS/Ehuman.cut
529
%%DATADIR%%/data/CODONS/Ekla.cut
530
%%DATADIR%%/data/CODONS/Ekpn.cut
531
%%DATADIR%%/data/CODONS/Ella.cut
532
%%DATADIR%%/data/CODONS/Emac.cut
533
%%DATADIR%%/data/CODONS/Emaize.cut
534
%%DATADIR%%/data/CODONS/Emam_h.cut
535
%%DATADIR%%/data/CODONS/Emixlg.cut
536
%%DATADIR%%/data/CODONS/Emouse.cut
537
%%DATADIR%%/data/CODONS/Emsa.cut
538
%%DATADIR%%/data/CODONS/Emse.cut
539
%%DATADIR%%/data/CODONS/Emta.cut
540
%%DATADIR%%/data/CODONS/Emtu.cut
541
%%DATADIR%%/data/CODONS/Emus.cut
542
%%DATADIR%%/data/CODONS/Emussp.cut
543
%%DATADIR%%/data/CODONS/Emva.cut
544
%%DATADIR%%/data/CODONS/Emze.cut
545
%%DATADIR%%/data/CODONS/Emzecp.cut
546
%%DATADIR%%/data/CODONS/Encr.cut
547
%%DATADIR%%/data/CODONS/Eneu.cut
548
%%DATADIR%%/data/CODONS/Engo.cut
549
%%DATADIR%%/data/CODONS/Eoncsp.cut
550
%%DATADIR%%/data/CODONS/Epae.cut
551
%%DATADIR%%/data/CODONS/Epea.cut
552
%%DATADIR%%/data/CODONS/Epet.cut
553
%%DATADIR%%/data/CODONS/Epfa.cut
554
%%DATADIR%%/data/CODONS/Ephix174.cut
555
%%DATADIR%%/data/CODONS/Ephv.cut
556
%%DATADIR%%/data/CODONS/Ephy.cut
557
%%DATADIR%%/data/CODONS/Epig.cut
558
%%DATADIR%%/data/CODONS/Epolyomaa2.cut
559
%%DATADIR%%/data/CODONS/Epombe.cut
560
%%DATADIR%%/data/CODONS/Epombecai.cut
561
%%DATADIR%%/data/CODONS/Epot.cut
562
%%DATADIR%%/data/CODONS/Eppu.cut
563
%%DATADIR%%/data/CODONS/Epse.cut
564
%%DATADIR%%/data/CODONS/Epsy.cut
565
%%DATADIR%%/data/CODONS/Epvu.cut
566
%%DATADIR%%/data/CODONS/Erab.cut
567
%%DATADIR%%/data/CODONS/Erabbit.cut
568
%%DATADIR%%/data/CODONS/Erabsp.cut
569
%%DATADIR%%/data/CODONS/Erat.cut
570
%%DATADIR%%/data/CODONS/Eratsp.cut
571
%%DATADIR%%/data/CODONS/Erca.cut
572
%%DATADIR%%/data/CODONS/Erhm.cut
573
%%DATADIR%%/data/CODONS/Eric.cut
574
%%DATADIR%%/data/CODONS/Erle.cut
575
%%DATADIR%%/data/CODONS/Erme.cut
576
%%DATADIR%%/data/CODONS/Ersp.cut
577
%%DATADIR%%/data/CODONS/Esalsp.cut
578
%%DATADIR%%/data/CODONS/Esau.cut
579
%%DATADIR%%/data/CODONS/Esco.cut
580
%%DATADIR%%/data/CODONS/Esgi.cut
581
%%DATADIR%%/data/CODONS/Eshp.cut
582
%%DATADIR%%/data/CODONS/Eshpsp.cut
583
%%DATADIR%%/data/CODONS/Esli.cut
584
%%DATADIR%%/data/CODONS/Eslm.cut
585
%%DATADIR%%/data/CODONS/Esma.cut
586
%%DATADIR%%/data/CODONS/Esmi.cut
587
%%DATADIR%%/data/CODONS/Esmu.cut
588
%%DATADIR%%/data/CODONS/Esoy.cut
589
%%DATADIR%%/data/CODONS/Espi.cut
590
%%DATADIR%%/data/CODONS/Espn.cut
591
%%DATADIR%%/data/CODONS/Espo.cut
592
%%DATADIR%%/data/CODONS/Espo_h.cut
593
%%DATADIR%%/data/CODONS/Espu.cut
594
%%DATADIR%%/data/CODONS/Esta.cut
595
%%DATADIR%%/data/CODONS/Esty.cut
596
%%DATADIR%%/data/CODONS/Esus.cut
597
%%DATADIR%%/data/CODONS/Esv40.cut
598
%%DATADIR%%/data/CODONS/Esyhsp.cut
599
%%DATADIR%%/data/CODONS/Esynsp.cut
600
%%DATADIR%%/data/CODONS/Etbr.cut
601
%%DATADIR%%/data/CODONS/Etcr.cut
602
%%DATADIR%%/data/CODONS/Eter.cut
603
%%DATADIR%%/data/CODONS/Etetsp.cut
604
%%DATADIR%%/data/CODONS/Etob.cut
605
%%DATADIR%%/data/CODONS/Etobcp.cut
606
%%DATADIR%%/data/CODONS/Etom.cut
607
%%DATADIR%%/data/CODONS/Etrb.cut
608
%%DATADIR%%/data/CODONS/Evco.cut
609
%%DATADIR%%/data/CODONS/Ewht.cut
610
%%DATADIR%%/data/CODONS/Exel.cut
611
%%DATADIR%%/data/CODONS/Exenopus.cut
612
%%DATADIR%%/data/CODONS/Eyeast.cut
613
%%DATADIR%%/data/CODONS/Eyeastcai.cut
614
%%DATADIR%%/data/CODONS/Eyen.cut
615
%%DATADIR%%/data/CODONS/Eysc.cut
616
%%DATADIR%%/data/CODONS/Eysc_h.cut
617
%%DATADIR%%/data/CODONS/Eyscmt.cut
618
%%DATADIR%%/data/CODONS/Eysp.cut
619
%%DATADIR%%/data/CODONS/Ezebrafish.cut
620
%%DATADIR%%/data/CODONS/Ezma.cut
621
%%DATADIR%%/data/EBLOSUM30
622
%%DATADIR%%/data/EBLOSUM35
623
%%DATADIR%%/data/EBLOSUM40
624
%%DATADIR%%/data/EBLOSUM45
625
%%DATADIR%%/data/EBLOSUM50
626
%%DATADIR%%/data/EBLOSUM55
627
%%DATADIR%%/data/EBLOSUM60
628
%%DATADIR%%/data/EBLOSUM62
629
%%DATADIR%%/data/EBLOSUM62-12
630
%%DATADIR%%/data/EBLOSUM65
631
%%DATADIR%%/data/EBLOSUM70
632
%%DATADIR%%/data/EBLOSUM75
633
%%DATADIR%%/data/EBLOSUM80
634
%%DATADIR%%/data/EBLOSUM85
635
%%DATADIR%%/data/EBLOSUM90
636
%%DATADIR%%/data/EBLOSUMN
637
%%DATADIR%%/data/EDNAFULL
638
%%DATADIR%%/data/EDNAMAT
639
%%DATADIR%%/data/EGC.0
640
%%DATADIR%%/data/EGC.1
641
%%DATADIR%%/data/EGC.10
642
%%DATADIR%%/data/EGC.11
643
%%DATADIR%%/data/EGC.12
644
%%DATADIR%%/data/EGC.13
645
%%DATADIR%%/data/EGC.14
646
%%DATADIR%%/data/EGC.15
647
%%DATADIR%%/data/EGC.16
648
%%DATADIR%%/data/EGC.2
649
%%DATADIR%%/data/EGC.21
650
%%DATADIR%%/data/EGC.22
651
%%DATADIR%%/data/EGC.23
652
%%DATADIR%%/data/EGC.3
653
%%DATADIR%%/data/EGC.4
654
%%DATADIR%%/data/EGC.5
655
%%DATADIR%%/data/EGC.6
656
%%DATADIR%%/data/EGC.9
657
%%DATADIR%%/data/ENUC.4.2
658
%%DATADIR%%/data/ENUC.4.4
659
%%DATADIR%%/data/EPAM10
660
%%DATADIR%%/data/EPAM100
661
%%DATADIR%%/data/EPAM110
662
%%DATADIR%%/data/EPAM120
663
%%DATADIR%%/data/EPAM130
664
%%DATADIR%%/data/EPAM140
665
%%DATADIR%%/data/EPAM150
666
%%DATADIR%%/data/EPAM160
667
%%DATADIR%%/data/EPAM170
668
%%DATADIR%%/data/EPAM180
669
%%DATADIR%%/data/EPAM190
670
%%DATADIR%%/data/EPAM20
671
%%DATADIR%%/data/EPAM200
672
%%DATADIR%%/data/EPAM210
673
%%DATADIR%%/data/EPAM220
674
%%DATADIR%%/data/EPAM230
675
%%DATADIR%%/data/EPAM240
676
%%DATADIR%%/data/EPAM250
677
%%DATADIR%%/data/EPAM260
678
%%DATADIR%%/data/EPAM270
679
%%DATADIR%%/data/EPAM280
680
%%DATADIR%%/data/EPAM290
681
%%DATADIR%%/data/EPAM30
682
%%DATADIR%%/data/EPAM300
683
%%DATADIR%%/data/EPAM310
684
%%DATADIR%%/data/EPAM320
685
%%DATADIR%%/data/EPAM330
686
%%DATADIR%%/data/EPAM340
687
%%DATADIR%%/data/EPAM350
688
%%DATADIR%%/data/EPAM360
689
%%DATADIR%%/data/EPAM370
690
%%DATADIR%%/data/EPAM380
691
%%DATADIR%%/data/EPAM390
692
%%DATADIR%%/data/EPAM40
693
%%DATADIR%%/data/EPAM400
694
%%DATADIR%%/data/EPAM410
695
%%DATADIR%%/data/EPAM420
696
%%DATADIR%%/data/EPAM430
697
%%DATADIR%%/data/EPAM440
698
%%DATADIR%%/data/EPAM450
699
%%DATADIR%%/data/EPAM460
700
%%DATADIR%%/data/EPAM470
701
%%DATADIR%%/data/EPAM480
702
%%DATADIR%%/data/EPAM490
703
%%DATADIR%%/data/EPAM50
704
%%DATADIR%%/data/EPAM500
705
%%DATADIR%%/data/EPAM60
706
%%DATADIR%%/data/EPAM70
707
%%DATADIR%%/data/EPAM80
708
%%DATADIR%%/data/EPAM90
709
%%DATADIR%%/data/Eaa_acc_surface.dat
710
%%DATADIR%%/data/Eaa_hydropathy.dat
711
%%DATADIR%%/data/Eaa_properties.dat
712
%%DATADIR%%/data/Eamino.dat
713
%%DATADIR%%/data/Eangles.dat
714
%%DATADIR%%/data/Eangles_tri.dat
715
%%DATADIR%%/data/Eantigenic.dat
716
%%DATADIR%%/data/Ebases.iub
717
%%DATADIR%%/data/Edayhoff.freq
718
%%DATADIR%%/data/Edna.melt
719
%%DATADIR%%/data/Eembl.ior
720
%%DATADIR%%/data/Eenergy.dat
721
%%DATADIR%%/data/Efeatures.embl
722
%%DATADIR%%/data/Efeatures.emboss
723
%%DATADIR%%/data/Efeatures.gff
724
%%DATADIR%%/data/Efeatures.pir
725
%%DATADIR%%/data/Efeatures.protein
726
%%DATADIR%%/data/Efeatures.swiss
727
%%DATADIR%%/data/Efreqs.dat
728
%%DATADIR%%/data/Ehet.dat
729
%%DATADIR%%/data/Ehth.dat
730
%%DATADIR%%/data/Ehth87.dat
731
%%DATADIR%%/data/Emass.dat
732
%%DATADIR%%/data/Emassmod.dat
733
%%DATADIR%%/data/Ememe.dat
734
%%DATADIR%%/data/Emwfilter.dat
735
%%DATADIR%%/data/Enakai.dat
736
%%DATADIR%%/data/Epepcoil.dat
737
%%DATADIR%%/data/Epk.dat
738
%%DATADIR%%/data/Epprofile
739
%%DATADIR%%/data/Eprior1.plib
740
%%DATADIR%%/data/Eprior30.plib
741
%%DATADIR%%/data/Erna.melt
742
%%DATADIR%%/data/Esig.euk
743
%%DATADIR%%/data/Esig.pro
744
%%DATADIR%%/data/Etags.embl
745
%%DATADIR%%/data/Etags.emboss
746
%%DATADIR%%/data/Etags.gff
747
%%DATADIR%%/data/Etags.pir
748
%%DATADIR%%/data/Etags.protein
749
%%DATADIR%%/data/Etags.swiss
750
%%DATADIR%%/data/Etcode.dat
751
%%DATADIR%%/data/Evdw.dat
752
%%DATADIR%%/data/Ewhite-wimley.dat
753
%%DATADIR%%/data/PRINTS/dummyfile
754
%%DATADIR%%/data/PROSITE/dummyfile
755
%%DATADIR%%/data/REBASE/dummyfile
756
%%DATADIR%%/data/embossre.equ
757
%%DATADIR%%/emboss.default.template
758
%%DATADIR%%/jemboss/LICENSE
759
%%DATADIR%%/jemboss/README
760
%%DATADIR%%/jemboss/api/allclasses-frame.html
761
%%DATADIR%%/jemboss/api/deprecated-list.html
762
%%DATADIR%%/jemboss/api/getClasses.pl
763
%%DATADIR%%/jemboss/api/help-doc.html
764
%%DATADIR%%/jemboss/api/index-all.html
765
%%DATADIR%%/jemboss/api/index.html
766
%%DATADIR%%/jemboss/api/makeDocs.csh
767
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.html
768
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.winExit.html
769
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossLogo.html
770
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossParams.html
771
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/BuildProgramMenu.html
772
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ResultsMenuBar.html
773
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SetUpMenuBar.html
774
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowResultSet.html
775
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowSavedResults.html
776
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SwingWorker.html
777
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/DragTree.html
778
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.PopupListener.html
779
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.html
780
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileNode.html
781
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileSaving.html
782
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/BuildJembossForm.html
783
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.html
784
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.myComboUI.html
785
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/ListFilePanel.html
786
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SectionPanel.html
787
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetInFileCard.html
788
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetOutFileCard.html
789
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.DecimalNumberDocument.html
790
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.html
791
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.WholeNumberDocument.html
792
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.html
793
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldSink.html
794
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.html
795
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/FileChooser.html
796
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.html
797
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.html
798
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.html
799
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.html
800
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Database.html
801
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.HorizontalMenu.html
802
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.html
803
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Splash.html
804
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdFunResolve.html
805
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdVarResolve.html
806
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Ajax.html
807
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Dependent.html
808
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/ParseAcd.html
809
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationFields.html
810
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationParam.html
811
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/JembossProcess.html
812
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ListFile.html
813
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ResultList.html
814
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/RunEmbossApplication.html
815
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/AuthPopup.html
816
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/CallAjax.html
817
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/GetWossname.html
818
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossRun.html
819
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossSoapException.html
820
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PendingResults.html
821
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PrivateRequest.html
822
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/ResListView.html
823
%%DATADIR%%/jemboss/api/overview-tree.html
824
%%DATADIR%%/jemboss/api/package-list
825
%%DATADIR%%/jemboss/api/packages.html
826
%%DATADIR%%/jemboss/api/serialized-form.html
827
%%DATADIR%%/jemboss/api/stylesheet.css
828
%%DATADIR%%/jemboss/images/Backward_arrow_button.gif
829
%%DATADIR%%/jemboss/images/Forward_arrow_button.gif
830
%%DATADIR%%/jemboss/images/Go_button.gif
831
%%DATADIR%%/jemboss/images/Information_button.gif
832
%%DATADIR%%/jemboss/images/Jemboss_logo_greyback.gif
833
%%DATADIR%%/jemboss/images/Jemboss_logo_large.gif
834
%%DATADIR%%/jemboss/images/Jemboss_logo_small.gif
835
%%DATADIR%%/jemboss/images/Job_manager_button.gif
836
%%DATADIR%%/jemboss/images/Refresh_button.gif
837
%%DATADIR%%/jemboss/images/Refresh_button2.gif
838
%%DATADIR%%/jemboss/lib/JembossPrintAlignment.jar
839
%%DATADIR%%/jemboss/lib/README
840
%%DATADIR%%/jemboss/lib/activation.jar
841
%%DATADIR%%/jemboss/lib/axis/axis-ant.jar
842
%%DATADIR%%/jemboss/lib/axis/axis.jar
843
%%DATADIR%%/jemboss/lib/axis/commons-discovery.jar
844
%%DATADIR%%/jemboss/lib/axis/commons-logging.jar
845
%%DATADIR%%/jemboss/lib/axis/jaxrpc.jar
846
%%DATADIR%%/jemboss/lib/axis/log4j-1.2.8.jar
847
%%DATADIR%%/jemboss/lib/axis/saaj.jar
848
%%DATADIR%%/jemboss/lib/axis/servlet.jar
849
%%DATADIR%%/jemboss/lib/axis/wsdl4j.jar
850
%%DATADIR%%/jemboss/lib/grout.jar
851
%%DATADIR%%/jemboss/lib/jakarta-regexp-1.2.jar
852
%%DATADIR%%/jemboss/lib/jalview.jar
853
%%DATADIR%%/jemboss/lib/mail.jar
854
%%DATADIR%%/jemboss/lib/xerces.jar
855
%%DATADIR%%/jemboss/org/emboss/jemboss/Jemboss.java
856
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossJarUtil.java
857
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossLogo.java
858
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossParams.java
859
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Block.java
860
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/DNADraw.java
861
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/EmbossCirdnaReader.java
862
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/GeneticMarker.java
863
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/LineAttribute.java
864
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/PrintDNAImage.java
865
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/RestrictionEnzyme.java
866
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Ticks.java
867
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Wizard.java
868
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignApplet.java
869
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignJFrame.java
870
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourJFrame.java
871
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourMenu.java
872
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourPanel.java
873
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Consensus.java
874
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ConsensusOptions.java
875
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GraphicSequenceCollection.java
876
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrame.java
877
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameEvent.java
878
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameListener.java
879
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollection.java
880
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionEvent.java
881
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionListener.java
882
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequence.java
883
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequenceJPanel.java
884
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/IDTableJFrame.java
885
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Matrix.java
886
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/MatrixJFrame.java
887
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Paste.java
888
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PatternJFrame.java
889
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PlotConsensus.java
890
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrettyPlotJFrame.java
891
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignment.java
892
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignmentImage.java
893
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintableJTable.java
894
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Sequence.java
895
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceJPanel.java
896
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceNameJButton.java
897
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceProperties.java
898
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceReader.java
899
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceSaver.java
900
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/Graph2DPlot.java
901
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/PrintPlot.java
902
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/AdvancedOptions.java
903
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Browser.java
904
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java
905
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Favorites.java
906
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ImageIconJPanel.java
907
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/KeywordSearch.java
908
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/LaunchJalView.java
909
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/MemoryComboBox.java
910
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ResultsMenuBar.java
911
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ScrollPanel.java
912
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceData.java
913
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceList.java
914
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SetUpMenuBar.java
915
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowResultSet.java
916
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowSavedResults.java
917
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SplashThread.java
918
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SwingWorker.java
919
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/DragTree.java
920
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileEditorDisplay.java
921
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileNode.java
922
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSave.java
923
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSaving.java
924
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalAndRemoteFileTreeFrame.java
925
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalTreeToolBar.java
926
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteDragTree.java
927
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileNode.java
928
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileTreePanel.java
929
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/AlignFormat.java
930
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ApplicationNamePanel.java
931
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java
932
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/JembossComboPopup.java
933
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/LabelTextBox.java
934
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ListFilePanel.java
935
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/MultiLineToolTipUI.java
936
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/PlafMacros.java
937
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ReportFormat.java
938
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SectionPanel.java
939
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/Separator.java
940
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetInFileCard.java
941
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetOutFileCard.java
942
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldFloat.java
943
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldInt.java
944
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldSink.java
945
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.java
946
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/FileChooser.java
947
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java
948
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.java
949
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.java
950
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.java
951
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/Database.java
952
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/ProgList.java
953
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdFunResolve.java
954
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVarResolve.java
955
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVariableResolve.java
956
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Ajax.java
957
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AjaxUtil.java
958
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Dependent.java
959
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/ParseAcd.java
960
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationFields.java
961
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationParam.java
962
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/BatchUpdateTimer.java
963
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/JembossProcess.java
964
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ListFile.java
965
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultList.java
966
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultsUpdateTimer.java
967
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication.java
968
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication2.java
969
%%DATADIR%%/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java
970
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossAuthServer.java
971
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileAuthServer.java
972
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileServer.java
973
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossServer.java
974
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossThread.java
975
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPrivateServer.java
976
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPublicServer.java
977
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/AuthPopup.java
978
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/CallAjax.java
979
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileList.java
980
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileRoots.java
981
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetACD.java
982
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetHelp.java
983
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetWossname.java
984
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossRun.java
985
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossSoapException.java
986
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/MakeFileSafe.java
987
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PendingResults.java
988
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PrivateRequest.java
989
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PublicRequest.java
990
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ServerSetup.java
991
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ShowDB.java
992
%%DATADIR%%/jemboss/readme.html
993
%%DATADIR%%/jemboss/resources/filemgr.html
994
%%DATADIR%%/jemboss/resources/jemboss.properties
995
%%DATADIR%%/jemboss/resources/readme.html
996
%%DATADIR%%/jemboss/resources/readmeAlign.html
997
%%DATADIR%%/jemboss/resources/readmeDNADraw.html
998
%%DATADIR%%/jemboss/resources/results.html
999
%%DATADIR%%/jemboss/resources/seqList.html
1000
%%DATADIR%%/jemboss/resources/version
1001
%%DATADIR%%/jemboss/runJemboss.sh
1002
%%DATADIR%%/jemboss/utils/README
1003
%%DATADIR%%/jemboss/utils/install-jemboss-server.sh
1004
%%DATADIR%%/jemboss/utils/keys.sh
1005
%%DATADIR%%/jemboss/utils/makeFileManagerJNLP.sh
1006
%%DATADIR%%/jemboss/utils/makeJNLP.sh
1007
%%DATADIR%%/jemboss/utils/makeJar.csh
1008
%%DATADIR%%/jemboss/utils/template.html
1009
%%DATADIR%%/plstnd5.fnt
1010
%%DATADIR%%/plxtnd5.fnt
1011
%%DATADIR%%/test/data/aaindex1.test
1012
%%DATADIR%%/test/data/aligna.dna
1013
%%DATADIR%%/test/data/aligna.prot
1014
%%DATADIR%%/test/data/alignapart.dna
1015
%%DATADIR%%/test/data/alignapart.prot
1016
%%DATADIR%%/test/data/alignb.dna
1017
%%DATADIR%%/test/data/alignb.prot
1018
%%DATADIR%%/test/data/cutg.codon
1019
%%DATADIR%%/test/data/dna.acedb
1020
%%DATADIR%%/test/data/dna.aln
1021
%%DATADIR%%/test/data/dna.asn1
1022
%%DATADIR%%/test/data/dna.codata
1023
%%DATADIR%%/test/data/dna.embl
1024
%%DATADIR%%/test/data/dna.fasta
1025
%%DATADIR%%/test/data/dna.fitch
1026
%%DATADIR%%/test/data/dna.gcg
1027
%%DATADIR%%/test/data/dna.gcg8
1028
%%DATADIR%%/test/data/dna.genbank
1029
%%DATADIR%%/test/data/dna.ig
1030
%%DATADIR%%/test/data/dna.m-acedb
1031
%%DATADIR%%/test/data/dna.m-codata
1032
%%DATADIR%%/test/data/dna.m-embl
1033
%%DATADIR%%/test/data/dna.m-fasta
1034
%%DATADIR%%/test/data/dna.m-fasta-long
1035
%%DATADIR%%/test/data/dna.m-ncbi
1036
%%DATADIR%%/test/data/dna.m-strider
1037
%%DATADIR%%/test/data/dna.msf
1038
%%DATADIR%%/test/data/dna.msf8
1039
%%DATADIR%%/test/data/dna.ncbi
1040
%%DATADIR%%/test/data/dna.phylip
1041
%%DATADIR%%/test/data/dna.phylip3
1042
%%DATADIR%%/test/data/dna.staden
1043
%%DATADIR%%/test/data/dna.strider
1044
%%DATADIR%%/test/data/dna.text
1045
%%DATADIR%%/test/data/feat.emft
1046
%%DATADIR%%/test/data/feat.fasta
1047
%%DATADIR%%/test/data/feat.pir
1048
%%DATADIR%%/test/data/mw1.dat
1049
%%DATADIR%%/test/data/mw2.dat
1050
%%DATADIR%%/test/data/mw3.dat
1051
%%DATADIR%%/test/data/paamir.pep
1052
%%DATADIR%%/test/data/pax6_cdna.fasta
1053
%%DATADIR%%/test/data/prints.test
1054
%%DATADIR%%/test/data/prosite.dat
1055
%%DATADIR%%/test/data/prosite.doc
1056
%%DATADIR%%/test/data/prot.acedb
1057
%%DATADIR%%/test/data/prot.codata
1058
%%DATADIR%%/test/data/prot.fasta
1059
%%DATADIR%%/test/data/prot.gcg
1060
%%DATADIR%%/test/data/prot.gcg8
1061
%%DATADIR%%/test/data/prot.ig
1062
%%DATADIR%%/test/data/prot.m-acedb
1063
%%DATADIR%%/test/data/prot.m-codata
1064
%%DATADIR%%/test/data/prot.m-fasta
1065
%%DATADIR%%/test/data/prot.m-nbrf
1066
%%DATADIR%%/test/data/prot.m-ncbi
1067
%%DATADIR%%/test/data/prot.m-swiss
1068
%%DATADIR%%/test/data/prot.nbrf
1069
%%DATADIR%%/test/data/prot.ncbi
1070
%%DATADIR%%/test/data/prot.swiss
1071
%%DATADIR%%/test/data/prot.text
1072
%%DATADIR%%/test/data/site.dat
1073
%%DATADIR%%/test/data/tranalign.pep
1074
%%DATADIR%%/test/data/tranalign.seq
1075
%%DATADIR%%/test/data/withrefm
1076
%%DATADIR%%/test/data/z83307.seq
1077
%%DATADIR%%/test/embl/acnum.hit
1078
%%DATADIR%%/test/embl/acnum.trg
1079
%%DATADIR%%/test/embl/des.hit
1080
%%DATADIR%%/test/embl/des.trg
1081
%%DATADIR%%/test/embl/division.lkp
1082
%%DATADIR%%/test/embl/entrynam.idx
1083
%%DATADIR%%/test/embl/est.dat
1084
%%DATADIR%%/test/embl/fun.dat
1085
%%DATADIR%%/test/embl/hum1.dat
1086
%%DATADIR%%/test/embl/inv.dat
1087
%%DATADIR%%/test/embl/keyword.hit
1088
%%DATADIR%%/test/embl/keyword.trg
1089
%%DATADIR%%/test/embl/pln.dat
1090
%%DATADIR%%/test/embl/pro.dat
1091
%%DATADIR%%/test/embl/rod.dat
1092
%%DATADIR%%/test/embl/seqvn.hit
1093
%%DATADIR%%/test/embl/seqvn.trg
1094
%%DATADIR%%/test/embl/sts.dat
1095
%%DATADIR%%/test/embl/taxon.hit
1096
%%DATADIR%%/test/embl/taxon.trg
1097
%%DATADIR%%/test/embl/vrl.dat
1098
%%DATADIR%%/test/embl/vrt.dat
1099
%%DATADIR%%/test/gb/acnum.hit
1100
%%DATADIR%%/test/gb/acnum.trg
1101
%%DATADIR%%/test/gb/ba.ref
1102
%%DATADIR%%/test/gb/ba.seq
1103
%%DATADIR%%/test/gb/des.hit
1104
%%DATADIR%%/test/gb/des.trg
1105
%%DATADIR%%/test/gb/division.lkp
1106
%%DATADIR%%/test/gb/entrynam.idx
1107
%%DATADIR%%/test/gb/htg.ref
1108
%%DATADIR%%/test/gb/htg.seq
1109
%%DATADIR%%/test/gb/keyword.hit
1110
%%DATADIR%%/test/gb/keyword.trg
1111
%%DATADIR%%/test/gb/seqvn.hit
1112
%%DATADIR%%/test/gb/seqvn.trg
1113
%%DATADIR%%/test/gb/taxon.hit
1114
%%DATADIR%%/test/gb/taxon.trg
1115
%%DATADIR%%/test/genbank/acnum.hit
1116
%%DATADIR%%/test/genbank/acnum.trg
1117
%%DATADIR%%/test/genbank/des.hit
1118
%%DATADIR%%/test/genbank/des.trg
1119
%%DATADIR%%/test/genbank/division.lkp
1120
%%DATADIR%%/test/genbank/entrynam.idx
1121
%%DATADIR%%/test/genbank/gbbct1.seq
1122
%%DATADIR%%/test/genbank/gbest1.seq
1123
%%DATADIR%%/test/genbank/gbinv1.seq
1124
%%DATADIR%%/test/genbank/gbpln1.seq
1125
%%DATADIR%%/test/genbank/gbpln2.seq
1126
%%DATADIR%%/test/genbank/gbpri1.seq
1127
%%DATADIR%%/test/genbank/gbrod1.seq
1128
%%DATADIR%%/test/genbank/gbsts1.seq
1129
%%DATADIR%%/test/genbank/gbvrl1.seq
1130
%%DATADIR%%/test/genbank/gbvrt.seq
1131
%%DATADIR%%/test/genbank/keyword.hit
1132
%%DATADIR%%/test/genbank/keyword.trg
1133
%%DATADIR%%/test/genbank/seqvn.hit
1134
%%DATADIR%%/test/genbank/seqvn.trg
1135
%%DATADIR%%/test/genbank/taxon.hit
1136
%%DATADIR%%/test/genbank/taxon.trg
1137
%%DATADIR%%/test/pir/acnum.hit
1138
%%DATADIR%%/test/pir/acnum.trg
1139
%%DATADIR%%/test/pir/des.hit
1140
%%DATADIR%%/test/pir/des.trg
1141
%%DATADIR%%/test/pir/division.lkp
1142
%%DATADIR%%/test/pir/entrynam.idx
1143
%%DATADIR%%/test/pir/keyword.hit
1144
%%DATADIR%%/test/pir/keyword.trg
1145
%%DATADIR%%/test/pir/pir1.header
1146
%%DATADIR%%/test/pir/pir1.names
1147
%%DATADIR%%/test/pir/pir1.numbers
1148
%%DATADIR%%/test/pir/pir1.offset
1149
%%DATADIR%%/test/pir/pir1.ref
1150
%%DATADIR%%/test/pir/pir1.seq
1151
%%DATADIR%%/test/pir/pir2.header
1152
%%DATADIR%%/test/pir/pir2.names
1153
%%DATADIR%%/test/pir/pir2.numbers
1154
%%DATADIR%%/test/pir/pir2.offset
1155
%%DATADIR%%/test/pir/pir2.ref
1156
%%DATADIR%%/test/pir/pir2.seq
1157
%%DATADIR%%/test/pir/pir3.header
1158
%%DATADIR%%/test/pir/pir3.names
1159
%%DATADIR%%/test/pir/pir3.numbers
1160
%%DATADIR%%/test/pir/pir3.offset
1161
%%DATADIR%%/test/pir/pir3.ref
1162
%%DATADIR%%/test/pir/pir3.seq
1163
%%DATADIR%%/test/pir/pir4.header
1164
%%DATADIR%%/test/pir/pir4.names
1165
%%DATADIR%%/test/pir/pir4.numbers
1166
%%DATADIR%%/test/pir/pir4.offset
1167
%%DATADIR%%/test/pir/pir4.ref
1168
%%DATADIR%%/test/pir/pir4.seq
1169
%%DATADIR%%/test/pir/taxon.hit
1170
%%DATADIR%%/test/pir/taxon.trg
1171
%%DATADIR%%/test/swiss/acnum.hit
1172
%%DATADIR%%/test/swiss/acnum.trg
1173
%%DATADIR%%/test/swiss/des.hit
1174
%%DATADIR%%/test/swiss/des.trg
1175
%%DATADIR%%/test/swiss/division.lkp
1176
%%DATADIR%%/test/swiss/entrynam.idx
1177
%%DATADIR%%/test/swiss/keyword.hit
1178
%%DATADIR%%/test/swiss/keyword.trg
1179
%%DATADIR%%/test/swiss/seq.dat
1180
%%DATADIR%%/test/swiss/seqvn.hit
1181
%%DATADIR%%/test/swiss/seqvn.trg
1182
%%DATADIR%%/test/swiss/taxon.hit
1183
%%DATADIR%%/test/swiss/taxon.trg
1184
%%DATADIR%%/test/swnew/acnum.hit
1185
%%DATADIR%%/test/swnew/acnum.trg
1186
%%DATADIR%%/test/swnew/des.hit
1187
%%DATADIR%%/test/swnew/des.trg
1188
%%DATADIR%%/test/swnew/division.lkp
1189
%%DATADIR%%/test/swnew/entrynam.idx
1190
%%DATADIR%%/test/swnew/keyword.hit
1191
%%DATADIR%%/test/swnew/keyword.trg
1192
%%DATADIR%%/test/swnew/new_seq.dat
1193
%%DATADIR%%/test/swnew/seqvn.hit
1194
%%DATADIR%%/test/swnew/seqvn.trg
1195
%%DATADIR%%/test/swnew/taxon.hit
1196
%%DATADIR%%/test/swnew/taxon.trg
1197
%%DATADIR%%/test/swnew/upd_ann.dat
1198
%%DATADIR%%/test/swnew/upd_seq.dat
1199
%%DATADIR%%/test/wormpep/acnum.hit
1200
%%DATADIR%%/test/wormpep/acnum.trg
1201
%%DATADIR%%/test/wormpep/des.hit
1202
%%DATADIR%%/test/wormpep/des.trg
1203
%%DATADIR%%/test/wormpep/division.lkp
1204
%%DATADIR%%/test/wormpep/entrynam.idx
1205
%%DATADIR%%/test/wormpep/wormpep
1206
%%PORTDOCS%%%%DOCSDIR%%/manuals/EMBOSS-FreeBSD-HOWTO.txt
1207
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.aux
279
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.aux
1208
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.dvi
280
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.dvi
1209
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.log
281
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.log
1210
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.pdf
282
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.pdf
1211
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.ps
283
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.ps
1212
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.sty
1213
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.tex
1214
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.toc
284
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.toc
1215
%%PORTDOCS%%%%DOCSDIR%%/manuals/adminguide.tar.gz
285
%%PORTDOCS%%%%DOCSDIR%%/manuals/adminguide.tar.gz
1216
%%PORTDOCS%%%%DOCSDIR%%/manuals/domainatrix.doc
286
%%PORTDOCS%%%%DOCSDIR%%/manuals/domainatrix.doc
1217
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss.sty
287
%%PORTDOCS%%%%DOCSDIR%%/manuals/program.ps.gz
288
%%PORTDOCS%%%%DOCSDIR%%/manuals/EMBOSS-FreeBSD-HOWTO.txt
1218
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.pdf
289
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.pdf
1219
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.ps
290
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.ps
291
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss.sty
1220
%%PORTDOCS%%%%DOCSDIR%%/manuals/fdl.txt
292
%%PORTDOCS%%%%DOCSDIR%%/manuals/fdl.txt
1221
%%PORTDOCS%%%%DOCSDIR%%/manuals/program.ps.gz
293
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.html
1222
%%PORTDOCS%%%%DOCSDIR%%/programs/html/aaindexextract.html
294
%%PORTDOCS%%%%DOCSDIR%%/programs/html/listor.html
295
%%PORTDOCS%%%%DOCSDIR%%/programs/html/marscan.html
296
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskfeat.html
297
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskseq.html
298
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matcher.html
299
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matgen3d.html
300
%%PORTDOCS%%%%DOCSDIR%%/programs/html/megamerger.html
301
%%PORTDOCS%%%%DOCSDIR%%/programs/html/meme.html
302
%%PORTDOCS%%%%DOCSDIR%%/programs/html/menus_group.html
303
%%PORTDOCS%%%%DOCSDIR%%/programs/html/merger.html
304
%%PORTDOCS%%%%DOCSDIR%%/programs/html/msbar.html
305
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mse.html
306
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwcontam.html
307
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwfilter.html
308
%%PORTDOCS%%%%DOCSDIR%%/programs/html/myseq.html
309
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalign.html
310
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalignrunner.html
311
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needle.html
312
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needlerunner.html
313
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgreport.html
314
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgseek.html
315
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newseq.html
316
%%PORTDOCS%%%%DOCSDIR%%/programs/html/noreturn.html
317
%%PORTDOCS%%%%DOCSDIR%%/programs/html/notseq.html
318
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nthseq.html
319
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_2d_structure_group.html
320
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_group.html
321
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_nucleic_gene_finding_group.html
322
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_composition_group.html
323
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_cpg_islands_group.html
324
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_gene_finding_group.html
325
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_motifs_group.html
326
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_mutation_group.html
327
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_primers_group.html
328
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_profiles_group.html
329
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_repeats_group.html
330
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_restriction_group.html
331
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_transcription_group.html
332
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_translation_group.html
333
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.html
334
%%PORTDOCS%%%%DOCSDIR%%/programs/html/oddcomp.html
335
%%PORTDOCS%%%%DOCSDIR%%/programs/html/palindrome.html
336
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pasteseq.html
337
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatdb.html
338
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatmotifs.html
339
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbparse.html
340
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbplus.html
341
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbtosp.html
342
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepcoil.html
343
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.html
344
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.html
345
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepstats.html
346
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.html
347
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.html
348
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.html
349
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_consensus_group.html
350
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_continuous_characters_group.html
351
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_discrete_characters_group.html
352
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_distance_matrix_group.html
353
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_gene_frequencies_group.html
354
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_group.html
355
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_molecular_sequence_group.html
356
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_tree_drawing_group.html
357
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.html
358
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.html
359
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.html
360
%%PORTDOCS%%%%DOCSDIR%%/programs/html/preg.html
361
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.html
362
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyseq.html
363
%%PORTDOCS%%%%DOCSDIR%%/programs/html/primersearch.html
364
%%PORTDOCS%%%%DOCSDIR%%/programs/html/printsextract.html
365
%%PORTDOCS%%%%DOCSDIR%%/programs/html/profit.html
366
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophecy.html
367
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophet.html
368
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prosextract.html
369
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_2d_structure_group.html
370
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_3d_structure_group.html
371
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_composition_group.html
372
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_motifs_group.html
373
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_mutation_group.html
374
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_profiles_group.html
375
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_sequence_alignment_group.html
376
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pscan.html
377
%%PORTDOCS%%%%DOCSDIR%%/programs/html/psiphi.html
378
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rebaseextract.html
379
%%PORTDOCS%%%%DOCSDIR%%/programs/html/recoder.html
380
%%PORTDOCS%%%%DOCSDIR%%/programs/html/redata.html
381
%%PORTDOCS%%%%DOCSDIR%%/programs/html/remap.html
382
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restover.html
383
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restrict.html
384
%%PORTDOCS%%%%DOCSDIR%%/programs/html/revseq.html
385
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocon.html
386
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocplot.html
387
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scope.html
388
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scopparse.html
389
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorecmapdir.html
390
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorer.html
391
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorerrunner.html
392
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seealso.html
393
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqalign.html
394
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqfraggle.html
395
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqmatchall.html
396
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqnr.html
397
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqret.html
398
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqretsplit.html
399
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsearch.html
400
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsort.html
401
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqwords.html
402
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showalign.html
403
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showdb.html
404
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showfeat.html
405
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showorf.html
406
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showseq.html
407
%%PORTDOCS%%%%DOCSDIR%%/programs/html/shuffleseq.html
408
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigcleave.html
409
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggen.html
410
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggenlig.html
411
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscan.html
412
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscanlig.html
413
%%PORTDOCS%%%%DOCSDIR%%/programs/html/silent.html
414
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sirna.html
415
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sites.html
416
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sixpack.html
417
%%PORTDOCS%%%%DOCSDIR%%/programs/html/skipseq.html
418
%%PORTDOCS%%%%DOCSDIR%%/programs/html/splitter.html
419
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ssematch.html
420
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stretcher.html
421
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stssearch.html
422
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substitute.html
423
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substituterunner.html
424
%%PORTDOCS%%%%DOCSDIR%%/programs/html/supermatcher.html
425
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.html
426
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tcode.html
427
%%PORTDOCS%%%%DOCSDIR%%/programs/html/template.html
428
%%PORTDOCS%%%%DOCSDIR%%/programs/html/test_group.html
429
%%PORTDOCS%%%%DOCSDIR%%/programs/html/textsearch.html
430
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfextract.html
431
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfm.html
432
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfscan.html
433
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.html
434
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.html
435
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tranalign.html
436
%%PORTDOCS%%%%DOCSDIR%%/programs/html/transeq.html
437
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimest.html
438
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimseq.html
439
%%PORTDOCS%%%%DOCSDIR%%/programs/html/twofeat.html
440
%%PORTDOCS%%%%DOCSDIR%%/programs/html/union.html
441
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_creation_group.html
442
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_indexing_group.html
443
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_misc_group.html
444
%%PORTDOCS%%%%DOCSDIR%%/programs/html/vectorstrip.html
445
%%PORTDOCS%%%%DOCSDIR%%/programs/html/water.html
446
%%PORTDOCS%%%%DOCSDIR%%/programs/html/whichdb.html
447
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.html
448
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordcount.html
449
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordmatch.html
450
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wossname.html
451
%%PORTDOCS%%%%DOCSDIR%%/programs/html/yank.html
452
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.jpg
1223
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.1.abiview.gif
453
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.1.abiview.gif
454
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.1.chaos.gif
455
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.1.cirdna.gif
456
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.1.cpgplot.gif
457
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.2.dan.gif
458
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.1.dotmatcher.gif
459
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.1.dotpath.gif
460
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.1.dottup.gif
461
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.gif
462
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.1.findkm.gif
463
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.1.isochore.gif
464
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.1.lindna.gif
465
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.1.octanol.gif
466
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.1.pepinfo.gif
467
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.1.pepnet.gif
468
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.1.pepwheel.gif
469
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.1.pepwindow.gif
470
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.1.pepwindowall.gif
471
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.1.plotcon.gif
472
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.1.plotorf.gif
473
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.2.plotorf.gif
474
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.1.polydot.gif
475
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.1.prettyplot.gif
476
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.2.prettyplot.gif
477
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.1.syco.gif
478
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.1.tmap.gif
479
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.gif
480
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.1.wobble.gif
481
%%PORTDOCS%%%%DOCSDIR%%/programs/html/aaindexextract.html
1224
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.html
482
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.html
1225
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acd_group.html
483
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acd_group.html
1226
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acdc.html
484
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acdc.html
Lines 1233-1281 Link Here
1233
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_consensus_group.html
491
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_consensus_group.html
1234
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_differences_group.html
492
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_differences_group.html
1235
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_dot_plots_group.html
493
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_dot_plots_group.html
494
%%PORTDOCS%%%%DOCSDIR%%/programs/html/antigenic.html
1236
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_global_group.html
495
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_global_group.html
1237
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_local_group.html
496
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_local_group.html
1238
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_multiple_group.html
497
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_multiple_group.html
1239
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignrunner.html
498
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignrunner.html
1240
%%PORTDOCS%%%%DOCSDIR%%/programs/html/allversusall.html
499
%%PORTDOCS%%%%DOCSDIR%%/programs/html/allversusall.html
1241
%%PORTDOCS%%%%DOCSDIR%%/programs/html/antigenic.html
1242
%%PORTDOCS%%%%DOCSDIR%%/programs/html/backtranseq.html
500
%%PORTDOCS%%%%DOCSDIR%%/programs/html/backtranseq.html
1243
%%PORTDOCS%%%%DOCSDIR%%/programs/html/banana.html
501
%%PORTDOCS%%%%DOCSDIR%%/programs/html/banana.html
1244
%%PORTDOCS%%%%DOCSDIR%%/programs/html/biosed.html
502
%%PORTDOCS%%%%DOCSDIR%%/programs/html/biosed.html
1245
%%PORTDOCS%%%%DOCSDIR%%/programs/html/btwisted.html
503
%%PORTDOCS%%%%DOCSDIR%%/programs/html/btwisted.html
1246
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cai.html
504
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cai.html
1247
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cathparse.html
505
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cathparse.html
1248
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.1.chaos.gif
1249
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.html
506
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.html
1250
%%PORTDOCS%%%%DOCSDIR%%/programs/html/charge.html
507
%%PORTDOCS%%%%DOCSDIR%%/programs/html/charge.html
1251
%%PORTDOCS%%%%DOCSDIR%%/programs/html/checktrans.html
508
%%PORTDOCS%%%%DOCSDIR%%/programs/html/checktrans.html
1252
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chips.html
509
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chips.html
1253
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.1.cirdna.gif
1254
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.html
510
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.html
1255
%%PORTDOCS%%%%DOCSDIR%%/programs/html/clique.html
1256
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcmp.html
511
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcmp.html
512
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcopy.html
1257
%%PORTDOCS%%%%DOCSDIR%%/programs/html/coderet.html
513
%%PORTDOCS%%%%DOCSDIR%%/programs/html/coderet.html
514
%%PORTDOCS%%%%DOCSDIR%%/programs/html/comparator.html
1258
%%PORTDOCS%%%%DOCSDIR%%/programs/html/compseq.html
515
%%PORTDOCS%%%%DOCSDIR%%/programs/html/compseq.html
1259
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cons.html
516
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cons.html
1260
%%PORTDOCS%%%%DOCSDIR%%/programs/html/consense.html
1261
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactalign.html
517
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactalign.html
1262
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactcount.html
1263
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contacts.html
518
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contacts.html
1264
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contml.html
1265
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contrast.html
1266
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.1.cpgplot.gif
1267
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.html
519
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.html
1268
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgreport.html
520
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgreport.html
1269
%%PORTDOCS%%%%DOCSDIR%%/programs/html/crystalball.html
521
%%PORTDOCS%%%%DOCSDIR%%/programs/html/crystalball.html
1270
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cusp.html
522
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cusp.html
1271
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutgextract.html
523
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutgextract.html
1272
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutseq.html
524
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutseq.html
1273
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.2.dan.gif
1274
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.html
525
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.html
1275
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiblast.html
526
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiblast.html
1276
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbifasta.html
527
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbifasta.html
1277
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiflat.html
528
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiflat.html
1278
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbigcg.html
529
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbigcg.html
530
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxfasta.html
531
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxflat.html
532
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxgcg.html
1279
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseq.html
533
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseq.html
1280
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseqrunner.html
534
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseqrunner.html
1281
%%PORTDOCS%%%%DOCSDIR%%/programs/html/descseq.html
535
%%PORTDOCS%%%%DOCSDIR%%/programs/html/descseq.html
Lines 1283-1297 Link Here
1283
%%PORTDOCS%%%%DOCSDIR%%/programs/html/digest.html
537
%%PORTDOCS%%%%DOCSDIR%%/programs/html/digest.html
1284
%%PORTDOCS%%%%DOCSDIR%%/programs/html/display_group.html
538
%%PORTDOCS%%%%DOCSDIR%%/programs/html/display_group.html
1285
%%PORTDOCS%%%%DOCSDIR%%/programs/html/distmat.html
539
%%PORTDOCS%%%%DOCSDIR%%/programs/html/distmat.html
1286
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnacomp.html
1287
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnadist.html
1288
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnainvar.html
1289
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnaml.html
1290
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnamlk.html
1291
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnapars.html
1292
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnapenny.html
1293
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dollop.html
1294
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dolpenny.html
1295
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainalign.html
540
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainalign.html
1296
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainer.html
541
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainer.html
1297
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainnr.html
542
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainnr.html
Lines 1299-1309 Link Here
1299
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainreso.html
544
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainreso.html
1300
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainseqs.html
545
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainseqs.html
1301
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainsse.html
546
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainsse.html
1302
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.1.dotmatcher.gif
1303
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.html
547
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.html
1304
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.1.dotpath.gif
1305
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.html
548
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.html
1306
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.1.dottup.gif
1307
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.html
549
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.html
1308
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dreg.html
550
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dreg.html
1309
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ealistat.html
551
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ealistat.html
Lines 1335-1342 Link Here
1335
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ehmmsearch.html
577
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ehmmsearch.html
1336
%%PORTDOCS%%%%DOCSDIR%%/programs/html/einverted.html
578
%%PORTDOCS%%%%DOCSDIR%%/programs/html/einverted.html
1337
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ekitsch.html
579
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ekitsch.html
1338
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.gif
1339
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.jpg
1340
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossdata.html
580
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossdata.html
1341
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossversion.html
581
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossversion.html
1342
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emix.html
582
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emix.html
Lines 1359-1365 Link Here
1359
%%PORTDOCS%%%%DOCSDIR%%/programs/html/etandem.html
599
%%PORTDOCS%%%%DOCSDIR%%/programs/html/etandem.html
1360
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractfeat.html
600
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractfeat.html
1361
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractseq.html
601
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractseq.html
1362
%%PORTDOCS%%%%DOCSDIR%%/programs/html/factor.html
1363
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fclique.html
602
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fclique.html
1364
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fconsense.html
603
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fconsense.html
1365
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fcontml.html
604
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fcontml.html
Lines 1383-1391 Link Here
1383
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffitch.html
622
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffitch.html
1384
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffreqboot.html
623
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffreqboot.html
1385
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fgendist.html
624
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fgendist.html
1386
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.1.findkm.gif
1387
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.html
625
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.html
1388
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fitch.html
1389
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fkitsch.html
626
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fkitsch.html
1390
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmix.html
627
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmix.html
1391
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmove.html
628
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmove.html
Lines 1410-1416 Link Here
1410
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fuzztran.html
647
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fuzztran.html
1411
%%PORTDOCS%%%%DOCSDIR%%/programs/html/garnier.html
648
%%PORTDOCS%%%%DOCSDIR%%/programs/html/garnier.html
1412
%%PORTDOCS%%%%DOCSDIR%%/programs/html/geecee.html
649
%%PORTDOCS%%%%DOCSDIR%%/programs/html/geecee.html
1413
%%PORTDOCS%%%%DOCSDIR%%/programs/html/gendist.html
1414
%%PORTDOCS%%%%DOCSDIR%%/programs/html/getorf.html
650
%%PORTDOCS%%%%DOCSDIR%%/programs/html/getorf.html
1415
%%PORTDOCS%%%%DOCSDIR%%/programs/html/groups.html
651
%%PORTDOCS%%%%DOCSDIR%%/programs/html/groups.html
1416
%%PORTDOCS%%%%DOCSDIR%%/programs/html/helixturnhelix.html
652
%%PORTDOCS%%%%DOCSDIR%%/programs/html/helixturnhelix.html
Lines 1423-1619 Link Here
1423
%%PORTDOCS%%%%DOCSDIR%%/programs/html/information_group.html
659
%%PORTDOCS%%%%DOCSDIR%%/programs/html/information_group.html
1424
%%PORTDOCS%%%%DOCSDIR%%/programs/html/infoseq.html
660
%%PORTDOCS%%%%DOCSDIR%%/programs/html/infoseq.html
1425
%%PORTDOCS%%%%DOCSDIR%%/programs/html/interface.html
661
%%PORTDOCS%%%%DOCSDIR%%/programs/html/interface.html
1426
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.1.isochore.gif
1427
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.html
662
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.html
1428
%%PORTDOCS%%%%DOCSDIR%%/programs/html/jembossctl.html
663
%%PORTDOCS%%%%DOCSDIR%%/programs/html/jembossctl.html
1429
%%PORTDOCS%%%%DOCSDIR%%/programs/html/kitsch.html
1430
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libgen.html
664
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libgen.html
1431
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libscan.html
665
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libscan.html
1432
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.1.lindna.gif
666
%%PORTDOCS%%%%DOCSDIR%%/programs/text/jembossctl.txt
1433
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.html
667
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libgen.txt
1434
%%PORTDOCS%%%%DOCSDIR%%/programs/html/listor.html
668
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libscan.txt
1435
%%PORTDOCS%%%%DOCSDIR%%/programs/html/marscan.html
669
%%PORTDOCS%%%%DOCSDIR%%/programs/text/lindna.txt
1436
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskfeat.html
670
%%PORTDOCS%%%%DOCSDIR%%/programs/text/listor.txt
1437
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskseq.html
671
%%PORTDOCS%%%%DOCSDIR%%/programs/text/marscan.txt
1438
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matcher.html
672
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskfeat.txt
1439
%%PORTDOCS%%%%DOCSDIR%%/programs/html/megamerger.html
673
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskseq.txt
1440
%%PORTDOCS%%%%DOCSDIR%%/programs/html/meme.html
674
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matcher.txt
1441
%%PORTDOCS%%%%DOCSDIR%%/programs/html/menus_group.html
675
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matgen3d.txt
1442
%%PORTDOCS%%%%DOCSDIR%%/programs/html/merger.html
676
%%PORTDOCS%%%%DOCSDIR%%/programs/text/megamerger.txt
1443
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mix.html
677
%%PORTDOCS%%%%DOCSDIR%%/programs/text/meme.txt
1444
%%PORTDOCS%%%%DOCSDIR%%/programs/html/msbar.html
678
%%PORTDOCS%%%%DOCSDIR%%/programs/text/merger.txt
1445
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mse.html
679
%%PORTDOCS%%%%DOCSDIR%%/programs/text/msbar.txt
1446
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwcontam.html
680
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mse.txt
1447
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwfilter.html
681
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwcontam.txt
1448
%%PORTDOCS%%%%DOCSDIR%%/programs/html/myseq.html
682
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwfilter.txt
1449
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalign.html
683
%%PORTDOCS%%%%DOCSDIR%%/programs/text/myseq.txt
1450
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalignrunner.html
684
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalign.txt
1451
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needle.html
685
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalignrunner.txt
1452
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needlerunner.html
686
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needle.txt
1453
%%PORTDOCS%%%%DOCSDIR%%/programs/html/neighbor.html
687
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needlerunner.txt
1454
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgreport.html
688
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgreport.txt
1455
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgseek.html
689
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgseek.txt
1456
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newseq.html
690
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newseq.txt
1457
%%PORTDOCS%%%%DOCSDIR%%/programs/html/noreturn.html
691
%%PORTDOCS%%%%DOCSDIR%%/programs/text/noreturn.txt
1458
%%PORTDOCS%%%%DOCSDIR%%/programs/html/notseq.html
692
%%PORTDOCS%%%%DOCSDIR%%/programs/text/notseq.txt
1459
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nthseq.html
693
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nthseq.txt
1460
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_2d_structure_group.html
694
%%PORTDOCS%%%%DOCSDIR%%/programs/text/octanol.txt
1461
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_group.html
695
%%PORTDOCS%%%%DOCSDIR%%/programs/text/oddcomp.txt
1462
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_nucleic_gene_finding_group.html
696
%%PORTDOCS%%%%DOCSDIR%%/programs/text/palindrome.txt
1463
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_composition_group.html
697
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pasteseq.txt
1464
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_cpg_islands_group.html
698
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatdb.txt
1465
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_gene_finding_group.html
699
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatmotifs.txt
1466
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_motifs_group.html
700
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbparse.txt
1467
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_mutation_group.html
701
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbplus.txt
1468
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_primers_group.html
702
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbtosp.txt
1469
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_profiles_group.html
703
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepcoil.txt
1470
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_repeats_group.html
704
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepinfo.txt
1471
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_restriction_group.html
705
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepnet.txt
1472
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_transcription_group.html
706
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepstats.txt
1473
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_translation_group.html
707
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwheel.txt
1474
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.1.octanol.gif
708
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindow.txt
1475
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.html
709
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindowall.txt
1476
%%PORTDOCS%%%%DOCSDIR%%/programs/html/oddcomp.html
710
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotcon.txt
1477
%%PORTDOCS%%%%DOCSDIR%%/programs/html/palindrome.html
711
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotorf.txt
1478
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pasteseq.html
712
%%PORTDOCS%%%%DOCSDIR%%/programs/text/polydot.txt
1479
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatdb.html
713
%%PORTDOCS%%%%DOCSDIR%%/programs/text/preg.txt
1480
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatmotifs.html
714
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyplot.txt
1481
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbparse.html
715
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyseq.txt
1482
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbplus.html
716
%%PORTDOCS%%%%DOCSDIR%%/programs/text/primersearch.txt
1483
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbtosp.html
717
%%PORTDOCS%%%%DOCSDIR%%/programs/text/printsextract.txt
1484
%%PORTDOCS%%%%DOCSDIR%%/programs/html/penny.html
718
%%PORTDOCS%%%%DOCSDIR%%/programs/text/profit.txt
1485
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepcoil.html
719
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophecy.txt
1486
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.1.pepinfo.gif
720
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophet.txt
1487
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.html
721
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prosextract.txt
1488
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.1.pepnet.gif
722
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pscan.txt
1489
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.html
723
%%PORTDOCS%%%%DOCSDIR%%/programs/text/psiphi.txt
1490
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepstats.html
724
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rebaseextract.txt
1491
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.1.pepwheel.gif
725
%%PORTDOCS%%%%DOCSDIR%%/programs/text/recoder.txt
1492
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.html
726
%%PORTDOCS%%%%DOCSDIR%%/programs/text/redata.txt
1493
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.1.pepwindow.gif
727
%%PORTDOCS%%%%DOCSDIR%%/programs/text/remap.txt
1494
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.html
728
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restover.txt
1495
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.1.pepwindowall.gif
729
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restrict.txt
1496
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.html
730
%%PORTDOCS%%%%DOCSDIR%%/programs/text/revseq.txt
1497
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pestfind.html
731
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocon.txt
1498
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_consensus_group.html
732
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocplot.txt
1499
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_continuous_characters_group.html
733
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scope.txt
1500
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_discrete_characters_group.html
734
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scopparse.txt
1501
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_distance_matrix_group.html
735
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorecmapdir.txt
1502
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_gene_frequencies_group.html
736
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorer.txt
1503
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_group.html
737
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorerrunner.txt
1504
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_molecular_sequence_group.html
738
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seealso.txt
1505
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_tree_drawing_group.html
739
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqalign.txt
1506
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.1.plotcon.gif
740
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqfraggle.txt
1507
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.html
741
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqmatchall.txt
1508
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.1.plotorf.gif
742
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqnr.txt
1509
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.2.plotorf.gif
743
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqret.txt
1510
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.html
744
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqretsplit.txt
1511
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.1.polydot.gif
745
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsearch.txt
1512
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.html
746
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsort.txt
1513
%%PORTDOCS%%%%DOCSDIR%%/programs/html/preg.html
747
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqwords.txt
1514
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.1.prettyplot.gif
748
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showalign.txt
1515
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.2.prettyplot.gif
749
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showdb.txt
1516
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.html
750
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showfeat.txt
1517
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyseq.html
751
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showorf.txt
1518
%%PORTDOCS%%%%DOCSDIR%%/programs/html/primersearch.html
752
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showseq.txt
1519
%%PORTDOCS%%%%DOCSDIR%%/programs/html/printsextract.html
753
%%PORTDOCS%%%%DOCSDIR%%/programs/text/shuffleseq.txt
1520
%%PORTDOCS%%%%DOCSDIR%%/programs/html/profit.html
754
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigcleave.txt
1521
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophecy.html
755
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggen.txt
1522
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophet.html
756
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggenlig.txt
1523
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prosextract.html
757
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscan.txt
1524
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protdist.html
758
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscanlig.txt
1525
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_2d_structure_group.html
759
%%PORTDOCS%%%%DOCSDIR%%/programs/text/silent.txt
1526
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_3d_structure_group.html
760
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sirna.txt
1527
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_composition_group.html
761
%%PORTDOCS%%%%DOCSDIR%%/programs/text/SITE-DIRECTED.txt
1528
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_motifs_group.html
762
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sites.txt
1529
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_mutation_group.html
763
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sixpack.txt
1530
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_profiles_group.html
764
%%PORTDOCS%%%%DOCSDIR%%/programs/text/skipseq.txt
1531
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_sequence_alignment_group.html
765
%%PORTDOCS%%%%DOCSDIR%%/programs/text/splitter.txt
1532
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pscan.html
766
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ssematch.txt
1533
%%PORTDOCS%%%%DOCSDIR%%/programs/html/psiphi.html
767
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stretcher.txt
1534
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rebaseextract.html
768
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stssearch.txt
1535
%%PORTDOCS%%%%DOCSDIR%%/programs/html/recoder.html
769
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substitute.txt
1536
%%PORTDOCS%%%%DOCSDIR%%/programs/html/redata.html
770
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substituterunner.txt
1537
%%PORTDOCS%%%%DOCSDIR%%/programs/html/remap.html
771
%%PORTDOCS%%%%DOCSDIR%%/programs/text/supermatcher.txt
1538
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restml.html
772
%%PORTDOCS%%%%DOCSDIR%%/programs/text/syco.txt
1539
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restover.html
773
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tcode.txt
1540
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restrict.html
774
%%PORTDOCS%%%%DOCSDIR%%/programs/text/textsearch.txt
1541
%%PORTDOCS%%%%DOCSDIR%%/programs/html/revseq.html
775
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfextract.txt
1542
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocon.html
776
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfm.txt
1543
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocplot.html
777
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfscan.txt
1544
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scope.html
778
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tmap.txt
1545
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scopparse.html
779
%%PORTDOCS%%%%DOCSDIR%%/programs/text/topo.txt
1546
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorer.html
780
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tranalign.txt
1547
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorerrunner.html
781
%%PORTDOCS%%%%DOCSDIR%%/programs/text/transeq.txt
1548
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seealso.html
782
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimest.txt
1549
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqalign.html
783
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimseq.txt
1550
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqboot.html
784
%%PORTDOCS%%%%DOCSDIR%%/programs/text/twofeat.txt
1551
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqfraggle.html
785
%%PORTDOCS%%%%DOCSDIR%%/programs/text/union.txt
1552
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqmatchall.html
786
%%PORTDOCS%%%%DOCSDIR%%/programs/text/vectorstrip.txt
1553
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqnr.html
787
%%PORTDOCS%%%%DOCSDIR%%/programs/text/water.txt
1554
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqret.html
788
%%PORTDOCS%%%%DOCSDIR%%/programs/text/whichdb.txt
1555
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqretsplit.html
789
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wobble.txt
1556
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsearch.html
790
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordcount.txt
1557
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsort.html
791
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordmatch.txt
1558
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqwords.html
792
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wossname.txt
1559
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showalign.html
793
%%PORTDOCS%%%%DOCSDIR%%/programs/text/yank.txt
1560
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showdb.html
1561
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showfeat.html
1562
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showorf.html
1563
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showseq.html
1564
%%PORTDOCS%%%%DOCSDIR%%/programs/html/shuffleseq.html
1565
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigcleave.html
1566
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggen.html
1567
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscan.html
1568
%%PORTDOCS%%%%DOCSDIR%%/programs/html/silent.html
1569
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sirna.html
1570
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sites.html
1571
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sixpack.html
1572
%%PORTDOCS%%%%DOCSDIR%%/programs/html/skipseq.html
1573
%%PORTDOCS%%%%DOCSDIR%%/programs/html/splitter.html
1574
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ssematch.html
1575
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stretcher.html
1576
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stssearch.html
1577
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substitute.html
1578
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substituterunner.html
1579
%%PORTDOCS%%%%DOCSDIR%%/programs/html/supermatcher.html
1580
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.1.syco.gif
1581
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.html
1582
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tcode.html
1583
%%PORTDOCS%%%%DOCSDIR%%/programs/html/template.html
1584
%%PORTDOCS%%%%DOCSDIR%%/programs/html/test_group.html
1585
%%PORTDOCS%%%%DOCSDIR%%/programs/html/textsearch.html
1586
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfextract.html
1587
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfm.html
1588
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfscan.html
1589
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.1.tmap.gif
1590
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.html
1591
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.gif
1592
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.html
1593
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tranalign.html
1594
%%PORTDOCS%%%%DOCSDIR%%/programs/html/transeq.html
1595
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimest.html
1596
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimseq.html
1597
%%PORTDOCS%%%%DOCSDIR%%/programs/html/twofeat.html
1598
%%PORTDOCS%%%%DOCSDIR%%/programs/html/union.html
1599
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_creation_group.html
1600
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_indexing_group.html
1601
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_misc_group.html
1602
%%PORTDOCS%%%%DOCSDIR%%/programs/html/vectorstrip.html
1603
%%PORTDOCS%%%%DOCSDIR%%/programs/html/water.html
1604
%%PORTDOCS%%%%DOCSDIR%%/programs/html/whichdb.html
1605
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.1.wobble.gif
1606
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.html
1607
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordcount.html
1608
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordmatch.html
1609
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wossname.html
1610
%%PORTDOCS%%%%DOCSDIR%%/programs/html/yank.html
1611
%%PORTDOCS%%%%DOCSDIR%%/programs/text/aaindexextract.txt
794
%%PORTDOCS%%%%DOCSDIR%%/programs/text/aaindexextract.txt
1612
%%PORTDOCS%%%%DOCSDIR%%/programs/text/abiview.txt
795
%%PORTDOCS%%%%DOCSDIR%%/programs/text/abiview.txt
1613
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdc.txt
796
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdc.txt
1614
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdlog.txt
797
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdlog.txt
1615
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdpretty.txt
798
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdpretty.txt
1616
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtable.txt
799
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtable.txt
800
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cai.txt
1617
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtrace.txt
801
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtrace.txt
1618
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdvalid.txt
802
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdvalid.txt
1619
%%PORTDOCS%%%%DOCSDIR%%/programs/text/alignrunner.txt
803
%%PORTDOCS%%%%DOCSDIR%%/programs/text/alignrunner.txt
Lines 1623-1647 Link Here
1623
%%PORTDOCS%%%%DOCSDIR%%/programs/text/banana.txt
807
%%PORTDOCS%%%%DOCSDIR%%/programs/text/banana.txt
1624
%%PORTDOCS%%%%DOCSDIR%%/programs/text/biosed.txt
808
%%PORTDOCS%%%%DOCSDIR%%/programs/text/biosed.txt
1625
%%PORTDOCS%%%%DOCSDIR%%/programs/text/btwisted.txt
809
%%PORTDOCS%%%%DOCSDIR%%/programs/text/btwisted.txt
1626
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cai.txt
1627
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cathparse.txt
810
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cathparse.txt
1628
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chaos.txt
811
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chaos.txt
1629
%%PORTDOCS%%%%DOCSDIR%%/programs/text/charge.txt
812
%%PORTDOCS%%%%DOCSDIR%%/programs/text/charge.txt
1630
%%PORTDOCS%%%%DOCSDIR%%/programs/text/checktrans.txt
813
%%PORTDOCS%%%%DOCSDIR%%/programs/text/checktrans.txt
1631
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chips.txt
814
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chips.txt
1632
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cirdna.txt
815
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cirdna.txt
1633
%%PORTDOCS%%%%DOCSDIR%%/programs/text/clique.txt
1634
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcmp.txt
816
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcmp.txt
817
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcopy.txt
1635
%%PORTDOCS%%%%DOCSDIR%%/programs/text/coderet.txt
818
%%PORTDOCS%%%%DOCSDIR%%/programs/text/coderet.txt
819
%%PORTDOCS%%%%DOCSDIR%%/programs/text/comparator.txt
1636
%%PORTDOCS%%%%DOCSDIR%%/programs/text/complex.txt
820
%%PORTDOCS%%%%DOCSDIR%%/programs/text/complex.txt
1637
%%PORTDOCS%%%%DOCSDIR%%/programs/text/compseq.txt
821
%%PORTDOCS%%%%DOCSDIR%%/programs/text/compseq.txt
1638
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cons.txt
822
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cons.txt
1639
%%PORTDOCS%%%%DOCSDIR%%/programs/text/consense.txt
1640
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactalign.txt
823
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactalign.txt
1641
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactcount.txt
1642
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contacts.txt
824
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contacts.txt
1643
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contml.txt
1644
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contrast.txt
1645
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgplot.txt
825
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgplot.txt
1646
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgreport.txt
826
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgreport.txt
1647
%%PORTDOCS%%%%DOCSDIR%%/programs/text/crystalball.txt
827
%%PORTDOCS%%%%DOCSDIR%%/programs/text/crystalball.txt
Lines 1653-1673 Link Here
1653
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbifasta.txt
833
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbifasta.txt
1654
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbiflat.txt
834
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbiflat.txt
1655
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbigcg.txt
835
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbigcg.txt
836
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxfasta.txt
837
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxflat.txt
838
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxgcg.txt
1656
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseq.txt
839
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseq.txt
1657
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseqrunner.txt
840
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseqrunner.txt
1658
%%PORTDOCS%%%%DOCSDIR%%/programs/text/descseq.txt
841
%%PORTDOCS%%%%DOCSDIR%%/programs/text/descseq.txt
1659
%%PORTDOCS%%%%DOCSDIR%%/programs/text/diffseq.txt
842
%%PORTDOCS%%%%DOCSDIR%%/programs/text/diffseq.txt
1660
%%PORTDOCS%%%%DOCSDIR%%/programs/text/digest.txt
843
%%PORTDOCS%%%%DOCSDIR%%/programs/text/digest.txt
1661
%%PORTDOCS%%%%DOCSDIR%%/programs/text/distmat.txt
844
%%PORTDOCS%%%%DOCSDIR%%/programs/text/distmat.txt
1662
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnacomp.txt
1663
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnadist.txt
1664
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnainvar.txt
1665
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnaml.txt
1666
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnamlk.txt
1667
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnapars.txt
1668
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnapenny.txt
1669
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dollop.txt
1670
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dolpenny.txt
1671
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainalign.txt
845
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainalign.txt
1672
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainer.txt
846
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainer.txt
1673
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainnr.txt
847
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainnr.txt
Lines 1692-1697 Link Here
1692
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapars.txt
866
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapars.txt
1693
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapenny.txt
867
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapenny.txt
1694
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edollop.txt
868
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edollop.txt
869
%%PORTDOCS%%%%DOCSDIR%%/programs/text/iep.txt
1695
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edolpenny.txt
870
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edolpenny.txt
1696
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efactor.txt
871
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efactor.txt
1697
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efitch.txt
872
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efitch.txt
Lines 1728-1734 Link Here
1728
%%PORTDOCS%%%%DOCSDIR%%/programs/text/etandem.txt
903
%%PORTDOCS%%%%DOCSDIR%%/programs/text/etandem.txt
1729
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractfeat.txt
904
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractfeat.txt
1730
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractseq.txt
905
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractseq.txt
1731
%%PORTDOCS%%%%DOCSDIR%%/programs/text/factor.txt
1732
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fclique.txt
906
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fclique.txt
1733
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fconsense.txt
907
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fconsense.txt
1734
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fcontml.txt
908
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fcontml.txt
Lines 1752-1758 Link Here
1752
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ffreqboot.txt
926
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ffreqboot.txt
1753
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fgendist.txt
927
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fgendist.txt
1754
%%PORTDOCS%%%%DOCSDIR%%/programs/text/findkm.txt
928
%%PORTDOCS%%%%DOCSDIR%%/programs/text/findkm.txt
1755
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fitch.txt
1756
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fkitsch.txt
929
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fkitsch.txt
1757
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmix.txt
930
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmix.txt
1758
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmove.txt
931
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmove.txt
Lines 1777-1982 Link Here
1777
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fuzztran.txt
950
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fuzztran.txt
1778
%%PORTDOCS%%%%DOCSDIR%%/programs/text/garnier.txt
951
%%PORTDOCS%%%%DOCSDIR%%/programs/text/garnier.txt
1779
%%PORTDOCS%%%%DOCSDIR%%/programs/text/geecee.txt
952
%%PORTDOCS%%%%DOCSDIR%%/programs/text/geecee.txt
1780
%%PORTDOCS%%%%DOCSDIR%%/programs/text/gendist.txt
1781
%%PORTDOCS%%%%DOCSDIR%%/programs/text/getorf.txt
953
%%PORTDOCS%%%%DOCSDIR%%/programs/text/getorf.txt
1782
%%PORTDOCS%%%%DOCSDIR%%/programs/text/helixturnhelix.txt
954
%%PORTDOCS%%%%DOCSDIR%%/programs/text/helixturnhelix.txt
1783
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hetparse.txt
955
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hetparse.txt
1784
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hmoment.txt
956
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hmoment.txt
1785
%%PORTDOCS%%%%DOCSDIR%%/programs/text/iep.txt
957
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoalign.txt
1786
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoalign.txt
958
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoseq.txt
1787
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoseq.txt
959
%%PORTDOCS%%%%DOCSDIR%%/programs/text/interface.txt
1788
%%PORTDOCS%%%%DOCSDIR%%/programs/text/interface.txt
960
%%PORTDOCS%%%%DOCSDIR%%/programs/text/isochore.txt
1789
%%PORTDOCS%%%%DOCSDIR%%/programs/text/isochore.txt
1790
%%PORTDOCS%%%%DOCSDIR%%/programs/text/jembossctl.txt
1791
%%PORTDOCS%%%%DOCSDIR%%/programs/text/kitsch.txt
1792
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libgen.txt
1793
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libscan.txt
1794
%%PORTDOCS%%%%DOCSDIR%%/programs/text/lindna.txt
1795
%%PORTDOCS%%%%DOCSDIR%%/programs/text/listor.txt
1796
%%PORTDOCS%%%%DOCSDIR%%/programs/text/marscan.txt
1797
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskfeat.txt
1798
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskseq.txt
1799
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matcher.txt
1800
%%PORTDOCS%%%%DOCSDIR%%/programs/text/megamerger.txt
1801
%%PORTDOCS%%%%DOCSDIR%%/programs/text/meme.txt
1802
%%PORTDOCS%%%%DOCSDIR%%/programs/text/merger.txt
1803
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mix.txt
1804
%%PORTDOCS%%%%DOCSDIR%%/programs/text/msbar.txt
1805
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mse.txt
1806
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwcontam.txt
1807
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwfilter.txt
1808
%%PORTDOCS%%%%DOCSDIR%%/programs/text/myseq.txt
1809
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalign.txt
1810
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalignrunner.txt
1811
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needle.txt
1812
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needlerunner.txt
1813
%%PORTDOCS%%%%DOCSDIR%%/programs/text/neighbor.txt
1814
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgreport.txt
1815
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgseek.txt
1816
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newseq.txt
1817
%%PORTDOCS%%%%DOCSDIR%%/programs/text/noreturn.txt
1818
%%PORTDOCS%%%%DOCSDIR%%/programs/text/notseq.txt
1819
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nthseq.txt
1820
%%PORTDOCS%%%%DOCSDIR%%/programs/text/octanol.txt
1821
%%PORTDOCS%%%%DOCSDIR%%/programs/text/oddcomp.txt
1822
%%PORTDOCS%%%%DOCSDIR%%/programs/text/palindrome.txt
1823
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pasteseq.txt
1824
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatdb.txt
1825
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatmotifs.txt
1826
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbparse.txt
1827
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbplus.txt
1828
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbtosp.txt
1829
%%PORTDOCS%%%%DOCSDIR%%/programs/text/penny.txt
1830
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepcoil.txt
1831
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepinfo.txt
1832
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepnet.txt
1833
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepstats.txt
1834
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwheel.txt
1835
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindow.txt
1836
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindowall.txt
1837
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pestfind.txt
1838
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotcon.txt
1839
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotorf.txt
1840
%%PORTDOCS%%%%DOCSDIR%%/programs/text/polydot.txt
1841
%%PORTDOCS%%%%DOCSDIR%%/programs/text/preg.txt
1842
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyplot.txt
1843
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyseq.txt
1844
%%PORTDOCS%%%%DOCSDIR%%/programs/text/primersearch.txt
1845
%%PORTDOCS%%%%DOCSDIR%%/programs/text/printsextract.txt
1846
%%PORTDOCS%%%%DOCSDIR%%/programs/text/profit.txt
1847
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophecy.txt
1848
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophet.txt
1849
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prosextract.txt
1850
%%PORTDOCS%%%%DOCSDIR%%/programs/text/protdist.txt
1851
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pscan.txt
1852
%%PORTDOCS%%%%DOCSDIR%%/programs/text/psiphi.txt
1853
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rebaseextract.txt
1854
%%PORTDOCS%%%%DOCSDIR%%/programs/text/recoder.txt
1855
%%PORTDOCS%%%%DOCSDIR%%/programs/text/redata.txt
1856
%%PORTDOCS%%%%DOCSDIR%%/programs/text/remap.txt
1857
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restml.txt
1858
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restover.txt
1859
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restrict.txt
1860
%%PORTDOCS%%%%DOCSDIR%%/programs/text/revseq.txt
1861
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocon.txt
1862
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocplot.txt
1863
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scope.txt
1864
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scopparse.txt
1865
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorer.txt
1866
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorerrunner.txt
1867
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seealso.txt
1868
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqalign.txt
1869
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqboot.txt
1870
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqfraggle.txt
1871
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqmatchall.txt
1872
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqnr.txt
1873
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqret.txt
1874
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqretsplit.txt
1875
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsearch.txt
1876
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsort.txt
1877
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqwords.txt
1878
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showalign.txt
1879
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showdb.txt
1880
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showfeat.txt
1881
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showorf.txt
1882
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showseq.txt
1883
%%PORTDOCS%%%%DOCSDIR%%/programs/text/shuffleseq.txt
1884
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigcleave.txt
1885
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggen.txt
1886
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscan.txt
1887
%%PORTDOCS%%%%DOCSDIR%%/programs/text/silent.txt
1888
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sirna.txt
1889
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sites.txt
1890
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sixpack.txt
1891
%%PORTDOCS%%%%DOCSDIR%%/programs/text/skipseq.txt
1892
%%PORTDOCS%%%%DOCSDIR%%/programs/text/splitter.txt
1893
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ssematch.txt
1894
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stretcher.txt
1895
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stssearch.txt
1896
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substitute.txt
1897
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substituterunner.txt
1898
%%PORTDOCS%%%%DOCSDIR%%/programs/text/supermatcher.txt
1899
%%PORTDOCS%%%%DOCSDIR%%/programs/text/syco.txt
1900
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tcode.txt
1901
%%PORTDOCS%%%%DOCSDIR%%/programs/text/textsearch.txt
1902
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfextract.txt
1903
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfm.txt
1904
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfscan.txt
1905
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tmap.txt
1906
%%PORTDOCS%%%%DOCSDIR%%/programs/text/topo.txt
1907
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tranalign.txt
1908
%%PORTDOCS%%%%DOCSDIR%%/programs/text/transeq.txt
1909
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimest.txt
1910
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimseq.txt
1911
%%PORTDOCS%%%%DOCSDIR%%/programs/text/twofeat.txt
1912
%%PORTDOCS%%%%DOCSDIR%%/programs/text/union.txt
1913
%%PORTDOCS%%%%DOCSDIR%%/programs/text/vectorstrip.txt
1914
%%PORTDOCS%%%%DOCSDIR%%/programs/text/water.txt
1915
%%PORTDOCS%%%%DOCSDIR%%/programs/text/whichdb.txt
1916
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wobble.txt
1917
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordcount.txt
1918
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordmatch.txt
1919
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wossname.txt
1920
%%PORTDOCS%%%%DOCSDIR%%/programs/text/yank.txt
1921
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-gcg.ppt
961
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-gcg.ppt
1922
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-interfaces.ppt
962
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-interfaces.ppt
1923
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-talk.ppt
963
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-talk.ppt
1924
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss_tut.tar.gz
964
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss_tut.tar.gz
1925
%%PORTDOCS%%@dirrm %%DOCSDIR%%/tutorials
965
%%DATADIR%%/plstnd5.fnt
1926
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/text
966
%%DATADIR%%/plxtnd5.fnt
967
%%DATADIR%%/acd/needle.acd
968
%%DATADIR%%/acd/newcoils.acd
969
%%DATADIR%%/acd/newcpgreport.acd
970
%%DATADIR%%/acd/newcpgseek.acd
971
%%DATADIR%%/acd/newseq.acd
972
%%DATADIR%%/acd/noreturn.acd
973
%%DATADIR%%/acd/notseq.acd
974
%%DATADIR%%/acd/nthseq.acd
975
%%DATADIR%%/acd/octanol.acd
976
%%DATADIR%%/acd/oddcomp.acd
977
%%DATADIR%%/acd/palindrome.acd
978
%%DATADIR%%/acd/pasteseq.acd
979
%%DATADIR%%/acd/patmatdb.acd
980
%%DATADIR%%/acd/patmatmotifs.acd
981
%%DATADIR%%/acd/patmattest.acd
982
%%DATADIR%%/acd/pepcoil.acd
983
%%DATADIR%%/acd/pepinfo.acd
984
%%DATADIR%%/acd/pepnet.acd
985
%%DATADIR%%/acd/pepstats.acd
986
%%DATADIR%%/acd/pepwheel.acd
987
%%DATADIR%%/acd/pepwindow.acd
988
%%DATADIR%%/acd/pepwindowall.acd
989
%%DATADIR%%/acd/plotcon.acd
990
%%DATADIR%%/acd/plotorf.acd
991
%%DATADIR%%/acd/polydot.acd
992
%%DATADIR%%/acd/preg.acd
993
%%DATADIR%%/acd/prettyplot.acd
994
%%DATADIR%%/acd/prettyseq.acd
995
%%DATADIR%%/acd/prima.acd
996
%%DATADIR%%/acd/primers.acd
997
%%DATADIR%%/acd/primersearch.acd
998
%%DATADIR%%/acd/printsextract.acd
999
%%DATADIR%%/acd/profit.acd
1000
%%DATADIR%%/acd/prophecy.acd
1001
%%DATADIR%%/acd/prophet.acd
1002
%%DATADIR%%/acd/prosextract.acd
1003
%%DATADIR%%/acd/pscan.acd
1004
%%DATADIR%%/acd/psiphi.acd
1005
%%DATADIR%%/acd/rebaseextract.acd
1006
%%DATADIR%%/acd/recoder.acd
1007
%%DATADIR%%/acd/redata.acd
1008
%%DATADIR%%/acd/remap.acd
1009
%%DATADIR%%/acd/restover.acd
1010
%%DATADIR%%/acd/revseq.acd
1011
%%DATADIR%%/acd/restrict.acd
1012
%%DATADIR%%/acd/seealso.acd
1013
%%DATADIR%%/acd/seqinfo.acd
1014
%%DATADIR%%/acd/seqmatchall.acd
1015
%%DATADIR%%/acd/seqret.acd
1016
%%DATADIR%%/acd/seqretall.acd
1017
%%DATADIR%%/acd/seqretallfeat.acd
1018
%%DATADIR%%/acd/seqretset.acd
1019
%%DATADIR%%/acd/seqretsingle.acd
1020
%%DATADIR%%/acd/seqretsplit.acd
1021
%%DATADIR%%/acd/seqrettype.acd
1022
%%DATADIR%%/acd/showalign.acd
1023
%%DATADIR%%/acd/showdb.acd
1024
%%DATADIR%%/acd/showfeat.acd
1025
%%DATADIR%%/acd/showorf.acd
1026
%%DATADIR%%/acd/showseq.acd
1027
%%DATADIR%%/acd/shuffleseq.acd
1028
%%DATADIR%%/acd/sigcleave.acd
1029
%%DATADIR%%/acd/silent.acd
1030
%%DATADIR%%/acd/sirna.acd
1031
%%DATADIR%%/acd/sixpack.acd
1032
%%DATADIR%%/acd/skipseq.acd
1033
%%DATADIR%%/acd/tfm.acd
1034
%%DATADIR%%/acd/splitter.acd
1035
%%DATADIR%%/acd/stretcher.acd
1036
%%DATADIR%%/acd/stssearch.acd
1037
%%DATADIR%%/acd/supermatcher.acd
1038
%%DATADIR%%/acd/syco.acd
1039
%%DATADIR%%/acd/tcode.acd
1040
%%DATADIR%%/acd/testplot.acd
1041
%%DATADIR%%/acd/textsearch.acd
1042
%%DATADIR%%/acd/tfextract.acd
1043
%%DATADIR%%/acd/tfscan.acd
1044
%%DATADIR%%/acd/tmap.acd
1045
%%DATADIR%%/acd/tranalign.acd
1046
%%DATADIR%%/acd/transeq.acd
1047
%%DATADIR%%/acd/treetypedisplay.acd
1048
%%DATADIR%%/acd/trimest.acd
1049
%%DATADIR%%/acd/trimseq.acd
1050
%%DATADIR%%/acd/twofeat.acd
1051
%%DATADIR%%/acd/union.acd
1052
%%DATADIR%%/acd/vectorstrip.acd
1053
%%DATADIR%%/acd/water.acd
1054
%%DATADIR%%/acd/whichdb.acd
1055
%%DATADIR%%/acd/wobble.acd
1056
%%DATADIR%%/acd/wordcount.acd
1057
%%DATADIR%%/acd/wordmatch.acd
1058
%%DATADIR%%/acd/wossname.acd
1059
%%DATADIR%%/acd/yank.acd
1060
%%DATADIR%%/acd/codes.english
1061
%%DATADIR%%/acd/groups.standard
1062
%%DATADIR%%/acd/knowntypes.standard
1063
%%DATADIR%%/acd/sections.standard
1064
%%DATADIR%%/acd/variables.standard
1065
%%DATADIR%%/acd/aaindexextract.acd
1066
%%DATADIR%%/acd/abiview.acd
1067
%%DATADIR%%/acd/acdc.acd
1068
%%DATADIR%%/acd/acdlog.acd
1069
%%DATADIR%%/acd/acdpretty.acd
1070
%%DATADIR%%/acd/acdtable.acd
1071
%%DATADIR%%/acd/acdtrace.acd
1072
%%DATADIR%%/acd/acdvalid.acd
1073
%%DATADIR%%/acd/ajbad.acd
1074
%%DATADIR%%/acd/ajfeatest.acd
1075
%%DATADIR%%/acd/ajtest.acd
1076
%%DATADIR%%/acd/antigenic.acd
1077
%%DATADIR%%/acd/backtranseq.acd
1078
%%DATADIR%%/acd/cai.acd
1079
%%DATADIR%%/acd/banana.acd
1080
%%DATADIR%%/acd/biosed.acd
1081
%%DATADIR%%/acd/btwisted.acd
1082
%%DATADIR%%/acd/chaos.acd
1083
%%DATADIR%%/acd/charge.acd
1084
%%DATADIR%%/acd/checktrans.acd
1085
%%DATADIR%%/acd/chips.acd
1086
%%DATADIR%%/acd/cirdna.acd
1087
%%DATADIR%%/acd/codcmp.acd
1088
%%DATADIR%%/acd/codcopy.acd
1089
%%DATADIR%%/acd/coderet.acd
1090
%%DATADIR%%/acd/complex.acd
1091
%%DATADIR%%/acd/compseq.acd
1092
%%DATADIR%%/acd/cons.acd
1093
%%DATADIR%%/acd/corbatest.acd
1094
%%DATADIR%%/acd/cpgplot.acd
1095
%%DATADIR%%/acd/cpgreport.acd
1096
%%DATADIR%%/acd/cusp.acd
1097
%%DATADIR%%/acd/cutgextract.acd
1098
%%DATADIR%%/acd/cutseq.acd
1099
%%DATADIR%%/acd/dan.acd
1100
%%DATADIR%%/acd/dbiblast.acd
1101
%%DATADIR%%/acd/dbifasta.acd
1102
%%DATADIR%%/acd/dbiflat.acd
1103
%%DATADIR%%/acd/dbigcg.acd
1104
%%DATADIR%%/acd/dbxfasta.acd
1105
%%DATADIR%%/acd/dbxflat.acd
1106
%%DATADIR%%/acd/dbxgcg.acd
1107
%%DATADIR%%/acd/degapseq.acd
1108
%%DATADIR%%/acd/demoalign.acd
1109
%%DATADIR%%/acd/demofeatures.acd
1110
%%DATADIR%%/acd/demolist.acd
1111
%%DATADIR%%/acd/demoreport.acd
1112
%%DATADIR%%/acd/demosequence.acd
1113
%%DATADIR%%/acd/demostring.acd
1114
%%DATADIR%%/acd/demotable.acd
1115
%%DATADIR%%/acd/descseq.acd
1116
%%DATADIR%%/acd/diffseq.acd
1117
%%DATADIR%%/acd/digest.acd
1118
%%DATADIR%%/acd/distmat.acd
1119
%%DATADIR%%/acd/dotmatcher.acd
1120
%%DATADIR%%/acd/dotpath.acd
1121
%%DATADIR%%/acd/dottup.acd
1122
%%DATADIR%%/acd/dreg.acd
1123
%%DATADIR%%/acd/einverted.acd
1124
%%DATADIR%%/acd/embossdata.acd
1125
%%DATADIR%%/acd/iep.acd
1126
%%DATADIR%%/acd/embossversion.acd
1127
%%DATADIR%%/acd/emma.acd
1128
%%DATADIR%%/acd/emowse.acd
1129
%%DATADIR%%/acd/entrails.acd
1130
%%DATADIR%%/acd/entret.acd
1131
%%DATADIR%%/acd/epestfind.acd
1132
%%DATADIR%%/acd/eprimer3.acd
1133
%%DATADIR%%/acd/equicktandem.acd
1134
%%DATADIR%%/acd/est2genome.acd
1135
%%DATADIR%%/acd/etandem.acd
1136
%%DATADIR%%/acd/extractfeat.acd
1137
%%DATADIR%%/acd/extractseq.acd
1138
%%DATADIR%%/acd/findkm.acd
1139
%%DATADIR%%/acd/freak.acd
1140
%%DATADIR%%/acd/fuzznuc.acd
1141
%%DATADIR%%/acd/fuzzpro.acd
1142
%%DATADIR%%/acd/fuzztran.acd
1143
%%DATADIR%%/acd/garnier.acd
1144
%%DATADIR%%/acd/geecee.acd
1145
%%DATADIR%%/acd/getorf.acd
1146
%%DATADIR%%/acd/giep.acd
1147
%%DATADIR%%/acd/helixturnhelix.acd
1148
%%DATADIR%%/acd/hmoment.acd
1149
%%DATADIR%%/acd/histogramtest.acd
1150
%%DATADIR%%/acd/infoalign.acd
1151
%%DATADIR%%/acd/infoseq.acd
1152
%%DATADIR%%/acd/intconv.acd
1153
%%DATADIR%%/acd/isochore.acd
1154
%%DATADIR%%/acd/kmrsplitter.acd
1155
%%DATADIR%%/acd/kmrunion.acd
1156
%%DATADIR%%/acd/lindna.acd
1157
%%DATADIR%%/acd/listor.acd
1158
%%DATADIR%%/acd/marscan.acd
1159
%%DATADIR%%/acd/maskfeat.acd
1160
%%DATADIR%%/acd/maskseq.acd
1161
%%DATADIR%%/acd/matcher.acd
1162
%%DATADIR%%/acd/megamerger.acd
1163
%%DATADIR%%/acd/merger.acd
1164
%%DATADIR%%/acd/msbar.acd
1165
%%DATADIR%%/acd/mwcontam.acd
1166
%%DATADIR%%/acd/mwfilter.acd
1167
%%DATADIR%%/data/AAINDEX/dummyfile
1168
%%DATADIR%%/data/CODONS/Cut.index
1169
%%DATADIR%%/data/CODONS/Eacica.cut
1170
%%DATADIR%%/data/CODONS/Eagrtu.cut
1171
%%DATADIR%%/data/CODONS/Eanasp.cut
1172
%%DATADIR%%/data/CODONS/Earath.cut
1173
%%DATADIR%%/data/CODONS/Eazovi.cut
1174
%%DATADIR%%/data/CODONS/Ebacme.cut
1175
%%DATADIR%%/data/CODONS/Ebacst.cut
1176
%%DATADIR%%/data/CODONS/Ebacsu.cut
1177
%%DATADIR%%/data/CODONS/Ebacsu_high.cut
1178
%%DATADIR%%/data/CODONS/Ebommo.cut
1179
%%DATADIR%%/data/CODONS/Ebovin.cut
1180
%%DATADIR%%/data/CODONS/Ebpphx.cut
1181
%%DATADIR%%/data/CODONS/Ebraja.cut
1182
%%DATADIR%%/data/CODONS/Ebrana.cut
1183
%%DATADIR%%/data/CODONS/Ebrare.cut
1184
%%DATADIR%%/data/CODONS/Ecaeel.cut
1185
%%DATADIR%%/data/CODONS/Ecanal.cut
1186
%%DATADIR%%/data/CODONS/Ecanfa.cut
1187
%%DATADIR%%/data/CODONS/Ecaucr.cut
1188
%%DATADIR%%/data/CODONS/Echick.cut
1189
%%DATADIR%%/data/CODONS/Echlre.cut
1190
%%DATADIR%%/data/CODONS/Echltr.cut
1191
%%DATADIR%%/data/CODONS/Ecloab.cut
1192
%%DATADIR%%/data/CODONS/Ecrigr.cut
1193
%%DATADIR%%/data/CODONS/Ecyapa.cut
1194
%%DATADIR%%/data/CODONS/Edayhoff.cut
1195
%%DATADIR%%/data/CODONS/Edicdi.cut
1196
%%DATADIR%%/data/CODONS/Edicdi_high.cut
1197
%%DATADIR%%/data/CODONS/Edrome.cut
1198
%%DATADIR%%/data/CODONS/Edrome_high.cut
1199
%%DATADIR%%/data/CODONS/Eecoli.cut
1200
%%DATADIR%%/data/CODONS/Eecoli_high.cut
1201
%%DATADIR%%/data/CODONS/Eemeni.cut
1202
%%DATADIR%%/data/CODONS/Eemeni_mit.cut
1203
%%DATADIR%%/data/CODONS/Eemeni_high.cut
1204
%%DATADIR%%/data/CODONS/Eerwct.cut
1205
%%DATADIR%%/data/CODONS/Ehaein.cut
1206
%%DATADIR%%/data/CODONS/Ehalma.cut
1207
%%DATADIR%%/data/CODONS/Ehalsa.cut
1208
%%DATADIR%%/data/CODONS/Ehorvu.cut
1209
%%DATADIR%%/data/CODONS/Ehuman.cut
1210
%%DATADIR%%/data/CODONS/Eklepn.cut
1211
%%DATADIR%%/data/CODONS/Eklula.cut
1212
%%DATADIR%%/data/CODONS/Elacdl.cut
1213
%%DATADIR%%/data/CODONS/Elyces.cut
1214
%%DATADIR%%/data/CODONS/Emacfa.cut
1215
%%DATADIR%%/data/CODONS/Emaize.cut
1216
%%DATADIR%%/data/CODONS/Emaize_chl.cut
1217
%%DATADIR%%/data/CODONS/Emammal_high.cut
1218
%%DATADIR%%/data/CODONS/Emanse.cut
1219
%%DATADIR%%/data/CODONS/Emarpo_chl.cut
1220
%%DATADIR%%/data/CODONS/Emedsa.cut
1221
%%DATADIR%%/data/CODONS/Emetth.cut
1222
%%DATADIR%%/data/CODONS/Emouse.cut
1223
%%DATADIR%%/data/CODONS/Emyctu.cut
1224
%%DATADIR%%/data/CODONS/Eneigo.cut
1225
%%DATADIR%%/data/CODONS/Eneucr.cut
1226
%%DATADIR%%/data/CODONS/Eoncmy.cut
1227
%%DATADIR%%/data/CODONS/Eorysa.cut
1228
%%DATADIR%%/data/CODONS/Eorysa_chl.cut
1229
%%DATADIR%%/data/CODONS/Epea.cut
1230
%%DATADIR%%/data/CODONS/Epethy.cut
1231
%%DATADIR%%/data/CODONS/Ephavu.cut
1232
%%DATADIR%%/data/CODONS/Epig.cut
1233
%%DATADIR%%/data/CODONS/Eplafa.cut
1234
%%DATADIR%%/data/CODONS/Eprovu.cut
1235
%%DATADIR%%/data/CODONS/Epseae.cut
1236
%%DATADIR%%/data/CODONS/Epsepu.cut
1237
%%DATADIR%%/data/CODONS/Epsesm.cut
1238
%%DATADIR%%/data/CODONS/Erabit.cut
1239
%%DATADIR%%/data/CODONS/Erat.cut
1240
%%DATADIR%%/data/CODONS/Erhile.cut
1241
%%DATADIR%%/data/CODONS/Erhime.cut
1242
%%DATADIR%%/data/CODONS/Erhoca.cut
1243
%%DATADIR%%/data/CODONS/Erhosh.cut
1244
%%DATADIR%%/data/CODONS/Esalsa.cut
1245
%%DATADIR%%/data/CODONS/Esalty.cut
1246
%%DATADIR%%/data/CODONS/Eschma.cut
1247
%%DATADIR%%/data/CODONS/Eschpo.cut
1248
%%DATADIR%%/data/CODONS/Eschpo_cai.cut
1249
%%DATADIR%%/data/CODONS/Eschpo_high.cut
1250
%%DATADIR%%/data/CODONS/Eserma.cut
1251
%%DATADIR%%/data/CODONS/Esheep.cut
1252
%%DATADIR%%/data/CODONS/Esoltu.cut
1253
%%DATADIR%%/data/CODONS/Esoybn.cut
1254
%%DATADIR%%/data/CODONS/Espiol.cut
1255
%%DATADIR%%/data/CODONS/Estaau.cut
1256
%%DATADIR%%/data/CODONS/Estrco.cut
1257
%%DATADIR%%/data/CODONS/Estrmu.cut
1258
%%DATADIR%%/data/CODONS/Estrpn.cut
1259
%%DATADIR%%/data/CODONS/Estrpu.cut
1260
%%DATADIR%%/data/CODONS/Esyncy.cut
1261
%%DATADIR%%/data/CODONS/Esynco.cut
1262
%%DATADIR%%/data/CODONS/Etetth.cut
1263
%%DATADIR%%/data/CODONS/Etheth.cut
1264
%%DATADIR%%/data/CODONS/Etobac.cut
1265
%%DATADIR%%/data/CODONS/Etobac_chl.cut
1266
%%DATADIR%%/data/CODONS/Etrybr.cut
1267
%%DATADIR%%/data/CODONS/Etrycr.cut
1268
%%DATADIR%%/data/CODONS/Evibch.cut
1269
%%DATADIR%%/data/CODONS/Ewheat.cut
1270
%%DATADIR%%/data/CODONS/Exenla.cut
1271
%%DATADIR%%/data/CODONS/Eyeast.cut
1272
%%DATADIR%%/data/CODONS/Eyeast_cai.cut
1273
%%DATADIR%%/data/CODONS/Eyeast_high.cut
1274
%%DATADIR%%/data/CODONS/Eyeast_mit.cut
1275
%%DATADIR%%/data/CODONS/Eyeren.cut
1276
%%DATADIR%%/data/CODONS/Eyerpe.cut
1277
%%DATADIR%%/data/CODONS/Eacc.cut
1278
%%DATADIR%%/data/CODONS/Eadenovirus5.cut
1279
%%DATADIR%%/data/CODONS/Eadenovirus7.cut
1280
%%DATADIR%%/data/CODONS/Eaidlav.cut
1281
%%DATADIR%%/data/CODONS/Eani.cut
1282
%%DATADIR%%/data/CODONS/Eani_h.cut
1283
%%DATADIR%%/data/CODONS/Eanidmit.cut
1284
%%DATADIR%%/data/CODONS/Easn.cut
1285
%%DATADIR%%/data/CODONS/Eath.cut
1286
%%DATADIR%%/data/CODONS/Eatu.cut
1287
%%DATADIR%%/data/CODONS/Eavi.cut
1288
%%DATADIR%%/data/CODONS/Ef1.cut
1289
%%DATADIR%%/data/CODONS/Ebja.cut
1290
%%DATADIR%%/data/CODONS/Ebly.cut
1291
%%DATADIR%%/data/CODONS/Ebme.cut
1292
%%DATADIR%%/data/CODONS/Ebmo.cut
1293
%%DATADIR%%/data/CODONS/Ebna.cut
1294
%%DATADIR%%/data/CODONS/Ebov.cut
1295
%%DATADIR%%/data/CODONS/Ebovsp.cut
1296
%%DATADIR%%/data/CODONS/Ebst.cut
1297
%%DATADIR%%/data/CODONS/Ebsu.cut
1298
%%DATADIR%%/data/CODONS/Ebsu_h.cut
1299
%%DATADIR%%/data/CODONS/Ecac.cut
1300
%%DATADIR%%/data/CODONS/Ecal.cut
1301
%%DATADIR%%/data/CODONS/Eccr.cut
1302
%%DATADIR%%/data/CODONS/Ecel.cut
1303
%%DATADIR%%/data/CODONS/Echi.cut
1304
%%DATADIR%%/data/CODONS/Echicken.cut
1305
%%DATADIR%%/data/CODONS/Echisp.cut
1306
%%DATADIR%%/data/CODONS/Echk.cut
1307
%%DATADIR%%/data/CODONS/Echmp.cut
1308
%%DATADIR%%/data/CODONS/Echnt.cut
1309
%%DATADIR%%/data/CODONS/Echos.cut
1310
%%DATADIR%%/data/CODONS/Echzm.cut
1311
%%DATADIR%%/data/CODONS/Echzmrubp.cut
1312
%%DATADIR%%/data/CODONS/Ecpx.cut
1313
%%DATADIR%%/data/CODONS/Ecre.cut
1314
%%DATADIR%%/data/CODONS/Ecrisp.cut
1315
%%DATADIR%%/data/CODONS/Ectr.cut
1316
%%DATADIR%%/data/CODONS/Eddi.cut
1317
%%DATADIR%%/data/CODONS/Eddi_h.cut
1318
%%DATADIR%%/data/CODONS/Edog.cut
1319
%%DATADIR%%/data/CODONS/Edro.cut
1320
%%DATADIR%%/data/CODONS/Edro_h.cut
1321
%%DATADIR%%/data/CODONS/Edrosophila.cut
1322
%%DATADIR%%/data/CODONS/Eeca.cut
1323
%%DATADIR%%/data/CODONS/Eeco.cut
1324
%%DATADIR%%/data/CODONS/Eeco_h.cut
1325
%%DATADIR%%/data/CODONS/Efish.cut
1326
%%DATADIR%%/data/CODONS/Efmdvpolyp.cut
1327
%%DATADIR%%/data/CODONS/Eham.cut
1328
%%DATADIR%%/data/CODONS/Ehha.cut
1329
%%DATADIR%%/data/CODONS/Ehin.cut
1330
%%DATADIR%%/data/CODONS/Ehma.cut
1331
%%DATADIR%%/data/CODONS/Ehum.cut
1332
%%DATADIR%%/data/CODONS/Ekla.cut
1333
%%DATADIR%%/data/CODONS/Ekpn.cut
1334
%%DATADIR%%/data/CODONS/Ella.cut
1335
%%DATADIR%%/data/CODONS/Emac.cut
1336
%%DATADIR%%/data/CODONS/Emam_h.cut
1337
%%DATADIR%%/data/CODONS/Emixlg.cut
1338
%%DATADIR%%/data/CODONS/Emsa.cut
1339
%%DATADIR%%/data/CODONS/Emse.cut
1340
%%DATADIR%%/data/CODONS/Emta.cut
1341
%%DATADIR%%/data/CODONS/Emtu.cut
1342
%%DATADIR%%/data/CODONS/Emus.cut
1343
%%DATADIR%%/data/CODONS/Emussp.cut
1344
%%DATADIR%%/data/CODONS/Emva.cut
1345
%%DATADIR%%/data/CODONS/Emze.cut
1346
%%DATADIR%%/data/CODONS/Emzecp.cut
1347
%%DATADIR%%/data/CODONS/Encr.cut
1348
%%DATADIR%%/data/CODONS/Eneu.cut
1349
%%DATADIR%%/data/CODONS/Engo.cut
1350
%%DATADIR%%/data/CODONS/Eoncsp.cut
1351
%%DATADIR%%/data/CODONS/Epae.cut
1352
%%DATADIR%%/data/CODONS/Epet.cut
1353
%%DATADIR%%/data/CODONS/Epfa.cut
1354
%%DATADIR%%/data/CODONS/Ephix174.cut
1355
%%DATADIR%%/data/CODONS/Ephv.cut
1356
%%DATADIR%%/data/CODONS/Ephy.cut
1357
%%DATADIR%%/data/CODONS/Epolyomaa2.cut
1358
%%DATADIR%%/data/CODONS/Epombe.cut
1359
%%DATADIR%%/data/CODONS/Epombecai.cut
1360
%%DATADIR%%/data/CODONS/Epot.cut
1361
%%DATADIR%%/data/CODONS/Eppu.cut
1362
%%DATADIR%%/data/CODONS/Epse.cut
1363
%%DATADIR%%/data/CODONS/Epsy.cut
1364
%%DATADIR%%/data/CODONS/Epvu.cut
1365
%%DATADIR%%/data/CODONS/Erab.cut
1366
%%DATADIR%%/data/CODONS/Erabbit.cut
1367
%%DATADIR%%/data/CODONS/Erabsp.cut
1368
%%DATADIR%%/data/CODONS/Eratsp.cut
1369
%%DATADIR%%/data/CODONS/Erca.cut
1370
%%DATADIR%%/data/CODONS/Erhm.cut
1371
%%DATADIR%%/data/CODONS/Eric.cut
1372
%%DATADIR%%/data/CODONS/Erle.cut
1373
%%DATADIR%%/data/CODONS/Erme.cut
1374
%%DATADIR%%/data/CODONS/Ersp.cut
1375
%%DATADIR%%/data/CODONS/Esalsp.cut
1376
%%DATADIR%%/data/CODONS/Esau.cut
1377
%%DATADIR%%/data/CODONS/Esco.cut
1378
%%DATADIR%%/data/CODONS/Esgi.cut
1379
%%DATADIR%%/data/CODONS/Eshp.cut
1380
%%DATADIR%%/data/CODONS/Eshpsp.cut
1381
%%DATADIR%%/data/CODONS/Esli.cut
1382
%%DATADIR%%/data/CODONS/Eslm.cut
1383
%%DATADIR%%/data/CODONS/Esma.cut
1384
%%DATADIR%%/data/CODONS/Esmi.cut
1385
%%DATADIR%%/data/CODONS/Esmu.cut
1386
%%DATADIR%%/data/CODONS/Esoy.cut
1387
%%DATADIR%%/data/CODONS/Espi.cut
1388
%%DATADIR%%/data/CODONS/Espn.cut
1389
%%DATADIR%%/data/CODONS/Espo.cut
1390
%%DATADIR%%/data/CODONS/Espo_h.cut
1391
%%DATADIR%%/data/CODONS/Espu.cut
1392
%%DATADIR%%/data/CODONS/Esta.cut
1393
%%DATADIR%%/data/CODONS/Esty.cut
1394
%%DATADIR%%/data/CODONS/Esus.cut
1395
%%DATADIR%%/data/CODONS/Esv40.cut
1396
%%DATADIR%%/data/CODONS/Esyhsp.cut
1397
%%DATADIR%%/data/CODONS/Esynsp.cut
1398
%%DATADIR%%/data/CODONS/Etbr.cut
1399
%%DATADIR%%/data/CODONS/Etcr.cut
1400
%%DATADIR%%/data/CODONS/Eter.cut
1401
%%DATADIR%%/data/CODONS/Etetsp.cut
1402
%%DATADIR%%/data/CODONS/Etob.cut
1403
%%DATADIR%%/data/CODONS/Etobcp.cut
1404
%%DATADIR%%/data/CODONS/Etom.cut
1405
%%DATADIR%%/data/CODONS/Etrb.cut
1406
%%DATADIR%%/data/CODONS/Evco.cut
1407
%%DATADIR%%/data/CODONS/Ewht.cut
1408
%%DATADIR%%/data/CODONS/Exel.cut
1409
%%DATADIR%%/data/CODONS/Exenopus.cut
1410
%%DATADIR%%/data/CODONS/Eyeastcai.cut
1411
%%DATADIR%%/data/CODONS/Eyen.cut
1412
%%DATADIR%%/data/CODONS/Eysc.cut
1413
%%DATADIR%%/data/CODONS/Eysc_h.cut
1414
%%DATADIR%%/data/CODONS/Eyscmt.cut
1415
%%DATADIR%%/data/CODONS/Eysp.cut
1416
%%DATADIR%%/data/CODONS/Ezebrafish.cut
1417
%%DATADIR%%/data/CODONS/Ezma.cut
1418
%%DATADIR%%/data/REBASE/dummyfile
1419
%%DATADIR%%/data/PRINTS/dummyfile
1420
%%DATADIR%%/data/PROSITE/dummyfile
1421
%%DATADIR%%/data/EBLOSUM30
1422
%%DATADIR%%/data/EBLOSUM35
1423
%%DATADIR%%/data/EBLOSUM40
1424
%%DATADIR%%/data/EBLOSUM45
1425
%%DATADIR%%/data/EBLOSUM50
1426
%%DATADIR%%/data/EBLOSUM55
1427
%%DATADIR%%/data/EBLOSUM60
1428
%%DATADIR%%/data/EBLOSUM62
1429
%%DATADIR%%/data/EBLOSUM62-12
1430
%%DATADIR%%/data/EBLOSUM65
1431
%%DATADIR%%/data/EBLOSUM70
1432
%%DATADIR%%/data/EBLOSUM75
1433
%%DATADIR%%/data/EBLOSUM80
1434
%%DATADIR%%/data/EBLOSUM85
1435
%%DATADIR%%/data/EBLOSUM90
1436
%%DATADIR%%/data/EBLOSUMN
1437
%%DATADIR%%/data/EDNAFULL
1438
%%DATADIR%%/data/EDNAMAT
1439
%%DATADIR%%/data/EGC.0
1440
%%DATADIR%%/data/EGC.1
1441
%%DATADIR%%/data/EGC.10
1442
%%DATADIR%%/data/EGC.11
1443
%%DATADIR%%/data/EGC.12
1444
%%DATADIR%%/data/EGC.13
1445
%%DATADIR%%/data/EGC.14
1446
%%DATADIR%%/data/EGC.15
1447
%%DATADIR%%/data/EGC.16
1448
%%DATADIR%%/data/EGC.2
1449
%%DATADIR%%/data/EGC.21
1450
%%DATADIR%%/data/EGC.22
1451
%%DATADIR%%/data/EGC.23
1452
%%DATADIR%%/data/EGC.3
1453
%%DATADIR%%/data/EGC.4
1454
%%DATADIR%%/data/EGC.5
1455
%%DATADIR%%/data/EGC.6
1456
%%DATADIR%%/data/EGC.9
1457
%%DATADIR%%/data/EGC.index
1458
%%DATADIR%%/data/EGC.txt
1459
%%DATADIR%%/data/ENUC.4.2
1460
%%DATADIR%%/data/ENUC.4.4
1461
%%DATADIR%%/data/EPAM10
1462
%%DATADIR%%/data/EPAM100
1463
%%DATADIR%%/data/EPAM110
1464
%%DATADIR%%/data/EPAM120
1465
%%DATADIR%%/data/EPAM130
1466
%%DATADIR%%/data/EPAM140
1467
%%DATADIR%%/data/EPAM150
1468
%%DATADIR%%/data/EPAM160
1469
%%DATADIR%%/data/EPAM170
1470
%%DATADIR%%/data/EPAM180
1471
%%DATADIR%%/data/EPAM190
1472
%%DATADIR%%/data/EPAM20
1473
%%DATADIR%%/data/EPAM200
1474
%%DATADIR%%/data/EPAM210
1475
%%DATADIR%%/data/EPAM220
1476
%%DATADIR%%/data/EPAM230
1477
%%DATADIR%%/data/EPAM240
1478
%%DATADIR%%/data/EPAM250
1479
%%DATADIR%%/data/EPAM260
1480
%%DATADIR%%/data/EPAM270
1481
%%DATADIR%%/data/EPAM280
1482
%%DATADIR%%/data/EPAM290
1483
%%DATADIR%%/data/EPAM30
1484
%%DATADIR%%/data/EPAM300
1485
%%DATADIR%%/data/EPAM310
1486
%%DATADIR%%/data/EPAM320
1487
%%DATADIR%%/data/EPAM330
1488
%%DATADIR%%/data/EPAM340
1489
%%DATADIR%%/data/EPAM350
1490
%%DATADIR%%/data/EPAM360
1491
%%DATADIR%%/data/EPAM370
1492
%%DATADIR%%/data/EPAM380
1493
%%DATADIR%%/data/EPAM390
1494
%%DATADIR%%/data/EPAM40
1495
%%DATADIR%%/data/EPAM400
1496
%%DATADIR%%/data/EPAM410
1497
%%DATADIR%%/data/EPAM420
1498
%%DATADIR%%/data/EPAM430
1499
%%DATADIR%%/data/EPAM440
1500
%%DATADIR%%/data/EPAM450
1501
%%DATADIR%%/data/EPAM460
1502
%%DATADIR%%/data/EPAM470
1503
%%DATADIR%%/data/EPAM480
1504
%%DATADIR%%/data/EPAM490
1505
%%DATADIR%%/data/EPAM50
1506
%%DATADIR%%/data/EPAM500
1507
%%DATADIR%%/data/EPAM60
1508
%%DATADIR%%/data/EPAM70
1509
%%DATADIR%%/data/EPAM80
1510
%%DATADIR%%/data/EPAM90
1511
%%DATADIR%%/data/Eaa_acc_surface.dat
1512
%%DATADIR%%/data/Eaa_hydropathy.dat
1513
%%DATADIR%%/data/Eaa_properties.dat
1514
%%DATADIR%%/data/Eamino.dat
1515
%%DATADIR%%/data/Eangles.dat
1516
%%DATADIR%%/data/Eangles_tri.dat
1517
%%DATADIR%%/data/Eantigenic.dat
1518
%%DATADIR%%/data/Ebases.iub
1519
%%DATADIR%%/data/Edayhoff.freq
1520
%%DATADIR%%/data/Edna.melt
1521
%%DATADIR%%/data/Eembl.ior
1522
%%DATADIR%%/data/Eenergy.dat
1523
%%DATADIR%%/data/Efeatures.embl
1524
%%DATADIR%%/data/Efeatures.emboss
1525
%%DATADIR%%/data/Efeatures.gff
1526
%%DATADIR%%/data/Efeatures.pir
1527
%%DATADIR%%/data/Efeatures.protein
1528
%%DATADIR%%/data/Efeatures.swiss
1529
%%DATADIR%%/data/Efreqs.dat
1530
%%DATADIR%%/data/Ehet.dat
1531
%%DATADIR%%/data/Ehth.dat
1532
%%DATADIR%%/data/Ehth87.dat
1533
%%DATADIR%%/data/Ememe.dat
1534
%%DATADIR%%/data/Enakai.dat
1535
%%DATADIR%%/data/Epepcoil.dat
1536
%%DATADIR%%/data/Epk.dat
1537
%%DATADIR%%/data/Epprofile
1538
%%DATADIR%%/data/Eprior1.plib
1539
%%DATADIR%%/data/Eprior30.plib
1540
%%DATADIR%%/data/Erna.melt
1541
%%DATADIR%%/data/Esig.euk
1542
%%DATADIR%%/data/Esig.pro
1543
%%DATADIR%%/data/Etags.embl
1544
%%DATADIR%%/data/Etags.emboss
1545
%%DATADIR%%/data/Etags.gff
1546
%%DATADIR%%/data/Etags.pir
1547
%%DATADIR%%/data/Etags.protein
1548
%%DATADIR%%/data/Etags.swiss
1549
%%DATADIR%%/data/Etcode.dat
1550
%%DATADIR%%/data/Evdw.dat
1551
%%DATADIR%%/data/Ewhite-wimley.dat
1552
%%DATADIR%%/data/embossre.equ
1553
%%DATADIR%%/data/Emwfilter.dat
1554
%%DATADIR%%/data/Emass.dat
1555
%%DATADIR%%/data/Emassmod.dat
1556
%%DATADIR%%/data/Matrices.nucleotide
1557
%%DATADIR%%/data/Matrices.protein
1558
%%DATADIR%%/data/Matrices.proteinstructure
1559
%%DATADIR%%/emboss.default.template
1560
%%DATADIR%%/test/data/aaindex1.test
1561
%%DATADIR%%/test/data/prosite.dat
1562
%%DATADIR%%/test/data/prosite.doc
1563
%%DATADIR%%/test/data/prints.test
1564
%%DATADIR%%/test/data/withrefm
1565
%%DATADIR%%/test/data/site.dat
1566
%%DATADIR%%/test/data/cutg.codon
1567
%%DATADIR%%/test/data/dna.acedb
1568
%%DATADIR%%/test/data/dna.aln
1569
%%DATADIR%%/test/data/dna.asn1
1570
%%DATADIR%%/test/data/dna.codata
1571
%%DATADIR%%/test/data/dna.embl
1572
%%DATADIR%%/test/data/dna.fasta
1573
%%DATADIR%%/test/data/dna.fitch
1574
%%DATADIR%%/test/data/dna.gcg
1575
%%DATADIR%%/test/data/dna.gcg8
1576
%%DATADIR%%/test/data/dna.genbank
1577
%%DATADIR%%/test/data/dna.ig
1578
%%DATADIR%%/test/data/dna.m-acedb
1579
%%DATADIR%%/test/data/dna.m-codata
1580
%%DATADIR%%/test/data/dna.m-embl
1581
%%DATADIR%%/test/data/dna.m-fasta
1582
%%DATADIR%%/test/data/dna.m-fasta-long
1583
%%DATADIR%%/test/data/dna.m-ncbi
1584
%%DATADIR%%/test/data/dna.m-strider
1585
%%DATADIR%%/test/data/dna.msf
1586
%%DATADIR%%/test/data/dna.msf8
1587
%%DATADIR%%/test/data/dna.ncbi
1588
%%DATADIR%%/test/data/dna.phylip
1589
%%DATADIR%%/test/data/dna.phylip3
1590
%%DATADIR%%/test/data/dna.staden
1591
%%DATADIR%%/test/data/dna.strider
1592
%%DATADIR%%/test/data/dna.text
1593
%%DATADIR%%/test/data/feat.emft
1594
%%DATADIR%%/test/data/feat.fasta
1595
%%DATADIR%%/test/data/feat.pir
1596
%%DATADIR%%/test/data/mw1.dat
1597
%%DATADIR%%/test/data/mw2.dat
1598
%%DATADIR%%/test/data/mw3.dat
1599
%%DATADIR%%/test/data/paamir.pep
1600
%%DATADIR%%/test/data/pax6_cdna.fasta
1601
%%DATADIR%%/test/data/prot.acedb
1602
%%DATADIR%%/test/data/prot.codata
1603
%%DATADIR%%/test/data/prot.fasta
1604
%%DATADIR%%/test/data/prot.gcg
1605
%%DATADIR%%/test/data/prot.gcg8
1606
%%DATADIR%%/test/data/prot.ig
1607
%%DATADIR%%/test/data/prot.m-acedb
1608
%%DATADIR%%/test/data/prot.m-codata
1609
%%DATADIR%%/test/data/prot.m-fasta
1610
%%DATADIR%%/test/data/prot.m-nbrf
1611
%%DATADIR%%/test/data/prot.m-ncbi
1612
%%DATADIR%%/test/data/prot.m-swiss
1613
%%DATADIR%%/test/data/prot.nbrf
1614
%%DATADIR%%/test/data/prot.ncbi
1615
%%DATADIR%%/test/data/prot.swiss
1616
%%DATADIR%%/test/data/prot.text
1617
%%DATADIR%%/test/data/z83307.seq
1618
%%DATADIR%%/test/data/aligna.dna
1619
%%DATADIR%%/test/data/alignapart.dna
1620
%%DATADIR%%/test/data/alignb.dna
1621
%%DATADIR%%/test/data/aligna.prot
1622
%%DATADIR%%/test/data/alignapart.prot
1623
%%DATADIR%%/test/data/alignb.prot
1624
%%DATADIR%%/test/data/tranalign.pep
1625
%%DATADIR%%/test/data/tranalign.seq
1626
%%DATADIR%%/test/embl/acnum.hit
1627
%%DATADIR%%/test/embl/acnum.trg
1628
%%DATADIR%%/test/embl/division.lkp
1629
%%DATADIR%%/test/embl/entrynam.idx
1630
%%DATADIR%%/test/embl/seqvn.hit
1631
%%DATADIR%%/test/embl/seqvn.trg
1632
%%DATADIR%%/test/embl/des.hit
1633
%%DATADIR%%/test/embl/des.trg
1634
%%DATADIR%%/test/embl/keyword.hit
1635
%%DATADIR%%/test/embl/keyword.trg
1636
%%DATADIR%%/test/embl/taxon.hit
1637
%%DATADIR%%/test/embl/taxon.trg
1638
%%DATADIR%%/test/embl/est.dat
1639
%%DATADIR%%/test/embl/fun.dat
1640
%%DATADIR%%/test/embl/hum1.dat
1641
%%DATADIR%%/test/embl/inv.dat
1642
%%DATADIR%%/test/embl/pln.dat
1643
%%DATADIR%%/test/embl/pro.dat
1644
%%DATADIR%%/test/embl/rod.dat
1645
%%DATADIR%%/test/embl/sts.dat
1646
%%DATADIR%%/test/embl/vrl.dat
1647
%%DATADIR%%/test/embl/vrt.dat
1648
%%DATADIR%%/test/genbank/acnum.hit
1649
%%DATADIR%%/test/genbank/acnum.trg
1650
%%DATADIR%%/test/genbank/division.lkp
1651
%%DATADIR%%/test/genbank/entrynam.idx
1652
%%DATADIR%%/test/genbank/seqvn.hit
1653
%%DATADIR%%/test/genbank/seqvn.trg
1654
%%DATADIR%%/test/genbank/des.hit
1655
%%DATADIR%%/test/genbank/des.trg
1656
%%DATADIR%%/test/genbank/keyword.hit
1657
%%DATADIR%%/test/genbank/keyword.trg
1658
%%DATADIR%%/test/genbank/taxon.hit
1659
%%DATADIR%%/test/genbank/taxon.trg
1660
%%DATADIR%%/test/genbank/gbbct1.seq
1661
%%DATADIR%%/test/genbank/gbest1.seq
1662
%%DATADIR%%/test/genbank/gbinv1.seq
1663
%%DATADIR%%/test/genbank/gbpln1.seq
1664
%%DATADIR%%/test/genbank/gbpln2.seq
1665
%%DATADIR%%/test/genbank/gbpri1.seq
1666
%%DATADIR%%/test/genbank/gbrod1.seq
1667
%%DATADIR%%/test/genbank/gbsts1.seq
1668
%%DATADIR%%/test/genbank/gbvrl1.seq
1669
%%DATADIR%%/test/genbank/gbvrt.seq
1670
%%DATADIR%%/test/gb/acnum.hit
1671
%%DATADIR%%/test/gb/acnum.trg
1672
%%DATADIR%%/test/gb/division.lkp
1673
%%DATADIR%%/test/gb/entrynam.idx
1674
%%DATADIR%%/test/gb/seqvn.hit
1675
%%DATADIR%%/test/gb/seqvn.trg
1676
%%DATADIR%%/test/gb/des.hit
1677
%%DATADIR%%/test/gb/des.trg
1678
%%DATADIR%%/test/gb/keyword.hit
1679
%%DATADIR%%/test/gb/keyword.trg
1680
%%DATADIR%%/test/gb/taxon.hit
1681
%%DATADIR%%/test/gb/taxon.trg
1682
%%DATADIR%%/test/gb/ba.ref
1683
%%DATADIR%%/test/gb/ba.seq
1684
%%DATADIR%%/test/gb/htg.ref
1685
%%DATADIR%%/test/gb/htg.seq
1686
%%DATADIR%%/test/pir/acnum.hit
1687
%%DATADIR%%/test/pir/acnum.trg
1688
%%DATADIR%%/test/pir/division.lkp
1689
%%DATADIR%%/test/pir/entrynam.idx
1690
%%DATADIR%%/test/pir/des.hit
1691
%%DATADIR%%/test/pir/des.trg
1692
%%DATADIR%%/test/pir/keyword.hit
1693
%%DATADIR%%/test/pir/keyword.trg
1694
%%DATADIR%%/test/pir/taxon.hit
1695
%%DATADIR%%/test/pir/taxon.trg
1696
%%DATADIR%%/test/pir/pir1.header
1697
%%DATADIR%%/test/pir/pir1.names
1698
%%DATADIR%%/test/pir/pir1.numbers
1699
%%DATADIR%%/test/pir/pir1.offset
1700
%%DATADIR%%/test/pir/pir1.ref
1701
%%DATADIR%%/test/pir/pir1.seq
1702
%%DATADIR%%/test/pir/pir2.header
1703
%%DATADIR%%/test/pir/pir2.names
1704
%%DATADIR%%/test/pir/pir2.numbers
1705
%%DATADIR%%/test/pir/pir2.offset
1706
%%DATADIR%%/test/pir/pir2.ref
1707
%%DATADIR%%/test/pir/pir2.seq
1708
%%DATADIR%%/test/pir/pir3.header
1709
%%DATADIR%%/test/pir/pir3.names
1710
%%DATADIR%%/test/pir/pir3.numbers
1711
%%DATADIR%%/test/pir/pir3.offset
1712
%%DATADIR%%/test/pir/pir3.ref
1713
%%DATADIR%%/test/pir/pir3.seq
1714
%%DATADIR%%/test/pir/pir4.header
1715
%%DATADIR%%/test/pir/pir4.names
1716
%%DATADIR%%/test/pir/pir4.numbers
1717
%%DATADIR%%/test/pir/pir4.offset
1718
%%DATADIR%%/test/pir/pir4.ref
1719
%%DATADIR%%/test/pir/pir4.seq
1720
%%DATADIR%%/test/swiss/seq.dat
1721
%%DATADIR%%/test/swiss/acnum.hit
1722
%%DATADIR%%/test/swiss/acnum.trg
1723
%%DATADIR%%/test/swiss/division.lkp
1724
%%DATADIR%%/test/swiss/entrynam.idx
1725
%%DATADIR%%/test/swiss/seqvn.hit
1726
%%DATADIR%%/test/swiss/seqvn.trg
1727
%%DATADIR%%/test/swiss/des.hit
1728
%%DATADIR%%/test/swiss/des.trg
1729
%%DATADIR%%/test/swiss/keyword.hit
1730
%%DATADIR%%/test/swiss/keyword.trg
1731
%%DATADIR%%/test/swiss/taxon.hit
1732
%%DATADIR%%/test/swiss/taxon.trg
1733
%%DATADIR%%/test/swnew/acnum.hit
1734
%%DATADIR%%/test/swnew/acnum.trg
1735
%%DATADIR%%/test/swnew/division.lkp
1736
%%DATADIR%%/test/swnew/entrynam.idx
1737
%%DATADIR%%/test/swnew/seqvn.hit
1738
%%DATADIR%%/test/swnew/seqvn.trg
1739
%%DATADIR%%/test/swnew/des.hit
1740
%%DATADIR%%/test/swnew/des.trg
1741
%%DATADIR%%/test/swnew/keyword.hit
1742
%%DATADIR%%/test/swnew/keyword.trg
1743
%%DATADIR%%/test/swnew/taxon.hit
1744
%%DATADIR%%/test/swnew/taxon.trg
1745
%%DATADIR%%/test/swnew/new_seq.dat
1746
%%DATADIR%%/test/swnew/upd_ann.dat
1747
%%DATADIR%%/test/swnew/upd_seq.dat
1748
%%DATADIR%%/test/wormpep/wormpep
1749
%%DATADIR%%/test/wormpep/acnum.hit
1750
%%DATADIR%%/test/wormpep/acnum.trg
1751
%%DATADIR%%/test/wormpep/division.lkp
1752
%%DATADIR%%/test/wormpep/entrynam.idx
1753
%%DATADIR%%/test/wormpep/des.hit
1754
%%DATADIR%%/test/wormpep/des.trg
1755
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/DragTree.html
1756
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.PopupListener.html
1757
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.html
1758
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileNode.html
1759
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileSaving.html
1760
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/BuildJembossForm.html
1761
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/ListFilePanel.html
1762
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SectionPanel.html
1763
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetInFileCard.html
1764
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetOutFileCard.html
1765
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.DecimalNumberDocument.html
1766
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.html
1767
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.WholeNumberDocument.html
1768
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.html
1769
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldSink.html
1770
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.html
1771
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.myComboUI.html
1772
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.html
1773
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/FileChooser.html
1774
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.html
1775
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.html
1776
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.html
1777
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.html
1778
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Database.html
1779
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.HorizontalMenu.html
1780
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.html
1781
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Splash.html
1782
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/BuildProgramMenu.html
1783
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ResultsMenuBar.html
1784
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SetUpMenuBar.html
1785
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowResultSet.html
1786
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowSavedResults.html
1787
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SwingWorker.html
1788
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationFields.html
1789
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationParam.html
1790
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdFunResolve.html
1791
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdVarResolve.html
1792
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Ajax.html
1793
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Dependent.html
1794
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/ParseAcd.html
1795
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/JembossProcess.html
1796
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ListFile.html
1797
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ResultList.html
1798
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/RunEmbossApplication.html
1799
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/AuthPopup.html
1800
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/CallAjax.html
1801
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/GetWossname.html
1802
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossRun.html
1803
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossSoapException.html
1804
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PendingResults.html
1805
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PrivateRequest.html
1806
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/ResListView.html
1807
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.html
1808
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.winExit.html
1809
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossLogo.html
1810
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossParams.html
1811
%%DATADIR%%/jemboss/api/allclasses-frame.html
1812
%%DATADIR%%/jemboss/api/deprecated-list.html
1813
%%DATADIR%%/jemboss/api/getClasses.pl
1814
%%DATADIR%%/jemboss/api/help-doc.html
1815
%%DATADIR%%/jemboss/api/index-all.html
1816
%%DATADIR%%/jemboss/api/index.html
1817
%%DATADIR%%/jemboss/api/makeDocs.csh
1818
%%DATADIR%%/jemboss/api/overview-tree.html
1819
%%DATADIR%%/jemboss/api/package-list
1820
%%DATADIR%%/jemboss/api/packages.html
1821
%%DATADIR%%/jemboss/api/serialized-form.html
1822
%%DATADIR%%/jemboss/api/stylesheet.css
1823
%%DATADIR%%/jemboss/images/Backward_arrow_button.gif
1824
%%DATADIR%%/jemboss/images/Forward_arrow_button.gif
1825
%%DATADIR%%/jemboss/images/Go_button.gif
1826
%%DATADIR%%/jemboss/images/Information_button.gif
1827
%%DATADIR%%/jemboss/images/Jemboss_logo_greyback.gif
1828
%%DATADIR%%/jemboss/images/Jemboss_logo_large.gif
1829
%%DATADIR%%/jemboss/images/Jemboss_logo_small.gif
1830
%%DATADIR%%/jemboss/images/Job_manager_button.gif
1831
%%DATADIR%%/jemboss/images/Refresh_button.gif
1832
%%DATADIR%%/jemboss/images/Refresh_button2.gif
1833
%%DATADIR%%/jemboss/lib/axis/axis-ant.jar
1834
%%DATADIR%%/jemboss/lib/axis/axis.jar
1835
%%DATADIR%%/jemboss/lib/axis/commons-discovery.jar
1836
%%DATADIR%%/jemboss/lib/axis/commons-logging.jar
1837
%%DATADIR%%/jemboss/lib/axis/jaxrpc.jar
1838
%%DATADIR%%/jemboss/lib/axis/log4j-1.2.8.jar
1839
%%DATADIR%%/jemboss/lib/axis/saaj.jar
1840
%%DATADIR%%/jemboss/lib/axis/servlet.jar
1841
%%DATADIR%%/jemboss/lib/axis/wsdl4j.jar
1842
%%DATADIR%%/jemboss/lib/README
1843
%%DATADIR%%/jemboss/lib/activation.jar
1844
%%DATADIR%%/jemboss/lib/jakarta-regexp-1.2.jar
1845
%%DATADIR%%/jemboss/lib/mail.jar
1846
%%DATADIR%%/jemboss/lib/xerces.jar
1847
%%DATADIR%%/jemboss/lib/jalview.jar
1848
%%DATADIR%%/jemboss/lib/JembossPrintAlignment.jar
1849
%%DATADIR%%/jemboss/lib/grout.jar
1850
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignApplet.java
1851
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequenceJPanel.java
1852
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignJFrame.java
1853
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Matrix.java
1854
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourJFrame.java
1855
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/MatrixJFrame.java
1856
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourMenu.java
1857
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PatternJFrame.java
1858
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourPanel.java
1859
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PlotConsensus.java
1860
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Consensus.java
1861
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrettyPlotJFrame.java
1862
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ConsensusOptions.java
1863
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignmentImage.java
1864
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GraphicSequenceCollection.java
1865
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignment.java
1866
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Paste.java
1867
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameEvent.java
1868
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Sequence.java
1869
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrame.java
1870
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceJPanel.java
1871
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameListener.java
1872
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceNameJButton.java
1873
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionEvent.java
1874
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceProperties.java
1875
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollection.java
1876
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceReader.java
1877
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionListener.java
1878
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceSaver.java
1879
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequence.java
1880
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/IDTableJFrame.java
1881
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintableJTable.java
1882
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Block.java
1883
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/PrintDNAImage.java
1884
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/DNADraw.java
1885
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/RestrictionEnzyme.java
1886
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/EmbossCirdnaReader.java
1887
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Ticks.java
1888
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/GeneticMarker.java
1889
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Wizard.java
1890
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/LineAttribute.java
1891
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/Graph2DPlot.java
1892
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/PrintPlot.java
1893
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/DragTree.java
1894
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileEditorDisplay.java
1895
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileNode.java
1896
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSave.java
1897
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSaving.java
1898
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteDragTree.java
1899
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileNode.java
1900
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileTreePanel.java
1901
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalAndRemoteFileTreeFrame.java
1902
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalTreeToolBar.java
1903
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java
1904
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ListFilePanel.java
1905
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SectionPanel.java
1906
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetInFileCard.java
1907
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetOutFileCard.java
1908
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldFloat.java
1909
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldInt.java
1910
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldSink.java
1911
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/JembossComboPopup.java
1912
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/MultiLineToolTipUI.java
1913
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/PlafMacros.java
1914
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ReportFormat.java
1915
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/AlignFormat.java
1916
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ApplicationNamePanel.java
1917
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/LabelTextBox.java
1918
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/Separator.java
1919
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.java
1920
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/FileChooser.java
1921
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java
1922
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.java
1923
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.java
1924
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.java
1925
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/Database.java
1926
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/ProgList.java
1927
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/AdvancedOptions.java
1928
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ResultsMenuBar.java
1929
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowResultSet.java
1930
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java
1931
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceData.java
1932
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowSavedResults.java
1933
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/LaunchJalView.java
1934
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceList.java
1935
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SwingWorker.java
1936
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/MemoryComboBox.java
1937
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SetUpMenuBar.java
1938
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Browser.java
1939
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SplashThread.java
1940
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ScrollPanel.java
1941
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ImageIconJPanel.java
1942
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Favorites.java
1943
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/KeywordSearch.java
1944
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationFields.java
1945
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationParam.java
1946
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdFunResolve.java
1947
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVariableResolve.java
1948
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVarResolve.java
1949
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Ajax.java
1950
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AjaxUtil.java
1951
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Dependent.java
1952
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/ParseAcd.java
1953
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/BatchUpdateTimer.java
1954
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/JembossProcess.java
1955
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ListFile.java
1956
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultList.java
1957
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultsUpdateTimer.java
1958
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication.java
1959
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication2.java
1960
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossServer.java
1961
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileServer.java
1962
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossThread.java
1963
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossAuthServer.java
1964
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileAuthServer.java
1965
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPublicServer.java
1966
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPrivateServer.java
1967
%%DATADIR%%/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java
1968
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/AuthPopup.java
1969
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossSoapException.java
1970
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/CallAjax.java
1971
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PendingResults.java
1972
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetWossname.java
1973
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PrivateRequest.java
1974
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossRun.java
1975
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ServerSetup.java
1976
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileRoots.java
1977
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileList.java
1978
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PublicRequest.java
1979
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetACD.java
1980
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetHelp.java
1981
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ShowDB.java
1982
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/MakeFileSafe.java
1983
%%DATADIR%%/jemboss/org/emboss/jemboss/Jemboss.java
1984
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossLogo.java
1985
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossParams.java
1986
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossJarUtil.java
1987
%%DATADIR%%/jemboss/resources/jemboss.properties
1988
%%DATADIR%%/jemboss/resources/readme.html
1989
%%DATADIR%%/jemboss/resources/readmeAlign.html
1990
%%DATADIR%%/jemboss/resources/readmeDNADraw.html
1991
%%DATADIR%%/jemboss/resources/results.html
1992
%%DATADIR%%/jemboss/resources/version
1993
%%DATADIR%%/jemboss/resources/filemgr.html
1994
%%DATADIR%%/jemboss/resources/seqList.html
1995
%%DATADIR%%/jemboss/utils/install-jemboss-server.sh
1996
%%DATADIR%%/jemboss/utils/keys.sh
1997
%%DATADIR%%/jemboss/utils/makeJar.csh
1998
%%DATADIR%%/jemboss/utils/makeJNLP.sh
1999
%%DATADIR%%/jemboss/utils/makeFileManagerJNLP.sh
2000
%%DATADIR%%/jemboss/utils/template.html
2001
%%DATADIR%%/jemboss/utils/README
2002
%%DATADIR%%/jemboss/LICENSE
2003
%%DATADIR%%/jemboss/readme.html
2004
%%DATADIR%%/jemboss/runJemboss.sh
2005
%%DATADIR%%/jemboss/README
2006
%%PORTDOCS%%@dirrm %%DOCSDIR%%/manuals
1927
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/html
2007
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/html
2008
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/text
1928
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs
2009
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs
1929
%%PORTDOCS%%@dirrm %%DOCSDIR%%/manuals
2010
%%PORTDOCS%%@dirrm %%DOCSDIR%%/tutorials
1930
%%PORTDOCS%%@dirrm %%DOCSDIR%%
2011
%%PORTDOCS%%@dirrm %%DOCSDIR%%
1931
@dirrm %%DATADIR%%/test/wormpep
2012
@dirrm %%DATADIR%%/acd
1932
@dirrm %%DATADIR%%/test/swnew
2013
@dirrm %%DATADIR%%/data/AAINDEX
1933
@dirrm %%DATADIR%%/test/swiss
2014
@dirrm %%DATADIR%%/data/CODONS
1934
@dirrm %%DATADIR%%/test/pir
2015
@dirrm %%DATADIR%%/data/REBASE
2016
@dirrm %%DATADIR%%/data/PRINTS
2017
@dirrm %%DATADIR%%/data/PROSITE
2018
@dirrmtry %%DATADIR%%/data
2019
@dirrm %%DATADIR%%/test/data
2020
@dirrm %%DATADIR%%/test/embl
1935
@dirrm %%DATADIR%%/test/genbank
2021
@dirrm %%DATADIR%%/test/genbank
1936
@dirrm %%DATADIR%%/test/gb
2022
@dirrm %%DATADIR%%/test/gb
1937
@dirrm %%DATADIR%%/test/embl
2023
@dirrm %%DATADIR%%/test/pir
1938
@dirrm %%DATADIR%%/test/data
2024
@dirrm %%DATADIR%%/test/swiss
2025
@dirrm %%DATADIR%%/test/swnew
2026
@dirrm %%DATADIR%%/test/wormpep
1939
@dirrm %%DATADIR%%/test
2027
@dirrm %%DATADIR%%/test
1940
@dirrm %%DATADIR%%/jemboss/utils
1941
@dirrm %%DATADIR%%/jemboss/resources
1942
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/soap
1943
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/server
1944
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/programs
1945
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd
1946
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser
1947
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup
1948
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser
1949
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/form
1950
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree
1951
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui
1952
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/graphics
1953
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/editor
1954
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/draw
1955
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss
1956
@dirrm %%DATADIR%%/jemboss/org/emboss
1957
@dirrm %%DATADIR%%/jemboss/org
1958
@dirrm %%DATADIR%%/jemboss/lib/axis
1959
@dirrm %%DATADIR%%/jemboss/lib
1960
@dirrm %%DATADIR%%/jemboss/images
1961
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/soap
1962
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/programs
1963
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd
1964
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser
1965
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup
1966
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser
1967
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form
1968
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree
2028
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree
2029
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form
2030
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser
2031
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup
1969
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui
2032
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui
2033
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd
2034
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser
2035
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/programs
2036
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/soap
1970
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss
2037
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss
1971
@dirrm %%DATADIR%%/jemboss/api/org/emboss
2038
@dirrm %%DATADIR%%/jemboss/api/org/emboss
1972
@dirrm %%DATADIR%%/jemboss/api/org
2039
@dirrm %%DATADIR%%/jemboss/api/org
1973
@dirrm %%DATADIR%%/jemboss/api
2040
@dirrm %%DATADIR%%/jemboss/api
2041
@dirrm %%DATADIR%%/jemboss/images
2042
@dirrm %%DATADIR%%/jemboss/lib/axis
2043
@dirrm %%DATADIR%%/jemboss/lib
2044
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/editor
2045
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/draw
2046
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/graphics
2047
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree
2048
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/form
2049
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser
2050
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup
2051
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui
2052
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd
2053
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser
2054
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/programs
2055
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/server
2056
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/soap
2057
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss
2058
@dirrm %%DATADIR%%/jemboss/org/emboss
2059
@dirrm %%DATADIR%%/jemboss/org
2060
@dirrm %%DATADIR%%/jemboss/resources
2061
@dirrm %%DATADIR%%/jemboss/utils
1974
@dirrm %%DATADIR%%/jemboss
2062
@dirrm %%DATADIR%%/jemboss
1975
@dirrm %%DATADIR%%/data/REBASE
2063
@dirrmtry %%DATADIR%%
1976
@dirrm %%DATADIR%%/data/PROSITE
1977
@dirrm %%DATADIR%%/data/PRINTS
1978
@dirrm %%DATADIR%%/data/CODONS
1979
@dirrm %%DATADIR%%/data/AAINDEX
1980
@dirrm %%DATADIR%%/data
1981
@dirrm %%DATADIR%%/acd
1982
@dirrm %%DATADIR%%

Return to bug 93053