Repository 'clustalomega'
hg clone https://toolshed.g2.bx.psu.edu/repos/clustalomega/clustalomega

Changeset 0:ff1768533a07 (2011-06-07)
Next changeset 1:bc707542e5de (2011-07-21)
Commit message:
Migrated tool version 0.2 from old tool shed archive to new tool shed repository
added:
clustalomega/README
clustalomega/clustal-omega-0.2.0/AUTHORS
clustalomega/clustal-omega-0.2.0/COPYING
clustalomega/clustal-omega-0.2.0/ChangeLog
clustalomega/clustal-omega-0.2.0/Doxyfile
clustalomega/clustal-omega-0.2.0/Doxyfile.in
clustalomega/clustal-omega-0.2.0/INSTALL
clustalomega/clustal-omega-0.2.0/Makefile.am
clustalomega/clustal-omega-0.2.0/Makefile.in
clustalomega/clustal-omega-0.2.0/NEWS
clustalomega/clustal-omega-0.2.0/README
clustalomega/clustal-omega-0.2.0/TODO
clustalomega/clustal-omega-0.2.0/aclocal.m4
clustalomega/clustal-omega-0.2.0/clustalo.pc.in
clustalomega/clustal-omega-0.2.0/config.guess
clustalomega/clustal-omega-0.2.0/config.sub
clustalomega/clustal-omega-0.2.0/configure
clustalomega/clustal-omega-0.2.0/configure.ac
clustalomega/clustal-omega-0.2.0/depcomp
clustalomega/clustal-omega-0.2.0/install-sh
clustalomega/clustal-omega-0.2.0/ltmain.sh
clustalomega/clustal-omega-0.2.0/m4/ax_openmp.m4
clustalomega/clustal-omega-0.2.0/m4/ax_prefix_config_h.m4
clustalomega/clustal-omega-0.2.0/m4/libtool.m4
clustalomega/clustal-omega-0.2.0/m4/ltoptions.m4
clustalomega/clustal-omega-0.2.0/m4/ltsugar.m4
clustalomega/clustal-omega-0.2.0/m4/ltversion.m4
clustalomega/clustal-omega-0.2.0/m4/lt~obsolete.m4
clustalomega/clustal-omega-0.2.0/missing
clustalomega/clustal-omega-0.2.0/src/Makefile.am
clustalomega/clustal-omega-0.2.0/src/Makefile.in
clustalomega/clustal-omega-0.2.0/src/clustal-omega-config.h
clustalomega/clustal-omega-0.2.0/src/clustal-omega.c
clustalomega/clustal-omega-0.2.0/src/clustal-omega.h
clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.am
clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.in
clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.c
clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.h
clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.c
clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.h
clustalomega/clustal-omega-0.2.0/src/clustal/list.c
clustalomega/clustal-omega-0.2.0/src/clustal/list.h
clustalomega/clustal-omega-0.2.0/src/clustal/log.c
clustalomega/clustal-omega-0.2.0/src/clustal/log.h
clustalomega/clustal-omega-0.2.0/src/clustal/mbed.c
clustalomega/clustal-omega-0.2.0/src/clustal/mbed.h
clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.c
clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.h
clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.c
clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.h
clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.c
clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.h
clustalomega/clustal-omega-0.2.0/src/clustal/progress.c
clustalomega/clustal-omega-0.2.0/src/clustal/progress.h
clustalomega/clustal-omega-0.2.0/src/clustal/queue.h
clustalomega/clustal-omega-0.2.0/src/clustal/seq.c
clustalomega/clustal-omega-0.2.0/src/clustal/seq.h
clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.c
clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.h
clustalomega/clustal-omega-0.2.0/src/clustal/tree.c
clustalomega/clustal-omega-0.2.0/src/clustal/tree.h
clustalomega/clustal-omega-0.2.0/src/clustal/util.c
clustalomega/clustal-omega-0.2.0/src/clustal/util.h
clustalomega/clustal-omega-0.2.0/src/clustal/weights.c
clustalomega/clustal-omega-0.2.0/src/clustal/weights.h
clustalomega/clustal-omega-0.2.0/src/clustalo-api-test.c
clustalomega/clustal-omega-0.2.0/src/config.h.in
clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.am
clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.in
clustalomega/clustal-omega-0.2.0/src/hhalign/general.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hash-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hash.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.cpp
clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhdecl-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhmatrices-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/hhutil-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/list-C.h
clustalomega/clustal-omega-0.2.0/src/hhalign/list.h
clustalomega/clustal-omega-0.2.0/src/hhalign/util-C.h
clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.cpp
clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.h
clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.cpp
clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.h
clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.cpp
clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.h
clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.am
clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.in
clustalomega/clustal-omega-0.2.0/src/main.cpp
clustalomega/clustal-omega-0.2.0/src/mymain.c
clustalomega/clustal-omega-0.2.0/src/mymain.h
clustalomega/clustal-omega-0.2.0/src/squid/00README
clustalomega/clustal-omega-0.2.0/src/squid/COPYRIGHT
clustalomega/clustal-omega-0.2.0/src/squid/LICENSE
clustalomega/clustal-omega-0.2.0/src/squid/Makefile.am
clustalomega/clustal-omega-0.2.0/src/squid/Makefile.in
clustalomega/clustal-omega-0.2.0/src/squid/a2m.c
clustalomega/clustal-omega-0.2.0/src/squid/aligneval.c
clustalomega/clustal-omega-0.2.0/src/squid/alignio.c
clustalomega/clustal-omega-0.2.0/src/squid/clustal.c
clustalomega/clustal-omega-0.2.0/src/squid/clustalo.README
clustalomega/clustal-omega-0.2.0/src/squid/cluster.c
clustalomega/clustal-omega-0.2.0/src/squid/dayhoff.c
clustalomega/clustal-omega-0.2.0/src/squid/eps.c
clustalomega/clustal-omega-0.2.0/src/squid/file.c
clustalomega/clustal-omega-0.2.0/src/squid/getopt.c
clustalomega/clustal-omega-0.2.0/src/squid/gki.c
clustalomega/clustal-omega-0.2.0/src/squid/gki.h
clustalomega/clustal-omega-0.2.0/src/squid/gsi.c
clustalomega/clustal-omega-0.2.0/src/squid/gsi.h
clustalomega/clustal-omega-0.2.0/src/squid/gsi64.c
clustalomega/clustal-omega-0.2.0/src/squid/gsi64.h
clustalomega/clustal-omega-0.2.0/src/squid/hsregex.c
clustalomega/clustal-omega-0.2.0/src/squid/iupac.c
clustalomega/clustal-omega-0.2.0/src/squid/msa.c
clustalomega/clustal-omega-0.2.0/src/squid/msa.h
clustalomega/clustal-omega-0.2.0/src/squid/msf.c
clustalomega/clustal-omega-0.2.0/src/squid/phylip.c
clustalomega/clustal-omega-0.2.0/src/squid/revcomp.c
clustalomega/clustal-omega-0.2.0/src/squid/rk.c
clustalomega/clustal-omega-0.2.0/src/squid/rk.h
clustalomega/clustal-omega-0.2.0/src/squid/selex.c
clustalomega/clustal-omega-0.2.0/src/squid/seqencode.c
clustalomega/clustal-omega-0.2.0/src/squid/shuffle.c
clustalomega/clustal-omega-0.2.0/src/squid/sqerror.c
clustalomega/clustal-omega-0.2.0/src/squid/sqfuncs.h
clustalomega/clustal-omega-0.2.0/src/squid/sqio.c
clustalomega/clustal-omega-0.2.0/src/squid/squid-1.9g.tar.gz
clustalomega/clustal-omega-0.2.0/src/squid/squid.h
clustalomega/clustal-omega-0.2.0/src/squid/squidcore.c
clustalomega/clustal-omega-0.2.0/src/squid/sre_ctype.c
clustalomega/clustal-omega-0.2.0/src/squid/sre_math.c
clustalomega/clustal-omega-0.2.0/src/squid/sre_random.c
clustalomega/clustal-omega-0.2.0/src/squid/sre_random.h
clustalomega/clustal-omega-0.2.0/src/squid/sre_string.c
clustalomega/clustal-omega-0.2.0/src/squid/ssi.c
clustalomega/clustal-omega-0.2.0/src/squid/ssi.h
clustalomega/clustal-omega-0.2.0/src/squid/stack.c
clustalomega/clustal-omega-0.2.0/src/squid/stockholm.c
clustalomega/clustal-omega-0.2.0/src/squid/stockholm.h
clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.c
clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.h
clustalomega/clustal-omega-0.2.0/src/squid/translate.c
clustalomega/clustal-omega-0.2.0/src/squid/types.c
clustalomega/clustal-omega-0.2.0/src/squid/vectorops.c
clustalomega/clustal-omega-0.2.0/src/squid/vectorops.h
clustalomega/clustal-omega-0.2.0/src/squid/version.h
clustalomega/clustal-omega-0.2.0/src/squid/weight.c
clustalomega/hide_stderr.py
clustalomega/rgClustalOmega.xml
clustalomega/test-data/clustalo_aligned1.fasta
clustalomega/test-data/clustalo_aligned2.fasta
clustalomega/test-data/clustalo_profileprofile.fasta
clustalomega/test-data/clustalo_test1_out.fasta
clustalomega/test-data/clustalo_unaligned_all.fasta
b
diff -r 000000000000 -r ff1768533a07 clustalomega/README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/README Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,20 @@
+Copy rgClustalOmega.xml and hide_stderr.py to galaxy_dist/tools/rgenetics
+
+Copy the files in test-data to galaxy_dist/test-data
+
+To install the Clustal Omega executable:
+
+$ cd clustal-omega-0.2.0
+$ ./configure
+$ make
+$ make install
+
+Clustal Omega uses Argtable to parse command line options. It may already be present on your system. If not, it can be found at:
+
+ http://argtable.sourceforge.net/
+
+or from many repositories e.g. to install on Debian/Ubuntu/etc.:
+
+$ sudo apt-get install libargtable2-dev
+
+Any questions, comments, or bug notifications should be directed to david.dineen@ucd.ie
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/AUTHORS
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/AUTHORS Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,20 @@
+* Clustal Omega:
+Fabian Sievers   UCD Dublin, Ireland
+Andreas Wilm     UCD Dublin, Ireland
+David Dineen     UCD Dublin, Ireland
+Johannes Söding  Gene Center Munich, Germany
+Michael Remmert  Gene Center Munich, Germany
+
+* Clustal 2
+Mark Larkin      UCD Dublin, Ireland
+
+* Clustal 1.X
+Toby Gibson      EMBL Heidelberg, Germany
+Des Higgins      UCC Cork, Ireland
+Julie Thompson   IGBMC Strasbourg, France
+
+* Contributors:
+Chenna Ramu      EMBL Heidelberg, Germany
+Nigel Brown      EMBL Heidelberg, Germany
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/COPYING
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/COPYING Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,339 @@\n+                    GNU GENERAL PUBLIC LICENSE\n+                       Version 2, June 1991\n+\n+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n+ Everyone is permitted to copy and distribute verbatim copies\n+ of this license document, but changing it is not allowed.\n+\n+                            Preamble\n+\n+  The licenses for most software are designed to take away your\n+freedom to share and change it.  By contrast, the GNU General Public\n+License is intended to guarantee your freedom to share and change free\n+software--to make sure the software is free for all its users.  This\n+General Public License applies to most of the Free Software\n+Foundation\'s software and to any other program whose authors commit to\n+using it.  (Some other Free Software Foundation software is covered by\n+the GNU Lesser General Public License instead.)  You can apply it to\n+your programs, too.\n+\n+  When we speak of free software, we are referring to freedom, not\n+price.  Our General Public Licenses are designed to make sure that you\n+have the freedom to distribute copies of free software (and charge for\n+this service if you wish), that you receive source code or can get it\n+if you want it, that you can change the software or use pieces of it\n+in new free programs; and that you know you can do these things.\n+\n+  To protect your rights, we need to make restrictions that forbid\n+anyone to deny you these rights or to ask you to surrender the rights.\n+These restrictions translate to certain responsibilities for you if you\n+distribute copies of the software, or if you modify it.\n+\n+  For example, if you distribute copies of such a program, whether\n+gratis or for a fee, you must give the recipients all the rights that\n+you have.  You must make sure that they, too, receive or can get the\n+source code.  And you must show them these terms so they know their\n+rights.\n+\n+  We protect your rights with two steps: (1) copyright the software, and\n+(2) offer you this license which gives you legal permission to copy,\n+distribute and/or modify the software.\n+\n+  Also, for each author\'s protection and ours, we want to make certain\n+that everyone understands that there is no warranty for this free\n+software.  If the software is modified by someone else and passed on, we\n+want its recipients to know that what they have is not the original, so\n+that any problems introduced by others will not reflect on the original\n+authors\' reputations.\n+\n+  Finally, any free program is threatened constantly by software\n+patents.  We wish to avoid the danger that redistributors of a free\n+program will individually obtain patent licenses, in effect making the\n+program proprietary.  To prevent this, we have made it clear that any\n+patent must be licensed for everyone\'s free use or not licensed at all.\n+\n+  The precise terms and conditions for copying, distribution and\n+modification follow.\n+\n+                    GNU GENERAL PUBLIC LICENSE\n+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n+\n+  0. This License applies to any program or other work which contains\n+a notice placed by the copyright holder saying it may be distributed\n+under the terms of this General Public License.  The "Program", below,\n+refers to any such program or work, and a "work based on the Program"\n+means either the Program or any derivative work under copyright law:\n+that is to say, a work containing the Program or a portion of it,\n+either verbatim or with modifications and/or translated into another\n+language.  (Hereinafter, translation is included without limitation in\n+the term "modification".)  Each licensee is addressed as "you".\n+\n+Activities other than copying, distribution and modification are not\n+covered by this License; they are outside its scope.  The act of\n+running the Program is not restricted, and the output from the Program\n+is covered only if its contents constitute a work based on the\n+Program (i'..b'PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n+REPAIR OR CORRECTION.\n+\n+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n+POSSIBILITY OF SUCH DAMAGES.\n+\n+                     END OF TERMS AND CONDITIONS\n+\n+            How to Apply These Terms to Your New Programs\n+\n+  If you develop a new program, and you want it to be of the greatest\n+possible use to the public, the best way to achieve this is to make it\n+free software which everyone can redistribute and change under these terms.\n+\n+  To do so, attach the following notices to the program.  It is safest\n+to attach them to the start of each source file to most effectively\n+convey the exclusion of warranty; and each file should have at least\n+the "copyright" line and a pointer to where the full notice is found.\n+\n+    <one line to give the program\'s name and a brief idea of what it does.>\n+    Copyright (C) <year>  <name of author>\n+\n+    This program is free software; you can redistribute it and/or modify\n+    it under the terms of the GNU General Public License as published by\n+    the Free Software Foundation; either version 2 of the License, or\n+    (at your option) any later version.\n+\n+    This program is distributed in the hope that it will be useful,\n+    but WITHOUT ANY WARRANTY; without even the implied warranty of\n+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+    GNU General Public License for more details.\n+\n+    You should have received a copy of the GNU General Public License along\n+    with this program; if not, write to the Free Software Foundation, Inc.,\n+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n+\n+Also add information on how to contact you by electronic and paper mail.\n+\n+If the program is interactive, make it output a short notice like this\n+when it starts in an interactive mode:\n+\n+    Gnomovision version 69, Copyright (C) year name of author\n+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.\n+    This is free software, and you are welcome to redistribute it\n+    under certain conditions; type `show c\' for details.\n+\n+The hypothetical commands `show w\' and `show c\' should show the appropriate\n+parts of the General Public License.  Of course, the commands you use may\n+be called something other than `show w\' and `show c\'; they could even be\n+mouse-clicks or menu items--whatever suits your program.\n+\n+You should also get your employer (if you work as a programmer) or your\n+school, if any, to sign a "copyright disclaimer" for the program, if\n+necessary.  Here is a sample; alter the names:\n+\n+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n+  `Gnomovision\' (which makes passes at compilers) written by James Hacker.\n+\n+  <signature of Ty Coon>, 1 April 1989\n+  Ty Coon, President of Vice\n+\n+This General Public License does not permit incorporating your program into\n+proprietary programs.  If your program is a subroutine library, you may\n+consider it more useful to permit linking proprietary applications with the\n+library.  If this is what you want to do, use the GNU Lesser General\n+Public License instead of this License.\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/ChangeLog
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/ChangeLog Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,15 @@
+2010-06-17 Release 0.0.1 (Dubliniensis)
+
+ First "release" as program has been able for a while to perform
+ all basic tasks without problems.
+
+ Non-standard features already built-in include:
+ HMM-iteration (using HMMER for building an HMM) and guide-tree
+ iteration. On top of that HMM input works fine and
+ background-frequencies are added to the HHalign process.
+
+ Known issues: RNA/DNA alignment is considered buggy. Aligned
+ sequences have to be dealigned for HHalign to work properly.
+
+ The HMMER version message can be ignored if no HMM-iteration
+ was used.
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/Doxyfile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/Doxyfile Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1510 @@\n+# Doxyfile 1.5.8\n+\n+# This file describes the settings to be used by the documentation system\n+# doxygen (www.doxygen.org) for a project\n+#\n+# All text after a hash (#) is considered a comment and will be ignored\n+# The format is:\n+#       TAG = value [value, ...]\n+# For lists items can also be appended using:\n+#       TAG += value [value, ...]\n+# Values that contain spaces should be placed between quotes (" ")\n+\n+#---------------------------------------------------------------------------\n+# Project related configuration options\n+#---------------------------------------------------------------------------\n+\n+# This tag specifies the encoding used for all characters in the config file \n+# that follow. The default is UTF-8 which is also the encoding used for all \n+# text before the first occurrence of this tag. Doxygen uses libiconv (or the \n+# iconv built into libc) for the transcoding. See \n+# http://www.gnu.org/software/libiconv for the list of possible encodings.\n+\n+DOXYFILE_ENCODING      = UTF-8\n+\n+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \n+# by quotes) that should identify the project.\n+\n+PROJECT_NAME           = "Clustal Omega"\n+\n+# The PROJECT_NUMBER tag can be used to enter a project or revision number. \n+# This could be handy for archiving the generated documentation or \n+# if some version control system is used.\n+\n+PROJECT_NUMBER         = 0.2.0\n+\n+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \n+# base path where the generated documentation will be put. \n+# If a relative path is entered, it will be relative to the location \n+# where doxygen was started. If left blank the current directory will be used.\n+\n+OUTPUT_DIRECTORY       = ./doc/doxygen/\n+\n+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n+# 4096 sub-directories (in 2 levels) under the output directory of each output \n+# format and will distribute the generated files over these directories. \n+# Enabling this option can be useful when feeding doxygen a huge amount of \n+# source files, where putting all generated files in the same directory would \n+# otherwise cause performance problems for the file system.\n+\n+CREATE_SUBDIRS         = NO\n+\n+# The OUTPUT_LANGUAGE tag is used to specify the language in which all \n+# documentation generated by doxygen is written. Doxygen will use this \n+# information to generate all constant output in the proper language. \n+# The default language is English, other supported languages are: \n+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \n+# Spanish, Swedish, and Ukrainian.\n+\n+OUTPUT_LANGUAGE        = English\n+\n+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n+# include brief member descriptions after the members that are listed in \n+# the file and class documentation (similar to JavaDoc). \n+# Set to NO to disable this.\n+\n+BRIEF_MEMBER_DESC      = YES\n+\n+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \n+# the brief description of a member or function before the detailed description. \n+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n+# brief descriptions will be completely suppressed.\n+\n+REPEAT_BRIEF           = YES\n+\n+# This tag implements a quasi-intelligent brief description abbreviator \n+# that is used to form the text in various listings. Each string \n+# in this list, if found as the leading text of the brief description, will be \n+# stripped from the text and the result after processing the whole list, is \n+# used as the annotated text. Otherwise, the brief description is used as-is. \n+# If left blank, the following values'..b'ss method. Note that enabling this option will significantly increase \n+# the time of a run. So in most cases it will be better to enable caller \n+# graphs for selected functions only using the \\callergraph command.\n+\n+CALLER_GRAPH           = NO\n+\n+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n+# will graphical hierarchy of all classes instead of a textual one.\n+\n+GRAPHICAL_HIERARCHY    = YES\n+\n+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \n+# then doxygen will show the dependencies a directory has on other directories \n+# in a graphical way. The dependency relations are determined by the #include \n+# relations between the files in the directories.\n+\n+DIRECTORY_GRAPH        = YES\n+\n+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \n+# generated by dot. Possible values are png, jpg, or gif \n+# If left blank png will be used.\n+\n+DOT_IMAGE_FORMAT       = png\n+\n+# The tag DOT_PATH can be used to specify the path where the dot tool can be \n+# found. If left blank, it is assumed the dot tool can be found in the path.\n+\n+DOT_PATH               = \n+\n+# The DOTFILE_DIRS tag can be used to specify one or more directories that \n+# contain dot files that are included in the documentation (see the \n+# \\dotfile command).\n+\n+DOTFILE_DIRS           = \n+\n+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n+# nodes that will be shown in the graph. If the number of nodes in a graph \n+# becomes larger than this value, doxygen will truncate the graph, which is \n+# visualized by representing a node as a red box. Note that doxygen if the \n+# number of direct children of the root node in a graph is already larger than \n+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \n+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n+\n+DOT_GRAPH_MAX_NODES    = 50\n+\n+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n+# graphs generated by dot. A depth value of 3 means that only nodes reachable \n+# from the root by following a path via at most 3 edges will be shown. Nodes \n+# that lay further from the root node will be omitted. Note that setting this \n+# option to 1 or 2 may greatly reduce the computation time needed for large \n+# code bases. Also note that the size of a graph can be further restricted by \n+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n+\n+MAX_DOT_GRAPH_DEPTH    = 0\n+\n+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n+# background. This is disabled by default, because dot on Windows does not \n+# seem to support this out of the box. Warning: Depending on the platform used, \n+# enabling this option may lead to badly anti-aliased labels on the edges of \n+# a graph (i.e. they become hard to read).\n+\n+DOT_TRANSPARENT        = NO\n+\n+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \n+# files in one run (i.e. multiple -o and -T options on the command line). This \n+# makes dot run faster, but since only newer versions of dot (>1.8.10) \n+# support this, this feature is disabled by default.\n+\n+DOT_MULTI_TARGETS      = NO\n+\n+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \n+# generate a legend page explaining the meaning of the various boxes and \n+# arrows in the dot generated graphs.\n+\n+GENERATE_LEGEND        = YES\n+\n+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n+# remove the intermediate dot files that are used to generate \n+# the various graphs.\n+\n+DOT_CLEANUP            = YES\n+\n+#---------------------------------------------------------------------------\n+# Options related to the search engine\n+#---------------------------------------------------------------------------\n+\n+# The SEARCHENGINE tag specifies whether or not a search engine should be \n+# used. If set to NO the values of all tags below this one will be ignored.\n+\n+SEARCHENGINE           = NO\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/Doxyfile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/Doxyfile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1510 @@\n+# Doxyfile 1.5.8\n+\n+# This file describes the settings to be used by the documentation system\n+# doxygen (www.doxygen.org) for a project\n+#\n+# All text after a hash (#) is considered a comment and will be ignored\n+# The format is:\n+#       TAG = value [value, ...]\n+# For lists items can also be appended using:\n+#       TAG += value [value, ...]\n+# Values that contain spaces should be placed between quotes (" ")\n+\n+#---------------------------------------------------------------------------\n+# Project related configuration options\n+#---------------------------------------------------------------------------\n+\n+# This tag specifies the encoding used for all characters in the config file \n+# that follow. The default is UTF-8 which is also the encoding used for all \n+# text before the first occurrence of this tag. Doxygen uses libiconv (or the \n+# iconv built into libc) for the transcoding. See \n+# http://www.gnu.org/software/libiconv for the list of possible encodings.\n+\n+DOXYFILE_ENCODING      = UTF-8\n+\n+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \n+# by quotes) that should identify the project.\n+\n+PROJECT_NAME           = "@PACKAGE_NAME@"\n+\n+# The PROJECT_NUMBER tag can be used to enter a project or revision number. \n+# This could be handy for archiving the generated documentation or \n+# if some version control system is used.\n+\n+PROJECT_NUMBER         = @PACKAGE_VERSION@\n+\n+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \n+# base path where the generated documentation will be put. \n+# If a relative path is entered, it will be relative to the location \n+# where doxygen was started. If left blank the current directory will be used.\n+\n+OUTPUT_DIRECTORY       = ./doc/doxygen/\n+\n+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create \n+# 4096 sub-directories (in 2 levels) under the output directory of each output \n+# format and will distribute the generated files over these directories. \n+# Enabling this option can be useful when feeding doxygen a huge amount of \n+# source files, where putting all generated files in the same directory would \n+# otherwise cause performance problems for the file system.\n+\n+CREATE_SUBDIRS         = NO\n+\n+# The OUTPUT_LANGUAGE tag is used to specify the language in which all \n+# documentation generated by doxygen is written. Doxygen will use this \n+# information to generate all constant output in the proper language. \n+# The default language is English, other supported languages are: \n+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, \n+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \n+# Spanish, Swedish, and Ukrainian.\n+\n+OUTPUT_LANGUAGE        = English\n+\n+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n+# include brief member descriptions after the members that are listed in \n+# the file and class documentation (similar to JavaDoc). \n+# Set to NO to disable this.\n+\n+BRIEF_MEMBER_DESC      = YES\n+\n+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \n+# the brief description of a member or function before the detailed description. \n+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n+# brief descriptions will be completely suppressed.\n+\n+REPEAT_BRIEF           = YES\n+\n+# This tag implements a quasi-intelligent brief description abbreviator \n+# that is used to form the text in various listings. Each string \n+# in this list, if found as the leading text of the brief description, will be \n+# stripped from the text and the result after processing the whole list, is \n+# used as the annotated text. Otherwise, the brief description is used as-is. \n+# If left blank, the fol'..b'ss method. Note that enabling this option will significantly increase \n+# the time of a run. So in most cases it will be better to enable caller \n+# graphs for selected functions only using the \\callergraph command.\n+\n+CALLER_GRAPH           = NO\n+\n+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n+# will graphical hierarchy of all classes instead of a textual one.\n+\n+GRAPHICAL_HIERARCHY    = YES\n+\n+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES \n+# then doxygen will show the dependencies a directory has on other directories \n+# in a graphical way. The dependency relations are determined by the #include \n+# relations between the files in the directories.\n+\n+DIRECTORY_GRAPH        = YES\n+\n+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images \n+# generated by dot. Possible values are png, jpg, or gif \n+# If left blank png will be used.\n+\n+DOT_IMAGE_FORMAT       = png\n+\n+# The tag DOT_PATH can be used to specify the path where the dot tool can be \n+# found. If left blank, it is assumed the dot tool can be found in the path.\n+\n+DOT_PATH               = \n+\n+# The DOTFILE_DIRS tag can be used to specify one or more directories that \n+# contain dot files that are included in the documentation (see the \n+# \\dotfile command).\n+\n+DOTFILE_DIRS           = \n+\n+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of \n+# nodes that will be shown in the graph. If the number of nodes in a graph \n+# becomes larger than this value, doxygen will truncate the graph, which is \n+# visualized by representing a node as a red box. Note that doxygen if the \n+# number of direct children of the root node in a graph is already larger than \n+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note \n+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n+\n+DOT_GRAPH_MAX_NODES    = 50\n+\n+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the \n+# graphs generated by dot. A depth value of 3 means that only nodes reachable \n+# from the root by following a path via at most 3 edges will be shown. Nodes \n+# that lay further from the root node will be omitted. Note that setting this \n+# option to 1 or 2 may greatly reduce the computation time needed for large \n+# code bases. Also note that the size of a graph can be further restricted by \n+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n+\n+MAX_DOT_GRAPH_DEPTH    = 0\n+\n+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent \n+# background. This is disabled by default, because dot on Windows does not \n+# seem to support this out of the box. Warning: Depending on the platform used, \n+# enabling this option may lead to badly anti-aliased labels on the edges of \n+# a graph (i.e. they become hard to read).\n+\n+DOT_TRANSPARENT        = NO\n+\n+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output \n+# files in one run (i.e. multiple -o and -T options on the command line). This \n+# makes dot run faster, but since only newer versions of dot (>1.8.10) \n+# support this, this feature is disabled by default.\n+\n+DOT_MULTI_TARGETS      = NO\n+\n+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will \n+# generate a legend page explaining the meaning of the various boxes and \n+# arrows in the dot generated graphs.\n+\n+GENERATE_LEGEND        = YES\n+\n+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will \n+# remove the intermediate dot files that are used to generate \n+# the various graphs.\n+\n+DOT_CLEANUP            = YES\n+\n+#---------------------------------------------------------------------------\n+# Options related to the search engine\n+#---------------------------------------------------------------------------\n+\n+# The SEARCHENGINE tag specifies whether or not a search engine should be \n+# used. If set to NO the values of all tags below this one will be ignored.\n+\n+SEARCHENGINE           = NO\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/INSTALL
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/INSTALL Tue Jun 07 17:04:25 2011 -0400
b
b"@@ -0,0 +1,398 @@\n+The impatient can try:\n+\n+$ ./configure\n+$ make\n+$ make install\n+\n+\n+Clustal-Omega needs argtable2 (http://argtable.sourceforge.net/). If\n+argtable2 is installed in a non-standard directory you might have to\n+point configure to its installation directory. For example, if you are\n+on a Mac and have argtable installed via MacPorts then you should use\n+the following command line:\n+\n+$ ./configure CFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib'\n+\n+\n+ClustalO will automatically support multi-threading if your compiler\n+supports OpenMP. For some reason automake's OpenMP detection for\n+Apple's gcc is broken. However, you can use gcc installed via MacPorts\n+by adding\n+\n+CC=/opt/local/bin/gcc-mp-4.5\n+\n+to the configure call (you will to change the exact string to match\n+your gcc version)\n+\n+\n+See below for generic installation instructions:\n+\n+----------------------------------------------------------------------\n+\n+\n+\n+Installation Instructions\n+*************************\n+\n+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,\n+2006, 2007, 2008, 2009 Free Software Foundation, Inc.\n+\n+   Copying and distribution of this file, with or without modification,\n+are permitted in any medium without royalty provided the copyright\n+notice and this notice are preserved.  This file is offered as-is,\n+without warranty of any kind.\n+\n+Basic Installation\n+==================\n+\n+   Briefly, the shell commands `./configure; make; make install' should\n+configure, build, and install this package.  The following\n+more-detailed instructions are generic; see the `README' file for\n+instructions specific to this package.  Some packages provide this\n+`INSTALL' file but do not implement all of the features documented\n+below.  The lack of an optional feature in a given package is not\n+necessarily a bug.  More recommendations for GNU packages can be found\n+in *note Makefile Conventions: (standards)Makefile Conventions.\n+\n+   The `configure' shell script attempts to guess correct values for\n+various system-dependent variables used during compilation.  It uses\n+those values to create a `Makefile' in each directory of the package.\n+It may also create one or more `.h' files containing system-dependent\n+definitions.  Finally, it creates a shell script `config.status' that\n+you can run in the future to recreate the current configuration, and a\n+file `config.log' containing compiler output (useful mainly for\n+debugging `configure').\n+\n+   It can also use an optional file (typically called `config.cache'\n+and enabled with `--cache-file=config.cache' or simply `-C') that saves\n+the results of its tests to speed up reconfiguring.  Caching is\n+disabled by default to prevent problems with accidental use of stale\n+cache files.\n+\n+   If you need to do unusual things to compile the package, please try\n+to figure out how `configure' could check whether to do them, and mail\n+diffs or instructions to the address given in the `README' so they can\n+be considered for the next release.  If you are using the cache, and at\n+some point `config.cache' contains results you don't want to keep, you\n+may remove or edit it.\n+\n+   The file `configure.ac' (or `configure.in') is used to create\n+`configure' by a program called `autoconf'.  You need `configure.ac' if\n+you want to change it or regenerate `configure' using a newer version\n+of `autoconf'.\n+\n+   The simplest way to compile this package is:\n+\n+  1. `cd' to the directory containing the package's source code and type\n+     `./configure' to configure the package for your system.\n+\n+     Running `configure' might take a while.  While running, it prints\n+     some messages telling which features it is checking for.\n+\n+  2. Type `make' to compile the package.\n+\n+  3. Optionally, type `make check' to run any self-tests that come with\n+     the package, generally using the just-built uninstalled binaries.\n+\n+  4. Type `make install' to install the programs and any data files and\n+     documentation.  W"..b'ermine by the type of machine the package\n+will run on.  Usually, assuming the package is built to be run on the\n+_same_ architectures, `configure\' can figure that out, but if it prints\n+a message saying it cannot guess the machine type, give it the\n+`--build=TYPE\' option.  TYPE can either be a short name for the system\n+type, such as `sun4\', or a canonical name which has the form:\n+\n+     CPU-COMPANY-SYSTEM\n+\n+where SYSTEM can have one of these forms:\n+\n+     OS\n+     KERNEL-OS\n+\n+   See the file `config.sub\' for the possible values of each field.  If\n+`config.sub\' isn\'t included in this package, then this package doesn\'t\n+need to know the machine type.\n+\n+   If you are _building_ compiler tools for cross-compiling, you should\n+use the option `--target=TYPE\' to select the type of system they will\n+produce code for.\n+\n+   If you want to _use_ a cross compiler, that generates code for a\n+platform different from the build platform, you should specify the\n+"host" platform (i.e., that on which the generated programs will\n+eventually be run) with `--host=TYPE\'.\n+\n+Sharing Defaults\n+================\n+\n+   If you want to set default values for `configure\' scripts to share,\n+you can create a site shell script called `config.site\' that gives\n+default values for variables like `CC\', `cache_file\', and `prefix\'.\n+`configure\' looks for `PREFIX/share/config.site\' if it exists, then\n+`PREFIX/etc/config.site\' if it exists.  Or, you can set the\n+`CONFIG_SITE\' environment variable to the location of the site script.\n+A warning: not all `configure\' scripts look for a site script.\n+\n+Defining Variables\n+==================\n+\n+   Variables not defined in a site shell script can be set in the\n+environment passed to `configure\'.  However, some packages may run\n+configure again during the build, and the customized values of these\n+variables may be lost.  In order to avoid this problem, you should set\n+them in the `configure\' command line, using `VAR=value\'.  For example:\n+\n+     ./configure CC=/usr/local2/bin/gcc\n+\n+causes the specified `gcc\' to be used as the C compiler (unless it is\n+overridden in the site shell script).\n+\n+Unfortunately, this technique does not work for `CONFIG_SHELL\' due to\n+an Autoconf bug.  Until the bug is fixed you can use this workaround:\n+\n+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash\n+\n+`configure\' Invocation\n+======================\n+\n+   `configure\' recognizes the following options to control how it\n+operates.\n+\n+`--help\'\n+`-h\'\n+     Print a summary of all of the options to `configure\', and exit.\n+\n+`--help=short\'\n+`--help=recursive\'\n+     Print a summary of the options unique to this package\'s\n+     `configure\', and exit.  The `short\' variant lists options used\n+     only in the top level, while the `recursive\' variant lists options\n+     also present in any nested packages.\n+\n+`--version\'\n+`-V\'\n+     Print the version of Autoconf used to generate the `configure\'\n+     script, and exit.\n+\n+`--cache-file=FILE\'\n+     Enable the cache: use and save the results of the tests in FILE,\n+     traditionally `config.cache\'.  FILE defaults to `/dev/null\' to\n+     disable caching.\n+\n+`--config-cache\'\n+`-C\'\n+     Alias for `--cache-file=config.cache\'.\n+\n+`--quiet\'\n+`--silent\'\n+`-q\'\n+     Do not print messages saying which checks are being made.  To\n+     suppress all normal output, redirect it to `/dev/null\' (any error\n+     messages will still be shown).\n+\n+`--srcdir=DIR\'\n+     Look for the package\'s source code in directory DIR.  Usually\n+     `configure\' can determine that directory automatically.\n+\n+`--prefix=DIR\'\n+     Use DIR as the installation prefix.  *note Installation Names::\n+     for more details, including other options available for fine-tuning\n+     the installation locations.\n+\n+`--no-create\'\n+`-n\'\n+     Run the configure checks, but stop before creating any output\n+     files.\n+\n+`configure\' also accepts some other, not widely useful, options.  Run\n+`configure --help\' for more details.\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,25 @@
+# Some useful automake documentation:
+# http://www.openismus.com/documents/linux/automake/automake.shtml
+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html
+
+# we do not use GNU-style files: NEWS README AUTHORS ChangeLog
+#AUTOMAKE_OPTIONS = foreign
+
+ACLOCAL_AMFLAGS=-I m4
+SUBDIRS = src
+# SUBDIRS = src tests
+
+dist_doc_DATA = README
+
+EXTRA_DIST = Doxyfile
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = clustalo.pc
+
+
+bug-tests: all
+ cd bug-tests && $(SHELL) bug-tests.sh;
+
+#dist-hook:
+# svnversion . > $(distdir)/src/svnversion.h 2>/dev/null
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,804 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+# Some useful automake documentation:\n+# http://www.openismus.com/documents/linux/automake/automake.shtml\n+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html\n+\n+# we do not use GNU-style files: NEWS README AUTHORS ChangeLog\n+#AUTOMAKE_OPTIONS = foreign\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+subdir = .\n+DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \\\n+\t$(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \\\n+\t$(srcdir)/Makefile.in $(srcdir)/clustalo.pc.in \\\n+\t$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \\\n+\tTODO config.guess config.sub depcomp install-sh ltmain.sh \\\n+\tmissing\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \\\n+ configure.lineno config.status.lineno\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = $(top_builddir)/src/config.h\n+CONFIG_CLEAN_FILES = clustalo.pc Doxyfile\n+CONFIG_CLEAN_VPATH_FILES =\n+SOURCES =\n+DIST_SOURCES =\n+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \\\n+\thtml-recursive info-recursive install-data-recursive \\\n+\tinstall-dvi-recursive install-exec-recursive \\\n+\tinstall-html-recursive install-info-recursive \\\n+\tinstall-pdf-recursive install-ps-recursive install-recursive \\\n+\tinstallcheck-recursive installdirs-recursive pdf-recursive \\\n+\tps-recursive uninstall-recursive\n+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed \'s|.|.|g\'`;\n+am__vpath_adj = case $$p in \\\n+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \\\n+    *) f=$$p;; \\\n+  esac;\n+am__strip_dir = f=`echo $$p | sed -e \'s|^.*/||\'`;\n+am__install_max = 40\n+am__nobase_strip_setup = \\\n+  srcdirstrip=`echo "$(srcdir)" | sed \'s/[].[^$$\\\\*|]/\\\\\\\\&/g\'`\n+am__nobase_strip = \\\n+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"\n+am__nobase_list = $(am__nobase_strip_setup); \\\n+  for p in $$list; do echo "$$p $$p"; done | \\\n+  sed "s| $$srcdirstrip/| |;"\' / .*\\//!s/ .*/ ./; s,\\( .*\\)/[^/]*$$,\\1,\' | \\\n+  $(AWK) \'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \\\n+    if (++n[$$2] == $(am__install_max)) \\\n+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \\\n+    END { for (dir in files) print dir, files[dir] }\'\n+am__base_list = \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\' | \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\'\n+am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"\n+DATA = '..b' distcleancheck can only run from a VPATH build" ; \\\n+\t  exit 1 ; \\\n+\tfi\n+\t@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \\\n+\t  || { echo "ERROR: files left in build directory after distclean:" ; \\\n+\t       $(distcleancheck_listfiles) ; \\\n+\t       exit 1; } >&2\n+check-am: all-am\n+check: check-recursive\n+all-am: Makefile $(DATA)\n+installdirs: installdirs-recursive\n+installdirs-am:\n+\tfor dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"; do \\\n+\t  test -z "$$dir" || $(MKDIR_P) "$$dir"; \\\n+\tdone\n+install: install-recursive\n+install-exec: install-exec-recursive\n+install-data: install-data-recursive\n+uninstall: uninstall-recursive\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-recursive\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-recursive\n+\n+clean-am: clean-generic clean-libtool mostlyclean-am\n+\n+distclean: distclean-recursive\n+\t-rm -f $(am__CONFIG_DISTCLEAN_FILES)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-generic distclean-libtool \\\n+\tdistclean-tags\n+\n+dvi: dvi-recursive\n+\n+dvi-am:\n+\n+html: html-recursive\n+\n+html-am:\n+\n+info: info-recursive\n+\n+info-am:\n+\n+install-data-am: install-dist_docDATA install-pkgconfigDATA\n+\n+install-dvi: install-dvi-recursive\n+\n+install-dvi-am:\n+\n+install-exec-am:\n+\n+install-html: install-html-recursive\n+\n+install-html-am:\n+\n+install-info: install-info-recursive\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-recursive\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-recursive\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-recursive\n+\t-rm -f $(am__CONFIG_DISTCLEAN_FILES)\n+\t-rm -rf $(top_srcdir)/autom4te.cache\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-recursive\n+\n+mostlyclean-am: mostlyclean-generic mostlyclean-libtool\n+\n+pdf: pdf-recursive\n+\n+pdf-am:\n+\n+ps: ps-recursive\n+\n+ps-am:\n+\n+uninstall-am: uninstall-dist_docDATA uninstall-pkgconfigDATA\n+\n+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \\\n+\tinstall-am install-strip tags-recursive\n+\n+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \\\n+\tall all-am am--refresh check check-am clean clean-generic \\\n+\tclean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \\\n+\tdist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \\\n+\tdistcheck distclean distclean-generic distclean-libtool \\\n+\tdistclean-tags distcleancheck distdir distuninstallcheck dvi \\\n+\tdvi-am html html-am info info-am install install-am \\\n+\tinstall-data install-data-am install-dist_docDATA install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am install-man \\\n+\tinstall-pdf install-pdf-am install-pkgconfigDATA install-ps \\\n+\tinstall-ps-am install-strip installcheck installcheck-am \\\n+\tinstalldirs installdirs-am maintainer-clean \\\n+\tmaintainer-clean-generic mostlyclean mostlyclean-generic \\\n+\tmostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \\\n+\tuninstall uninstall-am uninstall-dist_docDATA \\\n+\tuninstall-pkgconfigDATA\n+\n+\n+bug-tests: all\n+\tcd bug-tests && $(SHELL) bug-tests.sh;\n+\n+#dist-hook:\n+#\tsvnversion . > $(distdir)/src/svnversion.h 2>/dev/null\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/README Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,594 @@\n+\r\n+\r\n+CLUSTAL-OMEGA is a general purpose multiple sequence alignment program\r\n+for proteins.\r\n+\r\n+\r\n+\r\n+INTRODUCTION\r\n+\r\n+Clustal-Omega is a general purpose multiple sequence alignment (MSA)\r\n+program for proteins. It produces high quality MSAs and is capable of\r\n+handling data-sets of hundreds of thousands of sequences in reasonable\r\n+time.\r\n+\r\n+In default mode, users give a file of sequences to be aligned and\r\n+these are clustered to produce a guide tree and this is used to guide\r\n+a "progressive alignment" of the sequences.  There are also facilities\r\n+for aligning existing alignments to each other, aligning a sequence to\r\n+an alignment and for using a hidden Markov model (HMM) to help guide\r\n+an alignment of new sequences that are homologous to the sequences\r\n+used to make the HMM.  This latter procedure is referred to as\r\n+"external profile alignment" or EPA.\r\n+\r\n+Clustal-Omega uses HMMs for the alignment engine, based on the HHalign\r\n+package from Johannes Soeding [1].  Guide trees are optionally made\r\n+using mBed [2] which can cluster very large numbers of sequences in\r\n+O(N*log(N)) time.  Multiple alignment then proceeds by aligning larger\r\n+and larger alignments using HHalign, following the clustering given by\r\n+the guide tree.\r\n+\r\n+In its current form Clustal-Omega can only align protein sequences but\r\n+not DNA/RNA sequences. It is envisioned that DNA/RNA will become\r\n+available in a future version.\r\n+\r\n+\r\n+\r\n+SEQUENCE INPUT:\r\n+\r\n+-i, --in, --infile={<file>,-} \r\n+\tMultiple sequence input file (- for stdin)\r\n+\r\n+--hmm-in=<file>           \r\n+\tHMM input files\r\n+\r\n+--dealign                 \r\n+\tDealign input sequences\r\n+\r\n+--profile1, --p1=<file>   \r\n+\tPre-aligned multiple sequence file (aligned columns will be kept fixed)\r\n+\r\n+--profile2, --p2=<file>   \r\n+\tPre-aligned multiple sequence file (aligned columns will be kept fixed)\r\n+\r\n+\r\n+For sequence and profile input Clustal-Omega uses the Squid library\r\n+from Sean Eddy [3].\r\n+\r\n+\r\n+Clustal-Omega accepts 3 types of sequence input: (i) a sequence file\r\n+with un-aligned or aligned sequences, (ii) profiles (a multiple\r\n+alignment in a file) of aligned sequences, (iii) a HMM. Valid\r\n+combinations of the above are:\r\n+\r\n+(a) one file with un-aligned or aligned sequences (i); the sequences\r\n+    will be aligned, and the alignment will be written out. For this\r\n+    mode use the -i flag. If the sequences are aligned (all sequences\r\n+    have the same length and at least one sequence has at least one\r\n+    gap), then the alignment is turned into a HMM, the sequences are\r\n+    de-aligned and the now un-aligned sequences are aligned using the\r\n+    HMM as an External Profile for External Profile Alignment (EPA).\r\n+    If no EPA is desired use the --dealign flag.\r\n+\r\n+    Use the above option to make a multiple alignment from a set of\r\n+    sequences. A sequence file must contain more than one sequence (at\r\n+    least two sequences).\r\n+\r\n+(b) two profiles (ii)+(ii); the columns in each profile will be kept\r\n+    fixed and the alignment of the two profiles will be written\r\n+    out. Use the --p1 and --p2 flags for this mode.\r\n+\r\n+    Use this option to align two alignments (profiles) together.\r\n+\r\n+(c) one file with un/aligned sequences (i) and one profile (ii); the\r\n+    profile is converted into a HMM and the un-aligned sequences will\r\n+    be multiply aligned (using the HMM background information) to form\r\n+    a profile; this constructed profile is aligned with the input\r\n+    profile; the columns in each profile (the original one and the one\r\n+    created from the un-aligned sequences) will be kept fixed and the\r\n+    alignment of the two profiles will be written out. Use the -i flag\r\n+    in conjunction with the --p1 flag for this mode. \r\n+      The un/aligned sequences file (i) must contain at least two\r\n+    sequences. If a single sequence has to be aligned with a profile\r\n+    the profile-profile option (b) has to be used.\r\n+\r\n+    Use the above option to '..b'and current progress of the MSA stage.\r\n+If the file globin.a2m already exists Clustal-Omega aborts before\r\n+reading the file globin.fa. Note that in verbose mode an output file\r\n+has to be specified, because progress/debugging information, which is\r\n+printed to screen, would interfere with the alignment being printed to\r\n+screen.\r\n+\r\n+\r\n+./clustalo -i PF00042_full.fa --dealign --mbed --outfmt=vie -o PF00042_full.vie --force \r\n+\r\n+Clustal-Omega reads the file PF00042_full.fa. This file contains\r\n+several thousand aligned sequences. --dealign tells Clustal-Omega to\r\n+erase all alignment information and re-align the sequences from\r\n+scratch. As there are several thousand sequences calculating a full\r\n+distance matrix may be slow. It may therefore be desirable to use the\r\n+--mbed option. Clustal-Omega now will calculate pairwise distances to\r\n+a small number of reference sequences only. This will give a\r\n+significant speed-up. The speed-up is greater for larger families\r\n+(more sequences). The alignment is then written out in Vienna format\r\n+(fasta format all on one line, no line breaks per sequence) to file\r\n+PF00042_full.vie.\r\n+\r\n+\r\n+./clustalo --p1=globin.sto --p2=PF00042_full.vie -o globin+pf00042.fa\r\n+\r\n+Clustal-Omega reads files globin.sto and PF00042_full.vie of aligned\r\n+sequences (profiles). Both profiles are then aligned. The relative\r\n+positions of residues in both profiles are not changed during this\r\n+alignment, however, columns of gaps may be inserted into the profiles,\r\n+respectively. The final alignment is written to file globin+pf00042.fa\r\n+in fasta format.\r\n+\r\n+\r\n+./clustalo -i globin.fa --p1=PF00042_full.vie -o pf00042+globin.fa\r\n+\r\n+Clustal-Omega reads file globin.fa of un-aligned sequences and the\r\n+profile (of aligned sequences) in file PF00042_full.vie. A HMM is\r\n+created from the profile. This HMM is used to guide the alignment of\r\n+the un-aligned sequences in globin.fa. The profile that was generated\r\n+during this alignment of un-aligned globin.fa sequences is then\r\n+aligned to the input profile PF00042_full.vie. The relative positions\r\n+of residues in profile PF00042_full.vie is not changed during this\r\n+alignment, however, columns of gaps may be inserted into the\r\n+profile. The final alignment is output to file pf00042+globin.fa in\r\n+fasta format. The alignment in this example may be slightly different\r\n+from the alignment in the previous example, because no HMM guidance\r\n+was used generate the profile globin.sto. In this example HMM guidance\r\n+was used to align the sequences in globin.fa; the hope being that this\r\n+intermediate alignment will have profited from the bigger profile.\r\n+\r\n+\r\n+\r\n+LITERATURE:\r\n+\r\n+[1] Johannes Soding (2005) Protein homology detection by HMM-HMM\r\n+    comparison. Bioinformatics 21 (7): 951\xe2\x80\x93960.\r\n+\r\n+[2] Blackshields G, Sievers F, Shi W, Wilm A, Higgins DG.  Sequence\r\n+    embedding for fast construction of guide trees for multiple\r\n+    sequence alignment.  Algorithms Mol Biol. 2010 May 14;5:21.\r\n+\r\n+[3] http://www.genetics.wustl.edu/eddy/software/#squid\r\n+\r\n+[4] Wilbur and Lipman, 1983; PMID 6572363\r\n+\r\n+[5] Thompson JD, Higgins DG, Gibson TJ.  (1994). CLUSTAL W: improving\r\n+    the sensitivity of progressive multiple sequence alignment through\r\n+    sequence weighting, position-specific gap penalties and weight\r\n+    matrix choice. Nucleic Acids Res., 22, 4673-4680.\r\n+\r\n+[6] Larkin MA, Blackshields G, Brown NP, Chenna R, McGettigan PA,\r\n+    McWilliam H, Valentin F, Wallace IM, Wilm A, Lopez R, Thompson JD,\r\n+    Gibson TJ, Higgins DG.  (2007). Clustal W and Clustal X version\r\n+    2.0. Bioinformatics, 23, 2947-2948.\r\n+\r\n+[7] Kimura M (1980). "A simple method for estimating evolutionary\r\n+    rates of base substitutions through comparative studies of\r\n+    nucleotide sequences". Journal of Molecular Evolution 16: 111\xe2\x80\x93120.\r\n+\r\n+[8] Edgar, R.C. (2004) MUSCLE: multiple sequence alignment with high\r\n+    accuracy and high throughput.Nucleic Acids Res. 32(5):1792-1797.\r\n+\r\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/TODO
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/TODO Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,45 @@
+IMPORTANT
+---------
+
+- consensus output (sto,aln) and compatibilety with bioperl/biopython
+
+- Split Homfam refs in two. Use one part as background HMM, the other parts
+  for benchmarking
+
+- Implement meta flags:
+  accurate: --iterations 3
+  default:  --mbed --iterations 1
+  fast: --mbed
+  and for more than 10k sequences: --mbed --mbed-iter
+
+- SSE instructions for hhalign (little use in ClustalO frontend; DD)
+  /
+  Patch new code which already contains SSE instructions
+
+  also fix automake/configure then
+
+- Multi-HMMs; also for Pfam+iteration (FS)
+
+- Show degradation of alignment quality when using x reference sequences
+  added to y random/false sequences
+  (Lio Pachter)
+
+- Seed pre-alignment with M-Coffee, MSAProbs, ...
+
+- GUI/API:
+  Will have to catch/override exits from source.
+  find . -name \*.c -or -name \*.cpp -or -name \*.h | xargs grep 'exit('
+  Also best to allow for user override of
+  void Fatal(char *msg, ...);
+  void Error(char *msg, ...);
+  void Warn(char *msg, ...);
+  void Info(int level, char *msg, ...);
+
+
+- Soeding: DNA/RNA alignment incl. reading of nucleotide HMMs
+
+- Automatic HMM-selection/search/download for input
+
+- Structure input: Psipred predictions are apparently part of their
+  hhms and should therefore be ready to use (part automatic
+  HMM-selection)
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/aclocal.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/aclocal.m4 Tue Jun 07 17:04:25 2011 -0400
[
b"@@ -0,0 +1,997 @@\n+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-\n+\n+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,\n+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\n+# This file is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+m4_ifndef([AC_AUTOCONF_VERSION],\n+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl\n+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,\n+[m4_warning([this file was generated for autoconf 2.65.\n+You have another version of autoconf.  It may work, but is not guaranteed to.\n+If you have problems, you may need to regenerate the build system entirely.\n+To do so, use the procedure documented by the package, typically `autoreconf'.])])\n+\n+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.\n+#\n+# This file is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# AM_AUTOMAKE_VERSION(VERSION)\n+# ----------------------------\n+# Automake X.Y traces this macro to ensure aclocal.m4 has been\n+# generated from the m4 files accompanying Automake X.Y.\n+# (This private macro should not be called outside this file.)\n+AC_DEFUN([AM_AUTOMAKE_VERSION],\n+[am__api_version='1.11'\n+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to\n+dnl require some minimum version.  Point them to the right macro.\n+m4_if([$1], [1.11.1], [],\n+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl\n+])\n+\n+# _AM_AUTOCONF_VERSION(VERSION)\n+# -----------------------------\n+# aclocal traces this macro to find the Autoconf version.\n+# This is a private macro too.  Using m4_define simplifies\n+# the logic in aclocal, which can simply ignore this definition.\n+m4_define([_AM_AUTOCONF_VERSION], [])\n+\n+# AM_SET_CURRENT_AUTOMAKE_VERSION\n+# -------------------------------\n+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.\n+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.\n+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],\n+[AM_AUTOMAKE_VERSION([1.11.1])dnl\n+m4_ifndef([AC_AUTOCONF_VERSION],\n+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl\n+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])\n+\n+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-\n+\n+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.\n+#\n+# This file is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets\n+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to\n+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.\n+#\n+# Of course, Automake must honor this variable whenever it calls a\n+# tool from the auxiliary directory.  The problem is that $srcdir (and\n+# therefore $ac_aux_dir as well) can be either absolute or relative,\n+# depending on how configure is run.  This is pretty annoying, since\n+# it makes $ac_aux_dir quite unusable in subdirectories: in the top\n+# source directory, any form will work fine, but in subdirectories a\n+# relative path needs to be adjusted first.\n+#\n+# $ac_aux_dir/missing\n+#    fails when called from a subdirectory if $ac_aux_dir is relative\n+# $top_srcdir/$ac_aux_dir/missing\n+#    fails if $ac_aux_dir is absolute,\n+#    fails when called from a subdirectory in a VPATH build with\n+#          a relative $ac_aux_dir\n+#\n+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir\n+# are both prefixed by $srcdir.  In "..b'  Free Software Foundation, Inc.\n+#\n+# This file is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# serial 2\n+\n+# _AM_SUBST_NOTMAKE(VARIABLE)\n+# ---------------------------\n+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.\n+# This macro is traced by Automake.\n+AC_DEFUN([_AM_SUBST_NOTMAKE])\n+\n+# AM_SUBST_NOTMAKE(VARIABLE)\n+# ---------------------------\n+# Public sister of _AM_SUBST_NOTMAKE.\n+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])\n+\n+# Check how to create a tarball.                            -*- Autoconf -*-\n+\n+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.\n+#\n+# This file is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# serial 2\n+\n+# _AM_PROG_TAR(FORMAT)\n+# --------------------\n+# Check how to create a tarball in format FORMAT.\n+# FORMAT should be one of `v7\', `ustar\', or `pax\'.\n+#\n+# Substitute a variable $(am__tar) that is a command\n+# writing to stdout a FORMAT-tarball containing the directory\n+# $tardir.\n+#     tardir=directory && $(am__tar) > result.tar\n+#\n+# Substitute a variable $(am__untar) that extract such\n+# a tarball read from stdin.\n+#     $(am__untar) < result.tar\n+AC_DEFUN([_AM_PROG_TAR],\n+[# Always define AMTAR for backward compatibility.\n+AM_MISSING_PROG([AMTAR], [tar])\n+m4_if([$1], [v7],\n+     [am__tar=\'${AMTAR} chof - "$$tardir"\'; am__untar=\'${AMTAR} xf -\'],\n+     [m4_case([$1], [ustar],, [pax],,\n+              [m4_fatal([Unknown tar format])])\n+AC_MSG_CHECKING([how to create a $1 tar archive])\n+# Loop over all known methods to create a tar archive until one works.\n+_am_tools=\'gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none\'\n+_am_tools=${am_cv_prog_tar_$1-$_am_tools}\n+# Do not fold the above two line into one, because Tru64 sh and\n+# Solaris sh will not grok spaces in the rhs of `-\'.\n+for _am_tool in $_am_tools\n+do\n+  case $_am_tool in\n+  gnutar)\n+    for _am_tar in tar gnutar gtar;\n+    do\n+      AM_RUN_LOG([$_am_tar --version]) && break\n+    done\n+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "\'"$$tardir"\'\n+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "\'"$tardir"\'\n+    am__untar="$_am_tar -xf -"\n+    ;;\n+  plaintar)\n+    # Must skip GNU tar: if it does not support --format= it doesn\'t create\n+    # ustar tarball either.\n+    (tar --version) >/dev/null 2>&1 && continue\n+    am__tar=\'tar chf - "$$tardir"\'\n+    am__tar_=\'tar chf - "$tardir"\'\n+    am__untar=\'tar xf -\'\n+    ;;\n+  pax)\n+    am__tar=\'pax -L -x $1 -w "$$tardir"\'\n+    am__tar_=\'pax -L -x $1 -w "$tardir"\'\n+    am__untar=\'pax -r\'\n+    ;;\n+  cpio)\n+    am__tar=\'find "$$tardir" -print | cpio -o -H $1 -L\'\n+    am__tar_=\'find "$tardir" -print | cpio -o -H $1 -L\'\n+    am__untar=\'cpio -i -H $1 -d\'\n+    ;;\n+  none)\n+    am__tar=false\n+    am__tar_=false\n+    am__untar=false\n+    ;;\n+  esac\n+\n+  # If the value was cached, stop now.  We just wanted to have am__tar\n+  # and am__untar set.\n+  test -n "${am_cv_prog_tar_$1}" && break\n+\n+  # tar/untar a dummy directory, and stop if the command works\n+  rm -rf conftest.dir\n+  mkdir conftest.dir\n+  echo GrepMe > conftest.dir/file\n+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])\n+  rm -rf conftest.dir\n+  if test -s conftest.tar; then\n+    AM_RUN_LOG([$am__untar <conftest.tar])\n+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break\n+  fi\n+done\n+rm -rf conftest.dir\n+\n+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])\n+AC_MSG_RESULT([$am_cv_prog_tar_$1])])\n+AC_SUBST([am__tar])\n+AC_SUBST([am__untar])\n+]) # _AM_PROG_TAR\n+\n+m4_include([m4/ax_prefix_config_h.m4])\n+m4_include([m4/libtool.m4])\n+m4_include([m4/ltoptions.m4])\n+m4_include([m4/ltsugar.m4])\n+m4_include([m4/ltversion.m4])\n+m4_include([m4/lt~obsolete.m4])\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/clustalo.pc.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/clustalo.pc.in Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: clustal-omega
+Description: @PACKAGE_NAME@ library.
+Version: @PACKAGE_VERSION@
+Requires:
+Libs: -L${libdir} -lclustalo
+Cflags: -I${includedir}/clustalo/
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/config.guess
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/config.guess Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1533 @@\n+#! /bin/sh\n+# Attempt to guess a canonical system name.\n+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,\n+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009\n+#   Free Software Foundation, Inc.\n+\n+timestamp=\'2009-06-10\'\n+\n+# This file is free software; you can redistribute it and/or modify it\n+# under the terms of the GNU General Public License as published by\n+# the Free Software Foundation; either version 2 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful, but\n+# WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+# General Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License\n+# along with this program; if not, write to the Free Software\n+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA\n+# 02110-1301, USA.\n+#\n+# As a special exception to the GNU General Public License, if you\n+# distribute this file as part of a program that contains a\n+# configuration script generated by Autoconf, you may include it under\n+# the same distribution terms that you use for the rest of that program.\n+\n+\n+# Originally written by Per Bothner <per@bothner.com>.\n+# Please send patches to <config-patches@gnu.org>.  Submit a context\n+# diff and a properly formatted ChangeLog entry.\n+#\n+# This script attempts to guess a canonical system name similar to\n+# config.sub.  If it succeeds, it prints the system name on stdout, and\n+# exits with 0.  Otherwise, it exits with 1.\n+#\n+# The plan is that this can be called by configure scripts if you\n+# don\'t specify an explicit build system type.\n+\n+me=`echo "$0" | sed -e \'s,.*/,,\'`\n+\n+usage="\\\n+Usage: $0 [OPTION]\n+\n+Output the configuration name of the system \\`$me\' is run on.\n+\n+Operation modes:\n+  -h, --help         print this help, then exit\n+  -t, --time-stamp   print date of last modification, then exit\n+  -v, --version      print version number, then exit\n+\n+Report bugs and patches to <config-patches@gnu.org>."\n+\n+version="\\\n+GNU config.guess ($timestamp)\n+\n+Originally written by Per Bothner.\n+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,\n+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.\n+\n+This is free software; see the source for copying conditions.  There is NO\n+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."\n+\n+help="\n+Try \\`$me --help\' for more information."\n+\n+# Parse command line\n+while test $# -gt 0 ; do\n+  case $1 in\n+    --time-stamp | --time* | -t )\n+       echo "$timestamp" ; exit ;;\n+    --version | -v )\n+       echo "$version" ; exit ;;\n+    --help | --h* | -h )\n+       echo "$usage"; exit ;;\n+    -- )     # Stop option processing\n+       shift; break ;;\n+    - )\t# Use stdin as input.\n+       break ;;\n+    -* )\n+       echo "$me: invalid option $1$help" >&2\n+       exit 1 ;;\n+    * )\n+       break ;;\n+  esac\n+done\n+\n+if test $# != 0; then\n+  echo "$me: too many arguments$help" >&2\n+  exit 1\n+fi\n+\n+trap \'exit 1\' 1 2 15\n+\n+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a\n+# compiler to aid in system detection is discouraged as it requires\n+# temporary files to be created and, as you can see below, it is a\n+# headache to deal with in a portable fashion.\n+\n+# Historically, `CC_FOR_BUILD\' used to be named `HOST_CC\'. We still\n+# use `HOST_CC\' if defined, but it is deprecated.\n+\n+# Portable tmp directory creation inspired by the Autoconf team.\n+\n+set_cc_for_build=\'\n+trap "exitcode=\\$?; (rm -f \\$tmpfiles 2>/dev/null; rmdir \\$tmp 2>/dev/null) && exit \\$exitcode" 0 ;\n+trap "rm -f \\$tmpfiles 2>/dev/null; rmdir \\$tmp 2>/dev/null; exit 1" 1 2 13 15 ;\n+: ${TMPDIR=/tmp} ;\n+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||\n+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 07'..b'\'s/.*NeXT Mach \\([0-9]*\\).*/\\1/p\') 2>/dev/null`;\n+  if (version < 4)\n+    printf ("%s-next-nextstep%d\\n", __ARCHITECTURE__, version);\n+  else\n+    printf ("%s-next-openstep%d\\n", __ARCHITECTURE__, version);\n+  exit (0);\n+#endif\n+\n+#if defined (MULTIMAX) || defined (n16)\n+#if defined (UMAXV)\n+  printf ("ns32k-encore-sysv\\n"); exit (0);\n+#else\n+#if defined (CMU)\n+  printf ("ns32k-encore-mach\\n"); exit (0);\n+#else\n+  printf ("ns32k-encore-bsd\\n"); exit (0);\n+#endif\n+#endif\n+#endif\n+\n+#if defined (__386BSD__)\n+  printf ("i386-pc-bsd\\n"); exit (0);\n+#endif\n+\n+#if defined (sequent)\n+#if defined (i386)\n+  printf ("i386-sequent-dynix\\n"); exit (0);\n+#endif\n+#if defined (ns32000)\n+  printf ("ns32k-sequent-dynix\\n"); exit (0);\n+#endif\n+#endif\n+\n+#if defined (_SEQUENT_)\n+    struct utsname un;\n+\n+    uname(&un);\n+\n+    if (strncmp(un.version, "V2", 2) == 0) {\n+\tprintf ("i386-sequent-ptx2\\n"); exit (0);\n+    }\n+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */\n+\tprintf ("i386-sequent-ptx1\\n"); exit (0);\n+    }\n+    printf ("i386-sequent-ptx\\n"); exit (0);\n+\n+#endif\n+\n+#if defined (vax)\n+# if !defined (ultrix)\n+#  include <sys/param.h>\n+#  if defined (BSD)\n+#   if BSD == 43\n+      printf ("vax-dec-bsd4.3\\n"); exit (0);\n+#   else\n+#    if BSD == 199006\n+      printf ("vax-dec-bsd4.3reno\\n"); exit (0);\n+#    else\n+      printf ("vax-dec-bsd\\n"); exit (0);\n+#    endif\n+#   endif\n+#  else\n+    printf ("vax-dec-bsd\\n"); exit (0);\n+#  endif\n+# else\n+    printf ("vax-dec-ultrix\\n"); exit (0);\n+# endif\n+#endif\n+\n+#if defined (alliant) && defined (i860)\n+  printf ("i860-alliant-bsd\\n"); exit (0);\n+#endif\n+\n+  exit (1);\n+}\n+EOF\n+\n+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&\n+\t{ echo "$SYSTEM_NAME"; exit; }\n+\n+# Apollos put the system type in the environment.\n+\n+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }\n+\n+# Convex versions that predate uname can use getsysinfo(1)\n+\n+if [ -x /usr/convex/getsysinfo ]\n+then\n+    case `getsysinfo -f cpu_type` in\n+    c1*)\n+\techo c1-convex-bsd\n+\texit ;;\n+    c2*)\n+\tif getsysinfo -f scalar_acc\n+\tthen echo c32-convex-bsd\n+\telse echo c2-convex-bsd\n+\tfi\n+\texit ;;\n+    c34*)\n+\techo c34-convex-bsd\n+\texit ;;\n+    c38*)\n+\techo c38-convex-bsd\n+\texit ;;\n+    c4*)\n+\techo c4-convex-bsd\n+\texit ;;\n+    esac\n+fi\n+\n+cat >&2 <<EOF\n+$0: unable to guess system type\n+\n+This script, last modified $timestamp, has failed to recognize\n+the operating system you are using. It is advised that you\n+download the most up to date version of the config scripts from\n+\n+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD\n+and\n+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD\n+\n+If the version you run ($0) is already up to date, please\n+send the following data and any information you think might be\n+pertinent to <config-patches@gnu.org> in order to provide the needed\n+information to handle your system.\n+\n+config.guess timestamp = $timestamp\n+\n+uname -m = `(uname -m) 2>/dev/null || echo unknown`\n+uname -r = `(uname -r) 2>/dev/null || echo unknown`\n+uname -s = `(uname -s) 2>/dev/null || echo unknown`\n+uname -v = `(uname -v) 2>/dev/null || echo unknown`\n+\n+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`\n+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`\n+\n+hostinfo               = `(hostinfo) 2>/dev/null`\n+/bin/universe          = `(/bin/universe) 2>/dev/null`\n+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`\n+/bin/arch              = `(/bin/arch) 2>/dev/null`\n+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`\n+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`\n+\n+UNAME_MACHINE = ${UNAME_MACHINE}\n+UNAME_RELEASE = ${UNAME_RELEASE}\n+UNAME_SYSTEM  = ${UNAME_SYSTEM}\n+UNAME_VERSION = ${UNAME_VERSION}\n+EOF\n+\n+exit 1\n+\n+# Local variables:\n+# eval: (add-hook \'write-file-hooks \'time-stamp)\n+# time-stamp-start: "timestamp=\'"\n+# time-stamp-format: "%:y-%02m-%02d"\n+# time-stamp-end: "\'"\n+# End:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/config.sub
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/config.sub Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1693 @@\n+#! /bin/sh\n+# Configuration validation subroutine script.\n+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,\n+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009\n+#   Free Software Foundation, Inc.\n+\n+timestamp=\'2009-06-11\'\n+\n+# This file is (in principle) common to ALL GNU software.\n+# The presence of a machine in this file suggests that SOME GNU software\n+# can handle that machine.  It does not imply ALL GNU software can.\n+#\n+# This file is free software; you can redistribute it and/or modify\n+# it under the terms of the GNU General Public License as published by\n+# the Free Software Foundation; either version 2 of the License, or\n+# (at your option) any later version.\n+#\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+# GNU General Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License\n+# along with this program; if not, write to the Free Software\n+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA\n+# 02110-1301, USA.\n+#\n+# As a special exception to the GNU General Public License, if you\n+# distribute this file as part of a program that contains a\n+# configuration script generated by Autoconf, you may include it under\n+# the same distribution terms that you use for the rest of that program.\n+\n+\n+# Please send patches to <config-patches@gnu.org>.  Submit a context\n+# diff and a properly formatted ChangeLog entry.\n+#\n+# Configuration subroutine to validate and canonicalize a configuration type.\n+# Supply the specified configuration type as an argument.\n+# If it is invalid, we print an error message on stderr and exit with code 1.\n+# Otherwise, we print the canonical config type on stdout and succeed.\n+\n+# This file is supposed to be the same for all GNU packages\n+# and recognize all the CPU types, system types and aliases\n+# that are meaningful with *any* GNU software.\n+# Each package is responsible for reporting which valid configurations\n+# it does not support.  The user should be able to distinguish\n+# a failure to support a valid configuration from a meaningless\n+# configuration.\n+\n+# The goal of this file is to map all the various variations of a given\n+# machine specification into a single specification in the form:\n+#\tCPU_TYPE-MANUFACTURER-OPERATING_SYSTEM\n+# or in some cases, the newer four-part form:\n+#\tCPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM\n+# It is wrong to echo any other type of specification.\n+\n+me=`echo "$0" | sed -e \'s,.*/,,\'`\n+\n+usage="\\\n+Usage: $0 [OPTION] CPU-MFR-OPSYS\n+       $0 [OPTION] ALIAS\n+\n+Canonicalize a configuration name.\n+\n+Operation modes:\n+  -h, --help         print this help, then exit\n+  -t, --time-stamp   print date of last modification, then exit\n+  -v, --version      print version number, then exit\n+\n+Report bugs and patches to <config-patches@gnu.org>."\n+\n+version="\\\n+GNU config.sub ($timestamp)\n+\n+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,\n+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.\n+\n+This is free software; see the source for copying conditions.  There is NO\n+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."\n+\n+help="\n+Try \\`$me --help\' for more information."\n+\n+# Parse command line\n+while test $# -gt 0 ; do\n+  case $1 in\n+    --time-stamp | --time* | -t )\n+       echo "$timestamp" ; exit ;;\n+    --version | -v )\n+       echo "$version" ; exit ;;\n+    --help | --h* | -h )\n+       echo "$usage"; exit ;;\n+    -- )     # Stop option processing\n+       shift; break ;;\n+    - )\t# Use stdin as input.\n+       break ;;\n+    -* )\n+       echo "$me: invalid option $1$help"\n+       exit 1 ;;\n+\n+    *local*)\n+       # First pass through any local machine types.\n+       echo $1\n+       exit ;;\n+\n+    * )\n+       break ;;\n+  esac\n+done\n+\n+case $# in\n+'..b'of $os.\n+\t\tos=`echo $os | sed \'s/[^-]*-//\'`\n+\t\techo Invalid configuration \\`$1\\\': system \\`$os\\\' not recognized 1>&2\n+\t\texit 1\n+\t\t;;\n+esac\n+else\n+\n+# Here we handle the default operating systems that come with various machines.\n+# The value should be what the vendor currently ships out the door with their\n+# machine or put another way, the most popular os provided with the machine.\n+\n+# Note that if you\'re going to try to match "-MANUFACTURER" here (say,\n+# "-sun"), then you have to tell the case statement up towards the top\n+# that MANUFACTURER isn\'t an operating system.  Otherwise, code above\n+# will signal an error saying that MANUFACTURER isn\'t an operating\n+# system, and we\'ll never get to this point.\n+\n+case $basic_machine in\n+        score-*)\n+\t\tos=-elf\n+\t\t;;\n+        spu-*)\n+\t\tos=-elf\n+\t\t;;\n+\t*-acorn)\n+\t\tos=-riscix1.2\n+\t\t;;\n+\tarm*-rebel)\n+\t\tos=-linux\n+\t\t;;\n+\tarm*-semi)\n+\t\tos=-aout\n+\t\t;;\n+        c4x-* | tic4x-*)\n+        \tos=-coff\n+\t\t;;\n+\t# This must come before the *-dec entry.\n+\tpdp10-*)\n+\t\tos=-tops20\n+\t\t;;\n+\tpdp11-*)\n+\t\tos=-none\n+\t\t;;\n+\t*-dec | vax-*)\n+\t\tos=-ultrix4.2\n+\t\t;;\n+\tm68*-apollo)\n+\t\tos=-domain\n+\t\t;;\n+\ti386-sun)\n+\t\tos=-sunos4.0.2\n+\t\t;;\n+\tm68000-sun)\n+\t\tos=-sunos3\n+\t\t# This also exists in the configure program, but was not the\n+\t\t# default.\n+\t\t# os=-sunos4\n+\t\t;;\n+\tm68*-cisco)\n+\t\tos=-aout\n+\t\t;;\n+        mep-*)\n+\t\tos=-elf\n+\t\t;;\n+\tmips*-cisco)\n+\t\tos=-elf\n+\t\t;;\n+\tmips*-*)\n+\t\tos=-elf\n+\t\t;;\n+\tor32-*)\n+\t\tos=-coff\n+\t\t;;\n+\t*-tti)\t# must be before sparc entry or we get the wrong os.\n+\t\tos=-sysv3\n+\t\t;;\n+\tsparc-* | *-sun)\n+\t\tos=-sunos4.1.1\n+\t\t;;\n+\t*-be)\n+\t\tos=-beos\n+\t\t;;\n+\t*-haiku)\n+\t\tos=-haiku\n+\t\t;;\n+\t*-ibm)\n+\t\tos=-aix\n+\t\t;;\n+    \t*-knuth)\n+\t\tos=-mmixware\n+\t\t;;\n+\t*-wec)\n+\t\tos=-proelf\n+\t\t;;\n+\t*-winbond)\n+\t\tos=-proelf\n+\t\t;;\n+\t*-oki)\n+\t\tos=-proelf\n+\t\t;;\n+\t*-hp)\n+\t\tos=-hpux\n+\t\t;;\n+\t*-hitachi)\n+\t\tos=-hiux\n+\t\t;;\n+\ti860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)\n+\t\tos=-sysv\n+\t\t;;\n+\t*-cbm)\n+\t\tos=-amigaos\n+\t\t;;\n+\t*-dg)\n+\t\tos=-dgux\n+\t\t;;\n+\t*-dolphin)\n+\t\tos=-sysv3\n+\t\t;;\n+\tm68k-ccur)\n+\t\tos=-rtu\n+\t\t;;\n+\tm88k-omron*)\n+\t\tos=-luna\n+\t\t;;\n+\t*-next )\n+\t\tos=-nextstep\n+\t\t;;\n+\t*-sequent)\n+\t\tos=-ptx\n+\t\t;;\n+\t*-crds)\n+\t\tos=-unos\n+\t\t;;\n+\t*-ns)\n+\t\tos=-genix\n+\t\t;;\n+\ti370-*)\n+\t\tos=-mvs\n+\t\t;;\n+\t*-next)\n+\t\tos=-nextstep3\n+\t\t;;\n+\t*-gould)\n+\t\tos=-sysv\n+\t\t;;\n+\t*-highlevel)\n+\t\tos=-bsd\n+\t\t;;\n+\t*-encore)\n+\t\tos=-bsd\n+\t\t;;\n+\t*-sgi)\n+\t\tos=-irix\n+\t\t;;\n+\t*-siemens)\n+\t\tos=-sysv4\n+\t\t;;\n+\t*-masscomp)\n+\t\tos=-rtu\n+\t\t;;\n+\tf30[01]-fujitsu | f700-fujitsu)\n+\t\tos=-uxpv\n+\t\t;;\n+\t*-rom68k)\n+\t\tos=-coff\n+\t\t;;\n+\t*-*bug)\n+\t\tos=-coff\n+\t\t;;\n+\t*-apple)\n+\t\tos=-macos\n+\t\t;;\n+\t*-atari*)\n+\t\tos=-mint\n+\t\t;;\n+\t*)\n+\t\tos=-none\n+\t\t;;\n+esac\n+fi\n+\n+# Here we handle the case where we know the os, and the CPU type, but not the\n+# manufacturer.  We pick the logical manufacturer.\n+vendor=unknown\n+case $basic_machine in\n+\t*-unknown)\n+\t\tcase $os in\n+\t\t\t-riscix*)\n+\t\t\t\tvendor=acorn\n+\t\t\t\t;;\n+\t\t\t-sunos*)\n+\t\t\t\tvendor=sun\n+\t\t\t\t;;\n+\t\t\t-cnk*|-aix*)\n+\t\t\t\tvendor=ibm\n+\t\t\t\t;;\n+\t\t\t-beos*)\n+\t\t\t\tvendor=be\n+\t\t\t\t;;\n+\t\t\t-hpux*)\n+\t\t\t\tvendor=hp\n+\t\t\t\t;;\n+\t\t\t-mpeix*)\n+\t\t\t\tvendor=hp\n+\t\t\t\t;;\n+\t\t\t-hiux*)\n+\t\t\t\tvendor=hitachi\n+\t\t\t\t;;\n+\t\t\t-unos*)\n+\t\t\t\tvendor=crds\n+\t\t\t\t;;\n+\t\t\t-dgux*)\n+\t\t\t\tvendor=dg\n+\t\t\t\t;;\n+\t\t\t-luna*)\n+\t\t\t\tvendor=omron\n+\t\t\t\t;;\n+\t\t\t-genix*)\n+\t\t\t\tvendor=ns\n+\t\t\t\t;;\n+\t\t\t-mvs* | -opened*)\n+\t\t\t\tvendor=ibm\n+\t\t\t\t;;\n+\t\t\t-os400*)\n+\t\t\t\tvendor=ibm\n+\t\t\t\t;;\n+\t\t\t-ptx*)\n+\t\t\t\tvendor=sequent\n+\t\t\t\t;;\n+\t\t\t-tpf*)\n+\t\t\t\tvendor=ibm\n+\t\t\t\t;;\n+\t\t\t-vxsim* | -vxworks* | -windiss*)\n+\t\t\t\tvendor=wrs\n+\t\t\t\t;;\n+\t\t\t-aux*)\n+\t\t\t\tvendor=apple\n+\t\t\t\t;;\n+\t\t\t-hms*)\n+\t\t\t\tvendor=hitachi\n+\t\t\t\t;;\n+\t\t\t-mpw* | -macos*)\n+\t\t\t\tvendor=apple\n+\t\t\t\t;;\n+\t\t\t-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)\n+\t\t\t\tvendor=atari\n+\t\t\t\t;;\n+\t\t\t-vos*)\n+\t\t\t\tvendor=stratus\n+\t\t\t\t;;\n+\t\tesac\n+\t\tbasic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`\n+\t\t;;\n+esac\n+\n+echo $basic_machine$os\n+exit\n+\n+# Local variables:\n+# eval: (add-hook \'write-file-hooks \'time-stamp)\n+# time-stamp-start: "timestamp=\'"\n+# time-stamp-format: "%:y-%02m-%02d"\n+# time-stamp-end: "\'"\n+# End:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/configure
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/configure Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,19827 @@\n+#! /bin/sh\n+# Guess values for system-dependent variables and create Makefiles.\n+# Generated by GNU Autoconf 2.65 for Clustal Omega 0.2.0.\n+#\n+# Report bugs to <clustalw@ucd.ie>.\n+#\n+#\n+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,\n+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,\n+# Inc.\n+#\n+#\n+# This configure script is free software; the Free Software Foundation\n+# gives unlimited permission to copy, distribute and modify it.\n+## -------------------- ##\n+## M4sh Initialization. ##\n+## -------------------- ##\n+\n+# Be more Bourne compatible\n+DUALCASE=1; export DUALCASE # for MKS sh\n+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :\n+  emulate sh\n+  NULLCMD=:\n+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which\n+  # is contrary to our usage.  Disable this feature.\n+  alias -g \'${1+"$@"}\'=\'"$@"\'\n+  setopt NO_GLOB_SUBST\n+else\n+  case `(set -o) 2>/dev/null` in #(\n+  *posix*) :\n+    set -o posix ;; #(\n+  *) :\n+     ;;\n+esac\n+fi\n+\n+\n+as_nl=\'\n+\'\n+export as_nl\n+# Printing a long string crashes Solaris 7 /usr/bin/printf.\n+as_echo=\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\n+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo\n+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo\n+# Prefer a ksh shell builtin over an external printf program on Solaris,\n+# but without wasting forks for bash or zsh.\n+if test -z "$BASH_VERSION$ZSH_VERSION" \\\n+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then\n+  as_echo=\'print -r --\'\n+  as_echo_n=\'print -rn --\'\n+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then\n+  as_echo=\'printf %s\\n\'\n+  as_echo_n=\'printf %s\'\n+else\n+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then\n+    as_echo_body=\'eval /usr/ucb/echo -n "$1$as_nl"\'\n+    as_echo_n=\'/usr/ucb/echo -n\'\n+  else\n+    as_echo_body=\'eval expr "X$1" : "X\\\\(.*\\\\)"\'\n+    as_echo_n_body=\'eval\n+      arg=$1;\n+      case $arg in #(\n+      *"$as_nl"*)\n+\texpr "X$arg" : "X\\\\(.*\\\\)$as_nl";\n+\targ=`expr "X$arg" : ".*$as_nl\\\\(.*\\\\)"`;;\n+      esac;\n+      expr "X$arg" : "X\\\\(.*\\\\)" | tr -d "$as_nl"\n+    \'\n+    export as_echo_n_body\n+    as_echo_n=\'sh -c $as_echo_n_body as_echo\'\n+  fi\n+  export as_echo_body\n+  as_echo=\'sh -c $as_echo_body as_echo\'\n+fi\n+\n+# The user is always right.\n+if test "${PATH_SEPARATOR+set}" != set; then\n+  PATH_SEPARATOR=:\n+  (PATH=\'/bin;/bin\'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {\n+    (PATH=\'/bin:/bin\'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||\n+      PATH_SEPARATOR=\';\'\n+  }\n+fi\n+\n+\n+# IFS\n+# We need space, tab and new line, in precisely that order.  Quoting is\n+# there to prevent editors from complaining about space-tab.\n+# (If _AS_PATH_WALK were called with IFS unset, it would disable word\n+# splitting by setting IFS to empty value.)\n+IFS=" ""\t$as_nl"\n+\n+# Find who we are.  Look in the path if we contain no directory separator.\n+case $0 in #((\n+  *[\\\\/]* ) as_myself=$0 ;;\n+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR\n+for as_dir in $PATH\n+do\n+  IFS=$as_save_IFS\n+  test -z "$as_dir" && as_dir=.\n+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break\n+  done\n+IFS=$as_save_IFS\n+\n+     ;;\n+esac\n+# We did not find ourselves, most probably we were run as `sh COMMAND\'\n+# in which case we are not to be found in the path.\n+if test "x$as_myself" = x; then\n+  as_myself=$0\n+fi\n+if test ! -f "$as_myself"; then\n+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2\n+  exit 1\n+fi\n+\n+# Unset variables that we do not need and which cause bugs (e.g. in\n+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"\n+# suppresses any "Segmentation fault" message there.  \'((\' could\n+# trigger a bug in pdksh 5.2.14.\n+for as_var in BASH_ENV ENV MAIL MAILPATH\n+do eval test x\\${$as_var+set} = xset \\\n+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :\n+done\n+PS1=\'$'..b'# Set to "yes" if using DIR/libNAME\\${shared_ext} during linking hardcodes\n+# DIR into the resulting binary.\n+hardcode_direct=$hardcode_direct_CXX\n+\n+# Set to "yes" if using DIR/libNAME\\${shared_ext} during linking hardcodes\n+# DIR into the resulting binary and the resulting library dependency is\n+# "absolute",i.e impossible to change by setting \\${shlibpath_var} if the\n+# library is relocated.\n+hardcode_direct_absolute=$hardcode_direct_absolute_CXX\n+\n+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR\n+# into the resulting binary.\n+hardcode_minus_L=$hardcode_minus_L_CXX\n+\n+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR\n+# into the resulting binary.\n+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX\n+\n+# Set to "yes" if building a shared library automatically hardcodes DIR\n+# into the library and all subsequent libraries and executables linked\n+# against it.\n+hardcode_automatic=$hardcode_automatic_CXX\n+\n+# Set to yes if linker adds runtime paths of dependent libraries\n+# to runtime path list.\n+inherit_rpath=$inherit_rpath_CXX\n+\n+# Whether libtool must link a program against all its dependency libraries.\n+link_all_deplibs=$link_all_deplibs_CXX\n+\n+# Fix the shell variable \\$srcfile for the compiler.\n+fix_srcfile_path=$lt_fix_srcfile_path_CXX\n+\n+# Set to "yes" if exported symbols are required.\n+always_export_symbols=$always_export_symbols_CXX\n+\n+# The commands to list exported symbols.\n+export_symbols_cmds=$lt_export_symbols_cmds_CXX\n+\n+# Symbols that should not be listed in the preloaded symbols.\n+exclude_expsyms=$lt_exclude_expsyms_CXX\n+\n+# Symbols that must always be exported.\n+include_expsyms=$lt_include_expsyms_CXX\n+\n+# Commands necessary for linking programs (against libraries) with templates.\n+prelink_cmds=$lt_prelink_cmds_CXX\n+\n+# Specify filename containing input files.\n+file_list_spec=$lt_file_list_spec_CXX\n+\n+# How to hardcode a shared library path into an executable.\n+hardcode_action=$hardcode_action_CXX\n+\n+# The directories searched by this compiler when creating a shared library.\n+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX\n+\n+# Dependencies to place before and after the objects being linked to\n+# create a shared library.\n+predep_objects=$lt_predep_objects_CXX\n+postdep_objects=$lt_postdep_objects_CXX\n+predeps=$lt_predeps_CXX\n+postdeps=$lt_postdeps_CXX\n+\n+# The library search path used internally by the compiler when linking\n+# a shared library.\n+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX\n+\n+# ### END LIBTOOL TAG CONFIG: CXX\n+_LT_EOF\n+\n+ ;;\n+\n+  esac\n+done # for ac_tag\n+\n+\n+as_fn_exit 0\n+_ACEOF\n+ac_clean_files=$ac_clean_files_save\n+\n+test $ac_write_fail = 0 ||\n+  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5\n+\n+\n+# configure is writing to config.log, and then calls config.status.\n+# config.status does its own redirection, appending to config.log.\n+# Unfortunately, on DOS this fails, as config.log is still kept open\n+# by configure, so config.status won\'t be able to write to it; its\n+# output is simply discarded.  So we exec the FD to /dev/null,\n+# effectively closing config.log, so it can be properly (re)opened and\n+# appended to by config.status.  When coming back to configure, we\n+# need to make the FD available again.\n+if test "$no_create" != yes; then\n+  ac_cs_success=:\n+  ac_config_status_args=\n+  test "$silent" = yes &&\n+    ac_config_status_args="$ac_config_status_args --quiet"\n+  exec 5>/dev/null\n+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false\n+  exec 5>>config.log\n+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which\n+  # would make configure fail if this is the last instruction.\n+  $ac_cs_success || as_fn_exit $?\n+fi\n+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then\n+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5\n+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}\n+fi\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/configure.ac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/configure.ac Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,492 @@\n+# configure.ac for Clustal Omega\n+#\n+# RCS $Id: configure.ac 238 2011-04-19 18:42:55Z fabian $\n+\n+\n+# release\n+#\n+#AC_INIT([Clustal Omega], [0.1.1], [clustalw@ucd.ie])\n+#PACKAGE_CODENAME="OppidumLeonis"\n+AC_INIT([Clustal Omega], [0.2.0], [clustalw@ucd.ie])\n+PACKAGE_CODENAME="IbiMeVidebunt"\n+\n+# The AC_INIT macro can take any source file as an argument. It just\n+# checks that the file is there, which should, in turn, mean that the\n+# source directory is there. AC_INIT generates the following m4\n+# macros, output variables and preprocessor symbols:\n+AC_SUBST(PACKAGE_NAME)\n+AC_SUBST(PACKAGE_TARNAME)\n+AC_SUBST(PACKAGE_VERSION)\n+AC_SUBST(PACKAGE_STRING)\n+AC_SUBST(PACKAGE_BUGREPORT)\n+AC_SUBST(PACKAGE_CODENAME)\n+\n+AC_MSG_NOTICE([\n+\n+    Welcome to $PACKAGE_NAME - version $PACKAGE_VERSION ($PACKAGE_CODENAME)\n+                                               \n+                       +NMMMMMMMMMS=             \n+                    MMMMM?      :MMMMM8          \n+                  IMMMMS           MMMMM,        \n+                ~MMMMN              ,MMMMM       \n+               =MMMMM                 MMMMM      \n+              ?MMMMM                  +MMMMM     \n+              MMMMMS                   MMMMM     \n+              MMMMM                    MMMMM:    \n+              MMMMM                    MMMMM+    \n+              MMMMM                    MMMMM~    \n+              MMMMM                    MMMMM     \n+              MMMMMZ                   MMMMM     \n+               MMMMM                  ,MMMMZ     \n+                MMMM8                 MMMM+      \n+                 MMMMS               MMMM,       \n+                   MMMMO           MMMM          \n+            ,N       SMMM        MMM8       +8   \n+            ,M7         M+       M+        :M8   \n+            ,MMMMMMMMMMMMI       MMMMMMMMMMMM8   \n+            ,MMMMMMMMMMMM8       MMMMMMMMMMMM8   \n+            ,MMMMMMMMMMMMN       MMMMMMMMMMMM8   \n+                                               \n+              ])\n+#\n+# Created with http://www.glassgiant.com/ascii/ and Wikipedia\'s Omega\n+# Replaced all dollars with S\'s.\n+#\n+# \n+#                 ,MMMMMMMMMD:        MMMMM     \n+#               NMMMMMMMMMMMMMM+      SMMMM     \n+#             DMMMMMMMMMMMMMMMMMM,    +MMMM     \n+#            MMMMMMMMM8ZSO8MMMMMMMM   +MMMM     \n+#           MMMMM7             SMMMM  +MMMM     \n+#          MMMO                   MM? +MMMM     \n+#         ?MMI                     NMIIMMMM     \n+#         MMM                       MMMMMMM     \n+#         MM                                    \n+#         MN                                    \n+#         MD                                    \n+#         MM                                    \n+#         MM?                       ,~+ISON     \n+#         =MMI                     MMSOMMMM     \n+#          MMMZ                   MMS +MMMM     \n+#           MMMM8:             :NMMM  +MMMM     \n+#            MMMMMMMMMDOODMMMMMMMMM   +MMMM     \n+#             MMMMMMMMMMMMMMMMMMMM    +MMMM     \n+#               OMMMMMMMMMMMMMMZ      SMMMM     \n+#                  MMMMMMMMMM+        MMMMM     \n+#                                                \n+\n+\n+# AC_MSG_NOTICE([Configuring for your system...])\n+\n+AC_PREREQ(2.6) # 2.60 needed for AC_USE_SYSTEM_EXTENSIONS\n+# consider 2.64 which allows to define a URL as well\n+\n+# The AM_INIT_AUTOMAKE line adds several standard checks. \n+# This macro is always needed for automake\n+# Obsolete: It takes the program name and version number as arguments.\n+AM_INIT_AUTOMAKE\n+\n+# config header: provides a way for people to customise the\n+# configuration for their platform, via #defines. config.h.in can be\n+# generated automatically with the autoheader tool. However, you need\n+# a stamp-h file in your project to ensure that automake regenerates\n+# config.h from config.h.in. Type \'touch stamp-h\' to add this file to\n+# your project.\n+#\n+AM_CONFIG_HEADER(src/config.h) \n+\n+# the following allows to install a copy config.'..b'seem to support OpenMP]))\n+#   AC_SUBST(OPENMP_CFLAGS)\n+#   AC_SUBST(OPENMP_CXXFLAGS)\n+#fi\n+\n+# ---   squid\n+#\n+#\n+# Extra checks for squid; see their configure, config.log, squidconf.h\n+# etc. For example, I\'m not sure about USE_HOST_BYTESWAP_FUNCTIONS,\n+# SIZEOF_UNSIGNED_LONG, HAVE_STRTOUL and HAVE_STRTOULL\n+#\n+# Might not just have to set compiler flags but create use squidconf.h.in\n+#\n+# The following hopefully takes about byte ordering (big-endian...).\n+# My hope is that it will set WORDS_BIGENDIAN and\n+# USE_HOST_BYTESWAP_FUNCTIONS (as used by squid) if necessary:\n+#\n+AC_C_BIGENDIAN(AC_MSG_WARN([$PACKAGE_NAME hasn\'t been tested on Big-Endian machines...expecting trouble!]))\n+AC_CHECK_FUNCS([ntohs ntohl ntons ntonl])\n+#\n+AC_CHECK_SIZEOF(unsigned short)\n+AC_CHECK_SIZEOF(unsigned int)\n+AC_CHECK_SIZEOF(unsigned long)\n+AC_CHECK_SIZEOF(unsigned long long)\n+#\n+AC_CHECK_FUNCS([stroul strtoull])\n+AC_CHECK_FUNCS([ftello fseeko])\n+AC_CHECK_FUNCS([ftello64 fseeko64])\n+AC_CHECK_FUNCS([ftell64 fseek64])\n+#\n+AC_TYPE_OFF_T\n+AC_CHECK_SIZEOF(fpos_t)\n+#\n+# struct stat64 and stat64 test:\n+# version 1:\n+#AC_CHECK_TYPE(struct stat64,\n+#               [AC_CHECK_FUNC([stat64],\n+#                             AC_DEFINE([HAVE_STAT64], [1], [Define if you have the stat64 function]))])\n+# version 2:\n+#AC_MSG_CHECKING(for struct stat64)\n+#AC_CACHE_VAL(sc_cv_type_stat64,\n+#[AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 s;],\n+#[sc_cv_type_stat64=yes],\n+#[sc_cv_type_stat64=no])])\n+#if test $sc_cv_type_stat64 = yes; then\n+#   AC_MSG_RESULT($sc_cv_type_stat64)\n+#   AC_CHECK_FUNC([stat64], AC_DEFINE([HAVE_STAT64], [1], [Define if you have the stat64 function]))\n+#   #AC_DEFINE(HAVE_STAT64, [1], [Define if you have the stat64 function])\n+#fi\n+#\n+#\n+# Above fails on myosin because storage size of struct 64 is unknown:\n+#  ssi.c:480: error: storage size of \xe2\x80\x98s1\xe2\x80\x99 isn\xe2\x80\x99t known \n+#\n+# On my MacBook OS X 10.6 I get:\n+#  ssi.c:481: warning: \xe2\x80\x98stat64\xe2\x80\x99 is deprecated (declared at /usr/include/sys/stat.h:465)\n+#\n+# So forget about it: we won\'t use stat64 or define HAVE_STAT64 and\n+# consequently do no tests here\n+#\n+\n+\n+\n+# Add support for the Dmalloc package. If the user runs configure with\n+# --with-dmalloc, then define WITH_DMALLOC and add -ldmalloc to LIBS.\n+AM_WITH_DMALLOC\n+\n+\n+# Check if svnversion is installed\n+#AC_PATH_PROG([SVNVERSION_BIN], [svnversionFIXME], [no])\n+## checking if we build in a subversion WC\n+#wc_found="no";\n+#if test "$SVNVERSION_BIN" != "no"; then\n+#   SVNVERSION=`$SVNVERSION_BIN -n $srcdir`\n+#   if test $SVNVERSION != "exported";\n+#   then\n+#       AC_MSG_NOTICE($SVNVERSION);\n+#   fi\n+#fi\n+\n+\n+# ---   debugging\n+# \n+# \n+#\n+AC_MSG_CHECKING([whether to build with debug information])\n+AC_ARG_ENABLE([debug],\n+              [AS_HELP_STRING([--enable-debug],\n+                              [Enable debugging (default=no)])],\n+              [debugit="$enableval"],\n+              [debugit=no])\n+AC_MSG_RESULT([$debugit])\n+\n+if test x"$debugit" = x"yes"; then\n+    # User variables CFLAGS/CXXFLAGS are used last during compilation and\n+    # can therefore overwrite system settings.\n+    #\n+    # if debugging was requested, add debugging info at the end of\n+    # C[XX]FLAGS, which makes sure previous optimisation flags are\n+    # overwritten (normally C[XX]FLAGS should not be modified as they\n+    # are user variables):\n+    # switch off assert etc\n+    # AC_DEFINE([DEBUG],[],[Debug Mode])\n+    CFLAGS="${CFLAGS} -g -ansi -Wall -O0"\n+    CXXFLAGS="${CXXFLAGS} -g -ansi -Wall -O0"\n+else\n+    # switch off assert etc\n+    AC_DEFINE([NDEBUG],[],[No-debug Mode])\n+    # if no debugging is requested, we make optimisation explicit\n+    AM_CXXFLAGS="${AM_CXXFLAGS} -O3"\n+    AM_CFLAGS="${AM_CFLAGS} -O3"\n+fi\n+\n+\n+\n+AC_SUBST([AM_CXXFLAGS])\n+AC_SUBST([AM_CFLAGS])\n+AC_SUBST([AM_LDFLAGS])\n+\n+\n+AC_CONFIG_FILES(Makefile\n+ src/Makefile\n+ clustalo.pc\n+ Doxyfile\n+ src/clustal/Makefile\n+ src/hhalign/Makefile\n+ src/kmpp/Makefile\n+ src/squid/Makefile)\n+AC_OUTPUT\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/depcomp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/depcomp Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,630 @@\n+#! /bin/sh\n+# depcomp - compile a program generating dependencies as side-effects\n+\n+scriptversion=2009-04-28.21; # UTC\n+\n+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free\n+# Software Foundation, Inc.\n+\n+# This program is free software; you can redistribute it and/or modify\n+# it under the terms of the GNU General Public License as published by\n+# the Free Software Foundation; either version 2, or (at your option)\n+# any later version.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+# GNU General Public License for more details.\n+\n+# You should have received a copy of the GNU General Public License\n+# along with this program.  If not, see <http://www.gnu.org/licenses/>.\n+\n+# As a special exception to the GNU General Public License, if you\n+# distribute this file as part of a program that contains a\n+# configuration script generated by Autoconf, you may include it under\n+# the same distribution terms that you use for the rest of that program.\n+\n+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.\n+\n+case $1 in\n+  \'\')\n+     echo "$0: No command.  Try \\`$0 --help\' for more information." 1>&2\n+     exit 1;\n+     ;;\n+  -h | --h*)\n+    cat <<\\EOF\n+Usage: depcomp [--help] [--version] PROGRAM [ARGS]\n+\n+Run PROGRAMS ARGS to compile a file, generating dependencies\n+as side-effects.\n+\n+Environment variables:\n+  depmode     Dependency tracking mode.\n+  source      Source file read by `PROGRAMS ARGS\'.\n+  object      Object file output by `PROGRAMS ARGS\'.\n+  DEPDIR      directory where to store dependencies.\n+  depfile     Dependency file to output.\n+  tmpdepfile  Temporary file to use when outputing dependencies.\n+  libtool     Whether libtool is used (yes/no).\n+\n+Report bugs to <bug-automake@gnu.org>.\n+EOF\n+    exit $?\n+    ;;\n+  -v | --v*)\n+    echo "depcomp $scriptversion"\n+    exit $?\n+    ;;\n+esac\n+\n+if test -z "$depmode" || test -z "$source" || test -z "$object"; then\n+  echo "depcomp: Variables source, object and depmode must be set" 1>&2\n+  exit 1\n+fi\n+\n+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.\n+depfile=${depfile-`echo "$object" |\n+  sed \'s|[^\\\\/]*$|\'${DEPDIR-.deps}\'/&|;s|\\.\\([^.]*\\)$|.P\\1|;s|Pobj$|Po|\'`}\n+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed \'s/\\.\\([^.]*\\)$/.T\\1/\'`}\n+\n+rm -f "$tmpdepfile"\n+\n+# Some modes work just like other modes, but use different flags.  We\n+# parameterize here, but still list the modes in the big case below,\n+# to make depend.m4 easier to write.  Note that we *cannot* use a case\n+# here, because this file can only contain one case statement.\n+if test "$depmode" = hp; then\n+  # HP compiler uses -M and no extra arg.\n+  gccflag=-M\n+  depmode=gcc\n+fi\n+\n+if test "$depmode" = dashXmstdout; then\n+   # This is just like dashmstdout with a different argument.\n+   dashmflag=-xM\n+   depmode=dashmstdout\n+fi\n+\n+cygpath_u="cygpath -u -f -"\n+if test "$depmode" = msvcmsys; then\n+   # This is just like msvisualcpp but w/o cygpath translation.\n+   # Just convert the backslash-escaped backslashes to single forward\n+   # slashes to satisfy depend.m4\n+   cygpath_u="sed s,\\\\\\\\\\\\\\\\,/,g"\n+   depmode=msvisualcpp\n+fi\n+\n+case "$depmode" in\n+gcc3)\n+## gcc 3 implements dependency tracking that does exactly what\n+## we want.  Yay!  Note: for some reason libtool 1.4 doesn\'t like\n+## it if -MD -MP comes after the -MF stuff.  Hmm.\n+## Unfortunately, FreeBSD c89 acceptance of flags depends upon\n+## the command line argument order; so add the flags where they\n+## appear in depend2.am.  Note that the slowdown incurred here\n+## affects only configure: in makefiles, %FASTDEP% shortcuts this.\n+  for arg\n+  do\n+    case $arg in\n+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;\n+    *)  set fnord "$@" "$arg" ;;\n+    esac\n+    shift # fnord\n+    shift # $arg\n+  done\n+  "$@"\n+  stat=$?\n+  i'..b'around.\n+    sed -e \'s/^\\\\$//\' -e \'/^$/d\' -e \'/:$/d\' | sed -e \'s/$/ :/\' >> "$depfile"\n+  rm -f "$tmpdepfile"\n+  ;;\n+\n+dashXmstdout)\n+  # This case only exists to satisfy depend.m4.  It is never actually\n+  # run, as this mode is specially recognized in the preamble.\n+  exit 1\n+  ;;\n+\n+makedepend)\n+  "$@" || exit $?\n+  # Remove any Libtool call\n+  if test "$libtool" = yes; then\n+    while test "X$1" != \'X--mode=compile\'; do\n+      shift\n+    done\n+    shift\n+  fi\n+  # X makedepend\n+  shift\n+  cleared=no eat=no\n+  for arg\n+  do\n+    case $cleared in\n+    no)\n+      set ""; shift\n+      cleared=yes ;;\n+    esac\n+    if test $eat = yes; then\n+      eat=no\n+      continue\n+    fi\n+    case "$arg" in\n+    -D*|-I*)\n+      set fnord "$@" "$arg"; shift ;;\n+    # Strip any option that makedepend may not understand.  Remove\n+    # the object too, otherwise makedepend will parse it as a source file.\n+    -arch)\n+      eat=yes ;;\n+    -*|$object)\n+      ;;\n+    *)\n+      set fnord "$@" "$arg"; shift ;;\n+    esac\n+  done\n+  obj_suffix=`echo "$object" | sed \'s/^.*\\././\'`\n+  touch "$tmpdepfile"\n+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"\n+  rm -f "$depfile"\n+  cat < "$tmpdepfile" > "$depfile"\n+  sed \'1,2d\' "$tmpdepfile" | tr \' \' \'\n+\' | \\\n+## Some versions of the HPUX 10.20 sed can\'t process this invocation\n+## correctly.  Breaking it into two sed invocations is a workaround.\n+    sed -e \'s/^\\\\$//\' -e \'/^$/d\' -e \'/:$/d\' | sed -e \'s/$/ :/\' >> "$depfile"\n+  rm -f "$tmpdepfile" "$tmpdepfile".bak\n+  ;;\n+\n+cpp)\n+  # Important note: in order to support this mode, a compiler *must*\n+  # always write the preprocessed file to stdout.\n+  "$@" || exit $?\n+\n+  # Remove the call to Libtool.\n+  if test "$libtool" = yes; then\n+    while test "X$1" != \'X--mode=compile\'; do\n+      shift\n+    done\n+    shift\n+  fi\n+\n+  # Remove `-o $object\'.\n+  IFS=" "\n+  for arg\n+  do\n+    case $arg in\n+    -o)\n+      shift\n+      ;;\n+    $object)\n+      shift\n+      ;;\n+    *)\n+      set fnord "$@" "$arg"\n+      shift # fnord\n+      shift # $arg\n+      ;;\n+    esac\n+  done\n+\n+  "$@" -E |\n+    sed -n -e \'/^# [0-9][0-9]* "\\([^"]*\\)".*/ s:: \\1 \\\\:p\' \\\n+       -e \'/^#line [0-9][0-9]* "\\([^"]*\\)".*/ s:: \\1 \\\\:p\' |\n+    sed \'$ s: \\\\$::\' > "$tmpdepfile"\n+  rm -f "$depfile"\n+  echo "$object : \\\\" > "$depfile"\n+  cat < "$tmpdepfile" >> "$depfile"\n+  sed < "$tmpdepfile" \'/^$/d;s/^ //;s/ \\\\$//;s/$/ :/\' >> "$depfile"\n+  rm -f "$tmpdepfile"\n+  ;;\n+\n+msvisualcpp)\n+  # Important note: in order to support this mode, a compiler *must*\n+  # always write the preprocessed file to stdout.\n+  "$@" || exit $?\n+\n+  # Remove the call to Libtool.\n+  if test "$libtool" = yes; then\n+    while test "X$1" != \'X--mode=compile\'; do\n+      shift\n+    done\n+    shift\n+  fi\n+\n+  IFS=" "\n+  for arg\n+  do\n+    case "$arg" in\n+    -o)\n+      shift\n+      ;;\n+    $object)\n+      shift\n+      ;;\n+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")\n+\tset fnord "$@"\n+\tshift\n+\tshift\n+\t;;\n+    *)\n+\tset fnord "$@" "$arg"\n+\tshift\n+\tshift\n+\t;;\n+    esac\n+  done\n+  "$@" -E 2>/dev/null |\n+  sed -n \'/^#line [0-9][0-9]* "\\([^"]*\\)"/ s::\\1:p\' | $cygpath_u | sort -u > "$tmpdepfile"\n+  rm -f "$depfile"\n+  echo "$object : \\\\" > "$depfile"\n+  sed < "$tmpdepfile" -n -e \'s% %\\\\ %g\' -e \'/^\\(.*\\)$/ s::\t\\1 \\\\:p\' >> "$depfile"\n+  echo "\t" >> "$depfile"\n+  sed < "$tmpdepfile" -n -e \'s% %\\\\ %g\' -e \'/^\\(.*\\)$/ s::\\1\\::p\' >> "$depfile"\n+  rm -f "$tmpdepfile"\n+  ;;\n+\n+msvcmsys)\n+  # This case exists only to let depend.m4 do its work.  It works by\n+  # looking at the text of this script.  This case will never be run,\n+  # since it is checked for above.\n+  exit 1\n+  ;;\n+\n+none)\n+  exec "$@"\n+  ;;\n+\n+*)\n+  echo "Unknown depmode $depmode" 1>&2\n+  exit 1\n+  ;;\n+esac\n+\n+exit 0\n+\n+# Local Variables:\n+# mode: shell-script\n+# sh-indentation: 2\n+# eval: (add-hook \'write-file-hooks \'time-stamp)\n+# time-stamp-start: "scriptversion="\n+# time-stamp-format: "%:y-%02m-%02d.%02H"\n+# time-stamp-time-zone: "UTC"\n+# time-stamp-end: "; # UTC"\n+# End:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/install-sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/install-sh Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,520 @@\n+#!/bin/sh\n+# install - install a program, script, or datafile\n+\n+scriptversion=2009-04-28.21; # UTC\n+\n+# This originates from X11R5 (mit/util/scripts/install.sh), which was\n+# later released in X11R6 (xc/config/util/install.sh) with the\n+# following copyright and license.\n+#\n+# Copyright (C) 1994 X Consortium\n+#\n+# Permission is hereby granted, free of charge, to any person obtaining a copy\n+# of this software and associated documentation files (the "Software"), to\n+# deal in the Software without restriction, including without limitation the\n+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n+# sell copies of the Software, and to permit persons to whom the Software is\n+# furnished to do so, subject to the following conditions:\n+#\n+# The above copyright notice and this permission notice shall be included in\n+# all copies or substantial portions of the Software.\n+#\n+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE\n+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\n+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-\n+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n+#\n+# Except as contained in this notice, the name of the X Consortium shall not\n+# be used in advertising or otherwise to promote the sale, use or other deal-\n+# ings in this Software without prior written authorization from the X Consor-\n+# tium.\n+#\n+#\n+# FSF changes to this file are in the public domain.\n+#\n+# Calling this script install-sh is preferred over install.sh, to prevent\n+# `make\' implicit rules from creating a file called install from it\n+# when there is no Makefile.\n+#\n+# This script is compatible with the BSD install script, but was written\n+# from scratch.\n+\n+nl=\'\n+\'\n+IFS=" ""\t$nl"\n+\n+# set DOITPROG to echo to test this script\n+\n+# Don\'t use :- since 4.3BSD and earlier shells don\'t like it.\n+doit=${DOITPROG-}\n+if test -z "$doit"; then\n+  doit_exec=exec\n+else\n+  doit_exec=$doit\n+fi\n+\n+# Put in absolute file names if you don\'t have them in your path;\n+# or use environment vars.\n+\n+chgrpprog=${CHGRPPROG-chgrp}\n+chmodprog=${CHMODPROG-chmod}\n+chownprog=${CHOWNPROG-chown}\n+cmpprog=${CMPPROG-cmp}\n+cpprog=${CPPROG-cp}\n+mkdirprog=${MKDIRPROG-mkdir}\n+mvprog=${MVPROG-mv}\n+rmprog=${RMPROG-rm}\n+stripprog=${STRIPPROG-strip}\n+\n+posix_glob=\'?\'\n+initialize_posix_glob=\'\n+  test "$posix_glob" != "?" || {\n+    if (set -f) 2>/dev/null; then\n+      posix_glob=\n+    else\n+      posix_glob=:\n+    fi\n+  }\n+\'\n+\n+posix_mkdir=\n+\n+# Desired mode of installed file.\n+mode=0755\n+\n+chgrpcmd=\n+chmodcmd=$chmodprog\n+chowncmd=\n+mvcmd=$mvprog\n+rmcmd="$rmprog -f"\n+stripcmd=\n+\n+src=\n+dst=\n+dir_arg=\n+dst_arg=\n+\n+copy_on_change=false\n+no_target_directory=\n+\n+usage="\\\n+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE\n+   or: $0 [OPTION]... SRCFILES... DIRECTORY\n+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...\n+   or: $0 [OPTION]... -d DIRECTORIES...\n+\n+In the 1st form, copy SRCFILE to DSTFILE.\n+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.\n+In the 4th, create DIRECTORIES.\n+\n+Options:\n+     --help     display this help and exit.\n+     --version  display version info and exit.\n+\n+  -c            (ignored)\n+  -C            install only if different (preserve the last data modification time)\n+  -d            create directories instead of installing files.\n+  -g GROUP      $chgrpprog installed files to GROUP.\n+  -m MODE       $chmodprog installed files to MODE.\n+  -o USER       $chownprog installed files to USER.\n+  -s            $stripprog installed files.\n+  -t DIRECTORY  install into DIRECTORY.\n+  -T            report an error if DSTFILE is a directory.\n+\n+Environment variables override the default commands:\n+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG\n+  RMPROG STRIPPROG\n'..b'\n+\t/*) prefix=\'/\';;\n+\t-*) prefix=\'./\';;\n+\t*)  prefix=\'\';;\n+      esac\n+\n+      eval "$initialize_posix_glob"\n+\n+      oIFS=$IFS\n+      IFS=/\n+      $posix_glob set -f\n+      set fnord $dstdir\n+      shift\n+      $posix_glob set +f\n+      IFS=$oIFS\n+\n+      prefixes=\n+\n+      for d\n+      do\n+\ttest -z "$d" && continue\n+\n+\tprefix=$prefix$d\n+\tif test -d "$prefix"; then\n+\t  prefixes=\n+\telse\n+\t  if $posix_mkdir; then\n+\t    (umask=$mkdir_umask &&\n+\t     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break\n+\t    # Don\'t fail if two instances are running concurrently.\n+\t    test -d "$prefix" || exit 1\n+\t  else\n+\t    case $prefix in\n+\t      *\\\'*) qprefix=`echo "$prefix" | sed "s/\'/\'\\\\\\\\\\\\\\\\\'\'/g"`;;\n+\t      *) qprefix=$prefix;;\n+\t    esac\n+\t    prefixes="$prefixes \'$qprefix\'"\n+\t  fi\n+\tfi\n+\tprefix=$prefix/\n+      done\n+\n+      if test -n "$prefixes"; then\n+\t# Don\'t fail if two instances are running concurrently.\n+\t(umask $mkdir_umask &&\n+\t eval "\\$doit_exec \\$mkdirprog $prefixes") ||\n+\t  test -d "$dstdir" || exit 1\n+\tobsolete_mkdir_used=true\n+      fi\n+    fi\n+  fi\n+\n+  if test -n "$dir_arg"; then\n+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&\n+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&\n+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||\n+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1\n+  else\n+\n+    # Make a couple of temp file names in the proper directory.\n+    dsttmp=$dstdir/_inst.$$_\n+    rmtmp=$dstdir/_rm.$$_\n+\n+    # Trap to clean up those temp files at exit.\n+    trap \'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret\' 0\n+\n+    # Copy the file name to the temp name.\n+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&\n+\n+    # and set any options; do chmod last to preserve setuid bits.\n+    #\n+    # If any of these fail, we abort the whole thing.  If we want to\n+    # ignore errors from any of these, just make sure not to ignore\n+    # errors from the above "$doit $cpprog $src $dsttmp" command.\n+    #\n+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&\n+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&\n+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&\n+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&\n+\n+    # If -C, don\'t bother to copy if it wouldn\'t change the file.\n+    if $copy_on_change &&\n+       old=`LC_ALL=C ls -dlL "$dst"\t2>/dev/null` &&\n+       new=`LC_ALL=C ls -dlL "$dsttmp"\t2>/dev/null` &&\n+\n+       eval "$initialize_posix_glob" &&\n+       $posix_glob set -f &&\n+       set X $old && old=:$2:$4:$5:$6 &&\n+       set X $new && new=:$2:$4:$5:$6 &&\n+       $posix_glob set +f &&\n+\n+       test "$old" = "$new" &&\n+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1\n+    then\n+      rm -f "$dsttmp"\n+    else\n+      # Rename the file to the real destination.\n+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||\n+\n+      # The rename failed, perhaps because mv can\'t rename something else\n+      # to itself, or perhaps because mv is so ancient that it does not\n+      # support -f.\n+      {\n+\t# Now remove or move aside any old file at destination location.\n+\t# We try this two ways since rm can\'t unlink itself on some\n+\t# systems and the destination file might be busy for other\n+\t# reasons.  In this case, the final cleanup might fail but the new\n+\t# file should still install successfully.\n+\t{\n+\t  test ! -f "$dst" ||\n+\t  $doit $rmcmd -f "$dst" 2>/dev/null ||\n+\t  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&\n+\t    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }\n+\t  } ||\n+\t  { echo "$0: cannot unlink or rename $dst" >&2\n+\t    (exit 1); exit 1\n+\t  }\n+\t} &&\n+\n+\t# Now rename the file to the real destination.\n+\t$doit $mvcmd "$dsttmp" "$dst"\n+      }\n+    fi || exit 1\n+\n+    trap \'\' 0\n+  fi\n+done\n+\n+# Local variables:\n+# eval: (add-hook \'write-file-hooks \'time-stamp)\n+# time-stamp-start: "scriptversion="\n+# time-stamp-format: "%:y-%02m-%02d.%02H"\n+# time-stamp-time-zone: "UTC"\n+# time-stamp-end: "; # UTC"\n+# End:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/ltmain.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/ltmain.sh Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,8413 @@\n+# Generated from ltmain.m4sh.\n+\n+# ltmain.sh (GNU libtool) 2.2.6b\n+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996\n+\n+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.\n+# This is free software; see the source for copying conditions.  There is NO\n+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n+\n+# GNU Libtool is free software; you can redistribute it and/or modify\n+# it under the terms of the GNU General Public License as published by\n+# the Free Software Foundation; either version 2 of the License, or\n+# (at your option) any later version.\n+#\n+# As a special exception to the GNU General Public License,\n+# if you distribute this file as part of a program or library that\n+# is built using GNU Libtool, you may include this file under the\n+# same distribution terms that you use for the rest of that program.\n+#\n+# GNU Libtool is distributed in the hope that it will be useful, but\n+# WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+# General Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License\n+# along with GNU Libtool; see the file COPYING.  If not, a copy\n+# can be downloaded from http://www.gnu.org/licenses/gpl.html,\n+# or obtained by writing to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n+\n+# Usage: $progname [OPTION]... [MODE-ARG]...\n+#\n+# Provide generalized library-building support services.\n+#\n+#     --config             show all configuration variables\n+#     --debug              enable verbose shell tracing\n+# -n, --dry-run            display commands without modifying any files\n+#     --features           display basic configuration information and exit\n+#     --mode=MODE          use operation mode MODE\n+#     --preserve-dup-deps  don\'t remove duplicate dependency libraries\n+#     --quiet, --silent    don\'t print informational messages\n+#     --tag=TAG            use configuration variables from tag TAG\n+# -v, --verbose            print informational messages (default)\n+#     --version            print version information\n+# -h, --help               print short or long help message\n+#\n+# MODE must be one of the following:\n+#\n+#       clean              remove files from the build directory\n+#       compile            compile a source file into a libtool object\n+#       execute            automatically set library path, then run a program\n+#       finish             complete the installation of libtool libraries\n+#       install            install libraries or executables\n+#       link               create a library or an executable\n+#       uninstall          remove libraries from an installed directory\n+#\n+# MODE-ARGS vary depending on the MODE.\n+# Try `$progname --help --mode=MODE\' for a more detailed description of MODE.\n+#\n+# When reporting a bug, please describe a test case to reproduce it and\n+# include the following information:\n+#\n+#       host-triplet:\t$host\n+#       shell:\t\t$SHELL\n+#       compiler:\t\t$LTCC\n+#       compiler flags:\t\t$LTCFLAGS\n+#       linker:\t\t$LD (gnu? $with_gnu_ld)\n+#       $progname:\t\t(GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1\n+#       automake:\t\t$automake_version\n+#       autoconf:\t\t$autoconf_version\n+#\n+# Report bugs to <bug-libtool@gnu.org>.\n+\n+PROGRAM=ltmain.sh\n+PACKAGE=libtool\n+VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"\n+TIMESTAMP=""\n+package_revision=1.3017\n+\n+# Be Bourne compatible\n+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then\n+  emulate sh\n+  NULLCMD=:\n+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which\n+  # is contrary to our usage.  Disable this feature.\n+  alias -g \'${1+"$@"}\'=\'"$@"\'\n+  setopt NO_GLOB_SUBST\n+else\n+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac\n+fi\n+BIN_SH=xpg4; export BIN_SH # for Tru64\n+DUALCASE=1; ex'..b'mmand in the postuninstall commands.\n+\t      func_execute_cmds "$postuninstall_cmds" \'test "$rmforce" = yes || exit_status=1\'\n+\t    fi\n+\n+\t    if test -n "$old_library"; then\n+\t      # Do each command in the old_postuninstall commands.\n+\t      func_execute_cmds "$old_postuninstall_cmds" \'test "$rmforce" = yes || exit_status=1\'\n+\t    fi\n+\t    # FIXME: should reinstall the best remaining shared library.\n+\t    ;;\n+\t  esac\n+\tfi\n+\t;;\n+\n+      *.lo)\n+\t# Possibly a libtool object, so verify it.\n+\tif func_lalib_p "$file"; then\n+\n+\t  # Read the .lo file\n+\t  func_source $dir/$name\n+\n+\t  # Add PIC object to the list of files to remove.\n+\t  if test -n "$pic_object" &&\n+\t     test "$pic_object" != none; then\n+\t    rmfiles="$rmfiles $dir/$pic_object"\n+\t  fi\n+\n+\t  # Add non-PIC object to the list of files to remove.\n+\t  if test -n "$non_pic_object" &&\n+\t     test "$non_pic_object" != none; then\n+\t    rmfiles="$rmfiles $dir/$non_pic_object"\n+\t  fi\n+\tfi\n+\t;;\n+\n+      *)\n+\tif test "$mode" = clean ; then\n+\t  noexename=$name\n+\t  case $file in\n+\t  *.exe)\n+\t    func_stripname \'\' \'.exe\' "$file"\n+\t    file=$func_stripname_result\n+\t    func_stripname \'\' \'.exe\' "$name"\n+\t    noexename=$func_stripname_result\n+\t    # $file with .exe has already been added to rmfiles,\n+\t    # add $file without .exe\n+\t    rmfiles="$rmfiles $file"\n+\t    ;;\n+\t  esac\n+\t  # Do a test to see if this is a libtool program.\n+\t  if func_ltwrapper_p "$file"; then\n+\t    if func_ltwrapper_executable_p "$file"; then\n+\t      func_ltwrapper_scriptname "$file"\n+\t      relink_command=\n+\t      func_source $func_ltwrapper_scriptname_result\n+\t      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"\n+\t    else\n+\t      relink_command=\n+\t      func_source $dir/$noexename\n+\t    fi\n+\n+\t    # note $name still contains .exe if it was in $file originally\n+\t    # as does the version of $file that was added into $rmfiles\n+\t    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"\n+\t    if test "$fast_install" = yes && test -n "$relink_command"; then\n+\t      rmfiles="$rmfiles $objdir/lt-$name"\n+\t    fi\n+\t    if test "X$noexename" != "X$name" ; then\n+\t      rmfiles="$rmfiles $objdir/lt-${noexename}.c"\n+\t    fi\n+\t  fi\n+\tfi\n+\t;;\n+      esac\n+      func_show_eval "$RM $rmfiles" \'exit_status=1\'\n+    done\n+    objdir="$origobjdir"\n+\n+    # Try to remove the ${objdir}s in the directories where we deleted files\n+    for dir in $rmdirs; do\n+      if test -d "$dir"; then\n+\tfunc_show_eval "rmdir $dir >/dev/null 2>&1"\n+      fi\n+    done\n+\n+    exit $exit_status\n+}\n+\n+{ test "$mode" = uninstall || test "$mode" = clean; } &&\n+    func_mode_uninstall ${1+"$@"}\n+\n+test -z "$mode" && {\n+  help="$generic_help"\n+  func_fatal_help "you must specify a MODE"\n+}\n+\n+test -z "$exec_cmd" && \\\n+  func_fatal_help "invalid operation mode \\`$mode\'"\n+\n+if test -n "$exec_cmd"; then\n+  eval exec "$exec_cmd"\n+  exit $EXIT_FAILURE\n+fi\n+\n+exit $exit_status\n+\n+\n+# The TAGs below are defined such that we never get into a situation\n+# in which we disable both kinds of libraries.  Given conflicting\n+# choices, we go for a static library, that is the most portable,\n+# since we can\'t tell whether shared libraries were disabled because\n+# the user asked for that or because the platform doesn\'t support\n+# them.  This is particularly important on AIX, because we don\'t\n+# support having both static and shared libraries enabled at the same\n+# time on that platform, so we default to a shared-only configuration.\n+# If a disable-shared tag is given, we\'ll fallback to a static-only\n+# configuration.  But we\'ll never go from static-only to shared-only.\n+\n+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared\n+build_libtool_libs=no\n+build_old_libs=yes\n+# ### END LIBTOOL TAG CONFIG: disable-shared\n+\n+# ### BEGIN LIBTOOL TAG CONFIG: disable-static\n+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`\n+# ### END LIBTOOL TAG CONFIG: disable-static\n+\n+# Local Variables:\n+# mode:shell-script\n+# sh-indentation:2\n+# End:\n+# vi:sw=2\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/ax_openmp.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/ax_openmp.m4 Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,99 @@
+# ===========================================================================
+#         http://www.gnu.org/software/autoconf-archive/ax_openmp.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro tries to find out how to compile programs that use OpenMP a
+#   standard API and set of compiler directives for parallel programming
+#   (see http://www-unix.mcs/)
+#
+#   On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS
+#   output variable to the flag (e.g. -omp) used both to compile *and* link
+#   OpenMP programs in the current language.
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well.
+#
+#   If you want to compile everything with OpenMP, you should set:
+#
+#     CFLAGS="$CFLAGS $OPENMP_CFLAGS"
+#     #OR#  CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+#     #OR#  FFLAGS="$FFLAGS $OPENMP_FFLAGS"
+#
+#   (depending on the selected language).
+#
+#   The user can override the default choice by setting the corresponding
+#   environment variable (e.g. OPENMP_CFLAGS).
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is
+#   found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
+#   not found. If ACTION-IF-FOUND is not specified, the default action will
+#   define HAVE_OPENMP.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program 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 General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 8
+
+AC_DEFUN([AX_OPENMP], [
+AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
+
+AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown
+# Flags to try:  -fopenmp (gcc), -openmp (icc), -mp (SGI & PGI),
+#                -xopenmp (Sun), -omp (Tru64), -qsmp=omp (AIX), none
+ax_openmp_flags="-fopenmp -openmp -mp -xopenmp -omp -qsmp=omp none"
+if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then
+  ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags"
+fi
+for ax_openmp_flag in $ax_openmp_flags; do
+  case $ax_openmp_flag in
+    none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;;
+    *) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;;
+  esac
+  AC_TRY_LINK_FUNC(omp_set_num_threads,
+ [ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break])
+done
+[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS
+])
+if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then
+  m4_default([$2],:)
+else
+  if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then
+    OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp
+  fi
+  m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])])
+fi
+])dnl AX_OPENMP
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/ax_prefix_config_h.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/ax_prefix_config_h.m4 Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,209 @@\n+# ===========================================================================\n+#    http://www.gnu.org/software/autoconf-archive/ax_prefix_config_h.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])]\n+#\n+# DESCRIPTION\n+#\n+#   This is a new variant from ac_prefix_config_ this one will use a\n+#   lowercase-prefix if the config-define was starting with a\n+#   lowercase-char, e.g. "#define const", "#define restrict", or "#define\n+#   off_t", (and this one can live in another directory, e.g.\n+#   testpkg/config.h therefore I decided to move the output-header to be the\n+#   first arg)\n+#\n+#   takes the usual config.h generated header file; looks for each of the\n+#   generated "#define SOMEDEF" lines, and prefixes the defined name (ie.\n+#   makes it "#define PREFIX_SOMEDEF". The result is written to the output\n+#   config.header file. The PREFIX is converted to uppercase for the\n+#   conversions.\n+#\n+#   Defaults:\n+#\n+#     OUTPUT-HEADER = $PACKAGE-config.h\n+#     PREFIX = $PACKAGE\n+#     ORIG-HEADER, from AM_CONFIG_HEADER(config.h)\n+#\n+#   Your configure.ac script should contain both macros in this order, and\n+#   unlike the earlier variations of this prefix-macro it is okay to place\n+#   the AX_PREFIX_CONFIG_H call before the AC_OUTPUT invokation.\n+#\n+#   Example:\n+#\n+#     AC_INIT(config.h.in)        # config.h.in as created by "autoheader"\n+#     AM_INIT_AUTOMAKE(testpkg, 0.1.1)    # makes #undef VERSION and PACKAGE\n+#     AM_CONFIG_HEADER(config.h)          # prep config.h from config.h.in\n+#     AX_PREFIX_CONFIG_H(mylib/_config.h) # prep mylib/_config.h from it..\n+#     AC_MEMORY_H                         # makes "#undef NEED_MEMORY_H"\n+#     AC_C_CONST_H                        # makes "#undef const"\n+#     AC_OUTPUT(Makefile)                 # creates the "config.h" now\n+#                                         # and also mylib/_config.h\n+#\n+#   if the argument to AX_PREFIX_CONFIG_H would have been omitted then the\n+#   default outputfile would have been called simply "testpkg-config.h", but\n+#   even under the name "mylib/_config.h" it contains prefix-defines like\n+#\n+#     #ifndef TESTPKG_VERSION\n+#     #define TESTPKG_VERSION "0.1.1"\n+#     #endif\n+#     #ifndef TESTPKG_NEED_MEMORY_H\n+#     #define TESTPKG_NEED_MEMORY_H 1\n+#     #endif\n+#     #ifndef _testpkg_const\n+#     #define _testpkg_const _const\n+#     #endif\n+#\n+#   and this "mylib/_config.h" can be installed along with other\n+#   header-files, which is most convenient when creating a shared library\n+#   (that has some headers) where some functionality is dependent on the\n+#   OS-features detected at compile-time. No need to invent some\n+#   "mylib-confdefs.h.in" manually. :-)\n+#\n+#   Note that some AC_DEFINEs that end up in the config.h file are actually\n+#   self-referential - e.g. AC_C_INLINE, AC_C_CONST, and the AC_TYPE_OFF_T\n+#   say that they "will define inline|const|off_t if the system does not do\n+#   it by itself". You might want to clean up about these - consider an\n+#   extra mylib/conf.h that reads something like:\n+#\n+#     #include <mylib/_config.h>\n+#     #ifndef _testpkg_const\n+#     #define _testpkg_const const\n+#     #endif\n+#\n+#   and then start using _testpkg_const in the header files. That is also a\n+#   good thing to differentiate whether some library-user has starting to\n+#   take up with a different compiler, so perhaps it could read something\n+#   like this:\n+#\n+#     #ifdef _MSC_VER\n+#     #include <mylib/_msvc.h>\n+#     #else\n+#     #include <mylib/_config.h>\n+#     #endif\n+#     #ifndef _testpkg_const\n+#     #define _testpkg_const const\n+#     #endif\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>\n+#   Copyright (c) 2008 Marten Svantesson\n+#   Copyright (c) 2008 Gerald Point <Gerald.Point@labri.fr>\n+#\n+#   This program is free software; you can redistribute it and/or modify it\n+'..b'   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 11\n+\n+AC_DEFUN([AX_PREFIX_CONFIG_H],[dnl\n+AC_PREREQ([2.62])\n+AC_BEFORE([AC_CONFIG_HEADERS],[$0])dnl\n+AC_CONFIG_COMMANDS([ifelse($1,,$PACKAGE-config.h,$1)],[dnl\n+AS_VAR_PUSHDEF([_OUT],[ac_prefix_conf_OUT])dnl\n+AS_VAR_PUSHDEF([_DEF],[ac_prefix_conf_DEF])dnl\n+AS_VAR_PUSHDEF([_PKG],[ac_prefix_conf_PKG])dnl\n+AS_VAR_PUSHDEF([_LOW],[ac_prefix_conf_LOW])dnl\n+AS_VAR_PUSHDEF([_UPP],[ac_prefix_conf_UPP])dnl\n+AS_VAR_PUSHDEF([_INP],[ac_prefix_conf_INP])dnl\n+m4_pushdef([_script],[conftest.prefix])dnl\n+m4_pushdef([_symbol],[m4_cr_Letters[]m4_cr_digits[]_])dnl\n+_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)`\n+_DEF=`echo _$_OUT | sed -e "y:m4_cr_letters:m4_cr_LETTERS[]:" -e "s/@<:@^m4_cr_Letters@:>@/_/g"`\n+_PKG=`echo ifelse($2, , $PACKAGE, $2)`\n+_LOW=`echo _$_PKG | sed -e "y:m4_cr_LETTERS-:m4_cr_letters[]_:"`\n+_UPP=`echo $_PKG | sed -e "y:m4_cr_letters-:m4_cr_LETTERS[]_:"  -e "/^@<:@m4_cr_digits@:>@/s/^/_/"`\n+_INP=`echo "ifelse($3,,,$3)" | sed -e \'s/ *//\'`\n+if test ".$_INP" = "."; then\n+   for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue\n+     case "$ac_file" in\n+        *.h) _INP=$ac_file ;;\n+        *)\n+     esac\n+     test ".$_INP" != "." && break\n+   done\n+fi\n+if test ".$_INP" = "."; then\n+   case "$_OUT" in\n+      */*) _INP=`basename "$_OUT"`\n+      ;;\n+      *-*) _INP=`echo "$_OUT" | sed -e "s/@<:@_symbol@:>@*-//"`\n+      ;;\n+      *) _INP=config.h\n+      ;;\n+   esac\n+fi\n+if test -z "$_PKG" ; then\n+   AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H])\n+else\n+  if test ! -f "$_INP" ; then if test -f "$srcdir/$_INP" ; then\n+     _INP="$srcdir/$_INP"\n+  fi fi\n+  AC_MSG_NOTICE(creating $_OUT - prefix $_UPP for $_INP defines)\n+  if test -f $_INP ; then\n+    AS_ECHO(["s/^@%:@undef  *\\\\(@<:@m4_cr_LETTERS[]_@:>@\\\\)/@%:@undef $_UPP""_\\\\1/"]) > _script\n+    AS_ECHO(["s/^@%:@undef  *\\\\(@<:@m4_cr_letters@:>@\\\\)/@%:@undef $_LOW""_\\\\1/"]) >> _script\n+    AS_ECHO(["s/^@%:@def[]ine  *\\\\(@<:@m4_cr_LETTERS[]_@:>@@<:@_symbol@:>@*\\\\)\\\\(.*\\\\)/@%:@ifndef $_UPP""_\\\\1\\\\"]) >> _script\n+    AS_ECHO(["@%:@def[]ine $_UPP""_\\\\1\\\\2\\\\"]) >> _script\n+    AS_ECHO(["@%:@endif/"]) >> _script\n+    AS_ECHO(["s/^@%:@def[]ine  *\\\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\\\)\\\\(.*\\\\)/@%:@ifndef $_LOW""_\\\\1\\\\"]) >> _script\n+    AS_ECHO(["@%:@define $_LOW""_\\\\1\\\\2\\\\"]) >> _script\n+    AS_ECHO(["@%:@endif/"]) >> _script\n+    # now executing _script on _DEF input to create _OUT output file\n+    echo "@%:@ifndef $_DEF"      >$tmp/pconfig.h\n+    echo "@%:@def[]ine $_DEF 1" >>$tmp/pconfig.h\n+    echo \' \' >>$tmp/pconfig.h\n+    echo /\'*\' $_OUT. Generated automatically at end of configure. \'*\'/ >>$tmp/pconfig.h\n+\n+    sed -f _script $_INP >>$tmp/pconfig.h\n+    echo \' \' >>$tmp/pconfig.h\n+    echo \'/* once:\' $_DEF \'*/\' >>$tmp/pconfig.h\n+    echo "@%:@endif" >>$tmp/pconfig.h\n+    if cmp -s $_OUT $tmp/pconfig.h 2>/dev/null; then\n+      AC_MSG_NOTICE([$_OUT is unchanged])\n+    else\n+      ac_dir=`AS_DIRNAME(["$_OUT"])`\n+      AS_MKDIR_P(["$ac_dir"])\n+      rm -f "$_OUT"\n+      mv $tmp/pconfig.h "$_OUT"\n+    fi\n+    cp _script _configs.sed\n+  else\n+    AC_MSG_ERROR([input file $_INP does not exist - skip generating $_OUT])\n+  fi\n+  rm -f conftest.*\n+fi\n+m4_popdef([_symbol])dnl\n+m4_popdef([_script])dnl\n+AS_VAR_POPDEF([_INP])dnl\n+AS_VAR_POPDEF([_UPP])dnl\n+AS_VAR_POPDEF([_LOW])dnl\n+AS_VAR_POPDEF([_PKG])dnl\n+AS_VAR_POPDEF([_DEF])dnl\n+AS_VAR_POPDEF([_OUT])dnl\n+],[PACKAGE="$PACKAGE"])])\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/libtool.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/libtool.m4 Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,7377 @@\n+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-\n+#\n+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,\n+#                 2006, 2007, 2008 Free Software Foundation, Inc.\n+#   Written by Gordon Matzigkeit, 1996\n+#\n+# This file is free software; the Free Software Foundation gives\n+# unlimited permission to copy and/or distribute it, with or without\n+# modifications, as long as this notice is preserved.\n+\n+m4_define([_LT_COPYING], [dnl\n+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,\n+#                 2006, 2007, 2008 Free Software Foundation, Inc.\n+#   Written by Gordon Matzigkeit, 1996\n+#\n+#   This file is part of GNU Libtool.\n+#\n+# GNU Libtool is free software; you can redistribute it and/or\n+# modify it under the terms of the GNU General Public License as\n+# published by the Free Software Foundation; either version 2 of\n+# the License, or (at your option) any later version.\n+#\n+# As a special exception to the GNU General Public License,\n+# if you distribute this file as part of a program or library that\n+# is built using GNU Libtool, you may include this file under the\n+# same distribution terms that you use for the rest of that program.\n+#\n+# GNU Libtool is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+# GNU General Public License for more details.\n+#\n+# You should have received a copy of the GNU General Public License\n+# along with GNU Libtool; see the file COPYING.  If not, a copy\n+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or\n+# obtained by writing to the Free Software Foundation, Inc.,\n+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n+])\n+\n+# serial 56 LT_INIT\n+\n+\n+# LT_PREREQ(VERSION)\n+# ------------------\n+# Complain and exit if this libtool version is less that VERSION.\n+m4_defun([LT_PREREQ],\n+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,\n+       [m4_default([$3],\n+\t\t   [m4_fatal([Libtool version $1 or higher is required],\n+\t\t             63)])],\n+       [$2])])\n+\n+\n+# _LT_CHECK_BUILDDIR\n+# ------------------\n+# Complain if the absolute build directory name contains unusual characters\n+m4_defun([_LT_CHECK_BUILDDIR],\n+[case `pwd` in\n+  *\\ * | *\\\t*)\n+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;\n+esac\n+])\n+\n+\n+# LT_INIT([OPTIONS])\n+# ------------------\n+AC_DEFUN([LT_INIT],\n+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT\n+AC_BEFORE([$0], [LT_LANG])dnl\n+AC_BEFORE([$0], [LT_OUTPUT])dnl\n+AC_BEFORE([$0], [LTDL_INIT])dnl\n+m4_require([_LT_CHECK_BUILDDIR])dnl\n+\n+dnl Autoconf doesn\'t catch unexpanded LT_ macros by default:\n+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl\n+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl\n+dnl aclocal doesn\'t pull ltoptions.m4, ltsugar.m4, or ltversion.m4\n+dnl unless we require an AC_DEFUNed macro:\n+AC_REQUIRE([LTOPTIONS_VERSION])dnl\n+AC_REQUIRE([LTSUGAR_VERSION])dnl\n+AC_REQUIRE([LTVERSION_VERSION])dnl\n+AC_REQUIRE([LTOBSOLETE_VERSION])dnl\n+m4_require([_LT_PROG_LTMAIN])dnl\n+\n+dnl Parse OPTIONS\n+_LT_SET_OPTIONS([$0], [$1])\n+\n+# This can be used to rebuild libtool when needed\n+LIBTOOL_DEPS="$ltmain"\n+\n+# Always use our own libtool.\n+LIBTOOL=\'$(SHELL) $(top_builddir)/libtool\'\n+AC_SUBST(LIBTOOL)dnl\n+\n+_LT_SETUP\n+\n+# Only expand once:\n+m4_define([LT_INIT])\n+])# LT_INIT\n+\n+# Old names:\n+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])\n+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])\n+dnl aclocal-1.4 backwards compatibility:\n+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])\n+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])\n+\n+\n+# _LT_CC_BASENAME(CC)\n+# -------------------\n+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.\n+m4_defun([_LT_CC_BASENAME],\n+[for cc_temp in $1""; do\n+  case $cc_temp in\n+    compile | *[[\\\\/]]compile | ccache | *[[\\\\/]]ccache ) ;;\n+    distcc | *[[\\\\/]]distcc | purify | *[[\\\\/'..b'me_result"\n+# Implementation must be kept synchronized with func_dirname\n+# and func_basename. For efficiency, we do not delegate to\n+# those functions but instead duplicate the functionality here.\n+func_dirname_and_basename ()\n+{\n+  case ${1} in\n+    */*) func_dirname_result="${1%/*}${2}" ;;\n+    *  ) func_dirname_result="${3}" ;;\n+  esac\n+  func_basename_result="${1##*/}"\n+}\n+\n+# func_stripname prefix suffix name\n+# strip PREFIX and SUFFIX off of NAME.\n+# PREFIX and SUFFIX must not contain globbing or regex special\n+# characters, hashes, percent signs, but SUFFIX may contain a leading\n+# dot (in which case that matches only a dot).\n+func_stripname ()\n+{\n+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\n+  # positional parameters, so assign one to ordinary parameter first.\n+  func_stripname_result=${3}\n+  func_stripname_result=${func_stripname_result#"${1}"}\n+  func_stripname_result=${func_stripname_result%"${2}"}\n+}\n+\n+# func_opt_split\n+func_opt_split ()\n+{\n+  func_opt_split_opt=${1%%=*}\n+  func_opt_split_arg=${1#*=}\n+}\n+\n+# func_lo2o object\n+func_lo2o ()\n+{\n+  case ${1} in\n+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\n+    *)    func_lo2o_result=${1} ;;\n+  esac\n+}\n+\n+# func_xform libobj-or-source\n+func_xform ()\n+{\n+  func_xform_result=${1%.*}.lo\n+}\n+\n+# func_arith arithmetic-term...\n+func_arith ()\n+{\n+  func_arith_result=$(( $[*] ))\n+}\n+\n+# func_len string\n+# STRING may not start with a hyphen.\n+func_len ()\n+{\n+  func_len_result=${#1}\n+}\n+\n+_LT_EOF\n+    ;;\n+  *) # Bourne compatible functions.\n+    cat << \\_LT_EOF >> "$cfgfile"\n+\n+# func_dirname file append nondir_replacement\n+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,\n+# otherwise set result to NONDIR_REPLACEMENT.\n+func_dirname ()\n+{\n+  # Extract subdirectory from the argument.\n+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`\n+  if test "X$func_dirname_result" = "X${1}"; then\n+    func_dirname_result="${3}"\n+  else\n+    func_dirname_result="$func_dirname_result${2}"\n+  fi\n+}\n+\n+# func_basename file\n+func_basename ()\n+{\n+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`\n+}\n+\n+dnl func_dirname_and_basename\n+dnl A portable version of this function is already defined in general.m4sh\n+dnl so there is no need for it here.\n+\n+# func_stripname prefix suffix name\n+# strip PREFIX and SUFFIX off of NAME.\n+# PREFIX and SUFFIX must not contain globbing or regex special\n+# characters, hashes, percent signs, but SUFFIX may contain a leading\n+# dot (in which case that matches only a dot).\n+# func_strip_suffix prefix name\n+func_stripname ()\n+{\n+  case ${2} in\n+    .*) func_stripname_result=`$ECHO "X${3}" \\\n+           | $Xsed -e "s%^${1}%%" -e "s%\\\\\\\\${2}\\$%%"`;;\n+    *)  func_stripname_result=`$ECHO "X${3}" \\\n+           | $Xsed -e "s%^${1}%%" -e "s%${2}\\$%%"`;;\n+  esac\n+}\n+\n+# sed scripts:\n+my_sed_long_opt=\'1s/^\\(-[[^=]]*\\)=.*/\\1/;q\'\n+my_sed_long_arg=\'1s/^-[[^=]]*=//\'\n+\n+# func_opt_split\n+func_opt_split ()\n+{\n+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`\n+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`\n+}\n+\n+# func_lo2o object\n+func_lo2o ()\n+{\n+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`\n+}\n+\n+# func_xform libobj-or-source\n+func_xform ()\n+{\n+  func_xform_result=`$ECHO "X${1}" | $Xsed -e \'s/\\.[[^.]]*$/.lo/\'`\n+}\n+\n+# func_arith arithmetic-term...\n+func_arith ()\n+{\n+  func_arith_result=`expr "$[@]"`\n+}\n+\n+# func_len string\n+# STRING may not start with a hyphen.\n+func_len ()\n+{\n+  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`\n+}\n+\n+_LT_EOF\n+esac\n+\n+case $lt_shell_append in\n+  yes)\n+    cat << \\_LT_EOF >> "$cfgfile"\n+\n+# func_append var value\n+# Append VALUE to the end of shell variable VAR.\n+func_append ()\n+{\n+  eval "$[1]+=\\$[2]"\n+}\n+_LT_EOF\n+    ;;\n+  *)\n+    cat << \\_LT_EOF >> "$cfgfile"\n+\n+# func_append var value\n+# Append VALUE to the end of shell variable VAR.\n+func_append ()\n+{\n+  eval "$[1]=\\$$[1]\\$[2]"\n+}\n+\n+_LT_EOF\n+    ;;\n+  esac\n+])\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/ltoptions.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/ltoptions.m4 Tue Jun 07 17:04:25 2011 -0400
[
b"@@ -0,0 +1,368 @@\n+# Helper functions for option handling.                    -*- Autoconf -*-\n+#\n+#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.\n+#   Written by Gary V. Vaughan, 2004\n+#\n+# This file is free software; the Free Software Foundation gives\n+# unlimited permission to copy and/or distribute it, with or without\n+# modifications, as long as this notice is preserved.\n+\n+# serial 6 ltoptions.m4\n+\n+# This is to help aclocal find these macros, as it can't see m4_define.\n+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])\n+\n+\n+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)\n+# ------------------------------------------\n+m4_define([_LT_MANGLE_OPTION],\n+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])\n+\n+\n+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)\n+# ---------------------------------------\n+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a\n+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are\n+# saved as a flag.\n+m4_define([_LT_SET_OPTION],\n+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl\n+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),\n+        _LT_MANGLE_DEFUN([$1], [$2]),\n+    [m4_warning([Unknown $1 option `$2'])])[]dnl\n+])\n+\n+\n+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])\n+# ------------------------------------------------------------\n+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.\n+m4_define([_LT_IF_OPTION],\n+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])\n+\n+\n+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)\n+# -------------------------------------------------------\n+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME\n+# are set.\n+m4_define([_LT_UNLESS_OPTIONS],\n+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),\n+\t    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),\n+\t\t      [m4_define([$0_found])])])[]dnl\n+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3\n+])[]dnl\n+])\n+\n+\n+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)\n+# ----------------------------------------\n+# OPTION-LIST is a space-separated list of Libtool options associated\n+# with MACRO-NAME.  If any OPTION has a matching handler declared with\n+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about\n+# the unknown option and exit.\n+m4_defun([_LT_SET_OPTIONS],\n+[# Set options\n+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),\n+    [_LT_SET_OPTION([$1], _LT_Option)])\n+\n+m4_if([$1],[LT_INIT],[\n+  dnl\n+  dnl Simply set some default values (i.e off) if boolean options were not\n+  dnl specified:\n+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no\n+  ])\n+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no\n+  ])\n+  dnl\n+  dnl If no reference was made to various pairs of opposing options, then\n+  dnl we run the default mode handler for the pair.  For example, if neither\n+  dnl `shared' nor `disable-shared' was passed, we enable building of shared\n+  dnl archives by default:\n+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])\n+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])\n+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])\n+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],\n+  \t\t   [_LT_ENABLE_FAST_INSTALL])\n+  ])\n+])# _LT_SET_OPTIONS\n+\n+\n+## --------------------------------- ##\n+## Macros to handle LT_INIT options. ##\n+## --------------------------------- ##\n+\n+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)\n+# -----------------------------------------\n+m4_define([_LT_MANGLE_DEFUN],\n+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])\n+\n+\n+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)\n+# -----------------------------------------------\n+m4_define([LT_OPTION_DEFINE],\n+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl\n+])# LT_OPTION_DEFINE\n+\n+\n+# dlopen\n+# ------\n+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes\n+])\n+\n+AU_DEFUN([AC_LIBTOOL_DLOPEN],\n+[_LT_SET_OPTION([LT_INIT], [dlopen])\n+AC_DIAGNOSE("..b'TIC],\n+[_LT_SET_OPTION([LT_INIT], [disable-static])\n+])\n+\n+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])\n+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])\n+\n+dnl aclocal-1.4 backwards compatibility:\n+dnl AC_DEFUN([AM_ENABLE_STATIC], [])\n+dnl AC_DEFUN([AM_DISABLE_STATIC], [])\n+\n+\n+\n+# _LT_ENABLE_FAST_INSTALL([DEFAULT])\n+# ----------------------------------\n+# implement the --enable-fast-install flag, and support the `fast-install\'\n+# and `disable-fast-install\' LT_INIT options.\n+# DEFAULT is either `yes\' or `no\'.  If omitted, it defaults to `yes\'.\n+m4_define([_LT_ENABLE_FAST_INSTALL],\n+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl\n+AC_ARG_ENABLE([fast-install],\n+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],\n+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],\n+    [p=${PACKAGE-default}\n+    case $enableval in\n+    yes) enable_fast_install=yes ;;\n+    no) enable_fast_install=no ;;\n+    *)\n+      enable_fast_install=no\n+      # Look at the argument we got.  We use all the common list separators.\n+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"\n+      for pkg in $enableval; do\n+\tIFS="$lt_save_ifs"\n+\tif test "X$pkg" = "X$p"; then\n+\t  enable_fast_install=yes\n+\tfi\n+      done\n+      IFS="$lt_save_ifs"\n+      ;;\n+    esac],\n+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)\n+\n+_LT_DECL([fast_install], [enable_fast_install], [0],\n+\t [Whether or not to optimize for fast installation])dnl\n+])# _LT_ENABLE_FAST_INSTALL\n+\n+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])\n+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])\n+\n+# Old names:\n+AU_DEFUN([AC_ENABLE_FAST_INSTALL],\n+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])\n+AC_DIAGNOSE([obsolete],\n+[$0: Remove this warning and the call to _LT_SET_OPTION when you put\n+the `fast-install\' option into LT_INIT\'s first parameter.])\n+])\n+\n+AU_DEFUN([AC_DISABLE_FAST_INSTALL],\n+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])\n+AC_DIAGNOSE([obsolete],\n+[$0: Remove this warning and the call to _LT_SET_OPTION when you put\n+the `disable-fast-install\' option into LT_INIT\'s first parameter.])\n+])\n+\n+dnl aclocal-1.4 backwards compatibility:\n+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])\n+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])\n+\n+\n+# _LT_WITH_PIC([MODE])\n+# --------------------\n+# implement the --with-pic flag, and support the `pic-only\' and `no-pic\'\n+# LT_INIT options.\n+# MODE is either `yes\' or `no\'.  If omitted, it defaults to `both\'.\n+m4_define([_LT_WITH_PIC],\n+[AC_ARG_WITH([pic],\n+    [AS_HELP_STRING([--with-pic],\n+\t[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],\n+    [pic_mode="$withval"],\n+    [pic_mode=default])\n+\n+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])\n+\n+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl\n+])# _LT_WITH_PIC\n+\n+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])\n+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])\n+\n+# Old name:\n+AU_DEFUN([AC_LIBTOOL_PICMODE],\n+[_LT_SET_OPTION([LT_INIT], [pic-only])\n+AC_DIAGNOSE([obsolete],\n+[$0: Remove this warning and the call to _LT_SET_OPTION when you\n+put the `pic-only\' option into LT_INIT\'s first parameter.])\n+])\n+\n+dnl aclocal-1.4 backwards compatibility:\n+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])\n+\n+## ----------------- ##\n+## LTDL_INIT Options ##\n+## ----------------- ##\n+\n+m4_define([_LTDL_MODE], [])\n+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],\n+\t\t [m4_define([_LTDL_MODE], [nonrecursive])])\n+LT_OPTION_DEFINE([LTDL_INIT], [recursive],\n+\t\t [m4_define([_LTDL_MODE], [recursive])])\n+LT_OPTION_DEFINE([LTDL_INIT], [subproject],\n+\t\t [m4_define([_LTDL_MODE], [subproject])])\n+\n+m4_define([_LTDL_TYPE], [])\n+LT_OPTION_DEFINE([LTDL_INIT], [installable],\n+\t\t [m4_define([_LTDL_TYPE], [installable])])\n+LT_OPTION_DEFINE([LTDL_INIT], [convenience],\n+\t\t [m4_define([_LTDL_TYPE], [convenience])])\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/ltsugar.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/ltsugar.m4 Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+    m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+      [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+   [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+  [lt_append([$1], [$2], [$3])$4],
+  [$5])],
+   [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+       [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/ltversion.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/ltversion.m4 Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3017 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/m4/lt~obsolete.m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/m4/lt~obsolete.m4 Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/missing
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/missing Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,376 @@\n+#! /bin/sh\n+# Common stub for a few missing GNU programs while installing.\n+\n+scriptversion=2009-04-28.21; # UTC\n+\n+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,\n+# 2008, 2009 Free Software Foundation, Inc.\n+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.\n+\n+# This program is free software; you can redistribute it and/or modify\n+# it under the terms of the GNU General Public License as published by\n+# the Free Software Foundation; either version 2, or (at your option)\n+# any later version.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY; without even the implied warranty of\n+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+# GNU General Public License for more details.\n+\n+# You should have received a copy of the GNU General Public License\n+# along with this program.  If not, see <http://www.gnu.org/licenses/>.\n+\n+# As a special exception to the GNU General Public License, if you\n+# distribute this file as part of a program that contains a\n+# configuration script generated by Autoconf, you may include it under\n+# the same distribution terms that you use for the rest of that program.\n+\n+if test $# -eq 0; then\n+  echo 1>&2 "Try \\`$0 --help\' for more information"\n+  exit 1\n+fi\n+\n+run=:\n+sed_output=\'s/.* --output[ =]\\([^ ]*\\).*/\\1/p\'\n+sed_minuso=\'s/.* -o \\([^ ]*\\).*/\\1/p\'\n+\n+# In the cases where this matters, `missing\' is being run in the\n+# srcdir already.\n+if test -f configure.ac; then\n+  configure_ac=configure.ac\n+else\n+  configure_ac=configure.in\n+fi\n+\n+msg="missing on your system"\n+\n+case $1 in\n+--run)\n+  # Try to run requested program, and just exit if it succeeds.\n+  run=\n+  shift\n+  "$@" && exit 0\n+  # Exit code 63 means version mismatch.  This often happens\n+  # when the user try to use an ancient version of a tool on\n+  # a file that requires a minimum version.  In this case we\n+  # we should proceed has if the program had been absent, or\n+  # if --run hadn\'t been passed.\n+  if test $? = 63; then\n+    run=:\n+    msg="probably too old"\n+  fi\n+  ;;\n+\n+  -h|--h|--he|--hel|--help)\n+    echo "\\\n+$0 [OPTION]... PROGRAM [ARGUMENT]...\n+\n+Handle \\`PROGRAM [ARGUMENT]...\' for when PROGRAM is missing, or return an\n+error status if there is no known handling for PROGRAM.\n+\n+Options:\n+  -h, --help      display this help and exit\n+  -v, --version   output version information and exit\n+  --run           try to run the given command, and emulate it if it fails\n+\n+Supported PROGRAM values:\n+  aclocal      touch file \\`aclocal.m4\'\n+  autoconf     touch file \\`configure\'\n+  autoheader   touch file \\`config.h.in\'\n+  autom4te     touch the output file, or create a stub one\n+  automake     touch all \\`Makefile.in\' files\n+  bison        create \\`y.tab.[ch]\', if possible, from existing .[ch]\n+  flex         create \\`lex.yy.c\', if possible, from existing .c\n+  help2man     touch the output file\n+  lex          create \\`lex.yy.c\', if possible, from existing .c\n+  makeinfo     touch the output file\n+  tar          try tar, gnutar, gtar, then tar without non-portable flags\n+  yacc         create \\`y.tab.[ch]\', if possible, from existing .[ch]\n+\n+Version suffixes to PROGRAM as well as the prefixes \\`gnu-\', \\`gnu\', and\n+\\`g\' are ignored when checking the name.\n+\n+Send bug reports to <bug-automake@gnu.org>."\n+    exit $?\n+    ;;\n+\n+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)\n+    echo "missing $scriptversion (GNU Automake)"\n+    exit $?\n+    ;;\n+\n+  -*)\n+    echo 1>&2 "$0: Unknown \\`$1\' option"\n+    echo 1>&2 "Try \\`$0 --help\' for more information"\n+    exit 1\n+    ;;\n+\n+esac\n+\n+# normalize program name to check for.\n+program=`echo "$1" | sed \'\n+  s/^gnu-//; t\n+  s/^gnu//; t\n+  s/^g//; t\'`\n+\n+# Now exit if we have it, but it failed.  Also exit now if we\n+# don\'t have it and --version was passed (most likely to detect\n+# the program).  This is about non-GNU programs, so use $1 not\n+# $program.\n+case $1 in\n+  lex*|yacc*'..b'  if test ! -f y.tab.c; then\n+\techo \'main() { return 0; }\' >y.tab.c\n+    fi\n+    ;;\n+\n+  lex*|flex*)\n+    echo 1>&2 "\\\n+WARNING: \\`$1\' is $msg.  You should only need it if\n+         you modified a \\`.l\' file.  You may need the \\`Flex\' package\n+         in order for those modifications to take effect.  You can get\n+         \\`Flex\' from any GNU archive site."\n+    rm -f lex.yy.c\n+    if test $# -ne 1; then\n+        eval LASTARG="\\${$#}"\n+\tcase $LASTARG in\n+\t*.l)\n+\t    SRCFILE=`echo "$LASTARG" | sed \'s/l$/c/\'`\n+\t    if test -f "$SRCFILE"; then\n+\t         cp "$SRCFILE" lex.yy.c\n+\t    fi\n+\t  ;;\n+\tesac\n+    fi\n+    if test ! -f lex.yy.c; then\n+\techo \'main() { return 0; }\' >lex.yy.c\n+    fi\n+    ;;\n+\n+  help2man*)\n+    echo 1>&2 "\\\n+WARNING: \\`$1\' is $msg.  You should only need it if\n+\t you modified a dependency of a manual page.  You may need the\n+\t \\`Help2man\' package in order for those modifications to take\n+\t effect.  You can get \\`Help2man\' from any GNU archive site."\n+\n+    file=`echo "$*" | sed -n "$sed_output"`\n+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`\n+    if test -f "$file"; then\n+\ttouch $file\n+    else\n+\ttest -z "$file" || exec >$file\n+\techo ".ab help2man is required to generate this page"\n+\texit $?\n+    fi\n+    ;;\n+\n+  makeinfo*)\n+    echo 1>&2 "\\\n+WARNING: \\`$1\' is $msg.  You should only need it if\n+         you modified a \\`.texi\' or \\`.texinfo\' file, or any other file\n+         indirectly affecting the aspect of the manual.  The spurious\n+         call might also be the consequence of using a buggy \\`make\' (AIX,\n+         DU, IRIX).  You might want to install the \\`Texinfo\' package or\n+         the \\`GNU make\' package.  Grab either from any GNU archive site."\n+    # The file to touch is that specified with -o ...\n+    file=`echo "$*" | sed -n "$sed_output"`\n+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`\n+    if test -z "$file"; then\n+      # ... or it is the one specified with @setfilename ...\n+      infile=`echo "$*" | sed \'s/.* \\([^ ]*\\) *$/\\1/\'`\n+      file=`sed -n \'\n+\t/^@setfilename/{\n+\t  s/.* \\([^ ]*\\) *$/\\1/\n+\t  p\n+\t  q\n+\t}\' $infile`\n+      # ... or it is derived from the source name (dir/f.texi becomes f.info)\n+      test -z "$file" && file=`echo "$infile" | sed \'s,.*/,,;s,.[^.]*$,,\'`.info\n+    fi\n+    # If the file does not exist, the user really needs makeinfo;\n+    # let\'s fail without touching anything.\n+    test -f $file || exit 1\n+    touch $file\n+    ;;\n+\n+  tar*)\n+    shift\n+\n+    # We have already tried tar in the generic part.\n+    # Look for gnutar/gtar before invocation to avoid ugly error\n+    # messages.\n+    if (gnutar --version > /dev/null 2>&1); then\n+       gnutar "$@" && exit 0\n+    fi\n+    if (gtar --version > /dev/null 2>&1); then\n+       gtar "$@" && exit 0\n+    fi\n+    firstarg="$1"\n+    if shift; then\n+\tcase $firstarg in\n+\t*o*)\n+\t    firstarg=`echo "$firstarg" | sed s/o//`\n+\t    tar "$firstarg" "$@" && exit 0\n+\t    ;;\n+\tesac\n+\tcase $firstarg in\n+\t*h*)\n+\t    firstarg=`echo "$firstarg" | sed s/h//`\n+\t    tar "$firstarg" "$@" && exit 0\n+\t    ;;\n+\tesac\n+    fi\n+\n+    echo 1>&2 "\\\n+WARNING: I can\'t seem to be able to run \\`tar\' with the given arguments.\n+         You may want to install GNU tar or Free paxutils, or check the\n+         command line arguments."\n+    exit 1\n+    ;;\n+\n+  *)\n+    echo 1>&2 "\\\n+WARNING: \\`$1\' is needed, and is $msg.\n+         You might have modified some files without having the\n+         proper tools for further handling them.  Check the \\`README\' file,\n+         it often tells you about the needed prerequisites for installing\n+         this package.  You may also peek at any GNU archive site, in case\n+         some other package would contain this missing \\`$1\' program."\n+    exit 1\n+    ;;\n+esac\n+\n+exit 0\n+\n+# Local variables:\n+# eval: (add-hook \'write-file-hooks \'time-stamp)\n+# time-stamp-start: "scriptversion="\n+# time-stamp-format: "%:y-%02m-%02d.%02H"\n+# time-stamp-time-zone: "UTC"\n+# time-stamp-end: "; # UTC"\n+# End:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,31 @@
+EXTRA_DIST = clustalo-api-test.c
+
+SUBDIRS = hhalign squid kmpp clustal
+
+AM_LDFLAGS = @AM_LDFLAGS@
+AM_CXXFLAGS = @AM_CXXFLAGS@ @OPENMP_CXXFLAGS@
+AM_CFLAGS = @AM_CFLAGS@ @OPENMP_CFLAGS@
+
+
+# the following is the clustalo convenience library which wraps all
+# the other noinst libraries
+
+lib_LTLIBRARIES = libclustalo.la
+
+libclustalo_la_SOURCES = clustal-omega.c
+libclustalo_la_LIBADD = clustal/libclustal.la \
+ hhalign/libhhalign.la \
+ squid/libsquid.la \
+ kmpp/libkmpp.la 
+libclustalo_la_LDFLAGS = -static
+library_includedir=$(includedir)/clustalo/
+library_include_HEADERS = clustal-omega-config.h clustal-omega.h
+
+
+
+bin_PROGRAMS = clustalo
+
+clustalo_SOURCES =  main.cpp \
+ mymain.c mymain.h
+
+clustalo_LDADD = libclustalo.la
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,832 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+bin_PROGRAMS = clustalo$(EXEEXT)\n+subdir = src\n+DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \\\n+\t$(srcdir)/Makefile.in $(srcdir)/config.h.in\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = config.h\n+CONFIG_CLEAN_FILES =\n+CONFIG_CLEAN_VPATH_FILES =\n+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed \'s|.|.|g\'`;\n+am__vpath_adj = case $$p in \\\n+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \\\n+    *) f=$$p;; \\\n+  esac;\n+am__strip_dir = f=`echo $$p | sed -e \'s|^.*/||\'`;\n+am__install_max = 40\n+am__nobase_strip_setup = \\\n+  srcdirstrip=`echo "$(srcdir)" | sed \'s/[].[^$$\\\\*|]/\\\\\\\\&/g\'`\n+am__nobase_strip = \\\n+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"\n+am__nobase_list = $(am__nobase_strip_setup); \\\n+  for p in $$list; do echo "$$p $$p"; done | \\\n+  sed "s| $$srcdirstrip/| |;"\' / .*\\//!s/ .*/ ./; s,\\( .*\\)/[^/]*$$,\\1,\' | \\\n+  $(AWK) \'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \\\n+    if (++n[$$2] == $(am__install_max)) \\\n+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \\\n+    END { for (dir in files) print dir, files[dir] }\'\n+am__base_list = \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\' | \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\'\n+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \\\n+\t"$(DESTDIR)$(library_includedir)"\n+LTLIBRARIES = $(lib_LTLIBRARIES)\n+libclustalo_la_DEPENDENCIES = clustal/libclustal.la \\\n+\thhalign/libhhalign.la squid/libsquid.la kmpp/libkmpp.la\n+am_libclustalo_la_OBJECTS = clustal-omega.lo\n+libclustalo_la_OBJECTS = $(am_libclustalo_la_OBJECTS)\n+libclustalo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \\\n+\t$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \\\n+\t$(libclustalo_la_LDFLAGS) $(LDFLAGS) -o $@\n+PROGRAMS = $(bin_PROGRAMS)\n+am_clustalo_OBJECTS = main.$(OBJEXT) mymain.$(OBJEXT)\n+clustalo_OBJECTS = $(am_clustalo_OBJECTS)\n+clustalo_DEPENDENCIES = libclustalo.la\n+DEFAULT_INCLUDES = -I.@am__isrc@\n+depcomp = $(SHELL) $(top_srcdir)/depcomp\n+am__depfiles_maybe = depfiles\n+am__mv = mv -f\n+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\\n+\t$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t'..b'dir" \\\n+\t        distdir="$$new_distdir" \\\n+\t\tam__remove_distdir=: \\\n+\t\tam__skip_length_check=: \\\n+\t\tam__skip_mode_fix=: \\\n+\t        distdir) \\\n+\t      || exit 1; \\\n+\t  fi; \\\n+\tdone\n+check-am: all-am\n+check: check-recursive\n+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) config.h\n+install-binPROGRAMS: install-libLTLIBRARIES\n+\n+installdirs: installdirs-recursive\n+installdirs-am:\n+\tfor dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(library_includedir)"; do \\\n+\t  test -z "$$dir" || $(MKDIR_P) "$$dir"; \\\n+\tdone\n+install: install-recursive\n+install-exec: install-exec-recursive\n+install-data: install-data-recursive\n+uninstall: uninstall-recursive\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-recursive\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-recursive\n+\n+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \\\n+\tclean-libtool mostlyclean-am\n+\n+distclean: distclean-recursive\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-compile distclean-generic \\\n+\tdistclean-hdr distclean-tags\n+\n+dvi: dvi-recursive\n+\n+dvi-am:\n+\n+html: html-recursive\n+\n+html-am:\n+\n+info: info-recursive\n+\n+info-am:\n+\n+install-data-am: install-library_includeHEADERS\n+\n+install-dvi: install-dvi-recursive\n+\n+install-dvi-am:\n+\n+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES\n+\n+install-html: install-html-recursive\n+\n+install-html-am:\n+\n+install-info: install-info-recursive\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-recursive\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-recursive\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-recursive\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-recursive\n+\n+mostlyclean-am: mostlyclean-compile mostlyclean-generic \\\n+\tmostlyclean-libtool\n+\n+pdf: pdf-recursive\n+\n+pdf-am:\n+\n+ps: ps-recursive\n+\n+ps-am:\n+\n+uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \\\n+\tuninstall-library_includeHEADERS\n+\n+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \\\n+\tctags-recursive install-am install-strip tags-recursive\n+\n+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \\\n+\tall all-am check check-am clean clean-binPROGRAMS \\\n+\tclean-generic clean-libLTLIBRARIES clean-libtool ctags \\\n+\tctags-recursive distclean distclean-compile distclean-generic \\\n+\tdistclean-hdr distclean-libtool distclean-tags distdir dvi \\\n+\tdvi-am html html-am info info-am install install-am \\\n+\tinstall-binPROGRAMS install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am \\\n+\tinstall-libLTLIBRARIES install-library_includeHEADERS \\\n+\tinstall-man install-pdf install-pdf-am install-ps \\\n+\tinstall-ps-am install-strip installcheck installcheck-am \\\n+\tinstalldirs installdirs-am maintainer-clean \\\n+\tmaintainer-clean-generic mostlyclean mostlyclean-compile \\\n+\tmostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n+\ttags tags-recursive uninstall uninstall-am \\\n+\tuninstall-binPROGRAMS uninstall-libLTLIBRARIES \\\n+\tuninstall-library_includeHEADERS\n+\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal-omega-config.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal-omega-config.h Tue Jun 07 17:04:25 2011 -0400
b
b"@@ -0,0 +1,353 @@\n+#ifndef _SRC_CLUSTAL_OMEGA_CONFIG_H\n+#define _SRC_CLUSTAL_OMEGA_CONFIG_H 1\n+ \n+/* src/clustal-omega-config.h. Generated automatically at end of configure. */\n+/* src/config.h.  Generated from config.h.in by configure.  */\n+/* src/config.h.in.  Generated from configure.ac by autoheader.  */\n+\n+/* Define if building universal (internal helper macro) */\n+/* #undef AC_APPLE_UNIVERSAL_BUILD */\n+\n+/* Let all files know they are being used inside Clustal Omega */\n+#ifndef CLUSTAL_OMEGA_CLUSTALO\n+#define CLUSTAL_OMEGA_CLUSTALO 1\n+#endif\n+\n+/* This is a CYGWIN system */\n+/* #undef CYGWIN */\n+\n+/* This is a Darwin system */\n+/* #undef DARWIN */\n+\n+/* Define to 1 if you have the <argtable2.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_ARGTABLE2_H\n+#define CLUSTAL_OMEGA_HAVE_ARGTABLE2_H 1\n+#endif\n+\n+/* Define to 1 if you have the <assert.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_ASSERT_H\n+#define CLUSTAL_OMEGA_HAVE_ASSERT_H 1\n+#endif\n+\n+/* Define to 1 if you have the <ctype.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_CTYPE_H\n+#define CLUSTAL_OMEGA_HAVE_CTYPE_H 1\n+#endif\n+\n+/* Define to 1 if you have the <dlfcn.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_DLFCN_H\n+#define CLUSTAL_OMEGA_HAVE_DLFCN_H 1\n+#endif\n+\n+/* Define to 1 if you have the <float.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_FLOAT_H\n+#define CLUSTAL_OMEGA_HAVE_FLOAT_H 1\n+#endif\n+\n+/* Define to 1 if you have the `fseek64' function. */\n+/* #undef HAVE_FSEEK64 */\n+\n+/* Define to 1 if you have the `fseeko' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_FSEEKO\n+#define CLUSTAL_OMEGA_HAVE_FSEEKO 1\n+#endif\n+\n+/* Define to 1 if you have the `fseeko64' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_FSEEKO64\n+#define CLUSTAL_OMEGA_HAVE_FSEEKO64 1\n+#endif\n+\n+/* Define to 1 if you have the `ftell64' function. */\n+/* #undef HAVE_FTELL64 */\n+\n+/* Define to 1 if you have the `ftello' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_FTELLO\n+#define CLUSTAL_OMEGA_HAVE_FTELLO 1\n+#endif\n+\n+/* Define to 1 if you have the `ftello64' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_FTELLO64\n+#define CLUSTAL_OMEGA_HAVE_FTELLO64 1\n+#endif\n+\n+/* Define to 1 if you have the <inttypes.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_INTTYPES_H\n+#define CLUSTAL_OMEGA_HAVE_INTTYPES_H 1\n+#endif\n+\n+/* Define to 1 if you have the `argtable2' library (-largtable2). */\n+#ifndef CLUSTAL_OMEGA_HAVE_LIBARGTABLE2\n+#define CLUSTAL_OMEGA_HAVE_LIBARGTABLE2 1\n+#endif\n+\n+/* Define to 1 if you have the `m' library (-lm). */\n+#ifndef CLUSTAL_OMEGA_HAVE_LIBM\n+#define CLUSTAL_OMEGA_HAVE_LIBM 1\n+#endif\n+\n+/* Define to 1 if you have the <limits.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_LIMITS_H\n+#define CLUSTAL_OMEGA_HAVE_LIMITS_H 1\n+#endif\n+\n+/* Has log2() */\n+#ifndef CLUSTAL_OMEGA_HAVE_LOG2\n+#define CLUSTAL_OMEGA_HAVE_LOG2 1\n+#endif\n+\n+/* Define to 1 if you have the <math.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_MATH_H\n+#define CLUSTAL_OMEGA_HAVE_MATH_H 1\n+#endif\n+\n+/* Define to 1 if you have the <memory.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_MEMORY_H\n+#define CLUSTAL_OMEGA_HAVE_MEMORY_H 1\n+#endif\n+\n+/* Define to 1 if you have the `ntohl' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_NTOHL\n+#define CLUSTAL_OMEGA_HAVE_NTOHL 1\n+#endif\n+\n+/* Define to 1 if you have the `ntohs' function. */\n+#ifndef CLUSTAL_OMEGA_HAVE_NTOHS\n+#define CLUSTAL_OMEGA_HAVE_NTOHS 1\n+#endif\n+\n+/* Define to 1 if you have the `ntonl' function. */\n+/* #undef HAVE_NTONL */\n+\n+/* Define to 1 if you have the `ntons' function. */\n+/* #undef HAVE_NTONS */\n+\n+/* Defined if OpenMP should and can be used */\n+#ifndef CLUSTAL_OMEGA_HAVE_OPENMP\n+#define CLUSTAL_OMEGA_HAVE_OPENMP 1\n+#endif\n+\n+/* Define to 1 if you have the <stdarg.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_STDARG_H\n+#define CLUSTAL_OMEGA_HAVE_STDARG_H 1\n+#endif\n+\n+/* Define to 1 if you have the <stdint.h> header file. */\n+#ifndef CLUSTAL_OMEGA_HAVE_STDINT_H\n+#define CLUSTAL_OMEGA_HAVE_STDINT_H 1\n+#endif\n+\n+/* Define to 1 if you have the <stdio.h> header file. */\n+#ifndef C"..b'+/* Define to the address where bug reports for this package should be sent. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_BUGREPORT\n+#define CLUSTAL_OMEGA_PACKAGE_BUGREPORT "clustalw@ucd.ie"\n+#endif\n+\n+/* The package code name */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_CODENAME\n+#define CLUSTAL_OMEGA_PACKAGE_CODENAME "IbiMeVidebunt"\n+#endif\n+\n+/* Define to the full name of this package. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_NAME\n+#define CLUSTAL_OMEGA_PACKAGE_NAME "Clustal Omega"\n+#endif\n+\n+/* Define to the full name and version of this package. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_STRING\n+#define CLUSTAL_OMEGA_PACKAGE_STRING "Clustal Omega 0.2.0"\n+#endif\n+\n+/* Define to the one symbol short name of this package. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_TARNAME\n+#define CLUSTAL_OMEGA_PACKAGE_TARNAME "clustal-omega"\n+#endif\n+\n+/* Define to the home page for this package. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_URL\n+#define CLUSTAL_OMEGA_PACKAGE_URL ""\n+#endif\n+\n+/* Define to the version of this package. */\n+#ifndef CLUSTAL_OMEGA_PACKAGE_VERSION\n+#define CLUSTAL_OMEGA_PACKAGE_VERSION "0.2.0"\n+#endif\n+\n+/* The size of `fpos_t\', as computed by sizeof. */\n+#ifndef CLUSTAL_OMEGA_SIZEOF_FPOS_T\n+#define CLUSTAL_OMEGA_SIZEOF_FPOS_T 16\n+#endif\n+\n+/* The size of `unsigned int\', as computed by sizeof. */\n+#ifndef CLUSTAL_OMEGA_SIZEOF_UNSIGNED_INT\n+#define CLUSTAL_OMEGA_SIZEOF_UNSIGNED_INT 4\n+#endif\n+\n+/* The size of `unsigned long\', as computed by sizeof. */\n+#ifndef CLUSTAL_OMEGA_SIZEOF_UNSIGNED_LONG\n+#define CLUSTAL_OMEGA_SIZEOF_UNSIGNED_LONG 8\n+#endif\n+\n+/* The size of `unsigned long long\', as computed by sizeof. */\n+#ifndef CLUSTAL_OMEGA_SIZEOF_UNSIGNED_LONG_LONG\n+#define CLUSTAL_OMEGA_SIZEOF_UNSIGNED_LONG_LONG 8\n+#endif\n+\n+/* The size of `unsigned short\', as computed by sizeof. */\n+#ifndef CLUSTAL_OMEGA_SIZEOF_UNSIGNED_SHORT\n+#define CLUSTAL_OMEGA_SIZEOF_UNSIGNED_SHORT 2\n+#endif\n+\n+/* This is a Solaris system */\n+/* #undef SOLARIS */\n+\n+/* This is a BSD system */\n+/* #undef SOMEBSD */\n+\n+/* Define to 1 if you have the ANSI C header files. */\n+#ifndef CLUSTAL_OMEGA_STDC_HEADERS\n+#define CLUSTAL_OMEGA_STDC_HEADERS 1\n+#endif\n+\n+/* Enable extensions on AIX 3, Interix.  */\n+#ifndef _ALL_SOURCE\n+# define _ALL_SOURCE 1\n+#endif\n+/* Enable GNU extensions on systems that have them.  */\n+#ifndef _GNU_SOURCE\n+# define _GNU_SOURCE 1\n+#endif\n+/* Enable threading extensions on Solaris.  */\n+#ifndef _POSIX_PTHREAD_SEMANTICS\n+# define _POSIX_PTHREAD_SEMANTICS 1\n+#endif\n+/* Enable extensions on HP NonStop.  */\n+#ifndef _TANDEM_SOURCE\n+# define _TANDEM_SOURCE 1\n+#endif\n+/* Enable general extensions on Solaris.  */\n+#ifndef __EXTENSIONS__\n+# define __EXTENSIONS__ 1\n+#endif\n+\n+\n+/* Version number of package */\n+#ifndef CLUSTAL_OMEGA_VERSION\n+#define CLUSTAL_OMEGA_VERSION "0.2.0"\n+#endif\n+\n+/* Define if using the dmalloc debugging malloc package */\n+/* #undef WITH_DMALLOC */\n+\n+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most\n+   significant byte first (like Motorola and SPARC, unlike Intel). */\n+#if defined AC_APPLE_UNIVERSAL_BUILD\n+# if defined __BIG_ENDIAN__\n+#  define WORDS_BIGENDIAN 1\n+# endif\n+#else\n+# ifndef WORDS_BIGENDIAN\n+/* #  undef WORDS_BIGENDIAN */\n+# endif\n+#endif\n+\n+/* Define to 1 if on MINIX. */\n+/* #undef _MINIX */\n+\n+/* Define to 2 if the system does not provide POSIX.1 features except with\n+   this defined. */\n+/* #undef _POSIX_1_SOURCE */\n+\n+/* Define to 1 if you need to in order for `stat\' and other things to work. */\n+/* #undef _POSIX_SOURCE */\n+\n+/* Define to empty if `const\' does not conform to ANSI C. */\n+/* #undef const */\n+\n+/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler\n+   calls it, or to nothing if \'inline\' is not supported under any name.  */\n+#ifndef __cplusplus\n+/* #undef inline */\n+#endif\n+\n+/* Define to `long int\' if <sys/types.h> does not define. */\n+/* #undef off_t */\n+\n+/* Define to `unsigned int\' if <sys/types.h> does not define. */\n+/* #undef size_t */\n+ \n+/* once: _SRC_CLUSTAL_OMEGA_CONFIG_H */\n+#endif\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal-omega.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal-omega.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1395 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: clustal-omega.c 241 2011-05-04 14:37:17Z fabian $\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <assert.h>\n+\n+#include "clustal-omega.h"\n+#include "hhalign/general.h"\n+\n+/* The following comment block contains the frontpage/mainpage of the doxygen\n+ *  documentation. Please add some more info. FIXME add more\n+ */\n+\n+/**\n+ *\n+ * @mainpage Clustal-Omega Documentation\n+ *\n+ * @section intro_sec Introduction\n+ *\n+ * For more information see http://www.clustal.org/\n+ *\n+ * @section api_section API\n+ *\n+ * @subsection example_prog_subsection An Example Program\n+ *\n+ * To use libclustalo you will have to include the clustal-omega.h header and\n+ * link against libclustalo. For linking against libclustalo you will have to\n+ * use a C++ compiler, no matter if your program was written in C or C++.\n+ *\n+ * First compile (no linking) your source (for an example see section "\\ref\n+ * example_src_subsubsec"):\n+ *\n+ * @code\n+ * $ gcc -c -ansi -Wall clustalo-api-test.c\n+ * @endcode\n+ *\n+ * Then link against libclustalo (we recommend the use of pkg-config as\n+ * explained in \\ref pkgconfig_subsubsec). Assuming Clustal Omega was installed\n+ * in system-wide default directory (e.g. /usr) just type:\n+ *\n+ * @code\n+ * $ g++  -ansi -Wall -o clustalo-api-test clustalo-api-test.o  -lclustalo\n+ * @endcode\n+ *\n+ * Voila! Now you have your own alignment program which can be run with\n+ *\n+ * @code\n+ * $ ./clustalo-api-test <your-sequence-input>\n+ * @endcode\n+ *  \n+ * It\'s best to use the same compiler that you used for compiling libclustal.\n+ * If libclustal was compiled with OpenMP support, you will have to use OpenMP\n+ * flags for you program as well.\n+ *\n+ *\n+ * @subsubsection pkgconfig_subsubsec Using pkg-config / Figuring out compiler flags\n+ *\n+ * Clustal Omega comes with support for <a\n+ * href="http://pkg-config.freedesktop.org">pkg-config</a>, which means you\n+ * can run\n+ *\n+ * @code\n+ * $ pkg-config --cflags --libs clustalo\n+ * @endcode\n+ *\n+ * to figure out cflags and library flags needed to compile and link against\n+ * libclustalo. This is especially handy if Clustal Omega was installed to a\n+ * non-standard directory.\n+ *  \n+ * You might have to change PKG_CONFIG_PATH. For example, if you used the prefix $HOME/local/ for\n+ * installation then you will first need to set PKG_CONFIG_PATH:\n+ *\n+ * @code\n+ * $ export PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig\n+ * $ pkg-config --cflags --libs clustalo\n+ * @endcode\n+ *  \n+ *  \n+ * To compile your source use:\n+ *  \n+ * @code\n+ * $ export PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig\n+ * $ gcc -c -ansi -Wall clustalo-api-test.c  $(pkg-config --cflags clustalo)\n+ * $ g++  -ansi -Wall -o clustalo-api-test clustalo-api-test.o $(pkg-config --libs clustalo)\n+ * @endcode\n+ *\n+ *\n+ * @subsubsection example_src_subsubsec Example Source Code\n+ *\n+ * @include "clustalo-api-test.c"\n+ *\n+ *\n+ */\n+\n+\n+\n+\n+/* FIXME: doc */\n+/* the following are temporary flags while the code is still under construction;\n+   had problems internalising hhmake, so as temporary crutch \n+   write alignment to file and get external hmmer/hhmake via system call \n+   to read alignment and convert into HMM\n+   All this will go, once hhmake is properly internalised */\n+#define INDIRECT_HMM 0 /* temp flag: (1) write aln to file, use system(hmmer/hhmake), (0) i'..b' &rHMMLocal, 1, -1, rHhalignPara);\n+        Log(&rLog, LOG_VERBOSE,\n+            "Alignment score for alignmnent in hmm-iteration no %d = %f (last score = %f)",\n+             iIterationCounter+1, dAlnScore, dLastAlnScore);\n+        \n+        \n+        FreeHMMstruct(&rHMMLocal);\n+\n+#if 0\n+        /* FIXME: need a better score for automatic iteration */\n+        if (prOpts->bIterationsAuto) {\n+            /* automatic iteration: break if score improvement was not\n+             * big enough\n+             */\n+            double dScoreImprovement = (dAlnScore-dLastAlnScore)/dLastAlnScore;\n+            if (dScoreImprovement < ITERATION_SCORE_IMPROVEMENT_THRESHOLD) {\n+                Log(&rLog, LOG_INFO,\n+                    "Stopping after %d guide-tree iterations. No further alignment score improvement achieved.",\n+                     iIterationCounter+1);\n+                /* use previous alignment */\n+                FreeMSeq(&prMSeq);\n+                Log(&rLog, LOG_FORCED_DEBUG, "FIXME: %s", "CopyMSeq breaks things in this context");\n+                CopyMSeq(&prMSeq, prMSeqCopy);\n+                /* FIXME: prOpts->pcDistmatOutfile and pcGuidetreeOutfile\n+                 * might have been updated, but then discarded here?\n+                 */\n+                break;\n+            } else {\n+                Log(&rLog, LOG_INFO,\n+                    "Got a %d%% better score in iteration step %d",\n+                     (int)dScoreImprovement*100, iIterationCounter+1);\n+                FreeMSeq(&prMSeqCopy);\n+            }\n+        }\n+        dLastAlnScore = dAlnScore;\n+#endif\n+\n+    }\n+    /* end of iterations */\n+\n+\n+\n+    /* Last step: if a profile was also provided then align now-aligned mseq\n+     * with this profile\n+     *\n+     * Don\'t use the backgrounds HMMs anymore and don\'t iterate.\n+     * (which was done before).\n+     *\n+     */\n+    if (NULL != prMSeqProfile) {\n+        if (AlignProfiles(prMSeq, prMSeqProfile, rHhalignPara)) {\n+            Log(&rLog, LOG_ERROR, "An error occured during the profile/profile alignment");\n+            return -1;\n+        }\n+    }\n+\n+    \n+    if (NULL != piOrderLR) {\n+        CKFREE(piOrderLR);\n+    }\n+    if (NULL != pdSeqWeights) {\n+        CKFREE(pdSeqWeights);\n+    }\n+    if (0 < prOpts->iHMMInputFiles) {\n+        for (i=0; i<prOpts->iHMMInputFiles; i++) {\n+            FreeHMMstruct(&prHMMs[i]);\n+        }\n+        CKFREE(prHMMs);\n+    }\n+\n+    return 0;\n+}\n+/* end of Align() */\n+\n+\n+\n+\n+/**\n+ * @brief Align two profiles, ie two sets of prealigned sequences. Already\n+ * aligned columns won\'t be changed.\n+ *\n+ * @param[out] prMSeqProfile1\n+ * First profile/aligned set of sequences. Merged alignment will be found in\n+ * here.\n+ * @param[in] prMSeqProfile2\n+ * First profile/aligned set of sequences\n+ *\n+ * @return 0 on success, -1 on failure\n+ *\n+ */\n+int\n+AlignProfiles(mseq_t *prMSeqProfile1, \n+      mseq_t *prMSeqProfile2, hhalign_para rHhalignPara) {\n+   \n+    double dAlnScore;\n+\n+    /* number of seqs in first half of joined profile */\n+    int iProfProfSeparator = prMSeqProfile1->nseqs;\n+\n+    assert(TRUE == prMSeqProfile1->aligned);\n+    assert(TRUE == prMSeqProfile2->aligned);\n+\n+    Log(&rLog, LOG_INFO, "Performing profile/profile alignment");\n+\n+    /* Combine the available mseqs into prMSeq\n+     * which will be aligned afterwards.\n+     */\n+    JoinMSeqs(&prMSeqProfile1, prMSeqProfile2);\n+\n+        \n+    /* set alignment flag explicitly to FALSE */\n+    prMSeqProfile1->aligned = FALSE;\n+                    \n+    dAlnScore = HHalignWrapper(prMSeqProfile1,\n+                               NULL, /* no order */\n+                               NULL, /* no weights */\n+                               3, /* nodes: root+2profiles */\n+                               NULL, 0 /* no bg-hmms */,\n+                               iProfProfSeparator, rHhalignPara);\n+        \n+    Log(&rLog, LOG_VERBOSE, "Alignment score is = %f", dAlnScore);\n+\n+    return 0;\n+}\n+/* end of AlignProfiles() */\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal-omega.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal-omega.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,167 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: clustal-omega.h 212 2011-03-10 15:09:46Z andreas $
+ */
+
+#ifndef CLUSTALO_H
+#define CLUSTALO_H
+
+
+
+#ifdef HAVE_OPENMP
+#include <omp.h>
+#endif
+
+#include "clustal-omega-config.h"
+
+/* the following needs to be kept in sync with library_include_HEADERS of all
+ * subdir Makefile.am's 
+ */
+
+/* hhalign */
+#include "hhalign/general.h"
+#include "hhalign/hhfunc.h"
+
+
+/* clustal */
+#include "clustal/log.h"
+#include "clustal/util.h"
+#include "clustal/symmatrix.h"
+#include "clustal/tree.h"
+#include "clustal/seq.h"
+#include "clustal/mbed.h"
+#include "clustal/weights.h"
+#include "clustal/pair_dist.h"
+#include "clustal/hhalign_wrapper.h"
+
+
+
+#define CLUSTERING_UNKNOWN 0
+#define CLUSTERING_UPGMA 1
+
+/* weights will be computed if 1. but are not really used for now and they
+ * might slow things down. also, mbed's screws up branch lengths which will
+ * have a negative effect on weights 
+*/
+#define USE_WEIGHTS 0
+
+extern int iNumberOfThreads;
+
+
+/** user/commandline options
+ *
+ * changes here will have to be reflected in ParseCommandLine()
+ * and during setup of the default opts
+ *
+ */
+typedef struct {
+    /* auto: Clustal (know what) is good for you
+     */
+    bool bAutoOptions;
+
+    /* Distance matrix
+     */
+    /** distance matrix input file */
+    char *pcDistmatInfile;
+    /** distance matrix output file */
+    char *pcDistmatOutfile;
+    
+    /* Clustering / guide-tree
+     */
+    /** clustering type (from cmdline arg) */
+    int iClusteringType;
+    /** pairwise distance method */
+    int iPairDistType;
+    /** use mbed-like clustering */
+    bool bUseMbed;
+    /** use mbed-like clustering also during iteration */
+    bool bUseMbedForIteration;
+    /** guidetree output file */
+    char *pcGuidetreeOutfile;
+    /** guidetree input file */
+    char *pcGuidetreeInfile;
+    
+    /* HMMs
+     */
+    /** HMM input files. index range: 0..iHMMInputFiles */
+    char **ppcHMMInput;
+    /** number of provided HMM input files. not really a user
+       option but need for ppcHMMInput */
+    int iHMMInputFiles;
+
+    /* Iteration
+     */
+    /** number of iterations */
+    int iNumIterations;
+    /** determine number of iterations automatically */
+ bool bIterationsAuto;
+    /** maximum number of hmm iterations */
+    int iMaxHMMIterations;
+    /** max number of guidetree iterations */
+ int iMaxGuidetreeIterations;
+    
+    /** max MAC RAM (maximum amount of RAM set aside for MAC algorithm) */
+    int iMacRam; /* FS, r240 -> */
+
+    /* changes here will have to be reflected in FreeAlnOpts(),
+  * SetDefaultAlnOpts(), AlnOptsLogicCheck() etc 
+  */
+} opts_t;
+
+
+
+
+
+extern void 
+PrintLongVersion(char *pcStr, int iSize);
+
+extern void
+SetDefaultAlnOpts(opts_t *opts);
+
+extern void
+FreeAlnOpts(opts_t *aln_opts);
+
+extern void
+AlnOptsLogicCheck(opts_t *opts);
+
+extern void
+PrintAlnOpts(FILE *prFile, opts_t *opts);
+
+extern void
+InitClustalOmega(int iNumThreadsToUse);
+
+extern void
+SequentialAlignmentOrder(int **piOrderLR_p, int iNumSeq);
+
+extern int
+AlignmentOrder(int **piOrderLR_p, double **pdSeqWeights_p, mseq_t *prMSeq,
+               int iPairDistType, char *pcDistmatInfile, char *pcDistmatOutfile,
+               int iClusteringType, char *pcGuidetreeInfile, char *pcGuidetreeOutfile,
+               bool bUseMBed);
+
+extern int
+Align(mseq_t *prMSeq, 
+      mseq_t *prMSeqProfile,
+   opts_t *prOpts,
+      hhalign_para rHhalignPara);
+
+extern int
+AlignProfiles(mseq_t *prMSeqProfile1, 
+   mseq_t *prMSeqProfile2, hhalign_para rHhalignPara);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,38 @@
+AM_CFLAGS = @OPENMP_CFLAGS@ @AM_CFLAGS@
+AM_LDFLAGS = @AM_LDFLAGS@
+
+noinst_LTLIBRARIES = libclustal.la
+
+libclustal_la_SOURCES = \
+        hhalign_wrapper.c hhalign_wrapper.h \
+ ktuple_pair.c ktuple_pair.h \
+        list.c list.h \
+ log.c log.h \
+        muscle_upgma.c muscle_upgma.h \
+        muscle_tree.c muscle_tree.h \
+        mbed.c mbed.h \
+        pair_dist.h pair_dist.c \
+        progress.c progress.h \
+        queue.h \
+        seq.c seq.h \
+        symmatrix.c symmatrix.h \
+        tree.c tree.h \
+        util.c util.h \
+        weights.c weights.h
+
+library_includedir=$(includedir)/clustalo/clustal
+
+library_include_HEADERS = \
+ hhalign_wrapper.h \
+ ktuple_pair.h \
+ log.h \
+ mbed.h \
+ muscle_tree.h \
+ pair_dist.h \
+ progress.h \
+ seq.h \
+ symmatrix.h \
+ tree.h \
+ util.h \
+ weights.h
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,573 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+subdir = src/clustal\n+DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \\\n+\t$(srcdir)/Makefile.in\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = $(top_builddir)/src/config.h\n+CONFIG_CLEAN_FILES =\n+CONFIG_CLEAN_VPATH_FILES =\n+LTLIBRARIES = $(noinst_LTLIBRARIES)\n+libclustal_la_LIBADD =\n+am_libclustal_la_OBJECTS = hhalign_wrapper.lo ktuple_pair.lo list.lo \\\n+\tlog.lo muscle_upgma.lo muscle_tree.lo mbed.lo pair_dist.lo \\\n+\tprogress.lo seq.lo symmatrix.lo tree.lo util.lo weights.lo\n+libclustal_la_OBJECTS = $(am_libclustal_la_OBJECTS)\n+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src\n+depcomp = $(SHELL) $(top_srcdir)/depcomp\n+am__depfiles_maybe = depfiles\n+am__mv = mv -f\n+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\\n+\t$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+CCLD = $(CC)\n+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+SOURCES = $(libclustal_la_SOURCES)\n+DIST_SOURCES = $(libclustal_la_SOURCES)\n+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed \'s|.|.|g\'`;\n+am__vpath_adj = case $$p in \\\n+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \\\n+    *) f=$$p;; \\\n+  esac;\n+am__strip_dir = f=`echo $$p | sed -e \'s|^.*/||\'`;\n+am__install_max = 40\n+am__nobase_strip_setup = \\\n+  srcdirstrip=`echo "$(srcdir)" | sed \'s/[].[^$$\\\\*|]/\\\\\\\\&/g\'`\n+am__nobase_strip = \\\n+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"\n+am__nobase_list = $(am__nobase_strip_setup); \\\n+  for p in $$list; do echo "$$p $$p"; done | \\\n+  sed "s| $$srcdirstrip/| |;"\' / .*\\//!s/ .*/ ./; s,\\( .*\\)/[^/]*$$,\\1,\' | \\\n+  $(AWK) \'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \\\n+    if (++n[$$2] == $(am__install_max)) \\\n+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \\\n+    END { for (dir in files) print dir, files[dir] }\'\n+am__base_list = \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\' | \\\n+  sed \'$$!N;$$!N;$$!N;$$!N;s/\\n/ /g\'\n+am__installdirs = "$(DESTDIR)$(library_includedir)"\n+HEADERS = $(library_include_HEADERS)\n+ETAGS ='..b'lddir)/|;t"`; \\\n+\tcase $$dist_files in \\\n+\t  */*) $(MKDIR_P) `echo "$$dist_files" | \\\n+\t\t\t   sed \'/\\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,\' | \\\n+\t\t\t   sort -u` ;; \\\n+\tesac; \\\n+\tfor file in $$dist_files; do \\\n+\t  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \\\n+\t  if test -d $$d/$$file; then \\\n+\t    dir=`echo "/$$file" | sed -e \'s,/[^/]*$$,,\'`; \\\n+\t    if test -d "$(distdir)/$$file"; then \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \\\n+\t      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \\\n+\t  else \\\n+\t    test -f "$(distdir)/$$file" \\\n+\t    || cp -p $$d/$$file "$(distdir)/$$file" \\\n+\t    || exit 1; \\\n+\t  fi; \\\n+\tdone\n+check-am: all-am\n+check: check-am\n+all-am: Makefile $(LTLIBRARIES) $(HEADERS)\n+installdirs:\n+\tfor dir in "$(DESTDIR)$(library_includedir)"; do \\\n+\t  test -z "$$dir" || $(MKDIR_P) "$$dir"; \\\n+\tdone\n+install: install-am\n+install-exec: install-exec-am\n+install-data: install-data-am\n+uninstall: uninstall-am\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-am\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-am\n+\n+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n+\tmostlyclean-am\n+\n+distclean: distclean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-compile distclean-generic \\\n+\tdistclean-tags\n+\n+dvi: dvi-am\n+\n+dvi-am:\n+\n+html: html-am\n+\n+html-am:\n+\n+info: info-am\n+\n+info-am:\n+\n+install-data-am: install-library_includeHEADERS\n+\n+install-dvi: install-dvi-am\n+\n+install-dvi-am:\n+\n+install-exec-am:\n+\n+install-html: install-html-am\n+\n+install-html-am:\n+\n+install-info: install-info-am\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-am\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-am\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-am\n+\n+mostlyclean-am: mostlyclean-compile mostlyclean-generic \\\n+\tmostlyclean-libtool\n+\n+pdf: pdf-am\n+\n+pdf-am:\n+\n+ps: ps-am\n+\n+ps-am:\n+\n+uninstall-am: uninstall-library_includeHEADERS\n+\n+.MAKE: install-am install-strip\n+\n+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \\\n+\tclean-libtool clean-noinstLTLIBRARIES ctags distclean \\\n+\tdistclean-compile distclean-generic distclean-libtool \\\n+\tdistclean-tags distdir dvi dvi-am html html-am info info-am \\\n+\tinstall install-am install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am \\\n+\tinstall-library_includeHEADERS install-man install-pdf \\\n+\tinstall-pdf-am install-ps install-ps-am install-strip \\\n+\tinstallcheck installcheck-am installdirs maintainer-clean \\\n+\tmaintainer-clean-generic mostlyclean mostlyclean-compile \\\n+\tmostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n+\ttags uninstall uninstall-am uninstall-library_includeHEADERS\n+\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1003 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhalign_wrapper.c 241 2011-05-04 14:37:17Z fabian $\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <stdlib.h>\n+#include <string.h>\n+#include <assert.h>\n+#include <ctype.h>\n+\n+#include "seq.h"\n+#include "tree.h"\n+#include "progress.h"\n+#include "hhalign/general.h"\n+#include "hhalign/hhfunc.h"\n+#include "hhalign/hhalign.h"\n+\n+/* up to this level (from leaf) will background HMM info be applied */\n+#define APPLY_BG_HMM_UP_TO_TREE_DEPTH 10\n+\n+#define TIMING 0\n+\n+#define TRACE 0\n+\n+/**\n+ * @brief get rid of unknown residues\n+ *\n+ * @note HHalignWrapper can be entered in 2 different ways: (i) all\n+ * sequences are un-aligned (ii) there are 2 (aligned) profiles.  in\n+ * the un-aligned case (i) the sequences come straight from Squid,\n+ * that is, they have been sanitised, all non-alphabetic residues \n+ * have been rendered as X\'s. In profile mode (ii) one profile may \n+ * have been produced internally. In that case residues may have \n+ * been translated back into their \'native\' form, that is, they may\n+ * contain un-sanitised residues. These will cause trouble  during\n+ * alignment\n+ * FS, r213->214\n+ */\n+void\n+SanitiseUnknown(mseq_t *mseq)\n+{\n+\n+    int iS; /* iterator for sequence */\n+    int iR; /* iterator for residue */\n+    int iLen; /* length of sequence */\n+    char *pcRes = NULL;\n+\n+\n+    for (iS = 0; iS < mseq->nseqs; iS++){\n+\n+        for (pcRes = mseq->seq[iS]; \'\\0\' != *pcRes; pcRes++){\n+\n+            if (isgap(*pcRes)){\n+                continue;\n+            }\n+\n+            if (mseq->seqtype==SEQTYPE_PROTEIN) {\n+                if (NULL == strchr(AMINO_ALPHABET, toupper(*pcRes))) {\n+                    *pcRes = AMINOACID_ANY;\n+                }\n+            } else if (mseq->seqtype==SEQTYPE_DNA) {\n+                if (NULL == strchr(DNA_ALPHABET, toupper(*pcRes))) {\n+                    *pcRes = NUCLEOTIDE_ANY;\n+                }\n+            } else if (mseq->seqtype==SEQTYPE_RNA) {\n+                if (NULL == strchr(RNA_ALPHABET, toupper(*pcRes))) {\n+                    *pcRes = NUCLEOTIDE_ANY;\n+                }\n+            }\n+\n+        } /* !EO String */\n+\n+    } /* 0 <= iS < mseq->nseqs */\n+\n+    return;\n+\n+} /*** end:  SanitiseUnknown()  ***/\n+\n+/**\n+ * @brief translate unknown residues back to ambiguity codes;\n+ * hhalign translates ambiguity codes (B,Z) into unknown residue (X).\n+ * we still have the original (un-aligned) residue information,\n+ * by iterating along the original and aligned sequences we can\n+ * reconstruct where codes have been changed and restore them\n+ * to their original value\n+ *\n+ * @param[in,out] mseq\n+ * sequence/profile data, mseq->seq [in,out] is changed to conform\n+ * with mseq->orig_seq [in]\n+ *\n+ */\n+void\n+TranslateUnknown2Ambiguity(mseq_t *mseq)\n+{\n+\n+    int iS; /* iterator for sequence */\n+    int iR, iRo; /* iterator for residue (original) */\n+    int iChange, iCase, iAmbi; /* counts how many replacements */\n+    static int siOffset = \'a\' - \'A\';\n+\n+    for (iS = 0; iS < mseq->nseqs; iS++){\n+\n+        iR = iRo = 0;\n+        iChange = iCase = iAmbi = 0;\n+\n+        while((\'\\0\' != mseq->seq[iS][iR]) &&\n+              (\'\\0\' != mseq->orig_seq[iS][iRo])) {\n+\n+            /* skip gaps in aligned sequences */\n+            while(isgap(mseq->seq[iS][iR])) {\n+                iR++;\n+            } /* was gap i'..b'               pcConsens2, pcReprsnt2,\n+                            rHhalignPara, \n+                            iAux_FS++, /* DEBUG ARGUMENT */\n+                            zcAux, zcError);\n+                }\n+                else {\n+                    hhalign(ppcProfile2, piLeafCount[iR], pdWeightsR,\n+                            ppcProfile1, piLeafCount[iL], pdWeightsL,\n+                            &dScore, prHMM,\n+                            pcConsens2, pcReprsnt2,\n+                            pcConsens1, pcReprsnt1,\n+                            rHhalignPara, \n+                            iAux_FS++, /* DEBUG ARGUMENT */\n+                            zcAux, zcError);\n+                }\n+\n+            }\n+            /* free left/right node lists,\n+             * after alignment left/right profiles no longer needed\n+             */\n+            if (NULL != ppcCopy1){\n+                int i;\n+                for (i = 0; i <  piLeafCount[iL]; i++){\n+                    CKFREE(ppcCopy1[i]);\n+                }\n+                CKFREE(ppcCopy1);\n+                CKFREE(pcReprsnt1);\n+                CKFREE(pcConsens1);\n+            }\n+            if (NULL != ppcCopy2){\n+                int i;\n+                for (i = 0; i <  piLeafCount[iR]; i++){\n+                    CKFREE(ppcCopy2[i]);\n+                }\n+                CKFREE(ppcCopy2);\n+                CKFREE(pcReprsnt2);\n+                CKFREE(pcConsens2);\n+            }\n+            ppiLeafList[iL] = CKFREE(ppiLeafList[iL]);\n+            ppiLeafList[iR] = CKFREE(ppiLeafList[iR]);\n+            piLeafCount[iL] = piLeafCount[iR] = 0;\n+\n+        } /* was a merge node */\n+\n+        if (rLog.iLogLevelEnabled <= LOG_DEBUG){\n+            int i, j;\n+            FILE *fp = LogGetFP(&rLog, LOG_DEBUG);\n+            for (i = 0; i < iNodeCount; i++){\n+                if (0 == piLeafCount[i]){\n+                    continue;\n+                }\n+                fprintf(fp, "node %3d, #leaves=%d:\\t", i, piLeafCount[i]);\n+                for (j = 0; ppiLeafList && (j < piLeafCount[i]); j++){\n+                    fprintf(fp, "%d,", ppiLeafList[i][j]);\n+                }\n+                fprintf(fp, "\\n");\n+            }\n+        }\n+\n+\n+    } /* 0 <= iN < iNodeCount */\n+    ProgressDone(prProgress);\n+\n+\n+    /* check length and set length info\n+     */\n+    iAlnLen = strlen(prMSeq->seq[0]);\n+    for (i=0; i<prMSeq->nseqs; i++) {\n+#if 0\n+        Log(&rLog, LOG_FORCED_DEBUG, "seq no %d: name %s; len %d; %s",\n+                  i, prMSeq->sqinfo[i].name, strlen(prMSeq->seq[i]), prMSeq->seq[i]);\n+#endif\n+        \n+#ifndef NDEBUG\n+        assert(iAlnLen == strlen(prMSeq->seq[i]));\n+#endif\n+        prMSeq->sqinfo[i].len = iAlnLen;\n+    }\n+    prMSeq->aligned = TRUE;\n+\n+\n+    if (rLog.iLogLevelEnabled <= LOG_DEBUG){\n+        if (0 != prHMM->L){\n+            int i;\n+            Log(&rLog, LOG_DEBUG, "Alignment scores with HMM:");\n+            for (i = 0; /*pdScores[i] > 0.0*/i < prMSeq->nseqs; i++){\n+                Log(&rLog, LOG_DEBUG, "%2d:\\t%f\\n", i, pdScores[i]);\n+            }\n+        }\n+    }\n+\n+\n+    /** translate back ambiguity residues\n+     * hhalign translates ambiguity codes (B,Z) into unknown residues (X).\n+     * as we still have the original input we can substitute them back\n+     */\n+    TranslateUnknown2Ambiguity(prMSeq);\n+    ReAttachLeadingGaps(prMSeq, iProfProfSeparator);\n+\n+    if (NULL == prHMMList){\n+        CKFREE(prHMM);\n+    }\n+    CKFREE(ppcProfile2);\n+    CKFREE(ppcProfile1);\n+    CKFREE(ppiLeafList[piOrderLR[DIFF_NODE*(iNodeCount-1)+PRNT_NODE]]);\n+    CKFREE(ppiLeafList);\n+    CKFREE(piLeafCount);\n+    CKFREE(pdScores);\n+    FreeProgress(&prProgress);\n+    CKFREE(pdWeightsL);\n+    CKFREE(pdWeightsR);\n+\n+#if TIMING\n+    StopwatchStop(stopwatch);\n+    StopwatchDisplay(stdout, "Total time for HHalignWrapper():" , stopwatch);\n+    StopwatchFree(stopwatch);\n+#endif\n+\n+    return dScore; /* FIXME alternative: return averaged pdScores */\n+\n+}\n+/***   end: HHalignWrapper() ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/hhalign_wrapper.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,24 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: hhalign_wrapper.h 241 2011-05-04 14:37:17Z fabian $
+ */
+
+
+extern double
+HHalignWrapper(mseq_t *mseq, int *piOrderLR,
+               double *pdSeqWeights, int iNodeCount,
+               hmm_light *prHMMList, int iHMMCount,
+               int iProfProfSeparator, hhalign_para rHhalignPara);
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,842 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: ktuple_pair.c 230 2011-04-09 15:37:50Z andreas $\n+ *\n+ *\n+ * K-Tuple code for pairwise alignment (Wilbur and Lipman, 1983; PMID\n+ * 6572363). Most code taken from showpair.c (Clustal 1.83)\n+ * DD: some functions now have lots of parameters as static variables\n+ * were removed to make code OpenMP-friendly\n+ *\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+\n+#include <stdio.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include <stdlib.h>\n+#include <math.h>\n+#include <assert.h>\n+\n+#ifdef HAVE_OPENMP\n+#include <omp.h>\n+#endif\n+\n+#include "squid/squid.h"\n+#include "util.h"\n+#include "symmatrix.h"\n+#include "ktuple_pair.h"\n+#include "log.h"\n+#include "progress.h"\n+\n+#define END_MARK -3 /* see interface.c in 1.83 */\n+#define NUMRES 32 /* max size of comparison matrix */\n+\n+/* see notes below */\n+#undef SORT_LAST_ELEMENT_AS_WELL\n+\n+/* gap_pos1 = NUMRES-2; /@ code for gaps inserted by clustalw @/ */\n+static const int GAP_POS2 = NUMRES-1; /* code for gaps already in alignment */\n+static bool DNAFLAG = FALSE;\n+\n+static const char *AMINO_ACID_CODES = "ABCDEFGHIKLMNPQRSTUVWXYZ-";\n+static const char *NUCLEIC_ACID_CODES = "ACGTUN-";\n+/* As far as I understand the gap symbol should not be necessary here,\n+ * because we use isgap for testing later anyway. But changing this,\n+ * will affect max_res_code and max_nuc as well. So I leave it for now\n+ * as it is. AW\n+ */\n+\n+static bool percent = TRUE;\n+\n+static void make_ptrs(int *tptr, int *pl, const int naseq, const int l, const int ktup, const int max_res_code, char **seq_array);\n+static void put_frag(const int fs, const int v1, const int v2, const int flen, const int curr_frag, int *next, int *maxsf, int **accum);\n+static bool frag_rel_pos(int a1, int b1, int a2, int b2, int ktup);\n+static void des_quick_sort(int *array1, int *array2, const int array_size);\n+static void pair_align(int seq_no, int l1, int l2, int max_res_code, ktuple_param_t *aln_param,\n+    char **seq_array, int *maxsf, int **accum, int max_aln_length,\n+    int *zza, int *zzb, int *zzc, int *zzd);\n+static void encode(char *seq, char *naseq, int l, const char *res_codes);\n+static int res_index(const char *lookup, char c);\n+\n+\n+typedef struct {\n+    int i1;\n+    int i2;\n+} two_ints_t;\n+\n+\n+\n+/* default ktuple pairwise alignment parameters\n+ *\n+ */\n+/* protein\n+ */\n+/* designated initializer */\n+const ktuple_param_t default_protein_param = {\n+     .ktup = 1,\n+     .wind_gap = 3,\n+     .signif = 5,\n+     .window = 5,\n+};\n+/* dna\n+ */\n+/* designated initializer */\n+const ktuple_param_t default_dna_param = {\n+    .ktup = 2,\n+    .wind_gap = 5,\n+    .signif = 4,\n+    .window = 4,\n+};\n+\n+\n+/**\n+ * note: naseq should be unit-offset\n+ */\n+static void\n+encode(char *seq, char *naseq, int l, const char *res_codes)\n+{\n+    /* code seq as ints .. use GAP_POS2 for gap */\n+    register int i;\n+    bool seq_contains_unknown_char = FALSE;\n+    /*LOG_DEBUG("seq=%s naseq=%p l=%d", &(seq[1]), naseq, l); */\n+\n+\n+    for (i=1; i<=l; i++) {\n+        char res = toupper(seq[i]);\n+        if (isgap(res)) {\n+            naseq[i] = GAP_POS2; /* gap in input */\n+        } else {\n+            naseq[i] = res_index(res_codes, res);\n+        }\n+\n+        /*LOG_DEBUG("Character \'%c\' at pos %d", res, i);*/\n+        if (-1 == naseq[i]) {\n+            seq_contains_unknown_char = TRUE;\n+     '..b'max_res_code+1), aln_param.ktup)+1 ? \n+        max_aln_length : pow((max_res_code+1), aln_param.ktup)+1;\n+\n+    /*\n+     *\n+     * conversion to old style clustal done (in no time) */\n+\n+\n+    accum = (int **) CKCALLOC(5, sizeof (int *));\n+    for (i=0;i<5;i++) {\n+        accum[i] = (int *) CKCALLOC((2*max_aln_length+1), sizeof(int));\n+    }\n+    zza = (int *) CKCALLOC( (max_aln_length+1), sizeof(int));\n+    zzb = (int *) CKCALLOC( (max_aln_length+1), sizeof(int));\n+    zzc = (int *) CKCALLOC( (max_aln_length+1), sizeof(int));\n+    zzd = (int *) CKCALLOC( (max_aln_length+1), sizeof(int));\n+\n+    /* estimation of total number of steps (if istart and jstart are\n+     * both 0) (now handled in the calling routine)\n+     */\n+    /* uTotalStepNo = iend*jend - iend*iend/2 + iend/2;\n+    uStepNo = 0; */\n+    /*LOG_DEBUG("istart=%d iend=%d jstart=%d jend=%d", istart, iend, jstart, jend);*/\n+\n+    for (i=istart+1; i<=iend; ++i) {\n+        /* by definition a sequence compared to itself should give\n+           a score of 0. AW */\n+        SymMatrixSetValue(tmat, i-1, i-1, 0.0);\n+        make_ptrs(zza, zzc, i, seqlen_array[i], aln_param.ktup, max_res_code, seq_array);\n+\n+#ifdef HAVE_OPENMP\n+        #pragma omp critical(ktuple)\n+#endif\n+        {\n+            ProgressLog(prProgress, *ulStepNo, ulTotalStepNo, FALSE);\n+        }\n+\n+        for (j=MAX(i+1, jstart+1); j<=jend; ++j) {\n+            (*ulStepNo)++;\n+            private_step_no++;\n+            /*LOG_DEBUG("comparing pair %d:%d", i, j);*/\n+\n+            make_ptrs(zzb, zzd, j, seqlen_array[j], aln_param.ktup, max_res_code, seq_array);\n+            pair_align(i, seqlen_array[i], seqlen_array[j], max_res_code, &aln_param,\n+                seq_array, &maxsf, accum, max_aln_length, zza, zzb, zzc, zzd);\n+\n+            if (!maxsf) {\n+                calc_score=0.0;\n+            } else {\n+                calc_score=(double)accum[0][maxsf];\n+                if (percent) {\n+                    dsr=(seqlen_array[i]<seqlen_array[j]) ?\n+                        seqlen_array[i] : seqlen_array[j];\n+                    calc_score = (calc_score/(double)dsr) * 100.0;\n+                }\n+            }\n+\n+            /* printf("%d %d %d\\n", i-1, j-1, (100.0 - calc_score)/100.0); */\n+            SymMatrixSetValue(tmat, i-1, j-1, (100.0 - calc_score)/100.0);\n+\n+            /* the function allows you not to compute the full matrix.\n+             * here we explicitely make the resulting matrix a\n+             * rectangle, i.e. we always set full rows. in other\n+             * words, if we don\'t complete the full matrix then we\n+             * don\'t have a full symmetry. so only use the defined\n+             * symmetric part. AW\n+             */\n+            /*LOG_DEBUG("setting %d : %d = %f", j, i, tmat[i][j]);*/\n+            /* not needed anymore since we use symmatrix_t\n+               if (j<=iend) {\n+               tmat[j][i] = tmat[i][j];\n+               }\n+            */\n+#ifdef HAVE_OPENMP\n+            #pragma omp critical(ktuple)\n+#endif\n+            {\n+                Log(&rLog, LOG_DEBUG, "K-tuple distance for sequence pair %d:%d = %lg",\n+                    i, j, SymMatrixGetValue(tmat, i-1, j-1));\n+            }\n+        }\n+    }\n+    /*\n+      Log(&rLog, LOG_FORCED_DEBUG, "uTotalStepNo=%d for istart=%d iend=%d jstart=%d jend=%d", uStepNo, istart, iend, jstart, jend);\n+      Log(&rLog, LOG_FORCED_DEBUG, "Fabian = %d", iend*jend - iend*iend/2 + iend/2);\n+    */\n+\n+/*    printf("\\n\\n%d\\t%d\\t%d\\t%d\\n\\n", omp_get_thread_num(), uStepNo, istart, iend); */\n+\n+    for (i=0;i<5;i++) {\n+        CKFREE(accum[i]);\n+    }\n+    CKFREE(accum);\n+\n+#ifdef HAVE_OPENMP\n+    #pragma omp critical(ktuple)\n+#if 0\n+    {\n+    printf("steps: %d\\n", private_step_no);\n+    }\n+#endif\n+#endif\n+\n+    CKFREE(zza);\n+    CKFREE(zzb);\n+    CKFREE(zzc);\n+    CKFREE(zzd);\n+\n+    free(seqlen_array);\n+\n+    for (i=1; i<=mseq->nseqs; i++) {\n+        CKFREE(seq_array[i]);\n+    }\n+    CKFREE(seq_array);\n+}\n+/* end of KTuplePairDist */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/ktuple_pair.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,47 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: ktuple_pair.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+/* K-Tuple code for pairwise alignment (Wilbur and Lipman (1983)
+ * Most code taken from showpair (Clustal 1.83)
+ */
+
+
+#ifndef CLUSTALO_KTUPLE_PAIR_H
+#define CLUSTALO_KTUPLE_PAIR_H
+
+#include "seq.h"
+#include "symmatrix.h"
+#include "progress.h"
+
+typedef struct {
+    int ktup;
+    int window;
+    int wind_gap;
+    int signif;
+} ktuple_param_t;
+
+
+extern void
+KTuplePairDist(symmatrix_t *tmat, mseq_t *mseq,
+               int istart, int iend,
+               int jstart, int jend,
+               ktuple_param_t *aln_param,
+               progress_t *prProgress, 
+    unsigned long int *ulStepNo, unsigned long int ulTotalStepNo);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/list.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/list.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,389 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: list.c 156 2010-11-18 10:52:40Z andreas $\n+ *\n+ * Single linked list and FIFO/Queue\n+ *\n+ * Based on Kyle Loudon\'s Mastering Algorithms with C\n+ * http://oreilly.com/catalog/9781565924536\n+ *\n+ * Allows generic data types by using void* pointers, which works fine\n+ * as long as your data is just pointers.\n+ *\n+ */\n+\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <assert.h>\n+#include <string.h> /* for memset */\n+\n+#include "list.h"\n+\n+#ifdef LIST_TEST\n+#include <stdio.h>\n+#include "queue.h"\n+#include "time.h"\n+#endif\n+\n+/**\n+ * @brief Initialise data members of a list\n+ *\n+ * @param[in] prList\n+ * List to initialise\n+ * @param[in] destroy\n+ * A function to be called with pointer to data when destroying the\n+ * list. NULL if in doubt, free in most other cases.\n+ * Note: doxygen will always fail to parse this...\n+ */\n+void\n+ListInit(list_t *prList, void (*destroy)(void *data)) {\n+    prList->size = 0;\n+    prList->destroy = destroy;\n+    prList->head = NULL;\n+    prList->tail = NULL;\n+    \n+    return;\n+}\n+/* end of ListInit() */\n+\n+\n+\n+/**\n+ * @brief Calls user defined function to free data in list and resets\n+ * the list to NULL. Call even if your destroy function is NULL.\n+ *\n+ * @param[in] prList\n+ * The list to destroy\n+ *\n+ */\n+void\n+ListDestroy(list_t *prList) {\n+    void *pvData;\n+\n+    while (LIST_SIZE(prList) > 0) {\n+        if (0 == ListRemoveNext(prList, NULL, (void **)&pvData)\n+            &&\n+            NULL != prList->destroy) {\n+            prList->destroy(pvData);\n+        }\n+    }\n+    /* precaution */\n+    memset(prList, 0, sizeof(list_t));\n+    \n+    return;\n+}\n+/* end of ListDestroy() */\n+\n+\n+\n+/**\n+ *\n+ * @brief Insert data next to given element\n+ *\n+ * @param[in] prList\n+ * List into which to insert\n+ * @param[in] prElement\n+ * Current position/element. Element after which to insert. If NULL\n+ * head is used.\n+ * @param[in] pvData\n+ * Pointer to data to store\n+ *\n+ * @return Non-zero on failure\n+ */\n+int\n+ListInsertNext(list_t *prList, list_elem_t *prElement, const void *pvData)\n+{\n+    list_elem_t *prNewElement;\n+\n+    if (NULL == (prNewElement = (list_elem_t *) malloc(sizeof(list_elem_t))))\n+        return -1;\n+\n+    prNewElement->data = (void *)pvData;\n+ \n+    if (NULL == prElement) {\n+        /* insertion at head */\n+        if (LIST_SIZE(prList) == 0)\n+            prList->tail = prNewElement;\n+        prNewElement->next = prList->head;\n+        prList->head = prNewElement;\n+        \n+    } else {\n+        /* insert somewhere other than at head */\n+        if (NULL == prElement->next)\n+            prList->tail = prNewElement;\n+        prNewElement->next = prElement->next;\n+        prElement->next = prNewElement;\n+    }\n+\n+    prList->size++;\n+\n+    return 0;\n+}\n+/* end of ListInsertNext() */\n+\n+\n+\n+/**\n+ * @brief Remove next element from current element/position.\n+ *\n+ * @param[in] prList\n+ * List from which an element is to be removed.\n+ * @param[in] prElement\n+ * Current element/position. Next item will be removed. If NULL head\n+ * is used.\n+ * @param[out] pvData_p\n+ * Will be pointed to removed elements data.\n+ *\n+ * @return Non-zero on failure\n+ */\n+int\n+ListRemoveNext(list_t *prList, list_elem_t *prElement, void **pvData_p)\n+{\n+    list_elem_t *prOldElement;\n+\n+    if (0 == LIST_SIZE(prList))\n+        return -1;\n+\n+  '..b'ram[in] prList\n+ * List from which an element is to be removed.\n+ * @param[in] prElement\n+ * Current element/position. Next item will be removed. If NULL head\n+ * is used.\n+ * @param[out] iData_p\n+ * Will be pointed to removed elements data.\n+ *\n+ * @return Non-zero on failure\n+ *\n+ */\n+int\n+IntListRemoveNext(list_t *prList, list_elem_t *prElement, int *iData_p)\n+{\n+    int *piData;\n+    int res;\n+    res = ListRemoveNext(prList, prElement, (void **)&piData);\n+    *iData_p = *piData;\n+    prList->destroy(piData);\n+    return res;\n+}\n+/* end of IntListRemoveNext */\n+\n+\n+\n+\n+#ifdef LIST_TEST\n+/* gcc list.c -o list_test -ansi -Wall -DLIST_TEST */\n+   \n+int main(int argc, char **argv)\n+{\n+\n+    int i;\n+    list_t *mylist;\n+    int_list_t *myintlist;\n+    queue_t *myqueue;\n+    int_queue_t *myintqueue;\n+    int res;\n+\n+    int iSeed = (int)time(NULL);\n+    srand((unsigned int)iSeed);\n+    \n+    printf("%s", "list test! also delete #include!\\n");\n+        \n+\n+    mylist = malloc(sizeof(list_t));\n+    ListInit(mylist, NULL);\n+\n+    printf("LIST test\\n");\n+\n+    for (i=0; i<argc; i++) {\n+        res = LIST_APPEND(mylist, argv[i]);\n+        printf("LIST Result for appending \'%s\' was %d\\n", argv[i], res);\n+    }\n+\n+    while (LIST_SIZE(mylist)) {\n+        char *argv_ptr;\n+        if (ListRemoveNext(mylist, NULL, (void **)&argv_ptr))\n+            perror("ListRemoveNext() failed");\n+        printf("LIST Popped %s\\n", argv_ptr);\n+    }\n+    printf("LIST %s", "No more elements to pop");\n+        \n+    /* could become list_free */\n+    ListDestroy(mylist);\n+    free(mylist);\n+\n+        \n+\n+\n+    myintlist = malloc(sizeof(list_t));\n+    INT_LIST_INIT(myintlist);\n+\n+    printf("\\n");\n+    printf("%s", "INT_LIST test");\n+\n+    for (i=0; i<argc; i++) {\n+        int data = 666-i;\n+        res = INT_LIST_APPEND(myintlist, data);\n+        printf("INT_LIST Result for appending \'%d\' was %d\\n", data, res);\n+    }\n+\n+    while (INT_LIST_SIZE(myintlist)) {\n+        int data;\n+        if (IntListRemoveNext(myintlist, NULL, &data))\n+            perror("ListRemoveNext() failed\\n");\n+        printf("INT_LIST Popped %d\\n", data);\n+    }\n+    printf("INT_LIST %s\\n", "No more elements to pop");\n+        \n+    /* could become list_free */\n+    INT_LIST_DESTROY(myintlist);\n+    free(myintlist);\n+\n+\n+\n+\n+    \n+    myqueue = malloc(sizeof(queue_t));\n+    QUEUE_INIT(myqueue, NULL);\n+\n+    printf("\\n");\n+    printf("%s", "QUEUE test\\n");\n+\n+    for (i=0; i<argc; i++) {\n+        res = QUEUE_PUSH(myqueue, argv[i]);\n+        printf("QUEUE Result for pushing \'%s\' was %d\\n", argv[i], res);\n+    }\n+\n+    while (! QUEUE_EMPTY(myqueue)) {\n+        char *argv_ptr;\n+        if (QUEUE_POP(myqueue, (void **)&argv_ptr))\n+            perror("QUEUE_POP() failed\\n");\n+        printf("QUEUE Popped %s\\n", argv_ptr);\n+    }\n+    printf("QUEUE %s\\n", "QUEUE No more elements to pop");\n+        \n+    /* could become list_free */\n+    QUEUE_DESTROY(myqueue);\n+    free(myqueue);\n+\n+\n+\n+\n+    myintqueue = malloc(sizeof(queue_t));\n+    INT_QUEUE_INIT(myintqueue);\n+\n+    printf("\\n");\n+    printf("%s\\n", "INT_QUEUE test");\n+\n+    for (i=0; i<argc; i++) {\n+        res = INT_QUEUE_PUSH(myintqueue, i);\n+        printf("INT_QUEUE Result for appending \'%d\' was %d\\n", i, res);\n+    }\n+\n+    while (! INT_QUEUE_EMPTY(myintqueue)) {\n+        int data;\n+        int rand_data;\n+        if (INT_QUEUE_POP(myintqueue, &data))\n+            perror("INT_QUEUE_POP() failed\\n");\n+        printf("INT_QUEUE Popped %d\\n", data);\n+\n+        rand_data = (int)( 10.0 * rand() / ( RAND_MAX+1.0));\n+        if (! (rand_data%3)) {\n+            res = INT_QUEUE_PUSH(myintqueue, rand_data);\n+            printf("INT_QUEUE Result for pushing random number \'%d\' was %d\\n", rand_data, res);            \n+        }\n+    }\n+    printf("INT_QUEUE %s\\n", "INT_QUEUE No more elements to pop");\n+        \n+    /* could become list_free */\n+    INT_QUEUE_DESTROY(myintqueue);\n+    free(myintqueue);\n+    \n+\n+    exit(0);\n+}\n+\n+#endif\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/list.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/list.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,105 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: list.h 193 2011-02-07 15:45:21Z andreas $
+ *
+ * Generic single linked list storing pointers to data
+ *
+ */
+
+#ifndef CLUSTALO_LIST_H
+#define CLUSTALO_LIST_H
+
+#include <stdlib.h>
+
+typedef struct list_elem_s {
+    void  *data;
+    struct list_elem_s *next;
+} list_elem_t;
+
+typedef struct {
+    /* size of list */
+    int size;
+    /* user defined function for freeing data */
+    void (*destroy)(void *data);
+    list_elem_t *head;
+    list_elem_t *tail;
+} list_t;
+
+void ListInit(list_t *prList, void (*destroy)(void *data));
+
+void ListDestroy(list_t *prList);
+
+int ListInsertNext(list_t *prList, list_elem_t *prElement, const void *data);
+
+#define LIST_APPEND(prList, data)  ListInsertNext((prList), LIST_TAIL(prList), (data))
+
+#define LIST_PREPEND(prList, data)  ListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data))
+
+int ListRemoveNext(list_t *prList, list_elem_t *prElement, void **data);
+
+#define LIST_SIZE(prList) ((prList)->size)
+
+#define CLUSTALO_LIST_HEAD(prList) ((prList)->head)
+
+#define LIST_TAIL(prList) ((prList)->tail)
+
+#define LIST_IS_HEAD(prList, prElement) ((prElement) == (prList)->head ? 1 : 0)
+
+#define LIST_IS_TAIL(prElement) ((prElement)->next == NULL ? 1 : 0)
+
+#define LIST_DATA(prElement) ((prElement)->data)
+
+#define LIST_NEXT(prElement) ((prElement)->next)
+
+
+
+
+
+/* special int list: stores ints by copying them (instead of storing
+ * pointers as generic list)
+ *
+ */
+
+typedef list_t int_list_t;
+
+#define INT_LIST_INIT(prList)  ListInit((prList), free)
+
+#define INT_LIST_DESTROY(prList) ListDestroy((prList));
+
+int IntListInsertNext(list_t *prList, list_elem_t *prElement, const int data);
+
+#define INT_LIST_APPEND(prList, data) IntListInsertNext((prList), LIST_TAIL(prList), (data))
+
+#define INT_LIST_PREPEND(prList, data) IntListInsertNext((prList), CLUSTALO_LIST_HEAD(prList), (data))
+
+int IntListRemoveNext(list_t *prList, list_elem_t *prElement, int *data);
+
+#define INT_LIST_SIZE(prList)   LIST_SIZE(prList)
+
+#define INT_CLUSTALO_LIST_HEAD(prList) CLUSTALO_LIST_HEAD_INT((prList))
+
+#define INT_LIST_TAIL(prList)  LIST_TAIL_INT((prList) )
+
+#define INT_LIST_IS_HEAD(prList, prElement) LIST_IS_HEAD(prList, prElement) 
+
+#define INT_LIST_IS_TAIL(prElement) LIST_IS_TAIL((prElement))
+
+#define INT_LIST_DATA(prElement) LIST_DATA((prElement))
+
+#define INT_LIST_NEXT(prElement) LIST_NEXT((prElement))
+
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/log.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/log.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,379 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#include "log.h"
+
+/* a default standard logger */
+log_t rLog;
+
+
+
+void
+LogVfprintf(FILE *prFP, char *pcFmt, va_list rVArgList);
+void
+LogWarn(FILE *prFP, char *pcFmt, va_list rVArgList);
+void
+LogError(FILE *prFP, char *pcFmt, va_list rVArgList);
+void
+LogCritical(FILE *prFP, char *pcFmt, va_list rVArgList);
+void
+LogFatal(FILE *prFP, char *pcFmt, va_list rVArgList);
+void
+LogForcedDebug(FILE *prFP, char *pcFmt, va_list rVArgList);
+
+
+
+
+/**
+ * @brief Plain, default print function
+ *
+ * Newline character is automatically appended to message.
+ *
+ */
+void
+LogVfprintf(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ /* print prefix */
+    vfprintf(prFP, pcFmt, rVArgList);
+    fprintf(prFP,"\n");
+
+#ifndef NDEBUG
+    fflush(prFP);
+#endif
+}
+/* end of LogVfprintf() */
+
+
+
+/**
+ * @brief 
+ *
+ */
+void
+LogWarn(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ fprintf(prFP, "WARNING: ");
+    LogVfprintf(prFP, pcFmt, rVArgList);
+}
+/* end of LogWarn() */
+
+
+
+/**
+ * @brief 
+ *
+ */
+void
+LogError(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ fprintf(prFP, "ERROR: ");
+    LogVfprintf(prFP, pcFmt, rVArgList);
+}
+/* end of LogError() */
+
+
+
+/**
+ * @brief 
+ *
+ */
+void
+LogCritical(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ fprintf(prFP, "CRITICAL ERROR: ");
+    LogVfprintf(prFP, pcFmt, rVArgList);
+}
+/* end of LogCritical() */
+
+
+
+/**
+ * @brief Will also exit!
+ */
+void
+LogFatal(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ fprintf(prFP, "FATAL: ");
+    LogVfprintf(prFP, pcFmt, rVArgList);
+    
+    exit(EXIT_FAILURE);
+}
+/* end of LogFatal() */
+
+
+
+/**
+ * @brief 
+ *
+ */
+void
+LogForcedDebug(FILE *prFP, char *pcFmt, va_list rVArgList)
+{
+ fprintf(prFP, "FORCED DEBUG: ");
+    LogVfprintf(prFP, pcFmt, rVArgList);
+}
+/* end of LogForcedDebug() */
+
+
+
+/**
+ *
+ * @brief Sets up default function pointers
+ *
+ */
+void
+LogDefaultSetup(log_t *log)
+{
+    log->iLogLevelEnabled = LOG_WARN;
+
+ log->prFP[LOG_DEBUG] = stdout;
+ log->prFP[LOG_INFO] = stdout;
+ log->prFP[LOG_WARN] = stderr;
+ log->prFP[LOG_ERROR] = stderr;
+ log->prFP[LOG_CRITICAL] = stderr;
+ log->prFP[LOG_FATAL] = stderr;
+ log->prFP[LOG_FORCED_DEBUG] = stderr;
+
+ log->prFunc[LOG_DEBUG] = &LogVfprintf;
+ log->prFunc[LOG_INFO] = &LogVfprintf;
+ log->prFunc[LOG_WARN] = &LogWarn;
+ log->prFunc[LOG_ERROR] = &LogError;
+ log->prFunc[LOG_CRITICAL] = &LogCritical;
+ log->prFunc[LOG_FATAL] = &LogFatal;
+ log->prFunc[LOG_FORCED_DEBUG] = &LogForcedDebug;
+}
+/* end of LogDefaultSetup() */
+
+
+
+/**
+ * @brief Log to certain level
+ *
+ * See also comp.lang.c FAQ list · Question 15.12
+ * http://c-faq.com/varargs/handoff.html How can I write a function which
+ * takes a variable number of arguments and passes them to some other function
+ * (which takes a variable number of arguments)?
+ *
+ */
+void
+Log(log_t *prLog, int iLevel, char *pcFmt, ...) 
+{
+ va_list rVArgList;
+    void (*prFunc) (FILE *prFP, char *pcFormat, va_list rVArgList);
+ FILE *prFP;
+
+ assert(iLevel>=0 && iLevel<=LOG_NUM_LEVELS);
+
+    /* fprintf(stderr, "DEBUG: iLevel=%d and iLogLevelEnabled=%d\n", iLevel, prLog->iLogLevelEnabled); */
+
+ /* return if below current loglevel */
+ if (iLevel < prLog->iLogLevelEnabled) {
+ return;
+ }
+
+ prFunc = prLog->prFunc[iLevel];
+ prFP = prLog->prFP[iLevel];
+
+ /* return if muted */
+ if (NULL == prFunc) {
+ return;
+ }
+
+ va_start(rVArgList, pcFmt);
+ prFunc(prFP, pcFmt, rVArgList);
+ va_end(rVArgList);
+}
+/* end of Log() */
+
+
+
+/**
+ *
+ * @brief Change file pointer for certain level
+ *
+ */
+void
+LogSetFP(log_t *prLog, int iLevel, FILE *prFP)
+{
+ assert(iLevel>=0 && iLevel<=LOG_NUM_LEVELS);
+
+ prLog->prFP[iLevel] = prFP;
+}
+/* end of LogSetFP() */
+
+
+
+/**
+ *
+ * @brief Return file pointer for certain level
+ *
+ */
+FILE *
+LogGetFP(log_t *prLog, int iLevel)
+{
+ assert(iLevel>=0 && iLevel<=LOG_NUM_LEVELS);
+
+ return prLog->prFP[iLevel];
+}
+/* end of LogGetFP() */
+
+
+
+
+
+/**
+ *
+ * @brief Change file pointer for all levels
+ *
+ */
+void
+LogSetFPForAll(log_t *prLog, FILE *prFP)
+{
+ int iAux;
+
+ for (iAux=0; iAux<LOG_NUM_LEVELS; iAux++) {
+ prLog->prFP[iAux] = prFP;
+ }
+}
+/* end of LogSetFP() */
+
+
+
+/**
+ *
+ * @brief Mute certain level (i.e set the corresponding function to NULL)
+ *
+ */
+void
+LogMute(log_t *prLog, int iLevel)
+{
+ assert(iLevel>=0 && iLevel<=LOG_NUM_LEVELS);
+
+ prLog->prFunc[iLevel] = NULL;
+}
+/* end of LogMute() */
+
+
+/**
+ *
+ * @brief Mute all channels
+ *
+ */
+void
+LogMuteAll(log_t *prLog)
+{
+ int iAux;
+
+ for (iAux=0; iAux<LOG_NUM_LEVELS; iAux++) {
+ LogMute(prLog, iAux);
+ }
+}
+/* end of LogMuteAll() */
+
+
+
+/**
+ * @brief
+ *
+ */
+void
+LogFuncOverwrite(log_t *prLog, int iLevel, 
+                 void (*Func) (FILE *prFP, char *pcFormat, va_list rVArgList))
+{
+ assert(iLevel>=0 && iLevel<=LOG_NUM_LEVELS);
+
+    prLog->prFunc[iLevel] = Func;
+
+}
+/* end of LogFuncOverwrite() */
+
+
+
+#ifdef LOG_TEST
+
+
+#define TEXT "Lorem ipsum dolor sit amet"
+
+void
+PrintSomeTextToAll(log_t *prLog) {
+ int iAux;
+ for (iAux=0; iAux<LOG_NUM_LEVELS; iAux++) {
+ Log(prLog, iAux, TEXT);
+ }
+}
+
+
+int
+main(int argc, char**argv) {
+ log_t prLog;
+ log_t pr2ndLog;
+ FILE *prFP;
+ char *pcTmpFileName = "schmock.txt";
+
+ prFP = fopen(pcTmpFileName, "w");
+
+  
+ LogDefaultSetup(&prLog);
+ LogDefaultSetup(&pr2ndLog);
+
+ printf("Printing to log:\n");
+ PrintSomeTextToAll(&prLog);
+ printf("---\n");
+
+ printf("Printing to pr2ndLog:\n");
+ PrintSomeTextToAll(&prLog);
+ printf("---\n");
+
+
+
+ printf("Changing second log's FP to write to '%s'\n", pcTmpFileName);
+ LogSetFPForAll(&pr2ndLog, prFP);
+
+ printf("Printing to pr2ndLog:\n");
+ PrintSomeTextToAll(&pr2ndLog);
+ printf("---\n");
+
+
+ printf("Changing Info() to new function (Fatal()) in log:\n");
+    LogFuncOverwrite(&prLog, LOG_INFO, &LogFatal);
+
+ printf("Printing to log:\n");
+ PrintSomeTextToAll(&prLog);
+ printf("---\n");
+
+
+   
+ fclose(prFP);
+
+ return 0;
+}
+
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/log.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/log.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,81 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id$
+ */
+
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#ifndef LOG_H
+#define LOG_H
+
+
+#define LOG_DEBUG 0
+#define LOG_VERBOSE 1
+#define LOG_INFO 2
+#define LOG_WARN 3
+#define LOG_FORCED_DEBUG 4
+#define LOG_ERROR 5
+#define LOG_CRITICAL 6
+#define LOG_FATAL 7
+
+#define LOG_NUM_LEVELS 8
+
+
+typedef struct {
+    /* the higher the level, the more priority it has. numbers must be
+     *  sequential 
+     */
+    
+    /* array of function pointers */
+    void (*prFunc[LOG_NUM_LEVELS]) (FILE *prFP, char *pcFormat, va_list rVArgList);
+    FILE *prFP[LOG_NUM_LEVELS];
+    char *prPrefix[LOG_NUM_LEVELS];
+
+    /* everything above this level will be printed */
+    int iLogLevelEnabled;
+} log_t;
+
+
+
+/* a standard logger */
+extern log_t rLog;
+
+
+
+void
+LogDefaultSetup(log_t *log);
+void
+Log(log_t *prLog, int iLevel, char *pcFmt, ...);
+void
+LogSetFP(log_t *log, int level, FILE *fp);
+void
+LogSetFPForAll(log_t *log, FILE *fp);
+FILE *
+LogGetFP(log_t *prLog, int iLevel);
+void
+LogMute(log_t *log, int level);
+void
+LogMuteAll(log_t *log);
+void
+LogFuncOverwrite(log_t *prLog, int iLevel, 
+                 void (*Func) (FILE *prFP, char *pcFormat, va_list rVArgList));
+
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/mbed.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/mbed.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1553 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: mbed.c 242 2011-05-27 14:04:21Z andreas $\n+ *\n+ *\n+ * Reimplementation from scratch of mBed:\n+ * Blackshields et al. (2010); PMID 20470396\n+ *\n+ *\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <assert.h>\n+#include <float.h>\n+\n+#include "mbed.h"\n+#include "pair_dist.h"\n+#include "symmatrix.h"\n+#include "ktuple_pair.h"\n+#include "tree.h"\n+#include "util.h"\n+#include "progress.h"\n+#include "queue.h"\n+\n+#include "log.h"\n+#include "kmpp/KMeans.h"\n+#include "mbed.h"\n+\n+#define TIMING 0\n+#if TIMING\n+#include "squid/stopwatch.h"\n+#endif\n+\n+\n+/* If FULL_WITHIN_CLUSTER_DISTANCES is not 0, distances within each\n+ * bisecting kmeans subcluster are not estimated using the vectors,\n+ * but calculated normally (using ktuple or kimura). Surprisingly this\n+ * results in 3% loss on a Homfam p24-h2010-08-09 subset (100-5000\n+ * seqs in test, at least 5 ref seqs; MAX_SEQ 100 vs 10000; NUM_SEEDS\n+ * log2 instead of log2^2). And of course it slows things down.\n+ */\n+#define FULL_WITHIN_CLUSTER_DISTANCES 1\n+\n+\n+/* Cluster size limits. Maximum is a soft limit, which might be\n+ * exceeded if a K-Means split was unsuccesful, where unsuccesful\n+ * might also mean that the minimum required number seqs. was not\n+ * reached */\n+#if FULL_WITHIN_CLUSTER_DISTANCES\n+static const int MAX_ALLOWED_SEQ_PER_PRECLUSTER = 100;\n+static const int MIN_REQUIRED_SEQ_PER_PRECLUSTER = 1;\n+#else\n+static const int MAX_ALLOWED_SEQ_PER_PRECLUSTER = 10000;\n+static const int MIN_REQUIRED_SEQ_PER_PRECLUSTER = 100;\n+#endif\n+\n+/* How many restarts per bisecting kmeans split. 10 give 0.5% increase\n+ * in quality on original HOMFAM over just 1. It also increases kmeans\n+ * time by a factor of ~3, but overall time is insignificant\n+ * compared to pairdist/progressive alignment part.\n+ */\n+static const int RESTARTS_PER_SPLIT = 10;\n+\n+\n+/* Use standard kmeans (lloyds) or kmeans++. Both are almost\n+ * indistinguishable here, although kmeans++ is slightly ahead the\n+ * fewer seeds you pick (and it should be better in theory)\n+ */\n+#define USE_KMEANS_LLOYDS 0\n+\n+\n+#ifndef HAVE_LOG2\n+#define log2(x)  (log(x) / 0.69314718055994530942)\n+#endif\n+#define NUMBER_OF_SEEDS(n) pow(log2(((double)n)), 2)\n+\n+\n+/* Seed selection method: SAMPLE_SEEDS_BY_LENGTH is the original mBed\n+ * approach: Sample iSeeds sequence with constant stride from length-sorted X.\n+ * It might be better to pick the seeds randomly, because length sorting might\n+ * be more prone to including outliers (e.g. very long and very short seqs).\n+ * However, we could never observer such a thing. So just stick to the\n+ * original version as this also removes the random element.\n+ */\n+enum SEED_SELECTION_TYPE {\n+    SELECT_SEEDS_RANDOMLY,\n+    SELECT_SEEDS_BY_LENGTH\n+};\n+#define SEED_SELECTION SELECT_SEEDS_BY_LENGTH\n+\n+\n+/* Tests on BAliBase (RV11,12,20,30,40,50; 10 runs each) show there is\n+ * no difference between mbed-trees created from cosine or euclidean\n+ * distances (simple version, just using disparities).\n+ */\n+#define USE_EUCLIDEAN_DISTANCE 1\n+\n+\n+/* print some mbed pre-cluster usage to screen */\n+#define PRINT_CLUSTER_DISTRIBUTION 0\n+\n+\n+#define TRACE 0\n+\n+\n+typedef struct {\n+    /* Number of final clusters\n+     */\n+    int iNClusters;\n+\n+    /* Coordinates (columns) for each cluster (rows)\n+     * valid indices: [0...iNClusters][0...dim-1'..b' iClusterIndex, prKMeansResult->iNClusters);\n+        SymMatrixPrint(prWithinClusterDistances, ppcLabels, NULL);\n+#endif\n+\n+        \n+        GuideTreeUpgma(&prSubClusterTree, ppcLabels,\n+                       prWithinClusterDistances, NULL);\n+\n+        CKFREE(ppcLabels); /* don\'t free members, they just point */\n+#if 0\n+        Log(&rLog, LOG_FORCED_DEBUG, "Cluster %d guide-tree:", iClusterIndex);\n+        LogTree(prSubClusterTree);\n+#endif\n+\n+        \n+        /* The guide tree id\'s (that point to the sequences) now start\n+         * from 0, i.e. the association with the prMSeq numbering is\n+         * broken and fixed in the following\n+         */\n+        for (iNodeIndex = 0; iNodeIndex < (int)GetNodeCount(prSubClusterTree); iNodeIndex++) {\n+            if (IsLeaf(iNodeIndex, prSubClusterTree)) {\n+                int iLeafId = GetLeafId(iNodeIndex, prSubClusterTree);\n+                int iRealId = prKMeansResult->ppiObjIndicesPerCluster[iClusterIndex][iLeafId];\n+#if 0\n+                Log(&rLog, LOG_FORCED_DEBUG, "Correcting leaf node %d which has (wrong) id %d and name %s to id %d (prMSeq name %s)",\n+                          iNodeIndex, iLeafId,\n+                          GetLeafName(iNodeIndex, prSubClusterTree),\n+                          iRealId, prMSeq->sqinfo[iRealId].name);\n+#endif\n+                SetLeafId(prSubClusterTree, iNodeIndex, iRealId);\n+            }\n+        }\n+\n+\n+        /* Append the newly created tree (prSubClusterTree) to the\n+         * corresponding node index of prMbedTree_p.\n+         */\n+#if TRACE\n+        Log(&rLog, LOG_FORCED_DEBUG, "Will join trees at leaf node %d = %s",\n+                  piClusterToTreeNode[iClusterIndex],\n+                  GetLeafName(piClusterToTreeNode[iClusterIndex], *prMbedTree_p));\n+#endif\n+\n+        AppendTree(*prMbedTree_p,\n+                   piClusterToTreeNode[iClusterIndex],\n+                   prSubClusterTree);\n+        /* Note: piClusterToTreeNode is still valid, because\n+         * AppendTrees() guarantees that no other than the node to\n+         * append to changes. */\n+\n+#if 0\n+        Log(&rLog, LOG_FORCED_DEBUG, "%s", "prMbedTree_p after cluster %d has appended:", iClusterIndex);\n+        LogTree(*prMbedTree_p);\n+\n+        if (0) {\n+            char fname[] = "mbed-joined-tree.dnd";\n+            FILE *pfOut;\n+            if (NULL == (pfOut = fopen(fname, "w"))) {\n+                Log(&rLog, LOG_FATAL, "Couldn\'t open %s for writing", fname);\n+            }\n+            MuscleTreeToFile(pfOut, *prMbedTree_p);\n+            Log(&rLog, LOG_FORCED_DEBUG, "Joined tree written to %s", fname);\n+            fclose(pfOut);\n+            Log(&rLog, LOG_FATAL, "DEBUG EXIT");\n+        }\n+#endif\n+\n+        /* cleanup\n+         */\n+        FreeMuscleTree(prSubClusterTree);\n+        FreeSymMatrix(&prWithinClusterDistances);\n+#if FULL_WITHIN_CLUSTER_DISTANCES\n+        FreeMSeq(&prSubClusterMSeq);\n+#endif\n+    } /* end for each cluster */\n+    ProgressDone(prSubClusterDistanceProgress);\n+    FreeProgress(&prSubClusterDistanceProgress);\n+\n+    \n+    if (NULL != pcGuidetreeOut) {\n+        if (NULL == (pfOut = fopen(pcGuidetreeOut, "w"))) {\n+            Log(&rLog, LOG_ERROR, "Couldn\'t open %s for writing", pcGuidetreeOut);\n+        } else {\n+            MuscleTreeToFile(pfOut, *prMbedTree_p);\n+            Log(&rLog, LOG_INFO, "Guide tree written to %s", pcGuidetreeOut);\n+            (void) fclose(pfOut);\n+        }\n+    }\n+\n+    \n+    /* cleanup\n+     *\n+     */\n+#if MBED_TIMING\n+    StopwatchStop(stopwatch);\n+    StopwatchDisplay(stdout, "mBed time (without pairwise distance computation): ", stopwatch);\n+    StopwatchFree(stopwatch);\n+#endif\n+\n+    FreeKMeansResult(&prKMeansResult);\n+    FreeSymMatrix(&prPreClusterDistmat);\n+    for (iI=0; iI<prMSeq->nseqs; iI++) {\n+        CKFREE(ppdSeqVec[iI]);\n+    }\n+    CKFREE(ppdSeqVec);\n+    CKFREE(piClusterToTreeNode);\n+\n+#ifndef NDEBUG\n+    TreeValidate(*prMbedTree_p);\n+#endif\n+    \n+    return 0;\n+}\n+/***   end: Mbed()   ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/mbed.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/mbed.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,30 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: mbed.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+#ifndef CLUSTALO_MBED_H
+#define CLUSTALO_MBED_H
+
+#include "muscle_tree.h"
+#include "seq.h"
+
+
+extern int
+Mbed(tree_t **tree, mseq_t *prMSeq,
+     const int iPairDistType, const char *pcGuidetreeOutfile);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,2017 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/* This a mix of tree functions and data-structures from\n+ * Bob Edgar\'s Muscle (version 3.7) ported to pure C, topped up with\n+ * some of our own stuff.\n+ *\n+ * Used files: phy.cpp, tree.h, phytofile.cpp and phyfromclust.cpp\n+ *\n+ * Muscle\'s code is public domain and so is this code here.\n+\n+ * From http://www.drive5.com/muscle/license.htm:\n+ * """\n+ * MUSCLE is public domain software\n+ *\n+ * The MUSCLE software, including object and source code and\n+ * documentation, is hereby donated to the public domain.\n+ *\n+ * Disclaimer of warranty\n+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,\n+ * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED\n+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * """\n+ *\n+ */\n+\n+/*\n+ *  RCS $Id: muscle_tree.c 230 2011-04-09 15:37:50Z andreas $\n+ */\n+\n+#include <stdlib.h>\n+#include <stdio.h>\n+#include <string.h>\n+#include <limits.h>\n+#include <assert.h>\n+#include <ctype.h>\n+\n+#include "util.h"\n+#include "log.h"\n+#include "muscle_tree.h"\n+\n+\n+static const double VERY_NEGATIVE_DOUBLE = -9e29;\n+/*const double dInsane = VERY_NEGATIVE_DOUBLE;*/\n+static const double dInsane = -9e29;\n+static const unsigned uInsane = 8888888;\n+\n+typedef enum \n+{\n+    NTT_Unknown,\n+\n+    /* Returned from Tree::GetToken: */\n+    NTT_Lparen,\n+    NTT_Rparen,\n+    NTT_Colon,\n+    NTT_Comma,\n+    NTT_Semicolon,\n+    NTT_String,\n+    \n+    /* Following are never returned from Tree::GetToken: */\n+    NTT_SingleQuotedString,\n+    NTT_DoubleQuotedString,\n+    NTT_Comment\n+} NEWICK_TOKEN_TYPE;\n+\n+\n+static void\n+InitCache(uint uCacheCount, tree_t *tree);\n+static void\n+TreeZero(tree_t *tree);\n+static uint\n+GetNeighborCount(unsigned uNodeIndex, tree_t *tree);\n+static bool\n+IsEdge(unsigned uNodeIndex1, unsigned uNodeIndex2, tree_t *tree);\n+static bool\n+HasEdgeLength(uint uNodeIndex1, uint uNodeIndex2, tree_t *tree);\n+static void\n+TreeToFileNodeRooted(tree_t *tree, uint m_uRootNodeIndex, FILE *fp);\n+static void\n+ValidateNode(uint uNodeIndex, tree_t *tree);\n+static void\n+AssertAreNeighbors(unsigned uNodeIndex1, unsigned uNodeIndex2, tree_t *tree);\n+static void\n+ExpandCache(tree_t *tree);\n+static void\n+TreeCreateRooted(tree_t *tree);\n+static bool\n+GetGroupFromFile(FILE *fp, uint uNodeIndex, double *ptrdEdgeLength, tree_t *tree);\n+static NEWICK_TOKEN_TYPE\n+GetToken(FILE *fp, char szToken[], uint uBytes);\n+/* stuff from textfile.cpp */\n+static void\n+FileSkipWhite(FILE *fp);\n+static bool\n+FileSkipWhiteX(FILE *fp);\n+static void\n+SetLeafName(uint uNodeIndex, const char *ptrName, tree_t *tree);\n+uint\n+AppendBranch(tree_t *tree, uint uExistingLeafIndex);\n+static void\n+SetEdgeLength(uint uNodeIndex1, uint uNodeIndex2,\n+              double dLength, tree_t *tree);\n+static uint\n+UnrootFromFile(tree_t *tree);\n+uint\n+GetNeighbor(uint uNodeIndex, uint uNeighborSubscript, tree_t *tree);\n+static void\n+InitNode(tree_t *prTree, uint uNodeIndex);\n+\n+\n+/**\n+ * @param[in] uNodeIndex\n+ * node to examine\n+ * @param[in] tree\n+ * tree to examine\n+ * @return id of left node\n+ * @note called GetRight in Muscle3.7\n+ */\n+uint\n+GetLeft(uint uNodeIndex, tree_t *tree) \n+{\n+    assert(NULL != tree);\n+    assert(tree->m_bRooted && uNodeIndex < tree->m_uNodeCount);\n+    return tree->m_uNeighbor2[uNodeIndex];\n+}\n+/***   end: GetLeft   ***/\n+\n+\n+\n+/**\n+ * @param[in] uNodeIndex\n+ * node to examine\n+ * @param[in] tree\n+ * tree to examine\n+ * @return id of right node\n+ * @note called GetRight in Muscle3.7\n+ */\n+uint\n+GetRight(uint uNodeIndex, tree_t *tree)\n+{\n+    assert(NULL != tree);\n+    assert(tree->m_bRooted && uNodeIndex < tree->m_uNodeCount);\n+    return tree->m_uNeighbor3[uNodeIndex];\n+}\n+/***   end: GetRight   ***/\n+\n+\n+\n+/**\n+ * @param[in] uNodeIndex\n+ * node to examine\n+ * @param[in] tree\n+ * tree to examine\n+ * @return leaf id of current node\n+ */\n+uint\n+GetLeafId(uint uNodeIndex, tree_t *tree)\n+{\n+    assert(NU'..b'e edge length info to parent\n+             */\n+            prDstTree->m_bHasEdgeLength1[uNewDstNodeIndex] =\n+                prSrcTree->m_bHasEdgeLength1[uSrcTreeNodeIndex];\n+            prDstTree->m_dEdgeLength1[uNewDstNodeIndex] =\n+                prSrcTree->m_dEdgeLength1[uSrcTreeNodeIndex];\n+\n+            /* update sequence/object id\n+             */\n+            prDstTree->m_Ids[uNewDstNodeIndex] =\n+                prSrcTree->m_Ids[uSrcTreeNodeIndex];            \n+\n+            /* we used a new node so increase their count */\n+            prDstTree->m_uNodeCount += 1;\n+            \n+#if TRACE\n+            Log(&rLog, LOG_FORCED_DEBUG, "Updated dst node %d with a src leaf node: parent=%d (%f)",\n+                      uNewDstNodeIndex,\n+                      prDstTree->m_uNeighbor1[uNewDstNodeIndex], prDstTree->m_dEdgeLength1[uNewDstNodeIndex]);\n+#endif\n+            \n+        } else  {\n+            /* src node is not root neither leaf, means we have an\n+             * internal node. Update all neighbour info\n+             * \n+             */\n+\n+            /* initialise/zero node values to default values\n+             */\n+            InitNode(prDstTree, uNewDstNodeIndex);\n+          \n+            /* update neigbours\n+             */\n+            /* parent: special case if parent was src tree root */\n+            if (IsRoot(prSrcTree->m_uNeighbor1[uSrcTreeNodeIndex], prSrcTree)) {\n+                    prDstTree->m_uNeighbor1[uNewDstNodeIndex] =\n+                        uDstTreeReplaceNodeIndex;\n+            } else {\n+                prDstTree->m_uNeighbor1[uNewDstNodeIndex] =\n+                    prSrcTree->m_uNeighbor1[uSrcTreeNodeIndex] + uOrgDstTreeNodeCount;\n+            }\n+            /* left */\n+            prDstTree->m_uNeighbor2[uNewDstNodeIndex] =\n+                prSrcTree->m_uNeighbor2[uSrcTreeNodeIndex] + uOrgDstTreeNodeCount;\n+            /* right */\n+            prDstTree->m_uNeighbor3[uNewDstNodeIndex] =\n+                prSrcTree->m_uNeighbor3[uSrcTreeNodeIndex] + uOrgDstTreeNodeCount;\n+\n+            /* update edge length info\n+             */\n+            /* parent */\n+            prDstTree->m_bHasEdgeLength1[uNewDstNodeIndex] =\n+                prSrcTree->m_bHasEdgeLength1[uSrcTreeNodeIndex];\n+            prDstTree->m_dEdgeLength1[uNewDstNodeIndex] =\n+                prSrcTree->m_dEdgeLength1[uSrcTreeNodeIndex];\n+            /* left */\n+            prDstTree->m_bHasEdgeLength2[uNewDstNodeIndex] =\n+                prSrcTree->m_bHasEdgeLength2[uSrcTreeNodeIndex];\n+            prDstTree->m_dEdgeLength2[uNewDstNodeIndex] =\n+                prSrcTree->m_dEdgeLength2[uSrcTreeNodeIndex];\n+            /* right */\n+            prDstTree->m_bHasEdgeLength3[uNewDstNodeIndex] =\n+                prSrcTree->m_bHasEdgeLength3[uSrcTreeNodeIndex];\n+            prDstTree->m_dEdgeLength3[uNewDstNodeIndex] =\n+                prSrcTree->m_dEdgeLength3[uSrcTreeNodeIndex];\n+\n+            /* we used a new node so increase their count */\n+            prDstTree->m_uNodeCount += 1;\n+            \n+#if TRACE\n+            Log(&rLog, LOG_FORCED_DEBUG, "Updated dst node %d with an internal src node: parent=%d (%f) left=%d (%f) right=%d (%f)",\n+                      uNewDstNodeIndex,\n+                      prDstTree->m_uNeighbor1[uNewDstNodeIndex], prDstTree->m_dEdgeLength1[uNewDstNodeIndex],\n+                      prDstTree->m_uNeighbor2[uNewDstNodeIndex], prDstTree->m_dEdgeLength2[uNewDstNodeIndex],\n+                      prDstTree->m_uNeighbor3[uNewDstNodeIndex], prDstTree->m_dEdgeLength3[uNewDstNodeIndex]);\n+#endif\n+        }\n+\n+    }\n+    /* end for each src tree node */\n+\n+    \n+    /*\n+     * m_uRootNodeIndex stays the same.\n+     *\n+     * No need to touch m_uCacheCount.\n+     *\n+     */    \n+#if USE_HEIGHT\n+    Log(&rLog, LOG_FATAL, "Internal error: Height usage not implemented in %s", __FUNCTION__);\n+#endif \n+\n+    \n+#ifndef NDEBUG\n+    TreeValidate(prDstTree);\n+#endif\n+        \n+    return;\n+}\n+/***   end: AppendTree()   ***/\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/muscle_tree.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,173 @@
+/* This a mix of tree functions and data-structures from
+ * Bob Edgar's Muscle (version 3.7) ported to pure C.
+ *
+ * Used files: phy.cpp, tree.h, phytofile.cpp and phyfromclust.cpp
+ *
+ * Muscle's code is public domain and so is this code here.
+
+ * From http://www.drive5.com/muscle/license.htm:
+ * """
+ * MUSCLE is public domain software
+ *
+ * The MUSCLE software, including object and source code and
+ * documentation, is hereby donated to the public domain.
+ *
+ * Disclaimer of warranty
+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * """
+ *
+ */
+
+/*
+ *  RCS $Id: muscle_tree.h 230 2011-04-09 15:37:50Z andreas $
+ */
+
+
+#ifndef CLUSTALO_MUSCLE_CLUSTALO_TREE_H
+#define CLUSTALO_MUSCLE_CLUSTALO_TREE_H
+
+#include <stdio.h>
+#include "util.h"
+
+#ifndef uint
+/* limit use of uint (see coding_style_guideline.txt) */
+typedef unsigned int uint;
+#endif
+
+static const uint NULL_NEIGHBOR = UINT_MAX;
+
+/**
+ * @brief guide-tree structure
+ *     
+ * @note We kept the original variable names here, to make it easy to
+ * search through Muscle's source code.
+ * From phy.cpp:
+ *    Node has 0 to 3 neighbors:
+ *    0 neighbors: singleton root
+ *    1 neighbor:  leaf, neighbor is parent
+ *    2 neigbors:  non-singleton root
+ *    3 neighbors: internal node (other than root)
+ *    
+ *    Minimal rooted tree is single node.
+ *    Minimal unrooted tree is single edge.
+ *    Leaf node always has nulls in neighbors 2 and 3, neighbor 1 is parent.
+ *    When tree is rooted, neighbor 1=parent, 2=left, 3=right.
+ *
+ */
+typedef struct {
+    uint m_uNodeCount;/**< number of nodes */
+    uint m_uCacheCount;/**< reserved memory */
+    
+    uint *m_uNeighbor1;/**< parent node */
+    uint *m_uNeighbor2;/**< left node */
+    uint *m_uNeighbor3;/**< right node */
+    
+    /* do we have edge lengths info stored (m_dEdgeLength[123]) */
+    bool *m_bHasEdgeLength1;
+    bool *m_bHasEdgeLength2;
+    bool *m_bHasEdgeLength3;
+
+    double *m_dEdgeLength1;
+    double *m_dEdgeLength2;
+    double *m_dEdgeLength3;
+    
+#if USE_HEIGHT
+    /* unused in our version of the code. we might need it at some
+     * stage so keep it in here, but disable via USE_HEIGHT throughout
+     * the code */
+    double *m_dHeight;
+    bool *m_bHasHeight;
+#endif
+
+    /**
+     * leaf labels.
+     * index range: 0 -- (m_uNodeCount+1)/2
+     */
+    char **m_ptrName;
+    
+    /**
+     * node id.
+     * index range: 0 -- m_uNodeCount
+     */
+    uint *m_Ids;
+    
+    bool m_bRooted; /**< tree is rooted */
+    uint m_uRootNodeIndex;
+} tree_t;
+
+
+extern void
+MuscleTreeCreate(tree_t *tree, uint uLeafCount, uint uRoot, const uint *Left,
+           const uint  *Right, const float *LeftLength, const float* RightLength,
+           const uint *LeafIds, char **LeafNames);
+
+extern void
+MuscleTreeToFile(FILE *fp, tree_t *tree);
+
+extern int
+MuscleTreeFromFile(tree_t *tree, char *ftree);
+
+extern void
+FreeMuscleTree(tree_t *tree);
+
+extern void
+LogTree(tree_t *tree, FILE *fp);
+
+extern bool
+IsRooted(tree_t *tree);
+
+extern uint
+GetNodeCount(tree_t *tree);
+
+extern uint
+GetLeafCount(tree_t *tree);
+        
+extern uint
+FirstDepthFirstNode(tree_t *tree);
+
+extern uint
+NextDepthFirstNode(uint nodeindex, tree_t *tree);
+
+extern bool
+IsLeaf(uint nodeindex, tree_t *tree);
+
+extern void
+SetLeafId(tree_t *tree, uint uNodeIndex, uint uId);
+    
+extern uint
+GetLeafId(uint nodeindex, tree_t *tree);
+
+extern char *
+GetLeafName(unsigned uNodeIndex, tree_t *tree);
+
+extern uint
+GetLeft(uint nodeindex, tree_t *tree);
+
+extern uint
+GetRight(uint nodeindex, tree_t *tree);
+
+extern uint
+GetRootNodeIndex(tree_t *tree);
+
+extern bool
+IsRoot(uint uNodeIndex, tree_t *tree);
+
+extern uint
+GetParent(unsigned uNodeIndex, tree_t *tree);
+
+extern double
+GetEdgeLength(uint uNodeIndex1, uint uNodeIndex2, tree_t *tree);
+
+extern uint
+LeafIndexToNodeIndex(uint uLeafIndex, tree_t *prTree);
+
+extern void
+AppendTree(tree_t *prDstTree,
+          uint uDstTreeNodeIndex, tree_t *prSrcTree);
+
+extern void
+TreeValidate(tree_t *tree);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,502 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/* This the fast UPGMA algorithm (O(N^2)) as implemented in Bob Edgar\'s\n+ * Muscle (UPGMA2.cpp; version 3.7) ported to pure C.\n+ *\n+ * Muscle\'s code is public domain and so is this code here.\n+ *\n+ * From http://www.drive5.com/muscle/license.htm:\n+ * """\n+ * MUSCLE is public domain software\n+ *\n+ * The MUSCLE software, including object and source code and\n+ * documentation, is hereby donated to the public domain.\n+ *\n+ * Disclaimer of warranty\n+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,\n+ * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED\n+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * """\n+ *\n+ */\n+\n+/*\n+ *  RCS $Id: muscle_upgma.c 230 2011-04-09 15:37:50Z andreas $\n+ *\n+ *\n+ * Notes:\n+ * ------\n+ * LINKAGE become linkage_t here\n+ *\n+ * Replaced the the following member functions for DistCalc DC:\n+ * DC.GetId = sequence id as int\n+ * DC.GetName = sequence name\n+ * DC.GetCount = matrix dim\n+ * DC.DistRange = vector / matrix row for object i with index j<i\n+ *\n+ * Log() has been replaced with Clustal\'s Info(), Quiet() with Log(&rLog, LOG_FATAL)\n+ *\n+ * Made TriangleSubscript() and g_ulTriangleSize ulong to prevent overflow for many sequences\n+ */\n+\n+#ifndef ulint\n+/* limit use of unsigned vars (see coding_style_guideline.txt) */\n+typedef unsigned long int ulong;\n+#endif\n+\n+\n+\n+#include <stdlib.h>\n+#include <stdio.h>\n+#include <assert.h>\n+\n+#include "util.h"\n+#include "log.h"\n+#include "symmatrix.h"\n+\n+#include "muscle_tree.h"\n+#include "muscle_upgma.h"\n+\n+/* from distcalc.h */\n+typedef float dist_t;\n+static const dist_t BIG_DIST = (dist_t) 1e29;\n+/* from muscle.h */\n+static const unsigned uInsane = 8888888;\n+\n+\n+\n+\n+/*static inline*/\n+ulong TriangleSubscript(uint uIndex1, uint uIndex2);\n+\n+\n+\n+\n+#define TRACE   0\n+\n+#ifndef MIN\n+#define MIN(x, y)   ((x) < (y) ? (x) : (y))\n+#endif\n+#ifndef MIN\n+#define MAX(x, y)   ((x) > (y) ? (x) : (y))\n+#endif\n+#define AVG(x, y)   (((x) + (y))/2)\n+\n+static uint g_uLeafCount;\n+static ulong g_ulTriangleSize;\n+static uint g_uInternalNodeCount;\n+static uint g_uInternalNodeIndex;\n+\n+/* Triangular distance matrix is g_Dist, which is allocated\n+ * as a one-dimensional vector of length g_ulTriangleSize.\n+ * TriangleSubscript(i,j) maps row,column=i,j to the subscript\n+ * into this vector.\n+ * Row / column coordinates are a bit messy.\n+ * Initially they are leaf indexes 0..N-1.\n+ * But each time we create a new node (=new cluster, new subtree),\n+ * we re-use one of the two rows that become available (the children\n+ * of the new node). This saves memory.\n+ * We keep track of this through the g_uNodeIndex vector.\n+ */\n+static dist_t *g_Dist;\n+\n+/* Distance to nearest neighbor in row i of distance matrix.\n+ * Subscript is distance matrix row.\n+ */\n+static dist_t *g_MinDist;\n+\n+/* Nearest neighbor to row i of distance matrix.\n+ * Subscript is distance matrix row.\n+ */\n+static uint *g_uNearestNeighbor;\n+\n+/* Node index of row i in distance matrix.\n+ * Node indexes are 0..N-1 for leaves, N..2N-2 for internal nodes.\n+ * Subscript is distance matrix row.\n+ */\n+static uint *g_uNodeIndex;\n+\n+/* The following vectors are defined on internal nodes,\n+ * subscripts are internal node index 0..N-2.\n+ * For g_uLeft/Right, value is the node index 0 .. 2N-2\n+ * because a child can be internal or leaf.\n+ */\n+static uint *g_uLeft;\n+static uint *g_uRight;\n+static dist_t *g_Height;\n+static dist_t *g_LeftLength;\n+static dist_t *g_RightLength;\n+\n+\n+/***   CalcDistRange\n+ *\n+ * Imitation of DistCalc.DistRange\n+ *\n+ * Sets values of row (vector / matrix row) to distances for object i with index j<i\n+ *\n+ * row must be preallocated\n+ */\n+void CalcDistRange(symmatrix_t *distmat, uint i, dist_t *row)\n+{\n+    uint j;\n+    for (j = 0; j < i; ++j) {\n+        row[j] = SymMatrixGetValue(distmat, i, j);\n+    }\n+}\n+/* end of CalcDistRange */\n+\n+\n+\n+/*static inline*/\n+ulong\n+'..b'eak;\n+/* couldn\'t be arsed to figure out proper usage of g_dSUEFF */\n+#if 0\n+            case LINKAGE_BIASED:\n+                dtNewDist = g_dSUEFF*AVG(dL, dR) + (1 - g_dSUEFF)*MIN(dL, dR);\n+                break;\n+#endif\n+            default:\n+                Log(&rLog, LOG_FATAL, "UPGMA2: Invalid LINKAGE_%u", linkage);\n+            }\n+\n+            /* Nasty special case.\n+             * If nearest neighbor of j is Lmin or Rmin, then make the new\n+             * node (which overwrites the row currently occupied by Lmin)\n+             * the nearest neighbor. This situation can occur when there are\n+             * equal distances in the matrix. If we don\'t make this fix,\n+             * the nearest neighbor pointer for j would become invalid.\n+             * (We don\'t need to test for == Lmin, because in that case\n+             * the net change needed is zero due to the change in row\n+             * numbering).\n+             */\n+            if (g_uNearestNeighbor[j] == Rmin)\n+                g_uNearestNeighbor[j] = Lmin;\n+\n+#if TRACE\n+            Info("New dist to %u = (%u/%.3g + %u/%.3g)/2 = %.3g\\n",\n+                 j, Lmin, dL, Rmin, dR, dtNewDist);\n+#endif\n+            g_Dist[vL] = dtNewDist;\n+            if (dtNewDist < dtNewMinDist) {\n+                dtNewMinDist = dtNewDist;\n+                uNewNearestNeighbor = j;\n+            }\n+        }\n+\n+        assert(g_uInternalNodeIndex < g_uLeafCount - 1 || BIG_DIST != dtNewMinDist);\n+        assert(g_uInternalNodeIndex < g_uLeafCount - 1 || uInsane != uNewNearestNeighbor);\n+\n+        const ulong v = TriangleSubscript(Lmin, Rmin);\n+        const dist_t dLR = g_Dist[v];\n+        const dist_t dHeightNew = dLR/2;\n+        const uint uLeft = g_uNodeIndex[Lmin];\n+        const uint uRight = g_uNodeIndex[Rmin];\n+        const dist_t HeightLeft =\n+            uLeft < g_uLeafCount ? 0 : g_Height[uLeft - g_uLeafCount];\n+        const dist_t HeightRight =\n+            uRight < g_uLeafCount ? 0 : g_Height[uRight - g_uLeafCount];\n+\n+        g_uLeft[g_uInternalNodeIndex] = uLeft;\n+        g_uRight[g_uInternalNodeIndex] = uRight;\n+        g_LeftLength[g_uInternalNodeIndex] = dHeightNew - HeightLeft;\n+        g_RightLength[g_uInternalNodeIndex] = dHeightNew - HeightRight;\n+        g_Height[g_uInternalNodeIndex] = dHeightNew;\n+\n+        /* Row for left child overwritten by row for new node */\n+        g_uNodeIndex[Lmin] = g_uLeafCount + g_uInternalNodeIndex;\n+        g_uNearestNeighbor[Lmin] = uNewNearestNeighbor;\n+        g_MinDist[Lmin] = dtNewMinDist;\n+\n+        /* Delete row for right child */\n+        g_uNodeIndex[Rmin] = uInsane;\n+\n+#if TRACE\n+        Info("\\nInternalNodeIndex=%u Lmin=%u Rmin=%u\\n",\n+             g_uInternalNodeIndex, Lmin, Rmin);\n+        ListState();\n+#endif\n+    }\n+\n+    uint uRoot = g_uLeafCount - 2;\n+\n+#if TRACE\n+    Log(&rLog, LOG_FORCED_DEBUG, "uRoot=%d g_uLeafCount=%d g_uInternalNodeCount=%d", uRoot, g_uLeafCount, g_uInternalNodeCount);\n+    for (i=0; i<g_uInternalNodeCount; i++) {\n+        Log(&rLog, LOG_FORCED_DEBUG, "internal node=%d:  g_uLeft=%d g_uRight=%d g_LeftLength=%f g_RightLength=%f g_Height=%f",\n+                  i, g_uLeft[i], g_uRight[i],\n+                  g_LeftLength[i], g_RightLength[i],\n+                  g_Height[i]);\n+    }\n+    for (i=0; i<g_uLeafCount; i++) {\n+        Log(&rLog, LOG_FORCED_DEBUG, "leaf node=%d:  Ids=%d names=%s",\n+                  i, Ids[i], names[i]);\n+    }\n+#endif\n+    \n+    MuscleTreeCreate(tree, g_uLeafCount, uRoot,\n+                      g_uLeft, g_uRight,\n+                      g_LeftLength, g_RightLength,\n+                      Ids, names);\n+#if TRACE\n+    tree.LogMe();\n+#endif\n+\n+    free(g_Dist);\n+\n+    free(g_uNodeIndex);\n+    free(g_uNearestNeighbor);\n+    free(g_MinDist);\n+    free(g_Height);\n+\n+    free(g_uLeft);\n+    free(g_uRight);\n+    free(g_LeftLength);\n+    free(g_RightLength);\n+\n+    /* NOTE: Muscle\'s "Names" variable is here the argument "names" */\n+    free(Ids);\n+}\n+/***   end of UPGMA2   ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/muscle_upgma.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,43 @@
+/* This the fast UPGMA algorithm (O(N^2)) as implemented in Bob Edgar's
+ * Muscle (UPGMA2.cpp; version 3.7) ported to pure C.
+ *
+ * Muscle's code is public domain and so is this code here.
+ *
+ * From http://www.drive5.com/muscle/license.htm:
+ * """
+ * MUSCLE is public domain software
+ *
+ * The MUSCLE software, including object and source code and
+ * documentation, is hereby donated to the public domain.
+ *
+ * Disclaimer of warranty
+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * """
+ *
+ */
+
+/*
+ *  RCS $Id: muscle_upgma.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+#ifndef CLUSTALO_UPGMA_H
+#define CLUSTALO_UPGMA_H
+
+#include "symmatrix.h"
+#include "muscle_tree.h"
+
+enum linkage_e {
+    LINKAGE_MIN,
+    LINKAGE_AVG,
+    LINKAGE_MAX,
+    LINKAGE_NEIGHBORJOINING,
+    LINKAGE_BIASED
+};
+typedef enum linkage_e linkage_t;
+
+void MuscleUpgma2(tree_t *tree, symmatrix_t *distmat,
+                   linkage_t linkage, char **names);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,425 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: pair_dist.c 242 2011-05-27 14:04:21Z andreas $\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <stdlib.h>\n+#include <ctype.h>\n+#include <assert.h>\n+#include <time.h>\n+\n+/* only neededfor iNumberOfThreads */\n+#include "clustal-omega.h"\n+\n+#include "ktuple_pair.h"\n+#include "pair_dist.h"\n+#include "progress.h"\n+#include "util.h"\n+\n+\n+/* Up to rev 173 we had a USE_SYM_KTUPLE switch implemented here. When active\n+ * ktuple distances were computed twice for each pair and averaged. Idea was\n+ * to avoid assymmetries in the pairwise scores (score(a, b) is often not the\n+ * same as score(b, a)). Results on BAliBASE indicate that this is overkill:\n+ *\n+ * r92_default            core columns: avg-sp=0.800656 avg-tc=0.47711  (of total 218)\n+ * r93-mod--norm-ktuple/  core columns: avg-sp=0.800656 avg-tc=0.47711  (of total 218)\n+ * r93-mod--sym-ktuple/   core columns: avg-sp=0.801083 avg-tc=0.476544 (of total 217)\n+ * r93-mod--rand-ktuple-1 core columns: avg-sp=0.799289 avg-tc=0.468028 (of total 218)\n+ * r93-mod--rand-ktuple-2 core columns: avg-sp=0.801654 avg-tc=0.47659  (of total 217)\n+ * r93-mod--rand-ktuple-3 core columns: avg-sp=0.800234 avg-tc=0.474908 (of total 218)\n+ * r93-mod--rand-ktuple-4 core columns: avg-sp=0.800573 avg-tc=0.476514 (of total 218)\n+ * r93-mod--rand-ktuple-5 core columns: avg-sp=0.799679 avg-tc=0.468716 (of total 218)\n+ *\n+ */\n+\n+static double\n+KimuraCorrection(double frac_id);\n+\n+static int\n+SquidIdPairDist(symmatrix_t *tmat, mseq_t *mseq,\n+                int istart, int iend,\n+                int jstart, int jend,\n+                bool use_KimuraCorrection, progress_t *prProgress,\n+                unsigned long int *ulStepNo, unsigned long int ulTotalStepNo);\n+\n+/* Taken from Muscle\'s msadistkimura.cpp */\n+static int DAYHOFF_PAMS[]={\n+  195,   /* 75.0% observed d; 195 PAMs estimated = 195% estimated d */\n+  196,   /* 75.1% observed d; 196 PAMs estimated */\n+                  197,    198,    199,    200,    200,    201,    202,  203,\n+  204,    205,    206,    207,    208,    209,    209,    210,    211,  212,\n+  213,    214,    215,    216,    217,    218,    219,    220,    221,  222,\n+  223,    224,    226,    227,    228,    229,    230,    231,    232,  233,\n+  234,    236,    237,    238,    239,    240,    241,    243,    244,  245,\n+  246,    248,    249,    250,    /* 250 PAMs = 80.3% observed d */\n+                                  252,    253,    254,    255,    257,  258,\n+  260,    261,    262,    264,    265,    267,    268,    270,    271,  273,\n+  274,    276,    277,    279,    281,    282,    284,    285,    287,  289,\n+  291,    292,    294,    296,    298,    299,    301,    303,    305,  307,\n+  309,    311,    313,    315,    317,    319,    321,    323,    325,  328,\n+  330,    332,    335,    337,    339,    342,    344,    347,    349,  352,\n+  354,    357,    360,    362,    365,    368,    371,    374,    377,  380,\n+  383,    386,    389,    393,    396,    399,    403,    407,    410,  414,\n+  418,    422,    426,    430,    434,    438,    442,    447,    451,  456,\n+  461,    466,    471,    476,    482,    487,    493,    498,    504,  511,\n+  517,    524,    531,    538,    545,    553,    560,    569,    577,  586,\n+  595,    605,    615,    626,    637,    649,    661,    675,    688,  703,\n+'..b'iend;\n+        for(iChunk = 0; iChunk <= iNumberOfThreads; iChunk++)\n+        {\n+            iChunkEnd = iChunkStart;\n+            if(iChunk == iNumberOfThreads - 1)\n+                iChunkStart = 0;\n+            else\n+                iChunkStart = iend - ((double)(iend - istart) * sqrt(((double)iChunk + 1.0)/(double)iNumberOfThreads));\n+            iChunkStarts[iChunk] = iChunkStart;\n+            iChunkEnds[iChunk] = iChunkEnd;\n+        }\n+\n+        if (PAIRDIST_KTUPLE == pairdist_type) {\n+\n+            Log(&rLog, LOG_INFO, "Calculating pairwise ktuple-distances...");\n+\n+            NewProgress(&prProgress, LogGetFP(&rLog, LOG_INFO),\n+                        "Ktuple-distance calculation progress", bPrintCR);\n+#ifdef HAVE_OPENMP\n+            #pragma omp parallel for private(iChunk) schedule(dynamic)\n+#endif\n+            for(iChunk = 0; iChunk < iNumberOfThreads; iChunk++)\n+            {\n+                KTuplePairDist((*distmat), mseq, iChunkStarts[iChunk], \n+                    iChunkEnds[iChunk], jstart, jend, NULL, prProgress, \n+                    &ulStepNo, ulTotalStepNo);\n+            }\n+\n+#if 0\n+            printf("total ops %d\\n", ulStepNo);\n+#endif\n+            /* old format:\n+            KTuplePairDist((*distmat), mseq,\n+                istart, iend,\n+                jstart, jend, NULL); */\n+\n+        } else if (PAIRDIST_SQUIDID == pairdist_type) {\n+            Log(&rLog, LOG_INFO, "Calculating pairwise aligned identity distances...");\n+\n+            NewProgress(&prProgress, LogGetFP(&rLog, LOG_INFO),\n+                        "Pairwise identity calculation progress", bPrintCR);\n+#ifdef HAVE_OPENMP\n+            #pragma omp parallel for private(iChunk) schedule(dynamic)\n+#endif\n+            for(iChunk = 0; iChunk < iNumberOfThreads; iChunk++)\n+            {\n+                 iSquidSuccess = SquidIdPairDist((*distmat), mseq,\n+                                    iChunkStarts[iChunk], iChunkEnds[iChunk],\n+                                    jstart, jend, FALSE, prProgress,\n+                                    &ulStepNo, ulTotalStepNo);\n+            }\n+            if(iSquidSuccess != 0)\n+                return -1;\n+\n+        } else if (PAIRDIST_SQUIDID_KIMURA == pairdist_type) {\n+            Log(&rLog, LOG_INFO, "Calculating Kimura-corrected pairwise aligned identity distances...");\n+            NewProgress(&prProgress, LogGetFP(&rLog, LOG_INFO),\n+                        "Pairwise identity calculation progress", bPrintCR);\n+#ifdef HAVE_OPENMP\n+            #pragma omp parallel for private(iChunk) schedule(dynamic)\n+#endif\n+            for(iChunk = 0; iChunk < iNumberOfThreads; iChunk++)\n+            {\n+                iSquidSuccess = SquidIdPairDist((*distmat), mseq,\n+                                    iChunkStarts[iChunk], iChunkEnds[iChunk],\n+                                    jstart, jend, TRUE, prProgress,\n+                                    &ulStepNo, ulTotalStepNo);\n+            }\n+            if(iSquidSuccess != 0)\n+                return -1;\n+        } else {\n+            Log(&rLog, LOG_FATAL, "INTERNAL ERROR: don\'t know about pairdist_type %d",\n+                  pairdist_type);\n+        }\n+    }\n+#endif /* random/proper distance calculation */\n+\n+\n+    /* optional printing of matrix to file\n+     */\n+    if (NULL != fdist_out) {\n+        /* need a copy of sequence names for printing */\n+        char **names;\n+        names = (char **)CKMALLOC(mseq->nseqs * sizeof(char*));\n+        for (uSeqIndex=0; uSeqIndex<mseq->nseqs; uSeqIndex++) {\n+            names[uSeqIndex] = mseq->sqinfo[uSeqIndex].name;\n+        }\n+\n+        SymMatrixPrint((*distmat), names, fdist_out);\n+\n+        Log(&rLog, LOG_INFO, "Pairwise distance matrix written to %s",\n+             fdist_out);\n+        CKFREE(names);\n+    }\n+\n+#if 0\n+#include "distance-distrib.h" \n+#endif\n+\n+    if (NULL != prProgress) {\n+        ProgressDone(prProgress);\n+        FreeProgress(&prProgress);\n+    }\n+\n+    return 0;\n+}\n+/***   end: PairDistances()   ***/\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/pair_dist.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,42 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: pair_dist.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+
+#ifndef CLUSTALO_PAIR_DIST_H
+#define CLUSTALO_PAIR_DIST_H
+
+#define PAIRDIST_UNKNOWN 0
+/* k-tuple distances: Wilbur and Lipman (1983) */
+#define PAIRDIST_KTUPLE 1
+/* fractional identity between aligned sequences. denominator is
+ * minimum seq len (see squid:aligneval.c) */
+#define PAIRDIST_SQUIDID 2
+/* SQUIDID + Kimura correction */
+#define PAIRDIST_SQUIDID_KIMURA 3
+
+#include "seq.h"
+#include "symmatrix.h"
+
+extern int
+PairDistances(symmatrix_t **distmat, mseq_t *mseq, const int pairdist_type,
+              const int istart, const int iend,
+              const int jstart, const int jend,
+              char *fdist_in, char *fdist_out);
+
+#endif
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/progress.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/progress.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,177 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: progress.c 230 2011-04-09 15:37:50Z andreas $
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "util.h"
+#include "log.h"
+#include "progress.h"
+
+#define LOGLEVEL_THRESHOLD LOG_INFO
+
+/**
+ * @brief Allocates a new progress structure and initialises its members.
+ * Free with FreeProgress()
+ *
+ * @note Starts the internal stopwatch immediatly!
+ *
+ * @see FreeProgress()
+ *
+ * @param[out] pprProgress
+ * Pointer pointer to progress structure. Progress structure will be
+ * allocated here. 
+ * @param[in] prFile
+ * Where to log messages to
+ * @param[in] pcPrefix
+ * What prefix to use for messages
+ * @param[in] bPrintCR
+ * If TRUE carriage return instead of newline will be printed between log messages
+ */    
+void
+NewProgress(progress_t **pprProgress, FILE *prFile,
+            char *pcPrefix, bool bPrintCR)
+{
+    assert(NULL!=pprProgress);
+    assert(NULL!=prFile);
+    assert(NULL!=pcPrefix);
+    
+    (*pprProgress) = (progress_t *) CKMALLOC(1*sizeof(progress_t));
+    (*pprProgress)->prFile = prFile;
+    (*pprProgress)->bPrintCR = bPrintCR;    
+    (*pprProgress)->pcPrefix = CkStrdup(pcPrefix);
+    strcpy((*pprProgress)->pcLastLogMsg, "\0");
+    (*pprProgress)->prStopwatch = StopwatchCreate();
+    StopwatchZero((*pprProgress)->prStopwatch);
+    StopwatchStart((*pprProgress)->prStopwatch);
+    
+    return; 
+}
+/***   end: NewProgress()   ***/
+
+
+
+/**
+ * @brief Frees progress structure and its members
+ *
+ * @param[out] pprProgress
+ * Pointer pointer to progress structure
+ *
+ * @see NewProgress()
+ * 
+ */    
+void
+FreeProgress(progress_t **pprProgress)
+{
+    (*pprProgress)->prFile = NULL;
+    CKFREE((*pprProgress)->pcPrefix);
+    StopwatchFree((*pprProgress)->prStopwatch);
+
+    CKFREE(*pprProgress);
+    return; 
+}
+/***   end: FreeProgress()   ***/
+
+
+
+
+/**
+ * @brief Prints a progress update (and a carriage return)
+ *
+ * @param[in] prProgress
+ * Pointer to the progress structure
+ * @param[in] iStep
+ * Current step number
+ * @param[in] iTotalSteps
+ * Total step number
+ * @param[in] bForceOutput
+ * If percentage hasn't changed output is normally supressed
+ * normally. Output can be forced with this flag.
+ *
+ */    
+void
+ProgressLog(progress_t *prProgress, 
+            unsigned long int iStep, unsigned long int iTotalSteps, 
+            bool bForceOutput)
+{
+    char pcLogMsg[1024];
+    assert(0!=iTotalSteps);
+    
+    if (rLog.iLogLevelEnabled>LOGLEVEL_THRESHOLD) {
+        return;
+    }
+    
+    (void) snprintf(pcLogMsg, sizeof(pcLogMsg), "%s: %lu %%",
+                    prProgress->pcPrefix, (unsigned long int)(iStep/(float)iTotalSteps*100.0));
+
+    if (! bForceOutput) {
+        /* Skip logging, if we've just logged the same message */
+        if (STR_EQ(pcLogMsg, prProgress->pcLastLogMsg)) {
+            return;
+        }
+    }
+
+    strncpy(prProgress->pcLastLogMsg, pcLogMsg,
+            sizeof(prProgress->pcLastLogMsg));
+    
+    fprintf(prProgress->prFile, "%s (%lu out of %lu)", pcLogMsg, iStep, iTotalSteps);
+    if (prProgress->bPrintCR) {
+        fprintf(prProgress->prFile, "\r");
+    } else {
+        fprintf(prProgress->prFile, "\n");
+
+    }
+    (void) fflush(prProgress->prFile);
+
+    return; 
+}
+/***   end: ProgressLog()   ***/
+
+
+/**
+ * @brief Finishes progress output by printing the elapsed time
+ *
+ * @param[in] prProgress
+ * Pointer to the progress structure
+ *
+ */    
+void
+ProgressDone(progress_t *prProgress)
+{
+    char pcBuf[1024];
+
+    if (rLog.iLogLevelEnabled>LOGLEVEL_THRESHOLD) {
+        return;
+    }
+
+    (void) snprintf(pcBuf, sizeof(pcBuf), "%s done. CPU time: ", 
+                    prProgress->pcPrefix);
+    StopwatchStop(prProgress->prStopwatch);
+    StopwatchDisplay(prProgress->prFile, pcBuf, prProgress->prStopwatch);
+    (void) fflush(prProgress->prFile);
+
+    return; 
+}
+/***   end: ProgressDone()   ***/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/progress.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/progress.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,50 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: progress.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+
+#ifndef CLUSTALO_PROGRESS_H
+#define CLUSTALO_PROGRESS_H
+
+#include "squid/stopwatch.h"
+
+typedef struct {
+    /* where to write to */
+    FILE *prFile;
+    /* prefix printed before each step */
+    char *pcPrefix;
+    bool bPrintCR;
+    char pcLastLogMsg[1024];
+    Stopwatch_t *prStopwatch;
+} progress_t;
+
+
+extern void
+NewProgress(progress_t **pprProgress, FILE *prFile, char *pcPrefix, bool bPrintCR);
+
+extern void
+FreeProgress(progress_t **pprProgress);
+
+extern void
+ProgressLog(progress_t *prProgress, 
+ unsigned long int iStep, unsigned long int iTotalSteps,
+ bool bForceOutput);
+
+extern void
+ProgressDone(progress_t *pprProgress);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/queue.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/queue.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,75 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: queue.h 193 2011-02-07 15:45:21Z andreas $
+ *
+ * Functions/Macros for FIFOs/Queues
+ *
+ */
+
+#ifndef CLUSTALO_QUEUE_H
+#define CLUSTALO_QUEUE_H
+
+#include "list.h"
+
+
+
+/*  FIFO/Queue as list_t, storing data pointers
+ * 
+ */
+
+typedef list_t queue_t;
+
+/* setup queue */
+#define QUEUE_INIT(prQueue, destroy_func) ListInit((prQueue), (destroy_func))
+
+/* free all elements from queue */
+#define QUEUE_DESTROY(prQueue) ListDestroy((prQueue))
+
+/* enqueue */
+#define QUEUE_PUSH(prQueue, data) LIST_APPEND((prQueue), (data))
+
+/* dequeue */
+#define QUEUE_POP(prQueue, data) ListRemoveNext((prQueue), NULL, (data))
+
+/* is queue empty ? */
+#define QUEUE_EMPTY(prQueue) (0==LIST_SIZE((prQueue)))
+
+
+
+/* Special int FIF/Queue, storing ints by copying them instead of
+ * keeping pointers only
+ */
+
+typedef queue_t int_queue_t;
+
+/* setup queue */
+#define INT_QUEUE_INIT(prQueue) INT_LIST_INIT((prQueue))
+
+/* free all elements from queue */
+#define INT_QUEUE_DESTROY(prQueue) INT_LIST_DESTROY((prQueue))
+
+/* enqueue */
+#define INT_QUEUE_PUSH(prQueue, data) INT_LIST_APPEND((prQueue), (data))
+
+/* dequeue */
+#define INT_QUEUE_POP(prQueue, data) IntListRemoveNext((prQueue), NULL, (data))
+
+/* is queue empty ? */
+#define INT_QUEUE_EMPTY(prQueue) (0==INT_LIST_SIZE((prQueue)))
+
+
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/seq.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/seq.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1185 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: seq.c 241 2011-05-04 14:37:17Z fabian $\n+ *\n+ *\n+ * Module for sequence/alignment IO and misc.\n+ *\n+ * This depends heavily on Sean Eddy\'s squid library, which is obsoleted by\n+ * HMMER3\'s Easel. However, easel doesn\'t support that many non-aligned input\n+ * formats.\n+ *\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <assert.h>\n+#include "squid/squid.h"\n+#include <ctype.h>\n+\n+#include "util.h"\n+#include "log.h"\n+#include "seq.h"\n+\n+\n+#define ALLOW_ONLY_PROTEIN 1\n+\n+\n+\n+\n+/**\n+ * @brief Stripped down version of squid\'s alistat\n+ *\n+ *\n+ * @param[in] prMSeq\n+ * The alignment to analyse\n+ * @param[in] bSampling\n+ * For many sequences: samples from pool\n+ * @param[in] bReportAll\n+ * Report identities for all sequence pairs\n+ *\n+ * Don\'t have to worry about sequence case because our version of PairwiseIdentity is case insensitive\n+ */\n+void\n+AliStat(mseq_t *prMSeq, bool bSampling, bool bReportAll) {\n+\n+    /*\n+     * bSampling = squid\'s do_fast\n+     * bReportAll = squid\'s allreport\n+     */\n+    float  **ppdIdentMx;  /* identity matrix (squid: imx) */\n+    const int iNumSample = 1000; /* sample size (squid: nsample) */\n+    int iAux;\n+\n+    MSA *msa; /* squid\'s alignment structure */\n+    int small, large;\t\n+    int bestj, worstj;\n+    float sum;\n+    float worst_worst, worst_best, best_best;\n+    float avgid;\n+    int i, j;\n+    int nres; /* number of residues */\n+\n+    if (bSampling && bReportAll) {\n+        Log(&rLog, LOG_WARN,\n+            "Cannot report all and sample at the same time. Skipping %s()", __FUNCTION__);\n+        return;\n+    }\n+    if (FALSE == prMSeq->aligned) {\n+        Log(&rLog, LOG_WARN,\n+            "Sequences are not aligned. Skipping %s()", __FUNCTION__);\n+        return;\n+    }\n+\n+    /* silence gcc warnings about uninitialized variables\n+     */\n+    worst_worst = worst_best = best_best = 0.0;\n+    bestj = worstj = -1;\n+\n+\n+    /** mseq to squid msa\n+     *\n+     * FIXME code overlap with WriteAlignment. Make it a function and take\n+     * code there (contains more comments) as template\n+     *\n+     */\n+    msa  = MSAAlloc(prMSeq->nseqs, \n+                    /* derive alignment length from first seq */\n+                    strlen(prMSeq->seq[0]));\n+    for (i=0; i<prMSeq->nseqs; i++) {\n+        int key; /* MSA struct internal index for sequence */\n+        char *this_name = prMSeq->sqinfo[i].name; /* prMSeq sequence name */\n+        char *this_seq = prMSeq->seq[i]; /* prMSeq sequence */\n+        SQINFO *this_sqinfo = &prMSeq->sqinfo[i]; /* prMSeq sequence name */\n+\n+        key = GKIStoreKey(msa->index, this_name);\n+        msa->sqname[key] = sre_strdup(this_name, strlen(this_name));\n+        /* setting msa->sqlen[idx] and msa->aseq[idx] */\n+        msa->sqlen[key] = sre_strcat(&(msa->aseq[key]), msa->sqlen[key],\n+                                     this_seq, strlen(this_seq));\n+        if (this_sqinfo->flags & SQINFO_DESC) {\n+            MSASetSeqDescription(msa, key, this_sqinfo->desc);\n+        }           \n+        msa->nseq++;\n+    }    \n+    \n+\n+\n+    nres = 0;\n+    small = large = -1;\n+    for (i = 0; i < msa->nseq; i++) {\n+        int rlen;\t\t/* raw sequence length           */\n+        rlen  = DealignedLength(msa->aseq[i]);\n+        nres +=  rlen;\n+        if (small == -1 || rlen < small) small = rlen;\n+   '..b'meLength, bGapFound);\n+#endif\n+    if (TRUE == bSameLength && TRUE == bGapFound) {\n+        return TRUE;\n+    } else {\n+        return FALSE;\n+    }   \n+\n+}\n+/***   end: SeqsAreAligned()   ***/\n+\n+\n+\n+/**\n+ * @brief Creates a new sequence entry and appends it to an existing mseq\n+ * structure.\n+ *\n+ * @param[out] prMSeqDest_p\n+ * Already existing and initialised mseq structure\n+ * @param[in] pcSeqName\n+ * sequence name of the sequence to add\n+ * @param[in] pcSeqRes\n+ * the actual sequence (residues) to add\n+ * \n+ * @note Don\'t forget to update the align and type flag if necessary!\n+ *\n+ * FIXME allow adding of more features\n+ *\n+ */    \n+void\n+AddSeq(mseq_t **prMSeqDest_p, char *pcSeqName, char *pcSeqRes)\n+{\n+    int iSeqIdx = 0;\n+    SQINFO sqinfo;\n+\n+    assert(NULL != prMSeqDest_p);\n+    assert(NULL != pcSeqName);\n+    assert(NULL != pcSeqRes);\n+\n+    iSeqIdx = (*prMSeqDest_p)->nseqs;\n+\n+    (*prMSeqDest_p)->seq =  (char **)\n+        CKREALLOC((*prMSeqDest_p)->seq, (iSeqIdx+1) * sizeof(char *));\n+    (*prMSeqDest_p)->orig_seq =  (char **)\n+        CKREALLOC((*prMSeqDest_p)->orig_seq, (iSeqIdx+1) * sizeof(char *));\n+    (*prMSeqDest_p)->sqinfo =  (SQINFO *)\n+        CKREALLOC((*prMSeqDest_p)->sqinfo, (iSeqIdx+1) * sizeof(SQINFO));\n+\n+\n+    (*prMSeqDest_p)->seq[iSeqIdx] = CkStrdup(pcSeqRes);\n+    (*prMSeqDest_p)->orig_seq[iSeqIdx] = CkStrdup(pcSeqRes);\n+\n+    /* should probably get ri of SqInfo altogether in the long run and just\n+       transfer the intersting members into our own struct\n+     */\n+    sqinfo.flags = 0; /* init */\n+\n+    sqinfo.len = strlen(pcSeqRes);\n+    sqinfo.flags |= SQINFO_LEN;\n+\n+    /* name is an array of SQINFO_NAMELEN length */\n+    strncpy(sqinfo.name, pcSeqName, SQINFO_NAMELEN-1);\n+    sqinfo.name[SQINFO_NAMELEN-1] = \'\\0\';\n+    sqinfo.flags |= SQINFO_NAME;\n+    \n+    SeqinfoCopy(&(*prMSeqDest_p)->sqinfo[iSeqIdx],\n+                & sqinfo);\n+\n+    (*prMSeqDest_p)->nseqs++;\n+\n+    return; \n+}\n+/* end of  AddSeq() */\n+\n+\n+\n+\n+/**\n+ * @brief Appends an mseq structure to an already existing one.\n+ * filename will be left untouched.\n+ *\n+ * @param[in] prMSeqDest_p\n+ * MSeq structure to which to append to\n+ * @param[out] prMSeqToAdd\n+ * MSeq structure which is to append\n+ *\n+ * \n+ */    \n+void\n+JoinMSeqs(mseq_t **prMSeqDest_p, mseq_t *prMSeqToAdd)\n+{\n+    int iSrcSeqIndex;\n+    int iNewNSeq;\n+    \n+    assert(NULL != prMSeqDest_p && NULL != (*prMSeqDest_p));\n+    assert(NULL != prMSeqToAdd);\n+    \n+    if (0 == prMSeqToAdd->nseqs) {\n+        Log(&rLog, LOG_WARN, "Was asked to add 0 sequences");\n+        return;\n+    }\n+    \n+    /* warn on seqtype mismatch and keep original seqtype */\n+    if ((*prMSeqDest_p)->seqtype != prMSeqToAdd->seqtype) {\n+        Log(&rLog, LOG_WARN, "Joining sequences of different type");\n+    }\n+    \n+    /* leave filename as it is */\n+\n+    /*\n+     * copy new seq/s, orig_seq/s, sqinfo/s\n+     */\n+    iNewNSeq = (*prMSeqDest_p)->nseqs + prMSeqToAdd->nseqs;\n+    \n+    (*prMSeqDest_p)->seq =  (char **)\n+        CKREALLOC((*prMSeqDest_p)->seq, iNewNSeq * sizeof(char *));\n+    \n+    (*prMSeqDest_p)->orig_seq =  (char **)\n+        CKREALLOC((*prMSeqDest_p)->orig_seq, iNewNSeq * sizeof(char *));\n+    \n+    (*prMSeqDest_p)->sqinfo =  (SQINFO *)\n+        CKREALLOC((*prMSeqDest_p)->sqinfo, iNewNSeq * sizeof(SQINFO));\n+    \n+    \n+    for (iSrcSeqIndex=0; iSrcSeqIndex < prMSeqToAdd->nseqs; iSrcSeqIndex++) {\n+        int iDstSeqIndex = (*prMSeqDest_p)->nseqs++;\n+        \n+        (*prMSeqDest_p)->seq[iDstSeqIndex] =\n+            CkStrdup(prMSeqToAdd->seq[iSrcSeqIndex]);\n+        \n+        (*prMSeqDest_p)->orig_seq[iDstSeqIndex] =\n+            CkStrdup(prMSeqToAdd->orig_seq[iSrcSeqIndex]);\n+        \n+        SeqinfoCopy(&(*prMSeqDest_p)->sqinfo[iDstSeqIndex],\n+                    & prMSeqToAdd->sqinfo[iSrcSeqIndex]);\n+    }\n+\n+    (*prMSeqDest_p)->nseqs = iNewNSeq;\n+    \n+    (*prMSeqDest_p)->aligned = SeqsAreAligned(*prMSeqDest_p);\n+    \n+    return; \n+}\n+/***   end: JoinMSeqs()   ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/seq.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/seq.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,164 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: seq.h 234 2011-04-13 05:26:16Z andreas $
+ */
+
+#ifndef CLUSTALO_SEQ_H
+#define CLUSTALO_SEQ_H
+
+#include "squid/squid.h"
+
+#include "util.h"
+
+
+/**
+ * int-encoded sequence types.
+ * these are in sync with squid's seqtypes and only used for
+ * convenience here
+ */
+#define SEQTYPE_UNKNOWN kOtherSeq
+#define SEQTYPE_DNA kDNA
+#define SEQTYPE_RNA kRNA
+#define SEQTYPE_PROTEIN kAmino
+
+/* Alphabets are defined in squid.h: AMINO_ALPHABET, DNA_ALPHABET,
+ * RNA_ALPHABET (all uppercase)
+ */
+#define AMINOACID_ANY 'X'
+#define NUCLEOTIDE_ANY 'N'
+
+/**
+ * @brief structure for storing multiple sequences
+ *
+ */
+typedef struct {
+    int nseqs; /**< number of sequences */
+    int seqtype; /**< sequence type */
+    char *filename; /**< input file / source of sequences */
+    bool aligned; /**< true if all seqs are same length **/
+    
+    /** (working) sequence residues as char pointer.
+     * range for first index: 0--nseq-1.
+     * changes during alignment.
+     */
+    char **seq;
+    
+    /** original sequence residues as char pointer.
+     * range for first index: 0--nseq-1.
+     * only set during input
+     */
+    char **orig_seq;
+    
+    /**
+     * @brief Squid's sequence info structure.
+     * Index range: 0--nseq-1.
+     *
+     * extra data are available:
+     * int flags;
+     *
+     * name:
+     * char name[SQINFO_NAMELEN];
+     *
+     * database identifier:
+     * char id[SQINFO_NAMELEN];
+     *
+     * database accession no:
+     * char acc[SQINFO_NAMELEN];
+     *
+     * description:      
+     * char desc[SQINFO_DESCLEN];
+     *
+     * length of this seq, incl gaps in our case!:
+     * int len;
+     *
+     * start position on source seq (valid range: 1..len):
+     * int start;
+     *
+     * end position on source seq (valid range: 1..len):
+     * int stop;
+     *
+     * original length of source seq:
+     * int olen;
+     *
+     * kRNA, kDNA, kAmino, or kOther:
+     * int type;
+     *
+     * secondary structure string (index range: 0..len-1):
+     * char *ss;
+     *
+     * percent side chain surface access (index range: 0..len-1):
+     * char *sa;                  
+     * 
+     * @see squid.h
+     * @see LogSqInfo()
+     *
+     */
+    SQINFO *sqinfo; 
+} mseq_t;
+
+extern void
+AliStat(mseq_t *prMSeq, bool bSampling, bool bReportAll);
+
+extern void
+AddSeq(mseq_t **prMSeqDest_p, char *pcSeqName, char *pcSeqRes);
+
+extern void
+SeqSwap(mseq_t *mseq, int i, int j);
+
+extern void
+DealignMSeq(mseq_t *mseq);
+
+extern const char *
+SeqTypeToStr(int seqtype);
+
+extern int
+ReadSequences(mseq_t *prMSeq_p, char *pcSeqFile, int iSeqType,
+  int iMaxNumSeq, int iMaxSeqLen);
+
+extern void
+NewMSeq(mseq_t **mseq);
+
+extern void
+FreeMSeq(mseq_t **mseq);
+
+extern void
+CopyMSeq(mseq_t **prMSeqDest_p, mseq_t *prMSeqSrc);
+
+extern void
+LogSqInfo(SQINFO *sqinfo);
+
+extern int
+FindSeqName(char *seqname, mseq_t *mseq);
+
+extern int
+WriteAlignment(mseq_t *mseq, const char *aln_outfile, int msafile_format);
+
+extern void
+DealignSeq(char *seq);
+
+extern void
+ShuffleMSeq(mseq_t *prMSeq);
+
+extern void
+SortMSeqByLength(mseq_t *prMSeq, const char cOrder);
+
+void
+JoinMSeqs(mseq_t **prMSeqDest_p, mseq_t *prMSeqToAdd);
+
+bool
+SeqsAreAligned(mseq_t *prMSeq);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,496 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: symmatrix.c 230 2011-04-09 15:37:50Z andreas $\n+ *\n+ *\n+ * Functions for symmetric (square) matrices including diagonal.\n+ * supports the notion of non-square sub-matrices of a symmetric\n+ * matrix, i.e. where |rows|<|cols|.\n+ *\n+ * FIXME Allocating one big chunk of memory is probably\n+ * much faster and also easier to maintain.\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <stdlib.h>\n+#include <stdio.h>\n+#include <ctype.h>\n+#include <string.h>\n+#include <assert.h>\n+#include "symmatrix.h"\n+\n+\n+#if 0\n+#define DEBUG\n+#endif\n+\n+#define MAX_BUF_SIZE 65536\n+\n+/**\n+ * @brief Allocates symmat and its members and initialises them. Data\n+ * will be calloced, i.e. initialised with zeros.\n+ *\n+ * @param[out] symmat\n+ * newly allocated and initialised symmatrix instance\n+ * @param[in] nrows\n+ * number of rows\n+ * @param[in]\n+ * ncols number of columns\n+ *\n+ * @return: non-zero on error\n+ *\n+ * @see FreeSymMatrix()\n+ *\n+ * @note: symmat data will be of fake shape nrows x ncols\n+ *\n+ */\n+int\n+NewSymMatrix(symmatrix_t **symmat, int nrows, int ncols)\n+{\n+    int i; /* aux */\n+    \n+    assert(nrows>0 && ncols>0 && ncols>=nrows);\n+    assert(ncols>0 && ncols>=nrows);\n+\n+    (*symmat) = (symmatrix_t *) malloc(1*sizeof(symmatrix_t));\n+    if (NULL == (*symmat)) {\n+        fprintf(stderr, "Couldn\'t allocate memory (%s|%s)\\n",\n+                __FILE__, __FUNCTION__);\n+        return -1;\n+    }\n+    \n+    (*symmat)->data = (double **) malloc(nrows * sizeof(double *));\n+    if (NULL == (*symmat)->data) {\n+        fprintf(stderr, "Couldn\'t allocate memory (%s|%s)\\n",\n+                __FILE__, __FUNCTION__);\n+        free(*symmat);\n+        *symmat = NULL;\n+        return -1;\n+    }\n+    for (i=0; i<nrows; i++) {\n+        (*symmat)->data[i] = (double *) calloc((ncols-i), sizeof(double));\n+        if (NULL == (*symmat)->data[i]) {\n+            fprintf(stderr, "Couldn\'t allocate memory (%s|%s)\\n",\n+                    __FILE__, __FUNCTION__); \n+            while (0!=--i) {\n+                free((*symmat)->data[i]);\n+            }           \n+            free((*symmat)->data);\n+            free(*symmat);\n+            *symmat = NULL;\n+            return -1;\n+        }\n+#ifdef TRACE\n+        fprintf(stderr, "DEBUG(%s|%s():%d) initialising symmat with the number of the beast\\n",\n+                __FILE__, __FUNCTION__, __LINE__);\n+        {\n+            int j;\n+            for (j=0; j<ncols-i; j++) {\n+                (*symmat)->data[i][j] = -666.0;\n+            }\n+\n+        }\n+#endif\n+    }\n+    \n+    (*symmat)->nrows = nrows;\n+    (*symmat)->ncols = ncols;\n+\n+    return 0;\n+}\n+/***   end: new_symmatrix   ***/\n+\n+\n+/**\n+ * @brief Sets symmat data of given index to given value\n+ *\n+ * @param[in] symmat\n+ * symmatrix_t whose data is to be set\n+ * @param[in] i\n+ * first index \n+ * @param[in] j\n+ * second index \n+ * @param[in] value\n+ * value used to set data point\n+ *\n+ * @see SymMatrixGetValue()\n+ *\n+ * @note This is a convenience function that checks index order.\n+ *\n+ */\n+void\n+SymMatrixSetValue(symmatrix_t *symmat, const int i, const int j, const double value)\n+{\n+    assert(NULL != symmat);\n+\n+    if (i<=j) {\n+        assert(i < symmat->nrows && j < symmat->ncols);\n+        symmat->data[i][j-i] = value;\n+    } else {\n+        assert(j < symmat->nrows && i < symmat->nc'..b's for reading\\n", pcFileIn);\n+        free(buf);\n+        return -1;\n+    }\n+    \n+    /* get number of sequences from first line and allocate memory for\n+     * distance matrix\n+     *\n+     */\n+    if (NULL == fgets(buf, MAX_BUF_SIZE, prFilePointer) ) {\n+        fprintf(stderr, "Couldn\'t read first line from %s\\n", pcFileIn);\n+        iRetCode = -1;\n+        goto closefile_and_freebuf;\n+    }\n+    if (strlen(buf)==MAX_BUF_SIZE-1) {\n+        fprintf(stderr, "%s\\n", "Looks like I couldn\'t read complete line. Wrong format (or too small MAX_BUF_SIZE)");\n+        iRetCode = -1;\n+        goto closefile_and_freebuf;\n+    }\n+    if (sscanf(buf, "%d", &iTotalNSeq)!=1) {\n+        fprintf(stderr, "ERROR: couldn\'t parse number of sequences from first line of %s\\n", pcFileIn); \n+        iRetCode = -1;\n+        goto closefile_and_freebuf;\n+    }\n+\n+#if TRACE\n+    Log(&rLog, LOG_FORCED_DEBUG, "iTotalNSeq parsed from %s is %d\\n", pcFileIn, iTotalNSeq);\n+#endif\n+    \n+    if (NewSymMatrix(prSymMat_p, iTotalNSeq, iTotalNSeq)) {\n+        fprintf(stderr, "FATAL %s", "Memory allocation for distance matrix failed");\n+        iRetCode = -1;\n+        goto closefile_and_freebuf;\n+    }\n+\n+\n+    /* parse file line by line\n+     *\n+     */\n+    while (NULL != fgets(buf, MAX_BUF_SIZE, prFilePointer)) {\n+        char *szToken;\n+        int is_newseq;\n+\n+        if (MAX_BUF_SIZE-1 == strlen(buf)) {\n+            fprintf(stderr, "%s\\n", "Looks like I couldn\'t read complete line. Wrong format (or too small MAX_BUF_SIZE)");\n+            iRetCode = -1;\n+            goto closefile_and_freebuf;\n+        }\n+\n+#ifdef DEBUG\n+        Log(&rLog, LOG_FORCED_DEBUG, "Got line: %s\\n", buf);\n+#endif\n+\n+        /* new sequence label at beginning of line?\n+         */\n+        if (isblank(buf[0])) {\n+            is_newseq = 0;\n+        } else {\n+            is_newseq = 1;\n+        }\n+\n+        /* tokenise line and treat new sequence specially\n+         */\n+        szToken = strtok(buf, " \\t");\n+        if (is_newseq==1) {\n+            iNParsedSeq++;\n+            iNParsedDists=0;\n+\n+            /* if format is lower dimensional matrix then first\n+             * sequence has no distances but might have newline\n+             * character at it\'s end.\n+             */\n+            while (isspace(szToken[strlen(szToken)-1])) {\n+                szToken[strlen(szToken)-1]=\'\\0\';\n+            }\n+            /* FIXME save label? */\n+            szToken = strtok(NULL, " \\t");\n+        }\n+        /* from here on it\'s only parsing of distances */\n+        while (szToken != NULL) {\n+            double dist;\n+            iNParsedDists++;\n+\n+            /* only parse what\'s needed */\n+            if (iNParsedDists!=iNParsedSeq) {\n+                /* parse and store distance\n+                 */\n+                if (sscanf(szToken, "%lf", &dist)!=1) {\n+                    fprintf(stderr, "Couldn\'t parse float from entry \'%s\'\\n", szToken);\n+                    iRetCode = -1;\n+                    goto closefile_and_freebuf;\n+                }\n+#if TRACE\n+                Log(&rLog, LOG_FORCED_DEBUG, "Parsed distance %d for seq %d = %f\\n", iNParsedDists-1, iNParsedSeq-1, dist);\n+#endif\n+                SymMatrixSetValue(*prSymMat_p, iNParsedSeq-1, iNParsedDists-1, dist);\n+                SymMatrixSetValue(*prSymMat_p, iNParsedDists-1, iNParsedSeq-1, dist);\n+            }\n+            szToken = strtok(NULL, " \\t");\n+        }        \n+    }\n+\n+    if (iTotalNSeq!=iNParsedSeq) {\n+        fprintf(stderr, "expected %d seqs, but only parsed %d\\n", iTotalNSeq, iNParsedSeq);\n+        iRetCode = -1;\n+        goto closefile_and_freebuf;\n+    }\n+#if TRACE\n+    for (i=0; i<iNParsedSeq; i++) {\n+        int j;\n+        for (j=0; j<iNParsedSeq; j++) {\n+            Log(&rLog, LOG_FORCED_DEBUG, "prSymMat_p[%d][%d]=%f\\n", i, j, (*prSymMat_p)[i][j]);\n+        }\n+    }\n+#endif\n+\n+closefile_and_freebuf:\n+    fclose(prFilePointer);\n+    free(buf);\n+    \n+    return iRetCode;\n+}\n+/***   end: SymMatrixRead   ***/\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/symmatrix.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,80 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: symmatrix.h 216 2011-03-19 10:11:53Z andreas $
+ */
+
+/**
+ * Functions for symmetric (square) matrices including diagonal.
+ *
+ * Supports the notion of non-square sub-matrices of a symmetric
+ * matrix, i.e. where |rows|<|cols| and the corresponding full matrix
+ * would be |cols|x|cols|
+ *
+ * Instead of making this one big chunk of memory we keep pointers to
+ * pointers, so that we can easily realloc (the project where this file
+ * originated from needed this for growing a "seed" matrix).
+ *
+ * FIXME Allocating one big chunk of memory is probably
+ * much faster and also easier to maintain.
+ * 
+ * 
+ */
+
+#ifndef CLUSTALO_SYMMATRIX_H
+#define CLUSTALO_SYMMATRIX_H
+
+
+/**
+ * @brief symmetric matrix structure
+ */
+typedef struct {
+    int nrows; /**< number of rows */
+    int ncols; /**< number of columns */
+    /**
+     * stored data
+     *
+     * @note indices range: [i][j-i] i<=j. use getvalue() and
+     * setvalue() instead of accessing directly
+     *
+     * @see SymMatrixGetValue(), SymMatrixSetValue()
+     */
+    double **data; 
+} symmatrix_t;
+
+
+
+extern int
+NewSymMatrix(symmatrix_t **symmat, const int nrows, const int ncols);
+
+extern void
+SymMatrixSetValue(symmatrix_t *symmat, const int i, const int j, const double value);
+
+extern double
+SymMatrixGetValue(symmatrix_t *symmat, const int i, const int j);
+
+extern void
+SymMatrixGetValueP(double **value, symmatrix_t *symmat, const int i, const int j);
+
+extern void
+FreeSymMatrix(symmatrix_t **symmat);
+
+extern void
+SymMatrixPrint(symmatrix_t *symmat, char **labels,  const char *path);
+
+extern int
+SymMatrixRead(char *pcFileIn, symmatrix_t **prSymMat_p);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/tree.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/tree.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,234 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: tree.c 230 2011-04-09 15:37:50Z andreas $
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "util.h"
+#include "log.h"
+#include "muscle_upgma.h"
+#include "tree.h"
+
+/**
+ *
+ * @brief Creates a UPGMA guide tree. This is a frontend function to
+ * the ported Muscle UPGMA code ().
+ *
+ * @param[out] tree
+ * created upgma tree. will be allocated here. use FreeMuscleTree()
+ * to free
+ * @param[in] labels
+ * pointer to nseq sequence names
+ * @param[in] distmat
+ * distance matrix
+ * @param[in] ftree
+ * optional: if non-NULL, tree will be written to this files
+ *
+ * @see FreeMuscleTree()
+ * @see MuscleUpgma2()
+ *
+ */
+void
+GuideTreeUpgma(tree_t **tree, char **labels,
+                symmatrix_t *distmat, char *ftree)
+{
+    linkage_t linkage = LINKAGE_AVG;
+    FILE *fp = NULL;
+
+    if (NULL != ftree) {
+        if (NULL == (fp=fopen(ftree, "w"))) {
+            Log(&rLog, LOG_ERROR, "Couldn't open tree-file '%s' for writing. Skipping", ftree);
+        }
+        /* fp NULL is handled later */
+    }
+
+    (*tree) = (tree_t *) CKMALLOC(1 * sizeof(tree_t));
+    MuscleUpgma2((*tree), distmat, linkage, labels);
+
+    if (rLog.iLogLevelEnabled <= LOG_DEBUG) {
+        Log(&rLog, LOG_DEBUG, "tree logging...");
+        LogTree((*tree), LogGetFP(&rLog, LOG_DEBUG));
+    }
+    
+    if (NULL != fp) {
+        MuscleTreeToFile(fp, (*tree));
+        Log(&rLog, LOG_INFO, "Guide tree written to %s", ftree);
+        fclose(fp);
+    }
+}
+/***   end: guidetree_upgma   ***/
+
+
+
+/**
+ *
+ * @brief
+ *
+ * @param[out] tree
+ * created upgma tree. will be allocated here. use FreeMuscleTree()
+ * to free
+ * @param[in] mseq
+ * @param[in] ftree
+ *
+ * @return non-zero on error
+ *
+ */    
+int
+GuideTreeFromFile(tree_t **tree, mseq_t *mseq, char *ftree)
+{
+    int iNodeCount;
+    int iNodeIndex;
+    
+    (*tree) = (tree_t *) CKMALLOC(1 * sizeof(tree_t));
+    if (MuscleTreeFromFile((*tree), ftree)!=0) {
+        Log(&rLog, LOG_ERROR, "%s", "MuscleTreeFromFile failed");
+        return -1;
+    }
+
+    /* Make sure tree is rooted */
+    if (!IsRooted((*tree))) {
+        Log(&rLog, LOG_ERROR, "User tree must be rooted");
+        return -1;
+    }
+    
+    if ((int)GetLeafCount((*tree)) != mseq->nseqs) {
+        Log(&rLog, LOG_ERROR, "User tree does not match input sequences");
+        return -1;
+    }
+
+    /* compare tree labels and sequence names and set leaf-ids */
+    iNodeCount = GetNodeCount((*tree));
+    for (iNodeIndex = 0; iNodeIndex < iNodeCount; ++iNodeIndex) {
+        char *LeafName;
+        int iSeqIndex;
+        
+        if (!IsLeaf(iNodeIndex, (*tree)))
+            continue;
+        LeafName = GetLeafName(iNodeIndex, (*tree));
+
+        if ((iSeqIndex=FindSeqName(LeafName, mseq))==-1) {
+            Log(&rLog, LOG_ERROR, "Label '%s' in tree could not be found in sequence names", LeafName);
+            return -1;
+        }
+        
+        SetLeafId((*tree), iNodeIndex, iSeqIndex);
+    }
+
+    if (rLog.iLogLevelEnabled <= LOG_DEBUG) {
+        Log(&rLog, LOG_DEBUG, "tree logging...");
+        LogTree((*tree),  LogGetFP(&rLog, LOG_DEBUG));
+    }
+    
+    return 0;
+}
+/***   end: GuideTreeFromFile()   ***/
+
+
+
+/**
+ *
+ * @brief Depth first traversal of tree, i.e. leaf nodes (sequences)
+ * will be visited first. Order can be used to guide progressive
+ * alignment order.
+ * 
+ * @param[out] piOrderLR_p
+ * order in which left/right nodes (profiles) are to be aligned.
+ * allocated here; caller must free.
+ * @param[in] tree
+ * The tree to traverse; has to be rooted
+ * @param[in] mseq
+ * corresponding multiple sequence structure
+ *
+ */    
+void
+TraverseTree(int **piOrderLR_p, 
+              tree_t *tree, mseq_t *mseq)
+{
+    int tree_nodeindex = 0;
+    int order_index = 0;
+  
+    assert(NULL!=tree);
+    assert(NULL!=mseq);    
+    assert(IsRooted(tree));
+    
+    /* allocate memory for node/profile alignment order;
+     * for every node allocate DIFF_NODE (3) int (1 left, 1 right, 1 parent)
+     */
+    *piOrderLR_p = (int *)CKCALLOC(DIFF_NODE * GetNodeCount(tree), sizeof(int));
+  
+    /* Log(&rLog, LOG_FORCED_DEBUG, "print tree->m_iNodeCount=%d", tree->m_iNodeCount); */
+  
+  
+    tree_nodeindex = FirstDepthFirstNode(tree);
+    /*LOG_DEBUG("Starting with treenodeindex = %d", tree_nodeindex);*/
+  
+    order_index = 0;
+  
+    do {
+        if (IsLeaf(tree_nodeindex, tree)) {
+            int leafid = GetLeafId(tree_nodeindex, tree);
+            if (leafid >= mseq->nseqs)
+                Log(&rLog, LOG_FATAL, "Sequence index out of range during tree traversal (leafid=%d nseqs=%d)",
+                      leafid, mseq->nseqs);
+      
+            /* this is a leaf node, 
+             * indicate this by registering same leafid for left/right
+             */
+      
+            (*piOrderLR_p)[DIFF_NODE*order_index+LEFT_NODE] = leafid;
+            (*piOrderLR_p)[DIFF_NODE*order_index+RGHT_NODE] = leafid;
+            (*piOrderLR_p)[DIFF_NODE*order_index+PRNT_NODE] = tree_nodeindex;
+      
+            Log(&rLog, LOG_DEBUG, "Tree traversal: Visited leaf-node %d (leaf-id %d = Seq '%s')",
+                 tree_nodeindex, leafid, mseq->sqinfo[leafid].name);
+      
+        } else {
+            int merge_nodeindex;
+            int left;
+            int right;
+      
+            merge_nodeindex = tree_nodeindex;
+            left  = GetLeft(tree_nodeindex, tree);
+            right = GetRight(tree_nodeindex, tree);
+      
+            /* this is not a leaf node but a merge node, 
+             * register left node (even) and right node (odd)
+             */
+            (*piOrderLR_p)[DIFF_NODE*order_index+LEFT_NODE] = left;
+            (*piOrderLR_p)[DIFF_NODE*order_index+RGHT_NODE] = right;
+            (*piOrderLR_p)[DIFF_NODE*order_index+PRNT_NODE] = merge_nodeindex;
+      
+            Log(&rLog, LOG_DEBUG, "Tree traversal: Visited non-leaf node %d with siblings %d (L) and %d (R)",
+                 merge_nodeindex, left, right);
+        }
+        tree_nodeindex = NextDepthFirstNode(tree_nodeindex, tree);
+    
+        order_index++;
+    
+    } while (NULL_NEIGHBOR != tree_nodeindex);
+  
+    return;
+}
+/***   end: TraverseTree   ***/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/tree.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/tree.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,40 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: tree.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+#ifndef CLUSTALO_TREE_H
+#define CLUSTALO_TREE_H
+
+#include "symmatrix.h"
+#include "muscle_tree.h"
+#include "seq.h"
+
+enum {LEFT_NODE = 0, RGHT_NODE, PRNT_NODE, DIFF_NODE};
+
+extern void
+GuideTreeUpgma(tree_t **tree,
+               char **labels, symmatrix_t *tmat, char *ftree);
+
+extern int
+GuideTreeFromFile(tree_t **tree,
+                  mseq_t *mseq, char *ftree);
+    
+extern void
+TraverseTree(int **piOrderLR_p, 
+       tree_t *tree, mseq_t *mseq);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/util.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/util.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,505 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: util.c 235 2011-04-13 14:13:19Z andreas $\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <assert.h>\n+#include <time.h>\n+\n+#include "log.h"\n+#include "util.h"\n+\n+\n+\n+\n+/* struct for QSortAndTrackIndex and SortAndTrackIndexCmp[Asc|Desc] */\n+typedef struct {\n+    int piIndex;\n+    int piValue;\n+} sortwithindex_t;\n+\n+\n+\n+\n+/**\n+ * @brief Copy of squid\'s FileExists(). Copied here to make squid independent.\n+ */\n+int\n+CheckIfFileExists(char *pcFilename)\n+{\n+  FILE *prFile;\n+  if ((prFile = fopen(pcFilename, "r"))) { \n+      fclose(prFile);\n+      return TRUE; \n+  }\n+  return FALSE;\n+}\n+/* end of CheckIfFileExists */\n+\n+\n+/**\n+ * @brief Allocates memory (malloc)\n+ *\n+ * @param[in] bytes\n+ * bytes to allocated\n+ * @param[in] function\n+ * calling function name\n+ * @param[in] line\n+ * calling function line\n+ *\n+ * @return void pointer to the newly allocated memory\n+ *\n+ * @note use provided macro CKMALLOC() which automatically adds\n+ * function name and line number\n+ *\n+ */\n+void *\n+CkMalloc(size_t bytes, const char *function, const int line)\n+{\n+    void *ret;\n+    \n+    if(NULL == (ret = malloc(bytes * sizeof(char)))) {\n+        Log(&rLog, LOG_FATAL, "Out of memory (requested from %s:%d)\\n", function, line);\n+    }\n+\n+    return ret; \n+}\n+/***   end: ckmalloc   ***/\n+\n+\n+\n+/**\n+ * @brief Allocates memory (calloc). Memory will be\n+ * set to zero.\n+ *\n+ * @param[in] count\n+ * Allocate space for count objects\n+ * @param[in] size\n+ * Objects are of this size\n+ * @param[in] function\n+ * calling function name\n+ * @param[in] line\n+ * calling function line\n+ *\n+ * @return void pointer to the newly allocated and zeroed memory (calloc).\n+ *\n+ * @note use provided macro CKCALLOC() which automatically adds\n+ * function name and line number\n+ *\n+ *\n+ */\n+void *\n+CkCalloc(size_t count, size_t size, const char *function, const int line)\n+{\n+    void *ret;\n+    \n+    if(NULL == (ret = calloc(count, size))) {\n+        Log(&rLog, LOG_FATAL, "Out of memory (requested from %s:%d)\\n",\n+                function, line);\n+        exit(EXIT_FAILURE);\n+    }\n+    \n+    return ret; \n+}\n+/***   end: CkCalloc   ***/\n+\n+\n+/**\n+* @brief Reallocates memory\n+ *\n+ * @param[in] ptr\n+ * Pointer to memory to be reallocated\n+ * @param[in] bytes\n+ * bytes to allocated\n+ * @param[in] function\n+ * calling function name\n+ * @param[in] line\n+ * calling function line\n+ *\n+ * @return void pointer to the newly allocated memory\n+ *\n+ * @note use provided macro CKREALLOC() which automatically adds\n+ * function name and line number   \n+ *\n+ */\n+void *\n+CkRealloc(void *ptr, size_t bytes, const char *function, const int line)\n+{\n+    void *ret=NULL;\n+\n+    if(NULL == (ret = realloc(ptr, bytes))) {\n+        Log(&rLog, LOG_FATAL, "FATAL: Out of memory (requested from %s:%d)\\n",\n+                function, line);\n+    }\n+\n+    return ret; \n+}\n+/***   end: ckrealloc   ***/\n+\n+\n+\n+/**\n+ *\n+ * @brief Frees memory\n+ *\n+ * @param[in] ptr\n+ * Pointer to memory to be freed\n+ * @param[in] function\n+ * calling function name\n+ * @param[in] line\n+ * calling function line\n+ *\n+ * @return void pointer to the now zeroed memory\n+ *\n+ * @note use provided macro CKFREE()\n+ *\n+ */\n+void *\n+CkFree(void *ptr, const char *function, const int line)\n+{\n+    if (ptr '..b'n the int value of the 2nd sortwithindex_t and the\n+ * 1st. Used for descending sort order in QSortWithIndexes()\n+ *\n+ * @see SortAndTrackIndexCmpDesc() and QSortAndTrackIndex()\n+ */\n+int\n+SortAndTrackIndexCmpDesc(const void *a, const void *b)\n+{\n+    const sortwithindex_t *a_t = (const sortwithindex_t *)a;\n+    const sortwithindex_t *b_t = (const sortwithindex_t *)b;\n+    \n+    const int ia = (const int) a_t->piValue;\n+    const int ib = (const int) b_t->piValue;\n+    return ib - ia;\n+}\n+/***   end: SortAndTrackIndexCmpDesc   ***/\n+\n+\n+\n+\n+/**\n+ * @brief Sort a given int array in ascending or descending order,\n+ * while keeping track of the element order.\n+ *\n+ * @param[out] piSortedIndices\n+ * Will contain the indices of the sorted elements. Has to be preallocated.\n+ * @param[out] piArrayToSort\n+ * Array with values to sort. Will only be overwritten if\n+ * bOverwriteArrayToSort it true.\n+ * @param[in] iArrayLen\n+ * Number of elements in piArrayToSort.\n+ * @param[in] cOrder\n+ * Sort order. \'a\' for ascending, \'d\' for descending.\n+ * @param[in] bOverwriteArrayToSort\n+ * If false do not overwrite the array to sort.\n+ *\n+ */    \n+void\n+QSortAndTrackIndex(int *piSortedIndices, int *piArrayToSort,\n+                   const int iArrayLen, const char cOrder,\n+                   const bool bOverwriteArrayToSort)\n+{\n+    int iCtr; /**< aux */\n+ \n+    sortwithindex_t *prSort;\n+\n+    \n+    assert(NULL!=piSortedIndices);\n+    assert(iArrayLen>0);\n+    assert(NULL!=piArrayToSort);\n+    assert(\'a\'==cOrder || \'d\'==cOrder);\n+\n+    prSort = (sortwithindex_t *) CKMALLOC(iArrayLen * sizeof(sortwithindex_t));\n+    \n+    for (iCtr=0; iCtr<iArrayLen; iCtr++) {\n+        prSort[iCtr].piIndex = iCtr;\n+        prSort[iCtr].piValue = piArrayToSort[iCtr];\n+#if 0\n+        LOG_DEBUG("b4 sort: prSort idx %d = val %d",\n+                  prSort[iCtr].piIndex, prSort[iCtr].piValue);\n+#endif\n+    }\n+\n+    if (\'a\'==cOrder) {\n+        qsort(prSort, iArrayLen, sizeof(sortwithindex_t), SortAndTrackIndexCmpAsc);\n+    } else if (\'d\'==cOrder) {\n+        qsort(prSort, iArrayLen, sizeof(sortwithindex_t), SortAndTrackIndexCmpDesc);\n+    } else {\n+        Log(&rLog, LOG_FATAL, "Internal error: unknown order %c", cOrder);\n+    }\n+\n+    for (iCtr=0; iCtr<iArrayLen; iCtr++) {\n+        piSortedIndices[iCtr] = prSort[iCtr].piIndex;\n+        \n+        if (bOverwriteArrayToSort) {\n+            piArrayToSort[iCtr] = prSort[iCtr].piValue;\n+        }\n+#if 0\n+        LOG_DEBUG("after sort: prSort idx %d = val %d",\n+                  prSort[iCtr].piIndex, prSort[iCtr].piValue);\n+#endif\n+    }\n+    free(prSort);\n+    \n+    return; \n+}\n+/***   end: QSortWithIndexes()   ***/\n+\n+\n+\n+\n+/**\n+ * @brief Test if file is writable. File may or may not exist.\n+ *\n+ * @param[in] pcFileName\n+ * Filename to check\n+ *\n+ * @return True if file is writable at the time of calling\n+ *\n+ */    \n+bool\n+FileIsWritable(char *pcFileName)\n+{\n+    bool bFileAlreadyExisted;\n+    FILE *prFilePointer;\n+    bool bIsWritable;\n+    \n+    if (0 != CheckIfFileExists(pcFileName)) {\n+        bFileAlreadyExisted = TRUE;\n+    } else {\n+        bFileAlreadyExisted = FALSE;\n+    }\n+\n+    if (NULL == (prFilePointer=fopen(pcFileName, "a"))) {\n+        bIsWritable = FALSE;\n+    } else {\n+        bIsWritable = TRUE;\n+        if (0 != fclose(prFilePointer)) {\n+            Log(&rLog, LOG_ERROR, "Couldn\'t close temporily created file %s. Expect trouble...");\n+        }\n+    }\n+    \n+#if 0\n+    LOG_DEBUG("%s existed?=%d writable=%d", pcFileName,\n+              (TRUE==bFileAlreadyExisted? 1 : 0),\n+              (TRUE==bIsWritable? 1:0));\n+#endif\n+    \n+    /* delete if file didn\'t exist before and was created here\n+     * temporarily\n+     */\n+    if (FALSE==bFileAlreadyExisted && TRUE==bIsWritable) {\n+        if (0 != remove(pcFileName)) {\n+            Log(&rLog, LOG_ERROR, "Removing of temporarily created file %s failed. Expect trouble...");\n+        }\n+    }\n+    return bIsWritable; \n+}\n+/***   end: FileIsWritable()   ***/\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/util.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/util.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,76 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: util.h 230 2011-04-09 15:37:50Z andreas $
+ */
+
+#include <limits.h>
+#include <string.h>
+#include <strings.h>
+#include <stdarg.h>
+#include <stdbool.h>
+
+#ifndef CLUSTALO_UTIL_H
+#define CLUSTALO_UTIL_H
+
+
+#define CKMALLOC(b) CkMalloc((b), __FUNCTION__, __LINE__)
+#define CKCALLOC(c, s) CkCalloc((c), (s), __FUNCTION__, __LINE__)
+#define CKREALLOC(p, b) CkRealloc((p), (b), __FUNCTION__, __LINE__)
+#define CKFREE(b) ((b)=CkFree((b), __FUNCTION__, __LINE__))
+
+#ifndef MAX
+#define MAX(a,b) ((a)>(b)?(a):(b))
+#endif
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+
+/* STR_EQ: strings are equal, case sensitive */
+#define STR_EQ(a,b)         (strcmp((a),(b)) == 0)
+/*  STR_NC_EQ: strings are equal, ignoring case */
+#define STR_NC_EQ(a,b)      (strcasecmp((a),(b)) == 0)
+
+
+/* type boolean and false and true defined in stdbool.h */
+#ifndef TRUE
+#define TRUE true
+#endif
+#ifndef FALSE
+#define FALSE false
+#endif
+
+/* clashes with hhalign
+#define FAIL -1
+#define OK 0
+*/
+
+
+
+/* don't use the following directly; use macros provided above instead
+ */
+void *CkMalloc(size_t size, const char *function, const int line);
+void *CkCalloc(size_t count, size_t size, const char *function, const int line);
+void *CkRealloc(void *ptr, size_t bytes, const char *function, const int line);
+void *CkFree(void *ptr, const char *function, const int line);
+char *CkStrdup(const char *s);
+void PermutationArray(int **array, const int len);
+void RandomUniqueIntArray(int *array, const int array_len, const int max_value);
+int IntCmp(const void *a, const void *b);
+bool FileIsWritable(char *pcFileName);
+void QSortAndTrackIndex(int *piSortedIndices, int *piArrayToSort,
+                        const int uArrayLen, const char cOrder, const bool bOverwriteArrayToSort);
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/weights.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/weights.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,337 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/* Module for deriving sequence weights from a tree. Largely based on\n+ * Bob Edgar\'s Muscle (mainly clwwt.cpp; version 3.7). Ported to pure\n+ * C. Most functions where apparently based on Clustal 1.8 anyway.\n+ *\n+ * Muscle\'s code is public domain and so is this code here.\n+ *\n+ * From http://www.drive5.com/muscle/license.htm:\n+ * """\n+ * MUSCLE is public domain software\n+ *\n+ * The MUSCLE software, including object and source code and\n+ * documentation, is hereby donated to the public domain.\n+ *\n+ * Disclaimer of warranty\n+ * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,\n+ * EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION IMPLIED\n+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * """\n+ *\n+ */\n+ \n+/*\n+ * RCS $Id: weights.c 231 2011-04-09 17:13:06Z andreas $\n+ */\n+\n+/*\n+ * Documentation from Muscle\n+ *\n+ * """\n+ *  Compute weights by the CLUSTALW method.\n+ *  Thompson, Higgins and Gibson (1994), CABIOS (10) 19-29;\n+ *  see also CLUSTALW paper.\n+ *   \n+ *  Weights are computed from the edge lengths of a rooted tree.\n+ *   \n+ *  Define the strength of an edge to be its length divided by the number\n+ *  of leaves under that edge. The weight of a sequence is then the sum\n+ *  of edge strengths on the path from the root to the leaf.\n+ *   \n+ *  Example.\n+ *   \n+ *          0.2\n+ *         -----A     0.1\n+ *           -x         ------- B     0.7\n+ *             --------y           ----------- C\n+ *              0.3     ----------z\n+ *                      0.4    -------------- D\n+ *                                   0.8\n+ *   \n+ *  Edge    Length  Leaves  Strength\n+ *  ----    -----   ------  --------\n+ *  xy              0.3             3               0.1\n+ *  xA              0.2             1               0.2\n+ *  yz              0.4             2               0.2\n+ *  yB              0.1             1               0.1\n+ *  zC              0.7             1               0.7\n+ *  zD              0.8             1               0.8\n+ *   \n+ *  Leaf    Path            Strengths                       Weight\n+ *  ----    ----            ---------                       ------\n+ *  A               xA                      0.2                                     0.2\n+ *  B               xy-yB           0.1 + 0.1                       0.2\n+ *  C               xy-yz-zC        0.1 + 0.2 + 0.7         1.0\n+ *  D               xy-yz-zD        0.1 + 0.2 + 0.8         1.1\n+ * """\n+ *\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <assert.h>\n+#include "log.h"\n+#include "muscle_tree.h"\n+#include "weights.h"\n+\n+\n+/* \n+   #undef DEBUG \n+*/\n+\n+\n+/**\n+ * @brief FIXME\n+ *\n+ * @param[out] puLeavesUnderNode\n+ * FIXME\n+ * @param[in] prTree\n+ * FIXME\n+ * @param[in] uNodeIndex\n+ * FIXME\n+ *\n+ * @return The return value\n+ *\n+ * @note see Muscle3.7:clwwt.cpp\n+ * \n+ */    \n+uint\n+CountLeaves(uint *puLeavesUnderNode, tree_t *prTree, uint uNodeIndex)\n+{\n+    uint uLeft;\n+    uint uRight;\n+    uint uRightCount;\n+    uint uLeftCount;\n+    uint uCount;\n+\n+\n+    if (IsLeaf(uNodeIndex, prTree)) {\n+\t\tpuLeavesUnderNode[uNodeIndex] = 1;\n+\t\treturn 1;\n+    }\n+\n+    uLeft = GetLeft(uNodeIndex, prTree);\n+    uRight = GetRight(uNodeIndex, prTree);\n+    uRightCount = CountLeaves(puLeavesUnderNode, prTree, uRight);\n+    uLeftCount = CountLeaves(puLeavesUnderNode, prTree, uLeft);\n+    uCount = uRightCount + uLeftCount;\n+\n+    puLeavesUnderNode[uNodeIndex] = uCount;\n+        \n+    return uCount;    \n+}\n+/***   end: CountLeaves()   ***/\n+\n+\n+\n+\n+/**\n+ * @brief Normalise values in a double array to values between 0 and 1.\n+ *\n+ * @param[out] p\n+ * double array with n elements\n+ * @param[in] n\n+ * number of elements in p\n+ *\n+ * @note From Muscle3.7: intmath.cpp:Normalize()\n+ * \n+ */    \n+void\n+Normalise(double *p, uint n) {\n+    unsigned i;\n+    double dSum = 0.0;\n+    for (i = 0; i < n; ++i) {\n+        '..b'1 == uLeafCount) {\n+\t\t(*pdWeights_p)[0] = 1.0;\n+\t\treturn 0;\n+    } else if (2 == uLeafCount) {\n+\t\t(*pdWeights_p)[0] = 0.5;\n+\t\t(*pdWeights_p)[1] = 0.5;\n+\t\treturn 0;\n+    }\n+    \n+    if (!IsRooted(prTree)) {\n+        Log(&rLog, LOG_ERROR, "Tree must be rooted to get weights");\n+        CKFREE(pdWeights_p);\n+        return -1;\n+    }\n+\n+\n+#ifdef TRACE\n+        Log(&rLog, LOG_FORCED_DEBUG, "%s", "Weights follow");\n+        fprintf(stderr, "Node  Leaves    Length  Strength\\n");\n+        fprintf(stderr, "----  ------  --------  --------\\n");\n+        /*    1234  123456  12345678  12345678 */\n+#endif\n+    \n+    uRootNodeIndex = GetRootNodeIndex(prTree);\n+    puLeavesUnderNode = (uint *) CKCALLOC(uNodeCount, sizeof(uint));\n+\n+    uLeavesUnderRoot = CountLeaves(puLeavesUnderNode, prTree, uRootNodeIndex);\n+\tif (uLeavesUnderRoot != uLeafCount) {\n+\t\tLog(&rLog, LOG_FATAL, "Internal error, root count %u %u",\n+              uLeavesUnderRoot, uLeafCount);\n+    }\n+#if 0\n+    for (uNodeIndex=0; uNodeIndex<uNodeCount; uNodeIndex++) {\n+        Log(&rLog, LOG_FORCED_DEBUG, "LeavesUnderNode[%d]=%d", uNodeIndex, puLeavesUnderNode[uNodeIndex]);\n+    }\n+#endif\n+\n+    pdStrengths = (double *) CKMALLOC(uNodeCount * sizeof(double));\n+                                      \n+    for (uNodeIndex=0; uNodeIndex < uNodeCount; uNodeIndex++) {\n+        uint uParent;\n+        double dLength;\n+        uint uLeaves;\n+        double dStrength;\n+        \n+        if (IsRoot(uNodeIndex, prTree)) {\n+            pdStrengths[uNodeIndex] = 0.0;\n+            continue;\n+        }\n+        \n+        uParent = GetParent(uNodeIndex, prTree);\n+        dLength = GetEdgeLength(uNodeIndex, uParent, prTree);\n+        uLeaves = puLeavesUnderNode[uNodeIndex];\n+        dStrength = dLength / (double) uLeaves;\n+        pdStrengths[uNodeIndex] = dStrength;\n+        \n+#ifdef TRACE\n+        fprintf(stderr, "%4u  %6u  %8g  %8g\\n", uNodeIndex, uLeaves, dLength, dStrength);\n+#endif        \n+    }\n+\n+\n+\n+\n+    \n+    if (bLogWeights){\n+        fprintf(stderr, "\\n");\n+        fprintf(stderr, "                 Seq  Path..Weight\\n");\n+        fprintf(stderr, "--------------------  ------------\\n");\n+    }\n+\tfor (i=0; i<uLeafCount; i++) {\n+\t\tdouble dWeight = 0.0;\n+\t\tunsigned uLeafNodeIndex;\n+\t\tunsigned uNode;\n+\n+        uLeafNodeIndex = LeafIndexToNodeIndex(i, prTree);\n+        uNode = uLeafNodeIndex;\n+\n+        if (bLogWeights){\n+            fprintf(stderr, "%20.20s  %4u ", GetLeafName(uLeafNodeIndex, prTree), uLeafNodeIndex);\n+        }\n+\t\tif (! IsLeaf(uLeafNodeIndex, prTree)) {\n+\t\t\tLog(&rLog, LOG_FATAL, \n+                "Internal error: non-leaf-node %d", uLeafNodeIndex);\n+        }\n+            \n+        /*LOG_DEBUG("dWeight = %f", dWeight);*/\n+\t\twhile (! IsRoot(uNode, prTree)) {\n+\t\t\tdWeight += pdStrengths[uNode];\n+            /*LOG_DEBUG("dWeight +== %f", pdStrengths[uNode]);*/\n+\t\t\tuNode = GetParent(uNode, prTree);\n+            if (bLogWeights){\n+                fprintf(stderr, "->%u(%g)", uNode, pdStrengths[uNode]);\n+            }\n+        }\n+        /* AW: no idea what this is, but it\'s done like this in Muscle */\n+\t\tif (dWeight < 0.0001) {\n+#ifdef TRACE\n+\t\t\tfprintf(stderr, "zero->one");\n+#endif\n+\t\t\tdWeight = 1.0;\n+        }\n+\n+        /* @note: the only difference to the muscle code is here: we\n+         * use the input index for storing weights, instead of the\n+         * tree leaf index\n+         */\n+        (*pdWeights_p)[GetLeafId(uLeafNodeIndex, prTree)] = dWeight;\n+        if (bLogWeights){\n+            fprintf(stderr, " = %g\\n", dWeight);\n+        }\n+    }\n+\n+#if 0\n+    for (i=0; i<uLeafCount; i++) {\n+        Log(&rLog, LOG_FORCED_DEBUG, "Weights before normalisation: pdWeights_p[%d]=%f", i, (*pdWeights_p)[i]);\n+        /*LOG_DEBUG("Should be %d", GetLeafId(LeafIndexToNodeIndex(i, prTree), prTree));*/\n+    }\n+#endif\n+\n+\tNormalise((*pdWeights_p), uLeafCount);\n+    \n+\n+    CKFREE(puLeavesUnderNode);\n+    CKFREE(pdStrengths);\n+    \n+    return 0;\n+}\n+/***   end: CalcWeights()   ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustal/weights.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustal/weights.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,26 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: weights.h 193 2011-02-07 15:45:21Z andreas $
+ */
+
+#ifndef CLUSTALO_WEIGHTS_H
+#define CLUSTALO_WEIGHTS_H
+
+extern int
+CalcClustalWeights(double **pdWeights_p, tree_t *prTree);
+
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/clustalo-api-test.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/clustalo-api-test.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,102 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: clustalo-api-test.c 213 2011-03-11 16:10:15Z andreas $
+ */
+
+
+#include <stdio.h>
+
+/* Include clustal-omega's header. That's all you need 
+ *
+ * If you developing in C++, use the following instead:
+ * extern "C" {
+ * #include "clustal-omega.h"
+ * }
+ */
+#include "clustal-omega.h"
+
+
+int
+main(int argc, char **argv)
+{
+    /* the multiple sequence structure */
+    mseq_t *prMSeq = NULL;
+    /* for openmp: number of threads to use */
+    int iThreads = 1;
+    /* alignment options to use */
+    opts_t rAlnOpts;
+    /* an input file */
+    char *pcSeqInfile;
+    int iAux;
+
+    /* use LOGLEVEL_QUIET to make Clustal shut up */
+    iVerbosityLevel = LOGLEVEL_INFO;
+
+    SetDefaultAlnOpts(&rAlnOpts);
+
+    InitClustalOmega(iThreads);
+
+    /* Get sequence input file name from command line
+     */
+    if (argc!=2) {
+        Fatal("Need sequence file as argument");
+    }
+    pcSeqInfile = argv[1];
+
+    /* Read sequence file
+     */
+    NewMSeq(&prMSeq);
+    if (ReadSequences(prMSeq, pcSeqInfile,
+                      SEQTYPE_UNKNOWN,
+                      INT_MAX, INT_MAX)) {
+        Fatal("Reading sequence file '%s' failed", pcSeqInfile);
+    }
+
+    /* Dump some info about the sequences
+     */
+    for (iAux=0; iAux<prMSeq->nseqs; iAux++) {
+        Info(LOGLEVEL_INFO, 
+             "Sequence no %d has the following name: %s",
+             iAux, prMSeq->sqinfo[iAux].name);
+        Info(LOGLEVEL_INFO, 
+             "Sequence no %d has the following residues: %s",
+             iAux, prMSeq->seq[iAux]);
+        /* more info can be found in prMSeq->sqinfo[iAux] */
+    }
+
+
+    /* Align the sequences without a profile (NULL)
+     */
+    if (Align(prMSeq, NULL, & rAlnOpts)) {
+        Fatal("A fatal error happended during the alignment process");
+    }
+
+
+    /* Output of final alignment to stdout (NULL) as aligned fasta/a2m
+     */
+    if (WriteAlignment(prMSeq, NULL, MSAFILE_A2M)) {
+        Fatal("Could not save alignment");
+    } 
+
+    FreeMSeq(&prMSeq);
+
+    Info(LOGLEVEL_INFO, "Successfull program exit");
+
+    return EXIT_SUCCESS;
+}
+/***   end of main()   ***/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/config.h.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/config.h.in Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,247 @@
+/* src/config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Let all files know they are being used inside Clustal Omega */
+#undef CLUSTALO
+
+/* This is a CYGWIN system */
+#undef CYGWIN
+
+/* This is a Darwin system */
+#undef DARWIN
+
+/* Define to 1 if you have the <argtable2.h> header file. */
+#undef HAVE_ARGTABLE2_H
+
+/* Define to 1 if you have the <assert.h> header file. */
+#undef HAVE_ASSERT_H
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the `fseek64' function. */
+#undef HAVE_FSEEK64
+
+/* Define to 1 if you have the `fseeko' function. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `fseeko64' function. */
+#undef HAVE_FSEEKO64
+
+/* Define to 1 if you have the `ftell64' function. */
+#undef HAVE_FTELL64
+
+/* Define to 1 if you have the `ftello' function. */
+#undef HAVE_FTELLO
+
+/* Define to 1 if you have the `ftello64' function. */
+#undef HAVE_FTELLO64
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `argtable2' library (-largtable2). */
+#undef HAVE_LIBARGTABLE2
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Has log2() */
+#undef HAVE_LOG2
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `ntohl' function. */
+#undef HAVE_NTOHL
+
+/* Define to 1 if you have the `ntohs' function. */
+#undef HAVE_NTOHS
+
+/* Define to 1 if you have the `ntonl' function. */
+#undef HAVE_NTONL
+
+/* Define to 1 if you have the `ntons' function. */
+#undef HAVE_NTONS
+
+/* Defined if OpenMP should and can be used */
+#undef HAVE_OPENMP
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `stroul' function. */
+#undef HAVE_STROUL
+
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* This is a LINUX system */
+#undef LINUX
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* This is a MinGW system */
+#undef MINGW
+
+/* No-debug Mode */
+#undef NDEBUG
+
+/* Some strange OS */
+#undef OTHEROS
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* The package code name */
+#undef PACKAGE_CODENAME
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `fpos_t', as computed by sizeof. */
+#undef SIZEOF_FPOS_T
+
+/* The size of `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* The size of `unsigned long long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG_LONG
+
+/* The size of `unsigned short', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_SHORT
+
+/* This is a Solaris system */
+#undef SOLARIS
+
+/* This is a BSD system */
+#undef SOMEBSD
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Define if using the dmalloc debugging malloc package */
+#undef WITH_DMALLOC
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,26 @@
+# Some useful automake documentation:
+# http://www.openismus.com/documents/linux/automake/automake.shtml
+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html
+
+#SUBDIRS = 
+#EXTRA_DIST =
+# LDADD = foofiles/libfoo.a
+
+AM_CXXFLAGS = -fno-strict-aliasing -DCLUSTALO -DCLUSTALO_NOFILE -DDEFAULT_FILTER=90 @OPENMP_CXXFLAGS@ @AM_CXXFLAGS@ 
+
+noinst_LTLIBRARIES = libhhalign.la
+
+libhhalign_la_SOURCES =  hhalign.cpp hhalign.h \
+ hash-C.h hash.h hhdecl-C.h hhfunc-C.h hhfunc.h \
+ hhmatrices-C.h hhutil-C.h \
+ hhalignment-C.h hhalignment.h \
+ hhfullalignment-C.h hhfullalignment.h \
+ hhhalfalignment-C.h hhhalfalignment.h \
+ hhhit-C.h hhhit.h hhhitlist-C.h hhhitlist.h \
+ hhhmm-C.h hhhmm.h \
+ util-C.h list-C.h list.h \
+ general.h
+
+library_includedir=$(includedir)/clustalo/hhalign
+
+library_include_HEADERS = general.h hhfunc.h
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,556 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+# Some useful automake documentation:\n+# http://www.openismus.com/documents/linux/automake/automake.shtml\n+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html\n+\n+#SUBDIRS = \n+#EXTRA_DIST =\n+# LDADD = foofiles/libfoo.a\n+\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+subdir = src/hhalign\n+DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \\\n+\t$(srcdir)/Makefile.in\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = $(top_builddir)/src/config.h\n+CONFIG_CLEAN_FILES =\n+CONFIG_CLEAN_VPATH_FILES =\n+LTLIBRARIES = $(noinst_LTLIBRARIES)\n+libhhalign_la_LIBADD =\n+am_libhhalign_la_OBJECTS = hhalign.lo\n+libhhalign_la_OBJECTS = $(am_libhhalign_la_OBJECTS)\n+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src\n+depcomp = $(SHELL) $(top_srcdir)/depcomp\n+am__depfiles_maybe = depfiles\n+am__mv = mv -f\n+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)\n+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)\n+CXXLD = $(CXX)\n+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\\n+\t$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+CCLD = $(CC)\n+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+SOURCES = $(libhhalign_la_SOURCES)\n+DIST_SOURCES = $(libhhalign_la_SOURCES)\n+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed \'s|.|.|g\'`;\n+am__vpath_adj = case $$p in \\\n+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \\\n+    *) f=$$p;; \\\n+  esac;\n+am__strip_dir = f=`echo $$p | sed -e \'s|^.*/||\'`;\n+am__install_max = 40\n+am__nobase_strip_setup = \\\n+  srcdirstrip=`echo "$(srcdir)" | sed \'s/[].[^$$\\\\*|]/\\\\\\\\&/g\'`\n+am__nobase_strip = \\\n+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"\n+am__nobase_list = $(am__nobase_strip_setup); \\\n+  for p in $$lis'..b'lddir)/|;t"`; \\\n+\tcase $$dist_files in \\\n+\t  */*) $(MKDIR_P) `echo "$$dist_files" | \\\n+\t\t\t   sed \'/\\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,\' | \\\n+\t\t\t   sort -u` ;; \\\n+\tesac; \\\n+\tfor file in $$dist_files; do \\\n+\t  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \\\n+\t  if test -d $$d/$$file; then \\\n+\t    dir=`echo "/$$file" | sed -e \'s,/[^/]*$$,,\'`; \\\n+\t    if test -d "$(distdir)/$$file"; then \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \\\n+\t      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \\\n+\t  else \\\n+\t    test -f "$(distdir)/$$file" \\\n+\t    || cp -p $$d/$$file "$(distdir)/$$file" \\\n+\t    || exit 1; \\\n+\t  fi; \\\n+\tdone\n+check-am: all-am\n+check: check-am\n+all-am: Makefile $(LTLIBRARIES) $(HEADERS)\n+installdirs:\n+\tfor dir in "$(DESTDIR)$(library_includedir)"; do \\\n+\t  test -z "$$dir" || $(MKDIR_P) "$$dir"; \\\n+\tdone\n+install: install-am\n+install-exec: install-exec-am\n+install-data: install-data-am\n+uninstall: uninstall-am\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-am\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-am\n+\n+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n+\tmostlyclean-am\n+\n+distclean: distclean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-compile distclean-generic \\\n+\tdistclean-tags\n+\n+dvi: dvi-am\n+\n+dvi-am:\n+\n+html: html-am\n+\n+html-am:\n+\n+info: info-am\n+\n+info-am:\n+\n+install-data-am: install-library_includeHEADERS\n+\n+install-dvi: install-dvi-am\n+\n+install-dvi-am:\n+\n+install-exec-am:\n+\n+install-html: install-html-am\n+\n+install-html-am:\n+\n+install-info: install-info-am\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-am\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-am\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-am\n+\n+mostlyclean-am: mostlyclean-compile mostlyclean-generic \\\n+\tmostlyclean-libtool\n+\n+pdf: pdf-am\n+\n+pdf-am:\n+\n+ps: ps-am\n+\n+ps-am:\n+\n+uninstall-am: uninstall-library_includeHEADERS\n+\n+.MAKE: install-am install-strip\n+\n+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \\\n+\tclean-libtool clean-noinstLTLIBRARIES ctags distclean \\\n+\tdistclean-compile distclean-generic distclean-libtool \\\n+\tdistclean-tags distdir dvi dvi-am html html-am info info-am \\\n+\tinstall install-am install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am \\\n+\tinstall-library_includeHEADERS install-man install-pdf \\\n+\tinstall-pdf-am install-ps install-ps-am install-strip \\\n+\tinstallcheck installcheck-am installdirs maintainer-clean \\\n+\tmaintainer-clean-generic mostlyclean mostlyclean-compile \\\n+\tmostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n+\ttags uninstall uninstall-am uninstall-library_includeHEADERS\n+\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/general.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/general.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,99 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: general.h 241 2011-05-04 14:37:17Z fabian $
+ */
+
+
+#ifndef GENERAL_H
+#define GENERAL_H
+
+
+#include "../clustal/log.h"
+
+/*
+***** Omega definitions************************************
+ FS, 2010-02-19
+*/
+enum {NO = 0, YES};
+enum {BASE10 = 10};
+enum {AMINOACIDS = 20, STATE_TRANSITIONS = 7};
+enum {MAXWORD = 100, MAXLEN = 10000};
+enum {OVER_ALLOCATE = 2};
+enum {FAILURE = -1, OK};
+enum {F_OFFSET = 1};
+enum {INTERN_ALN_2_HMM = 0, READ_ALN_2_HMM, READ_HMM_2_HMM, INTERN_HMM_2_HMM};
+#define UNITY 1.00
+
+/*#define MIN(a,b) ((a)<(b)?(a):(b))*/
+
+
+/* parameters passed from Clustal-Omega to hhalign; FS, r240 -> */
+typedef struct {
+
+    int iMacRamMB; /* dedicated amount of RAM for Maximum Accuracy (in MB) */
+
+} hhalign_para;
+
+typedef struct {
+  /***public***/
+  int n_display;
+  char **sname;
+  char **seq;
+  int ncons;
+  int nfirst;
+  int nss_dssp;
+  int nsa_dssp;
+  int nss_pred;
+  int nss_conf;
+  int L;
+  int N_in;
+  int N_filtered;
+  float *Neff_M;
+  float *Neff_I;
+  float *Neff_D;
+  float Neff_HMM;
+  char *longname;
+  char name[511];
+  char file[511];
+  char fam[511];
+  char sfam[511];
+  char fold[511];
+  char cl[511];
+  float lamda;
+  float mu;
+  /***private***/
+  float **f;
+  float **g;
+  float **p;
+  float **tr;
+  float **linTr;
+  char trans_lin;
+  char *ss_dssp;
+  char *sa_dssp;
+  char *ss_pred;
+  char *ss_conf;
+  char *Xcons;
+  float pav[20];
+  float pnul[20];
+  int *l;
+
+} hmm_light;
+
+
+#endif
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hash-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hash-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,594 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hash-C.h 143 2010-10-14 13:11:14Z andreas $\n+ */\n+\n+// hash.C\n+// Class for Hash data structure \n+// * works in the same way as a hash in Perl\n+// * keys are strings of type char*\n+// * data elements are of type Typ \n+// * objects have to be declared with maximal size, e.g. Hash hash1(10000) (num_slots should not be a power of 2)\n+// * works also if maximal size is exceeded, but gets slower by a factor ~num_keys/num_slots \n+\n+/*\n+ * RCS $Id: hash-C.h 143 2010-10-14 13:11:14Z andreas $\n+ */\n+\n+#ifndef HASH\n+#define HASH\n+\n+#ifndef MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <cstdio>     // printf\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <ctype.h>    // islower, isdigit etc\n+#include <time.h>     // clock\n+#include <errno.h>    // perror()\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+#endif\n+\n+#ifndef JLIST\n+#define JLIST\n+#include "list.h"       // List<Typ>\n+#include "list-C.h"    ////////////////////////////////// DEBUG\n+#endif\n+\n+#include "hash.h"\n+\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+////////////////////// Methods of class Hash /////////////////////////////////\n+//////////////////////////////////////////////////////////////////////////////\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//                                Private Methods\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//                        Constructor and Destructor of Hash\n+//////////////////////////////////////////////////////////////////////////////\n+// Constructor of class Hash\n+//////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+Hash<Typ>::Hash()\n+{\n+  num_keys=0; max_len=0; prev=curr=num_slots = 0; slot=NULL;\n+}\n+\n+template<class Typ> \n+Hash<Typ>::Hash(int nslots)\n+{\n+  num_keys=0; max_len=0; prev=curr=num_slots = nslots;\n+  slot = new Slot<Typ>*[num_slots];             //Create array of num_slots slots\n+  for (int i=0; i<num_slots; i++) slot[i]=NULL; //set pointers to NULL\n+  fail = static_cast<Typ>(0);\n+}\n+\n+template<class Typ> \n+Hash<Typ>::Hash(int nslots, Typ f)\n+{\n+  num_keys=0; max_len=0; prev=curr=num_slots = nslots;\n+  slot = new Slot<Typ>*[num_slots];             //Create array of num_slots slots\n+  for (int i=0; i<num_slots; i++) slot[i]=NULL; //set pointers to NULL\n+  fail=f;\n+}\n+\n+\n+////////////////////////////////////////////////////////////////////////////////////////////\n+// Destructor of class Hash\n+////////////////////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+Hash<Typ>::~Hash()\n+{\n+  RemoveAll();\n+  delete[] slot; slot = NULL;\n+}\n+\n+\n+////////////////////////////////////////////////////////////////////////////////////////////\n+// Hash function\n+////////////////////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+inline unsigned int Hash<Typ>::HashValue(char* key)  //returns the hash value for key \n+    {\n+      // Calculate a hash value by the division method: \n+      // Transform '..b'/////////////////////////////////////////////////////////\n+//            Methods that return usefull information about the data stored in Hash:\n+\n+\n+////////////////////////////////////////////////////////////////////////////////////////////\n+// Returns 1 if the hash contains key, 0 otherwise \n+////////////////////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+int Hash<Typ>::Contains(char* key)\n+{\n+  Slot<Typ>* pslot;\n+  int i = HashValue(key);\n+\n+  pslot = slot[i];\n+  if (!pslot) return 0;\n+  pslot->Reset();\n+  do{\n+    if(!strcmp(pslot->ReadNext().key,key)) return 1;\n+  } while(!pslot->End());\n+  return 0;\n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////////////\n+//print out list of keys and data\n+/////////////////////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+void Hash<Typ>::Print()\n+{\n+  char key[MaxLen()+1];\n+\n+  cout<<"\\nPrint hash:\\n";\n+  Reset();\n+  while(!End()) \n+    cout<<key<<"->"<<ReadNext(key)<<"\\n";\n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////////////\n+//Print out hash with internal representation as array \n+/////////////////////////////////////////////////////////////////////////////////////////////\n+template<class Typ> \n+void Hash<Typ>::DebugPrint()\n+{\n+  Pair<Typ>* pairp;\n+  Slot<Typ>* pslot;\n+\n+  cout<<"\\n";\n+  cout<<"Debug-print hash:";\n+  for(int i=0; i<num_slots; i++)\n+    {\n+      pslot = slot[i];\n+      if (pslot) \n+\t{\n+\t  cout<<"\\nhash value "<<i;\n+\t  pslot->Reset();\n+\t  while(!pslot->End())\n+\t    {\n+\t      pairp = pslot->ReadNextAddress(); \n+\t      cout<<"  "<<pairp->key<<"->"<<pairp->data;\n+\t    }\n+\t}\n+    }\n+  cout<<"\\n\\n";\n+  return;\n+}\n+\n+\n+\n+#endif /* HASH */\n+\n+\n+\n+////////////////////////////////////////////////////////////////////////////////\n+// Main program: test class Hash\n+////////////////////////////////////////////////////////////////////////////////\n+//  int main()\n+//  {\n+//    Hash<int> ihash(5);\n+//    char* key=new char[128];\n+//    int data;\n+\n+//    ihash.Fail(1000);\n+//    ihash.Add("So many monsters",36);\n+//    ihash.Add("So many chickens",25);\n+\n+// //    cerr<<"Address of ihash(\\"So many monsters\\") is "<<ihash("So many monsters")<<"\\n";\n+// //    cerr<<"Address of ihash(\\"So many monsters\\") is "<<ihash("So many monsters")<<"\\n";\n+// //    *ihash("So many monsters")=2;\n+// //    (*ihash("So many monsters"))++;\n+// //    (*ihash("So many monsters"))++;\n+//    cout<<"Size of hash="<<ihash.Size()<<"\\n";\n+//    ihash.DebugPrint();\n+//    ihash.Print();\n+   \n+//    strcpy(key,"Some more monsters");\n+//    ihash.Add(key,3);\n+//    strcpy(key,"Even more monsters");\n+//    ihash.Add(key,7);\n+//    cout<<"Size of hash="<<ihash.Size()<<"\\n";\n+//    cout<<"Maximum key length = "<<ihash.MaxLen()<<"\\n";\n+//    ihash.Print();\n+   \n+//    cout<<"ihash.Remove(\\"Even more monsters\\") returns "<<ihash.Remove("Even more monsters")<<"\\n";\n+//    ihash.Print();\n+\n+\n+//    cout<<"ihash.Remove(\\"More monsters\\") returns "<<ihash.Remove("More monsters")<<"\\n";\n+//    ihash.Add("So many chickens",999);\n+//    ihash.Add("So many monster",1);\n+//    ihash.Print();\n+\n+//    cout<<"So many chickens:"<<ihash.Show("So many chickens")<<"\\n";\n+//    cout<<"Size of hash="<<ihash.Size()<<"\\n";\n+\n+\n+\n+//    ihash.Reset();\n+//    while (!ihash.End())\n+//      {\n+//        data = ihash.ReadNext(key);\n+//        cout<<" "<<key<<"->"<<data<<endl;\n+//        data = ihash.ReadCurrent(key);\n+//        cout<<" "<<key<<"->"<<data<<endl;\n+//      }\n+//    cout<<"Removing all keys..."<<endl;\n+//    cout<<"Size of hash="<<ihash.Size()<<"\\n";\n+//    ihash.Reset();\n+//    while (ihash.Size())\n+//      {\n+//        data = ihash.RemoveCurrent(key);\n+//        cout<<" "<<key<<"->"<<data<<"\\n";\n+//        cout<<"Size of hash="<<ihash.Size()<<"\\n";\n+//      }\n+\n+//    ihash.ReadCurrent(key);\n+\n+//    ihash.Print();\n+//    return 0;\n+//  }\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hash.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hash.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,199 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hash.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+// Class for Hash data structure 
+// * works in the same way as a hash in Perl
+// * keys are strings of type char*
+// * data elements are of type Typ 
+// * objects have to be declared with maximal size, e.g. Hash hash1(10000) (num_slots should not be a power of 2)
+// * works also if maximal size is exceeded, but gets slower by a factor ~num_keys/num_slots 
+//
+// Applications
+// * fast storage and retrieval of data by a key
+// * fast check if a string occurs in a list of strings (data field not used)
+//
+// Time complexity: (L is the length of the key string)
+// * Show(key), Add(key), Remove(key): O(L) for calculating hash value & compare keys in slot list
+// * ReadNext, ReadCurrent, RemoveCurrent: O(L) for copying key into returned string
+// * Contains: O(L) for calculating hash value
+// * Size, MaxLen, Reset: O(1)
+// * RemoveAll(), Hash() and ~Hash(): O(num_slots)
+//
+// Memory complexity: ~3*num_keys*(datasize+12bytes) + num_slots*4bytes + total added length of keys (including \0)
+//
+// Implementation:
+// Hash is an array of pointers to lists of size num_slots. The lists, called slots, contain key/data pairs. 
+// When a key/data pair is added (e.g. with Add()) the array index i for the key (0<=i<num_slots) 
+// is calculated with the HashValue() function. 
+// When data is to be retrieved for key (e.g. with Show()) the hash value for key is calculated and
+// the corresponding list (=slot) is searched for the occurence of the key. 
+// Array elements of hash values that have no keys associated yet contain the null pointer 
+// for faster rejection of undefined keys.
+// 
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// Declaration of Pair, consisting of a key string and a data element of type Typ 
+////////////////////////////////////////////////////////////////////////////////////////////
+
+template<class Typ> 
+class Pair
+{
+public:
+  char* key;             //hash key
+  Typ data;              //data for key
+  Pair() {}
+  Pair(char* k, Typ& d) {key = new char[strlen(k)+1]; strcpy(key,k); data=d;}
+  Pair(int& l, char* k, Typ& d) {key = new char[l+1]; strcpy(key,k); data=d;}
+};
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// Declaration of Slot, a list of key/data pairs
+////////////////////////////////////////////////////////////////////////////////////////////

+template<class Typ>
+class Slot : public List< Pair<Typ> >
+{
+public:
+  //Destructor of Slot deletes whole list TOGETHER WITH THE KEY STRINGS
+  ~Slot() {this->Reset(); while (!this->End()) delete[] this->Pop().key; }
+  
+  // Push key/data pair onto slot list and return address of data element
+  // Attention: l must be at least length of key
+  inline Typ* Push(int& l, char* key, Typ& data)
+  {
+    Pair<Typ> pair(l,key,data);  //create a pair with key/data
+    return &(List<Pair<Typ> >::Push(pair)->data);
+  }
+};
+

+////////////////////////////////////////////////////////////////////////////////////////////
+// Declaration of Hash, an array of slots, i.e. pointers to lists of key/data 
+////////////////////////////////////////////////////////////////////////////////////////////
+
+template<class Typ> 
+class Hash  
+{
+private:
+  int num_slots;         //number of slots in slot[]. num_slots is set with the constructor
+  int curr;              //index of current slot
+  int prev;              //index of slot from previous ReadNext() 
+  int num_keys;          //total number of keys in hash
+  int max_len;           //length of longest key in hash
+  int key_len;           //length of key in argument
+  Typ fail;
+  
+  Slot<Typ>** slot;      //each slot[i] (i<num_slots) points to a list of key/data pairs for this slot
+
+  inline unsigned int HashValue(char* key);  //returns the hash value for key 
+
+public:
+  Hash();
+  Hash(int nslots);
+  Hash(int nslots, Typ n);
+  ~Hash();
+
+  // Set Fail element to be returned when the current key or supplied key are not defined
+  inline void Null(Typ f) {fail=f;}
+  inline void Fail(Typ f) {fail=f;}
+
+  // Set 'fail' element to be returned when the current key or supplied key are not defined (default: 0)
+  void New(int nslots, Typ n=static_cast<Typ>(0)); 
+
+  // Update maximum key length and caculate key_len;
+  inline void KeyLen() {if(key_len>max_len) max_len=key_len; return;}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+//                 Methods that work with a key supplied as an argument
+
+  // Return data element for key. Returns 'fail' if key does not exist
+  Typ Show(char* key);
+  inline Typ operator[](char* key) {return Show(key);}
+
+  // Add/replace key/data pair to hash and return address of data element for key
+  Typ* Add(char* key, Typ data);
+
+  // Add key to hash and return address of data element. If key exists leave data element unchanged, else set it to 'fail'.
+  Typ* Add(char* key);
+  inline Typ* operator()(char* key) {return Add(key);} 
+
+  // Remove key from hash and return data element for key ('fail' if key does not exist)
+  Typ Remove(char* key);
+
+  // Remove all keys from hash
+  void RemoveAll();
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+//                  Methods that work with an internal "current key":
+// It is set to the first key by Reset() and moves to the next key with ReadNext or RemoveCurrent
+// Note:the methods above (e.g. Store, Show, [], Add, (), etc. DO NOT CHANGE the current key
+
+  // Return data of next key. Return 'fail' data and empty key if at end  
+  Typ ReadNext();
+
+  // Write next key into variable key and return data. Return 'fail' data and empty key if at end  
+  // Attention: 'key' must have memory of at least char[MaxLen()+1] allocated!
+  Typ ReadNext(char* key);
+
+  // Return data of current key 
+  Typ ReadCurrent();
+
+  // Write key last read into variable key and return data
+  // Attention: 'key' must have memory of at least char[MaxLen()+1] allocated!
+  Typ ReadCurrent(char* key);
+
+  // Remove current key, return data and advance to next key 
+  Typ RemoveCurrent();
+
+  // Remove current key, return data, copy current key into key, and advance to next key 
+  // (After Reset() remove first element)
+  // Attention: 'key' must have memory of at least char[MaxLen()+1] allocated!
+  Typ RemoveCurrent(char* key);
+
+  // Reset readout of keys to beginning of hash
+  void Reset(); 
+
+  // Returns 1 if the current key has arrived at the end, 0 otherwise
+  int End() {return (curr>=num_slots);}
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+//            Methods that return usefull information about the data stored in Hash:
+
+  // Returns 1 if the hash contains key, 0 otherwise 
+  int Contains(char* key);
+
+  // Return number of slots
+  int Size()  {return num_keys;}  
+
+  // Return length of longest key INCLUDING DELETED KEYS (excluding \0)
+  int MaxLen()  {return max_len;}  
+
+  //print out list of keys and data
+  void Print();
+
+  //Print out hash with internal representation as array 
+  void DebugPrint();
+};
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.cpp Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1345 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhalign.cpp 241 2011-05-04 14:37:17Z fabian $\n+ */\n+\n+/* hhalign.C: \n+ * Align a multiple alignment to an alignment or HMM \n+ * Print out aligned input sequences in a3m format\n+ * Compile:              g++ hhalign.C -o hhalign -I/usr/include/ -L/usr/lib -lpng -lz -O3 -fno-strict-aliasing \n+ * Compile with efence:  g++ hhalign.C -o hhalign -I/usr/include/ -lefence -L/usr/lib -lpng -lz -O -g  \n+ * \n+ * Error codes: 0: ok  1: file format error  2: file access error  \n+ *              3: memory error  4: internal numeric error  \n+ *              5: command line error\n+ */\n+#undef PNG           /* include options for making png files? \n+\t\t\t(will need the png library) */\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <string.h>     // strcmp, strstr\n+#include <stdio.h>    // printf\n+#include <stdlib.h>   // exit\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+\n+int iAux_GLOBAL;\n+\n+#include "general.h"\n+#include "util-C.h"     /* imax, fmax, iround, iceil, ifloor, strint, strscn, \n+\t\t\t strcut, substr, uprstr, uprchr, Basename etc. */\n+#include "list-C.h"     // list data structure\n+#include "hash-C.h"     // hash data structure\n+\n+#include "hhdecl-C.h"      // Constants, global variables, struct Parameters\n+#include "hhutil-C.h"      /* MatchChr, InsertChr, aa2i, i2aa, log2, \n+\t\t\t    fast_log2, WriteToScreen, */\n+#include "hhmatrices-C.h"  // BLOSUM50, GONNET, HSDM\n+#include "hhhmm.h"       // class HMM\n+#include "hhhit.h"       // class Hit\n+#include "hhalignment.h" // class Alignment\n+#include "hhhalfalignment.h" // class HalfAlignment\n+#include "hhfullalignment.h" // class FullAlignment\n+#include "hhhitlist.h"   // class Hit\n+#include "hhhmm-C.h"       // class HMM\n+#include "hhalignment-C.h" // class Alignment\n+#include "hhhit-C.h"       // class Hit\n+#include "hhhalfalignment-C.h" // class HalfAlignment\n+#include "hhfullalignment-C.h" // class FullAlignment\n+#include "hhhitlist-C.h"   // class HitList \n+#include "hhfunc-C.h"      // some functions common to hh programs\n+\n+#ifdef PNG\n+#include "pngwriter.h"   //PNGWriter (http://pngwriter.sourceforge.net/)\n+#include "pngwriter.cc"  //PNGWriter (http://pngwriter.sourceforge.net/)\n+#endif\t    \n+\n+////////////////////////////////////////////////////////////////////////\n+// Global variables \n+////////////////////////////////////////////////////////////////////////\n+HMM *q;                 // Create query HMM with maximum of MAXRES match states\n+HMM *t;                 /* Create template HMM with maximum of MAXRES \n+\t\t\t  match states  */\n+Alignment *qali;        /* (query alignment might be needed outside of hhfunc.C \n+\t\t\t  for -a option) */\n+Hit hit;               // Ceate new hit object pointed at by hit\n+HitList hitlist;       /* list of hits with one Hit object for each \n+\t\t\t  pairwise comparison done */\n+char aliindices[256];  /* hash containing indices of all alignments \n+\t\t\t  which to show in dot plot */\n+char* dmapfile=NULL;   /* where to write the coordinates for the HTML map file \n+\t\t\t  (to click the '..b'%s...\\n",par.alnfile);\n+\t  if (v>=2 && *par.psifile) printf("Merging template to query alignment and appending template alignment in PSI format to %s...\\n",par.psifile);\n+\t}\n+\n+      // Read query alignment into Qali\n+      Alignment Qali;  // output A3M generated by merging A3M alignments for significant hits to the query alignment\n+      char qa3mfile[NAMELEN];\n+      RemoveExtension(qa3mfile,par.infile); // directory??\n+      strcat(qa3mfile,".a3m");\n+      FILE* qa3mf=fopen(qa3mfile,"r");\n+      if (!qa3mf) OpenFileError(qa3mfile);\n+      Qali.Read(qa3mf,qa3mfile);\n+      fclose(qa3mf);\n+      \n+      // Align query with template in master-slave mode \n+      Qali.MergeMasterSlave(hit,par.tfile); /*FS, NOFILE2 (commented out) */\n+      \n+      // Write output A3M alignment?\n+      if (*par.alnfile) {\n+\tQali.WriteToFile(par.alnfile,"a3m");\n+      }\n+\n+      if (*par.psifile) \n+\t{\n+\t  /* Convert ASCII to int (0-20),throw out all insert states, \n+\t     record their number in I[k][i]  */\n+\t  Qali.Compress("merged A3M file");\n+\t  \n+\t  // Write output PSI-BLAST-formatted alignment?\n+\t  Qali.WriteToFile(par.psifile,"psi");\n+\t}\n+    } /* if (*par.alnfile || *par.psifile || *par.hhmfile) */\n+#endif  /* NOFILE2 */\n+  //////////////////////////////////////////////////////////////////////////\n+\n+\n+\n+\n+//   double log2Pvalue;\n+//   if (par.ssm && (par.ssm1 || par.ssm2))\n+//     {\n+//       log2Pvalue=hit.logPval/0.693147181+0.45*(4.0*par.ssw/0.15-hit.score_ss);\n+//       if (v>=2) \n+// \tprintf("Aligned %s with %s:\\nApproximate P-value INCLUDING SS SCORE = %7.2g\\n",q.name,t.name,pow(2.0,log2Pvalue));\n+//     } else {\n+//       if (v>=2) \n+// \tprintf("Aligned %s with %s:\\nApproximate P-value (without SS score) = %7.2g\\n",q.name,t.name,hit.Pval);\n+//    }\n+\n+  if (v>=2)\n+  {\n+      if (par.hitrank==0)\n+          printf("Aligned %s with %s: Score = %-7.2f  P-value = %-7.2g\\n",\n+                 q.name,t.name,hit.score,hit.Pval);\n+      else\n+          printf("Aligned %s with %s (rank %i): Score = %-7.2f  P-value = %-7.2g\\n",\n+                 q.name,t.name,par.hitrank,hit.score,hit.Pval);\n+  }\n+  \n+\n+  // Delete memory for dynamic programming matrix\n+  hit.DeleteBacktraceMatrix(q.L+2);\n+  if (par.forward>=1 || Nstochali) \n+    hit.DeleteForwardMatrix(q.L+2);\n+  if (par.forward==2) \n+    hit.DeleteBackwardMatrix(q.L+2);\n+  /*   if (Pstruc) { \n+       for (int i=0; i<q.L+2; i++) delete[](Pstruc[i]); delete[](Pstruc);}\n+  */\n+\n+  // Delete content of hits in hitlist\n+  hitlist.Reset();\n+  while (!hitlist.End()) \n+    hitlist.ReadNext().Delete(); // Delete content of hit object\n+\n+  if (strucfile && par.wstruc>0) \n+    {\n+      for (int i=0; i<q.L+2; i++){\n+\tdelete[] Pstruc[i]; Pstruc[i] = NULL;\n+      }\n+      delete[] Pstruc; Pstruc = NULL;\n+      for (int i=0; i<q.L+2; i++){\n+\tdelete[] Sstruc[i]; Sstruc[i] = NULL;\n+      }\n+      delete[] Sstruc; Sstruc = NULL;\n+      delete[] strucfile; strucfile = NULL;\n+    }\n+\n+  if (pngfile){\n+    delete[] pngfile; pngfile = NULL;\n+  }\n+  if (alitabfile){\n+    delete[] alitabfile; alitabfile = NULL;\n+  }\n+  if (tcfile){\n+    delete[] tcfile; tcfile = NULL;\n+  }\n+  if (par.exclstr){\n+    delete[] par.exclstr; par.exclstr = NULL;\n+  }\n+\n+#ifndef CLUSTALO_NOFILE\n+  // Print \'Done!\'\n+  FILE* outf=NULL;\n+  if (!strcmp(par.outfile,"stdout")) printf("Done!\\n");\n+  else\n+    {\n+      if (*par.outfile)\n+\t{\n+\t  outf=fopen(par.outfile,"a"); //open for append\n+\t  fprintf(outf,"Done!\\n");\n+\t  fclose(outf);\n+\t}\n+      if (v>=2) printf("Done\\n");\n+    }\n+#endif\n+\n+  //qali.ClobberGlobal();\n+  hit.ClobberGlobal();\n+  if (iFirstCnt > 0){\n+      q.ClobberGlobal();\n+  }\n+  if (iSecndCnt > 0){\n+      t.ClobberGlobal();\n+  }\n+  hitlist.ClobberGlobal();\n+\n+  return 0;\n+\n+} /* this is the end of hhalign() //end main */\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// END OF MAIN\n+//////////////////////////////////////////////////////////////////////////////\n+\n+/*\n+ * EOF hhalign.C\n+ */\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhalign.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,30 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhalign.h 241 2011-05-04 14:37:17Z fabian $
+ */
+
+
+extern int 
+hhalign(char **ppcFirstProf, int iFirstCnt, double *pdWeightsL, 
+        char **ppcSecndProf, int iSecndCnt, double *pdWeightsR, 
+        double *dScore_p, hmm_light *prHMM, 
+        char *pcPrealigned1, char *pcRepresent1,
+        char *pcPrealigned2, char *pcRepresent2,
+        hhalign_para rHhalignPara,
+        int iFlag,
+        char zcAux[], char zcError[]);
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,3028 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhalignment-C.h 236 2011-04-14 11:30:04Z fabian $\n+ */\n+\n+\n+/*\n+ * Changelog: Michael Remmert made changes to hhalign stand-alone code\n+ * FS implemented some of the changes on 2010-10-28 -> MR1\n+ *\n+ * Note: MR seems to have changed all [aijk]++ to ++[aijk],\n+ * FS did not do that on 2010-10-28\n+ */\n+\n+// hhalignment.C\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//// Class Alignment\n+//////////////////////////////////////////////////////////////////////////////\n+\n+// hhalignment.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream> // cin, cout, cerr\n+#include <fstream> // ofstream, ifstream\n+#include <stdio.h> // printf\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+#include <stdlib.h> // exit\n+#include <string> // strcmp, strstr\n+#include <math.h> // sqrt, pow\n+#include <limits.h> // INT_MIN\n+#include <float.h> // FLT_MIN\n+#include <time.h> // clock\n+#include <ctype.h> // islower, isdigit etc\n+#include "util-C.h" // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h" // list data structure\n+#include "hash.h" // hash data structure\n+#include "hhdecl-C.h"\n+#include "hhutil-C.h" // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "hhhmm.h"\n+#endif\n+\n+\n+enum {KEEP_NOT = 0, KEEP_CONDITIONALLY, KEEP_ALWAYS};\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Class Alignment\n+//////////////////////////////////////////////////////////////////////////////\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Object constructor\n+//////////////////////////////////////////////////////////////////////////////\n+Alignment::Alignment(int maxseq, int maxres)\n+{\n+\n+    //printf(">>>>>>>>%s:%s:%d: maxseq=%d, maxres=%d\\n", __FUNCTION__, __FILE__, __LINE__, maxseq, maxres); /* (FS) */\n+  longname = new(char[DESCLEN]);\n+  sname = new(char*[maxseq+2]); /* MR1 */\n+  seq = new(char*[maxseq+2]); /* MR1 */\n+  l = new(int[maxres]);\n+  X = new(char*[maxseq+2]);  /* MR1 */\n+  I = new(short unsigned int*[maxseq+2]); /* MR1 */\n+  keep = new(char[maxseq+2]); /* MR1 */\n+  display = new(char[maxseq+2]); /* MR1 */\n+  wg = new(float[maxseq+2]); /* MR1 */\n+  nseqs = new(int[maxres+2]); /* MR1 */\n+  N_in=L=0;\n+  nres=NULL; // number of residues per sequence k\n+  first=NULL; // first residue in sequence k\n+  last=NULL; // last residue in sequence k\n+  ksort=NULL; // sequence indices sorted by descending nres[k]\n+  name[0]=\'\\0\'; // no name defined yet\n+  longname[0]=\'\\0\'; // no name defined yet\n+  fam[0]=\'\\0\'; // no name defined yet\n+  file[0]=\'\\0\'; // no name defined yet\n+  readCommentLine = \'0\'; /* MR1 */\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Object destructor\n+//////////////////////////////////////////////////////////////////////////////\n+Alignment::~Alignment()\n+{\n+  delete[] longname; longname = NULL;\n+  for(int k=0; k<N_in; k++)\n+    {\n+      delete[] sname[k]; sname[k] = NULL;\n+      delete[] seq[k]; seq[k] = NULL;\n+      delete[] X[k]; X[k] = NULL;\n+      delete[] I[k]; I[k] = NULL;\n+    }\n+  delete[] sname; sname = NULL;\n+  delete[] seq; seq = NULL;\n+'..b'[k] = KEEP_CONDITIONALLY;\n+        display[k] = KEEP_CONDITIONALLY;\n+        sname[k] = new(char[GOOD_MEASURE]);\n+        strcpy(sname[k], "unknown_sname");\n+    } /* (0 <= k < iCnt) */\n+    /* FIXME: Soeding always makes 1st sequence permanent */\n+    /*keep[0] = KEEP_ALWAYS;\n+      display[k] = KEEP_ALWAYS;*/\n+#if 1\n+    /* Believe that the first and last positions are\n+       most important in stability of this algorithm.\n+       Must make sure that at least 2 sequences with\n+       residues in these positions are kept.\n+       Think any sequence will do, but better to keep\n+       the one with the longest \'contig\'\n+    */\n+    int iSeq; /* sequence iterator */\n+    int iHeadLen = 0, iHeadID = -1; /* length & ID of longest head contig */\n+    int iTailLen = 0, iTailID = -1; /* length & ID of longest head contig */\n+    int iCont = -1;\n+    char *pcFind = NULL;\n+\n+#if 0\n+    printf("%s:%s:%d: NEW PROFILE (%d seq) ================\\n",\n+           __FUNCTION__, __FILE__, __LINE__, iCnt);\n+#endif\n+    for (iSeq = 0; iSeq < iCnt; iSeq++){\n+#if 0\n+        printf("%s:%s:%d: consider seq %d ------------------\\n",\n+               __FUNCTION__, __FILE__, __LINE__, iSeq);\n+#endif\n+        pcFind = strchr(&seq[iSeq][1], \'-\');\n+        if (NULL == pcFind){\n+            /* no gap at all in this sequences, spans entire profile */\n+            iHeadID = iTailID = iSeq;\n+            iHeadLen = iTailLen = iLen;\n+            break;\n+        }\n+        iCont = (int)(pcFind - &seq[iSeq][1]);\n+        if (iCont > iHeadLen){\n+            iHeadLen = iCont;\n+            iHeadID  = iSeq;\n+        }\n+        pcFind = strrchr(seq[iSeq], \'-\');\n+        iCont = iLen - (int)(pcFind - seq[iSeq]);\n+        if (iCont > iTailLen){\n+            iTailLen = iCont;\n+            iTailID  = iSeq;\n+        }\n+\n+#if 0\n+        printf("%s:%s:%d: seq %3d: len = %d(%d) %s\\n",\n+               __FUNCTION__, __FILE__, __LINE__, iSeq, iCont, iLen, seq[iSeq]);\n+#endif\n+    } /* 0 <= iSeq < iCnt */\n+#if 0\n+    printf("%s:%s:%d: seq %d is winner with head contig of %d, seq %d tail contig of %d\\n"\n+           , __FUNCTION__, __FILE__, __LINE__, iHeadID, iHeadLen, iTailID, iTailLen);\n+#endif\n+    if ( (-1 == iHeadID) || (-1 == iTailID) ){\n+        printf("%s:%s:%d: profile has no leading and/or trailing residues (h=%d:t=%d:#=%d)\\n",\n+               __FUNCTION__, __FILE__, __LINE__, iHeadID, iTailID, iCnt);\n+    }\n+    else{\n+        keep[iHeadID] = KEEP_ALWAYS;\n+        keep[iTailID] = KEEP_ALWAYS;\n+    }\n+#endif\n+    /* @= */\n+    return;\n+\n+} /* this is the end of Transfer() */\n+#endif\n+\n+#ifdef CLUSTALO\n+/* @* Alignment::ClobberGlobal (eg: qali)\n+ *\n+ * Note: originally hhalign() was stand-alone code,\n+ * there are a couple of GLOBAL (!) variables,\n+ * which would have been destroyed on exit.\n+ * However, now there is no \'exit\' from hhalign(),\n+ * and on re-entry the global variable must be clean again.\n+ */\n+void \n+Alignment::ClobberGlobal(void){\n+\n+ /* @<essentials@>\n+ these are essential to re-set (as some of them are used as flags) */\n+ for(int k=0; k<N_in; k++)\n+ {\n+ delete[] sname[k]; sname[k] = NULL;\n+ delete[] seq[k]; seq[k] = NULL;\n+ delete[] X[k]; X[k] = NULL;\n+ delete[] I[k]; I[k] = NULL;\n+ }\n+ delete[] nres; nres = NULL;\n+ delete[] first; first = NULL;\n+ delete[] last; last = NULL;\n+ delete[] ksort; ksort = NULL;\n+ N_in = N_filtered = n_display = 0;\n+ L = 0;\n+ kss_dssp = ksa_dssp = kss_pred = kss_conf = kfirst = -1;\n+\n+ /* @<re-set but keep memory@>\n+ do not free the memory but re-set content */\n+ longname[0] = \'\\0\'; //delete[] longname; longname = NULL;\n+ keep[0] = \'\\0\'; //delete[] keep; keep = NULL;\n+ display[0] = \'\\0\'; //delete[] display; display = NULL;\n+ wg[0] = 0; //delete[] wg; wg = NULL;\n+ nseqs[0] = 0; //delete[] nseqs; nseqs = NULL;\n+ name[0]=\'\\0\';\n+ fam[0]=\'\\0\';\n+ file[0]=\'\\0\';\n+ //delete[] sname; sname = NULL;\n+ //delete[] seq; seq = NULL;\n+ //delete[] X; X = NULL;\n+ //delete[] I; I = NULL;\n+ //delete[] l; l = NULL;\n+\n+ /* @= */\n+ return;\n+}\n+#endif\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhalignment.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,129 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhalignment.h 154 2010-11-09 18:29:05Z fabian $
+ */
+
+// hhalignment.h
+
+class Alignment
+{
+public:
+  int L;              // number of match states of alignment
+  int N_in;           // total number of sequences in alignment
+  int N_filtered;     /* number of sequences after sequence identity 
+  filtering */
+  int N_ss;           // number of >ss_ or >sa sequences
+
+  int kss_dssp;       /* index of sequence with secondary structure 
+  by dssp      -1:no >ss_dssp line found */
+  int ksa_dssp;       /* index of sequence with solvent accessibility 
+  by dssp    -1:no >sa_dssp line found */
+  int kss_pred;       /* index of sequence with predicted secondary 
+  structure    -1:no >ss_pred line found */
+  int kss_conf;       /* index of sequence with confidence values of 
+  prediction  -1:no >ss_conf line found */
+  int kfirst;         // index of first real sequence
+
+  char* longname;     /* Full name of first sequence of original alignment 
+  (NAME field) */
+  char name[NAMELEN]; // HMM name = first word in longname in lower case
+  char fam[NAMELEN];  // family ID (derived from name) (FAM field)
+  char file[NAMELEN]; /* Rootname (w/o path, with extension) of alignment 
+  file that is used to construct the HMM */
+
+  int n_display;      /* number of sequences to be displayed 
+  (INCLUDING >ss_pred, >ss_conf, >ss_dssp sequences) */
+  char** sname;       // names of display sequences (first seq=0, first char=0)
+  char** seq;         // residues of display sequences (first char=1)
+  int* l;             // l[i] = position of i'th match state in alignment 
+
+  char* keep;         /* keep[k]=1 if sequence is included in amino acid 
+  frequencies; 0 otherwise (first=0) */
+
+  double *pdExWeight; /* external sequence weight as given by tree FIXME (FS) */
+
+  Alignment(int maxseq=MAXSEQ, int maxres=/*MAXRES*/par.maxResLen);
+  ~Alignment();
+
+  // Read alignment into X (uncompressed) in ASCII characters
+  void Read(FILE* inf, char infile[NAMELEN], char* line=NULL);
+#ifdef CLUSTALO
+  void Transfer(char **ppcProf, int iCnt);
+  void ClobberGlobal();
+#endif
+
+  /* Convert ASCII to numbers between 0 and 20, throw out all insert states, 
+     record their number in I[k][i] and store sequences to be displayed 
+     in sname[k] and seq[k] */
+  void Compress(const char infile[NAMELEN]);
+
+  // Apply sequence identity filter
+  inline int FilterForDisplay(int max_seqid, int coverage=0, int qid=0, float qsc=0, int N=0);
+  inline int Filter(int max_seqid, int coverage=0, int qid=0, float qsc=0, int N=0);
+  int Filter2(char keep[], int coverage, int qid, float qsc, int seqid1, int seqid2, int Ndiff);
+
+  bool FilterNeff(); /* MR1 */
+  float filter_by_qsc(float qsc, char* dummy); /* MR1 */
+
+  // Filter alignment for min score per column with core query profile, defined by min_coverage_core and min_seqid_core
+  int HomologyFilter(int coverage_core, float qsc_core, float coresc);
+
+  // Calculate AA frequencies q.p[i][a] and transition probabilities q.tr[i][a] from alignment
+  void FrequenciesAndTransitions(HMM& q, char* in=NULL);
+
+  // Calculate freqs q.f[i][a] and transitions q.tr[i][a] (a=MM,MI,MD) with pos-specific subalignments
+  void Amino_acid_frequencies_and_transitions_from_M_state(HMM& q, char* in);
+
+  // Calculate transitions q.tr[i][a] (a=DM,DD) with pos-specific subalignments
+  void Transitions_from_D_state(HMM& q, char* in);
+
+  // Calculate transitions q.tr[i][a] (a=DM,DD) with pos-specific subalignments
+  void Transitions_from_I_state(HMM& q, char* in);
+  
+  // Write alignment without insert states to alignment file
+  void WriteWithoutInsertsToFile(char* alnfile);
+
+  // Write alignment to alignment file
+  void WriteToFile(char* alnfile, const char format[]=NULL);
+
+  // Read a3m slave alignment of hit from ta3mfile and merge into (query) master alignment
+  void MergeMasterSlave(Hit& hit, char ta3mfile[]);
+
+  // Read a3m alignment of hit from ta3mfile and merge-combine with query alignment
+  void Merge(Hit& hit, char ta3mfile[]);
+
+  // Add a sequence to Qali
+  void AddSequence(char Xk[], int Ik[]=NULL);
+
+  // Determine matrix of position-specific weights w[k][i] for multiple alignment
+  void GetPositionSpecificWeights(float* w[]);
+
+  char readCommentLine;   // Set to 1, if a comment line with '#' is read /* MR1 */
+
+private:
+  char** X;               // X[k][i] contains column i of sequence k in alignment (first seq=0, first char=1) (0-3: ARND ..., 20:X, 21:GAP)
+  short unsigned int** I; // I[k][i] contains the number of inserts AFTER match state i (first=0)
+  char* display;          // display[k]=1 if sequence will be displayed in output alignments; 0 otherwise (first=0)
+  float* wg;              // w[k] = global weight of sequence k
+  int* nseqs;             // number of sequences in subalignment i (only for DEBUGGING)
+  int* nres;              // number of residues in sequence k
+  int* first;             // first residue in sequence k
+  int* last;              // last  residue in sequence k
+  int* ksort;             // index for sorting sequences: X[ksort[k]]
+  int FilterWithCoreHMM(char in[], float coresc, HMM& qcore);
+};
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhdecl-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhdecl-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,243 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhdecl-C.h 227 2011-03-28 17:03:09Z fabian $\n+ */\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+//// Constants\n+/////////////////////////////////////////////////////////////////////////////////////\n+\n+const char VERSION_AND_DATE[]="version 1.5.1.3 (November 2008)";\n+const char REFERENCE[]="Soding, J. Protein homology detection by HMM-HMM comparison. Bioinformatics 2005, 21, 951-960.\\n";\n+const char COPYRIGHT[]="(C) Johannes Soeding (see LICENSE file)\\n";\n+const int MAXSEQ=65535; //max number of sequences in input alignment (must be <~30000 on cluster nodes)\n+#if 0\n+const int MAXCOL=32765; //max number of residues in input files; must be <= LINELEN and >= MAXRES\n+const int MAXRES=15002; //max number of columns in HMM; must be <= LINELEN\n+#else\n+const int MAXCOL=2/*131072*/; //max number of residues in input files; must be <= LINELEN and >= MAXRES\n+const int MAXRES=1/*65536*/; //max number of columns in HMM; must be <= LINELEN\n+#endif\n+const int LINELEN=262144; //max length of line read in from input files; must be >= MAXCOL \n+const int MAXSEQDIS=3; //10238;//max number of sequences stored in \'hit\' objects and displayed in output alignment \n+const int IDLEN=255;     //max length of scop hierarchy id and pdb-id\n+const int DESCLEN=32765;//max length of sequence description (longname)\n+const int NAMELEN=511;  //max length of file names etc.\n+const int MAXOPT=127;   //Maximum number of options to be read in from .hhconfig or command line\n+const int NAA=20;       //number of amino acids (0-19)\n+const int NTRANS=10;    //number of transitions recorded in HMM (M2M,M2I,M2D,I2M,I2I,D2M,D2D,M2M_GAPOPEN,GAPOPEN,GAPEXTD)\n+const int NCOLMIN=10;   //min number of cols in subalignment for calculating pos-specific weights w[k][i]\n+const int ANY=20;       //number representing an X (any amino acid) internally\n+const int GAP=21;       //number representing a gap internally \n+const int ENDGAP=22;    //Important to distinguish because end gaps do not contribute to tansition counts \n+const int HMMSCALE=1000;//Scaling number for log2-values in HMMs\n+const int NFAMMAX=5119; //Size of hash for counting number of HMMs in each family\n+const int MAXPROF=32766;//Maximum number of HMM scores for fitting EVD\n+const float MAXENDGAPFRAC=0.1; //For weighting: include only columns into subalignment i that have a max fraction of seqs with endgap\n+const float SMIN= 20.;  //Minimum score of hit needed to search for another repeat of same profile: p=exp(-(4-mu)/lamda)=0.01\n+const float LAMDA=0.388; //lamda in score EVD used for -local mode in length correction: S = S-log(Lq*Lt)/LAMDA) \n+const float LAMDA_GLOB=0.42; //lamda in score EVD used for -global mode\n+const float PMAX=1E-2;  //Maximum single-repeat p-value that can contribute to whole-protein p-value\n+const float MINEVALEXCL=0.5; //above this E-value from first ML fit hits are not used for final ML fit of EVD\n+const int SELFEXCL=3;   // exclude self-alignments with j-i<SELFEXCL\n+const float PLTY_GAPOPEN=6.0f; // for -qsc option (filter for min similarity to query): 6 bits to open gap\n+const float PLTY_GAPEXTD=1.0f; // for -qsc option (filter for min similarity to query): 1 bit to extend gap\n+const int MINCOLS_REALIGN=6; // hits with MAC alignments with fewer matched columns will be deleted in hhsearch hitl'..b"\n+  char ssgap;             // 1: add secondary structure-dependent gap penalties  0:off\n+  float ssgapd;           // secondary structure-dependent gap-opening penalty (per residue)\n+  float ssgape;           // secondary structure-dependent gap-extension penalty (per residue)\n+  char ssgapi;            // max. number of inside-integer(ii); gap-open-penalty= -ii*ssgapd\n+\t\t      \n+  char ssm;               // SS comparison mode: 0:no ss scoring  1:ss scoring AFTER alignment  2:ss score in column score\n+  float ssw;              // SS weight as compared to column score\n+  float ssa;              // SS state evolution matrix M1 = (1-ssa)*I + ssa*M0\n+\t\t      \n+  char loc;               // 0: local alignment (wrt. query), 1: global alignement \n+  char forward;           // 0:Viterbi algorithm  1:Forward algorithm  2: MAC\n+  char realign;           // realign database hits to be displayed with MAC algorithm\n+  char altali;            // find up to this many possibly overlapping alignments\n+  int columnscore;        // 0: no aa comp corr  1: 1/2(qav+tav) 2: template av freqs 3: query av freqs 4:...\n+  float corr;             // Weight of correlations between scores with |i-j|<=4\n+  float shift;            // Score offset for match-match states\n+  float mact;             // Score threshold (negative offset) in MAC alignment\n+\t\t       \n+  char calibrate;         // calibration of query HMM?  0:no, 1:yes (write lamda,mu into query profile)\n+  char calm;              // derive P-values from: 0:query calibration  1:template calibration  2:both\n+  int opt;                // for optimization: compare only every opt'th negative; 0: mode off\n+  int readdefaultsfile ;  // read defaults file ./.hhdefaults or HOME/.hhdefaults?\n+  int min_overlap;        // all cells of dyn. programming matrix with L_T-j+i or L_Q-i+j < min_overlap will be ignored\n+  int hitrank;            // rank of hit to be printed as a3m alignment\n+  char notags;            // neutralize His-tags, FLAG tags, C-myc tags?\n+  unsigned int maxdbstrlen; // maximum length of database string to be printed in 'Command' line of hhr file\n+\t\t       \n+  char trans;             // 0: normal pairwise scoring; 1:transitive scoring \n+  float Emax_trans;       // max E-value for intermediate HMMs in transitive scoring (i.e. l is intermediate HMM if E_lq, E_lk <Emax_trans)\n+  float wtrans;           // Ztot[k] = Zq[k] + wtrans * (Zforward[k]+Zreverse[k])\n+\n+\n+  // SCRAP THE FOLLOWING VARIABLES?\n+\n+  float wstruc;          // weight of structure scores\n+  char repmode;          // 1:repeat identification: multiple hits not treated as independent 0: repeat mode off\n+\n+  int idummy;\n+  int jdummy;\n+  float fdummy;      \n+};\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+//// Global variable declarations\n+/////////////////////////////////////////////////////////////////////////////////////\n+\n+char v=1;             // 1: show only warnings 2:verbose mode  \n+Parameters par;\n+char program_name[NAMELEN]; //name of program executed (e.g. hhmake of hhsearch)\n+\n+// substitution matrix flavours\n+float P[21][21];      // P[a][b] = combined probability for a aligned to b\n+float R[21][21];      // R[a][b]=P[a][b]/p[b]=P(a|b); precalculated for pseudocounts\n+float Sim[21][21];    // Similarity matrix Sim[a][b]: how similar are a and b?\n+float S[21][21];      // Substitution score matrix S[a][b] = log2(Pab/pa/pb)\n+float pb[21];         // pb[a] = background amino acid probabilities for chosen substitution matrix\n+float qav[21];        // qav[a] = background amino acid probabilities for query HMM (needed for rate matrix rescaling)\n+\n+// secondary structure matrices\n+float S73[NDSSP][NSSPRED][MAXCF];           // P[A][B][cf]       =  log2 P(A,B,cf)/P(A)/P(B,cf)\n+float S33[NSSPRED][MAXCF][NSSPRED][MAXCF];  // P[B][cf][B'][cf'] =  log2 sum_B' P(A,B',cf)/P(A)/P(B,cf) * P_b(B'|B)\n+// float S77[NDSSP][DSSP];                  // P[A][B]           =  log2 P(A,B)/P(A)/P(B)\n+\n"
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,634 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhfullalignment-C.h 230 2011-04-09 15:37:50Z andreas $\n+ */\n+\n+// hhfullalignment.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <stdio.h>    // printf\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+#include "util-C.h"     // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h"     // list data structure\n+#include "hash.h"     // hash data structure\n+#include "hhdecl-C.h"      // constants, class \n+#include "hhutil-C.h"      // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "hhhmm.h"       // class HMM\n+#include "hhalignment.h" // class Alignment\n+#include "hhhit.h"\n+#include "hhhalfalignment.h"\n+#endif\n+\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//////////////////////////////////////////////////////////////////////////////\n+// Methods of class FullAlignment\n+//////////////////////////////////////////////////////////////////////////////\n+//////////////////////////////////////////////////////////////////////////////\n+  \n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Output Results: use classes HalfAlignment and FullAlignment\n+//\n+// Example:\n+// Each column list contains at least a match state \n+// Insert states between the match states are omitted\n+//\n+//  step 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1\n+//     i  0  0  1  2  3  4  5  6  7  8  9  9  9  9 10 11 12 13 14\n+// \n+//     Q  ~  ~  X  X  X  X  X  X  X  X  X  ~  ~  ~  X  X  X  X  X\n+//     T  Y  Y  Y  Y  Y  Y  Y  Y  ~  Y  Y  Y  Y  Y  Y  Y  Y  ~  ~\n+//\n+//     j  7  8  9 10 11 12 13 14 14 15 16 17 18 19 20 21 22 22 22\n+// state IM IM MM MM MM MM MM MM DG MM MM GD GD GD MM MM MM MI MI\n+//\n+// nsteps=19\n+//\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Constructor\n+FullAlignment::FullAlignment(int maxseqdis) \n+{\n+  qa = new HalfAlignment(maxseqdis);\n+  ta = new HalfAlignment(maxseqdis);\n+  for (int h=0; h<LINELEN-1; h++) symbol[h]=\' \';\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Destructor\n+FullAlignment::~FullAlignment() \n+{\n+  delete qa; qa = NULL;\n+  delete ta; ta = NULL;\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Free memory of arrays s[][], l[][], and m[][] in HalfAlignment\n+void FullAlignment::FreeMemory()\n+{\n+  qa->Unset();\n+  ta->Unset();\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Add columns for match (and delete) states. \n+ */\n+void \n+FullAlignment::AddColumns(int i, int j, char prev_state, char state, float S)\n+{\n+  switch(state)\n+    {\n+    case MM:  //MM pair state (both query and template in Match state)\n+      AddGaps(); //fill up gaps until query and template parts have same length\n+      symbo'..b'>nss_pred || k==qa->nss_conf) && !par.showpred) continue;\n+      if (k==qa->ncons && !par.showcons) continue;\n+      fprintf(outf,">%s\\n",qa->sname[k]);\n+#if TELOMER_PRINT\n+      /* @<print left cut-off@> */\n+      if (iTelomerLeft > 0){\n+\tfor (int iI = 1; iI <= iTelomerLeft; iI++){\n+\t  fprintf(outf, "%1c", qa->seq[k][iI]);\n+\t}\n+\t/* this may be unnecessary */\n+\tfor (int iI = iTelomerLeft+1; iI < hit.i1; iI++){\n+\t  fprintf(outf, "%1c", qa->seq[k][iI]);\n+\t}\n+      }\n+      else {\n+\tfor (int iI = iTelomerLeft; iI < 0; iI++){\n+\t  fprintf(outf, "%1c", \'-\');\n+\t}\n+\t/* this may be unnecessary */\n+\t/* think about it */\n+      }\n+      /* @<print consensus@> */\n+      for (h = 0; qa->s[k][h] > 0; h++){\n+\tfprintf(outf, "%1c", qa->s[k][h]);\n+      }\n+      /* @<print out rght cut-off@> */\n+      for (int iI = hit.i2+1; iI <= qa->L; iI++){\n+\tfprintf(outf, "%1c", qa->seq[k][iI]);\n+      }\n+      for (int iI = 0; iI > iTelomerRght; iI--){\n+\tfprintf(outf, "%1c", \'-\');\n+      }\n+#else\n+      for (h=0,hh=-par.aliwidth; qa->s[k][h]>0; h++,hh++) \n+\t{\n+\t  if (!hh) {fprintf(outf,"\\n"); hh-=par.aliwidth;}\n+\t  fprintf(outf,"%1c",qa->s[k][h]); \n+\t}\n+#endif\n+      fprintf(outf,"\\n");\n+    }\n+  \n+  // Print template sequences\n+  for (k=0; k<ta->n; k++)\n+    {\n+      if (k==ta->nsa_dssp) continue;\n+      if (k==ta->nss_dssp && !par.showdssp) continue;\n+      if ((k==ta->nss_pred || k==ta->nss_conf) && !par.showpred) continue;\n+      if (k==ta->ncons && !par.showcons) continue;\n+      fprintf(outf,">%s\\n",ta->sname[k]);\n+#if TELOMER_PRINT\n+      /* @<print left cut-off@> */\n+      if (iTelomerLeft > 0){\n+\tfor (int iI = 1; iI <= iTelomerLeft; iI++){\n+\t  fprintf(outf, "%1c", \'-\');\n+\t}\n+\t/* this may be unnecessary */\n+\tfor (int iI = iTelomerLeft+1; iI < hit.j1; iI++){\n+\t  fprintf(outf, "%1c", ta->seq[k][iI]);\n+\t}\n+      }\n+      else{\n+\tfor (int iI = 1; iI <= -iTelomerLeft; iI++){\n+          fprintf(outf, "%1c", ta->seq[k][iI]);\n+        }\n+\t/* this may be unnecessary */\n+\t/* think about it */\n+      }\n+      /* @<print consensus@> */\n+      for (h = 0; ta->s[k][h] > 0; h++){\n+        fprintf(outf, "%1c", ta->s[k][h]);\n+      }\n+\n+      /* @<print out rght cut-off@> */\n+      for (int iI = hit.j2+1; iI <= ta->L; iI++){\n+        fprintf(outf, "%1c", ta->seq[k][iI]);\n+      }\n+      for (int iI = 0; iI < iTelomerRght; iI++){\n+        fprintf(outf, "%1c", \'-\');\n+      }\n+\n+#else\n+      for (h=0,hh=-par.aliwidth; ta->s[k][h]>0; h++,hh++) \n+\t{\n+\t  if (!hh) {fprintf(outf,"\\n"); hh-=par.aliwidth;}\n+\t  fprintf(outf,"%1c",ta->s[k][h]); \n+\t}\n+#endif \n+      fprintf(outf,"\\n");\n+    }\n+  fprintf(outf,"\\n");\n+\n+} /* this is the end of PrintA2M() */\n+\n+////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Print out full alignment in A2M format\n+ */\n+void \n+FullAlignment::PrintFASTA(FILE* outf, Hit& hit)\n+{\n+  // Transform sequences to uppercase and \'.\' to \'-\'\n+  qa->ToFASTA();\n+  ta->ToFASTA();\n+  PrintA2M(outf,hit);\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Print out full alignment in A2M format\n+ */\n+void \n+FullAlignment::PrintA3M(FILE* outf, Hit& hit)\n+{\n+  // Remove all \'.\' from sequences\n+  qa->RemoveChars(\'.\');\n+  ta->RemoveChars(\'.\');\n+  PrintA2M(outf,hit);\n+}\n+\n+\n+/* \n+ * @* OverWriteSeqs()\n+ */\n+void \n+FullAlignment::OverWriteSeqs(char **ppcFirstProf, char **ppcSecndProf){\n+\n+  int iS, iR;\n+  char cRes;\n+\n+  for (iS = 0; iS < qa->n; iS++){\n+    for (iR = 0; iR < qa->pos; iR++){\n+      cRes = qa->s[iS][iR];\n+      ppcFirstProf[iS][iR] = (\'.\' == cRes) ? \'-\' : cRes;\n+      \n+    } /* 0 <= iR < qa.L */\n+    ppcFirstProf[iS][iR] = \'\\0\';\n+  } /* 0 <= iS < qa.n */\n+  \n+  for (iS = 0; iS < ta->n; iS++){\n+    for (iR = 0; iR < ta->pos; iR++){\n+      cRes = ta->s[iS][iR];\n+      ppcSecndProf[iS][iR] = (\'.\' == cRes) ? \'-\' : cRes;\n+      \n+    } /* 0 <= iR < ta.L */\n+    ppcSecndProf[iS][iR] = \'\\0\';\n+  } /* 0 <= iS < ta.n */\n+  \n+} /* this is the end of OverWriteSeqs() */\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhfullalignment.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,49 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhfullalignment.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+// Class for output alignment of query against template sequences
+//////////////////////////////////////////////////////////////////////////////
+
+class FullAlignment
+{
+public:
+  FullAlignment(int maxseqdis=MAXSEQDIS);
+  ~FullAlignment();
+  void FreeMemory();
+  void Build(HMM& q, Hit& hit);
+  void PrintHeader(FILE* outf, HMM& q, Hit& hit);
+  void PrintHHR(FILE* outf, Hit& hit);
+  void PrintA2M(FILE* outf, Hit& hit);
+  void PrintFASTA(FILE* outf, Hit& hit);
+  void PrintA3M(FILE* outf, Hit& hit);
+  void OverWriteSeqs(char **ppcFirstProf, char **ppcSecndProf);
+  int identities;      // number of identical residues in query and template sequence
+  float score_sim;     // substitution matrix similarity score between query and template
+
+private:
+  HalfAlignment* qa; //query and template parts of the alignment
+  HalfAlignment* ta; //query and template parts of the alignment
+  char symbol[LINELEN];         //symbol[h] = symbol (= - . + |) indicating match score for col h of alignment    
+  void ClearSymbols()      {for (int h=0; h<LINELEN-1; h++) symbol[h]=' ';}
+  void AddColumns(int i, int j, char prev_state, char state, float S);
+  void AddGaps();
+  int ScoreChr(float S) {return (S<-1.5?'=':(S<-0.5?'-':(S<0.5?'.':(S<1.5?'+':'|'))));}
+};
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1216 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhfunc-C.h 199 2011-02-21 18:24:49Z fabian $\n+ */\n+\n+/*\n+ * Changelog: Michael Remmert made changes to hhalign stand-alone code \n+ * FS implemented some of the changes on 2010-11-11 -> MR1\n+ *\n+ * did not incorporate SS prediction PSIpred (yet); functions are: \n+ * CalculateSS(3), \n+ */\n+\n+\n+// hhfunc.C\n+\n+\n+/**\n+ * AddBackgroundFrequencies()\n+ *\n+ * @brief add background frequencies (derived from HMM) to \n+ * sequence/profile\n+ *\n+ * @param[in,out] ppfFreq,\n+ * [in] residue frequencies of sequence/profile, \n+ * [out] overlayed with HMM background frequencies\n+ * @param[in,out] ppfPseudoF,\n+ * [in] residue frequencies+pseudocounts of sequence/profile, \n+ * [out] overlayed with HMM background frequencies+pseudocounts\n+ * @param[in] iSeqLen,\n+ * length of sequence/profile (not aligned to HMM)\n+ * @pram[in] prHMM, \n+ * background HMM\n+ * @param[in] ppcSeq,\n+ * sequences/profile to be \'softened\'\n+ * @param[in] pcPrealigned,\n+ * sequence aligned to HMM, this is not quite a consensus,\n+ * it is identical to 1st sequence but over-writes gap information, \n+ * if other sequences in profile have (non-gap) residues\n+ * @param[in] iPreCnt\n+ * number of sequences pre-aligned (pcPrealigned is \'consensus\' of these sequences) \n+ * @param[in] pcRepresent\n+ * sequence representative of HMM, aligned to pcSeq0\n+ */\n+void \n+AddBackgroundFrequencies(float **ppfFreq, float **ppfPseudoF, float **ppfPseudoTr, \n+                         int iSeqLen, hmm_light *prHMM,\n+                         char **ppcSeq, char *pcPrealigned, int iPreCnt, char *pcRepresent)\n+{\n+\n+    char *pcS = pcPrealigned; /* current residue in pre-aligned sequence */\n+    char *pcH = pcRepresent;  /* current residue in pre-aligned HMM */\n+    int iS = 0; /* position in un-aligned sequence (corresponds to pcS) */\n+    int iH = 0; /* position in un-aligned HMM (corresponds to pcH) */\n+    int iA; /* residue iterator */\n+    int iT; /* transition state iterator */\n+    float fFWeight = 0.50 / sqrt((float)(iPreCnt)); /* weight of backgroud frequencies */ /* FIXME: tune value, 0.50 default */\n+    //float fFWeight = 0.75;\n+    float fFThgiew = UNITY - fFWeight; /* weight of \'true\' frequencies */\n+    float fGWeight = 0.50 / sqrt((float)(iPreCnt)); /* weight of backgroud transitions */ /* FIXME: tune value, 0.50 default */\n+    //float fGWeight = 0.50 /*/ (float)(iPreCnt)*/; /* weight of backgroud transitions */ /* FIXME: tune value, 0.50 default */\n+    float fGThgiew = UNITY - fGWeight; /* weight of \'true\' transitions */\n+    float fAux; \n+    /* zf1SeqTrans[] are the (phenomenological) transition probabilities (+ pseudo-counts)\n+       for a single sequence. It is almost certain (0.99) to stay in a match state, and very \n+    unlikely (0.05) to go from match to insertion/deletion */\n+    float zf1SeqTrans[] = {0.98, 0.01, 0.01, 0.25, 0.75, 0.25, 0.75};\n+    float zf1SeqInit[]  = {0.98, 0.01, 0.01, 0.99, 0.01, 0.99, 0.01};\n+    float zf1SeqDel[]   = {0.24, 0.01, 0.75, 0.01, 0.01, 0.01, 0.01};\n+    float zf1SeqRevrt[] = {0.98, 0.01, 0.01, 0.01, 0.01, 0.99, 0.01};\n+\n+    if ( (NULL == pcPrealigned) || (NULL == pcRepresent) ){\n+        /*printf("%s/%s:%d: WARNING HMM=NULL -- didn\'t think I would get here (carry on, no danger)\\n",\n+          __FUNCTION__, __FILE__, __LINE__);*/\n+        return;\n+    }\n+\n+    if (NULL == prHMM-'..b' *\n+ */\n+extern "C" int\n+readHMMWrapper(hmm_light *rHMM_p, \n+                 char *pcHMM_input)\n+{\n+    par.maxResLen = 15002;\n+    HMM rTemp(1000,par.maxResLen); /* temporary template */\n+    Alignment rTempAli; /* temporary alignment */\n+    /* AW changed init from {0} to 0 because it failed to compile with\n+     * gcc 4.3.3 with the following error:\n+     * error: braces around initializer for non-aggregate type \n+     */\n+    /* FS taken out initialiser alltogether */    \n+\n+    /* 0th arg of RnP is the type of RnP, ie, \n+       enum {INTERN_ALN_2_HMM = 0, READ_ALN_2_HMM, READ_HMM_2_HMM};*/\n+    /* 1st arg of ReadAndPrepare() is ppcSeqs, 2nd is #seq */\n+    /* FIXME: at this stage the 3rd arg, rHMM_p, only acts as a dummy.\n+       this is rather silly, as it is the actual struct that will \n+       carry the HMM info at the end. \n+       If we write it already in ReadAndPrepare() then we could \n+       dispense with all this friend-class nonsense */\n+    if (OK != ReadAndPrepare(READ_HMM_2_HMM, \n+                             NULL, 0, rHMM_p, NULL, NULL, NULL, \n+                             pcHMM_input, rTemp, &rTempAli)) {\n+        return FAILURE;\n+    }\n+\n+    /* an important piece of information I want to get out of here \n+       is the consenssus sequence. there are however certain \n+       Pfam HMMs that don\'t trigger consensus calculation.\n+       at the moment I (FS) don\'t understand why this is \n+       (or rather why this is not). The proper place to do this \n+       should be inside ReadAndPrepare():ReadHMMer(), but \n+       I have not quite penetrated the logic there. \n+       Therefore I try to catch this condition at this point (here) \n+       and rectify it. \n+     */\n+    if (-1 == rHMM_p->ncons){\n+        int i, iA;\n+        rHMM_p->ncons = rHMM_p->nfirst;\n+\n+        for (i = 0; i < rHMM_p->L; i++){\n+            double dPmax = 0.00;\n+            int iAmax = -1;\n+            for (iA = 0; iA < AMINOACIDS; iA++){\n+                if (rHMM_p->f[i][iA] > dPmax){\n+                    iAmax = iA;\n+                    dPmax = rHMM_p->f[i][iA];\n+                }\n+            } /* (0 <= iA < AMINOACIDS) */\n+            rHMM_p->seq[rHMM_p->ncons][i] = i2aa(iAmax);\n+        } /* (0 <= i < rHMM_p->L) */\n+\n+    } /* ncons not set */\n+\n+\n+    rTemp.ClobberGlobal();\n+    rTempAli.ClobberGlobal();\n+\n+  return OK;\n+\n+}  /*** end: readHMMWrapper() ***/\n+\n+\n+\n+\n+\n+\n+/////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Do precalculations for q and t to prepare comparison\n+ */\n+void \n+PrepareTemplate(HMM& q, HMM& t, int format)\n+{\n+  if (format==0) // HHM format\n+    {\n+      // Add transition pseudocounts to template\n+      t.AddTransitionPseudocounts();\n+\n+      // Generate an amino acid frequency matrix from t.f[i][a] with max pseudocounts (tau=1) -> t.g[i][a] \n+      t.PreparePseudocounts();\n+\n+      // Add amino acid pseudocounts to template: t.p[i][a] = (1-tau)*f[i][a] + tau*g[i][a]\n+      t.AddAminoAcidPseudocounts();\n+    }\n+  else // HHMER format\n+    {\n+      // Don\'t add transition pseudocounts to template\n+      // t.AddTransitionPseudocounts(par.gapd, par.gape, par.gapf, par.gapg, par.gaph, par.gapi, 0.0);\n+      \n+      // Generate an amino acid frequency matrix from f[i][a] with full pseudocount admixture (tau=1) -> g[i][a] \n+      t.PreparePseudocounts();\n+\n+      // DON\'T ADD amino acid pseudocounts to temlate: pcm=0!  t.p[i][a] = t.f[i][a]\n+      t.AddAminoAcidPseudocounts(0, par.pca, par.pcb, par.pcc);\n+     }\n+\n+  // Modify transition probabilities to include SS-dependent penalties\n+  if (par.ssgap) t.UseSecStrucDependentGapPenalties();\n+\n+  if (par.forward>=1) t.Log2LinTransitionProbs(1.0);  \n+\n+  // Factor Null model into HMM t\n+  // ATTENTION! t.p[i][a] is divided by pnul[a] (for reasons of efficiency) => do not reuse t.p\n+  t.IncludeNullModelInHMM(q,t);  // Can go BEFORE the loop if not dependent on template\n+  \n+  return;\n+}\n+\n+\n+/***    end of hhfunc-C.h   ***/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhfunc.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,25 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: hhfunc.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+
+int readHMMWrapper(hmm_light *rHMM_p,
+      char *pcHMM_input);
+void FreeHMMstruct(hmm_light *prHMM);
+int AlnToHMM2(hmm_light *rHMM_p,
+              char **ppcSeq, int iN);
+int HHMake_Wrapper(char *tmp_aln, char *hmm_out);
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,450 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: hhhalfalignment-C.h 227 2011-03-28 17:03:09Z fabian $\n+ */\n+\n+// hhfullalignment.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <stdio.h>    // printf\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+#include "util-C.h"     // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h"     // list data structure\n+#include "hash.h"     // hash data structure\n+#include "hhdecl-C.h"      // constants, class \n+#include "hhutil-C.h"      // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "hhhmm.h"       // class HMM\n+#include "hhalignment.h" // class Alignment\n+#include "hhhit.h"\n+#endif\n+\n+/////////////////////////////////////////////////////////////////////////////\n+/////////////////////////////////////////////////////////////////////////////\n+// Methods of class HalfAlignment\n+/////////////////////////////////////////////////////////////////////////////\n+/////////////////////////////////////////////////////////////////////////////\n+  \n+\n+\n+/////////////////////////////////////////////////////////////////////////////\n+// Constructor\n+HalfAlignment::HalfAlignment(int maxseqdis)\n+{\n+  n=0; \n+  sname=seq=NULL; \n+  nss_dssp = nss_pred = nss_conf = nsa_dssp = ncons= -1;\n+  h = new(int[maxseqdis]);   //h[k] = next position of sequence k to be written\n+  s = new(char*[maxseqdis]);  //s[k][h] = character in column h, sequence k of output alignment\n+  l = new(int*[maxseqdis]);   //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k\n+  m = new(int*[maxseqdis]);   //counts positions:        m[k][i] = position of match state i in string seq[k]  \n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+// Destructor\n+HalfAlignment::~HalfAlignment()\n+{\n+  Unset();\n+  delete[] h; h = NULL;\n+  delete[] s; s = NULL;\n+  delete[] l; l = NULL;\n+  delete[] m; m = NULL;\n+}\n+\n+\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Free memory in HalfAlignment arrays s[][], l[][], and m[][]\n+ */\n+void \n+HalfAlignment::Unset()\n+{\n+   // Free memory for alignment characters and residue counts\n+  for (int k=0; k<n; k++) \n+    {\n+      delete[] s[k]; s[k] = NULL;\n+      delete[] l[k]; l[k] = NULL;\n+      delete[] m[k]; m[k] = NULL;\n+    }\n+  n=0; \n+  sname=seq=NULL; \n+  nss_dssp = nss_pred = nss_conf = nsa_dssp = ncons= -1;\n+}\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Prepare a2m/a3m alignment: \n+ * Calculate l[k][i] (residue indices) and m[k][i] (position in seq[k]) \n+*/\n+void \n+HalfAlignment::Set(char* name, char** seq_in, char** sname_in, int n_in, int L_in, int n1, int n2, int n3, int n4, int nc, int L_in2/*<--FS*/)\n+{\n+    int i;     /* counts match states in seq[k] */\n+    int ll;    /* counts resi'..b'////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transform alignment sequences from A3M to A2M (insert ".")\n+ */\n+void \n+HalfAlignment::BuildA2M()\n+{\n+  AddInserts(0); \n+  FillUpGaps();\n+  for (int i=1; i<=L; i++)\n+    {\n+      AddColumn(i); \n+      AddInserts(i); \n+      FillUpGaps();\n+    }\n+  AddChar(\'\\0\');\n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transform alignment sequences from A3M to A2M (insert ".")\n+ */\n+void \n+HalfAlignment::BuildA3M()\n+{\n+  AddInserts(0); \n+  for (int i=1; i<=L; i++)\n+    {\n+      AddColumn(i); \n+      AddInserts(i); \n+    }\n+  AddChar(\'\\0\');\n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transform alignment sequences from A2M to FASTA ( lowercase to uppercase and \'.\' to \'-\')\n+ */\n+void \n+HalfAlignment::ToFASTA()\n+{\n+  for (int k=0; k<n; k++)\n+    {\n+      uprstr(s[k]);\n+      strtr(s[k],".","-");\n+    }\n+}\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Align query (HalfAlignment) to template (i.e. hit) match state structure\n+ */\n+void \n+HalfAlignment::AlignToTemplate(Hit& hit)\n+{\n+  int i,j;\n+  int step;    // column of the HMM-HMM alignment (first:nstep, last:1)\n+  char state;\n+\n+  if(0) {  //par.loc==0) { //////////////////////////////////////////// STILL NEEDED??\n+    // If in global mode: Add part of alignment before first MM state\n+    AddInserts(0); // Fill in insert states before first match state\n+    for (i=1; i<hit.i[hit.nsteps]; i++)\n+      {\n+\tAddColumnAsInsert(i);\n+\tAddInserts(i);\n+\tif (par.outformat<=2) FillUpGaps();\n+      }\n+  }\n+\n+  // Add endgaps (First state must be an MM state!!)\n+  for (j=1; j<hit.j[hit.nsteps]; j++)    \n+    {\n+      AddChar(\'-\');\n+    }\n+\n+  // Add alignment between first and last MM state\n+  for (step=hit.nsteps; step>=1; step--) \n+  {\n+    state = hit.states[step];\n+    i = hit.i[step];\n+\n+    switch(state)\n+      {\n+      case MM:  //MM pair state (both query and template in Match state)\n+\tAddColumn(i);\n+\tAddInserts(i);\n+\tbreak;\n+      case DG: //D- state\n+      case MI: //MI state\n+\tAddColumnAsInsert(i);\n+\tAddInserts(i);\n+\tbreak;\n+      case GD: //-D state\n+      case IM: //IM state\n+\tAddChar(\'-\');\n+\tbreak;\n+      }\n+    if (par.outformat<=2) FillUpGaps();\n+\n+  }\n+\n+  if(0) { //par.loc==0) { //////////////////////////////////////////// STILL NEEDED??\n+\n+    // If in global mode: Add part of alignment after last MM state\n+    for (i=hit.i[1]+1; i<=L; i++)    \n+      {\n+\tAddColumnAsInsert(i);\n+\tAddInserts(i);\n+\tif (par.outformat==2) FillUpGaps();\n+      }\n+  }\n+\n+  // Add endgaps \n+  for (j=hit.j[1]+1; j<=hit.L; j++)    \n+    {\n+      AddChar(\'-\');\n+    }\n+\n+  // Add end-of-string character\n+  AddChar(\'\\0\');\n+}\n+\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Write the a2m/a3m alignment into alnfile \n+ */\n+void \n+HalfAlignment::Print(char* alnfile)\n+{\n+  int k;      //counts sequences\n+  int omitted=0; // counts number of sequences with no residues in match states\n+  FILE *outf;\n+  if (strcmp(alnfile,"stdout"))\n+    {\n+      if (par.append) outf=fopen(alnfile,"a"); else outf=fopen(alnfile,"w");\n+      if (!outf) OpenFileError(alnfile);\n+    } \n+  else\n+    outf = stdout;\n+  if (v>=3) cout<<"Writing alignment to "<<alnfile<<"\\n";\n+\n+  for (k=0; k<n; k++)\n+    {\n+      // Print sequence only if it contains at least one residue in a match state\n+      if (1) //strpbrk(s[k],"ABCDEFGHIKLMNPQRSTUVWXYZ1234567890")) \n+\t{\n+\t  fprintf(outf,">%s\\n",sname[k]);\n+\t  fprintf(outf,"%s\\n",s[k]);\n+\t} else {\n+\t  omitted++;\n+\t  if (v>=3) printf("%-14.14s contains no residue in match state. Omitting sequence\\n",sname[k]);\n+\t}\n+    }\n+  if (v>=2 && omitted) printf("Omitted %i sequences in %s which contained no residue in match state\\n",omitted,alnfile);\n+  fclose(outf);\n+}\n+\n+\n+/** EOF hhhalfalignment-C.h **/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhalfalignment.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,101 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhhalfalignment.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Class representing a2m/a3m-formatted alignment corresponding to one HMM
+/////////////////////////////////////////////////////////////////////////////////////
+
+
+class HalfAlignment
+{
+public:
+  HalfAlignment(int maxseqdis=MAXSEQDIS);
+  ~HalfAlignment();
+
+  // Initialize HalfAlignment; create index arrays s [],l[], m[]
+  void Set(char* name, char** seq_in, char** sname_in, int n_in, int L_in, int n1, int n2, int n3, int n4, int nc, int L_in2/*<--FS*/);
+
+  // Free memory in HalfAlignment arrays s[][], l[][], and m[][]
+  void Unset();
+
+  // Align query (HalfAlignment) to template (i.e. hit) match state structure
+  void AlignToTemplate(Hit& hit); 
+
+  // Write the a2m/a3m query alignment into alnfile 
+  void Print(char* outfile);
+
+  // Fill in insert states following match state i
+  void AddInserts(int i);
+
+  // Fill up alignment with gaps '.' to generate flush end (all h[k] equal)
+  void FillUpGaps();
+
+  // Fill in insert states following match state i and fill up gaps with '.' 
+  void AddInsertsAndFillUpGaps(int i);
+
+  // Add gap column '.' or character column
+  void AddChar(char c);
+
+  // Add match state column i as is
+  void AddColumn(int i);
+
+  // Add match state column i as insert state
+  void AddColumnAsInsert(int i);
+
+  // Build alignment in FASTA format
+  void BuildFASTA();
+
+  // Build alignment in A2M format
+  void BuildA2M();
+
+  // Build alignment in A3M format
+  void BuildA3M();
+
+  // Transform alignment sequences from A2M to FASTA ( lowercase to uppercase and '.' to '-')
+  void ToFASTA();
+
+  // Remove all characters c from template sequences
+  void RemoveChars(char c);
+
+private:
+  friend class FullAlignment;
+
+  int n;           //number of sequences in half-alignment
+  char** seq;      //sequences (in ASCII) in alignment
+  char** sname;    //names of sequences in alignment
+  int nss_dssp;    //index of sequence with dssp sec structure states
+  int nsa_dssp;    //index of sequence with dssp solvent accessiblity states
+  int nss_pred;    //index of sequence with predicted sec structure states
+  int nss_conf;    //index of sequence with prediction confidence values
+  int ncons;       //index of consensus sequence
+    
+  int pos;         //After FillUpGaps() all h[k] have value pos 
+  int L;           //number of match states in corresponding profile
+  int* h;          //h[k] = next position of sequence k to be written
+  char** s;        //s[k][h] = column h, sequence k of output alignment
+  int** l;         //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k 
+  int** m;         //counts positions:        m[k][i] = position of match state i in string seq[k]
+/*   int h[MAXSEQ];   //h[k] = next position of sequence k to be written */
+/*   char* s[MAXSEQ]; //s[k][h] = column h, sequence k of output alignment */
+/*   int* l[MAXSEQ];  //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k  */
+/*   int* m[MAXSEQ];  //counts positions:        m[k][i] = position of match state i in string seq[k] */
+};
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,2204 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhhit-C.h 237 2011-04-14 15:01:48Z fabian $\n+ */\n+\n+// hhhit.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <stdio.h>    // printf\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+#include "util-C.h"     // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h"     // list data structure\n+#include "hash.h"     // hash data structure\n+#include "hhdecl-C.h"      // constants, class \n+#include "hhutil-C.h"      // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "hhhmm.h"       // class HMM\n+#include "hhalignment.h" // class Alignment\n+#include "hhhitlist.h"   // class HitList\n+#endif\n+\n+#define CALCULATE_MAX6(max, var1, var2, var3, var4, var5, var6, varb) \\\n+if (var1>var2) { max=var1; varb=STOP;} \\\n+else           { max=var2; varb=MM;}; \\\n+if (var3>max)  { max=var3; varb=GD;}; \\\n+if (var4>max)  { max=var4; varb=IM;}; \\\n+if (var5>max)  { max=var5; varb=DG;}; \\\n+if (var6>max)  { max=var6; varb=MI;}; \n+\n+#define CALCULATE_SUM6(sum, var1, var2, var3, var4, var5, var6, varb) \\\n+if (var1>var2) { sum=var1; varb=STOP;} \\\n+else           { sum=var2; varb=MM;}; \\\n+if (var3>sum)  { sum=var3; varb=GD;}; \\\n+if (var4>sum)  { sum=var4; varb=IM;}; \\\n+if (var5>sum)  { sum=var5; varb=DG;}; \\\n+if (var6>sum)  { sum=var6; varb=MI;}; \\\n+sum = var1 + var2 + var3 + var4 + var5 + var6;\n+\n+#define CALCULATE_MAX4(max, var1, var2, var3, var4, varb) \\\n+if (var1>var2) { max=var1; varb=STOP;} \\\n+else           { max=var2; varb=MM;}; \\\n+if (var3>max)  { max=var3; varb=MI;}; \\\n+if (var4>max)  { max=var4; varb=IM;}; \n+\n+// Generate random number in [0,1[\n+#define frand() ((float) rand()/(RAND_MAX+1.0))\n+\n+\n+// Function declarations\n+inline float Score(float* qi, float* tj);\n+inline float ProbFwd(float* qi, float* tj);\n+inline float max2(const float& xMM, const float& xX, char& b); \n+inline int pickprob2(const double& xMM, const double& xX, const int& state); \n+inline int pickprob3_GD(const double& xMM, const double& xDG, const double& xGD); \n+inline int pickprob3_IM(const double& xMM, const double& xMI, const double& xIM); \n+inline int pickprob6(const double& x0, const double& xMM, const double& xGD, const double& xIM, const double& xDG, const double& xMI); \n+inline int pickmax2(const double& xMM, const double& xX, const int& state); \n+inline int pickmax3_GD(const double& xMM, const double& xDG, const double& xGD); \n+inline int pickmax3_IM(const double& xMM, const double& xMI, const double& xIM); \n+inline int pickmax6(const double& x0, const double& xMM, const double& xGD, const double& xIM, const double& xDG, const double& xMI); \n+inline double Pvalue(double x, double a[]);\n+inline double Pvalue(float x, float lamda, float mu);\n+inline double logPvalue(float x, float lamda, float mu);\n+inline double logPvalue(float x, double a[]);\n+inline double Probab(Hit& hit);\n+\n+////////////////////'..b'k[j]*Weff_M;\n+// \t      Q.tr_lin[i][D2M]+= t.tr_lin[j][D2M]*wk[j]*Weff_D;\n+// \t      Q.tr_lin[i][D2D]+= t.tr_lin[j][D2D]*wk[j]*Weff_D;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][I2I]*wk[j]*Weff_I;\n+// \t      Q.tr_lin[i][M2M]+= t.tr_lin[j][I2M]*wk[j]*Weff_I;\n+// \t      break;\n+// \t    }\n+// \t  break;\n+\t  \n+// \tcase IM: // if gap in query  \n+// \t  Weff_M = Weff(t.Neff_M[j]-1.0);\n+// \t  switch(states[step-1])\n+// \t    {\n+// \t    case IM:  // IM->IM\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2M]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2D]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2I]*wk[j]*Weff_M;\n+// \t      break;\n+// \t    case MM:  // IM->MM\n+// \t      Weff_D = Weff(t.Neff_D[j]-1.0);\n+// \t      Weff_I = Weff(t.Neff_I[j]-1.0);\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2M]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2D]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2I]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][D2M]*wk[j]*Weff_D;\n+// \t      Q.tr_lin[i][D2D]+= t.tr_lin[j][D2D]*wk[j]*Weff_D;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][I2M]*wk[j]*Weff_I;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][I2I]*wk[j]*Weff_I;\n+// \t      break;\n+// \t    }\n+// \t  break;\n+\t  \n+// \tcase GD:   \n+// \t  Weff_M = Weff(t.Neff_M[j]-1.0);\n+// \t  switch(states[step-1])\n+// \t    {\n+// \t    case GD:  // GD->GD\n+// \t      Weff_I = Weff(t.Neff_I[j]-1.0);\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2M]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2D]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2I]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][I2M]*wk[j]*Weff_I;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][I2I]*wk[j]*Weff_I;\n+// \t      break;\n+// \t    case MM:  // GD->MM\n+// \t      Weff_D = Weff(t.Neff_D[j]-1.0);\n+// \t      Weff_I = Weff(t.Neff_I[j]-1.0);\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2M]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][M2D]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][M2I]*wk[j]*Weff_M;\n+// \t      Q.tr_lin[i][D2D]+= t.tr_lin[j][D2D]*wk[j]*Weff_D;\n+// \t      Q.tr_lin[i][I2M]+= t.tr_lin[j][I2M]*wk[j]*Weff_I;\n+// \t      Q.tr_lin[i][I2I]+= t.tr_lin[j][I2I]*wk[j]*Weff_I;\n+// \t      break;\n+// \t    }\n+// \t  break;\n+\n+// \t}\n+//     }\n+//   i = this->i[step];\n+//   j = this->j[step];\n+//   Weff_M = Weff(t.Neff_M[j]-1.0);\n+//   for (a=0; a<20; a++) Q.f[i][a] += t.f[j][a]*wk[j]*Weff_M;\n+// }\n+\n+\n+#ifdef CLUSTALO\n+/* @* Hit::ClobberGlobal (eg, hit)\n+ *\n+ */\n+void \n+Hit::ClobberGlobal(void){\n+\n+    if (i){\n+      //delete[] i; \n+      i = NULL;\n+    }\n+    if (j){\n+      //delete[] j; \n+      j = NULL;\n+    }\n+    if (states){\n+      //delete[] states; \n+      states = NULL;\n+    }\n+    if (S){\n+      //delete[] S; \n+      S = NULL;\n+    }\n+    if (S_ss){\n+      //delete[] S_ss; \n+      S_ss = NULL;\n+    }\n+    if (P_posterior){\n+      //delete[] P_posterior; \n+      P_posterior = NULL;\n+    }\n+    if (Xcons){\n+      //delete[] Xcons; \n+      Xcons = NULL;\n+    }\n+    //  delete[] l;    l = NULL;\n+    i = j = NULL;\n+    states = NULL;\n+    S = S_ss = P_posterior = NULL;\n+    Xcons = NULL;\n+    if (irep==1) // if irep>1 then longname etc point to the same memory locations as the first repeat. \n+      {          // but these have already been deleted.\n+\t// \tprintf("Delete name = %s\\n",name);//////////////////////////\n+\t//delete[] longname; \n+\tlongname = NULL;\n+\t//delete[] name; \n+\tname = NULL;\n+\t//delete[] file; \n+\tfile = NULL;\n+\t//delete[] dbfile; \n+\tdbfile = NULL;\n+\t/*for (int k=0; k<n_display; k++) \n+\t  {\n+\t  delete[] sname[k]; sname[k] = NULL;\n+\t  delete[] seq[k]; seq[k] = NULL;\n+\t  }*/\n+\t//delete[] sname; \n+\tsname = NULL;\n+\t//delete[] seq; \n+\tseq = NULL;\n+      }\n+\n+    score = score_sort = score_aass = 0.0;\n+    Pval = Pvalt = Eval = Probab = 0;\n+    Pforward = sum_of_probs = 0.00;\n+    L = irep = nrep = n_display = nsteps = 0;\n+    i1 = i2 = j1 = j2 = matched_cols = min_overlap = 0;\n+}\n+#endif\n+\n+\n+/*\n+ * EOF hhhit-C.h\n+ */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhit.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,192 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhhit.h 143 2010-10-14 13:11:14Z andreas $\n+ */\n+\n+// hhhit.h\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/* Describes an alignment of two profiles. \n+   Used as list element in Hits : List<Hit> */\n+//////////////////////////////////////////////////////////////////////////////\n+class Hit\n+{\n+ public:  \n+  char* longname;       // Name of HMM\n+  char* name;           // One-word name of HMM\n+  char* file;           // Basename (with path, without extension) of alignment file that was used to construct the HMM\n+                        // (path from db-file is prepended to FILE record in HMM file!)\n+  char fam[IDLEN];      // family ID (derived from name) (FAM field)\n+  char sfam[IDLEN];     // superfamily ID (derived from name) \n+  char fold[IDLEN];     // fold ID (derived from name)\n+  char cl[IDLEN];       // class ID (derived from name)\n+  int index;            // index of HMM in order of reading in (first=0)\n+  char* dbfile;         // full database file name from which HMM was read\n+  long ftellpos;        // start position of HMM in database file\n+\n+  float score;          // Score of alignment (i.e. of Viterbi path)\n+  float score_sort;     // score to sort hits in output list (negative means first/best!)\n+  float score_aass;     // first: just hit.score, then hit.logPval-SSSCORE2NATLOG*hit.score_ss;(negative means best!)\n+  float score_ss;       // Part of score due to secondary structure\n+  float Pval;           // P-value for whole protein based on score distribution of query\n+  float Pvalt;          // P-value for whole protein based on score distribution of template\n+  float logPval;        // natural logarithm of Pval\n+  float logPvalt;       // natural logarithm of Pvalt\n+  float Eval;           // E-value for whole protein\n+  float Probab;         // probability in % for a positive (depends only on score)\n+  float weight;         // weight of hit for P-value calculation (= 1/#HMMs-in-family/#families-in-superfamily)\n+  double Pforward;      // scaled total forward probability : Pforward * Product_{i=1}^{Lq+1}(scale[i])\n+  \n+/*   float score_comp;     // compositional similarity score */\n+/*   float logPcomp;       // natural logarithm of Pvalue for compositional similarity score */\n+/*   float Prep;           // P-value for single-repeat hit */\n+/*   float Erep;           // E-value for single-repeat hit */\n+/*   float logPrep;        // natural logarithm of P-value for single-repeat hit */\n+  float E1val;          // E-value for whole protein from transitive scoring\n+  float logP1val;       // natural logarithm of P1val, the transitive P-value\n+\n+  int L;                // Number of match states in template\n+  int irep;             // Index  of single-repeat hit (1: highest scoring repeat hit)\n+  int nrep;             // Number of single-repeat hits with one template\n+  \n+  int n_display;        // number of sequences stored for display of alignment \n+  char** sname;         // names of stored sequences \n+  char** seq;           // residues of stored sequences (first at pos 1)\n+  int nss_dssp;         // index of dssp secondary structure sequence in seq[]\n+  int nsa_dssp;         // index of of dssp solvent accessibility in seq[]\n+  int nss_pred;         // index of dssp secondary structure sequence in seq[]\n+  int'..b'  int min_overlap;      // Minimum overlap between query and template\n+  float sum_of_probs;   // sum of probabilities for Maximum ACcuracy alignment (if dssp states defined, only aligned pairs with defined dssp state contribute to sum)\n+  float Neff_HMM;       // Diversity of underlying alignment\n+\n+  // Constructor (only set pointers to NULL)\n+  Hit();\n+  ~Hit(){};\n+  \n+  // Free all allocated memory (to delete list of hits)\n+  void Delete();\n+\n+  // Allocate/delete memory for dynamic programming matrix\n+  void AllocateBacktraceMatrix(int Nq, int Nt);\n+  void DeleteBacktraceMatrix(int Nq);\n+  void AllocateForwardMatrix(int Nq, int Nt);\n+  void DeleteForwardMatrix(int Nq);\n+  void AllocateBackwardMatrix(int Nq, int Nt);\n+  void DeleteBackwardMatrix(int Nq);\n+  \n+  // Compare an HMM with overlapping subalignments\n+  void Viterbi(HMM& q, HMM& t, float** Sstruc=NULL);\n+\n+  // Compare two HMMs with each other in lin space\n+  void Forward(HMM& q, HMM& t, float** Pstruc=NULL);\n+\n+  // Compare two HMMs with each other in lin space\n+  void Backward(HMM& q, HMM& t);\n+\n+   // Find maximum accuracy alignment (after running Forward and Backward algorithms)\n+  void MACAlignment(HMM& q, HMM& t);\n+\n+  // Trace back alignment of two profiles based on matrices bXX[][]\n+  void Backtrace(HMM& q, HMM& t);\n+\n+  // Trace back alignment of two profiles based on matrices bXX[][]\n+  void StochasticBacktrace(HMM& q, HMM& t, char maximize=0);\n+\n+  // Trace back MAC alignment of two profiles based on matrix bMM[][]\n+  void BacktraceMAC(HMM& q, HMM& t);\n+\n+  // Calculate secondary structure score between columns i and j of two HMMs (query and template)\n+  inline float ScoreSS(HMM& q, HMM& t, int i, int j, int ssm);\n+\n+  // Calculate secondary structure score between columns i and j of two HMMs (query and template)\n+  inline float ScoreSS(HMM& q, HMM& t, int i, int j);\n+\n+  // Calculate total score (including secondary structure score and compositional bias correction\n+  inline float ScoreTot(HMM& q, HMM& t, int i, int j);\n+\n+  // Calculate score (excluding secondary structure score and compositional bias correction\n+  inline float ScoreAA(HMM& q, HMM& t, int i, int j);\n+\n+  // Comparison (used to sort list of hits)\n+  int operator<(const Hit& hit2)  {return score_sort<hit2.score_sort;}\n+\n+  // Merge HMM with next aligned HMM  \n+  void MergeHMM(HMM& Q, HMM& t, float wk[]);\n+\n+#ifdef CLUSTALO\n+  void ClobberGlobal(void);\n+#endif  \n+\n+\n+  double** B_MM;        // Backward matrices\n+  \n+private:\n+  char state;          // 0: Start/STOP state  1: MM state  2: GD state (-D)  3: IM state  4: DG state (D-)  5 MI state\n+  char** bMM;          // (backtracing) bMM[i][j] = STOP:start of alignment  MM:prev was MM  GD:prev was GD etc\n+  char** bGD;          // (backtracing) bMM[i][j] = STOP:start of alignment  MM:prev was MM  SAME:prev was GD\n+  char** bDG;          // (backtracing)\n+  char** bIM;          // (backtracing)\n+  char** bMI;          // (backtracing)\n+  char** cell_off;     // cell_off[i][j]=1 means this cell will get score -infinity\n+\n+  double** F_MM;        // Forward matrices \n+  double** F_GD;        // F_XY[i][j] * Prod_1^i(scale[i]) \n+  double** F_DG;        //   = Sum_x1..xl{ P(HMMs aligned up to Xi||Yj co-emmitted x1..xl ) / (Prod_k=1^l f(x_k)) }   \n+  double** F_IM;        // end gaps are not penalized!\n+  double** F_MI;        // \n+  double* scale;        // \n+\n+  double** B_GD;        // B_XY[i][j] * Prod_i+1^(L+1) (scale[i])\n+  double** B_DG;        //   = Sum_x2..xl{ P(HMMs aligned from Xi||Yj to end co-emmitted x2..xl ) / (Prod_k=2^l f(x_k)) }   \n+  double** B_IM;        // end gaps are not penalized!\n+  double** B_MI;        // \n+\n+  void InitializeBacktrace(HMM& q, HMM& t);\n+  void InitializeForAlignment(HMM& q, HMM& t);\n+};\n+\n+\n+double Pvalue(double x, double a[]);\n+double Pvalue(float x, float lamda, float mu);\n+double logPvalue(float x, float lamda, float mu);\n+double logPvalue(float x, double a[]);\n+double Probab(Hit& hit);\n+\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,3198 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhhitlist-C.h 199 2011-02-21 18:24:49Z fabian $\n+ */\n+\n+// hhhitlist.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <stdio.h>    // printf\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+#include "util-C.h"     // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h"     // list data structure\n+#include "hash.h"     // hash data structure\n+#include "hhdecl-C.h"      // constants, class \n+#include "hhutil-C.h"      // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "hhhmm.h"       // class HMM\n+#include "hhalignment.h" // class Alignment\n+#include "hhhit.h"\n+#include "hhhalfalignment.h"\n+#include "hhfullalignment.h"\n+#endif\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//////////////////////////////////////////////////////////////////////////////\n+//// Methods of class HitList\n+//////////////////////////////////////////////////////////////////////////////\n+//////////////////////////////////////////////////////////////////////////////\n+\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Print summary listing of hits\n+ */\n+void \n+HitList::PrintHitList(HMM& q, char* outfile)\n+{\n+  Hit hit;\n+  int nhits=0;\n+  char str[NAMELEN]="";\n+\n+  FILE* outf=NULL;\n+  if (strcmp(outfile,"stdout"))\n+    {\n+      outf=fopen(outfile,"w");\n+      if (!outf) OpenFileError(outfile);\n+    }\n+  else\n+    outf = stdout;\n+\n+\n+  fprintf(outf,"Query         %s\\n",q.longname); \n+//  fprintf(outf,"Family        %s\\n",q.fam); \n+  fprintf(outf,"Match_columns %i\\n",q.L);\n+  fprintf(outf,"No_of_seqs    %i out of %i\\n",q.N_filtered,q.N_in);\n+  fprintf(outf,"Neff          %-4.1f\\n",q.Neff_HMM);\n+  fprintf(outf,"Searched_HMMs %i\\n",N_searched);\n+  \n+  // Print date stamp\n+  time_t* tp=new(time_t);\n+  *tp=time(NULL);\n+  fprintf(outf,"Date          %s",ctime(tp));\n+  delete (tp); (tp) = NULL;\n+  \n+  // Print command line\n+  fprintf(outf,"Command       "); \n+  for (int i=0; i<par.argc; i++) \n+    if (strlen(par.argv[i])<=par.maxdbstrlen)\n+      fprintf(outf,"%s ",par.argv[i]);\n+    else\n+      fprintf(outf,"<%i characters> ",(int)strlen(par.argv[i]));\n+  fprintf(outf,"\\n\\n"); \n+   \n+#ifdef WINDOWS   \n+  if (par.trans) \n+    fprintf(outf," No Hit                             Prob  E-trans  E-value  Score    SS Cols Query HMM  Template HMM\\n");\n+  else \n+    fprintf(outf," No Hit                             Prob  E-value  P-value  Score    SS Cols Query HMM  Template HMM\\n");\n+#else\n+  if (par.trans) \n+    fprintf(outf," No Hit                             Prob E-trans E-value  Score    SS Cols Query HMM  Template HMM\\n");\n+  else \n+    fprintf(outf," No Hit                             Prob E-value P-value  Score    SS Cols Query HMM  Template HMM\\n");\n+#endif\n+\n+  Reset();\n+  while (!End()) // print hit lis'..b'[l])+anorm) == anorm) {\n+\t  flag=0;\n+\t  break;\n+\t}\n+\tif ((double)(fabs(w[nm])+anorm) == anorm) break;\n+      }\n+      if (flag) {\n+\t// Cancellation of rv1[l], if l > 1.\n+\tc=0.0;\n+\ts=1.0;\n+\tfor (i=l;i<=k;i++) {\n+\t  f=s*rv1[i];\n+\t  rv1[i]=c*rv1[i];\n+\t  if ((double)(fabs(f)+anorm) == anorm) break;\n+\t  g=w[i];\n+\t  h=pythag(f,g);\n+\t  w[i]=h;\n+\t  h=1.0/h;\n+\t  c=g*h;\n+\t  s = -f*h;\n+\t  for (j=0;j<m;j++) {\n+\t    y=A[nm][j];\n+\t    z=A[i][j];\n+\t    A[nm][j]=y*c+z*s;\n+\t    A[i][j]=z*c-y*s;\n+\t  }\n+\t}\n+      }\n+      z=w[k];\n+      // Convergence.\n+      if (l == k) {\n+\t// Singular value is made nonnegative.\n+\tif (z < 0.0) {\n+\t  w[k] = -z;\n+\t  for (j=0;j<n;j++) V[k][j] = -V[k][j];\n+\t}\n+\tbreak;\n+      }\n+      if (its == 30) {printf("Error in SVD: no convergence in 30 iterations\\n"); exit(7);}\n+      // Shift from bottom 2-by-2 minor.\n+      x=w[l];\n+      nm=k-1;\n+      y=w[nm];\n+      g=rv1[nm];\n+      h=rv1[k];\n+      f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y);\n+      g=pythag(f,1.0);\n+      f=((x-z)*(x+z)+h*((y/(f+SIGN(g,f)))-h))/x;\n+      // Next QR transformation:\n+      c=s=1.0;\n+      for (j=l;j<=nm;j++) {\n+\ti=j+1;\n+\tg=rv1[i];\n+\ty=w[i];\n+\th=s*g;\n+\tg=c*g;\n+\tz=pythag(f,h);\n+\trv1[j]=z;\n+\tc=f/z;\n+\ts=h/z;\n+\tf=x*c+g*s;\n+\tg = g*c-x*s;\n+\th=y*s;\n+\ty *= c;\n+\tfor (jj=0;jj<n;jj++) {\n+\t  x=V[j][jj];\n+\t  z=V[i][jj];\n+\t  V[j][jj]=x*c+z*s;\n+\t  V[i][jj]=z*c-x*s;\n+\t}\n+\tz=pythag(f,h);\n+\t// Rotation can be arbitrary if z = 0.\n+\tw[j]=z;\n+\tif (z) {\n+\t  z=1.0/z;\n+\t  c=f*z;\n+\t  s=h*z;\n+\t}\n+\tf=c*g+s*y;\n+\tx=c*y-s*g;\n+\t\n+\tfor (jj=0;jj<m;jj++) {\n+\t  y=A[j][jj];\n+\t  z=A[i][jj];\n+\t  A[j][jj]=y*c+z*s;\n+\t  A[i][jj]=z*c-y*s;\n+\t}\n+      }\n+      rv1[l]=0.0;\n+      rv1[k]=f;\n+      w[k]=x;\n+    }\n+  }\n+  TransposeMatrix(V,n);\n+  TransposeMatrix(A,n);\n+  delete[](rv1); (rv1) = NULL;\n+}\n+\n+/**\n+ * @brief Computes (a2 + b2 )^1/2 without destructive underflow or overflow.\n+ */\n+double \n+pythag(double a, double b)\n+{\n+  double absa,absb;\n+  absa=fabs(a);\n+  absb=fabs(b);\n+  if (absa > absb) \n+    return absa*sqrt(1.0+SQR(absb/absa));\n+  else \n+    return (absb == 0.0 ? 0.0 : absb*sqrt(1.0+SQR(absa/absb)));\n+}\n+\n+\n+/* @* HitList::ClobberGlobal(void)\n+ */\n+void \n+HitList::ClobberGlobal(void){\n+\n+\n+  /* @<variables local to HitList::ClobberGlobal@> */\n+  class List<Hit>::ListEl<Hit>  *pvIter = head;\n+\n+  /* NOTE: no free/delete-ing of data to be done here \n+     hitlist only holds a shallow copy of hit; \n+     hit is being cleared off properly.\n+     just reset everything to 0/0.0/NULL.\n+     The only important thing to do at this stage \n+     is to attach head and tail and set size = 0\n+     (FS, 2010-02-18)\n+\n+     NOTE: I only ever saw 1 (one) in-between element, \n+     but there may ctually be a real linked list \n+     of more than 1 element (FS, 2010-02-18)\n+  */\n+\n+  //  printf("POINTER:\\t%p\\t=HEAD\\n", head);\n+  while (pvIter->next != tail){\n+\n+    //    printf("POINTER:\\t%p->\\t%p\\n", pvIter, pvIter->next);\n+    pvIter = pvIter->next;\n+\n+#if 1\n+    pvIter->data.longname = pvIter->data.name = \n+      pvIter->data.file = pvIter->data.dbfile = NULL;\n+    pvIter->data.sname = NULL;\n+    pvIter->data.seq = NULL;\n+    pvIter->data.self = 0;\n+    pvIter->data.i = pvIter->data.j = NULL;\n+    pvIter->data.states = NULL;\n+    pvIter->data.S = pvIter->data.S_ss = pvIter->data.P_posterior = NULL;\n+    pvIter->data.Xcons = NULL;\n+    pvIter->data.sum_of_probs = 0.0;\n+    pvIter->data.Neff_HMM = 0.0;\n+    pvIter->data.score_ss = pvIter->data.Pval = pvIter->data.logPval = \n+      pvIter->data.Eval = pvIter->data.Probab = pvIter->data.Pforward = 0.0;\n+    pvIter->data.nss_conf = pvIter->data.nfirst = \n+      pvIter->data.i1 = pvIter->data.i2 = pvIter->data.j1 = pvIter->data.j2 = \n+      pvIter->data.matched_cols = pvIter->data.ssm1 = pvIter->data.ssm2 = 0;\n+#endif\n+  }\n+  //  printf("POINTER:\\t\\t\\t%p=TAIL\\n", tail);\n+\n+\n+  head->next = tail;\n+  tail->prev = head;\n+  size = 0;\n+\n+  /* @= */\n+  return;\n+\n+} /* this is the end of HitList::ClobberGlobal() */\n+\n+\n+/*\n+ * EOF hhhitlist-C.h\n+ */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhitlist.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,140 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhhitlist.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+// hhhitlist.h
+
+//////////////////////////////////////////////////////////////////////////////
+// HitList is a list of hits of type Hit 
+// which can be operated upon by several anaylsis methods 
+//////////////////////////////////////////////////////////////////////////////
+class HitList : public List<Hit>
+{
+private:
+  double score[MAXPROF];        // HHsearch score of each HMM for ML fit
+  double weight[MAXPROF];       // weight of each HMM = 1/(size_fam[tfam]*size_sfam[hit.sfam]) for ML fit
+  int Nprof;                    // Number of HMMs for ML fit
+
+public:
+  int fams;                   // number of families found found in hitlist
+  int sfams;                  // number of superfamilies found in hitlist
+  int N_searched;             // number of sequences searched from HMM database
+  Hash<float>* blast_logPvals;/* Hash containing names and log(P-values) 
+  read from BLAST file (needed for HHblast) */
+
+  HitList() {blast_logPvals=NULL;}
+  ~HitList() {if (blast_logPvals) delete blast_logPvals;}
+
+  // Print summary listing of hits
+  void PrintHitList(HMM& q, char* outfile);
+
+#ifdef CLUSTALO
+  void ClobberGlobal(void);
+#endif
+
+  // Print alignments of query sequences against hit sequences 
+  void PrintAlignments(
+#ifdef CLUSTALO
+        char **ppcFirstProf, char **ppcSecndProf, 
+#endif
+        HMM& q, char* outfile, char outformat=0);
+
+  // Return a figure of merit for distinction of the score with positive from the scores with negatives
+  void Optimize(HMM& q, char* buffer);
+
+  // Print score distribution into file score_dist
+  void PrintScoreFile(HMM& q);
+  
+  // Log likelihood for fitting the EVD to the score distribution
+  double RankOrderFitCorr(double* v);
+  // Static wrapper-function for calling the nonstatic member function RankOrderFitCorr()
+  static double RankOrderFitCorr_static(void* pt2hitlist, double* v);
+
+  // Log likelihood for fitting the EVD to the score distribution
+  double LogLikelihoodCorr(double* v);
+  // Static wrapper-function for calling the nonstatic member function LogLikelihoodCorr()
+  static double LogLikelihoodCorr_static(void* pt2hitlist, double* v);
+
+  // Log likelihood for fitting the EVD to the score distribution
+  double LogLikelihoodEVD(double* v);
+  // Static wrapper-function for calling the nonstatic member function LogLikelihoodEVD()
+  static double LogLikelihoodEVD_static(void* pt2hitlist, double* v);
+
+
+  // Subroutine to FindMin: new point given by highest point ihigh, fac and replaces ihigh if it is lower 
+  double TryPoint(int ndim, double* p, double* y, double* psum, int ihigh, double fac, double (*Func)(void* pt2hitlist, double* v));
+  
+  // Find minimum with simplex method of Nelder and Mead (1965)
+  float FindMin(int ndim, double* p, double* y, double tol, int& nfunc, double (*Func)(void* pt2hitlist, double* v));
+  
+  // Do a maximum likelihood fit of the scores with an EV distribution with parameters lamda and mu 
+  void MaxLikelihoodEVD(HMM& q, int nbest);
+  
+  // Calculate correlation and score offset for HHblast composite E-values 
+  void CalculateHHblastCorrelation(HMM& q);
+
+  // Calculate HHblast composite E-values 
+  void CalculateHHblastEvalues(HMM& q);
+
+  // Calculate Pvalues as a function of query and template lengths and diversities
+  void CalculatePvalues(HMM& q);
+
+  // Set P-values, E-values and scores according to q.lamda and q.mu (if calibration from database scan is impossible)  
+  void GetPvalsFromCalibration(HMM& q);
+
+  // HHblast: read PSI-BLAST E-values to determine correlation
+  void ReadBlastFile(HMM& q);
+
+  // Print first 20 hits of hitlist
+  void Debug() 
+    {
+      Hit hit;
+      int i=0;
+      Reset();
+      printf("TARGET     FAMILY     LEN COL LOG-PVA  S-AASS PROBAB SCORE_SORT\n");
+      while (++i<=20 && !End()) 
+ {
+   hit = ReadNext();
+   printf("%-10.10s %-10.10s %3i %3i %s %7.2f %6.2f %6.2f\n",hit.name,hit.fam,hit.L,hit.matched_cols,sprintg(-1.443*hit.logPval,7),-hit.score_aass,hit.Probab,hit.score_sort);
+ }      
+    }
+
+  // Calculate P-values and Probabilities from transitive scoring over whole database
+  void TransitiveScoring();
+  void TransitiveScoring2();
+  void TransitiveScoring3();
+  void TransitiveScoring4();
+
+  // Score2Z transforms the -log(P-value) score into a Z-score for 0 < S
+  double Score2Z(double S);
+
+  // Z2Score transforms the Z-score into a -log(P-value) value
+  double Z2Score(double Z);
+
+  // Matrix manipulation
+  void PrintMatrix(float** V, int N);
+  void PrintMatrix(double** V, int N);
+  float NormalizationFactor(double** Csub,float* w, int M);
+  void Normalize(float* Ztq, char** fold, Hash<int>& excluded);
+  void InvertMatrix(double** B, double** A, int N);
+  void TransposeMatrix(double** V, int N);
+  void SVD(double **A, int n, double w[], double **V);
+
+};
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,2637 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhhmm-C.h 224 2011-03-23 12:13:33Z fabian $\n+ */\n+\n+\n+// hhhmm.C\n+\n+#ifndef MAIN\n+#define MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <stdio.h>    // printf\n+using std::cout;\n+using std::cerr;\n+using std::endl;\n+using std::ios;\n+using std::ifstream;\n+using std::ofstream;\n+#include <stdlib.h>   // exit\n+#include <string>     // strcmp, strstr\n+#include <math.h>     // sqrt, pow\n+#include <limits.h>   // INT_MIN\n+#include <float.h>    // FLT_MIN\n+#include <time.h>     // clock\n+#include <ctype.h>    // islower, isdigit etc\n+#include "util-C.h"     // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#include "list.h"     // list data structure\n+#include "hash.h"     // hash data structure\n+#include "hhdecl-C.h"\n+#include "hhutil-C.h"   // imax, fmax, iround, iceil, ifloor, strint, strscn, strcut, substr, uprstr, uprchr, Basename etc.\n+#endif\n+\n+// #ifndef WNLIB\n+// #define WNLIB\n+// #include "wnconj.h"   // Will Naylor\'s wnlib for optimization in C \n+// #endif\n+\n+//////////////////////////////////////////////////////////////////////////////\n+//// Class HMM\n+//////////////////////////////////////////////////////////////////////////////\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Object constructor\n+//////////////////////////////////////////////////////////////////////////////\n+HMM::HMM(int maxseqdis, int maxres)\n+{\n+  sname = new char*[maxseqdis];   // names of stored sequences \n+  for (int i = 0; i < maxseqdis; i++){ sname[i] = NULL;}\n+  seq = new char*[maxseqdis];     // residues of stored sequences (first at pos 1!)\n+  for (int i = 0; i < maxseqdis; i++){ seq[i] = NULL;}\n+  Neff_M = new float[maxres];     // Neff_M[i] = diversity of subalignment of seqs that have residue in col i\n+  Neff_I = new float[maxres];     // Neff_I[i] = diversity of subalignment of seqs that have insert in col i\n+  Neff_D = new float[maxres];     // Neff_D[i] = diversity of subalignment of seqs that have delete in col i\n+  longname = new char[DESCLEN];   // Full name of first sequence of original alignment (NAME field)\n+  ss_dssp = new char[maxres];     // secondary structure determined by dssp 0:-  1:H  2:E  3:C  4:S  5:T  6:G  7:B\n+  sa_dssp = new char[maxres];     // solvent accessibility state determined by dssp 0:-  1:A (absolutely buried) 2:B  3:C  4:D  5:E (exposed)\n+  ss_pred = new char[maxres];     // predicted secondary structure          0:-  1:H  2:E  3:C\n+  ss_conf = new char[maxres];     // confidence value of prediction         0:-  1:0 ... 10:9\n+  Xcons   = NULL;                 // create only when needed: consensus sequence in internal representation (A=0 R=1 N=2 D=3 ...)\n+  l = new int[maxres];            // l[i] = pos. of j\'th match state in aligment\n+  /* FS introduced sentinel, NULL terminates loop in destructor, FS, r221->222 */\n+  f = new float*[maxres+1];   f[maxres] = NULL;  // f[i][a] = prob of finding amino acid a in column i WITHOUT pseudocounts\n+  g = new float*[maxres+1];   g[maxres] = NULL;  // f[i][a] = prob of finding amino acid a in column i WITH pseudocounts\n+  p = new float*[maxres+1];   p[maxres] = NULL;  // p[i][a] = prob of finding amino acid a in column i WITH OPTIMUM pseudocounts\n+  tr = new float*[maxre'..b']*x[b];\n+  \n+//   for (int a=0; a<20; ++a) w[a] = x[a]*z[a]-qav[a];\n+//   for (int a=0; a<20; ++a)\n+//     {\n+//       tmp = w[a]*z[a];\n+//       for (int b=0; b<20; ++b) tmp += P[a][b]*x[b]*w[b];\n+//       grad[a] = 2.0*tmp;\n+//     }\n+//   return;\n+// }\n+\n+\n+// /////////////////////////////////////////////////////////////////////////////////////\n+// //// Rescale a substitution matrix to biased aa frequencies in global vector qav[a]\n+// /////////////////////////////////////////////////////////////////////////////////////\n+// void HMM::RescaleMatrix() \n+// {\n+//   int a,b;\n+//   int code;\n+//   double x[21];     // scaling factor\n+//   double val_min;\n+//   const int len=20;\n+//   const int max_iterations=50;\n+\n+//   if (v>=2) printf("Adjusting rate matrix to query amino acid composition ...\\n");\n+\n+//   // Put amino acid frequencies into global array (needed to call WNLIB\'s conjugate gradient method)\n+//   for (a=0; a<20; ++a) qav[a] = pav[a];\n+\n+//   // Initialize scaling factors x[a]\n+//   for (a=0; a<20; ++a) x[a]=pow(qav[a]/pb[a],0.73);  // Initialize    \n+\n+//   // Call conjugate gradient minimization method from WNLIB\n+//   wn_conj_gradient_method(&code,&val_min,x,len,&RescaleMatrixFunc,&RescaleMatrixFuncGrad,max_iterations);\n+\n+\n+//   // Calculate z[a] = sum_b Pab*xb\n+//   float sum_err=0.0f;  \n+//   float sum = 0.0f;\n+//   for (a=0; a<20; ++a)      \n+//     {\n+//       float za=0.0f; // za = sum_b Pab*xb\n+//       for (b=0; b<20; ++b) za+=P[a][b]*x[b];\n+//       sum_err += (x[a]*za/qav[a]-1)*(x[a]*za/qav[a]-1);\n+//       sum += x[a]*za;\n+//    }\n+//   if (sum_err>1e-3 & v>=1) fprintf(stderr,"WARNING: adjusting rate matrix by CG resulted in residual error of %5.3f.\\n",sum_err);\n+ \n+//   // Rescale rate matrix\n+//   for (a=0; a<20; ++a)      \n+//     for (b=0; b<20; ++b) \n+//       {\n+// \tP[a][b] *= x[a]*x[b]/sum;\n+// \tR[a][b] = P[a][b]/qav[b];\n+//       }\n+\n+//   // How well approximated?\n+//   if (v>=3) \n+//     {\n+//       // Calculate z[a] = sum_b Pab*xb\n+//       float z[21];  \n+//       for (a=0; a<20; ++a)      \n+// \tfor (z[a]=0.0, b=0; b<20; ++b) z[a]+=P[a][b];\n+//       printf("Adjust   A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\nErr?  ");\n+//       for (a=0; a<20; ++a) printf("%4.0f ",1000*z[a]/qav[a]);\n+//       cout<<endl<<"xa    ";\n+//       for (a=0; a<20; ++a) fprintf(stdout,"%4.2f ",x[a]);\n+//       cout<<endl;\n+//     }\n+\n+//   // Evaluate sequence identity underlying substitution matrix\n+//   if (v>=3)\n+//     {\n+//       float id=0.0f;\n+//       float entropy=0.0f; \n+//       float entropy_qav=0.0f;\n+//       float mut_info=0.0f;\n+//       for (a=0; a<20; ++a) id += P[a][a];\n+//       for (a=0; a<20; ++a)  entropy_qav-=qav[a]*fast_log2(qav[a]);\n+//       for (a=0; a<20; ++a) \n+// \t  for (b=0; b<20; ++b) \n+// \t    {\n+// \t      entropy-=P[a][b]*fast_log2(R[a][b]);\n+// \t      mut_info += P[a][b]*fast_log2(P[a][b]/qav[a]/qav[b]);\n+// \t    }\n+\n+//       fprintf(stdout,"Rescaling rate matrix: sequence identity = %2.0f%%; entropy per column = %4.2f bits (out of %4.2f); mutual information = %4.2f bits\\n",100*id,entropy,entropy_qav,mut_info);\n+//     }\n+//   return;\n+// }\n+\n+\n+/* @* HMM::ClobberGlobal (eg, q,t)\n+ */\n+void \n+HMM::ClobberGlobal(void){\n+\n+  for (int i = 0; i < n_display; i++){\n+    if (sname[i]){\n+      delete[] sname[i]; sname[i] = NULL;\n+    }\n+    if (seq[i]){\n+      delete[] seq[i]; seq[i] = NULL;\n+    }\n+  } \n+  Neff_M[0] = Neff_I[0] = Neff_D[0] = 0.0;\n+  longname[0] = \'\\0\'; file[0] = \'\\0\';\n+  ss_dssp[0] = sa_dssp[0] = ss_pred[0] = ss_conf[0] = \'\\0\';\n+  Xcons   = NULL;\n+  l[0] = 0;\n+  L = 0;\n+  Neff_HMM = 0;\n+  n_display = N_in = N_filtered = 0;\n+  nss_dssp = nsa_dssp = nss_pred = nss_conf = nfirst = ncons = -1;\n+  lamda = 0.0; mu = 0.0;\n+  name[0] = longname[0] = fam[0] = \'\\0\';\n+\n+  for (int i = 0; i < NAA; i++){\n+    pav[i] = 0;\n+  }\n+\n+  /* @= */\n+  return;\n+\n+} /* this is the end of ClobberGlobal() */\n+\n+\n+/* \n+ * EOF hhhmm-C.h\n+ */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhhmm.h Tue Jun 07 17:04:25 2011 -0400
[
b"@@ -0,0 +1,204 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhhmm.h 165 2010-12-22 16:24:48Z fabian $\n+ */\n+\n+// hhhmm.h\n+\n+\n+class HMM\n+{\n+ public:\n+  HMM(int maxseqdis=MAXSEQDIS, int maxres=/*MAXRES*/par.maxResLen);\n+  ~HMM();\n+  HMM& operator=(HMM&);\n+  \n+  int n_display;            // number of sequences stored for display of alignment (INCLUDING >ss_ and >cf_ sequences)\n+  int n_seqs;               // number of sequences read in (INCLUDING >ss_ and >cf_ sequences)\n+  char** sname;             // names of stored sequences \n+  char** seq;               // residues of stored sequences (first at pos 1!)\n+  int ncons;                // index of consensus sequence\n+  int nfirst;               // index of first sequence (query sequence of HMM)\n+  int nss_dssp;             // index of seq[] with secondary structure by dssp\n+  int nsa_dssp;             // index of seq[] with solvent accessibility by dssp\n+  int nss_pred;             // index of seq[] with predicted secondary structure\n+  int nss_conf;             // index of seq[] with confidence values for secondary structure prediction\n+  \n+  int L;                    // length of HMM = number of match states; set in declaration of HMM object\n+  int N_in;                 // number of sequences in alignment\n+  int N_filtered;           // number of sequences after filtering\n+  float* Neff_M;            // Neff_M[i] = diversity of subalignment of seqs that have residue in col i\n+  float* Neff_I;            // Neff_I[i] = diversity of subalignment of seqs that have insert in col i\n+  float* Neff_D;            // Neff_D[i] = diversity of subalignment of seqs that have delete in col i\n+  float Neff_HMM;           // average number of Neff over total length of HMM\n+   \n+  char* longname;           // Full name of first sequence of original alignment (NAME field)\n+  char name[NAMELEN];       // HMM name = first word in longname in lower case\n+  char file[NAMELEN];       // Basename (with path, without extension) of alignment file that was used to construct the HMM\n+  char fam[NAMELEN];        // family ID (derived from name) (FAM field)\n+  char sfam[NAMELEN];       // superfamily ID (derived from name) \n+  char fold[NAMELEN];       // fold ID (derived from name)\n+  char cl[NAMELEN];         // class ID (derived from name)\n+\n+  float lamda, mu;          // coefficients for aa score distribution of HMM using parameters in 'Parameters par'\n+  bool has_pseudocounts;    // set to true if HMM contains pseudocounts\n+\n+  // Make a flat copy of q \n+  void FlatCopyTo(HMM& t);\n+\n+  // Read an HMM from a HHsearch .hhm file and return 0 at end of file\n+  int Read(FILE* dbf, char* path=NULL);\n+\n+  // Read an HMM from a HMMer .hmm file; return 0 at end of file\n+  int ReadHMMer(FILE* dbf, char* filestr=NULL);\n+\n+  // Read an HMM from a HMMer3 .hmm file; return 0 at end of file                                                          \n+  int ReadHMMer3(FILE* dbf, char* filestr=NULL);\n+\n+  // Add transition pseudocounts to HMM\n+  void AddTransitionPseudocounts(float gapd=par.gapd, float gape=par.gape, float gapf=par.gapf, float gapg=par.gapg, float gaph=par.gaph, float gapi=par.gapi, float gapb=par.gapb);\n+\n+  // Use secondary structure-dependent gap penalties on top of the HMM transition penalties\n+  void UseSecStrucDependentGapPenalties();\n+\n+  // Generate an amino acid frequency matrix g[][] with fu"..b' to Null model distribution\n+  void NeutralizeTags();\n+  \n+  // Calculate effective number of sequences using profiles INCLUDING pseudocounts\n+  float CalcNeff();\n+\n+  // Calculate consensus of HMM (needed to merge HMMs later)\n+  void CalculateConsensus();\n+\n+  // Store linear transition probabilities\n+  void StoreLinearTransitionProbs();\n+\n+  // Initialize f[i][a] with query HMM\n+  void MergeQueryHMM(HMM& q, float wk[]);\n+  \n+  // Normalize probabilities in total merged super-HMM \n+  void NormalizeHMMandTransitionsLin2Log();\n+\n+  // Rescale rate matrices P[a][b], R[a][b] according to HMM av. aa composition in pav[a]\n+  void RescaleMatrix();\n+\n+#ifdef CLUSTALO\n+  void ClobberGlobal(void);\n+  char cQT; /* query or template */\n+#endif\n+\n+private:\n+  float** f;                // f[i][a] = prob of finding amino acid a in column i WITHOUT pseudocounts\n+  float** g;                // f[i][a] = prob of finding amino acid a in column i WITH pseudocounts\n+  float** p;                // p[i][a] = prob of finding amino acid a in column i WITH OPTIMUM pseudocounts\n+  float** tr;               // log2 of transition probabilities M2M M2I M2D I2M I2I D2M D2D M2M_GAPOPEN GAPOPEN GAPEXTD\n+/*   float** tr_lin;           // transition probs in log space */\n+  char trans_lin;           // transition probs are given in log or lin space? (0: p_tr  1: log(p_tr) \n+\n+  char* ss_dssp;            // secondary structure determined by dssp 0:-  1:H  2:E  3:C  4:S  5:T  6:G  7:B\n+  char* sa_dssp;            // solvent accessibility state determined by dssp 0:-  1:A (absolutely buried) 2:B  3:C  4:D  5:E (exposed)\n+  char* ss_pred;            // predicted secondary structure          0:-  1:H  2:E  3:C\n+  char* ss_conf;            // confidence value of prediction         0:-  1:0 ... 10:9\n+  char* Xcons;              // consensus sequence in internal representation (A=0 R=1 N=2 D=3 ...)\n+  float pav[NAA];           // pav[a] = average freq of amino acids in HMM (including subst matrix pseudocounts)\n+  float pnul[NAA];          // null model probabilities used in comparison (only set in template/db HMMs)\n+  int* l;                   // l[i] = pos. of j\'th match state in aligment\n+/*   char trans_lin;           // transition probs are given in log or lin space? (0: p_tr  1: log(p_tr)  */\n+\n+  // Utility for Read()\n+  int Warning(FILE* dbf, char line[], char name[])\n+    {\n+      if (v) cerr<<"\\nWARNING: could not read line\\n\\\'"<<line<<"\\\'\\nin HMM "<<name<<" in "<<file<<"\\n";\n+      while (fgetline(line,LINELEN,dbf) && !(line[0]==\'/\' && line[1]==\'/\'));\n+      if (line) return 2;  //return status: skip HMM\n+      return 0;            //return status: end of database file\n+    }\n+\n+  friend class Hit;\n+  friend class Alignment;\n+  friend class HMMshadow;\n+};\n+\n+class HMMshadow {\n+\n+ public: \n+    float *Neff_M;\n+    float *Neff_I;\n+    float *Neff_D;\n+    float **f;\n+    float **g;\n+    float **p;\n+    float **tr;\n+    float pav[20];\n+    \n+    void copyHMMtoShadow(const HMM &hmm) { \n+        Neff_M = hmm.Neff_M;\n+        Neff_I = hmm.Neff_I;\n+        Neff_D = hmm.Neff_D;\n+        f  = hmm.f; \n+        g  = hmm.g; \n+        p  = hmm.p;\n+        tr = hmm.tr;\n+        memcpy(pav, hmm.pav, 20*sizeof(float));\n+    } \n+    \n+    void copyShadowToHMM(const HMM &hmm, const hmm_light rShadow) {\n+        \n+        int i, j;\n+        \n+        for (i = 0; i < rShadow.L+1; i++){\n+            hmm.Neff_M[i] = rShadow.Neff_M[i];\n+            hmm.Neff_I[i] = rShadow.Neff_I[i];\n+            hmm.Neff_D[i] = rShadow.Neff_D[i];\n+            for (j = 0; j < 20; j++){\n+                hmm.f[i][j] = rShadow.f[i][j];\n+                hmm.g[i][j] = rShadow.g[i][j];\n+                hmm.p[i][j] = rShadow.p[i][j];\n+            }\n+            for (j = 0; j < 7; j++){\n+                hmm.tr[i][j] = rShadow.tr[i][j];\n+            }\n+            memcpy((void *)hmm.pav, rShadow.pav, 20*sizeof(float));\n+        }\n+    } /* this is the end of copyShadowToHMM() */\n+\n+} /* class HMMshadow */;\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhmatrices-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhmatrices-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,474 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhmatrices-C.h 199 2011-02-21 18:24:49Z fabian $\n+ */\n+\n+// Substitution matrices and their background frequencies\n+\n+// The following background frequencies were calculated by the formula pa = (P[a,b]/(pa*pb))^(-1) * (1,...,1)\n+// For the Blousum50-matrix this becomes  pb[a]= SUM_(b=1,20) (2^(BLOSUM50[a,b]/3))^(-1) \n+//                     A    R    N    D    C    Q    E    G    H    I    L     K    M    F    P    S    T    W    Y    V \n+// Gonnet            7.68,5.14,4.02,5.41,1.89,3.27,5.99,7.56,3.69,5.06,10.01,5.97,2.20,3.50,4.54,4.67,7.12,1.25,3.95,7.28\n+// BLOSUM50          8.24,6.24,4.46,4.77,2.03,2.90,6.78,6.69,2.53,6.89,10.7 ,5.04,1.49,4.93,3.97,5.95,6.13,1.34,3.45,6.28\n+\n+const float Gonnet[]={\n+//  A     R     N     D     C     Q     E     G     H     I     L     K     M     F     P     S     T     W     Y     V \n+ 10227, 3430, 2875, 3869, 1625, 2393, 4590, 6500, 2352, 3225, 5819, 4172, 1435, 1579, 3728, 4610, 6264,  418, 1824, 5709, // A\n+  3430, 7780, 2209, 2589,  584, 2369, 3368, 3080, 2173, 1493, 3093, 5701,  763,  859, 1893, 2287, 3487,  444, 1338, 2356, // R \n+  2875, 2209, 3868, 3601,  501, 1541, 2956, 3325, 1951, 1065, 2012, 2879,  532,  688, 1480, 2304, 3204,  219, 1148, 1759, // N\n+  3869, 2589, 3601, 8618,  488, 2172, 6021, 4176, 2184, 1139, 2151, 3616,  595,  670, 2086, 2828, 3843,  204, 1119, 2015, // D\n+  1625,  584,  501,  488, 5034,  355,  566,  900,  516,  741, 1336,  591,  337,  549,  419,  901, 1197,  187,  664, 1373, // C\n+  2393, 2369, 1541, 2172,  355, 1987, 2891, 1959, 1587, 1066, 2260, 2751,  570,  628, 1415, 1595, 2323,  219,  871, 1682, // Q\n+  4590, 3368, 2956, 6021,  566, 2891, 8201, 3758, 2418, 1624, 3140, 4704,  830,  852, 2418, 2923, 4159,  278, 1268, 2809, // E\n+  6500, 3080, 3325, 4176,  900, 1959, 3758,26066, 2016, 1354, 2741, 3496,  741,  797, 2369, 3863, 4169,  375, 1186, 2569, // G\n+  2352, 2173, 1951, 2184,  516, 1587, 2418, 2016, 5409, 1123, 2380, 2524,  600, 1259, 1298, 1642, 2446,  383,  876, 1691, // H\n+  3225, 1493, 1065, 1139,  741, 1066, 1624, 1354, 1123, 6417, 9630, 1858, 1975, 2225, 1260, 1558, 3131,  417, 1697, 7504, // I\n+  5819, 3093, 2012, 2151, 1336, 2260, 3140, 2741, 2380, 9630,25113, 3677, 4187, 5540, 2670, 2876, 5272, 1063, 3945,11005, // L\n+  4172, 5701, 2879, 3616,  591, 2751, 4704, 3496, 2524, 1858, 3677, 7430,  949,  975, 2355, 2847, 4340,  333, 1451, 2932, // K\n+  1435,  763,  532,  595,  337,  570,  830,  741,  600, 1975, 4187,  949, 1300, 1111,  573,  743, 1361,  218,  828, 2310, // M\n+  1579,  859,  688,  670,  549,  628,  852,  797, 1259, 2225, 5540,  975, 1111, 6126,  661,  856, 1498, 1000, 4464, 2602, // F\n+  3728, 1893, 1480, 2086,  419, 1415, 2418, 2369, 1298, 1260, 2670, 2355,  573,  661,11834, 2320, 3300,  179,  876, 2179, // P\n+  4610, 2287, 2304, 2828,  901, 1595, 2923, 3863, 1642, 1558, 2876, 2847,  743,  856, 2320, 3611, 4686,  272, 1188, 2695, // S\n+  6264, 3487, 3204, 3843, 1197, 2323, 4159, 4169, 2446, 3131, 5272, 4340, 1361, 1498, 3300, 4686, 8995,  397, 1812, 5172, // T\n+   418,  444,  219,  204,  187,  219,  278,  375,  383,  417, 1063,  333,  218, 1000,  179,  272,  397, 4101, 1266,  499, // W\n+  1824, 1338, 1148, 1119,  664,  871, 1268, 1186,  876, 1697, 3945, 1451,  828, 4464,  876, 1188, 1812, 1266, 9380, 2227, // Y\n+  5709, 2356, 1759, 2015, 1373, 1682, 2809, 2569, 1691, 7'..b'[a]); // S[a][b] = log2(P(a,b)/P(a)/P(b))\n+  \n+  // Evaluate sequence identity underlying substitution matrix\n+  if (v>=3)\n+    {\n+      float id=0.0f;\n+      float entropy=0.0f; \n+      float entropy_pb=0.0f;\n+      float mut_info=0.0f;\n+      for (a=0; a<20; ++a) id+=P[a][a];\n+      for (a=0; a<20; ++a) entropy_pb-=pb[a]*log2(pb[a]);\n+      for (a=0; a<20; ++a) \n+\t  for (b=0; b<20; ++b) \n+\t    {\n+\t      entropy-=P[a][b]*log2(R[a][b]);\n+\t      mut_info += P[a][b]*S[a][b];\n+\t    }\n+      \n+      printf(": sequence identity = %2.0f%%; entropy per column = %4.2f bits (out of %4.2f); mutual information = %4.2f bits\\n",100*id,entropy,entropy_pb,mut_info);\n+    }\n+\n+  if (v>=4) //Debugging: probability matrix and dissimilarity matrix \n+    {\n+      cout<<"Check matrix: before renormalization sum P(a,b)= "<<sumab<<"...\\n";//PRINT\n+      cout<<"      A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\n";\n+      cout<<"p[] ";\n+      for (a=0; a<20; a++)  printf("%4.1f ",100*pb[a]);\n+      cout<<endl<<"\\nSubstitution matrix log2( P(a,b)/p(a)/p(b) ) (in bits):\\n";\n+      cout<<"      A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\n";\n+      for (b=0; b<20; b++)\n+\t{\n+\t  cout<<i2aa(b)<<"   ";\n+\t  for (a=0; a<20; a++)  printf("%4.1f ",S[a][b]);\n+\t  cout<<endl;\n+\t}\n+      cout<<endl<<"\\nOdds matrix P(a,b)/p(a)/p(b):\\n";\n+      cout<<"      A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\n";\n+      for (b=0; b<20; b++)\n+\t{\n+\t  cout<<i2aa(b)<<"   ";\n+\t  for (a=0; a<20; a++)  printf("%4.1f ",P[b][a]/pb[a]/pb[b]);\n+\t  cout<<endl;\n+\t}\n+      cout<<endl<<"\\nMatrix of conditional probabilities P(a|b) = P(a,b)/p(b) (in %):\\n";\n+      cout<<"      A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\n";\n+      for (b=0; b<20; b++)\n+\t{\n+\t  cout<<i2aa(b)<<"   ";\n+\t  for (a=0; a<20; a++)  printf("%4.1f ",100*R[b][a]);\n+\t  cout<<endl;\n+\t}\n+      cout<<endl<<"\\nProbability matrix P(a,b) (in %):\\n";\n+      cout<<"      A     R     N     D     C     Q     E     G     H     I     L     K     M     F     P     S     T     W     Y     V\\n";\n+      for (b=0; b<20; b++)\n+\t{\n+\t  cout<<i2aa(b)<<"   ";\n+\t  for (a=0; a<20; a++)  printf("%5.0f ",1000000*P[b][a]);\n+\t  cout<<endl;\n+\t}\n+      cout<<endl<<"Similarity matrix P(a,b)^2/P(a,a,)/P(b,b) (in %):\\n";\n+      cout<<"      A    R    N    D    C    Q    E    G    H    I    L    K    M    F    P    S    T    W    Y    V\\n";\n+      for (b=0; b<20; b++)\n+\t{\n+\t  cout<<i2aa(b)<<"   ";\n+\t  for (a=0; a<20; a++)  printf("%4.0f ",100*Sim[b][a]);\n+\t  cout<<endl;\n+\t}\n+      cout<<endl;\n+\n+\n+    }\n+}\n+ \n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Set secondary structure substitution matrix\n+ */\n+void \n+SetSecStrucSubstitutionMatrix()\n+{\n+  int A;        //observed ss state (determined dssp)\n+  int B,BB;     //predicted ss states (by psipred)\n+  int cf,ccf;   //confidence value of prediction\n+  float P73[NDSSP][NSSPRED][MAXCF];  //P73[cf][B][A] = P(A,B,cf)/P(A)/P(B,cf) = P(A|B,cf)/P(A)\n+  float sum;\n+\n+  // S73[A][B][cf][b] = score for matching observed ss state A in query with state B in template\n+  // predicted with confidence cf, when query and template columns are diverged by b units \n+  for (cf=0; cf<MAXCF; cf++)\n+    for (A=0; A<NDSSP; A++)\n+      for (B=0; B<NSSPRED; B++)\n+\t{\n+\t  P73[A][B][cf] = 1.-par.ssa + par.ssa*Ppred[cf*NSSPRED*NDSSP + B*NDSSP + A];\n+\t  S73[A][B][cf] = log2(P73[A][B][cf]);\n+\t}\n+\n+  for (B=0; B<NSSPRED; B++)\n+    for (cf=0; cf<MAXCF; cf++)\n+      for (BB=0; BB<NSSPRED; BB++)\n+\tfor (ccf=0; ccf<MAXCF; ccf++)\n+\t  {\n+\t    sum=0;\n+\t    for (A=1; A<NDSSP; A++)\n+\t      sum += P73[A][B][cf] * P73[A][BB][ccf] * Pobs[A];\n+\t    S33[B][cf][BB][ccf] = log2(sum);\n+\t  }  \n+} /* this is the end of SetSecStrucSubstitutionMatrix() */\n+\n+\n+\n+/*\n+ * EOF hhmatrices-C.h\n+ */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/hhutil-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/hhutil-C.h Tue Jun 07 17:04:25 2011 -0400
[
b"@@ -0,0 +1,659 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: hhutil-C.h 229 2011-04-07 17:09:07Z fabian $\n+ */\n+\n+//////////////////////////////////////////////////////////////////////////////\n+// Transform a character to lower case and '.' to '-' and vice versa\n+//////////////////////////////////////////////////////////////////////////////\n+\n+\n+inline char \n+MatchChr(char c)  {return ((c>='a' && c<='z')? c-'a'+'A' : (c=='.'? '-':c) );}\n+\n+inline char \n+InsertChr(char c) {return ((c>='A' && c<='Z')? c+'a'-'A' : ((c>='0' && c<='9') || c=='-')? '.':c );}\n+\n+inline int  \n+WordChr(char c) {return (int)((c>='A' && c<='Z') || (c>='a' && c<='z'));}\n+\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transforms the one-letter amino acid code into an integer between 0 and 22\n+ */\n+inline char \n+aa2i(char c)\n+{\n+  //A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V\n+  if (c>='a' && c<='z') c+='A'-'a';\n+  switch (c)\n+    {\n+    case 'A': return 0;\n+    case 'R': return 1;\n+    case 'N': return 2;\n+    case 'D': return 3;\n+    case 'C': return 4;\n+    case 'Q': return 5;\n+    case 'E': return 6;\n+    case 'G': return 7;\n+    case 'H': return 8;\n+    case 'I': return 9;\n+    case 'L': return 10;\n+    case 'K': return 11;\n+    case 'M': return 12;\n+    case 'F': return 13;\n+    case 'P': return 14;\n+    case 'S': return 15;\n+    case 'T': return 16;\n+    case 'W': return 17;\n+    case 'Y': return 18;\n+    case 'V': return 19;\n+    case 'X': return ANY;\n+    case 'J': return ANY;\n+    case 'O': return ANY;\n+    case 'U': return 4;  //Selenocystein -> Cystein\n+    case 'B': return 3;  //D (or N)\n+    case 'Z': return 6;  //E (or Q)\n+    case '-': return GAP;\n+    case '.': return GAP;\n+    case '_': return GAP;\n+    }\n+  if (c>=0 && c<=32) return -1; // white space and control characters\n+  return -2;\n+}\n+\n+///////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transforms integers between 0 and 22 into the one-letter amino acid code\n+ */\n+inline char \n+i2aa(char c)\n+{\n+  //A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V\n+  switch (c)\n+    {\n+    case 0: return 'A';\n+    case 1: return 'R';\n+    case 2: return 'N';\n+    case 3: return 'D';\n+    case 4: return 'C';\n+    case 5: return 'Q';\n+    case 6: return 'E';\n+    case 7: return 'G';\n+    case 8: return 'H';\n+    case 9: return 'I';\n+    case 10: return 'L';\n+    case 11: return 'K';\n+    case 12: return 'M';\n+    case 13: return 'F';\n+    case 14: return 'P';\n+    case 15: return 'S';\n+    case 16: return 'T';\n+    case 17: return 'W';\n+    case 18: return 'Y';\n+    case 19: return 'V';\n+    case ANY: return 'X';\n+    case GAP: return '-';\n+    case ENDGAP: return '-';\n+    }\n+  return '?';\n+}\n+\n+//////////////////////////////////////////////////////////////////////////////\n+/**\n+ * @brief Transforms the dssp/psipred secondary structure code into an integer number\n+ */\n+inline char \n+ss2i(char c)\n+{\n+  //- H E C S T G B\n+  if (c>='a' && c<='z') c+='A'-'a';\n+  switch (c)\n+    {\n+    case '.': return 0;\n+    case '-': return 0;\n+    case 'X': return 0;\n+    case 'H': return 1;\n+    case 'E': return 2;\n+    case 'C': return 3;\n+    case '~': return 3;\n+    case 'S': return 4;\n+    case 'T': return 5;\n+    case 'G': return 6;\n+    case 'B': return 7;\n+    case 'I': return 3;\n+    case "..b'=1.0f;                // default values for substitution matrix pseudocounts \n+  par.pcbV=1.5f;                // significant reduction of pcs by Neff_M starts around Neff_M-1=pcb\n+  par.pccV=1.0f;                // pcs are reduced prop. to 1/Neff^pcc\n+  par.pcwV=0.0f;                // wc>0 weighs columns according to their intra-clomun similarity\n+\n+  par.gapbV=1.0;                // default values for transition pseudocounts\n+  par.gapdV=0.15;               // gap open penalty pseudocount; 0.25 corresponds to 7.1*gapf bits\n+  par.gapeV=1.0;                // gap extension penalty pseudocount\n+  par.gapfV=0.6;                // factor for increasing gap open penalty for deletes\n+  par.gapgV=0.6;                // factor for increasing gap open penalty for inserts\n+  par.gaphV=0.6;                // factor for increasing gap extension penalty for deletes\n+  par.gapiV=0.6;                // factor for increasing gap extension penalty for inserts\n+#endif\n+\n+  par.ssm=2;                   // ss scoring mode: 0:no ss score  1:score after alignment  2:score during alignment\n+  par.ssw=0.11f;               // weight of ss scoring\n+  par.ssa=1.0f;                // weight of ss evolution matrix\n+  par.shift=-0.01f;            // Shift match score up \n+  par.mact=0.3001f;            // Score threshold for MAC alignment in local mode (set to 0.5001 to track user modification)\n+  par.corr=0.1f;               // Weight of correlations of scores for |i-j|<=4\n+  par.wstruc=1.0f;             // Weight of structure scores\n+\n+  par.egq=0.0f;                // no charge for end gaps as default\n+  par.egt=0.0f;                // no charge for end gaps as default\n+\n+  par.trans=0;                 // no transitive scoring as default\n+  par.Emax_trans=100.0f;       // use intermediate HMMs with E-values up to 100 between query and database HMM\n+  par.Emax_trans=100.0f;       // use intermediate HMMs with E-values up to 100 between query and database HMM\n+  par.wtrans=1.0f;             // Ztot[k] = Zq[k] + wtrans * (Zforward[k]+Zreverse[k])\n+  par.ssgap=0;                 // 1: add secondary structure-dependent gap penalties  0:off\n+  par.ssgapd=1.0f;             // secondary structure-dependent gap-opening penalty (per residue)\n+  par.ssgape=0.0f;             // secondary structure-dependent gap-extension penalty (per residue)\n+  par.ssgapi=4;                // max. number of inside-integer(ii); gap-open-penalty= -ii*ssgapd\n+\n+  par.loc=1;                   // local vs. global alignment as default\n+  par.altali=2;                // find up to two (possibly overlapping) subalignments \n+  par.forward=0;               // 0: Viterbi algorithm; 1: Viterbi+stochastic sampling; 3:Maximum Accuracy (MAC) algorithm\n+  par.realign=1;               // realign with MAC algorithm\n+\n+  par.repmode=0;               // repeats score independently of one another\n+  par.columnscore=1;           // Default column score is 1: null model pnul = 1/2 * (q_av(a)+p_av(a))\n+  par.min_overlap=0;           // automatic minimum overlap used\n+  par.opt=0;                   // Default = optimization mode off\n+  par.readdefaultsfile=0;      // Default = do not read a defaults file ./.hhdefaults or HOME/.hhdefaults\n+  par.maxdbstrlen=200;         // maximum length of database string to be printed in \'Command\' line of hhr file\n+  par.mode=0;\n+  par.idummy=par.jdummy=0;     //\n+\n+  par.notags=1;                // neutralize His-tags, FLAG-tags, C-myc-tags\n+\n+  // Initialize strings\n+  strcpy(par.infile,"stdin");\n+  strcpy(par.outfile,"");\n+  strcpy(par. pairwisealisfile,"");\n+  strcpy(par.buffer,"buffer.txt"); \n+  strcpy(par.scorefile,""); \n+  strcpy(par.wfile,""); \n+  strcpy(par.alnfile,""); \n+  strcpy(par.hhmfile,""); \n+  strcpy(par.psifile,""); \n+  par.exclstr=NULL; \n+\n+#if 0  /* read parameter file from home-dir */\n+#include "hhutil-C-help.h"\n+#endif /* read parameter file from home-dir */\n+\n+   return;\n+} /** this is the end of SetDefaults() **/\n+\n+/*\n+ * EOF hhutil-C.h\n+ */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/list-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/list-C.h Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,600 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: list-C.h 143 2010-10-14 13:11:14Z andreas $\n+ */\n+\n+// list.C\n+// Class for double-linked list \n+\n+\n+\n+#ifndef JLIST\n+#define JLIST\n+\n+#ifndef MAIN\n+#include <iostream>   // cin, cout\n+#include <stdlib.h>   // \n+#include <stdio.h>    // \n+using std::cout;\n+using std::cerr;\n+#endif\n+\n+#include "list.h"\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Double-linked list implementation with head and tail dummy elements\n+// We set head->prev=head and tail->next=tail.\n+// This makes sure that repeated current=current->next; ends up in tail\n+// and repeated current=current->prev; ends up in head.\n+// head and tail optionally contain a NULL element of Typ defined by method Null(Typ)\n+////////////////////////////////////////////////////////////////////////////\n+\n+\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Constructors and destructor\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Creates empty List with two dummy elements\n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+List<Typ>::List()\n+{\n+  head=new ListEl<Typ>();\n+  if (!head) { cerr<<"Could not create new element\\n"; return; }\n+  tail=new ListEl<Typ>(head,NULL);\n+  if (!tail) { cerr<<"Could not create new element\\n"; return; }\n+  tail->next = tail;\n+  head->prev = head;\n+  head->next = tail;\n+  current = head;\n+  size=0;\n+}\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Creates List with one element \n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+List<Typ>::List(Typ d)\n+{\n+  head=new ListEl<Typ>();\n+  if (!head) { cerr<<"Could not create new element\\n"; return; }\n+  tail=new ListEl<Typ>();\n+  if (!tail) { cerr<<"Could not create new element\\n"; return; }\n+  ListEl<Typ>* el = new ListEl<Typ>(d,head,tail);\n+  if (!el)   { cerr<<"Could not create new element\\n"; return; }\n+  head->prev = head;\n+  head->next = el;\n+  tail->prev = el;\n+  tail->next = tail;\n+  current = head;\n+  size=1;\n+}\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Destructor deletes List object\n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+List<Typ>::~List()\n+{\n+  ListEl<Typ>* n=head->next;\n+  while(head!=n)\n+    {\n+      delete(head); head = NULL;\n+      head=n;\n+      n=head->next;\n+  }\n+  delete(head); head = NULL;\n+}\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Flat copy\n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+List<Typ>& List<Typ>::operator=(List<Typ>& l)\n+{\n+  head = l.head;\n+  tail = l.tail;\n+  current = l.current;\n+  size = l.size;\n+}\n+\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Reverse order of list\n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+void List<Typ>::Reverse()\n+{\n+  ListEl<Typ> *n; // next list element; also for swapping\n+  ListEl<Typ> *c; // current element to be sorted in. Everything to the left is already sorted\n+  if (Size()<=1) return;\n+  for (c=head; c!=tail; c=n)\n+    {\n+      // Swap prev a'..b'ot < r->data); \n+      do l=l->next; while (l->data < pivot);\n+      if (l==r || l->prev==r) break;\n+      SwapContent(l,r);\n+    }\n+  SortList(left,r,sz0);\n+  SortList(r->next,right,sz-sz0);\n+  pivot = tail->data; // to avoid calling the destructor of Typ on some real data element\n+ }\n+\n+////////////////////////////////////////////////////////////////////////////\n+// Use QUICKSORT to sort list of POINTERS by comparing the objects the pointers point to\n+////////////////////////////////////////////////////////////////////////////\n+template <class Typ> \n+void List<Typ>::SortPointerList(ListEl<Typ>* left, ListEl<Typ>* right) \n+{\n+  if (right==left || right->next==left) return;\n+  ListEl<Typ> *l=left->prev, *r=right->next;\n+  Typ pivot=left->data;\n+//    cout<<"Sorting between "<<left->data<<" and "<<right->data<<". Pivot="<<pivot<<endl;\n+  while(1)\n+    {\n+//        PrintList();\n+      do\n+\t{\n+\t  r=r->prev;\n+//  \t  cout<<"r=r->prev. r->data="<<r->data<<endl;\n+\t} while(*pivot < *(r->data)); \n+      do\n+\t{\n+\t  l=l->next;\n+//  \t  cout<<"l=l->next l->data="<<l->data<<endl;\n+\t} while (*(l->data) < *pivot);\n+      if (l==r || l->prev==r) break;\n+      SwapContent(l,r);\n+    }\n+  SortPointerList(left,r);\n+  SortPointerList(r->next,right);\n+}\n+\n+// Use INSERTSORT to sort list in asscending order between two list elements. Use only for presorted lists, otherwise time O(N^2)!\n+template <class Typ> \n+void List<Typ>::ResortList() \n+{\n+  ListEl<Typ> *c; // current element to be sorted in. Everything to the left is already sorted\n+  ListEl<Typ> *n; // next element to be sorted in\n+  ListEl<Typ> *p; // pointer for looping through sorted part of list\n+  ListEl<Typ> *pnext; // for swapping\n+  if (Size()<=1) return;\n+  c=head->next->next;\n+  while (c!=tail) \n+    {\n+      p=c->prev;\n+      n=c->next;\n+      if (c->data < p->data)\n+\t{\n+\t  do {p=p->prev;} while (p!=head && c->data < p->data);\n+\t  // Connect c->prev to c->next ...\n+\t  c->next->prev=c->prev;\n+\t  c->prev->next=c->next;\n+\t  // ... and insert c between p and p->next ...\n+\t  pnext=p->next;\n+\t  p->next=c;\n+\t  c->next=pnext;\n+\t  pnext->prev=c;\n+\t  c->prev=p;\n+\t}\n+      c=n;\n+    }\n+}\n+\n+\n+#endif /* JLIST */\n+\n+\n+// //Main program: test class List\n+\n+//  int main()\n+//  {\n+//    int p;\n+//    List<int>* plist=new List<int>(11);\n+//    List<int> list(22);\n+\n+//    plist->Push(24);\n+//    plist->Push(18);\n+//    plist->Push(3);\n+//    plist->Enqueue(17);\n+//    plist->Enqueue(29);\n+//    printf("List 1 with pushed and enqueued elements:\\n");\n+//    plist->PrintList();\n+\n+//    list.Push(222);\n+//    printf("List 1 with list 2 appended:\\n");\n+//    plist->Append(&list);\n+//    plist->PrintList();\n+\n+//    printf("Pushing one element three times into list 2:\\n");\n+//    list.Push(333);\n+//    list.Push(444);\n+//    list.Push(555);\n+//    printf("Printing plist and list with three elements:\\n");\n+//    list.PrintList();\n+//    plist->PrintList();\n+  \n+//    printf("list.Copy(plist). Printing list 1 and 2:\\n");\n+//    list.Copy(plist);\n+//    plist->PrintList(); \n+//    list.PrintList();\n+\n+//    printf("Appending list 1 to itself:\\n");\n+//    plist->Append(plist);\n+//    plist->PrintList();\n+\n+//    cout<<"Popping "<<plist->Pop()<<"\\n";\n+//    cout<<"Popping "<<plist->Pop()<<"\\n";\n+//    plist->PrintList();\n+\n+//    cout<<"Dequeing "<<plist->Dequeue()<<"\\n";\n+//    cout<<"Dequeing "<<plist->Dequeue()<<"\\n";\n+//    plist->PrintList();\n+\n+//    cout<<"Reversing list\\n";\n+//    plist->Reverse();\n+//    plist->PrintList();\n+\n+//    cout<<"Reversing to original list\\n";\n+//    plist->Reverse();\n+//    plist->PrintList();\n+\n+//    for (p=plist->Reset(); p>=5;p--)\n+//      {cout<<plist->GetPos()<<": "<<plist->Read(p)<<"\\n";}\n+  \n+//    cout<<"Deleting "<<plist->Delete()<<"\\n";\n+//    cout<<"Deleting "<<plist->Delete()<<"\\n";\n+//    plist->PrintList();\n+\n+//    plist->Append(plist);\n+//    plist->PrintList();\n+//    cout<<"List 1 sorted:\\n";\n+//    plist->SortList();\n+//    plist->PrintList();\n+\n+//  }\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/list.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/list.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,193 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: list.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+// list.h
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Double-linked list implementation with head and tail dummy elements
+// We set head->prev=head and tail->next=tail.
+// This makes sure that repeated current=current->next; ends up in tail
+// and repeated current=current->prev; ends up in head.
+// head and tail optionally contain a NULL element of Typ defined by method Null(Typ)
+//////////////////////////////////////////////////////////////////////////////
+
+template<class Typ> 
+class List
+{
+protected:
+template<class Typ1> 
+class ListEl             //elements of List; essentially a data structure
+  {
+  public:
+    Typ1 data;           //Typ is type of data to be stored in list
+    ListEl* prev;        //points to previous list element
+    ListEl* next;        //points to next list element
+    ListEl() : prev(0), next(0) {}
+    ListEl(Typ1 d) : data(d), prev(0), next(0) {}
+    ListEl(ListEl* p, ListEl* n) : prev(p), next(n) {}
+    ListEl(Typ1 d, ListEl* p, ListEl* n) : data(d), prev(p), next(n) {}
+  };
+  
+  ListEl<Typ>* head;     //points to dummy element at beginning of list
+  ListEl<Typ>* tail;     //points to dummy element at end of list    
+  ListEl<Typ>* current;  //current element position within list
+  int size;              //Number of elements in list
+
+  // Use QUICKSORT to sort list in asscending order between two list elements
+  void SortList(ListEl<Typ>*, ListEl<Typ>*, int); 
+  // Use QUICKSORT to sort list of pointers by comparing elements they point to
+  void SortPointerList(ListEl<Typ>*, ListEl<Typ>*);
+
+  // Swap two list elements by making a flat copy (don't need two copies of data)
+  // Warning: Gets slow if Typ is composite type with many variables (>=5)
+  void SwapContent(ListEl<Typ>* e1, ListEl<Typ>* e2)
+  { Typ d; if (e1!=e2) {d=e1->data; e1->data=e2->data; e2->data=d;} }
+
+public:
+//////////////////////////////////////////////////////////////////////////////
+// General methods
+  List();
+  List(Typ d);
+  ~List();
+  List<Typ>& operator=(List<Typ>&);
+    
+  // Set Null element that will be returned when trying to read from an empty list
+  void Null(Typ null) {head->data = tail->data = null;}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Methods that act at the end of the list 
+
+  // Insert Element after LAST element of list (and return address of data element)
+  Typ* Push(Typ);
+
+  // Remove and return LAST element of list. Returns head->data if list empty
+  Typ Pop();
+
+  // return LAST element of list. Returns null element in head->data if list empty
+  Typ ReadLast() {return tail->prev->data;}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Methods that act at the beginning of the list
+
+  // Insert element as FIRST element of list (and return address of data element)
+  Typ* Enqueue(Typ);
+
+  // Remove and return element at BEGINNING of list. Returns head->data if list empty
+  Typ Dequeue();
+
+  // return FIRST element of list. Returns null element in head->data if list empty
+  Typ ReadFirst() {if (size) return head->next->data; else return head->data;}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Methods that work with 'current' position in the list
+
+  // Advances current position by 1 and reads next element; returns head->data if at end of list.
+  Typ ReadNext(); 
+
+  // Reads current element again
+  Typ ReadCurrent(); 
+
+  // Moves current position back by 1 and reads previous element; returns head->data if at beginning of list.
+  Typ ReadPrevious(); 
+
+  // Advances current position by 1 and reads address of next element; returns NULL if at end of list.
+  Typ* ReadNextAddress(); 
+
+  // Reads address of current element again, returns NULL if at end of list
+  Typ* ReadCurrentAddress(); 
+
+  // Sets current position to k and reads k'th element (first=1). Returns head->data if current points to no data element
+  Typ Read(int);
+
+  // Inserts element AFTER CURRENT element; current element will be set to inserted element
+  void Insert(Typ);
+
+  // Removes and returns element at CURRENT position. New position is one BEFORE current position. 
+  // Returns head->data if current points to no data element. After Reset() delete first element (not 0'th)
+  Typ Delete();
+
+  // Overwrites data at current position with new data 
+  void Overwrite(Typ d) {current->data=d;} 
+
+  // Reset current position to 0 (one BEFORE the first)
+  int Reset() {current = head; return size;} 
+
+  // Reset current position to End (one AFTER the last)
+  int SetToEnd() {current = tail; return size;} 
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Methods that return information about the list
+
+  // Return number of list elements (size>=0)
+  int Size()  {return size;}  
+
+  // return true if end of list, i.e. ReadNext would give tail->data (i.e. current position >= Size)
+  char End()  {return (current==tail || current==tail->prev);}
+  char End(void* curr)  {return ( curr == tail || curr == tail->prev);}
+
+  // return true if start of list, i.e. ReadPrevious would give head->data (i.e. current position <=1)
+  char Start()  {return (current==head || current==head->next);}
+
+  // Get current position within list (0 <= pos <= Size+1) 
+  int GetPos();
+
+  //print out list (elements assumed int)
+  void PrintList();
+
+  // Get largest data element (Null element for empty list)
+  Typ Largest();
+
+  // Get smallest data element (Null element for empty list)
+  Typ Smallest();
+
+//////////////////////////////////////////////////////////////////////////////
+// Methods that manipulate the list as a whole
+
+  // Reverse list 
+  void Reverse();
+
+  // Copies list into list object
+  void Copy(List<Typ>* list);
+
+  // Appends a copy of list to class object
+  void AppendCopy(List<Typ>* list);
+
+  // Appends list to class object list
+  void Append(List<Typ>* list); 
+
+  // Use QUICKSORT to sort list in ascending order. Use only for UNSORTED lists, otherwise time O(N^2) instead of O(N*log(N))
+/*   void SortList() {if (size>1) SortList(head->next, tail->prev);}  */
+  void SortList() {if (size>1) SortList(head->next, tail->prev, size);} 
+  void QuickSort() {if (size>1) SortList(head->next, tail->prev, size);} 
+
+  // Use QUICKSORT to sort list of pointers in ascending order. Use only for UNSORTED lists, otherwwise time O(N^2)!
+  void SortPointerList() {if (size>1) SortPointerList(head->next, tail->prev);} 
+  void QuickSortPointer() {if (size>1) SortPointerList(head->next, tail->prev);} 
+
+  // Use INSERTSORT to sort list in asscending order. Use only for PRESORTED lists, otherwise time O(N^2)!
+  void ResortList(); 
+};
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/hhalign/util-C.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/hhalign/util-C.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,879 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ * RCS $Id: util-C.h 155 2010-11-17 12:18:47Z fabian $\n+ */\n+\n+// Utility subroutines\n+\n+\n+#ifndef MAIN\n+#include <iostream>   // cin, cout, cerr\n+#include <fstream>    // ofstream, ifstream \n+#include <cstdio>     // printf\n+#include <stdlib.h>   // exit\n+#include <time.h>     // clock\n+#endif\n+#include <sys/time.h>\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+// Arithmetics\n+/////////////////////////////////////////////////////////////////////////////////////\n+\n+//// max and min\n+inline double dmax(double x, double y) { return (x>y? x : y);}\n+inline double dmin(double x, double y) { return (x<y? x : y);}\n+inline int imax(int x, int y) { return (x>y? x : y);}\n+inline int imin(int x, int y) { return (x<y? x : y);}\n+inline int iabs(int x) { return (x>=0? x : -x);}\n+\n+// Rounding up, rounding down and rounding to nearest integer\n+inline int iceil(double x)  {return int(ceil(x));}\n+inline int ifloor(double x) {return int(floor(x));}\n+inline int iround(double x) {return int(floor(x+0.5));}\n+\n+//// Generalized mean: d=0: sqrt(x*y)  d=1: (x+y)/2  d->-inf: min(x,y)  d->+inf: max(x,y)  \n+inline double fmean(double x, double y, double d) { return pow( (pow(x,d)+pow(y,d))/2 ,1./d);}\n+\n+// log base 2\n+inline float log2(float x)  {return (x<=0? (float)(-100000):1.442695041*log(x));}\n+inline float log10(float x) {return (x<=0? (float)(-100000):0.434294481*log(x));}\n+\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+// fast log base 2\n+/////////////////////////////////////////////////////////////////////////////////////\n+\n+// This function returns log2 with a max abolute deviation of +/- 1.5E-5 (typically 0.8E-5). \n+// It takes 1.42E-8 s  whereas log2(x) takes 9.5E-7 s. It is hence 9.4 times faster. \n+// It makes use of the representation of 4-byte floating point numbers:\n+// seee eeee emmm mmmm mmmm mmmm mmmm mmmm\n+// s is the sign, \n+// the following 8 bits, eee eee e, give the exponent + 127 (in hex: 0x7f).\n+// The following 23 bits, m, give the mantisse, the binary digits behind the decimal point.\n+// In summary: x = (-1)^s * 1.mmmmmmmmmmmmmmmmmmmmmm * 2^(eeeeeee-127) \n+// The expression (((*(int *)&x) & 0x7f800000 ) >>23 )-0x7f is the exponent eeeeeeee, i.e. \n+// the largest integer that is smaller than log2(x) (e.g. -1 for 0.9). *(int *)&x is an integer which \n+// contains the bytes as the floating point variable x is represented in memory.\n+// Check:  assert( sizeof(f) == sizeof(int) );\n+// Check:  assert( sizeof(f) == 4 );\n+inline float fast_log2(float x) \n+{\n+  static float lg2[1025];         // lg2[i] = log2[1+x/1024]\n+  static float diff[1025];        // diff[i]= (lg2[i+1]-lg2[i])/8096 (for interpolation)\n+  static char initialized;\n+  if (x<=0) return -100000;\n+  if (!initialized)   //First fill in the arrays lg2[i] and diff[i]\n+    {\n+      float prev = 0.0f;\n+      lg2[0] = 0.0f;\n+      for (int i=1; i<=1024; ++i) \n+\t{\n+\t  lg2[i] = log(float(1024+i))*1.442695041-10.0f;\n+\t  diff[i-1] = (lg2[i]-prev)*1.2352E-4;\n+\t  prev = lg2[i];\n+\t}\n+      initialized=1;\n+    }  \n+  int a = (((*((int *)&x)) & 0x7F800000) >>23 )-0x7f;\n+  int b =  ((*((int *)&x)) & 0x007FE000) >>13;\n+  int c =  ((*((int *)&x)) & 0x00001FFF);\n+  return a + lg2[b] + diff[b]*(float)(c);\n+}\n+\n+/////////////////////////////////////////'..b'  char* ptr;\n+  char chr;\n+#ifdef WINDOWS\n+  ptr=strrchr(filename,92);  //return adress for LAST \\ (backslash) in name\n+#else\n+  ptr=strrchr(filename,\'/\'); //return adress for LAST / in name\n+#endif\n+  if (ptr) {chr=*(++ptr); *ptr=\'\\0\'; strcpy(pathname,filename); *ptr=chr;} else *pathname=\'\\0\';\n+  return pathname;\n+}\n+\n+// Swaps two integer elements in array k\n+inline void swapi(int k[], int i, int j)\n+{\n+  int temp;\n+  temp=k[i]; k[i]=k[j]; k[j]=temp;\n+}\n+\n+// QSort sorting routine. time complexity of O(N ln(N)) on average\n+// Sorts the index array k between elements i=\'left\' and i=\'right\' in such a way that afterwards \n+// v[k[i]] is sorted downwards (up=-1) or upwards (up=+1)\n+void QSortInt(int v[], int k[], int left, int right, int up=+1)\n+{\n+  int i;      \n+  int last;   // last element to have been swapped\n+  \n+  if (left>=right) return;        // do nothing if less then 2 elements to sort\n+  // Put pivot element in the middle of the sort range to the side (to position \'left\') ...\n+  swapi(k,left,(left+right)/2);  \n+  last=left; \n+  // ... and swap all elements i SMALLER than the pivot \n+  // with an element that is LARGER than the pivot (element last+1):\n+  if (up==1)\n+    {\n+      for (i=left+1; i<=right; i++)\n+\tif (v[k[i]]<v[k[left]]) swapi(k,++last,i);\n+    }\n+  else\n+    for (i=left+1; i<=right; i++)\n+      if (v[k[i]]>v[k[left]]) swapi(k,++last,i);\n+\n+  // Put the pivot to the right of the elements which are SMALLER, left to elements which are LARGER\n+  swapi(k,left,last);\n+\n+  // Sort the elements left from the pivot and right from the pivot\n+  QSortInt(v,k,left,last-1,up);\n+  QSortInt(v,k,last+1,right,up);\n+}\n+\n+// QSort sorting routine. time complexity of O(N ln(N)) on average\n+// Sorts the index array k between elements i=\'left\' and i=\'right\' in such a way that afterwards \n+// v[k[i]] is sorted downwards (up=-1) or upwards (up=+1)\n+void QSortFloat(float v[], int k[], int left, int right, int up=+1)\n+{\n+  int i;      \n+  int last;   // last element to have been swapped\n+  void swapi(int k[], int i, int j);\n+  \n+  if (left>=right) return;        // do nothing if less then 2 elements to sort\n+  // Put pivot element in the middle of the sort range to the side (to position \'left\') ...\n+  swapi(k,left,(left+right)/2);  \n+  last=left; \n+  // ... and swap all elements i SMALLER than the pivot \n+  // with an element that is LARGER than the pivot (element last+1):\n+  if (up==1)\n+    {\n+    for (i=left+1; i<=right; i++)\n+      if (v[k[i]]<v[k[left]]) swapi(k,++last,i);\n+    }\n+  else\n+    for (i=left+1; i<=right; i++)\n+      if (v[k[i]]>v[k[left]]) swapi(k,++last,i);\n+\n+  // Put the pivot to the right of the elements which are SMALLER, left to elements which are LARGER\n+  swapi(k,left,last);\n+\n+  // Sort the elements left from the pivot and right from the pivot\n+  QSortFloat(v,k,left,last-1,up);\n+  QSortFloat(v,k,last+1,right,up);\n+}\n+\n+/**\n+ * @brief comparison function for qsort,\n+ * sorts floating point numbers ascendingly\n+ *\n+ * @param cv1 ponter to 1st entry to be sorted\n+ * @param cv2 ponter to 2nd entry to be sorted\n+ *\n+ * @return 0 if entries are equal,\n+ *  +/-1 if 1st greater/smaller than 2nd\n+ */\n+int CompFltAsc(const void *cv1, const void *cv2){\n+\n+  float f1 = *(float *)cv1;\n+  float f2 = *(float *)cv2;\n+\n+  if      (f1 > f2) { return +1; }\n+  else if (f1 < f2) { return -1; }\n+  else              { return  0; }\n+\n+} /* this is the end of CompFltAsc() */\n+\n+//Return random number in the range [0,1]\n+inline float frand() { return rand()/(RAND_MAX+1.0); }\n+\n+\n+/////////////////////////////////////////////////////////////////////////////////////\n+//// Execute system command\n+/////////////////////////////////////////////////////////////////////////////////////\n+void runSystem(std::string cmd, int v = 2)\n+{\n+  if (v>2)\n+    cout << "Command: " << cmd << "!\\n";\n+  int res = system(cmd.c_str());\n+  if (res!=0) \n+    {\n+      cerr << endl << "ERROR when executing: " << cmd << "!\\n";\n+      exit(1);\n+    }\n+    \n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.cpp Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,214 @@\n+// See KMeans.h\r\n+//\r\n+// Author: David Arthur (darthur@gmail.com), 2009\r\n+\r\n+// Includes\r\n+\r\n+#ifdef CLUSTALO\r\n+/* previously in KMeans.h */\r\n+#include "KmUtils.h"\r\n+#include <iostream>\r\n+#include <stdio.h>\r\n+\r\n+// Sets preferences for how much logging is done and where it is outputted, when k-means is run.\r\n+void ClearKMeansLogging();\r\n+void AddKMeansLogging(std::ostream *out, bool verbose);\r\n+\r\n+/*\r\n+// Runs k-means++ on the given set of points. Set RunKMeans for info on the parameters.\r\n+*/\r\n+Scalar\r\n+RunKMeansPlusPlus(int n, int k, int d, Scalar *points, int attempts,\r\n+                         Scalar *centers, int *assignments);\r\n+\r\n+Scalar\r\n+RunKMeans(int n, int k, int d, Scalar *points, int attempts,\r\n+                 Scalar *centers, int *assignments);\r\n+#else\r\n+#include "KMeans.h"\r\n+#endif\r\n+#include "KmTree.h"\r\n+#include <sstream>\r\n+#include <time.h>\r\n+#include <vector>\r\n+\r\n+#ifdef CLUSTALO\r\n+extern "C" double\r\n+KMeans(int n, int k, int d, Scalar *points, int attempts, int use_lloyds_method,\r\n+       double *centers, int *assignments)\r\n+{\r\n+    if (use_lloyds_method) {\r\n+        /*fprintf(stderr, "FIXME using LLoyd\'s method\\n");*/\r\n+        return RunKMeans(n, k, d, points, attempts,\r\n+                          centers, assignments);\r\n+    } else {\r\n+        /*fprintf(stderr, "FIXME using KMeansPP method\\n");*/\r\n+        return RunKMeansPlusPlus(n, k, d, points, attempts,\r\n+                                  centers, assignments);\r\n+    }\r\n+}\r\n+#endif\r\n+\r\n+using namespace std;\r\n+\r\n+// Logging\r\n+static vector<ostream*> gLogOutputs;\r\n+static vector<ostream*> gVerboseLogOutputs;\r\n+#define LOG(verbose, text) {                                               \\\r\n+  vector<ostream*> &outputs = (verbose? gVerboseLogOutputs : gLogOutputs); \\\r\n+  if (outputs.size() > 0) {                                                \\\r\n+    ostringstream string_stream;                                           \\\r\n+    string_stream << text;                                                 \\\r\n+    for (int i = 0; i < (int)outputs.size(); i++)                          \\\r\n+      *(outputs[i]) << string_stream.str();                                \\\r\n+  }                                                                        \\\r\n+}\r\n+void AddKMeansLogging(std::ostream *out, bool verbose) {\r\n+  if (verbose)\r\n+    gVerboseLogOutputs.push_back(out);\r\n+  gLogOutputs.push_back(out);\r\n+}\r\n+void ClearKMeansLogging() {\r\n+  gLogOutputs.clear();\r\n+  gVerboseLogOutputs.clear();\r\n+}\r\n+\r\n+// Returns the number of seconds since the program began execution.\r\n+static double GetSeconds() {\r\n+  return double(clock()) / CLOCKS_PER_SEC;\r\n+}\r\n+\r\n+// See KMeans.h\r\n+// Performs one full execution of k-means, logging any relevant information, and tracking meta\r\n+// statistics for the run. If min or max values are negative, they are treated as unset.\r\n+// best_centers and best_assignment can be 0, in which case they are not set.\r\n+static void RunKMeansOnce(const KmTree &tree, int n, int k, int d, Scalar *points, Scalar *centers,\r\n+                          Scalar *min_cost, Scalar *max_cost, Scalar *total_cost,\r\n+                          double start_time, double *min_time, double *max_time,\r\n+                          double *total_time, Scalar *best_centers, int *best_assignment) {\r\n+  const Scalar kEpsilon = Scalar(1e-8);  // Used to determine when to terminate k-means\r\n+\r\n+  // Do iterations of k-means until the cost stabilizes\r\n+  Scalar old_cost = 0;\r\n+  bool is_done = false;\r\n+  for (int iteration = 0; !is_done; iteration++) {\r\n+    Scalar new_cost = tree.DoKMeansStep(k, centers, 0);\r\n+    is_done = (iteration > 0 && new_cost >= (1 - kEpsilon) * old_cost);\r\n+    old_cost = new_cost;\r\n+    LOG(true, "Completed iteration #" << (iteration+1) << ", cost=" << new_cost << "..." << endl);\r\n+  }\r\n+  double this_time = GetSeconds() - start_time;\r\n+\r\n+  // Log the clustering we found\r\n+  LOG(false, "Completed run: cost=" << old_cost << " (" << this_time <'..b'cost < 0 || old_cost < *min_cost) {\r\n+    *min_cost = old_cost;\r\n+    if (best_assignment != 0)\r\n+      tree.DoKMeansStep(k, centers, best_assignment);\r\n+    if (best_centers != 0)\r\n+      memcpy(best_centers, centers, sizeof(Scalar)*k*d);\r\n+  }\r\n+\r\n+  // Update all other aggregate stats\r\n+  if (*max_cost < old_cost) *max_cost = old_cost;\r\n+  *total_cost += old_cost;\r\n+  if (*min_time < 0 || *min_time > this_time)\r\n+    *min_time = this_time;\r\n+  if (*max_time < this_time) *max_time = this_time;\r\n+  *total_time += this_time;\r\n+}\r\n+\r\n+// Outputs all meta-stats for a set of k-means or k-means++ runs.\r\n+void LogMetaStats(Scalar min_cost, Scalar max_cost, Scalar total_cost,\r\n+                  double min_time, double max_time, double total_time, int num_attempts) {\r\n+  LOG(false, "Aggregate info over " << num_attempts << " runs:" << endl);\r\n+  LOG(false, "  Cost: min=" << min_cost << " average=" << (total_cost / num_attempts)\r\n+          << " max=" << max_cost << endl);\r\n+  LOG(false, "  Time: min=" << min_time << " average=" << (total_time / num_attempts)\r\n+          << " max=" << max_time << endl << endl);\r\n+}\r\n+\r\n+// See KMeans.h\r\n+Scalar RunKMeans(int n, int k, int d, Scalar *points, int attempts,\r\n+                 Scalar *ret_centers, int *ret_assignment) {\r\n+  KM_ASSERT(k >= 1);\r\n+  \r\n+  // Create the tree and log\r\n+  LOG(false, "Running k-means..." << endl);\r\n+  KmTree tree(n, d, points);\r\n+  LOG(false, "Done preprocessing..." << endl);\r\n+\r\n+  // Initialization\r\n+  Scalar *centers = (Scalar*)malloc(sizeof(Scalar)*k*d);\r\n+  int *unused_centers = (int*)malloc(sizeof(int)*n);\r\n+  KM_ASSERT(centers != 0 && unused_centers != 0);\r\n+  Scalar min_cost = -1, max_cost = -1, total_cost = 0;\r\n+  double min_time = -1, max_time = -1, total_time = 0;\r\n+  \r\n+  // Handle k > n\r\n+  if (k > n) {\r\n+    memset(centers + n*d, -1, (k-d)*sizeof(Scalar));\r\n+    k = n;\r\n+  }\r\n+\r\n+  // Run all the attempts\r\n+  for (int attempt = 0; attempt < attempts; attempt++) {\r\n+    double start_time = GetSeconds();\r\n+\r\n+    // Choose centers uniformly at random\r\n+    for (int i = 0; i < n; i++)\r\n+      unused_centers[i] = i;\r\n+    int num_unused_centers = n;\r\n+    for (int i = 0; i < k; i++) {\r\n+      int j = GetRandom(num_unused_centers--);\r\n+      memcpy(centers + i*d, points + unused_centers[j]*d, d*sizeof(Scalar));\r\n+      unused_centers[j] = unused_centers[num_unused_centers];\r\n+    }\r\n+    \r\n+    // Run k-means\r\n+    RunKMeansOnce(tree, n, k, d, points, centers, &min_cost, &max_cost, &total_cost, start_time,\r\n+                  &min_time, &max_time, &total_time, ret_centers, ret_assignment);\r\n+  }\r\n+  LogMetaStats(min_cost, max_cost, total_cost, min_time, max_time, total_time, attempts);\r\n+\r\n+  // Clean up and return\r\n+  free(unused_centers);\r\n+  free(centers);\r\n+  return min_cost;\r\n+}\r\n+\r\n+// See KMeans.h\r\n+Scalar RunKMeansPlusPlus(int n, int k, int d, Scalar *points, int attempts,\r\n+                         Scalar *ret_centers, int *ret_assignment) {\r\n+  KM_ASSERT(k >= 1);\r\n+\r\n+  // Create the tree and log\r\n+  LOG(false, "Running k-means++..." << endl);\r\n+  KmTree tree(n, d, points);\r\n+  LOG(false, "Done preprocessing..." << endl);\r\n+\r\n+  // Initialization\r\n+  Scalar *centers = (Scalar*)malloc(sizeof(Scalar)*k*d);\r\n+  KM_ASSERT(centers != 0);\r\n+  Scalar min_cost = -1, max_cost = -1, total_cost = 0;\r\n+  double min_time = -1, max_time = -1, total_time = 0;\r\n+\r\n+  // Run all the attempts\r\n+  for (int attempt = 0; attempt < attempts; attempt++) {\r\n+    double start_time = GetSeconds();\r\n+\r\n+    // Choose centers using k-means++ seeding\r\n+    tree.SeedKMeansPlusPlus(k, centers);\r\n+    \r\n+    // Run k-means\r\n+    RunKMeansOnce(tree, n, k, d, points, centers, &min_cost, &max_cost, &total_cost, start_time,\r\n+                  &min_time, &max_time, &total_time, ret_centers, ret_assignment);\r\n+  }\r\n+  LogMetaStats(min_cost, max_cost, total_cost, min_time, max_time, total_time, attempts);\r\n+\r\n+  // Clean up and return\r\n+  free(centers);\r\n+  return min_cost;\r\n+}\r\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KMeans.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,56 @@
+#ifndef CLUSTALO
+// BEWARE: BETA VERSION
+// --------------------
+//
+// The main set of utilities for runnning k-means and k-means++ on arbitrary data sets.
+//
+// Author: David Arthur (darthur@gmail.com), 2009
+#endif
+
+#ifndef KMEANS_H__
+#define KMEANS_H__
+
+#ifndef CLUSTALO
+// Includes
+#include "KmUtils.h"
+#include <iostream>
+
+// Sets preferences for how much logging is done and where it is outputted, when k-means is run.
+void ClearKMeansLogging();
+void AddKMeansLogging(std::ostream *out, bool verbose);
+
+// Runs k-means on the given set of points.
+//   - n: The number of points in the data set
+//   - k: The number of clusters to look for
+//   - d: The number of dimensions that the data set lives in
+//   - points: An array of size n*d where points[d*i + j] gives coordinate j of point i
+//   - attempts: The number of times to independently run k-means with different starting centers.
+//               The best result is always returned (as measured by the cost function).
+//   - centers: This can either be null or an array of size k*d. In the latter case, it will be
+//              filled with the locations of all final cluster centers. Specifically
+//              centers[d*i + j] will give coordinate j of center i. If the cluster is unused, it
+//              will contain NaN instead.
+//   - assignments: This can either be null or an array of size n. In the latter case, it will be
+//                  filled with the cluster that each point is assigned to (an integer between 0
+//                  and k-1 inclusive).
+// The final cost of the clustering is also returned.
+// The final cost of the clustering is also returned.
+Scalar RunKMeans(int n, int k, int d, Scalar *points, int attempts,
+                 Scalar *centers, int *assignments);
+
+// Runs k-means++ on the given set of points. Set RunKMeans for info on the parameters.
+Scalar RunKMeansPlusPlus(int n, int k, int d, Scalar *points, int attempts,
+                         Scalar *centers, int *assignments);
+
+#else
+
+/* CLUSTALO PATCH:
+ * same as above, with one addition: if use_lloyds_method is false, kmpp will be used
+ * otherwise the 'classical' i.e. Looyd's method will be used
+ */
+extern double
+KMeans(int n, int k, int d, double *points, int attempts, int use_lloyds_method,
+                 double *centers, int *assignments);
+
+#endif
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.cpp Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,363 @@\n+// See KmTree.cpp\n+//\n+// Author: David Arthur (darthur@gmail.com), 2009\n+\n+// Includes\n+#include "KmTree.h"\n+#include <iostream>\n+#include <stdlib.h>\n+#include <stdio.h>\n+using namespace std;\n+\n+KmTree::KmTree(int n, int d, Scalar *points): n_(n), d_(d), points_(points) {\n+  // Initialize memory\n+  // DD: need to cast to long otherwise malloc will fail\n+  // if we need more than 2 gigabytes or so\n+  int node_size = sizeof(Node) + d_ * 3 * sizeof(Scalar);\n+  node_data_ = (char*)malloc((2*(long unsigned int)n-1) * node_size);\n+  point_indices_ = (int*)malloc(n * sizeof(int));\n+  for (int i = 0; i < n; i++)\n+    point_indices_[i] = i;\n+  KM_ASSERT(node_data_ != 0 && point_indices_ != 0);\n+\n+  // Calculate the bounding box for the points\n+  Scalar *bound_v1 = PointAllocate(d_);\n+  Scalar *bound_v2 = PointAllocate(d_);\n+  KM_ASSERT(bound_v1 != 0 && bound_v2 != 0);\n+  PointCopy(bound_v1, points, d_);\n+  PointCopy(bound_v2, points, d_);\n+  for (int i = 1; i < n; i++)\n+  for (int j = 0; j < d; j++) {\n+    if (bound_v1[j] > points[i*d_ + j]) bound_v1[j] = points[i*d_ + j];\n+    if (bound_v2[j] < points[i*d_ + j]) bound_v1[j] = points[i*d_ + j];\n+  }\n+\n+  // Build the tree\n+  char *temp_node_data = node_data_;\n+  top_node_ = BuildNodes(points, 0, n-1, &temp_node_data);\n+\n+  // Cleanup\n+  PointFree(bound_v1);\n+  PointFree(bound_v2);\n+}\n+\n+KmTree::~KmTree() {\n+  free(point_indices_);\n+  free(node_data_);\n+}\n+\n+Scalar KmTree::DoKMeansStep(int k, Scalar *centers, int *assignment) const {\n+  // Create an invalid center for comparison purposes\n+  Scalar *bad_center = PointAllocate(d_);\n+  KM_ASSERT(bad_center != 0);\n+  memset(bad_center, 0xff, d_ * sizeof(Scalar));\n+\n+  // Allocate data\n+  Scalar *sums = (Scalar*)calloc(k * d_, sizeof(Scalar));\n+  int *counts = (int*)calloc(k, sizeof(int));\n+  int num_candidates = 0;\n+  int *candidates = (int*)malloc(k * sizeof(int));\n+  KM_ASSERT(sums != 0 && counts != 0 && candidates != 0);\n+  for (int i = 0; i < k; i++)\n+  if (memcmp(centers + i*d_, bad_center, d_ * sizeof(Scalar)) != 0)\n+    candidates[num_candidates++] = i;\n+\n+  // Find nodes\n+  Scalar result = DoKMeansStepAtNode(top_node_, num_candidates, candidates, centers, sums,\n+                                     counts, assignment);\n+\n+  // Set the new centers\n+  for (int i = 0; i < k; i++) {\n+    if (counts[i] > 0) {\n+      PointScale(sums + i*d_, Scalar(1) / counts[i], d_);\n+      PointCopy(centers + i*d_, sums + i*d_, d_);\n+    } else {\n+      memcpy(centers + i*d_, bad_center, d_ * sizeof(Scalar));\n+    }\n+  }\n+\n+  // Cleanup memory\n+  PointFree(bad_center);\n+  free(candidates);\n+  free(counts);\n+  free(sums);\n+  return result;\n+}\n+\n+// Helper functions for constructor\n+// ================================\n+\n+// Build a kd tree from the given set of points\n+KmTree::Node *KmTree::BuildNodes(Scalar *points, int first_index, int last_index,\n+                                 char **next_node_data) {\n+  // Allocate the node\n+  Node *node = (Node*)(*next_node_data);\n+  (*next_node_data) += sizeof(Node);\n+  node->sum = (Scalar*)(*next_node_data);\n+  (*next_node_data) += sizeof(Scalar) * d_;\n+  node->median = (Scalar*)(*next_node_data);\n+  (*next_node_data) += sizeof(Scalar) * d_;\n+  node->radius = (Scalar*)(*next_node_data);\n+  (*next_node_data) += sizeof(Scalar) * d_;\n+\n+  // Fill in basic info\n+  node->num_points = (last_index - first_index + 1);\n+  node->first_point_index = first_index;\n+\n+  // Calculate the bounding box\n+  Scalar *first_point = points + point_indices_[first_index] * d_;\n+  Scalar *bound_p1 = PointAllocate(d_);\n+  Scalar *bound_p2 = PointAllocate(d_);\n+  KM_ASSERT(bound_p1 != 0 && bound_p2 != 0);\n+  PointCopy(bound_p1, first_point, d_);\n+  PointCopy(bound_p2, first_point, d_);\n+  for (int i = first_index+1; i <= last_index; i++)\n+  for (int j = 0; j < d_; j++) {\n+    Scalar c = points[point_indices_[i]*d_ + j];\n+    if (bound_p1[j] > c) bound_p1[j] = c;\n+    if (bound_p2[j] < c) bound_p2[j] = c;\n+  }\n+\n+  // C'..b't_index], c = centers[test_index], then:\n+//       (x-c).(x-c) < (x-c_0).(x-c_0)\n+//   <=> (c-c_0).(c-c_0) < 2(x-c_0).(c-c_0)\n+//\n+// The right-hand side is maximized for a vertex of the box where for each dimension, we choose\n+// the low or high value based on the sign of x-c_0 in that dimension.\n+bool KmTree::ShouldBePruned(Scalar *box_median, Scalar *box_radius, Scalar *centers,\n+                            int best_index, int test_index) const {\n+  if (best_index == test_index)\n+    return false;\n+  \n+  Scalar *best = centers + best_index*d_;\n+  Scalar *test = centers + test_index*d_;\n+  Scalar lhs = 0, rhs = 0;\n+  for (int i = 0; i < d_; i++) {\n+    Scalar component = test[i] - best[i];\n+    lhs += component * component;\n+    if (component > 0)\n+      rhs += (box_median[i] + box_radius[i] - best[i]) * component;\n+    else\n+      rhs += (box_median[i] - box_radius[i] - best[i]) * component;\n+  }\n+  return (lhs >= 2*rhs);\n+}\n+\n+Scalar KmTree::SeedKMeansPlusPlus(int k, Scalar *centers) const {\n+  Scalar *dist_sq = (Scalar*)malloc(n_ * sizeof(Scalar));\n+  KM_ASSERT(dist_sq != 0);\n+\n+  // Choose an initial center uniformly at random\n+  SeedKmppSetClusterIndex(top_node_, 0);\n+  int i = GetRandom(n_);\n+  memcpy(centers, points_ + point_indices_[i]*d_, d_*sizeof(Scalar));\n+  Scalar total_cost = 0;\n+  for (int j = 0; j < n_; j++) {\n+    dist_sq[j] = PointDistSq(points_ + point_indices_[j]*d_, centers, d_);\n+    total_cost += dist_sq[j];\n+  }\n+\n+  // Repeatedly choose more centers\n+  for (int new_cluster = 1; new_cluster < k; new_cluster++) {\n+    while (1) {\n+      Scalar cutoff = (rand() / Scalar(RAND_MAX)) * total_cost;\n+      Scalar cur_cost = 0;\n+      for (i = 0; i < n_; i++) {\n+        cur_cost += dist_sq[i];\n+        if (cur_cost >= cutoff)\n+          break;\n+      }\n+      if (i < n_)\n+        break;\n+    }\n+    memcpy(centers + new_cluster*d_, points_ + point_indices_[i]*d_, d_*sizeof(Scalar));\n+    total_cost = SeedKmppUpdateAssignment(top_node_, new_cluster, centers, dist_sq);\n+  }\n+\n+  // Clean up and return\n+  free(dist_sq);\n+  return total_cost;\n+}\n+\n+// Helper functions for SeedKMeansPlusPlus\n+// =======================================\n+\n+// Sets kmpp_cluster_index to 0 for all nodes\n+void KmTree::SeedKmppSetClusterIndex(const Node *node, int value) const {\n+  node->kmpp_cluster_index = value;\n+  if (node->lower_node != 0) {\n+    SeedKmppSetClusterIndex(node->lower_node, value);\n+    SeedKmppSetClusterIndex(node->upper_node, value);\n+  }\n+}\n+\n+Scalar KmTree::SeedKmppUpdateAssignment(const Node *node, int new_cluster, Scalar *centers,\n+                                        Scalar *dist_sq) const {\n+  // See if we can assign all points in this node to one cluster\n+  if (node->kmpp_cluster_index >= 0) {\n+    if (ShouldBePruned(node->median, node->radius, centers, node->kmpp_cluster_index, new_cluster))\n+      return GetNodeCost(node, centers + node->kmpp_cluster_index*d_);\n+    if (ShouldBePruned(node->median, node->radius, centers, new_cluster,\n+                       node->kmpp_cluster_index)) {\n+      SeedKmppSetClusterIndex(node, new_cluster);\n+      for (int i = node->first_point_index; i < node->first_point_index + node->num_points; i++)\n+        dist_sq[i] = PointDistSq(points_ + point_indices_[i]*d_, centers + new_cluster*d_, d_);\n+      return GetNodeCost(node, centers + new_cluster*d_);\n+    }\n+    \n+    // It may be that the a leaf-node point is equidistant from the new center or old\n+    if (node->lower_node == 0)\n+      return GetNodeCost(node, centers + node->kmpp_cluster_index*d_);\n+  }\n+\n+  // Recurse\n+  Scalar cost = SeedKmppUpdateAssignment(node->lower_node, new_cluster, centers, dist_sq) +\n+                SeedKmppUpdateAssignment(node->upper_node, new_cluster, centers, dist_sq);\n+  int i1 = node->lower_node->kmpp_cluster_index, i2 = node->upper_node->kmpp_cluster_index;\n+  if (i1 == i2 && i1 != -1)\n+    node->kmpp_cluster_index = i1;\n+  else\n+    node->kmpp_cluster_index = -1;\n+  return cost;\n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KmTree.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,77 @@
+// BEWARE: BETA VERSION
+// --------------------
+//
+// A k-d tree that vastly speeds up an iteration of k-means (in any number of dimensions). The main
+// idea for this data structure is from Kanungo/Mount. This is used internally by Kmeans.cpp, and
+// will most likely not need to be used directly.
+//
+// The stucture works as follows:
+//   - All data points are placed into a tree where we choose child nodes by partitioning all data
+//     points along a plane parallel to the axis.
+//   - We maintain for each node, the bounding box of all data points stored at that node.
+//   - To do a k-means iteration, we need to assign points to clusters and calculate the sum and
+//     the number of points assigned to each cluster. For each node in the tree, we can rule out
+//     some cluster centers as being too far away from every single point in that bounding box.
+//     Once only one cluster is left, all points in the node can be assigned to that cluster in
+//     batch.
+//
+// Author: David Arthur (darthur@gmail.com), 2009
+
+#ifndef KM_TREE_H__
+#define KM_TREE_H__
+
+// Includes
+#include "KmUtils.h"
+
+// KmTree class definition
+class KmTree {
+ public:
+  // Constructs a tree out of the given n data points living in R^d.
+  KmTree(int n, int d, Scalar *points);
+  ~KmTree();
+
+  // Given k cluster centers, this runs a full k-means iterations, choosing the next set of
+  // centers and returning the cost function for this set of centers. If assignment is not null,
+  // it should be an array of size n that will be filled with the index of the cluster (0 - k-1)
+  // that each data point is assigned to. The new center values will overwrite the old ones.
+  Scalar DoKMeansStep(int k, Scalar *centers, int *assignment) const;
+
+  // Choose k initial centers for k-means using the kmeans++ seeding procedure. The resulting
+  // centers are returned via the centers variable, which should be pre-allocated to size k*d.
+  // The cost of the initial clustering is returned.
+  Scalar SeedKMeansPlusPlus(int k, Scalar *centers) const;
+
+ private:
+  struct Node {
+    int num_points;                 // Number of points stored in this node
+    int first_point_index;          // The smallest point index stored in this node
+    Scalar *median, *radius;        // Bounding box center and half side-lengths
+    Scalar *sum;                    // Sum of the points stored in this node
+    Scalar opt_cost;                // Min cost for putting all points in this node in 1 cluster
+    Node *lower_node, *upper_node;  // Child nodes
+    mutable int kmpp_cluster_index; // The cluster these points are assigned to or -1 if variable
+  };
+
+  // Helper functions for constructor
+  Node *BuildNodes(Scalar *points, int first_index, int last_index, char **next_node_data);
+  Scalar GetNodeCost(const Node *node, Scalar *center) const;
+
+  // Helper functions for DoKMeans step
+  Scalar DoKMeansStepAtNode(const Node *node, int k, int *candidates, Scalar *centers,
+                            Scalar *sums, int *counts, int *assignment) const;
+  bool ShouldBePruned(Scalar *box_median, Scalar *box_radius, Scalar *centers, int best_index,
+                      int test_index) const;
+
+  // Helper functions for SeedKMeansPlusPlus
+  void SeedKmppSetClusterIndex(const Node *node, int index) const;
+  Scalar SeedKmppUpdateAssignment(const Node *node, int new_cluster, Scalar *centers,
+                                  Scalar *dist_sq) const;
+
+  int n_, d_;
+  Scalar *points_;
+  Node *top_node_;
+  char *node_data_;
+  int *point_indices_;
+};
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.cpp Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,13 @@
+// See KmUtils.h
+//
+// Author: David Arthur (darthur@gmail.com), 2009
+
+#include "KmUtils.h"
+#include <iostream>
+using namespace std;
+
+int __KMeansAssertionFailure(const char *file, int line, const char *expression) {
+  cout << "ASSERTION FAILURE, " << file << " line " << line << ":" << endl;
+  cout << "  " << expression << endl;
+  exit(-1);
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/KmUtils.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,85 @@
+// BEWARE: BETA VERSION
+// --------------------
+//
+// Utilities for arbitrary dimensional points in space. All points are treated as simple value
+// arrays. This is done for two reasons:
+//   - Using value arrays instead of a point class makes all point operations very explicit, which
+//     makes their usage easier to optimize.
+//   - A value array is about as universal a format as possible, which makes it easier for
+//     people to use the k-means code in any project.
+// Also contains assertion code that can be disabled if desired.
+//
+// Author: David Arthur (darthur@gmail.com), 2009
+
+#ifndef KM_UTILS_H__
+#define KM_UTILS_H__
+
+// Includes
+#ifndef CLUSTALO
+#include <malloc.h>
+#endif
+#include <memory.h>
+#include <stdlib.h>
+
+// The data-type used for a single coordinate for points
+typedef double Scalar;
+
+// Point utilities
+// ===============
+
+// Point creation and deletion
+inline Scalar *PointAllocate(int d) {
+  return (Scalar*)malloc(d * sizeof(Scalar));
+}
+
+inline void PointFree(Scalar *p) {
+  free(p);
+}
+
+inline void PointCopy(Scalar *p1, const Scalar *p2, int d) {
+  memcpy(p1, p2, d * sizeof(Scalar));
+}
+
+// Point vector tools
+inline void PointAdd(Scalar *p1, const Scalar *p2, int d) {
+  for (int i = 0; i < d; i++)
+    p1[i] += p2[i];
+}
+
+inline void PointScale(Scalar *p, Scalar scale, int d) {
+  for (int i = 0; i < d; i++)
+    p[i] *= scale;
+}
+
+inline Scalar PointDistSq(const Scalar *p1, const Scalar *p2, int d) {
+  Scalar result = 0;
+  for (int i = 0; i < d; i++)
+    result += (p1[i] - p2[i]) * (p1[i] - p2[i]);
+  return result;
+}
+
+// Assertions
+// ==========
+
+// Comment out ENABLE_KMEANS_ASSERTS to turn off ASSERTS for added speed.
+#define ENABLE_KMEANS_ASSERTS
+#ifdef ENABLE_KMEANS_ASSERTS
+int __KMeansAssertionFailure(const char *file, int line, const char *expression);
+#define KM_ASSERT(expression) \
+  (void)((expression) != 0? 0 : __KMeansAssertionFailure(__FILE__, __LINE__, #expression))
+#else
+#define KM_ASSERT(expression)
+#endif
+
+// Miscellaneous utilities
+// =======================
+
+// Returns a random integer chosen uniformly from the range [0, n-1]. Note that RAND_MAX could be
+// less than n. On Visual Studio, it is only 32767. For larger values of RAND_MAX, we need to be
+// careful of overflow.
+inline int GetRandom(int n) {
+  int u = rand() * RAND_MAX + rand();
+  return ((u % n) + n) % n;
+}
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,18 @@
+# Replaces squids own automake files
+#
+# Some useful automake documentation:
+# http://www.openismus.com/documents/linux/automake/automake.shtml
+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html
+
+#SUBDIRS =
+#EXTRA_DIST = 
+#LDADD =
+
+# need DCLUSTALO here to enable Clustal specific squid patches
+AM_CXXFLAGS = -DCLUSTALO @AM_CXXFLAGS@ 
+
+noinst_LTLIBRARIES = libkmpp.la
+
+libkmpp_la_SOURCES =  KMeans.cpp KMeans.h \
+ KmTree.cpp KmTree.h \
+ KmUtils.cpp KmUtils.h
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/kmpp/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,504 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+# Replaces squids own automake files\n+#\n+# Some useful automake documentation:\n+# http://www.openismus.com/documents/linux/automake/automake.shtml\n+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html\n+\n+#SUBDIRS =\n+#EXTRA_DIST = \n+#LDADD =\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+subdir = src/kmpp\n+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = $(top_builddir)/src/config.h\n+CONFIG_CLEAN_FILES =\n+CONFIG_CLEAN_VPATH_FILES =\n+LTLIBRARIES = $(noinst_LTLIBRARIES)\n+libkmpp_la_LIBADD =\n+am_libkmpp_la_OBJECTS = KMeans.lo KmTree.lo KmUtils.lo\n+libkmpp_la_OBJECTS = $(am_libkmpp_la_OBJECTS)\n+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src\n+depcomp = $(SHELL) $(top_srcdir)/depcomp\n+am__depfiles_maybe = depfiles\n+am__mv = mv -f\n+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)\n+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)\n+CXXLD = $(CXX)\n+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\\n+\t$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+CCLD = $(CC)\n+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+SOURCES = $(libkmpp_la_SOURCES)\n+DIST_SOURCES = $(libkmpp_la_SOURCES)\n+ETAGS = etags\n+CTAGS = ctags\n+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)\n+ACLOCAL = @ACLOCAL@\n+AMTAR = @AMTAR@\n+AM_CFLAGS = @AM_CFLAGS@\n+\n+# need DCLUSTALO here to enable Clustal specific squid patches\n+AM_CXXFLAGS = -DCLUSTALO @AM_CXXFLAGS@ \n+AM_LDFLAGS = @AM_LDFLAGS@\n+AR = @AR@\n+AUTOCONF = @AUTOCONF@\n+AUTOHEADER = @AUTOHEADER@\n+AUTOMAKE = @AUTOMAKE@\n+AWK = @AWK@\n+CC = @CC@\n+CCDEPMODE = @CCDEPMODE@\n+CFLAGS = @CFLAGS@\n+CPP = @CPP@\n+CPPFLAGS = @CPPFLAGS@\n+CXX = @CXX@\n+CXXCPP = @CXXCPP@\n+CXXDEPMODE '..b'\\&/g\'`; \\\n+\ttopsrcdirstrip=`echo "$(top_srcdir)" | sed \'s/[].[^$$\\\\*]/\\\\\\\\&/g\'`; \\\n+\tlist=\'$(DISTFILES)\'; \\\n+\t  dist_files=`for file in $$list; do echo $$file; done | \\\n+\t  sed -e "s|^$$srcdirstrip/||;t" \\\n+\t      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \\\n+\tcase $$dist_files in \\\n+\t  */*) $(MKDIR_P) `echo "$$dist_files" | \\\n+\t\t\t   sed \'/\\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,\' | \\\n+\t\t\t   sort -u` ;; \\\n+\tesac; \\\n+\tfor file in $$dist_files; do \\\n+\t  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \\\n+\t  if test -d $$d/$$file; then \\\n+\t    dir=`echo "/$$file" | sed -e \'s,/[^/]*$$,,\'`; \\\n+\t    if test -d "$(distdir)/$$file"; then \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \\\n+\t      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \\\n+\t  else \\\n+\t    test -f "$(distdir)/$$file" \\\n+\t    || cp -p $$d/$$file "$(distdir)/$$file" \\\n+\t    || exit 1; \\\n+\t  fi; \\\n+\tdone\n+check-am: all-am\n+check: check-am\n+all-am: Makefile $(LTLIBRARIES)\n+installdirs:\n+install: install-am\n+install-exec: install-exec-am\n+install-data: install-data-am\n+uninstall: uninstall-am\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-am\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-am\n+\n+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n+\tmostlyclean-am\n+\n+distclean: distclean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-compile distclean-generic \\\n+\tdistclean-tags\n+\n+dvi: dvi-am\n+\n+dvi-am:\n+\n+html: html-am\n+\n+html-am:\n+\n+info: info-am\n+\n+info-am:\n+\n+install-data-am:\n+\n+install-dvi: install-dvi-am\n+\n+install-dvi-am:\n+\n+install-exec-am:\n+\n+install-html: install-html-am\n+\n+install-html-am:\n+\n+install-info: install-info-am\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-am\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-am\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-am\n+\n+mostlyclean-am: mostlyclean-compile mostlyclean-generic \\\n+\tmostlyclean-libtool\n+\n+pdf: pdf-am\n+\n+pdf-am:\n+\n+ps: ps-am\n+\n+ps-am:\n+\n+uninstall-am:\n+\n+.MAKE: install-am install-strip\n+\n+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \\\n+\tclean-libtool clean-noinstLTLIBRARIES ctags distclean \\\n+\tdistclean-compile distclean-generic distclean-libtool \\\n+\tdistclean-tags distdir dvi dvi-am html html-am info info-am \\\n+\tinstall install-am install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am install-man \\\n+\tinstall-pdf install-pdf-am install-ps install-ps-am \\\n+\tinstall-strip installcheck installcheck-am installdirs \\\n+\tmaintainer-clean maintainer-clean-generic mostlyclean \\\n+\tmostlyclean-compile mostlyclean-generic mostlyclean-libtool \\\n+\tpdf pdf-am ps ps-am tags uninstall uninstall-am\n+\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/main.cpp Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,477 @@\n+/*********************************************************************\n+ * Clustal Omage - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: main.cpp 234 2011-04-13 05:26:16Z andreas $\n+ */\n+\n+/*\n+ * We are using a mix of C and C++, which means that linking has to be\n+ * done with a C++ compiler. By using this "fake" main c++ function,\n+ * automake is convinced to use a C++ compiler for linking.\n+ *\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+    #include "config.h"\n+#endif\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+\n+extern "C" {\n+#include "mymain.h"\n+#include "clustal/util.h"\n+#include "squid/squid.h"\n+}\n+\n+\n+/**\n+ * @brief Convert an old Clustal command line parameter in the form of\n+ * [-/]param[=value] to new parameter if possible\n+ *\n+ * @param[out] iNewArgC_p\n+ * "argc" which will be incremented for each successfully converted option\n+ * @param[out] ppcNewArgV_p\n+ * "argv" to which each successfully converted options will be added\n+ * (caller has to free)\n+ * @param[in] pcOldArg\n+ * The old parameter and value command line option\n+ *\n+ */\n+void\n+ConvertOldCmdLineArg(int *iNewArgC_p, char ***ppcNewArgV_p, char *pcOldArg)\n+{\n+    char *pcOldParam, *pcOldValue, *pcOldArgCopy;\n+    char zcNotImplementedMsg[] = "WARNING: Invalid old command line option";\n+    \n+    pcOldArgCopy = CkStrdup(pcOldArg); \n+    pcOldParam = strtok(pcOldArgCopy, "=");\n+    pcOldValue = strtok(NULL, "=");\n+\n+\n+    /* go through all options in order of appearance in clustalw2 -help\n+     *\n+     */\n+     \n+        /* data\n+         *\n+         */\n+    if (STR_NC_EQ("INFILE", &pcOldParam[1])) {\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-i");\n+        if (NULL != pcOldValue)\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup(pcOldValue);\n+\n+    } else if (STR_NC_EQ("PROFILE1", &pcOldParam[1])) {\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("--profile1");\n+        if (NULL != pcOldValue)\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup(pcOldValue);\n+\n+    } else if (STR_NC_EQ("PROFILE2", &pcOldParam[1])) {\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("--profile2");\n+        if (NULL != pcOldValue)\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup(pcOldValue);\n+\n+        /* verbs\n+         *\n+         */\n+\n+        /* missing:\n+         * OPTIONS\n+         */\n+        \n+    } else if (STR_NC_EQ("HELP", &pcOldParam[1])\n+               || STR_NC_EQ("CHECK", &pcOldParam[1])) {\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-h");\n+        \n+    } else if (STR_NC_EQ("FULLHELP", &pcOldParam[1])) {\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-h");\n+        \n+    } else if (STR_NC_EQ("ALIGN", &pcOldParam[1])) {\n+        char msg[] = "WARNING: The ALIGN option is default in Clustal Omega";\n+        fprintf(stderr, "%s\\n", msg);\n+\n+        /* missing:\n+         * TREE\n+         * PIM\n+         * BOOTSTRAP\n+         * CONVERT\n+         */\n+        \n+        /* parameters\n+         *\n+         */\n+    } else if (STR_NC_EQ("INTERACTIVE", &pcOldParam[1])) {\n+        char msg[] = "WARNING: There is no interactive command-line menu in Clustal Omega";\n+        fprintf(stderr, "%s\\n", msg);\n+        /* trigger help */\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-h");\n+        \n+    } else if (STR_NC_EQ("QUICKTREE", &pcOldParam[1])) {\n+        char msg[] = "WARNING: The QUICKTREE (i.e. k-tuple distance) option is default in Clustal Omega";\n+        fprintf(stderr, "%s\\n", msg);\n+        \n+    } else if (STR_NC_EQ("TYPE", &pcOldParam[1])) {\n+      '..b'+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup(argv[i]);\n+        } else {\n+            ConvertOldCmdLineArg(iNewArgC_p, ppcNewArgV_p, argv[i]);\n+            /*LOG_DEBUG("old command line arg: %s", argv[i]);*/\n+            bOldCmdlineDetected = true;\n+        }\n+    }\n+    \n+    if (bOldCmdlineDetected) {\n+        bool bOutfileOptSet = FALSE;\n+        bool bOutFormatOptSet = FALSE;\n+        \n+        \n+        /* old clustal used to write to a file called in.aln by\n+         *  default. set if not\n+         * explicitely requested otherwisee\n+         */\n+        for (i=0; i<*iNewArgC_p; i++) {\n+            const char *pcOpt = "-o";\n+            if (strlen(pcOpt) <= strlen((*ppcNewArgV_p)[i])) {\n+                if (0 == strncmp((*ppcNewArgV_p)[i], pcOpt, strlen(pcOpt))) {\n+                    bOutfileOptSet = TRUE;\n+                    break;\n+                }\n+            }\n+        }\n+        if (FALSE == bOutfileOptSet) {\n+#ifdef TOO_LAZY_TO_IMPLEMENT_JUST_USING_DEFAULT_NAME_INSTEAD\n+            char *pcDotPos = NULL;\n+            char *pcInfileOpt = NULL;\n+\n+            /* get infile arg and find last dot in it. if found replace\n+             * everything after with "aln", otherwise just add "aln"\n+             */\n+            for (i=0; i<*iNewArgC_p; i++) {\n+                const char *pcOpt = "-i";\n+                if (strlen(pcOpt) <= strlen((*ppcNewArgV_p)[i])) {\n+                    if (0 == strncmp((*ppcNewArgV_p)[i], pcOpt, strlen(pcOpt))) {\n+                        if (*iNewArgC_p<= i+1) {\n+                            fprintf(stderr,\n+                                    "Oups...error while trying to convert old commandline (%s).\\n",\n+                                    "No more arguments left after -i");\n+                            exit(1);\n+                        }\n+                        pcInfileOpt = (*ppcNewArgV_p)[i+1];\n+                        break;\n+                    }\n+                }\n+            }\n+            if (NULL == pcInfileOpt) {\n+                fprintf(stderr,\n+                        "Oups...error while trying to convert old commandline (%s)\\n",\n+                        "No infile opt found");\n+                exit(1);\n+            }\n+\n+            fprintf(stderr, "FIXME: unfinished\\n");\n+            exit(1);\n+#endif\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-o");\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("clustal.aln");\n+        }\n+\n+        \n+        /* old clustal used the clustal format by default. set if not\n+         * explicitely requested otherwisee\n+         */\n+        for (i=0; i<*iNewArgC_p; i++) {\n+            const char *pcOpt = "--outfmt";\n+            if (strlen(pcOpt) <= strlen((*ppcNewArgV_p)[i])) {\n+                if (0 == strncmp((*ppcNewArgV_p)[i], pcOpt, strlen(pcOpt))) {\n+                    bOutFormatOptSet = TRUE;\n+                    break;\n+                }\n+            }\n+        }\n+        if (FALSE == bOutFormatOptSet) {\n+            (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("--outfmt=clustal");\n+        }\n+\n+        \n+        /* old clustal was verbose by default\n+         */\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("-v");\n+        \n+        /* old clustal used to overwrite files by default\n+         */\n+        (*ppcNewArgV_p)[(*iNewArgC_p)++] = CkStrdup("--force");\n+        \n+        fprintf(stderr,\n+                "WARNING: Your old-style command-line options were converted to: ");\n+        for (i=0; i<*iNewArgC_p; i++) {\n+            fprintf(stderr, " %s", (*ppcNewArgV_p)[i]);\n+        }\n+        fprintf(stderr, "\\n");\n+    }\n+\n+}\n+/* end ConvertOldCmdline */\n+\n+\n+\n+int\n+main(int argc, char **argv)\n+{\n+    int new_argc = 0;\n+    char **new_argv = NULL;\n+    int i; /* aux */\n+    \n+    ConvertOldCmdline(&new_argc, &new_argv, argc, argv);\n+    \n+    MyMain(new_argc, new_argv);\n+    \n+    for (i=0; i<new_argc; i++) {\n+        free(new_argv[i]);\n+    }\n+    free(new_argv);\n+    \n+    return 0;\n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/mymain.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/mymain.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,998 @@\n+/* -*- mode: c; tab-width: 4; c-basic-offset: 4;  indent-tabs-mode: nil -*- */\n+\n+/*********************************************************************\n+ * Clustal Omega - Multiple sequence alignment\n+ *\n+ * Copyright (C) 2010 University College Dublin\n+ *\n+ * Clustal-Omega is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License as\n+ * published by the Free Software Foundation; either version 2 of the\n+ * License, or (at your option) any later version.\n+ *\n+ * This file is part of Clustal-Omega.\n+ *\n+ ********************************************************************/\n+\n+/*\n+ *  RCS $Id: mymain.c 242 2011-05-27 14:04:21Z andreas $\n+ */\n+\n+#ifdef HAVE_CONFIG_H\n+#include "config.h"\n+#endif\n+\n+#include <stdio.h>\n+#include <string.h>\n+#include <assert.h>\n+#include <unistd.h>\n+#include <argtable2.h>\n+#include <ctype.h>\n+#include <limits.h>\n+#include <libgen.h> /* for basename only */\n+\n+/* clustal */\n+#include "clustal-omega.h"\n+\n+#include "mymain.h"\n+\n+/* hhalign (parameters) */\n+#include "hhalign/general.h"\n+\n+typedef struct {\n+\n+    /* Sequence input\n+     */\n+    /** sequence type (from cmdline arg) */\n+    int iSeqType;\n+    /** sequence input file. not directly used by Align() */\n+    char *pcSeqInfile;\n+    /** Dealign sequences on input. Otherwise we use the alignment\n+     * info for background-HMM creation */\n+    bool bDealignInputSeqs;\n+\n+    /* profiles: : pre-aligned sequences, whose alignment will not be changed \n+     */\n+    /** profile 1: pre-aligned sequence input. not directly used by Align() */\n+    char *pcProfile1Infile ;\n+    /** profile 2: pre-aligned sequence input. not directly used by Align() */\n+    char *pcProfile2Infile;        \n+    \n+    /** Input limitations\n+     */\n+    /** maximum allowed number of input sequences */\n+    int iMaxNumSeq;\n+    /** maximum allowed input sequence length */\n+    int iMaxSeqLen;\n+\n+    /* Alignment output\n+     */\n+    /** alignment output file */\n+    char *pcAlnOutfile;\n+    /** alignment output format */\n+    int iAlnOutFormat;\n+    /** force overwriting of files */\n+    bool bForceFileOverwrite;\n+\n+    /* multithreading\n+     */\n+    /** number of threads */\n+    int iThreads;\n+\n+    /* logging \n+     */\n+    char *pcLogFile;\n+\n+    opts_t aln_opts;\n+\n+    /* changes here will have to be reflected in SetDefaultUserOpts(),\n+     * FreeUserOpts(), PrintUserOpts() and UserOptsLogicCheck() etc\n+     */\n+} cmdline_opts_t;\n+\n+\n+\n+/* log-file used for non-essential logging in prLog */\n+FILE *prLogFile = NULL;\n+\n+\n+\n+/**\n+ * @brief Sets default user/commandline options\n+ *\n+ * @param[out] opts\n+ * The option structure to initialise\n+ *\n+ */\n+void\n+SetDefaultUserOpts(cmdline_opts_t *opts)\n+{\n+\n+    assert(NULL != opts);\n+\n+    opts->iSeqType = SEQTYPE_UNKNOWN;\n+    opts->pcSeqInfile = NULL;\n+    opts->bDealignInputSeqs = FALSE;        \n+    opts->pcProfile1Infile = NULL;\n+    opts->pcProfile2Infile = NULL;\n+\t\n+    opts->iMaxNumSeq = INT_MAX;\n+    opts->iMaxSeqLen = INT_MAX;\n+    \n+    opts->pcAlnOutfile = NULL;\n+    opts->iAlnOutFormat =  MSAFILE_A2M;\n+    opts->bForceFileOverwrite = FALSE;\n+\n+#ifdef HAVE_OPENMP\n+    /* defaults to # of CPUs */\n+    opts->iThreads = omp_get_max_threads();\n+#else\n+    opts->iThreads = 1;\n+#endif\n+    \n+    opts->pcLogFile = NULL;\n+\n+    SetDefaultAlnOpts(& opts->aln_opts);\n+}\n+/* end of SetDefaultAlnOpts() */\n+\n+\n+\n+\n+/**\n+ * @brief FIXME add doc\n+ *\n+ */\n+void\n+PrintUserOpts(FILE *prFile, cmdline_opts_t *opts) {\n+    \n+    /* keep in same order as in struct. FIXME could this be derived from argtable?\n+     */\n+    /* we only allow protein anyway: fprintf(prFile, "seq-type = %s\\n", SeqTypeToStr(opts->iSeqType)); */\n+    fprintf(prFile, "option: seq-in = %s\\n", \n+            NULL != opts->pcSeqInfile? opts->pcSeqInfile: "(null)");\n+    fprintf(prFile, "option: dealign = %d\\n", opts->bDealignInputSeqs);\n+    fprintf(prFile, "option: profile1 = %s\\n", \n+          '..b'.pcProfile1Infile) {\n+        NewMSeq(&prMSeqProfile1);\n+        if (ReadSequences(prMSeqProfile1, cmdline_opts.pcProfile1Infile,\n+                          cmdline_opts.iSeqType,\n+                          cmdline_opts.iMaxNumSeq, cmdline_opts.iMaxSeqLen)) {\n+            Log(&rLog, LOG_FATAL, "Reading sequences from profile file \'%s\' failed",\n+                  cmdline_opts.pcProfile1Infile);\n+        }\n+        /* FIXME: commented out. FS, r240 -> r241  \n+         * for explanation see below */\n+        /*if (1==prMSeqProfile1->nseqs) {\n+          Log(&rLog, LOG_FATAL, "\'%s\' contains only one sequence and can therefore not be used as a profile",\n+          cmdline_opts.pcProfile1Infile);\n+          }*/\n+        if (FALSE == prMSeqProfile1->aligned) {\n+            Log(&rLog, LOG_FATAL, "Sequences in \'%s\' are not aligned, i.e. this is not a profile",\n+                  cmdline_opts.pcProfile1Infile);\n+        }\n+    }\n+\n+    \n+\n+    /* Read profile2\n+     *\n+     */\n+    if (NULL != cmdline_opts.pcProfile2Infile) {\n+        NewMSeq(&prMSeqProfile2);\n+        if (ReadSequences(prMSeqProfile2, cmdline_opts.pcProfile2Infile,\n+                          cmdline_opts.iSeqType,\n+                          cmdline_opts.iMaxNumSeq, cmdline_opts.iMaxSeqLen)) {\n+            Log(&rLog, LOG_FATAL, "Reading sequences from profile file \'%s\' failed",\n+                  cmdline_opts.pcProfile2Infile);\n+        }\n+        /* FIXME: there is no (clean) way to align a single sequence to a profile. \n+         * if we go down the -i route, it causes a seg-fault in the pair-wise \n+         * k-tuple distance calculation. However, single sequences can be \n+         * understood as 1-profiles. Therefore we have to allow for 1-profiles.\n+         * FS, r240 -> r241 \n+         */\n+        /*if (1==prMSeqProfile2->nseqs) {\n+          Log(&rLog, LOG_FATAL, "\'%s\' contains only one sequence and can therefore not be used as a profile",\n+          cmdline_opts.pcProfile2Infile);\n+          }*/\n+        if (FALSE == prMSeqProfile1->aligned) {\n+            Log(&rLog, LOG_FATAL, "Sequences in \'%s\' are not aligned, i.e. this is not a profile",\n+                  cmdline_opts.pcProfile2Infile);\n+        }\n+    }\n+\n+\n+    /* Depending on the input we got perform\n+     *\n+     * (i) normal alignment: seq + optional profile\n+     * or\n+     * (ii) profile profile alignment\n+     *\n+     */\n+    if (NULL != prMSeq) {\n+        if (Align(prMSeq, prMSeqProfile1, & cmdline_opts.aln_opts, rHhalignPara)) {\n+            Log(&rLog, LOG_FATAL, "An error occured during the alignment");\n+        }\n+\n+        if (WriteAlignment(prMSeq, cmdline_opts.pcAlnOutfile, \n+                           cmdline_opts.iAlnOutFormat)) {\n+            Log(&rLog, LOG_FATAL, "Could not save alignment to %s", cmdline_opts.pcAlnOutfile);\n+        }\n+#if 0\n+        {\n+            bool bSampling = FALSE; /* better set to TRUE for many sequences */\n+            bool bReportAll = TRUE;\n+            AliStat(prMSeq, bSampling, bReportAll);\n+        }\n+#endif\n+        \n+\n+    } else if (NULL != prMSeqProfile1 && NULL != prMSeqProfile2) {\n+        if (AlignProfiles(prMSeqProfile1, prMSeqProfile2, rHhalignPara)) {\n+            Log(&rLog, LOG_FATAL, "An error occured during the alignment");\n+        }\n+        if (WriteAlignment(prMSeqProfile1, cmdline_opts.pcAlnOutfile, \n+                           cmdline_opts.iAlnOutFormat)) {\n+            Log(&rLog, LOG_FATAL, "Could not save alignment to %s", cmdline_opts.pcAlnOutfile);\n+        }\n+    }\n+\n+\n+    /* cleanup\n+     */\n+    if (NULL != prMSeq) {\n+        FreeMSeq(&prMSeq);\n+    }\n+    if (NULL != prMSeqProfile1) {\n+        FreeMSeq(&prMSeqProfile1);\n+    }\n+    if (NULL != prMSeqProfile2) {\n+        FreeMSeq(&prMSeqProfile2);\n+    }\n+\n+    FreeUserOpts(&cmdline_opts);\n+\n+    Log(&rLog, LOG_DEBUG, "Successful program exit");\n+\n+    if (NULL != cmdline_opts.pcLogFile) {\n+        fclose(prLogFile);\n+    }\n+    return EXIT_SUCCESS;\n+}\n+/*  end of MyMain() */\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/mymain.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/mymain.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,23 @@
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ *  RCS $Id: mymain.h 97 2010-07-12 15:30:26Z andreas $
+ */
+
+
+extern int
+MyMain(int argc, char **argv);
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/00README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/00README Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,39 @@
+SQUID - library of functions for biological sequence analysis
+Copyright (C) 1992-2002 Washington University School of Medicine
+
+SQUID is a freely redistributable library of C code functions for
+sequence analysis. SQUID also includes a number of small utility
+programs.
+
+To install squid, see the file:
+  INSTALL      -- instructions for installing the programs
+
+If you have any questions about redistributing squid or using 
+squid code in your own work, see the files:
+  COPYRIGHT    -- copyright notice, and information on my distribution policy
+  LICENSE      -- version 2 of the GNU Public License (see COPYRIGHT)
+
+For a web page with more information on squid, see:
+  http://www.genetics.wustl.edu/eddy/software/#squid
+
+You can always download the latest stable release of squid from:
+  ftp://ftp.genetics.wustl.edu/pub/eddy/software/squid.tar.gz
+
+The development codebase is available by anonymous CVS:
+  cvs -d :pserver:anonymous@skynet.wustl.edu:/repository/sre login
+   (password "anonymous")
+  cvs -d :pserver:anonymous@skynet.wustl.edu:/repository/sre checkout squid
+
+If you encounter any bugs in this library, or you have any questions
+or comments, please e-mail me at the address below. Due to limited
+personal time, I may not respond, but I do read all my mail.
+
+   Sean Eddy
+   eddy@genetics.wustl.edu
+
+   HHMI/Dept. of Genetics
+   Washington University School of Medicine
+   660 South Euclid Box 8232
+   Saint Louis Missouri 63110
+   USA
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/COPYRIGHT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/COPYRIGHT Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,41 @@
+SQUID - a library of functions for biological sequence analysis
+Copyright (C) 1992-2002 Washington University School of Medicine
+All Rights Reserved
+
+This suite of programs is free software. You can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+In other words, you are free to modify, copy, or redistribute this
+source code and its documentation in any way you like, but you must
+distribute all derivative versions as free software under the same
+terms that I've provided my code to you (i.e. the GNU General Public
+License). This precludes any use of the code in proprietary or
+commercial software unless your source code is made freely available.
+
+If you wish to use SQUID code under a different Open Source license
+that's not compatible with the GPL (like the Artistic License, BSD
+license, or the Netscape Public License), please contact me
+(eddy@genetics.wustl.edu) for permission.
+
+Incorporation into commercial software under non-GPL terms is
+possible, by arranging a license with the Washington University School
+of Medicine Center for Technology Management (CTM). For this purpose,
+the CTM is authorized to negotiate on behalf of the Howard Hughes
+Medical Institute, the other copyright holder on the code. Certain
+third party code modules may have to be removed from a non-GPL
+distribution. Contact Jack Pincus (jhpincus@cris.com) to arrange
+non-GPL licensing terms.
+
+This software 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this HMMER release, in the file LICENSE; if not, write to
+the Free Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139
+USA.
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/LICENSE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/LICENSE Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,339 @@\n+\t\t    GNU GENERAL PUBLIC LICENSE\n+\t\t       Version 2, June 1991\n+\n+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n+                          675 Mass Ave, Cambridge, MA 02139, USA\n+ Everyone is permitted to copy and distribute verbatim copies\n+ of this license document, but changing it is not allowed.\n+\n+\t\t\t    Preamble\n+\n+  The licenses for most software are designed to take away your\n+freedom to share and change it.  By contrast, the GNU General Public\n+License is intended to guarantee your freedom to share and change free\n+software--to make sure the software is free for all its users.  This\n+General Public License applies to most of the Free Software\n+Foundation\'s software and to any other program whose authors commit to\n+using it.  (Some other Free Software Foundation software is covered by\n+the GNU Library General Public License instead.)  You can apply it to\n+your programs, too.\n+\n+  When we speak of free software, we are referring to freedom, not\n+price.  Our General Public Licenses are designed to make sure that you\n+have the freedom to distribute copies of free software (and charge for\n+this service if you wish), that you receive source code or can get it\n+if you want it, that you can change the software or use pieces of it\n+in new free programs; and that you know you can do these things.\n+\n+  To protect your rights, we need to make restrictions that forbid\n+anyone to deny you these rights or to ask you to surrender the rights.\n+These restrictions translate to certain responsibilities for you if you\n+distribute copies of the software, or if you modify it.\n+\n+  For example, if you distribute copies of such a program, whether\n+gratis or for a fee, you must give the recipients all the rights that\n+you have.  You must make sure that they, too, receive or can get the\n+source code.  And you must show them these terms so they know their\n+rights.\n+\n+  We protect your rights with two steps: (1) copyright the software, and\n+(2) offer you this license which gives you legal permission to copy,\n+distribute and/or modify the software.\n+\n+  Also, for each author\'s protection and ours, we want to make certain\n+that everyone understands that there is no warranty for this free\n+software.  If the software is modified by someone else and passed on, we\n+want its recipients to know that what they have is not the original, so\n+that any problems introduced by others will not reflect on the original\n+authors\' reputations.\n+\n+  Finally, any free program is threatened constantly by software\n+patents.  We wish to avoid the danger that redistributors of a free\n+program will individually obtain patent licenses, in effect making the\n+program proprietary.  To prevent this, we have made it clear that any\n+patent must be licensed for everyone\'s free use or not licensed at all.\n+\n+  The precise terms and conditions for copying, distribution and\n+modification follow.\n+\x0c\n+\t\t    GNU GENERAL PUBLIC LICENSE\n+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n+\n+  0. This License applies to any program or other work which contains\n+a notice placed by the copyright holder saying it may be distributed\n+under the terms of this General Public License.  The "Program", below,\n+refers to any such program or work, and a "work based on the Program"\n+means either the Program or any derivative work under copyright law:\n+that is to say, a work containing the Program or a portion of it,\n+either verbatim or with modifications and/or translated into another\n+language.  (Hereinafter, translation is included without limitation in\n+the term "modification".)  Each licensee is addressed as "you".\n+\n+Activities other than copying, distribution and modification are not\n+covered by this License; they are outside its scope.  The act of\n+running the Program is not restricted, and the output from the Program\n+is covered only if its contents constitute a work based on the\n+Program (independent of having been made by running the Program).\n+'..b'IGHT HOLDERS AND/OR OTHER PARTIES\n+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n+REPAIR OR CORRECTION.\n+\n+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n+POSSIBILITY OF SUCH DAMAGES.\n+\n+\t\t     END OF TERMS AND CONDITIONS\n+\x0c\n+\tAppendix: How to Apply These Terms to Your New Programs\n+\n+  If you develop a new program, and you want it to be of the greatest\n+possible use to the public, the best way to achieve this is to make it\n+free software which everyone can redistribute and change under these terms.\n+\n+  To do so, attach the following notices to the program.  It is safest\n+to attach them to the start of each source file to most effectively\n+convey the exclusion of warranty; and each file should have at least\n+the "copyright" line and a pointer to where the full notice is found.\n+\n+    <one line to give the program\'s name and a brief idea of what it does.>\n+    Copyright (C) 19yy  <name of author>\n+\n+    This program is free software; you can redistribute it and/or modify\n+    it under the terms of the GNU General Public License as published by\n+    the Free Software Foundation; either version 2 of the License, or\n+    (at your option) any later version.\n+\n+    This program is distributed in the hope that it will be useful,\n+    but WITHOUT ANY WARRANTY; without even the implied warranty of\n+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+    GNU General Public License for more details.\n+\n+    You should have received a copy of the GNU General Public License\n+    along with this program; if not, write to the Free Software\n+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n+\n+Also add information on how to contact you by electronic and paper mail.\n+\n+If the program is interactive, make it output a short notice like this\n+when it starts in an interactive mode:\n+\n+    Gnomovision version 69, Copyright (C) 19yy name of author\n+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.\n+    This is free software, and you are welcome to redistribute it\n+    under certain conditions; type `show c\' for details.\n+\n+The hypothetical commands `show w\' and `show c\' should show the appropriate\n+parts of the General Public License.  Of course, the commands you use may\n+be called something other than `show w\' and `show c\'; they could even be\n+mouse-clicks or menu items--whatever suits your program.\n+\n+You should also get your employer (if you work as a programmer) or your\n+school, if any, to sign a "copyright disclaimer" for the program, if\n+necessary.  Here is a sample; alter the names:\n+\n+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n+  `Gnomovision\' (which makes passes at compilers) written by James Hacker.\n+\n+  <signature of Ty Coon>, 1 April 1989\n+  Ty Coon, President of Vice\n+\n+This General Public License does not permit incorporating your program into\n+proprietary programs.  If your program is a subroutine library, you may\n+consider it more useful to permit linking proprietary applications with the\n+library.  If this is what you want to do, use the GNU Library General\n+Public License instead of this License.\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/Makefile.am
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/Makefile.am Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,43 @@
+# Replaces squids own automake files
+#
+# Some useful automake documentation:
+# http://www.openismus.com/documents/linux/automake/automake.shtml
+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html
+
+#SUBDIRS =
+EXTRA_DIST = COPYRIGHT LICENSE 00README clustalo.README squid-1.9g.tar.gz
+#LDADD =
+
+# need DCLUSTALO here to enable Clustal specific squid patches
+# CLUSTALO is also defined in ../config.h which is included by squid.h
+# but some files do not include squid.h
+AM_CFLAGS = -DCLUSTALO -DSRE_STRICT_ANSI @AM_CFLAGS@ 
+
+noinst_LTLIBRARIES = libsquid.la
+
+libsquid_la_SOURCES =  a2m.c aligneval.c alignio.c \
+ clustal.c cluster.c \
+ dayhoff.c \
+ eps.c \
+ file.c \
+ getopt.c gki.c gki.h gsi.c gsi.h gsi64.c gsi64.h \
+ hsregex.c \
+ iupac.c \
+ msa.c msa.h msf.c \
+ phylip.c \
+ revcomp.c rk.c rk.h \
+ selex.c seqencode.c shuffle.c sqerror.c sqfuncs.h sqio.c squid.h squidcore.c \
+ sre_ctype.c sre_math.c sre_random.c sre_random.h sre_string.c \
+ ssi.c ssi.h stack.c stockholm.c stockholm.h stopwatch.c stopwatch.h \
+ translate.c types.c vectorops.c \
+ vectorops.h version.h \
+ weight.c
+
+library_includedir=$(includedir)/clustalo/squid
+
+library_include_HEADERS = gki.h gsi64.h msa.h rk.h \
+ squid.h stopwatch.h sqfuncs.h \
+ sre_random.h ssi.h stockholm.h \
+ vectorops.h version.h
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/Makefile.in
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/Makefile.in Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,606 @@\n+# Makefile.in generated by automake 1.11.1 from Makefile.am.\n+# @configure_input@\n+\n+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,\n+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,\n+# Inc.\n+# This Makefile.in is free software; the Free Software Foundation\n+# gives unlimited permission to copy and/or distribute it,\n+# with or without modifications, as long as this notice is preserved.\n+\n+# This program is distributed in the hope that it will be useful,\n+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without\n+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A\n+# PARTICULAR PURPOSE.\n+\n+@SET_MAKE@\n+\n+# Replaces squids own automake files\n+#\n+# Some useful automake documentation:\n+# http://www.openismus.com/documents/linux/automake/automake.shtml\n+# http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html\n+\n+\n+VPATH = @srcdir@\n+pkgdatadir = $(datadir)/@PACKAGE@\n+pkgincludedir = $(includedir)/@PACKAGE@\n+pkglibdir = $(libdir)/@PACKAGE@\n+pkglibexecdir = $(libexecdir)/@PACKAGE@\n+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd\n+install_sh_DATA = $(install_sh) -c -m 644\n+install_sh_PROGRAM = $(install_sh) -c\n+install_sh_SCRIPT = $(install_sh) -c\n+INSTALL_HEADER = $(INSTALL_DATA)\n+transform = $(program_transform_name)\n+NORMAL_INSTALL = :\n+PRE_INSTALL = :\n+POST_INSTALL = :\n+NORMAL_UNINSTALL = :\n+PRE_UNINSTALL = :\n+POST_UNINSTALL = :\n+build_triplet = @build@\n+host_triplet = @host@\n+subdir = src/squid\n+DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \\\n+\t$(srcdir)/Makefile.in\n+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prefix_config_h.m4 \\\n+\t$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \\\n+\t$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \\\n+\t$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/ax_openmp.m4 \\\n+\t$(top_srcdir)/configure.ac\n+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \\\n+\t$(ACLOCAL_M4)\n+mkinstalldirs = $(install_sh) -d\n+CONFIG_HEADER = $(top_builddir)/src/config.h\n+CONFIG_CLEAN_FILES =\n+CONFIG_CLEAN_VPATH_FILES =\n+LTLIBRARIES = $(noinst_LTLIBRARIES)\n+libsquid_la_LIBADD =\n+am_libsquid_la_OBJECTS = a2m.lo aligneval.lo alignio.lo clustal.lo \\\n+\tcluster.lo dayhoff.lo eps.lo file.lo getopt.lo gki.lo gsi.lo \\\n+\tgsi64.lo hsregex.lo iupac.lo msa.lo msf.lo phylip.lo \\\n+\trevcomp.lo rk.lo selex.lo seqencode.lo shuffle.lo sqerror.lo \\\n+\tsqio.lo squidcore.lo sre_ctype.lo sre_math.lo sre_random.lo \\\n+\tsre_string.lo ssi.lo stack.lo stockholm.lo stopwatch.lo \\\n+\ttranslate.lo types.lo vectorops.lo weight.lo\n+libsquid_la_OBJECTS = $(am_libsquid_la_OBJECTS)\n+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src\n+depcomp = $(SHELL) $(top_srcdir)/depcomp\n+am__depfiles_maybe = depfiles\n+am__mv = mv -f\n+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \\\n+\t$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \\\n+\t$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)\n+CCLD = $(CC)\n+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \\\n+\t--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \\\n+\t$(LDFLAGS) -o $@\n+SOURCES = $(libsquid_la_SOURCES)\n+DIST_SOURCES = $(libsquid_la_SOURCES)\n+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed \'s|.|.|g\'`;\n+am__vpath_adj = case $$p in \\\n+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \\\n+    *) f=$$p;; \\\n+  esac;\n+am__strip_dir = f=`echo $$p | sed -e \'s|^.*/||\'`;\n+am__install_max = 40\n+am__nobase_strip_setup = \\\n+  srcdirstrip=`echo "$(srcdir)" | sed \'s/[].[^$$\\\\*|]/\\\\\\\\&/g\'`\n+am__nobase_strip = \\\n+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"\n+am__nobase_list = $(am__nobase_strip_setup); \\\n+  for p in $$list; do echo "$$p $$p"; done | \\\n+  sed "s| $$srcdirstrip/| |;"\' / .*\\//!s/ .*/ ./; s,\\( .*\\)/[^/]*$$,\\1,\' | \\\n+  $(AWK) \'BEGIN '..b'lddir)/|;t"`; \\\n+\tcase $$dist_files in \\\n+\t  */*) $(MKDIR_P) `echo "$$dist_files" | \\\n+\t\t\t   sed \'/\\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,\' | \\\n+\t\t\t   sort -u` ;; \\\n+\tesac; \\\n+\tfor file in $$dist_files; do \\\n+\t  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \\\n+\t  if test -d $$d/$$file; then \\\n+\t    dir=`echo "/$$file" | sed -e \'s,/[^/]*$$,,\'`; \\\n+\t    if test -d "$(distdir)/$$file"; then \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \\\n+\t      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \\\n+\t      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \\;; \\\n+\t    fi; \\\n+\t    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \\\n+\t  else \\\n+\t    test -f "$(distdir)/$$file" \\\n+\t    || cp -p $$d/$$file "$(distdir)/$$file" \\\n+\t    || exit 1; \\\n+\t  fi; \\\n+\tdone\n+check-am: all-am\n+check: check-am\n+all-am: Makefile $(LTLIBRARIES) $(HEADERS)\n+installdirs:\n+\tfor dir in "$(DESTDIR)$(library_includedir)"; do \\\n+\t  test -z "$$dir" || $(MKDIR_P) "$$dir"; \\\n+\tdone\n+install: install-am\n+install-exec: install-exec-am\n+install-data: install-data-am\n+uninstall: uninstall-am\n+\n+install-am: all-am\n+\t@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am\n+\n+installcheck: installcheck-am\n+install-strip:\n+\t$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \\\n+\t  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \\\n+\t  `test -z \'$(STRIP)\' || \\\n+\t    echo "INSTALL_PROGRAM_ENV=STRIPPROG=\'$(STRIP)\'"` install\n+mostlyclean-generic:\n+\n+clean-generic:\n+\n+distclean-generic:\n+\t-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)\n+\t-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)\n+\n+maintainer-clean-generic:\n+\t@echo "This command is intended for maintainers to use"\n+\t@echo "it deletes files that may require special tools to rebuild."\n+clean: clean-am\n+\n+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n+\tmostlyclean-am\n+\n+distclean: distclean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+distclean-am: clean-am distclean-compile distclean-generic \\\n+\tdistclean-tags\n+\n+dvi: dvi-am\n+\n+dvi-am:\n+\n+html: html-am\n+\n+html-am:\n+\n+info: info-am\n+\n+info-am:\n+\n+install-data-am: install-library_includeHEADERS\n+\n+install-dvi: install-dvi-am\n+\n+install-dvi-am:\n+\n+install-exec-am:\n+\n+install-html: install-html-am\n+\n+install-html-am:\n+\n+install-info: install-info-am\n+\n+install-info-am:\n+\n+install-man:\n+\n+install-pdf: install-pdf-am\n+\n+install-pdf-am:\n+\n+install-ps: install-ps-am\n+\n+install-ps-am:\n+\n+installcheck-am:\n+\n+maintainer-clean: maintainer-clean-am\n+\t-rm -rf ./$(DEPDIR)\n+\t-rm -f Makefile\n+maintainer-clean-am: distclean-am maintainer-clean-generic\n+\n+mostlyclean: mostlyclean-am\n+\n+mostlyclean-am: mostlyclean-compile mostlyclean-generic \\\n+\tmostlyclean-libtool\n+\n+pdf: pdf-am\n+\n+pdf-am:\n+\n+ps: ps-am\n+\n+ps-am:\n+\n+uninstall-am: uninstall-library_includeHEADERS\n+\n+.MAKE: install-am install-strip\n+\n+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \\\n+\tclean-libtool clean-noinstLTLIBRARIES ctags distclean \\\n+\tdistclean-compile distclean-generic distclean-libtool \\\n+\tdistclean-tags distdir dvi dvi-am html html-am info info-am \\\n+\tinstall install-am install-data install-data-am install-dvi \\\n+\tinstall-dvi-am install-exec install-exec-am install-html \\\n+\tinstall-html-am install-info install-info-am \\\n+\tinstall-library_includeHEADERS install-man install-pdf \\\n+\tinstall-pdf-am install-ps install-ps-am install-strip \\\n+\tinstallcheck installcheck-am installdirs maintainer-clean \\\n+\tmaintainer-clean-generic mostlyclean mostlyclean-compile \\\n+\tmostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n+\ttags uninstall uninstall-am uninstall-library_includeHEADERS\n+\n+\n+# Tell versions [3.59,3.63) of GNU make to not export all variables.\n+# Otherwise a system limit (for SysV at least) may be exceeded.\n+.NOEXPORT:\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/a2m.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/a2m.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,134 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* a2m.c
+ * 
+ * reading/writing A2M (aligned FASTA) files.
+ * 
+ * RCS $Id: a2m.c 242 2011-05-27 14:04:21Z andreas $ (Original squid RCS Id: a2m.c,v 1.1 1999/07/15 22:26:40 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "squid.h"
+#include "msa.h"
+
+/* Function: ReadA2M()
+ * Date:     SRE, Sun Jun  6 17:11:29 1999 [bus from Madison 1999 worm mtg]
+ *
+ * Purpose:  Parse an alignment read from an open A2M format
+ *           alignment file. A2M is a single alignment format.
+ *           Return the alignment, or NULL if we've already
+ *           read the alignment.
+ *
+ * Args:     afp - open alignment file
+ *
+ * Returns:  MSA *  - an alignment object. 
+ *                    Caller responsible for an MSAFree()
+ */
+MSA *
+ReadA2M(MSAFILE *afp)
+{
+  MSA  *msa;
+  char *buf;
+  char *name;
+  char *desc;
+  char *seq;
+  int   idx;
+  int   len1, len2;
+  
+  if (feof(afp->f)) return NULL;
+
+  name = NULL;
+  msa  = MSAAlloc(10, 0);
+  idx  = 0;
+  while ((buf = MSAFileGetLine(afp)) != NULL) 
+    {
+      if (*buf == '>') 
+ {
+   buf++; /* skip the '>' */
+   if ((name = sre_strtok(&buf, WHITESPACE, &len1)) == NULL)
+     Die("Blank name in A2M file %s (line %d)\n", afp->fname, afp->linenumber);
+   desc = sre_strtok(&buf, "\n", &len2);
+
+   idx = GKIStoreKey(msa->index, name);
+   if (idx >= msa->nseqalloc) MSAExpand(msa);
+
+   msa->sqname[idx] = sre_strdup(name, len1);
+   if (desc != NULL) MSASetSeqDescription(msa, idx, desc);
+   msa->nseq++;
+ } 
+      else if (name != NULL) 
+ {
+   if ((seq = sre_strtok(&buf, WHITESPACE, &len1)) == NULL) continue; 
+   msa->sqlen[idx] = sre_strcat(&(msa->aseq[idx]), msa->sqlen[idx], seq, len1);
+ }
+    } 
+  if (name == NULL) { MSAFree(msa); return NULL; }
+
+  MSAVerifyParse(msa);
+  return msa;
+}
+
+
+/* Function: WriteA2M()
+ * Date:     SRE, Sun Jun  6 17:40:35 1999 [bus from Madison, 1999 worm mtg]
+ *
+ * Purpose:  Write an "aligned FASTA" (aka a2m, to UCSC) formatted
+ *           alignment.
+ *
+ * Args:     fp    - open FILE to write to.
+ *           msa   - alignment to write
+ * 
+ * Returns:  void
+ */
+void
+#ifdef CLUSTALO
+WriteA2M(FILE *fp, MSA *msa, int vienna)
+#else
+WriteA2M(FILE *fp, MSA *msa)
+#endif
+{
+  int  idx; /* sequence index */
+  int  pos; /* position in sequence */
+  char buf[64]; /* buffer for individual lines */
+  int  cpl = 60; /* char per line; must be < 64 unless buf is bigger */
+
+  buf[cpl] = '\0';
+  for (idx = 0; idx < msa->nseq; idx++)
+    {
+#ifdef CLUSTALO
+   /* most fasta sequences don't have a description, which
+         * leads to a trailing white space in the original code 
+  */
+ fprintf(fp, ">%s",  msa->sqname[idx]);
+
+        if (msa->sqdesc != NULL && msa->sqdesc[idx] != NULL && !vienna) {
+            fprintf(fp, " %s", msa->sqdesc[idx]);
+        }
+        fprintf(fp, "\n");
+#else
+        fprintf(fp, ">%s %s\n", 
+                msa->sqname[idx],
+                (msa->sqdesc != NULL && msa->sqdesc[idx] != NULL) ? msa->sqdesc[idx] : "");
+#endif
+        for (pos = 0; pos < msa->alen; pos+=cpl)
+        {
+            strncpy(buf, &(msa->aseq[idx][pos]), cpl);
+ if (vienna)
+     fprintf(fp, "%s", buf);
+ else
+ fprintf(fp, "%s\n", buf);
+        }
+ if (vienna)
+     fprintf(fp, "\n");
+
+    }
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/aligneval.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/aligneval.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,527 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* aligneval.c\n+ * \n+ * Comparison of multiple alignments. Three functions are\n+ * provided, using subtly different scoring schemes:\n+ *    CompareMultAlignments()    - basic scoring scheme\n+ *    CompareRefMultAlignments() - only certain "canonical" columns \n+ *                                 are scored\n+ *                                 \n+ * The similarity measure is a fractional alignment identity averaged\n+ * over all sequence pairs. The score for all pairs is:\n+ *      (identically aligned symbols) / (total aligned columns in \n+ *      known alignment)\n+ *      \n+ * A column c is identically aligned for sequences i, j if:\n+ *    1) both i,j have a symbol aligned in column c, and the\n+ *       same pair of symbols is aligned somewhere in the test\n+ *       alignment\n+ *    2) S[i][c] is aligned to a gap in sequence j, and that symbol\n+ *       is aligned to a gap in the test alignment\n+ *    3) converse of 2)\n+ *    \n+ *    \n+ * The algorithm is as follows:\n+ *    1) For each known/test aligned pair of sequences (k1,k2 and t1,t2)\n+ *        construct a list for each sequence, in which for every\n+ *        counted symbol we record the raw index of the symbol in\n+ *        the other sequence that it aligns to, or -1 if it aligns\n+ *        to a gap or uncounted symbol.\n+ *        \n+ *    2)  Compare the list for k1 to the list for t1 and count an identity \n+ *        for each correct alignment.\n+ *        \n+ *    3) Repeat 2) for comparing k2 to t2. Note that this means correct sym/sym\n+ *       alignments count for 2; correct sym/gap alignments count for 1.\n+ *    \n+ *    4) The score is (identities from 2 + identities from 3) / \n+ *       (totals from 2 + totals from 3).\n+ *\n+ * Written originally for koala\'s ss2 pairwise alignment package.\n+ * \n+ * Sean Eddy, Sun Nov  1 12:45:11 1992\n+ * SRE, Thu Jul 29 16:47:18 1993: major revision: all functions replaced by new algorithm\n+ * CVS $Id: aligneval.c,v 1.7 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+\n+#include <stdio.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include "squid.h"\n+#include "sre_random.h"\n+\n+static int make_alilist(char *s1, char *s2, int **ret_s1_list, int *ret_listlen);\n+static int make_ref_alilist(int *refcoords, char *k1, char *k2, char *s1, char *s2, \n+\t\t\t    int **ret_s1_list, int *ret_listlen);\n+static int compare_lists(int *k1, int *k2, int *t1, int *t2, int len1, int len2, float *ret_sc);\n+\n+\n+/* Function: ComparePairAlignments\n+ * \n+ * Purpose:  Calculate and return a number representing how well two different alignments\n+ *           of a pair of sequences compare. The number is, roughly speaking,\n+ *           the fraction of columns which are identically aligned.\n+ * \n+ *           For all columns c in which either known1[c] or known2[c] \n+ *           is a non-gap, count an identity if those same symbols are\n+ *           aligned somewhere in calc1/calc2. The score is identities/total\n+ *           columns examined. (i.e. fully gapped columns don\'t count)\n+ * \n+ *           more explicitly, identities come from:\n+ *             both known and test aligned pairs have the same symbol in the first sequence aligned to\n+ *               a gap in the second sequence;\n+ *             both known and test aligned pairs have the same symbol in the second sequence\n+ *               aligned to a gap in the first sequence;\n+ *             the known alignment has symbols aligned at this column, and the test\n+ *               alignment aligns the same two symbols.\n+ * \n+ * Args:     known1, known2: trusted al'..b'ctual\n+ *             gappy alignments would have high "identities".\n+ *           idents/(AVG|MAX)(len1,len2) both have the disadvantage that \n+ *             alignments of fragments to longer sequences would have\n+ *             artifactually low "identities".\n+ *           \n+ *  Original Case sensitive; also, watch out in nucleic acid alignments; \n+ *           U/T RNA/DNA alignments will be counted as mismatches!\n+ *\n+ *  Clustal Omega patch: Case insensitive and T and U are treated the same\n+ */\n+float\n+PairwiseIdentity(char *s1, char *s2)\n+{\n+  int     idents;\t\t/* total identical positions  */\n+  int     len1, len2;\t\t/* lengths of seqs            */\n+  int     x;\t\t\t/* position in aligned seqs   */\n+\n+  idents = len1 = len2 = 0;\n+  for (x = 0; s1[x] != \'\\0\' && s2[x] != \'\\0\'; x++) \n+    {\n+#ifdef CLUSTALO\n+      char c1 = toupper(s1[x]);\n+      char c2 = toupper(s2[x]);\n+      if (c1==\'U\')\n+          c1 = \'T\';\n+      if (c2==\'U\')\n+          c2 = \'T\';\n+      \n+      if (!isgap(c1)) {\n+          len1++;\n+          if (c1 == c2)\n+              idents++;\n+      }\n+      if (!isgap(c2))\n+          len2++;        \n+#else        \n+      if (!isgap(s1[x])) {\n+\tlen1++;\n+\tif (s1[x] == s2[x]) idents++; \n+      }\n+      if (!isgap(s2[x])) len2++;\n+#endif\n+    }\n+  if (len2 < len1) len1 = len2;\n+  return (len1 == 0 ? 0.0 : (float) idents / (float) len1);\n+}\n+\n+\n+\n+/* Function: AlignmentIdentityBySampling()\n+ * Date:     SRE, Mon Oct 19 14:29:01 1998 [St. Louis]\n+ *\n+ * Purpose:  Estimate and return the average pairwise\n+ *           fractional identity of an alignment,\n+ *           using sampling.\n+ *           \n+ *           For use when there\'s so many sequences that\n+ *           an all vs. all rigorous calculation will\n+ *           take too long.\n+ *           \n+ *           Case sensitive!\n+ *\n+ * Args:     aseq       - aligned sequences\n+ *           L          - length of alignment\n+ *           N          - number of seqs in alignment\n+ *           nsample    - number of samples                     \n+ *\n+ * Returns:  average fractional identity, 0..1.\n+ */\n+float\n+AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample)\n+{\n+  int x, i, j;\t\t\t/* counters */\n+  float sum;\n+\n+  if (N < 2) return 1.0;\n+\n+  sum = 0.;\n+  for (x = 0; x < nsample; x++)\n+    {\n+      i = CHOOSE(N);\n+      do { j = CHOOSE(N); } while (j == i); /* make sure j != i */\n+      sum += PairwiseIdentity(aseq[i], aseq[j]);\n+    }\n+  return sum / (float) nsample;\n+}\n+\n+/* Function: MajorityRuleConsensus()\n+ * Date:     SRE, Tue Mar  7 15:30:30 2000 [St. Louis]\n+ *\n+ * Purpose:  Given a set of aligned sequences, produce a\n+ *           majority rule consensus sequence. If >50% nonalphabetic\n+ *           (usually meaning gaps) in the column, ignore the column.\n+ *\n+ * Args:     aseq  - aligned sequences, [0..nseq-1][0..alen-1]\n+ *           nseq  - number of sequences\n+ *           alen  - length of alignment        \n+ *\n+ * Returns:  ptr to allocated consensus sequence.\n+ *           Caller is responsible for free\'ing this.\n+ */\n+char *\n+MajorityRuleConsensus(char **aseq, int nseq, int alen)\n+{\n+  char *cs;                     /* RETURN: consensus sequence */\n+  int count[27];\t\t/* counts for a..z and gaps in a column */\n+  int idx,apos;\t\t\t/* counters for seq, column */\n+  int spos;\t\t\t/* position in cs */\n+  int x;\t\t\t/* counter for characters */\n+  int sym;\n+  int max, bestx;\n+  \n+  cs = MallocOrDie(sizeof(char) * (alen+1));\n+  \n+  for (spos=0,apos=0; apos < alen; apos++)\n+    {\n+      for (x = 0; x < 27; x++) count[x] = 0;\n+\n+      for (idx = 0; idx < nseq; idx++)\n+\t{\n+\t  if (isalpha(aseq[idx][apos])) {\n+\t    sym = toupper(aseq[idx][apos]);\n+\t    count[sym-\'A\']++;\n+\t  } else {\n+\t    count[26]++;\n+\t  }\n+\t}\n+\n+      if ((float) count[26] / (float) nseq <= 0.5) {\n+\tmax = bestx = -1;\n+\tfor (x = 0; x < 26; x++) \n+\t  if (count[x] > max) { max = count[x]; bestx = x; }\n+\tcs[spos++] = (char) (\'A\' + bestx);\n+      }\n+    }\n+  cs[spos] = \'\\0\';\n+  return cs;\n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/alignio.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/alignio.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,639 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* alignio.c\n+ * SRE, Mon Jul 12 11:57:37 1993\n+ * RCS $Id: alignio.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: alignio.c,v 1.11 2002/10/09 14:26:09 eddy Exp)\n+ * \n+ * Input/output of sequence alignments.\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include "squid.h"\n+#include "sre_random.h"\n+\n+/* Function: AllocAlignment()\n+ * \n+ * Purpose:  Allocate space for an alignment, given the number\n+ *           of sequences and the alignment length in columns.\n+ *           \n+ * Args:     nseq     - number of sequences\n+ *           alen     - width of alignment\n+ *           ret_aseq - RETURN: alignment itself\n+ *           ainfo    - RETURN: other info associated with alignment\n+ *           \n+ * Return:   (void)\n+ *           aseq, ainfo free\'d by caller: FreeAlignment(aseq, &ainfo).\n+ *           note that ainfo itself is alloc\'ed in caller, usually\n+ *           just by a "AINFO ainfo" definition.\n+ */\n+void\n+AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo)\n+{\n+  char **aseq;\n+  int idx;\n+\n+  InitAinfo(ainfo);\n+\n+  aseq = (char **) MallocOrDie (sizeof(char *) * nseq);\n+  for (idx = 0; idx < nseq; idx++)\n+    aseq[idx] = (char *) MallocOrDie (sizeof(char) * (alen+1));\n+\n+  ainfo->alen  = alen;\n+  ainfo->nseq  = nseq;\n+\n+  ainfo->wgt   = (float *) MallocOrDie (sizeof(float) * nseq);\n+  FSet(ainfo->wgt, nseq, 1.0);\n+\n+  ainfo->sqinfo = (SQINFO *) MallocOrDie (sizeof(SQINFO) * nseq);\n+  for (idx = 0; idx < nseq; idx++)\n+    ainfo->sqinfo[idx].flags = 0;\n+\n+  *ret_aseq = aseq;\n+}\n+ \n+\n+/* Function: InitAinfo()\n+ * Date:     SRE, Tue Jan 19 10:16:02 1999 [St. Louis]\n+ *\n+ * Purpose:  Initialize the fields in ainfo structure to\n+ *           default (null) values. Does nothing with \n+ *           fields that are dependent on nseq or alen.\n+ *\n+ * Args:     ainfo  - optional info structure for an alignment\n+ *\n+ * Returns:  (void). ainfo is modified.\n+ */\n+void\n+InitAinfo(AINFO *ainfo)\n+{\n+  ainfo->name  = NULL;\n+  ainfo->desc  = NULL;\n+  ainfo->cs    = NULL;\n+  ainfo->rf    = NULL;\n+  ainfo->acc   = NULL;\n+  ainfo->au    = NULL;\n+  ainfo->flags = 0;\n+\n+  ainfo->tc1  = ainfo->tc2 = 0.0;\n+  ainfo->nc1  = ainfo->nc2 = 0.0;\n+  ainfo->ga1  = ainfo->ga2 = 0.0;\n+}\n+\n+\n+/* Function: FreeAlignment()\n+ * \n+ * Purpose:  Free the space allocated to alignment, names, and optional\n+ *           information. \n+ *           \n+ * Args:     aseqs - sequence alignment\n+ *           ainfo - associated alignment data.\n+ */                  \n+void\n+FreeAlignment(char **aseqs, AINFO *ainfo)\n+{\n+  int i;\n+\n+  for (i = 0; i < ainfo->nseq; i++)\n+    {\n+      if (ainfo->sqinfo[i].flags & SQINFO_SS) free(ainfo->sqinfo[i].ss);\n+      if (ainfo->sqinfo[i].flags & SQINFO_SA) free(ainfo->sqinfo[i].sa);\n+    }\n+  if (ainfo->cs   != NULL) free(ainfo->cs);\n+  if (ainfo->rf   != NULL) free(ainfo->rf);\n+  if (ainfo->name != NULL) free(ainfo->name);\n+  if (ainfo->desc != NULL) free(ainfo->desc);\n+  if (ainfo->acc  != NULL) free(ainfo->acc);\n+  if (ainfo->au   != NULL) free(ainfo->au);\n+\n+  free(ainfo->sqinfo);\n+  free(ainfo->wgt);\n+  Free2DArray((void **) aseqs, ainfo->nseq);\n+}\n+\n+\n+\n+/* Function: SAMizeAlignment()\n+ * Date:     SRE, Tue Jun 30 09:49:40 1998 [St. Louis]\n+ *\n+ * Purpose:  Make a "best effort" attempt to convert an alignment\n+ *           to SAM gap format: - in delete col, . in insert col.\n+ *           Only works if alignment adheres to SAM\'s upper/lower\n+ *           case convention, which is true for instance of old\n+'..b', SQINFO *sqinfo, int nseq, float pop, float pex,\n+\t\tchar ***ret_aseqs, AINFO *ainfo)\n+{\n+  char **aseqs;                 /* RETURN: alignment   */\n+  int    alen;\t\t\t/* length of alignment */\n+  int   *rlen;                  /* lengths of each raw sequence */\n+  int    M;\t\t\t/* length of "model"   */\n+  int  **ins;                   /* insertion counts, 0..nseq-1 by 0..M */\n+  int   *master_ins;            /* max insertion counts, 0..M */\n+  int    apos, rpos, idx;\n+  int    statepos;\n+  int    count;\n+  int    minlen;\n+\n+  /* calculate expected length of model, M\n+   */\n+  rlen = (int *) MallocOrDie (sizeof(int) * nseq);\n+  M = 0;\n+  minlen = 9999999;\n+  for (idx = 0; idx < nseq; idx++)\n+    {\n+      rlen[idx] = strlen(rseqs[idx]);\n+      M += rlen[idx];\n+      minlen = (rlen[idx] < minlen) ? rlen[idx] : minlen;\n+    }\n+  M = (int) ((float) M / (1.0 + pop * (1.0 + 1.0 / (1.0 - pex))));\n+  M /= nseq;\n+  if (M > minlen) M = minlen;\n+\n+  /* make arrays that count insertions in M+1 possible insert states\n+   */\n+  ins = (int **) MallocOrDie (sizeof(int *) * nseq);\n+  master_ins = (int *) MallocOrDie (sizeof(int) * (M+1));\n+  for (idx = 0; idx < nseq; idx++)\n+    {\n+      ins[idx] = (int *) MallocOrDie (sizeof(int) * (M+1));\n+      for (rpos = 0; rpos <= M; rpos++)\n+\tins[idx][rpos] = 0;\n+    }\n+\t\t\t\t/* normalize */\n+  pop = pop / (pop+pex);\n+  pex = 1.0 - pop;\n+\t\t\t\t/* make insertions for individual sequences */\n+  for (idx = 0; idx < nseq; idx++)\n+    {\n+      apos = -1;\n+      for (rpos = 0; rpos < rlen[idx]-M; rpos++)\n+\t{\n+\t  if (sre_random() < pop || apos == -1)\t/* open insertion */\n+\t    apos = CHOOSE(M+1);        /* choose 0..M */\n+\t  ins[idx][apos]++;\n+\t}\n+    }\n+\t\t\t\t/* calculate master_ins, max inserts */\n+  alen = M;\n+  for (apos = 0; apos <= M; apos++)\n+    {\n+      master_ins[apos] = 0;\n+      for (idx = 0; idx < nseq; idx++)\n+\tif (ins[idx][apos] > master_ins[apos])\n+\t  master_ins[apos] = ins[idx][apos];\n+      alen += master_ins[apos];\n+    }\n+\n+\n+  /* Now, construct alignment\n+   */\n+  aseqs = (char **) MallocOrDie (sizeof (char *) * nseq);\n+  for (idx = 0; idx < nseq; idx++)\n+    aseqs[idx] = (char *) MallocOrDie (sizeof(char) * (alen+1));\n+  for (idx = 0; idx < nseq; idx++)\n+    {\n+      apos = rpos = 0;\n+\n+      for (statepos = 0; statepos <= M; statepos++)\n+\t{\n+\t  for (count = 0; count < ins[idx][statepos]; count++)\n+\t    aseqs[idx][apos++] = rseqs[idx][rpos++];\n+\t  for (; count < master_ins[statepos]; count++)\n+\t    aseqs[idx][apos++] = \' \';\n+\n+\t  if (statepos != M)\n+\t    aseqs[idx][apos++] = rseqs[idx][rpos++];\n+\t}\n+      aseqs[idx][alen] = \'\\0\';\n+    }\n+  ainfo->flags = 0;\n+  ainfo->alen  = alen; \n+  ainfo->nseq  = nseq;\n+  ainfo->sqinfo = (SQINFO *) MallocOrDie (sizeof(SQINFO) * nseq);\n+  for (idx = 0; idx < nseq; idx++)\n+    SeqinfoCopy(&(ainfo->sqinfo[idx]), &(sqinfo[idx]));\n+\n+  free(rlen);\n+  free(master_ins);\n+  Free2DArray((void **) ins, nseq);\n+  *ret_aseqs = aseqs;\n+  return 1;\n+}\n+\n+/* Function: AlignmentHomogenousGapsym()\n+ * Date:     SRE, Sun Mar 19 19:37:12 2000 [wren, St. Louis]\n+ *\n+ * Purpose:  Sometimes we\'ve got to convert alignments to \n+ *           a lowest common denominator, and we need\n+ *           a single specific gap character -- for example,\n+ *           PSI-BLAST blastpgp -B takes a very simplistic\n+ *           alignment input format which appears to only\n+ *           allow \'-\' as a gap symbol.\n+ *           \n+ *           Anything matching the isgap() macro is\n+ *           converted.\n+ *\n+ * Args:     aseq   - aligned character strings, [0..nseq-1][0..alen-1]\n+ *           nseq   - number of aligned strings\n+ *           alen   - length of alignment\n+ *           gapsym - character to use for gaps.         \n+ *\n+ * Returns:  void ("never fails")\n+ */\n+void\n+AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym)\n+{\n+  int i, apos;\n+\n+  for (i = 0; i < nseq; i++)\n+    for (apos = 0; apos < alen; apos++)\n+      if (isgap(aseq[i][apos])) aseq[i][apos] = gapsym;\n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/clustal.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/clustal.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,329 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* clustal.c\n+ * SRE, Sun Jun  6 17:50:45 1999 [bus from Madison, 1999 worm mtg]\n+ * \n+ * Import/export of ClustalV/W multiple sequence alignment\n+ * formatted files. Derivative of msf.c; MSF is a pretty\n+ * generic interleaved format.   \n+ * \n+ * RCS $Id: clustal.c 228 2011-03-29 14:05:27Z dave $ (Original squid RCS Id: clustal.c,v 1.1 1999/07/15 22:26:53 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include "squid.h"\n+#include "msa.h"\n+\n+#ifdef CLUSTALO\n+/* needed for PACKAGE_VERSION */\n+#include "../config.h"\n+\n+#ifndef min\n+\t#define min( a, b ) ( ((a) < (b)) ? (a) : (b) )\n+#endif\n+\n+/*These are all the positively scoring groups that occur in the Gonnet Pam250\n+matrix. There are strong and weak groups, defined as strong score >0.5 and\n+weak score =<0.5. Strong matching columns to be assigned \':\' and weak matches\n+assigned \'.\' in the clustal output format.\n+amino_strong = res_cat1\n+amino_weak = res_cat2\n+*/\n+\n+char *amino_strong[] = {"STA", "NEQK", "NHQK", "NDEQ", "QHRK", "MILV",\n+    "MILF", "HY", "FYW", NULL};\n+\n+char *amino_weak[] = {"CSA", "ATV", "SAG", "STNK", "STPA", "SGND",\n+    "SNDEQK", "NDEQHK", "NEQHRK", "FVLIM", "HFY", NULL};\n+\n+#endif\n+\n+#ifdef TESTDRIVE_CLUSTAL\n+/*****************************************************************\n+ * msf.c test driver: \n+ * cc -DTESTDRIVE_CLUSTAL -g -O2 -Wall -o test clustal.c msa.c gki.c sqerror.c sre_string.c file.c hsregex.c sre_math.c sre_ctype.c -lm\n+ * \n+ */\n+int\n+main(int argc, char **argv)\n+{\n+  MSAFILE *afp;\n+  MSA     *msa;\n+  char    *file;\n+  \n+  file = argv[1];\n+\n+  if ((afp = MSAFileOpen(file, MSAFILE_CLUSTAL, NULL)) == NULL)\n+    Die("Couldn\'t open %s\\n", file);\n+\n+  while ((msa = ReadClustal(afp)) != NULL)\n+    {\n+      WriteClustal(stdout, msa);\n+      MSAFree(msa); \n+    }\n+  \n+  MSAFileClose(afp);\n+  exit(0);\n+}\n+/******************************************************************/\n+#endif /* testdrive_clustal */\n+\n+\n+/* Function: ReadClustal()\n+ * Date:     SRE, Sun Jun  6 17:53:49 1999 [bus from Madison, 1999 worm mtg]\n+ *\n+ * Purpose:  Parse an alignment read from an open Clustal format\n+ *           alignment file. Clustal is a single-alignment format.\n+ *           Return the alignment, or NULL if we have no data.\n+ *           \n+ * Args:     afp  - open alignment file\n+ *\n+ * Returns:  MSA * - an alignment object\n+ *                   caller responsible for an MSAFree()\n+ *           NULL if no more alignments\n+ *\n+ * Diagnostics: \n+ *           Will Die() here with a (potentially) useful message\n+ *           if a parsing error occurs.\n+ */\n+MSA *\n+ReadClustal(MSAFILE *afp)\n+{\n+  MSA    *msa;\n+  char   *s;\n+  int     slen;\n+  int     sqidx;\n+  char   *name;\n+  char   *seq;\n+  char   *s2;\n+\n+  if (feof(afp->f)) return NULL;\n+\n+  /* Skip until we see the CLUSTAL header\n+   */\n+  while ((s = MSAFileGetLine(afp)) != NULL)\n+    {\n+      if (strncmp(s, "CLUSTAL", 7) == 0 &&\n+\t  strstr(s, "multiple sequence alignment") != NULL)\n+\tbreak;\n+    }\n+  if (s == NULL) return NULL;\n+\n+  msa = MSAAlloc(10, 0);\n+\n+  /* Now we\'re in the sequence section. \n+   * As discussed above, if we haven\'t seen a sequence name, then we\n+   * don\'t include the sequence in the alignment.\n+   * Watch out for conservation markup lines that contain *.: chars\n+   */\n+  while ((s = MSAFileGetLine(afp)) != NULL) \n+    {\n+      if ((name = sre_strtok(&s, WHITESPACE, NULL))  == NULL) continue;\n+      if ((seq  = sre_strtok(&s, WHITESPACE, &slen)) == NULL) continue;\n+      s2 = sre_strt'..b'\n+              bail = 1;\n+              break;\n+            }\n+          }\n+          if(!bail)\n+            fprintf(fp, "*");\n+          else\n+          {\n+            /* if not then check strong */\n+            for(bin = 0; bin < 9; bin++)\n+              strong_bins[bin] = 0; /* clear the bins */\n+\n+            for(idx = 0; idx < msa->nseq; idx++)\n+            {\n+              switch(msa->aseq[idx][subpos])\n+              {\n+                case \'S\': strong_bins[0]++; break;\n+                case \'T\': strong_bins[0]++; break;\n+                case \'A\': strong_bins[0]++; break;\n+                case \'N\': strong_bins[1]++; strong_bins[2]++; strong_bins[3]++; break;\n+                case \'E\': strong_bins[1]++; strong_bins[3]++; break;\n+                case \'Q\': strong_bins[1]++; strong_bins[2]++; strong_bins[3]++; strong_bins[4]++; break;\n+                case \'K\': strong_bins[1]++; strong_bins[2]++; strong_bins[4]++; break;\n+                case \'D\': strong_bins[3]++; break;\n+                case \'R\': strong_bins[4]++; break;\n+                case \'H\': strong_bins[4]++; strong_bins[7]++; break;\n+                case \'M\': strong_bins[5]++; strong_bins[6]++; break;\n+                case \'I\': strong_bins[5]++; strong_bins[6]++; break;\n+                case \'L\': strong_bins[5]++; strong_bins[6]++; break;\n+                case \'V\': strong_bins[5]++; break;\n+                case \'F\': strong_bins[6]++; strong_bins[8]++; break;\n+                case \'Y\': strong_bins[7]++; strong_bins[8]++; break;\n+                case \'W\': strong_bins[8]++; break;\n+              }\n+            }\n+            bail = 0;\n+            for(bin = 0; bin < 9; bin++)\n+              if(strong_bins[bin] == msa->nseq)\n+              {\n+                  bail = 1;\n+                  break;\n+              }\n+            if(bail)\n+              fprintf(fp, ":");\n+            else\n+            {\n+              /* check weak */\n+              for(bin = 0; bin < 11; bin++)\n+                weak_bins[bin] = 0; /* clear the bins */\n+\n+              for(idx = 0; idx < msa->nseq; idx++)\n+              {\n+                switch(msa->aseq[idx][subpos])\n+                {\n+                  case \'C\': weak_bins[0]++; break;\n+                  case \'S\': weak_bins[0]++; weak_bins[2]++; weak_bins[3]++; weak_bins[4]++; weak_bins[5]++; weak_bins[6]++; break;\n+                  case \'A\': weak_bins[0]++; weak_bins[1]++; weak_bins[2]++; weak_bins[4]++; break;\n+                  case \'T\': weak_bins[1]++; weak_bins[3]++; weak_bins[4]++; break;\n+                  case \'V\': weak_bins[1]++; weak_bins[9]++; break;\n+                  case \'G\': weak_bins[2]++; break;\n+                  case \'N\': weak_bins[3]++; weak_bins[5]++; weak_bins[6]++; weak_bins[7]++; weak_bins[8]++; break;\n+                  case \'K\': weak_bins[3]++; weak_bins[6]++; weak_bins[7]++; weak_bins[8]++; break;\n+                  case \'D\': weak_bins[5]++; weak_bins[6]++; weak_bins[7]++; break;\n+                  case \'E\': weak_bins[6]++; weak_bins[7]++; weak_bins[8]++; break;\n+                  case \'Q\': weak_bins[6]++; weak_bins[7]++; weak_bins[8]++; break;\n+                  case \'H\': weak_bins[7]++; weak_bins[8]++; weak_bins[10]++; break;\n+                  case \'R\': weak_bins[8]++; break;\n+                  case \'F\': weak_bins[9]++; weak_bins[10]++; break;\n+                  case \'L\': weak_bins[9]++; break;\n+                  case \'I\': weak_bins[9]++; break;\n+                  case \'M\': weak_bins[9]++; break;\n+                  case \'Y\': weak_bins[10]++; break;\n+                }\n+              }\n+              bail = 0;\n+              for(bin = 0; bin < 11; bin++)\n+                if(weak_bins[bin] == msa->nseq)\n+                {\n+                    bail = 1;\n+                    break;\n+                }\n+              if(bail)\n+                fprintf(fp, ".");\n+              else\n+                fprintf(fp, " ");\n+            }\n+          }\n+      }\n+      fprintf(fp,"\\n");\n+#endif\n+    }\n+\n+  return;\n+}\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/clustalo.README
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/clustalo.README Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,9 @@
+This is a trimmed down and patched version of Sean Eddy's squid library version 1.9
+See squid-1.9g.tar.gz for the original files.
+Downloaded from  ftp://selab.janelia.org/pub/software/squid/
+
+changes in source code are all done via #ifdef CLUSTALO, which is set via Makefile
+
+We use our own config header instead of squidconf (see squid.h)
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/cluster.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/cluster.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,543 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* cluster.c\n+ * SRE, Sun Jul 18 09:49:47 1993\n+ * moved to squid Thu Mar  3 08:42:57 1994\n+ * RCS $Id: cluster.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: cluster.c,v 1.3 1999/07/15 22:32:16 eddy Exp)\n+ *\n+ * almost identical to bord.c, from fd\n+ * also now contains routines for constructing difference matrices\n+ * from alignments\n+ * \n+ * "branch ordering": Input a symmetric or upper-right-diagonal \n+ * NxN difference matrix (usually constructed by pairwise alignment \n+ * and similarity calculations for N sequences). Use the simple \n+ * cluster analysis part of the Fitch/Margoliash tree-building algorithm\n+ * (as described by Fitch and Margoliash 1967 as well as Feng\n+ * and Doolittle 1987) to calculate the topology of an "evolutionary\n+ * tree" consistent with the difference matrix. Returns an array\n+ * which represents the tree.\n+ * \n+ * The input difference matrix is just an NxN matrix of floats.\n+ * A good match is a small difference score (the algorithm is going\n+ * to search for minima among the difference scores). The original difference\n+ * matrix remains unchanged by the calculations.\n+ * \n+ * The output requires some explanation. A phylogenetic\n+ * tree is a binary tree, with N "leaves" and N-1 "nodes". The\n+ * topology of the tree may be completely described by N-1 structures\n+ * containing two pointers; each pointer points to either a leaf\n+ * or another node. Here, this is implemented with integer indices\n+ * rather than pointers. An array of N-1 pairs of ints is returned.\n+ * If the index is in the range (0..N-1), it is a "leaf" -- the\n+ * number of one of the sequences. If the index is in the range\n+ * (N..2N-2), it is another "node" -- (index-N) is the index\n+ * of the node in the returned array.\n+ * \n+ * If both indices of a member of the returned array point to\n+ * nodes, the tree is "compound": composed of more than one\n+ * cluster of related sequences.\n+ * \n+ * The higher-numbered elements of the returned array were the\n+ * first constructed, and hence represent the distal tips\n+ * of the tree -- the most similar sequences. The root\n+ * is node 0.\n+ ******************************************************************\n+ *\n+ * Algorithm\n+ * \n+ * INITIALIZATIONS:\n+ *  - copy the difference matrix (otherwise the caller\'s copy would\n+ *       get destroyed by the operations of this algorithm). If\n+ *       it\'s asymmetric, make it symmetric.\n+ *  - make a (0..N-1) array of ints to keep track of the indices in\n+ *       the difference matrix as they get swapped around. Initialize\n+ *       this matrix to 0..N-1.\n+ *  - make a (0..N-2) array of int[2] to store the results (the tree\n+ *       topology). Doesn\'t need to be initialized.\n+ *  - keep track of a "N\'", the current size of the difference\n+ *       matrix being operated on.\n+ *\n+ * PROCESSING THE DIFFERENCE MATRIX:\n+ *  - for N\' = N down to N\' = 2  (N-1 steps):\n+ *    - in the half-diagonal N\'xN\' matrix, find the indices i,j at which\n+ *      there\'s the minimum difference score\n+ *      \n+ *     Store the results:\n+ *    - at position N\'-2 of the result array, store coords[i] and \n+ *         coords[j].\n+ *    \n+ *     Move i,j rows, cols to the outside edges of the matrix:\n+ *    - swap row i and row N\'-2\n+ *    - swap row j and row N\'-1   \n+ *    - swap column i and column N\'-2\n+ *    - swap column j and column N\'-1\n+ *    - swap indices i, N\'-2 in the index array\n+ *    - swap indices j, N\'-1 in the index array\n+ *    \n+ *     Build a average difference score for differences to i,'..b's\n+ *           less confusing to have two distinct functions, I find.\n+ *           \n+ * Args:     aseqs        - flushed, aligned sequences\n+ *           num          - number of aseqs\n+ *           ret_imx      - RETURN: identity matrix (caller must free)\n+ *           \n+ * Return:   1 on success, 0 on failure.\n+ *           Caller must free imx using FMX2Free(imx)\n+ */\n+void\n+MakeIdentityMx(char **aseqs, int num, float ***ret_imx)\n+{\n+  float **imx;          /* RETURN: identity matrix           */\n+  int     i,j;\t\t/* counters over sequences           */\n+\n+  /* Allocate 2D float matrix\n+   */\n+  imx = FMX2Alloc(num, num);\n+\n+  /* Calculate distances, symmetric matrix\n+   */\n+  for (i = 0; i < num; i++)\n+    for (j = i; j < num; j++)\n+      imx[i][j] = imx[j][i] = PairwiseIdentity(aseqs[i], aseqs[j]);\n+\n+  *ret_imx = imx;\n+  return;\n+}\n+\n+\n+\n+/* Function: PrintNewHampshireTree()\n+ * \n+ * Purpose:  Print out a tree in the "New Hampshire" standard\n+ *           format. See PHYLIP\'s draw.doc for a definition of\n+ *           the New Hampshire format.\n+ *\n+ *           Like a CFG, we generate the format string left to\n+ *           right by a preorder tree traversal.\n+ *           \n+ * Args:     fp   - file to print to\n+ *           ainfo- alignment info, including sequence names \n+ *           tree - tree to print\n+ *           N    - number of leaves\n+ *           \n+ */\n+void\n+PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N)\n+{                 \n+  struct intstack_s *stack;\n+  int    code;\n+  float *blen;\n+  int    docomma; \n+\n+  blen  = (float *) MallocOrDie (sizeof(float) * (2*N-1));\n+  stack = InitIntStack();\n+  PushIntStack(stack, N);\t/* push root on stack */\n+  docomma = FALSE;\n+  \n+  /* node index code:\n+   *     0..N-1   = leaves; indexes of sequences.\n+   *     N..2N-2  = interior nodes; node-N = index of node in tree structure.\n+   *                code N is the root. \n+   *     2N..3N-2 = special flags for closing interior nodes; node-2N = index in tree\n+   */\n+  while (PopIntStack(stack, &code))\n+    {\n+      if (code < N)\t\t/* we\'re a leaf. */\n+\t{\n+\t\t\t\t/* 1) print name:branchlength */\n+\t  if (docomma) fputs(",", fp);\n+\t  fprintf(fp, "%s:%.5f", ainfo->sqinfo[code].name, blen[code]);\n+\t  docomma = TRUE;\n+\t}\n+\n+      else if (code < 2*N)      /* we\'re an interior node */\n+\t{\n+\t\t\t\t/* 1) print a \'(\' */\n+\t  if (docomma) fputs(",\\n", fp);\n+\t  fputs("(", fp);\n+\t\t\t\t/* 2) push on stack: ), rchild, lchild */\n+\t  PushIntStack(stack, code+N);\n+\t  PushIntStack(stack, tree[code-N].right);\n+\t  PushIntStack(stack, tree[code-N].left);\n+\t\t\t\t/* 3) record branch lengths */\n+\t  blen[tree[code-N].right] = tree[code-N].rblen;\n+\t  blen[tree[code-N].left]  = tree[code-N].lblen;\n+\t  docomma = FALSE;\n+\t}\n+\n+      else\t\t\t/* we\'re closing an interior node */\n+\t{\n+\t\t\t\t/* print a ):branchlength */\n+\t  if (code == 2*N) fprintf(fp, ");\\n");\n+\t  else             fprintf(fp, "):%.5f", blen[code-N]);\n+\t  docomma = TRUE;\n+\t}\n+    }\n+\n+  FreeIntStack(stack);\n+  free(blen);\n+  return;\n+}\n+\n+\n+/* Function: PrintPhylo()\n+ * \n+ * Purpose:  Debugging output of a phylogenetic tree structure.\n+ */\n+void\n+PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N)\n+{\n+  int idx;\n+\n+  for (idx = 0; idx < N-1; idx++)\n+    {\n+      fprintf(fp, "Interior node %d (code %d)\\n", idx, idx+N);\n+      fprintf(fp, "\\tParent: %d (code %d)\\n", tree[idx].parent-N, tree[idx].parent);\n+      fprintf(fp, "\\tLeft:   %d (%s) %f\\n", \n+\t      tree[idx].left < N ? tree[idx].left-N : tree[idx].left,\n+\t      tree[idx].left < N ? ainfo->sqinfo[tree[idx].left].name : "interior",\n+\t      tree[idx].lblen);\n+      fprintf(fp, "\\tRight:   %d (%s) %f\\n", \n+\t      tree[idx].right < N ? tree[idx].right-N : tree[idx].right,\n+\t      tree[idx].right < N ? ainfo->sqinfo[tree[idx].right].name : "interior",\n+\t      tree[idx].rblen);\n+      fprintf(fp, "\\tHeight:  %f\\n", tree[idx].diff);\n+      fprintf(fp, "\\tIncludes:%d seqs\\n", tree[idx].incnum);\n+    }\n+}\n+      \n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/dayhoff.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/dayhoff.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,174 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* dayhoff.c
+ * 
+ * Routines for dealing with PAM matrices.
+ * 
+ * Includes:
+ *    ParsePAMFile()  -- read a PAM matrix from disk.
+ *    
+ *    
+ * SRE - Fri Apr  2 11:23:45 1993   
+ * RCS $Id: dayhoff.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: dayhoff.c,v 1.5 2002/07/03 15:03:39 eddy Exp)
+ */
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include "squid.h"
+
+/* Function: ParsePAMFile()
+ * 
+ * Purpose:  Given a pointer to an open file containing a PAM matrix,
+ *           parse the file and allocate and fill a 2D array of
+ *           floats containing the matrix. The PAM file is
+ *           assumed to be in the format that NCBI distributes
+ *           with BLAST. BLOSUM matrices also work fine, as
+ *           produced by Henikoff's program "MATBLAS".
+ *          
+ *           Parses both old format and new format BLAST matrices.
+ *           Old format just had rows of integers.
+ *           New format includes a leading character on each row.
+ *
+ *           The PAM matrix is a 27x27 matrix, 0=A..25=Z,26=*.
+ *           Note that it's not a 20x20 matrix as you might expect;
+ *           this is for speed of indexing as well as the ability
+ *           to deal with ambiguous characters.
+ *           
+ * Args:     fp        - open PAM file
+ *           ret_pam   - RETURN: pam matrix, integers                   
+ *           ret_scale - RETURN: scale factor for converting
+ *                       to real Sij. For instance, PAM120 is
+ *                       given in units of ln(2)/2. This may
+ *                       be passed as NULL if the caller
+ *                       doesn't care.
+ * 
+ * Returns:  1 on success; 0 on failure and sets squid_errno to
+ *           indicate the cause. ret_pam is allocated here and
+ *           must be freed by the caller (use FreePAM).
+ */
+int
+ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale)
+{
+  int    **pam;
+  char     buffer[512]; /* input buffer from fp                  */
+  int      order[27]; /* order of fields, obtained from header */
+  int      nsymbols; /* total number of symbols in matrix     */
+  char    *sptr;
+  int      idx;
+  int      row, col;
+  float    scale;
+  int      gotscale = FALSE;
+  
+  scale = 0.0; /* just to silence gcc uninit warnings */
+  if (fp == NULL) { squid_errno = SQERR_NODATA; return 0; }
+  
+  /* Look at the first non-blank, non-comment line in the file.
+   * It gives single-letter codes in the order the PAM matrix
+   * is arrayed in the file. 
+   */
+  do {
+    if (fgets(buffer, 512, fp) == NULL) 
+      { squid_errno = SQERR_NODATA; return 0; }
+
+    /* Get the scale factor from the header.
+     * For BLOSUM files, we assume the line looks like:
+     *     BLOSUM Clustered Scoring Matrix in 1/2 Bit Units
+     * and we assume that the fraction is always 1/x;
+     * 
+     * For PAM files, we assume the line looks like:
+     *     PAM 120 substitution matrix, scale = ln(2)/2 = 0.346574
+     * and we assume that the number following the final '=' is our scale
+     */
+    if (strstr(buffer, "BLOSUM Clustered Scoring Matrix") != NULL &&
+ (sptr = strchr(buffer, '/')) != NULL)
+      {
+ sptr++;
+ if (! isdigit((int) (*sptr))) { squid_errno = SQERR_FORMAT; return 0; }
+ scale = (float) (log(2.0) / atof(sptr));
+ gotscale = TRUE;
+      }
+    else if (strstr(buffer, "substitution matrix,") != NULL)
+      {
+ while ((sptr = strrchr(buffer, '=')) != NULL) {
+   sptr += 2;
+   if (IsReal(sptr)) {
+     scale = atof(sptr);
+     gotscale = TRUE;
+     break;
+   }
+ }
+      }
+  } while ((sptr = strtok(buffer, " \t\n")) == NULL || *sptr == '#');
+
+  idx = 0;
+  do {
+    order[idx] = (int) *sptr - (int) 'A';
+    if (order[idx] < 0 || order[idx] > 25) order[idx] = 26;
+    idx++;
+  } while ((sptr = strtok(NULL, " \t\n")) != NULL);
+  nsymbols = idx;
+  
+  /* Allocate a pam matrix. For speed of indexing, we use
+   * a 27x27 matrix so we can do lookups using the ASCII codes
+   * of amino acid single-letter representations, plus one
+   * extra field to deal with the "*" (terminators).
+   */
+  if ((pam = (int **) calloc (27, sizeof(int *))) == NULL)
+    Die("calloc failed");
+  for (idx = 0; idx < 27; idx++)
+    if ((pam[idx] = (int *) calloc (27, sizeof(int))) == NULL)
+      Die("calloc failed");
+
+  /* Parse the rest of the file.
+   */
+  for (row = 0; row < nsymbols; row++)
+    {
+      if (fgets(buffer, 512, fp) == NULL) 
+ { squid_errno = SQERR_NODATA; return 0; }
+
+      if ((sptr = strtok(buffer, " \t\n")) == NULL)
+ { squid_errno = SQERR_NODATA; return 0; }
+      for (col = 0; col < nsymbols; col++)
+ {
+   if (sptr == NULL) { squid_errno = SQERR_NODATA; return 0; }
+
+   /* Watch out for new BLAST format, with leading characters
+    */
+   if (*sptr == '*' || isalpha((int) *sptr))
+     col--;  /* hack hack */
+   else
+     pam [order[row]] [order[col]] = atoi(sptr);
+
+   sptr = strtok(NULL, " \t\n");
+ }
+    }
+  
+  /* Return
+   */
+  if (ret_scale != NULL)
+    {
+      if (gotscale) *ret_scale = scale;
+      else
+ {
+#ifdef CLUSTALO
+   Warning("Failed to parse PAM matrix scale factor. Defaulting to ln(2)/2!");
+#else
+   Warn("Failed to parse PAM matrix scale factor. Defaulting to ln(2)/2!");
+#endif
+   *ret_scale = log(2.0) / 2.0;
+ }
+    }
+  *ret_pam = pam;
+  return 1;
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/eps.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/eps.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,115 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* eps.c
+ * SRE, Thu Jun 21 18:02:31 2001 [St. Louis]
+ * 
+ * Some crude support for Encapsulated PostScript (EPS) output,
+ * DSC compliant.
+ * 
+ * CVS $Id: eps.c,v 1.4 2002/02/24 19:39:27 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "squid.h"
+#include "msa.h"       
+
+/* Function: EPSWriteSmallMSA()
+ * Date:     SRE, Thu Jun 21 18:15:21 2001 [St. Louis]
+ *
+ * Purpose:  Write an alignment in singleblock, Stockholm/SELEX like
+ *           format to an open file. Very crude.
+ *           Currently fails if the alignment is >50 columns long, because
+ *           it doesn't think it will fit on a single page.
+ *
+ * Args:     fp  - open file for writing
+ *           msa - alignment to write     
+ *
+ * Returns:  (void)
+ */
+void
+EPSWriteSmallMSA(FILE *fp, MSA *msa)
+{
+  int namewidth; /* namewidth in PostScript units */
+  int fontwidth; /* width of a character in this font */
+  int hspace;         /* horizontal space between aligned chars */
+  int vspace; /* vertical space between sequences */
+  char *font;                   /* font name, e.g. "Courier" */
+  int fontsize; /* font size in pts */
+  int  i,j; /* counter over sequences, columns */
+  int  len; /* tmp var holding length of something */
+  int  width, height; /* width and height of bounding box */
+  int  xpos, ypos; /* x,y position */
+
+  /* Set some font characteristics; done here, so it'll
+   * be easy to change. Magic numbers for Courier 12 determined
+   * by trial and error.
+   */
+  fontwidth = 8;
+  hspace    = 9;
+  vspace    = 15;
+  font      = sre_strdup("Courier", -1);
+  fontsize  = 12;
+
+  /* Find the width of the longest sequence name in characters.
+   */
+  namewidth = 0;
+  for (i = 0; i < msa->nseq; i++)
+    if ((len = (int) strlen(msa->sqname[i])) > namewidth)
+      namewidth = len;
+  namewidth += 1; /* add a space to separate name & aligned seq */
+  namewidth *= fontwidth;
+
+  /* Determine bounding box
+   */
+  if (msa->alen > 50) Die("No EPS fmt if alignment is >50 columns");
+  width = namewidth + hspace*msa->alen;
+  if (width > 612) Die("Alignment too wide to write in EPS");
+  height = vspace*msa->nseq;
+  if (height > 792) Die("Too many seqs to write in EPS");
+
+  /* Magic EPS header, bare-bones DSC-compliant.
+   */
+  fprintf(fp, "%%!PS-Adobe-3.0 EPSF-3.0\n");
+  fprintf(fp, "%%%%BoundingBox: %d %d %d %d\n", 0, 0, width, height);
+  fprintf(fp, "%%%%Pages: 1\n");
+  fprintf(fp, "%%%%EndComments\n");  
+
+  /* More postscript magic before we start the alignment
+   */
+  fprintf(fp, "/%s findfont\n", font);
+  fprintf(fp, "%d scalefont\n", fontsize);
+  fprintf(fp, "setfont\n");
+  fprintf(fp, "newpath\n");
+
+  /* Write the alignment in PostScript in a single block
+   */
+  for (i = 0; i < msa->nseq; i++)
+    {
+      ypos = (msa->nseq-i-1)*vspace;
+ /* name first */
+      fprintf(fp, "%d %d moveto\n", 0, ypos);
+      fprintf(fp, "(%s) show\n", msa->sqname[i]);
+ /* now seq */
+      xpos = namewidth;
+      for (j = 0; j < msa->alen; j++)
+ {
+   fprintf(fp, "%d %d moveto\n", xpos, ypos);
+   fprintf(fp, "(%c) show\n", msa->aseq[i][j]);
+   xpos+= hspace;
+ }
+    }
+
+  free(font);
+}
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/file.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/file.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,271 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+\n+/* file.c\n+ * SRE, Wed Jun 19 11:19:22 1996\n+ * \n+ * File operation utilities, dealing with pathnames, directories,\n+ * and environment variables.\n+ * \n+ * The goal is to have these be platform-independent but they\n+ * currently are UNIX-specific: i.e. this file is currently POSIX compliant\n+ * but it is NOT ANSI C compliant. (The sole offender is getenv().)\n+ *\n+ * RCS $Id: file.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: file.c,v 1.8 2002/03/07 03:18:02 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+\n+#include "squid.h"\n+#include "sqfuncs.h"\n+\n+/* \n+ * VMS:    #define DIRSLASH \']\'\n+ * MacOS:  #define DIRSLASH \':\'\n+ * DOS:    #define DIRSLASH \'\\\\\'\n+ * \n+ * The code assumes that \'.\' is used for file name extensions,\n+ * such as "foo.bar".\n+ */\n+#define DIRSLASH \'/\'           /* UNIX directory paths have /foo/bar */\n+\n+\n+\n+/* Function: FileDirname()\n+ * \n+ * Purpose:  Returns the path from a filename:\n+ *             "/foo/bar/baz"  -> "/foo/bar"\n+ *             "foo/bar"       -> "foo" \n+ *             "foo"           -> "."\n+ *             "/"             -> "/" \n+ *           i.e. the string will be non-NULL; it will\n+ *           contain the string up to but not including the\n+ *           last \'/\' character; returns "." if\n+ *           there are no \'/\' characters, and returns "/"\n+ *           if the last slash is the first character.\n+ *           Modeled on Tcl\'s "file dirname" command.\n+ *\n+ * Args:     file - name of file "/foo/bar/baz".\n+ *           \n+ * Return:   ptr to malloc\'ed string "/foo/bar".          \n+ */\n+char *\n+FileDirname(char *file)\n+{\n+  char *dirname;\n+  char *lastslash;\n+  int   len;\n+  \n+  lastslash = strrchr(file, DIRSLASH);\n+  len =  (lastslash == NULL) ? 0 : (int) (lastslash - file);\n+  dirname = (char *) MallocOrDie (sizeof(char) * (len+2));\n+  if (len > 0)                strncpy(dirname, file, len);\n+  else if (*file != DIRSLASH) { *dirname = \'.\';      len = 1; }\n+  else                        { *dirname = DIRSLASH; len = 1; }\n+  dirname[len] = \'\\0\';\n+  return dirname;\n+}\n+\n+\n+/* Function: FileTail()\n+ * \n+ * Purpose:  Return everything after the DIRSLASH:\n+ *             "/foo/bar/baz.1"  -> "baz.1"\n+ *             "foo/bar"         -> "bar" \n+ *             "foo"             -> "foo"\n+ *             "/"               -> "" \n+ *           If noextension is TRUE, removes a trailing ".foo" extension\n+ *           too.\n+ *           \n+ * Args:     file        - name of file "/foo/bar/baz.1"         \n+ *           noextension - TRUE to also remove extensions\n+ *           \n+ * Return:   ptr to malloc\'ed string "baz.1"          \n+ */      \n+char * \n+FileTail(char *file, int noextension)\n+{\n+  char *tail;\n+  char *lastslash;\n+  char *lastdot;\n+\t\t\t\t/* remove directory prefix */\n+  lastslash = strrchr(file, DIRSLASH);\n+  tail = (char *) MallocOrDie (sizeof(char) * (strlen(file)+1));\n+  if (lastslash == NULL) strcpy(tail, file);\n+  else                   strcpy(tail, lastslash+1);\n+\t\t\t\t/* remove trailing suffix */\n+  if (noextension) {\n+    if ((lastdot = strrchr(tail, \'.\')) != NULL)\n+      *lastdot = \'\\0\';\n+  }\n+\n+  return tail;\n+}\n+\n+\n+/* Function: FileSameDirectory()\n+ * Date:     SRE, Wed Mar  6 20:03:23 2002 [St. Louis]\n+ *\n+ * Purpose:  Given a path to one file, and the \n+ *           name of another file in the same directory,\n+ *           concat the path from file1 onto file2, and\n+ *           return the result. Caller must free the ptr\n+ *           that\'s returned. \n+ *           \n+ '..b'ncat(path, tail);\n+  if (! seems_ok && strcmp(result, file2) != 0) {\n+    free(result); result = NULL; \n+  }\n+  free(path);\n+  free(tail);\n+  return result;\n+}\n+\n+/* Function: FileConcat()\n+ * \n+ * Purpose:  Concatenate a directory path and a file name,\n+ *           returning a pointer to a malloc\'ed string with the\n+ *           full filename. This isn\'t just a string concat,\n+ *           because we\'re careful about the dir slash.\n+ */\n+char *\n+FileConcat(char *dir, char *file)\n+{\n+  char *full;\n+\n+  full = (char *) MallocOrDie (sizeof(char) * (strlen(dir)+strlen(file)+2));\n+  if (*file == DIRSLASH) strcpy(full, file); /* file = "/foo", ignore directory. */\n+  else                   sprintf(full, "%s%c%s", dir, DIRSLASH, file);\n+  return full;\n+}\n+\n+\n+/* Function: FileAddSuffix()\n+ * Date:     SRE, Wed Aug  1 11:19:33 2001 [Pasadena]\n+ *\n+ * Purpose:  Add a suffix to a filename, return a malloc\'ed\n+ *           string containing the new filename.sfx name.\n+ *           Example:\n+ *             FileAddSuffix("genbank", "ssi")\n+ *           returns "genbank.ssi".  \n+ */\n+char *\n+FileAddSuffix(char *filename, char *sfx)\n+{\n+  char *new;\n+  new = MallocOrDie(strlen(filename) + strlen(sfx) + 2);\n+  sprintf(new, "%s.%s", filename, sfx);\n+  return new;\n+}\n+\n+/* Function: EnvFileOpen()\n+ * Date:     Sun Feb 12 10:55:29 1995            \n+ * \n+ * Purpose:  Open a file, given a file name and an environment\n+ *           variable that contains a directory path. Files\n+ *           are opened read-only. Does not look at current directory\n+ *           unless "." is explicitly in the path specified by env.\n+ *           \n+ *           For instance: \n+ *             fp = EnvFileOpen("BLOSUM45", "BLASTMAT", NULL);\n+ *           or:\n+ *             fp = EnvFileOpen("swiss", "BLASTDB", NULL);  \n+ *             \n+ *           Environment variables may contain a colon-delimited\n+ *           list of more than one path; e.g.\n+ *             setenv BLASTDB /nfs/databases/foo:/nfs/databases/bar\n+ *             \n+ *           Sometimes a group of files may be found in\n+ *           one directory; for instance, an index file with a\n+ *           database. The caller can EnvFileOpen() the main\n+ *           file, and ask to get the name of the\n+ *           directory back in ret_dir, so it can construct\n+ *           the other auxiliary file names and fopen() them. (If it called\n+ *           EnvFileOpen(), it might get confused by \n+ *           file name clashes and open files in different\n+ *           directories.\n+ *             \n+ * Args:     fname   - name of file to open\n+ *           env     - name of environment variable containing path\n+ *           ret_dir - if non-NULL, RETURN: name of dir that was used.\n+ *  \n+ * Return:   FILE * to open file, or NULL on failure -- same as fopen()\n+ *           Caller must free ret_dir if it passed a non-NULL address.\n+ */\n+FILE *\n+EnvFileOpen(char *fname, char *env, char **ret_dir)\n+{\n+  FILE *fp;\n+  char *path;\n+  char *s;                      /* ptr to indiv element in env list */\n+  char  full[1024];             /* constructed file name */\n+\n+  if (env == NULL) return NULL;\n+  if ((path = Strdup(getenv(env))) == NULL) return NULL;\n+  \n+  fp = NULL;\n+  s  = strtok(path, ":");\n+  while (s != NULL)\n+    {\n+      if (((int) strlen(fname) + (int) strlen(s) + 2) > 1024) \n+\t{ free(path); return NULL; }\n+      sprintf(full, "%s%c%s", s, DIRSLASH, fname);\n+      if ((fp = fopen(full, "r")) != NULL) break;\n+      s = strtok(NULL, ":");\n+    }\n+\n+  /* Return the path we used, if caller wants it\n+   */\n+  if (ret_dir != NULL) *ret_dir = Strdup(s);\n+  free(path);\n+  \n+  return fp;\n+}\n+\n+\n+/* Function: FileExists()\n+ * \n+ * Purpose:  Return TRUE if filename exists.\n+ *           Testing fopen() is the only possible platform-independent test\n+ *           I\'m aware of.  \n+ */\n+int\n+FileExists(char *filename)\n+{\n+  FILE *fp;\n+  if ((fp = fopen(filename, "r"))) { fclose(fp); return TRUE; }\n+  return FALSE;\n+}\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/getopt.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/getopt.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,250 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* RCS $Id: getopt.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: getopt.c,v 1.7 2001/02/21 21:09:10 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <string.h>\n+#include <stdlib.h>\n+\n+#include "squid.h"\n+\n+/* Function: Getopt()\n+ * \n+ * Purpose:  Portable command line option parsing with abbreviated\n+ *           option switches. Replaces UNIX getopt(). Using UNIX getopt()\n+ *           hinders portability to non-UNIX platforms, and getopt()\n+ *           is also limited to single letter options.\n+ *\n+ *           Getopt() implements a superset of UNIX getopt().\n+ *           All of getopt()\'s single-character switch behavior\n+ *           is emulated, and "--" by itself terminates the options.\n+ *           Additionally, Getopt() provides extended switches\n+ *           like "--youroptionhere", and Getopt() type checks\n+ *           arguments.  \n+ * \n+ *           Extended options must start with "--", as in "--option1".\n+ *           Normal options must start with "-", as in "-o".\n+ *           Normal options may be concatenated, as in "-a -b" == "-ab".\n+ *           \n+ *           See bottom of this .c file after #fdef GETOPT_TESTDRIVER\n+ *           for an example of calling Getopt().\n+ *           \n+ * Args:     argc  - from main(). number of elems in argv.\n+ *           argv  - from main(). argv[0] is the name of the command.\n+ *           opt   - array of opt_s structures, defining option switches\n+ *           nopts - number of switches in opt\n+ *           usage - a (possibly long) string to print if usage error.\n+ *           ret_optind - RETURN: the index in argv[] of the next \n+ *                        valid command-line token.\n+ *           ret_optname- RETURN: ptr to the name of option switch \n+ *                        seen, or NULL if no option was seen.\n+ *           ret_optarg - RETURN: ptr to the optional argument, if any;\n+ *                        NULL if option takes no argument.\n+ *                        \n+ * Return:   1 if a valid option was parsed.\n+ *           0 if no option was found, and command-line parsing is complete.\n+ *           Die()\'s here if an error is detected.\n+ */\n+int\n+Getopt(int argc, char **argv, struct opt_s *opt, int nopts, char *usage,\n+       int *ret_optind, char **ret_optname, char **ret_optarg)\n+{\n+  int i;\n+  int arglen;\n+  int nmatch;\n+  static int optind   = 1;        /* init to 1 on first call  */\n+  static char *optptr = NULL;     /* ptr to next valid switch */\n+  int opti = 0;\t\t\t  /* init only to silence gcc uninit warnings */\n+\n+  /* Check to see if we\'ve run out of options.\n+   * A \'-\' by itself is an argument (e.g. "read from stdin")\n+   * not an option.\n+   */\n+  if (optind >= argc || argv[optind][0] != \'-\' || strcmp(argv[optind], "-") == 0)\n+    { \n+      *ret_optind  = optind; \n+      *ret_optarg  = NULL; \n+      *ret_optname = NULL; \n+      return 0; \n+    }\n+\n+  /* Check to see if we\'re being told that this is the end\n+   * of the options with the special "--" flag.\n+   */\n+  if (strcmp(argv[optind], "--") == 0)\n+    { \n+      optind++;\n+      *ret_optind  = optind; \n+      *ret_optname = NULL;\n+      *ret_optarg  = NULL; \n+      return 0; \n+    }\n+\n+  /* We have a real option. Find which one it is.\n+   * We handle single letter switches "-o" separately\n+   * from full switches "--option", based on the "-" vs. "--"\n+   * prefix -- single letter switches can be concatenated\n+   * as long as they don\'t have arguments.\n+   */\n+\t\t\t\t/* full option */\n+  if (optptr == NULL && strncmp(argv[optind], '..b'd], \'=\')) != NULL)\n+\t{ *optptr = \'\\0\'; optptr++; }\n+\n+      arglen = strlen(argv[optind]);\n+      nmatch = 0;\n+      for (i = 0; i < nopts; i++)\n+\tif (opt[i].single == FALSE && \n+\t    strncmp(opt[i].name, argv[optind], arglen) == 0)\n+\t  { \n+\t    nmatch++;\n+\t    opti = i;\n+\t    if (arglen == strlen(opt[i].name)) break; /* exact match, stop now */\n+\t  }\n+      if (nmatch > 1 && arglen != strlen(opt[i].name)) \n+\tDie("Option \\"%s\\" is ambiguous; please be more specific.\\n%s",\n+\t    argv[optind], usage);\n+      if (nmatch == 0)\n+\tDie("No such option \\"%s\\".\\n%s", argv[optind], usage);\n+\n+      *ret_optname = opt[opti].name;\n+\n+      /* Set the argument, if there is one\n+       */\n+      if (opt[opti].argtype != sqdARG_NONE) \n+\t{\n+\t  if (optptr != NULL)\n+\t    {\t\t\t/* --foo=666 style */\n+\t      *ret_optarg = optptr;\n+\t      optptr = NULL;\n+\t      optind++;\n+\t    }\n+\t  else if (optind+1 >= argc)\n+\t    Die("Option %s requires an argument\\n%s", opt[opti].name, usage);\n+\t  else\t\t\t/* "--foo 666" style */\n+\t    {\n+\t      *ret_optarg = argv[optind+1];\n+\t      optind+=2;\n+\t    }\n+\t}\n+      else  /* sqdARG_NONE */\n+\t{\n+\t  if (optptr != NULL) \n+\t    Die("Option %s does not take an argument\\n%s", opt[opti].name, usage);\n+\t  *ret_optarg = NULL;\n+\t  optind++;\n+\t}\n+    }\n+  else\t\t\t\t/* else, a single letter option "-o" */\n+    {\n+\t\t\t\t/* find the option */\n+      if (optptr == NULL) \n+\toptptr = argv[optind]+1;\n+      for (opti = -1, i = 0; i < nopts; i++)\n+\tif (opt[i].single == TRUE && *optptr == opt[i].name[1])\n+\t  { opti = i; break; }\n+      if (opti == -1)\n+\tDie("No such option \\"%c\\".\\n%s", *optptr, usage);\n+      *ret_optname = opt[opti].name;\n+\n+\t\t\t\t/* set the argument, if there is one */\n+      if (opt[opti].argtype != sqdARG_NONE) \n+\t{\n+\t  if (*(optptr+1) != \'\\0\')   /* attached argument */\n+\t    {\n+\t      *ret_optarg = optptr+1;\n+\t      optind++;\n+\t    }\n+\t  else if (optind+1 < argc) /* unattached argument */\n+\t    {\n+\t      *ret_optarg = argv[optind+1];\n+\t      optind+=2;\t      \n+\t    }\n+\t  else Die("Option %s requires an argument\\n%s", opt[opti].name, usage);\n+\n+\t  optptr = NULL;\t/* can\'t concatenate after an argument */\n+\t}\n+      else  /* sqdARG_NONE */\n+\t{\n+\t  *ret_optarg = NULL;\n+\t  if (*(optptr+1) != \'\\0\')   /* concatenation */\n+\t    optptr++; \n+\t  else\n+\t    {\n+\t      optind++;                /* move to next field */\n+\t      optptr = NULL;\n+\t    }\n+\t}\n+\n+    }\n+\n+  /* Type check the argument, if there is one\n+   */\n+  if (opt[opti].argtype != sqdARG_NONE) \n+    {\n+      if (opt[opti].argtype == sqdARG_INT && ! IsInt(*ret_optarg))\n+\tDie("Option %s requires an integer argument\\n%s",\n+\t    opt[opti].name, usage);\n+      else if (opt[opti].argtype == sqdARG_FLOAT && ! IsReal(*ret_optarg))\n+\tDie("Option %s requires a numerical argument\\n%s",\n+\t    opt[opti].name, usage);\n+      else if (opt[opti].argtype == sqdARG_CHAR && strlen(*ret_optarg) != 1)\n+\tDie("Option %s requires a single-character argument\\n%s",\n+\t    opt[opti].name, usage);\n+      /* sqdARG_STRING is always ok, no type check necessary */\n+    }\n+\n+  *ret_optind = optind;\n+  return 1;\n+}\n+\n+\n+\n+#ifdef GETOPT_TESTDRIVER \n+/* cc -DGETOPT_TESTDRIVER -L ~/lib/squid.linux/ getopt.c -lsquid\n+ */\n+struct opt_s OPTIONS[] = {\n+  { "--test1", FALSE, sqdARG_INT    },\n+  { "--test2", FALSE, sqdARG_FLOAT  },\n+  { "--test3", FALSE, sqdARG_STRING },\n+  { "--test4", FALSE, sqdARG_CHAR   },\n+  { "-a",      TRUE,  sqdARG_NONE   },\n+  { "-b",      TRUE,  sqdARG_INT    },\n+};\n+#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s))\n+    \n+int\n+main(int argc, char **argv)\n+{\n+  int   optind;\n+  char *optarg;\n+  char *optname;\n+\n+  while (Getopt(argc, argv, OPTIONS, NOPTIONS, "Usage/help here",\n+\t\t&optind, &optname, &optarg))\n+    {\n+      printf("Option:   index: %d name: %s argument: %s\\n",\n+\t     optind, optname, optarg);\n+    }\n+  while (optind < argc)\n+    {\n+      printf("Argument: index: %d name: %s\\n", optind, argv[optind]);\n+      optind++;\n+    }\n+\n+\n+}\n+\n+\n+#endif /*GETOPT_TESTDRIVER*/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gki.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gki.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,389 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* gki.c\n+ * SRE, Sat May  1 14:49:08 1999\n+ * \n+ * "generic key index" module: emulation of Perl hashes.\n+ * Maps keys (ASCII char strings) to array index. Dynamically\n+ * resizes the hash table. \n+ * \n+ * Limitations:\n+ *     - hash table can only grow; no provision for deleting keys\n+ *       or downsizing the hash table.\n+ *     - Maximum hash table size set at 100003. Performance \n+ *       will degrade for key sets much larger than this.\n+ *     - Assumes that integers are 32 bits (or greater). \n+ * \n+ * Defines a typedef\'d structure:\n+ *     gki           - a key index hash table.\n+ * Provides functions:\n+ *     GKIInit()     - start a hash table.\n+ *     GKIStoreKey() - store a new key, get a unique index.                        \n+ *     GKIKeyIndex() - retrieve an existing key\'s index.\n+ *     GKIFree()     - free a hash table.\n+ *     GKIStatus()   - Debugging: prints internal status of a hash struct\n+ *            \n+ *\n+ * Note that there are no dependencies on squid; the gki.c/gki.h\n+ * pair are base ANSI C and can be reused anywhere.\n+ *****************************************************************\n+ * \n+ * API for storing/reading stuff: \n+ * moral equivalent of Perl\'s $foo{$key} = whatever, $bar{$key} = whatever:\n+ *       #include "gki.h"\n+ *     \n+ *       gki  *hash;\n+ *       int   idx;\n+ *       char *key;\n+ *       \n+ *       hash = GKIInit();\n+ * (Storing:) \n+ *       (foreach key) {\n+ *          idx = GKIStoreKey(hash, key);       \n+ *          (reallocate foo, bar as needed)\n+ *          foo[idx] = whatever;\n+ *          bar[idx] = whatever;\n+ *       }     \n+ * (Reading:)\n+ *       (foreach key) {\n+ *          idx = GKIKeyIndex(hash, key);\n+ *          if (idx == -1) {no_such_key; }\n+ *          (do something with) foo[idx];\n+ *          (do something with) bar[idx];\n+ *       }   \n+ *       GKIFree();\n+ *       \n+ *****************************************************************\n+ *\n+ * Timings on wrasse for 45402 keys in /usr/dict/words using\n+ * Tests/test_gki: \n+ *      250 msec store      (6 usec/store)\n+ *      140 msec retrieve   (3 usec/retrieve)\n+ * and using the 13408 names of Pfam\'s GP120.full alignment:\n+ *       70 msec store      (5 usec/store)\n+ *       50 msec retrieve   (4 usec/retrieve)     \n+ * \n+ * RCS $Id: gki.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: gki.c,v 1.3 2000/12/21 23:42:59 eddy Exp)\n+ */\n+\n+\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <limits.h>\n+#include "squid.h"\n+#include "gki.h"\n+\n+/* \n+ *   Best hash table sizes are prime numbers (see Knuth vol 3, Sorting\n+ * and Searching). \n+ *   gki_primes[] defines the ascending order of hash table sizes\n+ * that we use in upsizing the hash table dynamically.\n+ *   useful site for testing primes:\n+ * http://www.idbsu.edu/people/jbrennan/algebra/numbers/sieve.html\n+ *   Because of the way gki_hashvalue works, the largest number\n+ * must be < INT_MAX / 128 / 128 : 131072 on a 32 bit machine.\n+ */\n+static int gki_primes[]  = { 101, 1009, 10007, 100003 };\n+#define GKI_NPRIMES      4\n+#define GKI_ALPHABETSIZE 128\n+\n+static GKI *gki_alloc(int primelevel);\n+static int  gki_hashvalue(GKI *hash, char *key);\n+static int  gki_upsize(GKI *old);\n+\n+\n+/* Function: GKIInit()\n+ * Date:     SRE, Sat May  1 11:12:24 1999 [May Day geek-out]\n+ *\n+ * Purpose:  Initialize a hash table for key indexing.  \n+ *           Simply a wrapper around a level 0 gki_alloc().\n+ *\n+ * Args:     (void)\n+ *\n+ * Returns:  An allocated hash table structure.\n+ *   '..b'->nxt)\n+\tnkeys++;\n+\n+      if (nkeys == 0)      nempty++;\n+      if (nkeys > maxkeys) maxkeys = nkeys;\n+      if (nkeys < minkeys) minkeys = nkeys;\n+    }\n+\n+  printf("Total keys:        %d\\n", hash->nkeys);\n+  printf("Hash table size:   %d\\n", hash->nhash);\n+  printf("Average occupancy: %.1f\\n", (float) hash->nkeys / (float) hash->nhash);\n+  printf("Unoccupied slots:  %d\\n", nempty);\n+  printf("Most in one slot:  %d\\n", maxkeys);\n+  printf("Least in one slot: %d\\n", minkeys);\n+  \n+}\n+\n+\n+/* Function: gki_alloc()\n+ * Date:     SRE, Sat May  1 11:55:47 1999 [May Day geek-out]\n+ *\n+ * Purpose:  Allocate a hash table structure with the\n+ *           size given by primelevel.\n+ *\n+ * Args:     primelevel - level 0..GKI_NPRIMES-1, specifying\n+ *                        the size of the table; see gki_primes[]\n+ *                        array.\n+ *\n+ * Returns:  An allocated hash table structure. \n+ *           Caller frees with GKIFree().\n+ */\n+static GKI *\n+gki_alloc(int primelevel)\n+{\n+  GKI *hash;\n+  int  i;\n+\n+  if (primelevel < 0 || primelevel >= GKI_NPRIMES) \n+    Die("bad primelevel in gki_alloc()");\n+  hash = MallocOrDie(sizeof(GKI));\n+\n+  hash->primelevel = primelevel;\n+  hash->nhash      = gki_primes[hash->primelevel];\n+  hash->table      = MallocOrDie(sizeof(struct gki_elem) * hash->nhash);\n+  for (i = 0; i < hash->nhash; i++)\n+    hash->table[i] = NULL;\n+  hash->nkeys = 0;\n+  return hash;\n+}  \n+\n+\n+/* Function: gki_hashvalue()\n+ * Date:     SRE, Sat May  1 11:14:10 1999 [May Day geek-out]\n+ *\n+ * Purpose:  Calculate the hash value for a key. Usually\n+ *           we expect a one-word key, but the function will\n+ *           hash any ASCII string effectively. The hash function\n+ *           is a simple one (see p. 233 of Sedgewick,\n+ *           Algorithms in C).\n+ *           Slightly optimized: does two characters at a time\n+ *           before doing the modulo; this gives us a significant\n+ *           speedup.  \n+ *\n+ * Args:     hash - the gki structure (we need to know the hash table size)\n+ *           key  - a string to calculate the hash value for       \n+ *\n+ * Returns:  a hash value, in the range 0..hash->nhash-1.\n+ *           hash table is unmodified.\n+ */\n+static int\n+gki_hashvalue(GKI *hash, char *key)\n+{\n+  int val = 0;\n+\n+  for (; *key != \'\\0\'; key++)\n+    {\n+      val = GKI_ALPHABETSIZE*val + *key; \n+      if (*(++key) == \'\\0\') { val = val % hash->nhash; break; }\n+      val = (GKI_ALPHABETSIZE*val + *key) % hash->nhash;\n+    }\n+  return val;\n+}\n+\n+/* Function: gki_upsize()\n+ * Date:     SRE, Sat May  1 11:46:07 1999 [May Day geek-out]\n+ *\n+ * Purpose:  Grow the hash table to the next available size.\n+ *\n+ * Args:     old - the GKI hash table to reallocate.\n+ *\n+ * Returns:  1 on success (the hash table is changed);\n+ *           0 on failure; the table is already at its maximum size,\n+ *              and the hash table is returned unchanged.\n+ */\n+static int\n+gki_upsize(GKI *old)\n+{\n+  GKI      *new;\n+  int       i;\n+  struct gki_elem *optr;\n+  struct gki_elem *nptr;\n+  int       val;\n+\n+  if (old->primelevel >= GKI_NPRIMES-1)  return 0;\n+  new = gki_alloc(old->primelevel+1);\n+\n+  /* Read the old, store in the new, while *not changing*\n+   * any key indices. Because of the way the lists are\n+   * treated as LIFO stacks, all the lists are reversed \n+   * in the new structure.\n+   */\n+  for (i = 0; i < old->nhash; i++)\n+    {\n+      optr = old->table[i];\n+      while (optr != NULL)\n+\t{\n+\t  val = gki_hashvalue(new, optr->key);\n+\n+\t  nptr = new->table[val];\n+\t  new->table[val]      = optr;\n+\t  optr                 = optr->nxt;\n+\t  new->table[val]->nxt = nptr;\n+\t}\n+    }\n+  free(old->table);\n+\n+  /* Now swap within the interior of the structures, so the old\n+   * structure is updated to the new structure.\n+   * (nkeys is identical, so we don\'t need to swap that element.)\n+   */\n+  old->primelevel = new->primelevel;\n+  old->nhash      = new->nhash;\n+  old->table      = new->table;\n+  free(new);\n+  return 1;\n+}\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gki.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gki.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,50 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+#ifndef SQUID_GKI_INCLUDED
+#define SQUID_GKI_INCLUDED
+
+/* gki.h
+ * SRE, Sat May  1 15:07:22 1999
+ * 
+ * Declarations of structures, functions for generic key index
+ * module: emulation of Perl hashes. See gki.c.
+ * 
+ * RCS $Id: gki.h 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: gki.h,v 1.2 1999/07/15 22:30:45 eddy Exp)
+ */
+
+/* gki_elem:
+ *    key, array index pairs are kept in linked list structures.
+ */
+struct gki_elem {
+  char            *key;
+  int              idx;
+  struct gki_elem *nxt;
+};
+
+/* gki:
+ *    a dynamically resized hash structure; 
+ *    contains a hash table and associated data
+ */
+typedef struct {
+  struct gki_elem **table;
+  
+  int primelevel;
+  int nhash;
+  int nkeys;
+} GKI;
+
+GKI *GKIInit(void);
+void GKIFree(GKI *hash);
+int  GKIHashValue(GKI *hash, char *key);
+int  GKIStoreKey(GKI *hash, char *key);
+int  GKIKeyIndex(GKI *hash, char *key);
+void GKIStatus(GKI *hash);
+
+#endif /* SQUID_GKI_INCLUDED */
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gsi.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gsi.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,387 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* gsi.c\n+ * Interfaces for GSI "generic sequence index" files.\n+ * broken away from sqio.c and extended: SRE, Wed Aug  5 10:32:53 1998\n+ * \n+ * \n+ * GSI definition: \n+ *    1 + <nfiles> + <nkeys> total records.\n+ *    Each record = 38 bytes.\n+ *\n+ *  one header record     :  <"GSI"    (32)> <nfiles (2)> <nkeys (4)> \n+ *  <nfiles> file records :  <filename (32)> <fileno (2)> <fmt   (4)> \n+ *  <nkeys>  key records  :  <key      (32)> <fileno (2)> <offset(4)> \n+ *\n+ * Matches up with my Perl scripts that create GSI files.\n+ * \n+ * RCS $Id: gsi.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: gsi.c,v 1.5 2001/08/04 20:15:42 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#ifndef SEEK_SET\n+#include <unistd.h>\t/* needed for poor crippled SunOS */\n+#endif\n+\n+#include "squid.h"\n+#include "gsi.h"\n+\n+\n+/*****************************************************************\n+ * GSI index file access routines\n+ *****************************************************************/\n+\n+/* Function: GSIOpen()\n+ * \n+ * Purpose:  Open a GSI file. Returns the number of records in\n+ *           the file and a file pointer. Returns NULL on failure.\n+ *           The file pointer should be fclose()\'d normally.\n+ */\n+GSIFILE *\n+GSIOpen(char *gsifile)\n+{\n+  GSIFILE    *gsi;\n+  char        magic[GSI_KEYSIZE];\n+\n+  gsi = (GSIFILE *) MallocOrDie (sizeof(GSIFILE));\n+  if ((gsi->gsifp = fopen(gsifile, "r")) == NULL)\n+    { free(gsi); squid_errno = SQERR_NOFILE; return NULL; }\n+\n+  if (! fread(magic, sizeof(char), GSI_KEYSIZE, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+  if (strcmp(magic, "GSI") != 0) \n+    { free(gsi); squid_errno = SQERR_FORMAT; return NULL; }\n+\n+  if (! fread(&(gsi->nfiles), sizeof(sqd_uint16), 1, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+  if (! fread(&(gsi->recnum), sizeof(sqd_uint32), 1, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+\n+  gsi->nfiles = sre_ntoh16(gsi->nfiles); /* convert from network short */\n+  gsi->recnum = sre_ntoh32(gsi->recnum); /* convert from network long  */\n+\n+  return gsi;\n+}\n+\n+/* Function: GSIGetRecord()\n+ * \n+ * Purpose:  Each non-header record of a GSI index files consists\n+ *           of 38 bytes: 32 bytes of character string, a 2 byte\n+ *           short, and a 4 byte long. This function returns the\n+ *           three values.\n+ *           \n+ * Args:     gsi  - open GSI index file, correctly positioned at a record\n+ *           f1   - char[32], allocated by caller (or NULL if unwanted)\n+ *           f2   - pointer to short (or NULL if unwanted)\n+ *           f3   - pointer to long  (or NULL if unwanted)\n+ *                  \n+ * Return:   0 on failure and sets squid_errno.                  \n+ */\n+int\n+GSIGetRecord(GSIFILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint32 *f3)\n+{\n+  if (f1 == NULL) fseek(gsi->gsifp, GSI_KEYSIZE, SEEK_CUR);\n+  else if (! fread(f1, GSI_KEYSIZE, 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+  if (f2 == NULL) fseek(gsi->gsifp, sizeof(sqd_uint16), SEEK_CUR);\n+  else if (! fread(f2, sizeof(sqd_uint16), 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+  if (f3 == NULL) fseek(gsi->gsifp, sizeof(sqd_uint32), SEEK_CUR);\n+  else if (! fread(f3, sizeof(sqd_uint32), 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+  if (f2 != NULL) *f2 = sre_ntoh16(*f2);\n+  if (f3 != NULL) *f3 = sre_ntoh32(*f3);\n+\n+  return 1;\n+}\n+\n+\n+/* Function: GSIGetOffset()\n+ * \n+'..b'ms = ReallocOrDie(g->elems, sizeof(struct gsikey_s) * (g->nkeys + 100));\n+}\n+static int \n+gsi_keysorter(const void *k1, const void *k2)\n+{\n+  struct gsikey_s *key1;\n+  struct gsikey_s *key2;\n+  key1 = (struct gsikey_s *) k1;\n+  key2 = (struct gsikey_s *) k2;\n+  return strcmp(key1->key, key2->key);\n+}\n+void\n+GSISortIndex(struct gsiindex_s *g)\n+{\n+  qsort((void *) g->elems, g->nkeys, sizeof(struct gsikey_s), gsi_keysorter); \n+}\n+void\n+GSIWriteIndex(FILE *fp, struct gsiindex_s *g)\n+{\n+  sqd_uint32 i;\n+\n+  /* Range checking.\n+   */\n+  /* AW: gcc says: comparison always false die to limited range of data type */\n+#ifndef CLUSTALO\n+  if (g->nfiles > SQD_UINT16_MAX) Die("Too many files in GSI index.");\n+#endif\n+  if (g->nkeys  > SQD_UINT32_MAX) Die("Too many keys in GSI index.");\n+\n+  GSIWriteHeader(fp, g->nfiles, g->nkeys);\n+  for (i = 0; i < g->nfiles; i++)\n+    GSIWriteFileRecord(fp, g->filenames[i], i+1, g->fmt[i]);\n+  for (i = 0; i < g->nkeys; i++)\n+    GSIWriteKeyRecord(fp, g->elems[i].key, g->elems[i].filenum, g->elems[i].offset);\n+}\n+\n+\n+\n+\n+\n+/* Function: GSIWriteHeader()\n+ * Date:     SRE, Wed Aug  5 10:36:02 1998 [St. Louis]\n+ *\n+ * Purpose:  Write the first record to an open GSI file:\n+ *           "GSI" <nfiles> <nkeys>\n+ *\n+ * Args:     fp      - open file to write to.\n+ *           nfiles  - number of files indexed\n+ *           nkeys   - number of keys indexed          \n+ *\n+ * Returns:  void\n+ */\n+void\n+GSIWriteHeader(FILE *fp, int nfiles, long nkeys)\n+{\n+  char       key[GSI_KEYSIZE];\n+  sqd_uint16 f1;\n+  sqd_uint32 f2;\n+\n+  /* beware potential range errors!\n+   */\n+  if (nfiles > SQD_UINT16_MAX) Die("GSI: nfiles out of range");\n+  if (nkeys > SQD_UINT32_MAX)  Die("GSI: nkeys out of range");\n+\n+  f1 = (sqd_uint16) nfiles;\n+  f2 = (sqd_uint32) nkeys;\n+  f1 = sre_hton16(f1);\n+  f2 = sre_hton32(f2);\n+  strcpy(key, "GSI");\n+\n+  if (fwrite(key,   1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC;\n+  if (fwrite(&f1,   2,  1, fp) < 1)  PANIC;\n+  if (fwrite(&f2,   4,  1, fp) < 1)  PANIC;\n+}\n+\n+\n+/* Function: GSIWriteFileRecord()\n+ * Date:     SRE, Wed Aug  5 10:45:51 1998 [St. Louis]\n+ *\n+ * Purpose:  Write a file record to an open GSI file.\n+ *\n+ * Args:     fp    - open GSI file\n+ *           fname - file name (max 31 characters)\n+ *           idx   - file number\n+ *           fmt   - file format (e.g. kPearson, etc.)\n+ *\n+ * Returns:  0 on failure. 1 on success.\n+ */\n+int\n+GSIWriteFileRecord(FILE *fp, char *fname, int idx, int fmt)\n+{\n+  sqd_uint16 f1;\n+  sqd_uint32 f2;\n+\n+  if (strlen(fname) >= GSI_KEYSIZE) return 0;\n+  if (idx > SQD_UINT16_MAX) Die("GSI: file index out of range");\n+  if (fmt > SQD_UINT32_MAX) Die("GSI: format index out of range");\n+\n+  f1 = (sqd_uint16) idx;\n+  f2 = (sqd_uint32) fmt;\n+  f1 = sre_hton16(f1);\n+  f2 = sre_hton32(f2);\n+\n+  if (fwrite(fname, 1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC;\n+  if (fwrite(&f1, 2, 1, fp) < 1)    PANIC;\n+  if (fwrite(&f2, 4, 1, fp) < 1)    PANIC;\n+  return 1;\n+}\n+\n+\n+/* Function: GSIWriteKeyRecord()\n+ * Date:     SRE, Wed Aug  5 10:52:30 1998 [St. Louis]\n+ *\n+ * Purpose:  Write a key record to a GSI file.\n+ *\n+ * Args:     fp      - open GSI file for writing\n+ *           key     - key (max 31 char + \\0)\n+ *           fileidx - which file number to find this key in\n+ *           offset  - offset for this key       \n+ * \n+ * Returns:  1 on success, else 0.\n+ *           will fail if key >= 32 chars, for instance.\n+ */\n+int\n+GSIWriteKeyRecord(FILE *fp, char *key, int fileidx, long offset)\n+{\n+  sqd_uint16 f1;\n+  sqd_uint32 f2;\n+\n+  if (strlen(key) >= GSI_KEYSIZE) return 0;\n+  if (fileidx > SQD_UINT16_MAX) Die("GSI: file index out of range");\n+  if (offset  > SQD_UINT32_MAX) Die("GSI: offset out of range");\n+\n+  f1 = (sqd_uint16) fileidx;\n+  f2 = (sqd_uint32) offset;\n+  f1 = sre_hton16(f1);\n+  f2 = sre_hton32(f2);\n+  \n+  if (fwrite(key, 1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC;\n+  if (fwrite(&f1, 2,  1, fp) < 1) PANIC;\n+  if (fwrite(&f2, 4,  1, fp) < 1) PANIC;\n+  return 1;\n+}\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gsi.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gsi.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,84 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+#ifndef GSIH_INCLUDED
+#define GSIH_INCLUDED
+
+/* gsi.h
+ * Database indexing (GSI format support)
+ * RCS $Id: gsi.h 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: gsi.h,v 1.3 2001/08/04 20:15:42 eddy Exp)
+ *
+ * A GSI (generic sequence index) file is composed of
+ * recnum + nfiles + 1 records. Each record contains
+ * three fields; key, file number, and disk offset.
+ * Record 0 contains:
+ *   [ "GSI" ]  [ nfiles ]  [ recnum ]
+ * Records 1..nfiles map file names to file numbers, and contain:
+ *   [ filename ] [ file number, 1..nfiles ] [ 0 (unused) ]
+ * Records nfiles+1 to recnum+nfiles+1 provide disk offset
+ * and file number indices for every key:
+ *   [ key ] [ file number ] [ offset]
+ *
+ * Because the file is binary, we take some (but not 
+ * complete) care to improve portability amongst platforms.
+ * This means using network order integers (see ntohl())
+ * and defining types for 16 and 32 bit integers.
+ * 
+ * Because we use 32-bit offsets, ftell(), and fseek(),
+ * there is an implicit 2 Gb file size maximum.
+ * AFAIK neither ANSI C nor POSIX provide a portable solution
+ * to this problem. fsetpos(), fgetpos() use an
+ * opaque fpos_t datatype that we can't write portably
+ * to a disk file. Suggestions welcomed.
+ */
+#define GSI_KEYSIZE    32         /* keys are 32 bytes long */  
+#define GSI_RECSIZE    38   /* 32 + 2 + 4 bytes       */
+#define SQD_UINT16_MAX 65535   /* 2^16-1 */
+#define SQD_UINT32_MAX 4294967295U/* 2^32-1 */
+
+struct gsi_s {
+  FILE        *gsifp; /* open GSI index file            */
+  sqd_uint16   nfiles; /* number of files = 16 bit int   */
+  sqd_uint32   recnum; /* number of records = 32 bit int */
+};
+typedef struct gsi_s GSIFILE;
+
+struct gsikey_s {
+  char       key[GSI_KEYSIZE];
+  sqd_uint16 filenum;
+  sqd_uint32 offset;
+};
+struct gsiindex_s {
+  char           **filenames;
+  int             *fmt;
+  sqd_uint16       nfiles;
+
+  struct gsikey_s *elems;
+  int              nkeys;
+};  
+
+
+/* from gsi.c
+ */
+extern GSIFILE *GSIOpen(char *gsifile);
+extern int      GSIGetRecord(GSIFILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint32 *f3);
+extern int      GSIGetOffset(GSIFILE *gsi, char *key, char *sqfile, 
+   int *fmt, long *ret_offset);
+extern void     GSIClose(GSIFILE *gsi);
+extern struct gsiindex_s *GSIAllocIndex(void);
+extern void     GSIFreeIndex(struct gsiindex_s *g);
+extern void     GSIAddFileToIndex(struct gsiindex_s *g, char *filename, int fmt);
+extern void     GSIAddKeyToIndex(struct gsiindex_s *g, char *key, int filenum, long offset);
+extern void     GSISortIndex(struct gsiindex_s *g);
+extern void     GSIWriteIndex(FILE *fp, struct gsiindex_s *g);
+extern void     GSIWriteHeader(FILE *fp, int nfiles, long nkeys);
+extern int      GSIWriteFileRecord(FILE *fp, char *fname, int idx, int fmt);
+extern int      GSIWriteKeyRecord(FILE *fp, char *key, int fileidx, long offset);
+
+#endif /*GSIH_INCLUDED*/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gsi64.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gsi64.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,394 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/ \n+#ifdef USE_GSI64\n+\n+/* gsi64.c\n+ * Updated interfaces for GSI64 64-bit "generic sequence index" files.\n+ * See gsi.c for old interfaces.\n+ * This is a temporary hack! Needed for human genome project.\n+ */\n+\n+/*    1 + <nfiles> + <nkeys> total records.\n+ *    Each record = 42 bytes.\n+ *\n+ *  one header record     :  <"GSI64"  (32)> <nfiles (2)> <nkeys (8)> \n+ *  <nfiles> file records :  <filename (32)> <fileno (2)> <fmt   (8)> \n+ *  <nkeys>  key records  :  <key      (32)> <fileno (2)> <offset(8)> \n+ * \n+ * CVS $Id: gsi64.c,v 1.2 2000/12/21 23:42:59 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#ifndef SEEK_SET\n+#include <unistd.h>\t/* needed for poor crippled SunOS */\n+#endif\n+\n+#include "squid.h"\n+#include "gsi64.h"\n+\n+/*****************************************************************\n+ * GSI64 index file access routines\n+ *****************************************************************/\n+\n+/* Function: GSI64Open()\n+ * \n+ * Purpose:  Open a GSI64 file. Returns the number of records in\n+ *           the file and a file pointer. Returns NULL on failure.\n+ *           The file pointer should be fclose()\'d normally.\n+ */\n+GSI64FILE *\n+GSI64Open(char *gsifile)\n+{\n+  GSI64FILE  *gsi;\n+  char        magic[GSI64_KEYSIZE];\n+\n+  gsi = (GSI64FILE *) MallocOrDie (sizeof(GSI64FILE));\n+  if ((gsi->gsifp = fopen(gsifile, "r")) == NULL)\n+    { free(gsi); squid_errno = SQERR_NOFILE; return NULL; }\n+\n+  if (! fread(magic, sizeof(char), GSI64_KEYSIZE, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+  if (strcmp(magic, "GSI64") != 0) \n+    { free(gsi); squid_errno = SQERR_FORMAT; return NULL; }\n+\n+  if (! fread(&(gsi->nfiles), sizeof(sqd_uint16), 1, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+  if (! fread(&(gsi->recnum), sizeof(sqd_uint64), 1, gsi->gsifp))\n+    { free(gsi); squid_errno = SQERR_NODATA; return NULL; }\n+\n+#if 0\t\t\t/* HACK! we don\'t byteswap */\n+  gsi->nfiles = sre_ntohs(gsi->nfiles); /* convert from network short */\n+  gsi->recnum = sre_ntohl(gsi->recnum); /* convert from network long  */\n+#endif\n+\n+  return gsi;\n+}\n+\n+/* Function: GSI64GetRecord()\n+ * \n+ * Purpose:  Each non-header record of a GSI64 index file consists\n+ *           of 42 bytes: 32 bytes of character string, a 2 byte\n+ *           short, and an 8 byte long long. This function returns the\n+ *           three values.\n+ *           \n+ * Args:     gsi  - open GSI64 index file, correctly positioned at a record\n+ *           f1   - char[32], allocated by caller (or NULL if unwanted)\n+ *           f2   - pointer to short (or NULL if unwanted)\n+ *           f3   - pointer to long long  (or NULL if unwanted)\n+ *                  \n+ * Return:   0 on failure and sets squid_errno.                  \n+ */\n+int\n+GSI64GetRecord(GSI64FILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint64 *f3)\n+{\n+  if (f1 == NULL) fseek64(gsi->gsifp, GSI64_KEYSIZE, SEEK_CUR);\n+  else if (! fread(f1, GSI64_KEYSIZE, 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+  if (f2 == NULL) fseek64(gsi->gsifp, sizeof(sqd_uint16), SEEK_CUR);\n+  else if (! fread(f2, sizeof(sqd_uint16), 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+  if (f3 == NULL) fseek64(gsi->gsifp, sizeof(sqd_uint64), SEEK_CUR);\n+  else if (! fread(f3, sizeof(sqd_uint64), 1, gsi->gsifp))\n+    { squid_errno = SQERR_NODATA; return 0; }\n+\n+#if 0 /* no byteswap yet! HACK! */\n+  if (f2 != NULL) *f2 = sre_ntohs(*f2);\n+  if (f3 != NULL) *f3 = sre_ntohl(*f3);\n+#endif \n+\n+  r'..b'oid *k2)\n+{\n+  struct gsi64key_s *key1;\n+  struct gsi64key_s *key2;\n+  key1 = (struct gsi64key_s *) k1;\n+  key2 = (struct gsi64key_s *) k2;\n+  return strcmp(key1->key, key2->key);\n+}\n+void\n+GSI64SortIndex(struct gsi64index_s *g)\n+{\n+  qsort((void *) g->elems, g->nkeys, sizeof(struct gsi64key_s), gsi_keysorter); \n+}\n+void\n+GSI64WriteIndex(FILE *fp, struct gsi64index_s *g)\n+{\n+  sqd_uint16 i;\n+  sqd_uint64 j;\n+\n+  /* Range checking.\n+   */\n+  if (g->nfiles > SQD_UINT16_MAX) Die("Too many files in GSI64 index.");\n+  if (g->nkeys  > SQD_UINT64_MAX) Die("Too many keys in GSI64 index.");\n+\n+  GSI64WriteHeader(fp, g->nfiles, g->nkeys);\n+  for (i = 0; i < g->nfiles; i++)\n+    GSI64WriteFileRecord(fp, g->filenames[i], i+1, g->fmt[i]);\n+  for (j = 0; j < g->nkeys; j++)\n+    GSI64WriteKeyRecord(fp, g->elems[j].key, g->elems[j].filenum, g->elems[j].offset);\n+}\n+\n+\n+\n+\n+\n+/* Function: GSI64WriteHeader()\n+ * Date:     SRE, Wed Aug  5 10:36:02 1998 [St. Louis]\n+ *\n+ * Purpose:  Write the first record to an open GSI64 file:\n+ *           "GSI64" <nfiles> <nkeys>\n+ *\n+ * Args:     fp      - open file to write to.\n+ *           nfiles  - number of files indexed\n+ *           nkeys   - number of keys indexed          \n+ *\n+ * Returns:  void\n+ */\n+void\n+GSI64WriteHeader(FILE *fp, int nfiles, long long nkeys)\n+{\n+  char       key[GSI64_KEYSIZE];\n+  sqd_uint16 f1;\n+  sqd_uint64 f2;\n+\n+  /* beware potential range errors!\n+   */\n+  if (nfiles > SQD_UINT16_MAX) Die("GSI64: nfiles out of range");\n+  if (nkeys > SQD_UINT64_MAX)  Die("GSI64: nkeys out of range");\n+\n+  f1 = (sqd_uint16) nfiles;\n+  f2 = (sqd_uint64) nkeys;\n+#if 0 /* HACK no byteswap */\n+  f1 = sre_htons(f1);\n+  f2 = sre_htonl(f2);\n+#endif\n+  strcpy(key, "GSI64");\n+\n+  if (fwrite(key,   1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC;\n+  if (fwrite(&f1,   2,  1, fp) < 1)  PANIC;\n+  if (fwrite(&f2,   8,  1, fp) < 1)  PANIC;\n+}\n+\n+\n+/* Function: GSI64WriteFileRecord()\n+ * Date:     SRE, Wed Aug  5 10:45:51 1998 [St. Louis]\n+ *\n+ * Purpose:  Write a file record to an open GSI64 file.\n+ *\n+ * Args:     fp    - open GSI64 file\n+ *           fname - file name (max 31 characters)\n+ *           idx   - file number\n+ *           fmt   - file format (e.g. kPearson, etc.)\n+ *\n+ * Returns:  0 on failure. 1 on success.\n+ */\n+int\n+GSI64WriteFileRecord(FILE *fp, char *fname, int idx, int fmt)\n+{\n+  sqd_uint16 f1;\n+  sqd_uint64 f2;\n+\n+  if (strlen(fname) >= GSI64_KEYSIZE) return 0;\n+  if (idx > SQD_UINT16_MAX) Die("GSI64: file index out of range");\n+  if (fmt > SQD_UINT64_MAX) Die("GSI64: format index out of range");\n+\n+  f1 = (sqd_uint16) idx;\n+  f2 = (sqd_uint64) fmt;\n+#if 0 /* hack : no byteswap */\n+  f1 = sre_htons(f1);\n+  f2 = sre_htonl(f2);\n+#endif\n+\n+  if (fwrite(fname, 1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC;\n+  if (fwrite(&f1, 2, 1, fp) < 1)    PANIC;\n+  if (fwrite(&f2, 8, 1, fp) < 1)    PANIC;\n+  return 1;\n+}\n+\n+\n+/* Function: GSI64WriteKeyRecord()\n+ * Date:     SRE, Wed Aug  5 10:52:30 1998 [St. Louis]\n+ *\n+ * Purpose:  Write a key record to a GSI64 file.\n+ *\n+ * Args:     fp      - open GSI64 file for writing\n+ *           key     - key (max 31 char + \\0)\n+ *           fileidx - which file number to find this key in\n+ *           offset  - offset for this key       \n+ * \n+ * Returns:  1 on success, else 0.\n+ *           will fail if key >= 32 chars, for instance.\n+ */\n+int\n+GSI64WriteKeyRecord(FILE *fp, char *key, int fileidx, long long offset)\n+{\n+  sqd_uint16 f1;\n+  sqd_uint64 f2;\n+\n+  if (strlen(key) >= GSI64_KEYSIZE) return 0;\n+  if (fileidx > SQD_UINT16_MAX) Die("GSI64: file index out of range");\n+  if (offset  > SQD_UINT64_MAX) Die("GSI64: offset out of range");\n+\n+  f1 = (sqd_uint16) fileidx;\n+  f2 = (sqd_uint64) offset;\n+#if 0 /* HACK! */\n+  f1 = sre_htons(f1);\n+  f2 = sre_htonl(f2);\n+#endif \n+  \n+  if (fwrite(key, 1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC;\n+  if (fwrite(&f1, 2,  1, fp) < 1) PANIC;\n+  if (fwrite(&f2, 8,  1, fp) < 1) PANIC;\n+  return 1;\n+}\n+\n+#endif /*USE_GSI64 */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/gsi64.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/gsi64.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,95 @@
+/*****************************************************************
+ * @LICENSE@
+ *****************************************************************/
+
+#ifndef GSI64H_INCLUDED
+#define GSI64H_INCLUDED
+#ifdef USE_GSI64
+
+/* gsi64.h
+ * Database indexing (GSI64 format support)
+ * CVS $Id: gsi64.h,v 1.2 2000/12/21 23:42:59 eddy Exp)
+ *
+ * A GSI64 (generic sequence index, 64 bit hack) file is composed of
+ * recnum + nfiles + 1 records. Each record contains
+ * three fields; key, file number, and disk offset.
+ * Record 0 contains:
+ *   [ "GSI64" ]  [ nfiles ]  [ recnum ]
+ * Records 1..nfiles map file names to file numbers, and contain:
+ *   [ filename ] [ file number, 1..nfiles ] [ 0 (unused) ]
+ * Records nfiles+1 to recnum+nfiles+1 provide disk offset
+ * and file number indices for every key:
+ *   [ key ] [ file number ] [ offset]
+ *
+ * Because the file is binary, we take some (but not 
+ * complete) care to improve portability amongst platforms.
+ * This means using network order integers (see ntohl())
+ * and defining types for 16 and 64 bit integers.
+ * 
+ * A short test program that verifies the sizes of these
+ * data types would be a good idea...
+ * 
+ * Because we use 64-bit offsets, ftell64(), and fseek64(),
+ * we rely on the OS actually providing these. This is
+ * a temporary hack for human genome analysis.
+ */
+typedef unsigned long long  sqd_uint64; /* 64 bit integer. */
+
+#define GSI64_KEYSIZE    32         /* keys are 32 bytes long */  
+#define GSI64_RECSIZE    42     /* 32 + 2 + 8 bytes       */
+#define SQD_UINT16_MAX 65535     /* 2^16-1 */
+#define SQD_UINT64_MAX 18446744073709551615LU /* 2^64-1 */
+
+struct gsi64_s {
+  FILE        *gsifp; /* open GSI index file            */
+  sqd_uint16   nfiles; /* number of files = 16 bit int   */
+  sqd_uint64   recnum; /* number of records = 64 bit int */
+};
+typedef struct gsi64_s GSI64FILE;
+
+struct gsi64key_s {
+  char       key[GSI64_KEYSIZE];
+  sqd_uint16 filenum;
+  sqd_uint64 offset;
+};
+struct gsi64index_s {
+  char           **filenames;
+  int             *fmt;
+  sqd_uint16       nfiles;
+
+  struct gsi64key_s *elems;
+  sqd_uint64         nkeys;
+};  
+
+
+
+/* if ntohl() and friends are not available, you
+ * can slip replacements in by providing sre_ntohl()
+ * functions. (i.e., there is a possible portability problem here.)
+ */
+#if 0
+#define sre_ntohl(x)  ntohl(x); 
+#define sre_ntohs(x)  ntohs(x);
+#define sre_htonl(x)  htonl(x); 
+#define sre_htons(x)  htons(x);
+#endif
+
+/* from gsi64.c
+ */
+extern GSI64FILE *GSI64Open(char *gsifile);
+extern int        GSI64GetRecord(GSI64FILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint64 *f3);
+extern int        GSI64GetOffset(GSI64FILE *gsi, char *key, char *sqfile, 
+          int *fmt, long long *ret_offset);
+extern void     GSI64Close(GSI64FILE *gsi);
+extern struct gsi64index_s *GSI64AllocIndex(void);
+extern void     GSI64FreeIndex(struct gsi64index_s *g);
+extern void     GSI64AddFileToIndex(struct gsi64index_s *g, char *filename, int fmt);
+extern void     GSI64AddKeyToIndex(struct gsi64index_s *g, char *key, int filenum, long long offset);
+extern void     GSI64SortIndex(struct gsi64index_s *g);
+extern void     GSI64WriteIndex(FILE *fp, struct gsi64index_s *g);
+extern void     GSI64WriteHeader(FILE *fp, int nfiles, long long nkeys);
+extern int      GSI64WriteFileRecord(FILE *fp, char *fname, int idx, int fmt);
+extern int      GSI64WriteKeyRecord(FILE *fp, char *key, int fileidx, long long offset);
+
+#endif /* USE_GSI64 */
+#endif /*GSIH_INCLUDED*/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/hsregex.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/hsregex.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1350 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/*****************************************************************\n+ * This code is an altered version of Henry Spencer\'s\n+ * regex library. Alterations are limited to minor streamlining,\n+ * and some name changes to protect the SQUID namespace.\n+ * Henry\'s copyright notice appears below.\n+ * You can obtain the original from \n+ *    ftp://ftp.zoo.toronto.edu/pub/bookregex.tar.Z\n+ * Thanks, Henry!\n+ * \n+ * The magic word for compiling a testdriver: NBA_TEAM_IN_STL\n+ * gcc -o test -g -DNBA_TEAM_IN_STL -L. hsregex.c -lsquid -lm\n+ *  \n+ * Usage: \n+ *  test <pattern> <ntok> <string>\n+ *  \n+ * SRE, Fri Aug 28 11:10:17 1998\n+ * CVS $Id: hsregex.c,v 1.7 2001/08/09 17:50:17 eddy Exp)\n+ *****************************************************************/    \n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include "squid.h"\n+\n+/* global sqd_parse[] are managed by Strparse().\n+ * WARNING: TODO: this code is not threadsafe, and needs to be revised. \n+ */\n+char *sqd_parse[10];\n+\n+/* Function: Strparse()\n+ * \n+ * Purpose:  Match a regexp to a string. Returns 1 if pattern matches,\n+ *           else 0.\n+ *\n+ *           Much like Perl, Strparse() makes copies of the matching\n+ *           substrings available via globals, sqd_parse[].\n+ *           sqd_parse[0] contains a copy of the complete matched\n+ *           text. sqd_parse[1-9] contain copies of up to nine\n+ *           different substrings matched within parentheses.\n+ *           The memory for these strings is internally managed and\n+ *           volatile; the next call to Strparse() may destroy them.\n+ *           If the caller needs the matched substrings to persist\n+ *           beyond a new Strparse() call, it must make its own \n+ *           copies.\n+ *           \n+ *           A minor drawback of the memory management is that\n+ *           there will be a small amount of unfree\'d memory being\n+ *           managed by Strparse() when a program exits; this may\n+ *           confuse memory debugging (Purify, dbmalloc). The\n+ *           general cleanup function SqdClean() is provided;\n+ *           you can call this before exiting.\n+ *           \n+ *           Uses an extended POSIX regular expression interface.\n+ *           A copylefted GNU implementation is included in the squid\n+ *           implementation (gnuregex.c) for use on non-POSIX compliant\n+ *           systems. POSIX 1003.2-compliant systems (all UNIX,\n+ *           some WinNT, I believe) can omit the GNU code if necessary.\n+ *           \n+ *           I built this for ease of use, not speed nor efficiency.\n+ *\n+ * Example:  Strparse("foo-...-baz", "foo-bar-baz")  returns 0\n+ *           Strparse("foo-(...)-baz", "foo-bar-baz")\n+ *              returns 0; sqd_parse[0] is "foo-bar-baz";\n+ *              sqd_parse[1] is "bar".\n+ *              \n+ *           A real example:   \n+ *            s   = ">gnl|ti|3 G10P69425RH2.T0 {SUB 81..737}  /len=657"\n+ *            pat = "SUB ([0-9]+)"\n+ *            Strparse(pat, s, 1)\n+ *               returns 1; sqd_parse[1] is "81".\n+ *              \n+ * Args:     rexp  - regular expression, extended POSIX form\n+ *           s     - string to match against\n+ *           ntok  - number of () substrings we will save (maximum NSUBEXP-1)\n+ *                   \n+ * Return:   1 on match, 0 if no match\n+ */\n+int\n+Strparse(char *rexp, char *s, int ntok)\n+{\n+  sqd_regexp *pat;\n+  int         code;\n+  int         len;\n+  int         i;\n+\t\t\t\t/* sanity check */\n+  if (ntok >= NSUBEXP )  Die("Strparse()'..b'();\n+\n+/*\n+ - regdump - dump a regexp onto stdout in vaguely comprehensible form\n+ */\n+void\n+regdump(r)\n+sqd_regexp *r;\n+{\n+\tregister char *s;\n+\tregister char op = EXACTLY;\t/* Arbitrary non-END op. */\n+\tregister char *next;\n+\n+\n+\ts = r->program + 1;\n+\twhile (op != END) {\t/* While that wasn\'t END last time... */\n+\t\top = OP(s);\n+\t\tprintf("%2d%s", s-r->program, regprop(s));\t/* Where, what. */\n+\t\tnext = regnext(s);\n+\t\tif (next == NULL)\t\t/* Next ptr. */\n+\t\t\tprintf("(0)");\n+\t\telse \n+\t\t\tprintf("(%d)", (s-r->program)+(next-s));\n+\t\ts += 3;\n+\t\tif (op == ANYOF || op == ANYBUT || op == EXACTLY) {\n+\t\t\t/* Literal string, where present. */\n+\t\t\twhile (*s != \'\\0\') {\n+\t\t\t\tputchar(*s);\n+\t\t\t\ts++;\n+\t\t\t}\n+\t\t\ts++;\n+\t\t}\n+\t\tputchar(\'\\n\');\n+\t}\n+\n+\t/* Header fields of interest. */\n+\tif (r->regstart != \'\\0\')\n+\t\tprintf("start `%c\' ", r->regstart);\n+\tif (r->reganch)\n+\t\tprintf("anchored ");\n+\tif (r->regmust != NULL)\n+\t\tprintf("must have \\"%s\\"", r->regmust);\n+\tprintf("\\n");\n+}\n+\n+/*\n+ - regprop - printable representation of opcode\n+ */\n+static char *\n+regprop(op)\n+char *op;\n+{\n+\tregister char *p;\n+\tstatic char buf[50];\n+\n+\t(void) strcpy(buf, ":");\n+\n+\tswitch (OP(op)) {\n+\tcase BOL:\n+\t\tp = "BOL";\n+\t\tbreak;\n+\tcase EOL:\n+\t\tp = "EOL";\n+\t\tbreak;\n+\tcase ANY:\n+\t\tp = "ANY";\n+\t\tbreak;\n+\tcase ANYOF:\n+\t\tp = "ANYOF";\n+\t\tbreak;\n+\tcase ANYBUT:\n+\t\tp = "ANYBUT";\n+\t\tbreak;\n+\tcase BRANCH:\n+\t\tp = "BRANCH";\n+\t\tbreak;\n+\tcase EXACTLY:\n+\t\tp = "EXACTLY";\n+\t\tbreak;\n+\tcase NOTHING:\n+\t\tp = "NOTHING";\n+\t\tbreak;\n+\tcase BACK:\n+\t\tp = "BACK";\n+\t\tbreak;\n+\tcase END:\n+\t\tp = "END";\n+\t\tbreak;\n+\tcase OPEN+1:\n+\tcase OPEN+2:\n+\tcase OPEN+3:\n+\tcase OPEN+4:\n+\tcase OPEN+5:\n+\tcase OPEN+6:\n+\tcase OPEN+7:\n+\tcase OPEN+8:\n+\tcase OPEN+9:\n+\t\tsprintf(buf+strlen(buf), "OPEN%d", OP(op)-OPEN);\n+\t\tp = NULL;\n+\t\tbreak;\n+\tcase CLOSE+1:\n+\tcase CLOSE+2:\n+\tcase CLOSE+3:\n+\tcase CLOSE+4:\n+\tcase CLOSE+5:\n+\tcase CLOSE+6:\n+\tcase CLOSE+7:\n+\tcase CLOSE+8:\n+\tcase CLOSE+9:\n+\t\tsprintf(buf+strlen(buf), "CLOSE%d", OP(op)-CLOSE);\n+\t\tp = NULL;\n+\t\tbreak;\n+\tcase STAR:\n+\t\tp = "STAR";\n+\t\tbreak;\n+\tcase PLUS:\n+\t\tp = "PLUS";\n+\t\tbreak;\n+\tdefault:\n+\t\tsqd_regerror("corrupted opcode");\n+\t\tbreak;\n+\t}\n+\tif (p != NULL)\n+\t\t(void) strcat(buf, p);\n+\treturn(buf);\n+}\n+#endif\n+\n+\n+/*\n+ - sqd_regsub - perform substitutions after a regexp match\n+ */\n+void\n+sqd_regsub(rp, source, dest)\n+const sqd_regexp *rp;\n+const char *source;\n+char *dest;\n+{\n+\tregister sqd_regexp * const prog = (sqd_regexp *)rp;\n+\tregister char *src = (char *)source;\n+\tregister char *dst = dest;\n+\tregister char c;\n+\tregister int no;\n+\tregister size_t len;\n+\n+\tif (prog == NULL || source == NULL || dest == NULL) {\n+\t\tsqd_regerror("NULL parameter to sqd_regsub");\n+\t\treturn;\n+\t}\n+\tif ((unsigned char)*(prog->program) != SQD_REGMAGIC) {\n+\t\tsqd_regerror("damaged regexp");\n+\t\treturn;\n+\t}\n+\n+\twhile ((c = *src++) != \'\\0\') {\n+\t\tif (c == \'&\')\n+\t\t\tno = 0;\n+\t\telse if (c == \'\\\\\' && isdigit((int) (*src)))\n+\t\t\tno = *src++ - \'0\';\n+\t\telse\n+\t\t\tno = -1;\n+\n+\t\tif (no < 0) {\t/* Ordinary character. */\n+\t\t\tif (c == \'\\\\\' && (*src == \'\\\\\' || *src == \'&\'))\n+\t\t\t\tc = *src++;\n+\t\t\t*dst++ = c;\n+\t\t} else if (prog->startp[no] != NULL && prog->endp[no] != NULL &&\n+\t\t\t\t\tprog->endp[no] > prog->startp[no]) {\n+\t\t\tlen = prog->endp[no] - prog->startp[no];\n+\t\t\t(void) strncpy(dst, prog->startp[no], len);\n+\t\t\tdst += len;\n+\t\t\tif (*(dst-1) == \'\\0\') {\t/* strncpy hit NUL. */\n+\t\t\t\tsqd_regerror("damaged match string");\n+\t\t\t\treturn;\n+\t\t\t}\n+\t\t}\n+\t}\n+\t*dst++ = \'\\0\';\n+}\n+\n+\n+void\n+sqd_regerror(s)\n+char *s;\n+{\n+  fprintf(stderr, "regexp(3): %s\\n", s);\n+  exit(EXIT_FAILURE);\n+  /* NOTREACHED */\n+}\n+\n+#ifdef NBA_TEAM_IN_STL\n+int\n+main(int argc, char **argv)\n+{\n+  char *pat;\n+  int   ntok;\n+  char *s;\n+  int   status;\n+\n+  pat  = argv[1];\n+  ntok = atoi(argv[2]);\n+  s    = argv[3];\n+\n+  status = Strparse(pat, s, ntok);\n+  if (status == 0) {\n+    printf("no match\\n");\n+  } else {\n+    int i;\n+    printf("MATCH.\\n");\n+    for (i = 1; i <= ntok; i++) \n+      printf("matched token %1d:  %s\\n", i, sqd_parse[i]);\n+  }\n+}\n+#endif /*NBA_TEAM_IN_STL*/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/iupac.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/iupac.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,219 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* iupac.c
+ * 
+ * Globally defines the IUPAC symbols for nucleic acid sequence
+ * Slowly evolving into a repository of globals. Tue Apr 20 1993
+ *
+ * RCS $Id: iupac.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: iupac.c,v 1.3 2001/02/21 21:09:10 eddy Exp)
+ */
+#include "squid.h"
+
+/* Default expected nucleotide occurrence frequencies, A/C/G/T.
+ * Used (for instance) as the default distribution for 
+ * i.i.d. random nucleotide sequences.
+ */
+float dnafq[4] = { 0.25, 0.25, 0.25, 0.25 };
+
+/* Dayhoff f(i) amino acid occurrence frequencies. 
+ * From SwissProt 34: 21,210,388 residues
+ * In alphabetic order by single-letter code.
+ * Used (for instance) as the default distribution for
+ * i.i.d. random protein sequences.
+ */
+float aafq[20] = {
+  0.075520, /* A */
+  0.016973, /* C */
+  0.053029, /* D */
+  0.063204, /* E */
+  0.040762, /* F */
+  0.068448, /* G */
+  0.022406, /* H */
+  0.057284, /* I */
+  0.059398, /* K */
+  0.093399, /* L */
+  0.023569, /* M */
+  0.045293, /* N */
+  0.049262, /* P */
+  0.040231, /* Q */
+  0.051573, /* R */
+  0.072214, /* S */
+  0.057454, /* T */
+  0.065252, /* V */
+  0.012513, /* W */
+  0.031985 /* Y */
+};
+
+char aa_alphabet[] = AMINO_ALPHABET;
+ /* aa_index converts to pam's 27x27 scheme */
+int  aa_index[20]  = { 0,  2,  3,  4,  5,  6,  7,  8, 10, 11, 
+               12, 13, 15, 16, 17, 18, 19, 21, 22, 24 };
+
+ /* IUPAC code translations */
+ /* note: sequence chars are UPPER CASE */
+struct iupactype iupac[] = {
+  { 'A', 'T', NTA, NTT, },
+  { 'C', 'G', NTC, NTG, },
+  { 'G', 'C', NTG, NTC, },
+  { 'T', 'A', NTT, NTA, },
+  { 'U', 'A', NTU, NTA, },
+  { 'N', 'N', NTN, NTN, },
+  { ' ', ' ', NTGAP, NTGAP, },
+  { 'R', 'Y', NTR, NTY, },
+  { 'Y', 'R', NTY, NTR, },
+  { 'M', 'K', NTM, NTK, },
+  { 'K', 'M', NTK, NTM, },
+  { 'S', 'S', NTS, NTS, },
+  { 'W', 'W', NTW, NTW, },
+  { 'H', 'D', NTH, NTD, },
+  { 'B', 'V', NTB, NTV, },
+  { 'V', 'B', NTV, NTB, },
+  { 'D', 'H', NTD, NTH, },
+  };
+
+
+char *stdcode1[65] = {
+  "K", /* AAA */
+  "N", /* AAC */
+  "K", /* AAG */
+  "N", /* AAU */
+  "T", /* ACA */
+  "T", /* ACC */
+  "T", /* ACG */
+  "T", /* ACU */
+  "R", /* AGA */
+  "S", /* AGC */
+  "R", /* AGG */
+  "S", /* AGU */
+  "I", /* AUA */
+  "I", /* AUC */
+  "M", /* AUG */
+  "I", /* AUU */
+  "Q", /* CAA */
+  "H", /* CAC */
+  "Q", /* CAG */
+  "H", /* CAU */
+  "P", /* CCA */
+  "P", /* CCC */
+  "P", /* CCG */
+  "P", /* CCU */
+  "R", /* CGA */
+  "R", /* CGC */
+  "R", /* CGG */
+  "R", /* CGU */
+  "L", /* CUA */
+  "L", /* CUC */
+  "L", /* CUG */
+  "L", /* CUU */
+  "E", /* GAA */
+  "D", /* GAC */
+  "E", /* GAG */
+  "D", /* GAU */
+  "A", /* GCA */
+  "A", /* GCC */
+  "A", /* GCG */
+  "A", /* GCU */
+  "G", /* GGA */
+  "G", /* GGC */
+  "G", /* GGG */
+  "G", /* GGU */
+  "V", /* GUA */
+  "V", /* GUC */
+  "V", /* GUG */
+  "V", /* GUU */
+  "*", /* UAA */
+  "Y", /* UAC */
+  "*", /* UAG */
+  "Y", /* UAU */
+  "S", /* UCA */
+  "S", /* UCC */
+  "S", /* UCG */
+  "S", /* UCU */
+  "*", /* UGA */
+  "C", /* UGC */
+  "W", /* UGG */
+  "C", /* UGU */
+  "L", /* UUA */
+  "F", /* UUC */
+  "L", /* UUG */
+  "F", /* UUU */
+  "X", /* unknown */
+};
+
+
+
+
+char *stdcode3[65] = {
+  "Lys", /* AAA */
+  "Asn", /* AAC */
+  "Lys", /* AAG */
+  "Asn", /* AAU */
+  "Thr", /* ACA */
+  "Thr", /* ACC */
+  "Thr", /* ACG */
+  "Thr", /* ACU */
+  "Arg", /* AGA */
+  "Ser", /* AGC */
+  "Arg", /* AGG */
+  "Ser", /* AGU */
+  "Ile", /* AUA */
+  "Ile", /* AUC */
+  "Met", /* AUG */
+  "Ile", /* AUU */
+  "Gln", /* CAA */
+  "His", /* CAC */
+  "Gln", /* CAG */
+  "His", /* CAU */
+  "Pro", /* CCA */
+  "Pro", /* CCC */
+  "Pro", /* CCG */
+  "Pro", /* CCU */
+  "Arg", /* CGA */
+  "Arg", /* CGC */
+  "Arg", /* CGG */
+  "Arg", /* CGU */
+  "Leu", /* CUA */
+  "Leu", /* CUC */
+  "Leu", /* CUG */
+  "Leu", /* CUU */
+  "Glu", /* GAA */
+  "Asp", /* GAC */
+  "Glu", /* GAG */
+  "Asp", /* GAU */
+  "Ala", /* GCA */
+  "Ala", /* GCC */
+  "Ala", /* GCG */
+  "Ala", /* GCU */
+  "Gly", /* GGA */
+  "Gly", /* GGC */
+  "Gly", /* GGG */
+  "Gly", /* GGU */
+  "Val", /* GUA */
+  "Val", /* GUC */
+  "Val", /* GUG */
+  "Val", /* GUU */
+  "***", /* UAA */
+  "Tyr", /* UAC */
+  "***", /* UAG */
+  "Tyr", /* UAU */
+  "Ser", /* UCA */
+  "Ser", /* UCC */
+  "Ser", /* UCG */
+  "Ser", /* UCU */
+  "***", /* UGA */
+  "Cys", /* UGC */
+  "Trp", /* UGG */
+  "Cys", /* UGU */
+  "Leu", /* UUA */
+  "Phe", /* UUC */
+  "Leu", /* UUG */
+  "Trp", /* UUU */
+  "XXX", /* unknown */
+};
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/msa.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/msa.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1442 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* msa.c\n+ * SRE, Mon May 17 10:48:47 1999\n+ * \n+ * SQUID\'s interface for multiple sequence alignment\n+ * manipulation: access to the MSA object.\n+ * \n+ * RCS $Id: msa.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: msa.c,v 1.18 2002/10/12 04:40:35 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include "squid.h"\n+#include "msa.h"\t/* multiple sequence alignment object support */\n+#include "gki.h"\t/* string indexing hashtable code  */\n+#include "ssi.h"\t/* SSI sequence file indexing code */\n+\n+/* Function: MSAAlloc()\n+ * Date:     SRE, Tue May 18 10:45:47 1999 [St. Louis]\n+ *\n+ * Purpose:  Allocate an MSA structure, return a pointer\n+ *           to it.\n+ *           \n+ *           Designed to be used in three ways:\n+ *           1) We know exactly the dimensions of the alignment:\n+ *              both nseq and alen.\n+ *                    msa = MSAAlloc(nseq, alen);\n+ *                    \n+ *           2) We know the number of sequences but not alen.\n+ *              (We add sequences later.) \n+ *                    msa = MSAAlloc(nseq, 0);\n+ *              \n+ *           3) We even don\'t know the number of sequences, so\n+ *              we\'ll have to dynamically expand allocations.\n+ *              We provide a blocksize for the allocation expansion,\n+ *              and expand when needed.\n+ *                    msa = MSAAlloc(10, 0);\n+ *                    if (msa->nseq == msa->nseqalloc) MSAExpand(msa);   \n+ *\n+ * Args:     nseq - number of sequences, or nseq allocation blocksize\n+ *           alen - length of alignment in columns, or 0      \n+ *\n+ * Returns:  pointer to new MSA object, w/ all values initialized.\n+ *           Note that msa->nseq is initialized to 0, though space\n+ *           is allocated.\n+ *           \n+ * Diagnostics: "always works". Die()\'s on memory allocation failure.\n+ *             \n+ */\n+MSA *\n+MSAAlloc(int nseq, int alen)\n+{\n+  MSA *msa;\n+  int  i;\n+\n+  msa         = MallocOrDie(sizeof(MSA));\n+  msa->aseq   = MallocOrDie(sizeof(char *) * nseq);\n+  msa->sqname = MallocOrDie(sizeof(char *) * nseq);\n+  msa->sqlen  = MallocOrDie(sizeof(int)    * nseq);\n+  msa->wgt    = MallocOrDie(sizeof(float)  * nseq);\n+\n+  for (i = 0; i < nseq; i++)\n+    {\n+      msa->sqname[i] = NULL;\n+      msa->sqlen[i]  = 0;\n+      msa->wgt[i]    = -1.0;\n+\n+      if (alen != 0) msa->aseq[i] = MallocOrDie(sizeof(char) * (alen+1));\n+      else           msa->aseq[i] = NULL;\n+    }      \n+\n+  msa->alen      = alen;\n+  msa->nseq      = 0;\n+  msa->nseqalloc = nseq;\n+  msa->nseqlump  = nseq;\n+\n+  msa->flags   = 0;\n+  msa->type    = kOtherSeq;\n+  msa->name    = NULL;\n+  msa->desc    = NULL;\n+  msa->acc     = NULL;\n+  msa->au      = NULL;\n+  msa->ss_cons = NULL;\n+  msa->sa_cons = NULL;\n+  msa->rf      = NULL;\n+  msa->sqacc   = NULL;\n+  msa->sqdesc  = NULL;\n+  msa->ss      = NULL;\n+  msa->sslen   = NULL;\n+  msa->sa      = NULL;\n+  msa->salen   = NULL;\n+  msa->index   = GKIInit();\n+  msa->lastidx = 0;\n+\n+  for (i = 0; i < MSA_MAXCUTOFFS; i++) {\n+    msa->cutoff[i]        = 0.;\n+    msa->cutoff_is_set[i] = FALSE;\n+  }\n+\n+  /* Initialize unparsed optional markup\n+   */\n+  msa->comment        = NULL;\n+  msa->ncomment       = 0;\n+  msa->alloc_ncomment = 0;\n+\n+  msa->gf_tag         = NULL;\n+  msa->gf             = NULL;\n+  msa->ngf            = 0;\n+\n+  msa->gs_tag         = NULL;\n+  msa->gs             = NULL;\n+  msa->gs_idx         = NULL;\n+  msa->ngs            = 0;\n+\n+  msa->gc_tag         = NULL;\n+  msa->gc             = NULL;\n+  msa->'..b"E/FALSE flags; TRUE means include \n+ *                      this seq in new alignment\n+ *           ret_new -- RETURN: new alignment          \n+ *\n+ * Returns:  void\n+ *           ret_new is allocated here; free with MSAFree() \n+ */\n+void\n+MSASmallerAlignment(MSA *msa, int *useme, MSA **ret_new)\n+{\n+  MSA *new;                     /* RETURN: new alignment */\n+  int nnew;\t\t\t/* number of seqs in new msa (e.g. # of TRUEs) */\n+  int oidx, nidx;\t\t/* old, new indices */\n+  int i;\n+\n+  nnew = 0;\n+  for (oidx = 0; oidx < msa->nseq; oidx++)\n+    if (useme[oidx]) nnew++;\n+  if (nnew == 0) { *ret_new = NULL; return; }\n+  \n+  new  = MSAAlloc(nnew, 0);\n+  nidx = 0;\n+  for (oidx = 0; oidx < msa->nseq; oidx++)\n+    if (useme[oidx])\n+      {\n+\tnew->aseq[nidx]   = sre_strdup(msa->aseq[oidx],   msa->alen);\n+\tnew->sqname[nidx] = sre_strdup(msa->sqname[oidx], msa->alen);\n+\tGKIStoreKey(new->index, msa->sqname[oidx]);\n+\tnew->wgt[nidx]    = msa->wgt[oidx];\n+\tif (msa->sqacc != NULL)\n+\t  MSASetSeqAccession(new, nidx, msa->sqacc[oidx]);\n+\tif (msa->sqdesc != NULL)\n+\t  MSASetSeqDescription(new, nidx, msa->sqdesc[oidx]);\n+\tif (msa->ss != NULL && msa->ss[oidx] != NULL)\n+\t  {\n+\t    if (new->ss == NULL) new->ss = MallocOrDie(sizeof(char *) * new->nseq);\n+\t    new->ss[nidx] = sre_strdup(msa->ss[oidx], -1);\n+\t  }\n+\tif (msa->sa != NULL && msa->sa[oidx] != NULL)\n+\t  {\n+\t    if (new->sa == NULL) new->sa = MallocOrDie(sizeof(char *) * new->nseq);\n+\t    new->sa[nidx] = sre_strdup(msa->sa[oidx], -1);\n+\t  }\n+\tnidx++;\n+      }\n+\n+  new->nseq    = nnew;\n+  new->alen    = msa->alen; \n+  new->flags   = msa->flags;\n+  new->type    = msa->type;\n+  new->name    = sre_strdup(msa->name, -1);\n+  new->desc    = sre_strdup(msa->desc, -1);\n+  new->acc     = sre_strdup(msa->acc, -1);\n+  new->au      = sre_strdup(msa->au, -1);\n+  new->ss_cons = sre_strdup(msa->ss_cons, -1);\n+  new->sa_cons = sre_strdup(msa->sa_cons, -1);\n+  new->rf      = sre_strdup(msa->rf, -1);\n+  for (i = 0; i < MSA_MAXCUTOFFS; i++) {\n+    new->cutoff[i]        = msa->cutoff[i];\n+    new->cutoff_is_set[i] = msa->cutoff_is_set[i];\n+  }\n+  free(new->sqlen);\n+\n+  MSAMingap(new);\n+  *ret_new = new;\n+  return;\n+}\n+\n+\n+/*****************************************************************\n+ * Retrieval routines\n+ * \n+ * Access to MSA structure data is possible through these routines.\n+ * I'm not doing this because of object oriented design, though\n+ * it might work in my favor someday.\n+ * I'm doing this because lots of MSA data is optional, and\n+ * checking through the chain of possible NULLs is a pain.\n+ *****************************************************************/\n+\n+char *\n+MSAGetSeqAccession(MSA *msa, int idx)\n+{\n+  if (msa->sqacc != NULL && msa->sqacc[idx] != NULL)\n+    return msa->sqacc[idx];\n+  else\n+    return NULL;\n+}\n+char *\n+MSAGetSeqDescription(MSA *msa, int idx)\n+{\n+  if (msa->sqdesc != NULL && msa->sqdesc[idx] != NULL)\n+    return msa->sqdesc[idx];\n+  else\n+    return NULL;\n+}\n+char *\n+MSAGetSeqSS(MSA *msa, int idx)\n+{\n+  if (msa->ss != NULL && msa->ss[idx] != NULL)\n+    return msa->ss[idx];\n+  else\n+    return NULL;\n+}\n+char *\n+MSAGetSeqSA(MSA *msa, int idx)\n+{\n+  if (msa->sa != NULL && msa->sa[idx] != NULL)\n+    return msa->sa[idx];\n+  else\n+    return NULL;\n+}\n+\n+\n+/*****************************************************************\n+ * Information routines\n+ * \n+ * Access information about the MSA.\n+ *****************************************************************/\n+\n+/* Function: MSAAverageSequenceLength()\n+ * Date:     SRE, Sat Apr  6 09:41:34 2002 [St. Louis]\n+ *\n+ * Purpose:  Return the average length of the (unaligned) sequences\n+ *           in the MSA.\n+ *\n+ * Args:     msa  - the alignment\n+ *\n+ * Returns:  average length\n+ */\n+float\n+MSAAverageSequenceLength(MSA *msa)\n+{\n+  int   i;\n+  float avg;\n+  \n+  avg = 0.;\n+  for (i = 0; i < msa->nseq; i++) \n+    avg += (float) DealignedLength(msa->aseq[i]);\n+\n+  if (msa->nseq == 0) return 0.;\n+  else                return (avg / msa->nseq);\n+}\n+\n+\n"
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/msa.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/msa.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,302 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+#ifndef SQUID_MSA_INCLUDED\n+#define SQUID_MSA_INCLUDED\n+\n+/* msa.h\n+ * SRE, Mon May 17 10:24:30 1999\n+ * \n+ * Header file for SQUID\'s multiple sequence alignment \n+ * manipulation code.\n+ * \n+ * RCS $Id: msa.h 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: msa.h,v 1.12 2002/10/12 04:40:35 eddy Exp)\n+ */\n+\n+#include <stdio.h>\t\t/* FILE support */\n+#include "gki.h"\t\t/* hash table support */\n+#include "ssi.h"\t\t/* sequence file index support */\n+#include "squid.h"\t\t/* need SQINFO */\n+\n+/****************************************************\n+ * Obsolete alignment information, AINFO\n+ * Superceded by MSA structure further below; but we\n+ * need AINFO for the near future for backwards\n+ * compatibility.\n+ ****************************************************/\n+/* Structure: aliinfo_s\n+ * \n+ * Purpose:   Optional information returned from an alignment file.\n+ * \n+ *            flags: always used. Flags for which info is valid/alloced.\n+ *       \n+ *            alen: mandatory. Alignments are always flushed right\n+ *                  with gaps so that all aseqs are the same length, alen.\n+ *                  Available for all alignment formats.\n+ *\n+ *            nseq: mandatory. Aligned seqs are indexed 0..nseq-1. \n+ *                  \n+ *            wgt:  0..nseq-1 vector of sequence weights. Mandatory.\n+ *                  If not explicitly set, weights are initialized to 1.0.\n+ *\n+ *            cs:   0..alen-1, just like the alignment. Contains single-letter\n+ *                  secondary structure codes for consensus structure; "<>^+"\n+ *                  for RNA, "EHL." for protein. May be NULL if unavailable\n+ *                  from seqfile. Only available for SELEX format files.\n+ *                  \n+ *            rf:   0..alen-1, just like the alignment. rf is an arbitrary string\n+ *                  of characters, used for annotating columns. Blanks are\n+ *                  interpreted as non-canonical columns and anything else is\n+ *                  considered canonical. Only available from SELEX files.\n+ *                  \n+ *            sqinfo: mandatory. Array of 0..nseq-1 \n+ *                  per-sequence information structures, carrying\n+ *                  name, id, accession, coords.\n+ *                  \n+ */\n+struct aliinfo_s {\t\t\n+  int               flags;      /* flags for what info is valid             */\n+  int               alen;\t/* length of alignment (columns)            */\n+  int               nseq;       /* number of seqs in alignment              */\n+  float            *wgt;\t/* sequence weights [0..nseq-1]             */\n+  char             *cs;         /* consensus secondary structure string     */\n+  char             *rf;         /* reference coordinate system              */\n+  struct seqinfo_s *sqinfo;     /* name, id, coord info for each sequence   */\n+\n+        /* Pfam/HMMER pick-ups */\t\n+  char  *name;\t\t\t/* name of alignment        */\n+  char  *desc;\t\t\t/* description of alignment */\n+  char  *acc;\t\t\t/* accession of alignment   */\n+  char  *au;\t\t\t/* "author" information     */\n+  float  tc1, tc2;\t\t/* trusted score cutoffs (per-seq, per-domain) */\n+  float  nc1, nc2;\t\t/* noise score cutoffs (per-seq, per-domain)   */\n+  float  ga1, ga2;\t\t/* gathering cutoffs */\n+};\n+typedef struct aliinfo_s AINFO;\n+#define AINFO_TC      (1 << 0)\n+#define AINFO_NC      (1 << 1)\n+#define AINFO_GA      (1 << 2)\n+\n+/*****************************************************************\n+ * MSA  \n+ * SRE, Sun Jun 27 15:03:35 1999 [TW 723 over Greenland]\n+ * '..b"+\n+  SSIFILE *ssi;\t\t        /* open SSI index file; or NULL, if none. */\n+\n+  int   do_gzip;\t\t/* TRUE if f is a pipe from gzip -dc (need pclose(f))  */\n+  int   do_stdin;\t\t/* TRUE if f is stdin (don't close f, not our problem) */\n+  int   format;\t\t\t/* format of alignment file we're reading */\n+} MSAFILE;\n+\n+\n+/* Alignment file formats.\n+ * Must coexist with sqio.c/squid.h unaligned file format codes.\n+ * Rules:\n+ *     - 0 is an unknown/unassigned format \n+ *     - <100 reserved for unaligned formats\n+ *     - >100 reserved for aligned formats\n+ */\n+#define MSAFILE_UNKNOWN   0\t/* unknown format                          */\n+#define MSAFILE_STOCKHOLM 101\t/* Pfam/HMMER's Stockholm format           */\n+#define MSAFILE_SELEX\t  102\t/* Obsolete(!): old HMMER/SELEX format     */\n+#define MSAFILE_MSF\t  103\t/* GCG MSF format                          */\n+#define MSAFILE_CLUSTAL\t  104\t/* Clustal V/W format                      */\n+#define MSAFILE_A2M\t  105\t/* aligned FASTA (A2M is UCSC terminology) */\n+#define MSAFILE_PHYLIP    106\t/* Felsenstein's PHYLIP format             */\n+#define MSAFILE_EPS       107\t/* Encapsulated PostScript (output only)   */\n+#ifdef CLUSTALO\n+#define MSAFILE_VIENNA    108\t/* Vienna: concatenated fasta   */\n+#endif\n+\n+#define IsAlignmentFormat(fmt)  ((fmt) > 100)\n+\n+\n+/* from msa.c\n+ */\n+extern MSAFILE *MSAFileOpen(char *filename, int format, char *env);\n+extern MSA     *MSAFileRead(MSAFILE *afp);\n+extern void     MSAFileClose(MSAFILE *afp);\n+extern void     MSAFree(MSA *msa);\n+extern void     MSAFileWrite(FILE *fp, MSA *msa, int outfmt, int do_oneline);\n+\n+extern int MSAFileRewind(MSAFILE *afp);\n+extern int MSAFilePositionByKey(MSAFILE *afp, char *key);\n+extern int MSAFilePositionByIndex(MSAFILE *afp, int idx);\n+\n+extern int   MSAFileFormat(MSAFILE *afp);\n+extern MSA  *MSAAlloc(int nseq, int alen);\n+extern void  MSAExpand(MSA *msa);\n+extern char *MSAFileGetLine(MSAFILE *afp);\n+extern void  MSASetSeqAccession(MSA *msa, int seqidx, char *acc);\n+extern void  MSASetSeqDescription(MSA *msa, int seqidx, char *desc);\n+extern void  MSAAddComment(MSA *msa, char *s);\n+extern void  MSAAddGF(MSA *msa, char *tag, char *value);\n+extern void  MSAAddGS(MSA *msa, char *tag, int seqidx, char *value);\n+extern void  MSAAppendGC(MSA *msa, char *tag, char *value);\n+extern char *MSAGetGC(MSA *msa, char *tag);\n+extern void  MSAAppendGR(MSA *msa, char *tag, int seqidx, char *value);\n+extern void  MSAVerifyParse(MSA *msa);\n+extern int   MSAGetSeqidx(MSA *msa, char *name, int guess);\n+\n+extern MSA  *MSAFromAINFO(char **aseq, AINFO *ainfo);   \n+\n+extern void  MSAMingap(MSA *msa);\n+extern void  MSANogap(MSA *msa);\n+extern void  MSAShorterAlignment(MSA *msa, int *useme);\n+extern void  MSASmallerAlignment(MSA *msa, int *useme, MSA **ret_new);\n+\n+extern char *MSAGetSeqAccession(MSA *msa, int idx);\n+extern char *MSAGetSeqDescription(MSA *msa, int idx);\n+extern char *MSAGetSeqSS(MSA *msa, int idx);\n+extern char *MSAGetSeqSA(MSA *msa, int idx);\n+\n+extern float MSAAverageSequenceLength(MSA *msa);\n+\n+/* from a2m.c\n+ */\n+extern MSA  *ReadA2M(MSAFILE *afp);\n+#ifdef CLUSTALO\n+extern void  WriteA2M(FILE *fp, MSA *msa, int vienna);\n+#else\n+extern void  WriteA2M(FILE *fp, MSA *msa);\n+#endif\n+/* from clustal.c\n+ */\n+extern MSA  *ReadClustal(MSAFILE *afp);\n+extern void  WriteClustal(FILE *fp, MSA *msa);\n+\n+/* from eps.c\n+ */\n+extern void EPSWriteSmallMSA(FILE *fp, MSA *msa);\n+\n+/* from msf.c\n+ */\n+extern MSA  *ReadMSF(MSAFILE *afp);\n+extern void  WriteMSF(FILE *fp, MSA *msa);\n+\n+/* from phylip.c\n+ */\n+extern MSA  *ReadPhylip(MSAFILE *afp);\n+extern void  WritePhylip(FILE *fp, MSA *msa);\n+\n+/* from selex.c\n+ */\n+extern MSA  *ReadSELEX(MSAFILE *afp);\n+extern void  WriteSELEX(FILE *fp, MSA *msa);\n+extern void  WriteSELEXOneBlock(FILE *fp, MSA *msa);\n+\n+/* from stockholm.c\n+ */\n+extern MSA  *ReadStockholm(MSAFILE *afp);\n+extern void  WriteStockholm(FILE *fp, MSA *msa);\n+extern void  WriteStockholmOneBlock(FILE *fp, MSA *msa);\n+\n+#endif /*SQUID_MSA_INCLUDED*/\n"
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/msf.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/msf.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,388 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* msf.c\n+ * SRE, Sun Jul 11 16:17:32 1993\n+ * \n+ * Import/export of GCG MSF multiple sequence alignment\n+ * formatted files. Designed using format specifications\n+ * kindly provided by Steve Smith of Genetics Computer Group.\n+ * \n+ * RCS $Id: msf.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: msf.c,v 1.4 2001/04/23 00:35:33 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include  <time.h>\n+#include "squid.h"\n+#include "msa.h"\n+\n+#ifdef TESTDRIVE_MSF\n+/*****************************************************************\n+ * msf.c test driver: \n+ * cc -DTESTDRIVE_MSF -g -O2 -Wall -o test msf.c msa.c gki.c sqerror.c sre_string.c file.c hsregex.c sre_math.c sre_ctype.c sqio.c alignio.c selex.c interleaved.c types.c -lm\n+ * \n+ */\n+int\n+main(int argc, char **argv)\n+{\n+  MSAFILE *afp;\n+  MSA     *msa;\n+  char    *file;\n+  \n+  file = argv[1];\n+\n+  if ((afp = MSAFileOpen(file, MSAFILE_STOCKHOLM, NULL)) == NULL)\n+    Die("Couldn\'t open %s\\n", file);\n+\n+  while ((msa = ReadMSF(afp)) != NULL)\n+    {\n+      WriteMSF(stdout, msa);\n+      MSAFree(msa); \n+    }\n+  \n+  MSAFileClose(afp);\n+  exit(0);\n+}\n+/******************************************************************/\n+#endif /* testdrive_msf */\n+\n+\n+\n+/* Function: ReadMSF()\n+ * Date:     SRE, Tue Jun  1 08:07:22 1999 [St. Louis]\n+ *\n+ * Purpose:  Parse an alignment read from an open MSF format\n+ *           alignment file. (MSF is a single-alignment format.)\n+ *           Return the alignment, or NULL if we\'ve already\n+ *           read the alignment.\n+ *           \n+ * Args:     afp  - open alignment file\n+ *\n+ * Returns:  MSA * - an alignment object\n+ *                   caller responsible for an MSAFree()\n+ *           NULL if no more alignments\n+ *\n+ * Diagnostics: \n+ *           Will Die() here with a (potentially) useful message\n+ *           if a parsing error occurs.\n+ */\n+MSA *\n+ReadMSF(MSAFILE *afp)\n+{\n+  MSA    *msa;\n+  char   *s;\n+  int     alleged_alen;\n+  int     alleged_type;\n+  int     alleged_checksum;\n+  char   *tok;\n+  char   *sp;\n+  int     slen;\n+  int     sqidx;\n+  char   *name;\n+  char   *seq;\n+\n+  if (feof(afp->f)) return NULL;\n+  if ((s = MSAFileGetLine(afp)) == NULL) return NULL;\n+\n+  /* The first line is the header.\n+   * This is a new-ish GCG feature. Don\'t count on it, so\n+   * we can be a bit more tolerant towards non-GCG software\n+   * generating "MSF" files.\n+   */\n+  msa = MSAAlloc(10, 0);\n+  if      (strncmp(s, "!!AA_MULTIPLE_ALIGNMENT", 23) == 0) {\n+    msa->type = kAmino;\n+    if ((s = MSAFileGetLine(afp)) == NULL) return NULL;\n+  } else if (strncmp(s, "!!NA_MULTIPLE_ALIGNMENT", 23) == 0) {\n+    msa->type = kRNA;\n+    if ((s = MSAFileGetLine(afp)) == NULL) return NULL;\n+  }\n+\n+  /* Now we\'re in the free text comment section of the MSF file.\n+   * It ends when we see the "MSF: Type: Check: .." line.\n+   * This line must be present. \n+   */\n+  do\n+    {\n+      if ((strstr(s, "..") != NULL && strstr(s, "MSF:") != NULL) &&\n+\t  Strparse("^.+MSF: +([0-9]+) +Type: +([PNX]).+Check: +([0-9]+) +\\\\.\\\\.", s, 3))\n+\t{\n+\t  alleged_alen     = atoi(sqd_parse[0]);\n+\t  switch (*(sqd_parse[1])) {\n+\t  case \'N\' : alleged_type = kRNA;      break;\n+\t  case \'P\' : alleged_type = kAmino;    break;  \n+\t  case \'X\' : alleged_type = kOtherSeq; break;\n+\t  default  : alleged_type = kOtherSeq; \n+\t  }\n+\t  alleged_checksum = atoi(sqd_parse[3]);\n+\t  if (msa->type == kOtherSeq) msa->type = alleged_type;\n+\t  break;\t\t/* we\'re done with comment section. */\n+\t}\n+      if (! Is'..b'ernal gap.\n+   *****************************************************************/ \n+   \n+\t\t\t\t/* make copies that we can edit */\n+   gcg_aseq   = MallocOrDie(sizeof(char *) * msa->nseq);\n+   gcg_sqname = MallocOrDie(sizeof(char *) * msa->nseq);\n+   for (idx = 0; idx < msa->nseq; idx++)\n+     {\n+       gcg_aseq[idx]   = sre_strdup(msa->aseq[idx],   msa->alen);\n+       gcg_sqname[idx] = sre_strdup(msa->sqname[idx], -1);\n+     }\n+\t\t\t\t/* alter names as needed  */\n+   for (idx = 0; idx < msa->nseq; idx++)\n+     for (s = gcg_sqname[idx]; *s != \'\\0\'; s++)\n+       if (! isalnum((int) *s) && *s != \'-\' && *s != \'_\')\n+\t *s = \'_\';\n+\t\t\t\t/* alter gap chars in seq  */\n+   for (idx = 0; idx < msa->nseq; idx++)\n+     {\n+       for (s = gcg_aseq[idx]; *s != \'\\0\' && isgap(*s); s++)\n+\t *s = \'~\';\n+       for (; *s != \'\\0\'; s++)\n+\t if (isgap(*s)) *s = \'.\';\n+       for (pos = msa->alen-1; pos > 0 && isgap(gcg_aseq[idx][pos]); pos--)\n+\t gcg_aseq[idx][pos] = \'~\';\n+     }\n+\t\t\t\t/* calculate max namelen used */\n+  namelen = 0;\n+  for (idx = 0; idx < msa->nseq; idx++)\n+    if ((len = strlen(msa->sqname[idx])) > namelen) \n+      namelen = len;\n+\n+  /*****************************************************\n+   * Write the MSF header\n+   *****************************************************/\n+\t\t\t\t/* required file type line */\n+  if (msa->type == kOtherSeq)\n+    msa->type = GuessAlignmentSeqtype(msa->aseq, msa->nseq);\n+\n+  if      (msa->type == kRNA)   fprintf(fp, "!!NA_MULTIPLE_ALIGNMENT 1.0\\n");\n+  else if (msa->type == kDNA)   fprintf(fp, "!!NA_MULTIPLE_ALIGNMENT 1.0\\n");\n+  else if (msa->type == kAmino) fprintf(fp, "!!AA_MULTIPLE_ALIGNMENT 1.0\\n");\n+  else if (msa->type == kOtherSeq) \n+    Die("WriteMSF(): couldn\'t guess whether that alignment is RNA or protein.\\n"); \n+  else    \n+    Die("Invalid sequence type %d in WriteMSF()\\n", msa->type); \n+\n+\t\t\t\t/* free text comments */\n+  if (msa->ncomment > 0)\n+    {\n+      for (idx = 0; idx < msa->ncomment; idx++)\n+\tfprintf(fp, "%s\\n", msa->comment[idx]);\n+      fprintf(fp, "\\n");\n+    }\n+\t\t\t\t/* required checksum line */\n+  now = time(NULL);\n+  if (strftime(date, 64, "%B %d, %Y %H:%M", localtime(&now)) == 0)\n+    Die("What time is it on earth? strftime() failed in WriteMSF().\\n");\n+  fprintf(fp, " %s  MSF: %d  Type: %c  %s  Check: %d  ..\\n", \n+\t  msa->name != NULL ? msa->name : "squid.msf",\n+\t  msa->alen,\n+\t  msa->type == kRNA ? \'N\' : \'P\',\n+\t  date,\n+\t  GCGMultchecksum(gcg_aseq, msa->nseq));\n+  fprintf(fp, "\\n");\n+\n+  /*****************************************************\n+   * Names/weights section\n+   *****************************************************/\n+\n+  for (idx = 0; idx < msa->nseq; idx++)\n+    {\n+      fprintf(fp, " Name: %-*.*s  Len:  %5d  Check: %4d  Weight: %.2f\\n",\n+\t      namelen, namelen,\n+\t      gcg_sqname[idx],\n+\t      msa->alen,\n+\t      GCGchecksum(gcg_aseq[idx], msa->alen),\n+\t      msa->wgt[idx]);\n+    }\n+  fprintf(fp, "\\n");\n+  fprintf(fp, "//\\n");\n+\n+  /*****************************************************\n+   * Write the sequences\n+   *****************************************************/\n+\n+  for (pos = 0; pos < msa->alen; pos += 50)\n+    {\n+      fprintf(fp, "\\n");\t/* Blank line between sequence blocks */\n+\n+\t\t\t\t/* Coordinate line */\n+      len = (pos + 50) > msa->alen ? msa->alen - pos : 50;\n+      if (len > 10)\n+\tfprintf(fp, "%*s  %-6d%*s%6d\\n", namelen, "", \n+\t\tpos+1,\n+\t\tlen + ((len-1)/10) - 12, "",\n+\t\tpos + len);\n+      else\n+\tfprintf(fp, "%*s  %-6d\\n", namelen, "", pos+1);\n+\n+      for (idx = 0; idx < msa->nseq; idx++)\n+\t{\n+\t  fprintf(fp, "%-*s ", namelen, gcg_sqname[idx]);\n+\t\t\t\t/* get next line\'s worth of 50 from seq */\n+\t  strncpy(buffer, gcg_aseq[idx] + pos, 50);\n+\t  buffer[50] = \'\\0\';\n+\t\t\t\t/* draw the sequence line */\n+\t  for (i = 0; i < len; i++)\n+\t    {\n+\t      if (! (i % 10)) fputc(\' \', fp);\n+\t      fputc(buffer[i], fp);\n+\t    }\n+\t  fputc(\'\\n\', fp);\n+\t}\n+    }\n+\n+  Free2DArray((void **) gcg_aseq,   msa->nseq);\n+  Free2DArray((void **) gcg_sqname, msa->nseq);\n+  return;\n+}\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/phylip.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/phylip.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,173 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* phylip.c
+ * SRE, Mon Jun 14 14:08:33 1999 [St. Louis]
+ * 
+ * Import/export of PHYLIP interleaved multiple sequence alignment
+ * format files.
+ * 
+ * RCS $Id: phylip.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: phylip.c,v 1.1 1999/07/15 22:29:20 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+#include "msa.h"
+
+#ifdef TESTDRIVE_PHYLIP
+/*****************************************************************
+ * phylip.c test driver:
+ * 
+ */
+int 
+main(int argc, char **argv)
+{
+  MSAFILE *afp;
+  MSA     *msa;
+  char    *file;
+  
+  file = argv[1];
+
+  if ((afp = MSAFileOpen(file, MSAFILE_UNKNOWN, NULL)) == NULL)
+    Die("Couldn't open %s\n", file);
+
+  printf("format %d\n", afp->format);
+
+  while ((msa = ReadPhylip(afp)) != NULL)
+    {
+      WritePhylip(stdout, msa);
+      MSAFree(msa); 
+    }
+  
+  MSAFileClose(afp);
+  exit(0);
+}
+/******************************************************************/
+#endif /* testdrive_phylip */
+
+
+
+/* Function: ReadPhylip()
+ * Date:     SRE, Fri Jun 18 12:59:37 1999 [Sanger Centre]
+ *
+ * Purpose:  Parse an alignment from an open Phylip format
+ *           alignment file. Phylip is a single-alignment format.
+ *           Return the alignment, or NULL if we have no data.
+ *
+ * Args:     afp - open alignment file
+ *
+ * Returns:  MSA * - an alignment object
+ *                   Caller responsible for an MSAFree()
+ *           NULL if no more alignments        
+ */
+MSA *
+ReadPhylip(MSAFILE *afp)
+{
+  MSA  *msa;
+  char *s, *s1, *s2;
+  char  name[11]; /* seq name max len = 10 char */
+  int   nseq, alen;
+  int   idx; /* index of current sequence */
+  int   slen;
+  int   nblock;
+  
+  if (feof(afp->f)) return NULL;
+
+  /* Skip until we see a nonblank line; it's the header,
+   * containing nseq/alen
+   */
+  nseq = 0; alen = 0;
+  while ((s = MSAFileGetLine(afp)) != NULL)
+    {
+      if ((s1 = sre_strtok(&s, WHITESPACE, NULL)) == NULL) continue;
+      if ((s2 = sre_strtok(&s, WHITESPACE, NULL)) == NULL)
+ Die("Failed to parse nseq/alen from first line of PHYLIP file %s\n", afp->fname);
+      if (! IsInt(s1) || ! IsInt(s2))
+ Die("nseq and/or alen not an integer in first line of PHYLIP file %s\n", afp->fname);
+      nseq = atoi(s1);
+      alen = atoi(s2);
+      break;
+    }
+
+  msa = MSAAlloc(nseq, 0);
+  idx    = 0;
+  nblock = 0;
+  while ((s = MSAFileGetLine(afp)) != NULL) 
+    {
+      /* ignore blank lines. nonblank lines start w/ nonblank char */
+      if (isspace(*s)) continue;
+ /* First block has seq names */
+      if (nblock == 0) {
+ strncpy(name, s, 10);
+ name[10] = '\0';
+ GKIStoreKey(msa->index, name);
+ msa->sqname[idx] = sre_strdup(name, -1);
+ s += 10;
+      }
+ /* be careful of trailing whitespace on lines */
+      if ((s1 = sre_strtok(&s, WHITESPACE, &slen)) == NULL)
+ Die("Failed to parse sequence at line %d of PHYLIP file %s\n", 
+     afp->linenumber, afp->fname);
+      msa->sqlen[idx] = sre_strcat(&(msa->aseq[idx]), msa->sqlen[idx], s1, slen);
+
+      idx++;
+      if (idx == nseq) { idx = 0; nblock++; }
+    }
+  msa->nseq = nseq;
+  MSAVerifyParse(msa); /* verifies; sets alen, wgt; frees sqlen[] */
+  return msa;
+}
+
+
+
+/* Function: WritePhylip()
+ * Date:     SRE, Fri Jun 18 12:07:41 1999 [Sanger Centre]
+ *
+ * Purpose:  Write an alignment in Phylip format to an open file.
+ *
+ * Args:     fp    - file that's open for writing.
+ *           msa   - alignment to write. 
+ *
+ * Returns:  (void)
+ */
+void
+WritePhylip(FILE *fp, MSA *msa)
+{
+  int    idx; /* counter for sequences         */
+  int    cpl = 50; /* 50 seq char per line          */
+  char   buf[51]; /* buffer for writing seq        */
+  int    pos;
+
+  /* First line has nseq, alen
+   */
+  fprintf(fp, " %d  %d\n", msa->nseq, msa->alen);
+
+  /* Alignment section.
+   * PHYLIP is a multiblock format, blocks (optionally) separated
+   * by blanks; names only attached to first block. Names are
+   * restricted to ten char; we achieve this by simple truncation (!).
+   * (Do we need to convert gap characters from our ./- convention?)
+   */
+  for (pos = 0; pos < msa->alen; pos += cpl)
+    {
+      if (pos > 0) fprintf(fp, "\n");
+
+      for (idx = 0; idx < msa->nseq; idx++)
+ {
+   strncpy(buf, msa->aseq[idx] + pos, cpl);
+   buf[cpl] = '\0';       
+   if (pos > 0) fprintf(fp, "%s\n", buf);
+   else         fprintf(fp, "%-10.10s%s\n", msa->sqname[idx], buf);
+ }
+    }
+  return;
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/revcomp.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/revcomp.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,87 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* revcomp.c
+ * 
+ * Reverse complement of a IUPAC character string
+ * RCS $Id: revcomp.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: revcomp.c,v 1.5 2002/06/25 20:06:06 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+
+/* Function: revcomp()
+ *
+ * Purpose:  Reverse complement seq; store in comp.
+ *           Can revcomp "in place" (revcomp(seq, seq)).
+ *
+ * Args:     comp  - destination for reverse complement of seq
+ *           seq   - sequence to reverse complement
+ *
+ * Returns:  NULL on failure; or a (useless) pointer to comp.
+ */
+char *
+revcomp(char *comp, char *seq)
+{
+  char *s;
+  char  c;
+
+  if (comp == NULL) return NULL;
+  if (seq == NULL)  return NULL;
+
+  StrReverse(comp, seq);
+  for (s = comp; *s != '\0'; s++)
+    {
+      c = *s;
+      c = sre_toupper(c);
+      switch (c) {
+      case 'A': c = 'T'; break;
+      case 'C': c = 'G'; break;
+      case 'G': c = 'C'; break;
+      case 'T': c = 'A'; break;
+      case 'U': c = 'A'; break;
+      case 'R': c = 'Y'; break;
+      case 'Y': c = 'R'; break;
+      case 'M': c = 'K'; break;
+      case 'K': c = 'M'; break;
+      case 'S': c = 'S'; break;
+      case 'W': c = 'W'; break;
+      case 'H': c = 'D'; break;
+      case 'D': c = 'H'; break;
+      case 'B': c = 'V'; break;
+      case 'V': c = 'B'; break;
+      default:  break; /* anything else? leave it; it's prob a gap or an X */
+      }
+      if (islower((int) *s)) c = (char) sre_tolower((int) c);
+      *s = c;
+    }
+  return comp;
+}
+  
+#ifdef REVCOMP_TESTDRIVER
+/* gcc -g -DREVCOMP_TESTDRIVER revcomp.c sre_string.c shuffle.c sre_math.c sre_ctype.c sqerror.c -lm
+*/
+int
+main(void)
+{
+  float p[4]     = {0.25, 0.25, 0.25, 0.25};
+  char *alphabet = "ACGT";
+  int   len      = 10;
+  char *seq;
+
+  seq = RandomSequence(alphabet, p, 4, len);
+  printf("%s\n", seq);
+  revcomp(seq, seq);
+  printf("%s\n", seq);
+  free(seq);
+  exit(0);
+}
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/rk.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/rk.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,133 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* rk.c (originally from rnabob's patsearch.c)
+ * 
+ * Contains a compiler and a search engine for Rabin-Karp
+ * based primary sequence pattern searching on encoded
+ * sequences.
+ * 
+ * See Sedgewick, _Algorithms_, for a general discussion of
+ * the Rabin-Karp algorithm. See the rkcomp or rkexec man
+ * pages for specific details.
+ * 
+ * RCS $Id: rk.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: rk.c,v 1.2 1998/10/09 18:07:16 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "squid.h" /* seq encoding utilities and typedefs */
+#include "rk.h"
+
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+Hashseq
+rkcomp(char *probe)               /* A,C,G,T/U, N probe string, 0-8 nt long */
+{
+  Hashseq hashprobe = 0;
+  char    coded[RK_HASHSIZE + 1];
+  int     len;
+  int     i;
+ /* check bounds violation on probe */
+  if ((len =  strlen(probe)) > RK_HASHSIZE) return 0;
+ /* encode the probe */
+  if (seqencode(coded, probe) == 0) return 0;
+ /* pack the probe into a Hashseq */
+  for (i = 0; i < len; i++)
+    {
+      hashprobe <<= 4;
+      hashprobe |= (Hashseq) coded[i];
+    }
+ /* left adjust as needed */
+  for (; i < RK_HASHSIZE; i++)
+    {
+      hashprobe <<= 4;
+      hashprobe |= (Hashseq) NTN;
+    }
+ /* return the compiled probe */
+  return hashprobe;
+}
+  
+int
+rkseq(Hashseq   hashprobe, /* up to 8 nt packed into the probe */
+      char     *sequence)       /* encoded sequence                 */
+{
+  long     i;
+  long     pos = 0;
+  Hashseq  target = 0;
+  
+ /* initialize the target hashseq */
+  for (i = 0; i < RK_HASHSIZE; i++)
+    {
+      if (*(sequence + i) == NTEND)
+ break;
+      target <<= 4;
+      target |=  (Hashseq) (*(sequence + i));
+    }
+
+  while (*(sequence + pos + RK_HASHSIZE -1) != NTEND)
+    {
+#ifdef DEBUG
+      printf("hashprobe: ");
+      writehash(hashprobe);
+      printf("\ttarget: ");
+      writehash(target);
+      printf("\nhashprobe & target: ");
+      writehash(hashprobe & target);
+      printf("\n");
+#endif
+      if ((hashprobe & target) == target)
+ return ((int) pos);
+      target <<= 4;
+      target |=  (Hashseq) (*(sequence + pos + RK_HASHSIZE));
+      pos++;
+    }
+ /* now we deal with an end effect */
+  for (i = 0; i < RK_HASHSIZE; i++)
+    {
+      target |= (Hashseq) NTN;
+      if ((hashprobe & target) == target)
+ return ((int) pos);
+      target <<=4;
+      pos++;
+    }
+
+  return(-1);
+}
+
+
+#ifdef DEBUG /* Debugging aids */
+
+static void
+writehash(Hashseq   hashseq)
+{
+  int idx;
+  int sym;
+
+  if (hashseq/16)
+    writehash(hashseq/16);
+  
+  sym = (int) (hashseq % 16);
+  if (sym == 0)
+    putchar('-');
+  else
+    {
+      for (idx = 0; sym != iupac[idx].code && idx < IUPACSYMNUM; idx++);
+      if (idx > IUPACSYMNUM)
+        printf("(%d)", sym);
+      else
+        putchar(iupac[idx].sym);
+    }
+}
+
+#endif
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/rk.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/rk.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,39 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+#ifndef SQRKH_INCLUDED
+#define SQRKH_INCLUDED
+
+/* rk.h
+ * 
+ * Header file for Rabin-Karp pattern searching on encoded
+ * sequence strings.
+ * 
+ * Sean Eddy, Thu Oct  1 11:45:42 1992
+ * RCS $Id: rk.h 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: rk.h,v 1.2 1998/10/09 18:07:16 eddy Exp)
+ */
+
+
+ /* expect 32 bits for 8 nt */
+typedef unsigned long Hashseq;
+ /* but we count to be sure...
+    RK_HASHSIZE is the number of nt that fit
+    in one probe */
+#define RK_HASHSIZE  (sizeof(Hashseq)*2)
+ /* empirically, how many nt minimum we require
+    in a pattern before we abandon rk and
+    go with something else */
+#define RK_REQUIRE    4
+
+extern int rkseq(Hashseq hashprobe, char *sequence);
+extern Hashseq rkcomp(char *probe); /* compile a Hashseq from a pattern */
+
+
+
+#endif /* SQRKH_INCLUDED */
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/selex.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/selex.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,833 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* selex.c \n+ * \n+ * SRE, Mon Jun 14 11:08:38 1999\n+ * SELEX  obsolete as the preferred HMMER/SQUID format\n+ * replaced by Stockholm format\n+ * selex support retained for backwards compatibility\n+ * kludged to use the MSA interface\n+ * \n+ * SRE, Mon Jan 30 14:41:49 1995:\n+ * #=SA side chain % surface accessibility annotation supported\n+ * \n+ * SRE, Tue Nov  9 17:40:50 1993: \n+ * major revision. #= special comments and aliinfo_s optional\n+ * alignment info support added. Support for #=CS (consensus\n+ * secondary structure), #=SS (individual secondary structure),\n+ * #=RF (reference coordinate system), #=SQ (per-sequence header info),\n+ * and #=AU ("author") added.\n+ *\n+ * Fri Dec  4 17:43:24 1992, SRE:\n+ * Reading and writing aligned sequences to/from disk files.\n+ * Implements a new, broader specification of SELEX format\n+ * and supercedes alignio.c.\n+ *\n+ * SELEX format is documented in Docs/formats.tex.\n+ ****************************************************************************\n+ * RCS $Id: selex.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: selex.c,v 1.11 2002/10/12 04:40:35 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+#include <memory.h>\n+#include "squid.h"\n+#include "msa.h"\n+\n+static int  copy_alignment_line(char *aseq, int apos, int name_rcol, \n+\t\t\t\tchar *buffer, int lcol, int rcol, char gapsym);\n+static void actually_write_selex(FILE *fp, MSA *msa, int cpl);\n+\n+static char commentsyms[] = "%#";\n+\n+/* Function: ReadSELEX()\n+ * Date:     SRE, Sun Jun  6 18:24:09 1999 [St. Louis]\n+ *\n+ * Purpose:  Parse an alignment read from an open SELEX format\n+ *           alignment file. (SELEX is a single alignment format).\n+ *           Return the alignment, or NULL if we\'ve already read the\n+ *           alignment or there\'s no alignment data in the file.\n+ *           \n+ * Limitations: SELEX is the only remaining multipass parser for\n+ *           alignment files. It cannot read from gzip or from stdin.\n+ *           It Die()\'s here if you try. The reason for this\n+ *           that SELEX allows space characters as gaps, so we don\'t\n+ *           know the borders of an alignment block until we\'ve seen\n+ *           the whole block. I could rewrite to allow single-pass\n+ *           parsing (by storing the whole block in memory) but\n+ *           since SELEX is now legacy, why bother.\n+ *           \n+ *           Note that the interface is totally kludged: fastest\n+ *           possible adaptation of old ReadSELEX() to the new\n+ *           MSA interface.  \n+ *\n+ * Args:     afp  - open alignment file\n+ *\n+ * Returns:  MSA *  - an alignment object\n+ *                    caller responsible for an MSAFree()\n+ *           NULL if no alignment data.          \n+ */\n+MSA *\n+ReadSELEX(MSAFILE *afp)\n+{\n+  MSA     *msa;                 /* RETURN: mult seq alignment   */\n+  FILE    *fp;                  /* ptr to opened seqfile        */\n+  char   **aseqs;               /* aligned seqs                 */\n+  int      num = 0;\t\t/* number of seqs read          */\n+  char     buffer[LINEBUFLEN];\t/* input buffer for lines       */\n+  char     bufcpy[LINEBUFLEN];\t/* strtok\'able copy of buffer   */\n+  struct block_struc {          /** alignment data for a block: */\n+    int lcol;\t\t\t/* furthest left aligned sym    */\n+    int rcol;\t\t\t/* furthest right aligned sym   */\n+  } *blocks = NULL;\n+  int      blocknum;\t\t/* number of blocks in file     */\n+  char    *nptr;                /* ptr to start of name on line */\n+  char   '..b'+  for (i = lcol; i <= rcol; i++)\n+    {\n+      if (*s2 == \'\\t\') {\n+#ifdef CLUSTALO\n+\tWarning("TAB characters will corrupt a SELEX alignment! Please remove them first.");\n+#else\n+\tWarn("TAB characters will corrupt a SELEX alignment! Please remove them first.");\n+#endif    \n+\treturn 0;\n+      }\n+      if (name_rcol >= i)\t/* name intrusion special case: pad left w/ gaps */\n+\t*s1 = gapsym;\n+\t\t\t\t/* short buffer special case: pad right w/ gaps  */\n+      else if (*s2 == \'\\0\' || *s2 == \'\\n\')\n+\t*s1 = gapsym;\n+\n+      else if (*s2 == \' \')\t/* new: disallow spaces as gap symbols */\n+\t*s1 = gapsym;\n+\n+      else\t\t\t/* normal case: copy buffer into aseq */\n+\t*s1 = *s2;\n+\n+      s1++;\n+      if (*s2) s2++;\n+    }\n+  return 1;\n+}\n+\n+  \n+      \n+\n+\n+/* Function: DealignAseqs()\n+ * \n+ * Given an array of (num) aligned sequences aseqs,\n+ * strip the gaps. Store the raw sequences in a new allocated array.\n+ * \n+ * Caller is responsible for free\'ing the memory allocated to\n+ * rseqs.\n+ * \n+ * Returns 1 on success. Returns 0 and sets squid_errno on\n+ * failure.\n+ */\n+int\n+DealignAseqs(char **aseqs, int num, char ***ret_rseqs)\n+{\n+  char **rseqs;                 /* de-aligned sequence array   */\n+  int    idx;\t\t\t/* counter for sequences       */\n+  int    depos; \t\t/* position counter for dealigned seq*/\n+  int    apos;\t\t\t/* position counter for aligned seq */\n+  int    seqlen;\t\t/* length of aligned seq */\n+\n+\t\t\t\t/* alloc space */\n+  rseqs = (char **) MallocOrDie (num * sizeof(char *));\n+\t\t\t\t/* main loop */\n+  for (idx = 0; idx < num; idx++)\n+    {\n+      seqlen = strlen(aseqs[idx]);\n+\t\t\t\t/* alloc space */\n+      rseqs[idx] = (char *) MallocOrDie ((seqlen + 1) * sizeof(char));\n+\n+\t\t\t\t/* strip gaps */\n+      depos = 0;\n+      for (apos = 0; aseqs[idx][apos] != \'\\0\'; apos++)\n+\tif (!isgap(aseqs[idx][apos]))\n+\t  {\n+\t    rseqs[idx][depos] = aseqs[idx][apos];\n+\t    depos++;\n+\t  }\n+      rseqs[idx][depos] = \'\\0\';\n+    }\n+  *ret_rseqs = rseqs;\n+  return 1;\n+}\n+\n+\n+/* Function: IsSELEXFormat()\n+ * \n+ * Return TRUE if filename may be in SELEX format.\n+ * \n+ * Accuracy is sacrificed for speed; a TRUE return does\n+ * *not* guarantee that the file will pass the stricter\n+ * error-checking of ReadSELEX(). All it checks is that\n+ * the first 500 non-comment lines of a file are \n+ * blank, or if there\'s a second "word" on the line\n+ * it looks like sequence (i.e., it\'s not kOtherSeq).\n+ * \n+ * Returns TRUE or FALSE.\n+ */\n+int\n+IsSELEXFormat(char *filename)\n+{\n+  FILE *fp;                     /* ptr to open sequence file */\n+  char  buffer[LINEBUFLEN];\n+  char *sptr;                   /* ptr to first word          */\n+  int   linenum;\n+\n+\n+  if ((fp = fopen(filename, "r")) == NULL)\n+    { squid_errno = SQERR_NOFILE; return 0; }\n+\n+  linenum = 0;\n+  while (linenum < 500 && \n+\t fgets(buffer, LINEBUFLEN, fp) != NULL)\n+    {\n+      linenum++;\n+\t\t\t\t/* dead giveaways for extended SELEX */\n+      if      (strncmp(buffer, "#=AU", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=ID", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=AC", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=DE", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=GA", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=TC", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=NC", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=SQ", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=SS", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=CS", 4) == 0) goto DONE;\n+      else if (strncmp(buffer, "#=RF", 4) == 0) goto DONE;\n+\n+\t\t\t\t/* a comment? */\n+      if (strchr(commentsyms, *buffer) != NULL) continue;\n+\n+\t\t\t\t/* a blank line? */\n+      if ((sptr = strtok(buffer, WHITESPACE)) == NULL) continue;\n+\n+\t\t\t\t/* a one-word line (name only)\n+\t\t\t\t   is possible, though rare */\n+      if ((sptr = strtok(NULL, "\\n")) == NULL) continue;\n+      \n+      if (Seqtype(sptr) == kOtherSeq) {fclose(fp); return 0;}\n+    }\n+\n+ DONE:\n+  fclose(fp);\n+  return 1;\n+}\n+\n+\n+\n+\n+\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/seqencode.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/seqencode.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,176 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* seqencode.c
+ * 
+ * Routines for creating and manipulating encoded sequence strings.
+ * RCS $Id: seqencode.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: seqencode.c,v 1.3 1999/05/02 21:55:27 eddy Exp)
+ */
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+ /* seqcmp()
+    returns 0 if s1 == s2
+    mismatch number otherwise */
+int
+seqcmp(char *s1, char *s2, int allow)
+{
+  int mmat = 0;
+
+  while ((*s1 != NTEND) && (*s2 != NTEND) && (mmat <= allow)) 
+    {
+      if (!(ntmatch(*s1, *s2)))
+ mmat++;;
+      s1++;
+      s2++;
+    }
+  while ((*s1++ != NTEND) && (mmat <= allow))
+    mmat++;
+  return(mmat);
+}
+ /* seqncmp()
+    same as seqcmp but it looks at,
+    at most, n positions */
+int
+seqncmp(char *s1, char *s2, int n, int allow)
+{
+  int mmat = 0;
+
+  while ((*s2 != NTEND) &&
+  (n-- != 0))
+    {
+      if ((!(ntmatch(*s1, *s2))) &&
+   (++mmat > allow))
+ return(mmat);
+      s1++;
+      s2++;
+    }
+  while ((n-- != 0) && (*s1++ != NTEND) && (mmat <= allow))
+    mmat++;
+  return (mmat);
+}
+      
+ /* seqencode()
+    given a character text string str (A,C,G,T),
+    convert to an encoded seq string;
+    return 1 for success, 0 if fail */
+int
+seqencode(char *codeseq, /* pre-allocated space for answer */
+   char *str)     /* character string to convert    */
+{
+  char  *ptr;
+  int    idx;
+
+  ptr = codeseq;
+  while (*str != '\0')
+    {
+      if (islower((int) (*str))) *str = (char) toupper((int) (*str));
+      for (idx = 0; *str != iupac[idx].sym && idx <= IUPACSYMNUM; idx++)
+ ;
+      if (idx > IUPACSYMNUM)
+ {
+   *ptr = (char) NTEND;
+   return 0;
+ }
+      else
+ *ptr = iupac[idx].code;
+      ptr++;
+      str++;
+    }
+  *ptr = NTEND;
+  return 1;
+}
+
+
+int
+coded_revcomp(char *comp, char *seq)
+{
+  long  bases;
+  char *bckp, *fwdp;
+  int   idx;
+  long  pos;
+
+  bases = strlen(seq);
+
+  fwdp = comp;
+  bckp = seq + bases -1;
+  for (pos = 0; pos < bases; pos++)
+    {
+      for (idx = 0; *bckp != iupac[idx].code && idx < IUPACSYMNUM; idx++);
+      if (idx > IUPACSYMNUM)
+ {
+   *fwdp = NTEND;
+   return 0;
+ }
+      else
+ *fwdp = iupac[idx].comp;
+      fwdp++;
+      bckp--;
+    }
+  *fwdp = NTEND;
+  return(1);
+}
+  
+int
+seqdecode(char *str, char *codeseq)
+{
+  int idx;
+  int pos;
+
+  pos = 0;
+  while (*codeseq != NTEND)
+    {
+      for (idx = 0; *codeseq != iupac[idx].code && idx < IUPACSYMNUM; idx++)
+ ;
+      if (idx > IUPACSYMNUM)
+ {
+   str[pos] = 'X';
+   return 0;
+ }
+      else
+ str[pos] = iupac[idx].sym;
+      codeseq++;
+      pos++;
+    }
+  str[pos] = '\0';
+  return 1;
+}
+
+int
+seqndecode(
+     char       *str, /* pre-allocated string to write into */
+     char *codeseq, /* sequence to decode */
+     int         n) /* how many bases to decode */
+{
+  int idx;
+  int pos = 0;
+
+  while (--n >= 0)
+    {
+      for (idx = 0; *codeseq != iupac[idx].code && idx < IUPACSYMNUM; idx++);
+      if (idx > IUPACSYMNUM)
+ {
+   str[pos]  = 'X';
+   return 0;
+ }
+      else
+ str[pos] = iupac[idx].sym;
+      codeseq++;
+      pos++;
+    }
+  str[pos] = '\0';
+  return 1;
+}
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/shuffle.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/shuffle.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,638 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* shuffle.c\n+ * \n+ * Routines for randomizing sequences.\n+ *  \n+ * All routines are alphabet-independent (DNA, protein, RNA, whatever);\n+ * they assume that input strings are purely alphabetical [a-zA-Z], and\n+ * will return strings in all upper case [A-Z].\n+ *  \n+ * All return 1 on success, and 0 on failure; 0 status invariably\n+ * means the input string was not alphabetical.\n+ * \n+ * StrShuffle()   - shuffled string, preserve mono-symbol composition.\n+ * StrDPShuffle() - shuffled string, preserve mono- and di-symbol composition.\n+ * \n+ * StrMarkov0()   - random string, same zeroth order Markov properties.\n+ * StrMarkov1()   - random string, same first order Markov properties.\n+ * \n+ * StrReverse()   - simple reversal of string\n+ * StrRegionalShuffle() -  mono-symbol shuffled string in regional windows\n+ *\n+ * There are also similar routines for shuffling alignments:\n+ *\n+ * AlignmentShuffle()   - alignment version of StrShuffle().\n+ * AlignmentBootstrap() - sample with replacement; a bootstrap dataset.\n+ * QRNAShuffle()        - shuffle a pairwise alignment, preserving all gap positions.\n+ * \n+ * CVS $Id: shuffle.c,v 1.6 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+#include <string.h>\n+#include <ctype.h>\n+\n+#include "squid.h"\n+#include "sre_random.h"\n+\n+/* Function: StrShuffle()\n+ * \n+ * Purpose:  Returns a shuffled version of s2, in s1.\n+ *           (s1 and s2 can be identical, to shuffle in place.)\n+ *  \n+ * Args:     s1 - allocated space for shuffled string.\n+ *           s2 - string to shuffle.\n+ *           \n+ * Return:   1 on success.\n+ */\n+int\n+StrShuffle(char *s1, char *s2)\n+{\n+  int  len;\n+  int  pos;\n+  char c;\n+  \n+  if (s1 != s2) strcpy(s1, s2);\n+  for (len = strlen(s1); len > 1; len--)\n+    {\t\t\t\t\n+      pos       = CHOOSE(len);\n+      c         = s1[pos];\n+      s1[pos]   = s1[len-1];\n+      s1[len-1] = c;\n+    }\n+  return 1;\n+}\n+\n+/* Function: StrDPShuffle()\n+ * Date:     SRE, Fri Oct 29 09:15:17 1999 [St. Louis]\n+ *\n+ * Purpose:  Returns a shuffled version of s2, in s1.\n+ *           (s1 and s2 may be identical; i.e. a string\n+ *           may be shuffled in place.) The shuffle is a  \n+ *           "doublet-preserving" (DP) shuffle. Both\n+ *           mono- and di-symbol composition are preserved.\n+ *           \n+ *           Done by searching for a random Eulerian \n+ *           walk on a directed multigraph. \n+ *           Reference: S.F. Altschul and B.W. Erickson, Mol. Biol.\n+ *           Evol. 2:526-538, 1985. Quoted bits in my comments\n+ *           are from Altschul\'s outline of the algorithm.\n+ *\n+ * Args:     s1   - RETURN: the string after it\'s been shuffled\n+ *                    (space for s1 allocated by caller)\n+ *           s2   - the string to be shuffled\n+ *\n+ * Returns:  0 if string can\'t be shuffled (it\'s not all [a-zA-z]\n+ *             alphabetic.\n+ *           1 on success. \n+ */\n+int\n+StrDPShuffle(char *s1, char *s2)\n+{\n+  int    len;\n+  int    pos;\t/* a position in s1 or s2 */\n+  int    x,y;   /* indices of two characters */\n+  char **E;     /* edge lists: E[0] is the edge list from vertex A */\n+  int   *nE;    /* lengths of edge lists */\n+  int   *iE;    /* positions in edge lists */\n+  int    n;\t/* tmp: remaining length of an edge list to be shuffled */\n+  char   sf;    /* last character in s2 */\n+  char   Z[26]; /* connectivity in last edge graph Z */ \n+  int    keep_connecting; /* flag used in Z connectivity algorithm */\n+  int    is_eulerian;\t\t/* flag used for when we\'ve got a good Z */\n+  \n+  /* First, verify that the string is en'..b'+  for (i = 0; i < nseq; i++)\n+    ali1[i][alen] = \'\\0\';\n+\n+  return 1;\n+}\n+\n+\n+/* Function: QRNAShuffle()\n+ * Date:     SRE, Mon Dec 10 10:14:12 2001 [St. Louis]\n+ *\n+ * Purpose:  Shuffle a pairwise alignment x,y while preserving the\n+ *           position of gaps; return the shuffled alignment in xs,\n+ *           ys.\n+ *           \n+ *           Works by doing three separate\n+ *           shuffles, of (1) columns with residues in both\n+ *           x and y, (2) columns with residue in x and gap in y,\n+ *           and (3) columns with gap in x and residue in y.\n+ *           \n+ *           xs,x and ys,y may be identical: that is, to shuffle\n+ *           an alignment "in place", destroying the original\n+ *           alignment, just call:\n+ *              QRNAShuffle(x,y,x,y);\n+ *\n+ * Args:     xs, ys: allocated space for shuffled pairwise ali of x,y [L+1]\n+ *           x, y: pairwise alignment to be shuffled [0..L-1]\n+ *\n+ * Returns:  1 on success, 0 on failure.\n+ *           The shuffled alignment is returned in xs, ys.\n+ */\n+int\n+QRNAShuffle(char *xs, char *ys, char *x, char *y)\n+{\n+  int  L;\n+  int *xycol, *xcol, *ycol;\n+  int  nxy, nx, ny;\n+  int  i;\n+  int  pos, c;\n+  char xsym, ysym;\n+\n+  if (xs != x) strcpy(xs, x);\n+  if (ys != y) strcpy(ys, y);\n+\n+  /* First, construct three arrays containing lists of the column positions\n+   * of the three types of columns. (If a column contains gaps in both x and y,\n+   * we\'ve already simply copied it to the shuffled sequence.)\n+   */\n+  L = strlen(x);\n+  xycol = MallocOrDie(sizeof(int) * L);\n+  xcol  = MallocOrDie(sizeof(int) * L);\n+  ycol  = MallocOrDie(sizeof(int) * L);\n+  nxy = nx = ny = 0;\n+\n+  for (i = 0; i < L; i++)\n+    {\n+      if      (isgap(x[i]) && isgap(y[i]))     { continue; }\n+      else if (! isgap(x[i]) && ! isgap(y[i])) { xycol[nxy] = i; nxy++; }\n+      else if (isgap(x[i]))                    { ycol[ny] = i;   ny++;  }\n+      else if (isgap(y[i]))                    { xcol[nx] = i;   nx++;  }\n+    }\n+\n+  /* Second, shuffle the sequences indirectly, via shuffling these arrays.\n+   * Yow, careful with those indices, and with order of the statements...\n+   */\n+  for (; nxy > 1; nxy--) {\n+    pos          = CHOOSE(nxy);\n+    xsym             = xs[xycol[pos]];   ysym             = ys[xycol[pos]];    c            = xycol[pos];   \n+    xs[xycol[pos]]   = xs[xycol[nxy-1]]; ys[xycol[pos]]   = ys[xycol[nxy-1]];  xycol[pos]   = xycol[nxy-1];\n+    xs[xycol[nxy-1]] = xsym;             ys[xycol[nxy-1]] = ysym;              xycol[pos]   = xycol[nxy-1];\n+  }\n+  for (; nx > 1; nx--) {\n+    pos        = CHOOSE(nx); \n+    xsym           = xs[xcol[pos]];  ysym           = ys[xcol[pos]];  c          = xcol[pos];  \n+    xs[xcol[pos]]  = xs[xcol[nx-1]]; ys[xcol[pos]]  = ys[xcol[nx-1]]; xcol[pos]  = xcol[nx-1]; \n+    xs[xcol[nx-1]] = xsym;           ys[xcol[nx-1]] = ysym;           xcol[nx-1] = c;          \n+  }\n+  for (; ny > 1; ny--) {\n+    pos        = CHOOSE(ny); \n+    xsym           = xs[ycol[pos]];  ysym           = ys[ycol[pos]];  c          = ycol[pos]; \n+    xs[ycol[pos]]  = xs[ycol[ny-1]]; ys[ycol[pos]]  = ys[ycol[ny-1]]; ycol[pos]  = ycol[ny-1];\n+    xs[ycol[ny-1]] = xsym;           ys[ycol[ny-1]] = ysym;           ycol[ny-1] = c;          \n+  }\n+\n+  free(xycol); free(xcol); free(ycol);\n+  return 1;\n+}\n+\n+\n+#ifdef TESTDRIVER\n+/*\n+ * cc -g -o testdriver -DTESTDRIVER -L. shuffle.c -lsquid -lm\n+ */\n+int \n+main(int argc, char **argv)\n+{\n+  char s1[100];\n+  char s2[100];\n+\n+  sre_srandom(42);\n+  strcpy(s2, "GGGGGGGGGGCCCCCCCCCC");\n+  /*  strcpy(s2, "AGACATAAAGTTCCGTACTGCCGGGAT");\n+   */\n+  StrDPShuffle(s1, s2);\n+  printf("DPshuffle: %s\\n", s1);\n+  StrMarkov0(s1,s2);\n+  printf("Markov 0 : %s\\n", s1);\n+  StrMarkov1(s1,s2);\n+  printf("Markov 1 : %s\\n", s1);\n+\n+  strcpy(s1, "ACGTACGT--------ACGTACGT----ACGTACGT");\n+  strcpy(s2, "ACGTACGTACGTACGT------------ACGTACGT");\n+  QRNAShuffle(s1,s2,s1,s2);\n+  printf("QRNA : %s\\n", s1);\n+  printf("     : %s\\n", s2);\n+\n+  return 0;\n+}\n+#endif\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sqerror.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sqerror.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,98 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* sqerror.c
+ * 
+ * error handling for the squid library
+ * RCS $Id: sqerror.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: sqerror.c,v 1.4 1999/07/15 22:28:31 eddy Exp)
+ */
+
+ /* a global errno equivalent */
+int squid_errno;
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* Function: Die()
+ * 
+ * Purpose:  Print an error message and die. The arguments
+ *           are formatted exactly like arguments to printf().
+ *           
+ * Return:   None. Exits the program.
+ */          
+/* VARARGS0 */
+void
+Die(char *format, ...)
+{
+  va_list  argp;
+ /* format the error mesg */
+  fprintf(stderr, "\nFATAL: ");
+  va_start(argp, format);
+  vfprintf(stderr, format, argp);
+  va_end(argp);
+  fprintf(stderr, "\n");
+  fflush(stderr);
+ /* exit  */
+  exit(1);
+}
+
+
+
+/* Function: Warn()
+ * 
+ * Purpose:  Print an error message and return. The arguments
+ *           are formatted exactly like arguments to printf().
+ *           
+ * Return:   (void)
+ */          
+/* VARARGS0 */
+void
+#ifdef CLUSTALO
+Warning(char *format, ...)
+#else
+Warn(char *format, ...)
+#endif
+{
+  va_list  argp;
+ /* format the error mesg */
+  fprintf(stderr, "WARNING: ");
+  va_start(argp, format);
+  vfprintf(stderr, format, argp);
+  va_end(argp);
+  fprintf(stderr, "\n");
+  fflush(stderr);
+}
+
+/* Function: Panic()
+ * 
+ * Purpose:  Die from a lethal error that's not my problem,
+ *           but instead a failure of a StdC/POSIX call that
+ *           shouldn't fail. Call perror() to get the
+ *           errno flag, then die.
+ *           
+ *           Usually called by the PANIC macro which adds
+ *           the __FILE__ and __LINE__ information; see
+ *           structs.h.
+ *           
+ *           Inspired by code in Donald Lewine's book, _POSIX 
+ *           Programmer's Guide_.
+ */
+void
+Panic(char *file, int line)
+{
+  (void) fprintf(stderr, "\nPANIC [%s line %d] ", file, line);
+  (void) perror("Unusual error");
+  exit(EXIT_FAILURE);
+}
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sqfuncs.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sqfuncs.h Tue Jun 07 17:04:25 2011 -0400
b
b"@@ -0,0 +1,274 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+#ifndef SQFUNCSH_INCLUDED\n+#define SQFUNCSH_INCLUDED\n+/* sqfuncs.h\n+ * \n+ * Prototypes for squid library functions;\n+ * also makes a good reference list for what the package contains.\n+ *\n+ * Warning: squid is a slowly evolving beast. Some functions are\n+ * obsolete. Some functions are probably just wrong, dating to\n+ * a primordial era before I knew anything about what I was doing.\n+ * Some functions are both obsolete and wrong but still necessary\n+ * to get legacy code to compile.\n+ *\n+ * CVS $Id: sqfuncs.h,v 1.28 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+/* \n+ * from aligneval.c\n+ */\n+extern float ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2);\n+extern float CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2);\n+extern float CompareMultAlignments(char **kseqs, char **tseqs, int    N);\n+extern float CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int    N);\n+extern float PairwiseIdentity(char *s1, char *s2);\n+extern float AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample);\n+extern char *MajorityRuleConsensus(char **aseq, int nseq, int alen);\n+\n+/* \n+ * from alignio.c\n+ */\n+extern void AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo);\n+extern void InitAinfo(AINFO *ainfo);\n+extern void FreeAlignment(char **aseqs, AINFO *ainfo);\n+extern void SAMizeAlignment(char **aseq, int nseq, int alen);\n+extern void SAMizeAlignmentByGapFrac(char **aseq, int nseq, int alen, float maxgap);\n+extern int  MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s);\n+extern int  MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s);\n+extern int  DealignedLength(char *aseq);\n+extern int  WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1,\n+\t\t\t\t   char *aseq2, char *name2, int spos2,\n+\t\t\t\t   int **pam, int indent);\n+extern int  MingapAlignment(char **aseqs, AINFO *ainfo);\n+extern int  RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex,\n+\t\t\t    char ***ret_aseqs, AINFO *ainfo);\n+extern void AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym);\n+\n+/* from cluster.c\n+ */\n+extern int Cluster(float **mx, int N, enum clust_strategy mode, struct phylo_s **ret_tree);\n+extern struct phylo_s *AllocPhylo(int N);\n+extern void FreePhylo(struct phylo_s *tree, int N);\n+extern void MakeDiffMx(char **aseqs, int num, float ***ret_dmx);\n+extern void MakeIdentityMx(char **aseqs, int num, float ***ret_imx);\n+extern void PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);\n+extern void PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N);\n+\n+/* \n+ * from dayhoff.c\n+ */\n+extern int  ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale);\n+extern void ScalePAM(int **pam, int scale);\n+\n+\n+/* from file.c\n+ */\n+extern char *FileDirname(char *filename);\n+extern char *FileTail(char *file, int noextension);\n+extern char *FileSameDirectory(char *full, char *file);\n+extern char *FileConcat(char *dir, char *file);\n+extern char *FileAddSuffix(char *filename, char *sfx);\n+extern FILE *EnvFileOpen(char *fname, char *env, char **ret_dir);\n+extern int   FileExists(char *filename);\n+\n+\n+/* from getopt.c\n+ */\n+extern int  Getopt(int argc, char **argv, \n+\t\t   struct opt_s *opt, int nopts, char *usage,\n+\t\t   int *ret_optind, char **ret_optname, char **ret_optarg);\n+\n+\n+/* from hsregex.c\n+ * Henry Spencer's regex() code\n+ */\n+extern int         Strparse(char *rexp, char *s, int ntok);\n+extern void        SqdClean"..b'tion(SQFILE *sfp, SSIOFFSET *offset);\n+extern void    SeqfileRewind(SQFILE *sfp);\n+extern void    SeqfileClose(SQFILE *sfp);\n+\n+extern int   ReadSeq(SQFILE *fp, int format, char **ret_seq, SQINFO *sqinfo);\n+extern int   GCGBinaryToSequence(char *seq, int len);\n+extern int   GCGchecksum(char *seq, int seqlen);\n+extern int   GCGMultchecksum(char **seqs, int nseq);\n+extern void  WriteSimpleFASTA(FILE *fp, char *seq, char *name, char *desc);\n+extern int   WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo);\n+extern int   Seqtype(char *seq);\n+extern int   GuessAlignmentSeqtype(char **aseq, int nseq);\n+extern int   String2SeqfileFormat(char *s);\n+extern char *SeqfileFormat2String(int code);\n+extern SQINFO *MSAToSqinfo(MSA *msa); \n+\n+/* from squidcore.c\n+ */\n+extern void Banner(FILE *fp, char *banner); \n+\n+\n+/* from sre_ctype.c\n+ */\n+extern int sre_tolower(int c);\n+extern int sre_toupper(int c);\n+\n+/* from sre_math.c\n+ */\n+extern int      Linefit(float *x, float *y, int N, \n+\t\t        float *ret_a, float *ret_b, float *ret_r);\n+extern void     WeightedLinefit(float *x, float *y, float *var, int N,\n+\t\t\t     float *ret_m, float *ret_b);\n+extern double   Gammln(double xx);\n+extern float  **FMX2Alloc(int rows, int cols);\n+extern void     FMX2Free(float **mx);\n+extern double **DMX2Alloc(int rows, int cols);\n+extern void     DMX2Free(double **mx);\n+extern void     FMX2Multiply(float **A, float **B, float **C, int m, int p, int n);\n+extern double   IncompleteGamma(double a, double x);\n+\n+/* from sre_string.c\n+ */\n+#ifdef NOSTR\n+extern char *strstr(char *s, char *subs);\n+#endif\n+extern char *Strdup(char *s);\n+extern void  StringChop(char *s);\n+extern int   Strinsert(char *s1, char c, int pos);\n+extern int   Strdelete(char *s1, int pos);\n+extern void  s2lower(char *s);\n+extern void  s2upper(char *s);\n+extern void *sre_malloc(char *file, int line, size_t size);\n+extern void *sre_realloc(char *file, int line, void *p, size_t size);\n+extern void  Free2DArray(void **p, int dim1);\n+extern void  Free3DArray(void ***p, int dim1, int dim2);\n+extern char *RandomSequence(char *alphabet, float *p, int n, int len);\n+extern char *sre_fgets(char **buf, int *n, FILE *fp);\n+extern int   sre_strcat(char **dest, int ldest, char *src, int lsrc);\n+extern char *sre_strtok(char **s, char *delim, int *len);\n+extern char *sre_strdup(char *s, int n);\n+extern char *sre_strncat(char *s1, char *s2, int n);\n+extern int   IsBlankline(char *s);\n+\n+/* from stack.c\n+ */\n+extern struct intstack_s *InitIntStack(void);\n+extern void PushIntStack(struct intstack_s *stack, int data);\n+extern int  PopIntStack(struct intstack_s  *stack, int *ret_data);\n+extern void ReverseIntStack(struct intstack_s *stack);\n+extern int  FreeIntStack( struct intstack_s *stack );\n+\n+/* \n+ * from translate.c\n+ */\n+extern char *Translate(char *seq, char **code);\n+\n+/* \n+ * from types.c\n+ */\n+extern int  IsInt(char *s);\n+extern int  IsReal(char *s);\n+extern void Byteswap(char *swap, int nbytes);\n+#ifndef USE_HOST_BYTESWAP_FUNCTIONS\n+extern sqd_uint16 sre_ntoh16(sqd_uint16 netshort);\n+extern sqd_uint32 sre_ntoh32(sqd_uint32 netlong);\n+extern sqd_uint16 sre_hton16(sqd_uint16 hostshort);\n+extern sqd_uint32 sre_hton32(sqd_uint32 hostlong);\n+#endif /*!USE_HOST_BYTESWAP_FUNCTIONS*/\n+extern sqd_uint64 sre_ntoh64(sqd_uint64 net_int64);\n+extern sqd_uint64 sre_hton64(sqd_uint64 host_int64);\n+\n+/* \n+ * from weight.c\n+ */\n+extern void GSCWeights(char **aseq, int nseq, int alen, float *wgt);\n+extern void VoronoiWeights(char **aseq, int nseq, int alen, float *wgt);\n+extern void BlosumWeights(char **aseq, int nseq, int alen, float blosumlevel, float *wgt);\n+extern void PositionBasedWeights(char **aseq, int nseq, int alen, float *wgt);\n+extern void FilterAlignment(MSA *msa, float cutoff, MSA **ret_new);\n+extern void SampleAlignment(MSA *msa, int sample,   MSA **ret_new);\n+extern void SingleLinkCluster(char **aseq, int nseq, int alen, float maxid, \n+\t\t  int **ret_c, int *ret_nc);\n+#endif /* SQFUNCSH_INCLUDED */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sqio.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sqio.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,2033 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* File: sqio.c\n+ * From: ureadseq.c in Don Gilbert\'s sequence i/o package\n+ *\n+ * Reads and writes nucleic/protein sequence in various\n+ * formats. Data files may have multiple sequences.\n+ *\n+ * Heavily modified from READSEQ package\n+ * Copyright (C) 1990 by D.G. Gilbert\n+ * Biology Dept., Indiana University, Bloomington, IN 47405\n+ * email: gilbertd@bio.indiana.edu\n+ * Thanks Don!\n+ *\n+ * SRE: Modifications as noted. Fri Jul  3 09:44:54 1992\n+ *      Packaged for squid, Thu Oct  1 10:07:11 1992\n+ *      ANSI conversion in full swing, Mon Jul 12 12:22:21 1993\n+ *\n+ * CVS $Id: sqio.c,v 1.29 2002/08/26 23:10:52 eddy Exp)\n+ * \n+ *****************************************************************\n+ * Basic API for single sequence reading:\n+ * \n+ * SQFILE *sqfp;\n+ * char   *seqfile;\n+ * int     format;        - see squid.h for formats; example: SQFILE_FASTA\n+ * char   *seq;\n+ * SQINFO  sqinfo;\n+ * \n+ * if ((sqfp = SeqfileOpen(seqfile, format, "BLASTDB")) == NULL)\n+ *   Die("Failed to open sequence database file %s\\n%s\\n", seqfile, usage);\n+ * while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) {\n+ *   do_stuff;\n+ *   FreeSequence(seq, &sqinfo);\n+ * }\n+ * SeqfileClose(sqfp);  \n+ * \n+ *****************************************************************  \n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <ctype.h>\n+\n+#ifndef SEEK_SET\n+#include <unistd.h>\t\n+#endif\n+\n+#include "squid.h"\n+#include "msa.h"\n+#include "ssi.h"\n+\n+static void SeqfileGetLine(SQFILE *V);\n+\n+#define kStartLength  500\n+\n+static char *aminos      = "ABCDEFGHIKLMNPQRSTVWXYZ*";\n+static char *primenuc    = "ACGTUN";\n+static char *protonly    = "EFIPQZ";\n+\n+static SQFILE *seqfile_open(char *filename, int format, char *env, int ssimode);\n+\n+/* Function: SeqfileOpen()\n+ * \n+ * Purpose : Open a sequence database file and prepare for reading\n+ *           sequentially.\n+ *           \n+ * Args:     filename - name of file to open\n+ *           format   - format of file\n+ *           env      - environment variable for path (e.g. BLASTDB)   \n+ *           ssimode  - -1, SSI_OFFSET_I32, or SSI_OFFSET_I64\n+ *\n+ *           Returns opened SQFILE ptr, or NULL on failure.\n+ */\n+SQFILE *\n+SeqfileOpen(char *filename, int format, char *env)\n+{\n+  return seqfile_open(filename, format, env, -1);\n+}\n+SQFILE *\n+SeqfileOpenForIndexing(char *filename, int format, char *env, int ssimode)\n+{\n+  return seqfile_open(filename, format, env, ssimode);\n+}\n+static SQFILE *\n+seqfile_open(char *filename, int format, char *env, int ssimode)\n+{\n+  SQFILE *dbfp;\n+\n+  dbfp = (SQFILE *) MallocOrDie (sizeof(SQFILE));\n+\n+  dbfp->ssimode  = ssimode;\n+  dbfp->rpl      = -1;\t\t/* flag meaning "unset" */\n+  dbfp->lastrpl  = 0;\n+  dbfp->maxrpl   = 0;\n+  dbfp->bpl      = -1;\t\t/* flag meaning "unset" */\n+  dbfp->lastbpl  = 0;\n+  dbfp->maxbpl   = 0;\n+\n+  /* Open our file handle.\n+   * Three possibilities:\n+   *    1. normal file open\n+   *    2. filename = "-";    read from stdin\n+   *    3. filename = "*.gz"; read thru pipe from gzip \n+   * If we\'re reading from stdin or a pipe, we can\'t reliably\n+   * back up, so we can\'t do two-pass parsers like the interleaved alignment   \n+   * formats.\n+   */\n+  if (strcmp(filename, "-") == 0)\n+    {\n+      dbfp->f         = stdin;\n+      dbfp->do_stdin  = TRUE; \n+      dbfp->do_gzip   = FALSE;\n+      dbfp->fname     = sre_strdup("[STDIN]", -1);\n+    }\n+#ifndef SRE_STRICT_ANSI\n+  /* popen(), pclose() aren\'t portable to non-POSIX systems; disable */\n+  else if (Strparse("^.*\\\\.gz$", filename, 0)'..b'eFormat2String(int code)\n+{\n+  switch (code) {\n+  case SQFILE_UNKNOWN:   return "unknown";\n+  case SQFILE_FASTA:     return "FASTA";\n+#ifdef CLUSTALO\n+  case SQFILE_VIENNA:    return "Vienna";\n+#endif\n+  case SQFILE_GENBANK:   return "Genbank";\n+  case SQFILE_EMBL:      return "EMBL"; \n+  case SQFILE_GCG:       return "GCG";\n+  case SQFILE_GCGDATA:   return "GCG data library";\n+  case SQFILE_RAW:       return "raw"; \n+  case SQFILE_IG:        return "Intelligenetics";\n+  case SQFILE_STRIDER:   return "MacStrider";\n+  case SQFILE_IDRAW:     return "Idraw Postscript";\n+  case SQFILE_ZUKER:     return "Zuker"; \n+  case SQFILE_PIR:       return "PIR";\n+  case SQFILE_SQUID:     return "SQUID";\n+  case MSAFILE_STOCKHOLM: return "Stockholm";\n+  case MSAFILE_SELEX:     return "SELEX";\n+  case MSAFILE_MSF:       return "MSF";\n+  case MSAFILE_CLUSTAL:   return "Clustal";\n+  case MSAFILE_A2M:       return "a2m";\n+  case MSAFILE_PHYLIP:    return "Phylip";\n+  case MSAFILE_EPS:       return "EPS";\n+  default:               \n+    Die("Bad code passed to MSAFormat2String()");\n+  }\n+  /*NOTREACHED*/\n+  return NULL;\n+}\n+\n+\n+/* Function: MSAToSqinfo()\n+ * Date:     SRE, Tue Jul 20 14:36:56 1999 [St. Louis]\n+ *\n+ * Purpose:  Take an MSA and generate a SQINFO array suitable\n+ *           for use in annotating the unaligned sequences.\n+ *           Return the array.\n+ *           \n+ *           Permanent temporary code. sqinfo was poorly designed.\n+ *           it must eventually be replaced, but the odds\n+ *           of this happening soon are nil, so I have to deal.\n+ *\n+ * Args:     msa   - the alignment\n+ *\n+ * Returns:  ptr to allocated sqinfo array.\n+ *           Freeing is ghastly: free in each individual sqinfo[i] \n+ *           with FreeSequence(NULL, &(sqinfo[i])), then\n+ *           free(sqinfo).\n+ */\n+SQINFO *\n+MSAToSqinfo(MSA *msa)\n+{\n+  int     idx;\n+  SQINFO *sqinfo;\n+\n+  sqinfo = MallocOrDie(sizeof(SQINFO) * msa->nseq);\n+\n+  for (idx = 0; idx < msa->nseq; idx++)\n+    {\n+      sqinfo[idx].flags = 0;\n+      SetSeqinfoString(&(sqinfo[idx]), \n+\t\t       msa->sqname[idx],                 SQINFO_NAME);\n+      SetSeqinfoString(&(sqinfo[idx]), \n+\t\t       MSAGetSeqAccession(msa, idx),     SQINFO_ACC);\n+      SetSeqinfoString(&(sqinfo[idx]), \n+\t\t       MSAGetSeqDescription(msa, idx),   SQINFO_DESC);\n+\n+      if (msa->ss != NULL && msa->ss[idx] != NULL) {\n+\tMakeDealignedString(msa->aseq[idx], msa->alen, \n+\t\t\t    msa->ss[idx], &(sqinfo[idx].ss));\n+\tsqinfo[idx].flags |= SQINFO_SS;\n+      }\n+\n+      if (msa->sa != NULL && msa->sa[idx] != NULL) {\n+\tMakeDealignedString(msa->aseq[idx], msa->alen, \n+\t\t\t    msa->sa[idx], &(sqinfo[idx].sa));\n+\tsqinfo[idx].flags |= SQINFO_SA;\n+      }\n+\n+      sqinfo[idx].len    = DealignedLength(msa->aseq[idx]);\n+      sqinfo[idx].flags |= SQINFO_LEN;\n+    }\n+  return sqinfo;\n+}\n+\n+\n+\n+/* cc -o sqio_test -DA_QUIET_DAY -L. sqio.c -lsquid */\n+#ifdef A_QUIET_DAY\n+#include "ssi.h"\n+int\n+main(int argc, char **argv)\n+{\n+  FILE *fp;\n+  char *filename;\n+  char *buf;\n+  int   len;\n+  int   mode = 3;\n+  SSIOFFSET off;\n+\n+  filename = argv[1];\n+\n+  if (mode == 1) {\n+    buf = malloc(sizeof(char) * 256);\n+    if ((fp = fopen(filename, "r")) == NULL)\n+      Die("open of %s failed", filename); \n+    while (fgets(buf, 255, fp) != NULL)\n+      ;\n+    fclose(fp);\n+    free(buf);\n+  } else if (mode == 2) {\n+    if ((fp = fopen(filename, "r")) == NULL)\n+      Die("open of %s failed", filename); \n+    buf = NULL; len = 0;\n+    while (sre_fgets(&buf, &len, fp) != NULL)\n+      SSIGetFilePosition(fp, SSI_OFFSET_I32, &off); \n+    fclose(fp);\n+    free(buf);\n+  } else if (mode == 3) {\n+    SQFILE *dbfp;\n+    SQINFO  info;\n+\n+    if ((dbfp = SeqfileOpen(filename, SQFILE_FASTA, NULL)) == NULL)\n+      Die("open of %s failed", filename); \n+    while (ReadSeq(dbfp, dbfp->format, &buf, &info)) { \n+      SSIGetFilePosition(dbfp->f, SSI_OFFSET_I32, &off); \n+      FreeSequence(buf, &info);\n+    }\n+    SeqfileClose(dbfp);\n+  }\n+      \n+}\n+ \n+\n+#endif\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/squid-1.9g.tar.gz
b
Binary file clustalomega/clustal-omega-0.2.0/src/squid/squid-1.9g.tar.gz has changed
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/squid.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/squid.h Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,531 @@\n+/* Generated automatically from squid.h.in by configure. */\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+#ifndef SQUIDH_INCLUDED\n+#define SQUIDH_INCLUDED\n+\n+/* squid.h\n+ * Header file for my library of sequence functions.\n+ *\n+ * CVS $Id: squid.h.in,v 1.5 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <math.h>\n+#include <stdlib.h>\n+#include <unistd.h>\t\t/* for sysconf() #define\'s       */\n+\n+\n+#if DEBUGLEVEL > 0\n+#include <assert.h>\t\t/* for SQD_DASSERT1(), etc.      */\n+#endif\n+\n+/* include clustal\'s config.h */\n+#ifdef CLUSTALO\n+#include "config.h"\n+#define CLUSTALO 1\n+#else\n+#include "clustal-omega-config.h"\n+#define CLUSTALO 1\n+#endif\n+\n+#ifdef CLUSTALO\n+/* we don\'t want squidconf.h but our own config header. but, there are\n+ * some checks, espcially at the end of squidconf.h might be\n+ * necessary for squid to work. They follow after the inclusion of\n+ * config.h\n+ */\n+#undef DEBUG\n+\n+/* squidconf.h checks:\n+ */\n+#if defined HAVE_NTOHL && defined HAVE_NTOHS && defined HAVE_HTONS && defined HAVE_HTONL\n+#define USE_HOST_BYTESWAP_FUNCTIONS 1\n+#endif\n+/* On 64-bit machines like Alphas, strtoull doesn\'t exist, strotul will work\n+ */\n+#if SIZEOF_UNSIGNED_LONG == 8 && defined HAVE_STRTOUL && ! defined HAVE_STRTOULL\n+#define strtoull strtoul\n+#endif\n+\n+#if   defined HAVE_FTELLO && defined HAVE_FSEEKO && SIZEOF_OFF_T == 8\n+#define HAS_64BIT_FILE_OFFSETS 1\n+#elif defined HAVE_FTELLO64 && defined HAVE_FSEEKO64 && SIZEOF_OFF64_T == 8\n+#define HAS_64BIT_FILE_OFFSETS 1\n+#elif defined HAVE_FTELL64 && defined HAVE_FSEEK64 \n+#define HAS_64BIT_FILE_OFFSETS 1\n+#elif defined ARITHMETIC_FPOS_T && SIZEOF_FPOS_T == 8\n+#define HAS_64BIT_FILE_OFFSETS 1\n+#else\n+#undef HAS_64BIT_FILE_OFFSETS \n+#endif\n+\n+/* The following check seems like nonsense to me (AW), therefore */\n+#if 0\n+/* Stuff to work around Tru64 not having strtoull() -\n+ * on systems with 64-bit longs, we can use strtoul()\n+ */\n+#undef HAVE_STRTOULL\n+#if ! defined HAVE_STRTOULL && SIZEOF_UNSIGNED_LONG == 8\n+#define strtoull strtoul\n+#endif\n+#endif\n+\n+#else /* CLUSTALO */\n+#include "squidconf.h"\t\t/* #define\'s generated by ./configure script */\n+#endif\n+\n+/*****************************************************************\n+ * Integers of guaranteed size. (used for instance in gsi.c, gsi2.c)\n+ * These are set by the ./configure script; if they show up as FIXME,\n+ * they must be manually edited to appropriate type definitions. You\n+ * do need 64-bit integers in the current code; email me if this\n+ * prevents you from compiling SQUID and tell me your system (I don\'t\n+ * know of any systems that don\'t have 64-bit integers these days).\n+ *****************************************************************/\n+typedef unsigned short     sqd_uint16;\n+typedef unsigned int       sqd_uint32;\n+typedef unsigned long      sqd_uint64;\n+\n+#ifdef USE_HOST_BYTESWAP_FUNCTIONS\n+#include <sys/types.h>\t\t/* only for ntohl() and friends. */\n+#include <netinet/in.h>\t\t/* only for ntohl() and friends. */\n+#define sre_ntoh16(x) ntohs(x);\n+#define sre_ntoh32(x) ntohl(x);\n+#define sre_hton16(x) htons(x);\n+#define sre_hton32(x) htonl(x);\n+#endif /* USE_HOST_BYTESWAP_FUNCTIONS */\n+\n+/* Library version info is made available as a global to\n+ * any interested program. These are defined in iupac.c\n+ * with the other globals.\n+ */\n+extern char squid_version[];\t/* version number  */\n+extern char squid_date[];\t/* date of release */\n+extern int  squid_errno;\t/* error codes     */\n+\n+\n+\n+/****************************************************\n+ * Error codes returned by squid library functions (squid_errn'..b' library.\n+ ****************************************************/\n+\n+#define NSUBEXP  10\n+typedef struct sqd_regexp {\n+\tchar *startp[NSUBEXP];\n+\tchar *endp[NSUBEXP];\n+\tchar regstart;\t\t/* Internal use only. */\n+\tchar reganch;\t\t/* Internal use only. */\n+\tchar *regmust;\t\t/* Internal use only. */\n+\tint regmlen;\t\t/* Internal use only. */\n+\tchar program[1];\t/* Unwarranted chumminess with compiler. */\n+} sqd_regexp;\n+\n+/* Strparse() defines and manages these. \n+ * sqd_parse[0] contains the substring that matched the pattern.\n+ * sqd_parse[1-9] contain substrings matched with ()\'s.\n+ */\n+extern char *sqd_parse[10];\n+\n+/****************************************************\n+ * Portable detection of multiprocessor # of CPUs.\n+ *      #include <unistd.h>\n+ *      long foo = SQD_NPROC;\n+ *      returns the number of available processors.\n+ *      if foo == -1, we failed.\n+ ****************************************************/\n+\n+/* Our problem here is that POSIX apparently doesn\'t specify\n+ * a standard for how to get sysconf() to report the number of\n+ * processors on-line. _SC_NPROCESSORS_ONLN is specified\n+ * by SVR4.0MP. Thanks to W. Gish for help here.\n+ */\n+#undef SQD_NPROC\n+#ifdef  _SC_NPROCESSORS_ONLN    /* Sun Solaris, Digital UNIX */\n+#define SQD_NPROC  sysconf(_SC_NPROCESSORS_ONLN)\n+#else\n+#ifdef _SC_NPROC_ONLN\t\t/* Silicon Graphics IRIX */\n+#define SQD_NPROC  sysconf(_SC_NPROC_ONLN)\n+#else   /* FreeBSD, Linux don\'t support getting ncpu via sysconf() */\n+#define SQD_NPROC  -1\n+#endif\n+#endif\n+\n+/****************************************************\n+ * Three levels of debugging printf\'s and assert\'s\n+ *      level 1: little impact on verbosity or performance\n+ *      level 2: moderate impact\n+ *      level 3: high impact\n+ * Example:\n+ *    SQD_DPRINTF3(("Matrix row %d col %d = %f\\n", i, j, val));\n+ * Note the double parentheses; these are important.\n+ ****************************************************/\n+\n+#ifndef DEBUGLEVEL\n+#define DEBUGLEVEL 0\n+#endif\n+\n+#if (DEBUGLEVEL >= 1)\n+#define SQD_DPRINTF1(x)  printf x\n+#define SQD_DASSERT1(x)  assert x\n+#else\n+#define SQD_DPRINTF1(x)  \n+#define SQD_DASSERT1(x)\n+#endif\n+#if (DEBUGLEVEL >= 2)\n+#define SQD_DPRINTF2(x)  printf x\n+#define SQD_DASSERT2(x)  assert x\n+#else\n+#define SQD_DPRINTF2(x)  \n+#define SQD_DASSERT2(x)\n+#endif\n+#if (DEBUGLEVEL >= 3)\n+#define SQD_DPRINTF3(x)  printf x\n+#define SQD_DASSERT3(x)  assert x\n+#else\n+#define SQD_DPRINTF3(x)  \n+#define SQD_DASSERT3(x)\n+#endif\n+\n+/* PANIC is called for failures of Std C/POSIX functions,\n+ * instead of my own functions. Panic() calls perror() and exits\n+ * abnormally.\n+ */\n+#define PANIC   Panic(__FILE__, __LINE__)\n+\n+/* Malloc/realloc calls are wrapped\n+ */\n+#define MallocOrDie(x)     sre_malloc(__FILE__, __LINE__, (x))\n+#define ReallocOrDie(x,y)  sre_realloc(__FILE__, __LINE__, (x), (y))\n+\n+/****************************************************\n+ * Miscellaneous macros and defines\n+ ****************************************************/\n+\n+#define SQDCONST_E    2.71828182845904523536028747135\n+#define SQDCONST_PI   3.14159265358979323846264338328\n+\n+\t\t\t\t/* must declare swapfoo to use SWAP() */\n+#define SWAP(a,b) {swapfoo = b; b = a; a = swapfoo;}\n+#define ScalarsEqual(a,b) (fabs((a)-(b)) < 1e-7)\n+\n+#ifndef MIN\n+#define MIN(a,b)         (((a)<(b))?(a):(b))\n+#endif\n+#ifndef MAX\n+#define MAX(a,b)         (((a)>(b))?(a):(b))\n+#endif\n+\n+/* For convenience and (one hopes) clarity in boolean tests:\n+ */\n+#ifndef TRUE\n+#define TRUE 1\n+#endif\n+#ifndef FALSE \n+#define FALSE 0\n+#endif\n+\n+/* Somewhere, there is a universe in which Unix vendors comply\n+ * with the ANSI C standard. Unfortunately, it is not ours:\n+ */\n+#ifndef EXIT_SUCCESS\n+#define EXIT_SUCCESS 0\n+#endif\n+#ifndef EXIT_FAILURE\n+#define EXIT_FAILURE 1\n+#endif\n+\n+#include "sqfuncs.h"\t\t/* squid function declarations */\n+#include "sre_random.h"         /* random number generator and samplers */\n+#include "vectorops.h"          /* vector operations  */\n+#endif /* SQUIDH_INCLUDED */\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/squidcore.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/squidcore.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,52 @@
+/************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ ************************************************************/
+
+/* squidcore.c
+ * SRE, Sun Jun 20 17:19:04 1999 [Graeme's kitchen]
+ * 
+ * Core functions for SQUID library.
+ * RCS $Id: squidcore.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: squidcore.c,v 1.1 1999/07/15 22:24:41 eddy Exp)
+ */
+
+#include <stdio.h>
+#include "version.h"
+
+/* Function: Banner()
+ * Date:     SRE, Sun Jun 20 17:19:41 1999 [Graeme's kitchen]
+ *
+ * Purpose:  Print a package version and copyright banner.
+ *           Used by all the main()'s.
+ *           
+ *           Expects to be able to pick up defined macros:
+ *           macro         example
+ *           ------        --------------  
+ *           PACKAGE       "HMMER"
+ *           RELEASE       "2.0.42"
+ *           RELEASEDATE   "April 1 1999"
+ *           COPYRIGHT     "Copyright (C) 1992-1999 Washington University School of Medicine"
+ *           LICENSE       "HMMER is freely distributed under the GNU General Public License (GPL)."
+ *           
+ *           This gives us a general mechanism to update release information
+ *           without changing multiple points in the code; we can also override
+ *           SQUID release data with another package's release data (e.g.
+ *           HMMER) just by redefining macros.
+ * 
+ * Args:     fp     - where to print it
+ *           banner - one-line program description, e.g.:
+ *                    "foobar - make bars from foo with elan" 
+ * Returns:  (void)
+ */
+void
+Banner(FILE *fp, char *banner)
+{
+  fprintf(fp, "%s\n%s %s (%s)\n%s\n%s\n", banner, PACKAGE, RELEASE, RELEASEDATE, COPYRIGHT, LICENSE);
+  fprintf(fp, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");
+}
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sre_ctype.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sre_ctype.c Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,34 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* sre_ctype.c
+ * 
+ * For portability. Some systems have functions tolower, toupper
+ * as macros (for instance, MIPS M-2000 RISC/os!)
+ * 
+ * RCS $Id: sre_ctype.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: sre_ctype.c,v 1.3 2001/09/02 23:43:19 eddy Exp)
+ */
+
+#include <ctype.h>
+#include "squid.h"
+
+int
+sre_tolower(int c)
+{
+  if (isupper(c)) return tolower(c);
+  else return c;
+}
+
+int
+sre_toupper(int c)
+{
+  if (islower(c)) return toupper(c);
+  else return c;
+}
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sre_math.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sre_math.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,331 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* sre_math.c\n+ * \n+ * Portability for and extensions to C math library.\n+ * RCS $Id: sre_math.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: sre_math.c,v 1.12 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <math.h>\n+#include "squid.h"\n+\n+  \n+/* Function: Linefit()\n+ * \n+ * Purpose:  Given points x[0..N-1] and y[0..N-1], fit to\n+ *           a straight line y = a + bx.\n+ *           a, b, and the linear correlation coefficient r\n+ *           are filled in for return.\n+ *           \n+ * Args:     x     - x values of data\n+ *           y     - y values of data               \n+ *           N     - number of data points\n+ *           ret_a - RETURN: intercept\n+ *           ret_b - RETURN: slope\n+ *           ret_r - RETURN: correlation coefficient  \n+ *           \n+ * Return:   1 on success, 0 on failure.\n+ */\n+int          \n+Linefit(float *x, float *y, int N, float *ret_a, float *ret_b, float *ret_r) \n+{\t\t\t\t\n+  float xavg, yavg;\n+  float sxx, syy, sxy;\n+  int   i;\n+  \n+  /* Calculate averages, xavg and yavg\n+   */\n+  xavg = yavg = 0.0;\n+  for (i = 0; i < N; i++)\n+    {\n+      xavg += x[i];\n+      yavg += y[i];\n+    }\n+  xavg /= (float) N;\n+  yavg /= (float) N;\n+\n+  sxx = syy = sxy = 0.0;\n+  for (i = 0; i < N; i++)\n+    {\n+      sxx    += (x[i] - xavg) * (x[i] - xavg);\n+      syy    += (y[i] - yavg) * (y[i] - xavg);\n+      sxy    += (x[i] - xavg) * (y[i] - yavg);\n+    }\n+  *ret_b = sxy / sxx;\n+  *ret_a = yavg - xavg*(*ret_b);\n+  *ret_r = sxy / (sqrt(sxx) * sqrt(syy));\n+  return 1;\n+}\n+\n+\n+/* Function: WeightedLinefit()\n+ * \n+ * Purpose:  Given points x[0..N-1] and y[0..N-1] with\n+ *           variances (measurement errors) var[0..N-1],  \n+ *           fit to a straight line y = mx + b.\n+ *           \n+ * Method:   Algorithm from Numerical Recipes in C, [Press88].\n+ *           \n+ * Return:   (void)\n+ *           ret_m contains slope; ret_b contains intercept \n+ */                \n+void\n+WeightedLinefit(float *x, float *y, float *var, int N, float *ret_m, float *ret_b) \n+{\n+  int    i;\n+  double s;\n+  double sx, sy;\n+  double sxx, sxy;\n+  double delta;\n+  double m, b;\n+  \n+  s = sx = sy = sxx = sxy = 0.;\n+  for (i = 0; i < N; i++)\n+    {\n+      s   += 1./var[i];\n+      sx  += x[i] / var[i];\n+      sy  += y[i] / var[i];\n+      sxx += x[i] * x[i] / var[i];\n+      sxy += x[i] * y[i] / var[i];\n+    }\n+\n+  delta = s * sxx - (sx * sx);\n+  b = (sxx * sy - sx * sxy) / delta;\n+  m = (s * sxy - sx * sy) / delta;\n+\n+  *ret_m = m;\n+  *ret_b = b;\n+}\n+  \n+\n+/* Function: Gammln()\n+ *\n+ * Returns the natural log of the gamma function of x.\n+ * x is > 0.0.  \n+ *\n+ * Adapted from a public domain implementation in the\n+ * NCBI core math library. Thanks to John Spouge and\n+ * the NCBI. (According to the NCBI, that\'s Dr. John\n+ * "Gammas Galore" Spouge to you, pal.)\n+ */\n+double\n+Gammln(double x)\n+{\n+  int i;\n+  double xx, tx;\n+  double tmp, value;\n+  static double cof[11] = {\n+    4.694580336184385e+04,\n+    -1.560605207784446e+05,\n+    2.065049568014106e+05,\n+    -1.388934775095388e+05,\n+    5.031796415085709e+04,\n+    -9.601592329182778e+03,\n+    8.785855930895250e+02,\n+    -3.155153906098611e+01,\n+    2.908143421162229e-01,\n+    -2.319827630494973e-04,\n+    1.251639670050933e-10\n+  };\n+  \n+  /* Protect against x=0. We see this in Dirichlet code,\n+   * for terms alpha = 0. This is a severe hack but it is effective\n+   * and (we think?) safe. (due to GJM)\n+   */ \n+  if (x <= 0.0) return 999999.; \n+\n+  xx       = x - 1.0;\n+  tx = tmp = xx + '..b'ize.\n+ */\n+void\n+FMX2Multiply(float **A, float **B, float **C, int m, int p, int n)\n+{\n+  int i, j, k;\n+\n+  for (i = 0; i < m; i++)\n+    for (j = 0; j < n; j++)\n+      {\n+\tC[i][j] = 0.;\n+\tfor (k = 0; k < p; k++)\n+\t  C[i][j] += A[i][p] * B[p][j];\n+      }\n+}\n+\n+\n+/* Function: IncompleteGamma()\n+ * \n+ * Purpose:  Returns 1 - P(a,x) where:\n+ *           P(a,x) = \\frac{1}{\\Gamma(a)} \\int_{0}^{x} t^{a-1} e^{-t} dt\n+ *                  = \\frac{\\gamma(a,x)}{\\Gamma(a)}\n+ *                  = 1 - \\frac{\\Gamma(a,x)}{\\Gamma(a)}\n+ *                  \n+ *           Used in a chi-squared test: for a X^2 statistic x\n+ *           with v degrees of freedom, call:\n+ *                  p = IncompleteGamma(v/2., x/2.) \n+ *           to get the probability p that a chi-squared value\n+ *           greater than x could be obtained by chance even for\n+ *           a correct model. (i.e. p should be large, say \n+ *           0.95 or more).\n+ *           \n+ * Method:   Based on ideas from Numerical Recipes in C, Press et al.,\n+ *           Cambridge University Press, 1988. \n+ *           \n+ * Args:     a  - for instance, degrees of freedom / 2     [a > 0]\n+ *           x  - for instance, chi-squared statistic / 2  [x >= 0] \n+ *           \n+ * Return:   1 - P(a,x).\n+ */          \n+double\n+IncompleteGamma(double a, double x)\n+{\n+  int iter;\t\t\t/* iteration counter */\n+\n+  if (a <= 0.) Die("IncompleteGamma(): a must be > 0");\n+  if (x <  0.) Die("IncompleteGamma(): x must be >= 0");\n+\n+  /* For x > a + 1 the following gives rapid convergence;\n+   * calculate 1 - P(a,x) = \\frac{\\Gamma(a,x)}{\\Gamma(a)}:\n+   *     use a continued fraction development for \\Gamma(a,x).\n+   */\n+  if (x > a+1) \n+    {\n+      double oldp;\t\t/* previous value of p    */\n+      double nu0, nu1;\t\t/* numerators for continued fraction calc   */\n+      double de0, de1;\t\t/* denominators for continued fraction calc */\n+\n+      nu0 = 0.;\t\t\t/* A_0 = 0       */\n+      de0 = 1.;\t\t\t/* B_0 = 1       */\n+      nu1 = 1.;\t\t\t/* A_1 = 1       */\n+      de1 = x;\t\t\t/* B_1 = x       */\n+\n+      oldp = nu1;\n+      for (iter = 1; iter < 100; iter++)\n+\t{\n+\t  /* Continued fraction development:\n+\t   * set A_j = b_j A_j-1 + a_j A_j-2\n+\t   *     B_j = b_j B_j-1 + a_j B_j-2\n+           * We start with A_2, B_2.\n+\t   */\n+\t\t\t\t/* j = even: a_j = iter-a, b_j = 1 */\n+\t\t\t\t/* A,B_j-2 are in nu0, de0; A,B_j-1 are in nu1,de1 */\n+\t  nu0 = nu1 + ((double)iter - a) * nu0;\n+\t  de0 = de1 + ((double)iter - a) * de0;\n+\n+\t\t\t\t/* j = odd: a_j = iter, b_j = x */\n+\t\t\t\t/* A,B_j-2 are in nu1, de1; A,B_j-1 in nu0,de0 */\n+\t  nu1 = x * nu0 + (double) iter * nu1;\n+\t  de1 = x * de0 + (double) iter * de1;\n+\n+\t\t\t\t/* rescale */\n+\t  if (de1 != 0.) \n+\t    { \n+\t      nu0 /= de1; \n+\t      de0 /= de1;\n+\t      nu1 /= de1;\n+\t      de1 =  1.;\n+\t    }\n+\t\t\t\t/* check for convergence */\n+\t  if (fabs((nu1-oldp)/nu1) < 1.e-7)\n+\t    return nu1 * exp(a * log(x) - x - Gammln(a));\n+\n+\t  oldp = nu1;\n+\t}\n+      Die("IncompleteGamma(): failed to converge using continued fraction approx");\n+    }\n+  else /* x <= a+1 */\n+    {\n+      double p;\t\t\t/* current sum               */\n+      double val;\t\t/* current value used in sum */\n+\n+      /* For x <= a+1 we use a convergent series instead:\n+       *   P(a,x) = \\frac{\\gamma(a,x)}{\\Gamma(a)},\n+       * where\n+       *   \\gamma(a,x) = e^{-x}x^a \\sum_{n=0}{\\infty} \\frac{\\Gamma{a}}{\\Gamma{a+1+n}} x^n\n+       * which looks appalling but the sum is in fact rearrangeable to\n+       * a simple series without the \\Gamma functions:\n+       *   = \\frac{1}{a} + \\frac{x}{a(a+1)} + \\frac{x^2}{a(a+1)(a+2)} ...\n+       * and it\'s obvious that this should converge nicely for x <= a+1.\n+       */\n+      \n+      p = val = 1. / a;\n+      for (iter = 1; iter < 10000; iter++)\n+\t{\n+\t  val *= x / (a+(double)iter);\n+\t  p   += val;\n+\t  \n+\t  if (fabs(val/p) < 1.e-7)\n+\t    return 1. - p * exp(a * log(x) - x - Gammln(a));\n+\t}\n+      Die("IncompleteGamma(): failed to converge using series approx");\n+    }\n+  /*NOTREACHED*/\n+  return 0.;\n+}\n+  \n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sre_random.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sre_random.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,313 @@\n+/* sre_random.c\n+ * \n+ * Portable random number generator, and sampling routines.\n+ *\n+ * SRE, Tue Oct  1 15:24:11 2002 [St. Louis]\n+ * CVS $Id: sre_random.c,v 1.1 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <math.h>\n+#include "sre_random.h"\n+\n+static int sre_randseed = 42;\t/* default seed for sre_random()   */\n+\n+/* Function: sre_random()\n+ * \n+ * Purpose:  Return a uniform deviate x, 0.0 <= x < 1.0.\n+ * \n+ *           sre_randseed is a static variable, set\n+ *           by sre_srandom(). When it is non-zero, \n+ *           we re-seed.\n+ *           \n+ *           Implements L\'Ecuyer\'s algorithm for combining output\n+ *           of two linear congruential generators, plus a Bays-Durham\n+ *           shuffle. This is essentially ran2() from Numerical Recipes,\n+ *           sans their nonhelpful Rand/McNally-esque code obfuscation.\n+ *           \n+ *           Overflow errors are avoided by Schrage\'s algorithm:\n+ *               az % m = a(z%q) - r(z/q) (+m if <0)\n+ *           where q=m/a, r=m%a\n+ *\n+ *           Requires that long int\'s have at least 32 bits.\n+ *           This function uses statics and is NOT THREADSAFE.\n+ *           \n+ * Reference: Press et al. Numerical Recipes in C, 1992. \n+ *\n+ * Reliable and portable, but slow. Benchmarks on wrasse,\n+ * using Linux gcc and Linux glibc rand() (see randspeed, in Testsuite):\n+ *     sre_random():    0.5 usec/call\n+ *     rand():          0.2 usec/call\n+ */\n+double\n+sre_random(void)\n+{\n+  static long  rnd1;\t\t/* random number from LCG1 */\n+  static long  rnd2;            /* random number from LCG2 */\n+  static long  rnd;             /* random number we return */\n+  static long  tbl[64];\t\t/* table for Bays/Durham shuffle */\n+  long x,y;\n+  int i;\n+\n+  /* Magic numbers a1,m1, a2,m2 from L\'Ecuyer, for 2 LCGs.\n+   * q,r derive from them (q=m/a, r=m%a) and are needed for Schrage\'s algorithm.\n+   */\n+  long a1 = 40014;\t\t\n+  long m1 = 2147483563;\t\t\n+  long q1 = 53668;\n+  long r1 = 12211;\n+\n+  long a2 = 40692;\n+  long m2 = 2147483399;\n+  long q2 = 52774;\n+  long r2 = 3791;\n+\n+  if (sre_randseed > 0) \n+    {\n+      rnd1 = sre_randseed;\n+      rnd2 = sre_randseed;\n+\t\t\t\t/* Fill the table for Bays/Durham */\n+      for (i = 0; i < 64; i++) {\n+\tx    = a1*(rnd1%q1);   /* LCG1 in action... */\n+\ty    = r1*(rnd1/q1);\n+\trnd1 = x-y;\n+\tif (rnd1 < 0) rnd1 += m1;\n+\n+\tx    = a2*(rnd2%q2);   /* LCG2 in action... */\n+\ty    = r2*(rnd2/q2);\n+\trnd2 = x-y;\n+\tif (rnd2 < 0) rnd2 += m2;\n+\n+\ttbl[i] = rnd1-rnd2;\n+\tif (tbl[i] < 0) tbl[i] += m1;\n+      }\n+      sre_randseed = 0;\t\t/* drop the flag. */\n+    }/* end of initialization*/\n+\n+\n+  x    = a1*(rnd1%q1);   /* LCG1 in action... */\n+  y    = r1*(rnd1/q1);\n+  rnd1 = x-y;\n+  if (rnd1 < 0) rnd1 += m1;\n+\n+  x    = a2*(rnd2%q2);   /* LCG2 in action... */\n+  y    = r2*(rnd2/q2);\n+  rnd2 = x-y;\n+  if (rnd2 < 0) rnd2 += m2;\n+\n+   \t\t\t/* Choose our random number from the table... */\n+  i   = (int) (((double) rnd / (double) m1) * 64.);\n+  rnd = tbl[i];\n+\t\t\t/* and replace with a new number by L\'Ecuyer. */\n+  tbl[i] = rnd1-rnd2;\n+  if (tbl[i] < 0) tbl[i] += m1;\n+\n+  return ((double) rnd / (double) m1);  \n+}\n+\n+/* Function: sre_srandom()\n+ * \n+ * Purpose:  Initialize with a random seed. Seed must be\n+ *           >= 0 to work; we silently enforce this.\n+ */\n+void\n+sre_srandom(int seed)\n+{\n+  if (seed < 0)  seed = -1 * seed;\n+  if (seed == 0) seed = 42;\n+  sre_randseed = seed;\n+}\n+\n+/* Function: sre_random_positive()\n+ * Date:     SRE, Wed Apr 17 13:34:32 2002 [St. Louis]\n+ *\n+ * Purpose:  Assure 0 < x < 1 (positive uniform deviate)\n+ */\n+double\n+sre_random_positive(void)\n+{\n+  double x;\n+  do { x = sre_random(); } while (x == 0.0);\n+  return x;\n+}\n+\n+/* Function: ExponentialRandom()\n+ * Date:     SRE, Mon Sep  6 21:24:29 1999 [St. Louis]\n+ *\n+ * Purpose:  Pick an exponentially distributed random variable\n+ *           0 > x >= infinity\n+ *           \n+ * Args:     (void)\n+ *\n+ * Returns:  x\n+ */\n+double\n+E'..b'tion", Math. Comput. 27:927-937 (1973).\n+ *\n+ * Impenetrability of the code is to be blamed on its FORTRAN/f2c lineage.\n+ * \n+ */\n+double\n+Gaussrandom(double mean, double stddev)\n+{\n+  static double a[32] = {\n+    0.0,3.917609E-2,7.841241E-2,0.11777,0.1573107,0.1970991,0.2372021,0.2776904,    0.3186394,0.36013,0.4022501,0.4450965,0.4887764,0.5334097,0.5791322,\n+    0.626099,0.6744898,0.7245144,0.7764218,0.8305109,0.8871466,0.9467818,\n+    1.00999,1.077516,1.150349,1.229859,1.318011,1.417797,1.534121,1.67594,\n+    1.862732,2.153875\n+  };\n+  static double d[31] = {\n+    0.0,0.0,0.0,0.0,0.0,0.2636843,0.2425085,0.2255674,0.2116342,0.1999243,\n+    0.1899108,0.1812252,0.1736014,0.1668419,0.1607967,0.1553497,0.1504094,\n+    0.1459026,0.14177,0.1379632,0.1344418,0.1311722,0.128126,0.1252791,\n+    0.1226109,0.1201036,0.1177417,0.1155119,0.1134023,0.1114027,0.1095039\n+  };\n+  static double t[31] = {\n+    7.673828E-4,2.30687E-3,3.860618E-3,5.438454E-3,7.0507E-3,8.708396E-3,\n+    1.042357E-2,1.220953E-2,1.408125E-2,1.605579E-2,1.81529E-2,2.039573E-2,\n+    2.281177E-2,2.543407E-2,2.830296E-2,3.146822E-2,3.499233E-2,3.895483E-2,\n+    4.345878E-2,4.864035E-2,5.468334E-2,6.184222E-2,7.047983E-2,8.113195E-2,\n+    9.462444E-2,0.1123001,0.136498,0.1716886,0.2276241,0.330498,0.5847031\n+  };\n+  static double h[31] = {\n+    3.920617E-2,3.932705E-2,3.951E-2,3.975703E-2,4.007093E-2,4.045533E-2,\n+    4.091481E-2,4.145507E-2,4.208311E-2,4.280748E-2,4.363863E-2,4.458932E-2,\n+    4.567523E-2,4.691571E-2,4.833487E-2,4.996298E-2,5.183859E-2,5.401138E-2,\n+    5.654656E-2,5.95313E-2,6.308489E-2,6.737503E-2,7.264544E-2,7.926471E-2,\n+    8.781922E-2,9.930398E-2,0.11556,0.1404344,0.1836142,0.2790016,0.7010474\n+  };\n+  static long i;\n+  static double snorm,u,s,ustar,aa,w,y,tt;\n+\n+  u = sre_random();\n+  s = 0.0;\n+  if(u > 0.5) s = 1.0;\n+  u += (u-s);\n+  u = 32.0*u;\n+  i = (long) (u);\n+  if(i == 32) i = 31;\n+  if(i == 0) goto S100;\n+  /*\n+   * START CENTER\n+   */\n+  ustar = u-(double)i;\n+  aa = *(a+i-1);\n+S40:\n+  if(ustar <= *(t+i-1)) goto S60;\n+  w = (ustar-*(t+i-1))**(h+i-1);\n+S50:\n+  /*\n+   * EXIT   (BOTH CASES)\n+   */\n+  y = aa+w;\n+  snorm = y;\n+  if(s == 1.0) snorm = -y;\n+  return (stddev*snorm + mean);\n+S60:\n+  /*\n+   * CENTER CONTINUED\n+   */\n+  u = sre_random();\n+  w = u*(*(a+i)-aa);\n+  tt = (0.5*w+aa)*w;\n+  goto S80;\n+S70:\n+  tt = u;\n+  ustar = sre_random();\n+S80:\n+  if(ustar > tt) goto S50;\n+  u = sre_random();\n+  if(ustar >= u) goto S70;\n+  ustar = sre_random();\n+  goto S40;\n+S100:\n+  /*\n+   * START TAIL\n+   */\n+  i = 6;\n+  aa = *(a+31);\n+  goto S120;\n+S110:\n+  aa += *(d+i-1);\n+  i += 1;\n+S120:\n+  u += u;\n+  if(u < 1.0) goto S110;\n+  u -= 1.0;\n+S140:\n+  w = u**(d+i-1);\n+  tt = (0.5*w+aa)*w;\n+  goto S160;\n+S150:\n+  tt = u;\n+S160:\n+  ustar = sre_random();\n+  if(ustar > tt) goto S50;\n+  u = sre_random();\n+  if(ustar >= u) goto S150;\n+  u = sre_random();\n+  goto S140;\n+}\n+\n+  \n+/* Functions: DChoose(), FChoose()\n+ *\n+ * Purpose:   Make a random choice from a normalized distribution.\n+ *            DChoose() is for double-precision vectors;\n+ *            FChoose() is for single-precision float vectors.\n+ *            Returns the number of the choice.\n+ */\n+int\n+DChoose(double *p, int N)\n+{\n+  double roll;                  /* random fraction */\n+  double sum;                   /* integrated prob */\n+  int    i;                     /* counter over the probs */\n+\n+  roll    = sre_random();\n+  sum     = 0.0;\n+  for (i = 0; i < N; i++)\n+    {\n+      sum += p[i];\n+      if (roll < sum) return i;\n+    }\n+  return (int) (sre_random() * N);         /* bulletproof */\n+}\n+int\n+FChoose(float *p, int N)\n+{\n+  float roll;                   /* random fraction */\n+  float sum;\t\t\t/* integrated prob */\n+  int   i;                      /* counter over the probs */\n+\n+  roll    = sre_random();\n+  sum     = 0.0;\n+  for (i = 0; i < N; i++)\n+    {\n+      sum += p[i];\n+      if (roll < sum) return i;\n+    }\n+  return (int) (sre_random() * N);           /* bulletproof */\n+}\n+\n+  \n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sre_random.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sre_random.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,18 @@
+/* sre_random.h
+ * Header file for sre_random.c
+ *
+ * SRE, Tue Oct  1 15:24:29 2002
+ * CVS $Id: sre_random.h,v 1.1 2002/10/09 14:26:09 eddy Exp)
+ */
+
+extern double sre_random(void);
+extern void   sre_srandom(int seed);
+extern double sre_random_positive(void);
+extern double ExponentialRandom(void);
+extern double Gaussrandom(double mean, double stddev);
+extern int    DChoose(double *p, int N);
+extern int    FChoose(float *p, int N);
+
+#define CHOOSE(a)   ((int) (sre_random() * (a)))
+
+  
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/sre_string.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/sre_string.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,523 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* sre_string.c\n+ * \n+ * my library of extra string functions. Some for portability\n+ * across UNIXes\n+ *\n+ * RCS $Id: sre_string.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: sre_string.c,v 1.11 2001/06/07 16:59:37 eddy Exp)\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <stdarg.h>\n+#include <ctype.h>\n+#include "squid.h"\n+\n+/* Function: Strdup()\n+ * \n+ * Purpose:  Implementation of the common (but non-ANSI) function\n+ *           strdup(). Robust against being passed a NULL pointer.\n+ *           \n+ */\n+char *\n+Strdup(char *s)\n+{\n+  char *new;\n+  if (s == NULL) return NULL;\n+  if ((new = (char *) malloc (strlen(s) +1)) == NULL) return NULL;\n+  strcpy(new, s);\n+  return new;\n+}\n+\n+/* Function: StringChop()\n+ * Date:     SRE, Wed Oct 29 12:10:02 1997 [TWA 721]\n+ * \n+ * Purpose:  Chop trailing whitespace off of a string.\n+ */\n+void\n+StringChop(char *s)\n+{\n+  int   i;\n+\n+  i = strlen(s) - 1;\t\t         /* set i at last char in string     */\n+  while (i >= 0 && isspace((int) s[i])) i--;   /* i now at last non-whitespace char, or -1 */\n+  s[i+1] = \'\\0\';\n+}\n+\n+int\n+Strinsert(char  *s1,            /* string to insert a char into  */\n+\t  char   c,\t\t/* char to insert                */\n+\t  int    pos)\t\t/* position in s1 to insert c at */\n+{\n+  char    oldc;\n+  char   *s;\n+\n+  for (s = s1 + pos; c; s++)\n+    {\n+\t\t\t\t/* swap current char for inserted one */\n+      oldc = *s;\t\t/* pick up current */\n+      *s   = c;   \t\t/* put down inserted one    */\n+      c    = oldc;\t\t/* old becomes next to insert */\n+    }\n+  *s = \'\\0\';\n+\n+  return 1;\n+}\n+\n+\n+int\n+Strdelete(char *s1,             /* string to delete a char from       */\n+\t  int   pos)\t\t/* position of char to delete 0..n-1  */\n+{\n+  char *s;                      \n+\n+  for (s = s1 + pos; *s; s++)\n+    *s = *(s + 1);\n+\n+  return 1;\n+}\n+\n+void\n+s2lower(char *s)\n+{\n+  for (; *s != \'\\0\'; s++)\n+    *s = sre_tolower((int) *s);\n+}\n+\n+void\n+s2upper(char *s)\n+{\n+  for (; *s != \'\\0\'; s++)\n+    *s = sre_toupper((int) *s);\n+}\n+\n+\n+void *\n+sre_malloc(char *file, int line, size_t size)\n+{\n+  void *ptr;\n+\n+  SQD_DPRINTF3(("MALLOC: %d bytes (file %s line %d)\\n", size, file, line));\n+  if ((ptr = malloc (size)) == NULL)\n+    Die("malloc of %ld bytes failed: file %s line %d", size, file, line);\n+  return ptr;\n+}\n+\n+void *\n+sre_realloc(char *file, int line, void *p, size_t size)\n+{\n+  void *ptr;\n+\n+  if ((ptr = realloc(p, size)) == NULL)\n+    Die("realloc of %ld bytes failed: file %s line %d", size, file, line);\n+  return ptr;\n+}\n+\n+\n+\n+/* Function: Free2DArray(), Free3DArray()\n+ * Date:     SRE, Tue Jun  1 14:47:14 1999 [St. Louis]\n+ *\n+ * Purpose:  Convenience functions for free\'ing 2D\n+ *           and 3D pointer arrays. Tolerates any of the\n+ *           pointers being NULL, to allow "sparse" \n+ *           arrays.\n+ *\n+ * Args:     p     - array to be freed\n+ *           dim1  - n for first dimension\n+ *           dim2  - n for second dimension\n+ *\n+ *           e.g. a 2d array is indexed p[0..dim1-1][]\n+ *                a 3D array is indexed p[0..dim1-1][0..dim2-1][]\n+ *           \n+ * Returns:  void\n+ * \n+ * Diagnostics: (void)\n+ *              "never fails"\n+ */\n+void\n+Free2DArray(void **p, int dim1)\n+{\n+  int i;\n+  \n+  if (p != NULL) {\n+    for (i = 0; i < dim1; i++)\n+      if (p[i] != NULL) free(p[i]);\n+    free(p);\n+  }\n+}\n+void\n+Free3DArray(void ***p, int dim1, int dim2)\n+{\n+  int i, j;\n+\n+  if (p != NULL) {\n+    for (i = 0; i < dim1; i++)\n+      if (p[i] != NULL) {\n+\tfor (j = 0; j < dim2; j++)\n+'..b'ons:\n+ *           *s can\'t be a constant string, since we write to it.\n+ *                      \n+ * Example:  \n+ *           char *tok;\n+ *           int   len;\n+ *           char *s;             \n+ *           char  buf[50] = "This is  a sentence.";\n+ *           \n+ *           s = buf;  \n+ *           tok = sre_strtok(&s, " ", &len);\n+ *                tok is "This"; s is "is  a sentence."; len is 4.\n+ *           tok = sre_strtok(&s, " ", &len);\n+ *                tok is "is"; s is " a sentence."; len is 2.\n+ *           tok = sre_strtok(&s, " ", &len);\n+ *                tok is "a"; s is "sentence."; len is 1.\n+ *           tok = sre_strtok(&s, " ", &len);\n+ *                tok is "sentence."; s is "\\0"; len is 9.\n+ *           tok = sre_strtok(&s, " ", &len);\n+ *                tok is NULL; s is "\\0", len is undefined.\n+ *       \n+ * Args:     s     - a tmp, modifiable ptr to string\n+ *           delim - characters that delimits tokens\n+ *           len   - RETURN: length of token; pass NULL if not wanted\n+ *\n+ * Returns:  ptr to next token, or NULL if there aren\'t any.\n+ */\n+char *\n+sre_strtok(char **s, char *delim, int *len)\n+{\n+  char *begin, *end;\n+  int   n;\n+\n+  begin = *s;\n+  begin += strspn(begin, delim);\n+  if (! *begin) return NULL;\n+\n+  n = strcspn(begin, delim);\n+  end  = begin + n;\n+  if (*end == \'\\0\') { *s = end;}\n+  else {\n+    *end = \'\\0\';\n+    *s   = end+1;\n+  }\n+\n+  if (len != NULL) *len = n;\n+  return begin;\n+}\n+\n+\n+\n+/* Function: sre_strdup()\n+ * Date:     SRE, Wed May 19 17:57:28 1999 [St. Louis]\n+ *\n+ * Purpose:  A version of the common but non-ANSI strdup()\n+ *           function. Can pass len, if known, to save a\n+ *           strlen() call.\n+ *\n+ * Args:     s  - string to duplicate\n+ *           n  - length of string, if known; -1 if unknown.\n+ *                \n+ * Returns:  allocated copy of string.\n+ *           NULL on failure.\n+ */\n+char *\n+sre_strdup(char *s, int n)\n+{\n+  char *new;\n+\n+  if (s == NULL) return NULL;\n+  if (n < 0) n = strlen(s);\n+  new = MallocOrDie (sizeof(char) * (n+1));\n+  strcpy(new, s);\n+  return new;\n+}\n+\n+\n+/* Function: sre_strncpy()\n+ * Date:     SRE, Tue Jun 22 10:10:46 1999 [Sanger Centre]\n+ *\n+ * Purpose:  a strncpy() that makes sure it adds a trailing \\0.\n+ *\n+ * Args:     s1   - string to copy to (allocated n+1 or larger)\n+ *           s2   - string to copy from\n+ *           n    - number of chars to copy \n+ *\n+ * Returns:  s1. \n+ *           Done only for consistency with strncpy(). Not clear\n+ *           why it\'s useful for a strncpy() to return s1.\n+ */\n+char *\n+sre_strncpy(char *s1, char *s2, int n)\n+{\n+  strncpy(s1,s2,n);\n+  s1[n] = \'\\0\';\n+  return s1;\n+}\n+\n+/* Function: IsBlankline()\n+ * Date:     SRE, Fri Jun 18 14:36:08 1999 [St. Louis]\n+ *\n+ * Purpose:  Returns TRUE if string consists solely of whitespace.\n+ *\n+ * Args:     s   - string to check\n+ */\n+int\n+IsBlankline(char *s)\n+{\n+  for (; *s != \'\\0\'; s++)\n+    if (! isspace(*s)) return FALSE;\n+  return TRUE;\n+}\n+\n+\n+\n+#ifdef CUBS_WIN\n+/* A timing test for sre_strcat()\n+ * cc -O2 -g sre_string.c sre_ctype.c sqerror.c sre_math.c hsregex.c -lm \n+ * 15.200u - 5.360u = 9.84u if sre_strcat() with no length info passed\n+ * 13.660u - 5.360u = 8.30u if strcat(), with a single malloc().\n+ * 11.370u - 5.360u = 6.01u if sre_strcat() with length info passed.\n+ */\n+int main(void)\n+{\n+  float p[4] = {0.25, 0.25, 0.25, 0.25};\n+  int   buflen;\n+  int   len;\n+  int   nappends;\n+  int   nstrings;\n+  char *s1 = NULL;\n+  char *s2;\n+  int   i;\n+\n+  nappends = 100;\n+  nstrings = 1000;\n+  while (nstrings--)\n+    {\n+      /* s1 = malloc(sizeof(char) * (255*nappends+1));\n+\t s1[0] = \'\\0\';\n+      */\n+\n+      s1 = NULL;\n+      len = 0;\n+      for (i = 0; i < nappends; i++)\n+\t{\n+\t  buflen = CHOOSE(255) + 1;\n+\t  s2 = RandomSequence("ACGT", p, 4, buflen);\n+      \n+\t  /* strcat(s1,s2); */\n+\t  if ((len = sre_strcat(&s1, len, s2, buflen)) < 0) exit(1); \n+\t  free(s2);\n+\t}\n+      free(s1); \n+    }\n+  exit(0);\n+}\n+#endif /*CUBS_WIN*/\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/ssi.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/ssi.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,1537 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <sys/stat.h>\n+#include <sys/types.h>\n+#include <unistd.h>\n+#include "squid.h"\n+#include "ssi.h"\n+#ifdef CLUSTALO\n+#include <limits.h>\n+#endif\n+\n+static sqd_uint32 v20magic = 0xf3f3e9b1; /* SSI 1.0: "ssi1" + 0x80808080 */\n+static sqd_uint32 v20swap  = 0xb1e9f3f3; /* byteswapped */\n+\n+static int read_i16(FILE *fp, sqd_uint16 *ret_result);\n+static int read_i32(FILE *fp, sqd_uint32 *ret_result);\n+static int read_i64(FILE *fp, sqd_uint64 *ret_result);\n+static int read_offset(FILE *fp, char mode, SSIOFFSET *ret_offset);\n+static int write_i16(FILE *fp, sqd_uint16 n);\n+static int write_i32(FILE *fp, sqd_uint32 n);\n+static int write_i64(FILE *fp, sqd_uint64 n);\n+static int write_offset(FILE *fp, SSIOFFSET *offset);\n+static int binary_search(SSIFILE *sfp, char *key, int klen, SSIOFFSET *base, \n+\t\t\t sqd_uint32 recsize, sqd_uint32 maxidx);\n+static int indexfile_position(SSIFILE *sfp, SSIOFFSET *base, sqd_uint32 len,\n+\t\t\t      sqd_uint32 n);\n+static void clear_ssifile(SSIFILE *sfp);\n+static sqd_uint64 current_index_size(SSIINDEX *g);\n+static int        activate_external_sort(SSIINDEX *g);\n+static int        load_indexfile(SSIFILE *sfp);\n+static int        parse_pkey_info(char *buf, char mode, struct ssipkey_s *pkey);\n+static int        parse_skey_info(char *buf, struct ssiskey_s *skey);\n+\n+/* Function: SSIOpen()\n+ * Date:     SRE, Sun Dec 31 12:40:03 2000 [St. Louis]\n+ *\n+ * Purpose:  Opens the SSI index file {filename} and returns\n+ *           a SSIFILE * stream thru {ret_sfp}.\n+ *           The caller must eventually close this stream using\n+ *           SSIClose(). More than one index file can be open\n+ *           at once.\n+ *\n+ * Args:     filename - full path to a SSI index file\n+ *\n+ * Returns:  Returns 0 on success, nonzero on failure.\n+ */\n+int\n+SSIOpen(char *filename, SSIFILE **ret_sfp)\n+{\n+  SSIFILE  *sfp = NULL;\n+  int       status;\n+  if ((sfp = malloc(sizeof(SSIFILE))) == NULL)   return SSI_ERR_MALLOC;\n+  if ((sfp->fp = fopen(filename, "rb")) == NULL) {\n+    free(sfp);\n+    return SSI_ERR_NOFILE;    \n+  }\n+  status = load_indexfile(sfp);\n+  *ret_sfp = sfp;\n+  return status;\n+}\n+/* load_indexfile(): given a SSIFILE structure with an open and positioned \n+ *    stream (fp) -- but no other data loaded -- read the next SSIFILE\n+ *    in from disk. We use this routine without its SSIOpen() wrapper\n+ *    as part of the external mergesort when creating large indices.\n+ */\n+static int\n+load_indexfile(SSIFILE *sfp)\n+{\n+  sqd_uint32   magic;\n+  sqd_uint16   i;\t\t/* counter over files */\n+  int          status;\t\t/* overall return status if an error is thrown */\n+\n+  status = SSI_ERR_BADFORMAT; /* default: almost every kind of error is a bad format error */\n+\n+  sfp->filename   = NULL;\n+  sfp->fileformat = NULL;\n+  sfp->fileflags  = NULL;\n+  sfp->bpl        = NULL;\n+  sfp->rpl        = NULL;\n+  sfp->nfiles     = 0;          \n+  if (! read_i32(sfp->fp, &magic))               {status = SSI_ERR_BADMAGIC;  goto FAILURE; }\n+  if (magic != v20magic && magic != v20swap)     {status = SSI_ERR_BADMAGIC;  goto FAILURE; }\n+  if (! read_i32(sfp->fp, &(sfp->flags))) goto FAILURE; \n+\n+  /* If we have 64-bit offsets, make sure we can deal with them.\n+   */\n+#ifndef HAS_64BIT_FILE_OFFSETS  \n+  if ((sfp->flags & SSI_USE64_INDEX) ||\n+      (sfp->flags & SSI_USE64))\n+    { status = SSI_ERR_NO64BIT; goto FAILURE; }\n+#endif\n+\n+  sfp->imode = (sfp->flags & SSI_USE64_INDEX) ? SSI_OFFSET_I64 : SSI_OFFSET_I32;\n+  sfp->smode = (sfp->fla'..b'>skeys);       \n+  g->pkeys = NULL;\n+  g->skeys = NULL;\n+\n+  /* Turn control over to external accumulation mode.\n+   */\n+  g->external = TRUE;\n+  return 0;\n+}\n+\n+\n+/*****************************************************************\n+ * Debugging API\n+ *****************************************************************/\n+void\n+SSIForceExternalSort(SSIINDEX *g)\n+{\n+  if (activate_external_sort(g) != 0)\n+    Die("failed to turn external sorting on.");\n+}\n+\n+\n+/*****************************************************************\n+ * Test driving mode\n+ *****************************************************************/\n+#ifdef MUGGINS_LETS_ME_SLEEP \n+/* Minimally: \n+   cc -g -Wall -o shiva -DDEBUGLEVEL=1 -DMUGGINS_LETS_ME_SLEEP ssi.c sqerror.c sre_string.c types.c sre_ctype.c sre_math.c file.c -lm \n+*/\n+\n+int\n+main(int argc, char **argv)\n+{\n+  char      name[32], accession[32];\n+  SSIINDEX *ssi;\n+  int       mode;\n+  SSIOFFSET r_off, d_off;\n+  FILE     *ofp;\n+  int       i;\n+  int       fh;\t\t\t/* a file handle */\n+  int       status;\t\t/* return status from a SSI call */\n+  \n+  mode = SSI_OFFSET_I32;\n+  if ((ssi = SSICreateIndex(mode)) == NULL)\n+    Die("Failed to allocate SSI index");\n+\n+  /* Generate two FASTA files, tmp.0 and tmp.1, and index them.\n+   */\n+  if ((ofp = fopen("tmp.0", "w")) == NULL) \n+    Die("failed to open tmp.0");\n+  if ((status = SSIAddFileToIndex(ssi, "tmp.0", SQFILE_FASTA, &fh)) != 0)\n+    Die("SSIAddFileToIndex() failed: %s", SSIErrorString(status));\n+  for (i = 0; i < 10; i++) {\n+    if ((status = SSIGetFilePosition(ofp, mode, &r_off)) != 0)\n+      Die("SSIGetFilePosition() failed: %s", SSIErrorString(status));\n+    sprintf(name, "seq%d", i);\n+    sprintf(accession, "ac%d", i);\n+    fprintf(ofp, ">%s [%s] Description? we don\'t need no steenking description.\\n", \n+\t    name, accession);\n+    if ((status = SSIGetFilePosition(ofp, mode, &d_off)) != 0) \n+      Die("SSIGetFilePosition() failed: %s", SSIErrorString(status));\n+    fprintf(ofp, "AAAAAAAAAA\\n");\n+    fprintf(ofp, "CCCCCCCCCC\\n");\n+    fprintf(ofp, "GGGGGGGGGG\\n");\n+    fprintf(ofp, "TTTTTTTTTT\\n");\n+\n+    if ((status = SSIAddPrimaryKeyToIndex(ssi, name, fh, &r_off, &d_off, 40)) != 0)\n+      Die("SSIAddPrimaryKeyToIndex() failed: %s", SSIErrorString(status));\n+    if ((status = SSIAddSecondaryKeyToIndex(ssi, accession, name)) != 0)\n+      Die("SSIAddSecondaryKeyToIndex() failed: %s", SSIErrorString(status));\n+  }\n+  SSISetFileForSubseq(ssi, fh, 11, 10);\n+  fclose(ofp);\n+  \n+  if ((ofp = fopen("tmp.1", "w")) == NULL) \n+    Die("failed to open tmp.1");\n+  if ((status = SSIAddFileToIndex(ssi, "tmp.1", SQFILE_FASTA, &fh)) != 0)\n+    Die("SSIAddFileToIndex() failed: %s", SSIErrorString(status));\n+  for (i = 10; i < 20; i++) {\n+    if ((status = SSIGetFilePosition(ofp, mode, &r_off)) != 0)\n+      Die("SSIGetFilePosition() failed: %s", SSIErrorString(status));\n+    sprintf(name, "seq%d", i);\n+    sprintf(accession, "ac%d", i);\n+    fprintf(ofp, ">%s [%s] i/o, i/o, it\'s off to disk we go.\\n", \n+\t    name, accession);\n+    if ((status = SSIGetFilePosition(ofp, mode, &d_off)) != 0)\n+      Die("SSIGetFilePosition() failed: %s", SSIErrorString(status));\n+    fprintf(ofp, "AAAAAAAAAA 10\\n");\n+    fprintf(ofp, "CCCCCCCCCC 20\\n");\n+    fprintf(ofp, "GGGGGGGGGG 30\\n");\n+    fprintf(ofp, "TTTTTTTTTT 40\\n");\n+\n+    if ((status = SSIAddPrimaryKeyToIndex(ssi, name, fh, &r_off, &d_off, 40)) != 0)\n+      Die("SSIAddPrimaryKeyToIndex() failed: %s", SSIErrorString(status));\n+    if ((status = SSIAddSecondaryKeyToIndex(ssi, accession, name)) != 0)\n+      Die("SSIAddSecondaryKeyToIndex() failed: %s", SSIErrorString(status));\n+  }\n+  SSISetFileForSubseq(ssi, fh, 14, 10);\n+  fclose(ofp);\n+  \n+  /* Write the index to tmp.ssi\n+   */  \n+  if ((status = SSIWriteIndex("tmp.ssi", ssi)) != 0) \n+    Die("SSIWriteIndex() failed: %s", SSIErrorString(status));\n+  SSIFreeIndex(ssi);\n+\n+  /* Now reopen the index and run some tests.\n+   */\n+  exit(0);\n+}\n+\n+\n+#endif /* test driving code */\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/ssi.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/ssi.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,189 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+#ifndef SSIH_INCLUDED
+#define SSIH_INCLUDED
+
+/* ssi.h
+ * Database indexing (SSI format support)
+ * CVS $Id: ssi.h,v 1.7 2002/02/24 19:39:27 eddy Exp)
+ *
+ * See: ssi_format.tex in Docs/
+ */
+
+#include <stdio.h>
+#include "squid.h"
+
+/* Limits
+ */
+#define SSI_MAXFILES 32767   /* 2^15-1 */
+#define SSI_MAXKEYS  2147483647L  /* 2^31-1 */
+#define SSI_MAXRAM   200   /* allow 200MB indexes before external sort mode */
+
+/* typedef: SSIOFFSET
+ * Use the union to save space, since the two offset types are
+ * mutually exclusive, controlled by "mode"
+ */
+struct ssioffset_s {
+  char mode; /* GSI_OFFSET_I32, for example */
+  union {
+    sqd_uint32   i32;           /* an offset that fseek() can use         */
+    sqd_uint64   i64;           /* an offset that e.g. fseeko64() can use */
+  } off;
+};
+typedef struct ssioffset_s SSIOFFSET;
+#define SSI_OFFSET_I32    0
+#define SSI_OFFSET_I64    1
+
+/* Structure: SSIFILE
+ * xref:      SSI API documentation in ssi-format.tex
+ */ 
+struct ssifile_s {
+  FILE        *fp; /* open SSI index file                 */
+  sqd_uint32   flags; /* optional behavior flags             */
+  sqd_uint16   nfiles; /* number of files = 16 bit int        */
+  sqd_uint32   nprimary; /* number of primary keys              */
+  sqd_uint32   nsecondary; /* number of secondary keys            */
+  sqd_uint32   flen; /* length of filenames (inc '\0')      */
+  sqd_uint32   plen; /* length of primary keys (inc '\0')   */
+  sqd_uint32   slen; /* length of secondary keys (inc '\0') */
+  sqd_uint32   frecsize; /* # bytes in a file record            */
+  sqd_uint32   precsize; /* # bytes in a primary key record     */
+  sqd_uint32   srecsize; /* # bytes in a secondary key record   */
+  SSIOFFSET    foffset; /* disk offset, start of file records  */
+  SSIOFFSET    poffset; /* disk offset, start of pri key recs  */
+  SSIOFFSET    soffset; /* disk offset, start of sec key recs  */
+  
+  char imode; /* mode for index file offsets, 32 v. 64 bit    */
+  char smode; /* mode for sequence file offsets, 32 v. 64 bit */
+
+  /* File information:
+   */
+  char       **filename; /* list of file names [0..nfiles-1]    */
+  sqd_uint32  *fileformat; /* file formats                        */
+  sqd_uint32  *fileflags;       /* optional per-file behavior flags    */
+  sqd_uint32  *bpl;      /* bytes per line in file              */
+  sqd_uint32  *rpl;      /* residues per line in file           */
+};
+typedef struct ssifile_s SSIFILE;
+
+/* optional per-index behavior flags in SSIFILE structure's flags:
+ */
+#define SSI_USE64        1<<0 /* seq offsets are 64-bit        */
+#define SSI_USE64_INDEX  1<<1 /* index file offsets are 64-bit */
+
+/* optional per-file behavior flags in fileflags
+ */
+#define SSI_FAST_SUBSEQ  1<<0 /* can do subseq lookup in this file */
+
+/* Structure: SSIINDEX
+ * 
+ * Used when building up an index and writing it to disk
+ */
+struct ssipkey_s { /* Primary key data: */
+  char        *key;             /* key name          */
+  sqd_uint16   fnum; /* file number       */
+  SSIOFFSET    r_off; /* record offset     */
+  SSIOFFSET    d_off; /* data offset       */
+  sqd_uint32   len; /* sequence length   */
+};
+struct ssiskey_s { /* Secondary key data: */
+  char        *key;             /* secondary key name  */
+  char        *pkey;            /* primary key name    */ 
+};
+struct ssiindex_s {
+  int           smode; /* sequence mode: SSI_OFFSET_I32 or _I64 */
+  int           imode; /* index mode:    SSI_OFFSET_I32 or _I64 */
+  int           external; /* TRUE if pkeys and skeys are on disk   */
+  int           max_ram; /* maximum RAM in MB before switching to external */
+
+  char        **filenames;
+  sqd_uint32   *fileformat;
+  sqd_uint32   *bpl;
+  sqd_uint32   *rpl;
+  sqd_uint32    flen; /* length of longest filename, inc '\0' */
+  sqd_uint16    nfiles;
+  
+  struct ssipkey_s *pkeys;
+  sqd_uint32         plen; /* length of longest pkey, including '\0' */
+  sqd_uint32         nprimary;
+  char              *ptmpfile; /* name of tmp file, for external sort mode */
+  FILE              *ptmp; /* handle on open ptmpfile */
+
+  struct ssiskey_s *skeys;
+  sqd_uint32         slen; /* length of longest skey, including '\0' */
+  sqd_uint32         nsecondary;
+  char              *stmpfile; /* name of tmp file, for external sort mode */
+  FILE              *stmp; /* handle on open ptmpfile */
+};
+typedef struct ssiindex_s SSIINDEX;
+
+/* These control malloc and realloc chunk sizes in the index
+ * construction code.
+ */
+#define SSI_FILE_BLOCK    10
+#define SSI_KEY_BLOCK     100
+
+/* Error codes set by the API
+ */
+#define SSI_ERR_OK           0
+#define SSI_ERR_NODATA       1 /* no data? an fread() failed */
+#define SSI_ERR_NO_SUCH_KEY  2 /* that key's not in the index */
+#define SSI_ERR_MALLOC       3
+#define SSI_ERR_NOFILE       4 /* no such file? an fopen() failed */
+#define SSI_ERR_BADMAGIC     5 /* magic number mismatch in GSIOpen() */
+#define SSI_ERR_BADFORMAT    6 /* didn't read what I expected to fread() */
+#define SSI_ERR_NO64BIT      7 /* needed 64-bit support and didn't have it */
+#define SSI_ERR_SEEK_FAILED  8 /* an fseek() (or similar) failed */
+#define SSI_ERR_TELL_FAILED  9 /* an ftell() (or similar) failed */
+#define SSI_ERR_NO_SUBSEQS   10 /* fast subseq is disallowed */
+#define SSI_ERR_RANGE        11 /* subseq requested is out of range */
+#define SSI_ERR_BADARG       12 /* something wrong with a function argument */
+#define SSI_ERR_TOOMANY_FILES 13 /* ran out of range for files in an index */
+#define SSI_ERR_TOOMANY_KEYS  14 /* ran out of range for keys in an index */
+#define SSI_ERR_FWRITE        15
+#define SSI_ERR_EXTERNAL_SORT 16 /* external sort failed */
+
+/* The SSI file reading API:
+ */
+extern int  SSIOpen(char *filename, SSIFILE **ret_sfp);
+extern int  SSIGetOffsetByName(SSIFILE *sfp, char *key, int *ret_fh, 
+ SSIOFFSET *ret_offset);
+extern int  SSIGetOffsetByNumber(SSIFILE *sfp, int n, int *ret_fh, 
+   SSIOFFSET *ret_offset);
+extern int  SSIGetSubseqOffset(SSIFILE *sfp, char *key, int requested_start,
+ int *ret_fh, SSIOFFSET *record_offset,
+ SSIOFFSET *data_offset, int *ret_actual_start);
+extern int  SSISetFilePosition(FILE *fp, SSIOFFSET *offset);
+extern int  SSIFileInfo(SSIFILE *sfp, int fh, char **ret_filename, int *ret_format);
+extern void SSIClose(SSIFILE *sfp);
+
+/* The SSI index file writing API:
+ */
+extern int       SSIRecommendMode(char *file);
+extern SSIINDEX *SSICreateIndex(int mode);
+extern int       SSIGetFilePosition(FILE *fp, int mode, SSIOFFSET *ret_offset);
+extern int       SSIAddFileToIndex(SSIINDEX *g, char *filename, int fmt, int *ret_fh);
+extern int       SSISetFileForSubseq(SSIINDEX *g, int fh, int bpl, int rpl);
+extern int       SSIAddPrimaryKeyToIndex(SSIINDEX *g, char *key, int fh, 
+  SSIOFFSET *r_off, SSIOFFSET *d_off, 
+  int L);
+extern int       SSIAddSecondaryKeyToIndex(SSIINDEX *g, char *key, char *pkey);
+extern int       SSIWriteIndex(char *file, SSIINDEX *g);
+extern void      SSIFreeIndex(SSIINDEX *g);
+
+/* The SSI misc. functions API:
+ */
+extern char      *SSIErrorString(int n);
+
+/* The SSI debugging API:
+ */
+extern void       SSIForceExternalSort(SSIINDEX *g);
+
+#endif /*SSIH_INCLUDED*/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/stack.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/stack.c Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,102 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* stack.c
+ * SRE, Thu Mar  3 10:08:48 1994
+ * 
+ * Implementation of generic stack structures.
+ * RCS $Id: stack.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: stack.c,v 1.2 1998/10/09 18:07:16 eddy Exp)
+ */
+
+#include <stdlib.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/************************************************************
+ * intstack_s implementation.
+ * 
+ * Functions: InitIntStack() - returns ptr to new stack
+ *            PushIntStack() - (void)
+ *            PopIntStack()  - returns 1 on success, 0 if stack empty
+ *            FreeIntStack() - returns number of elements free'd, or 0 if 
+ *                             stack was empty.
+ *            
+ * Implementation of the pushdown stack for storing single
+ * integers.
+ *************************************************************/  
+struct intstack_s *
+InitIntStack(void)
+{
+  struct intstack_s *stack;
+
+  if ((stack = (struct intstack_s *) malloc (sizeof(struct intstack_s))) == NULL)
+    Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+  stack->nxt = NULL;
+  return stack;
+}
+void 
+PushIntStack(struct intstack_s *stack, int data)
+{
+  struct intstack_s *new;
+
+  if ((new = (struct intstack_s *) malloc (sizeof(struct intstack_s))) == NULL)
+    Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+  new->data = data;
+
+  new->nxt     = stack->nxt;
+  stack->nxt   = new;
+}
+
+int
+PopIntStack(struct intstack_s  *stack, int *ret_data)
+{
+  struct intstack_s *old;
+
+  if (stack->nxt == NULL) return 0;
+
+  old = stack->nxt;
+  stack->nxt = old->nxt;
+
+  *ret_data = old->data;
+  free(old); 
+  return 1;
+}
+
+void
+ReverseIntStack(struct intstack_s *stack)
+{
+  struct intstack_s *old;
+  struct intstack_s *new;
+
+  old        = stack->nxt;
+  stack->nxt = NULL;
+  while (old != NULL)
+    {
+      new        = old; /* remove one from top of old stack */
+      old        = old->nxt;
+      new->nxt   = stack->nxt;  /* push it onto new stack */
+      stack->nxt = new;
+    }
+}
+
+int
+FreeIntStack( struct intstack_s *stack )
+{
+  int data;
+  int count = 0;
+
+  while (PopIntStack(stack, &data))
+    count++;
+  free(stack);
+  return count;
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/stockholm.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/stockholm.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,627 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* stockholm.c\n+ * SRE, Fri May 28 15:46:41 1999\n+ * \n+ * Reading/writing of Stockholm format multiple sequence alignments.\n+ * \n+ * example of API:\n+ * \n+ * MSA     *msa;\n+ * FILE    *fp;        -- opened for write with fopen()\n+ * MSAFILE *afp;       -- opened for read with MSAFileOpen()\n+ *      \n+ * while ((msa = ReadStockholm(afp)) != NULL)\n+ *   {\n+ *      WriteStockholm(fp, msa);\n+ *      MSAFree(msa);\n+ *   }\n+ * \n+ * RCS $Id: stockholm.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: stockholm.c,v 1.7 2002/10/12 04:40:36 eddy Exp)\n+ */\n+#include <stdio.h>\n+#include <string.h>\n+#include "squid.h"\n+#include "msa.h"\n+\n+static int  parse_gf(MSA *msa, char *buf);\n+static int  parse_gs(MSA *msa, char *buf);\n+static int  parse_gc(MSA *msa, char *buf);\n+static int  parse_gr(MSA *msa, char *buf);\n+static int  parse_comment(MSA *msa, char *buf);\n+static int  parse_sequence(MSA *msa, char *buf);\n+static void actually_write_stockholm(FILE *fp, MSA *msa, int cpl);\n+\n+#ifdef TESTDRIVE_STOCKHOLM\n+/*****************************************************************\n+ * stockholm.c test driver: \n+ * cc -DTESTDRIVE_STOCKHOLM -g -O2 -Wall -o test stockholm.c msa.c gki.c sqerror.c sre_string.c file.c hsregex.c sre_math.c sre_ctype.c -lm \n+ * \n+ */\n+int\n+main(int argc, char **argv)\n+{\n+  MSAFILE *afp;\n+  MSA     *msa;\n+  char    *file;\n+  \n+  file = argv[1];\n+\n+  if ((afp = MSAFileOpen(file, MSAFILE_STOCKHOLM, NULL)) == NULL)\n+    Die("Couldn\'t open %s\\n", file);\n+\n+  while ((msa = ReadStockholm(afp)) != NULL)\n+    {\n+      WriteStockholm(stdout, msa);\n+      MSAFree(msa); \n+    }\n+  \n+  MSAFileClose(afp);\n+  exit(0);\n+}\n+/******************************************************************/\n+#endif /* testdriver */\n+\n+\n+/* Function: ReadStockholm()\n+ * Date:     SRE, Fri May 21 17:33:10 1999 [St. Louis]\n+ *\n+ * Purpose:  Parse the next alignment from an open Stockholm\n+ *           format alignment file. Return the alignment, or\n+ *           NULL if there are no more alignments in the file.\n+ *\n+ * Args:     afp  - open alignment file\n+ *\n+ * Returns:  MSA *   - an alignment object. \n+ *                     caller responsible for an MSAFree() \n+ *           NULL if no more alignments\n+ *\n+ * Diagnostics:\n+ *           Will Die() here with a (potentially) useful message\n+ *           if a parsing error occurs \n+ */\n+MSA *\n+ReadStockholm(MSAFILE *afp)\n+{\n+  MSA   *msa;\n+  char  *s;\n+  int    status;\n+\n+  if (feof(afp->f)) return NULL;\n+\n+  /* Initialize allocation of the MSA.\n+   */\n+  msa = MSAAlloc(10, 0);\n+\n+  /* Check the magic Stockholm header line.\n+   * We have to skip blank lines here, else we perceive\n+   * trailing blank lines in a file as a format error when\n+   * reading in multi-record mode.\n+   */\n+  do {\n+    if ((s = MSAFileGetLine(afp)) == NULL) {\n+      MSAFree(msa);\n+      return NULL;\n+    }\n+  } while (IsBlankline(s));\n+\n+  if (strncmp(s, "# STOCKHOLM 1.", 14) != 0)\n+    Die("\\\n+File %s doesn\'t appear to be in Stockholm format.\\n\\\n+Assuming there isn\'t some other problem with your file (it is an\\n\\\n+alignment file, right?), please either:\\n\\\n+  a) use the Babelfish format autotranslator option (-B, usually);\\n\\\n+  b) specify the file\'s format with the --informat option; or\\n\\\n+  a) reformat the alignment to Stockholm format.\\n", \n+\tafp->fname);\n+\n+  /* Read the alignment file one line at a time.\n+   */\n+  while ((s = MSAFileGetLine(afp)) != NULL) \n+    {\n+      while (*s == \' \' || *s == \'\\t\') s++;  /* skip leading whitespace */\n+\n+      if (*s == \'#\') {\n+'..b'L)) == NULL) return 0;\n+  while (*text && (*text == \' \' || *text == \'\\t\')) text++;\n+  \n+  /* GS usually follows another GS; guess lastidx+1\n+   */\n+  seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx+1);\n+  msa->lastidx = seqidx;\n+\n+  if (strcmp(featurename, "WT") == 0)\n+    {\n+      msa->wgt[seqidx]          = atof(text);\n+      msa->flags |= MSA_SET_WGT;\n+    }\n+\n+  else if (strcmp(featurename, "AC") == 0)\n+    MSASetSeqAccession(msa, seqidx, text);\n+\n+  else if (strcmp(featurename, "DE") == 0)\n+    MSASetSeqDescription(msa, seqidx, text);\n+\n+  else\t\t\t\t\n+    MSAAddGS(msa, featurename, seqidx, text);\n+\n+  return 1;\n+}\n+\n+/* Format of a GC line:\n+ *    #=GC <featurename> <text>\n+ */\n+static int \n+parse_gc(MSA *msa, char *buf)\n+{\n+  char *gc;\n+  char *featurename;\n+  char *text; \n+  char *s;\n+  int   len;\n+\n+  s = buf;\n+  if ((gc          = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((text        = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0;\n+  \n+  if (strcmp(featurename, "SS_cons") == 0)\n+    sre_strcat(&(msa->ss_cons), -1, text, len);\n+  else if (strcmp(featurename, "SA_cons") == 0)\n+    sre_strcat(&(msa->sa_cons), -1, text, len);\n+  else if (strcmp(featurename, "RF") == 0)\n+    sre_strcat(&(msa->rf), -1, text, len);\n+  else\n+    MSAAppendGC(msa, featurename, text);\n+\n+  return 1;\n+}\n+\n+/* Format of a GR line:\n+ *    #=GR <seqname> <featurename> <text>\n+ */\n+static int\n+parse_gr(MSA *msa, char *buf)\n+{\n+  char *gr;\n+  char *seqname;\n+  char *featurename;\n+  char *text;\n+  int   seqidx;\n+  int   len;\n+  int   j;\n+  char *s;\n+\n+  s = buf;\n+  if ((gr          = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((seqname     = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((text        = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0;\n+\n+  /* GR usually follows sequence it refers to; guess msa->lastidx */\n+  seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx);\n+  msa->lastidx = seqidx;\n+\n+  if (strcmp(featurename, "SS") == 0) \n+    {\n+      if (msa->ss == NULL)\n+\t{\n+\t  msa->ss    = MallocOrDie(sizeof(char *) * msa->nseqalloc);\n+\t  msa->sslen = MallocOrDie(sizeof(int)    * msa->nseqalloc);\n+\t  for (j = 0; j < msa->nseqalloc; j++)\n+\t    {\n+\t      msa->ss[j]    = NULL;\n+\t      msa->sslen[j] = 0;\n+\t    }\n+\t}\n+      msa->sslen[seqidx] = sre_strcat(&(msa->ss[seqidx]), msa->sslen[seqidx], text, len);\n+    }\n+  else if (strcmp(featurename, "SA") == 0)\n+    {\n+      if (msa->sa == NULL)\n+\t{\n+\t  msa->sa    = MallocOrDie(sizeof(char *) * msa->nseqalloc);\n+\t  msa->salen = MallocOrDie(sizeof(int)    * msa->nseqalloc);\n+\t  for (j = 0; j < msa->nseqalloc; j++) \n+\t    {\n+\t      msa->sa[j]    = NULL;\n+\t      msa->salen[j] = 0;\n+\t    }\n+\t}\n+      msa->salen[seqidx] = sre_strcat(&(msa->sa[seqidx]), msa->salen[seqidx], text, len);\n+    }\n+  else \n+    MSAAppendGR(msa, featurename, seqidx, text);\n+\n+  return 1;\n+}\n+\n+\n+/* comments are simply stored verbatim, not parsed\n+ */\n+static int\n+parse_comment(MSA *msa, char *buf)\n+{\n+  char *s;\n+  char *comment;\n+\n+  s = buf + 1;\t\t\t               /* skip leading \'#\' */\n+  if (*s == \'\\n\') { *s = \'\\0\'; comment = s; }  /* deal with blank comment */\n+  else if ((comment = sre_strtok(&s, "\\n", NULL)) == NULL) return 0;\n+  \n+  MSAAddComment(msa, comment);\n+  return 1;\n+}\n+\n+static int\n+parse_sequence(MSA *msa, char *buf)\n+{\n+  char *s;\n+  char *seqname;\n+  char *text;\n+  int   seqidx;\n+  int   len;\n+\n+  s = buf;\n+  if ((seqname     = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0;\n+  if ((text        = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0; \n+  \n+  /* seq usually follows another seq; guess msa->lastidx +1 */\n+  seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx+1);\n+  msa->lastidx = seqidx;\n+\n+  msa->sqlen[seqidx] = sre_strcat(&(msa->aseq[seqidx]), msa->sqlen[seqidx], text, len);\n+  return 1;\n+}\n+\n+\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/stockholm.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/stockholm.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,51 @@
+#ifndef STOCKHOLM_H_INCLUDED
+#define STOCKHOLM_H_INCLUDED
+
+#include "gki.h"
+
+typedef struct {
+  int   *linetype; /* e.g. STOCKHOLM_GF_LINE; always valid */
+  int   *featurecode; /* all markup codes: e.g. STOCKHOLM_GF_ID; 
+    nonmarkup: always set to STOCKHOLM_UNPARSED */
+  char **featurename; /* all unparsed markup codes: string, e.g. "ID";
+    all other lines: NULL */
+  int   *seqidx; /* all GS, GR, GC, sequence lines: which sequence;
+    other lines: 0 */
+  int   *len; /* all GR, GC, sequence lines: length of text field;
+    other lines: 0 */
+  char **text; /* all unparsed nonblank lines: rest of data
+    other lines: NULL */
+  int    nseqalloc; /* current nseqs allocated for in aseqs and ainfo */
+  int    nlines; /* number of lines in this skel */
+  int    nlinealloc; /* current # of lines allocated for in this skel */
+  int    overall_line; /* line # in file (important in files w/ >1 ali)*/
+} alifile_skeleton;
+
+#define STOCKHOLM_GF_LINE      0
+#define STOCKHOLM_GS_LINE      1 
+#define STOCKHOLM_GC_LINE      2
+#define STOCKHOLM_GR_LINE      3
+#define STOCKHOLM_SEQ_LINE     4
+#define STOCKHOLM_BLANK_LINE   5
+#define STOCKHOLM_COMMENT_LINE 6
+
+#define STOCKHOLM_UNPARSED  0
+#define STOCKHOLM_GF_ID     1
+#define STOCKHOLM_GF_AC     2
+#define STOCKHOLM_GF_DE     3
+#define STOCKHOLM_GF_AU     4
+#define STOCKHOLM_GF_GA     5
+#define STOCKHOLM_GF_NC     6
+#define STOCKHOLM_GF_TC     7
+#define STOCKHOLM_GS_WT     100
+#define STOCKHOLM_GS_AC     101
+#define STOCKHOLM_GS_DE     102
+#define STOCKHOLM_GC_CS     200
+#define STOCKHOLM_GC_RF     201
+#define STOCKHOLM_GR_SS     300
+#define STOCKHOLM_GR_SA     301
+
+#define SKEL_NSEQLUMP       10    /* allocate for new seqs in blocks of this size */
+#define SKEL_LUMPSIZE       100    /* allocate for new lines in skel in blocks of this size */
+
+#endif /*STOCKHOLM_H_INCLUDED*/
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,306 @@\n+/************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ ************************************************************/\n+\n+/* stopwatch.c\n+ * SRE, Fri Nov 26 14:54:21 1999 [St. Louis] [HMMER]\n+ * SRE, Thu Aug  3 08:11:52 2000 [St. Louis] [moved to SQUID]\n+ * \n+ * Reporting of cpu/system/elapsed time used by a process.\n+ * thanks to Warren Gish for assistance.\n+ * \n+ * Basic API:\n+ * \n+ *   Stopwatch_t *w;\n+ *   w = StopwatchCreate();\n+ *   \n+ *   StopwatchStart(w);\n+ *   do_lots_of_stuff;\n+ *   StopwatchStop(w);\n+ *   StopwatchDisplay(stdout, "CPU time: ", w);\n+ *   \n+ *   StopwatchFree(w);\n+ *   \n+ * Some behavior can be controlled at compile time by #define\'s:\n+ * \n+ *   SRE_STRICT_ANSI:  By default, stopwatch module assumes that a\n+ *         machine is POSIX-compliant (e.g. has struct tms, sys/times.h, \n+ *         and times()). If compiled with -DSRE_STRICT_ANSI, reverts to \n+ *         pure ANSI C conformant implementation. This simpler system \n+ *         won\'t report system times, only user and elapsed times.\n+ *         \n+ *   SRE_ENABLE_PVM:   If compiled with -DSRE_ENABLE_PVM, the\n+ *         functions StopwatchPVMPack() and StopwatchPVMUnpack()\n+ *         are compiled, providing PVM communications ability.\n+ *         \n+ * One additional compile-time configuration note:        \n+ *   PTHREAD_TIMES_HACK: Linux pthreads, as of RH6.0/glibc-devel-2.1.1-6, \n+ *         appears to interact poorly with times() -- usage times in all \n+ *         but the master thread are lost. A workaround for this bug is \n+ *         to run stopwatches in each worker thread, and accumulate those \n+ *         times back into the master stopwatch using StopwatchInclude().\n+ *         (Just like a PVM implementation has to do.) In HMMER, this \n+ *         behavior is compiled in with -DPTHREAD_TIMES_HACK. No\n+ *         changes are made in stopwatch functions themselves, though;\n+ *         all the extra code is HMMER code. See hmmcalibrate.c for\n+ *         an example.\n+ * \n+ * See hmmcalibrate.c for examples of more complex usage\n+ * in dealing with pthreads and PVM.\n+ */\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <unistd.h>\n+#ifdef SRE_ENABLE_PVM\n+#include <pvm3.h>\n+#endif\n+\n+#include "stopwatch.h"\n+\n+/* Function: format_time_string()\n+ * Date:     SRE, Fri Nov 26 15:06:28 1999 [St. Louis]\n+ *\n+ * Purpose:  Given a number of seconds, format into\n+ *           hh:mm:ss.xx in a provided buffer.\n+ *\n+ * Args:     buf     - allocated space (128 is plenty!)\n+ *           sec     - number of seconds\n+ *           do_frac - TRUE (1) to include hundredths of a sec\n+ */\n+static void\n+format_time_string(char *buf, double sec, int do_frac)\n+{\n+  int h, m, s, hs;\n+  \n+  h  = (int) (sec / 3600.);\n+  m  = (int) (sec / 60.) - h * 60;\n+  s  = (int) (sec) - h * 3600 - m * 60;\n+  if (do_frac) {\n+    hs = (int) (sec * 100.) - h * 360000 - m * 6000 - s * 100;\n+    sprintf(buf, "%02d:%02d:%02d.%02d", h,m,s,hs);\n+  } else {\n+    sprintf(buf, "%02d:%02d:%02d", h,m,s);\n+  }\n+}\n+\n+/* Function: StopwatchStart()\n+ * Date:     SRE, Fri Nov 26 15:07:48 1999 [St. Louis]\n+ *\n+ * Purpose:  Start a stopwatch.\n+ *\n+ * Args:     w - the watch\n+ */\n+void\n+StopwatchStart(Stopwatch_t *w)\n+{\n+  w->t0 = time(NULL);\n+#ifdef SRE_STRICT_ANSI\n+  w->cpu0 = clock();\n+#else\n+  (void) times(&(w->cpu0));\n+#endif\n+\n+  w->elapsed = 0.;\n+  w->user    = 0.;\n+  w->sys     = 0.;\n+}\n+\n+/* Function: StopwatchStop()\n+ * Date:     SRE, Fri Nov 26 15:08:16 1999 [St. Louis]\n+ *\n+ * Purpose:  Stop a stopwatch. \n+ *\n+ *           The implementation allows "split times":\n+ *           you can stop a watch multiple times, reporting\n+ *           times at multiple poi'..b'>sys  = (double) (cpu1.tms_stime + cpu1.tms_cstime -\n+\t\t      w->cpu0.tms_stime - w->cpu0.tms_cstime) /\n+            (double) clk_tck;\n+#endif\n+}\n+\n+/* Function: StopwatchInclude()\n+ * Date:     SRE, Fri Nov 26 15:09:34 1999 [St. Louis]\n+ *\n+ * Purpose:  Merge the cpu and system times from a slave into\n+ *           a master stopwatch. Both watches must be\n+ *           stopped, and should not be stopped again unless\n+ *           You Know What You\'re Doing.\n+ *           \n+ *           Elapsed time is *not* merged; master is assumed\n+ *           to be keeping track of the wall clock time,\n+ *           and the slave/worker watch is ignored.\n+ *           \n+ *           Used in two cases:\n+ *           1) PVM; merge in the stopwatch(es) from separate\n+ *              process(es) in a cluster.\n+ *           2) Threads, for broken pthreads/times() implementations\n+ *              that lose track of cpu times used by spawned\n+ *              threads.\n+ *              \n+ * Args:     w1 - the master stopwatch\n+ *           w2 - the slave/worker watch\n+ *\n+ */\n+void\n+StopwatchInclude(Stopwatch_t *w1, Stopwatch_t *w2)\n+{\n+  w1->user    += w2->user;\n+  w1->sys     += w2->sys;\n+}\n+\n+/* Function: StopwatchAlloc(), StopwatchZero(), StopwatchCopy(), \n+ *           StopwatchFree()\n+ * Date:     SRE, Fri Nov 26 15:13:14 1999 [St. Louis]\n+ *\n+ * Purpose:  The usual creation/manipulation/destruction routines\n+ *           for a stopwatch object.\n+ */\n+Stopwatch_t *\n+StopwatchCreate(void)\n+{\n+  Stopwatch_t *w;\n+  w = malloc(sizeof(Stopwatch_t));\n+  return w;\n+}\n+void\n+StopwatchZero(Stopwatch_t *w)\n+{\n+  w->elapsed = 0.;\n+  w->user    = 0.;\n+  w->sys     = 0.;\n+}\n+void \n+StopwatchCopy(Stopwatch_t *w1, Stopwatch_t *w2)\n+{\n+  w1->t0   = w2->t0;\n+#ifdef SRE_STRICT_ANSI\n+  w1->cpu0 = w2->cpu0;\n+#else\n+  w1->cpu0.tms_utime = w2->cpu0.tms_utime;\n+  w1->cpu0.tms_stime = w2->cpu0.tms_stime;\n+  w1->cpu0.tms_cutime = w2->cpu0.tms_cutime;\n+  w1->cpu0.tms_cstime = w2->cpu0.tms_cstime;\n+#endif\n+  w1->elapsed = w2->elapsed;\n+  w1->user    = w2->user;\n+  w1->sys     = w2->sys;\n+}\n+void\n+StopwatchFree(Stopwatch_t *w)\n+{\n+  free(w);\n+}\n+\n+\n+/* Function: StopwatchDisplay()\n+ * Date:     SRE, Fri Nov 26 15:14:12 1999 [St. Louis]\n+ *\n+ * Purpose:  Output a usage summary line from a *stopped*\n+ *           stopwatch (the times will reflect the last\n+ *           time StopwatchStop() was called.)\n+ *           \n+ *           For s = "CPU Time: " an example output line is:\n+ *           CPU Time: 142.55u 7.17s 149.72 Elapsed: 00:02:35.00\n+ *\n+ * Args:     fp - open file for writing (stdout, possibly)\n+ *           s  - prefix for the report line\n+ *           w  - a (recently stopped) stopwatch     \n+ *\n+ */\n+void\n+StopwatchDisplay(FILE *fp, char *s, Stopwatch_t *w)\n+{\n+  char buf[128];\t/* (safely holds up to 10^14 years) */\n+  \n+  if (s == NULL)\n+    fputs("CPU Time: ", fp);\n+  else \n+    fputs(s, fp);\n+\n+  format_time_string(buf, w->user+w->sys, 1);\n+#ifdef SRE_STRICT_ANSI\n+  fprintf(fp, "%.2fu %s ", w->user, buf);\n+#else\n+  fprintf(fp, "%.2fu %.2fs %s ", w->user, w->sys, buf);\n+#endif\n+\n+  format_time_string(buf, w->elapsed, 0);\n+  fprintf(fp, "Elapsed: %s\\n", buf);\n+}\n+  \n+#ifdef SRE_ENABLE_PVM\n+/* Function: StopwatchPVMPack(), StopwatchPVMUnpack()\n+ * Date:     SRE, Fri Nov 26 15:22:04 1999 [St. Louis]\n+ *\n+ * Purpose:  Transmission of stopwatch data in a PVM\n+ *           cluster.\n+ */\n+void\n+StopwatchPVMPack(Stopwatch_t *w)\n+{\n+  pvm_pkdouble(&(w->elapsed), 1, 1);\n+  pvm_pkdouble(&(w->user),    1, 1);\n+  pvm_pkdouble(&(w->sys),     1, 1);\n+}\n+void\n+StopwatchPVMUnpack(Stopwatch_t *w)\n+{\n+  pvm_upkdouble(&(w->elapsed), 1, 1);\n+  pvm_upkdouble(&(w->user),    1, 1);\n+  pvm_upkdouble(&(w->sys),     1, 1);\n+}\n+#endif /*SRE_ENABLE_PVM*/\n+\n+\n+#ifdef TESTDRIVER\n+int\n+main(int argc, char **argv)\n+{\n+  Stopwatch_t stopwatch;\n+\n+  StopwatchStart(&stopwatch);\n+\n+  sleep(5);\n+\n+  StopwatchStop(&stopwatch);\n+  StopwatchDisplay(stdout, "CPU Time: ", &stopwatch);\n+}\n+#endif\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/stopwatch.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,58 @@
+/* stopwatch.h
+ * SRE, Fri Nov 26 14:54:21 1999 [St. Louis] [HMMER]
+ * SRE, Thu Aug  3 08:00:35 2000 [St. Louis] [moved to SQUID]
+ * CVS $Id: stopwatch.h,v 1.2 2000/08/03 22:24:38 eddy Exp)
+ * 
+ * Header file for stopwatch.c module:
+ * reporting of cpu/system/elapsed time used by a process.
+ * See stopwatch.c comments for documentation of compile-time
+ * configuration options and API.
+ * 
+ *****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ ***************************************************************** 
+ */
+#include <stdio.h>
+#include <time.h>
+#ifndef SRE_STRICT_ANSI
+#include <sys/times.h>
+#endif
+
+#ifndef STOPWATCH_H_INCLUDED
+#define STOPWATCH_H_INCLUDED
+
+struct stopwatch_s {
+  time_t t0; /* Wall clock time, ANSI time()  */
+#ifdef SRE_STRICT_ANSI
+  clock_t cpu0; /* CPU time, ANSI clock()        */
+#else
+  struct tms cpu0; /* CPU/system time, POSIX times()*/
+#endif
+
+  double elapsed; /* elapsed time, seconds */
+  double user; /* CPU time, seconds */
+  double sys; /* system time, seconds */
+}; 
+typedef struct stopwatch_s Stopwatch_t;
+
+extern void StopwatchStart(Stopwatch_t *w);
+extern void StopwatchStop(Stopwatch_t *w);
+extern void StopwatchInclude(Stopwatch_t *w1, Stopwatch_t *w2);
+extern Stopwatch_t *StopwatchCreate(void);
+extern void StopwatchZero(Stopwatch_t *w);
+extern void StopwatchCopy(Stopwatch_t *w1, Stopwatch_t *w2);
+extern void StopwatchFree(Stopwatch_t *w);
+extern void StopwatchDisplay(FILE *fp, char *s, Stopwatch_t *w);
+
+#ifdef HMMER_PVM
+extern void StopwatchPVMPack(Stopwatch_t *w);
+extern void StopwatchPVMUnpack(Stopwatch_t *w);
+#endif
+
+#endif /*STOPWATCH_H_INCLUDED*/
+  
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/translate.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/translate.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,86 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/*
+ * translate.c - functions for translating nucleic acid sequence
+ * created Tue Jan 12 11:27:29 1993, SRE
+ * 
+ * RCS $Id: translate.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: translate.c,v 1.2 1998/10/09 18:07:16 eddy Exp)
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "squid.h"
+
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+
+/* Function: Translate(char *seq, char **code)
+ * 
+ * Given a ptr to the start of a nucleic acid sequence,
+ * and a genetic code, translate the sequence into
+ * amino acid sequence.
+ * 
+ * code is an array of 65 strings, representing
+ * the translations of the 64 codons, arranged
+ * in order AAA, AAC, AAG, AAU, ..., UUA, UUC, UUG, UUU.
+ * '*' or '***' is used to represent termination
+ * codons, usually. The final string, code[64],
+ * is the code for an ambiguous amino acid.
+ *
+ * Because of the way space is allocated for the amino
+ * acid sequence, the amino acid strings cannot be
+ * longer than 3 letters each. (I don't foresee using
+ * anything but the single- and triple- letter codes.)
+ * 
+ * Returns a ptr to the translation string on success,
+ * or NULL on failure.
+ */
+char *
+Translate(char *seq, char **code)
+{
+  int   codon; /* index for codon         */
+  char *aaseq;                  /* RETURN: the translation */
+  char *aaptr;                  /* ptr into aaseq */
+  int   i;
+  
+  if (seq == NULL) 
+    { squid_errno = SQERR_NODATA; return NULL; }
+  if ((aaseq = (char *) calloc (strlen(seq) + 1, sizeof(char))) == NULL)
+    Die("calloc failed");
+
+  aaptr = aaseq;
+  for (; *seq != '\0' && *(seq+1) != '\0' && *(seq+2) != '\0'; seq += 3)
+    {
+ /* calculate the lookup value for
+    this codon */
+      codon = 0;
+      for (i = 0; i < 3; i++)
+ {
+   codon *= 4;
+   switch (*(seq + i)) {
+   case 'A': case 'a':             break;
+   case 'C': case 'c': codon += 1; break;
+   case 'G': case 'g': codon += 2; break;
+   case 'T': case 't': codon += 3; break;
+   case 'U': case 'u': codon += 3; break;
+   default: codon = 64; break;
+   }
+   if (codon == 64) break;
+ }
+
+      strcpy(aaptr, code[codon]);
+      aaptr += strlen(code[codon]);
+    }
+  return aaseq;
+}
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/types.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/types.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,227 @@
+/*****************************************************************
+ * SQUID - a library of functions for biological sequence analysis
+ * Copyright (C) 1992-2002 Washington University School of Medicine
+ * 
+ *     This source code is freely distributed under the terms of the
+ *     GNU General Public License. See the files COPYRIGHT and LICENSE
+ *     for details.
+ *****************************************************************/
+
+/* file: types.c
+ * 
+ * Finicky type checkers for strings. Return 1 (TRUE) if ok, 0 elsewise.
+ * Also, finicky type converters (sre_ntoh32() and friends)
+ *
+ * CVS $Id: types.c,v 1.5 2001/01/08 22:58:12 eddy Exp)
+ */
+
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+
+/* Function: IsInt()
+ * 
+ * Returns TRUE if s points to something that atoi() will parse
+ * completely and convert to an integer.
+ */
+int
+IsInt(char *s)
+{
+  int hex = 0;
+
+  if (s == NULL) {squid_errno = SQERR_PARAMETER; return 0; }
+
+ /* skip whitespace */
+  while (isspace((int) (*s))) s++;      
+ /* skip leading sign */
+  if (*s == '-' || *s == '+') s++;
+ /* skip leading conversion signals */
+  if ((strncmp(s, "0x", 2) == 0 && (int) strlen(s) > 2) ||
+      (strncmp(s, "0X", 2) == 0 && (int) strlen(s) > 2))
+    {
+      s += 2;
+      hex = 1;
+    }
+  else if (*s == '0' && (int) strlen(s) > 1)
+    s++;
+ /* examine remainder for garbage chars */
+  if (!hex)
+    while (*s != '\0')
+      {
+ if (!isdigit((int) (*s))) return 0;
+ s++;
+      }
+  else
+    while (*s != '\0')
+      {
+ if (!isxdigit((int) (*s))) return 0;
+ s++;
+      }
+
+  return 1;
+}
+
+
+/* Function: IsReal()
+ * 
+ * Purpose:  Returns TRUE if s is a string representation
+ *           of a valid floating point number.
+ */
+int
+IsReal(char *s)
+{
+  int gotdecimal = 0;
+  int gotexp     = 0;
+  int gotreal    = 0;
+
+  if (s == NULL) return 0;
+
+  while (isspace((int) (*s))) s++;         /* skip leading whitespace */
+  if (*s == '-' || *s == '+') s++; /* skip leading sign */
+
+  /* Examine remainder for garbage. Allowed one '.' and
+   * one 'e' or 'E'; if both '.' and e/E occur, '.'
+   * must be first.
+   */
+  while (*s != '\0')
+    {
+      if (isdigit((int) (*s))) 
+ gotreal++;
+      else if (*s == '.')
+ {
+   if (gotdecimal) return 0; /* can't have two */
+   if (gotexp) return 0; /* e/E preceded . */
+   else gotdecimal++;
+ }
+      else if (*s == 'e' || *s == 'E')
+ {
+   if (gotexp) return 0; /* can't have two */
+   else gotexp++;
+ }
+      else if (isspace((int) (*s)))
+ break;
+
+      s++;
+    }
+
+  while (isspace((int) (*s))) s++;         /* skip trailing whitespace */
+  if (*s == '\0' && gotreal) return 1;
+  else return 0;
+}
+
+
+/* Function: Byteswap()
+ * 
+ * Purpose:  Swap between big-endian and little-endian.
+ *           For example:
+ *               int foo = 0x12345678;
+ *               byteswap((char *) &foo, sizeof(int));
+ *               printf("%x\n", foo)
+ *           gives 78563412.
+ *           
+ *           I don't fully understand byte-swapping issues.
+ *           However, I have tested this on chars through floats,
+ *           on various machines:
+ *               SGI IRIX 4.0.5, SunOS 4.1.3, DEC Alpha OSF/1, Alliant
+ *
+ * Date: Sun Feb 12 10:26:22 1995              
+ */
+void
+Byteswap(char *swap, int nbytes)
+{
+  int  x;
+  char byte;
+  
+  for (x = 0; x < nbytes / 2; x++)
+    {
+      byte = swap[nbytes - x - 1];
+      swap[nbytes - x - 1] = swap[x];
+      swap[x] = byte;
+    }
+}
+
+
+
+/* Functions: sre_ntoh16(), etc.
+ * Date:      SRE, Sun Dec 31 11:26:53 2000 [St. Louis]
+ *
+ * Purpose:   Provide functionality of ntohs(), etc; extended
+ *            to 64-bit unsigned ints, and explicitly provided
+ *            in case a machine doesn't have the ntohs()
+ *            family. 
+ *            
+ *            If we're using the host functions, 
+ *            USE_HOST_BYTESWAP_FUNCTIONS was set to 1 in
+ *            squidconf.h, and we #define'd sre_hton16(x)=hton(x), etc.
+ *            in squid.h. In doing this, we assumed that the
+ *            host functions work on 16- and 32-bit unsigned quantities.
+ *            If for some reason that's not true, set 
+ *            USE_HOST_BYTESWAP_FUNCTIONS to 0.
+ */
+#ifndef USE_HOST_BYTESWAP_FUNCTIONS
+sqd_uint16
+sre_ntoh16(sqd_uint16 netshort)
+{
+#ifdef WORDS_BIGENDIAN
+  return netshort;
+#else
+  Byteswap((char *) &netshort, 2);
+  return netshort;
+#endif
+}
+sqd_uint32
+sre_ntoh32(sqd_uint32 netlong)
+{
+#ifdef WORDS_BIGENDIAN
+  return netlong;
+#else
+  Byteswap((char *) &netlong, 4);
+  return netlong;
+#endif
+}
+sqd_uint16
+sre_hton16(sqd_uint16 hostshort)
+{
+#ifdef WORDS_BIGENDIAN
+  return hostshort;
+#else
+  Byteswap((char *) &hostshort, 2);
+  return hostshort;
+#endif
+}
+sqd_uint32
+sre_hton32(sqd_uint32 hostlong)
+{
+#ifdef WORDS_BIGENDIAN
+  return hostlong;
+#else
+  Byteswap((char *) &hostlong, 4);
+  return hostlong;
+#endif
+}
+#endif /*USE_HOST_BYTESWAP_FUNCTIONS*/
+
+sqd_uint64
+sre_ntoh64(sqd_uint64 net_int64)
+{
+#ifdef WORDS_BIGENDIAN
+  return net_int64;
+#else
+  Byteswap((char *) &net_int64, 8);
+  return net_int64;
+#endif
+}
+sqd_uint64
+sre_hton64(sqd_uint64 host_int64)
+{
+#ifdef WORDS_BIGENDIAN
+  return host_int64;
+#else
+  Byteswap((char *) &host_int64, 8);
+  return host_int64;
+#endif
+}
+
+
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/vectorops.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/vectorops.c Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,297 @@
+/* vectorops.c
+ * Operations on vectors of floats or doubles.
+ * 
+ * DSet(), FSet()       - set all items in vector to value.
+ * DScale(), FScale()   - multiply all items in vector by scale
+ * DSum(), FSum()       - return sum of values in vector
+ * DAdd(), FAdd()       - add vec2 to vec1.
+ * DCopy(), FCopy()     - set vec1 to be same as vec2. 
+ * DDot(), FDot()       - return dot product of two vectors.
+ * DMax(), FMax()       - return value of maximum element in vector
+ * DMin(), FMin()       - return value of minimum element in vector 
+ * DArgMax(), FArgMax() - return index of maximum element in vector
+ * DArgMin(), FArgMin() - return index of minimum element in vector
+ * 
+ * DNorm(), FNorm()     - normalize a probability vector of length n.
+ * DLog(), FLog()       - convert to log probabilities 
+ * DExp(), FExp()       - convert log p's back to probabilities
+ * DLogSum(), FLogSum() - given vector of log p's; return log of summed p's.
+ *                        
+ * SRE, Tue Oct  1 15:23:25 2002 [St. Louis]
+ * CVS $Id: vectorops.c,v 1.1 2002/10/09 14:26:09 eddy Exp)                       
+ */                      
+  
+#include <stdlib.h>
+#include <math.h>
+#include <float.h>
+#include "vectorops.h"
+
+void
+DSet(double *vec, int n, double value)
+{
+  int x; 
+  for (x = 0; x < n; x++) vec[x] = value;
+}
+
+void
+FSet(float *vec, int n, float value)
+{
+  int x; 
+  for (x = 0; x < n; x++) vec[x] = value;
+}
+
+void
+DScale(double *vec, int n, double scale)
+{
+  int x;
+  for (x = 0; x < n; x++) vec[x] *= scale;
+}
+
+void
+FScale(float *vec, int n, float scale)
+{
+  int x;
+  for (x = 0; x < n; x++) vec[x] *= scale;
+}
+
+double 
+DSum(double *vec, int n)
+{
+  double sum = 0.;
+  int    x;
+  for (x = 0; x < n; x++) sum += vec[x];
+  return sum;
+}
+
+float 
+FSum(float *vec, int n)
+{
+  float sum = 0.;
+  int   x;
+  for (x = 0; x < n; x++) sum += vec[x];
+  return sum;
+}
+
+void
+DAdd(double *vec1, double *vec2, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec1[x] += vec2[x];
+}
+
+void
+FAdd(float *vec1, float *vec2, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec1[x] += vec2[x];
+}
+
+void
+DCopy(double *vec1, double *vec2, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec1[x] = vec2[x];
+}
+
+void
+FCopy(float *vec1, float *vec2, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec1[x] = vec2[x];
+}
+
+double
+DDot(double *vec1, double *vec2, int n)
+{
+  double result = 0.;
+  int x;
+  for (x = 0; x < n; x++) result += vec1[x] * vec2[x];
+  return result;
+}
+
+float
+FDot(float *vec1, float *vec2, int n)
+{
+  float result = 0.;
+  int x;
+  for (x = 0; x < n; x++) result += vec1[x] * vec2[x];
+  return result;
+}
+
+double
+DMax(double *vec, int n)
+{
+  int i;
+  double best;
+
+  best = vec[0];
+  for (i = 1; i < n; i++)
+    if (vec[i] > best) best = vec[i];
+  return best;
+}
+
+float
+FMax(float *vec, int n)
+{
+  int   i;
+  float best;
+
+  best = vec[0];
+  for (i = 1; i < n; i++)
+    if (vec[i] > best) best = vec[i];
+  return best;
+}
+
+double
+DMin(double *vec, int n)
+{
+  int i;
+  double best;
+
+  best = vec[0];
+  for (i = 1; i < n; i++)
+    if (vec[i] < best) best = vec[i];
+  return best;
+}
+
+float
+FMin(float *vec, int n)
+{
+  int   i;
+  float best;
+
+  best = vec[0];
+  for (i = 1; i < n; i++)
+    if (vec[i] < best) best = vec[i];
+  return best;
+}
+
+double
+DArgMax(double *vec, int n)
+{
+  int i;
+  int best = 0;
+
+  for (i = 1; i < n; i++)
+    if (vec[i] > vec[best]) best = i;
+  return best;
+}
+
+float
+FArgMax(float *vec, int n)
+{
+  int i;
+  int best = 0;
+
+  for (i = 1; i < n; i++)
+    if (vec[i] > vec[best]) best = i;
+  return best;
+}
+
+double
+DArgMin(double *vec, int n)
+{
+  int i;
+  int best = 0;
+  for (i = 1; i < n; i++)
+    if (vec[i] < vec[best]) best = i;
+  return best;
+}
+
+float
+FArgMin(float *vec, int n)
+{
+  int   i;
+  int   best = 0;
+
+  for (i = 1; i < n; i++)
+    if (vec[i] < vec[best]) best = i;
+  return best;
+}
+
+void
+DNorm(double *vec, int n)
+{
+  int    x;
+  double sum;
+
+  sum = DSum(vec, n);
+  if (sum != 0.0) for (x = 0; x < n; x++) vec[x] /= sum;
+  else            for (x = 0; x < n; x++) vec[x] = 1. / (double) n;
+}
+
+void
+FNorm(float *vec, int n)
+{
+  int    x;
+  float  sum;
+
+  sum = FSum(vec, n);
+  if (sum != 0.0) for (x = 0; x < n; x++) vec[x] /= sum;
+  else            for (x = 0; x < n; x++) vec[x] = 1. / (float) n;
+}
+
+void
+DLog(double *vec, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) 
+    if (vec[x] > 0.) vec[x] = log(vec[x]);
+    else vec[x] = -DBL_MAX;
+}
+
+void
+FLog(float *vec, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) 
+    if (vec[x] > 0.) vec[x] = log(vec[x]);
+    else vec[x] = -FLT_MAX;
+}
+
+void
+DExp(double *vec, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec[x] = exp(vec[x]);
+}
+
+void
+FExp(float *vec, int n)
+{
+  int x;
+  for (x = 0; x < n; x++) vec[x] = exp(vec[x]);
+}
+
+float
+DLogSum(double *vec, int n)
+{
+  int x;
+  double max, sum;
+  
+  max = DMax(vec, n);
+  sum = 0.0;
+  for (x = 0; x < n; x++)
+    if (vec[x] > max - 50.)
+      sum += exp(vec[x] - max);
+  sum = log(sum) + max;
+  return sum;
+}
+
+float
+FLogSum(float *vec, int n)
+{
+  int x;
+  float max, sum;
+  
+  max = FMax(vec, n);
+  sum = 0.0;
+  for (x = 0; x < n; x++)
+    if (vec[x] > max - 50.)
+      sum += exp(vec[x] - max);
+  sum = log(sum) + max;
+  return sum;
+}
+
+
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/vectorops.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/vectorops.h Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,36 @@
+/* vectorops.h
+ * Header file for vectorops.c
+ * 
+ * SRE, Tue Oct  1 15:23:37 2002 [St. Louis]
+ * CVS $Id: vectorops.h,v 1.1 2002/10/09 14:26:09 eddy Exp)
+ */
+
+extern void   DSet(double *vec, int n, double value);
+extern void   FSet(float *vec, int n, float value);
+extern void   DScale(double *vec, int n, double scale);
+extern void   FScale(float *vec, int n, float scale);
+extern double DSum(double *vec, int n);
+extern float  FSum(float *vec, int n);
+extern void   DAdd(double *vec1, double *vec2, int n);
+extern void   FAdd(float *vec1, float *vec2, int n);
+extern void   DCopy(double *vec1, double *vec2, int n);
+extern void   FCopy(float *vec1, float *vec2, int n);
+extern double DDot(double *vec1, double *vec2, int n);
+extern float  FDot(float *vec1, float *vec2, int n);
+extern double DMax(double *vec, int n);
+extern float  FMax(float *vec, int n);
+extern double DMin(double *vec, int n);
+extern float  FMin(float *vec, int n);
+extern double DArgMax(double *vec, int n);
+extern float  FArgMax(float *vec, int n);
+extern double DArgMin(double *vec, int n);
+extern float  FArgMin(float *vec, int n);
+extern void   DNorm(double *vec, int n);
+extern void   FNorm(float *vec, int n);
+extern void   DLog(double *vec, int n);
+extern void   FLog(float *vec, int n);
+extern void   DExp(double *vec, int n);
+extern void   FExp(float *vec, int n);
+extern float  DLogSum(double *vec, int n);
+extern float  FLogSum(float *vec, int n);
+
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/version.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/version.h Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,6 @@
+/* version.h -- automatically generated by a Makefile. DO NOT EDIT. */
+#define PACKAGE     "SQUID"
+#define RELEASE     "1.9g"
+#define RELEASEDATE "Oct 2002"
+#define COPYRIGHT   "Copyright (C) 1992-2002 HHMI/Washington University School of Medicine"
+#define LICENSE     "Freely distributed under the GNU General Public License (GPL)"
b
diff -r 000000000000 -r ff1768533a07 clustalomega/clustal-omega-0.2.0/src/squid/weight.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/clustal-omega-0.2.0/src/squid/weight.c Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,748 @@\n+/*****************************************************************\n+ * SQUID - a library of functions for biological sequence analysis\n+ * Copyright (C) 1992-2002 Washington University School of Medicine\n+ * \n+ *     This source code is freely distributed under the terms of the\n+ *     GNU General Public License. See the files COPYRIGHT and LICENSE\n+ *     for details.\n+ *****************************************************************/\n+\n+/* weight.c\n+ * SRE, Thu Mar  3 07:56:01 1994\n+ * \n+ * Calculate weights for sequences in an alignment.\n+ * RCS $Id: weight.c 217 2011-03-19 10:27:10Z andreas $ (Original squid RCS Id: weight.c,v 1.9 2002/10/09 14:26:09 eddy Exp)\n+ */\n+\n+#include <ctype.h>\n+#include <string.h>\n+#include "squid.h"\n+#include "sre_random.h"\n+\n+static void upweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, int node);\n+static void downweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, \n+\t\t       float *fwt, int node);\n+static float simple_distance(char *s1, char *s2);\n+static int    simple_diffmx(char **aseqs,int num, float ***ret_dmx);\n+\n+/* Function: GSCWeights()\n+ * \n+ * Purpose:  Use Erik\'s tree-based algorithm to set weights for\n+ *           sequences in an alignment. upweight() and downweight()\n+ *           are derived from Graeme Mitchison\'s code.\n+ *           \n+ * Args:     aseq        - array of (0..nseq-1) aligned sequences\n+ *           nseq        - number of seqs in alignment  \n+ *           alen        - length of alignment\n+ *           wgt         - allocated [0..nseq-1] array of weights to be returned\n+ *           \n+ * Return:   (void)\n+ *           wgt is filled in.\n+ */\n+void\n+GSCWeights(char **aseq, int nseq, int alen, float *wgt)\n+{\n+  float **dmx;                 /* distance (difference) matrix */\n+  struct phylo_s *tree;\n+  float  *lwt, *rwt;           /* weight on left, right of this tree node */\n+  float  *fwt;                 /* final weight assigned to this node */\n+  int      i;\n+  \n+  /* Sanity check first\n+   */\n+  if (nseq == 1) { wgt[0] = 1.0; return; }\n+\n+  /* I use a simple fractional difference matrix derived by\n+   * pairwise identity. Perhaps I should include a Poisson\n+   * distance correction.\n+   */\n+  MakeDiffMx(aseq, nseq, &dmx);\n+  if (! Cluster(dmx, nseq, CLUSTER_MIN, &tree))  Die("Cluster() failed");\n+  \n+  /* Allocations\n+   */\n+  lwt = MallocOrDie (sizeof(float) * (2 * nseq - 1));\n+  rwt = MallocOrDie (sizeof(float) * (2 * nseq - 1));\n+  fwt = MallocOrDie (sizeof(float) * (2 * nseq - 1));\n+  \n+  /* lwt and rwt are the total branch weight to the left and\n+   * right of a node or sequence. They are 0..2N-2.  0..N-1 are \n+   * the sequences; these have weight 0. N..2N-2 are the actual\n+   * tree nodes.\n+   */\n+  for (i = 0; i < nseq; i++)\n+    lwt[i] = rwt[i] = 0.0;\n+\t\t\t\t/* recursively calculate rwt, lwt, starting\n+\t\t\t\t   at node nseq (the root) */\n+  upweight(tree, nseq, lwt, rwt, nseq);\n+\n+\t\t\t\t/* recursively distribute weight across the\n+\t\t\t\t   tree */\n+  fwt[nseq] = nseq;\n+  downweight(tree, nseq, lwt, rwt, fwt, nseq);\n+\t\t\t\t/* collect the weights */\n+  for (i = 0; i < nseq; i++)\n+    wgt[i]  = fwt[i];\n+\n+  FMX2Free(dmx);\n+  FreePhylo(tree, nseq);\n+  free(lwt); free(rwt); free(fwt);\n+}\n+\n+static void \n+upweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, int node)\n+{\n+  int ld,rd;\n+\n+  ld = tree[node-nseq].left;\n+  if (ld >= nseq) upweight(tree, nseq, lwt, rwt, ld);\n+  rd = tree[node-nseq].right;\n+  if (rd >= nseq) upweight(tree, nseq, lwt, rwt, rd);\n+  lwt[node] = lwt[ld] + rwt[ld] + tree[node-nseq].lblen;\n+  rwt[node] = lwt[rd] + rwt[rd] + tree[node-nseq].rblen;\n+}\n+\n+\n+static void \n+downweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, float *fwt, int node)\n+{\n+  int ld,rd;\n+  float lnum, rnum;\n+\n+  ld = tree[node-nseq].left;\n+  rd = tree[node-nseq].right;\n+  if (lwt[node] + rwt[node] > 0.0)\n+    {\n+      fwt[ld] = fwt[node] * (lwt[node] / (lwt[node] + rwt[node]));\n+      fwt[rd] = fwt[node]'..b"      within a column, there's no mixed case.\n+ *           \n+ * Algorithm: \n+ *           I don't know if this algorithm is published. I \n+ *           haven't seen it in graph theory books, but that might\n+ *           be because it's so obvious that nobody's bothered.\n+ *           \n+ *           In brief, we're going to do a breadth-first search\n+ *           of the graph, and we're going to calculate links\n+ *           on the fly rather than precalculating them into\n+ *           some sort of standard adjacency structure.\n+ *           \n+ *           While working, we keep two stacks of maximum length N:\n+ *                a : list of vertices that are still unconnected.\n+ *                b : list of vertices that we've connected to \n+ *                    in our current breadth level, but we haven't\n+ *                    yet tested for other connections to a.\n+ *           The current length (number of elements in) a and b are\n+ *           kept in na, nb.\n+ *                    \n+ *           We store our results in an array of length N:\n+ *                c : assigns each vertex to a component. for example\n+ *                    c[4] = 1 means that vertex 4 is in component 1.\n+ *                    nc is the number of components. Components\n+ *                    are numbered from 0 to nc-1. We return c and nc\n+ *                    to our caller.\n+ *                    \n+ *           The algorithm is:\n+ *           \n+ *           Initialisation: \n+ *                a  <-- all the vertices\n+ *                na <-- N\n+ *                b  <-- empty set\n+ *                nb <-- 0\n+ *                nc <-- 0\n+ *                \n+ *           Then:\n+ *                while (a is not empty)\n+ *                  pop a vertex off a, push onto b\n+ *                  while (b is not empty)\n+ *                    pop vertex v off b\n+ *                    assign c[v] = nc\n+ *                    for each vertex w in a:\n+ *                       compare v,w. If w is linked to v, remove w\n+ *                       from a, push onto b.\n+ *                  nc++     \n+ *           q.e.d. :)       \n+ *\n+ * Args:     aseq   - aligned sequences\n+ *           nseq   - number of sequences in aseq\n+ *           alen   - alignment length\n+ *           maxid  - fractional identity threshold 0..1. if id >= maxid, seqs linked\n+ *           ret_c  - RETURN: 0..nseq-1 assignments of seqs to components (clusters)\n+ *           ret_nc - RETURN: number of components\n+ *\n+ * Returns:  void.\n+ *           ret_c is allocated here. Caller free's with free(*ret_c)\n+ */\n+void\n+SingleLinkCluster(char **aseq, int nseq, int alen, float maxid, \n+\t\t  int **ret_c, int *ret_nc)\n+{\n+  int *a, na;                   /* stack of available vertices */\n+  int *b, nb;                   /* stack of working vertices   */\n+  int *c;                       /* array of results            */\n+  int  nc;\t\t\t/* total number of components  */\n+  int  v,w;\t\t\t/* index of a working vertices */\n+  int  i;\t\t\t/* loop counter */\n+\n+  /* allocations and initializations\n+   */\n+  a = MallocOrDie (sizeof(int) * nseq);\n+  b = MallocOrDie (sizeof(int) * nseq);\n+  c = MallocOrDie (sizeof(int) * nseq);\n+  for (i = 0; i < nseq; i++) a[i] = i;\n+  na = nseq;\n+  nb = 0;\n+  nc = 0;\n+\n+  /* Main algorithm\n+   */\n+  while (na > 0)\n+    {\n+      v = a[na-1]; na--;\t/* pop a vertex off a, */\n+      b[nb] = v;   nb++;\t/* and push onto b     */\n+      while (nb > 0)\n+\t{\n+\t  v    = b[nb-1]; nb--;\t/* pop vertex off b          */\n+\t  c[v] = nc;\t\t/* assign it to component nc */\n+\t  for (i = na-1; i >= 0; i--)/* backwards, becase of deletion/swapping we do*/\n+\t    if (simple_distance(aseq[v], aseq[a[i]]) <= 1. - maxid) /* linked? */\n+\t      {\t\t\t\n+\t\tw = a[i]; a[i] = a[na-1]; na--;\t/* delete w from a (note swap) */\n+\t\tb[nb] = w; nb++;                /* push w onto b */\n+\t      }\n+\t}\n+      nc++;\n+    }\n+\n+  /* Cleanup and return\n+   */\n+  free(a);\n+  free(b);\n+  *ret_c  = c;\n+  *ret_nc = nc;\n+  return;\n+}\n"
b
diff -r 000000000000 -r ff1768533a07 clustalomega/hide_stderr.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/hide_stderr.py Tue Jun 07 17:04:25 2011 -0400
[
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+"""A simple script to redirect stderr to stdout when the return code is zero.
+
+See https://bitbucket.org/galaxy/galaxy-central/issue/325/
+
+Currently Galaxy ignores the return code from command line tools (even if it
+is non-zero which by convention indicates an error) and treats any output on
+stderr as an error (even though by convention stderr is used for errors or
+warnings).
+
+This script runs the given command line, capturing all stdout and stderr in
+memory, and gets the return code. For a zero return code, any stderr (which
+should be warnings only) is added to the stdout. That way Galaxy believes
+everything is fine. For a non-zero return code, we output stdout as is, and
+any stderr, plus the return code to ensure there is some output on stderr.
+That way Galaxy treats this as an error.
+
+Once issue 325 is fixed, this script will not be needed.
+"""
+import sys
+import subprocess
+
+#Avoid using shell=True when we call subprocess to ensure if the Python
+#script is killed, so too is the BLAST process.
+try:
+    words = []
+    for w in sys.argv[1:]:
+       if " " in w:
+           words.append('"%s"' % w)
+       else:
+           words.append(w)
+    cmd = " ".join(words)
+    child = subprocess.Popen(sys.argv[1:],
+                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+except Exception, err:
+    sys.stderr.write("Error invoking command:\n%s\n\n%s\n" % (cmd, err))
+    sys.exit(1)
+#Use .communicate as can get deadlocks with .wait(),
+stdout, stderr = child.communicate()
+return_code = child.returncode
+
+if return_code:
+    sys.stdout.write(stdout)
+    sys.stderr.write(stderr)
+    sys.stderr.write("Return error code %i from command:\n" % return_code)
+    sys.stderr.write("%s\n" % cmd)
+else:
+    sys.stdout.write(stdout)
+    sys.stdout.write(stderr)
b
diff -r 000000000000 -r ff1768533a07 clustalomega/rgClustalOmega.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/rgClustalOmega.xml Tue Jun 07 17:04:25 2011 -0400
[
b'@@ -0,0 +1,235 @@\n+<tool id="clustalomega" name="Clustal Omega" version="0.2">\n+<description>\n+multiple sequence alignment program for proteins\n+</description>\n+<command interpreter="python">\n+hide_stderr.py clustalo --force --threads=1 --maxnumseq=300000 --maxseqlen=15000 -o $output -l $outlog -v \n+#if ($basicmode.mode=="mode1")\n+ -i $input\n+#elif ($basicmode.mode=="mode2")\n+ --profile1 $profile1 --profile2 $profile2\n+#elif ($basicmode.mode=="mode3")\n+ -i $input --profile1 $profile\n+#elif ($basicmode.mode=="mode4")\n+ -i $input --hmm-in=$hmm\n+#end if\n+#if($advanced.options=="true")\n+    #if ($advanced.dealign.value=="Yes")\n+     --dealign\n+    #end if\n+    #if ($advanced.mbed.value=="Yes")\n+     --mbed\n+    #end if\n+    #if ($advanced.iteration.iteroptions =="true")\n+        --iter $advanced.iteration.iters\n+        #if ($advanced.iteration.mbediter.value=="Yes")\n+         --mbed-iter\n+        #end if\n+        #if ($advanced.iteration.separateiters.separateiteroptions =="true")\n+         --max-guidetree-iterations=$advanced.iteration.separateiters.gtiters\n+         --max-hmm-iterations=$advanced.iteration.separateiters.hmmiters\n+        #end if\n+    #end if\n+    #if ($advanced.dotree.value=="Yes")\n+     --guidetree-out=$outtree\n+    #end if\n+    #if ($advanced.domatrix.value=="Yes")\n+     --distmat-out=$outmatrix\n+    #end if\n+#end if\n+\n+</command>\n+\n+<inputs>\n+\n+<conditional name="basicmode">\n+    <param name="mode" type="select">\n+    <label>Alignment mode</label>\n+    <option value="mode1" selected="true">align sequences</option>\n+    <option value="mode2">align two profiles</option>\n+    <option value="mode3">align sequences to a profile</option>\n+    <option value="mode4">align sequences with a HMM background</option>\n+    </param>\n+\n+    <when value="mode1">\n+        <param name="input" format="fasta" type="data">\n+        <label>Input sequences</label>\n+        <help>A fasta file containing the proteins to be aligned</help>\n+        </param>\n+    </when>\n+\n+    <when value="mode2">\n+        <param name="profile1" format="fasta" type="data">\n+        <label>Profile 1</label>\n+        <help>A fasta file containing aligned sequences</help>\n+    </param>\n+\n+    <param name="profile2" format="fasta" type="data">\n+        <label>Profile 2 (Fasta File)</label>\n+        <help>A fasta file containing aligned sequences</help>\n+        </param>\n+    </when>\n+\n+    <when value="mode3">\n+        <param name="input" format="fasta" type="data">\n+        <label>Input sequences</label>\n+        <help>A fasta file containing the proteins to be aligned</help>\n+        </param>\n+\n+        <param name="profile" format="fasta" type="data">\n+        <label>Profile</label>\n+        <help>A fasta file containing aligned sequences</help>\n+        </param>\n+    </when>\n+\n+    <when value="mode4">\n+        <param name="input" format="fasta" type="data">\n+        <label>Input sequences</label>\n+        <help>A fasta file containing the proteins to be aligned</help>\n+        </param>\n+        \n+        <param name="hmm" format="other" type="data">\n+        <label>HMM</label>\n+        <help>A HMM in HMMER2 or HMMER3 format</help>\n+        </param>\n+    </when>\n+</conditional>\n+    <param name="outname" label="Name for output files" type="text" size="50" value="co_alignment" />\n+    \n+    <conditional name="advanced">\n+      <param name="options" type="select" label="Advanced Options">\n+        <option value="false" selected="true">Hide advanced options</option>\n+        <option value="true">Show advanced options</option>\n+      </param>\n+      <when value="false">\n+        <!-- no options -->\n+      </when>\n+      <when value="true">\n+\n+        <param name="dealign" type="select" display="checkboxes" multiple="True">\n+        <label>Dealign input sequences (if aligned)</label>\n+        <option value="Yes">Yes</option>\n+        <help>If given already aligned sequences, by default Clustal Omega use the existing alignment to guide creation of the new a'..b'              </param>\n+                  <when value="false">\n+                    <!-- no options -->\n+                  </when>\n+                  <when value="true">\n+                    <param name="gtiters" type="integer" value="1" label="Guidetree iterations"></param>\n+                    <param name="hmmiters" type="integer" value="1" label="HMM iterations"></param>\n+                  \n+                  </when>\n+                </conditional>\n+          </when>\n+          </conditional>\n+      </when>\n+      </conditional>\n+        <param name="dotree" type="select" display="checkboxes" multiple="True" label="Output guide tree">\n+            <option value="Yes">Yes</option>\n+        </param>\n+        <param name="domatrix" type="select" display="checkboxes" multiple="True" label="Output distance matrix">\n+            <option value="Yes">Yes</option>\n+        </param>\n+</inputs>\n+\n+<outputs>\n+    <data format="fasta" name="output" label="${outname}.fasta" />\n+    <data format="txt" name="outlog" label="${outname}_log.txt" />\n+    <data format="txt" name="outtree" label="${outname}_guidetree.txt">\n+        <filter>dotree=="Yes"</filter>\n+    </data>\n+    <data format="txt" name="outmatrix" label="${outname}_distances.txt">\n+        <filter>domatrix=="Yes"</filter>\n+    </data>\n+</outputs>\n+\n+<tests>\n+    <test>\n+        <param name="mode" value="mode1" />\n+        <param name="input" value="clustalo_unaligned_all.fasta" ftype="fasta" />\n+        <param name="outname" value="test_output" />\n+        <param name="options" value="false" />\n+        <output name="output" file="clustalo_test1_out.fasta" ftype="fasta" lines_diff="200" />\n+    </test>\n+    <test>\n+        <param name="mode" value="mode2" />\n+        <param name="profile1" value="clustalo_aligned1.fasta" />\n+        <param name="profile2" value="clustalo_aligned2.fasta" />\n+        <param name="outname" value="test_output" />\n+        <param name="options" value="false" />\n+        <output name="output" file="clustalo_profileprofile.fasta"  lines_diff="200" />\n+    </test>\n+</tests>\n+\n+<help>\n+\n+Clustal-Omega is a general purpose multiple sequence alignment (MSA)\n+program for proteins. It produces high quality MSAs and is capable of\n+handling data-sets of hundreds of thousands of sequences in reasonable\n+time.\n+\n+In default mode, users give a file of sequences to be aligned and\n+these are clustered to produce a guide tree and this is used to guide\n+a "progressive alignment" of the sequences.  There are also facilities\n+for aligning existing alignments to each other, aligning a sequence to\n+an alignment and for using a hidden Markov model (HMM) to help guide\n+an alignment of new sequences that are homologous to the sequences\n+used to make the HMM.  This latter procedure is referred to as\n+"external profile alignment" or EPA.\n+\n+Clustal-Omega uses HMMs for the alignment engine, based on the HHalign\n+package from Johannes Soeding [1].  Guide trees are optionally made\n+using mBed [2] which can cluster very large numbers of sequences in\n+O(N*log(N)) time.  Multiple alignment then proceeds by aligning larger\n+and larger alignments using HHalign, following the clustering given by\n+the guide tree.\n+\n+In its current form Clustal-Omega can only align protein sequences but\n+not DNA/RNA sequences. It is envisioned that DNA/RNA will become\n+available in a future version.\n+\n+A full version of these instructions is available at http://www.clustal.org/\n+\n+This is a beta version of Clustal Omega. Bugs should be reported to clustalw@ucd.ie\n+\n+A standalone version of Clustal Omega for Linux/Windows/Mac is available from http://www.clustal.org/\n+\n+[1] Johannes Soding (2005) Protein homology detection by HMM-HMM\n+    comparison. Bioinformatics 21 (7): 951\xe2\x80\x93960.\n+\n+[2] Blackshields G, Sievers F, Shi W, Wilm A, Higgins DG.  Sequence\n+    embedding for fast construction of guide trees for multiple\n+    sequence alignment.  Algorithms Mol Biol. 2010 May 14;5:21.\n+\n+</help>\n+</tool> \n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/test-data/clustalo_aligned1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/test-data/clustalo_aligned1.fasta Tue Jun 07 17:04:25 2011 -0400
b
@@ -0,0 +1,110 @@
+>Q1R749_ECOUT (Q1R749)
+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE
+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF
+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI
+N-FYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKG-APSVKSSTRIDNV
+IHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNINAI
+QKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYSIAPL
+MIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSLHDKRI---FLGE---
+------------------------------------------------------------
+-----------------------
+>B1LEB7_ECOSM (B1LEB7)
+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKTEKLLSPLKIKNKNIFIVVHLGQLKKAE
+LFIQKFSKRSNFLIVLATKKNTEMPRLVLEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF
+YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTATYKTEKKNTLVNI
+N-FYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKFFEFKT-IPLVKSSTRMDNL
+IHKYRITRDDIIYVSQRYWIDNELYAHSLISTLMRIDKSDNARVFIKPHPKETKKHINAI
+QGAINKAKRRDIIIIVEKDFLIESIIKKCKIKHLIGLTSSSLVYASLVYKECKTYSIAPI
+IIKLCNNEKSQKGTNTLRLHFDILKNFDNVKILSDDIS---SPSLHDKRI---FLGE---
+------------------------------------------------------------
+-----------------------
+>Q7WRI1_NEIME (Q7WRI1)
+------------------------------------------------------------
+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI
+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP
+TKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKNFNANEYHRFFAHSGGISTSQSIAKI
+QDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS
+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQI
+V-----------------------------------------------------------
+------------------------------------------------------------
+-----------------------
+>Q7WRI0_NEIME (Q7WRI0)
+------------------------------------------------------------
+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI
+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP
+TKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKI
+QDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS
+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQI
+V-----------------------------------------------------------
+------------------------------------------------------------
+-----------------------
+>Q6VNL6_NEIME (Q6VNL6)
+-----MLKKIKKALFQPKKFFQDSM-----------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------------
+>A9LZW7_NEIM0 (A9LZW7)
+------------------------------------------------------------
+----MQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI
+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP
+TKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKI
+QDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS
+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQI
+VIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEY
+AYKNKNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYF
+NDKDKMIWQNIKNDFFKYSLCNQ
+>O06435_NEIME (O06435)
+-----MLQKIRKALFHPKKFFQDSQWFATPL-----FSS-FAPKSNLFIISTFAQLNQAH
+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI
+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP
+TKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKI
+QDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS
+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQI
+VIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEY
+AYKNKNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYF
+NDKDKMIWQNIKNDFFKYSLCNQ
+>A1AFL1_ECOK1 (A1AFL1)
+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE
+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF
+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI
+N-FYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKG-APSVKSSTRIDNV
+IHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNINAI
+QKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYSIAPL
+MIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSLHDKRI---FLGE---
+------------------------------------------------------------
+-----------------------
+>Q6VNR6_NEIME (Q6VNR6)
+-----MLQKIRKALFHPKKFFQDSQWFATPL-----FSS-FAPKSNLFIISTFAQLNQAH
+SLTKM-------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+------------------------------------------------------------
+-----------------------
+>Q8VRL9_NEIME (Q8VRL9)
+-----MLQKIRKALFHPKKFFQDSQWFATPL-----FSS-FAPKSNLFIISTFAQLNQAH
+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI
+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP
+TKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKI
+QDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS
+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQI
+VIDSIHHTAQQENAALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEY
+AYKNKNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYF
+NDKDKMIWQNIKNDFFKYSLYNQ
+>Q47404_ECOLX (Q47404)
+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIVAHLGQLKKAE
+LFIQKFSRRSNFLIVLATKKNTEMPRLILEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF
+YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTGTYKTEKKKPLVNI
+N-FYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKIFEFKT-IPLVKSSTRMDNL
+IHKYRITRDDIIYVSQRYWIDNELYAHLLISTLMRIDKSDNARVFIKPHPKETKKYINAI
+QGAINKAKRRDIIIIVEKDFLIESIIKKCKIKHLIGLASSSLVYAPLVYKECKTYSIAPI
+IIKLCNNEKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSLHDKRI---FLGE---
+------------------------------------------------------------
+-----------------------
b
diff -r 000000000000 -r ff1768533a07 clustalomega/test-data/clustalo_aligned2.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/test-data/clustalo_aligned2.fasta Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,168 @@\n+>Q83TU5_NEIME (Q83TU5)\n+-MLKKIK----KALFQPKKFFQDSMWLTTSPF------YLTPPRNNLFVISNLGQLNQVQ\n+SLIKIQKLTNNLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYI\n+YRSYKKILNIIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHP\n+TKLE----RY----LIGNNLNI-KGYIDHFDILHVPFPEYAKKIFNAKKYNRFFAHAGGI\n+SINNNIANLQKKYQISKNDYIFVSQRYPISDDLYYKSIVEILNSISLQIKGKIFIKLHPK\n+EMGNNYVMSLFLNM---VEINPRLVVINEPPFLIEPLIYLTNPKGIIGLASSSLIYTPLL\n+SPSTQCLSIGELIINLIQKYSMVENTEMIQEHLEIIKKFNFINILNDLNGVISNPLF---\n+KTEETFETLLKSAEFAYKSKNYFQAIFYWQLASKNNITLL----GHKALWYYNALYNVKQ\n+IYKMEYSDIFYIDNISV-------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>B7NIU6_ECO7I (B7NIU6)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------EII---NSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAP-SV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITS---PSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q57269_ECOLX (Q57269)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------EII---NSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAP-SV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITS---PSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>A1KR99_NEIMF (A1KR99)\n+-MLQKIR----KALFHPKKFFQDSQWFATPLF------SSFAPKSNLFIISTFAQLNQAH\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQ-KGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIVIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSF---\n+KTEETLEMLLKSAEYAYKNKNFYQAIFYWQLASNNDLSVL----GYKSLWYYNALNKVKQ\n+NYKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNM1_NEIME (Q6VNM1)\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+-YKMKYLEINYIERISLYFNDKDKMIWQDIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------'..b'EMMFYK------KELNQCNNVFYISNLGQLKQVE\n+TLIEFEELSNNCLVIGYTRANLEMPDFILDKADKRKFQNIILVELVVSVNYLKPGRIKQI\n+CRIYKKLSQNIETKELYLLSVEGHYGIFAHYMKQKGVLINLLEEGTATYKFELKNGKIHV\n+NAPAVRMGRYTEIFCTLSGIKN-MLLVGEFNKIYAAFPEKLRGIFKANEIILFFAHIN-I\n+KPSANLVEIIEKYKITGDDIIFVSQRFDIDLNIFIEKILDILEAYVVAYRQRVFVKHHPK\n+ESEKQI--SLFRSKIIARGFSQNIISVSDKAFLVENILDIVETKILVGLTSTSLIYAQKL\n+NKDIVVHSVVPWFLKKVFFLEKQKKQMLSSHFNELQKTFDGFKIIEDAGAIVAGDICSDT\n+PKNSDATALIDKANQGFVEKKILQAIFYYKQSESKDIFLRMPHILYNMLYCWDALENDFQ\n+KYRIII---KYLQLDVVLEKKEEEFVFAKLMQ---FVDMCLREGKFEKFEKIEQLALAKQ\n+EKFLYFDVGVIRLKKMLYLERWDDVLRAFEDLRESSKKRYFIVFEIVRSFIREENMEFEE\n+ELKEIDDRVVGESLKLLYLYSCKKYSDIYDYIVEIKDANPYLYQQYHNKIIIQKKYSTLI\n+ESFNVDNILEYMINNEKKQFFAEVSDVLSKYNVEYRIGDIIEALNGDQIKLKTQDMEDLI\n+CALKGFEGLAEFCKREDDMGLICRILTFEFAGNLLENERS\n+>C9X1J6_NEIM8 (C9X1J6)\n+-MLQKIR----KALFHPKKFFQDSQWFATPLF------SSFAPKSNLFIISTFAQLNQAH\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQ-KGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIVIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSF---\n+KTEETLEMLLKSAEYAYKNKNFYQAIFYWQLASNNDLSVL----GYKSLWHYNALNKVKQ\n+NYKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>C1HI22_9ESCH (C1HI22)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------EII---NSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAP-SV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITS---PSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q51281_NEIME (Q51281)\n+-MLKKIK----KALFQPKKFFQDSMWLTTSPF------YLTPPRNNLFVISNLGQLNQVQ\n+SLIKIQKLTNNLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYI\n+YRSYKKILNIIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHP\n+TKLE----RY----LIGNNLNI-KGYIDHFDILHVPFPEYAKKIFNAKKYNRFFAHAGGI\n+SINNNIANLQKKYQISKNDYIFVSQRYPISDDLYYKSIVEILNSISLQIKGKIFIKLHPK\n+EMGNNYVMSLFLNM---VEINPRLVVINEPPFLIEPLIYLTNPKGIIGLASSSLIYTPLL\n+SPSTQCLSIGELIINLIQKYSMVENTEMIQEHLEIIKKFNFINILNDLNGVISNPLF---\n+KTEETFETLLKSAEFAYKSKNYFQAIFYWQLASKNNITLL----GHKALWYYNALYNVKQ\n+IYKMEYSDIFYIDNISVDFHSKDKLTWEKIKHYYYSADNRIGRDR---------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNM8_NEIME (Q6VNM8)\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+-YKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/test-data/clustalo_profileprofile.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/test-data/clustalo_profileprofile.fasta Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,322 @@\n+>Q1R749_ECOUT (Q1R749)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+N-FY----SE----IINSIILF-HYPDLKFENVYGTYPILLKKKFNAQKFVEFKG-APSV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINAIQKAIK---KAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSL---\n+HDKRI---FLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>B1LEB7_ECOSM (B1LEB7)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKTEKLLSPLKIKNKNIFIVVHLGQLKKAE\n+LFIQKFSKRSNFLIVLATKKNTEMPRLVLEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF\n+YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTATYKTEKKNTLVNI\n+N-FY----SW----IINSIILF-HYPDLKFENVYGTFPNLLKEKFDAKKFFEFKT-IPLV\n+KSSTRMDNLIHKYRITRDDIIYVSQRYWIDNELYAHSLISTLMRIDKSDNARVFIKPHPK\n+ETKKHINAIQGAIN---KAKRRDIIIIVEKDFLIESIIKKCKIKHLIGLTSSSLVYASLV\n+YKECKTYSIAPIIIKLCNNEKSQKGTNTLRLHFDILKNFDNVKILSDDIS---SPSL---\n+HDKRI---FLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q7WRI1_NEIME (Q7WRI1)\n+------------------------------------------------------------\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQ-KGYFDKFDILHVAFPEYAKKNFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIV-----------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q7WRI0_NEIME (Q7WRI0)\n+------------------------------------------------------------\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQ-KGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIV-----------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNL6_NEIME (Q6VNL6)\n+-----MLKKIKKALFQPKKFFQDSM-----------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------'..b'EMMFYK------KELNQCNNVFYISNLGQLKQVE\n+TLIEFEELSNNCLVIGYTRANLEMPDFILDKADKRKFQNIILVELVVSVNYLKPGRIKQI\n+CRIYKKLSQNIETKELYLLSVEGHYGIFAHYMKQKGVLINLLEEGTATYKFELKNGKIHV\n+NAPAVRMGRYTEIFCTLSGIKN-MLLVGEFNKIYAAFPEKLRGIFKANEIILFFAHIN-I\n+KPSANLVEIIEKYKITGDDIIFVSQRFDIDLNIFIEKILDILEAYVVAYRQRVFVKHHPK\n+ESEKQI--SLFRSKIIARGFSQNIISVSDKAFLVENILDIVETKILVGLTSTSLIYAQKL\n+NKDIVVHSVVPWFLKKVFFLEKQKKQMLSSHFNELQKTFDGFKIIEDAGAIVAGDICSDT\n+PKNSDATALIDKANQGFVEKKILQAIFYYKQSESKDIFLRMPHILYNMLYCWDALENDFQ\n+KYRIII---KYLQLDVVLEKKEEEFVFAKLMQ---FVDMCLREGKFEKFEKIEQLALAKQ\n+EKFLYFDVGVIRLKKMLYLERWDDVLRAFEDLRESSKKRYFIVFEIVRSFIREENMEFEE\n+ELKEIDDRVVGESLKLLYLYSCKKYSDIYDYIVEIKDANPYLYQQYHNKIIIQKKYSTLI\n+ESFNVDNILEYMINNEKKQFFAEVSDVLSKYNVEYRIGDIIEALNGDQIKLKTQDMEDLI\n+CALKGFEGLAEFCKREDDMGLICRILTFEFAGNLLENERS\n+>C9X1J6_NEIM8 (C9X1J6)\n+-MLQKIR----KALFHPKKFFQDSQWFATPLF------SSFAPKSNLFIISTFAQLNQAH\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQ-KGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIVIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSF---\n+KTEETLEMLLKSAEYAYKNKNFYQAIFYWQLASNNDLSVL----GYKSLWHYNALNKVKQ\n+NYKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>C1HI22_9ESCH (C1HI22)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------EII---NSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAP-SV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITS---PSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q51281_NEIME (Q51281)\n+-MLKKIK----KALFQPKKFFQDSMWLTTSPF------YLTPPRNNLFVISNLGQLNQVQ\n+SLIKIQKLTNNLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYI\n+YRSYKKILNIIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHP\n+TKLE----RY----LIGNNLNI-KGYIDHFDILHVPFPEYAKKIFNAKKYNRFFAHAGGI\n+SINNNIANLQKKYQISKNDYIFVSQRYPISDDLYYKSIVEILNSISLQIKGKIFIKLHPK\n+EMGNNYVMSLFLNM---VEINPRLVVINEPPFLIEPLIYLTNPKGIIGLASSSLIYTPLL\n+SPSTQCLSIGELIINLIQKYSMVENTEMIQEHLEIIKKFNFINILNDLNGVISNPLF---\n+KTEETFETLLKSAEFAYKSKNYFQAIFYWQLASKNNITLL----GHKALWYYNALYNVKQ\n+IYKMEYSDIFYIDNISVDFHSKDKLTWEKIKHYYYSADNRIGRDR---------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNM8_NEIME (Q6VNM8)\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+-YKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/test-data/clustalo_test1_out.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/test-data/clustalo_test1_out.fasta Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,323 @@\n+>Q1R749_ECOUT (Q1R749)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------E---IINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGA-PSV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>B1LEB7_ECOSM (B1LEB7)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKTEKLLSPLKIKNKNIFIVVHLGQLKKAE\n+LFIQKFSKRSNFLIVLATKKNTEMPRLVLEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF\n+YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTATYKTEKKNTLVNI\n+NFYS-------W---IINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKFFEFKTI-PLV\n+KSSTRMDNLIHKYRITRDDIIYVSQRYWIDNELYAHSLISTLMRIDKSDNARVFIKPHPK\n+ETKKHINA---IQGAINKAKRRDIIIIVEKDFLIESIIKKCKIKHLIGLTSSSLVYASLV\n+YKECKTYSIAPIIIKLCNNEKSQKGTNTLRLHFDILKNFDNVKILSDDIS---SPSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q7WRI1_NEIME (Q7WRI1)\n+------------------------------------------------------------\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQKG-YFDKFDILHVAFPEYAKKNFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIV-----------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q7WRI0_NEIME (Q7WRI0)\n+------------------------------------------------------------\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQKG-YFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIV-----------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNL6_NEIME (Q6VNL6)\n+-MLKKIK----KALFQPKKFFQDSM-----------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------'..b'MFYKK------ELNQCNNVFYISNLGQLKQVE\n+TLIEFEELSNNCLVIGYTRANLEMPDFILDKADKRKFQNIILVELVVSVNYLKPGRIKQI\n+CRIYKKLSQNIETKELYLLSVEGHYGIFAHYMKQKGVLINLLEEGTATYKFELKNGKIHV\n+NAPAVRMGRYTEIFCTLSGIKNML-LVGEFNKIYAAFPEKLRGIFKANEIILFFAHIN-I\n+KPSANLVEIIEKYKITGDDIIFVSQRFDIDLNIFIEKILDILEAYVVAYRQRVFVKHHPK\n+ESEKQI--SLFRSKIIARGFSQNIISVSDKAFLVENILDIVETKILVGLTSTSLIYAQKL\n+NKDIVVHSVVPWFLKKVFFLEKQKKQMLSSHFNELQKTFDGFKIIEDAGAIVAGDICSDT\n+PKNSDATALIDKANQGFVEKKILQAIFYYKQSESKDIFLRMPHILYNMLYCWDALENDFQ\n+KYRIII---KYLQLDVVLEKKEEEFVFAKLMQ---FVDMCLREGKFEKFEKIEQLALAKQ\n+EKFLYFDVGVIRLKKMLYLERWDDVLRAFEDLRESSKKRYFIVFEIVRSFIREENMEFEE\n+ELKEIDDRVVGESLKLLYLYSCKKYSDIYDYIVEIKDANPYLYQQYHNKIIIQKKYSTLI\n+ESFNVDNILEYMINNEKKQFFAEVSDVLSKYNVEYRIGDIIEALNGDQIKLKTQDMEDLI\n+CALKGFEGLAEFCKREDDMGLICRILTFEFAGNLLENERS\n+>C9X1J6_NEIM8 (C9X1J6)\n+-MLQKIR----KALFHPKKFFQDSQWFATPLFS------SFAPKSNLFIISTFAQLNQAH\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYI\n+QRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKP\n+TKFE----QR----FVGNNLHQKG-YFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGI\n+STSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPK\n+EMENKNIMSLFLNM---VTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLL\n+SPTTQCLSIGQIVIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSF---\n+KTEETLEMLLKSAEYAYKNKNFYQAIFYWQLASNNDLSVL----GYKSLWHYNALNKVKQ\n+NYKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>C1HI22_9ESCH (C1HI22)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKAE\n+SFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVIWF\n+YNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPVVNI\n+NFYS-------E---IINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGA-PSV\n+KSSTRIDNVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPK\n+EPKKNINA---IQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLV\n+SKRCQSYSIAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDIT---SPSLHDK\n+------RIFLGE------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q51281_NEIME (Q51281)\n+-MLKKIK----KALFQPKKFFQDSMWLTTSPFY------LTPPRNNLFVISNLGQLNQVQ\n+SLIKIQKLTNNLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYI\n+YRSYKKILNIIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHP\n+TKLE----RY----LIGNNLNIKG-YIDHFDILHVPFPEYAKKIFNAKKYNRFFAHAGGI\n+SINNNIANLQKKYQISKNDYIFVSQRYPISDDLYYKSIVEILNSISLQIKGKIFIKLHPK\n+EMGNNYVMSLFLNM---VEINPRLVVINEPPFLIEPLIYLTNPKGIIGLASSSLIYTPLL\n+SPSTQCLSIGELIINLIQKYSMVENTEMIQEHLEIIKKFNFINILNDLNGVISNPLF---\n+KTEETFETLLKSAEFAYKSKNYFQAIFYWQLASKNNITLL----GHKALWYYNALYNVKQ\n+IYKMEYSDIFYIDNISVDFHSKDKLTWEKIKHYYYSADNRIGRDR---------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+>Q6VNM8_NEIME (Q6VNM8)\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+-YKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+------------------------------------------------------------\n+----------------------------------------\n+\n'
b
diff -r 000000000000 -r ff1768533a07 clustalomega/test-data/clustalo_unaligned_all.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/clustalomega/test-data/clustalo_unaligned_all.fasta Tue Jun 07 17:04:25 2011 -0400
b
b'@@ -0,0 +1,169 @@\n+>Q1R749_ECOUT (Q1R749)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKA\n+ESFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVI\n+WFYNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPV\n+VNINFYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAPSVKSSTRID\n+NVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNI\n+NAIQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYS\n+IAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITSPSLHDKRIFLGE\n+>B1LEB7_ECOSM (B1LEB7)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKTEKLLSPLKIKNKNIFIVVHLGQLKKA\n+ELFIQKFSKRSNFLIVLATKKNTEMPRLVLEQMNKKLFSSYKLLFIPTEPNTFSLKKVI\n+WFYNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTATYKTEKKNTL\n+VNINFYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKFFEFKTIPLVKSSTRMD\n+NLIHKYRITRDDIIYVSQRYWIDNELYAHSLISTLMRIDKSDNARVFIKPHPKETKKHI\n+NAIQGAINKAKRRDIIIIVEKDFLIESIIKKCKIKHLIGLTSSSLVYASLVYKECKTYS\n+IAPIIIKLCNNEKSQKGTNTLRLHFDILKNFDNVKILSDDISSPSLHDKRIFLGE\n+>Q7WRI1_NEIME (Q7WRI1)\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLY\n+IQRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTY\n+KPTKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKNFNANEYHRFFAHSGGISTSQSI\n+AKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENK\n+NIMSLFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCL\n+SIGQIV\n+>Q7WRI0_NEIME (Q7WRI0)\n+SLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLY\n+IQRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTY\n+KPTKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSI\n+AKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENK\n+NIMSLFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCL\n+SIGQIV\n+>Q6VNL6_NEIME (Q6VNL6)\n+MLKKIKKALFQPKKFFQDSM\n+>A9LZW7_NEIM0 (A9LZW7)\n+MQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRG\n+YKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTK\n+FEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQ\n+DKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMS\n+LFLNMVTINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQ\n+IVIDSIHHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSA\n+EYAYKNKNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERIS\n+LYFNDKDKMIWQNIKNDFFKYSLCNQ\n+>O06435_NEIME (O06435)\n+MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKN\n+NLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLK\n+TIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFV\n+GNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRIS\n+QNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMV\n+TINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQIVIDSI\n+HHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEYAYKN\n+KNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYFNDK\n+DKMIWQNIKNDFFKYSLCNQ\n+>A1AFL1_ECOK1 (A1AFL1)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKA\n+ESFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVI\n+WFYNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPV\n+VNINFYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAPSVKSSTRID\n+NVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNI\n+NAIQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYS\n+IAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITSPSLHDKRIFLGE\n+>Q6VNR6_NEIME (Q6VNR6)\n+MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKM\n+>Q8VRL9_NEIME (Q8VRL9)\n+MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKN\n+NLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLK\n+TIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFV\n+GNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRIS\n+QNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMV\n+TINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQIVIDSI\n+HHTAQQENAALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEYAYKN\n+KNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYFNDK\n+DKMIWQNIKNDFFKYSLYNQ\n+>Q47404_ECOLX (Q47404)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIVAHLGQLKKA\n+ELFIQKFSRRSNFLIVLATKKNTEMPRLILEQMNKKLFSSYKLLFIPTEPNTFSLKKVI\n+WFYNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTGTYKTEKKKPL\n+VNINFYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKIFEFKTIPLVKSSTRMD\n+NLIHKYRITRDDIIYVSQRYWIDN'..b'LLRIDKPDNARIFIKPHPKEPKKNI\n+NAIQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYS\n+IAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITSPSLHDKRIFLGE\n+>Q57269_ECOLX (Q57269)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKA\n+ESFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVI\n+WFYNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPV\n+VNINFYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAPSVKSSTRID\n+NVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNI\n+NAIQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYS\n+IAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITSPSLHDKRIFLGE\n+>A1KR99_NEIMF (A1KR99)\n+MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKN\n+NLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLK\n+TIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFV\n+GNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRIS\n+QNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMV\n+TINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQIVIDSI\n+HHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEYAYKN\n+KNFYQAIFYWQLASNNDLSVLGYKSLWYYNALNKVKQNYKMKYLEINYIERISLYFNDK\n+DKMIWQNIKNDFFKYSLCNQ\n+>Q6VNM1_NEIME (Q6VNM1)\n+YKMKYLEINYIERISLYFNDKDKMIWQDIKNDFFKYSLCNQ\n+>Q79AE7_NEIMB (Q79AE7)\n+MLKKIKKALFQPKKFFQDSMWLTTSPFYLTPPRNNLFVISNLGQLNQVQSLIKIQKLTN\n+NLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYIYRSYKKILN\n+IIQPAHLYMLSFTGHYSYLISIAK\n+>Q4W584_NEIMB (Q4W584)\n+MLKKIKKALFQPKKFFQDSMWLTTSPFYLTPPRNNLFVISNLGQLNQVQSLIKIQKLTN\n+NLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYIYRSYKKILN\n+IIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHPTKLERYLI\n+GNNLNIKGYIDHFDILHVPFPEYAKKIFNAKKYNRFFAWRKGDVLQGD\n+>C5ZW53_9HELI (C5ZW53)\n+MLEVARKKLSGLMQDIKEYFVSSEYEMMFYKKELNQCNNVFYISNLGQLKQVETLIEFE\n+ELSNNCLVIGYTRANLEMPDFILDKADKRKFQNIILVELVVSVNYLKPGRIKQICRIYK\n+KLSQNIETKELYLLSVEGHYGIFAHYMKQKGVLINLLEEGTATYKFELKNGKIHVNAPA\n+VRMGRYTEIFCTLSGIKNMLLVGEFNKIYAAFPEKLRGIFKANEIILFFAHINIKPSAN\n+LVEIIEKYKITGDDIIFVSQRFDIDLNIFIEKILDILEAYVVAYRQRVFVKHHPKESEK\n+QISLFRSKIIARGFSQNIISVSDKAFLVENILDIVETKILVGLTSTSLIYAQKLNKDIV\n+VHSVVPWFLKKVFFLEKQKKQMLSSHFNELQKTFDGFKIIEDAGAIVAGDICSDTPKNS\n+DATALIDKANQGFVEKKILQAIFYYKQSESKDIFLRMPHILYNMLYCWDALENDFQKYR\n+IIIKYLQLDVVLEKKEEEFVFAKLMQFVDMCLREGKFEKFEKIEQLALAKQEKFLYFDV\n+GVIRLKKMLYLERWDDVLRAFEDLRESSKKRYFIVFEIVRSFIREENMEFEEELKEIDD\n+RVVGESLKLLYLYSCKKYSDIYDYIVEIKDANPYLYQQYHNKIIIQKKYSTLIESFNVD\n+NILEYMINNEKKQFFAEVSDVLSKYNVEYRIGDIIEALNGDQIKLKTQDMEDLICALKG\n+FEGLAEFCKREDDMGLICRILTFEFAGNLLENERS\n+>C9X1J6_NEIM8 (C9X1J6)\n+MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKN\n+NLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLK\n+TIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFV\n+GNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRIS\n+QNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMV\n+TINPRLVVINEPPFLIDPLIYLTTPKGIIGLTSTSIVYTPLLSPTTQCLSIGQIVIDSI\n+HHTAQQENTALIEEHLEIVKQFDFIKILSSIEDGIDTNSFKTEETLEMLLKSAEYAYKN\n+KNFYQAIFYWQLASNNDLSVLGYKSLWHYNALNKVKQNYKMKYLEINYIERISLYFNDK\n+DKMIWQNIKNDFFKYSLCNQ\n+>C1HI22_9ESCH (C1HI22)\n+MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIISNLGQLKKA\n+ESFVQKFSKRSNYLIVLATEKNTEMPKIIVEQINNKLFSSYKVLFIPTFPNVFSLKKVI\n+WFYNVYNYLVLNSKAKDAYFMSYAQHYAIFVYLFKKNNIRCSLIEEGTGTYKTEKENPV\n+VNINFYSEIINSIILFHYPDLKFENVYGTYPILLKKKFNAQKFVEFKGAPSVKSSTRID\n+NVIHKYSITRDDIIYANQKYLIEHTLFADSLISILLRIDKPDNARIFIKPHPKEPKKNI\n+NAIQKAIKKAKCRDIILITEPDFLIEPVIKKAKIKHLIGLTSSSLVYAPLVSKRCQSYS\n+IAPLMIKLCDNDKSQKGINTLRLHFDILKNFDNVKILSDDITSPSLHDKRIFLGE\n+>Q51281_NEIME (Q51281)\n+MLKKIKKALFQPKKFFQDSMWLTTSPFYLTPPRNNLFVISNLGQLNQVQSLIKIQKLTN\n+NLLVILYTSKNLKMPKLVHQSANKNLFESIYLFELPRSPNNITPKKLLYIYRSYKKILN\n+IIQPAHLYMLSFTGHYSYLISIAKKKNITTHLIDEGTGTYAPLLESFSYHPTKLERYLI\n+GNNLNIKGYIDHFDILHVPFPEYAKKIFNAKKYNRFFAHAGGISINNNIANLQKKYQIS\n+KNDYIFVSQRYPISDDLYYKSIVEILNSISLQIKGKIFIKLHPKEMGNNYVMSLFLNMV\n+EINPRLVVINEPPFLIEPLIYLTNPKGIIGLASSSLIYTPLLSPSTQCLSIGELIINLI\n+QKYSMVENTEMIQEHLEIIKKFNFINILNDLNGVISNPLFKTEETFETLLKSAEFAYKS\n+KNYFQAIFYWQLASKNNITLLGHKALWYYNALYNVKQIYKMEYSDIFYIDNISVDFHSK\n+DKLTWEKIKHYYYSADNRIGRDR\n+>Q6VNM8_NEIME (Q6VNM8)\n+YKMKYLEINYIERISLYFNDKDKMIWQNIKNDFFKYSLCNQ\n'