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

Collapse All | Expand All

(-)emboss/Makefile (-13 / +12 lines)
Lines 6-19 Link Here
6
#
6
#
7
7
8
PORTNAME=	emboss
8
PORTNAME=	emboss
9
PORTVERSION=	2.10.0
9
PORTVERSION=	3.0.0
10
PORTREVISION=	1
11
CATEGORIES=	biology
10
CATEGORIES=	biology
12
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/ \
13
		ftp://ftp.es.embnet.org/pub/software/emboss/EMBOSS/ \
13
		ftp://ftp.es.embnet.org/pub/software/emboss/EMBOSS/ \
14
		ftp://ftp.ebi.ac.uk/pub/software/unix/EMBOSS/
14
		ftp://ftp.ebi.ac.uk/pub/software/unix/EMBOSS/
15
DISTNAME=	${PORTNAME:U}-${PORTVERSION}
15
DISTNAME=	${PORTNAME:U}-${PORTVERSION}
16
DISTFILES=	${PORTNAME:U}-${PORTVERSION}${EXTRACT_SUFX}
16
DISTFILES=	${PORTNAME:U}-${PORTVERSION}${EXTRACT_SUFX}
17
DIST_SUBDIR=	${PORTNAME}
17
18
18
MAINTAINER=	fernan@iib.unsam.edu.ar
19
MAINTAINER=	fernan@iib.unsam.edu.ar
19
COMMENT=	A collection of open source tools for genetic sequence analysis
20
COMMENT=	A collection of open source tools for genetic sequence analysis
Lines 28-38 Link Here
28
USE_SUBMAKE=	yes
29
USE_SUBMAKE=	yes
29
USE_GMAKE=	yes
30
USE_GMAKE=	yes
30
GNU_CONFIGURE=	yes
31
GNU_CONFIGURE=	yes
32
USE_AUTOTOOLS=	libtool:15
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 (-1392 / +1478 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
163
etc/emboss.default.sample
166
bin/runJemboss.csh
167
include/drivers.h
168
include/pdf.h
169
include/plcore.h
170
include/plevent.h
171
include/plplotP.h
172
include/plxwd.h
173
include/metadefs.h
174
include/plConfig.h
175
include/pldebug.h
176
include/plplot.h
177
include/plstrm.h
178
include/plDevs.h
179
include/ajax.h
180
include/ajarch.h
181
include/ajdefine.h
164
include/ajacd.h
182
include/ajacd.h
165
include/ajalign.h
183
include/ajalign.h
166
include/ajarch.h
167
include/ajarr.h
184
include/ajarr.h
168
include/ajassert.h
185
include/ajassert.h
169
include/ajax.h
170
include/ajbase.h
186
include/ajbase.h
171
include/ajcall.h
187
include/ajcall.h
172
include/ajcod.h
188
include/ajcod.h
173
include/ajdan.h
189
include/ajdan.h
174
include/ajdefine.h
175
include/ajdmx.h
190
include/ajdmx.h
176
include/ajdomain.h
191
include/ajdomain.h
177
include/ajexcept.h
192
include/ajexcept.h
Lines 180-187 Link Here
180
include/ajfile.h
195
include/ajfile.h
181
include/ajfmt.h
196
include/ajfmt.h
182
include/ajgraph.h
197
include/ajgraph.h
183
include/ajgraphstruct.h
184
include/ajgraphxml.h
198
include/ajgraphxml.h
199
include/ajgraphstruct.h
185
include/ajhist.h
200
include/ajhist.h
186
include/ajindex.h
201
include/ajindex.h
187
include/ajjava.h
202
include/ajjava.h
Lines 214-220 Link Here
214
include/ajtree.h
229
include/ajtree.h
215
include/ajutil.h
230
include/ajutil.h
216
include/ajvector.h
231
include/ajvector.h
217
include/drivers.h
232
include/pcre.h
233
include/pcre_chartables.c
234
include/pcre_config.h
235
include/pcre_get.c
236
include/pcre_printint.c
237
include/pcre_internal.h
238
include/pcreposix.h
239
include/emboss.h
218
include/embaln.h
240
include/embaln.h
219
include/embcom.h
241
include/embcom.h
220
include/embcons.h
242
include/embcons.h
Lines 232-1230 Link Here
232
include/embmisc.h
254
include/embmisc.h
233
include/embmol.h
255
include/embmol.h
234
include/embnmer.h
256
include/embnmer.h
235
include/emboss.h
236
include/embpat.h
257
include/embpat.h
237
include/embpdb.h
238
include/embprop.h
258
include/embprop.h
259
include/embpdb.h
239
include/embread.h
260
include/embread.h
240
include/embshow.h
241
include/embsig.h
261
include/embsig.h
262
include/embshow.h
242
include/embword.h
263
include/embword.h
243
include/metadefs.h
264
lib/libplplot.so.5
244
include/pcre.h
265
lib/libplplot.so
245
include/pcre_chartables.c
266
lib/libplplot.la
246
include/pcre_config.h
267
lib/libplplot.a
247
include/pcre_get.c
268
lib/libajax.so.3
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.la
263
lib/libajax.so
269
lib/libajax.so
264
lib/libajax.so.1
270
lib/libajax.la
265
lib/libajaxg.a
271
lib/libajax.a
266
lib/libajaxg.la
272
lib/libajaxg.so.3
267
lib/libajaxg.so
273
lib/libajaxg.so
268
lib/libajaxg.so.1
274
lib/libajaxg.la
269
lib/libnucleus.a
275
lib/libajaxg.a
270
lib/libnucleus.la
276
lib/libnucleus.so.3
271
lib/libnucleus.so
277
lib/libnucleus.so
272
lib/libnucleus.so.1
278
lib/libnucleus.la
273
lib/libplplot.a
279
lib/libnucleus.a
274
lib/libplplot.la
280
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.sty
275
lib/libplplot.so
281
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.tex
276
lib/libplplot.so.5
277
%%DATADIR%%/acd/aaindexextract.acd
278
%%DATADIR%%/acd/abiview.acd
279
%%DATADIR%%/acd/acdc.acd
280
%%DATADIR%%/acd/acdlog.acd
281
%%DATADIR%%/acd/acdpretty.acd
282
%%DATADIR%%/acd/acdtable.acd
283
%%DATADIR%%/acd/acdtrace.acd
284
%%DATADIR%%/acd/acdvalid.acd
285
%%DATADIR%%/acd/ajbad.acd
286
%%DATADIR%%/acd/ajfeatest.acd
287
%%DATADIR%%/acd/ajtest.acd
288
%%DATADIR%%/acd/antigenic.acd
289
%%DATADIR%%/acd/backtranseq.acd
290
%%DATADIR%%/acd/banana.acd
291
%%DATADIR%%/acd/biosed.acd
292
%%DATADIR%%/acd/btwisted.acd
293
%%DATADIR%%/acd/cai.acd
294
%%DATADIR%%/acd/chaos.acd
295
%%DATADIR%%/acd/charge.acd
296
%%DATADIR%%/acd/checktrans.acd
297
%%DATADIR%%/acd/chips.acd
298
%%DATADIR%%/acd/cirdna.acd
299
%%DATADIR%%/acd/codcmp.acd
300
%%DATADIR%%/acd/coderet.acd
301
%%DATADIR%%/acd/codes.english
302
%%DATADIR%%/acd/complex.acd
303
%%DATADIR%%/acd/compseq.acd
304
%%DATADIR%%/acd/cons.acd
305
%%DATADIR%%/acd/corbatest.acd
306
%%DATADIR%%/acd/cpgplot.acd
307
%%DATADIR%%/acd/cpgreport.acd
308
%%DATADIR%%/acd/cusp.acd
309
%%DATADIR%%/acd/cutgextract.acd
310
%%DATADIR%%/acd/cutseq.acd
311
%%DATADIR%%/acd/dan.acd
312
%%DATADIR%%/acd/dbiblast.acd
313
%%DATADIR%%/acd/dbifasta.acd
314
%%DATADIR%%/acd/dbiflat.acd
315
%%DATADIR%%/acd/dbigcg.acd
316
%%DATADIR%%/acd/degapseq.acd
317
%%DATADIR%%/acd/demoalign.acd
318
%%DATADIR%%/acd/demofeatures.acd
319
%%DATADIR%%/acd/demolist.acd
320
%%DATADIR%%/acd/demoreport.acd
321
%%DATADIR%%/acd/demosequence.acd
322
%%DATADIR%%/acd/demostring.acd
323
%%DATADIR%%/acd/demotable.acd
324
%%DATADIR%%/acd/descseq.acd
325
%%DATADIR%%/acd/diffseq.acd
326
%%DATADIR%%/acd/digest.acd
327
%%DATADIR%%/acd/distmat.acd
328
%%DATADIR%%/acd/dotmatcher.acd
329
%%DATADIR%%/acd/dotpath.acd
330
%%DATADIR%%/acd/dottup.acd
331
%%DATADIR%%/acd/dreg.acd
332
%%DATADIR%%/acd/einverted.acd
333
%%DATADIR%%/acd/embossdata.acd
334
%%DATADIR%%/acd/embossversion.acd
335
%%DATADIR%%/acd/emma.acd
336
%%DATADIR%%/acd/emowse.acd
337
%%DATADIR%%/acd/entrails.acd
338
%%DATADIR%%/acd/entret.acd
339
%%DATADIR%%/acd/epestfind.acd
340
%%DATADIR%%/acd/eprimer3.acd
341
%%DATADIR%%/acd/equicktandem.acd
342
%%DATADIR%%/acd/est2genome.acd
343
%%DATADIR%%/acd/etandem.acd
344
%%DATADIR%%/acd/extractfeat.acd
345
%%DATADIR%%/acd/extractseq.acd
346
%%DATADIR%%/acd/findkm.acd
347
%%DATADIR%%/acd/freak.acd
348
%%DATADIR%%/acd/fuzznuc.acd
349
%%DATADIR%%/acd/fuzzpro.acd
350
%%DATADIR%%/acd/fuzztran.acd
351
%%DATADIR%%/acd/garnier.acd
352
%%DATADIR%%/acd/geecee.acd
353
%%DATADIR%%/acd/getorf.acd
354
%%DATADIR%%/acd/giep.acd
355
%%DATADIR%%/acd/groups.standard
356
%%DATADIR%%/acd/helixturnhelix.acd
357
%%DATADIR%%/acd/histogramtest.acd
358
%%DATADIR%%/acd/hmoment.acd
359
%%DATADIR%%/acd/iep.acd
360
%%DATADIR%%/acd/infoalign.acd
361
%%DATADIR%%/acd/infoseq.acd
362
%%DATADIR%%/acd/intconv.acd
363
%%DATADIR%%/acd/isochore.acd
364
%%DATADIR%%/acd/kmrsplitter.acd
365
%%DATADIR%%/acd/kmrunion.acd
366
%%DATADIR%%/acd/knowntypes.standard
367
%%DATADIR%%/acd/lindna.acd
368
%%DATADIR%%/acd/listor.acd
369
%%DATADIR%%/acd/marscan.acd
370
%%DATADIR%%/acd/maskfeat.acd
371
%%DATADIR%%/acd/maskseq.acd
372
%%DATADIR%%/acd/matcher.acd
373
%%DATADIR%%/acd/megamerger.acd
374
%%DATADIR%%/acd/merger.acd
375
%%DATADIR%%/acd/msbar.acd
376
%%DATADIR%%/acd/mwcontam.acd
377
%%DATADIR%%/acd/mwfilter.acd
378
%%DATADIR%%/acd/needle.acd
379
%%DATADIR%%/acd/newcoils.acd
380
%%DATADIR%%/acd/newcpgreport.acd
381
%%DATADIR%%/acd/newcpgseek.acd
382
%%DATADIR%%/acd/newseq.acd
383
%%DATADIR%%/acd/noreturn.acd
384
%%DATADIR%%/acd/notseq.acd
385
%%DATADIR%%/acd/nthseq.acd
386
%%DATADIR%%/acd/octanol.acd
387
%%DATADIR%%/acd/oddcomp.acd
388
%%DATADIR%%/acd/palindrome.acd
389
%%DATADIR%%/acd/pasteseq.acd
390
%%DATADIR%%/acd/patmatdb.acd
391
%%DATADIR%%/acd/patmatmotifs.acd
392
%%DATADIR%%/acd/patmattest.acd
393
%%DATADIR%%/acd/pepcoil.acd
394
%%DATADIR%%/acd/pepinfo.acd
395
%%DATADIR%%/acd/pepnet.acd
396
%%DATADIR%%/acd/pepstats.acd
397
%%DATADIR%%/acd/pepwheel.acd
398
%%DATADIR%%/acd/pepwindow.acd
399
%%DATADIR%%/acd/pepwindowall.acd
400
%%DATADIR%%/acd/plotcon.acd
401
%%DATADIR%%/acd/plotorf.acd
402
%%DATADIR%%/acd/polydot.acd
403
%%DATADIR%%/acd/preg.acd
404
%%DATADIR%%/acd/prettyplot.acd
405
%%DATADIR%%/acd/prettyseq.acd
406
%%DATADIR%%/acd/prima.acd
407
%%DATADIR%%/acd/primers.acd
408
%%DATADIR%%/acd/primersearch.acd
409
%%DATADIR%%/acd/printsextract.acd
410
%%DATADIR%%/acd/profit.acd
411
%%DATADIR%%/acd/prophecy.acd
412
%%DATADIR%%/acd/prophet.acd
413
%%DATADIR%%/acd/prosextract.acd
414
%%DATADIR%%/acd/pscan.acd
415
%%DATADIR%%/acd/psiphi.acd
416
%%DATADIR%%/acd/rebaseextract.acd
417
%%DATADIR%%/acd/recoder.acd
418
%%DATADIR%%/acd/redata.acd
419
%%DATADIR%%/acd/remap.acd
420
%%DATADIR%%/acd/restover.acd
421
%%DATADIR%%/acd/restrict.acd
422
%%DATADIR%%/acd/revseq.acd
423
%%DATADIR%%/acd/sections.standard
424
%%DATADIR%%/acd/seealso.acd
425
%%DATADIR%%/acd/seqinfo.acd
426
%%DATADIR%%/acd/seqmatchall.acd
427
%%DATADIR%%/acd/seqret.acd
428
%%DATADIR%%/acd/seqretall.acd
429
%%DATADIR%%/acd/seqretallfeat.acd
430
%%DATADIR%%/acd/seqretset.acd
431
%%DATADIR%%/acd/seqretsingle.acd
432
%%DATADIR%%/acd/seqretsplit.acd
433
%%DATADIR%%/acd/seqrettype.acd
434
%%DATADIR%%/acd/showalign.acd
435
%%DATADIR%%/acd/showdb.acd
436
%%DATADIR%%/acd/showfeat.acd
437
%%DATADIR%%/acd/showorf.acd
438
%%DATADIR%%/acd/showseq.acd
439
%%DATADIR%%/acd/shuffleseq.acd
440
%%DATADIR%%/acd/sigcleave.acd
441
%%DATADIR%%/acd/silent.acd
442
%%DATADIR%%/acd/sirna.acd
443
%%DATADIR%%/acd/sixpack.acd
444
%%DATADIR%%/acd/skipseq.acd
445
%%DATADIR%%/acd/splitter.acd
446
%%DATADIR%%/acd/stretcher.acd
447
%%DATADIR%%/acd/stssearch.acd
448
%%DATADIR%%/acd/supermatcher.acd
449
%%DATADIR%%/acd/syco.acd
450
%%DATADIR%%/acd/tcode.acd
451
%%DATADIR%%/acd/testplot.acd
452
%%DATADIR%%/acd/textsearch.acd
453
%%DATADIR%%/acd/tfextract.acd
454
%%DATADIR%%/acd/tfm.acd
455
%%DATADIR%%/acd/tfscan.acd
456
%%DATADIR%%/acd/tmap.acd
457
%%DATADIR%%/acd/tranalign.acd
458
%%DATADIR%%/acd/transeq.acd
459
%%DATADIR%%/acd/treetypedisplay.acd
460
%%DATADIR%%/acd/trimest.acd
461
%%DATADIR%%/acd/trimseq.acd
462
%%DATADIR%%/acd/twofeat.acd
463
%%DATADIR%%/acd/union.acd
464
%%DATADIR%%/acd/variables.standard
465
%%DATADIR%%/acd/vectorstrip.acd
466
%%DATADIR%%/acd/water.acd
467
%%DATADIR%%/acd/whichdb.acd
468
%%DATADIR%%/acd/wobble.acd
469
%%DATADIR%%/acd/wordcount.acd
470
%%DATADIR%%/acd/wordmatch.acd
471
%%DATADIR%%/acd/wossname.acd
472
%%DATADIR%%/acd/yank.acd
473
%%DATADIR%%/data/AAINDEX/dummyfile
474
%%DATADIR%%/data/CODONS/Eacc.cut
475
%%DATADIR%%/data/CODONS/Eadenovirus5.cut
476
%%DATADIR%%/data/CODONS/Eadenovirus7.cut
477
%%DATADIR%%/data/CODONS/Eaidlav.cut
478
%%DATADIR%%/data/CODONS/Eanasp.cut
479
%%DATADIR%%/data/CODONS/Eani.cut
480
%%DATADIR%%/data/CODONS/Eani_h.cut
481
%%DATADIR%%/data/CODONS/Eanidmit.cut
482
%%DATADIR%%/data/CODONS/Easn.cut
483
%%DATADIR%%/data/CODONS/Eath.cut
484
%%DATADIR%%/data/CODONS/Eatu.cut
485
%%DATADIR%%/data/CODONS/Eavi.cut
486
%%DATADIR%%/data/CODONS/Ebja.cut
487
%%DATADIR%%/data/CODONS/Ebly.cut
488
%%DATADIR%%/data/CODONS/Ebme.cut
489
%%DATADIR%%/data/CODONS/Ebmo.cut
490
%%DATADIR%%/data/CODONS/Ebna.cut
491
%%DATADIR%%/data/CODONS/Ebov.cut
492
%%DATADIR%%/data/CODONS/Ebovsp.cut
493
%%DATADIR%%/data/CODONS/Ebst.cut
494
%%DATADIR%%/data/CODONS/Ebsu.cut
495
%%DATADIR%%/data/CODONS/Ebsu_h.cut
496
%%DATADIR%%/data/CODONS/Ecac.cut
497
%%DATADIR%%/data/CODONS/Ecal.cut
498
%%DATADIR%%/data/CODONS/Eccr.cut
499
%%DATADIR%%/data/CODONS/Ecel.cut
500
%%DATADIR%%/data/CODONS/Echi.cut
501
%%DATADIR%%/data/CODONS/Echicken.cut
502
%%DATADIR%%/data/CODONS/Echisp.cut
503
%%DATADIR%%/data/CODONS/Echk.cut
504
%%DATADIR%%/data/CODONS/Echmp.cut
505
%%DATADIR%%/data/CODONS/Echnt.cut
506
%%DATADIR%%/data/CODONS/Echos.cut
507
%%DATADIR%%/data/CODONS/Echzm.cut
508
%%DATADIR%%/data/CODONS/Echzmrubp.cut
509
%%DATADIR%%/data/CODONS/Ecpx.cut
510
%%DATADIR%%/data/CODONS/Ecre.cut
511
%%DATADIR%%/data/CODONS/Ecrisp.cut
512
%%DATADIR%%/data/CODONS/Ectr.cut
513
%%DATADIR%%/data/CODONS/Edayhoff.cut
514
%%DATADIR%%/data/CODONS/Eddi.cut
515
%%DATADIR%%/data/CODONS/Eddi_h.cut
516
%%DATADIR%%/data/CODONS/Edog.cut
517
%%DATADIR%%/data/CODONS/Edro.cut
518
%%DATADIR%%/data/CODONS/Edro_h.cut
519
%%DATADIR%%/data/CODONS/Edrosophila.cut
520
%%DATADIR%%/data/CODONS/Eeca.cut
521
%%DATADIR%%/data/CODONS/Eeco.cut
522
%%DATADIR%%/data/CODONS/Eeco_h.cut
523
%%DATADIR%%/data/CODONS/Eecoli.cut
524
%%DATADIR%%/data/CODONS/Ef1.cut
525
%%DATADIR%%/data/CODONS/Efish.cut
526
%%DATADIR%%/data/CODONS/Efmdvpolyp.cut
527
%%DATADIR%%/data/CODONS/Eham.cut
528
%%DATADIR%%/data/CODONS/Ehha.cut
529
%%DATADIR%%/data/CODONS/Ehin.cut
530
%%DATADIR%%/data/CODONS/Ehma.cut
531
%%DATADIR%%/data/CODONS/Ehum.cut
532
%%DATADIR%%/data/CODONS/Ehuman.cut
533
%%DATADIR%%/data/CODONS/Ekla.cut
534
%%DATADIR%%/data/CODONS/Ekpn.cut
535
%%DATADIR%%/data/CODONS/Ella.cut
536
%%DATADIR%%/data/CODONS/Emac.cut
537
%%DATADIR%%/data/CODONS/Emaize.cut
538
%%DATADIR%%/data/CODONS/Emam_h.cut
539
%%DATADIR%%/data/CODONS/Emixlg.cut
540
%%DATADIR%%/data/CODONS/Emouse.cut
541
%%DATADIR%%/data/CODONS/Emsa.cut
542
%%DATADIR%%/data/CODONS/Emse.cut
543
%%DATADIR%%/data/CODONS/Emta.cut
544
%%DATADIR%%/data/CODONS/Emtu.cut
545
%%DATADIR%%/data/CODONS/Emus.cut
546
%%DATADIR%%/data/CODONS/Emussp.cut
547
%%DATADIR%%/data/CODONS/Emva.cut
548
%%DATADIR%%/data/CODONS/Emze.cut
549
%%DATADIR%%/data/CODONS/Emzecp.cut
550
%%DATADIR%%/data/CODONS/Encr.cut
551
%%DATADIR%%/data/CODONS/Eneu.cut
552
%%DATADIR%%/data/CODONS/Engo.cut
553
%%DATADIR%%/data/CODONS/Eoncsp.cut
554
%%DATADIR%%/data/CODONS/Epae.cut
555
%%DATADIR%%/data/CODONS/Epea.cut
556
%%DATADIR%%/data/CODONS/Epet.cut
557
%%DATADIR%%/data/CODONS/Epfa.cut
558
%%DATADIR%%/data/CODONS/Ephix174.cut
559
%%DATADIR%%/data/CODONS/Ephv.cut
560
%%DATADIR%%/data/CODONS/Ephy.cut
561
%%DATADIR%%/data/CODONS/Epig.cut
562
%%DATADIR%%/data/CODONS/Epolyomaa2.cut
563
%%DATADIR%%/data/CODONS/Epombe.cut
564
%%DATADIR%%/data/CODONS/Epombecai.cut
565
%%DATADIR%%/data/CODONS/Epot.cut
566
%%DATADIR%%/data/CODONS/Eppu.cut
567
%%DATADIR%%/data/CODONS/Epse.cut
568
%%DATADIR%%/data/CODONS/Epsy.cut
569
%%DATADIR%%/data/CODONS/Epvu.cut
570
%%DATADIR%%/data/CODONS/Erab.cut
571
%%DATADIR%%/data/CODONS/Erabbit.cut
572
%%DATADIR%%/data/CODONS/Erabsp.cut
573
%%DATADIR%%/data/CODONS/Erat.cut
574
%%DATADIR%%/data/CODONS/Eratsp.cut
575
%%DATADIR%%/data/CODONS/Erca.cut
576
%%DATADIR%%/data/CODONS/Erhm.cut
577
%%DATADIR%%/data/CODONS/Eric.cut
578
%%DATADIR%%/data/CODONS/Erle.cut
579
%%DATADIR%%/data/CODONS/Erme.cut
580
%%DATADIR%%/data/CODONS/Ersp.cut
581
%%DATADIR%%/data/CODONS/Esalsp.cut
582
%%DATADIR%%/data/CODONS/Esau.cut
583
%%DATADIR%%/data/CODONS/Esco.cut
584
%%DATADIR%%/data/CODONS/Esgi.cut
585
%%DATADIR%%/data/CODONS/Eshp.cut
586
%%DATADIR%%/data/CODONS/Eshpsp.cut
587
%%DATADIR%%/data/CODONS/Esli.cut
588
%%DATADIR%%/data/CODONS/Eslm.cut
589
%%DATADIR%%/data/CODONS/Esma.cut
590
%%DATADIR%%/data/CODONS/Esmi.cut
591
%%DATADIR%%/data/CODONS/Esmu.cut
592
%%DATADIR%%/data/CODONS/Esoy.cut
593
%%DATADIR%%/data/CODONS/Espi.cut
594
%%DATADIR%%/data/CODONS/Espn.cut
595
%%DATADIR%%/data/CODONS/Espo.cut
596
%%DATADIR%%/data/CODONS/Espo_h.cut
597
%%DATADIR%%/data/CODONS/Espu.cut
598
%%DATADIR%%/data/CODONS/Esta.cut
599
%%DATADIR%%/data/CODONS/Esty.cut
600
%%DATADIR%%/data/CODONS/Esus.cut
601
%%DATADIR%%/data/CODONS/Esv40.cut
602
%%DATADIR%%/data/CODONS/Esyhsp.cut
603
%%DATADIR%%/data/CODONS/Esynsp.cut
604
%%DATADIR%%/data/CODONS/Etbr.cut
605
%%DATADIR%%/data/CODONS/Etcr.cut
606
%%DATADIR%%/data/CODONS/Eter.cut
607
%%DATADIR%%/data/CODONS/Etetsp.cut
608
%%DATADIR%%/data/CODONS/Etob.cut
609
%%DATADIR%%/data/CODONS/Etobcp.cut
610
%%DATADIR%%/data/CODONS/Etom.cut
611
%%DATADIR%%/data/CODONS/Etrb.cut
612
%%DATADIR%%/data/CODONS/Evco.cut
613
%%DATADIR%%/data/CODONS/Ewht.cut
614
%%DATADIR%%/data/CODONS/Exel.cut
615
%%DATADIR%%/data/CODONS/Exenopus.cut
616
%%DATADIR%%/data/CODONS/Eyeast.cut
617
%%DATADIR%%/data/CODONS/Eyeastcai.cut
618
%%DATADIR%%/data/CODONS/Eyen.cut
619
%%DATADIR%%/data/CODONS/Eysc.cut
620
%%DATADIR%%/data/CODONS/Eysc_h.cut
621
%%DATADIR%%/data/CODONS/Eyscmt.cut
622
%%DATADIR%%/data/CODONS/Eysp.cut
623
%%DATADIR%%/data/CODONS/Ezebrafish.cut
624
%%DATADIR%%/data/CODONS/Ezma.cut
625
%%DATADIR%%/data/EBLOSUM30
626
%%DATADIR%%/data/EBLOSUM35
627
%%DATADIR%%/data/EBLOSUM40
628
%%DATADIR%%/data/EBLOSUM45
629
%%DATADIR%%/data/EBLOSUM50
630
%%DATADIR%%/data/EBLOSUM55
631
%%DATADIR%%/data/EBLOSUM60
632
%%DATADIR%%/data/EBLOSUM62
633
%%DATADIR%%/data/EBLOSUM62-12
634
%%DATADIR%%/data/EBLOSUM65
635
%%DATADIR%%/data/EBLOSUM70
636
%%DATADIR%%/data/EBLOSUM75
637
%%DATADIR%%/data/EBLOSUM80
638
%%DATADIR%%/data/EBLOSUM85
639
%%DATADIR%%/data/EBLOSUM90
640
%%DATADIR%%/data/EBLOSUMN
641
%%DATADIR%%/data/EDNAFULL
642
%%DATADIR%%/data/EDNAMAT
643
%%DATADIR%%/data/EGC.0
644
%%DATADIR%%/data/EGC.1
645
%%DATADIR%%/data/EGC.10
646
%%DATADIR%%/data/EGC.11
647
%%DATADIR%%/data/EGC.12
648
%%DATADIR%%/data/EGC.13
649
%%DATADIR%%/data/EGC.14
650
%%DATADIR%%/data/EGC.15
651
%%DATADIR%%/data/EGC.16
652
%%DATADIR%%/data/EGC.2
653
%%DATADIR%%/data/EGC.21
654
%%DATADIR%%/data/EGC.22
655
%%DATADIR%%/data/EGC.23
656
%%DATADIR%%/data/EGC.3
657
%%DATADIR%%/data/EGC.4
658
%%DATADIR%%/data/EGC.5
659
%%DATADIR%%/data/EGC.6
660
%%DATADIR%%/data/EGC.9
661
%%DATADIR%%/data/ENUC.4.2
662
%%DATADIR%%/data/ENUC.4.4
663
%%DATADIR%%/data/EPAM10
664
%%DATADIR%%/data/EPAM100
665
%%DATADIR%%/data/EPAM110
666
%%DATADIR%%/data/EPAM120
667
%%DATADIR%%/data/EPAM130
668
%%DATADIR%%/data/EPAM140
669
%%DATADIR%%/data/EPAM150
670
%%DATADIR%%/data/EPAM160
671
%%DATADIR%%/data/EPAM170
672
%%DATADIR%%/data/EPAM180
673
%%DATADIR%%/data/EPAM190
674
%%DATADIR%%/data/EPAM20
675
%%DATADIR%%/data/EPAM200
676
%%DATADIR%%/data/EPAM210
677
%%DATADIR%%/data/EPAM220
678
%%DATADIR%%/data/EPAM230
679
%%DATADIR%%/data/EPAM240
680
%%DATADIR%%/data/EPAM250
681
%%DATADIR%%/data/EPAM260
682
%%DATADIR%%/data/EPAM270
683
%%DATADIR%%/data/EPAM280
684
%%DATADIR%%/data/EPAM290
685
%%DATADIR%%/data/EPAM30
686
%%DATADIR%%/data/EPAM300
687
%%DATADIR%%/data/EPAM310
688
%%DATADIR%%/data/EPAM320
689
%%DATADIR%%/data/EPAM330
690
%%DATADIR%%/data/EPAM340
691
%%DATADIR%%/data/EPAM350
692
%%DATADIR%%/data/EPAM360
693
%%DATADIR%%/data/EPAM370
694
%%DATADIR%%/data/EPAM380
695
%%DATADIR%%/data/EPAM390
696
%%DATADIR%%/data/EPAM40
697
%%DATADIR%%/data/EPAM400
698
%%DATADIR%%/data/EPAM410
699
%%DATADIR%%/data/EPAM420
700
%%DATADIR%%/data/EPAM430
701
%%DATADIR%%/data/EPAM440
702
%%DATADIR%%/data/EPAM450
703
%%DATADIR%%/data/EPAM460
704
%%DATADIR%%/data/EPAM470
705
%%DATADIR%%/data/EPAM480
706
%%DATADIR%%/data/EPAM490
707
%%DATADIR%%/data/EPAM50
708
%%DATADIR%%/data/EPAM500
709
%%DATADIR%%/data/EPAM60
710
%%DATADIR%%/data/EPAM70
711
%%DATADIR%%/data/EPAM80
712
%%DATADIR%%/data/EPAM90
713
%%DATADIR%%/data/Eaa_acc_surface.dat
714
%%DATADIR%%/data/Eaa_hydropathy.dat
715
%%DATADIR%%/data/Eaa_properties.dat
716
%%DATADIR%%/data/Eamino.dat
717
%%DATADIR%%/data/Eangles.dat
718
%%DATADIR%%/data/Eangles_tri.dat
719
%%DATADIR%%/data/Eantigenic.dat
720
%%DATADIR%%/data/Ebases.iub
721
%%DATADIR%%/data/Edayhoff.freq
722
%%DATADIR%%/data/Edna.melt
723
%%DATADIR%%/data/Eembl.ior
724
%%DATADIR%%/data/Eenergy.dat
725
%%DATADIR%%/data/Efeatures.embl
726
%%DATADIR%%/data/Efeatures.emboss
727
%%DATADIR%%/data/Efeatures.gff
728
%%DATADIR%%/data/Efeatures.pir
729
%%DATADIR%%/data/Efeatures.protein
730
%%DATADIR%%/data/Efeatures.swiss
731
%%DATADIR%%/data/Efreqs.dat
732
%%DATADIR%%/data/Ehet.dat
733
%%DATADIR%%/data/Ehth.dat
734
%%DATADIR%%/data/Ehth87.dat
735
%%DATADIR%%/data/Emass.dat
736
%%DATADIR%%/data/Emassmod.dat
737
%%DATADIR%%/data/Ememe.dat
738
%%DATADIR%%/data/Emwfilter.dat
739
%%DATADIR%%/data/Enakai.dat
740
%%DATADIR%%/data/Epepcoil.dat
741
%%DATADIR%%/data/Epk.dat
742
%%DATADIR%%/data/Epprofile
743
%%DATADIR%%/data/Eprior1.plib
744
%%DATADIR%%/data/Eprior30.plib
745
%%DATADIR%%/data/Erna.melt
746
%%DATADIR%%/data/Esig.euk
747
%%DATADIR%%/data/Esig.pro
748
%%DATADIR%%/data/Etags.embl
749
%%DATADIR%%/data/Etags.emboss
750
%%DATADIR%%/data/Etags.gff
751
%%DATADIR%%/data/Etags.pir
752
%%DATADIR%%/data/Etags.protein
753
%%DATADIR%%/data/Etags.swiss
754
%%DATADIR%%/data/Etcode.dat
755
%%DATADIR%%/data/Evdw.dat
756
%%DATADIR%%/data/Ewhite-wimley.dat
757
%%DATADIR%%/data/PRINTS/dummyfile
758
%%DATADIR%%/data/PROSITE/dummyfile
759
%%DATADIR%%/data/REBASE/dummyfile
760
%%DATADIR%%/data/embossre.equ
761
%%DATADIR%%/emboss.default.template
762
%%DATADIR%%/jemboss/LICENSE
763
%%DATADIR%%/jemboss/README
764
%%DATADIR%%/jemboss/api/allclasses-frame.html
765
%%DATADIR%%/jemboss/api/deprecated-list.html
766
%%DATADIR%%/jemboss/api/getClasses.pl
767
%%DATADIR%%/jemboss/api/help-doc.html
768
%%DATADIR%%/jemboss/api/index-all.html
769
%%DATADIR%%/jemboss/api/index.html
770
%%DATADIR%%/jemboss/api/makeDocs.csh
771
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.html
772
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.winExit.html
773
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossLogo.html
774
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossParams.html
775
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/BuildProgramMenu.html
776
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ResultsMenuBar.html
777
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SetUpMenuBar.html
778
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowResultSet.html
779
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowSavedResults.html
780
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SwingWorker.html
781
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/DragTree.html
782
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.PopupListener.html
783
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.html
784
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileNode.html
785
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileSaving.html
786
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/BuildJembossForm.html
787
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.html
788
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.myComboUI.html
789
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/ListFilePanel.html
790
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SectionPanel.html
791
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetInFileCard.html
792
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetOutFileCard.html
793
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.DecimalNumberDocument.html
794
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.html
795
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.WholeNumberDocument.html
796
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.html
797
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldSink.html
798
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.html
799
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/FileChooser.html
800
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.html
801
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.html
802
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.html
803
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.html
804
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Database.html
805
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.HorizontalMenu.html
806
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.html
807
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Splash.html
808
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdFunResolve.html
809
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdVarResolve.html
810
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Ajax.html
811
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Dependent.html
812
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/ParseAcd.html
813
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationFields.html
814
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationParam.html
815
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/JembossProcess.html
816
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ListFile.html
817
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ResultList.html
818
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/RunEmbossApplication.html
819
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/AuthPopup.html
820
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/CallAjax.html
821
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/GetWossname.html
822
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossRun.html
823
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossSoapException.html
824
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PendingResults.html
825
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PrivateRequest.html
826
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/ResListView.html
827
%%DATADIR%%/jemboss/api/overview-tree.html
828
%%DATADIR%%/jemboss/api/package-list
829
%%DATADIR%%/jemboss/api/packages.html
830
%%DATADIR%%/jemboss/api/serialized-form.html
831
%%DATADIR%%/jemboss/api/stylesheet.css
832
%%DATADIR%%/jemboss/images/Backward_arrow_button.gif
833
%%DATADIR%%/jemboss/images/Forward_arrow_button.gif
834
%%DATADIR%%/jemboss/images/Go_button.gif
835
%%DATADIR%%/jemboss/images/Information_button.gif
836
%%DATADIR%%/jemboss/images/Jemboss_logo_greyback.gif
837
%%DATADIR%%/jemboss/images/Jemboss_logo_large.gif
838
%%DATADIR%%/jemboss/images/Jemboss_logo_small.gif
839
%%DATADIR%%/jemboss/images/Job_manager_button.gif
840
%%DATADIR%%/jemboss/images/Refresh_button.gif
841
%%DATADIR%%/jemboss/images/Refresh_button2.gif
842
%%DATADIR%%/jemboss/lib/JembossPrintAlignment.jar
843
%%DATADIR%%/jemboss/lib/README
844
%%DATADIR%%/jemboss/lib/activation.jar
845
%%DATADIR%%/jemboss/lib/axis/axis-ant.jar
846
%%DATADIR%%/jemboss/lib/axis/axis.jar
847
%%DATADIR%%/jemboss/lib/axis/commons-discovery.jar
848
%%DATADIR%%/jemboss/lib/axis/commons-logging.jar
849
%%DATADIR%%/jemboss/lib/axis/jaxrpc.jar
850
%%DATADIR%%/jemboss/lib/axis/log4j-1.2.8.jar
851
%%DATADIR%%/jemboss/lib/axis/saaj.jar
852
%%DATADIR%%/jemboss/lib/axis/servlet.jar
853
%%DATADIR%%/jemboss/lib/axis/wsdl4j.jar
854
%%DATADIR%%/jemboss/lib/grout.jar
855
%%DATADIR%%/jemboss/lib/jakarta-regexp-1.2.jar
856
%%DATADIR%%/jemboss/lib/jalview.jar
857
%%DATADIR%%/jemboss/lib/mail.jar
858
%%DATADIR%%/jemboss/lib/xerces.jar
859
%%DATADIR%%/jemboss/org/emboss/jemboss/Jemboss.java
860
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossJarUtil.java
861
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossLogo.java
862
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossParams.java
863
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Block.java
864
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/DNADraw.java
865
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/EmbossCirdnaReader.java
866
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/GeneticMarker.java
867
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/LineAttribute.java
868
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/PrintDNAImage.java
869
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/RestrictionEnzyme.java
870
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Ticks.java
871
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Wizard.java
872
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignApplet.java
873
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignJFrame.java
874
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourJFrame.java
875
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourMenu.java
876
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourPanel.java
877
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Consensus.java
878
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ConsensusOptions.java
879
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GraphicSequenceCollection.java
880
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrame.java
881
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameEvent.java
882
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameListener.java
883
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollection.java
884
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionEvent.java
885
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionListener.java
886
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequence.java
887
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequenceJPanel.java
888
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/IDTableJFrame.java
889
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Matrix.java
890
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/MatrixJFrame.java
891
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Paste.java
892
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PatternJFrame.java
893
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PlotConsensus.java
894
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrettyPlotJFrame.java
895
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignment.java
896
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignmentImage.java
897
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintableJTable.java
898
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Sequence.java
899
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceJPanel.java
900
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceNameJButton.java
901
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceProperties.java
902
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceReader.java
903
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceSaver.java
904
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/Graph2DPlot.java
905
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/PrintPlot.java
906
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/AdvancedOptions.java
907
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Browser.java
908
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java
909
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Favorites.java
910
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ImageIconJPanel.java
911
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/KeywordSearch.java
912
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/LaunchJalView.java
913
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/MemoryComboBox.java
914
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ResultsMenuBar.java
915
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ScrollPanel.java
916
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceData.java
917
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceList.java
918
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SetUpMenuBar.java
919
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowResultSet.java
920
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowSavedResults.java
921
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SplashThread.java
922
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SwingWorker.java
923
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/DragTree.java
924
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileEditorDisplay.java
925
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileNode.java
926
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSave.java
927
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSaving.java
928
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalAndRemoteFileTreeFrame.java
929
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalTreeToolBar.java
930
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteDragTree.java
931
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileNode.java
932
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileTreePanel.java
933
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/AlignFormat.java
934
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ApplicationNamePanel.java
935
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java
936
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/JembossComboPopup.java
937
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/LabelTextBox.java
938
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ListFilePanel.java
939
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/MultiLineToolTipUI.java
940
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/PlafMacros.java
941
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ReportFormat.java
942
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SectionPanel.java
943
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/Separator.java
944
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetInFileCard.java
945
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetOutFileCard.java
946
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldFloat.java
947
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldInt.java
948
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldSink.java
949
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.java
950
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/FileChooser.java
951
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java
952
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.java
953
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.java
954
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.java
955
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/Database.java
956
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/ProgList.java
957
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdFunResolve.java
958
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVarResolve.java
959
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVariableResolve.java
960
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Ajax.java
961
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AjaxUtil.java
962
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Dependent.java
963
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/ParseAcd.java
964
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationFields.java
965
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationParam.java
966
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/BatchUpdateTimer.java
967
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/JembossProcess.java
968
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ListFile.java
969
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultList.java
970
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultsUpdateTimer.java
971
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication.java
972
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication2.java
973
%%DATADIR%%/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java
974
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossAuthServer.java
975
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileAuthServer.java
976
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileServer.java
977
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossServer.java
978
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossThread.java
979
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPrivateServer.java
980
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPublicServer.java
981
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/AuthPopup.java
982
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/CallAjax.java
983
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileList.java
984
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileRoots.java
985
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetACD.java
986
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetHelp.java
987
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetWossname.java
988
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossRun.java
989
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossSoapException.java
990
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/MakeFileSafe.java
991
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PendingResults.java
992
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PrivateRequest.java
993
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PublicRequest.java
994
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ServerSetup.java
995
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ShowDB.java
996
%%DATADIR%%/jemboss/readme.html
997
%%DATADIR%%/jemboss/resources/filemgr.html
998
%%DATADIR%%/jemboss/resources/jemboss.properties
999
%%DATADIR%%/jemboss/resources/readme.html
1000
%%DATADIR%%/jemboss/resources/readmeAlign.html
1001
%%DATADIR%%/jemboss/resources/readmeDNADraw.html
1002
%%DATADIR%%/jemboss/resources/results.html
1003
%%DATADIR%%/jemboss/resources/seqList.html
1004
%%DATADIR%%/jemboss/resources/version
1005
%%DATADIR%%/jemboss/runJemboss.sh
1006
%%DATADIR%%/jemboss/utils/README
1007
%%DATADIR%%/jemboss/utils/install-jemboss-server.sh
1008
%%DATADIR%%/jemboss/utils/keys.sh
1009
%%DATADIR%%/jemboss/utils/makeFileManagerJNLP.sh
1010
%%DATADIR%%/jemboss/utils/makeJNLP.sh
1011
%%DATADIR%%/jemboss/utils/makeJar.csh
1012
%%DATADIR%%/jemboss/utils/template.html
1013
%%DATADIR%%/plstnd5.fnt
1014
%%DATADIR%%/plxtnd5.fnt
1015
%%DATADIR%%/test/data/aaindex1.test
1016
%%DATADIR%%/test/data/aligna.dna
1017
%%DATADIR%%/test/data/aligna.prot
1018
%%DATADIR%%/test/data/alignapart.dna
1019
%%DATADIR%%/test/data/alignapart.prot
1020
%%DATADIR%%/test/data/alignb.dna
1021
%%DATADIR%%/test/data/alignb.prot
1022
%%DATADIR%%/test/data/cutg.codon
1023
%%DATADIR%%/test/data/dna.acedb
1024
%%DATADIR%%/test/data/dna.aln
1025
%%DATADIR%%/test/data/dna.asn1
1026
%%DATADIR%%/test/data/dna.codata
1027
%%DATADIR%%/test/data/dna.embl
1028
%%DATADIR%%/test/data/dna.fasta
1029
%%DATADIR%%/test/data/dna.fitch
1030
%%DATADIR%%/test/data/dna.gcg
1031
%%DATADIR%%/test/data/dna.gcg8
1032
%%DATADIR%%/test/data/dna.genbank
1033
%%DATADIR%%/test/data/dna.ig
1034
%%DATADIR%%/test/data/dna.m-acedb
1035
%%DATADIR%%/test/data/dna.m-codata
1036
%%DATADIR%%/test/data/dna.m-embl
1037
%%DATADIR%%/test/data/dna.m-fasta
1038
%%DATADIR%%/test/data/dna.m-fasta-long
1039
%%DATADIR%%/test/data/dna.m-ncbi
1040
%%DATADIR%%/test/data/dna.m-strider
1041
%%DATADIR%%/test/data/dna.msf
1042
%%DATADIR%%/test/data/dna.msf8
1043
%%DATADIR%%/test/data/dna.ncbi
1044
%%DATADIR%%/test/data/dna.phylip
1045
%%DATADIR%%/test/data/dna.phylip3
1046
%%DATADIR%%/test/data/dna.staden
1047
%%DATADIR%%/test/data/dna.strider
1048
%%DATADIR%%/test/data/dna.text
1049
%%DATADIR%%/test/data/feat.emft
1050
%%DATADIR%%/test/data/feat.fasta
1051
%%DATADIR%%/test/data/feat.pir
1052
%%DATADIR%%/test/data/mw1.dat
1053
%%DATADIR%%/test/data/mw2.dat
1054
%%DATADIR%%/test/data/mw3.dat
1055
%%DATADIR%%/test/data/paamir.pep
1056
%%DATADIR%%/test/data/pax6_cdna.fasta
1057
%%DATADIR%%/test/data/prints.test
1058
%%DATADIR%%/test/data/prosite.dat
1059
%%DATADIR%%/test/data/prosite.doc
1060
%%DATADIR%%/test/data/prot.acedb
1061
%%DATADIR%%/test/data/prot.codata
1062
%%DATADIR%%/test/data/prot.fasta
1063
%%DATADIR%%/test/data/prot.gcg
1064
%%DATADIR%%/test/data/prot.gcg8
1065
%%DATADIR%%/test/data/prot.ig
1066
%%DATADIR%%/test/data/prot.m-acedb
1067
%%DATADIR%%/test/data/prot.m-codata
1068
%%DATADIR%%/test/data/prot.m-fasta
1069
%%DATADIR%%/test/data/prot.m-nbrf
1070
%%DATADIR%%/test/data/prot.m-ncbi
1071
%%DATADIR%%/test/data/prot.m-swiss
1072
%%DATADIR%%/test/data/prot.nbrf
1073
%%DATADIR%%/test/data/prot.ncbi
1074
%%DATADIR%%/test/data/prot.swiss
1075
%%DATADIR%%/test/data/prot.text
1076
%%DATADIR%%/test/data/site.dat
1077
%%DATADIR%%/test/data/tranalign.pep
1078
%%DATADIR%%/test/data/tranalign.seq
1079
%%DATADIR%%/test/data/withrefm
1080
%%DATADIR%%/test/data/z83307.seq
1081
%%DATADIR%%/test/embl/acnum.hit
1082
%%DATADIR%%/test/embl/acnum.trg
1083
%%DATADIR%%/test/embl/des.hit
1084
%%DATADIR%%/test/embl/des.trg
1085
%%DATADIR%%/test/embl/division.lkp
1086
%%DATADIR%%/test/embl/entrynam.idx
1087
%%DATADIR%%/test/embl/est.dat
1088
%%DATADIR%%/test/embl/fun.dat
1089
%%DATADIR%%/test/embl/hum1.dat
1090
%%DATADIR%%/test/embl/inv.dat
1091
%%DATADIR%%/test/embl/keyword.hit
1092
%%DATADIR%%/test/embl/keyword.trg
1093
%%DATADIR%%/test/embl/pln.dat
1094
%%DATADIR%%/test/embl/pro.dat
1095
%%DATADIR%%/test/embl/rod.dat
1096
%%DATADIR%%/test/embl/seqvn.hit
1097
%%DATADIR%%/test/embl/seqvn.trg
1098
%%DATADIR%%/test/embl/sts.dat
1099
%%DATADIR%%/test/embl/taxon.hit
1100
%%DATADIR%%/test/embl/taxon.trg
1101
%%DATADIR%%/test/embl/vrl.dat
1102
%%DATADIR%%/test/embl/vrt.dat
1103
%%DATADIR%%/test/gb/acnum.hit
1104
%%DATADIR%%/test/gb/acnum.trg
1105
%%DATADIR%%/test/gb/ba.ref
1106
%%DATADIR%%/test/gb/ba.seq
1107
%%DATADIR%%/test/gb/des.hit
1108
%%DATADIR%%/test/gb/des.trg
1109
%%DATADIR%%/test/gb/division.lkp
1110
%%DATADIR%%/test/gb/entrynam.idx
1111
%%DATADIR%%/test/gb/htg.ref
1112
%%DATADIR%%/test/gb/htg.seq
1113
%%DATADIR%%/test/gb/keyword.hit
1114
%%DATADIR%%/test/gb/keyword.trg
1115
%%DATADIR%%/test/gb/seqvn.hit
1116
%%DATADIR%%/test/gb/seqvn.trg
1117
%%DATADIR%%/test/gb/taxon.hit
1118
%%DATADIR%%/test/gb/taxon.trg
1119
%%DATADIR%%/test/genbank/acnum.hit
1120
%%DATADIR%%/test/genbank/acnum.trg
1121
%%DATADIR%%/test/genbank/des.hit
1122
%%DATADIR%%/test/genbank/des.trg
1123
%%DATADIR%%/test/genbank/division.lkp
1124
%%DATADIR%%/test/genbank/entrynam.idx
1125
%%DATADIR%%/test/genbank/gbbct1.seq
1126
%%DATADIR%%/test/genbank/gbest1.seq
1127
%%DATADIR%%/test/genbank/gbinv1.seq
1128
%%DATADIR%%/test/genbank/gbpln1.seq
1129
%%DATADIR%%/test/genbank/gbpln2.seq
1130
%%DATADIR%%/test/genbank/gbpri1.seq
1131
%%DATADIR%%/test/genbank/gbrod1.seq
1132
%%DATADIR%%/test/genbank/gbsts1.seq
1133
%%DATADIR%%/test/genbank/gbvrl1.seq
1134
%%DATADIR%%/test/genbank/gbvrt.seq
1135
%%DATADIR%%/test/genbank/keyword.hit
1136
%%DATADIR%%/test/genbank/keyword.trg
1137
%%DATADIR%%/test/genbank/seqvn.hit
1138
%%DATADIR%%/test/genbank/seqvn.trg
1139
%%DATADIR%%/test/genbank/taxon.hit
1140
%%DATADIR%%/test/genbank/taxon.trg
1141
%%DATADIR%%/test/pir/acnum.hit
1142
%%DATADIR%%/test/pir/acnum.trg
1143
%%DATADIR%%/test/pir/des.hit
1144
%%DATADIR%%/test/pir/des.trg
1145
%%DATADIR%%/test/pir/division.lkp
1146
%%DATADIR%%/test/pir/entrynam.idx
1147
%%DATADIR%%/test/pir/keyword.hit
1148
%%DATADIR%%/test/pir/keyword.trg
1149
%%DATADIR%%/test/pir/pir1.header
1150
%%DATADIR%%/test/pir/pir1.names
1151
%%DATADIR%%/test/pir/pir1.numbers
1152
%%DATADIR%%/test/pir/pir1.offset
1153
%%DATADIR%%/test/pir/pir1.ref
1154
%%DATADIR%%/test/pir/pir1.seq
1155
%%DATADIR%%/test/pir/pir2.header
1156
%%DATADIR%%/test/pir/pir2.names
1157
%%DATADIR%%/test/pir/pir2.numbers
1158
%%DATADIR%%/test/pir/pir2.offset
1159
%%DATADIR%%/test/pir/pir2.ref
1160
%%DATADIR%%/test/pir/pir2.seq
1161
%%DATADIR%%/test/pir/pir3.header
1162
%%DATADIR%%/test/pir/pir3.names
1163
%%DATADIR%%/test/pir/pir3.numbers
1164
%%DATADIR%%/test/pir/pir3.offset
1165
%%DATADIR%%/test/pir/pir3.ref
1166
%%DATADIR%%/test/pir/pir3.seq
1167
%%DATADIR%%/test/pir/pir4.header
1168
%%DATADIR%%/test/pir/pir4.names
1169
%%DATADIR%%/test/pir/pir4.numbers
1170
%%DATADIR%%/test/pir/pir4.offset
1171
%%DATADIR%%/test/pir/pir4.ref
1172
%%DATADIR%%/test/pir/pir4.seq
1173
%%DATADIR%%/test/pir/taxon.hit
1174
%%DATADIR%%/test/pir/taxon.trg
1175
%%DATADIR%%/test/swiss/acnum.hit
1176
%%DATADIR%%/test/swiss/acnum.trg
1177
%%DATADIR%%/test/swiss/des.hit
1178
%%DATADIR%%/test/swiss/des.trg
1179
%%DATADIR%%/test/swiss/division.lkp
1180
%%DATADIR%%/test/swiss/entrynam.idx
1181
%%DATADIR%%/test/swiss/keyword.hit
1182
%%DATADIR%%/test/swiss/keyword.trg
1183
%%DATADIR%%/test/swiss/seq.dat
1184
%%DATADIR%%/test/swiss/seqvn.hit
1185
%%DATADIR%%/test/swiss/seqvn.trg
1186
%%DATADIR%%/test/swiss/taxon.hit
1187
%%DATADIR%%/test/swiss/taxon.trg
1188
%%DATADIR%%/test/swnew/acnum.hit
1189
%%DATADIR%%/test/swnew/acnum.trg
1190
%%DATADIR%%/test/swnew/des.hit
1191
%%DATADIR%%/test/swnew/des.trg
1192
%%DATADIR%%/test/swnew/division.lkp
1193
%%DATADIR%%/test/swnew/entrynam.idx
1194
%%DATADIR%%/test/swnew/keyword.hit
1195
%%DATADIR%%/test/swnew/keyword.trg
1196
%%DATADIR%%/test/swnew/new_seq.dat
1197
%%DATADIR%%/test/swnew/seqvn.hit
1198
%%DATADIR%%/test/swnew/seqvn.trg
1199
%%DATADIR%%/test/swnew/taxon.hit
1200
%%DATADIR%%/test/swnew/taxon.trg
1201
%%DATADIR%%/test/swnew/upd_ann.dat
1202
%%DATADIR%%/test/swnew/upd_seq.dat
1203
%%DATADIR%%/test/wormpep/acnum.hit
1204
%%DATADIR%%/test/wormpep/acnum.trg
1205
%%DATADIR%%/test/wormpep/des.hit
1206
%%DATADIR%%/test/wormpep/des.trg
1207
%%DATADIR%%/test/wormpep/division.lkp
1208
%%DATADIR%%/test/wormpep/entrynam.idx
1209
%%DATADIR%%/test/wormpep/wormpep
1210
%%PORTDOCS%%%%DOCSDIR%%/manuals/EMBOSS-FreeBSD-HOWTO.txt
1211
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.aux
282
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.aux
1212
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.dvi
283
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.dvi
1213
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.log
284
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.log
1214
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.pdf
285
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.pdf
1215
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.ps
286
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.ps
1216
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.sty
1217
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.tex
1218
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.toc
287
%%PORTDOCS%%%%DOCSDIR%%/manuals/admin.toc
1219
%%PORTDOCS%%%%DOCSDIR%%/manuals/adminguide.tar.gz
288
%%PORTDOCS%%%%DOCSDIR%%/manuals/adminguide.tar.gz
1220
%%PORTDOCS%%%%DOCSDIR%%/manuals/domainatrix.doc
289
%%PORTDOCS%%%%DOCSDIR%%/manuals/domainatrix.doc
1221
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss.sty
290
%%PORTDOCS%%%%DOCSDIR%%/manuals/program.ps.gz
291
%%PORTDOCS%%%%DOCSDIR%%/manuals/EMBOSS-FreeBSD-HOWTO.txt
1222
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.pdf
292
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.pdf
1223
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.ps
293
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss_qg.ps
294
%%PORTDOCS%%%%DOCSDIR%%/manuals/emboss.sty
1224
%%PORTDOCS%%%%DOCSDIR%%/manuals/fdl.txt
295
%%PORTDOCS%%%%DOCSDIR%%/manuals/fdl.txt
1225
%%PORTDOCS%%%%DOCSDIR%%/manuals/program.ps.gz
296
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.html
1226
%%PORTDOCS%%%%DOCSDIR%%/programs/html/aaindexextract.html
297
%%PORTDOCS%%%%DOCSDIR%%/programs/html/listor.html
298
%%PORTDOCS%%%%DOCSDIR%%/programs/html/marscan.html
299
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskfeat.html
300
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskseq.html
301
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matcher.html
302
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matgen3d.html
303
%%PORTDOCS%%%%DOCSDIR%%/programs/html/megamerger.html
304
%%PORTDOCS%%%%DOCSDIR%%/programs/html/meme.html
305
%%PORTDOCS%%%%DOCSDIR%%/programs/html/menus_group.html
306
%%PORTDOCS%%%%DOCSDIR%%/programs/html/merger.html
307
%%PORTDOCS%%%%DOCSDIR%%/programs/html/msbar.html
308
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mse.html
309
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwcontam.html
310
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwfilter.html
311
%%PORTDOCS%%%%DOCSDIR%%/programs/html/myseq.html
312
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalign.html
313
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalignrunner.html
314
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needle.html
315
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needlerunner.html
316
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgreport.html
317
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgseek.html
318
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newseq.html
319
%%PORTDOCS%%%%DOCSDIR%%/programs/html/noreturn.html
320
%%PORTDOCS%%%%DOCSDIR%%/programs/html/notseq.html
321
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nthseq.html
322
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_2d_structure_group.html
323
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_group.html
324
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_nucleic_gene_finding_group.html
325
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_composition_group.html
326
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_cpg_islands_group.html
327
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_gene_finding_group.html
328
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_motifs_group.html
329
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_mutation_group.html
330
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_primers_group.html
331
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_profiles_group.html
332
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_repeats_group.html
333
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_restriction_group.html
334
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_transcription_group.html
335
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_translation_group.html
336
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.html
337
%%PORTDOCS%%%%DOCSDIR%%/programs/html/oddcomp.html
338
%%PORTDOCS%%%%DOCSDIR%%/programs/html/palindrome.html
339
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pasteseq.html
340
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatdb.html
341
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatmotifs.html
342
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbparse.html
343
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbplus.html
344
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbtosp.html
345
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepcoil.html
346
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.html
347
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.html
348
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepstats.html
349
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.html
350
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.html
351
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.html
352
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_consensus_group.html
353
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_continuous_characters_group.html
354
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_discrete_characters_group.html
355
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_distance_matrix_group.html
356
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_gene_frequencies_group.html
357
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_group.html
358
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_molecular_sequence_group.html
359
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_tree_drawing_group.html
360
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.html
361
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.html
362
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.html
363
%%PORTDOCS%%%%DOCSDIR%%/programs/html/preg.html
364
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.html
365
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyseq.html
366
%%PORTDOCS%%%%DOCSDIR%%/programs/html/primersearch.html
367
%%PORTDOCS%%%%DOCSDIR%%/programs/html/printsextract.html
368
%%PORTDOCS%%%%DOCSDIR%%/programs/html/profit.html
369
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophecy.html
370
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophet.html
371
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prosextract.html
372
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_2d_structure_group.html
373
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_3d_structure_group.html
374
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_composition_group.html
375
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_motifs_group.html
376
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_mutation_group.html
377
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_profiles_group.html
378
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_sequence_alignment_group.html
379
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pscan.html
380
%%PORTDOCS%%%%DOCSDIR%%/programs/html/psiphi.html
381
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rebaseextract.html
382
%%PORTDOCS%%%%DOCSDIR%%/programs/html/recoder.html
383
%%PORTDOCS%%%%DOCSDIR%%/programs/html/redata.html
384
%%PORTDOCS%%%%DOCSDIR%%/programs/html/remap.html
385
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restover.html
386
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restrict.html
387
%%PORTDOCS%%%%DOCSDIR%%/programs/html/revseq.html
388
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocon.html
389
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocplot.html
390
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scope.html
391
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scopparse.html
392
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorecmapdir.html
393
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorer.html
394
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorerrunner.html
395
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seealso.html
396
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqalign.html
397
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqfraggle.html
398
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqmatchall.html
399
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqnr.html
400
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqret.html
401
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqretsplit.html
402
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsearch.html
403
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsort.html
404
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqwords.html
405
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showalign.html
406
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showdb.html
407
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showfeat.html
408
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showorf.html
409
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showseq.html
410
%%PORTDOCS%%%%DOCSDIR%%/programs/html/shuffleseq.html
411
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigcleave.html
412
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggen.html
413
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggenlig.html
414
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscan.html
415
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscanlig.html
416
%%PORTDOCS%%%%DOCSDIR%%/programs/html/silent.html
417
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sirna.html
418
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sites.html
419
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sixpack.html
420
%%PORTDOCS%%%%DOCSDIR%%/programs/html/skipseq.html
421
%%PORTDOCS%%%%DOCSDIR%%/programs/html/splitter.html
422
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ssematch.html
423
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stretcher.html
424
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stssearch.html
425
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substitute.html
426
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substituterunner.html
427
%%PORTDOCS%%%%DOCSDIR%%/programs/html/supermatcher.html
428
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.html
429
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tcode.html
430
%%PORTDOCS%%%%DOCSDIR%%/programs/html/template.html
431
%%PORTDOCS%%%%DOCSDIR%%/programs/html/test_group.html
432
%%PORTDOCS%%%%DOCSDIR%%/programs/html/textsearch.html
433
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfextract.html
434
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfm.html
435
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfscan.html
436
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.html
437
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.html
438
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tranalign.html
439
%%PORTDOCS%%%%DOCSDIR%%/programs/html/transeq.html
440
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimest.html
441
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimseq.html
442
%%PORTDOCS%%%%DOCSDIR%%/programs/html/twofeat.html
443
%%PORTDOCS%%%%DOCSDIR%%/programs/html/union.html
444
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_creation_group.html
445
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_indexing_group.html
446
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_misc_group.html
447
%%PORTDOCS%%%%DOCSDIR%%/programs/html/vectorstrip.html
448
%%PORTDOCS%%%%DOCSDIR%%/programs/html/water.html
449
%%PORTDOCS%%%%DOCSDIR%%/programs/html/whichdb.html
450
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.html
451
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordcount.html
452
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordmatch.html
453
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wossname.html
454
%%PORTDOCS%%%%DOCSDIR%%/programs/html/yank.html
455
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.jpg
1227
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.1.abiview.gif
456
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.1.abiview.gif
457
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.1.chaos.gif
458
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.1.cirdna.gif
459
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.1.cpgplot.gif
460
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.2.dan.gif
461
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.1.dotmatcher.gif
462
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.1.dotpath.gif
463
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.1.dottup.gif
464
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.gif
465
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.1.findkm.gif
466
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.1.isochore.gif
467
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.1.lindna.gif
468
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.1.octanol.gif
469
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.1.pepinfo.gif
470
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.1.pepnet.gif
471
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.1.pepwheel.gif
472
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.1.pepwindow.gif
473
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.1.pepwindowall.gif
474
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.1.plotcon.gif
475
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.1.plotorf.gif
476
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.2.plotorf.gif
477
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.1.polydot.gif
478
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.1.prettyplot.gif
479
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.2.prettyplot.gif
480
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.1.syco.gif
481
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.1.tmap.gif
482
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.gif
483
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.1.wobble.gif
484
%%PORTDOCS%%%%DOCSDIR%%/programs/html/aaindexextract.html
1228
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.html
485
%%PORTDOCS%%%%DOCSDIR%%/programs/html/abiview.html
1229
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acd_group.html
486
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acd_group.html
1230
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acdc.html
487
%%PORTDOCS%%%%DOCSDIR%%/programs/html/acdc.html
Lines 1237-1285 Link Here
1237
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_consensus_group.html
494
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_consensus_group.html
1238
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_differences_group.html
495
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_differences_group.html
1239
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_dot_plots_group.html
496
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_dot_plots_group.html
497
%%PORTDOCS%%%%DOCSDIR%%/programs/html/antigenic.html
1240
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_global_group.html
498
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_global_group.html
1241
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_local_group.html
499
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_local_group.html
1242
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_multiple_group.html
500
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignment_multiple_group.html
1243
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignrunner.html
501
%%PORTDOCS%%%%DOCSDIR%%/programs/html/alignrunner.html
1244
%%PORTDOCS%%%%DOCSDIR%%/programs/html/allversusall.html
502
%%PORTDOCS%%%%DOCSDIR%%/programs/html/allversusall.html
1245
%%PORTDOCS%%%%DOCSDIR%%/programs/html/antigenic.html
1246
%%PORTDOCS%%%%DOCSDIR%%/programs/html/backtranseq.html
503
%%PORTDOCS%%%%DOCSDIR%%/programs/html/backtranseq.html
1247
%%PORTDOCS%%%%DOCSDIR%%/programs/html/banana.html
504
%%PORTDOCS%%%%DOCSDIR%%/programs/html/banana.html
1248
%%PORTDOCS%%%%DOCSDIR%%/programs/html/biosed.html
505
%%PORTDOCS%%%%DOCSDIR%%/programs/html/biosed.html
1249
%%PORTDOCS%%%%DOCSDIR%%/programs/html/btwisted.html
506
%%PORTDOCS%%%%DOCSDIR%%/programs/html/btwisted.html
1250
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cai.html
507
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cai.html
1251
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cathparse.html
508
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cathparse.html
1252
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.1.chaos.gif
1253
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.html
509
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chaos.html
1254
%%PORTDOCS%%%%DOCSDIR%%/programs/html/charge.html
510
%%PORTDOCS%%%%DOCSDIR%%/programs/html/charge.html
1255
%%PORTDOCS%%%%DOCSDIR%%/programs/html/checktrans.html
511
%%PORTDOCS%%%%DOCSDIR%%/programs/html/checktrans.html
1256
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chips.html
512
%%PORTDOCS%%%%DOCSDIR%%/programs/html/chips.html
1257
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.1.cirdna.gif
1258
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.html
513
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cirdna.html
1259
%%PORTDOCS%%%%DOCSDIR%%/programs/html/clique.html
1260
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcmp.html
514
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcmp.html
515
%%PORTDOCS%%%%DOCSDIR%%/programs/html/codcopy.html
1261
%%PORTDOCS%%%%DOCSDIR%%/programs/html/coderet.html
516
%%PORTDOCS%%%%DOCSDIR%%/programs/html/coderet.html
517
%%PORTDOCS%%%%DOCSDIR%%/programs/html/comparator.html
1262
%%PORTDOCS%%%%DOCSDIR%%/programs/html/compseq.html
518
%%PORTDOCS%%%%DOCSDIR%%/programs/html/compseq.html
1263
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cons.html
519
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cons.html
1264
%%PORTDOCS%%%%DOCSDIR%%/programs/html/consense.html
1265
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactalign.html
520
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactalign.html
1266
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contactcount.html
1267
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contacts.html
521
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contacts.html
1268
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contml.html
1269
%%PORTDOCS%%%%DOCSDIR%%/programs/html/contrast.html
1270
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.1.cpgplot.gif
1271
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.html
522
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgplot.html
1272
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgreport.html
523
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cpgreport.html
1273
%%PORTDOCS%%%%DOCSDIR%%/programs/html/crystalball.html
524
%%PORTDOCS%%%%DOCSDIR%%/programs/html/crystalball.html
1274
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cusp.html
525
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cusp.html
1275
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutgextract.html
526
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutgextract.html
1276
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutseq.html
527
%%PORTDOCS%%%%DOCSDIR%%/programs/html/cutseq.html
1277
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.2.dan.gif
1278
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.html
528
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dan.html
1279
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiblast.html
529
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiblast.html
1280
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbifasta.html
530
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbifasta.html
1281
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiflat.html
531
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbiflat.html
1282
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbigcg.html
532
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbigcg.html
533
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxfasta.html
534
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxflat.html
535
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dbxgcg.html
1283
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseq.html
536
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseq.html
1284
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseqrunner.html
537
%%PORTDOCS%%%%DOCSDIR%%/programs/html/degapseqrunner.html
1285
%%PORTDOCS%%%%DOCSDIR%%/programs/html/descseq.html
538
%%PORTDOCS%%%%DOCSDIR%%/programs/html/descseq.html
Lines 1287-1301 Link Here
1287
%%PORTDOCS%%%%DOCSDIR%%/programs/html/digest.html
540
%%PORTDOCS%%%%DOCSDIR%%/programs/html/digest.html
1288
%%PORTDOCS%%%%DOCSDIR%%/programs/html/display_group.html
541
%%PORTDOCS%%%%DOCSDIR%%/programs/html/display_group.html
1289
%%PORTDOCS%%%%DOCSDIR%%/programs/html/distmat.html
542
%%PORTDOCS%%%%DOCSDIR%%/programs/html/distmat.html
1290
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnacomp.html
1291
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnadist.html
1292
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnainvar.html
1293
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnaml.html
1294
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnamlk.html
1295
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnapars.html
1296
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dnapenny.html
1297
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dollop.html
1298
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dolpenny.html
1299
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainalign.html
543
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainalign.html
1300
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainer.html
544
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainer.html
1301
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainnr.html
545
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainnr.html
Lines 1303-1313 Link Here
1303
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainreso.html
547
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainreso.html
1304
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainseqs.html
548
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainseqs.html
1305
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainsse.html
549
%%PORTDOCS%%%%DOCSDIR%%/programs/html/domainsse.html
1306
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.1.dotmatcher.gif
1307
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.html
550
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotmatcher.html
1308
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.1.dotpath.gif
1309
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.html
551
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dotpath.html
1310
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.1.dottup.gif
1311
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.html
552
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dottup.html
1312
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dreg.html
553
%%PORTDOCS%%%%DOCSDIR%%/programs/html/dreg.html
1313
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ealistat.html
554
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ealistat.html
Lines 1339-1346 Link Here
1339
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ehmmsearch.html
580
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ehmmsearch.html
1340
%%PORTDOCS%%%%DOCSDIR%%/programs/html/einverted.html
581
%%PORTDOCS%%%%DOCSDIR%%/programs/html/einverted.html
1341
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ekitsch.html
582
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ekitsch.html
1342
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.gif
1343
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emboss_icon.jpg
1344
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossdata.html
583
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossdata.html
1345
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossversion.html
584
%%PORTDOCS%%%%DOCSDIR%%/programs/html/embossversion.html
1346
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emix.html
585
%%PORTDOCS%%%%DOCSDIR%%/programs/html/emix.html
Lines 1363-1369 Link Here
1363
%%PORTDOCS%%%%DOCSDIR%%/programs/html/etandem.html
602
%%PORTDOCS%%%%DOCSDIR%%/programs/html/etandem.html
1364
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractfeat.html
603
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractfeat.html
1365
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractseq.html
604
%%PORTDOCS%%%%DOCSDIR%%/programs/html/extractseq.html
1366
%%PORTDOCS%%%%DOCSDIR%%/programs/html/factor.html
1367
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fclique.html
605
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fclique.html
1368
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fconsense.html
606
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fconsense.html
1369
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fcontml.html
607
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fcontml.html
Lines 1387-1395 Link Here
1387
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffitch.html
625
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffitch.html
1388
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffreqboot.html
626
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ffreqboot.html
1389
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fgendist.html
627
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fgendist.html
1390
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.1.findkm.gif
1391
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.html
628
%%PORTDOCS%%%%DOCSDIR%%/programs/html/findkm.html
1392
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fitch.html
1393
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fkitsch.html
629
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fkitsch.html
1394
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmix.html
630
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmix.html
1395
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmove.html
631
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fmove.html
Lines 1414-1420 Link Here
1414
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fuzztran.html
650
%%PORTDOCS%%%%DOCSDIR%%/programs/html/fuzztran.html
1415
%%PORTDOCS%%%%DOCSDIR%%/programs/html/garnier.html
651
%%PORTDOCS%%%%DOCSDIR%%/programs/html/garnier.html
1416
%%PORTDOCS%%%%DOCSDIR%%/programs/html/geecee.html
652
%%PORTDOCS%%%%DOCSDIR%%/programs/html/geecee.html
1417
%%PORTDOCS%%%%DOCSDIR%%/programs/html/gendist.html
1418
%%PORTDOCS%%%%DOCSDIR%%/programs/html/getorf.html
653
%%PORTDOCS%%%%DOCSDIR%%/programs/html/getorf.html
1419
%%PORTDOCS%%%%DOCSDIR%%/programs/html/groups.html
654
%%PORTDOCS%%%%DOCSDIR%%/programs/html/groups.html
1420
%%PORTDOCS%%%%DOCSDIR%%/programs/html/helixturnhelix.html
655
%%PORTDOCS%%%%DOCSDIR%%/programs/html/helixturnhelix.html
Lines 1427-1623 Link Here
1427
%%PORTDOCS%%%%DOCSDIR%%/programs/html/information_group.html
662
%%PORTDOCS%%%%DOCSDIR%%/programs/html/information_group.html
1428
%%PORTDOCS%%%%DOCSDIR%%/programs/html/infoseq.html
663
%%PORTDOCS%%%%DOCSDIR%%/programs/html/infoseq.html
1429
%%PORTDOCS%%%%DOCSDIR%%/programs/html/interface.html
664
%%PORTDOCS%%%%DOCSDIR%%/programs/html/interface.html
1430
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.1.isochore.gif
1431
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.html
665
%%PORTDOCS%%%%DOCSDIR%%/programs/html/isochore.html
1432
%%PORTDOCS%%%%DOCSDIR%%/programs/html/jembossctl.html
666
%%PORTDOCS%%%%DOCSDIR%%/programs/html/jembossctl.html
1433
%%PORTDOCS%%%%DOCSDIR%%/programs/html/kitsch.html
1434
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libgen.html
667
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libgen.html
1435
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libscan.html
668
%%PORTDOCS%%%%DOCSDIR%%/programs/html/libscan.html
1436
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.1.lindna.gif
669
%%PORTDOCS%%%%DOCSDIR%%/programs/text/jembossctl.txt
1437
%%PORTDOCS%%%%DOCSDIR%%/programs/html/lindna.html
670
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libgen.txt
1438
%%PORTDOCS%%%%DOCSDIR%%/programs/html/listor.html
671
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libscan.txt
1439
%%PORTDOCS%%%%DOCSDIR%%/programs/html/marscan.html
672
%%PORTDOCS%%%%DOCSDIR%%/programs/text/lindna.txt
1440
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskfeat.html
673
%%PORTDOCS%%%%DOCSDIR%%/programs/text/listor.txt
1441
%%PORTDOCS%%%%DOCSDIR%%/programs/html/maskseq.html
674
%%PORTDOCS%%%%DOCSDIR%%/programs/text/marscan.txt
1442
%%PORTDOCS%%%%DOCSDIR%%/programs/html/matcher.html
675
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskfeat.txt
1443
%%PORTDOCS%%%%DOCSDIR%%/programs/html/megamerger.html
676
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskseq.txt
1444
%%PORTDOCS%%%%DOCSDIR%%/programs/html/meme.html
677
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matcher.txt
1445
%%PORTDOCS%%%%DOCSDIR%%/programs/html/menus_group.html
678
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matgen3d.txt
1446
%%PORTDOCS%%%%DOCSDIR%%/programs/html/merger.html
679
%%PORTDOCS%%%%DOCSDIR%%/programs/text/megamerger.txt
1447
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mix.html
680
%%PORTDOCS%%%%DOCSDIR%%/programs/text/meme.txt
1448
%%PORTDOCS%%%%DOCSDIR%%/programs/html/msbar.html
681
%%PORTDOCS%%%%DOCSDIR%%/programs/text/merger.txt
1449
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mse.html
682
%%PORTDOCS%%%%DOCSDIR%%/programs/text/msbar.txt
1450
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwcontam.html
683
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mse.txt
1451
%%PORTDOCS%%%%DOCSDIR%%/programs/html/mwfilter.html
684
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwcontam.txt
1452
%%PORTDOCS%%%%DOCSDIR%%/programs/html/myseq.html
685
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwfilter.txt
1453
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalign.html
686
%%PORTDOCS%%%%DOCSDIR%%/programs/text/myseq.txt
1454
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nawalignrunner.html
687
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalign.txt
1455
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needle.html
688
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalignrunner.txt
1456
%%PORTDOCS%%%%DOCSDIR%%/programs/html/needlerunner.html
689
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needle.txt
1457
%%PORTDOCS%%%%DOCSDIR%%/programs/html/neighbor.html
690
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needlerunner.txt
1458
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgreport.html
691
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgreport.txt
1459
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newcpgseek.html
692
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgseek.txt
1460
%%PORTDOCS%%%%DOCSDIR%%/programs/html/newseq.html
693
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newseq.txt
1461
%%PORTDOCS%%%%DOCSDIR%%/programs/html/noreturn.html
694
%%PORTDOCS%%%%DOCSDIR%%/programs/text/noreturn.txt
1462
%%PORTDOCS%%%%DOCSDIR%%/programs/html/notseq.html
695
%%PORTDOCS%%%%DOCSDIR%%/programs/text/notseq.txt
1463
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nthseq.html
696
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nthseq.txt
1464
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_2d_structure_group.html
697
%%PORTDOCS%%%%DOCSDIR%%/programs/text/octanol.txt
1465
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_group.html
698
%%PORTDOCS%%%%DOCSDIR%%/programs/text/oddcomp.txt
1466
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_codon_usage_nucleic_gene_finding_group.html
699
%%PORTDOCS%%%%DOCSDIR%%/programs/text/palindrome.txt
1467
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_composition_group.html
700
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pasteseq.txt
1468
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_cpg_islands_group.html
701
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatdb.txt
1469
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_gene_finding_group.html
702
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatmotifs.txt
1470
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_motifs_group.html
703
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbparse.txt
1471
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_mutation_group.html
704
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbplus.txt
1472
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_primers_group.html
705
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbtosp.txt
1473
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_profiles_group.html
706
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepcoil.txt
1474
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_repeats_group.html
707
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepinfo.txt
1475
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_restriction_group.html
708
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepnet.txt
1476
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_transcription_group.html
709
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepstats.txt
1477
%%PORTDOCS%%%%DOCSDIR%%/programs/html/nucleic_translation_group.html
710
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwheel.txt
1478
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.1.octanol.gif
711
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindow.txt
1479
%%PORTDOCS%%%%DOCSDIR%%/programs/html/octanol.html
712
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindowall.txt
1480
%%PORTDOCS%%%%DOCSDIR%%/programs/html/oddcomp.html
713
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotcon.txt
1481
%%PORTDOCS%%%%DOCSDIR%%/programs/html/palindrome.html
714
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotorf.txt
1482
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pasteseq.html
715
%%PORTDOCS%%%%DOCSDIR%%/programs/text/polydot.txt
1483
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatdb.html
716
%%PORTDOCS%%%%DOCSDIR%%/programs/text/preg.txt
1484
%%PORTDOCS%%%%DOCSDIR%%/programs/html/patmatmotifs.html
717
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyplot.txt
1485
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbparse.html
718
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyseq.txt
1486
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbplus.html
719
%%PORTDOCS%%%%DOCSDIR%%/programs/text/primersearch.txt
1487
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pdbtosp.html
720
%%PORTDOCS%%%%DOCSDIR%%/programs/text/printsextract.txt
1488
%%PORTDOCS%%%%DOCSDIR%%/programs/html/penny.html
721
%%PORTDOCS%%%%DOCSDIR%%/programs/text/profit.txt
1489
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepcoil.html
722
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophecy.txt
1490
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.1.pepinfo.gif
723
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophet.txt
1491
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepinfo.html
724
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prosextract.txt
1492
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.1.pepnet.gif
725
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pscan.txt
1493
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepnet.html
726
%%PORTDOCS%%%%DOCSDIR%%/programs/text/psiphi.txt
1494
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepstats.html
727
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rebaseextract.txt
1495
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.1.pepwheel.gif
728
%%PORTDOCS%%%%DOCSDIR%%/programs/text/recoder.txt
1496
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwheel.html
729
%%PORTDOCS%%%%DOCSDIR%%/programs/text/redata.txt
1497
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.1.pepwindow.gif
730
%%PORTDOCS%%%%DOCSDIR%%/programs/text/remap.txt
1498
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindow.html
731
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restover.txt
1499
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.1.pepwindowall.gif
732
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restrict.txt
1500
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pepwindowall.html
733
%%PORTDOCS%%%%DOCSDIR%%/programs/text/revseq.txt
1501
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pestfind.html
734
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocon.txt
1502
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_consensus_group.html
735
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocplot.txt
1503
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_continuous_characters_group.html
736
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scope.txt
1504
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_discrete_characters_group.html
737
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scopparse.txt
1505
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_distance_matrix_group.html
738
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorecmapdir.txt
1506
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_gene_frequencies_group.html
739
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorer.txt
1507
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_group.html
740
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorerrunner.txt
1508
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_molecular_sequence_group.html
741
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seealso.txt
1509
%%PORTDOCS%%%%DOCSDIR%%/programs/html/phylogeny_tree_drawing_group.html
742
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqalign.txt
1510
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.1.plotcon.gif
743
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqfraggle.txt
1511
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotcon.html
744
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqmatchall.txt
1512
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.1.plotorf.gif
745
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqnr.txt
1513
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.2.plotorf.gif
746
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqret.txt
1514
%%PORTDOCS%%%%DOCSDIR%%/programs/html/plotorf.html
747
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqretsplit.txt
1515
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.1.polydot.gif
748
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsearch.txt
1516
%%PORTDOCS%%%%DOCSDIR%%/programs/html/polydot.html
749
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsort.txt
1517
%%PORTDOCS%%%%DOCSDIR%%/programs/html/preg.html
750
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqwords.txt
1518
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.1.prettyplot.gif
751
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showalign.txt
1519
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.2.prettyplot.gif
752
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showdb.txt
1520
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyplot.html
753
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showfeat.txt
1521
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prettyseq.html
754
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showorf.txt
1522
%%PORTDOCS%%%%DOCSDIR%%/programs/html/primersearch.html
755
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showseq.txt
1523
%%PORTDOCS%%%%DOCSDIR%%/programs/html/printsextract.html
756
%%PORTDOCS%%%%DOCSDIR%%/programs/text/shuffleseq.txt
1524
%%PORTDOCS%%%%DOCSDIR%%/programs/html/profit.html
757
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigcleave.txt
1525
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophecy.html
758
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggen.txt
1526
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prophet.html
759
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggenlig.txt
1527
%%PORTDOCS%%%%DOCSDIR%%/programs/html/prosextract.html
760
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscan.txt
1528
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protdist.html
761
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscanlig.txt
1529
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_2d_structure_group.html
762
%%PORTDOCS%%%%DOCSDIR%%/programs/text/silent.txt
1530
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_3d_structure_group.html
763
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sirna.txt
1531
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_composition_group.html
764
%%PORTDOCS%%%%DOCSDIR%%/programs/text/SITE-DIRECTED.txt
1532
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_motifs_group.html
765
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sites.txt
1533
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_mutation_group.html
766
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sixpack.txt
1534
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_profiles_group.html
767
%%PORTDOCS%%%%DOCSDIR%%/programs/text/skipseq.txt
1535
%%PORTDOCS%%%%DOCSDIR%%/programs/html/protein_sequence_alignment_group.html
768
%%PORTDOCS%%%%DOCSDIR%%/programs/text/splitter.txt
1536
%%PORTDOCS%%%%DOCSDIR%%/programs/html/pscan.html
769
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ssematch.txt
1537
%%PORTDOCS%%%%DOCSDIR%%/programs/html/psiphi.html
770
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stretcher.txt
1538
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rebaseextract.html
771
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stssearch.txt
1539
%%PORTDOCS%%%%DOCSDIR%%/programs/html/recoder.html
772
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substitute.txt
1540
%%PORTDOCS%%%%DOCSDIR%%/programs/html/redata.html
773
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substituterunner.txt
1541
%%PORTDOCS%%%%DOCSDIR%%/programs/html/remap.html
774
%%PORTDOCS%%%%DOCSDIR%%/programs/text/supermatcher.txt
1542
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restml.html
775
%%PORTDOCS%%%%DOCSDIR%%/programs/text/syco.txt
1543
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restover.html
776
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tcode.txt
1544
%%PORTDOCS%%%%DOCSDIR%%/programs/html/restrict.html
777
%%PORTDOCS%%%%DOCSDIR%%/programs/text/textsearch.txt
1545
%%PORTDOCS%%%%DOCSDIR%%/programs/html/revseq.html
778
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfextract.txt
1546
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocon.html
779
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfm.txt
1547
%%PORTDOCS%%%%DOCSDIR%%/programs/html/rocplot.html
780
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfscan.txt
1548
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scope.html
781
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tmap.txt
1549
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scopparse.html
782
%%PORTDOCS%%%%DOCSDIR%%/programs/text/topo.txt
1550
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorer.html
783
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tranalign.txt
1551
%%PORTDOCS%%%%DOCSDIR%%/programs/html/scorerrunner.html
784
%%PORTDOCS%%%%DOCSDIR%%/programs/text/transeq.txt
1552
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seealso.html
785
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimest.txt
1553
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqalign.html
786
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimseq.txt
1554
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqboot.html
787
%%PORTDOCS%%%%DOCSDIR%%/programs/text/twofeat.txt
1555
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqfraggle.html
788
%%PORTDOCS%%%%DOCSDIR%%/programs/text/union.txt
1556
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqmatchall.html
789
%%PORTDOCS%%%%DOCSDIR%%/programs/text/vectorstrip.txt
1557
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqnr.html
790
%%PORTDOCS%%%%DOCSDIR%%/programs/text/water.txt
1558
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqret.html
791
%%PORTDOCS%%%%DOCSDIR%%/programs/text/whichdb.txt
1559
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqretsplit.html
792
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wobble.txt
1560
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsearch.html
793
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordcount.txt
1561
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqsort.html
794
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordmatch.txt
1562
%%PORTDOCS%%%%DOCSDIR%%/programs/html/seqwords.html
795
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wossname.txt
1563
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showalign.html
796
%%PORTDOCS%%%%DOCSDIR%%/programs/text/yank.txt
1564
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showdb.html
1565
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showfeat.html
1566
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showorf.html
1567
%%PORTDOCS%%%%DOCSDIR%%/programs/html/showseq.html
1568
%%PORTDOCS%%%%DOCSDIR%%/programs/html/shuffleseq.html
1569
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigcleave.html
1570
%%PORTDOCS%%%%DOCSDIR%%/programs/html/siggen.html
1571
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sigscan.html
1572
%%PORTDOCS%%%%DOCSDIR%%/programs/html/silent.html
1573
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sirna.html
1574
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sites.html
1575
%%PORTDOCS%%%%DOCSDIR%%/programs/html/sixpack.html
1576
%%PORTDOCS%%%%DOCSDIR%%/programs/html/skipseq.html
1577
%%PORTDOCS%%%%DOCSDIR%%/programs/html/splitter.html
1578
%%PORTDOCS%%%%DOCSDIR%%/programs/html/ssematch.html
1579
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stretcher.html
1580
%%PORTDOCS%%%%DOCSDIR%%/programs/html/stssearch.html
1581
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substitute.html
1582
%%PORTDOCS%%%%DOCSDIR%%/programs/html/substituterunner.html
1583
%%PORTDOCS%%%%DOCSDIR%%/programs/html/supermatcher.html
1584
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.1.syco.gif
1585
%%PORTDOCS%%%%DOCSDIR%%/programs/html/syco.html
1586
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tcode.html
1587
%%PORTDOCS%%%%DOCSDIR%%/programs/html/template.html
1588
%%PORTDOCS%%%%DOCSDIR%%/programs/html/test_group.html
1589
%%PORTDOCS%%%%DOCSDIR%%/programs/html/textsearch.html
1590
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfextract.html
1591
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfm.html
1592
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tfscan.html
1593
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.1.tmap.gif
1594
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tmap.html
1595
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.gif
1596
%%PORTDOCS%%%%DOCSDIR%%/programs/html/topo.html
1597
%%PORTDOCS%%%%DOCSDIR%%/programs/html/tranalign.html
1598
%%PORTDOCS%%%%DOCSDIR%%/programs/html/transeq.html
1599
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimest.html
1600
%%PORTDOCS%%%%DOCSDIR%%/programs/html/trimseq.html
1601
%%PORTDOCS%%%%DOCSDIR%%/programs/html/twofeat.html
1602
%%PORTDOCS%%%%DOCSDIR%%/programs/html/union.html
1603
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_creation_group.html
1604
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_database_indexing_group.html
1605
%%PORTDOCS%%%%DOCSDIR%%/programs/html/utils_misc_group.html
1606
%%PORTDOCS%%%%DOCSDIR%%/programs/html/vectorstrip.html
1607
%%PORTDOCS%%%%DOCSDIR%%/programs/html/water.html
1608
%%PORTDOCS%%%%DOCSDIR%%/programs/html/whichdb.html
1609
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.1.wobble.gif
1610
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wobble.html
1611
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordcount.html
1612
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wordmatch.html
1613
%%PORTDOCS%%%%DOCSDIR%%/programs/html/wossname.html
1614
%%PORTDOCS%%%%DOCSDIR%%/programs/html/yank.html
1615
%%PORTDOCS%%%%DOCSDIR%%/programs/text/aaindexextract.txt
797
%%PORTDOCS%%%%DOCSDIR%%/programs/text/aaindexextract.txt
1616
%%PORTDOCS%%%%DOCSDIR%%/programs/text/abiview.txt
798
%%PORTDOCS%%%%DOCSDIR%%/programs/text/abiview.txt
1617
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdc.txt
799
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdc.txt
1618
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdlog.txt
800
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdlog.txt
1619
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdpretty.txt
801
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdpretty.txt
1620
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtable.txt
802
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtable.txt
803
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cai.txt
1621
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtrace.txt
804
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdtrace.txt
1622
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdvalid.txt
805
%%PORTDOCS%%%%DOCSDIR%%/programs/text/acdvalid.txt
1623
%%PORTDOCS%%%%DOCSDIR%%/programs/text/alignrunner.txt
806
%%PORTDOCS%%%%DOCSDIR%%/programs/text/alignrunner.txt
Lines 1627-1651 Link Here
1627
%%PORTDOCS%%%%DOCSDIR%%/programs/text/banana.txt
810
%%PORTDOCS%%%%DOCSDIR%%/programs/text/banana.txt
1628
%%PORTDOCS%%%%DOCSDIR%%/programs/text/biosed.txt
811
%%PORTDOCS%%%%DOCSDIR%%/programs/text/biosed.txt
1629
%%PORTDOCS%%%%DOCSDIR%%/programs/text/btwisted.txt
812
%%PORTDOCS%%%%DOCSDIR%%/programs/text/btwisted.txt
1630
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cai.txt
1631
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cathparse.txt
813
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cathparse.txt
1632
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chaos.txt
814
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chaos.txt
1633
%%PORTDOCS%%%%DOCSDIR%%/programs/text/charge.txt
815
%%PORTDOCS%%%%DOCSDIR%%/programs/text/charge.txt
1634
%%PORTDOCS%%%%DOCSDIR%%/programs/text/checktrans.txt
816
%%PORTDOCS%%%%DOCSDIR%%/programs/text/checktrans.txt
1635
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chips.txt
817
%%PORTDOCS%%%%DOCSDIR%%/programs/text/chips.txt
1636
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cirdna.txt
818
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cirdna.txt
1637
%%PORTDOCS%%%%DOCSDIR%%/programs/text/clique.txt
1638
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcmp.txt
819
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcmp.txt
820
%%PORTDOCS%%%%DOCSDIR%%/programs/text/codcopy.txt
1639
%%PORTDOCS%%%%DOCSDIR%%/programs/text/coderet.txt
821
%%PORTDOCS%%%%DOCSDIR%%/programs/text/coderet.txt
822
%%PORTDOCS%%%%DOCSDIR%%/programs/text/comparator.txt
1640
%%PORTDOCS%%%%DOCSDIR%%/programs/text/complex.txt
823
%%PORTDOCS%%%%DOCSDIR%%/programs/text/complex.txt
1641
%%PORTDOCS%%%%DOCSDIR%%/programs/text/compseq.txt
824
%%PORTDOCS%%%%DOCSDIR%%/programs/text/compseq.txt
1642
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cons.txt
825
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cons.txt
1643
%%PORTDOCS%%%%DOCSDIR%%/programs/text/consense.txt
1644
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactalign.txt
826
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactalign.txt
1645
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contactcount.txt
1646
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contacts.txt
827
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contacts.txt
1647
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contml.txt
1648
%%PORTDOCS%%%%DOCSDIR%%/programs/text/contrast.txt
1649
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgplot.txt
828
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgplot.txt
1650
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgreport.txt
829
%%PORTDOCS%%%%DOCSDIR%%/programs/text/cpgreport.txt
1651
%%PORTDOCS%%%%DOCSDIR%%/programs/text/crystalball.txt
830
%%PORTDOCS%%%%DOCSDIR%%/programs/text/crystalball.txt
Lines 1657-1677 Link Here
1657
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbifasta.txt
836
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbifasta.txt
1658
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbiflat.txt
837
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbiflat.txt
1659
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbigcg.txt
838
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbigcg.txt
839
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxfasta.txt
840
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxflat.txt
841
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dbxgcg.txt
1660
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseq.txt
842
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseq.txt
1661
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseqrunner.txt
843
%%PORTDOCS%%%%DOCSDIR%%/programs/text/degapseqrunner.txt
1662
%%PORTDOCS%%%%DOCSDIR%%/programs/text/descseq.txt
844
%%PORTDOCS%%%%DOCSDIR%%/programs/text/descseq.txt
1663
%%PORTDOCS%%%%DOCSDIR%%/programs/text/diffseq.txt
845
%%PORTDOCS%%%%DOCSDIR%%/programs/text/diffseq.txt
1664
%%PORTDOCS%%%%DOCSDIR%%/programs/text/digest.txt
846
%%PORTDOCS%%%%DOCSDIR%%/programs/text/digest.txt
1665
%%PORTDOCS%%%%DOCSDIR%%/programs/text/distmat.txt
847
%%PORTDOCS%%%%DOCSDIR%%/programs/text/distmat.txt
1666
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnacomp.txt
1667
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnadist.txt
1668
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnainvar.txt
1669
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnaml.txt
1670
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnamlk.txt
1671
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnapars.txt
1672
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dnapenny.txt
1673
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dollop.txt
1674
%%PORTDOCS%%%%DOCSDIR%%/programs/text/dolpenny.txt
1675
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainalign.txt
848
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainalign.txt
1676
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainer.txt
849
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainer.txt
1677
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainnr.txt
850
%%PORTDOCS%%%%DOCSDIR%%/programs/text/domainnr.txt
Lines 1696-1701 Link Here
1696
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapars.txt
869
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapars.txt
1697
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapenny.txt
870
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ednapenny.txt
1698
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edollop.txt
871
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edollop.txt
872
%%PORTDOCS%%%%DOCSDIR%%/programs/text/iep.txt
1699
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edolpenny.txt
873
%%PORTDOCS%%%%DOCSDIR%%/programs/text/edolpenny.txt
1700
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efactor.txt
874
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efactor.txt
1701
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efitch.txt
875
%%PORTDOCS%%%%DOCSDIR%%/programs/text/efitch.txt
Lines 1732-1738 Link Here
1732
%%PORTDOCS%%%%DOCSDIR%%/programs/text/etandem.txt
906
%%PORTDOCS%%%%DOCSDIR%%/programs/text/etandem.txt
1733
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractfeat.txt
907
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractfeat.txt
1734
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractseq.txt
908
%%PORTDOCS%%%%DOCSDIR%%/programs/text/extractseq.txt
1735
%%PORTDOCS%%%%DOCSDIR%%/programs/text/factor.txt
1736
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fclique.txt
909
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fclique.txt
1737
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fconsense.txt
910
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fconsense.txt
1738
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fcontml.txt
911
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fcontml.txt
Lines 1756-1762 Link Here
1756
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ffreqboot.txt
929
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ffreqboot.txt
1757
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fgendist.txt
930
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fgendist.txt
1758
%%PORTDOCS%%%%DOCSDIR%%/programs/text/findkm.txt
931
%%PORTDOCS%%%%DOCSDIR%%/programs/text/findkm.txt
1759
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fitch.txt
1760
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fkitsch.txt
932
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fkitsch.txt
1761
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmix.txt
933
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmix.txt
1762
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmove.txt
934
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fmove.txt
Lines 1781-1986 Link Here
1781
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fuzztran.txt
953
%%PORTDOCS%%%%DOCSDIR%%/programs/text/fuzztran.txt
1782
%%PORTDOCS%%%%DOCSDIR%%/programs/text/garnier.txt
954
%%PORTDOCS%%%%DOCSDIR%%/programs/text/garnier.txt
1783
%%PORTDOCS%%%%DOCSDIR%%/programs/text/geecee.txt
955
%%PORTDOCS%%%%DOCSDIR%%/programs/text/geecee.txt
1784
%%PORTDOCS%%%%DOCSDIR%%/programs/text/gendist.txt
1785
%%PORTDOCS%%%%DOCSDIR%%/programs/text/getorf.txt
956
%%PORTDOCS%%%%DOCSDIR%%/programs/text/getorf.txt
1786
%%PORTDOCS%%%%DOCSDIR%%/programs/text/helixturnhelix.txt
957
%%PORTDOCS%%%%DOCSDIR%%/programs/text/helixturnhelix.txt
1787
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hetparse.txt
958
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hetparse.txt
1788
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hmoment.txt
959
%%PORTDOCS%%%%DOCSDIR%%/programs/text/hmoment.txt
1789
%%PORTDOCS%%%%DOCSDIR%%/programs/text/iep.txt
960
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoalign.txt
1790
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoalign.txt
961
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoseq.txt
1791
%%PORTDOCS%%%%DOCSDIR%%/programs/text/infoseq.txt
962
%%PORTDOCS%%%%DOCSDIR%%/programs/text/interface.txt
1792
%%PORTDOCS%%%%DOCSDIR%%/programs/text/interface.txt
963
%%PORTDOCS%%%%DOCSDIR%%/programs/text/isochore.txt
1793
%%PORTDOCS%%%%DOCSDIR%%/programs/text/isochore.txt
1794
%%PORTDOCS%%%%DOCSDIR%%/programs/text/jembossctl.txt
1795
%%PORTDOCS%%%%DOCSDIR%%/programs/text/kitsch.txt
1796
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libgen.txt
1797
%%PORTDOCS%%%%DOCSDIR%%/programs/text/libscan.txt
1798
%%PORTDOCS%%%%DOCSDIR%%/programs/text/lindna.txt
1799
%%PORTDOCS%%%%DOCSDIR%%/programs/text/listor.txt
1800
%%PORTDOCS%%%%DOCSDIR%%/programs/text/marscan.txt
1801
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskfeat.txt
1802
%%PORTDOCS%%%%DOCSDIR%%/programs/text/maskseq.txt
1803
%%PORTDOCS%%%%DOCSDIR%%/programs/text/matcher.txt
1804
%%PORTDOCS%%%%DOCSDIR%%/programs/text/megamerger.txt
1805
%%PORTDOCS%%%%DOCSDIR%%/programs/text/meme.txt
1806
%%PORTDOCS%%%%DOCSDIR%%/programs/text/merger.txt
1807
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mix.txt
1808
%%PORTDOCS%%%%DOCSDIR%%/programs/text/msbar.txt
1809
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mse.txt
1810
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwcontam.txt
1811
%%PORTDOCS%%%%DOCSDIR%%/programs/text/mwfilter.txt
1812
%%PORTDOCS%%%%DOCSDIR%%/programs/text/myseq.txt
1813
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalign.txt
1814
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nawalignrunner.txt
1815
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needle.txt
1816
%%PORTDOCS%%%%DOCSDIR%%/programs/text/needlerunner.txt
1817
%%PORTDOCS%%%%DOCSDIR%%/programs/text/neighbor.txt
1818
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgreport.txt
1819
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newcpgseek.txt
1820
%%PORTDOCS%%%%DOCSDIR%%/programs/text/newseq.txt
1821
%%PORTDOCS%%%%DOCSDIR%%/programs/text/noreturn.txt
1822
%%PORTDOCS%%%%DOCSDIR%%/programs/text/notseq.txt
1823
%%PORTDOCS%%%%DOCSDIR%%/programs/text/nthseq.txt
1824
%%PORTDOCS%%%%DOCSDIR%%/programs/text/octanol.txt
1825
%%PORTDOCS%%%%DOCSDIR%%/programs/text/oddcomp.txt
1826
%%PORTDOCS%%%%DOCSDIR%%/programs/text/palindrome.txt
1827
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pasteseq.txt
1828
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatdb.txt
1829
%%PORTDOCS%%%%DOCSDIR%%/programs/text/patmatmotifs.txt
1830
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbparse.txt
1831
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbplus.txt
1832
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pdbtosp.txt
1833
%%PORTDOCS%%%%DOCSDIR%%/programs/text/penny.txt
1834
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepcoil.txt
1835
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepinfo.txt
1836
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepnet.txt
1837
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepstats.txt
1838
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwheel.txt
1839
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindow.txt
1840
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pepwindowall.txt
1841
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pestfind.txt
1842
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotcon.txt
1843
%%PORTDOCS%%%%DOCSDIR%%/programs/text/plotorf.txt
1844
%%PORTDOCS%%%%DOCSDIR%%/programs/text/polydot.txt
1845
%%PORTDOCS%%%%DOCSDIR%%/programs/text/preg.txt
1846
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyplot.txt
1847
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prettyseq.txt
1848
%%PORTDOCS%%%%DOCSDIR%%/programs/text/primersearch.txt
1849
%%PORTDOCS%%%%DOCSDIR%%/programs/text/printsextract.txt
1850
%%PORTDOCS%%%%DOCSDIR%%/programs/text/profit.txt
1851
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophecy.txt
1852
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prophet.txt
1853
%%PORTDOCS%%%%DOCSDIR%%/programs/text/prosextract.txt
1854
%%PORTDOCS%%%%DOCSDIR%%/programs/text/protdist.txt
1855
%%PORTDOCS%%%%DOCSDIR%%/programs/text/pscan.txt
1856
%%PORTDOCS%%%%DOCSDIR%%/programs/text/psiphi.txt
1857
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rebaseextract.txt
1858
%%PORTDOCS%%%%DOCSDIR%%/programs/text/recoder.txt
1859
%%PORTDOCS%%%%DOCSDIR%%/programs/text/redata.txt
1860
%%PORTDOCS%%%%DOCSDIR%%/programs/text/remap.txt
1861
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restml.txt
1862
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restover.txt
1863
%%PORTDOCS%%%%DOCSDIR%%/programs/text/restrict.txt
1864
%%PORTDOCS%%%%DOCSDIR%%/programs/text/revseq.txt
1865
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocon.txt
1866
%%PORTDOCS%%%%DOCSDIR%%/programs/text/rocplot.txt
1867
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scope.txt
1868
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scopparse.txt
1869
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorer.txt
1870
%%PORTDOCS%%%%DOCSDIR%%/programs/text/scorerrunner.txt
1871
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seealso.txt
1872
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqalign.txt
1873
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqboot.txt
1874
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqfraggle.txt
1875
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqmatchall.txt
1876
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqnr.txt
1877
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqret.txt
1878
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqretsplit.txt
1879
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsearch.txt
1880
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqsort.txt
1881
%%PORTDOCS%%%%DOCSDIR%%/programs/text/seqwords.txt
1882
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showalign.txt
1883
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showdb.txt
1884
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showfeat.txt
1885
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showorf.txt
1886
%%PORTDOCS%%%%DOCSDIR%%/programs/text/showseq.txt
1887
%%PORTDOCS%%%%DOCSDIR%%/programs/text/shuffleseq.txt
1888
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigcleave.txt
1889
%%PORTDOCS%%%%DOCSDIR%%/programs/text/siggen.txt
1890
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sigscan.txt
1891
%%PORTDOCS%%%%DOCSDIR%%/programs/text/silent.txt
1892
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sirna.txt
1893
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sites.txt
1894
%%PORTDOCS%%%%DOCSDIR%%/programs/text/sixpack.txt
1895
%%PORTDOCS%%%%DOCSDIR%%/programs/text/skipseq.txt
1896
%%PORTDOCS%%%%DOCSDIR%%/programs/text/splitter.txt
1897
%%PORTDOCS%%%%DOCSDIR%%/programs/text/ssematch.txt
1898
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stretcher.txt
1899
%%PORTDOCS%%%%DOCSDIR%%/programs/text/stssearch.txt
1900
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substitute.txt
1901
%%PORTDOCS%%%%DOCSDIR%%/programs/text/substituterunner.txt
1902
%%PORTDOCS%%%%DOCSDIR%%/programs/text/supermatcher.txt
1903
%%PORTDOCS%%%%DOCSDIR%%/programs/text/syco.txt
1904
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tcode.txt
1905
%%PORTDOCS%%%%DOCSDIR%%/programs/text/textsearch.txt
1906
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfextract.txt
1907
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfm.txt
1908
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tfscan.txt
1909
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tmap.txt
1910
%%PORTDOCS%%%%DOCSDIR%%/programs/text/topo.txt
1911
%%PORTDOCS%%%%DOCSDIR%%/programs/text/tranalign.txt
1912
%%PORTDOCS%%%%DOCSDIR%%/programs/text/transeq.txt
1913
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimest.txt
1914
%%PORTDOCS%%%%DOCSDIR%%/programs/text/trimseq.txt
1915
%%PORTDOCS%%%%DOCSDIR%%/programs/text/twofeat.txt
1916
%%PORTDOCS%%%%DOCSDIR%%/programs/text/union.txt
1917
%%PORTDOCS%%%%DOCSDIR%%/programs/text/vectorstrip.txt
1918
%%PORTDOCS%%%%DOCSDIR%%/programs/text/water.txt
1919
%%PORTDOCS%%%%DOCSDIR%%/programs/text/whichdb.txt
1920
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wobble.txt
1921
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordcount.txt
1922
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wordmatch.txt
1923
%%PORTDOCS%%%%DOCSDIR%%/programs/text/wossname.txt
1924
%%PORTDOCS%%%%DOCSDIR%%/programs/text/yank.txt
1925
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-gcg.ppt
964
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-gcg.ppt
1926
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-interfaces.ppt
965
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-interfaces.ppt
1927
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-talk.ppt
966
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss-talk.ppt
1928
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss_tut.tar.gz
967
%%PORTDOCS%%%%DOCSDIR%%/tutorials/emboss_tut.tar.gz
1929
%%PORTDOCS%%@dirrm %%DOCSDIR%%/tutorials
968
%%DATADIR%%/plstnd5.fnt
1930
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/text
969
%%DATADIR%%/plxtnd5.fnt
970
%%DATADIR%%/acd/needle.acd
971
%%DATADIR%%/acd/newcoils.acd
972
%%DATADIR%%/acd/newcpgreport.acd
973
%%DATADIR%%/acd/newcpgseek.acd
974
%%DATADIR%%/acd/newseq.acd
975
%%DATADIR%%/acd/noreturn.acd
976
%%DATADIR%%/acd/notseq.acd
977
%%DATADIR%%/acd/nthseq.acd
978
%%DATADIR%%/acd/octanol.acd
979
%%DATADIR%%/acd/oddcomp.acd
980
%%DATADIR%%/acd/palindrome.acd
981
%%DATADIR%%/acd/pasteseq.acd
982
%%DATADIR%%/acd/patmatdb.acd
983
%%DATADIR%%/acd/patmatmotifs.acd
984
%%DATADIR%%/acd/patmattest.acd
985
%%DATADIR%%/acd/pepcoil.acd
986
%%DATADIR%%/acd/pepinfo.acd
987
%%DATADIR%%/acd/pepnet.acd
988
%%DATADIR%%/acd/pepstats.acd
989
%%DATADIR%%/acd/pepwheel.acd
990
%%DATADIR%%/acd/pepwindow.acd
991
%%DATADIR%%/acd/pepwindowall.acd
992
%%DATADIR%%/acd/plotcon.acd
993
%%DATADIR%%/acd/plotorf.acd
994
%%DATADIR%%/acd/polydot.acd
995
%%DATADIR%%/acd/preg.acd
996
%%DATADIR%%/acd/prettyplot.acd
997
%%DATADIR%%/acd/prettyseq.acd
998
%%DATADIR%%/acd/prima.acd
999
%%DATADIR%%/acd/primers.acd
1000
%%DATADIR%%/acd/primersearch.acd
1001
%%DATADIR%%/acd/printsextract.acd
1002
%%DATADIR%%/acd/profit.acd
1003
%%DATADIR%%/acd/prophecy.acd
1004
%%DATADIR%%/acd/prophet.acd
1005
%%DATADIR%%/acd/prosextract.acd
1006
%%DATADIR%%/acd/pscan.acd
1007
%%DATADIR%%/acd/psiphi.acd
1008
%%DATADIR%%/acd/rebaseextract.acd
1009
%%DATADIR%%/acd/recoder.acd
1010
%%DATADIR%%/acd/redata.acd
1011
%%DATADIR%%/acd/remap.acd
1012
%%DATADIR%%/acd/restover.acd
1013
%%DATADIR%%/acd/revseq.acd
1014
%%DATADIR%%/acd/restrict.acd
1015
%%DATADIR%%/acd/seealso.acd
1016
%%DATADIR%%/acd/seqinfo.acd
1017
%%DATADIR%%/acd/seqmatchall.acd
1018
%%DATADIR%%/acd/seqret.acd
1019
%%DATADIR%%/acd/seqretall.acd
1020
%%DATADIR%%/acd/seqretallfeat.acd
1021
%%DATADIR%%/acd/seqretset.acd
1022
%%DATADIR%%/acd/seqretsingle.acd
1023
%%DATADIR%%/acd/seqretsplit.acd
1024
%%DATADIR%%/acd/seqrettype.acd
1025
%%DATADIR%%/acd/showalign.acd
1026
%%DATADIR%%/acd/showdb.acd
1027
%%DATADIR%%/acd/showfeat.acd
1028
%%DATADIR%%/acd/showorf.acd
1029
%%DATADIR%%/acd/showseq.acd
1030
%%DATADIR%%/acd/shuffleseq.acd
1031
%%DATADIR%%/acd/sigcleave.acd
1032
%%DATADIR%%/acd/silent.acd
1033
%%DATADIR%%/acd/sirna.acd
1034
%%DATADIR%%/acd/sixpack.acd
1035
%%DATADIR%%/acd/skipseq.acd
1036
%%DATADIR%%/acd/tfm.acd
1037
%%DATADIR%%/acd/splitter.acd
1038
%%DATADIR%%/acd/stretcher.acd
1039
%%DATADIR%%/acd/stssearch.acd
1040
%%DATADIR%%/acd/supermatcher.acd
1041
%%DATADIR%%/acd/syco.acd
1042
%%DATADIR%%/acd/tcode.acd
1043
%%DATADIR%%/acd/testplot.acd
1044
%%DATADIR%%/acd/textsearch.acd
1045
%%DATADIR%%/acd/tfextract.acd
1046
%%DATADIR%%/acd/tfscan.acd
1047
%%DATADIR%%/acd/tmap.acd
1048
%%DATADIR%%/acd/tranalign.acd
1049
%%DATADIR%%/acd/transeq.acd
1050
%%DATADIR%%/acd/treetypedisplay.acd
1051
%%DATADIR%%/acd/trimest.acd
1052
%%DATADIR%%/acd/trimseq.acd
1053
%%DATADIR%%/acd/twofeat.acd
1054
%%DATADIR%%/acd/union.acd
1055
%%DATADIR%%/acd/vectorstrip.acd
1056
%%DATADIR%%/acd/water.acd
1057
%%DATADIR%%/acd/whichdb.acd
1058
%%DATADIR%%/acd/wobble.acd
1059
%%DATADIR%%/acd/wordcount.acd
1060
%%DATADIR%%/acd/wordmatch.acd
1061
%%DATADIR%%/acd/wossname.acd
1062
%%DATADIR%%/acd/yank.acd
1063
%%DATADIR%%/acd/codes.english
1064
%%DATADIR%%/acd/groups.standard
1065
%%DATADIR%%/acd/knowntypes.standard
1066
%%DATADIR%%/acd/sections.standard
1067
%%DATADIR%%/acd/variables.standard
1068
%%DATADIR%%/acd/aaindexextract.acd
1069
%%DATADIR%%/acd/abiview.acd
1070
%%DATADIR%%/acd/acdc.acd
1071
%%DATADIR%%/acd/acdlog.acd
1072
%%DATADIR%%/acd/acdpretty.acd
1073
%%DATADIR%%/acd/acdtable.acd
1074
%%DATADIR%%/acd/acdtrace.acd
1075
%%DATADIR%%/acd/acdvalid.acd
1076
%%DATADIR%%/acd/ajbad.acd
1077
%%DATADIR%%/acd/ajfeatest.acd
1078
%%DATADIR%%/acd/ajtest.acd
1079
%%DATADIR%%/acd/antigenic.acd
1080
%%DATADIR%%/acd/backtranseq.acd
1081
%%DATADIR%%/acd/cai.acd
1082
%%DATADIR%%/acd/banana.acd
1083
%%DATADIR%%/acd/biosed.acd
1084
%%DATADIR%%/acd/btwisted.acd
1085
%%DATADIR%%/acd/chaos.acd
1086
%%DATADIR%%/acd/charge.acd
1087
%%DATADIR%%/acd/checktrans.acd
1088
%%DATADIR%%/acd/chips.acd
1089
%%DATADIR%%/acd/cirdna.acd
1090
%%DATADIR%%/acd/codcmp.acd
1091
%%DATADIR%%/acd/codcopy.acd
1092
%%DATADIR%%/acd/coderet.acd
1093
%%DATADIR%%/acd/complex.acd
1094
%%DATADIR%%/acd/compseq.acd
1095
%%DATADIR%%/acd/cons.acd
1096
%%DATADIR%%/acd/corbatest.acd
1097
%%DATADIR%%/acd/cpgplot.acd
1098
%%DATADIR%%/acd/cpgreport.acd
1099
%%DATADIR%%/acd/cusp.acd
1100
%%DATADIR%%/acd/cutgextract.acd
1101
%%DATADIR%%/acd/cutseq.acd
1102
%%DATADIR%%/acd/dan.acd
1103
%%DATADIR%%/acd/dbiblast.acd
1104
%%DATADIR%%/acd/dbifasta.acd
1105
%%DATADIR%%/acd/dbiflat.acd
1106
%%DATADIR%%/acd/dbigcg.acd
1107
%%DATADIR%%/acd/dbxfasta.acd
1108
%%DATADIR%%/acd/dbxflat.acd
1109
%%DATADIR%%/acd/dbxgcg.acd
1110
%%DATADIR%%/acd/degapseq.acd
1111
%%DATADIR%%/acd/demoalign.acd
1112
%%DATADIR%%/acd/demofeatures.acd
1113
%%DATADIR%%/acd/demolist.acd
1114
%%DATADIR%%/acd/demoreport.acd
1115
%%DATADIR%%/acd/demosequence.acd
1116
%%DATADIR%%/acd/demostring.acd
1117
%%DATADIR%%/acd/demotable.acd
1118
%%DATADIR%%/acd/descseq.acd
1119
%%DATADIR%%/acd/diffseq.acd
1120
%%DATADIR%%/acd/digest.acd
1121
%%DATADIR%%/acd/distmat.acd
1122
%%DATADIR%%/acd/dotmatcher.acd
1123
%%DATADIR%%/acd/dotpath.acd
1124
%%DATADIR%%/acd/dottup.acd
1125
%%DATADIR%%/acd/dreg.acd
1126
%%DATADIR%%/acd/einverted.acd
1127
%%DATADIR%%/acd/embossdata.acd
1128
%%DATADIR%%/acd/iep.acd
1129
%%DATADIR%%/acd/embossversion.acd
1130
%%DATADIR%%/acd/emma.acd
1131
%%DATADIR%%/acd/emowse.acd
1132
%%DATADIR%%/acd/entrails.acd
1133
%%DATADIR%%/acd/entret.acd
1134
%%DATADIR%%/acd/epestfind.acd
1135
%%DATADIR%%/acd/eprimer3.acd
1136
%%DATADIR%%/acd/equicktandem.acd
1137
%%DATADIR%%/acd/est2genome.acd
1138
%%DATADIR%%/acd/etandem.acd
1139
%%DATADIR%%/acd/extractfeat.acd
1140
%%DATADIR%%/acd/extractseq.acd
1141
%%DATADIR%%/acd/findkm.acd
1142
%%DATADIR%%/acd/freak.acd
1143
%%DATADIR%%/acd/fuzznuc.acd
1144
%%DATADIR%%/acd/fuzzpro.acd
1145
%%DATADIR%%/acd/fuzztran.acd
1146
%%DATADIR%%/acd/garnier.acd
1147
%%DATADIR%%/acd/geecee.acd
1148
%%DATADIR%%/acd/getorf.acd
1149
%%DATADIR%%/acd/giep.acd
1150
%%DATADIR%%/acd/helixturnhelix.acd
1151
%%DATADIR%%/acd/hmoment.acd
1152
%%DATADIR%%/acd/histogramtest.acd
1153
%%DATADIR%%/acd/infoalign.acd
1154
%%DATADIR%%/acd/infoseq.acd
1155
%%DATADIR%%/acd/intconv.acd
1156
%%DATADIR%%/acd/isochore.acd
1157
%%DATADIR%%/acd/kmrsplitter.acd
1158
%%DATADIR%%/acd/kmrunion.acd
1159
%%DATADIR%%/acd/lindna.acd
1160
%%DATADIR%%/acd/listor.acd
1161
%%DATADIR%%/acd/marscan.acd
1162
%%DATADIR%%/acd/maskfeat.acd
1163
%%DATADIR%%/acd/maskseq.acd
1164
%%DATADIR%%/acd/matcher.acd
1165
%%DATADIR%%/acd/megamerger.acd
1166
%%DATADIR%%/acd/merger.acd
1167
%%DATADIR%%/acd/msbar.acd
1168
%%DATADIR%%/acd/mwcontam.acd
1169
%%DATADIR%%/acd/mwfilter.acd
1170
%%DATADIR%%/data/AAINDEX/dummyfile
1171
%%DATADIR%%/data/CODONS/Cut.index
1172
%%DATADIR%%/data/CODONS/Eacica.cut
1173
%%DATADIR%%/data/CODONS/Eagrtu.cut
1174
%%DATADIR%%/data/CODONS/Eanasp.cut
1175
%%DATADIR%%/data/CODONS/Earath.cut
1176
%%DATADIR%%/data/CODONS/Eazovi.cut
1177
%%DATADIR%%/data/CODONS/Ebacme.cut
1178
%%DATADIR%%/data/CODONS/Ebacst.cut
1179
%%DATADIR%%/data/CODONS/Ebacsu.cut
1180
%%DATADIR%%/data/CODONS/Ebacsu_high.cut
1181
%%DATADIR%%/data/CODONS/Ebommo.cut
1182
%%DATADIR%%/data/CODONS/Ebovin.cut
1183
%%DATADIR%%/data/CODONS/Ebpphx.cut
1184
%%DATADIR%%/data/CODONS/Ebraja.cut
1185
%%DATADIR%%/data/CODONS/Ebrana.cut
1186
%%DATADIR%%/data/CODONS/Ebrare.cut
1187
%%DATADIR%%/data/CODONS/Ecaeel.cut
1188
%%DATADIR%%/data/CODONS/Ecanal.cut
1189
%%DATADIR%%/data/CODONS/Ecanfa.cut
1190
%%DATADIR%%/data/CODONS/Ecaucr.cut
1191
%%DATADIR%%/data/CODONS/Echick.cut
1192
%%DATADIR%%/data/CODONS/Echlre.cut
1193
%%DATADIR%%/data/CODONS/Echltr.cut
1194
%%DATADIR%%/data/CODONS/Ecloab.cut
1195
%%DATADIR%%/data/CODONS/Ecrigr.cut
1196
%%DATADIR%%/data/CODONS/Ecyapa.cut
1197
%%DATADIR%%/data/CODONS/Edayhoff.cut
1198
%%DATADIR%%/data/CODONS/Edicdi.cut
1199
%%DATADIR%%/data/CODONS/Edicdi_high.cut
1200
%%DATADIR%%/data/CODONS/Edrome.cut
1201
%%DATADIR%%/data/CODONS/Edrome_high.cut
1202
%%DATADIR%%/data/CODONS/Eecoli.cut
1203
%%DATADIR%%/data/CODONS/Eecoli_high.cut
1204
%%DATADIR%%/data/CODONS/Eemeni.cut
1205
%%DATADIR%%/data/CODONS/Eemeni_mit.cut
1206
%%DATADIR%%/data/CODONS/Eemeni_high.cut
1207
%%DATADIR%%/data/CODONS/Eerwct.cut
1208
%%DATADIR%%/data/CODONS/Ehaein.cut
1209
%%DATADIR%%/data/CODONS/Ehalma.cut
1210
%%DATADIR%%/data/CODONS/Ehalsa.cut
1211
%%DATADIR%%/data/CODONS/Ehorvu.cut
1212
%%DATADIR%%/data/CODONS/Ehuman.cut
1213
%%DATADIR%%/data/CODONS/Eklepn.cut
1214
%%DATADIR%%/data/CODONS/Eklula.cut
1215
%%DATADIR%%/data/CODONS/Elacdl.cut
1216
%%DATADIR%%/data/CODONS/Elyces.cut
1217
%%DATADIR%%/data/CODONS/Emacfa.cut
1218
%%DATADIR%%/data/CODONS/Emaize.cut
1219
%%DATADIR%%/data/CODONS/Emaize_chl.cut
1220
%%DATADIR%%/data/CODONS/Emammal_high.cut
1221
%%DATADIR%%/data/CODONS/Emanse.cut
1222
%%DATADIR%%/data/CODONS/Emarpo_chl.cut
1223
%%DATADIR%%/data/CODONS/Emedsa.cut
1224
%%DATADIR%%/data/CODONS/Emetth.cut
1225
%%DATADIR%%/data/CODONS/Emouse.cut
1226
%%DATADIR%%/data/CODONS/Emyctu.cut
1227
%%DATADIR%%/data/CODONS/Eneigo.cut
1228
%%DATADIR%%/data/CODONS/Eneucr.cut
1229
%%DATADIR%%/data/CODONS/Eoncmy.cut
1230
%%DATADIR%%/data/CODONS/Eorysa.cut
1231
%%DATADIR%%/data/CODONS/Eorysa_chl.cut
1232
%%DATADIR%%/data/CODONS/Epea.cut
1233
%%DATADIR%%/data/CODONS/Epethy.cut
1234
%%DATADIR%%/data/CODONS/Ephavu.cut
1235
%%DATADIR%%/data/CODONS/Epig.cut
1236
%%DATADIR%%/data/CODONS/Eplafa.cut
1237
%%DATADIR%%/data/CODONS/Eprovu.cut
1238
%%DATADIR%%/data/CODONS/Epseae.cut
1239
%%DATADIR%%/data/CODONS/Epsepu.cut
1240
%%DATADIR%%/data/CODONS/Epsesm.cut
1241
%%DATADIR%%/data/CODONS/Erabit.cut
1242
%%DATADIR%%/data/CODONS/Erat.cut
1243
%%DATADIR%%/data/CODONS/Erhile.cut
1244
%%DATADIR%%/data/CODONS/Erhime.cut
1245
%%DATADIR%%/data/CODONS/Erhoca.cut
1246
%%DATADIR%%/data/CODONS/Erhosh.cut
1247
%%DATADIR%%/data/CODONS/Esalsa.cut
1248
%%DATADIR%%/data/CODONS/Esalty.cut
1249
%%DATADIR%%/data/CODONS/Eschma.cut
1250
%%DATADIR%%/data/CODONS/Eschpo.cut
1251
%%DATADIR%%/data/CODONS/Eschpo_cai.cut
1252
%%DATADIR%%/data/CODONS/Eschpo_high.cut
1253
%%DATADIR%%/data/CODONS/Eserma.cut
1254
%%DATADIR%%/data/CODONS/Esheep.cut
1255
%%DATADIR%%/data/CODONS/Esoltu.cut
1256
%%DATADIR%%/data/CODONS/Esoybn.cut
1257
%%DATADIR%%/data/CODONS/Espiol.cut
1258
%%DATADIR%%/data/CODONS/Estaau.cut
1259
%%DATADIR%%/data/CODONS/Estrco.cut
1260
%%DATADIR%%/data/CODONS/Estrmu.cut
1261
%%DATADIR%%/data/CODONS/Estrpn.cut
1262
%%DATADIR%%/data/CODONS/Estrpu.cut
1263
%%DATADIR%%/data/CODONS/Esyncy.cut
1264
%%DATADIR%%/data/CODONS/Esynco.cut
1265
%%DATADIR%%/data/CODONS/Etetth.cut
1266
%%DATADIR%%/data/CODONS/Etheth.cut
1267
%%DATADIR%%/data/CODONS/Etobac.cut
1268
%%DATADIR%%/data/CODONS/Etobac_chl.cut
1269
%%DATADIR%%/data/CODONS/Etrybr.cut
1270
%%DATADIR%%/data/CODONS/Etrycr.cut
1271
%%DATADIR%%/data/CODONS/Evibch.cut
1272
%%DATADIR%%/data/CODONS/Ewheat.cut
1273
%%DATADIR%%/data/CODONS/Exenla.cut
1274
%%DATADIR%%/data/CODONS/Eyeast.cut
1275
%%DATADIR%%/data/CODONS/Eyeast_cai.cut
1276
%%DATADIR%%/data/CODONS/Eyeast_high.cut
1277
%%DATADIR%%/data/CODONS/Eyeast_mit.cut
1278
%%DATADIR%%/data/CODONS/Eyeren.cut
1279
%%DATADIR%%/data/CODONS/Eyerpe.cut
1280
%%DATADIR%%/data/CODONS/Eacc.cut
1281
%%DATADIR%%/data/CODONS/Eadenovirus5.cut
1282
%%DATADIR%%/data/CODONS/Eadenovirus7.cut
1283
%%DATADIR%%/data/CODONS/Eaidlav.cut
1284
%%DATADIR%%/data/CODONS/Eani.cut
1285
%%DATADIR%%/data/CODONS/Eani_h.cut
1286
%%DATADIR%%/data/CODONS/Eanidmit.cut
1287
%%DATADIR%%/data/CODONS/Easn.cut
1288
%%DATADIR%%/data/CODONS/Eath.cut
1289
%%DATADIR%%/data/CODONS/Eatu.cut
1290
%%DATADIR%%/data/CODONS/Eavi.cut
1291
%%DATADIR%%/data/CODONS/Ef1.cut
1292
%%DATADIR%%/data/CODONS/Ebja.cut
1293
%%DATADIR%%/data/CODONS/Ebly.cut
1294
%%DATADIR%%/data/CODONS/Ebme.cut
1295
%%DATADIR%%/data/CODONS/Ebmo.cut
1296
%%DATADIR%%/data/CODONS/Ebna.cut
1297
%%DATADIR%%/data/CODONS/Ebov.cut
1298
%%DATADIR%%/data/CODONS/Ebovsp.cut
1299
%%DATADIR%%/data/CODONS/Ebst.cut
1300
%%DATADIR%%/data/CODONS/Ebsu.cut
1301
%%DATADIR%%/data/CODONS/Ebsu_h.cut
1302
%%DATADIR%%/data/CODONS/Ecac.cut
1303
%%DATADIR%%/data/CODONS/Ecal.cut
1304
%%DATADIR%%/data/CODONS/Eccr.cut
1305
%%DATADIR%%/data/CODONS/Ecel.cut
1306
%%DATADIR%%/data/CODONS/Echi.cut
1307
%%DATADIR%%/data/CODONS/Echicken.cut
1308
%%DATADIR%%/data/CODONS/Echisp.cut
1309
%%DATADIR%%/data/CODONS/Echk.cut
1310
%%DATADIR%%/data/CODONS/Echmp.cut
1311
%%DATADIR%%/data/CODONS/Echnt.cut
1312
%%DATADIR%%/data/CODONS/Echos.cut
1313
%%DATADIR%%/data/CODONS/Echzm.cut
1314
%%DATADIR%%/data/CODONS/Echzmrubp.cut
1315
%%DATADIR%%/data/CODONS/Ecpx.cut
1316
%%DATADIR%%/data/CODONS/Ecre.cut
1317
%%DATADIR%%/data/CODONS/Ecrisp.cut
1318
%%DATADIR%%/data/CODONS/Ectr.cut
1319
%%DATADIR%%/data/CODONS/Eddi.cut
1320
%%DATADIR%%/data/CODONS/Eddi_h.cut
1321
%%DATADIR%%/data/CODONS/Edog.cut
1322
%%DATADIR%%/data/CODONS/Edro.cut
1323
%%DATADIR%%/data/CODONS/Edro_h.cut
1324
%%DATADIR%%/data/CODONS/Edrosophila.cut
1325
%%DATADIR%%/data/CODONS/Eeca.cut
1326
%%DATADIR%%/data/CODONS/Eeco.cut
1327
%%DATADIR%%/data/CODONS/Eeco_h.cut
1328
%%DATADIR%%/data/CODONS/Efish.cut
1329
%%DATADIR%%/data/CODONS/Efmdvpolyp.cut
1330
%%DATADIR%%/data/CODONS/Eham.cut
1331
%%DATADIR%%/data/CODONS/Ehha.cut
1332
%%DATADIR%%/data/CODONS/Ehin.cut
1333
%%DATADIR%%/data/CODONS/Ehma.cut
1334
%%DATADIR%%/data/CODONS/Ehum.cut
1335
%%DATADIR%%/data/CODONS/Ekla.cut
1336
%%DATADIR%%/data/CODONS/Ekpn.cut
1337
%%DATADIR%%/data/CODONS/Ella.cut
1338
%%DATADIR%%/data/CODONS/Emac.cut
1339
%%DATADIR%%/data/CODONS/Emam_h.cut
1340
%%DATADIR%%/data/CODONS/Emixlg.cut
1341
%%DATADIR%%/data/CODONS/Emsa.cut
1342
%%DATADIR%%/data/CODONS/Emse.cut
1343
%%DATADIR%%/data/CODONS/Emta.cut
1344
%%DATADIR%%/data/CODONS/Emtu.cut
1345
%%DATADIR%%/data/CODONS/Emus.cut
1346
%%DATADIR%%/data/CODONS/Emussp.cut
1347
%%DATADIR%%/data/CODONS/Emva.cut
1348
%%DATADIR%%/data/CODONS/Emze.cut
1349
%%DATADIR%%/data/CODONS/Emzecp.cut
1350
%%DATADIR%%/data/CODONS/Encr.cut
1351
%%DATADIR%%/data/CODONS/Eneu.cut
1352
%%DATADIR%%/data/CODONS/Engo.cut
1353
%%DATADIR%%/data/CODONS/Eoncsp.cut
1354
%%DATADIR%%/data/CODONS/Epae.cut
1355
%%DATADIR%%/data/CODONS/Epet.cut
1356
%%DATADIR%%/data/CODONS/Epfa.cut
1357
%%DATADIR%%/data/CODONS/Ephix174.cut
1358
%%DATADIR%%/data/CODONS/Ephv.cut
1359
%%DATADIR%%/data/CODONS/Ephy.cut
1360
%%DATADIR%%/data/CODONS/Epolyomaa2.cut
1361
%%DATADIR%%/data/CODONS/Epombe.cut
1362
%%DATADIR%%/data/CODONS/Epombecai.cut
1363
%%DATADIR%%/data/CODONS/Epot.cut
1364
%%DATADIR%%/data/CODONS/Eppu.cut
1365
%%DATADIR%%/data/CODONS/Epse.cut
1366
%%DATADIR%%/data/CODONS/Epsy.cut
1367
%%DATADIR%%/data/CODONS/Epvu.cut
1368
%%DATADIR%%/data/CODONS/Erab.cut
1369
%%DATADIR%%/data/CODONS/Erabbit.cut
1370
%%DATADIR%%/data/CODONS/Erabsp.cut
1371
%%DATADIR%%/data/CODONS/Eratsp.cut
1372
%%DATADIR%%/data/CODONS/Erca.cut
1373
%%DATADIR%%/data/CODONS/Erhm.cut
1374
%%DATADIR%%/data/CODONS/Eric.cut
1375
%%DATADIR%%/data/CODONS/Erle.cut
1376
%%DATADIR%%/data/CODONS/Erme.cut
1377
%%DATADIR%%/data/CODONS/Ersp.cut
1378
%%DATADIR%%/data/CODONS/Esalsp.cut
1379
%%DATADIR%%/data/CODONS/Esau.cut
1380
%%DATADIR%%/data/CODONS/Esco.cut
1381
%%DATADIR%%/data/CODONS/Esgi.cut
1382
%%DATADIR%%/data/CODONS/Eshp.cut
1383
%%DATADIR%%/data/CODONS/Eshpsp.cut
1384
%%DATADIR%%/data/CODONS/Esli.cut
1385
%%DATADIR%%/data/CODONS/Eslm.cut
1386
%%DATADIR%%/data/CODONS/Esma.cut
1387
%%DATADIR%%/data/CODONS/Esmi.cut
1388
%%DATADIR%%/data/CODONS/Esmu.cut
1389
%%DATADIR%%/data/CODONS/Esoy.cut
1390
%%DATADIR%%/data/CODONS/Espi.cut
1391
%%DATADIR%%/data/CODONS/Espn.cut
1392
%%DATADIR%%/data/CODONS/Espo.cut
1393
%%DATADIR%%/data/CODONS/Espo_h.cut
1394
%%DATADIR%%/data/CODONS/Espu.cut
1395
%%DATADIR%%/data/CODONS/Esta.cut
1396
%%DATADIR%%/data/CODONS/Esty.cut
1397
%%DATADIR%%/data/CODONS/Esus.cut
1398
%%DATADIR%%/data/CODONS/Esv40.cut
1399
%%DATADIR%%/data/CODONS/Esyhsp.cut
1400
%%DATADIR%%/data/CODONS/Esynsp.cut
1401
%%DATADIR%%/data/CODONS/Etbr.cut
1402
%%DATADIR%%/data/CODONS/Etcr.cut
1403
%%DATADIR%%/data/CODONS/Eter.cut
1404
%%DATADIR%%/data/CODONS/Etetsp.cut
1405
%%DATADIR%%/data/CODONS/Etob.cut
1406
%%DATADIR%%/data/CODONS/Etobcp.cut
1407
%%DATADIR%%/data/CODONS/Etom.cut
1408
%%DATADIR%%/data/CODONS/Etrb.cut
1409
%%DATADIR%%/data/CODONS/Evco.cut
1410
%%DATADIR%%/data/CODONS/Ewht.cut
1411
%%DATADIR%%/data/CODONS/Exel.cut
1412
%%DATADIR%%/data/CODONS/Exenopus.cut
1413
%%DATADIR%%/data/CODONS/Eyeastcai.cut
1414
%%DATADIR%%/data/CODONS/Eyen.cut
1415
%%DATADIR%%/data/CODONS/Eysc.cut
1416
%%DATADIR%%/data/CODONS/Eysc_h.cut
1417
%%DATADIR%%/data/CODONS/Eyscmt.cut
1418
%%DATADIR%%/data/CODONS/Eysp.cut
1419
%%DATADIR%%/data/CODONS/Ezebrafish.cut
1420
%%DATADIR%%/data/CODONS/Ezma.cut
1421
%%DATADIR%%/data/REBASE/dummyfile
1422
%%DATADIR%%/data/PRINTS/dummyfile
1423
%%DATADIR%%/data/PROSITE/dummyfile
1424
%%DATADIR%%/data/EBLOSUM30
1425
%%DATADIR%%/data/EBLOSUM35
1426
%%DATADIR%%/data/EBLOSUM40
1427
%%DATADIR%%/data/EBLOSUM45
1428
%%DATADIR%%/data/EBLOSUM50
1429
%%DATADIR%%/data/EBLOSUM55
1430
%%DATADIR%%/data/EBLOSUM60
1431
%%DATADIR%%/data/EBLOSUM62
1432
%%DATADIR%%/data/EBLOSUM62-12
1433
%%DATADIR%%/data/EBLOSUM65
1434
%%DATADIR%%/data/EBLOSUM70
1435
%%DATADIR%%/data/EBLOSUM75
1436
%%DATADIR%%/data/EBLOSUM80
1437
%%DATADIR%%/data/EBLOSUM85
1438
%%DATADIR%%/data/EBLOSUM90
1439
%%DATADIR%%/data/EBLOSUMN
1440
%%DATADIR%%/data/EDNAFULL
1441
%%DATADIR%%/data/EDNAMAT
1442
%%DATADIR%%/data/EGC.0
1443
%%DATADIR%%/data/EGC.1
1444
%%DATADIR%%/data/EGC.10
1445
%%DATADIR%%/data/EGC.11
1446
%%DATADIR%%/data/EGC.12
1447
%%DATADIR%%/data/EGC.13
1448
%%DATADIR%%/data/EGC.14
1449
%%DATADIR%%/data/EGC.15
1450
%%DATADIR%%/data/EGC.16
1451
%%DATADIR%%/data/EGC.2
1452
%%DATADIR%%/data/EGC.21
1453
%%DATADIR%%/data/EGC.22
1454
%%DATADIR%%/data/EGC.23
1455
%%DATADIR%%/data/EGC.3
1456
%%DATADIR%%/data/EGC.4
1457
%%DATADIR%%/data/EGC.5
1458
%%DATADIR%%/data/EGC.6
1459
%%DATADIR%%/data/EGC.9
1460
%%DATADIR%%/data/EGC.index
1461
%%DATADIR%%/data/EGC.txt
1462
%%DATADIR%%/data/ENUC.4.2
1463
%%DATADIR%%/data/ENUC.4.4
1464
%%DATADIR%%/data/EPAM10
1465
%%DATADIR%%/data/EPAM100
1466
%%DATADIR%%/data/EPAM110
1467
%%DATADIR%%/data/EPAM120
1468
%%DATADIR%%/data/EPAM130
1469
%%DATADIR%%/data/EPAM140
1470
%%DATADIR%%/data/EPAM150
1471
%%DATADIR%%/data/EPAM160
1472
%%DATADIR%%/data/EPAM170
1473
%%DATADIR%%/data/EPAM180
1474
%%DATADIR%%/data/EPAM190
1475
%%DATADIR%%/data/EPAM20
1476
%%DATADIR%%/data/EPAM200
1477
%%DATADIR%%/data/EPAM210
1478
%%DATADIR%%/data/EPAM220
1479
%%DATADIR%%/data/EPAM230
1480
%%DATADIR%%/data/EPAM240
1481
%%DATADIR%%/data/EPAM250
1482
%%DATADIR%%/data/EPAM260
1483
%%DATADIR%%/data/EPAM270
1484
%%DATADIR%%/data/EPAM280
1485
%%DATADIR%%/data/EPAM290
1486
%%DATADIR%%/data/EPAM30
1487
%%DATADIR%%/data/EPAM300
1488
%%DATADIR%%/data/EPAM310
1489
%%DATADIR%%/data/EPAM320
1490
%%DATADIR%%/data/EPAM330
1491
%%DATADIR%%/data/EPAM340
1492
%%DATADIR%%/data/EPAM350
1493
%%DATADIR%%/data/EPAM360
1494
%%DATADIR%%/data/EPAM370
1495
%%DATADIR%%/data/EPAM380
1496
%%DATADIR%%/data/EPAM390
1497
%%DATADIR%%/data/EPAM40
1498
%%DATADIR%%/data/EPAM400
1499
%%DATADIR%%/data/EPAM410
1500
%%DATADIR%%/data/EPAM420
1501
%%DATADIR%%/data/EPAM430
1502
%%DATADIR%%/data/EPAM440
1503
%%DATADIR%%/data/EPAM450
1504
%%DATADIR%%/data/EPAM460
1505
%%DATADIR%%/data/EPAM470
1506
%%DATADIR%%/data/EPAM480
1507
%%DATADIR%%/data/EPAM490
1508
%%DATADIR%%/data/EPAM50
1509
%%DATADIR%%/data/EPAM500
1510
%%DATADIR%%/data/EPAM60
1511
%%DATADIR%%/data/EPAM70
1512
%%DATADIR%%/data/EPAM80
1513
%%DATADIR%%/data/EPAM90
1514
%%DATADIR%%/data/Eaa_acc_surface.dat
1515
%%DATADIR%%/data/Eaa_hydropathy.dat
1516
%%DATADIR%%/data/Eaa_properties.dat
1517
%%DATADIR%%/data/Eamino.dat
1518
%%DATADIR%%/data/Eangles.dat
1519
%%DATADIR%%/data/Eangles_tri.dat
1520
%%DATADIR%%/data/Eantigenic.dat
1521
%%DATADIR%%/data/Ebases.iub
1522
%%DATADIR%%/data/Edayhoff.freq
1523
%%DATADIR%%/data/Edna.melt
1524
%%DATADIR%%/data/Eembl.ior
1525
%%DATADIR%%/data/Eenergy.dat
1526
%%DATADIR%%/data/Efeatures.embl
1527
%%DATADIR%%/data/Efeatures.emboss
1528
%%DATADIR%%/data/Efeatures.gff
1529
%%DATADIR%%/data/Efeatures.pir
1530
%%DATADIR%%/data/Efeatures.protein
1531
%%DATADIR%%/data/Efeatures.swiss
1532
%%DATADIR%%/data/Efreqs.dat
1533
%%DATADIR%%/data/Ehet.dat
1534
%%DATADIR%%/data/Ehth.dat
1535
%%DATADIR%%/data/Ehth87.dat
1536
%%DATADIR%%/data/Ememe.dat
1537
%%DATADIR%%/data/Enakai.dat
1538
%%DATADIR%%/data/Epepcoil.dat
1539
%%DATADIR%%/data/Epk.dat
1540
%%DATADIR%%/data/Epprofile
1541
%%DATADIR%%/data/Eprior1.plib
1542
%%DATADIR%%/data/Eprior30.plib
1543
%%DATADIR%%/data/Erna.melt
1544
%%DATADIR%%/data/Esig.euk
1545
%%DATADIR%%/data/Esig.pro
1546
%%DATADIR%%/data/Etags.embl
1547
%%DATADIR%%/data/Etags.emboss
1548
%%DATADIR%%/data/Etags.gff
1549
%%DATADIR%%/data/Etags.pir
1550
%%DATADIR%%/data/Etags.protein
1551
%%DATADIR%%/data/Etags.swiss
1552
%%DATADIR%%/data/Etcode.dat
1553
%%DATADIR%%/data/Evdw.dat
1554
%%DATADIR%%/data/Ewhite-wimley.dat
1555
%%DATADIR%%/data/embossre.equ
1556
%%DATADIR%%/data/Emwfilter.dat
1557
%%DATADIR%%/data/Emass.dat
1558
%%DATADIR%%/data/Emassmod.dat
1559
%%DATADIR%%/data/Matrices.nucleotide
1560
%%DATADIR%%/data/Matrices.protein
1561
%%DATADIR%%/data/Matrices.proteinstructure
1562
%%DATADIR%%/emboss.default.template
1563
%%DATADIR%%/test/data/aaindex1.test
1564
%%DATADIR%%/test/data/prosite.dat
1565
%%DATADIR%%/test/data/prosite.doc
1566
%%DATADIR%%/test/data/prints.test
1567
%%DATADIR%%/test/data/withrefm
1568
%%DATADIR%%/test/data/site.dat
1569
%%DATADIR%%/test/data/cutg.codon
1570
%%DATADIR%%/test/data/dna.acedb
1571
%%DATADIR%%/test/data/dna.aln
1572
%%DATADIR%%/test/data/dna.asn1
1573
%%DATADIR%%/test/data/dna.codata
1574
%%DATADIR%%/test/data/dna.embl
1575
%%DATADIR%%/test/data/dna.fasta
1576
%%DATADIR%%/test/data/dna.fitch
1577
%%DATADIR%%/test/data/dna.gcg
1578
%%DATADIR%%/test/data/dna.gcg8
1579
%%DATADIR%%/test/data/dna.genbank
1580
%%DATADIR%%/test/data/dna.ig
1581
%%DATADIR%%/test/data/dna.m-acedb
1582
%%DATADIR%%/test/data/dna.m-codata
1583
%%DATADIR%%/test/data/dna.m-embl
1584
%%DATADIR%%/test/data/dna.m-fasta
1585
%%DATADIR%%/test/data/dna.m-fasta-long
1586
%%DATADIR%%/test/data/dna.m-ncbi
1587
%%DATADIR%%/test/data/dna.m-strider
1588
%%DATADIR%%/test/data/dna.msf
1589
%%DATADIR%%/test/data/dna.msf8
1590
%%DATADIR%%/test/data/dna.ncbi
1591
%%DATADIR%%/test/data/dna.phylip
1592
%%DATADIR%%/test/data/dna.phylip3
1593
%%DATADIR%%/test/data/dna.staden
1594
%%DATADIR%%/test/data/dna.strider
1595
%%DATADIR%%/test/data/dna.text
1596
%%DATADIR%%/test/data/feat.emft
1597
%%DATADIR%%/test/data/feat.fasta
1598
%%DATADIR%%/test/data/feat.pir
1599
%%DATADIR%%/test/data/mw1.dat
1600
%%DATADIR%%/test/data/mw2.dat
1601
%%DATADIR%%/test/data/mw3.dat
1602
%%DATADIR%%/test/data/paamir.pep
1603
%%DATADIR%%/test/data/pax6_cdna.fasta
1604
%%DATADIR%%/test/data/prot.acedb
1605
%%DATADIR%%/test/data/prot.codata
1606
%%DATADIR%%/test/data/prot.fasta
1607
%%DATADIR%%/test/data/prot.gcg
1608
%%DATADIR%%/test/data/prot.gcg8
1609
%%DATADIR%%/test/data/prot.ig
1610
%%DATADIR%%/test/data/prot.m-acedb
1611
%%DATADIR%%/test/data/prot.m-codata
1612
%%DATADIR%%/test/data/prot.m-fasta
1613
%%DATADIR%%/test/data/prot.m-nbrf
1614
%%DATADIR%%/test/data/prot.m-ncbi
1615
%%DATADIR%%/test/data/prot.m-swiss
1616
%%DATADIR%%/test/data/prot.nbrf
1617
%%DATADIR%%/test/data/prot.ncbi
1618
%%DATADIR%%/test/data/prot.swiss
1619
%%DATADIR%%/test/data/prot.text
1620
%%DATADIR%%/test/data/z83307.seq
1621
%%DATADIR%%/test/data/aligna.dna
1622
%%DATADIR%%/test/data/alignapart.dna
1623
%%DATADIR%%/test/data/alignb.dna
1624
%%DATADIR%%/test/data/aligna.prot
1625
%%DATADIR%%/test/data/alignapart.prot
1626
%%DATADIR%%/test/data/alignb.prot
1627
%%DATADIR%%/test/data/tranalign.pep
1628
%%DATADIR%%/test/data/tranalign.seq
1629
%%DATADIR%%/test/embl/acnum.hit
1630
%%DATADIR%%/test/embl/acnum.trg
1631
%%DATADIR%%/test/embl/division.lkp
1632
%%DATADIR%%/test/embl/entrynam.idx
1633
%%DATADIR%%/test/embl/seqvn.hit
1634
%%DATADIR%%/test/embl/seqvn.trg
1635
%%DATADIR%%/test/embl/des.hit
1636
%%DATADIR%%/test/embl/des.trg
1637
%%DATADIR%%/test/embl/keyword.hit
1638
%%DATADIR%%/test/embl/keyword.trg
1639
%%DATADIR%%/test/embl/taxon.hit
1640
%%DATADIR%%/test/embl/taxon.trg
1641
%%DATADIR%%/test/embl/est.dat
1642
%%DATADIR%%/test/embl/fun.dat
1643
%%DATADIR%%/test/embl/hum1.dat
1644
%%DATADIR%%/test/embl/inv.dat
1645
%%DATADIR%%/test/embl/pln.dat
1646
%%DATADIR%%/test/embl/pro.dat
1647
%%DATADIR%%/test/embl/rod.dat
1648
%%DATADIR%%/test/embl/sts.dat
1649
%%DATADIR%%/test/embl/vrl.dat
1650
%%DATADIR%%/test/embl/vrt.dat
1651
%%DATADIR%%/test/genbank/acnum.hit
1652
%%DATADIR%%/test/genbank/acnum.trg
1653
%%DATADIR%%/test/genbank/division.lkp
1654
%%DATADIR%%/test/genbank/entrynam.idx
1655
%%DATADIR%%/test/genbank/seqvn.hit
1656
%%DATADIR%%/test/genbank/seqvn.trg
1657
%%DATADIR%%/test/genbank/des.hit
1658
%%DATADIR%%/test/genbank/des.trg
1659
%%DATADIR%%/test/genbank/keyword.hit
1660
%%DATADIR%%/test/genbank/keyword.trg
1661
%%DATADIR%%/test/genbank/taxon.hit
1662
%%DATADIR%%/test/genbank/taxon.trg
1663
%%DATADIR%%/test/genbank/gbbct1.seq
1664
%%DATADIR%%/test/genbank/gbest1.seq
1665
%%DATADIR%%/test/genbank/gbinv1.seq
1666
%%DATADIR%%/test/genbank/gbpln1.seq
1667
%%DATADIR%%/test/genbank/gbpln2.seq
1668
%%DATADIR%%/test/genbank/gbpri1.seq
1669
%%DATADIR%%/test/genbank/gbrod1.seq
1670
%%DATADIR%%/test/genbank/gbsts1.seq
1671
%%DATADIR%%/test/genbank/gbvrl1.seq
1672
%%DATADIR%%/test/genbank/gbvrt.seq
1673
%%DATADIR%%/test/gb/acnum.hit
1674
%%DATADIR%%/test/gb/acnum.trg
1675
%%DATADIR%%/test/gb/division.lkp
1676
%%DATADIR%%/test/gb/entrynam.idx
1677
%%DATADIR%%/test/gb/seqvn.hit
1678
%%DATADIR%%/test/gb/seqvn.trg
1679
%%DATADIR%%/test/gb/des.hit
1680
%%DATADIR%%/test/gb/des.trg
1681
%%DATADIR%%/test/gb/keyword.hit
1682
%%DATADIR%%/test/gb/keyword.trg
1683
%%DATADIR%%/test/gb/taxon.hit
1684
%%DATADIR%%/test/gb/taxon.trg
1685
%%DATADIR%%/test/gb/ba.ref
1686
%%DATADIR%%/test/gb/ba.seq
1687
%%DATADIR%%/test/gb/htg.ref
1688
%%DATADIR%%/test/gb/htg.seq
1689
%%DATADIR%%/test/pir/acnum.hit
1690
%%DATADIR%%/test/pir/acnum.trg
1691
%%DATADIR%%/test/pir/division.lkp
1692
%%DATADIR%%/test/pir/entrynam.idx
1693
%%DATADIR%%/test/pir/des.hit
1694
%%DATADIR%%/test/pir/des.trg
1695
%%DATADIR%%/test/pir/keyword.hit
1696
%%DATADIR%%/test/pir/keyword.trg
1697
%%DATADIR%%/test/pir/taxon.hit
1698
%%DATADIR%%/test/pir/taxon.trg
1699
%%DATADIR%%/test/pir/pir1.header
1700
%%DATADIR%%/test/pir/pir1.names
1701
%%DATADIR%%/test/pir/pir1.numbers
1702
%%DATADIR%%/test/pir/pir1.offset
1703
%%DATADIR%%/test/pir/pir1.ref
1704
%%DATADIR%%/test/pir/pir1.seq
1705
%%DATADIR%%/test/pir/pir2.header
1706
%%DATADIR%%/test/pir/pir2.names
1707
%%DATADIR%%/test/pir/pir2.numbers
1708
%%DATADIR%%/test/pir/pir2.offset
1709
%%DATADIR%%/test/pir/pir2.ref
1710
%%DATADIR%%/test/pir/pir2.seq
1711
%%DATADIR%%/test/pir/pir3.header
1712
%%DATADIR%%/test/pir/pir3.names
1713
%%DATADIR%%/test/pir/pir3.numbers
1714
%%DATADIR%%/test/pir/pir3.offset
1715
%%DATADIR%%/test/pir/pir3.ref
1716
%%DATADIR%%/test/pir/pir3.seq
1717
%%DATADIR%%/test/pir/pir4.header
1718
%%DATADIR%%/test/pir/pir4.names
1719
%%DATADIR%%/test/pir/pir4.numbers
1720
%%DATADIR%%/test/pir/pir4.offset
1721
%%DATADIR%%/test/pir/pir4.ref
1722
%%DATADIR%%/test/pir/pir4.seq
1723
%%DATADIR%%/test/swiss/seq.dat
1724
%%DATADIR%%/test/swiss/acnum.hit
1725
%%DATADIR%%/test/swiss/acnum.trg
1726
%%DATADIR%%/test/swiss/division.lkp
1727
%%DATADIR%%/test/swiss/entrynam.idx
1728
%%DATADIR%%/test/swiss/seqvn.hit
1729
%%DATADIR%%/test/swiss/seqvn.trg
1730
%%DATADIR%%/test/swiss/des.hit
1731
%%DATADIR%%/test/swiss/des.trg
1732
%%DATADIR%%/test/swiss/keyword.hit
1733
%%DATADIR%%/test/swiss/keyword.trg
1734
%%DATADIR%%/test/swiss/taxon.hit
1735
%%DATADIR%%/test/swiss/taxon.trg
1736
%%DATADIR%%/test/swnew/acnum.hit
1737
%%DATADIR%%/test/swnew/acnum.trg
1738
%%DATADIR%%/test/swnew/division.lkp
1739
%%DATADIR%%/test/swnew/entrynam.idx
1740
%%DATADIR%%/test/swnew/seqvn.hit
1741
%%DATADIR%%/test/swnew/seqvn.trg
1742
%%DATADIR%%/test/swnew/des.hit
1743
%%DATADIR%%/test/swnew/des.trg
1744
%%DATADIR%%/test/swnew/keyword.hit
1745
%%DATADIR%%/test/swnew/keyword.trg
1746
%%DATADIR%%/test/swnew/taxon.hit
1747
%%DATADIR%%/test/swnew/taxon.trg
1748
%%DATADIR%%/test/swnew/new_seq.dat
1749
%%DATADIR%%/test/swnew/upd_ann.dat
1750
%%DATADIR%%/test/swnew/upd_seq.dat
1751
%%DATADIR%%/test/wormpep/wormpep
1752
%%DATADIR%%/test/wormpep/acnum.hit
1753
%%DATADIR%%/test/wormpep/acnum.trg
1754
%%DATADIR%%/test/wormpep/division.lkp
1755
%%DATADIR%%/test/wormpep/entrynam.idx
1756
%%DATADIR%%/test/wormpep/des.hit
1757
%%DATADIR%%/test/wormpep/des.trg
1758
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/DragTree.html
1759
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.PopupListener.html
1760
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileEditorDisplay.html
1761
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileNode.html
1762
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree/FileSaving.html
1763
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/BuildJembossForm.html
1764
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/ListFilePanel.html
1765
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SectionPanel.html
1766
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetInFileCard.html
1767
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/SetOutFileCard.html
1768
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.DecimalNumberDocument.html
1769
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldFloat.html
1770
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.WholeNumberDocument.html
1771
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldInt.html
1772
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/TextFieldSink.html
1773
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.html
1774
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form/JembossComboPopup.myComboUI.html
1775
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.html
1776
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/FileChooser.html
1777
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.html
1778
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.html
1779
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.html
1780
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.html
1781
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Database.html
1782
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.HorizontalMenu.html
1783
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/ProgList.html
1784
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup/Splash.html
1785
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/BuildProgramMenu.html
1786
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ResultsMenuBar.html
1787
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SetUpMenuBar.html
1788
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowResultSet.html
1789
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/ShowSavedResults.html
1790
%%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/SwingWorker.html
1791
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationFields.html
1792
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd/ApplicationParam.html
1793
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdFunResolve.html
1794
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/AcdVarResolve.html
1795
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Ajax.html
1796
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/Dependent.html
1797
%%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/ParseAcd.html
1798
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/JembossProcess.html
1799
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ListFile.html
1800
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/ResultList.html
1801
%%DATADIR%%/jemboss/api/org/emboss/jemboss/programs/RunEmbossApplication.html
1802
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/AuthPopup.html
1803
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/CallAjax.html
1804
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/GetWossname.html
1805
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossRun.html
1806
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/JembossSoapException.html
1807
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PendingResults.html
1808
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/PrivateRequest.html
1809
%%DATADIR%%/jemboss/api/org/emboss/jemboss/soap/ResListView.html
1810
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.html
1811
%%DATADIR%%/jemboss/api/org/emboss/jemboss/Jemboss.winExit.html
1812
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossLogo.html
1813
%%DATADIR%%/jemboss/api/org/emboss/jemboss/JembossParams.html
1814
%%DATADIR%%/jemboss/api/allclasses-frame.html
1815
%%DATADIR%%/jemboss/api/deprecated-list.html
1816
%%DATADIR%%/jemboss/api/getClasses.pl
1817
%%DATADIR%%/jemboss/api/help-doc.html
1818
%%DATADIR%%/jemboss/api/index-all.html
1819
%%DATADIR%%/jemboss/api/index.html
1820
%%DATADIR%%/jemboss/api/makeDocs.csh
1821
%%DATADIR%%/jemboss/api/overview-tree.html
1822
%%DATADIR%%/jemboss/api/package-list
1823
%%DATADIR%%/jemboss/api/packages.html
1824
%%DATADIR%%/jemboss/api/serialized-form.html
1825
%%DATADIR%%/jemboss/api/stylesheet.css
1826
%%DATADIR%%/jemboss/images/Backward_arrow_button.gif
1827
%%DATADIR%%/jemboss/images/Forward_arrow_button.gif
1828
%%DATADIR%%/jemboss/images/Go_button.gif
1829
%%DATADIR%%/jemboss/images/Information_button.gif
1830
%%DATADIR%%/jemboss/images/Jemboss_logo_greyback.gif
1831
%%DATADIR%%/jemboss/images/Jemboss_logo_large.gif
1832
%%DATADIR%%/jemboss/images/Jemboss_logo_small.gif
1833
%%DATADIR%%/jemboss/images/Job_manager_button.gif
1834
%%DATADIR%%/jemboss/images/Refresh_button.gif
1835
%%DATADIR%%/jemboss/images/Refresh_button2.gif
1836
%%DATADIR%%/jemboss/lib/axis/axis-ant.jar
1837
%%DATADIR%%/jemboss/lib/axis/axis.jar
1838
%%DATADIR%%/jemboss/lib/axis/commons-discovery.jar
1839
%%DATADIR%%/jemboss/lib/axis/commons-logging.jar
1840
%%DATADIR%%/jemboss/lib/axis/jaxrpc.jar
1841
%%DATADIR%%/jemboss/lib/axis/log4j-1.2.8.jar
1842
%%DATADIR%%/jemboss/lib/axis/saaj.jar
1843
%%DATADIR%%/jemboss/lib/axis/servlet.jar
1844
%%DATADIR%%/jemboss/lib/axis/wsdl4j.jar
1845
%%DATADIR%%/jemboss/lib/README
1846
%%DATADIR%%/jemboss/lib/activation.jar
1847
%%DATADIR%%/jemboss/lib/jakarta-regexp-1.2.jar
1848
%%DATADIR%%/jemboss/lib/mail.jar
1849
%%DATADIR%%/jemboss/lib/xerces.jar
1850
%%DATADIR%%/jemboss/lib/jalview.jar
1851
%%DATADIR%%/jemboss/lib/JembossPrintAlignment.jar
1852
%%DATADIR%%/jemboss/lib/grout.jar
1853
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignApplet.java
1854
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequenceJPanel.java
1855
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/AlignJFrame.java
1856
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Matrix.java
1857
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourJFrame.java
1858
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/MatrixJFrame.java
1859
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourMenu.java
1860
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PatternJFrame.java
1861
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ColourPanel.java
1862
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PlotConsensus.java
1863
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Consensus.java
1864
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrettyPlotJFrame.java
1865
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/ConsensusOptions.java
1866
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignmentImage.java
1867
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GraphicSequenceCollection.java
1868
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintAlignment.java
1869
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Paste.java
1870
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameEvent.java
1871
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/Sequence.java
1872
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrame.java
1873
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceJPanel.java
1874
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutAlignJFrameListener.java
1875
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceNameJButton.java
1876
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionEvent.java
1877
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceProperties.java
1878
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollection.java
1879
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceReader.java
1880
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutGraphicSequenceCollectionListener.java
1881
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/SequenceSaver.java
1882
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/GroutSequence.java
1883
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/IDTableJFrame.java
1884
%%DATADIR%%/jemboss/org/emboss/jemboss/editor/PrintableJTable.java
1885
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Block.java
1886
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/PrintDNAImage.java
1887
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/DNADraw.java
1888
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/RestrictionEnzyme.java
1889
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/EmbossCirdnaReader.java
1890
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Ticks.java
1891
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/GeneticMarker.java
1892
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/Wizard.java
1893
%%DATADIR%%/jemboss/org/emboss/jemboss/draw/LineAttribute.java
1894
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/Graph2DPlot.java
1895
%%DATADIR%%/jemboss/org/emboss/jemboss/graphics/PrintPlot.java
1896
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/DragTree.java
1897
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileEditorDisplay.java
1898
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileNode.java
1899
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSave.java
1900
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/FileSaving.java
1901
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteDragTree.java
1902
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileNode.java
1903
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/RemoteFileTreePanel.java
1904
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalAndRemoteFileTreeFrame.java
1905
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree/LocalTreeToolBar.java
1906
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/BuildJembossForm.java
1907
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ListFilePanel.java
1908
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SectionPanel.java
1909
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetInFileCard.java
1910
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/SetOutFileCard.java
1911
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldFloat.java
1912
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldInt.java
1913
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/TextFieldSink.java
1914
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/JembossComboPopup.java
1915
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/MultiLineToolTipUI.java
1916
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/PlafMacros.java
1917
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ReportFormat.java
1918
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/AlignFormat.java
1919
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/ApplicationNamePanel.java
1920
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/LabelTextBox.java
1921
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/form/Separator.java
1922
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/CutNPasteTextArea.java
1923
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/FileChooser.java
1924
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/InputSequenceAttributes.java
1925
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/OutputSequenceAttributes.java
1926
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/SequenceFilter.java
1927
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser/TextAreaSink.java
1928
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/Database.java
1929
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup/ProgList.java
1930
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/AdvancedOptions.java
1931
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ResultsMenuBar.java
1932
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowResultSet.java
1933
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/BuildProgramMenu.java
1934
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceData.java
1935
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ShowSavedResults.java
1936
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/LaunchJalView.java
1937
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SequenceList.java
1938
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SwingWorker.java
1939
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/MemoryComboBox.java
1940
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SetUpMenuBar.java
1941
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Browser.java
1942
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/SplashThread.java
1943
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ScrollPanel.java
1944
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/ImageIconJPanel.java
1945
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/Favorites.java
1946
%%DATADIR%%/jemboss/org/emboss/jemboss/gui/KeywordSearch.java
1947
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationFields.java
1948
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd/ApplicationParam.java
1949
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdFunResolve.java
1950
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVariableResolve.java
1951
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AcdVarResolve.java
1952
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Ajax.java
1953
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/AjaxUtil.java
1954
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/Dependent.java
1955
%%DATADIR%%/jemboss/org/emboss/jemboss/parser/ParseAcd.java
1956
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/BatchUpdateTimer.java
1957
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/JembossProcess.java
1958
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ListFile.java
1959
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultList.java
1960
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/ResultsUpdateTimer.java
1961
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication.java
1962
%%DATADIR%%/jemboss/org/emboss/jemboss/programs/RunEmbossApplication2.java
1963
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossServer.java
1964
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileServer.java
1965
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossThread.java
1966
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossAuthServer.java
1967
%%DATADIR%%/jemboss/org/emboss/jemboss/server/JembossFileAuthServer.java
1968
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPublicServer.java
1969
%%DATADIR%%/jemboss/org/emboss/jemboss/server/TestPrivateServer.java
1970
%%DATADIR%%/jemboss/org/emboss/jemboss/server/AppendToLogFileThread.java
1971
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/AuthPopup.java
1972
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossSoapException.java
1973
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/CallAjax.java
1974
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PendingResults.java
1975
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetWossname.java
1976
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PrivateRequest.java
1977
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/JembossRun.java
1978
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ServerSetup.java
1979
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileRoots.java
1980
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/FileList.java
1981
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/PublicRequest.java
1982
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetACD.java
1983
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/GetHelp.java
1984
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/ShowDB.java
1985
%%DATADIR%%/jemboss/org/emboss/jemboss/soap/MakeFileSafe.java
1986
%%DATADIR%%/jemboss/org/emboss/jemboss/Jemboss.java
1987
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossLogo.java
1988
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossParams.java
1989
%%DATADIR%%/jemboss/org/emboss/jemboss/JembossJarUtil.java
1990
%%DATADIR%%/jemboss/resources/jemboss.properties
1991
%%DATADIR%%/jemboss/resources/readme.html
1992
%%DATADIR%%/jemboss/resources/readmeAlign.html
1993
%%DATADIR%%/jemboss/resources/readmeDNADraw.html
1994
%%DATADIR%%/jemboss/resources/results.html
1995
%%DATADIR%%/jemboss/resources/version
1996
%%DATADIR%%/jemboss/resources/filemgr.html
1997
%%DATADIR%%/jemboss/resources/seqList.html
1998
%%DATADIR%%/jemboss/utils/install-jemboss-server.sh
1999
%%DATADIR%%/jemboss/utils/keys.sh
2000
%%DATADIR%%/jemboss/utils/makeJar.csh
2001
%%DATADIR%%/jemboss/utils/makeJNLP.sh
2002
%%DATADIR%%/jemboss/utils/makeFileManagerJNLP.sh
2003
%%DATADIR%%/jemboss/utils/template.html
2004
%%DATADIR%%/jemboss/utils/README
2005
%%DATADIR%%/jemboss/LICENSE
2006
%%DATADIR%%/jemboss/readme.html
2007
%%DATADIR%%/jemboss/runJemboss.sh
2008
%%DATADIR%%/jemboss/README
2009
%%PORTDOCS%%@dirrm %%DOCSDIR%%/manuals
1931
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/html
2010
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/html
2011
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs/text
1932
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs
2012
%%PORTDOCS%%@dirrm %%DOCSDIR%%/programs
1933
%%PORTDOCS%%@dirrm %%DOCSDIR%%/manuals
2013
%%PORTDOCS%%@dirrm %%DOCSDIR%%/tutorials
1934
%%PORTDOCS%%@dirrm %%DOCSDIR%%
2014
%%PORTDOCS%%@dirrm %%DOCSDIR%%
1935
@dirrm %%DATADIR%%/test/wormpep
2015
@dirrm %%DATADIR%%/acd
1936
@dirrm %%DATADIR%%/test/swnew
2016
@dirrm %%DATADIR%%/data/AAINDEX
1937
@dirrm %%DATADIR%%/test/swiss
2017
@dirrm %%DATADIR%%/data/CODONS
1938
@dirrm %%DATADIR%%/test/pir
2018
@dirrm %%DATADIR%%/data/REBASE
2019
@dirrm %%DATADIR%%/data/PRINTS
2020
@dirrm %%DATADIR%%/data/PROSITE
2021
@dirrmtry %%DATADIR%%/data
2022
@dirrm %%DATADIR%%/test/data
2023
@dirrm %%DATADIR%%/test/embl
1939
@dirrm %%DATADIR%%/test/genbank
2024
@dirrm %%DATADIR%%/test/genbank
1940
@dirrm %%DATADIR%%/test/gb
2025
@dirrm %%DATADIR%%/test/gb
1941
@dirrm %%DATADIR%%/test/embl
2026
@dirrm %%DATADIR%%/test/pir
1942
@dirrm %%DATADIR%%/test/data
2027
@dirrm %%DATADIR%%/test/swiss
2028
@dirrm %%DATADIR%%/test/swnew
2029
@dirrm %%DATADIR%%/test/wormpep
1943
@dirrm %%DATADIR%%/test
2030
@dirrm %%DATADIR%%/test
1944
@dirrm %%DATADIR%%/jemboss/utils
1945
@dirrm %%DATADIR%%/jemboss/resources
1946
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/soap
1947
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/server
1948
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/programs
1949
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd
1950
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser
1951
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup
1952
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser
1953
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/form
1954
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree
1955
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui
1956
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/graphics
1957
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/editor
1958
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/draw
1959
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss
1960
@dirrm %%DATADIR%%/jemboss/org/emboss
1961
@dirrm %%DATADIR%%/jemboss/org
1962
@dirrm %%DATADIR%%/jemboss/lib/axis
1963
@dirrm %%DATADIR%%/jemboss/lib
1964
@dirrm %%DATADIR%%/jemboss/images
1965
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/soap
1966
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/programs
1967
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd
1968
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser
1969
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup
1970
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser
1971
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form
1972
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree
2031
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/filetree
2032
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/form
2033
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/sequenceChooser
2034
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui/startup
1973
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui
2035
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/gui
2036
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser/acd
2037
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/parser
2038
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/programs
2039
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss/soap
1974
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss
2040
@dirrm %%DATADIR%%/jemboss/api/org/emboss/jemboss
1975
@dirrm %%DATADIR%%/jemboss/api/org/emboss
2041
@dirrm %%DATADIR%%/jemboss/api/org/emboss
1976
@dirrm %%DATADIR%%/jemboss/api/org
2042
@dirrm %%DATADIR%%/jemboss/api/org
1977
@dirrm %%DATADIR%%/jemboss/api
2043
@dirrm %%DATADIR%%/jemboss/api
2044
@dirrm %%DATADIR%%/jemboss/images
2045
@dirrm %%DATADIR%%/jemboss/lib/axis
2046
@dirrm %%DATADIR%%/jemboss/lib
2047
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/editor
2048
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/draw
2049
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/graphics
2050
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/filetree
2051
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/form
2052
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/sequenceChooser
2053
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui/startup
2054
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/gui
2055
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser/acd
2056
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/parser
2057
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/programs
2058
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/server
2059
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss/soap
2060
@dirrm %%DATADIR%%/jemboss/org/emboss/jemboss
2061
@dirrm %%DATADIR%%/jemboss/org/emboss
2062
@dirrm %%DATADIR%%/jemboss/org
2063
@dirrm %%DATADIR%%/jemboss/resources
2064
@dirrm %%DATADIR%%/jemboss/utils
1978
@dirrm %%DATADIR%%/jemboss
2065
@dirrm %%DATADIR%%/jemboss
1979
@dirrm %%DATADIR%%/data/REBASE
2066
@dirrmtry %%DATADIR%%
1980
@dirrm %%DATADIR%%/data/PROSITE
2067
@dirrmtry bin
1981
@dirrm %%DATADIR%%/data/PRINTS
2068
@dirrmtry include
1982
@dirrm %%DATADIR%%/data/CODONS
2069
@dirrmtry lib
1983
@dirrm %%DATADIR%%/data/AAINDEX
2070
@dirrmtry share/doc
1984
@dirrm %%DATADIR%%/data
2071
@dirrmtry share
1985
@dirrm %%DATADIR%%/acd
2072
1986
@dirrm %%DATADIR%%

Return to bug 93053