[med-svn] [SCM] emboss branch, master, updated. debian/6.3.1-6-8-g3015ec3

Charles Plessy plessy at debian.org
Wed Sep 7 04:31:30 UTC 2011


The following commit has been merged in the master branch:
commit 64f57d18a30d52bf1f64901f1214c57ba9f51313
Author: Charles Plessy <plessy at debian.org>
Date:   Wed Sep 7 13:06:24 2011 +0900

    Refreshed upstream patch using version 1-21 released on Tue, 6 Sep 2011.
    
    Message-ID: <35573.82.26.12.214.1315299162.squirrel at imap04.ebi.ac.uk>
    URL: ftp://emboss.open-bio.org/pub/EMBOSS/fixes/patches/patch-1-21.gz

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

-- 
The European Molecular Biology Open Software Suite.



More information about the debian-med-commit mailing list