summaryrefslogtreecommitdiffstats
path: root/academic/EMBOSS/patch-1-24
blob: 04fe05ba2b384f394e6df20c897664fae3a6df87 (plain)
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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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/ajfileio.c EMBOSS-6.4.0/ajax/core/ajfileio.c
*** EMBOSS-6.4.0old/ajax/core/ajfileio.c	2011-05-24 13:51:54.000000000 +0100
--- EMBOSS-6.4.0/ajax/core/ajfileio.c	2011-10-05 14:56:07.000000000 +0100
***************
*** 2006,2025 ****
  {
      AjBool ret;
      ajlong fpos = 0;
-     AjPStr dest;
  
      ret = ajBuffreadLinePos(buff, Pdest, &fpos);
      
      /* trim any trailing newline */
  
-     dest = *Pdest;
- 
      /*ajDebug("Remove carriage-return characters from PC-style files\n");*/
!     if(ajStrGetCharLast(dest) == '\n')
  	ajStrCutEnd(Pdest, 1);
  
      /* PC files have \r\n Macintosh files have just \r : this fixes both */
!     if(ajStrGetCharLast(dest) == '\r')
  	ajStrCutEnd(Pdest, 1);
  
      return ret;
--- 2006,2022 ----
  {
      AjBool ret;
      ajlong fpos = 0;
  
      ret = ajBuffreadLinePos(buff, Pdest, &fpos);
      
      /* trim any trailing newline */
  
      /*ajDebug("Remove carriage-return characters from PC-style files\n");*/
!     if(ajStrGetCharLast(*Pdest) == '\n')
  	ajStrCutEnd(Pdest, 1);
  
      /* PC files have \r\n Macintosh files have just \r : this fixes both */
!     if(ajStrGetCharLast(*Pdest) == '\r')
  	ajStrCutEnd(Pdest, 1);
  
      return ret;
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-10-05 18:22:48.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/ajindex.c EMBOSS-6.4.0/ajax/core/ajindex.c
*** EMBOSS-6.4.0old/ajax/core/ajindex.c	2011-07-13 11:59:06.000000000 +0100
--- EMBOSS-6.4.0/ajax/core/ajindex.c	2011-10-05 14:56:07.000000000 +0100
***************
*** 650,655 ****
--- 650,659 ----
          ajTablePut(btreeFieldsTable,
                     field->Name,
                     (void*) field);
+         field = btreeFieldNewField(&btreeFields[i]);
+         ajTablePut(btreeFieldsTable,
+                    field->Extension,
+                    (void*) field);
      }
  
      return;
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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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/ajreport.c EMBOSS-6.4.0/ajax/core/ajreport.c
*** EMBOSS-6.4.0old/ajax/core/ajreport.c	2011-07-08 15:54:59.000000000 +0100
--- EMBOSS-6.4.0/ajax/core/ajreport.c	2011-10-05 14:56:07.000000000 +0100
***************
*** 677,682 ****
--- 677,684 ----
  	istart  = feature->Start;
  	iend    = feature->End;
  	ilen    = iend - istart + 1;
+         if(ilen == 2 && (feature->Flags & FEATFLAG_BETWEEN_SEQ))
+             ilen = 0;
  	ajStrAssignSubS(&subseq, seqalias, istart-1, iend-1);
  	/* ajStrFmtUpper(&subseq); */
  	i++;
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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:07.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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/diffseq.c EMBOSS-6.4.0/emboss/diffseq.c
*** EMBOSS-6.4.0old/emboss/diffseq.c	2010-04-14 09:19:27.000000000 +0100
--- EMBOSS-6.4.0/emboss/diffseq.c	2011-10-05 14:56:08.000000000 +0100
***************
*** 338,344 ****
  	}
          else
          {
!             gf = ajFeatNewII(ftab, diff->End1, diff->End1-1);
              ajStrAssignC(&tmp, "");
          }
          diffseq_Features("first_feature", gf,
--- 338,345 ----
  	}
          else
          {
!             gf = ajFeatNewII(ftab, diff->Start1-1, diff->Start1);
!             gf->Flags |= FEATFLAG_BETWEEN_SEQ;
              ajStrAssignC(&tmp, "");
          }
          diffseq_Features("first_feature", gf,
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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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-10-05 14:56:08.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);