summaryrefslogtreecommitdiff
path: root/academic/EMBOSS/patch-1-21
diff options
context:
space:
mode:
Diffstat (limited to 'academic/EMBOSS/patch-1-21')
-rw-r--r--academic/EMBOSS/patch-1-217232
1 files changed, 7232 insertions, 0 deletions
diff --git a/academic/EMBOSS/patch-1-21 b/academic/EMBOSS/patch-1-21
new file mode 100644
index 0000000000..cb182c65c8
--- /dev/null
+++ b/academic/EMBOSS/patch-1-21
@@ -0,0 +1,7232 @@
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/ajaxdb/ajtextdb.c EMBOSS-6.4.0/ajax/ajaxdb/ajtextdb.c
+*** EMBOSS-6.4.0old/ajax/ajaxdb/ajtextdb.c 2011-07-06 17:09:36.000000000 +0100
+--- EMBOSS-6.4.0/ajax/ajaxdb/ajtextdb.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 2580,2588 ****
+ {
+ field = ajListIterGet(iter);
+
+! if(!nfields)
+! ajStrAppendK(&textin->Filename, '+');
+! else
+ {
+ switch(field->Link)
+ {
+--- 2580,2586 ----
+ {
+ field = ajListIterGet(iter);
+
+! if(nfields)
+ {
+ switch(field->Link)
+ {
+***************
+*** 2684,2692 ****
+ {
+ field = ajListIterGet(iter);
+
+! if(!nfields)
+! ajStrAppendK(&textin->Filename, '+');
+! else
+ {
+ switch(field->Link)
+ {
+--- 2682,2688 ----
+ {
+ field = ajListIterGet(iter);
+
+! if(nfields)
+ {
+ switch(field->Link)
+ {
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajarch.h EMBOSS-6.4.0/ajax/core/ajarch.h
+*** EMBOSS-6.4.0old/ajax/core/ajarch.h 2011-06-08 11:35:28.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajarch.h 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 137,143 ****
+
+ #ifdef WIN32
+ typedef int ajint;
+! typedef long ajlong; /* May need to make this long long. */
+ typedef unsigned int ajuint;
+ typedef short ajshort;
+ typedef unsigned short ajushort;
+--- 137,143 ----
+
+ #ifdef WIN32
+ typedef int ajint;
+! typedef long long ajlong;
+ typedef unsigned int ajuint;
+ typedef short ajshort;
+ typedef unsigned short ajushort;
+***************
+*** 159,162 ****
+ AJ_END_DECLS
+
+ #endif
+-
+--- 159,161 ----
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajfeatread.c EMBOSS-6.4.0/ajax/core/ajfeatread.c
+*** EMBOSS-6.4.0old/ajax/core/ajfeatread.c 2011-07-07 17:37:21.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajfeatread.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 3035,3041 ****
+ AjPStr TvString = NULL;
+ AjPStr tmptag = NULL;
+ AjBool grpset = ajFalse;
+!
+ /*ajDebug("featGff3oldProcessTagval '%S'\n",
+ groupfield); */
+
+--- 3035,3042 ----
+ AjPStr TvString = NULL;
+ AjPStr tmptag = NULL;
+ AjBool grpset = ajFalse;
+! AjBool escapedquote = ajFalse;
+!
+ /*ajDebug("featGff3oldProcessTagval '%S'\n",
+ groupfield); */
+
+***************
+*** 3050,3061 ****
+--- 3051,3069 ----
+ */
+
+ ajStrAssignS(&TvString, groupfield);
++ if(ajStrFindC(TvString, "\\\"") >= 0)
++ {
++ escapedquote = ajTrue;
++ ajStrExchangeCC(&TvString, "\\\"", "\001");
++ }
++
+ while(ajStrGetLen(TvString))
+ {
+ if(ajRegExec(Gff3oldRegexTvTagval, TvString))
+ {
+ ajRegSubI(Gff3oldRegexTvTagval, 1, &tmptag);
+ ajRegSubI(Gff3oldRegexTvTagval, 2, &featinValTmp);
++
+ ajStrTrimWhite(&featinValTmp);
+ /*ajDebug("Gff3Tv '%S' '%S'\n", tmptag, featinValTmp);*/
+ ajRegPost(Gff3oldRegexTvTagval, &TvString);
+***************
+*** 3076,3081 ****
+--- 3084,3091 ----
+ featFlagSet(gf, featinValTmp);
+ else
+ {
++ if(escapedquote)
++ ajStrExchangeCC(&featinValTmp, "\001", "\"");
+ /*ajDebug("GFF3 before QuoteStrip: '%S'\n", featinValTmp);*/
+ ajStrQuoteStrip(&featinValTmp);
+ /*ajDebug(" GFF3 after QuoteStrip: '%S'\n", featinValTmp);*/
+***************
+*** 5896,5903 ****
+ Gff3Regexdirective = ajRegCompC("^##(.*)");
+ Gff3Regexcomment = ajRegCompC("^#(.*)");
+ Gff3RegexTvTagval = ajRegCompC(" *([^ =]+)[ =]([^;]+)*(;|$)"); /* "tag name */
+! Gff3oldRegexTvTagval = ajRegCompC(" *([^ =]+)[ =]((\"(\\.|[^\\\"])*\"|"
+! "[^;]+)*)(;|$)"); /* "tag name */
+
+ FeatInitGff3 = ajTrue;
+
+--- 5906,5913 ----
+ Gff3Regexdirective = ajRegCompC("^##(.*)");
+ Gff3Regexcomment = ajRegCompC("^#(.*)");
+ Gff3RegexTvTagval = ajRegCompC(" *([^ =]+)[ =]([^;]+)*(;|$)"); /* "tag name */
+! Gff3oldRegexTvTagval = ajRegCompC(" *([^ =]+)[ =](\"[^\"]*\"|"
+! "[^;]+)(;|$)"); /* "tag name */
+
+ FeatInitGff3 = ajTrue;
+
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajfeatwrite.c EMBOSS-6.4.0/ajax/core/ajfeatwrite.c
+*** EMBOSS-6.4.0old/ajax/core/ajfeatwrite.c 2011-06-23 11:56:06.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajfeatwrite.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 4134,4140 ****
+ tmpid = owner->Seqid;
+
+ if(thys->Score)
+! ajFmtPrintF(file, "%S\t%S\t%S\t%d\t%d\t%.3f\t%c\t%c\t",
+ tmpid,
+ thys->Source,
+ outtyp,
+--- 4134,4140 ----
+ tmpid = owner->Seqid;
+
+ if(thys->Score)
+! ajFmtPrintF(file, "%S\t%S\t%S\t%d\t%d\t%.3g\t%c\t%c\t",
+ tmpid,
+ thys->Source,
+ outtyp,
+***************
+*** 4215,4220 ****
+--- 4215,4221 ----
+ while(!ajListIterDone(iter))
+ {
+ tv = ajListIterGet(iter);
++ ajStrFmtLower(&tv->Tag);
+ outtag = tv->Tag;
+
+ if(!outtag)
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajfmt.c EMBOSS-6.4.0/ajax/core/ajfmt.c
+*** EMBOSS-6.4.0old/ajax/core/ajfmt.c 2011-05-16 11:31:26.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajfmt.c 2011-09-05 12:24:01.000000000 +0100
+***************
+*** 50,55 ****
+--- 50,65 ----
+ #include "ajax.h"
+
+
++ #define EVF_PERCENT 1
++ #define EVF_NOCON 2
++ #define EVF_LONG 4
++ #define EVF_AJLONG 8
++ #define EVF_UNSIGNED 16
++ #define EVF_NEGATE 32
++
++ #define EVF_BUF 128
++
++
+ typedef void (*Fmt_T) (ajint code, VALIST ap,
+ int put(int c, void *cl), void *cl,
+ const ajuint* flags, ajint width, ajint precision);
+***************
+*** 148,153 ****
+--- 158,165 ----
+ static void cvt_u(ajint code, VALIST ap, int put(int c, void* cl), void* cl,
+ const ajuint* flags, ajint width, ajint precision);
+
++ static ajint evfscanf(FILE *stream, const char *fmt, va_list ap);
++
+
+
+
+***************
+*** 2290,2296 ****
+ __va_copy(save_ap,ap);
+ #endif
+
+! n = fscanf(file,fmt,ap);
+
+ #if defined(__amd64__) || defined(__EM64T__) || \
+ defined(__PPC__) && defined(_CALL_SYSV)
+--- 2302,2308 ----
+ __va_copy(save_ap,ap);
+ #endif
+
+! n = evfscanf(file,fmt,ap);
+
+ #if defined(__amd64__) || defined(__EM64T__) || \
+ defined(__PPC__) && defined(_CALL_SYSV)
+***************
+*** 2306,2311 ****
+--- 2318,2836 ----
+
+
+
++ /* @funcstatic evfscanf *******************************************************
++ **
++ ** EMBOSS version of C99 vfscanf() including %S conversion
++ **
++ ** @param [r] stream [FILE*] file pointer.
++ ** @param [r] fmt [const char*] Format string.
++ ** @param [v] ap [va_list] Variable length argument list
++ ** @return [ajint] number of successful conversions
++ **
++ ** @release 6.4.0
++ ** @@
++ ******************************************************************************/
++
++ static ajint evfscanf(FILE *stream, const char *fmt, va_list ap)
++ {
++ char fch = '\0';
++ int ipc = 0;
++ int tpc = 0;
++
++ ajuint uflags = 0;
++ ajint nconv = 0;
++ ajint width = 0;
++ AjBool fin = ajFalse;
++ AjBool idone = ajFalse;
++
++ ajulong sum = 0L;
++
++ ajuint nread = 0;
++ ajint ret = EOF;
++ ajint base = 10;
++
++ char *p = NULL;
++ char fchars[] = "0123456789Ee.";
++
++ char buf[EVF_BUF];
++
++ AjPStr *str = NULL;
++
++ union
++ {
++ ajlong L;
++ long l;
++ unsigned long ul;
++ ajulong uL;
++ ajint i;
++ ajuint u;
++ char *c;
++ double d;
++ } val;
++
++
++ if(feof(stream))
++ return EOF;
++
++ val.ul = 0L;
++
++ while((fch = *fmt))
++ {
++ ++fmt;
++
++
++ if(uflags & EVF_PERCENT)
++ {
++ /* If %% has been given then do a simple match */
++ if(fch == '%')
++ {
++ uflags &= ~EVF_PERCENT;
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++sum;
++
++ if(ipc != (int) fch)
++ break;
++
++ continue;
++ }
++
++ /* Now in the realm of format specifiers */
++ /* First test for any width */
++
++ if(fch >= '0' && fch <= '0')
++ {
++ fch -= '0';
++
++ if(width == INT_MAX)
++ width = 0;
++ else
++ width *= 10;
++
++ width += (ajint) fch;
++
++ continue;
++ }
++
++ if((char) fch != 'S')
++ fch = tolower(fch);
++
++ switch(fch)
++ {
++ case '*':
++ uflags |= EVF_NOCON;
++ continue;
++
++ case 'n':
++ if(!(uflags & EVF_NOCON))
++ *(va_arg(ap, ajint *)) = (ajint) sum;
++
++ break;
++
++ case 'c':
++ if(!(uflags & EVF_NOCON))
++ val.c = va_arg(ap, char *);
++
++ if(width == INT_MAX)
++ width = 1;
++
++ while(width-- > 0)
++ {
++ if((ipc = getc(stream)) == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ ++nread;
++
++ if(!(uflags & EVF_NOCON))
++ *val.c++ = (char) ipc;
++ }
++
++ break;
++
++ case 'h': /* ANSI C converts shorts to ints */
++ continue;
++
++ case 'l':
++ uflags |= EVF_LONG;
++ continue;
++
++ case 'L':
++ uflags |= EVF_AJLONG;
++ continue;
++
++ case 's':
++ if(!(uflags & EVF_NOCON))
++ val.c = va_arg(ap, char *);
++
++ do
++ {
++ ipc = getc(stream);
++ ++sum;
++ } while(isspace(ipc));
++
++ if(ipc == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ while(width-- > 0)
++ {
++ if(isspace(ipc))
++ {
++ ungetc(ipc, stream);
++ --sum;
++ break;
++ }
++
++ if(!(uflags & EVF_NOCON))
++ *val.c++ = (char) ipc;
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++nread;
++ }
++
++ if(!(uflags & EVF_NOCON))
++ *val.c = '\0';
++
++ break;
++
++ case 'S':
++ if(!(uflags & EVF_NOCON))
++ {
++ str = (AjPStr *) va_arg(ap, AjPStr *);
++ ajStrAssignC(str,"");
++ }
++
++ do
++ {
++ ipc = getc(stream);
++ ++sum;
++ } while(isspace(ipc));
++
++ if(ipc == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ while(width-- > 0)
++ {
++ if(isspace(ipc))
++ {
++ ungetc(ipc, stream);
++ --sum;
++ break;
++ }
++
++ if(!(uflags & EVF_NOCON))
++ ajStrAppendK(str, (char) ipc);
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++nread;
++ }
++
++ break;
++
++ case 'o':
++ base = 8;
++ /* Fallthrough */
++ case 'x':
++ if(base == 10) /* To protect fallthrough from octal */
++ base = 16;
++ /* Fallthrough */
++ case 'u':
++ uflags |= EVF_UNSIGNED;
++ /* Fallthrough */
++ case 'd':
++ case 'i':
++ do
++ {
++ ipc = getc(stream);
++ ++sum;
++ } while(isspace(ipc));
++
++ if(ipc == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ if((char) ipc == '+' || (char) ipc == '-')
++ {
++ if(--width <= 0)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ if((char) ipc == '-')
++ uflags |= EVF_NEGATE;
++
++ if((ipc = getc(stream)) == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ ++sum;
++ }
++
++ idone = ajFalse;
++ val.uL = 0;
++
++ if((char) ipc == '0')
++ {
++ if(--width <= 0)
++ idone = ajTrue;
++
++ if(!idone)
++ if((ipc = getc(stream)) == EOF)
++ idone = ajTrue;
++
++ if((char) tolower(ipc) == 'x' && !idone)
++ {
++ if(fch == 'o' || fch == 'd' || fch == 'u')
++ {
++ /* Invalid 0x */
++ ungetc(ipc, stream);
++ idone = ajTrue;
++ }
++
++ if(!idone)
++ base = 16;
++
++ if(!idone)
++ {
++ if((ipc = getc(stream)) == EOF)
++ idone = ajTrue;
++ else
++ ++sum;
++ }
++ }
++ else if(fch == 'i' && !idone)
++ base = 8;
++ }
++
++ ++nread;
++
++ for(;!idone;)
++ {
++ tpc = tolower(ipc);
++
++ tpc -= '0';
++
++ if(tpc > 9)
++ {
++ tpc += '0';
++ tpc -= 'a';
++
++ if(tpc >= 0)
++ tpc += 10;
++ }
++
++ if(tpc < 0 || tpc >= base)
++ {
++ ungetc(ipc, stream);
++ --nread;
++ break;
++ }
++
++ val.uL *= base;
++ val.uL += tpc;
++
++ if(--width <= 0)
++ break;
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++nread;
++ }
++
++ if((uflags & EVF_NEGATE) && !idone)
++ val.L = -val.L;
++
++ if(!(uflags & EVF_NOCON))
++ {
++ if((uflags & (EVF_UNSIGNED | EVF_AJLONG)) ==
++ (EVF_UNSIGNED | EVF_AJLONG))
++ *(va_arg(ap, ajulong *)) = val.uL;
++ else if(uflags & (EVF_AJLONG))
++ *(va_arg(ap, ajlong *)) = val.L;
++ else if((uflags & (EVF_UNSIGNED | EVF_LONG)) ==
++ (EVF_UNSIGNED | EVF_LONG))
++ *(va_arg(ap, unsigned long *)) = val.ul;
++ else if(uflags & (EVF_LONG))
++ *(va_arg(ap, long *)) = val.l;
++ else if(uflags & (EVF_UNSIGNED))
++ *(va_arg(ap, ajuint *)) = val.u;
++ else
++ *(va_arg(ap, ajint *)) = val.i;
++ }
++
++ break;
++
++ case 'e':
++ case 'f':
++ case 'g':
++ do
++ {
++ ipc = getc(stream);
++ ++sum;
++ } while(isspace(ipc));
++
++ if(ipc == EOF)
++ {
++ --sum;
++ fin = ajTrue;
++ break;
++ }
++
++ if((char) ipc == '+' || (char) ipc == '-')
++ {
++ if((char) ipc == '-')
++ uflags |= EVF_NEGATE;
++
++ if((ipc = getc(stream)) == EOF)
++ {
++ fin = ajTrue;
++ break;
++ }
++
++ ++sum;
++ }
++
++ val.d = 0.0;
++
++ ++nread;
++
++ for(p = buf; p < buf + EVF_BUF - 1 && width >0; --width)
++ {
++ if(!strchr(fchars, ipc))
++ {
++ ungetc(ipc, stream);
++ --nread;
++ break;
++ }
++
++ if((char) ipc == 'e' || (char) ipc == 'E')
++ {
++ fchars[10] = '\0';
++ *p++ = (char) ipc;
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++nread;
++
++ if((char) ipc != '+' && (char) ipc != '-')
++ continue;
++ }
++ else if((char) ipc == '.')
++ fchars[12] = '\0';
++
++ *p++ = (char) ipc;
++
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++nread;
++ }
++
++ *p++ = '\0';
++
++ val.d = strtod(buf, 0);
++
++ if(uflags & EVF_NEGATE)
++ val.d = -val.d;
++
++ fchars[10] = 'E';
++ fchars[12] = '.';
++
++ *(va_arg(ap, double *)) = val.d;
++
++ break;
++ }
++
++ if(fin)
++ break;
++
++ if(nread)
++ {
++ if(!(uflags & EVF_NOCON))
++ ++nconv;
++
++ ret = 0;
++ sum += nread;
++ }
++ else if(fch != 'n' || ipc == EOF)
++ break;
++
++ uflags = 0;
++ }
++ else if(fch == '%')
++ {
++ uflags = EVF_PERCENT;
++ base = 10;
++ nread = 0;
++ width = INT_MAX;
++ }
++ else if(isspace(fch))
++ {
++ do
++ {
++ ipc = getc(stream);
++ ++sum;
++ } while(isspace(ipc));
++
++ --sum;
++
++ if(ipc == EOF)
++ break;
++
++ ungetc(ipc, stream);
++ }
++ else
++ {
++ if((ipc = getc(stream)) == EOF)
++ break;
++
++ ++sum;
++
++ if(ipc != (int) fch)
++ break;
++ }
++
++ }
++
++ if((uflags & EVF_PERCENT) && nread)
++ {
++ if(!(uflags & EVF_NOCON))
++ ++nconv;
++
++ ret = 0;
++ }
++
++ if(ipc == EOF && nconv == 0)
++ return ret;
++
++
++ return nconv;
++ }
++
++
++
++
+ /* @funcstatic fmtVscan *******************************************************
+ **
+ ** Scan a string according to fmt and load the va_list variable pointers
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajnam.c EMBOSS-6.4.0/ajax/core/ajnam.c
+*** EMBOSS-6.4.0old/ajax/core/ajnam.c 2011-07-15 08:15:37.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajnam.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 8172,8177 ****
+--- 8172,8181 ----
+ AjBool hasmethod = ajFalse;
+ AjBool hastype = ajFalse;
+ AjPStr name = NULL;
++ AjPStr token = NULL;
++ AjPStr typetoken = NULL;
++ AjPStrTok handle = NULL;
++ AjPStrTok typehandle = NULL;
+ const AjPStr value = NULL;
+ const AjPStr dbtype = NULL;
+
+***************
+*** 8202,8210 ****
+ {
+ hasformat=ajTrue;
+
+! if(!namInformatTest(value, dbtype)) /* test: dbunknowns.rc */
+! namError("Database '%S' %S: '%S' unknown",
+! entry->name, name, value);
+ }
+
+ if(ajStrPrefixC(name, "method"))
+--- 8206,8227 ----
+ {
+ hasformat=ajTrue;
+
+! ok = ajFalse;
+! ajStrTokenAssignC(&typehandle, dbtype, " ,;");
+! ajStrTokenAssignC(&handle, value, " ,;");
+!
+! while(ajStrTokenNextParse(&typehandle, &typetoken))
+! {
+! while(ajStrTokenNextParse(&handle, &token))
+! {
+! if(namInformatTest(token, typetoken))
+! ok = ajTrue;
+! }
+! }
+!
+! if(!ok) /* test: dbunknowns.rc */
+! namError("Database '%S' %S: '%S' unknown",
+! entry->name, name, value);
+ }
+
+ if(ajStrPrefixC(name, "method"))
+***************
+*** 8221,8229 ****
+ hastype=ajTrue;
+ oktype = ajFalse;
+
+! for(k=0; namDbTypes[k].Name; k++)
+! if(ajStrMatchCaseC(value, namDbTypes[k].Name))
+! oktype = ajTrue;
+
+ if(!oktype) /* test: dbunknowns.rc */
+ namError("Database '%S' %S: '%S' unknown",
+--- 8238,8250 ----
+ hastype=ajTrue;
+ oktype = ajFalse;
+
+! ajStrTokenAssignC(&typehandle, value, " ,;");
+! while(ajStrTokenNextParse(&typehandle, &typetoken))
+! {
+! for(k=0; namDbTypes[k].Name; k++)
+! if(ajStrMatchCaseC(typetoken, namDbTypes[k].Name))
+! oktype = ajTrue;
+! }
+
+ if(!oktype) /* test: dbunknowns.rc */
+ namError("Database '%S' %S: '%S' unknown",
+***************
+*** 8260,8265 ****
+--- 8281,8290 ----
+ }
+
+ ajStrDel(&name);
++ ajStrTokenDel(&handle);
++ ajStrTokenDel(&typehandle);
++ ajStrDel(&token);
++ ajStrDel(&typetoken);
+
+ return ok;
+ }
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajnexus.c EMBOSS-6.4.0/ajax/core/ajnexus.c
+*** EMBOSS-6.4.0old/ajax/core/ajnexus.c 2011-03-16 17:14:10.000000000 +0000
+--- EMBOSS-6.4.0/ajax/core/ajnexus.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 2,24 ****
+ ** @source AJAX nexus file parsing functions
+ **
+ ** @author Copyright (C) 2003 Peter Rice
+! ** @version 1.0
+ ** @@
+ **
+ ** This library is free software; you can redistribute it and/or
+! ** modify it under the terms of the GNU Library General Public
+ ** License as published by the Free Software Foundation; either
+! ** version 2 of the License, or (at your option) any later version.
+ **
+ ** This library is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+! ** Library General Public License for more details.
+ **
+- ** You should have received a copy of the GNU Library General Public
+- ** License along with this library; if not, write to the
+- ** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- ** Boston, MA 02111-1307, USA.
+ ******************************************************************************/
+
+ #include "ajax.h"
+--- 2,26 ----
+ ** @source AJAX nexus file parsing functions
+ **
+ ** @author Copyright (C) 2003 Peter Rice
+! ** @version $Revision: 1.20 $
+! ** @modified $Date: 2011/08/09 12:03:22 $ by $Author: rice $
+ ** @@
+ **
+ ** This library is free software; you can redistribute it and/or
+! ** modify it under the terms of the GNU Lesser General Public
+ ** License as published by the Free Software Foundation; either
+! ** version 2.1 of the License, or (at your option) any later version.
+ **
+ ** This library is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+! ** Lesser General Public License for more details.
+! **
+! ** You should have received a copy of the GNU Lesser General Public
+! ** License along with this library; if not, write to the Free Software
+! ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+! ** MA 02110-1301, USA.
+ **
+ ******************************************************************************/
+
+ #include "ajax.h"
+***************
+*** 152,157 ****
+--- 154,161 ----
+ **
+ ** @param [u] buff [AjPFilebuff] Input buffered file
+ ** @return [AjPNexus] Nexus data object
++ **
++ ** @release 2.8.0
+ ** @@
+ ******************************************************************************/
+
+***************
+*** 197,202 ****
+--- 201,207 ----
+ if(!ajStrPrefixCaseC(rdline, "#NEXUS"))
+ { /* first line test */
+ ajFilebuffReset(buff);
++ ajStrDel(&rdline);
+
+ return NULL;
+ }
+***************
+*** 205,211 ****
+--- 210,219 ----
+
+ ok = ajBuffreadLine(buff, &rdline);
+ if(!ok)
++ {
++ ajStrDel(&rdline);
+ return NULL;
++ }
+
+ block = ajFalse;
+ commentlevel = 0;
+***************
+*** 254,260 ****
+--- 262,272 ----
+ else if (block && ajRegExec(endexp, rdline)) /* end line */
+ {
+ if (!nexusBlockSave(ret, blocklist, blockname))
++ {
++ ajStrDel(&rdline);
++ ajStrDel(&blockname);
+ return NULL;
++ }
+
+ ajStrAssignClear(&blockname);
+ block = ajFalse;
+***************
+*** 266,274 ****
+ if (ajStrGetLen(rdline))
+ {
+ ajListstrPushAppend(blocklist, rdline);
+ }
+-
+- rdline = NULL;
+ }
+
+ ok = ajBuffreadLine(buff, &rdline);
+--- 278,285 ----
+ if (ajStrGetLen(rdline))
+ {
+ ajListstrPushAppend(blocklist, rdline);
++ rdline = NULL;
+ }
+ }
+
+ ok = ajBuffreadLine(buff, &rdline);
+***************
+*** 277,287 ****
+ if (block)
+ {
+ ajDebug("ajNexusParse unclosed block '%S'\n", blockname);
+!
+ return NULL;
+ }
+
+ ajNexusTrace(ret);
+
+ return ret;
+ }
+--- 288,303 ----
+ if (block)
+ {
+ ajDebug("ajNexusParse unclosed block '%S'\n", blockname);
+! ajStrDel(&rdline);
+! ajStrDel(&blockname);
+ return NULL;
+ }
+
+ ajNexusTrace(ret);
++ ajStrDel(&rdline);
++ ajStrDel(&blockname);
++
++ ajListFree(&blocklist);
+
+ return ret;
+ }
+***************
+*** 295,300 ****
+--- 311,318 ----
+ **
+ ** @return [AjPNexus] New AjPNexus object
+ ** @category new [AjPNexus] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ AjPNexus ajNexusNew(void)
+***************
+*** 309,320 ****
+
+
+
+! /* @funcstatic nexusTaxaNew ***********************************************
+ **
+ ** Constructor for AjPNexusTaxa
+ **
+ ** @return [AjPNexusTaxa] New AjPNexusTaxa object
+ ** @category new [AjPNexusTaxa] Default constructor
+ ******************************************************************************/
+
+ static AjPNexusTaxa nexusTaxaNew(void)
+--- 327,340 ----
+
+
+
+! /* @funcstatic nexusTaxaNew ***************************************************
+ **
+ ** Constructor for AjPNexusTaxa
+ **
+ ** @return [AjPNexusTaxa] New AjPNexusTaxa object
+ ** @category new [AjPNexusTaxa] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusTaxa nexusTaxaNew(void)
+***************
+*** 335,340 ****
+--- 355,362 ----
+ **
+ ** @return [AjPNexusCharacters] New AjPNexusCharacters object
+ ** @category new [AjPNexusCharacters] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusCharacters nexusCharactersNew(void)
+***************
+*** 363,368 ****
+--- 385,392 ----
+ **
+ ** @return [AjPNexusUnaligned] New AjPNexusUnaligned object
+ ** @category new [AjPNexusUnaligned] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusUnaligned nexusUnalignedNew(void)
+***************
+*** 389,394 ****
+--- 413,420 ----
+ **
+ ** @return [AjPNexusDistances] New AjPNexusDistances object
+ ** @category new [AjPNexusDistances] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusDistances nexusDistancesNew(void)
+***************
+*** 409,420 ****
+
+
+
+! /* @funcstatic nexusSetsNew ***********************************************
+ **
+ ** Constructor for AjPNexusSets
+ **
+ ** @return [AjPNexusSets] New AjPNexusSets object
+ ** @category new [AjPNexusSets] Default constructor
+ ******************************************************************************/
+
+ static AjPNexusSets nexusSetsNew(void)
+--- 435,448 ----
+
+
+
+! /* @funcstatic nexusSetsNew ***************************************************
+ **
+ ** Constructor for AjPNexusSets
+ **
+ ** @return [AjPNexusSets] New AjPNexusSets object
+ ** @category new [AjPNexusSets] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusSets nexusSetsNew(void)
+***************
+*** 435,440 ****
+--- 463,470 ----
+ **
+ ** @return [AjPNexusAssumptions] New AjPNexusAssumptions object
+ ** @category new [AjPNexusAssumptions] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusAssumptions nexusAssumptionsNew(void)
+***************
+*** 452,463 ****
+
+
+
+! /* @funcstatic nexusCodonsNew ***********************************************
+ **
+ ** Constructor for AjPNexusCodons
+ **
+ ** @return [AjPNexusCodons] New AjPNexusCodons object
+ ** @category new [AjPNexusCodons] Default constructor
+ ******************************************************************************/
+
+ static AjPNexusCodons nexusCodonsNew(void)
+--- 482,495 ----
+
+
+
+! /* @funcstatic nexusCodonsNew *************************************************
+ **
+ ** Constructor for AjPNexusCodons
+ **
+ ** @return [AjPNexusCodons] New AjPNexusCodons object
+ ** @category new [AjPNexusCodons] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusCodons nexusCodonsNew(void)
+***************
+*** 472,483 ****
+
+
+
+! /* @funcstatic nexusTreesNew ***********************************************
+ **
+ ** Constructor for AjPNexusTrees
+ **
+ ** @return [AjPNexusTrees] New AjPNexusTrees object
+ ** @category new [AjPNexusTrees] Default constructor
+ ******************************************************************************/
+
+ static AjPNexusTrees nexusTreesNew(void)
+--- 504,517 ----
+
+
+
+! /* @funcstatic nexusTreesNew **************************************************
+ **
+ ** Constructor for AjPNexusTrees
+ **
+ ** @return [AjPNexusTrees] New AjPNexusTrees object
+ ** @category new [AjPNexusTrees] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusTrees nexusTreesNew(void)
+***************
+*** 492,503 ****
+
+
+
+! /* @funcstatic nexusNotesNew ***********************************************
+ **
+ ** Constructor for AjPNexusNotes
+ **
+ ** @return [AjPNexusNotes] New AjPNexusNotes object
+ ** @category new [AjPNexusNotes] Default constructor
+ ******************************************************************************/
+
+ static AjPNexusNotes nexusNotesNew(void)
+--- 526,539 ----
+
+
+
+! /* @funcstatic nexusNotesNew **************************************************
+ **
+ ** Constructor for AjPNexusNotes
+ **
+ ** @return [AjPNexusNotes] New AjPNexusNotes object
+ ** @category new [AjPNexusNotes] Default constructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjPNexusNotes nexusNotesNew(void)
+***************
+*** 519,524 ****
+--- 555,562 ----
+ ** @param [d] pthys [AjPNexus*] AjPNexus object
+ ** @return [void]
+ ** @category delete [AjPNexus] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ void ajNexusDel(AjPNexus* pthys)
+***************
+*** 553,558 ****
+--- 591,598 ----
+ ** @param [d] pthys [AjPNexusTaxa*] AjPNexusTaxa object
+ ** @return [void]
+ ** @category delete [AjPNexusTaxa] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusTaxaDel(AjPNexusTaxa* pthys)
+***************
+*** 579,584 ****
+--- 619,626 ----
+ ** @param [d] pthys [AjPNexusCharacters*] AjPNexusCharacters object
+ ** @return [void]
+ ** @category delete [AjPNexusCharacters] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusCharactersDel(AjPNexusCharacters* pthys)
+***************
+*** 618,623 ****
+--- 660,667 ----
+ ** @param [d] pthys [AjPNexusUnaligned*] AjPNexusUnaligned object
+ ** @return [void]
+ ** @category delete [AjPNexusUnaligned] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusUnalignedDel(AjPNexusUnaligned* pthys)
+***************
+*** 650,655 ****
+--- 694,701 ----
+ ** @param [d] pthys [AjPNexusDistances*] AjPNexusDistances object
+ ** @return [void]
+ ** @category delete [AjPNexusDistances] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusDistancesDel(AjPNexusDistances* pthys)
+***************
+*** 680,685 ****
+--- 726,733 ----
+ ** @param [d] pthys [AjPNexusSets*] AjPNexusSets object
+ ** @return [void]
+ ** @category delete [AjPNexusSets] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusSetsDel(AjPNexusSets* pthys)
+***************
+*** 715,720 ****
+--- 763,770 ----
+ ** @param [d] pthys [AjPNexusAssumptions*] AjPNexuAssumptionss object
+ ** @return [void]
+ ** @category delete [AjPNexusAssumptions] Default destructor
++ **
++ ** @release 2.9.0
+ ******************************************************************************/
+
+ static void nexusAssumptionsDel(AjPNexusAssumptions* pthys)
+***************
+*** 750,755 ****
+--- 800,807 ----
+ ** @param [d] pthys [AjPNexusCodons*] AjPNexusCodons object
+ ** @return [void]
+ ** @category delete [AjPNexusCodons] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusCodonsDel(AjPNexusCodons* pthys)
+***************
+*** 780,785 ****
+--- 832,839 ----
+ ** @param [d] pthys [AjPNexusTrees*] AjPNexusTrees object
+ ** @return [void]
+ ** @category delete [AjPNexusTrees] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusTreesDel(AjPNexusTrees* pthys)
+***************
+*** 802,814 ****
+
+
+
+! /* @funcstatic nexusNotesDel ************************************************
+ **
+ ** Destructor for AjPNexusNotes
+ **
+ ** @param [d] pthys [AjPNexusNotes*] AjPNexusNotes object
+ ** @return [void]
+ ** @category delete [AjPNexusNotes] Default destructor
+ ******************************************************************************/
+
+ static void nexusNotesDel(AjPNexusNotes* pthys)
+--- 856,870 ----
+
+
+
+! /* @funcstatic nexusNotesDel **************************************************
+ **
+ ** Destructor for AjPNexusNotes
+ **
+ ** @param [d] pthys [AjPNexusNotes*] AjPNexusNotes object
+ ** @return [void]
+ ** @category delete [AjPNexusNotes] Default destructor
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static void nexusNotesDel(AjPNexusNotes* pthys)
+***************
+*** 841,846 ****
+--- 897,904 ----
+ ** @param [w] list [AjPList] List of block records
+ ** @param [r] blockname [const AjPStr] Block name
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusBlockSave(AjPNexus thys, AjPList list,
+***************
+*** 905,911 ****
+
+
+
+! /* @funcstatic nexusCommand ********************************************
+ **
+ ** Finds the next command and command string in a block
+ **
+--- 963,969 ----
+
+
+
+! /* @funcstatic nexusCommand ***************************************************
+ **
+ ** Finds the next command and command string in a block
+ **
+***************
+*** 913,918 ****
+--- 971,978 ----
+ ** @param [w] command [AjPStr*] Command name
+ ** @param [w] cmdstr [AjPStr*] Command string
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusCommand(AjPList list, AjPStr* command, AjPStr* cmdstr)
+***************
+*** 944,949 ****
+--- 1004,1011 ----
+ {
+ ajRegPre(endcommand, &tmpstr);
+ ajStrAssignS(cmdstr, tmpstr);
++ ajStrDel(&tmpstr);
++ ajStrDel(&rdline);
+
+ return ajTrue;
+ }
+***************
+*** 957,962 ****
+--- 1019,1026 ----
+ {
+ ajRegPre(endcommand, &tmpstr);
+ ajStrAppendS(cmdstr, tmpstr);
++ ajStrDel(&tmpstr);
++ ajStrDel(&rdline);
+
+ return ajTrue;
+ }
+***************
+*** 970,988 ****
+ }
+ }
+
+ return ajFalse;
+ }
+
+
+
+
+! /* @funcstatic nexusParseTaxa ********************************************
+ **
+ ** Parses Nexus commands for a Taxa block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
+ ******************************************************************************/
+
+ static AjBool nexusParseTaxa(AjPNexus thys, AjPList list)
+--- 1034,1056 ----
+ }
+ }
+
++ ajStrDel(&rdline);
++
+ return ajFalse;
+ }
+
+
+
+
+! /* @funcstatic nexusParseTaxa *************************************************
+ **
+ ** Parses Nexus commands for a Taxa block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseTaxa(AjPNexus thys, AjPList list)
+***************
+*** 1024,1029 ****
+--- 1092,1099 ----
+ if (!thys->Taxa->Ntax)
+ {
+ ajDebug("nexusParseTaxa failed: dimension Ntax not found\n");
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
+
+ return ajFalse;
+ }
+***************
+*** 1034,1045 ****
+--- 1104,1120 ----
+ {
+ ajDebug("nexusParseTaxa failed: Ntax %d read %d TaxLabels\n",
+ thys->Taxa->Ntax, i);
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
+
+ return ajFalse;
+ }
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ if (!thys->Taxa->Ntax)
+ {
+ ajDebug("nexusParseTaxa failed: taxa data not found\n");
+***************
+*** 1061,1066 ****
+--- 1136,1143 ----
+ ** @param [u] list [AjPList] List of block records
+ ** @param [r] newtaxa [AjBool] If true, set NewTaxa
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseCharacters(AjPNexus thys, AjPList list, AjBool newtaxa)
+***************
+*** 1145,1150 ****
+--- 1222,1229 ----
+ if(!nexusGetInt(cmdstr, dimexp3, 1, &thys->Characters->Nchar))
+ {
+ ajDebug("nexusParseCharacters failed: nchar undefined\n");
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
+ return ajFalse;
+ }
+ }
+***************
+*** 1197,1202 ****
+--- 1276,1283 ----
+ ajDebug("nexusParseCharacters "
+ "failed: Ntax %d read %d TaxLabels\n",
+ thys->Taxa->Ntax, i);
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
+
+ return ajFalse;
+ }
+***************
+*** 1238,1243 ****
+--- 1319,1327 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ if (!thys->Characters->Nchar)
+ {
+ ajDebug("nexusParseCharacters failed: dimension nchar undefined\n");
+***************
+*** 1258,1263 ****
+--- 1342,1349 ----
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseUnaligned(AjPNexus thys, AjPList list)
+***************
+*** 1336,1341 ****
+--- 1422,1430 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+***************
+*** 1349,1354 ****
+--- 1438,1445 ----
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseDistances(AjPNexus thys, AjPList list)
+***************
+*** 1447,1465 ****
+ }
+ }
+
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseSets ********************************************
+ **
+ ** Parses Nexus commands for a Sets block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
+ ******************************************************************************/
+
+ static AjBool nexusParseSets(AjPNexus thys, AjPList list)
+--- 1538,1561 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseSets *************************************************
+ **
+ ** Parses Nexus commands for a Sets block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseSets(AjPNexus thys, AjPList list)
+***************
+*** 1505,1510 ****
+--- 1601,1609 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+***************
+*** 1518,1523 ****
+--- 1617,1624 ----
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseAssumptions(AjPNexus thys, AjPList list)
+***************
+*** 1594,1612 ****
+ }
+ }
+
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseCodons ********************************************
+ **
+ ** Parses Nexus commands for a Codons block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
+ ******************************************************************************/
+
+ static AjBool nexusParseCodons(AjPNexus thys, AjPList list)
+--- 1695,1718 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseCodons ***********************************************
+ **
+ ** Parses Nexus commands for a Codons block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseCodons(AjPNexus thys, AjPList list)
+***************
+*** 1640,1658 ****
+ }
+ }
+
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseTrees ********************************************
+ **
+ ** Parses Nexus commands for a Trees block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
+ ******************************************************************************/
+
+ static AjBool nexusParseTrees(AjPNexus thys, AjPList list)
+--- 1746,1769 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseTrees ************************************************
+ **
+ ** Parses Nexus commands for a Trees block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseTrees(AjPNexus thys, AjPList list)
+***************
+*** 1681,1699 ****
+ }
+ }
+
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseNotes ********************************************
+ **
+ ** Parses Nexus commands for a Notes block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
+ ******************************************************************************/
+
+ static AjBool nexusParseNotes(AjPNexus thys, AjPList list)
+--- 1792,1815 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+
+
+
+! /* @funcstatic nexusParseNotes ************************************************
+ **
+ ** Parses Nexus commands for a Notes block
+ **
+ ** @param [w] thys [AjPNexus] Nexus object
+ ** @param [u] list [AjPList] List of block records
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusParseNotes(AjPNexus thys, AjPList list)
+***************
+*** 1722,1727 ****
+--- 1838,1846 ----
+ }
+ }
+
++ ajStrDel(&command);
++ ajStrDel(&cmdstr);
++
+ return ajTrue;
+ }
+
+***************
+*** 1737,1742 ****
+--- 1856,1863 ----
+ ** @param [u] exp [AjPRegexp] Compiled regular expression for parsing
+ ** @param [w] dest [AjPStr**] Array generated
+ ** @return [ajint] Number of strings returned
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static ajint nexusGetArray(AjPStr src, AjPRegexp exp,
+***************
+*** 1779,1784 ****
+--- 1900,1907 ----
+ ** @param [r] isub [ajint] Substring number to extract
+ ** @param [w] dest [AjPStr*] String generated
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusGetStr(AjPStr src, AjPRegexp exp, ajint isub, AjPStr* dest)
+***************
+*** 1805,1810 ****
+--- 1928,1935 ----
+ ** @param [r] isub [ajint] Substring number to extract
+ ** @param [w] dest [char*] String generated
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusGetChar(AjPStr src, AjPRegexp exp, ajint isub, char* dest)
+***************
+*** 1841,1846 ****
+--- 1966,1973 ----
+ ** @param [r] isub [ajint] Substring number to extract
+ ** @param [w] dest [ajuint*] Integer generated
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusGetInt(AjPStr src, AjPRegexp exp, ajint isub, ajuint* dest)
+***************
+*** 1860,1866 ****
+
+
+
+! /* @funcstatic nexusGetBool **************************************************
+ **
+ ** Sets a nexus bool from a parsed nexus command in the form [no]name.
+ ** We know name is found, we test for the "no" part.
+--- 1987,1993 ----
+
+
+
+! /* @funcstatic nexusGetBool ***************************************************
+ **
+ ** Sets a nexus bool from a parsed nexus command in the form [no]name.
+ ** We know name is found, we test for the "no" part.
+***************
+*** 1870,1875 ****
+--- 1997,2004 ----
+ ** @param [r] isub [ajint] Substring number to extract
+ ** @param [w] dest [AjBool*] Boolean generated
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusGetBool(AjPStr src, AjPRegexp exp, ajint isub, AjBool* dest)
+***************
+*** 1893,1899 ****
+
+
+
+! /* @funcstatic nexusVocab ***************************************************
+ **
+ ** Tests a string against a controlled vocabulary
+ **
+--- 2022,2028 ----
+
+
+
+! /* @funcstatic nexusVocab *****************************************************
+ **
+ ** Tests a string against a controlled vocabulary
+ **
+***************
+*** 1901,1906 ****
+--- 2030,2037 ----
+ ** @param [r] src [const AjPStr] String to be tested
+ ** @param [r] vocab [const char* []] List of known values, ending in a NULL
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusVocab(const char* title, const AjPStr src,
+***************
+*** 1927,1932 ****
+--- 2058,2065 ----
+ **
+ ** @param [r] thys [const AjPNexus] nexus object
+ ** @return [void]
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ void ajNexusTrace(const AjPNexus thys)
+***************
+*** 2430,2435 ****
+--- 2563,2570 ----
+ **
+ ** @param [r] thys [const AjPNexus] Nexus object
+ ** @return [AjPStr*] taxa string array, NULL terminated, read only
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ AjPStr* ajNexusGetTaxa(const AjPNexus thys)
+***************
+*** 2452,2457 ****
+--- 2587,2594 ----
+ **
+ ** @param [r] thys [const AjPNexus] Nexus object
+ ** @return [ajuint] Number of taxa
++ **
++ ** @release 2.8.0
+ ** @@
+ ******************************************************************************/
+
+***************
+*** 2478,2483 ****
+--- 2615,2622 ----
+ **
+ ** @param [u] thys [AjPNexus] Nexus object
+ ** @return [AjPStr*] taxa string array, NULL terminated, read only
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ AjPStr* ajNexusGetSequences(AjPNexus thys)
+***************
+*** 2502,2507 ****
+--- 2641,2648 ----
+ **
+ ** @param [u] thys [AjPNexus] Nexus object
+ ** @return [AjBool] ajTrue on success
++ **
++ ** @release 2.8.0
+ ******************************************************************************/
+
+ static AjBool nexusSetSequences(AjPNexus thys)
+***************
+*** 2591,2597 ****
+
+ for (i=0; thys->Taxa->TaxLabels[i]; i++)
+ {
+! seqstr = ajStrNewRes(thys->Characters->Nchar+1);
+ ajTablePut(seqtab, thys->Taxa->TaxLabels[i], seqstr);
+ seqstr = NULL;
+ }
+--- 2732,2738 ----
+
+ for (i=0; thys->Taxa->TaxLabels[i]; i++)
+ {
+! seqstr = ajStrNewRes(thys->Characters->Nchar+1);
+ ajTablePut(seqtab, thys->Taxa->TaxLabels[i], seqstr);
+ seqstr = NULL;
+ }
+***************
+*** 2599,2604 ****
+--- 2740,2746 ----
+ else
+ {
+ AJCNEW0(thys->Taxa->TaxLabels, (thys->Ntax+1));
++ ajDebug("thys->Taxa->TaxLabels 0..%u\n", (thys->Ntax+1));
+ }
+
+ taxlabel = NULL;
+***************
+*** 2609,2614 ****
+--- 2751,2757 ----
+ ajStrAssignS(&rdline, thys->Characters->Matrix[i]);
+ ajStrRemoveWhiteExcess(&rdline);
+
++ ajDebug("rdline: '%S'\n", rdline);
+ if (!taxlabel || thys->Characters->Interleave ||
+ (ajStrGetLen(seqstr) >= thys->Characters->Nchar))
+ { /* next tax label */
+***************
+*** 2617,2629 ****
+--- 2760,2782 ----
+
+ ajRegSubI(word, 0, &taxlabel);
+ ajRegPost(word, &tmpstr);
++ ajDebug("taxlabel '%S' rest '%S'\n", taxlabel, tmpstr);
+ ajStrAssignS(&rdline, tmpstr);
+ ajStrQuoteStripAll(&taxlabel);
++ ajDebug("unquoted taxlabel %p '%S'\n", taxlabel, taxlabel);
+
+ if (!havetaxa)
+ {
++ ajDebug("ajTablePut itax.%u label %p '%S'\n",
++ itax,
++ thys->Taxa->TaxLabels[itax],
++ thys->Taxa->TaxLabels[itax]);
+ ajStrAssignS(&thys->Taxa->TaxLabels[itax], taxlabel);
+ seqstr = ajStrNewRes(thys->Characters->Nchar+1);
++ ajDebug("ajTablePut itax %u label %p '%S'\n",
++ itax,
++ thys->Taxa->TaxLabels[itax],
++ thys->Taxa->TaxLabels[itax]);
+ ajTablePut(seqtab, thys->Taxa->TaxLabels[itax], seqstr);
+ seqstr = NULL;
+ itax++;
+***************
+*** 2631,2638 ****
+--- 2784,2793 ----
+ havetaxa = ajTrue;
+ }
+
++ ajDebug("havetaxa: %B taxlabel '%S'\n", havetaxa, taxlabel);
+ seqstr = ajTableFetchmodS(seqtab, taxlabel);
+
++ ajDebug("seqstr '%S'\n", seqstr);
+ if (!seqstr)
+ {
+ ajErr("Unknown taxon '%S' in nexus data", taxlabel);
+***************
+*** 2650,2661 ****
+ {
+ ajRegSubI(word, 0, &tmpstr);
+ ajStrAppendS(&seqstr, tmpstr);
+- ajTablePut(seqtab, taxlabel, seqstr); /* just to make sure */
+ ajRegPost(word, &tmpstr);
+ ajStrAssignS(&rdline, tmpstr);
+ }
+
+ ajStrExchangeKK(&seqstr, gapch, '-');
+ }
+
+ ajRegFree(&word);
+--- 2805,2816 ----
+ {
+ ajRegSubI(word, 0, &tmpstr);
+ ajStrAppendS(&seqstr, tmpstr);
+ ajRegPost(word, &tmpstr);
+ ajStrAssignS(&rdline, tmpstr);
+ }
+
+ ajStrExchangeKK(&seqstr, gapch, '-');
++ ajDebug("seqstr updated '%S'\n", seqstr);
+ }
+
+ ajRegFree(&word);
+***************
+*** 2683,2688 ****
+--- 2838,2845 ----
+ }
+
+ ajTableFree(&seqtab);
++ ajStrDel(&firstseq);
++ ajStrDel(&taxlabel);
+
+ return ajTrue;
+ }
+***************
+*** 2700,2705 ****
+--- 2857,2864 ----
+ ** @param [d] pthis [AjPStr**] Pointer to the string array to be deleted.
+ ** The pointer is always deleted.
+ ** @return [void]
++ **
++ ** @release 4.0.0
+ ** @@
+ ******************************************************************************/
+
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajpat.c EMBOSS-6.4.0/ajax/core/ajpat.c
+*** EMBOSS-6.4.0old/ajax/core/ajpat.c 2010-04-14 09:04:16.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajpat.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 752,757 ****
+--- 752,759 ----
+ default:
+ mismreg = ajRegCompC("<mismatch=(\\d+)>");
+
++ mismatch=mismatches; /* set for first pattern */
++
+ while (ajBuffreadLineTrim(infile,&line))
+ {
+ if (ajStrGetCharFirst(line) == '>')
+***************
+*** 762,768 ****
+ mismatch);
+ ajStrSetClear(&name);
+ ajStrSetClear(&pat);
+! mismatch=mismatches;
+ }
+
+ ajStrCutStart(&line,1);
+--- 764,770 ----
+ mismatch);
+ ajStrSetClear(&name);
+ ajStrSetClear(&pat);
+! mismatch=mismatches; /* reset for next pattern */
+ }
+
+ ajStrCutStart(&line,1);
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajquery.c EMBOSS-6.4.0/ajax/core/ajquery.c
+*** EMBOSS-6.4.0old/ajax/core/ajquery.c 2011-07-03 12:39:13.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajquery.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 1609,1615 ****
+--- 1609,1622 ----
+ fmtstat = ajRegExec(queryRegFmt, *Pqry);
+
+ if(!fmtstat)
++ {
++ if(ajStrGetLen(textin->Formatstr))
++ {
++ if(findformat(textin->Formatstr, &textin->Format))
++ ajStrAssignS(&qry->Formatstr, textin->Formatstr);
++ }
+ return NULL;
++ }
+
+ ajRegSubI(queryRegFmt, 1, &queryFormat);
+ ajRegSubI(queryRegFmt, 2, Pqry);
+***************
+*** 2716,2730 ****
+ ajDebug("ajQueryAddFieldOrC.i '%s' '%S'\n",
+ "id", qrystring);
+
+! ajQueryAddFieldElseC(qry, "acc",
+! MAJSTRGETPTR(qrystring));
+! ajDebug("ajQueryAddFieldElseC.i '%s' '%S'\n",
+! "acc", qrystring);
+
+! ajQueryAddFieldElseC(qry, "sv",
+! MAJSTRGETPTR(qrystring));
+! ajDebug("ajQueryAddFieldElseC.i '%s' '%S'\n",
+! "sv", qrystring);
+ }
+ ajStrAssignS(&lastoper, operstr);
+ ajStrTrimWhite(&lastoper);
+--- 2723,2743 ----
+ ajDebug("ajQueryAddFieldOrC.i '%s' '%S'\n",
+ "id", qrystring);
+
+! if(qry->HasAcc && ajQueryKnownFieldC(qry, "acc"))
+! {
+! ajQueryAddFieldElseC(qry, "acc",
+! MAJSTRGETPTR(qrystring));
+! ajDebug("ajQueryAddFieldElseC.i '%s' '%S'\n",
+! "acc", qrystring);
+! }
+
+! if(ajQueryKnownFieldC(qry, "sv"))
+! {
+! ajQueryAddFieldElseC(qry, "sv",
+! MAJSTRGETPTR(qrystring));
+! ajDebug("ajQueryAddFieldElseC.i '%s' '%S'\n",
+! "sv", qrystring);
+! }
+ }
+ ajStrAssignS(&lastoper, operstr);
+ ajStrTrimWhite(&lastoper);
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajrange.c EMBOSS-6.4.0/ajax/core/ajrange.c
+*** EMBOSS-6.4.0old/ajax/core/ajrange.c 2010-05-21 11:54:40.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajrange.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 179,185 ****
+ ajuint minsize, ajuint size)
+ {
+ AjPRange ret = NULL;
+! AjPFile infile;
+ AjPStr line = NULL;
+ char whiteSpace[] = " \t\n\r";
+ char notSpace[] = "\n\r";
+--- 179,185 ----
+ ajuint minsize, ajuint size)
+ {
+ AjPRange ret = NULL;
+! AjPFile infile = NULL;
+ AjPStr line = NULL;
+ char whiteSpace[] = " \t\n\r";
+ char notSpace[] = "\n\r";
+***************
+*** 189,197 ****
+ ajuint numone;
+ ajuint numtwo;
+
+! AjPStr one;
+! AjPStr two;
+! AjPStr text;
+
+ AjPList onelist;
+ AjPList twolist;
+--- 189,197 ----
+ ajuint numone;
+ ajuint numtwo;
+
+! AjPStr one = NULL;
+! AjPStr two = NULL;
+! AjPStr text = NULL;
+
+ AjPList onelist;
+ AjPList twolist;
+***************
+*** 229,241 ****
+ one = ajStrNew();
+ ajStrTokenNextParse(&tokens, &one);
+ ajListstrPushAppend(onelist, one);
+
+ two = ajStrNew();
+ ajStrTokenNextParse(&tokens, &two);
+
+ if(ajStrGetLen(two))
+! ajListstrPushAppend(twolist, two);
+! else
+ {
+ ajWarn("Odd integer(s) in range specification:\n%S\n", line);
+
+--- 229,245 ----
+ one = ajStrNew();
+ ajStrTokenNextParse(&tokens, &one);
+ ajListstrPushAppend(onelist, one);
++ one = NULL;
+
+ two = ajStrNew();
+ ajStrTokenNextParse(&tokens, &two);
+
+ if(ajStrGetLen(two))
+! {
+! ajListstrPushAppend(twolist, two);
+! two = NULL;
+! }
+! else
+ {
+ ajWarn("Odd integer(s) in range specification:\n%S\n", line);
+
+***************
+*** 247,256 ****
+--- 251,264 ----
+ ajStrTokenNextParseC(&tokens, notSpace, &text);
+ ajStrTrimWhite(&text);
+ ajListstrPushAppend(textlist, text);
++ text = NULL;
+
+ ajStrTokenDel( &tokens);
+ }
+
++ ajFileClose(&infile);
++ ajStrDel(&line);
++
+ /* now we know how many pairs of numbers to store, create ajRange object */
+ n = ajListstrGetLength(onelist);
+ if(size)
+***************
+*** 331,336 ****
+--- 339,345 ----
+ /* do the text */
+ ajListstrPop(textlist, &text);
+ ret->text[k] = text;
++ text = NULL;
+ }
+
+
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajseqabi.c EMBOSS-6.4.0/ajax/core/ajseqabi.c
+*** EMBOSS-6.4.0old/ajax/core/ajseqabi.c 2011-05-19 11:28:09.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajseqabi.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 181,186 ****
+--- 181,187 ----
+ *machine = ajStrNewRes(l+1);
+ ajReadbinBinary(fp,1,l,(void*)ajStrGetuniquePtr(machine));
+ *(ajStrGetuniquePtr(machine)+l)='\0';
++ ajStrSetValid(machine);
+ }
+ else
+ return ajFalse;
+***************
+*** 961,966 ****
+--- 962,968 ----
+ *sample = ajStrNewRes(l+1);
+ ajReadbinBinary(fp,1,l,(void*)ajStrGetuniquePtr(sample));
+ *(ajStrGetuniquePtr(sample)+l)='\0';
++ ajStrSetValid(sample);
+ }
+
+ return ajTrue;
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/core/ajseqread.c EMBOSS-6.4.0/ajax/core/ajseqread.c
+*** EMBOSS-6.4.0old/ajax/core/ajseqread.c 2011-06-27 08:38:44.000000000 +0100
+--- EMBOSS-6.4.0/ajax/core/ajseqread.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 5497,5502 ****
+--- 5497,5503 ----
+ static AjBool seqReadRaw(AjPSeq thys, AjPSeqin seqin)
+ {
+ AjPFilebuff buff;
++ const char* cp;
+ AjPFile fp;
+ AjBool ok = ajFalse;
+ ajulong filestat = 0L;
+***************
+*** 5506,5588 ****
+ AjPStr buf = NULL;
+ char *cbuf;
+ AjPStr tmpseq = NULL;
+!
+! if(!seqRegRawNonseq)
+! seqRegRawNonseq = ajRegCompC("[^A-Za-z0-9 \t\n\r*-]");
+
+ buff = seqin->Input->Filebuff;
+ fp = ajFilebuffGetFile(buff);
+
+! ajDebug("seqReadRaw\n");
+
+ if(ajFilebuffIsEnded(buff))
+ return ajFalse;
+
+! buf = ajStrNewRes(4096);
+! ajStrSetValidLen(&buf, inc);
+! cbuf = ajStrGetuniquePtr(&buf);
+!
+! filestat = ajFileSeek(fp, 0L, SEEK_END);
+! filesize = ajFileResetPos(fp);
+! filestat = ajFileSeek(fp, (ajlong) filestat, 0);
+
+! ok = ajTrue;
+
+! for(i=0; i < filesize; i += inc)
+ {
+! if((i+inc) > filesize)
+ {
+! inc = (ajuint) (filesize - i);
+! ajStrSetValidLen(&buf, inc);
+ }
+
+! ajReadbinBinary(fp, inc, 1, cbuf);
+! cbuf[inc] = '\0';
+
+! if(strlen(cbuf) != inc)
+ {
+! ajDebug("seqReadRaw: Null character found in line: %s\n",
+! cbuf);
+! ok = ajFalse;
+! break;
+ }
+
+! if(ajRegExec(seqRegRawNonseq, buf))
+! {
+! ajDebug("seqReadRaw: Bad character found in line: %s\n",
+! cbuf);
+! ok = ajFalse;
+! break;
+! }
+
+! ajStrAssignC(&tmpseq, cbuf);
+
+! if(seqin->Input->Text)
+! ajStrAppendS(&thys->TextPtr, tmpseq);
+
+! seqAppend(&thys->Seq, tmpseq);
+! seqin->Input->Records++;
+! ajDebug("read %d lines\n", seqin->Input->Records);
+! }
+
+! ajStrDel(&buf);
+! ajStrDel(&tmpseq);
+
+! if(!ok)
+! {
+! ajFileSeek(fp,(ajlong) filestat,0);
+
+! if(seqin->Input->Text)
+! ajStrAssignC(&thys->TextPtr, "");
+
+- ajFilebuffResetPos(buff);
+
+- return ajFalse;
+ }
+
+ ajFilebuffClear(buff, -1);
+ buff->File->End=ajTrue;
+
+ return ajTrue;
+ }
+
+--- 5507,5645 ----
+ AjPStr buf = NULL;
+ char *cbuf;
+ AjPStr tmpseq = NULL;
+! size_t iread;
+!
+! ajDebug("seqReadRaw\n");
+
+ buff = seqin->Input->Filebuff;
+ fp = ajFilebuffGetFile(buff);
+
+! if(!seqRegRawNonseq)
+! seqRegRawNonseq = ajRegCompC("[^A-Za-z0-9 \t\n\r*-]");
+
+ if(ajFilebuffIsEnded(buff))
+ return ajFalse;
+
+! filestat = ajFileSeek(fp, 0L, SEEK_CUR);
+
+! if(filestat)
+! {
+! /* not a file - cannot use binary, so we can only read the buffer */
+! while(ajBuffreadLineStore(buff, &seqReadLine,
+! seqin->Input->Text, &thys->TextPtr))
+! {
+! ajDebug("read '%S'\n", seqReadLine);
+!
+! cp = ajStrGetPtr(seqReadLine);
+! if(strlen(cp) != ajStrGetLen(seqReadLine))
+! {
+! ajDebug("seqReadRaw: Null character found in line: %S\n",
+! seqReadLine);
+! ajFilebuffResetStore(buff, seqin->Input->Text, &thys->TextPtr);
+! ajStrAssignClear(&thys->Seq);
+!
+! return ajFalse;
+! }
+!
+! if(ajRegExec(seqRegRawNonseq, seqReadLine))
+! {
+! ajDebug("seqReadRaw: Bad character found in line: %S\n",
+! seqReadLine);
+! ajFilebuffResetStore(buff, seqin->Input->Text, &thys->TextPtr);
+! ajStrAssignClear(&thys->Seq);
+
+! return ajFalse;
+! }
+! seqAppend(&thys->Seq, seqReadLine);
+! seqin->Input->Records++;
+! ajDebug("read %d lines\n", seqin->Input->Records);
+! }
+! }
+! else
+ {
+! if(ajFilebuffIsEnded(buff))
+ {
+! ajFileSeek(fp, 0L, SEEK_END);
+! return ajFalse;
+ }
+
+! buf = ajStrNewRes(4096);
+! ajStrSetValidLen(&buf, inc);
+! cbuf = ajStrGetuniquePtr(&buf);
+
+! filestat = ajFileSeek(fp, 0L, SEEK_END);
+! filesize = ajFileResetPos(fp);
+! filestat = ajFileSeek(fp, 0L, SEEK_SET);
+!
+! if(!filesize)
+ {
+! ajFileSeek(fp,(ajlong) filesize, SEEK_SET);
+! return ajFalse;
+ }
++
++ ok = ajTrue;
+
+! for(i=0; i < filesize; i += inc)
+! {
+! if((i+inc) > filesize)
+! {
+! inc = (ajuint) (filesize - i);
+! ajStrSetValidLen(&buf, inc);
+! }
+!
+! iread = ajReadbinBinary(fp, inc, 1, cbuf);
+! cbuf[inc] = '\0';
+
+! if(strlen(cbuf) != iread)
+! {
+! ajDebug("seqReadRaw: Null character found in line: %s\n",
+! cbuf);
+! ok = ajFalse;
+! break;
+! }
+
+! if(ajRegExec(seqRegRawNonseq, buf))
+! {
+! ajDebug("seqReadRaw: Bad character found in line: %S\n",
+! seqReadLine);
+! ok = ajFalse;
+! break;
+! }
+
+! ajStrAssignC(&tmpseq, cbuf);
+
+! if(seqin->Input->Text)
+! ajStrAppendS(&thys->TextPtr, tmpseq);
+
+! seqAppend(&thys->Seq, tmpseq);
+! seqin->Input->Records++;
+! ajDebug("read %d lines\n", seqin->Input->Records);
+! }
+
+! ajStrDel(&buf);
+! ajStrDel(&tmpseq);
+!
+! if(!ok)
+! {
+! ajFileSeek(fp,(ajlong) filestat,0);
+!
+! if(seqin->Input->Text)
+! ajStrAssignC(&thys->TextPtr, "");
+!
+! ajFilebuffResetPos(buff);
+!
+! return ajFalse;
+! }
+
+
+ }
+
+ ajFilebuffClear(buff, -1);
+ buff->File->End=ajTrue;
+
++ if(!seqin->Input->Records)
++ return ajFalse;
++
+ return ajTrue;
+ }
+
+***************
+*** 7898,7903 ****
+--- 7955,7961 ----
+ ajuint j;
+ AjPFilebuff buff;
+ AjPStr* seqs = NULL;
++ AjPStr* names = NULL;
+ AjPNexus nexus = NULL;
+
+ SeqPMsfData phydata = NULL;
+***************
+*** 7953,7960 ****
+ seqs = ajNexusGetTaxa(phydata->Nexus);
+ phydata->Names = AJCALLOC(phydata->Nseq, sizeof(*phydata->Names));
+
+! for(j=0;j<phydata->Nseq;j++)
+! ajStrAssignS(&phydata->Names[j], seqs[j]);
+
+ seqin->SeqData = phydata;
+ ajDebug("Nexus parsed %d sequences\n", phydata->Nseq);
+--- 8011,8021 ----
+ seqs = ajNexusGetTaxa(phydata->Nexus);
+ phydata->Names = AJCALLOC(phydata->Nseq, sizeof(*phydata->Names));
+
+! if(seqs)
+! {
+! for(j=0;j<phydata->Nseq;j++)
+! ajStrAssignS(&phydata->Names[j], seqs[j]);
+! }
+
+ seqin->SeqData = phydata;
+ ajDebug("Nexus parsed %d sequences\n", phydata->Nseq);
+***************
+*** 7974,7995 ****
+ return ajFalse;
+ }
+
+! if (!phydata->Names) /* finally set from the sequences */
+! {
+! seqs = ajNexusGetTaxa(phydata->Nexus);
+ phydata->Names = AJCALLOC(phydata->Nseq, sizeof(*phydata->Names));
+
+ for(j=0;j<phydata->Nseq;j++)
+! ajStrAssignS(&phydata->Names[j], seqs[j]);
+ }
+
+ ajDebug("returning [%d] '%S'\n", i, phydata->Names[i]);
+
+ ajStrAssignS(&thys->Name, phydata->Names[i]);
+
+- thys->Weight = 1.0;
+- ajStrAssignS(&thys->Seq, seqs[i]);
+-
+ phydata->Count++;
+
+ if(phydata->Count >= phydata->Nseq)
+--- 8035,8057 ----
+ return ajFalse;
+ }
+
+! thys->Weight = 1.0;
+! ajStrAssignS(&thys->Seq, seqs[i]);
+!
+! if (!phydata->Names)
+ phydata->Names = AJCALLOC(phydata->Nseq, sizeof(*phydata->Names));
+
++ if (!phydata->Names[0]) /* finally set from the sequences */
++ {
++ names = ajNexusGetTaxa(phydata->Nexus);
+ for(j=0;j<phydata->Nseq;j++)
+! ajStrAssignS(&phydata->Names[j], names[j]);
+ }
+
+ ajDebug("returning [%d] '%S'\n", i, phydata->Names[i]);
+
+ ajStrAssignS(&thys->Name, phydata->Names[i]);
+
+ phydata->Count++;
+
+ if(phydata->Count >= phydata->Nseq)
+***************
+*** 13827,13833 ****
+ ajStrAssignC(&seqFtFmtGff, "gff3");
+
+ if(!seqRegGff3Typ)
+! seqRegGff3Typ = ajRegCompC("^#!(.*)");
+
+ ok = ajBuffreadLineStore(buff, &seqReadLine,
+ seqin->Input->Text, &thys->TextPtr);
+--- 13889,13895 ----
+ ajStrAssignC(&seqFtFmtGff, "gff3");
+
+ if(!seqRegGff3Typ)
+! seqRegGff3Typ = ajRegCompC("^#!Type (.*)");
+
+ ok = ajBuffreadLineStore(buff, &seqReadLine,
+ seqin->Input->Text, &thys->TextPtr);
+***************
+*** 13885,13891 ****
+
+ if(ajRegExec(seqRegGff3Typ, seqReadLine))
+ {
+! ajFmtPrintS(&outstr, "%S\n", seqReadLine);
+ }
+
+ ok = ajBuffreadLineStore(buff, &seqReadLine,
+--- 13947,13954 ----
+
+ if(ajRegExec(seqRegGff3Typ, seqReadLine))
+ {
+! ajRegSubI(seqRegGff3Typ, 1, &typstr);
+! ajFmtPrintS(&outstr, "#!Type %S", typstr);
+ }
+
+ ok = ajBuffreadLineStore(buff, &seqReadLine,
+***************
+*** 13966,13972 ****
+ ajFeattabinDel(&seqin->Ftquery);
+ seqin->Ftquery = ajFeattabinNewSSF(seqFtFmtGff, thys->Name,
+ ajStrGetPtr(seqin->Type), ftfile);
+! ajDebug("GFF FEAT TabIn %x\n", seqin->Ftquery);
+ ftfile = NULL;
+ ajFeattableDel(&seqin->Fttable);
+ ajFeattableDel(&thys->Fttable);
+--- 14029,14035 ----
+ ajFeattabinDel(&seqin->Ftquery);
+ seqin->Ftquery = ajFeattabinNewSSF(seqFtFmtGff, thys->Name,
+ ajStrGetPtr(seqin->Type), ftfile);
+! ajDebug("GFF3 FEAT TabIn %x\n", seqin->Ftquery);
+ ftfile = NULL;
+ ajFeattableDel(&seqin->Fttable);
+ ajFeattableDel(&thys->Fttable);
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/ensembl/ensdatabaseadaptor.c EMBOSS-6.4.0/ajax/ensembl/ensdatabaseadaptor.c
+*** EMBOSS-6.4.0old/ajax/ensembl/ensdatabaseadaptor.c 2011-07-06 22:50:28.000000000 +0100
+--- EMBOSS-6.4.0/ajax/ensembl/ensdatabaseadaptor.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 156,163 ****
+ ** @argrule Ini dbc [EnsPDatabaseconnection] Ensembl Database Connection
+ ** @argrule Ini database [AjPStr] Database name
+ ** @argrule Ini species [AjPStr] Species
+! ** @argrule Ini dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+! ** enumeration
+ ** @argrule Ini multi [AjBool] Multiple species
+ ** @argrule Ini identifier [ajuint] Species identifier
+ ** @argrule Url url [const AjPStr] Uniform Resource Locator
+--- 156,163 ----
+ ** @argrule Ini dbc [EnsPDatabaseconnection] Ensembl Database Connection
+ ** @argrule Ini database [AjPStr] Database name
+ ** @argrule Ini species [AjPStr] Species
+! ** @argrule Ini dbag [EnsEDatabaseadaptorGroup]
+! ** Ensembl Database Adaptor Group enumeration
+ ** @argrule Ini multi [AjBool] Multiple species
+ ** @argrule Ini identifier [ajuint] Species identifier
+ ** @argrule Url url [const AjPStr] Uniform Resource Locator
+***************
+*** 239,245 ****
+ return NULL;
+
+ collectionre =
+! ajRegCompC("^\\w+_collection_([a-z]+)(?:_\\d+)?_(\\d+)_\\w+");
+
+ multire =
+ ajRegCompC("^ensembl_([a-z]+)(_\\w+?)*?(?:_\\d+)?_(\\d+)$");
+--- 239,245 ----
+ return NULL;
+
+ collectionre =
+! ajRegCompC("^(\\w+)_collection_([a-z]+)(?:_\\d+)?_(\\d+)_\\w+");
+
+ multire =
+ ajRegCompC("^ensembl_([a-z]+)(_\\w+?)*?(?:_\\d+)?_(\\d+)$");
+***************
+*** 254,263 ****
+ /* Ensembl Collection databases have to be matched first. */
+
+ group = ajStrNew();
+ swversion = ajStrNew();
+
+! ajRegSubI(collectionre, 1, &group);
+! ajRegSubI(collectionre, 2, &swversion);
+
+ if(ajStrMatchCaseC(swversion, ensSoftwareVersion))
+ {
+--- 254,265 ----
+ /* Ensembl Collection databases have to be matched first. */
+
+ group = ajStrNew();
++ prefix = ajStrNew();
+ swversion = ajStrNew();
+
+! ajRegSubI(collectionre, 1, &prefix);
+! ajRegSubI(collectionre, 2, &group);
+! ajRegSubI(collectionre, 3, &swversion);
+
+ if(ajStrMatchCaseC(swversion, ensSoftwareVersion))
+ {
+***************
+*** 290,295 ****
+--- 292,298 ----
+ }
+
+ ajStrDel(&group);
++ ajStrDel(&prefix);
+ ajStrDel(&swversion);
+ }
+ else if(ajRegExec(multire, database))
+***************
+*** 417,422 ****
+--- 420,428 ----
+ **
+ ** Constructor for an Ensembl Database Adaptor with initial values.
+ **
++ ** If a database name has not been provided, the database name of the
++ ** Ensembl Database Connection will be used.
++ **
+ ** Ensembl Database Adaptors are singleton objects in the sense that a single
+ ** instance of an Ensembl Database Adaptor connected to a particular database
+ ** is sufficient to instantiate any number of Ensembl Object Adaptors from the
+***************
+*** 430,441 ****
+ **
+ ** @cc Bio::EnsEMBL::DBSQL::DBAdaptor::new
+ ** @param [u] dbc [EnsPDatabaseconnection] Ensembl Database Connection
+! ** @param [u] database [AjPStr] Database name (optional). If not provided, the
+! ** database name in the Database Connection will
+! ** be used.
+ ** @param [u] species [AjPStr] Species
+! ** @param [u] dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+! ** enumeration
+ ** @param [r] multi [AjBool] Multiple species
+ ** @param [r] identifier [ajuint] Species identifier
+ **
+--- 436,445 ----
+ **
+ ** @cc Bio::EnsEMBL::DBSQL::DBAdaptor::new
+ ** @param [u] dbc [EnsPDatabaseconnection] Ensembl Database Connection
+! ** @param [uN] database [AjPStr] Database name
+ ** @param [u] species [AjPStr] Species
+! ** @param [u] dbag [EnsEDatabaseadaptorGroup]
+! ** Ensembl Database Adaptor Group enumeration
+ ** @param [r] multi [AjBool] Multiple species
+ ** @param [r] identifier [ajuint] Species identifier
+ **
+***************
+*** 555,569 ****
+
+ /* @section destructors *******************************************************
+ **
+! ** Destruction destroys all internal data structures and frees the
+! ** memory allocated for an Ensembl Database Adaptor object.
+ **
+ ** @fdata [EnsPDatabaseadaptor]
+ **
+! ** @nam3rule Del Destroy (free) an Ensembl Database Adaptor object
+ **
+! ** @argrule * Pdba [EnsPDatabaseadaptor*] Ensembl Database Adaptor
+! ** object address
+ **
+ ** @valrule * [void]
+ **
+--- 559,573 ----
+
+ /* @section destructors *******************************************************
+ **
+! ** Destruction destroys all internal data structures and frees the memory
+! ** allocated for an Ensembl Database Adaptor object.
+ **
+ ** @fdata [EnsPDatabaseadaptor]
+ **
+! ** @nam3rule Del Destroy (free) an Ensembl Database Adaptor
+ **
+! ** @argrule * Pdba [EnsPDatabaseadaptor*]
+! ** Ensembl Database Adaptor address
+ **
+ ** @valrule * [void]
+ **
+***************
+*** 586,593 ****
+ ** @see ensExit
+ ** @see ensRegistryExit
+ **
+! ** @param [d] Pdba [EnsPDatabaseadaptor*] Ensembl Database Adaptor
+! ** object address
+ **
+ ** @return [void]
+ ** @@
+--- 590,596 ----
+ ** @see ensExit
+ ** @see ensRegistryExit
+ **
+! ** @param [d] Pdba [EnsPDatabaseadaptor*] Ensembl Database Adaptor address
+ **
+ ** @return [void]
+ ** @@
+***************
+*** 652,659 ****
+ ** @valrule Databaseconnection [EnsPDatabaseconnection]
+ ** Ensembl Database Connection or NULL
+ ** @valrule Species [AjPStr] Species or NULL
+! ** @valrule Group [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+! ** enumeration or ensEDatabaseadaptorGroupNULL
+ ** @valrule Multispecies [AjBool] Multiple species or ajFalse
+ ** @valrule Identifier [ajuint] Species identifier or 0
+ **
+--- 655,662 ----
+ ** @valrule Databaseconnection [EnsPDatabaseconnection]
+ ** Ensembl Database Connection or NULL
+ ** @valrule Species [AjPStr] Species or NULL
+! ** @valrule Group [EnsEDatabaseadaptorGroup]
+! ** Ensembl Database Adaptor Group enumeration or ensEDatabaseadaptorGroupNULL
+ ** @valrule Multispecies [AjBool] Multiple species or ajFalse
+ ** @valrule Identifier [ajuint] Species identifier or 0
+ **
+***************
+*** 693,700 ****
+ ** @cc Bio::EnsEMBL::DBSQL::DBAdaptor::group
+ ** @param [r] dba [const EnsPDatabaseadaptor] Ensembl Database Adaptor
+ **
+! ** @return [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+! ** enumeration or ensEDatabaseadaptorGroupNULL
+ ** @@
+ ******************************************************************************/
+
+--- 696,703 ----
+ ** @cc Bio::EnsEMBL::DBSQL::DBAdaptor::group
+ ** @param [r] dba [const EnsPDatabaseadaptor] Ensembl Database Adaptor
+ **
+! ** @return [EnsEDatabaseadaptorGroup]
+! ** Ensembl Database Adaptor Group enumeration or ensEDatabaseadaptorGroupNULL
+ ** @@
+ ******************************************************************************/
+
+***************
+*** 793,802 ****
+ ** @nam4rule Species Set the species
+ **
+ ** @argrule * dba [EnsPDatabaseadaptor] Ensembl Database Adaptor object
+! ** @argrule Databaseconnection dbc [EnsPDatabaseconnection] Ensembl Database
+! ** Connection
+! ** @argrule Group dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor
+! ** Group enumeration
+ ** @argrule Identifier identifier [ajuint] Species identifier
+ ** @argrule Multispecies multi [AjBool] Multi-species attribute
+ ** @argrule Species species [AjPStr] Species
+--- 796,805 ----
+ ** @nam4rule Species Set the species
+ **
+ ** @argrule * dba [EnsPDatabaseadaptor] Ensembl Database Adaptor object
+! ** @argrule Databaseconnection dbc [EnsPDatabaseconnection]
+! ** Ensembl Database Connection
+! ** @argrule Group dbag [EnsEDatabaseadaptorGroup]
+! ** Ensembl Database Adaptor Group enumeration
+ ** @argrule Identifier identifier [ajuint] Species identifier
+ ** @argrule Multispecies multi [AjBool] Multi-species attribute
+ ** @argrule Species species [AjPStr] Species
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/ensembl/ensdatabaseadaptor.h EMBOSS-6.4.0/ajax/ensembl/ensdatabaseadaptor.h
+*** EMBOSS-6.4.0old/ajax/ensembl/ensdatabaseadaptor.h 2011-07-06 22:50:28.000000000 +0100
+--- EMBOSS-6.4.0/ajax/ensembl/ensdatabaseadaptor.h 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 121,127 ****
+
+ EnsPDatabaseadaptor ensRegistryGetDatabaseadaptor(
+ EnsEDatabaseadaptorGroup dbag,
+! const AjPStr alias);
+
+ EnsPDatabaseadaptor ensRegistryGetReferenceadaptor(EnsPDatabaseadaptor dba);
+
+--- 121,127 ----
+
+ EnsPDatabaseadaptor ensRegistryGetDatabaseadaptor(
+ EnsEDatabaseadaptorGroup dbag,
+! AjPStr alias);
+
+ EnsPDatabaseadaptor ensRegistryGetReferenceadaptor(EnsPDatabaseadaptor dba);
+
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/ensembl/ensregistry.c EMBOSS-6.4.0/ajax/ensembl/ensregistry.c
+*** EMBOSS-6.4.0old/ajax/ensembl/ensregistry.c 2011-07-08 12:43:41.000000000 +0100
+--- EMBOSS-6.4.0/ajax/ensembl/ensregistry.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 569,576 ****
+ const RegistryPQualityCheck rqc,
+ ajuint level);
+
+- static AjPStr registryAliasRegister(const AjPStr alias);
+-
+ static AjBool registryAliasLoadDatabaseconnection(
+ EnsPDatabaseconnection dbc,
+ EnsPDatabaseadaptor dba);
+--- 569,574 ----
+***************
+*** 2029,2034 ****
+--- 2027,2034 ----
+
+ AjBool ensRegistryLoadServername(AjPStr servername)
+ {
++ ajuint dbid = 0;
++
+ AjBool debug = AJFALSE;
+ AjBool registered = AJFALSE;
+
+***************
+*** 2037,2042 ****
+--- 2037,2045 ----
+ AjPList svrnames = NULL;
+ AjPList dbnames = NULL;
+
++ AjPRegexp dbidre = NULL;
++
++ AjPStr dbidstr = NULL;
+ AjPStr dbname = NULL;
+ AjPStr source = NULL;
+ AjPStr svrname = NULL;
+***************
+*** 2059,2064 ****
+--- 2062,2069 ----
+ ** List objects must be re-created and freed for each server.
+ */
+
++ dbidre = ajRegCompC("SpeciesIdentifier=(\\d+)");
++
+ value = ajStrNew();
+
+ svrnames = ajListstrNew();
+***************
+*** 2103,2119 ****
+
+ registrySourceRegister(source, &registered);
+
+ ajStrDel(&source);
+
+ if(registered == ajTrue)
+- {
+- if(debug)
+- ajDebug("ensRegistryLoadServername '%S' already "
+- "registered.\n",
+- svrname);
+-
+ continue;
+- }
+
+ /*
+ ** Create an Ensembl Database Connection to the AJAX Server for
+--- 2108,2122 ----
+
+ registrySourceRegister(source, &registered);
+
++ if((debug == ajTrue) && (registered == ajTrue))
++ ajDebug("ensRegistryLoadServername '%S' already "
++ "registered via source '%S'.\n",
++ svrname, source);
++
+ ajStrDel(&source);
+
+ if(registered == ajTrue)
+ continue;
+
+ /*
+ ** Create an Ensembl Database Connection to the AJAX Server for
+***************
+*** 2150,2189 ****
+
+ dba = ensDatabaseadaptorNewUrl(value);
+
+! if((ensDatabaseadaptorGetMultispecies(dba) == ajTrue) &&
+! (ensDatabaseadaptorGetIdentifier(dba) == 0))
+ {
+ /*
+! ** Expand an Ensembl Database Adaptor representing a
+! ** collection database into species-specific
+! ** Ensembl Database Adaptor objects before registering.
+! ** Delete the Ensembl Database Adaptor for the collection.
+ */
+
+! registryEntryLoadCollection(
+! dbc,
+! ensDatabaseconnectionGetDatabasename(
+! ensDatabaseadaptorGetDatabaseconnection(dba)),
+! ensDatabaseadaptorGetGroup(dba));
+
+! ensDatabaseadaptorDel(&dba);
+! }
+! else
+! {
+! /*
+! ** Register Ensembl Database Adaptor objects for
+! ** multi-species and species-specific databases.
+! ** Add the species as alias if registered or delete the
+! ** Ensembl Database Adaptor if not registered,
+! ** successfully.
+! */
+
+! if(ensRegistryAddDatabaseadaptor(dba))
+! ensRegistryAliasAdd(ensDatabaseadaptorGetSpecies(dba),
+! ensDatabaseadaptorGetSpecies(dba));
+ else
+ ensDatabaseadaptorDel(&dba);
+ }
+ }
+
+ ajListIterDel(&dbniter);
+--- 2153,2216 ----
+
+ dba = ensDatabaseadaptorNewUrl(value);
+
+! if(ensDatabaseadaptorGetMultispecies(dba) == ajTrue)
+ {
+ /*
+! ** For Ensembl Database Adaptors representing collection
+! ** databases, the species name needs resetting to the AJAX
+! ** database name and the species identifier needs parsing
+! ** from the comment field of the AJAX database definition.
+ */
+
+! ensDatabaseadaptorSetSpecies(dba, dbname);
+
+! ajNamSvrGetdbAttrC(svrname, dbname, "comment", &value);
+
+! if(ajRegExec(dbidre, value))
+! {
+! dbid = 0;
+! dbidstr = ajStrNew();
+!
+! ajRegSubI(dbidre, 1, &dbidstr);
+!
+! if(ajStrToUint(dbidstr, &dbid))
+! {
+! ensDatabaseadaptorSetIdentifier(dba, dbid);
+!
+! ajStrDel(&dbidstr);
+! }
+! else
+! {
+! ajDebug("ensRegistryLoadServer could not parse a "
+! "valid unsigned integer from the "
+! "'SpeciesIdentifer=INTEGER' expression in "
+! "the comment field of AJAX database "
+! "definition for Ensembl collection "
+! "database '%S'.\n", dbname);
+!
+! ajStrDel(&dbidstr);
+!
+! ensDatabaseadaptorDel(&dba);
+!
+! continue;
+! }
+! }
+ else
++ {
++ ajDebug("ensRegistryLoadServer could not find a "
++ "'SpeciesIdentifer=INTEGER' entry in the "
++ "comment field of AJAX database "
++ "definition for Ensembl collection "
++ "database '%S'.\n", dbname);
++
+ ensDatabaseadaptorDel(&dba);
++
++ continue;
++ }
+ }
++
++ if(ensRegistryAddDatabaseadaptor(dba) == ajFalse)
++ ensDatabaseadaptorDel(&dba);
+ }
+
+ ajListIterDel(&dbniter);
+***************
+*** 2196,2201 ****
+--- 2223,2230 ----
+ ajListIterDel(&svriter);
+ ajListstrFree(&svrnames);
+
++ ajRegFree(&dbidre);
++
+ ajStrDel(&value);
+
+ if(debug)
+***************
+*** 2370,2439 ****
+
+
+
+- /* @funcstatic registryAliasRegister ******************************************
+- **
+- ** Check, whether an alias name can be resolved directly or after replacing
+- ** underscore characters into a species name. If not, register the alias
+- ** without underscore characters and set the alias with underscores as alias.
+- **
+- ** @param [r] alias [const AjPStr] Alias name
+- **
+- ** @return [AjPStr] Species name or NULL
+- ** @@
+- ******************************************************************************/
+-
+- static AjPStr registryAliasRegister(const AjPStr alias)
+- {
+- AjPStr species = NULL;
+- AjPStr unalias = NULL;
+-
+- if(!(alias && ajStrGetLen(alias)))
+- return NULL;
+-
+- /* Resolve an eventual alias to the species name. */
+-
+- ensRegistryAliasResolve(alias, &species);
+-
+- if(!species)
+- {
+- /*
+- ** If this alias has not been registered before, test if it has been
+- ** registered without underscores.
+- */
+-
+- unalias = ajStrNewS(alias);
+-
+- /*
+- ** FIXME: Since EMBOSS DBNAMES cannot cope with spaces species names
+- ** must include underscores.
+- ajStrExchangeCC(&unalias, "_", " ");
+- */
+-
+- ensRegistryAliasResolve(unalias, &species);
+-
+- if(!species)
+- {
+- /*
+- ** If the alias without underscores has also not been registered
+- ** before, register it as species before registering the one
+- ** with underscores as alias.
+- */
+-
+- ensRegistryAliasAdd(unalias, unalias);
+- ensRegistryAliasAdd(unalias, alias);
+-
+- ensRegistryAliasResolve(alias, &species);
+- }
+-
+- ajStrDel(&unalias);
+- }
+-
+- return species;
+- }
+-
+-
+-
+-
+ /* @func ensRegistryAliasAdd **************************************************
+ **
+ ** Add a Registry Alias entry to the Ensembl Registry.
+--- 2399,2404 ----
+***************
+*** 2861,2868 ****
+
+ ajStrAssignS(&species, line);
+
+- ensRegistryAliasAdd(species, species);
+-
+ block = ajTrue;
+ }
+ }
+--- 2826,2831 ----
+***************
+*** 3387,3394 ****
+ ajSqlcolumnToUint(sqlr, &identifier);
+ ajSqlcolumnToStr(sqlr, &species);
+
+- ensRegistryAliasAdd(species, species);
+-
+ dba = ensRegistryNewDatabaseadaptor(dbc,
+ dbname,
+ species,
+--- 3350,3355 ----
+***************
+*** 3699,3705 ****
+ if(!alias)
+ return NULL;
+
+! species = registryAliasRegister(alias);
+
+ dba = ensDatabaseadaptorNewIni(dbc,
+ database,
+--- 3660,3669 ----
+ if(!alias)
+ return NULL;
+
+! ensRegistryAliasResolve(alias, &species);
+!
+! if(species == NULL)
+! species = alias;
+
+ dba = ensDatabaseadaptorNewIni(dbc,
+ database,
+***************
+*** 3801,3807 ****
+ if(!alias)
+ return NULL;
+
+! species = registryAliasRegister(alias);
+
+ rsa = ensDatabaseadaptorNewIni(dbc,
+ database,
+--- 3765,3774 ----
+ if(!alias)
+ return NULL;
+
+! ensRegistryAliasResolve(alias, &species);
+!
+! if(species == NULL)
+! species = alias;
+
+ rsa = ensDatabaseadaptorNewIni(dbc,
+ database,
+***************
+*** 4517,4529 ****
+ **
+ ** @argrule AllDatabaseadaptors dbag [EnsEDatabaseadaptorGroup]
+ ** Ensembl Database Adaptor Group enumeration
+! ** @argrule AllDatabaseadaptors alias [const AjPStr]
+ ** Ensembl Database Adaptor alias name or species name
+ ** @argrule AllDatabaseadaptors dbas [AjPList] AJAX List of
+ ** Ensembl Database Adaptor objects
+ ** @argrule Databaseadaptor dbag [EnsEDatabaseadaptorGroup]
+ ** Ensembl Database Adaptor Group enumeration
+! ** @argrule Databaseadaptor alias [const AjPStr]
+ ** Ensembl Database Adaptor alias name or species name
+ ** @argrule Referenceadaptor dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
+ **
+--- 4484,4496 ----
+ **
+ ** @argrule AllDatabaseadaptors dbag [EnsEDatabaseadaptorGroup]
+ ** Ensembl Database Adaptor Group enumeration
+! ** @argrule AllDatabaseadaptors alias [AjPStr]
+ ** Ensembl Database Adaptor alias name or species name
+ ** @argrule AllDatabaseadaptors dbas [AjPList] AJAX List of
+ ** Ensembl Database Adaptor objects
+ ** @argrule Databaseadaptor dbag [EnsEDatabaseadaptorGroup]
+ ** Ensembl Database Adaptor Group enumeration
+! ** @argrule Databaseadaptor alias [AjPStr]
+ ** Ensembl Database Adaptor alias name or species name
+ ** @argrule Referenceadaptor dba [EnsPDatabaseadaptor] Ensembl Database Adaptor
+ **
+***************
+*** 4549,4555 ****
+ **
+ ** @param [uN] dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+ ** enumeration
+! ** @param [rN] alias [const AjPStr] Ensembl Database Adaptor alias name or
+ ** species name
+ ** @param [u] dbas [AjPList] AJAX List of Ensembl Database Adaptor objects
+ **
+--- 4516,4522 ----
+ **
+ ** @param [uN] dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+ ** enumeration
+! ** @param [rN] alias [AjPStr] Ensembl Database Adaptor alias name or
+ ** species name
+ ** @param [u] dbas [AjPList] AJAX List of Ensembl Database Adaptor objects
+ **
+***************
+*** 4558,4564 ****
+ ******************************************************************************/
+
+ AjBool ensRegistryGetAllDatabaseadaptors(EnsEDatabaseadaptorGroup dbag,
+! const AjPStr alias,
+ AjPList dbas)
+ {
+ void** keyarray = NULL;
+--- 4525,4531 ----
+ ******************************************************************************/
+
+ AjBool ensRegistryGetAllDatabaseadaptors(EnsEDatabaseadaptorGroup dbag,
+! AjPStr alias,
+ AjPList dbas)
+ {
+ void** keyarray = NULL;
+***************
+*** 4593,4600 ****
+--- 4560,4576 ----
+ if(!dbas)
+ return ajFalse;
+
++ /*
++ ** Resolve an alias name into a valid species name. If the alias did not
++ ** resolve into a species name, use the alias directly. If an alias was
++ ** not passed in, it is still NULL, implying all species.
++ */
++
+ ensRegistryAliasResolve(alias, &species);
+
++ if(species == NULL)
++ species = alias;
++
+ ajTableToarrayKeysValues(registryEntry, &keyarray, &valarray);
+
+ for(i = 0; keyarray[i]; i++)
+***************
+*** 4761,4767 ****
+ ** @cc Bio::EnsEMBL::Registry::get_DBAdaptor
+ ** @param [u] dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+ ** enumeration
+! ** @param [r] alias [const AjPStr] Scientific species name or alias name
+ **
+ ** @return [EnsPDatabaseadaptor] Ensembl Database Adaptor or NULL
+ ** @@
+--- 4737,4743 ----
+ ** @cc Bio::EnsEMBL::Registry::get_DBAdaptor
+ ** @param [u] dbag [EnsEDatabaseadaptorGroup] Ensembl Database Adaptor Group
+ ** enumeration
+! ** @param [r] alias [AjPStr] Scientific species name or alias name
+ **
+ ** @return [EnsPDatabaseadaptor] Ensembl Database Adaptor or NULL
+ ** @@
+***************
+*** 4769,4775 ****
+
+ EnsPDatabaseadaptor ensRegistryGetDatabaseadaptor(
+ EnsEDatabaseadaptorGroup dbag,
+! const AjPStr alias)
+ {
+ AjBool debug = AJFALSE;
+
+--- 4745,4751 ----
+
+ EnsPDatabaseadaptor ensRegistryGetDatabaseadaptor(
+ EnsEDatabaseadaptorGroup dbag,
+! AjPStr alias)
+ {
+ AjBool debug = AJFALSE;
+
+***************
+*** 4797,4804 ****
+--- 4773,4788 ----
+ if(!alias)
+ return NULL;
+
++ /*
++ ** Resolve an alias name into a valid species name. If the alias did not
++ ** resolve into a species name, use the alias directly.
++ */
++
+ ensRegistryAliasResolve(alias, &species);
+
++ if(species == NULL)
++ species = alias;
++
+ if(debug)
+ ajDebug("ensRegistryGetDatabaseadaptor alias '%S' -> species '%S'\n",
+ alias, species);
+diff -c -N --recursive -a EMBOSS-6.4.0old/ajax/ensembl/ensregistry.h EMBOSS-6.4.0/ajax/ensembl/ensregistry.h
+*** EMBOSS-6.4.0old/ajax/ensembl/ensregistry.h 2011-05-25 20:55:04.000000000 +0100
+--- EMBOSS-6.4.0/ajax/ensembl/ensregistry.h 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 116,122 ****
+ AjBool ensRegistryRemoveDatabaseadaptor(EnsPDatabaseadaptor* Pdba);
+
+ AjBool ensRegistryGetAllDatabaseadaptors(EnsEDatabaseadaptorGroup dbag,
+! const AjPStr alias,
+ AjPList dbas);
+
+ AjPStr ensRegistryGetStableidentifierprefix(EnsPDatabaseadaptor dba);
+--- 116,122 ----
+ AjBool ensRegistryRemoveDatabaseadaptor(EnsPDatabaseadaptor* Pdba);
+
+ AjBool ensRegistryGetAllDatabaseadaptors(EnsEDatabaseadaptorGroup dbag,
+! AjPStr alias,
+ AjPList dbas);
+
+ AjPStr ensRegistryGetStableidentifierprefix(EnsPDatabaseadaptor dba);
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/cacheensembl.c EMBOSS-6.4.0/emboss/cacheensembl.c
+*** EMBOSS-6.4.0old/emboss/cacheensembl.c 2011-07-08 17:29:51.000000000 +0100
+--- EMBOSS-6.4.0/emboss/cacheensembl.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 181,186 ****
+--- 181,191 ----
+ ajFmtPrintF(outf, "%S\n", dbname);
+
+ ajFmtPrintF(cachef, "DBNAME %S [\n", dbname);
++
++ if(ensDatabaseadaptorGetMultispecies(dba) == ajTrue)
++ ajFmtPrintF(cachef, " comment: \"SpeciesIdentifier=%u\"\n",
++ ensDatabaseadaptorGetIdentifier(dba));
++
+ ajFmtPrintF(cachef, " release: \"%s\"\n", ensSoftwareGetVersion());
+ ajFmtPrintF(cachef, " server: \"%S\"\n", svrname);
+ ajFmtPrintF(cachef, " url: \"%S\"\n", dbcurl);
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/cirdna.c EMBOSS-6.4.0/emboss/cirdna.c
+*** EMBOSS-6.4.0old/emboss/cirdna.c 2011-05-16 11:17:10.000000000 +0100
+--- EMBOSS-6.4.0/emboss/cirdna.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 970,976 ****
+ {
+ token = ajStrParseC(Name2, ";");
+ /*ajStrExchangeCC(&Name2, ";", " ");*/
+! stringLength = ajGraphicsCalcTextlengthS(token);
+ xy1 = ajGraphicsCalcCoord(xDraw, yDraw, r2Ticks+postext, Angle);
+ xy2 = ajGraphicsCalcCoord(xDraw, yDraw, r2Ticks+postext+stringLength,
+ Angle);
+--- 970,976 ----
+ {
+ token = ajStrParseC(Name2, ";");
+ /*ajStrExchangeCC(&Name2, ";", " ");*/
+! stringLength = mmtolen * ajGraphicsCalcTextlengthS(token);
+ xy1 = ajGraphicsCalcCoord(xDraw, yDraw, r2Ticks+postext, Angle);
+ xy2 = ajGraphicsCalcCoord(xDraw, yDraw, r2Ticks+postext+stringLength,
+ Angle);
+***************
+*** 1029,1034 ****
+--- 1029,1038 ----
+ float stringHeight;
+ float r1Blocks;
+ float r2Blocks;
++ float mmtolen;
++
++ /* radius is 2pi*radius in mm, RealLength in bases */
++ mmtolen = RealLength/(Radius * (float) 2.0 * (float) 3.1416);
+
+ r1Blocks = Radius+((float)1.0*BlockHeight/(float)2);
+ r2Blocks = r1Blocks-BlockHeight;
+***************
+*** 1053,1067 ****
+ ajGraphicsSetFgcolour(Colour);
+ }
+
+! stringLength = cirdna_HorTextPileLengthMax(Name2, NumNames);
+ stringHeight = ajGraphicsCalcTextheight();
+! StartAngle = cirdna_ComputeAngle(RealLength, (To+From)/2+stringLength/2,
+ OriginAngle);
+! EndAngle = cirdna_ComputeAngle(RealLength, (To+From)/2-stringLength/2,
+ OriginAngle);
+
+ if(ajStrMatchCaseC(PosBlocks, "Out") )
+! cirdna_HorTextPile(xDraw, yDraw, r1Blocks+(Adjust*postext), StartAngle,
+ EndAngle, Name2, postext, 1);
+ else
+ cirdna_HorTextPile(xDraw, yDraw,
+--- 1057,1073 ----
+ ajGraphicsSetFgcolour(Colour);
+ }
+
+! stringLength = mmtolen * cirdna_HorTextPileLengthMax(Name2, NumNames);
+ stringHeight = ajGraphicsCalcTextheight();
+! StartAngle = cirdna_ComputeAngle(RealLength,
+! (To+From)/2 + stringLength/2,
+ OriginAngle);
+! EndAngle = cirdna_ComputeAngle(RealLength,
+! (To+From)/2 - stringLength/2,
+ OriginAngle);
+
+ if(ajStrMatchCaseC(PosBlocks, "Out") )
+! cirdna_HorTextPile(xDraw, yDraw, r1Blocks+Adjust*postext, StartAngle,
+ EndAngle, Name2, postext, 1);
+ else
+ cirdna_HorTextPile(xDraw, yDraw,
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/data/Efeatures.gff3protein EMBOSS-6.4.0/emboss/data/Efeatures.gff3protein
+*** EMBOSS-6.4.0old/emboss/data/Efeatures.gff3protein 2009-03-06 12:37:43.000000000 +0000
+--- EMBOSS-6.4.0/emboss/data/Efeatures.gff3protein 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 193,199 ****
+
+ # METAL - Binding site for a metal ion.
+
+! metal_binding SO:0001092 SO:0001092_metal
+ /note
+ /comment
+
+--- 193,199 ----
+
+ # METAL - Binding site for a metal ion.
+
+! polypeptide_metal_contact SO:0001092 SO:0001092_metal
+ /note
+ /comment
+
+***************
+*** 215,225 ****
+ # internal cyclic lactam
+ #SULFATATION Generally of tyrosine
+
+! protein_modification_categorized_by_chemical_process MOD:01156
+! /note
+! /comment
+!
+! post_translational_modification SO:0001089
+ /note
+ /comment
+
+--- 215,221 ----
+ # internal cyclic lactam
+ #SULFATATION Generally of tyrosine
+
+! post_translationally_modified_region MOD:01156 SO:0001089
+ /note
+ /comment
+
+***************
+*** 351,357 ****
+
+ # TURN - DSSP secondary structure
+
+! turn SO:0001128
+ /note
+ /comment
+
+--- 347,353 ----
+
+ # TURN - DSSP secondary structure
+
+! polypeptide_turn_motif SO:0001128
+ /note
+ /comment
+
+***************
+*** 371,377 ****
+ # /comment
+ /ftid
+
+! natural_variant SO:0001147 SO:0001147_variant
+ /note
+ /comment
+ /ftid
+--- 367,373 ----
+ # /comment
+ /ftid
+
+! natural_variant_site SO:0001147 SO:0001147_variant
+ /note
+ /comment
+ /ftid
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/data/Etcode.dat EMBOSS-6.4.0/emboss/data/Etcode.dat
+*** EMBOSS-6.4.0old/emboss/data/Etcode.dat 2003-03-07 09:45:22.000000000 +0000
+--- EMBOSS-6.4.0/emboss/data/Etcode.dat 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 22,27 ****
+--- 22,28 ----
+ 0.25
+ 0.23
+ 0.21
++ 0.19
+ 0.17
+ 0.00
+ #
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/dbiflat.c EMBOSS-6.4.0/emboss/dbiflat.c
+*** EMBOSS-6.4.0old/emboss/dbiflat.c 2011-06-23 19:18:45.000000000 +0100
+--- EMBOSS-6.4.0/emboss/dbiflat.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 91,96 ****
+--- 91,100 ----
+
+ static AjPList* fdl = NULL;
+
++ static AjBool dbiflat_ParseSwiss(AjPFile libr, AjPFile* alistfile,
++ AjBool systemsort, AjPStr* fields,
++ ajint* maxFieldLen, ajuint* countfield,
++ ajint *dpos, AjPStr* myid, AjPList* acl);
+ static AjBool dbiflat_ParseEmbl(AjPFile libr, AjPFile* alistfile,
+ AjBool systemsort, AjPStr* fields,
+ ajint* maxFieldLen, ajuint* countfield,
+***************
+*** 135,141 ****
+ static DbiflatOParser parser[] =
+ {
+ {"EMBL", dbiflat_ParseEmbl},
+! {"SWISS", dbiflat_ParseEmbl},
+ {"GB", dbiflat_ParseGenbank},
+ {"REFSEQ", dbiflat_ParseRefseq},
+ {NULL, NULL}
+--- 139,145 ----
+ static DbiflatOParser parser[] =
+ {
+ {"EMBL", dbiflat_ParseEmbl},
+! {"SWISS", dbiflat_ParseSwiss},
+ {"GB", dbiflat_ParseGenbank},
+ {"REFSEQ", dbiflat_ParseRefseq},
+ {NULL, NULL}
+***************
+*** 596,601 ****
+--- 600,984 ----
+
+
+
++ /* @funcstatic dbiflat_ParseSwiss *********************************************
++ **
++ ** Parse the ID, accession from a SwissProt or UniProtKB entry.
++ **
++ ** Reads to the end of the entry and then returns.
++ **
++ ** @param [u] libr [AjPFile] Input database file
++ ** @param [u] alistfile [AjPFile*] field data files array
++ ** @param [r] systemsort [AjBool] If ajTrue use system sort, else internal sort
++ ** @param [w] fields [AjPStr*] Fields required
++ ** @param [w] maxFieldLen [ajint*] Maximum token length for each field
++ ** @param [w] countfield [ajuint*] Number of tokens for each field
++ ** @param [w] dpos [ajint*] Byte offset
++ ** @param [w] myid [AjPStr*] ID
++ ** @param [w] myfdl [AjPList*] Lists of field values
++ ** @return [AjBool] ajTrue on success.
++ ** @@
++ ******************************************************************************/
++
++ static AjBool dbiflat_ParseSwiss(AjPFile libr, AjPFile* alistfile,
++ AjBool systemsort, AjPStr* fields,
++ ajint* maxFieldLen, ajuint* countfield,
++ ajint* dpos, AjPStr* myid,
++ AjPList* myfdl)
++ {
++ AjPStr tmpacnum = NULL;
++ char* fd;
++ ajint lineType;
++ static ajint numFields;
++ static ajint accfield = -1;
++ static ajint desfield = -1;
++ static ajint keyfield = -1;
++ static ajint taxfield = -1;
++ static ajint svnfield = -1;
++ static AjBool reset = AJTRUE;
++ AjBool svndone = ajFalse;
++ AjBool done = ajFalse;
++ ajint i;
++ ajint lo;
++ ajint hi;
++ ajint fieldwidth;
++ AjPStr tmpac = NULL;
++ AjPStr format = NULL;
++ AjPStr prefix = NULL;
++ const char* p;
++ const char* q;
++ const char* swissprefix[] = {
++ "RecName: ", "AltName: ", "SubName: ",
++ "Includes:", "Contains:", "Flags: ",
++ "Full=", "Short=", "EC=",
++ "Allergen=", "Biotech=", "CD_antigen=", "INN=",
++ NULL
++ };
++ ajuint j;
++
++ if(!fields)
++ {
++ reset = ajTrue;
++ accfield = svnfield = desfield = keyfield = taxfield = -1;
++ return ajFalse;
++ }
++
++ if(reset)
++ {
++ numFields = 0;
++ while(fields[numFields])
++ {
++ countfield[numFields]=0;
++ if(ajStrMatchCaseC(fields[numFields], "acc"))
++ accfield=numFields;
++ else if(ajStrMatchCaseC(fields[numFields], "sv"))
++ svnfield=numFields;
++ else if(ajStrMatchCaseC(fields[numFields], "des"))
++ desfield=numFields;
++ else if(ajStrMatchCaseC(fields[numFields], "key"))
++ keyfield=numFields;
++ else if(ajStrMatchCaseC(fields[numFields], "org"))
++ taxfield=numFields;
++ else
++ ajWarn("EMBL parsing unknown field '%S' ignored",
++ fields[numFields]);
++ numFields++;
++ }
++
++ reset = ajFalse;
++ }
++
++ if(!regEmblType)
++ regEmblType = ajRegCompC("^([A-Z][A-Z]) +");
++
++ if(!regEmblAcc)
++ regEmblAcc = ajRegCompC("([A-Za-z0-9-]+)");
++
++ if(!regEmblWrd)
++ regEmblWrd = ajRegCompC("([A-Za-z0-9_]+)");
++
++ if(!regEmblVer)
++ regEmblVer = ajRegCompC("([A-Za-z0-9_.]+)");
++
++ if(!regEmblPhr)
++ regEmblPhr = ajRegCompC(" *([^;.\n\r]+)");
++
++ if(!regEmblTax)
++ regEmblTax = ajRegCompC(" *([^;.\n\r()]+)");
++
++ if(!regEmblId)
++ regEmblId = ajRegCompC("^ID ([^\\s;]+)(;\\s+SV\\s+(\\d+))?");
++
++ if(!regEmblEnd)
++ regEmblEnd = ajRegCompC("^//");
++
++ *dpos = (ajint) ajFileResetPos(libr); /* Lossy cast */
++
++ while(ajReadline(libr, &rline))
++ {
++ if(ajRegExec(regEmblEnd, rline))
++ {
++ done = ajTrue;
++ break;
++ }
++
++ if(ajRegExec(regEmblType, rline))
++ {
++ ajRegSubI(regEmblType, 1, &typStr);
++ if(ajStrMatchC(typStr, "ID"))
++ lineType = FLATTYPE_ID;
++ else if(ajStrMatchC(typStr, "SV") ||
++ ajStrMatchC(typStr, "IV")) /* emblcds database */
++ lineType = FLATTYPE_VER;
++ else if(ajStrMatchC(typStr, "AC") ||
++ ajStrMatchC(typStr, "PA")) /* emblcds database */
++ lineType = FLATTYPE_ACC;
++ else if(ajStrMatchC(typStr, "DE"))
++ lineType = FLATTYPE_DES;
++ else if(ajStrMatchC(typStr, "KW"))
++ lineType = FLATTYPE_KEY;
++ else if(ajStrMatchC(typStr, "OS"))
++ lineType = FLATTYPE_TAX;
++ else if(ajStrMatchC(typStr, "OC"))
++ lineType = FLATTYPE_TAX;
++ else
++ lineType=FLATTYPE_OTHER;
++
++ if(lineType != FLATTYPE_OTHER)
++ ajRegPost(regEmblType, &tmpline);
++ }
++ else
++ lineType = FLATTYPE_OTHER;
++
++ if(lineType == FLATTYPE_ID)
++ {
++ ajRegExec(regEmblId, rline);
++ ajRegSubI(regEmblId, 1, myid);
++ ajStrFmtUpper(myid);
++ ajDebug("++id '%S'\n", *myid);
++ ajRegSubI(regEmblId, 3, &tmpfd);
++ if(svnfield >= 0 && ajStrGetLen(tmpfd))
++ {
++ ajStrFmtUpper(&tmpfd);
++ ajStrInsertK(&tmpfd, 0, '.');
++ ajStrInsertS(&tmpfd, 0, *myid);
++ /*ajDebug("++sv '%S'\n", tmpfd);*/
++ embDbiMaxlen(&tmpfd, &maxFieldLen[svnfield]);
++
++ countfield[svnfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[svnfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[svnfield], fd);
++ }
++ svndone = ajTrue;
++ }
++ continue;
++ }
++
++ if(lineType == FLATTYPE_ACC && accfield >= 0)
++ {
++ while(ajRegExec(regEmblAcc, tmpline))
++ {
++ ajRegSubI(regEmblAcc, 1, &tmpfd);
++ ajStrFmtUpper(&tmpfd);
++ /*ajDebug("++acc '%S'\n", tmpfd);*/
++
++ if(!tmpacnum)
++ ajStrAssignS(&tmpacnum, tmpfd);
++
++ if((p=strchr(MAJSTRGETPTR(tmpfd),(int)'-')))
++ {
++ q = p;
++ while(isdigit((int)*(--q)));
++ ++q;
++ ajStrAssignSubC(&tmpstr,q,0,(ajint)(p-q-1));
++ ajStrToInt(tmpstr,&lo);
++ fieldwidth = (ajint) (p-q);
++ ajFmtPrintS(&format,"%%S%%0%dd",fieldwidth);
++
++ ++p;
++ q = p;
++ while(!isdigit((int)*q))
++ ++q;
++ sscanf(q,"%d",&hi);
++ ajStrAssignSubC(&prefix,p,0,(ajint)(q-p-1));
++
++ if(systemsort)
++ {
++ for(i=lo;i<=hi;++i)
++ {
++ ajFmtPrintS(&tmpac,MAJSTRGETPTR(format),prefix,i);
++ embDbiMaxlen(&tmpac, &maxFieldLen[accfield]);
++ countfield[accfield]++;
++ ajFmtPrintF(alistfile[accfield],
++ "%S %S\n", *myid, tmpac);
++ }
++ ajStrDel(&tmpac);
++ }
++ else
++ {
++ for(i=lo;i<=hi;++i)
++ {
++ ajFmtPrintS(&tmpac,MAJSTRGETPTR(format),prefix,i);
++ embDbiMaxlen(&tmpac, &maxFieldLen[accfield]);
++ countfield[accfield]++;
++ fd = ajCharNewS(tmpac);
++ ajListPushAppend(myfdl[accfield], fd);
++ }
++ ajStrDel(&tmpac);
++ }
++ ajStrDel(&format);
++ ajStrDel(&prefix);
++ }
++ else {
++ embDbiMaxlen(&tmpfd, &maxFieldLen[accfield]);
++
++ countfield[accfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[accfield],
++ "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[accfield], fd);
++ }
++ }
++ ajRegPost(regEmblAcc, &tmpstr);
++ ajStrAssignS(&tmpline, tmpstr);
++ }
++ continue;
++ }
++ else if(lineType == FLATTYPE_DES && desfield >= 0)
++ {
++ ajStrTrimWhiteStart(&tmpline);
++ for(j=0; swissprefix[j]; j++)
++ {
++ if(ajStrPrefixC(tmpline, swissprefix[j]))
++ ajStrCutStart(&tmpline, strlen(swissprefix[j]));
++ }
++ while(ajRegExec(regEmblWrd, tmpline))
++ {
++ ajRegSubI(regEmblWrd, 1, &tmpfd);
++ ajStrFmtUpper(&tmpfd);
++ /*ajDebug("++des '%S'\n", tmpfd);*/
++ embDbiMaxlen(&tmpfd, &maxFieldLen[desfield]);
++
++ countfield[desfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[desfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[desfield], fd);
++ }
++ ajRegPost(regEmblWrd, &tmpstr);
++ ajStrAssignS(&tmpline, tmpstr);
++ }
++ continue;
++ }
++ else if(lineType == FLATTYPE_VER && svnfield >= 0)
++ {
++ while(ajRegExec(regEmblVer, tmpline))
++ {
++ ajRegSubI(regEmblVer, 1, &tmpfd);
++ ajStrFmtUpper(&tmpfd);
++ /*ajDebug("++sv '%S'\n", tmpfd);*/
++ embDbiMaxlen(&tmpfd, &maxFieldLen[svnfield]);
++
++ countfield[svnfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[svnfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[svnfield], fd);
++ }
++ ajRegPost(regEmblVer, &tmpstr);
++ ajStrAssignS(&tmpline, tmpstr);
++ }
++ svndone = ajTrue;
++ continue;
++ }
++ else if(lineType == FLATTYPE_KEY && keyfield >= 0)
++ {
++ while(ajRegExec(regEmblPhr, tmpline))
++ {
++ ajRegSubI(regEmblPhr, 1, &tmpfd);
++ ajRegPost(regEmblPhr, &tmpstr);
++ ajStrAssignS(&tmpline, tmpstr);
++ ajStrTrimWhiteEnd(&tmpfd);
++ if(!ajStrGetLen(tmpfd))
++ continue;
++ ajStrFmtUpper(&tmpfd);
++ /*ajDebug("++key '%S'\n", tmpfd);*/
++ embDbiMaxlen(&tmpfd, &maxFieldLen[keyfield]);
++
++ countfield[keyfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[keyfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[keyfield], fd);
++ }
++ }
++ continue;
++ }
++ else if(lineType == FLATTYPE_TAX && taxfield >= 0)
++ {
++ while(ajRegExec(regEmblTax, tmpline))
++ {
++ ajRegSubI(regEmblTax, 1, &tmpfd);
++ ajRegPost(regEmblTax, &tmpstr);
++ ajStrAssignS(&tmpline, tmpstr);
++ ajStrFmtUpper(&tmpfd);
++ ajStrTrimWhiteEnd(&tmpfd);
++ if(!ajStrGetLen(tmpfd))
++ continue;
++ /*ajDebug("++tax '%S'\n", tmpfd);*/
++ embDbiMaxlen(&tmpfd, &maxFieldLen[taxfield]);
++
++ countfield[taxfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[taxfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[taxfield], fd);
++ }
++ }
++ continue;
++ }
++ }
++
++ if(!done)
++ return ajFalse;
++
++ if(svnfield >= 0 && !svndone && tmpacnum)
++ {
++ ajFmtPrintS(&tmpfd, "%S.0", tmpacnum);
++ embDbiMaxlen(&tmpfd, &maxFieldLen[svnfield]);
++
++ countfield[svnfield]++;
++ if(systemsort)
++ ajFmtPrintF(alistfile[svnfield], "%S %S\n", *myid, tmpfd);
++ else
++ {
++ fd = ajCharNewS(tmpfd);
++ ajListPushAppend(myfdl[svnfield], fd);
++ }
++ }
++
++ ajStrDel(&tmpacnum);
++
++ return ajTrue;
++ }
++
++
++
++
+ /* @funcstatic dbiflat_ParseEmbl **********************************************
+ **
+ ** Parse the ID, accession from an EMBL entry.
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/dbxflat.c EMBOSS-6.4.0/emboss/dbxflat.c
+*** EMBOSS-6.4.0old/emboss/dbxflat.c 2011-06-23 19:18:45.000000000 +0100
+--- EMBOSS-6.4.0/emboss/dbxflat.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 32,37 ****
+--- 32,38 ----
+ static AjBool dbxflat_ParseFastq(EmbPBtreeEntry entry, AjPFile inf);
+ static AjBool dbxflat_ParseEmbl(EmbPBtreeEntry entry, AjPFile inf);
+ static AjBool dbxflat_ParseGenbank(EmbPBtreeEntry entry, AjPFile inf);
++ static AjBool dbxflat_ParseSwiss(EmbPBtreeEntry entry, AjPFile inf);
+
+ static AjBool dbxflat_NextEntry(EmbPBtreeEntry entry, AjPFile inf);
+
+***************
+*** 76,82 ****
+ static DbxflatOParser parser[] =
+ {
+ {"EMBL", dbxflat_ParseEmbl},
+! {"SWISS", dbxflat_ParseEmbl},
+ {"GB", dbxflat_ParseGenbank},
+ {"REFSEQ", dbxflat_ParseGenbank},
+ {"FASTQ", dbxflat_ParseFastq},
+--- 77,83 ----
+ static DbxflatOParser parser[] =
+ {
+ {"EMBL", dbxflat_ParseEmbl},
+! {"SWISS", dbxflat_ParseSwiss},
+ {"GB", dbxflat_ParseGenbank},
+ {"REFSEQ", dbxflat_ParseGenbank},
+ {"FASTQ", dbxflat_ParseFastq},
+***************
+*** 716,721 ****
+--- 717,817 ----
+
+
+
++ /* @funcstatic dbxflat_ParseSwiss *********************************************
++ **
++ ** Parse the ID, accession from a SwissProt or UniProtKB entry.
++ **
++ ** Reads to the end of the entry and then returns.
++ **
++ ** @param [w] entry [EmbPBtreeEntry] entry
++ ** @param [u] inf [AjPFile] Input file
++ **
++ ** @return [AjBool] ajTrue on success.
++ ** @@
++ ******************************************************************************/
++
++ static AjBool dbxflat_ParseSwiss(EmbPBtreeEntry entry, AjPFile inf)
++ {
++ AjPStr line = NULL;
++ ajlong pos = 0L;
++ const char* swissprefix[] = {
++ "RecName: ", "AltName: ", "SubName: ",
++ "Includes:", "Contains:", "Flags: ",
++ "Full=", "Short=", "EC=",
++ "Allergen=", "Biotech=", "CD_antigen=", "INN=",
++ NULL
++ };
++ ajuint i;
++
++ if(!dbxflat_wrdexp)
++ dbxflat_wrdexp = ajRegCompC("([A-Za-z0-9_-]+)");
++
++ line = ajStrNewC("");
++
++ while(!ajStrPrefixC(line,"//"))
++ {
++ pos = ajFileResetPos(inf);
++
++ if(!ajReadlineTrim(inf,&line))
++ {
++ ajStrDel(&line);
++ return ajFalse;
++ }
++ if(ajStrPrefixC(line,"ID"))
++ {
++ entry->fpos = pos;
++ ajFmtScanS(line,"%*S%S",&entry->id);
++ ajStrTrimEndC(&entry->id, ";");
++ /*
++ ++global;
++ printf("%d. %s\n",global,ajStrGetPtr(entry->id));
++ */
++ if(svfield)
++ embBtreeEmblSV(line,svfield->data);
++ }
++
++
++ if(svfield)
++ if(ajStrPrefixC(line,"SV") ||
++ ajStrPrefixC(line,"IV")) /* emblcds database format */
++ embBtreeEmblAC(line,svfield->data);
++
++ if(accfield)
++ if(ajStrPrefixC(line,"AC") ||
++ ajStrPrefixC(line,"PA")) /* emblcds database format */
++ embBtreeEmblAC(line,accfield->data);
++
++ if(keyfield)
++ if(ajStrPrefixC(line,"KW"))
++ embBtreeEmblKW(line,keyfield->data,keyfield->len);
++
++ if(desfield)
++ if(ajStrPrefixC(line,"DE"))
++ {
++ ajStrCutStart(&line, 5);
++ ajStrTrimWhiteStart(&line);
++ for(i=0; swissprefix[i]; i++)
++ {
++ if(ajStrPrefixC(line, swissprefix[i]))
++ ajStrCutStart(&line, strlen(swissprefix[i]));
++ }
++ embBtreeParseField(line,dbxflat_wrdexp, desfield);
++ }
++
++ if(orgfield)
++ if(ajStrPrefixC(line,"OC") || ajStrPrefixC(line,"OS"))
++ embBtreeEmblTX(line,orgfield->data,orgfield->len);
++ }
++
++
++ ajStrDel(&line);
++
++ return ajTrue;
++ }
++
++
++
++
+ /* @funcstatic dbxflat_NextEntry ********************************************
+ **
+ ** Parse the next entry from a flatfile
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/dbxresource.c EMBOSS-6.4.0/emboss/dbxresource.c
+*** EMBOSS-6.4.0old/emboss/dbxresource.c 2011-06-23 19:18:45.000000000 +0100
+--- EMBOSS-6.4.0/emboss/dbxresource.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 535,540 ****
+--- 535,553 ----
+ if(urlfield && !ajStrMatchC(rest, "None"))
+ embBtreeParseField(rest, dbxresource_wrdexp, urlfield);
+ }
++ else if(ajStrMatchC(name, "NARCat"))
++ {
++ if(catfield && !ajStrMatchC(rest, "None"))
++ {
++ handle = ajStrTokenNewC(rest, "|");
++ while(ajStrTokenNextParse(&handle, &token))
++ {
++ ajStrRemoveWhiteExcess(&token);
++ ajListstrPush(catfield->data,ajStrNewS(token));
++ }
++ ajStrTokenDel(&handle);
++ }
++ }
+ else if(ajStrSuffixC(name, "Cat"))
+ {
+ if(catfield && !ajStrMatchC(rest, "None"))
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/drfinddata.c EMBOSS-6.4.0/emboss/drfinddata.c
+*** EMBOSS-6.4.0old/emboss/drfinddata.c 2011-05-25 10:10:32.000000000 +0100
+--- EMBOSS-6.4.0/emboss/drfinddata.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 155,162 ****
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' category '%S'\n",
+! resource->Id, resource->Cat);
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+--- 155,163 ----
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' categories %u\n",
+! resource->Id,
+! ajListGetLength(resource->Cat));
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/drfindformat.c EMBOSS-6.4.0/emboss/drfindformat.c
+*** EMBOSS-6.4.0old/emboss/drfindformat.c 2011-05-25 13:41:47.000000000 +0100
+--- EMBOSS-6.4.0/emboss/drfindformat.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 152,159 ****
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' category '%S'\n",
+! resource->Id, resource->Cat);
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+--- 152,160 ----
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' categories %u\n",
+! resource->Id,
+! ajListGetLength(resource->Cat));
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/drfindid.c EMBOSS-6.4.0/emboss/drfindid.c
+*** EMBOSS-6.4.0old/emboss/drfindid.c 2011-05-25 13:41:47.000000000 +0100
+--- EMBOSS-6.4.0/emboss/drfindid.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 152,159 ****
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' category '%S'\n",
+! resource->Id, resource->Cat);
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+--- 152,160 ----
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' categories %u\n",
+! resource->Id,
+! ajListGetLength(resource->Cat));
+ ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/drfindresource.c EMBOSS-6.4.0/emboss/drfindresource.c
+*** EMBOSS-6.4.0old/emboss/drfindresource.c 2011-04-12 17:30:58.000000000 +0100
+--- EMBOSS-6.4.0/emboss/drfindresource.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 162,170 ****
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' category '%S'\n",
+! resource->Id, resource->Cat);
+! ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+ }
+--- 162,171 ----
+ {
+ if(!ajTableMatchS(foundtable, resource->Id))
+ {
+! ajDebug("drcat id '%S' categories %u\n",
+! resource->Id,
+! ajListGetLength(resource->Cat));
+! ajResourceoutWrite(outfile, resource);
+ ajTablePut(foundtable, ajStrNewS(resource->Id),
+ (void *) 1);
+ }
+diff -c -N --recursive -a EMBOSS-6.4.0old/emboss/server.ensemblgenomes EMBOSS-6.4.0/emboss/server.ensemblgenomes
+*** EMBOSS-6.4.0old/emboss/server.ensemblgenomes 2011-07-06 23:14:17.000000000 +0100
+--- EMBOSS-6.4.0/emboss/server.ensemblgenomes 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 1,4 ****
+! # server.ensemblgenomes 2011-07-05 00:00:00
+ # Automatically generated by cacheensembl for server 'ensemblgenomes'.
+
+ DBNAME acyrthosiphon_pisum [
+--- 1,4 ----
+! # server.ensemblgenomes 2011-07-27 00:00:00
+ # Automatically generated by cacheensembl for server 'ensemblgenomes'.
+
+ DBNAME acyrthosiphon_pisum [
+***************
+*** 194,199 ****
+--- 194,200 ----
+ ALIAS 15368 brachypodium_distachyon
+
+ DBNAME b_afzelii [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 202,207 ****
+--- 203,209 ----
+ ALIAS 390236 b_afzelii
+
+ DBNAME b_amyloliquefaciens [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 210,215 ****
+--- 212,218 ----
+ ALIAS 326423 b_amyloliquefaciens
+
+ DBNAME b_anthracis_a0248 [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 218,223 ****
+--- 221,227 ----
+ ALIAS 592021 b_anthracis_a0248
+
+ DBNAME b_anthracis_ames [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 226,231 ****
+--- 230,236 ----
+ ALIAS 198094 b_anthracis_ames
+
+ DBNAME b_anthracis_ames_ancestor [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 234,239 ****
+--- 239,245 ----
+ ALIAS 261594 b_anthracis_ames_ancestor
+
+ DBNAME b_anthracis_cdc_684 [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 242,247 ****
+--- 248,254 ----
+ ALIAS 568206 b_anthracis_cdc_684
+
+ DBNAME b_anthracis_sterne [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 250,255 ****
+--- 257,263 ----
+ ALIAS 260799 b_anthracis_sterne
+
+ DBNAME b_aphidicola_5a [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 258,263 ****
+--- 266,272 ----
+ ALIAS 563178 b_aphidicola_5a
+
+ DBNAME b_aphidicola_baizongia [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 266,271 ****
+--- 275,281 ----
+ ALIAS 224915 b_aphidicola_baizongia
+
+ DBNAME b_aphidicola_cinara [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 274,279 ****
+--- 284,290 ----
+ ALIAS 372461 b_aphidicola_cinara
+
+ DBNAME b_aphidicola_schizaphis [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 282,287 ****
+--- 293,299 ----
+ ALIAS 198804 b_aphidicola_schizaphis
+
+ DBNAME b_aphidicola_tokyo_1998 [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 290,295 ****
+--- 302,308 ----
+ ALIAS 107806 b_aphidicola_tokyo_1998
+
+ DBNAME b_aphidicola_tuc7 [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/buchnera_collection_core_9_62_1a"
+***************
+*** 298,303 ****
+--- 311,317 ----
+ ALIAS 561501 b_aphidicola_tuc7
+
+ DBNAME b_burgdorferi_dsm_4680 [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 306,311 ****
+--- 320,326 ----
+ ALIAS 224326 b_burgdorferi_dsm_4680
+
+ DBNAME b_burgdorferi_zs7 [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 314,319 ****
+--- 329,335 ----
+ ALIAS 445985 b_burgdorferi_zs7
+
+ DBNAME b_cereus_03bb102 [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 322,327 ****
+--- 338,344 ----
+ ALIAS 572264 b_cereus_03bb102
+
+ DBNAME b_cereus_172560w [
++ comment: "SpeciesIdentifier=50"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 330,335 ****
+--- 347,353 ----
+ ALIAS 526967 b_cereus_172560w
+
+ DBNAME b_cereus_95_8201 [
++ comment: "SpeciesIdentifier=36"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 338,343 ****
+--- 356,362 ----
+ ALIAS 526979 b_cereus_95_8201
+
+ DBNAME b_cereus_ah1271 [
++ comment: "SpeciesIdentifier=71"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 346,351 ****
+--- 365,371 ----
+ ALIAS 526992 b_cereus_ah1271
+
+ DBNAME b_cereus_ah1272 [
++ comment: "SpeciesIdentifier=53"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 354,359 ****
+--- 374,380 ----
+ ALIAS 526993 b_cereus_ah1272
+
+ DBNAME b_cereus_ah1273 [
++ comment: "SpeciesIdentifier=43"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 362,367 ****
+--- 383,389 ----
+ ALIAS 526994 b_cereus_ah1273
+
+ DBNAME b_cereus_ah187 [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 370,375 ****
+--- 392,398 ----
+ ALIAS 405534 b_cereus_ah187
+
+ DBNAME b_cereus_ah603 [
++ comment: "SpeciesIdentifier=49"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 378,383 ****
+--- 401,407 ----
+ ALIAS 526990 b_cereus_ah603
+
+ DBNAME b_cereus_ah621 [
++ comment: "SpeciesIdentifier=46"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 386,391 ****
+--- 410,416 ----
+ ALIAS 526972 b_cereus_ah621
+
+ DBNAME b_cereus_ah676 [
++ comment: "SpeciesIdentifier=38"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 394,399 ****
+--- 419,425 ----
+ ALIAS 526991 b_cereus_ah676
+
+ DBNAME b_cereus_ah820 [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 402,407 ****
+--- 428,434 ----
+ ALIAS 405535 b_cereus_ah820
+
+ DBNAME b_cereus_atcc_10876 [
++ comment: "SpeciesIdentifier=70"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 410,415 ****
+--- 437,443 ----
+ ALIAS 526980 b_cereus_atcc_10876
+
+ DBNAME b_cereus_atcc_10987 [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 418,423 ****
+--- 446,452 ----
+ ALIAS 222523 b_cereus_atcc_10987
+
+ DBNAME b_cereus_atcc_14579 [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 426,431 ****
+--- 455,461 ----
+ ALIAS 226900 b_cereus_atcc_14579
+
+ DBNAME b_cereus_atcc_4342 [
++ comment: "SpeciesIdentifier=72"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 434,439 ****
+--- 464,470 ----
+ ALIAS 526977 b_cereus_atcc_4342
+
+ DBNAME b_cereus_b4264 [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 442,447 ****
+--- 473,479 ----
+ ALIAS 405532 b_cereus_b4264
+
+ DBNAME b_cereus_bdrd_bcer4 [
++ comment: "SpeciesIdentifier=62"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 450,455 ****
+--- 482,488 ----
+ ALIAS 526978 b_cereus_bdrd_bcer4
+
+ DBNAME b_cereus_bdrd_st196 [
++ comment: "SpeciesIdentifier=34"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 458,463 ****
+--- 491,497 ----
+ ALIAS 526976 b_cereus_bdrd_st196
+
+ DBNAME b_cereus_bdrd_st24 [
++ comment: "SpeciesIdentifier=37"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 466,471 ****
+--- 500,506 ----
+ ALIAS 526974 b_cereus_bdrd_st24
+
+ DBNAME b_cereus_bdrd_st26 [
++ comment: "SpeciesIdentifier=39"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 474,479 ****
+--- 509,515 ----
+ ALIAS 526975 b_cereus_bdrd_st26
+
+ DBNAME b_cereus_bgsc_6e1 [
++ comment: "SpeciesIdentifier=67"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 482,487 ****
+--- 518,524 ----
+ ALIAS 526970 b_cereus_bgsc_6e1
+
+ DBNAME b_cereus_cytotoxis [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 490,495 ****
+--- 527,533 ----
+ ALIAS 315749 b_cereus_cytotoxis
+
+ DBNAME b_cereus_f65185 [
++ comment: "SpeciesIdentifier=30"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 498,503 ****
+--- 536,542 ----
+ ALIAS 526989 b_cereus_f65185
+
+ DBNAME b_cereus_g9842 [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 506,511 ****
+--- 545,551 ----
+ ALIAS 405531 b_cereus_g9842
+
+ DBNAME b_cereus_m1293 [
++ comment: "SpeciesIdentifier=40"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 514,519 ****
+--- 554,560 ----
+ ALIAS 526973 b_cereus_m1293
+
+ DBNAME b_cereus_mm1550 [
++ comment: "SpeciesIdentifier=65"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 522,527 ****
+--- 563,569 ----
+ ALIAS 526969 b_cereus_mm1550
+
+ DBNAME b_cereus_mm3 [
++ comment: "SpeciesIdentifier=52"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 530,535 ****
+--- 572,578 ----
+ ALIAS 526971 b_cereus_mm3
+
+ DBNAME b_cereus_q1 [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 538,543 ****
+--- 581,587 ----
+ ALIAS 361100 b_cereus_q1
+
+ DBNAME b_cereus_r309803 [
++ comment: "SpeciesIdentifier=33"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 546,551 ****
+--- 590,596 ----
+ ALIAS 526968 b_cereus_r309803
+
+ DBNAME b_cereus_rock1_15 [
++ comment: "SpeciesIdentifier=42"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 554,559 ****
+--- 599,605 ----
+ ALIAS 526982 b_cereus_rock1_15
+
+ DBNAME b_cereus_rock1_3 [
++ comment: "SpeciesIdentifier=78"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 562,567 ****
+--- 608,614 ----
+ ALIAS 526981 b_cereus_rock1_3
+
+ DBNAME b_cereus_rock3_28 [
++ comment: "SpeciesIdentifier=57"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 570,575 ****
+--- 617,623 ----
+ ALIAS 526983 b_cereus_rock3_28
+
+ DBNAME b_cereus_rock3_29 [
++ comment: "SpeciesIdentifier=51"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 578,583 ****
+--- 626,632 ----
+ ALIAS 526984 b_cereus_rock3_29
+
+ DBNAME b_cereus_rock3_42 [
++ comment: "SpeciesIdentifier=77"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 586,591 ****
+--- 635,641 ----
+ ALIAS 526985 b_cereus_rock3_42
+
+ DBNAME b_cereus_rock3_44 [
++ comment: "SpeciesIdentifier=48"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 594,599 ****
+--- 644,650 ----
+ ALIAS 526986 b_cereus_rock3_44
+
+ DBNAME b_cereus_rock4_18 [
++ comment: "SpeciesIdentifier=55"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 602,607 ****
+--- 653,659 ----
+ ALIAS 526988 b_cereus_rock4_18
+
+ DBNAME b_cereus_rock4_2 [
++ comment: "SpeciesIdentifier=76"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 610,615 ****
+--- 662,668 ----
+ ALIAS 526987 b_cereus_rock4_2
+
+ DBNAME b_cereus_var_anthracis [
++ comment: "SpeciesIdentifier=69"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 618,623 ****
+--- 671,677 ----
+ ALIAS 637380 b_cereus_var_anthracis
+
+ DBNAME b_cereus_zk [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 626,631 ****
+--- 680,686 ----
+ ALIAS 288681 b_cereus_zk
+
+ DBNAME b_clausii [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 634,639 ****
+--- 689,695 ----
+ ALIAS 66692 b_clausii
+
+ DBNAME b_duttonii [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 642,647 ****
+--- 698,704 ----
+ ALIAS 412419 b_duttonii
+
+ DBNAME b_garinii [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 650,655 ****
+--- 707,713 ----
+ ALIAS 290434 b_garinii
+
+ DBNAME b_halodurans [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 658,663 ****
+--- 716,722 ----
+ ALIAS 272558 b_halodurans
+
+ DBNAME b_hermsii [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 666,671 ****
+--- 725,731 ----
+ ALIAS 314723 b_hermsii
+
+ DBNAME b_licheniformis_goettingen [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 674,679 ****
+--- 734,740 ----
+ ALIAS 279010 b_licheniformis_goettingen
+
+ DBNAME b_licheniformis_novozymes [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 681,686 ****
+--- 742,748 ----
+
+
+ DBNAME b_megaterium_atcc_12872 [
++ comment: "SpeciesIdentifier=73"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 689,694 ****
+--- 751,757 ----
+ ALIAS 545693 b_megaterium_atcc_12872
+
+ DBNAME b_megaterium_dsm_319 [
++ comment: "SpeciesIdentifier=80"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 697,702 ****
+--- 760,766 ----
+ ALIAS 592022 b_megaterium_dsm_319
+
+ DBNAME b_mycoides_dsm_2048 [
++ comment: "SpeciesIdentifier=47"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 705,710 ****
+--- 769,775 ----
+ ALIAS 526997 b_mycoides_dsm_2048
+
+ DBNAME b_mycoides_rock1_4 [
++ comment: "SpeciesIdentifier=28"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 713,718 ****
+--- 778,784 ----
+ ALIAS 526998 b_mycoides_rock1_4
+
+ DBNAME b_mycoides_rock3_17 [
++ comment: "SpeciesIdentifier=59"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 721,726 ****
+--- 787,793 ----
+ ALIAS 526999 b_mycoides_rock3_17
+
+ DBNAME b_pseudofirmus [
++ comment: "SpeciesIdentifier=54"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 729,734 ****
+--- 796,802 ----
+ ALIAS 398511 b_pseudofirmus
+
+ DBNAME b_pseudomycoides [
++ comment: "SpeciesIdentifier=58"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 737,742 ****
+--- 805,811 ----
+ ALIAS 527000 b_pseudomycoides
+
+ DBNAME b_pumilus [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 745,750 ****
+--- 814,820 ----
+ ALIAS 315750 b_pumilus
+
+ DBNAME b_recurrentis [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 753,758 ****
+--- 823,829 ----
+ ALIAS 412418 b_recurrentis
+
+ DBNAME b_selenitireducens [
++ comment: "SpeciesIdentifier=32"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 761,766 ****
+--- 832,838 ----
+ ALIAS 439292 b_selenitireducens
+
+ DBNAME b_subtilis [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 769,774 ****
+--- 841,847 ----
+ ALIAS 224308 b_subtilis
+
+ DBNAME b_thuringiensis [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 777,782 ****
+--- 850,856 ----
+ ALIAS 412694 b_thuringiensis
+
+ DBNAME b_thuringiensis_atcc_10792 [
++ comment: "SpeciesIdentifier=41"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 785,790 ****
+--- 859,865 ----
+ ALIAS 527031 b_thuringiensis_atcc_10792
+
+ DBNAME b_thuringiensis_bgsc_4aj1 [
++ comment: "SpeciesIdentifier=75"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 793,798 ****
+--- 868,874 ----
+ ALIAS 527022 b_thuringiensis_bgsc_4aj1
+
+ DBNAME b_thuringiensis_bgsc_4aw1_andalous [
++ comment: "SpeciesIdentifier=56"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 801,806 ****
+--- 877,883 ----
+ ALIAS 527032 b_thuringiensis_bgsc_4aw1_andalous
+
+ DBNAME b_thuringiensis_bgsc_4ba1_pondicheri [
++ comment: "SpeciesIdentifier=29"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 809,814 ****
+--- 886,892 ----
+ ALIAS 527029 b_thuringiensis_bgsc_4ba1_pondicheri
+
+ DBNAME b_thuringiensis_bgsc_4bd1_huazhong [
++ comment: "SpeciesIdentifier=31"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 817,822 ****
+--- 895,901 ----
+ ALIAS 527030 b_thuringiensis_bgsc_4bd1_huazhong
+
+ DBNAME b_thuringiensis_bgsc_4cc1_pulsiensis [
++ comment: "SpeciesIdentifier=35"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 825,830 ****
+--- 904,910 ----
+ ALIAS 527028 b_thuringiensis_bgsc_4cc1_pulsiensis
+
+ DBNAME b_thuringiensis_bgsc_4y1_tochigiensis [
++ comment: "SpeciesIdentifier=44"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 833,838 ****
+--- 913,919 ----
+ ALIAS 527024 b_thuringiensis_bgsc_4y1_tochigiensis
+
+ DBNAME b_thuringiensis_bmb171 [
++ comment: "SpeciesIdentifier=68"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 841,846 ****
+--- 922,928 ----
+ ALIAS 714359 b_thuringiensis_bmb171
+
+ DBNAME b_thuringiensis_bt407 [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 849,854 ****
+--- 931,937 ----
+ ALIAS 527021 b_thuringiensis_bt407
+
+ DBNAME b_thuringiensis_ibl200 [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 857,862 ****
+--- 940,946 ----
+ ALIAS 527019 b_thuringiensis_ibl200
+
+ DBNAME b_thuringiensis_ibl4222 [
++ comment: "SpeciesIdentifier=64"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 865,870 ****
+--- 949,955 ----
+ ALIAS 527020 b_thuringiensis_ibl4222
+
+ DBNAME b_thuringiensis_konkukian [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 873,878 ****
+--- 958,964 ----
+ ALIAS 281309 b_thuringiensis_konkukian
+
+ DBNAME b_thuringiensis_t01001 [
++ comment: "SpeciesIdentifier=60"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 881,886 ****
+--- 967,973 ----
+ ALIAS 527025 b_thuringiensis_t01001
+
+ DBNAME b_thuringiensis_t03a001_kurstaki [
++ comment: "SpeciesIdentifier=63"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 889,894 ****
+--- 976,982 ----
+ ALIAS 527023 b_thuringiensis_t03a001_kurstaki
+
+ DBNAME b_thuringiensis_t04001_sotto [
++ comment: "SpeciesIdentifier=61"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 897,902 ****
+--- 985,991 ----
+ ALIAS 527026 b_thuringiensis_t04001_sotto
+
+ DBNAME b_thuringiensis_t13001_pakistani [
++ comment: "SpeciesIdentifier=45"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 905,910 ****
+--- 994,1000 ----
+ ALIAS 527027 b_thuringiensis_t13001_pakistani
+
+ DBNAME b_turicatae [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/borrelia_collection_core_9_62_1a"
+***************
+*** 913,918 ****
+--- 1003,1009 ----
+ ALIAS 314724 b_turicatae
+
+ DBNAME b_tusciae [
++ comment: "SpeciesIdentifier=79"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 921,926 ****
+--- 1012,1018 ----
+ ALIAS 562970 b_tusciae
+
+ DBNAME b_weihenstephanensis [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/bacillus_collection_core_9_62_4a"
+***************
+*** 1221,1226 ****
+--- 1313,1319 ----
+ ]
+
+ DBNAME e_coli_042 [
++ comment: "SpeciesIdentifier=43"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1229,1240 ****
+--- 1322,1335 ----
+ ALIAS 216592 e_coli_042
+
+ DBNAME e_coli_042_funcgen [
++ comment: "SpeciesIdentifier=43"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_55989 [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1243,1254 ****
+--- 1338,1351 ----
+ ALIAS 585055 e_coli_55989
+
+ DBNAME e_coli_55989_funcgen [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_atcc_27325 [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1257,1268 ****
+--- 1354,1367 ----
+ ALIAS 316407 e_coli_atcc_27325
+
+ DBNAME e_coli_atcc_27325_funcgen [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_atcc_33849 [
++ comment: "SpeciesIdentifier=39"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1271,1282 ****
+--- 1370,1383 ----
+ ALIAS 536056 e_coli_atcc_33849
+
+ DBNAME e_coli_atcc_33849_funcgen [
++ comment: "SpeciesIdentifier=39"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_atcc_8739 [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1285,1296 ****
+--- 1386,1399 ----
+ ALIAS 481805 e_coli_atcc_8739
+
+ DBNAME e_coli_atcc_8739_funcgen [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_bl21 [
++ comment: "SpeciesIdentifier=32"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1299,1310 ****
+--- 1402,1415 ----
+ ALIAS 511693 e_coli_bl21
+
+ DBNAME e_coli_bl21_funcgen [
++ comment: "SpeciesIdentifier=32"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_bl21_de3_jgi [
++ comment: "SpeciesIdentifier=40"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1313,1324 ****
+--- 1418,1431 ----
+ ALIAS 866768 e_coli_bl21_de3_jgi
+
+ DBNAME e_coli_bl21_de3_jgi_funcgen [
++ comment: "SpeciesIdentifier=40"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_bl21_de3_kribb [
++ comment: "SpeciesIdentifier=38"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1327,1338 ****
+--- 1434,1447 ----
+ ALIAS 469008 e_coli_bl21_de3_kribb
+
+ DBNAME e_coli_bl21_de3_kribb_funcgen [
++ comment: "SpeciesIdentifier=38"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_bw2952 [
++ comment: "SpeciesIdentifier=31"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1341,1352 ****
+--- 1450,1463 ----
+ ALIAS 595496 e_coli_bw2952
+
+ DBNAME e_coli_bw2952_funcgen [
++ comment: "SpeciesIdentifier=31"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_dh10b [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1355,1366 ****
+--- 1466,1479 ----
+ ALIAS 316385 e_coli_dh10b
+
+ DBNAME e_coli_dh10b_funcgen [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_ec4115 [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1369,1380 ****
+--- 1482,1495 ----
+ ALIAS 444450 e_coli_ec4115
+
+ DBNAME e_coli_ec4115_funcgen [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_edl933 [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1383,1394 ****
+--- 1498,1511 ----
+ ALIAS 155864 e_coli_edl933
+
+ DBNAME e_coli_edl933_funcgen [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_k12 [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1397,1408 ****
+--- 1514,1527 ----
+ ALIAS 511145 e_coli_k12
+
+ DBNAME e_coli_k12_funcgen [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o103_h2 [
++ comment: "SpeciesIdentifier=36"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1411,1422 ****
+--- 1530,1543 ----
+ ALIAS 585395 e_coli_o103_h2
+
+ DBNAME e_coli_o103_h2_funcgen [
++ comment: "SpeciesIdentifier=36"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o111_h_ [
++ comment: "SpeciesIdentifier=37"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1425,1436 ****
+--- 1546,1559 ----
+ ALIAS 585396 e_coli_o111_h_
+
+ DBNAME e_coli_o111_h__funcgen [
++ comment: "SpeciesIdentifier=37"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o127_h6 [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1439,1450 ****
+--- 1562,1575 ----
+ ALIAS 574521 e_coli_o127_h6
+
+ DBNAME e_coli_o127_h6_funcgen [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o139_h28 [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1453,1464 ****
+--- 1578,1591 ----
+ ALIAS 331111 e_coli_o139_h28
+
+ DBNAME e_coli_o139_h28_funcgen [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o157_h7_tw14588 [
++ comment: "SpeciesIdentifier=45"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1467,1478 ****
+--- 1594,1607 ----
+ ALIAS 502346 e_coli_o157_h7_tw14588
+
+ DBNAME e_coli_o157_h7_tw14588_funcgen [
++ comment: "SpeciesIdentifier=45"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o17_k52_h18 [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1481,1492 ****
+--- 1610,1623 ----
+ ALIAS 585056 e_coli_o17_k52_h18
+
+ DBNAME e_coli_o17_k52_h18_funcgen [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o18_k1_h7 [
++ comment: "SpeciesIdentifier=46"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1495,1506 ****
+--- 1626,1639 ----
+ ALIAS 714962 e_coli_o18_k1_h7
+
+ DBNAME e_coli_o18_k1_h7_funcgen [
++ comment: "SpeciesIdentifier=46"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o1_k1_apec [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1509,1520 ****
+--- 1642,1655 ----
+ ALIAS 405955 e_coli_o1_k1_apec
+
+ DBNAME e_coli_o1_k1_apec_funcgen [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o26_h11 [
++ comment: "SpeciesIdentifier=35"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1523,1534 ****
+--- 1658,1671 ----
+ ALIAS 573235 e_coli_o26_h11
+
+ DBNAME e_coli_o26_h11_funcgen [
++ comment: "SpeciesIdentifier=35"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o45_k1 [
++ comment: "SpeciesIdentifier=28"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1537,1548 ****
+--- 1674,1687 ----
+ ALIAS 585035 e_coli_o45_k1
+
+ DBNAME e_coli_o45_k1_funcgen [
++ comment: "SpeciesIdentifier=28"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o55_h7 [
++ comment: "SpeciesIdentifier=44"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1551,1562 ****
+--- 1690,1703 ----
+ ALIAS 701177 e_coli_o55_h7
+
+ DBNAME e_coli_o55_h7_funcgen [
++ comment: "SpeciesIdentifier=44"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o6 [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1565,1576 ****
+--- 1706,1719 ----
+ ALIAS 217992 e_coli_o6
+
+ DBNAME e_coli_o6_funcgen [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o6_k15_h31 [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1579,1590 ****
+--- 1722,1735 ----
+ ALIAS 362663 e_coli_o6_k15_h31
+
+ DBNAME e_coli_o6_k15_h31_funcgen [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o7_k1 [
++ comment: "SpeciesIdentifier=30"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1593,1604 ****
+--- 1738,1751 ----
+ ALIAS 585057 e_coli_o7_k1
+
+ DBNAME e_coli_o7_k1_funcgen [
++ comment: "SpeciesIdentifier=30"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o8 [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1607,1618 ****
+--- 1754,1767 ----
+ ALIAS 585034 e_coli_o8
+
+ DBNAME e_coli_o8_funcgen [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o81 [
++ comment: "SpeciesIdentifier=29"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1621,1632 ****
+--- 1770,1783 ----
+ ALIAS 585397 e_coli_o81
+
+ DBNAME e_coli_o81_funcgen [
++ comment: "SpeciesIdentifier=29"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_o9_h4 [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1635,1646 ****
+--- 1786,1799 ----
+ ALIAS 331112 e_coli_o9_h4
+
+ DBNAME e_coli_o9_h4_funcgen [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_rel606 [
++ comment: "SpeciesIdentifier=33"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1649,1660 ****
+--- 1802,1815 ----
+ ALIAS 413997 e_coli_rel606
+
+ DBNAME e_coli_rel606_funcgen [
++ comment: "SpeciesIdentifier=33"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_sakai [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1663,1674 ****
+--- 1818,1831 ----
+ ALIAS 386585 e_coli_sakai
+
+ DBNAME e_coli_sakai_funcgen [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_se11 [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1677,1688 ****
+--- 1834,1847 ----
+ ALIAS 409438 e_coli_se11
+
+ DBNAME e_coli_se11_funcgen [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_se15 [
++ comment: "SpeciesIdentifier=42"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1691,1702 ****
+--- 1850,1863 ----
+ ALIAS 431946 e_coli_se15
+
+ DBNAME e_coli_se15_funcgen [
++ comment: "SpeciesIdentifier=42"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_sms_3_5 [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1705,1716 ****
+--- 1866,1879 ----
+ ALIAS 439855 e_coli_sms_3_5
+
+ DBNAME e_coli_sms_3_5_funcgen [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_tw14359 [
++ comment: "SpeciesIdentifier=34"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1719,1730 ****
+--- 1882,1895 ----
+ ALIAS 544404 e_coli_tw14359
+
+ DBNAME e_coli_tw14359_funcgen [
++ comment: "SpeciesIdentifier=34"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_coli_uti89 [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1733,1744 ****
+--- 1898,1911 ----
+ ALIAS 364106 e_coli_uti89
+
+ DBNAME e_coli_uti89_funcgen [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME e_fergusonii [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 1747,1752 ****
+--- 1914,1920 ----
+ ALIAS 585054 e_fergusonii
+
+ DBNAME e_fergusonii_funcgen [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+***************
+*** 1843,1848 ****
+--- 2011,2017 ----
+ ]
+
+ DBNAME mycobacterium_sp_jls [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1851,1856 ****
+--- 2020,2026 ----
+ ALIAS 164757 mycobacterium_sp_jls
+
+ DBNAME mycobacterium_sp_kms [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1859,1864 ****
+--- 2029,2035 ----
+ ALIAS 189918 mycobacterium_sp_kms
+
+ DBNAME mycobacterium_sp_mcs [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1867,1872 ****
+--- 2038,2044 ----
+ ALIAS 164756 mycobacterium_sp_mcs
+
+ DBNAME m_abscessus [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1875,1880 ****
+--- 2047,2053 ----
+ ALIAS 36809 m_abscessus
+
+ DBNAME m_avium [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1883,1888 ****
+--- 2056,2062 ----
+ ALIAS 243243 m_avium
+
+ DBNAME m_bovis_af2122_97 [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1891,1896 ****
+--- 2065,2071 ----
+ ALIAS 233413 m_bovis_af2122_97
+
+ DBNAME m_bovis_pasteur_1173p2 [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1899,1904 ****
+--- 2074,2080 ----
+ ALIAS 410289 m_bovis_pasteur_1173p2
+
+ DBNAME m_bovis_tokyo_172 [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1907,1912 ****
+--- 2083,2089 ----
+ ALIAS 561275 m_bovis_tokyo_172
+
+ DBNAME m_gilvum [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1915,1920 ****
+--- 2092,2098 ----
+ ALIAS 350054 m_gilvum
+
+ DBNAME m_leprae_br4923 [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1923,1928 ****
+--- 2101,2107 ----
+ ALIAS 561304 m_leprae_br4923
+
+ DBNAME m_leprae_tn [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1931,1936 ****
+--- 2110,2116 ----
+ ALIAS 272631 m_leprae_tn
+
+ DBNAME m_marinum [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1939,1944 ****
+--- 2119,2125 ----
+ ALIAS 216594 m_marinum
+
+ DBNAME m_paratuberculosis [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1947,1952 ****
+--- 2128,2134 ----
+ ALIAS 262316 m_paratuberculosis
+
+ DBNAME m_smegmatis [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1955,1960 ****
+--- 2137,2143 ----
+ ALIAS 246196 m_smegmatis
+
+ DBNAME m_tuberculosis_atcc_25177 [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1963,1968 ****
+--- 2146,2152 ----
+ ALIAS 419947 m_tuberculosis_atcc_25177
+
+ DBNAME m_tuberculosis_cdc1551 [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1971,1976 ****
+--- 2155,2161 ----
+ ALIAS 83331 m_tuberculosis_cdc1551
+
+ DBNAME m_tuberculosis_h37rv [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1979,1984 ****
+--- 2164,2170 ----
+ ALIAS 83332 m_tuberculosis_h37rv
+
+ DBNAME m_tuberculosis_kzn_1435 [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1987,1992 ****
+--- 2173,2179 ----
+ ALIAS 478434 m_tuberculosis_kzn_1435
+
+ DBNAME m_ulcerans [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 1995,2000 ****
+--- 2182,2188 ----
+ ALIAS 362242 m_ulcerans
+
+ DBNAME m_vanbaalenii [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/mycobacterium_collection_core_9_62_3a"
+***************
+*** 2030,2035 ****
+--- 2218,2224 ----
+ ALIAS n_crassa neurospora_crassa
+
+ DBNAME n_gonorrhoeae_atcc_700825 [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2038,2043 ****
+--- 2227,2233 ----
+ ALIAS 242231 n_gonorrhoeae_atcc_700825
+
+ DBNAME n_gonorrhoeae_nccp11945 [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2046,2051 ****
+--- 2236,2242 ----
+ ALIAS 521006 n_gonorrhoeae_nccp11945
+
+ DBNAME n_meningitidis_053442 [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2054,2059 ****
+--- 2245,2251 ----
+ ALIAS 374833 n_meningitidis_053442
+
+ DBNAME n_meningitidis_2a [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2062,2067 ****
+--- 2254,2260 ----
+ ALIAS 272831 n_meningitidis_2a
+
+ DBNAME n_meningitidis_8013 [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2070,2075 ****
+--- 2263,2269 ----
+ ALIAS 604162 n_meningitidis_8013
+
+ DBNAME n_meningitidis_a [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2078,2083 ****
+--- 2272,2278 ----
+ ALIAS 122587 n_meningitidis_a
+
+ DBNAME n_meningitidis_alpha14 [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2086,2091 ****
+--- 2281,2287 ----
+ ALIAS 487 n_meningitidis_alpha14
+
+ DBNAME n_meningitidis_b [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/neisseria_collection_core_9_62_3a"
+***************
+*** 2330,2335 ****
+--- 2526,2532 ----
+ ]
+
+ DBNAME p_abyssi [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/pyrococcus_collection_core_9_62_1a"
+***************
+*** 2338,2343 ****
+--- 2535,2541 ----
+ ALIAS 272844 p_abyssi
+
+ DBNAME p_furiosus [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/pyrococcus_collection_core_9_62_1a"
+***************
+*** 2346,2351 ****
+--- 2544,2550 ----
+ ALIAS 186497 p_furiosus
+
+ DBNAME p_horikoshii [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/pyrococcus_collection_core_9_62_1a"
+***************
+*** 2354,2359 ****
+--- 2553,2559 ----
+ ALIAS 70601 p_horikoshii
+
+ DBNAME p_kodakaraensis [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/pyrococcus_collection_core_9_62_1a"
+***************
+*** 2428,2433 ****
+--- 2628,2634 ----
+ ALIAS 7668 strongylocentrotus_purpuratus
+
+ DBNAME s_agalactiae_ia [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2436,2441 ****
+--- 2637,2643 ----
+ ALIAS 205921 s_agalactiae_ia
+
+ DBNAME s_agalactiae_iii [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2444,2449 ****
+--- 2646,2652 ----
+ ALIAS 211110 s_agalactiae_iii
+
+ DBNAME s_agalactiae_v [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2452,2457 ****
+--- 2655,2661 ----
+ ALIAS 208435 s_agalactiae_v
+
+ DBNAME s_aureus_04_02981 [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2460,2471 ****
+--- 2664,2677 ----
+ ALIAS 703339 s_aureus_04_02981
+
+ DBNAME s_aureus_04_02981_funcgen [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_bovine_rf122 [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2474,2485 ****
+--- 2680,2693 ----
+ ALIAS 273036 s_aureus_bovine_rf122
+
+ DBNAME s_aureus_bovine_rf122_funcgen [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_col [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2488,2499 ****
+--- 2696,2709 ----
+ ALIAS 93062 s_aureus_col
+
+ DBNAME s_aureus_col_funcgen [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_ed133 [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2502,2513 ****
+--- 2712,2725 ----
+ ALIAS 685039 s_aureus_ed133
+
+ DBNAME s_aureus_ed133_funcgen [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_ed98 [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2516,2527 ****
+--- 2728,2741 ----
+ ALIAS 681288 s_aureus_ed98
+
+ DBNAME s_aureus_ed98_funcgen [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_jh1 [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2530,2541 ****
+--- 2744,2757 ----
+ ALIAS 359787 s_aureus_jh1
+
+ DBNAME s_aureus_jh1_funcgen [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_jh9 [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2544,2555 ****
+--- 2760,2773 ----
+ ALIAS 359786 s_aureus_jh9
+
+ DBNAME s_aureus_jh9_funcgen [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_jkd6008 [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2558,2569 ****
+--- 2776,2789 ----
+ ALIAS 546342 s_aureus_jkd6008
+
+ DBNAME s_aureus_jkd6008_funcgen [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_jkd6159 [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2572,2583 ****
+--- 2792,2805 ----
+ ALIAS 869816 s_aureus_jkd6159
+
+ DBNAME s_aureus_jkd6159_funcgen [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_mrsa252 [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2586,2597 ****
+--- 2808,2821 ----
+ ALIAS 282458 s_aureus_mrsa252
+
+ DBNAME s_aureus_mrsa252_funcgen [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_mssa476 [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2600,2611 ****
+--- 2824,2837 ----
+ ALIAS 282459 s_aureus_mssa476
+
+ DBNAME s_aureus_mssa476_funcgen [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_mu3 [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2614,2625 ****
+--- 2840,2853 ----
+ ALIAS 418127 s_aureus_mu3
+
+ DBNAME s_aureus_mu3_funcgen [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_mu50 [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2628,2639 ****
+--- 2856,2869 ----
+ ALIAS 158878 s_aureus_mu50
+
+ DBNAME s_aureus_mu50_funcgen [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_mw2 [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2642,2653 ****
+--- 2872,2885 ----
+ ALIAS 196620 s_aureus_mw2
+
+ DBNAME s_aureus_mw2_funcgen [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_n315 [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2656,2667 ****
+--- 2888,2901 ----
+ ALIAS 158879 s_aureus_n315
+
+ DBNAME s_aureus_n315_funcgen [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_nctc_8325 [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2670,2681 ****
+--- 2904,2917 ----
+ ALIAS 93061 s_aureus_nctc_8325
+
+ DBNAME s_aureus_nctc_8325_funcgen [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_newman [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2684,2695 ****
+--- 2920,2933 ----
+ ALIAS 426430 s_aureus_newman
+
+ DBNAME s_aureus_newman_funcgen [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_st398 [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2698,2709 ****
+--- 2936,2949 ----
+ ALIAS 523796 s_aureus_st398
+
+ DBNAME s_aureus_st398_funcgen [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_tch1516 [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2712,2723 ****
+--- 2952,2965 ----
+ ALIAS 451516 s_aureus_tch1516
+
+ DBNAME s_aureus_tch1516_funcgen [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_tw20 [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2726,2737 ****
+--- 2968,2981 ----
+ ALIAS 663951 s_aureus_tw20
+
+ DBNAME s_aureus_tw20_funcgen [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_aureus_usa300 [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2740,2751 ****
+--- 2984,2997 ----
+ ALIAS 451515 s_aureus_usa300
+
+ DBNAME s_aureus_usa300_funcgen [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_boydii_18 [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2754,2765 ****
+--- 3000,3013 ----
+ ALIAS 344609 s_boydii_18
+
+ DBNAME s_boydii_18_funcgen [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_boydii_4 [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2768,2779 ****
+--- 3016,3029 ----
+ ALIAS 300268 s_boydii_4
+
+ DBNAME s_boydii_4_funcgen [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_carnosus [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2782,2793 ****
+--- 3032,3045 ----
+ ALIAS 396513 s_carnosus
+
+ DBNAME s_carnosus_funcgen [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_dysenteriae [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2796,2807 ****
+--- 3048,3061 ----
+ ALIAS 300267 s_dysenteriae
+
+ DBNAME s_dysenteriae_funcgen [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_dysgalactiae [
++ comment: "SpeciesIdentifier=40"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2810,2815 ****
+--- 3064,3070 ----
+ ALIAS 486410 s_dysgalactiae
+
+ DBNAME s_epidermidis_atcc_12228 [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2818,2829 ****
+--- 3073,3086 ----
+ ALIAS 176280 s_epidermidis_atcc_12228
+
+ DBNAME s_epidermidis_atcc_12228_funcgen [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_epidermidis_atcc_35984 [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2832,2843 ****
+--- 3089,3102 ----
+ ALIAS 176279 s_epidermidis_atcc_35984
+
+ DBNAME s_epidermidis_atcc_35984_funcgen [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_equi [
++ comment: "SpeciesIdentifier=33"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2846,2851 ****
+--- 3105,3111 ----
+ ALIAS 553482 s_equi
+
+ DBNAME s_equi_mgcs10565 [
++ comment: "SpeciesIdentifier=5"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2854,2859 ****
+--- 3114,3120 ----
+ ALIAS 552526 s_equi_mgcs10565
+
+ DBNAME s_equi_zooepidemicus [
++ comment: "SpeciesIdentifier=32"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2862,2867 ****
+--- 3123,3129 ----
+ ALIAS 40041 s_equi_zooepidemicus
+
+ DBNAME s_flexneri_2457t [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2870,2881 ****
+--- 3132,3145 ----
+ ALIAS 198215 s_flexneri_2457t
+
+ DBNAME s_flexneri_2457t_funcgen [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_flexneri_301 [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2884,2895 ****
+--- 3148,3161 ----
+ ALIAS 198214 s_flexneri_301
+
+ DBNAME s_flexneri_301_funcgen [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_flexneri_5b [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2898,2909 ****
+--- 3164,3177 ----
+ ALIAS 373384 s_flexneri_5b
+
+ DBNAME s_flexneri_5b_funcgen [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_flexneri_x [
++ comment: "SpeciesIdentifier=41"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 2912,2923 ****
+--- 3180,3193 ----
+ ALIAS 591020 s_flexneri_x
+
+ DBNAME s_flexneri_x_funcgen [
++ comment: "SpeciesIdentifier=41"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_gallolyticus [
++ comment: "SpeciesIdentifier=45"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2926,2931 ****
+--- 3196,3202 ----
+ ALIAS 637909 s_gallolyticus
+
+ DBNAME s_gordonii [
++ comment: "SpeciesIdentifier=6"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2934,2939 ****
+--- 3205,3211 ----
+ ALIAS 467705 s_gordonii
+
+ DBNAME s_haemolyticus [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2942,2953 ****
+--- 3214,3227 ----
+ ALIAS 279808 s_haemolyticus
+
+ DBNAME s_haemolyticus_funcgen [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_lugdunensis [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 2956,2967 ****
+--- 3230,3243 ----
+ ALIAS 698737 s_lugdunensis
+
+ DBNAME s_lugdunensis_funcgen [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_mitis [
++ comment: "SpeciesIdentifier=48"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2970,2975 ****
+--- 3246,3252 ----
+ ALIAS 365659 s_mitis
+
+ DBNAME s_mutans_atcc_700610 [
++ comment: "SpeciesIdentifier=7"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2978,2983 ****
+--- 3255,3261 ----
+ ALIAS 210007 s_mutans_atcc_700610
+
+ DBNAME s_mutans_nn2025 [
++ comment: "SpeciesIdentifier=44"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2986,2991 ****
+--- 3264,3270 ----
+ ALIAS 511691 s_mutans_nn2025
+
+ DBNAME s_pneumoniae_70585 [
++ comment: "SpeciesIdentifier=34"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 2994,2999 ****
+--- 3273,3279 ----
+ ALIAS 488221 s_pneumoniae_70585
+
+ DBNAME s_pneumoniae_a19 [
++ comment: "SpeciesIdentifier=49"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3002,3007 ****
+--- 3282,3288 ----
+ ALIAS 525381 s_pneumoniae_a19
+
+ DBNAME s_pneumoniae_atcc_700669 [
++ comment: "SpeciesIdentifier=39"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3010,3015 ****
+--- 3291,3297 ----
+ ALIAS 561276 s_pneumoniae_atcc_700669
+
+ DBNAME s_pneumoniae_atcc_baa_255 [
++ comment: "SpeciesIdentifier=8"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3018,3023 ****
+--- 3300,3306 ----
+ ALIAS 171101 s_pneumoniae_atcc_baa_255
+
+ DBNAME s_pneumoniae_cgsp14 [
++ comment: "SpeciesIdentifier=9"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3026,3031 ****
+--- 3309,3315 ----
+ ALIAS 516950 s_pneumoniae_cgsp14
+
+ DBNAME s_pneumoniae_d39 [
++ comment: "SpeciesIdentifier=10"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3034,3039 ****
+--- 3318,3324 ----
+ ALIAS 373153 s_pneumoniae_d39
+
+ DBNAME s_pneumoniae_g54 [
++ comment: "SpeciesIdentifier=11"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3042,3047 ****
+--- 3327,3333 ----
+ ALIAS 512566 s_pneumoniae_g54
+
+ DBNAME s_pneumoniae_hungary19a_6 [
++ comment: "SpeciesIdentifier=12"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3050,3055 ****
+--- 3336,3342 ----
+ ALIAS 487214 s_pneumoniae_hungary19a_6
+
+ DBNAME s_pneumoniae_jja [
++ comment: "SpeciesIdentifier=35"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3058,3063 ****
+--- 3345,3351 ----
+ ALIAS 488222 s_pneumoniae_jja
+
+ DBNAME s_pneumoniae_p1031 [
++ comment: "SpeciesIdentifier=37"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3066,3071 ****
+--- 3354,3360 ----
+ ALIAS 488223 s_pneumoniae_p1031
+
+ DBNAME s_pneumoniae_taiwan19f_14 [
++ comment: "SpeciesIdentifier=36"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3074,3079 ****
+--- 3363,3369 ----
+ ALIAS 487213 s_pneumoniae_taiwan19f_14
+
+ DBNAME s_pneumoniae_tigr4 [
++ comment: "SpeciesIdentifier=13"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3082,3087 ****
+--- 3372,3378 ----
+ ALIAS 170187 s_pneumoniae_tigr4
+
+ DBNAME s_pyogenes_atcc_baa_595 [
++ comment: "SpeciesIdentifier=17"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3090,3095 ****
+--- 3381,3387 ----
+ ALIAS 198466 s_pyogenes_atcc_baa_595
+
+ DBNAME s_pyogenes_m18 [
++ comment: "SpeciesIdentifier=15"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3098,3103 ****
+--- 3390,3396 ----
+ ALIAS 186103 s_pyogenes_m18
+
+ DBNAME s_pyogenes_m2 [
++ comment: "SpeciesIdentifier=20"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3106,3111 ****
+--- 3399,3405 ----
+ ALIAS 370552 s_pyogenes_m2
+
+ DBNAME s_pyogenes_m28 [
++ comment: "SpeciesIdentifier=16"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3114,3119 ****
+--- 3408,3414 ----
+ ALIAS 319701 s_pyogenes_m28
+
+ DBNAME s_pyogenes_m4 [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3122,3127 ****
+--- 3417,3423 ----
+ ALIAS 370554 s_pyogenes_m4
+
+ DBNAME s_pyogenes_m49 [
++ comment: "SpeciesIdentifier=25"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3130,3135 ****
+--- 3426,3432 ----
+ ALIAS 471876 s_pyogenes_m49
+
+ DBNAME s_pyogenes_m5 [
++ comment: "SpeciesIdentifier=24"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3138,3143 ****
+--- 3435,3441 ----
+ ALIAS 160491 s_pyogenes_m5
+
+ DBNAME s_pyogenes_m6 [
++ comment: "SpeciesIdentifier=19"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3146,3151 ****
+--- 3444,3450 ----
+ ALIAS 286636 s_pyogenes_m6
+
+ DBNAME s_pyogenes_mgas2096 [
++ comment: "SpeciesIdentifier=22"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3154,3159 ****
+--- 3453,3459 ----
+ ALIAS 370553 s_pyogenes_mgas2096
+
+ DBNAME s_pyogenes_mgas5005 [
++ comment: "SpeciesIdentifier=14"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3162,3167 ****
+--- 3462,3468 ----
+ ALIAS 293653 s_pyogenes_mgas5005
+
+ DBNAME s_pyogenes_mgas9429 [
++ comment: "SpeciesIdentifier=23"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3170,3175 ****
+--- 3471,3477 ----
+ ALIAS 370551 s_pyogenes_mgas9429
+
+ DBNAME s_pyogenes_sf370 [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3178,3183 ****
+--- 3480,3486 ----
+ ALIAS 160490 s_pyogenes_sf370
+
+ DBNAME s_pyogenes_ssi_1 [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3186,3191 ****
+--- 3489,3495 ----
+ ALIAS 193567 s_pyogenes_ssi_1
+
+ DBNAME s_sanguinis [
++ comment: "SpeciesIdentifier=26"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3194,3199 ****
+--- 3498,3504 ----
+ ALIAS 388919 s_sanguinis
+
+ DBNAME s_saprophyticus [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_core_9_62_4a"
+***************
+*** 3202,3213 ****
+--- 3507,3520 ----
+ ALIAS 342451 s_saprophyticus
+
+ DBNAME s_saprophyticus_funcgen [
++ comment: "SpeciesIdentifier=18"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/staphylococcus_collection_funcgen_9_62_4a"
+ ]
+
+ DBNAME s_sonnei [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_core_9_62_5a"
+***************
+*** 3216,3227 ****
+--- 3523,3536 ----
+ ALIAS 300269 s_sonnei
+
+ DBNAME s_sonnei_funcgen [
++ comment: "SpeciesIdentifier=21"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/escherichia_shigella_collection_funcgen_9_62_5a"
+ ]
+
+ DBNAME s_suis_05zyh33 [
++ comment: "SpeciesIdentifier=27"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3230,3235 ****
+--- 3539,3545 ----
+ ALIAS 391295 s_suis_05zyh33
+
+ DBNAME s_suis_98hah33 [
++ comment: "SpeciesIdentifier=28"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3238,3243 ****
+--- 3548,3554 ----
+ ALIAS 391296 s_suis_98hah33
+
+ DBNAME s_suis_bm407 [
++ comment: "SpeciesIdentifier=42"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3246,3251 ****
+--- 3557,3563 ----
+ ALIAS 568814 s_suis_bm407
+
+ DBNAME s_suis_gz1 [
++ comment: "SpeciesIdentifier=50"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3254,3259 ****
+--- 3566,3572 ----
+ ALIAS 423211 s_suis_gz1
+
+ DBNAME s_suis_p1_7 [
++ comment: "SpeciesIdentifier=43"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3262,3267 ****
+--- 3575,3581 ----
+ ALIAS 218494 s_suis_p1_7
+
+ DBNAME s_suis_sc84 [
++ comment: "SpeciesIdentifier=41"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3270,3275 ****
+--- 3584,3590 ----
+ ALIAS 568813 s_suis_sc84
+
+ DBNAME s_thermophilus_atcc_baa_250 [
++ comment: "SpeciesIdentifier=29"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3278,3283 ****
+--- 3593,3599 ----
+ ALIAS 264199 s_thermophilus_atcc_baa_250
+
+ DBNAME s_thermophilus_atcc_baa_491 [
++ comment: "SpeciesIdentifier=30"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3286,3291 ****
+--- 3602,3608 ----
+ ALIAS 322159 s_thermophilus_atcc_baa_491
+
+ DBNAME s_thermophilus_cnrz_1066 [
++ comment: "SpeciesIdentifier=31"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3294,3299 ****
+--- 3611,3617 ----
+ ALIAS 299768 s_thermophilus_cnrz_1066
+
+ DBNAME s_uberis [
++ comment: "SpeciesIdentifier=38"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/streptococcus_collection_core_9_62_4a"
+***************
+*** 3350,3355 ****
+--- 3668,3674 ----
+ ]
+
+ DBNAME wolbachia_sp_brugia_malayi [
++ comment: "SpeciesIdentifier=3"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/wolbachia_collection_core_9_62_1a"
+***************
+*** 3358,3363 ****
+--- 3677,3683 ----
+ ALIAS 292805 wolbachia_sp_brugia_malayi
+
+ DBNAME wolbachia_sp_drosophila_simulans [
++ comment: "SpeciesIdentifier=2"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/wolbachia_collection_core_9_62_1a"
+***************
+*** 3366,3371 ****
+--- 3686,3692 ----
+ ALIAS 66084 wolbachia_sp_drosophila_simulans
+
+ DBNAME w_pipientis_culex_pipiens [
++ comment: "SpeciesIdentifier=1"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/wolbachia_collection_core_9_62_1a"
+***************
+*** 3374,3379 ****
+--- 3695,3701 ----
+ ALIAS 570417 w_pipientis_culex_pipiens
+
+ DBNAME w_pipientis_wmel [
++ comment: "SpeciesIdentifier=4"
+ release: "62"
+ server: "ensemblgenomes"
+ url: "mysql://anonymous@mysql.ebi.ac.uk:4157/wolbachia_collection_core_9_62_1a"
+diff -c -N --recursive -a EMBOSS-6.4.0old/nucleus/embgroup.c EMBOSS-6.4.0/nucleus/embgroup.c
+*** EMBOSS-6.4.0old/nucleus/embgroup.c 2011-05-16 11:14:30.000000000 +0100
+--- EMBOSS-6.4.0/nucleus/embgroup.c 2011-09-05 12:23:43.000000000 +0100
+***************
+*** 1173,1179 ****
+ AjPStr tail;
+ AjPStr revhead;
+ AjPStr revtail;
+! AjPStr dummy; /* dummy string for ajListstrPop() */
+
+
+ len = ajListstrToarray(sublist, &sub);
+--- 1173,1179 ----
+ AjPStr tail;
+ AjPStr revhead;
+ AjPStr revtail;
+! AjPStr dummy = NULL; /* dummy string for ajListstrPop() */
+
+
+ len = ajListstrToarray(sublist, &sub);